CN113448880A - 存储装置和存储器中的启用一致多处理的计算 - Google Patents

存储装置和存储器中的启用一致多处理的计算 Download PDF

Info

Publication number
CN113448880A
CN113448880A CN202011524105.9A CN202011524105A CN113448880A CN 113448880 A CN113448880 A CN 113448880A CN 202011524105 A CN202011524105 A CN 202011524105A CN 113448880 A CN113448880 A CN 113448880A
Authority
CN
China
Prior art keywords
mass storage
storage device
main memory
processor
computing system
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
CN202011524105.9A
Other languages
English (en)
Inventor
F·T·哈迪
S·N·特里卡
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN113448880A publication Critical patent/CN113448880A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/224Disk storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述了一种装置。所述装置包括:大容量存储设备处理器,其将充当具有所述大容量存储设备处理器的大容量存储设备将耦合到的计算系统的附加通用处理核,其中所述大容量存储设备处理器将从大容量存储设备内的主存储器组件中执行。

Description

存储装置和存储器中的启用一致多处理的计算
技术领域
本发明的领域总体上涉及计算科学,并且更具体地涉及存储装置和存储器中的启用一致多处理(coherent multiprocessing)的计算。
背景技术
随着大数据、云计算、人工智能和其他数字密集型计算系统环境的出现,性能越来越取决于用以获得和处理被存储在非易失性大容量存储装置中的数据的能力。由此,计算系统设计者不断地寻求用以改进速度和/或通用性的方式,可以以该速度和/或通用性来访问和处理被存储在非易失性存储器中的数据。
附图说明
结合附图,从以下详细描述中可以获得对本发明的更好理解,在附图中:
图1示出了第一现有技术的计算系统;
图2示出了第二现有技术的计算系统;
图3示出了改进的计算系统;
图4示出了计算系统。
具体实施方式
图1示出了现有技术的计算系统100。如图1中观察到的,现有技术的计算系统100包括多个通用处理核101。每个处理核包括:多个指令执行流水线;以及L2 CPU高速缓存,用以服务于其指令执行流水线(为了易于绘制,图1中既没有描绘指令执行流水线,也没有描绘其相应的L1高速缓存)。通用处理核101还共同地耦合到服务于通用核101的L3高速缓存103。
如果在任何处理核的任何指令流水线上执行的软件线程寻求访问不在其本地寄存器空间中的数据项,则它将在该流水线的专用L1高速缓存中查找该数据项。如果结果未命中(miss result),则接下来在该流水线的核的L2高速缓存中查找该数据项。如果结果未命中,则接下来在L3高速缓存103中查找该数据项。一些系统可能在L3高速缓存103与系统存储器105之间具有一个或多个附加的CPU高速缓存。如果L3高速缓存中存在未命中,则将在L3高速缓存与系统之间连续存在的任何其他CPU高速缓存中查找该数据项(为了易于绘制,图1未描绘任何这种高速缓存)。
最终,如果在任何CPU高速缓存中都未找到该数据项,则将请求发送到主存储器控制器104,以从主存储器105访问该数据项。如果该流水线对该项的需求对应于读取,则从主存储器105取得该数据项,并且将其置于该流水线的本地寄存器空间中。如果该需求对应于写入,则针对该数据项的搜索包括新的写入数据,该新的写入数据最终被包括在被发送到主存储器控制器104的请求中。然后,主存储器控制器104将新的数据写入在主存储器105中的该数据项上。
重要的是,处理核101_1至101_N中的每一个的指令执行流水线共享公共指令集架构(ISA)。也就是说,指令执行流水线遵守(respect)相同/兼容的指令集、这些指令的定义、以及寄存器结构和定义。这样做允许容易地对高级源代码进行编译,以用于在核101_1至101_N中的任一个的流水线中的任一个上执行。由此,例如,可以将大型和复杂的软件程序分解成较小的组成组件(线程),例如以用于在不同的流水线(和/或核)上并行执行。
值得注意的是,不同的执行线程可能会竞争相同的数据项。也就是说,例如,在第一流水线上执行的第一线程可能与在另一个流水线上执行的第二线程期望访问数据项近乎同时地期望访问相同的数据项。这种线程可以在处理核101_1至101_N中的不同处理核上执行。
高速缓存一致性协议(诸如,修改/排他/共享/无效(MESI)协议)被用来确保数据项将保持一致,即使不同的线程需要近乎同时地访问该数据项也是如此。也就是说,例如,高速缓存一致性协议防止出现两个或更多个线程接收数据项的相同副本/值,并且然后利用不同的改变来更新该副本/值的情况(这样做将创建相同数据项的两个不同的“不一致”版本)。由此,在高速缓存一致性协议的情况下支持该系统中的CPU高速缓存的操作,以避免数据冲突或其他一致性问题。在这里,处理核101_1至101_2中的任何一个都可以通过执行高速缓存一致性协议、至少从任何其他处理核101_1至101_2的L2高速缓存或者从L3高速缓存通过网络102来访问数据。
共享由缓存一致性协议支持的公共ISA的多个流水线/核的存在允许将软件程序直接分解成可以在该系统中的任何流水线/核上执行的较小目标代码实例。
然而,图1的传统计算系统的低效性是因为:在核上执行的程序代码是从主存储器105中执行的而不是从大容量存储装置108中执行的。在这里,程序代码指令和数据两者都被保存在主存储器105中。理想情况下,执行软件线程可能需要的所有程序代码指令和数据都处于主存储器105中。不幸的是,该系统中的所有线程可能需要的巨量程序代码和数据远远超过了主存储器105的容量。
由此,从非易失性大容量存储装置108中调出(call up)程序代码和数据的“页面”,并且根据需要将这些页面输入到主存储器105中。在这里,软件程序通常理解其已经被分配了多少主存储器地址空间以及主存储器空间的内容是什么。如果预期要使用的附加程序代码和/或数据不处于主存储器105中,则该线程从大容量存储装置108中调出该程序代码和/或数据的一个或多个页面,并且将该(一个或多个)页面输入到主存储器105中。如果该软件程序已经使用了至全部容量的其主存储器分配,则它还将(一个或多个)页面从主存储器105中交换出来,并且将它们写入到大容量存储装置108中,以便在主存储器105中为新调出的页面腾出空间。
在主存储器105与大容量存储装置108之间的大量信息的移动对应于显著的低效性。鉴于这种低效性,参考图2,一些计算机系统设计者已经考虑将软件执行资源放置到大容量存储设备本身(例如,固态驱动器(SSD))中。在这里,该想法在于可以利用嵌入在大容量存储设备207中的处理器109(“大容量存储设备处理器”、“大容量存储装置处理器”等等)在本地执行程序代码,以便减少大容量存储设备207与主存储器204之间的浪费的信息传送。一个或多个大容量存储设备可以包括如图2中指示的处理器。
然而,问题是大容量存储装置处理器209与执行大多数系统软件的通用处理核201_1至201_N之间存在架构差异。
具体地,大容量存储装置处理器209具有以下特性中的至少一个:1)与通用处理核201的ISA不同或不兼容的ISA;2)与通用处理核201不同的本地寄存器结构和/或定义;3)与通用处理核201不同的存储器模型(协议和/或语义,处理器通过该协议和/或语义发出请求并且从该处理器从其中进行执行的存储器接收请求);4)与通用处理核不同的存储器访问粒度(大容量存储介质通常仅能够以较大页面或块粒度进行写入,而通用处理核可以以字节级粒度(“字节可寻址”)写入到主存储器、和/或以CPU高速缓存行粒度对主存储器进行物理访问);5)没有与通用处理核201的高速缓存一致性;6)不从主存储器204中执行程序代码(不从主存储器来服务于程序代码存储器访问指令(存储器访问读取指令不从主存储器取得数据,存储器访问写入指令不向主存储器写入数据)。
由于这些差异,因此无论是在运行时前(在编译期间)还是在运行时期间,以各种各样的不同代码区域中的任一个为目标以用于在大容量存储装置处理器209上执行将变得非常具有挑战性(如果不是不可能的话)。代替地,在最好的情况下,大容量存储装置处理器209也只是限于粗粒度加速器的作用。
也就是说,大容量存储装置处理器209限于仅实行一小组粗粒度任务,这些粗粒度任务消耗了大量周期并且与在通用核201上执行的(一个或多个)线程隔离地实行。由此,大容量存储装置处理器209不能够负责执行任何期望的代码区域(无论是在运行时前静态地分配的,还是在运行时期间动态地分配的)。附加地,不向大容量存储装置处理器209分配细粒度任务或需要与在通用核201上执行的线程进行协作(频繁的消息传递和/或数据交换)的任务。因此,大容量存储装置处理器209被降级成仅执行少量的耗时任务,这些耗时任务在大型数据集上与在通用核201上执行的线程隔离地操作。
图3示出了一种改进的方法,其中大容量存储装置处理器309与通用处理器核301基本上相同(或者出于代码执行目的以其他方式与其兼容)。此外,在各种实施例中,大容量存储装置处理器309与通用处理核301是高速缓存一致的,并且从主存储器中执行其程序代码(与通用核301没有不同)。本质上,大容量存储装置处理器309只是已经被添加到计算系统中的通用处理器301池的另一个通用处理器。
通过将大容量存储装置处理器309构建成只是该系统中的另一个通用处理器,大容量存储装置处理器309不限于仅仅加速器的有限用例。由此,在理想情况下,可以分配软件程序中的任何代码区域以用于在大容量存储装置处理器309上执行。附加地,可以基于例如当前软件程序或计算系统状态(例如,功率消耗)、在运行时前(由编译器)静态地或在运行时期间动态地做出向大容量存储装置处理器309分配特定的代码区域以供执行的决策。此外,可以向大容量存储装置处理器309分配在较小数据集上操作的更细粒度的任务、和/或需要与在通用核301上执行的线程进行协作(频繁的消息传递和/或数据交换)的任务。
详细地说,数据项可以在大容量存储装置处理器309与通用处理核301_1至301_N中的任一个之间容易地传递和/或共享。变量的易于传递和/或共享允许如在大容量存储装置处理器309与通用处理核301之间(例如,通过网络302)进行频繁的数据交换和/或函数呼叫(call)。由此,在通用处理核301上执行的线程可以像它们调用彼此的程序代码一样容易地调用在大容量存储装置处理器309上执行的程序代码。
因此,在理想情况下,大容量存储装置处理器309可以负责执行任何程序代码,包括实现以下各项的程序代码:1)快速地完成和/或在较小数据项上操作的更细粒度的任务;2)涉及与在通用处理核301上执行的线程进行频繁消息传递或数据共享/交换的任务。附加地,可以向大容量存储装置处理器309分配任何/所有加速器类的任务(粗粒度、较长的完成时间、与其他线程隔离)。因此,改进的方法允许大容量存储装置处理器309的应用、其被要求实行的任务的类型、和/或其被配置成执行的软件程序代码区域的几乎不受限制的通用性。
为了将大容量存储设备处理器309作为附加的通用处理器集成到该系统中,在各种实施例中,大容量存储装置处理器309包括以下特性中的一些或全部:1)与通用处理核301的ISA相同或兼容的ISA;2)与通用处理核301相同或足够类似的寄存器结构和/或定义;3)与通用处理核301相同或足够类似的存储器模型;4)与通用处理核301相同的存储器访问粒度;5)维持与通用处理核301的高速缓存一致性;6)从主存储器中执行程序代码。
关于上述特性,要注意的是,图3将大容量存储装置处理器309描绘为连接到处理器间网络302(该处理器间网络302连接了通用处理器301)并且具有高速缓存一致性协议逻辑电路312。在这里,高速缓存一致性协议(例如,MESI)被理解为通过网络302来执行,使得大容量存储装置处理器的内部(例如,L1和L2)和L3高速缓存303访问与通用处理器301是高速缓存一致的。
附加地,在各种实施例中,像通用处理核301一样,大容量存储装置处理器309包括转译后备缓冲器(TLB),该转译后备缓冲器将虚拟存储器地址(该地址由在大容量存储装置处理器309上执行的程序代码的存储器访问指令明确地调出)转译成主存储器中的实际物理地址。通过这样做,可以向大容量存储装置处理器309所执行的软件分配主存储器304中的存储器地址空间,并且大容量存储装置处理器309能够直接从主存储器304中执行其程序代码,这与通用处理核301没有不同。
在进一步的实施例中,如图3中描绘的,大容量存储设备317具有本地存储器313,以供大容量存储装置处理器309使用。重要的是,为了实际解决页面从大容量存储装置到主存储器的低效移动以及反之亦然的原始问题(上面关于图1所讨论的),在各种实施例中,本地存储器313在架构上被视为对主存储器304的扩展。由此,被配置成用于在大容量存储装置处理器309上执行的应用软件程序代码区域或其他程序被分配给大容量存储装置处理器的本地主存储器313的物理地址存储器空间。利用高速缓存一致性协议逻辑电路312,大容量存储装置处理器309的本地主存储器313将与大容量存储设备317被插入其中的计算机系统的(首要)主存储器304是高速缓存一致的。
此外,被分配给这些相同程序的大容量存储资源是利用大容量存储装置处理器的大容量存储设备317内的非易失性存储介质314(例如,闪速存储器芯片、硬盘驱动器)实现的。
在这种情况下,用于在大容量存储装置处理器309上执行的程序代码的大容量存储资源和主存储器两者被自包含(self contained)在大容量存储设备317内。因此,这种程序代码可以被构造成维持从大容量存储装置到主存储器以及反之亦然的传统页面移动。然而,这种页面移动将保持在大容量存储设备317内部,由此消除了上面关于图1所讨论的页面移动问题。
因此,在常见的配置场景中,当向应用软件、管理程序/虚拟机监测软件或操作系统软件分配主存储器和大容量存储资源时,这些软件实例的程序代码的组件被分配给特定大容量存储设备317的大容量存储资源314和主存储器313,以供大容量存储设备317的大容量存储装置处理器309执行。程序代码被编写成从其他处理核(包括例如通用处理核301中的任一个)的线程进行函数呼叫。当这些函数呼叫被调用时,通常,它们会触发将由大容量存储装置处理器309对大容量存储装置的主存储器313和/或非易失性存储资源314内的数据实行的操作。
在常见示例中,要对其进行操作的大多数数据处于大容量存储设备的非易失性存储资源314中。由此,大容量存储设备317根据需要从大容量存储资源314调出数据(例如,作为页面),并且将其输入到大容量存储装置处理器的本地主存储器313中。因此,调用了函数呼叫的线程被编写成调用对在大容量存储装置处理器309上执行的线程的呼叫,该大容量存储装置处理器309的对应大容量存储设备317保存了要在其上执行的数据。
可以在运行时前(在编译期间)将这种调用硬编码到软件中,或者进行软编码,以使得进行调用的决策是在运行时期间基于当前系统/软件状态做出的。附加地或组合地,可以由编程器或编译器将提示插入到程序代码中,以帮助该代码认识到对大容量存储装置处理器的调用可能是适当的(并且其中最终决策是基于程序/系统状态动态地做出的)。
如上面所讨论的,可以在大容量存储装置处理器309上实现各种各样的任务。一些可能的示例包括:数据库查询操作、过滤数据、用以验证数据完整性的校验和计算、数据加密、数据压缩、机器学习操作、搜索操作、分析操作(诸如,计算存储在大容量存储设备上的数据的最小值/最大值/平均值)等。
要注意的是,在具有多个大容量存储设备、并且每个存储设备具有如上文详细描述的大容量存储装置处理器的系统中,可设想到的是,在一个大容量存储装置处理器上执行的程序代码可以调用在另一个大容量存储装置处理器上执行的程序代码。这种操作可以使其自己例如用于大规模的外围分布式数据计算。
附加地,如图3中指示的,大容量存储设备317还可以耦合到外围控制集线器306,以实现该大容量存储设备的传统大容量存储设备操作,如上面关于图1所描述的。
在一些实施例中,大容量存储设备的大容量存储资源是利用新兴的非易失性存储器随机存取(NVRAM)技术实现的。新兴的NVRAM技术通常在半导体芯片衬底上(例如,在半导体芯片的互连布线当中)堆叠非易失性电阻式存储单元。该单元的第一电阻状态对应于第一存储逻辑值,并且第二电阻状态对应于第二存储逻辑值。新兴的NVRAM技术的示例包括来自英特尔公司的OptaneTM存储器和来自美光公司的QuantXTM存储器。基础NVRAM单元技术可以是相变、铁电、磁性、介电、自旋矩转移磁性等中的任一个。重要的是,至少某些类型的NVRAM可以支持字节可寻址访问,并且因此不需要限于大容量存储装置,而代替地可以作为主存储器进行操作。在这种实施例中,本地存储器不需要存在,并且可以将主存储器地址空间分配给大容量存储设备中的NVRAM存储器设备(其可以作为主存储器扩展进行操作)。
图4提供了计算系统400(例如,智能电话、平板计算机、膝上型计算机、台式计算机、服务器计算机等)的示例性描绘。如图4中观察到的,基本计算系统400可以包括:中央处理单元401(其可以包括例如多个通用处理核415_1至415_X)、以及被布置在多核处理器或应用处理器上的主存储器控制器417、主存储器(也被称为“系统存储器”)402、显示器403(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口404、各种网络I/O功能405(诸如,以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口406、无线点对点链路(例如,蓝牙)接口407、以及全球定位系统接口408、各种传感器409_1至409_Y、一个或多个相机410、电池411、功率管理控制单元412、扬声器和麦克风413、以及音频编码器/解码器414。
应用处理器或多核处理器450可以包括在其CPU 401内的一个或多个通用处理核415、一个或多个图形处理单元416、存储器管理功能417(例如,存储器控制器)和I/O控制功能418。通用处理核415通常执行该计算系统的系统和应用软件。图形处理单元416通常执行图形密集型功能,以便例如生成在显示器403上呈现的图形信息。存储器控制功能417与系统存储器402对接以向/从系统存储器402写入/读取数据。
系统存储器可以由易失性存储器(例如,动态随机存取存储器(DRAM))、NVRAM或其组合组成。非易失性大容量存储装置420可以由具有大容量存储装置处理器的SSD或其他大容量存储设备组成,该大容量存储装置处理器充当如上文详细描述的附加通用处理器。
触摸屏显示器403、通信接口404-407、GPS接口408、传感器409、(一个或多个)相机410、以及扬声器/麦克风编解码器413、414中的每一个全部可以被视为相对于整个计算系统的各种形式的I/O(输入和/或输出),该计算系统在合适的情况下还包括集成外围设备(例如,一个或多个相机410)。取决于实现方式,这些I/O组件中的各种组件可以被集成在应用处理器/多核处理器450上,或者可以位于管芯外或位于应用处理器/多核处理器450的封装外部。功率管理控制单元412通常控制系统400的功率消耗。
本发明的实施例可以包括如上阐述的各种过程。这些过程可以体现在机器可执行指令中。这些指令可以用于使通用或专用处理器实行某些过程。替代地,这些过程可以由包含用于实行这些过程的硬连线逻辑电路或可编程逻辑电路(例如,FPGA、PLD)的特定/定制硬件组件来实行,或者由经编程的计算机组件和定制硬件组件的任何组合来实行。
本发明的元件还可以被提供作为用于存储机器可执行指令的机器可读介质。该机器可读介质可以包括但不限于:软盘、光盘、CD-ROM和磁光盘、闪速存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质、或适合于存储电子指令的其他类型的介质/机器可读介质。例如,本发明可以被下载作为计算机程序,该计算机程序可以作为体现在载波或其他传播介质中的数据信号经由通信链路(例如,调制解调器或网络连接)被从远程计算机(例如,服务器)传送到作出请求的计算机(例如,客户端)。
在前述说明书中,已经参考其特定示例性实施例描述了本发明。然而,将显然的是,在不脱离如所附权利要求书中阐述的本发明的更宽泛的精神和范围的情况下,可以对其做出各种修改和改变。因而,要以说明性而非限制性的意义来看待说明书和附图。

Claims (20)

1.一种装置,其包括:
大容量存储设备处理器,其将充当具有所述大容量存储设备处理器的大容量存储设备将耦合到的计算系统的附加通用处理核,其中所述大容量存储设备处理器将从大容量存储设备内的主存储器的组件中执行,其中主存储器的组件与大容量存储设备将插入其中的计算系统的首要主存储器是高速缓存一致的。
2.根据权利要求1所述的装置,其中所述大容量存储设备处理器具有与计算系统的通用处理核相同的指令集架构。
3.根据权利要求1所述的装置,其中所述大容量存储设备处理器包括:高速缓存一致性逻辑电路,以实现组件主存储器与所述首要主存储器的高速缓存一致性。
4.根据权利要求3所述的装置,其中将由所述大容量存储设备处理器执行的程序代码将被分配有主存储器地址空间,所述主存储器地址空间由大容量存储设备中的主存储器的组件物理地实现。
5.根据权利要求3所述的装置,其中将由程序代码在其上操作的数据将被存储在大容量存储设备的非易失性存储资源中。
6.根据权利要求5所述的装置,其中非易失性存储资源包括以下各项中的任一项:
闪速存储器;
硬盘驱动器;
非易失性随机存取存储器。
7.一种在计算机上实行的方法,包括:
编译软件程序,所述编译包括:
标识将对某些数据进行操作的任务;
将所述软件程序划分成不同的组件,包括包含所述任务的组件;
以所述组件为目标以用于在将保存所述数据的大容量存储设备内的处理器上执行,其中所述处理器还被分配有主存储器地址空间。
8.根据权利要求7所述的方法,其中所述不同组件中的至少另一个包括:对所述组件的函数呼叫,以使所述组件执行所述任务。
9.根据权利要求8所述的方法,进一步包括:将提示嵌入在所述软件程序的代码中,所述提示使所述另一个组件考虑以所述组件为目标以用于在大容量存储设备处理器上执行。
10.根据权利要求8所述的方法,其中调用所述组件的决策是在所述软件程序的运行时期间动态地做出的。
11.一种计算系统,其包括:
多个通用处理核;
高速缓存一致性网络,其通信地耦合所述多个通用处理核;
主存储器的首要部分;
主存储器控制器,其耦合在高速缓存一致性网络与首要主存储器之间;
大容量存储设备,大容量存储设备包括大容量存储设备处理器,所述大容量存储设备处理器将充当计算系统的附加通用处理核,大容量存储设备具有所述大容量存储设备处理器将从其中执行程序代码的计算系统的主存储器的组件,其中计算系统的主存储器的组件与主存储器的首要部分是高速缓存一致的。
12.根据权利要求11所述的计算系统,其中所述大容量存储设备处理器具有与计算系统的通用处理核相同的指令集架构。
13.根据权利要求11所述的计算系统,其中大容量存储设备包括高速缓存一致性逻辑电路。
14.根据权利要求13所述的计算系统,其中将由所述大容量存储设备处理器执行的程序代码将被分配有主存储器地址空间,所述主存储器地址空间由大容量存储设备中的主存储器的组件物理地实现。
15.根据权利要求3所述的计算系统,其中将由程序代码在其上操作的数据将被存储在大容量存储设备的非易失性存储资源中。
16.根据权利要求5所述的装置,其中非易失性存储资源包括以下各项中的任一项:
闪速存储器;
硬盘驱动器;
字节可寻址的非易失性随机存取存储器。
17.一种包含程序代码的机器可读计算机存储介质,所述程序代码在被计算机处理时使计算机实行方法,所述方法包括:
编译软件程序,所述编译包括:
标识将对某些数据进行操作的任务;
将所述软件程序划分成不同的组件,包括包含所述任务的组件;
以所述组件为目标以用于在将保存所述数据的大容量存储设备内的处理器上执行,其中所述处理器还被分配有主存储器地址空间。
18.根据权利要求7所述的机器可读计算机存储介质,其中所述不同组件中的至少另一个包括:对所述组件的函数呼叫,以使所述组件执行所述任务。
19.根据权利要求8所述的机器可读计算机存储介质,进一步包括:将提示嵌入在所述软件程序的代码中,所述提示使所述另一个组件考虑以所述组件为目标以用于在大容量存储设备处理器上执行。
20.根据权利要求17所述的机器可读介质,其中所述处理器具有与所述软件程序将在其上运行的计算系统的通用处理核相同的指令集架构。
CN202011524105.9A 2020-03-24 2020-12-22 存储装置和存储器中的启用一致多处理的计算 Pending CN113448880A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/828700 2020-03-24
US16/828,700 US12061550B2 (en) 2020-03-24 2020-03-24 Coherent multiprocessing enabled compute in storage and memory

Publications (1)

Publication Number Publication Date
CN113448880A true CN113448880A (zh) 2021-09-28

Family

ID=71518060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011524105.9A Pending CN113448880A (zh) 2020-03-24 2020-12-22 存储装置和存储器中的启用一致多处理的计算

Country Status (3)

Country Link
US (1) US12061550B2 (zh)
KR (1) KR20210119272A (zh)
CN (1) CN113448880A (zh)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5954792A (en) * 1996-12-30 1999-09-21 Cadence Design Systems, Inc. Method for schedule validation of embedded systems
US6986128B2 (en) * 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
JP2006260096A (ja) * 2005-03-16 2006-09-28 Matsushita Electric Ind Co Ltd プログラム変換方法およびプログラム変換装置
US8010965B2 (en) * 2006-08-31 2011-08-30 Intel Corporation Automatic task performance as scheduled using embedded secondary processor
US8842122B2 (en) * 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US9740439B2 (en) * 2011-12-23 2017-08-22 International Business Machines Corporation Solid-state storage management
US10198293B2 (en) * 2014-09-29 2019-02-05 Samsung Electronics Co., Ltd. Distributed real-time computing framework using in-storage processing
US10936369B2 (en) * 2014-11-18 2021-03-02 International Business Machines Corporation Maintenance of local and global lists of task control blocks in a processor-specific manner for allocation to tasks
US9778961B2 (en) * 2015-09-14 2017-10-03 Qualcomm Incorporated Efficient scheduling of multi-versioned tasks
US20170286301A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
US10545925B2 (en) 2018-06-06 2020-01-28 Intel Corporation Storage appliance for processing of functions as a service (FaaS)
US10719462B2 (en) 2018-09-25 2020-07-21 Intel Corporation Technologies for computational storage via offload kernel extensions
US20190042232A1 (en) 2018-09-28 2019-02-07 Intel Corporation Technologies for automatic compilation of storage offloads
US10877668B2 (en) 2018-12-05 2020-12-29 Intel Corporation Storage node offload of residual part of a portion of compressed and distributed data to a second storage node for decompression
US10761779B2 (en) 2018-12-05 2020-09-01 Intel Corporation Storage compute offloads on sharded and erasure-coded data
US20190196907A1 (en) 2019-03-05 2019-06-27 Intel Corporation Compression techniques for distributed data
US11003479B2 (en) 2019-04-29 2021-05-11 Intel Corporation Device, system and method to communicate a kernel binary via a network
CN112513814B (zh) * 2020-04-01 2021-11-30 华为技术有限公司 任务调度方法及装置

Also Published As

Publication number Publication date
KR20210119272A (ko) 2021-10-05
US20200226067A1 (en) 2020-07-16
US12061550B2 (en) 2024-08-13

Similar Documents

Publication Publication Date Title
Mutlu et al. Processing data where it makes sense: Enabling in-memory computation
US11687471B2 (en) Solid state drive with external software execution to effect internal solid-state drive operations
Hsieh et al. Transparent offloading and mapping (TOM) enabling programmer-transparent near-data processing in GPU systems
US9229878B2 (en) Memory page offloading in multi-node computer systems
US7921261B2 (en) Reserving a global address space
US7925842B2 (en) Allocating a global shared memory
US20200334153A1 (en) Multi-Core Processing Device and Method of Transfering Data Between Cores Thereof
US10558490B2 (en) Mechanism for issuing requests to an accelerator from multiple threads
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
US20210224213A1 (en) Techniques for near data acceleration for a multi-core architecture
US20170286301A1 (en) Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
US11868306B2 (en) Processing-in-memory concurrent processing system and method
CN109661656A (zh) 用于利用条件所有权请求的智能存储操作的方法和装置
JP7126136B2 (ja) 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法
WO2023103392A1 (zh) 用于存储管理的方法、介质、程序产品、系统和装置
Seshadri et al. RowClone: Accelerating data movement and initialization using DRAM
WO2023103397A1 (zh) 用于存储管理的方法、介质、程序产品、系统和装置
US12061550B2 (en) Coherent multiprocessing enabled compute in storage and memory
US20230393849A1 (en) Method and apparatus to expedite system services using processing-in-memory (pim)
TWI831564B (zh) 可配置的記憶體系統及其記憶體管理方法
KR20110067795A (ko) 실시간 프로세스의 응답성 개선을 위한 tcm운용방법
Zhang et al. Efficient address remapping in distributed shared-memory systems

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