CN116601613A - 利用分组元数据的数据放置 - Google Patents
利用分组元数据的数据放置 Download PDFInfo
- Publication number
- CN116601613A CN116601613A CN202180085242.3A CN202180085242A CN116601613A CN 116601613 A CN116601613 A CN 116601613A CN 202180085242 A CN202180085242 A CN 202180085242A CN 116601613 A CN116601613 A CN 116601613A
- Authority
- CN
- China
- Prior art keywords
- memory device
- packet
- memory
- given
- data
- 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
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000013519 translation Methods 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 abstract description 12
- 230000014616 translation Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/028—Capturing of monitoring data by filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了用于基于分组元数据来确定数据放置的***、设备和方法。一种***包括流量分析器,该流量分析器基于跨多种协议类型的活跃交换的分组中的元数据字段的观测值来确定跨连接的装置的数据放置。在一个具体实施中,***支持的协议是计算快速链接(CXL)协议。流量分析器响应于在分组流中观察到的与来自预配置列表的项目相匹配的事件来执行各种动作。一旦数据移动完成,通过改变虚拟到物理地址转换,在软件应用程序下处理数据移动。在数据移动完成之后,线程将经由页表搜索程序或经由地址转换服务(ATS)请求将新主机物理地址拉入到其转换后备缓冲器(TLB)中。
Description
背景技术
相关技术描述
用于互连的计算机工业解决方案在协议支持和基础技术方面正变得越来越多样化。例如,计算快速链接(CXL)、Gen-Z和Slingshot已经作为可用于与***中的每个装置通信的高性能、低等待时间、以存储器为中心的结构而出现。诸如高性能计算(HPC)和深度学习(DL)应用之类的存储器密集型应用常常在这些类型的***上运行。确定用于跨连接的装置的数据放置的策略以减少由在采用这些新类型的互连的***上执行的各种软件应用程序进行的数据访问的等待时间和能量消耗可能是有挑战性的。
附图说明
通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
图1是计算***的一个具体实施的框图。
图2是计算***的另一个具体实施的框图。
图3是采用CXL协议的计算***的一个具体实施的框图。
图4是控制器的一个具体实施的框图。
图5示出了事件列表的一个示例。
图6是示出用于基于分组元数据来确定数据放置的方法的一个具体实施的一般化流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应当认识到,可在没有这些具体细节的情况下实践各种具体实施。在一些情况下,未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免模糊本文描述的方法。应当了解,为了简单和清楚说明,附图中所示的元件不一定按比例绘制。例如,这些元件中的一些元件的尺寸可相对于其它元件被放大。
本文公开了用于基于分组元数据来确定数据放置的各种***、设备和方法。在一个具体实施中,一种***包括流量分析器,该流量分析器基于跨多种协议类型的活跃交换的分组中的元数据字段的观测值来确定跨连接的装置的数据放置。在一个具体实施中,***支持的协议是计算快速链接(CXL)协议。在另一具体实施中,***支持Gen-Z协议。在另外的具体实施中,***支持Slingshot互连协议。在其他具体实施中,***可以支持其他类型的互连协议。在一个具体实施中,流量分析器具有相关联的直接存储器存取(DMA)引擎,该DMA引擎用于跨连接在***内的装置移动数据。在一些情况下,***包括位于遍及***的互连结构的各个位置处的多个流量分析器。
在一个具体实施中,流量分析器响应于在分组流中观察到的与来自预配置列表的项目相匹配的事件来执行各种动作。在一些情况下,预配置列表是可编程的,使得该列表可以由软件更新。在一个具体实施中,在互连结构上发送的地址是主机物理地址(HPA)。在该具体实施中,一旦数据移动完成,通过改变虚拟到物理转换,在软件应用程序下处理数据移动。在数据移动完成之后,线程将经由页表搜索程序或经由地址转换服务(ATS)请求将新HPA拉入到其转换后备缓冲器(TLB)中。流量分析器维护数据可以被重新定位到的可访问媒体装置的列表。在一个具体实施中,响应于正在执行的发现事件来更新可访问媒体装置的列表。
现在参考图1,示出了计算***100的一个具体实施的框图。在一个具体实施中,计算***100至少包括处理器105A-N、输入/输出(I/O)接口120、总线125、存储器控制器130、网络接口135、存储器装置140、显示控制器150、显示器155和装置160A-N。在其他具体实施中,计算***100包括其他部件并且/或者计算***100被不同地布置。***100的部件经由总线125连接在一起,该总线表示任何数量和类型的互连件、链路、结构单元、总线和其他连接模块。
处理器105A-N表示包括在***100中的任何数量的处理器。在一个具体实施中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在该具体实施中,处理器105A执行用于控制***100中其他处理器中的一个或多个其他处理器的操作的驱动器106(例如,图形驱动器)。应当注意,根据具体实施,驱动器106可使用硬件、软件和/或固件的任何合适的组合来实现。
在一个具体实施中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。在一些具体实施中,处理器105A-N包括多个数据并行处理器。在一个具体实施中,处理器105N是向显示控制器150提供像素以便驱动到显示器155的GPU。在一个具体实施中,装置160A-N包括任何数量和类型的加速器装置、I/O装置、以及其他装置。在一个具体实施中,每个装置160A-N具有其自己的专用于装置160A-N的存储器。在一些情况下,装置160A-N中的一个或多个装置可以是诸如GPU之类的处理器。
存储器控制器130表示可由处理器105A-N和/或装置160A-N访问的任何数量和类型的存储器控制器。虽然存储器控制器130被示出为与处理器105A-N和/或装置160A-N分离,但应当理解,这仅仅表示一个可能的具体实施。在其他具体实施中,存储器控制器130可嵌入处理器105A-N中的一个或多个处理器内,并且/或者存储器控制器130可位于与处理器105A-N中的一个或多个处理器相同的半导体裸片上。而且,在一个具体实施中,存储器控制器130可嵌入装置160A-N中的一个或多个装置内或位于与装置160A-N中的一个或多个装置相同的裸片上,以访问位于装置160A-N本地的存储器装置140。
在一个具体实施中,每个存储器控制器130包括流量分析器133。在其他具体实施中,流量分析器133可以位于***100中的其他地方,适于窥探遍历总线125的流量的位置。应当注意,流量分析器133也可称为控制器133。在一个具体实施中,流量分析器133响应于在分组流中观察到的与来自预配置列表的项目相匹配的事件来执行各种动作。在一些情况下,预配置列表是可编程的,使得该列表可以由软件更新。在一个具体实施中,在总线125上发送的地址是主机物理地址(HPA)。在该具体实施中,一旦数据移动完成,通过改变虚拟到物理转换,在应用程序下处理数据移动。在数据移动完成之后,在处理器105A-N或装置160A-N上执行的线程将经由页表搜索程序或经由地址转换服务(ATS)请求将新HPA拉入到其转换后备缓冲器(TLB)中。
存储器控制器130耦接到任何数量和类型的存储器装置140。例如,存储器装置140中的存储器的类型包括高带宽存储器(HBM)、非易失性存储器(NVM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND快闪存储器、NOR快闪存储器、铁电随机存取存储器(FeRAM)等。
I/O接口120表示任何数量和类型的I/O接口(例如,***部件互连(PCI)总线、PCI-扩展(PCI-X)、PCIE(PCI高速)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的***装置(未示出)耦接到I/O接口120。此类***装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。网络接口135用于跨网络(未示出)接收和发送网络消息。
在各种具体实施中,计算***100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或各种其他类型的计算***或装置中的任一种。应当注意,计算***100的部件的数量因具体实施而异。例如,在其他具体实施中,存在比图1所示的数量更多或更少的每种部件。还应当注意,在其他具体实施中,计算***100包括图1中未示出的其他部件。另外,在其他具体实施中,计算***100以不同于图1所示的方式构造。
现在转向图2,其示出了计算***200的另一个具体实施的框图。在一个具体实施中,***200包括GPU 205、***存储器225和本地存储器230。***200还可包括其他未示出的部件以避免使附图模糊。GPU 205至少包括命令处理器235、控制逻辑部件240、调度单元250、计算单元255A-N、DMA引擎215、存储器控制器220、全局数据共享270、一级(L1)高速缓存265和二级(L2)高速缓存260。在一个具体实施中,存储器控制器220包括用于监测遍历***200的分组的流量分析器223。在其他具体实施中,GPU 205包括其他部件,省略示出部件中的一个或多个部件,具有部件的多个实例(即使图2中仅示出一个实例),并且/或者以其他合适的方式组织。在一个具体实施中,GPU 205的电路包括在(图1的)处理器105N中。
在各种具体实施中,计算***200执行各种类型的软件应用程序中的任一种。作为执行给定软件应用程序的一部分,计算***200的主机CPU(未示出)启动要在GPU 205上执行的工作。在一个具体实施中,命令处理器235从主机CPU接收内核并使用调度单元250来向计算单元255A-N发出对应的波前。在计算单元255A-N上执行的波前向GPU 205内的全局数据共享270、L1高速缓存265和L2高速缓存260读取和写入数据。尽管未在图2中示出,但在一个具体实施中,计算单元255A-N还包括每个计算单元255A-N内的一个或多个高速缓存和/或本地存储器。
在一个具体实施中,每个计算单元255A-N是单指令多数据(SIMD)处理核。如本文中所提及,“计算单元”为管线或编程模型,其中同时执行同一内核的相应实例化。计算单元中的每个处理元件执行同一内核的相应实例化。内核的实例化连同其相关联的数据被称为工作项或线程。因此,内核是工作项的代码,并且工作项是计算单元上的工作的基本单元。在计算单元255A-N上执行的内核的所有实例化包括工作项的全局域。工作项的该全局域可以表示整个计算域,并且计算域内的工作项表示要执行的特定任务。为了简化工作项在GPU205上的执行,工作项被一起分组到波前中。波前是在单个计算单元上一起执行的相关工作项的集合。
与命令处理器235在计算单元255A-N上启动波前并行地,DMA引擎215与流量分析器223协作地执行各种DMA操作。应注意,DMA引擎215表示任何数量和类型的DMA引擎。在一个具体实施中,流量分析器223对DMA引擎215进行编程,以响应于在分组流中观察到的与来自预配置列表的项目相匹配的事件而在装置之间移动数据。
现在参考图3,示出了采用CXL协议的计算***300的一个具体实施的框图。在一个具体实施中,计算***300包括经由链路325连接的主机处理器305和加速器装置310。在一个具体实施中,主机处理器305和加速器装置310在相同的虚拟地址空间中操作。换句话说,在此具体实施中,主机处理器305和加速器装置310具有统一地址空间。对于任何其他处理装置、加速器或***300中的其他装置,尽管未在图3中示出,但这些其他装置也可在与主机处理器305和加速器装置310相同的虚拟地址空间中操作。在一个具体实施中,***300遵循异质***架构(HSA)行业标准来利用该共享地址空间。
在图3所示的示例中,主机处理器305包括一个或多个处理器核和一个或多个I/O装置。主机处理器305还包括相干性和高速缓存逻辑部件以及I/O逻辑部件。在一个具体实施中,主机处理器305为CPU,而在其他具体实施中,主机处理器305为各种其他类型的处理单元中的任一者。***存储器315可包括在与主机处理器305相同的封装或裸片上。应注意,一个或多个其他装置也可以连接到链路325,尽管这未在图3中示出以避免使该图模糊。
在一个具体实施中,可以根据CXL协议来执行主机处理器305与加速器装置310之间通过链路325的通信。CXL技术实现主机处理器305的存储器空间与加速器装置310的存储器之间的存储器相干性,从而允许在***300上执行的应用程序的较高性能及降低的复杂性。CXL流量具有三种不同类型的流量类别,即高速缓存、存储器和I/O流量类别。这些流量类别(即,协议类型)在链路325上被复用在一起,然后在主机处理器305和加速器装置310内被内部地分成各个类别。虽然***300被示出和描述为采用CXL协议,但是应当理解,这仅仅指示一个特定具体实施。采用其他类型的相干互连协议的其他类型的***也可以利用本文给出的技术。
在一个具体实施中,主机处理器305包括流量分析器330,并且加速器装置310包括流量分析器335。流量分析器330和335监测在链路325上发送的分组。流量分析器330和335分析与分组相关联的元数据以确定如何在***存储器315和装置附接的存储器320之间移动数据。在一个具体实施中,每个流量分析器330和335包括确定何时触发数据移动的事件列表。如果给定分组中的元数据满足事件列表的条目中的一个条目中的标准,则流量分析器使得数据被移动到最靠近在不久的将来更可能使用该数据的装置的存储器。虽然在图3中示出了两个流量分析器330和335,但是应当理解,其他具体实施可以具有其他数量的流量分析器(例如,1、3、16)。
现在转向图4,示出了控制器400的一个具体实施的框图。需注意,控制器400也可以被称为流量分析器400。在一个具体实施中,流量分析器133(图1)、流量分析器223(图2)以及流量分析器330和335(图3)包括控制器400的部件和功能。控制单元405连接到DMA引擎430并且使用DMA引擎430来跨整个***(例如,图1的***100)内所包括的装置移动数据。控制单元405可以使用电路、执行单元、处理器核、存储器元件和/或程序指令的任何组合来实现。
控制器400在操作期间维护和/或访问可访问媒体装置列表410和事件列表420。可访问媒体装置列表410包括能够由控制器400访问的媒体装置的标识。可访问媒体装置列表410在发现事件、供应商定义的消息(VDM)时并且基于其他操作来更新。事件列表420包括触发数据移动的事件的列表。在一个具体实施中,最低优先级事件被列为事件列表420中的第一个。在另一具体实施中,每个事件具有与该事件一起存储的相关联的优先级指示符。如果两个事件被同时观察到并触发冲突动作,则首先满足较高优先级事件。
例如,如果第一事件命令启用给定核或装置上的预取器且第二事件致使停用给定核或装置上的预取器,那么将首先执行较高优先级事件。而且,如果第一事件请求将给定数据区域移动到第一位置,且第二事件请求将给定数据区域移动到第二位置,那么将首先满足较高优先级事件。此外,如果两个不同的事件请求DMA引擎,但是DMA引擎不能同时满足该请求,则将首先执行较高优先级事件。在一个具体实施中,在事件触发给定数据区域的移动之后,存在一段时间(即,冷却周期),在此期间没有其他事件可触发给定数据区域的另一移动。
现在转向图5,示出了事件列表500的一个示例。在一个具体实施中,(图4的)事件列表420包括事件列表500的条目。事件505是指I/O地址转换服务(ATS)转换完成事件。在一个具体实施中,ATS转换完成通过在转换完成日期条目中设置“CXL”位来限制对CXL.IO协议类型的访问。在一个具体实施中,针对不可高速缓存类型的数据设置“CXL”位。当此类事件发生时,控制器将对应的页放置在适于I/O风格、块访问的媒体上。这是因为在不久的将来,高速缓存行粒度CXL.cache和CXL.mem访问将可能不会发生在该页上。在一个具体实施中,适于I/O风格、块访问的媒体是快闪装置。如本文中所使用,术语“快闪”装置是指可用电写入或擦除的电子非易失性计算机存储器存储介质。存在两种主要类型的快闪存储器,即NOR快闪及NAND快闪。在一个具体实施中,条目505具有中优先级。
条目510涉及偏置翻转请求事件。将偏置翻转请求从装置发送到主机以使来自主机的高速缓存的高速缓存行无效。在一个具体实施中,使用RdOwnNoData操作码在CXL.cache请求信道上发送偏置翻转请求。偏置翻转请求是存储器将在不久的将来被装置使用的强指示。因此,控制器将与偏置翻转请求相关联的存储器区域拉到装置的本地存储器。在一个具体实施中,偏置翻转请求具有高优先级。
条目515是指当检测到对同一页的高速缓存行的所有权分组的“N”次读取时的事件,其中“N”是正整数。在一个具体实施中,高速缓存行的大小是64字节,并且页的大小是4千字节(KB)。然而,高速缓存行和页的大小在其他具体实施中可以变化。而且,“N”的值可以随具体实施而变化,其中“N”用作触发数据移动的阈值。所有权分组的读取是指装置以任何可写状态(例如,修改状态、排他状态)高速缓存数据的操作。控制器响应于检测到该事件而执行的动作是由于后续存储器访问相同数据范围的可能性而将数据拉到本地装置存储器。在一个具体实施中,条目515具有高优先级。
条目520是指完整高速缓存行的原子写入。当检测到同一页的“N”个这些分组时,数据将被拉到本地装置存储器。如果请求在最后一级高速缓存中未命中,则数据将被写入存储器。在一个具体实施中,条目520具有高优先级。
条目525是指高速缓存行的干净驱逐。在一个具体实施中,条目525在主机生成从装置高速缓存驱逐数据的请求时发生。条目525可以指具有数据的干净驱逐请求或没有数据的干净驱逐。换句话说,主机请求或不请求干净数据。响应于检测到对同一页的“N”个这些请求而执行的动作是将数据拉到主机的主存储器。在一个具体实施中,条目525具有中优先级。
条目530是指从主机所请求的装置高速缓存中驱逐经修改数据。如果检测到对同一页的“N”个这些脏驱逐分组,则所执行的动作是将对应的经修改数据传送到主机主存储器。在一个具体实施中,条目530具有高优先级。
条目535是指当主机将以共享或排他状态高速缓存数据时的窥探请求。装置将使高速缓存行降级为共享或无效,并且返回脏数据。如果检测到对同一页的“N”个这些窥探请求分组,则所执行的动作是将该页传送到主机主存储器。在一个具体实施中,条目535具有中优先级。
条目540是指当主机将以排他状态高速缓存数据时的窥探无效请求。装置将响应于接收到窥探无效请求而使高速缓存行无效。如果检测到对同一页的“N”个这些窥探无效请求分组,则所执行的动作是将该页传送到主机主存储器。在一个具体实施中,条目540具有中优先级。
条目545是指当主机想要高速缓存行的独占副本时的存储器读取分组。当检测到该事件时,所采取的动作是将对应的数据拉到主机主存储器以供后续访问。在一个具体实施中,条目545具有高优先级。
条目550是指当主机想要不可高速缓存但为高速缓存行的当前副本时的存储器读取分组。当检测到该事件时,所采取的动作是将对应的数据拉到主机主存储器以供后续访问。在一个具体实施中,条目550具有中优先级。
应当理解,事件列表500中示出的条目505-550的示例仅指示一个特定具体实施。在其他具体实施中,事件列表500可以具有与将触发数据移动的其他类型的事件相对应的其他数量和/或类型的条目。还应注意,“N”的值可随条目而变化,其中一个条目具有较高“N”值且另一条目具有较低“N”值。例如,当检测到以页为目标的5个分组时,一个条目可以引起该页的移动,而当检测到与页的高速缓存行相关联的3个分组时,另一条目可以引起该页的移动。换句话说,数据移动的阈值取决于事件类型,其中不同事件具有不同阈值。
尽管条目505-550的优先级被示为取高、中和低的值,但这仅表示一个具体实施。在其他具体实施中,这些值可以被转换成数值或二进制值。用于对优先级值进行编码的位的数量可根据具体实施而变化。此外,虽然在图5中示出了单个列表500,但是应当理解,列表500表示可以由流量分析器维护和访问的任何数量的列表。例如,在另一具体实施中,流量分析器维护三个列表,一个用于CXL.memory协议类型,一个用于CXL.cache协议类型,并且一个用于CXL.io协议类型。根据检测到的分组的类型,流量分析器将查询对应于该分组的协议类型的列表。
现在转向图6,示出了用于基于分组元数据来确定数据放置的方法600的一个具体实施。出于论述的目的,以顺序的次序示出此具体实施中的步骤。然而,应当注意,在所描述方法的各种具体实施中,同时地执行、以与所示不同的次序执行、或完全省略所描述元素中的一个或多个元素。还根据需要执行其他另外的元素。本文所述的各种***或设备中的任一者被配置为实现方法600。
流量分析器维护用于触发计算***中的数据移动的事件列表(框605)。而且,流量分析器监测遍历链路的分组流(框610)。该链路可以是互连件、结构、总线、存储器信道或其他。对于遍历该链路的每个分组,流量分析器检查与该分组相关联的元数据(框615)。在另一具体实施中,流量分析器分析遍历链路的分组的一部分(即,子集)。例如,在一个具体实施中,流量分析器检查遍历链路的每四个分组中的一个分组。在其他具体实施中,其他比率(例如,1/8,1/16)也是可能的。流量分析器确定元数据是否指示分组满足在事件列表的任何事件条目中指定的标准(框620)。
如果元数据指示给定分组满足在事件列表的任何事件条目中指定的标准(条件框625,“是”分支),则流量分析器使得对应的数据块从第一存储器装置移动到第二存储器装置(框630)。出于此论述的目的,假设第二存储器装置不同于第一存储器装置。在一个具体实施中,流量分析器查询可访问媒体装置列表(例如,图4的可访问媒体装置列表410)以确定用于迁移对应的数据块的优选存储器装置。在一个具体实施中,流量分析器耦接到DMA引擎,并且流量分析器对DMA引擎进行编程以执行从第一存储器装置到第二存储器装置的数据移动。
而且,一旦数据移动完成,就针对数据块更新虚拟到物理地址转换(框635)。更新该转换可涉及以特定次序执行的任何数量的动作,诸如通知操作***(OS)、暂停应用程序、发起TLB击落等等。根据具体实施和***架构,流量分析器可以被编程为以特定于***架构的次序来执行这些和/或其他步骤。在一些情况下,流量分析器执行更新页表和TLB中的转换的步骤,而不调用OS。在其他情况下,流量分析器与OS协作以便更新转换。例如,在一个具体实施中,流量分析器通过链路向OS发送请求转换更新的分组。在框635之后,方法600返回到框610,其中流量分析器继续监测遍历链路的分组流。
否则,如果给定分组的元数据不满足在事件列表的任何事件条目中指定的标准(条件框625,“否”分支),则方法600返回到框610,其中流量分析器继续监测遍历链路的分组流。
在各种具体实施中,软件应用程序的程序指令用于实现本文所描述的方法和/或机制。例如,设想到可由通用处理器或专用处理器执行的程序指令。在各种具体实施中,此类程序指令由高级编程语言表示。在其他具体实施中,将程序指令从高级编程语言编译成二进制、中间或其他形式。另选地,写入描述硬件的行为或设计的程序指令。此类程序指令由高级编程语言诸如C表示。另选地,使用硬件设计语言(HDL),诸如Verilog。在各种具体实施中,将程序指令存储在多种非暂态计算机可读存储介质中的任一种非暂态计算机可读存储介质上。存储介质可在使用期间由计算***访问以向计算***提供程序指令以用于程序执行。一般来说,这种计算***至少包括一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。
应当强调的是,上述具体实施仅是具体实施的非限制性示例。一旦完全了解上述公开内容,许多变型和修改对于本领域技术人员将变得显而易见。旨在将以下权利要求书解释为涵盖所有此类变型和修改。
Claims (20)
1.一种设备,包括:
控制单元,所述控制单元被配置为:
监测遍历链路的分组流;
检查所述分组流;以及
使得至少部分地基于所述检查而将数据块从第一存储器装置移动到第二存储器装置。
2.根据权利要求1所述的设备,其中所述控制单元被进一步配置为响应于确定与所述分组相关联的元数据满足对应于给定事件的标准而使得所述数据块被移动。
3.根据权利要求2所述的设备,其中所述给定事件具有第一阈值,并且所述控制单元被配置为响应于确定所述给定事件满足所述第一阈值而使得所述数据块被移动。
4.根据权利要求2所述的设备,其中所述给定元数据指示所述给定分组是地址转换服务完成分组,所述第一存储器装置是动态随机存取存储器,并且所述第二存储器装置是快闪存储器装置。
5.根据权利要求2所述的设备,其中所述给定元数据标识偏置翻转请求事件,其中所述第一存储器装置是处理器的***存储器,并且其中所述第二存储器装置是装置附接的存储器。
6.根据权利要求2所述的设备,其中标准包括所述给定分组是对所有权分组的读取的指示。
7.根据权利要求1所述的设备,其中所述控制单元耦接到直接存储器存取(DMA)引擎,并且其中所述控制单元被进一步配置为对所述DMA引擎进行编程以将第一数据块从所述第一存储器装置移动到所述第二存储器装置。
8.一种方法,包括:
由流量分析器监测遍历链路的分组流;
检查与所述分组流相关联的元数据;以及
使得至少部分地基于所述检查而将数据块从第一存储器装置移动到第二存储器装置。
9.根据权利要求8所述的方法,还包括响应于确定与所述分组相关联的元数据满足对应于给定事件的标准而使得所述数据块被移动。
10.根据权利要求9所述的方法,其中所述给定事件具有第一阈值,并且所述控制单元被配置为响应于确定所述给定事件满足所述第一阈值而使得所述数据块被移动。
11.根据权利要求9所述的方法,其中所述给定元数据指示所述给定分组是地址转换服务完成分组,所述第一存储器装置是动态随机存取存储器,并且所述第二存储器装置是快闪存储器装置。
12.根据权利要求9所述的方法,其中所述给定元数据标识偏置翻转请求事件,其中所述第一存储器装置是处理器的***存储器,并且其中所述第二存储器装置是装置附接的存储器。
13.根据权利要求9所述的方法,其中所述标准包括所述给定分组是对所有权分组的读取的指示。
14.根据权利要求8所述的方法,还包括对直接存储器存取(DMA)引擎进行编程,以将所述第一数据块从所述第一存储器装置移动到所述第二存储器装置。
15.一种***,包括:
多个处理单元;
连接所述多个处理单元的链路;和
流量分析器,所述流量分析器被配置为:
监测遍历链路的分组流;
检查所述分组流;以及
使得至少部分地基于所述检查而将数据块从第一存储器装置移动到第二存储器装置。
16.根据权利要求15所述的***,其中所述流量分析器被进一步配置为响应于确定与所述分组相关联的元数据满足对应于给定事件的标准而使得所述数据块被移动。
17.根据权利要求16所述的***,其中所述给定事件具有第一阈值,并且所述流量分析器被配置为响应于确定所述给定事件满足所述第一阈值而使得所述数据块被移动。
18.根据权利要求16所述的***,其中所述给定元数据指示所述给定分组是地址转换服务完成分组,所述第一存储器装置是动态随机存取存储器,并且所述第二存储器装置是快闪存储器装置。
19.根据权利要求16所述的***,其中所述给定元数据标识偏置翻转请求事件,所述第一存储器装置是中央处理单元的***存储器,并且所述第二存储器装置附接到加速器。
20.根据权利要求16所述的***,其中所述标准包括所述给定分组是对所有权分组的读取的指示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/124,872 US20220197506A1 (en) | 2020-12-17 | 2020-12-17 | Data placement with packet metadata |
US17/124,872 | 2020-12-17 | ||
PCT/US2021/063741 WO2022133053A1 (en) | 2020-12-17 | 2021-12-16 | Data placement with packet metadata |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116601613A true CN116601613A (zh) | 2023-08-15 |
Family
ID=79927260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180085242.3A Pending CN116601613A (zh) | 2020-12-17 | 2021-12-16 | 利用分组元数据的数据放置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220197506A1 (zh) |
EP (1) | EP4264905A1 (zh) |
JP (1) | JP2024501638A (zh) |
KR (1) | KR20230119669A (zh) |
CN (1) | CN116601613A (zh) |
WO (1) | WO2022133053A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240111421A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Connection Modification based on Traffic Pattern |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4078755B2 (ja) * | 1999-06-02 | 2008-04-23 | 株式会社日立製作所 | 帯域監視方法 |
US7047374B2 (en) * | 2002-02-25 | 2006-05-16 | Intel Corporation | Memory read/write reordering |
US7836165B2 (en) * | 2003-11-25 | 2010-11-16 | Intel Corporation | Direct memory access (DMA) transfer of network interface statistics |
US9703843B2 (en) * | 2011-07-01 | 2017-07-11 | Nec Corporation | Object placement apparatus, object placement method and program |
US11100004B2 (en) * | 2015-06-23 | 2021-08-24 | Advanced Micro Devices, Inc. | Shared virtual address space for heterogeneous processors |
US10185678B1 (en) * | 2015-10-30 | 2019-01-22 | Amazon Technologies, Inc. | Universal offloading engine |
US9908047B2 (en) * | 2016-04-25 | 2018-03-06 | Sony Interactive Entertainment America Llc | User save data migration based on location information |
US10762201B2 (en) * | 2017-04-20 | 2020-09-01 | Level Effect LLC | Apparatus and method for conducting endpoint-network-monitoring |
US11263143B2 (en) * | 2017-09-29 | 2022-03-01 | Intel Corporation | Coherent accelerator fabric controller |
US10764201B2 (en) * | 2017-11-28 | 2020-09-01 | Dornerworks, Ltd. | System and method for scheduling communications |
US10795774B2 (en) * | 2018-01-19 | 2020-10-06 | Rubrik, Inc. | Disaster recovery of archived data |
US10811112B2 (en) * | 2018-09-29 | 2020-10-20 | Western Digital Technologies, Inc. | Wear leveling with wear-based attack detection for non-volatile memory |
US20190155645A1 (en) * | 2019-01-23 | 2019-05-23 | Intel Corporation | Distribution of network traffic to processor cores |
US12032534B2 (en) * | 2019-08-02 | 2024-07-09 | EMC IP Holding Company LLC | Inline deduplication using stream detection |
KR20210026895A (ko) * | 2019-09-02 | 2021-03-10 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11588891B2 (en) * | 2019-11-04 | 2023-02-21 | Google Llc | Access pattern driven data placement in cloud storage |
-
2020
- 2020-12-17 US US17/124,872 patent/US20220197506A1/en active Pending
-
2021
- 2021-12-16 WO PCT/US2021/063741 patent/WO2022133053A1/en active Application Filing
- 2021-12-16 JP JP2023536462A patent/JP2024501638A/ja active Pending
- 2021-12-16 EP EP21847819.6A patent/EP4264905A1/en active Pending
- 2021-12-16 KR KR1020237022675A patent/KR20230119669A/ko unknown
- 2021-12-16 CN CN202180085242.3A patent/CN116601613A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2024501638A (ja) | 2024-01-15 |
KR20230119669A (ko) | 2023-08-16 |
US20220197506A1 (en) | 2022-06-23 |
EP4264905A1 (en) | 2023-10-25 |
WO2022133053A1 (en) | 2022-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6944983B2 (ja) | ハイブリッドメモリ管理 | |
US9892803B2 (en) | Cache management request fusing | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
CN110865968B (zh) | 多核处理装置及其内核之间数据传输方法 | |
EP2476051B1 (en) | Systems and methods for processing memory requests | |
US20170109279A1 (en) | Partitioning shared caches | |
US10303602B2 (en) | Preemptive cache management policies for processing units | |
US9208091B2 (en) | Coherent attached processor proxy having hybrid directory | |
US11500797B2 (en) | Computer memory expansion device and method of operation | |
US20140089600A1 (en) | System cache with data pending state | |
US10467138B2 (en) | Caching policies for processing units on multiple sockets | |
US20150309944A1 (en) | Methods for cache line eviction | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
US10204053B2 (en) | Modeling processor shared memory using a cacheability status | |
JP2023507292A (ja) | ゼロ値メモリ圧縮 | |
JP5976225B2 (ja) | スティッキー抜去エンジンを伴うシステムキャッシュ | |
US9448937B1 (en) | Cache coherency | |
CN116601613A (zh) | 利用分组元数据的数据放置 | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
US11126568B2 (en) | Object coherence in distributed shared memory systems | |
CN115087961B (zh) | 用于相干及非相干存储器请求的仲裁方案 |
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 |