CN112860598A - 呼入数据的受控缓存注入的方法、系统和介质 - Google Patents
呼入数据的受控缓存注入的方法、系统和介质 Download PDFInfo
- Publication number
- CN112860598A CN112860598A CN202110119925.8A CN202110119925A CN112860598A CN 112860598 A CN112860598 A CN 112860598A CN 202110119925 A CN202110119925 A CN 202110119925A CN 112860598 A CN112860598 A CN 112860598A
- Authority
- CN
- China
- Prior art keywords
- data
- memory addresses
- processor
- cache
- memory
- 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.)
- Granted
Links
Images
Classifications
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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
-
- 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/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及呼入数据的受控缓存注入的方法、系统和介质,包括在计算机存储介质上编码的计算机程序。所述方法、系统、以及设备包括向输入输出装置提供对于数据的请求以及接收用于所请求的数据的存储器地址的集合的动作。附加性动作包括确定存储器地址的子集,提供对于处理器预取或注入与存储器地址的子集相对应的数据的请求,以及接收所请求的数据和存储器地址的集合。附加性动作包括确定所接收的数据包括用于已经请求被预取或注入的存储器地址的子集的数据,将用于存储器地址的子集的数据存储在处理器的缓存中以及将用于存储器地址的所接收的数据的剩余数据存储在主存储器中。
Description
分案说明
本申请属于申请日为2015年5月5日的中国发明专利申请No.201580030116.2的分案申请。
技术领域
本公开一般涉及处理器缓存。
背景技术
与计算机可能能够从主存储器访问数据相比,计算机可能能够从缓存访问数据更快。因此,为了加快涉及访问数据的处理,计算机可将数据的某些部分存储在缓存而非主存储器中,以加快执行。
发明内容
一般而言,本说明书所述主题的方案可能涉及用于预取或积极注入呼入的输入输出数据的进程。处理器可包括这样的缓存,与处理器可能从主存储器访问数据相比,处理器可能从缓存访问数据更快。这些缓存可以与不同的级相关联。例如,多核处理器可包括第一级(例如L1缓存)和第二级(例如L2缓存)的多个缓存(每个缓存与处理器的特定核相关联)以及统一被多个核共享的最后级缓存(例如L3缓存)。不同的级可以与不同的访问速度以及共享模型相关联。例如,与来自较低级缓存(例如最后级缓存)的数据相比,可以更快地访问来自第一级缓存的数据。
为了加快涉及访问数据的进程,系统可将数据预取到处理器的缓存中。预取数据可包括在处理器使用数据之前访问并将数据存储在缓存中。例如,如果系统确定处理器可以在一微秒之后使用主存储器的特定存储器地址中存储的数据,那么在一微秒经过之前,系统可以发出预取指令,访问主存储器的特定存储器地址中存储的数据,并将所访问的数据存储在处理器的缓存中,使得它以及时的方式低延迟地可用于处理器。在一微秒之后并且在处理器需要使用数据的时候,处理器可以从缓存而不是从主存储器访问数据,从而获得更快的执行,因为处理器不必拖延,以等候来自主存储器的数据。
在实施方式中,系统可以一开始将从输入输出装置接收的所有数据注入处理器的最后级缓存。例如,系统可以假定处理器有可能很快需要最近被输入输出装置接收的所有数据。因此,系统可将所有最近接收的数据缓存到处理器的L3缓存中。但是,不一定很快使用所有接收的数据。例如,可能立刻使用所接收的数据的一半,但是有一半数据可能不使用,直到一分钟或更久之后。将并非很快使用的数据缓存可以取代缓存中将很快使用的现有数据,污染缓存,也可以称为污染缓存中的工作集。在另一个示例中,对于流数据的情况(例如大量呼入数据),在前面的数据被处理器消费并合并到正在进行的计算之前,当后面的数据覆盖前面的数据时,会出现性能效率低下。此外,与从处理器的第一级缓存访问数据相比,从最后级缓存访问数据可能更慢。因此,在最后级缓存而不是第一级缓存中缓存的数据可能减慢处理器的处理,虽然该处理仍然比没有进行缓存更快。
在另一个实施方式中,并非一开始在处理器的最后级缓存中预取从输入输出装置接收的所有数据,系统可将从输入输出装置接收的数据的子集预取到处理器的第一级缓存中。数据的子集可以是数据的前缀或报头部分。例如,在从输入输出装置接收的数据的二十个缓存行中,系统可以预取数据的前三个缓存行,并将用于前三个缓存行的数据缓存到处理器的特定核的L1缓存中。在处理第一级缓存中存储的数据时,系统可以利用及时预取(又称为流预取)从主存储器访问剩余部分,并且正好在处理器消费剩余部分并将数据吸收到正在进行的计算中之前,将剩余部分存储在第一级缓存中。这可能很重要,因为第一级缓存可能容量小,并且到第一级缓存中的任何注入都可能需要被控制并且仅用于前几个缓存行。
在预取子集时,系统可以确定处理器可能很快要使用的数据量。例如,可将第一级缓存表示为具有8列64行的阵列,每个行代表一个缓存行,其中每个单元代表一个存储器地址,并且所确定的数据量可以对应于行的数量,例如1到64行。然后,系统可将对应于所确定的量的数据存储在处理器的第一级缓存中,将对应于所接收的数据的剩余部分的数据存储在主存储器中。因此,系统可以减少缓存污染并提高数据访问速度。
在一些方案中,本说明书所述主题可以在以下方法中具体实施,所述方法可包括以下动作:通过用户进程向输入输出装置提供对于数据的请求,以及响应于向输入输出装置提供对于数据的请求,通过用户进程并从输入输出装置接收用于所请求的数据的存储器地址的集合。附加动作包括响应于接收用于所请求的数据的存储器地址的集合,通过用户进程确定用于所请求的数据的存储器地址的子集,以及响应于确定用于所请求的数据的存储器地址的子集,通过用户进程并向处理器提供对于处理器预取与用于所请求的数据的存储器地址的子集相对应的数据的请求。其他动作包括在提供对于处理器预取与用于所请求的数据的存储器地址的子集相对应的数据的请求之后,通过存储器控制器接收所请求的数据以及用于所请求的数据的存储器地址的集合。附加动作包括响应于通过存储器控制器接收所请求的数据以及用于所请求的数据的存储器地址的集合,通过存储器控制器确定所接收的数据包括用于已经请求被预取的存储器地址的子集的数据,以及响应于确定所接收的数据包括用于已经请求被预取的存储器地址的子集的数据,通过存储器控制器将用于存储器地址的子集的数据存储在处理器的第一级缓存中以及将用于存储器地址的所接收的数据的剩余数据存储在主存储器中。
其他版本包括对应的系统、设备以及被配置为执行所述方法的动作、在计算机存储装置上编码的计算机程序。
这些版本和其他版本可以分别选择性地包括一个或多个以下特征。例如,在一些实施方式中,确定用于所请求的数据的存储器地址包括确定要预取的存储器地址的数量,并从存储器地址的集合中选择所确定数量的存储器地址作为存储器地址的子集。
在某些方案中,提供对于处理器预取与用于所请求的数据的存储器地址的子集相对应的数据的请求包括提供指示存储器地址的子集并指示存储器地址的子集要被预取的指令。
在一些方案中,附加动作包括接收对于处理器预取与用于所请求的数据的存储器地址的子集相对应的数据的请求,从多个第一级缓存中选择处理器的第一级缓存,以及响应于接收对于处理器预取与用于所请求的数据的存储器地址的子集相对应的数据的请求,将存储器地址缓存在处理器的第一级缓存中。
在一些实施方式中,附加动作包括响应于通过输入输出装置接收所请求的数据,发出指示所请求的数据以及存储器地址的DMA写入操作,其中通过存储器控制器接收所请求的数据以及用于所请求的数据的存储器地址的集合包括接收DMA写入操作。
在某些方案中,通过存储器控制器将用于存储器地址的子集的数据存储在处理器的第一级缓存中以及将用于存储器地址的所接收的数据的剩余数据存储在主存储器中包括:触发处理器将用于存储器地址的子集的数据存储在第一级缓存中以及触发将用于存储器地址的所接收的数据的剩余数据存储在主存储器中。
在一些方案中,存储器控制器被包括在处理器中。
本说明书所述主题的一个或多个实施方式的细节在以下的附图和描述中给出。根据描述、附图以及权利要求书,本主题的其他潜在特征、方案及优点将变得显而易见。
附图说明
图1A是用于在处理器的最后级缓存中预取数据的系统的方框图。
图1B是用于在处理器的第一级缓存中预取数据的系统的方框图。
图2是示例进程的流程图,该进程可能在等候呼入的输入输出数据,且发送预取到处理器的第一级缓存中。
图3是示例进程的流程图,该进程用于从输入输出装置到系统存储器中的写入事务,可能有到第一级或第二级缓存中的注入。
不同附图中相同的标记表示相同的元件。
具体实施方式
图1A是用于在处理器的最后级缓存中预取数据的系统100的方框图。系统100一般包括用户进程110、用于输入输出(I-O)装置122的输入输出装置(I-O)装置驱动器120、以及作为处理器140一部分的存储器控制器130。系统100可以是计算装置,例如服务器、台式电脑、笔记本电脑、移动电话、或平板电脑。
用户进程110可以是使用从I-O装置122接收的数据的应用。例如,用户进程110可以是使用从作为网络接口卡的I-O装置122接收的网页数据的网络浏览器应用。为了使用数据,用户进程110可以向I-O装置122的I-O装置驱动器120提供对于数据的请求(152)。例如,网络浏览器可以向控制网络接口装置的网络接口卡驱动器提供对于特定网站的网页数据的数据请求。但是,在未示出的某些其他示例中,用户进程110可以使用映射到I-O装置122的用户缓冲区经由用户空间通信与I-O装置122而不是I-O装置驱动器120通信(该映射可通过I-O装置驱动器120实现)。在这种情况下,用户进程110可以直接与I-O装置122握手以发送和接收数据(在通过I-O装置驱动器120初始化期间完成设置之后)。
I-O装置驱动器120可以从用户进程110接收数据请求,并控制I-O装置122接收数据。例如,网络接口卡驱动器可以从网络浏览器接收对于网页的数据的请求,并控制网络接口卡获得网页的数据。在一些实施方式中,I-O装置122可以是网络接口卡、硬盘、CD-ROM驱动器、扫描仪、声卡、其它种类的附连有外围组件互连高速(PCIe)的I-O装置(例如固态驱动器(SSD))、非易失性存储器、或连接到I-O接口的其它装置。I-O装置驱动器120可以向存储器控制器130提供所接收的数据(154)。例如,I-O装置驱动器120可以发出指示所接收的数据的直接存储器访问(DMA)写入操作。
作为处理器140一部分的存储器控制器130可以从I-O装置驱动器120接收数据并将数据缓存在处理器140的最后级缓存中(156)。例如,存储器控制器130可以从网络接口卡驱动器接收指示网页数据的DMA写入操作,并将网页数据缓存在处理器140的L3缓存中。
但是,在处理器140的最后级缓存中缓存的数据的一部分或全部不一定很快被使用。因此,缓存数据可能污染最后级缓存的常规工作集。此外,与从处理器的第一级缓存访问数据相比,从最后级缓存访问数据可能更慢。因此,在最后级缓存而不是第一级缓存中缓存的数据可能减慢处理器的处理,虽然该处理仍然比没有进行缓存更快。
图1B是用于在处理器的第一级缓存中预取数据的系统的方框图。系统160通常可包括用户进程110、用于I-O装置122的装置驱动器120、以及作为处理器140一部分的存储器控制器130。系统160可以是计算装置,例如服务器、台式电脑、笔记本电脑、或移动电话。
用户进程110可以是使用从I-O装置122接收的数据的应用。例如,用户进程110可以是使用从作为网络接口卡的I-O装置122接收的网页数据的网络浏览器应用。为了使用数据,用户进程110可以向I-O装置122的I-O装置驱动器120提供数据请求(172)。例如,网络浏览器可以向控制网络接口装置的网络接口卡驱动器提供对于网页数据的数据请求。
响应于数据请求,用户进程110可以一开始从I-O装置驱动器120接收存储器地址(174)。存储器地址可以指示这样的存储器地址,其中可以存储响应于数据请求由I-O装置122接收的数据。例如,用户进程110可以接收这样的指示,即存储器地址Y1-Y5将存储响应于对于网页数据的请求由I-O装置122接收的数据。
响应于接收存储器地址,用户进程110可以确定要预取的存储器地址的子集。例如,用户进程110可以确定从存储器地址Y1-Y5的集合预取存储器地址Y1-Y3的子集。用户进程110可以基于确定要预取的存储器地址的集合中前几个地址的数量来确定要预取的存储器地址的子集,并从存储器地址的集合中选择地址的第一数量。例如,用户进程110可以确定在存储器地址的集合中预取两个、三个、或四个地址,且分别从存储器地址的集合中选择前两个、三个、或四个地址。在一些实施方式中,存储器地址的集合的存储器地址可以是连续的,且第一存储器地址可以是具有最低值的存储器地址。例如,存储器地址Y5可以使存储器地址Y1的值增加4。
用户进程110可以确定要预取的存储器地址的数量。在一个实施方式中,用户进程110可以不断地使用相同的数量。例如,对于特定用户进程,要预取的地址的数量可以总是三个地址。对于另一个特定用户进程,要预取的地址的数量可以总是两个地址。
在另一个实施方式中,用户进程110可以动态地确定要预取的地址的数量。例如,如果用户进程110确定数据可以很快被处理,则用户进程110可以确定预取四个存储器地址。在另一示例中,如果用户进程110确定数据不一定可以很快被处理,则用户进程110可以确定预取两个存储器地址。
在附加示例中,用户进程110可以基于将每个缓存行合并到正在进行的计算的处理时间的占空比来确定要预取的地址的数量。例如,对于较高的占空比,用户进程110可以确定较高的数量,而对于较低的占空比,用户进程110可以确定较低的数量。
在又一示例中,用户进程110可将要预取的地址的数量确定为接收数据的存储器地址的数量的一半四舍五入。例如,如果为五个存储器地址的集合接收数据,则用户进程110可以确定要预取的地址的数量是五的一半四舍五入,结果是三。
在一些实施方式中,用户进程110可以基于确定要预取的存储器地址的缓存行的数量、确定第一缓存行达到确定的数量、以及将所确定的第一缓存行中的存储器地址包括在要预取的存储器地址的子集中,确定要预取的存储器地址的子集。
响应于确定存储器地址的子集,用户进程110可以向处理器140提供预取命令,指令处理器140预取所确定的存储器地址的子集(176)。例如,用户进程110可以向处理器140提供对地址Y1-Y3的预取命令176。在另一个实施方式中,用户进程110可以针对存储器地址提供预取命令,且存储器控制器或另一个引擎可以替代性地确定要预取的存储器地址的子集。
在一些实施方式中,用户进程110可以确定将存储器地址预取到哪个缓存级或缓存分区。例如,用户进程110可以确定将存储器地址预取到第二级缓存中,并提供用于将存储器地址预取到处理器140的第二级缓存中的预取命令176。
关于I-O装置驱动器120,I-O装置驱动器120可以从用户进程110接收数据请求,并控制I-O装置122接收数据。例如,采取网络接口卡驱动器形式的I-O装置驱动器120可以从网络浏览器接收对于网页的数据的请求,并控制采取网络接口卡形式的I-O装置122接收网页的数据。在一些实施方式中,I-O装置122可以选择性地是硬盘、CD-ROM驱动器、DVD-ROM、扫描仪、声卡、或任何其他外围I-O装置。
响应于接收数据请求,I-O装置驱动器120可以确定数据的存储器地址。例如,I-O装置驱动器120可以确定可将对网页数据的请求存储在存储器地址Y1-Y5中。I-O装置驱动器120可以确定存储器地址本身。例如,I-O装置驱动器120可以确定存储器地址Y1-Y5是在循环缓冲区中存储数据的下一个地址,并且作为响应,确定存储器地址Y1-Y5将存储数据。
附加性地或替代性地,I-O装置驱动器120可以响应于来自操作系统或用户进程110的信息来确定存储器地址。例如,响应于数据请求,装置驱动器120可以向操作系统或用户进程110查询存储器地址,以存储响应于数据请求而接收的数据,并确定将所接收的数据存储在通过操作系统或用户进程110识别的存储器地址中。
在确定用于要接收的数据的存储器地址之后,I-O装置驱动器120可以接收数据并将所接收的数据提供给存储器控制器130(178)。例如,在接收用于存储器地址Y1-Y5的数据之后,I-O装置驱动器120可以发出指示存储器地址Y1-Y5以及所接收的用于该存储器地址的数据的DMA写入操作。
如上所述,在一些实施方式中,用户进程110和存储器控制器130可以使用映射到I-O装置122的用户缓冲区经由用户空间通信与I-O装置122而不是I-O装置驱动器120通信。因此,所示与I-O装置驱动器120相关联的通信(172、174和178)可以替代性地与用户缓冲区相关联。
关于存储器控制器130,存储器控制器130可以是处理器140的一部分,并且可从I-O装置驱动器120接收存储器地址以及用于存储器地址的数据(178)。例如,存储器控制器130可以接收I-O装置驱动器120发出的指示存储器地址Y1-Y5以及用于该存储器地址的数据的DMA写入操作。
响应于从I-O装置驱动器120接收存储器地址以及用于该存储器地址的数据,存储器控制器130可以确定,是否已经将存储器地址缓存在处理器140的第一级缓存中。例如,存储器控制器130可以确定,是否已经将在DMA写入操作中指示的存储器地址Y1-Y5中的任何一个缓存在处理器140的L1缓存的任何一个中。
存储器控制器130可通过监测在处理器140的缓存中缓存的存储器地址来确定,是否已将存储器地址缓存在处理器140的第一级缓存中。例如,存储器控制器130可以跟踪在处理器140的每个缓存中存储哪些存储器地址。存储器控制器130可通过访问描述在处理器140的缓存中存储什么的信息来确定是否已将存储器地址缓存在处理器140的第一级缓存中。可以以位图或位掩码的形式将信息存储在处理器140的最后级缓存中,该信息指示与一部分缓存相对应的存储器地址。
存储器控制器130可将用于存储器地址的数据存储在缓存中(180)。例如,存储器控制器130可以确定,存储器地址Y1-Y3被缓存在核1的L1缓存中,并且作为响应,存储器控制器130可将与存储器地址Y1-Y3相对应的数据存储在与存储器地址相关联的缓存中。在另一个示例中,存储器控制器130可以确定,存储器地址Y1-Y3被缓存在核2的L1缓存中,并且作为响应,存储器控制器130可将与存储器地址Y1-Y3相对应的数据存储在与存储器地址相关联的缓存中。
存储器控制器130可将被确定为不缓存在处理器140的缓存中的用于存储器地址的剩余数据存储在主存储器中(182)。例如,存储器控制器130可以确定,存储器地址Y4-Y5不被缓存在处理器140的任何L1缓存中,并将用于存储器地址Y4-Y5的剩余数据存储在主存储器中。
处理器140可以包括多个核,每个核包括相关联的第一级缓存,例如L1缓存,以及被多个核共享的最后级缓存,例如L3缓存。例如,处理器140可包括两个核,每个核包括中央处理器和L1缓存,其中这两个核共享L3缓存。
处理器140可从用户进程110接收预取命令。预取命令可以指示要预取的一个或多个存储器地址。例如,预取命令可以指示存储器地址Y1-Y3。响应于预取命令,处理器140可将存储器地址缓存在执行预取命令的核的第一级缓存中。例如,如果核1执行预取命令,则处理器140可将存储器地址Y1-Y3缓存在核1的L1缓存中。在另一个示例中,如果核2执行预取命令,则处理器140可将存储器地址Y1-Y3缓存在核2的L1缓存中。
可以使用系统100和160的不同配置,其中可将用户进程110、I-O装置驱动器120、I-O装置122、存储器控制器130、主存储器132、以及处理器140的功能组合、进一步分离、分布、或互换。系统100和160可以在单个装置中实现,也可以分布在多个装置上。
图2是示例进程200的流程图,进程200可能在等候呼入的输入输出数据,且发送预取到处理器的第一级缓存中。进程200可通过处理器140上执行的I-O装置驱动器120或用户进程110进行。进程200可包括等候立即需要的呼入数据(210)。例如,进程200可以等候来自硬盘驱动器或网络接口卡的呼入数据。
进程200可包括确定是否将新数据存储在用于呼入数据的前例如X个缓存行的地址中(220)。新数据可以表示呼入数据。例如,进程可以确定用于呼入数据的前两个缓存行对应于目标地址Y1-Y8,并确定是否将表示呼入数据的新数据存储在目标地址中。
如果进程200确定将新数据存储在目标地址中,则进程200可包括处理来自缓存的下一个分组,并将数据吸收到正在进行的计算中(230)。例如,进程200可包括从缓存行的目标地址获得用于下一个数据分组的数据,并利用所获得的数据进行处理。
进程200可包括确定是否已经处理了所有呼入数据(240)。例如,进程200可包括确定是否还没有处理附加的数据分组。如果尚未处理所有呼入数据,则进程200可以重复处理下一个分组,直到已经处理所有数据分组(230)。
如果进程200确定新数据不是存储在目标地址中,则进程200可以发出对于第一数量的缓存行的预取(250)。例如,进程200可以确定,新数据不是存储在第一数量的缓存行的目标地址中,并且可以发出预取,从而将缓存行分配在处理器的第一级缓存中。
进程200可包括对第一数量的缓存行的自旋轮询或者回到进行其他工作(260)。例如,进程200可包括等候,直到将表示呼入数据的新数据存储在第一数量的缓存行中,或者进行不需要呼入数据的其他进程。
图3是示例进程300的流程图,进程300用于从输入输出装置到系统存储器中的写入事务,可能有到第一级或第二级缓存中的注入。进程300可包括接收包括报头和数据的DMA写入操作(310)。报头可指示将数据存储在哪里。
进程300可包括确定在其中写入数据的存储器中的一个或多个目标地址(320)。例如,根据报头,进程300可包括确定将数据写入地址Y1-Y8。
进程300可包括确定是否将一个或多个目标地址分配在第一级缓存中(330)。例如,进程300可包括利用存储器控制器130确定是否将这些目标地址分配在处理器140的任何第一级缓存的第一级缓存中。
如果进程300确定将一个或多个目标地址分配在第一级缓存中,则进程300可包括确定用于目标地址的特定第一级缓存(340)。例如,进程300可包括确定在第一核的第一级缓存中或者在第二核的第一级缓存中分配目标地址。在示例中,如果进程300确定将目标地址存储在多个核的第一级缓存中,则进程300可以选择第一级缓存的其中一个。例如,进程300可以选择最近核的第一级缓存。
然后,进程300可将DMA写入操作的数据注入和/或覆盖到特定的第一级缓存中(350)。例如,进程300可包括将与分配在第一级缓存中的目标地址相对应的数据写入分配的地址中。
如果进程300确定一个或多个目标地址不是分配在第一级缓存中,则进程300可包括确定一个或多个目标地址是否分配在第二级缓存中(360)。例如,进程300可包括利用存储器控制器130确定是否将这些目标地址分配在处理器140的任何第二级缓存的第二级缓存中。
如果进程300确定将一个或多个目标地址分配在第二级缓存中,则进程300可包括确定用于目标地址的特定第二级缓存(360)。例如,进程300可包括确定将目标地址分配在第一核的第二级缓存中或者分配在第二核的第二级缓存中。在示例中,如果进程300确定将目标地址存储在多个核的第二级缓存中,则进程300可以选择第二级缓存的其中一个。例如,进程300可以选择最近核的第二级缓存。
然后,进程300可将DMA写入操作的数据注入和/或覆盖到特定的第二级缓存中(370)。例如,进程300可包括将数据写入第二级缓存中的分配地址。
如果进程300确定一个或多个目标地址不是分配在第二级缓存中,则进程300可包括将数据的第一部分存储在处理器140的第三级缓存中,并将剩余数据存储在存储器中。例如,进程300可包括将用于地址Y1-Y3的数据存储在处理器140的第三级缓存中,并将用于地址Y4-Y5的数据存储在存储器中。
在将数据缓存在处理器的第一级缓存中的进程的替代实施方式中,用户进程110可以向I-O装置驱动器120提供数据请求。例如,采用媒体播放器形式的用户进程可将对于媒体数据的数据请求提供给采用DVD-ROM驱动器形式的I-O装置驱动器。
该进程可通过I-O装置驱动器120接收数据请求并确定存储数据的地址来继续。例如,DVD-ROM驱动器可以确定要从DVD-ROM装置检索的数据将被存储在地址Y10-Y20中。I-O装置驱动器120可将所确定的地址提供给用户进程110。例如,DVD-ROM驱动器可以向媒体播放器指示,地址Y10-Y20将存储媒体数据。
该进程可通过用户进程110接收存储器地址来继续。例如,媒体播放器可以接收存储器地址Y10-Y20将响应于媒体播放器提供的数据请求存储数据的指示。
该进程可通过用户进程110确定要缓存的地址的子集来继续。例如,媒体播放器可以确定数据被很快消费并确定预取前五个存储器地址,以及确定前五个存储器地址是Y10-Y14。在另一个实施方式中,媒体播放器可以确定数据不会很快被消费并确定仅预取第一存储器地址,以及确定预取存储器地址Y10。
该进程可通过用户进程110提供对于地址子集的预取命令来继续。例如,用户进程110可以为处理器140提供预取命令,以预取存储器地址Y10-Y14。
该进程可通过作为处理器140一部分的存储器控制器130接收预取命令并且作为响应在第一级缓存中缓存地址的子集来继续。例如,响应于接收对于存储器地址Y10-Y14的预取命令,处理器140可以在处理器140的核2的L1缓存中为存储器地址Y10-Y14分配空间。
该进程可通过I-O装置驱动器120接收用于地址的数据来继续。例如,DVD-ROM装置驱动器可以接收用于存储器地址Y10-Y14的媒体数据。I-O装置驱动器120可将所接收的数据以及存储器地址提供给处理器140中的存储器控制器130。例如,一旦通过DVD-ROM驱动器从DVD-ROM装置接收媒体数据,DVD-ROM驱动器就可以发出指示存储器地址Y10-Y20以及用于存储器地址的媒体数据的DMA写入操作。
该进程可通过处理器140确定是否将地址缓存来继续。例如,处理器140中的存储器控制器130可以确定是否将存储器地址Y10-Y20的任何一个存储在处理器140的缓存的任何一个中。
该进程可通过处理器140中的存储器控制器130存储与处理器140的缓存中的存储器地址的子集相对应的数据,并将剩余的数据存储在主存储器中来继续。例如,响应于确定将出自存储器地址Y10-Y20的存储器地址Y10-Y14存储在处理器140的核2的L1缓存中,存储器控制器130可将用于存储器地址Y10-Y14的数据存储在核2的L1缓存中,并将用于存储器地址Y15-Y20的剩余数据存储在主存储器132中。
本说明书所述主题、功能操作和进程的实施例可以在数字电子电路、在以有形方式具体实施的计算机软件或固件、在计算机硬件中实施,包括本说明书中公开的结构及其结构等同物,或者在它们的一个或多个的组合中实施。本说明书中所述主题的实施例可以被实施为一个或多个计算机程序,即,在有形非易失性程序载体上编码的计算机程序指令的一个或多个模块,用于通过数据处理设备执行或控制数据处理设备的操作。替代性或附加性地,可以在人工生成的传播信号(例如机器生成的电、光或电磁信号)上将程序指令编码,信号被生成为将信息编码,用于传输给合适的接收器设备,通过数据处理设备执行。计算机存储介质可以是机器可读存储装置、机器可读存储衬底、随机或串行访问存储器装置、或者它们的一个或多个的组合。
术语“数据处理设备”包括用于处理数据的所有种类的设备、装置和机器,作为示例,包括可编程处理器、计算机、或多个处理器或计算机。设备可包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,设备还可包括为所考虑的计算机程序创造执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们的一个或多个的组合的代码。
计算机程序(还可以称为或描述为程序、软件、软件应用、模块、软件模块、脚本、或代码)可以按照任何形式的编程语言编写,包括编译或解释语言、或声明性或过程性语言,并且可以按照任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序可以但是不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、存储在专用于所考虑的程序的单个文件中、或者存储在多个协同文件中(例如,存储一个或多个模块、子程序、或代码部分的文件)。可将计算机程序部署为在一个计算机上执行,或者在位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。
本说明书中所述进程和逻辑流程可通过执行一个或多个计算机程序的一个或多个可编程计算机执行,从而通过对输入数据进行操作并生成输出来执行功能。进程和逻辑流也可通过专用逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行,并且可将设备实施为专用逻辑电路。
适合执行计算机程序的计算机包括(作为示例,可以基于)通用或专用微处理器或两者、或任何其他类型的中央处理器。通常,中央处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于进行或执行指令的中央处理器以及用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括用于存储数据的一个或多个大容量存储装置,例如磁盘、磁光盘、或光盘,或者可操作性地连接为由其接收数据或向其传送数据或两者兼有。但是,计算机不需要具有这样的装置。此外,可将计算机嵌入另一个装置中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器、或便携存储装置(例如通用串行总线(USB)闪存驱动器),仅举几例。
适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质、以及存储器装置,作为示例,包括半导体存储器装置(例如EPROM、EEPROM、以及闪存装置);磁盘(例如内部硬盘或移动盘);磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可通过专用逻辑电路补充或者被合并在专用逻辑电路中。
为了提供与用户的交互,本说明书所述主题的实施例可以在具有显示装置(用于向用户显示信息,例如CRT(阴极射线管)或LCD(液晶显示器)监视器)以及键盘和指示装置(用户由其向计算机提供输入,例如鼠标或轨迹球)的计算机上实施。也可以利用其他类型的装置提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈、或触觉反馈;并且可以按照任何形式接收来自用户的输入,包括声音、语音、或触觉输入。此外,计算机可通过向用户使用的装置发送文档以及从用户使用的装置接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求向用户的客户端装置上的网络浏览器发送网页。
本说明书中所述主题的实施例可以在包括后端组件(例如作为数据服务器)的计算系统、或包括中间件组件(例如应用服务器)的计算系统、或包括前端组件(例如具有图形用户界面或网络浏览器的客户端计算机,用户可以由其与本说明书所述主题的实施方式交互)的计算系统,或者一个或多个这样的后端、中间件、或前端组件的任何组合中实施。系统的组件可通过数字数据通信的任何形式或介质(例如通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如因特网。
计算系统可包括客户端和服务器。客户端和服务器一般相互远离并且一般通过通信网络交互。客户端与服务器的关系借助于在各个计算机上运行且相互具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体实施方式细节,但是不应将其解释为对所主张的范围的限制,而是作为专用于特定实施例的特征的描述。在单独实施例的背景下本说明书中所述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的背景下所述的各种特征也可以在多个实施例中单独或通过任何合适的子组合实现。此外,虽然上面可将特征描述为在某些组合中起作用并且甚至一开始这样主张,但是在有些情况下可将来自所主张的组合的一个或多个特征从组合中去除,并且所主张的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中按照特定顺序描绘了操作,但是不应将其理解为要求这些操作按照所示特定顺序或者按照依次顺序执行,或者进行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,不应将上述实施例中各种系统组件的分离理解为在所有实施例中都要求这样的分离,并且应当理解,所述程序组件和系统通常可以一起被集成在单个软件产品中或者封装在多个软件产品中。
已经描述了主题的特定实施例。其他实施例落入后附权利要求的范围。例如,可以按照不同的顺序执行权利要求中记载的动作且仍然实现期望的结果。作为一个示例,附图中描绘的进程不一定要求所示的特定顺序或者依次顺序来实现期望结果。在某些实施方式中,多任务和并行处理可能是有利的。可以提供其他步骤,或者可以从所述进程中消除步骤。因此,其他实施方式落入后附权利要求的范围。
Claims (20)
1.一种计算机实施的方法,包括:
通过用户进程向输入输出装置提供对于尚不可用的数据的请求,其中,所述用户进程是使用从所述输入输出装置接收的数据的软件应用;
通过所述用户进程并从所述输入输出装置接收用于所请求的尚不可用的数据的存储器地址的集合;
通过所述用户进程确定所请求的尚不可用的数据的所接收的存储器地址的子集,所述子集与要被处理器缓存的数据相对应;
通过所述用户进程确定所述存储器地址的子集被预取到的处理器的缓存中的缓存级;
通过所述用户进程向所述处理器提供对于所述处理器在所述处理器的所述缓存中分配空间来以用于所请求的尚不可用的数据的确定的缓存级缓存与所述存储器地址的子集相对应的数据的请求;
通过存储器控制器接收所请求的数据以及与所请求的数据相对应的所述存储器地址的集合;以及
通过所述存储器控制器将用于所述存储器地址的集合的所接收的数据中的与所述存储器地址的子集相对应的数据存储在所述处理器的所述缓存的所分配的空间中以及将用于所述存储器地址的集合的所接收的数据的剩余数据存储在主存储器中。
2.根据权利要求1所述的方法,其中,通过所述存储器控制器将用于所述存储器地址的子集的数据存储在所述处理器的缓存中以及将用于所述存储器地址的所接收的数据的剩余数据存储在主存储器中包括:
通过所述存储器控制器将用于所述存储器地址的子集的数据存储在所述处理器的第一级缓存中,以及将用于所述存储器地址的所接收的数据的剩余数据存储在主存储器中。
3.根据权利要求1所述的方法,其中,确定用于所请求的数据的所述存储器地址的子集包括:
确定要预取在所述缓存中的存储器地址的数量;以及
从所述存储器地址的集合中选择所确定的数量的存储器地址作为所述存储器地址的子集。
4.根据权利要求1所述的方法,其中,确定与要被处理器缓存的数据相对应的所述存储器地址的子集包括:
基于用户进程或系统行为从所述存储器地址的集合中动态地选择存储器地址作为所述存储器地址的子集。
5.根据权利要求1所述的方法,其中,提供对于所述处理器在所述处理器的所述缓存中分配空间来缓存与用于所请求的数据的所述存储器地址的子集相对应的数据的请求包括:
提供指示要被缓存的所述存储器地址的子集的指令。
6.根据权利要求1所述的方法,包括:
通过所述处理器接收对于所述处理器缓存与用于所请求的数据的所述存储器地址的子集相对应的数据的所述请求;
通过所述处理器从多个缓存中选择所述处理器的缓存;以及
将所述存储器地址缓存在由所述处理器选择的所述处理器的缓存中。
7.根据权利要求1所述的方法,进一步包括:
发出指示所请求的数据以及所述存储器地址的DMA写入操作,以及
其中,通过存储器控制器接收所请求的数据以及与所请求的数据相对应的所述存储器地址的集合包括接收所述DMA写入操作。
8.根据权利要求1所述的方法,其中,通过所述存储器控制器将与所述存储器地址的子集相对应的用于所述存储器地址的子集的数据存储在所述处理器的缓存的所分配的空间中以及将用于所述存储器地址的集合的所接收的数据的剩余数据存储在主存储器中包括:
触发所述处理器将用于所述存储器地址的子集的数据存储在所述缓存中;以及
触发将用于所述存储器地址的所接收的数据的所述剩余数据存储在所述主存储器中。
9.根据权利要求1所述的方法,其中,提供对于所述处理器缓存与用于所请求的数据的所述存储器地址的子集相对应的数据的请求包括:
提供对于所述处理器将与用于所请求的数据的所述存储器地址的子集相对应的数据缓存到所述缓存的特定部分的请求。
10.根据权利要求1所述的方法,包括:
确定预取被存储在所述主存储器中的所述剩余数据的一部分;
通过所述用户进程向所述处理器提供用于所述处理器预取与用于所请求的数据的所述存储器地址的另一子集相对应的数据。
11.一种系统,包括:
一个或多个计算机;以及
存储指令的一个或多个存储装置,所述指令可操作为在通过所述一个或多个计算机执行时使得所述一个或多个计算机执行操作,所述操作包括:
通过用户进程向输入输出装置提供对于尚不可用的数据的请求,其中,所述用户进程是使用从所述输入输出装置接收的数据的软件应用;
通过所述用户进程并从所述输入输出装置接收用于所请求的尚不可用的数据的存储器地址的集合;
通过所述用户进程确定所请求的尚不可用的数据的所接收的存储器地址的子集,所述子集与要被处理器缓存的数据相对应;
通过所述用户进程确定所述存储器地址的子集被预取到的处理器的缓存中的缓存级;
通过所述用户进程向所述处理器提供对于所述处理器在所述处理器的所述缓存中分配空间来以用于所请求的尚不可用的数据的确定的缓存级缓存与所述存储器地址的子集相对应的数据的请求;
通过存储器控制器接收所请求的数据以及与所请求的数据相对应的所述存储器地址的集合;以及
通过所述存储器控制器将用于所述存储器地址的集合的所接收的数据中的与所述存储器地址的子集相对应的数据存储在所述处理器的所述缓存的所分配的空间中以及将用于所述存储器地址的集合的所接收的数据的剩余数据存储在主存储器中。
12.根据权利要求11所述的系统,其中,通过所述存储器控制器将用于所述存储器地址的子集的数据存储在所述处理器的缓存中以及将用于所述存储器地址的所接收的数据的剩余数据存储在主存储器中包括:
通过所述存储器控制器将用于所述存储器地址的子集的数据存储在所述处理器的第一级缓存中,以及将用于所述存储器地址的所接收的数据的剩余数据存储在主存储器中。
13.根据权利要求11所述的系统,其中,确定用于所请求的数据的所述存储器地址的子集包括:
确定要预取在所述缓存中的存储器地址的数量;以及
从所述存储器地址的集合中选择所确定的数量的存储器地址作为所述存储器地址的子集。
14.根据权利要求11所述的系统,其中,确定与要被处理器缓存的数据相对应的所述存储器地址的子集包括:
基于用户进程或系统行为从所述存储器地址的集合中动态地选择存储器地址作为所述存储器地址的子集。
15.根据权利要求11所述的系统,其中,提供对于所述处理器在所述处理器的所述缓存中分配空间来缓存与用于所请求的数据的所述存储器地址的子集相对应的数据的请求包括:
提供指示要被缓存的所述存储器地址的子集的指令。
16.根据权利要求11所述的系统,包括:
通过所述处理器接收对于所述处理器缓存与用于所请求的数据的所述存储器地址的子集相对应的数据的所述请求;
通过所述处理器从多个缓存中选择所述处理器的缓存;以及
将所述存储器地址缓存在由所述处理器选择的所述处理器的缓存中。
17.根据权利要求11所述的系统,所述操作进一步包括:
发出指示所请求的数据以及所述存储器地址的DMA写入操作,以及
其中,通过存储器控制器接收所请求的数据以及与所请求的数据相对应的所述存储器地址的集合包括接收所述DMA写入操作。
18.根据权利要求11所述的系统,其中,通过所述存储器控制器将与所述存储器地址的子集相对应的用于所述存储器地址的子集的数据存储在所述处理器的缓存的所分配的空间中以及将用于所述存储器地址的集合的所接收的数据的剩余数据存储在主存储器中包括:
触发所述处理器将用于所述存储器地址的子集的数据存储在所述缓存中;以及
触发将用于所述存储器地址的所接收的数据的所述剩余数据存储在所述主存储器中。
19.根据权利要求11所述的系统,其中,提供对于所述处理器缓存与用于所请求的数据的所述存储器地址的子集相对应的数据的请求包括:
提供对于所述处理器将与用于所请求的数据的所述存储器地址的子集相对应的数据缓存到所述缓存的特定部分的请求。
20.一种存储软件的非瞬时计算机可读介质,所述软件包括可通过一个或多个计算机执行的指令,在这样的执行时,所述指令使得所述一个或多个计算机执行操作,所述操作包括:
通过用户进程向输入输出装置提供对于尚不可用的数据的请求,其中,所述用户进程是使用从所述输入输出装置接收的数据的软件应用;
通过所述用户进程并从所述输入输出装置接收用于所请求的尚不可用的数据的存储器地址的集合;
通过所述用户进程确定所请求的尚不可用的数据的所接收的存储器地址的子集,所述子集与要被处理器缓存的数据相对应;
通过所述用户进程确定所述存储器地址的子集被预取到的处理器的缓存中的缓存级;
通过所述用户进程向所述处理器提供对于所述处理器在所述处理器的所述缓存中分配空间来以用于所请求的尚不可用的数据的确定的缓存级缓存与所述存储器地址的子集相对应的数据的请求;
通过存储器控制器接收所请求的数据以及与所请求的数据相对应的所述存储器地址的集合;以及
通过所述存储器控制器将用于所述存储器地址的集合的所接收的数据中的与所述存储器地址的子集相对应的数据存储在所述处理器的所述缓存的所分配的空间中以及将用于所述存储器地址的集合的所接收的数据的剩余数据存储在主存储器中。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461989233P | 2014-05-06 | 2014-05-06 | |
US61/989,233 | 2014-05-06 | ||
US14/533,307 | 2014-11-05 | ||
US14/533,307 US10055350B2 (en) | 2014-05-06 | 2014-11-05 | Controlled cache injection of incoming data |
CN201580030116.2A CN106462506B (zh) | 2014-05-06 | 2015-05-05 | 呼入数据的受控缓存注入的方法、系统和介质 |
PCT/US2015/029268 WO2015171626A1 (en) | 2014-05-06 | 2015-05-05 | Controlled cache injection of incoming data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580030116.2A Division CN106462506B (zh) | 2014-05-06 | 2015-05-05 | 呼入数据的受控缓存注入的方法、系统和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112860598A true CN112860598A (zh) | 2021-05-28 |
CN112860598B CN112860598B (zh) | 2022-09-20 |
Family
ID=54367955
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110119925.8A Active CN112860598B (zh) | 2014-05-06 | 2015-05-05 | 呼入数据的受控缓存注入的方法、系统和介质 |
CN201580030116.2A Active CN106462506B (zh) | 2014-05-06 | 2015-05-05 | 呼入数据的受控缓存注入的方法、系统和介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580030116.2A Active CN106462506B (zh) | 2014-05-06 | 2015-05-05 | 呼入数据的受控缓存注入的方法、系统和介质 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10055350B2 (zh) |
EP (1) | EP3140744B1 (zh) |
CN (2) | CN112860598B (zh) |
WO (1) | WO2015171626A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632936B1 (en) * | 2014-12-09 | 2017-04-25 | Parallel Machines Ltd. | Two-tier distributed memory |
US11347644B2 (en) * | 2018-10-15 | 2022-05-31 | Texas Instruments Incorporated | Distributed error detection and correction with hamming code handoff |
US11561901B1 (en) | 2021-08-04 | 2023-01-24 | International Business Machines Corporation | Distribution of injected data among caches of a data processing system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020174299A1 (en) * | 2001-05-18 | 2002-11-21 | Broadcom Corporation | Source controlled cache allocation |
CN1797371A (zh) * | 2004-12-27 | 2006-07-05 | 英特尔公司 | 用于基于填充缓冲器命中来预取的装置和方法 |
CN101410811A (zh) * | 2006-05-22 | 2009-04-15 | 国际商业机器公司 | 提供远程预取缓冲器的系统和方法 |
US20100228921A1 (en) * | 2009-03-04 | 2010-09-09 | Adi Grossman | Cache hit management |
US8549007B1 (en) * | 2008-05-30 | 2013-10-01 | Adobe Systems Incorporated | System and method for indexing meta-data in a computer storage system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US7136967B2 (en) * | 2003-12-09 | 2006-11-14 | International Business Machinces Corporation | Multi-level cache having overlapping congruence groups of associativity sets in different cache levels |
US8255591B2 (en) | 2004-09-23 | 2012-08-28 | International Business Machines Corporation | Method and system for managing cache injection in a multiprocessor system |
US7774554B2 (en) | 2007-02-20 | 2010-08-10 | International Business Machines Corporation | System and method for intelligent software-controlled cache injection |
US7958314B2 (en) | 2007-12-18 | 2011-06-07 | International Business Machines Corporation | Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources |
US9158692B2 (en) | 2008-08-12 | 2015-10-13 | International Business Machines Corporation | Cache injection directing technique |
US8443146B2 (en) * | 2008-09-18 | 2013-05-14 | International Business Machines Corporation | Techniques for cache injection in a processor system responsive to a specific instruction sequence |
US10922225B2 (en) * | 2011-02-01 | 2021-02-16 | Drobo, Inc. | Fast cache reheat |
KR20130064521A (ko) * | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 관리 방법 |
CN103197962B (zh) * | 2012-01-04 | 2017-02-08 | 中国移动通信集团公司 | 多进程状态切换方法和装置 |
CN103207808B (zh) * | 2012-01-13 | 2016-08-31 | 百度在线网络技术(北京)有限公司 | 多核系统中的处理方法及装置 |
US8719504B2 (en) * | 2012-09-14 | 2014-05-06 | International Business Machines Corporation | Efficient processing of cache segment waiters |
CN103092775B (zh) * | 2013-01-31 | 2015-06-10 | 武汉大学 | 一种基于键值结构的空间数据双缓存方法及机制 |
US9367466B2 (en) * | 2013-02-13 | 2016-06-14 | Advanced Micro Devices, Inc. | Conditional prefetching |
-
2014
- 2014-11-05 US US14/533,307 patent/US10055350B2/en active Active
-
2015
- 2015-05-05 CN CN202110119925.8A patent/CN112860598B/zh active Active
- 2015-05-05 CN CN201580030116.2A patent/CN106462506B/zh active Active
- 2015-05-05 EP EP15722004.7A patent/EP3140744B1/en active Active
- 2015-05-05 WO PCT/US2015/029268 patent/WO2015171626A1/en active Application Filing
-
2018
- 2018-07-26 US US16/046,396 patent/US10216636B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020174299A1 (en) * | 2001-05-18 | 2002-11-21 | Broadcom Corporation | Source controlled cache allocation |
CN1797371A (zh) * | 2004-12-27 | 2006-07-05 | 英特尔公司 | 用于基于填充缓冲器命中来预取的装置和方法 |
CN101410811A (zh) * | 2006-05-22 | 2009-04-15 | 国际商业机器公司 | 提供远程预取缓冲器的系统和方法 |
US8549007B1 (en) * | 2008-05-30 | 2013-10-01 | Adobe Systems Incorporated | System and method for indexing meta-data in a computer storage system |
US20100228921A1 (en) * | 2009-03-04 | 2010-09-09 | Adi Grossman | Cache hit management |
Also Published As
Publication number | Publication date |
---|---|
US10055350B2 (en) | 2018-08-21 |
WO2015171626A1 (en) | 2015-11-12 |
EP3140744A1 (en) | 2017-03-15 |
US20180336137A1 (en) | 2018-11-22 |
EP3140744B1 (en) | 2022-03-30 |
US10216636B2 (en) | 2019-02-26 |
US20150324293A1 (en) | 2015-11-12 |
CN106462506A (zh) | 2017-02-22 |
CN106462506B (zh) | 2021-02-05 |
CN112860598B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9262328B2 (en) | Using cache hit information to manage prefetches | |
CN107870732B (zh) | 从固态存储设备冲刷页面的方法和设备 | |
US10216636B2 (en) | Controlled cache injection of incoming data | |
KR20150092440A (ko) | Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템 | |
CN109213696B (zh) | 用于缓存管理的方法和设备 | |
US8832414B2 (en) | Dynamically determining the profitability of direct fetching in a multicore architecture | |
WO2016115957A1 (zh) | 一种面向用户与应用的计算机与智能设备加速方法和装置 | |
KR102563165B1 (ko) | 메모리 액세스 요청 스케줄링 방법, 장치, 기기 및 저장 매체 | |
US11853223B2 (en) | Caching streams of memory requests | |
US20190272238A1 (en) | Determining memory access categories for tasks coded in a computer program | |
JP2016524228A (ja) | 記憶システムおよびエイリアス・メモリ | |
US20210056029A1 (en) | Hybrid Memory Systems with Cache Management | |
CN112313636A (zh) | 用于gpu发起的通信的网络分组模板化 | |
US9128848B2 (en) | General storage cache functionality extension | |
CN107209738B (zh) | 储存存储器直接访问 | |
WO2022133053A1 (en) | Data placement with packet metadata | |
TWI530787B (zh) | 電子裝置以及資料寫入方法 | |
US8966133B2 (en) | Determining a mapping mode for a DMA data transfer | |
CN109032965B (zh) | 一种数据读取方法、主机及存储设备 | |
US11940917B2 (en) | System and method for network interface controller based distributed cache | |
US11263047B2 (en) | Metadata management for multi-core resource manager | |
CN114281715A (zh) | 缓存合成预取方法、装置、处理器以及电子设备 | |
CN113849281A (zh) | 任务处理的方法、装置、电子设备和计算机可读存储介质 | |
TW202349214A (zh) | 輸入/輸出裝置的位址變換預取出 | |
TW201512842A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |