CN109952567B - 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 - Google Patents
用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 Download PDFInfo
- Publication number
- CN109952567B CN109952567B CN201780062063.1A CN201780062063A CN109952567B CN 109952567 B CN109952567 B CN 109952567B CN 201780062063 A CN201780062063 A CN 201780062063A CN 109952567 B CN109952567 B CN 109952567B
- Authority
- CN
- China
- Prior art keywords
- memory
- address
- addresses
- command
- cache
- 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.)
- Active
Links
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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
-
- 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
Abstract
本发明涉及一种计算系统,包括:计算装置(102),其具有指令控制下的一个或更多个处理器核(108)和存储器控制器(112),该存储器控制器具有高速缓存存储器(114);以及存储器电路(104),其经由数据总线(106A)和地址总线(106B)耦合至存储器控制器,存储器电路(104)被适配成具有由设置在地址总线(106B)上的多个第一地址可访问的第一m位存储位置,计算装置(102)被设置成针对访问该第一m位存储位置的每个存储操作从多个第一地址中选择一个地址。
Description
本专利申请要求法国专利申请FR16/58373的优先权,该法国专利申请将被认为是本说明书的组成部分。
技术领域
本申请涉及一种计算系统,包括处理器、存储器以及处理器与存储器之间的控制接口。
背景技术
PIM存储器(存储器中处理器)是直接集成在存储器电路例如集成在DRAM存储器电路中的处理器。在本文中,该存储器电路被称为PIM电路。
PIM处理器由主处理器控制,主处理器通常是Intel处理器、ARM处理器或Power处理器。在本文中,该处理器被称为HCPU(主机CPU)。
PIM处理器和HCPU访问集成有PIM处理器的存储器。在本文中,该存储器被称为PIM存储器。
公开专利申请FR 3032814描述了例如允许PIM处理器和HCPU处理器访问PIM存储器的方法。
每个PIM处理器具有允许HCPU控制PIM处理器的寄存器。由HCPU可访问的这些寄存器在PIM电路的物理地址空间中可见。在本文中,这些寄存器被称为接口寄存器,PIM处理器的所有接口寄存器被称为该PIM处理器的接口,并且在HCPU上运行的控制该接口的软件被称为接口软件。
通信的特征
HCPU通常执行以下操作以使用PIM处理器:
-将参数、指令和数据大量写入(entry)PIM存储器中;
-将参数、指令、数据和命令相对少写入该PIM处理器的接口寄存器的一些接口寄存器中;
-从PIM处理器的接口寄存器相对少读取状态和结果;
-从PIM存储器大量读取结果。
延迟进入的问题
由HCPU生成的以PIM处理器的接口或PIM存储器为目的地的写入必须被无延迟地处理。
HCPU具有高速缓存系统并且这可能使在PIM电路中的进入延迟不确定的时间。
HCPU处理器具有用于高速缓存管理以强制在主存储器中更新已经被仅写入在处理器的高速缓存中的由其地址指定的数据的指令。
遗憾的是,这些高速缓存管理指令在其具有一个指令的情况下不影响DRAM控制器的高速缓存,这是高性能处理器诸如HCPU的情况。
另外,这些更新指令确保将写入数据“推送”至DRAM控制器,而不确保将其“推送”至存储器电路。
当系统具有正常存储器而没有集成的PIM处理器时,软件在写入后不需要使用高速缓存管理指令,因为写入是否快速到达存储器电路并不重要。
受高速缓存管理指令影响的高速缓存在本文中被命名为“CPU高速缓存”,不受这些指令影响的高速缓存被命名为“DRAM高速缓存”。
非易失性存储器中延迟进入的问题
延迟进入对于不具有PIM处理器的非易失性存储器也是问题。
例如,一些MRAM存储器(磁存储器)诸如由EVERSPIN公司制造的MRAM存储器被设计成呈现DRAM可兼容接口,这允许它们与DRAM控制器一起使用。
在能够切断使用此类存储器的计算机系统的电力供应之前,重要的是能够确保在高速缓存DRAM中没有针对MRAM的备用的写入,否则如果电力的供应中断,那么这些记录将丢失。
合并进入的问题
另一个问题是如果要写入某个地址的C1数据存储在DRAM高速缓存中,则对于同一地址该数据可能因为新C2数据的到达而被替换,则DRAM高速缓存认为最优的是在存储器电路中不写入C1,而是由C2代替C1。
如果这种推理对于存储器是正确的,则这不适用接收HCPU的命令的接口寄存器:如果C1和C2是两个不同的命令,则有必要将C1写入PIM电路中然后将C2写入PIM电路中。
重新排序写入的问题
另一个问题是DRAM高速缓存可能改变执行数据的写入的顺序,即使当这些写入具有不同的地址时,这也是有问题的。
因此由以下组成的序列:
-将命令参数写入被称为PARAM的接口寄存器中,
-然后将相应的命令写入被称为CMD的另一个接口寄存器中;
可以由DRAM高速缓存以相反的方向执行,使得使用PARAM寄存器的旧值作为参数执行写入CMD中的命令,该PARAM寄存器的旧值还没有被新参数写入。
过时隐藏值的问题
当HCPU读取AV地址处的V2值时,该V2值已经由PIM处理器生成,重要的是由HCPU读取的值是最新的V2值,而不是在该相同的AV地址处的在V2生成之前在读取期间被复制到高速缓存中的先前的V1值。
HCPU处理器具有高速缓存管理指令,允许在高速缓存中由其地址指定的数据是无效的。
而且,在以AV地址作为参数执行这样的指令之后,值V1不再存在于高速缓存中,并且如果HCPU将数据读回至AV地址,则它将从存储器电路获取V2值并且然后高速缓存将隐藏那个值V2。
遗憾的是,那些高速缓存管理指令不影响DRAM高速缓存。
针对AV地址的无效指令保证V1值不再存在于CPU高速缓存中,但是不保证V1值一直不存在于DRAM高速缓存中。
如果是这种情况,当HCPU将重新读取AV地址时,由于该地址不再在CPU高速缓存中,因此它将从DRAM控制器请求在AV地址处读取。但是AV地址具有来自其DRAM高速缓存的写入,该写入:
-是有效的,
-对应于AV地址,
-仍然包含旧的V1值。
因此,代替从PIM电路读取V2值,DRAM控制器将从其DRAM高速缓存仅返回V1值。
当系统具有正常存储器而没有集成的PIM处理器时,软件在读取数据之前不需要使用高速缓存管理指令:CPU高速缓存中的数据总是最新的,因为仅HCPU修改存储器,然而在具有PIM处理器的系统中,PIM处理器也可以修改存储器。
HCPU的修改
最合乎逻辑的解决方案是修改HCPU以便高速缓存管理指令也影响DRAM高速缓存。
遗憾的是,很难说服HCPU的制造商去做出这样的改变,因为:
-HCPU的设计成本非常高,并且这样的设计需要数年的时间,
-由于这种修改在HCPU的设计中的延迟对制造商而言成本非常高,
-经由这种修改的PIM处理器支持可能违背制造商的工业策略和营销策略。
因此,需要一种HCPU与集成在DRAM中的PIM处理器之间的通信问题的解决方案,该解决方案不需要修改HCPU,但是完全
-在PIM处理器的接口中,并且
-通过接口软件
来实现。
发明内容
因此,实施方式提供了计算系统,包括:计算装置,其具有一个或若干个受指令控制的处理核和存储器控制器,存储器控制器包括高速缓存存储器;以及存储器电路,其经由数据总线和地址总线耦合至存储器控制器,存储器电路被适配成具有由设置在地址总线上的多个第一地址可访问的第一m位存储位置,计算装置被配置成从多个第一地址选择一个地址以便每个存储操作访问所述第一m位存储位置。
根据实施方式,第一m位存储位置由多个第一地址P可访问,计算装置被配置成使用第一地址中的一个第一地址以在访问第一存储位置的第N次操作和访问第一存储位置的第(N+P)次操作期间访问第一存储位置。
根据实施方式,多个第一地址的每个地址包括n位的第一值和p位的第二值,计算装置被配置成通过使用第一地址中的具有第一选择的n位值和根据写入数据生成的第二p位值的一个第一地址执行第一存储位置的读取操作来实施至第一存储位置的m位的数据写入操作。
根据实施方式,存储器电路被适配成响应于使用第一地址中的一个第一地址接收在存储器电路的第一存储位置中的读取操作来在存储器电路的第一存储位置中写入所述地址的第二p位值。
根据实施方式,p和m是整数并且m等于或大于p。
根据实施方式,存储器电路被适配成具有通过设置在地址总线上的多个第二地址可访问的第二存储位置。
根据实施方式,第一存储位置和第二存储位置是存储器电路的第一存储位置范围的一部分,第一存储位置范围由滑动地址窗选择,其中,第一存储位置范围中的存储位置由以下地址可寻址:
在包括第一多个地址中的一个地址和第二多个地址中的一个地址的第一地址范围中的对应地址;以及
在包括第一多个地址中的另一地址和第二多个地址中的另一地址的第二地址范围中的对应地址;
存储器电路包括地址转换电路,所述地址转换电路被适配成将第一地址范围和第二地址范围中的地址转换成滑动地址窗中的对应地址。
根据实施方式,地址转换电路包括至少一个可编程的寄存器,以限定滑动地址窗口的位置。
根据另一实施方式,所述地址转换电路的所述至少一个寄存器可编程以限定滑动地址窗口的位置和大小。
根据另一实施方式,存储器控制器被适配成执行高速缓存排出操作,所述高速缓存排出操作包括一个或若干个存储访问指令序列,所述存储访问指令序列由存储器控制器执行产生如下结果:
存储在存储器控制器的高速缓存存储器中的高速缓存存储器写入事务的全部或部分被写入存储器电路中;或者
从存储器高速缓存清除存储在存储器控制器的存储器高速缓存中的读取数据的全部或部分,读取数据包括在高速缓存排出操作之前从存储器电路读取的数据;或者
存储在存储器控制器的存储器高速缓存中的高速缓存存储器写入事务的全部或部分被写入至存储器电路,并且从高速缓存存储器清除存储在存储器控制器的高速缓存存储器中的读取数据的全部或部分。
根据另一实施方式,存储器电路还包括辅助处理器,并且存储访问指令的序列仅包括访问存储器电路的一个或更多个控制寄存器以控制辅助处理器的寄存器访问指令。
根据另一实施方式,存储器电路包括监测电路,该监测电路由计算装置可访问并且被适配成记录在存储器电路中执行的存储访问事务,计算装置被配置成基于由监测电路记录的事务生成一个或更多个存储访问指令序列。
根据另一实施方式,存储器电路还包括辅助处理器,第一存储位置和第二存储位置为辅助处理器控制寄存器。
根据另一实施方式,计算装置被配置成生成第一类型的命令和第二类型的命令,存储器电路被适配成以以下的方式修改从计算装置接收到的命令的顺序:针对由计算装置在第一类型的第一命令与第一类型的第二命令之间生成的第二类型的第一组命令来考虑与第二类型的命令组有关的第一类型的第一命令和第一类型的第二命令的顺序。
根据另一实施方式,存储器电路被适配成基于与第一类型的至少每个命令相关联的顺序值修改命令的顺序,每个顺序的顺序值被包括在以下中:
在命令的接收者的地址中;或者
在命令本身中;或者
部分地在命令接收者的地址中并且部分地在命令本身中。
根据另一实施方式,计算装置还包括可以由高速缓存管理指令配置的CPU高速缓存存储器,而存储器控制器的高速缓存存储器不能由高速缓存管理指令配置。
根据另一实施方式,存储器电路包括非易失性存储矩阵。
另一实施方式提供了一种用于对存储器电路进行访问的方法,所述存储器电路经由数据总线和地址总线耦合至计算装置的存储器控制器,计算装置具有一个或若干个处理核和包括高速缓存存储器的存储器控制器,所述方法包括:通过计算装置针对访问存储器电路的第一m位存储位置的每个存储操作从多个第一地址中选择一个地址,第一m位存储位置由设置在地址总线上的多个第一地址中的每个地址可访问。
根据另一方面,提供了由主电路和至少一个存储器电路组成的系统;主电路包括至少一个主处理器和连接至存储器电路的存储器控制器;存储器控制器包括不受主处理器的高速缓存管理指令影响的高速缓存;存储器电路包括至少一个辅助处理器;该辅助处理器包括对主处理器可访问的接口;该接口包括寄存器,每个接口寄存器由主处理器通过多个地址可访问;接口由在主处理器上运行的软件控制,软件针对对接口的给定寄存器的每次访问从与给定寄存器对应的多个地址中选择一个地址。
根据另一实施方式,以如下方式对访问给定接口寄存器的地址进行选择:在对该寄存器的第(N+P)次访问期间将使用在对该寄存器的第N次访问期间使用的地址,P是组成与该寄存器相关联的多个地址的地址的数目。
根据另一实施方式,针对至少一个接口寄存器的访问地址通过将称为主字段的第一n位字段与称为次字段的第二p位字段组合来建立,其中从多个值中选择主字段的值,并且其中次字段的值可以具有包括在0与(2^P)-1之间的任意值,接口寄存器在地址{主字段,次字段}处的读取涉及通过次字段值的写入,软件使用这样的读取将值写入寄存器接口中。
根据另一实施方式,次字段的可能值被限制为可以写入至接口寄存器的值。
在读取操作期间使用地址字段以传输要写入至存储器的位的优势是,如写入操作的情况一样,读取操作不可能在高速缓存中置于备用状态。
根据另一实施方式,接口寄存器允许在存储器电路的存储器区域上配置附加访问窗口的位置和必要时的大小,该访问窗口通过多个地址范围可访问,并且其中接口软件通过将访问窗口定位在相关存储器区域上来提供对存储器电路的存储器的访问并且从多个地址范围中选择允许访问该访问窗口的访问地址。
根据另一实施方式,接口软件以以下方式选择对访问窗口访问的地址:如果从给定地址范围中选择对访问窗口的第N次访问的地址,则将在相同的地址范围中选择第(N+P)次访问的地址,P是组成多个地址范围的地址范围的数目。
根据另一实施方式,控制接口的软件使用从一组预定的访问序列中选择的访问序列,以便从存储器控制器的高速缓存中移除在该序列之前发出的写入事务,从而强制来自存储器控制器的高速缓存的这些写入事务的有效执行,预定的访问序列的确定是根据已知特性或从观察中推断出的特性做出的。
根据另一实施方式,控制接口的软件使用从一组预定的访问序列中选择的访问序列,以便从存储器控制器的高速缓存中移除在该序列之前读取的数据,预定的序列的确定是根据已知特性或从存储器控制器的高速缓存的观察推断出的特性做出的。
根据另一实施方式,控制接口的软件使用从一组预定的访问序列中选择的访问序列,以便从存储器控制器的高速缓存中移除写入事务和在该序列之前读取的数据,预定的序列的确定是基于已知特性或从存储器控制器的高速缓存的观察中推断出的特性做出的。
根据另一实施方式,以如下方式减少了访问顺序:其仅保证从存储器控制器的高速缓存排出与存储器电路相关联的物理地址的子集对应的写入事务或读取数据。
根据另一实施方式,预定的访问序列仅包括对接口寄存器的访问。
根据另一实施方式,接口包括用于记录已经到达存储器电路的最后事务的机制,这种记录机制由主处理器经由接口本身可访问。根据另一实施方式,控制接口的软件使用先前最后事务的记录机制以自动确定预定的访问序列。
根据另一实施方式,接口包括能够接收来自HCPU的命令的至少一个命令寄存器,其中这些命令被分类为高度有序命令和低阶有序命令;在两个高度有序命令之间发出的低阶有序命令形成一组低阶有序命令,在该一组低阶有序命令中,可以在无序下执行低阶有序命令;相对于其他的高度有序命令并且相对于该组低阶有序命令,在有序下执行高度有序命令。
根据另一实施方式,接口包括能够接收来自HCPU的命令的至少一个命令寄存器,所有这些命令是高度有序的。
根据另一实施方式,由于使用包括在命令本身中的编号,命令被重新排序。
根据另一实施方式,由于使用包括在命令地址中的编号,命令被重新排序。
根据另一实施方式,由于使用编号命令被重新排序,该编号的一部分包括在命令本身中,剩余部分包括在命令的地址中。
根据另一实施方式,辅助处理器没有集成在存储器电路中,但是嵌置在连接至存储器电路的电路中。
根据另一实施方式,没有集成处理器并且存储器是非易失性的。
附图说明
这些和其他特征和益处将在以下关于附图的特定实施方式的非详尽描述中进行详细描述,其中:
图1示意性地示出了根据实施方式的计算系统;
图2更详细地示出了根据实施方式的图1中的系统的存储器接口;以及
图3更详细地示出了根据另一实施方式的图1中的系统的存储器接口。
具体实施方式
DRAM高速缓存
DRAM高速缓存的大小
DRAM存储器的存在允许以下优化:
-重新调度对存储器电路的请求,具体地包括刷新请求,以便使页面打开最小化,特别是使慢操作最小化,
-预期读取可能在不久的未来被访问的数据。
CPU高速缓存的相当大的大小(高达几十Mb)意味着对于其可以实现的性能提升的重要部分而言DRAM高速缓存不必要具有显著的大小。
值得注意的是HCPU制造商的营销文件总是提到CPU高速缓存的大小但从来不提到DRAM高速缓存的存在:这是因为与CPU高速缓存的大小相比DRAM高速缓存的大小是微不足道的。
适用性
产生了在没有高速缓存管理指令的情况下是否使用下面描述的技术来完全进行的问题,因为如果这些技术对DRAM高速缓存起作用,可以想象这些技术也对CPU高速缓存起作用。
但是这些技术在应用于大的高速缓存时可能无效,使得高速缓存管理指令相当适合于这种高速缓存的管理。
另外,没有理由不使用高速缓存管理指令,所描述的技术用于使它们完整而不是取代它们。
常规:高速缓存管理指令的隐式使用
在本文中,并且为了简化说明,在以下情况下隐式使用高速缓存管理指令:
当说HCPU写入数据时,必须理解的是HCPU实际上执行以下两个动作:
-HCPU使用正常写入指令将该数据写入存储器中,
-HCPU使用高速缓存管理指令更新CPU高速缓存的对应条目但是不影响DRAM高速缓存。
当说HCPU读取数据时,应当理解的是HCPU实际上执行以下两个动作:
-HCPU使用高速缓存管理指令使CPU高速缓存的对应条目无效但是不影响它的DRAM高速缓存,
-HCPU使用存储器中的正常读取指令读取该数据。
内存屏障指令的隐式使用
HCPU通常是高性能处理器,因此能够乱序执行指令(乱序处理器:000处理器),除了高速缓存管理指令外,使用“内存屏障”指令可以以适当的顺序强制执行指令。
MB(内存屏障)指令确保在执行由MB指令之后的指令生成的访问之前,从CPU高速缓存的角度完全执行由MB指令之前的指令生成的所有访问。
HCPU的指令集可以包括出于最佳性能的围绕该概念的变型,例如,具有用于仅写入的屏障指令或用于仅读取的屏障指令。
所有这些对于本领域技术人员来说是众所周知的,本领域技术人员在适用情况下将选择最合适的屏障指令。
用于接口寄存器的解决方案
下面描述的用于解决上述问题的技术包括:
-与接口寄存器相关的问题的解决方案,
-与PIM存储器相关的问题的解决方案。
不同之处源于接口寄存器在数目上比PIM存储器的存储字少得多的事实。
表达“映射”寄存器意味着该寄存器在物理地址处是可访问的。寄存器可以被映射若干次:这意味着寄存器在若干个不同的物理地址处是可访问的。
接口寄存器的数目的减少
图1示出了包括处理装置102的计算系统,该处理装置102通过总线例如DDR类型(双倍数据速率)的总线耦合至存储器电路104。总线包括例如数据总线106A和地址总线106B。
装置102包括例如一个或更多个处理核108、CPU(中央处理器)高速缓存110以及包含高速缓存114的存储器控制器112。高速缓存存储器114是例如在其中存储器电路104是DRAM类型存储器的情况下的DRAM高速缓存(动态随机存取存储器)。
存储器电路104包括例如存储器116、处理装置118和接口120。另外,电路104包括例如监测电路126和包含一个或更多个寄存器124的地址转换电路122。
解决方案提供了对每个接口寄存器映射一定的次数,该数目取决于DRAM高速缓存的特性。
对于给定大小的物理地址范围,接口寄存器越少,它们中的每个可以被映射的次数越多。仍然可以实现具有非常少的接口寄存器的接口,因此能够使用间接访问系统使其寄存器中的每个被映射许多次。
例如,PIM处理器118的接口可以包括仅3个直接可访问的寄存器,其允许对多得多的寄存器的间接访问:
-索引寄存器,仅以写入方式可访问,
-写寄存器,仅以写入方式可访问,
-读寄存器,仅以读取方式可访问。
这样的接口提供对大量寄存器的间接访问:
以读取仅间接可访问的寄存器:
-该寄存器的索引必须写入索引寄存器中,
-必须读取读寄存器。
以写入仅间接可访问的寄存器:
-该寄存器的索引必须写入索引寄存器中,
-要写入的数据必须写入写寄存器中。
在本文中,PIM处理器的仅由HCPU直接可访问的一组接口寄存器称为该PIM处理器的接口;从本发明的观点来看,间接可访问的寄存器不是PIM处理器的接口的一部分。
对于每个接口寄存器的大量地址的创建
如图2所示,存储器电路104包含2^N个存储字,但是为了创建许多地址,该存储器电路被表述为具有2^(N+i)个存储字,其中i>0。
其大小为2^N的物理地址范围专用于映射存储字,还有可用于映射PIM处理器的接口120的寄存器202、204的物理地址范围,其大小为((2^i)-1)×(2^N),允许这些寄存器中的每一个被映射多次。
启动代码(BIOS/启动固件)和操作系统(OS)必须考虑存储器的实际大小而不是规定的大小:
-系统启动期间执行的存储器测试必须仅涉及与实际的存储器对应的物理地址范围,
-考虑到存储器的实际大小OS必须使其存储器分配器的数据库初始化。
用于接口寄存器的本发明的机制
对于接口寄存器,接口软件针对对寄存器的每次访问(例如图2中的对寄存器202的访问208和对寄存器204的访问210)使用不同地址映射它;因此:
-DRAM高速缓存将不提供它在其条目之一中已有的数据,因为地址与该数据不匹配,这解决了不影响DRAM高速缓存的高速缓存无效指令的问题,
-DRAM高速缓存将不合并写入事务:这样的合并要求事务具有相同的地址,
-DRAM高速缓存将快速地“溢出”,自然地推动存储在那里的要执行的写入事务。
关于最后一点,接口软件:
-通过重新读取寻址的接口寄存器(当然使用另一地址映射该寄存器)可以确保在任何时间实际执行了写入,
-可以在一系列条目之后以读取或以写入生成“伪”访问,其唯一目的是将先前的写入从DRAM高速缓存推出,这导致了它们的执行(并且它可以验证实际已经执行这些条目,并且如果情况不是这样则生成新的伪访问)。
当然,接口寄存器不能被映射无限次,因此,经过对该寄存器的一定数目的访问,映射该寄存器的一组地址将被用尽并且已经使用的地址将被再次使用。
由于这个原因,针对每个接口寄存器的一组可用地址必须足够大,以便在重用地址之前,进入DRAM高速缓存的条目仍然没有机会与该地址相关联。
映射接口寄存器的所有地址的最小尺寸当然取决于DRAM高速缓存的大小和特性。
地址列表的简单生成
映射控制寄存器的一系列地址由循环函数F生成:
-当使用地址A1时,以下地址A2由F(A1)给出
-与存储字相关联的状态(称为当前地址)由用于其最后访问的地址汇总(如果地址的部分保持固定,则参见地址的字段)。
公共地址序列
不是每个接口寄存器都与私有当前地址相关联,而是若干接口寄存器可以使用公共当前地址,这在每次访问时以下列方式进行管理:
-用于对寄存器访问的地址是取决于所考虑的寄存器的偏移和公共当前地址的总和的结果,
-访问后,公共当前地址正在由函数F更新。
命令写入的重新调度
能够接收命令的接口寄存器在本文称为控制寄存器,可以到达这类寄存器的命令分为两类:
弱有序类:包括例如数据写入命令、指令和参数,
高度有序类:包括例如如下命令:
-启动PIM处理器的命令,
-停止PIM处理器的命令,
-获取PIM处理器状态的命令。
将属于一类或其他类的命令编码到命令本身之中。排序规则如下:
弱有序命令相对于另一弱有序命令是未排序命令:
-在另一弱有序命令之前发出的弱有序命令可以在该另一弱有序命令之后执行;
弱有序命令相对于高度有序命令是有序的:
-在强有序命令之前发出的弱有序命令不能在强有序命令之后执行,
-在高度有序命令之后发出的弱有序命令不能在高度有序命令之前执行;
高度有序命令相对于彼此是有序的:
-在另一高度有序命令之前发出的高度有序命令不能在另一高度有序命令之后执行。
高度有序命令的重新调度
由于DRAM高速缓存,可以以无序方式由接收命令寄存器接收强有序命令,但是,然而,强有序命令必须以它们的生成顺序执行:为了这个目的,强有序命令在它们生成期间被编号。
命令编号
在该方法中,对给定命令寄存器指定的每个强有序命令包括用于对其编号的n位字段。
另外,以下硬件资源与命令寄存器相关联:
n位计数器,被称为当前命令编号,包含要执行的高度有序命令的当前编号;
2^n输入的存储器,被称为控制缓冲器,每个输入处于以下状态:
-处于有效状态或无效状态,
-最初处于无效状态
-处于有效状态,能够存储高度有序命令。
这些硬件资源遵循如下算法:
当在命令寄存器中写入高度有序命令时,将其V编号与当前命令编号进行比较;
-如果编号对应,则执行命令,
-否则,将该命令记录在缓冲器命令条目[V]中并且将该条目标注为有效。
当命令完成时,当前命令编号递增,将其新值标注为W,并且:
-如果命令缓冲器的条目[W]有效,则执行命令缓冲器包含的命令并且将该条目标记为无效。
接口软件可以读取当前命令编号以便确认最后执行的命令,这允许知道已经执行了多少命令,并且因此知道接口软件在不超过命令缓冲器的容量的情况下可以生成多少新的强有序命令。因此接口软件可以在执行先前的命令时生成高度有序命令。
在高度有序命令与弱有序命令之间建立区分允许以下:
-限制命令缓冲器的大小,
-以弱有序命令到达顺序而不是以它们的发出顺序执行这些命令,从而提高性能,
-如果接口具有支持它的内部并行性,则并行执行弱有序命令。
地址编号
在这种方法中,该方法是先前方法的变型,将写入命令的地址的一部分用作命令编号。
映射命令寄存器的一系列地址由循环函数F生成:
-当使用A1地址时,根据A2的地址由F(A1)给出。
函数F:
-仅修改地址的n位字段,标记为CA,
-限定CA的M个可能值的集合E。
命令寄存器与以下硬件资源相关联:
n位计数器,被称为当前命令编号,包含要执行的高度有序命令的当前编号,
M个条目的存储器,被称为命令缓冲器,每个条目:
-仅由集合E的值中之一索引,
-能够处于有效状态或无效状态,
-最初处于无效状态,
-能够在有效状态下存储高度有序命令。
这些硬件资源遵守以下算法:
当高度有序命令到达命令寄存器时,将其CA字段与当前命令编号进行比较:
-如果CA与当前命令编号对应,则执行命令,
-否则,将命令记录在命令缓冲器的具有CA索引的条目中并且将该条目标注为有效。
当高度有序命令完成时,当前命令编号由F函数改变并且:
-如果命令缓冲器的由新的当前命令编号指定的条目有效,则执行命令缓冲器包含的命令并且将该条目标记为无效。
混合编号
这种方法实际上使用先前的两种方法,命令编号部分由地址字段组成并且部分由命令字段组成。
弱有序命令的重新调度
弱有序命令不需要被重新调度,只是必须确保以下:
1.在生成弱有序命令之前,没有高度有序命令等待被执行,
2.在生成高度有序命令之前,没有弱有序命令等待被执行。
第一点容易确定,因为接口软件:
-知道其已经发出了多少高度有序命令,
-可以通过读取当前命令编号知道已经执行了多少高度有序命令。
第二点很容易通过与每个命令寄存器相关联来确定,寄存器对已经执行了多少由命令寄存器接收的弱有序命令进行计数。
注意:在弱有序命令到达的速率可能优于它们执行的速率的情况下,可以使用FIFO来存储弱有序命令。
早期读取的避免
期望避免DRAM高速缓存执行早期读取。当DRAM高速缓存遵循常规访问模式时,例如其中每次访问发生在距离先前访问固定“地址距离”(严格地址)处的一系列访问可能自动触发这种类型的读取。DRAM高速缓存可以具有能够检测这类访问模式并且基于该访问模式决定提前读取数据的逻辑。
注意:在具有延迟的写入分配策略(“回写”)的CPU高速缓存中,因为最常见的分配策略平均效率最高,因此最常见的分配策略对于在存储器中写入最初导致读取。
为了避免早期读取,期望对于同一接口寄存器的一组可用地址以对该寄存器的三次连续访问N、N+1、N+2的方式被扫描:
(地址(N+2)﹣地址(N+1))<>(地址(N+1)﹣地址(N))
关于DRAM高速缓存的早期读取的这种逻辑,很可能这考虑了一系列访问的地址保持在同一DRAM页面上或没有保持在同一DRAM页面上的事实,并且用于访问接口寄存器的地址必须考虑该事实。
本领域技术人员将容易理解,当根据DRAM高速缓存的早期读取策略的功能,地址使用的顺序可能或多或少复杂时,但是可以生成顺序,例如在未识别任何常规访问模式的情况下未激活早期加载策略。
在任何情况下,为了防止可能的早期读取,期望PIM处理器的接口不包括由寄存器的读取修改的寄存器。
用于PIM存储器的解决方案
对接口寄存器访问的问题基本上是通过这些寄存器中的每个被映射多次的事实来解决的。
利用PIM存储器这是不可能的。例如,考虑包含2^N存储字的存储器表述为包含2^(N+2)存储字的存储器:这样的存储器具有为存储字的4倍的地址。
由于对称性,可以合理地认为,为解决对PIM存储器访问的问题,使一些存储字比其他存储字更多映射是没意义的。因此做出以下分配是合乎逻辑的:
-存储器电路的物理地址空间的1/4专用于PIM处理器的接口。其寄存器的数目非常低,因此这些寄存器中的每个将被映射数百万次,允许容易地解决对这些接口寄存器的访问问题。
-物理地址空间的3/4专用于映射PIM存储器本身,实际上允许每个存储字被映射仅3次。
总之,不可能为了使地址改变机制对每次访问都有效使每个存储字映射足够多次。
使用滑动窗口的解决方案
不是将存储声明为4倍大,而是有必要将其声明为更大,这通常是不可能的,因为存储器与DRAM存储器控制器所不支持的存储器配置相对应。
如图3所示,解决方案是使用被称为滑动窗口的访问窗口305,访问窗口305在PIM存储器302中的位置304(以及可能的大小)可以通过接口寄存器配置,该滑动窗口在被称为多窗口的物理地址306的大范围中被映射多次。
物理地址的组织
例如,考虑到PIM存储器的声明大小是先前示例中的实际大小的4倍大,PIM电路的物理地址可以按如下方式组织:
-第一2^N个物理地址传统上映射实际存储器,
-下一2^N个物理地址映射接口多次,
-2^N(N+1)个物理地址构成多窗口,其中滑动窗口被映射多次。
注意:HCPU可以使用传统上映射PIM存储器的物理地址空间来对PIM存储器的不被PIM处理器访问的区域进行访问。
注意:根据本发明的实施方式,其上定位有滑动窗口的PIM存储器区域可以通过PIM存储器的常规物理地址空间保持可访问或保持不可访问。
在滑动窗口中的访问(例如图3中的访问308、310和312)将被处理为在其上通常定位有该滑动窗口的PIM存储器区域中的访问(例如,图3中的访问308'、310'和312')。
滑动窗口通过多个物理地址范围可访问,所有这些物理地址范围构成多窗口。
滑动窗口使得它全部包含在来自DRAM的页面上,滑动窗口的定位可能表述为对{x,y}:
-x为页面编号,
-y为页面上的位偏移,
其中滑动窗口的大小和y的可能值使得滑动窗口永远不会与PIM存储器的两个页面交叠。
当接口软件想要访问PIM存储器区域时:
-接口软件配置一个或更多个接口寄存器以使滑动窗口与所考虑的存储器区域重合,
-接口软件使用具有变更地址的访问来执行期望的访问,
-接口软件然后可以移动到下个区域,前提是已经进行了通过滑动窗口进行的所有访问:
-写入是有效的,
-读取是有效的。
注意:关于最后两个子项,如果HCPU是000处理器,则可能需要使用内存屏障指令。
当接口软件已经写入所有相关的区域时,接口软件使用伪访问,以便从DRAM高速缓存推出可能在DRAM高速缓存发现的备用的最后写入。
通常,接口软件现在可以使用所有上述的访问接口寄存器的解决方案包括使用公共当前地址来访问由滑动窗口当前所针对的PIM存储器。
滑动窗口的移动:
-移动滑动窗口不修改当前地址或公共地址;只有当地址用于访问时,接口软件才修改私有当前地址或公共地址:它不是通过移动滑动窗口来修改的。
-在滑动窗口移动到另一位置前,已经使用滑动窗口的定位的所有访问必须是有效的(必须已经到达存储器电路)。
关于实现本发明的逻辑交叉的时间的考虑
一些接口寄存器实现映射多次在逻辑的速度方面并不是很难,特别是因为这样的寄存器的数目非常少。
另一方面,实施滑动窗口机制的逻辑的速度可能更成问题,如下所述。
如在先指出的,滑动窗口的定位可以表述为对{x,y}:
-x为页面编号,
-y为页面上的位偏移。
滑动窗口因此与PIM存储器的页面x相关联,这种关联通过接口寄存器是可编程的。
当DRAM存储器控制器发出针对多窗口的任意页面p的页面激活事务时,那么页面p的编号必须由页面编号x替换。
解码这种情况很简单,因为DRAM存储器控制器足以查看页面编码的非常少的位来确定这个页面属于多窗口。
然而,这种简单的解码和将值p替换为值x稍微增加了由存储器电路的激活逻辑构成的逻辑路径的交叉时间。
为实施逻辑窗口机制,可以计划稍微延长激活操作的等待时间,其值在存储器控制器中是可编程的。
访问屏障的方法
在这种方法中,预定的访问序列用于利用不重要的事务填充DRAM高速缓存:
-追逐(chasing)未决写入,从而执行它们的更新,
-追逐读取数据,从而使它们无效。
知道了DRAM高速缓存的特性,可以创建以下访问序列:
DCW_BARRIER(Dram高速缓存写入屏障),用于DRAM高速缓存的写入屏障:其确保在DCW_BARRIER的开始之前所做的所有写入在DCW_BARRIER结束时是有效的(通过PIM处理器可见)。
DCR_BARRIER(Dram高速缓存读取屏障),用于DRAM高速缓存的读取屏障:其确保在DCR_BARRIER的结束之后读取的所有数据比DCR_BARRIER开始的日期更近。
DCM_BARRIER(Dram高速缓存存储器屏障),用于DRAM高速缓存的读取和写入屏障,相当于:
DCM_BARRIER后跟DCR_BARRIER,
或者DCR_BARRIER后跟DCW_BARRIER。
由于DCW_BARRIER和DCR_BARRIER两者都通过追逐来自DRAM高速缓存的先前数据来工作,并且,除非DRAM高速缓存在其读取和写入的管理不对称,否则通常会导致:
DCW_BARRIER=DCR_BARRIER=DCM_BARRIER
如果这些屏障的效果仅应用于具有指定参数的地址范围,则一些DRAM高速缓存架构可以允许DCW_BARRIER、DCR_BARRIER和DCM_BARRIER序列的减少并且因此允许它们的执行时间的减少。
例如,如果地址范围由其起始地址和其结束地址指定,则可以使用下面的BARRIER访问序列变型:
DCW_BARRIER(start_addr,end_addr)确保在地址范围{start_addr,end_addr}中在DCW_BARRIER(start_addr,end_addr)的开始之前执行的所有写入在DCW_BARRIER(start_addr,end_addr)的结束时是有效的。
DCR_BARRIER(start_addr,end_addr)确保在地址范围{start_addr,end_addr}中在DCR_BARRIER(start_addr,end_addr)的结束之后读取的所有值比DCR_BARRIER(start_addr,end_addr)开始时的日期更近。
DCM_BARRIER(start_addr,end_addr)相当于:
DCW_BARRIER(start_addr,end_addr)后跟DCR_BARRIER(start_addr,end_addr),
或者DCR_BARRIER(start_addr,end_addr)后跟DCW_BARRIER(start_addr,end_addr)。
非易失性存储器的应用
不具有PIM处理器的非易失性存储器仍然可以具有允许其使用本发明的所有方面的接口,尤其是如下那些接口:
-允许从DRAM高速缓存中推出未决条目的接口,
-检查写入在PIM存储器中有效的接口。
确定DRAM高速缓存的特性
在本发明中要使用的地址序列取决于DRAM高速缓存的特性。
获取文档
从HCPU制造商获取关于DRAM高速缓存的文档与要求制造商修改其HCPU相比要容易地多。
分析DRAM高速缓存的行为
如果存在于HCPU中的关于DRAM高速缓存的信息不可用,则可以分析由HCPU处理器的DRAM存储器控制器生成的流量。这种类型的分析通常尤其是由DRAM和DIMM存储卡的制造商执行,特别是用于开发其产品并且检查其一致性,但是也由计算机制造商使用HCPU处理器用于其系统的开发。
一些分析系统例如来自Tektronix的分析系统可以分析HCPU处理器的DRAM控制器的流量。
通过运行在HCPU上为此目的而设计的程序并且使用流量分析工具例如来自Tektronix的那些工具,可以确定以下DRAM高速缓存参数等:
-DRAM高速缓存条目的最大大小,
-DRAM高速缓存的关联性,
-DRAM高速缓存条目中的数目,
-替代策略。
通过接口的DRAM高速缓存的分析
接口可以包括用于记录所接收的N个最后事务的物理装置或它们的特性中的至少足够的部分,这种记录通过接口本身可访问。
这些记录装置的存在使得负责开发接口软件的人员避免使用非常昂贵的外部分析装置。
甚至可以设计一种接口软件,在很多情况下,该接口软件在没有外部分析装置的情况下自动确定DRAM高速缓存的特性,从而自动创建DCR_BARRIER、DCW_BARRIER和DCM_BARRIER访问序列。
DRAM电路平台的考虑
DRAM存储器以存储体(benches)、页面和列组织。
为了简单起见,本发明的说明书没有考虑存储体的存在,DRAM是以存储体、页面和存储字被组织。基本上,DRAM中存储体的存在允许打开若干个页面(每个存储体至多打开一个页面)。
如本领域技术人员将容易理解的,本文所述的发明不会因存储体的存在而修改。
Claims (17)
1.计算系统,包括:
计算装置(102),其具有一个或更多个受指令控制的处理核(108)和存储器控制器(112),所述存储器控制器包括高速缓存存储器(114);以及
存储器电路(104),其经由数据总线(106A)和地址总线(106B)耦合至所述存储器控制器(112),所述存储器电路(104)被适配成具有能够由设置在所述地址总线(106B)上的多个第一地址访问的第一m位存储位置,所述计算装置(102)被配置成在所述多个第一地址中选择一个地址以便每个存储操作访问所述第一m位存储位置,
其中,所述多个第一地址中的每个地址包括第一n位值和第二p位值,所述计算装置(102)被配置成通过使用所述第一地址中的具有第一选择的n位值和根据写入数据生成的第二p位值的一个第一地址执行第一存储位置的读取操作来执行所述写入数据至所述第一存储位置的m位的写入操作。
2.根据权利要求1所述的计算系统,其中,所述第一m位存储位置能够由多个第一地址P访问,所述计算装置(102)被配置成使用所述地址中的第一地址在对第一存储位置的第N次访问操作和对所述第一存储位置的第(N+P)次访问操作期间访问所述第一存储位置。
3.根据权利要求1所述的计算系统,其中,所述存储器电路(104)被适配成响应于使用所述第一地址中的一个第一地址接收针对所述第一存储位置的读取操作来在所述第一存储位置中写入所述地址的所述第二p位值。
4.根据权利要求1所述的计算系统,其中,p和m是正整数并且m等于或大于p。
5.根据权利要求1、2、3和4中任一项所述的计算系统,其中,所述存储器电路(104)被适配成具有能够通过设置在所述地址总线(106B)上的多个第二地址访问的第二存储位置。
6.根据权利要求5所述的计算系统,其中,所述第一存储位置和所述第二存储位置是所述存储器电路(104)的第一存储位置范围(304)的一部分,所述第一存储位置范围由滑动地址窗口(305)选择,其中,所述第一存储位置范围的存储位置能够由以下地址寻址:
在包括所述多个第一地址中的一个地址和所述多个第二地址中的一个地址的第一地址范围(R0)中的对应地址;以及
在包括所述多个第一地址中的另一地址和所述多个第二地址中的另一地址的第二地址范围(R1)中的对应地址;
所述存储器电路(104)包括地址转换电路(122),所述地址转换电路(122)被适配成将所述第一地址范围(R0)和所述第二地址范围(R1)中的地址转换成所述滑动地址窗口(305)中的对应地址。
7.根据权利要求6所述的计算系统,其中,所述地址转换电路(122)包括至少一个可编程的寄存器(124),以便限定所述滑动地址窗口(305)的位置。
8.根据权利要求7所述的计算系统,其中,所述地址转换电路(122)的所述至少一个寄存器(124)可编程,以限定所述滑动地址窗口(305)的位置和大小。
9.根据权利要求1、2、3、4和6至8中任一项所述的计算系统,其中,所述存储器控制器(112)被适配成执行高速缓存清除操作,所述高速缓存清除操作包括一个或更多个序列的存储访问指令,所述存储访问指令由所述存储器控制器执行产生如下结果:
存储在所述存储器控制器(112)的所述高速缓存存储器(114)中的高速缓存存储器写入事务的全部或部分被写入至所述存储器电路(104);或者
从所述高速缓存存储器清除存储在所述存储器控制器(112)的所述高速缓存存储器(114)中的读取数据的全部或部分,所述读取数据包括在所述高速缓存清除操作之前从所述存储器电路读取的数据;或者
存储在所述存储器控制器的所述高速缓存存储器(114)中的高速缓存存储器写入事务的全部或部分被写入至所述存储器电路(104),并且从所述高速缓存存储器清除存储在所述存储器控制器(112)的所述高速缓存存储器(114)中的所述读取数据的全部或部分。
10.根据权利要求9所述的计算系统,其中,所述存储器电路(104)还包括辅助处理器(118),并且其中,所述存储访问指令序列仅包括用于访问所述存储器电路(104)的一个或若干个命令寄存器以便控制所述辅助处理器(118)的寄存器访问指令。
11.根据权利要求9所述的计算系统,其中,所述存储器电路(104)包括监测电路(126),所述监测电路(126)能够由所述计算装置(102)访问并且被适配成记录在所述存储器电路(104)中执行的存储访问事务,所述计算装置(102)被配置成基于由所述监测电路(126)记录的所述事务生成一个或若干个存储访问指令序列。
12.根据权利要求5所述的计算系统,其中,所述存储器电路(104)还包括辅助处理器(118),所述第一存储位置和所述第二存储位置为所述辅助处理器的控制寄存器。
13.根据权利要求12所述的计算系统,其中,所述计算装置(102)被配置成生成第一类型命令和第二类型命令,所述存储器电路(104)被适配成修改从所述计算装置(102)接收到的命令的顺序,以便针对由所述计算装置(102)在所述第一类型的第一命令与所述第一类型的第二命令之间生成的所述第二类型的第一组命令来考虑与所述第二类型的组命令有关的所述第一类型的所述第一命令和所述第一类型的所述第二命令的顺序。
14.根据权利要求13所述的计算系统,其中,所述存储器电路(104)被适配成基于与所述第一类型的至少每个顺序相关联的顺序值修改所述命令的顺序,每个命令的顺序值依次被包括在以下中:
在所述命令的接收者的地址中;或者
在所述命令本身中;或者
部分地在所述命令的接收者的地址中并且部分地在所述命令本身中。
15.根据权利要求1、2、3、4、6至8和10至14中任一项所述的计算系统,其中,所述计算装置(102)还包括能够由高速缓存管理指令配置的CPU高速缓存存储器(110),所述存储器控制器的所述高速缓存存储器(114)不能由高速缓存管理指令配置。
16.根据权利要求1、2、3、4、6至8和10至14中任一项所述的计算系统,其中,所述存储器电路(104)包括非易失性存储矩阵。
17.一种用于访问存储器电路(104)的方法,所述存储器电路(104)经由数据总线(106A)和地址总线(106B)耦合至计算装置(102)的存储器控制器(112),所述计算装置(102)具有一个或若干个处理核(108)和包括高速缓存存储器(114)的所述存储器控制器,所述方法包括:
通过所述计算装置针对访问所述存储器电路(104)的第一m位存储位置的每个存储操作从多个第一地址中选择一个地址,所述第一m位存储位置能够由设置在所述地址总线(106B)上的所述多个第一地址中的每个地址访问,
其中,所述多个第一地址中的每个地址包括第一n位值和第二p位值,所述计算装置(102)通过使用所述第一地址中的具有第一选择的n位值和根据写入数据生成的第二p位值的一个第一地址执行第一存储位置的读取操作来执行所述写入数据至所述第一存储位置的m位的写入操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1658373A FR3055715B1 (fr) | 2016-09-08 | 2016-09-08 | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue |
FR1658373 | 2016-09-08 | ||
PCT/FR2017/052368 WO2018046850A1 (fr) | 2016-09-08 | 2017-09-06 | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109952567A CN109952567A (zh) | 2019-06-28 |
CN109952567B true CN109952567B (zh) | 2023-08-22 |
Family
ID=57750074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780062063.1A Active CN109952567B (zh) | 2016-09-08 | 2017-09-06 | 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11494308B2 (zh) |
JP (1) | JP2019531546A (zh) |
KR (1) | KR102398616B1 (zh) |
CN (1) | CN109952567B (zh) |
FR (1) | FR3055715B1 (zh) |
WO (1) | WO2018046850A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7218556B2 (ja) * | 2018-12-06 | 2023-02-07 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US11481255B2 (en) * | 2019-09-10 | 2022-10-25 | International Business Machines Corporation | Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator |
US11403111B2 (en) | 2020-07-17 | 2022-08-02 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic using look-up tables |
US11355170B1 (en) | 2020-12-16 | 2022-06-07 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic |
US11868657B2 (en) * | 2021-02-08 | 2024-01-09 | Samsung Electronics Co., Ltd. | Memory controller, method of operating the memory controller, and electronic device including the memory controller |
US11354134B1 (en) * | 2021-03-25 | 2022-06-07 | Micron Technology, Inc. | Processing-in-memory implementations of parsing strings against context-free grammars |
US11921634B2 (en) * | 2021-12-28 | 2024-03-05 | Advanced Micro Devices, Inc. | Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000055734A1 (en) * | 1999-03-17 | 2000-09-21 | Rambus, Inc. | Dependent bank memory controller method and apparatus |
CN1763730A (zh) * | 2004-10-22 | 2006-04-26 | 富士通株式会社 | 用于在处理环境中提供路径记忆的系统和方法 |
JP2007249314A (ja) * | 2006-03-14 | 2007-09-27 | Yaskawa Electric Corp | 高速データ処理装置 |
CN101213531A (zh) * | 2005-06-30 | 2008-07-02 | 英特尔公司 | 用于微拼接的存储器访问的存储器控制器接口 |
CN102043730A (zh) * | 2009-10-14 | 2011-05-04 | 索尼公司 | 储存单元及存储系统 |
CN103870412A (zh) * | 2012-12-12 | 2014-06-18 | 辉达公司 | 降低dram访问的访问粒度的地址位重映射方案 |
CN104516830A (zh) * | 2013-09-26 | 2015-04-15 | 凯为公司 | 多阶段地址转换中的转换旁路 |
EP3018587A1 (en) * | 2014-11-05 | 2016-05-11 | Renesas Electronics Europe GmbH | Memory access unit |
CN105706071A (zh) * | 2013-09-26 | 2016-06-22 | 英特尔公司 | 持久性存储器的块存储孔 |
FR3032814A1 (zh) * | 2015-02-18 | 2016-08-19 | Upmem |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3451099B2 (ja) * | 1991-12-06 | 2003-09-29 | 株式会社日立製作所 | 外部記憶サブシステム |
US5361391A (en) * | 1992-06-22 | 1994-11-01 | Sun Microsystems, Inc. | Intelligent cache memory and prefetch method based on CPU data fetching characteristics |
EP0886216A1 (en) * | 1997-06-06 | 1998-12-23 | Texas Instruments Incorporated | Microprocessor comprising means for storing non-cacheable data |
US6734867B1 (en) * | 2000-06-28 | 2004-05-11 | Micron Technology, Inc. | Cache invalidation method and apparatus for a graphics processing system |
US6983354B2 (en) * | 2002-05-24 | 2006-01-03 | Micron Technology, Inc. | Memory device sequencer and method supporting multiple memory device clock speeds |
JP3938177B2 (ja) * | 2004-10-29 | 2007-06-27 | キヤノン株式会社 | データ処理装置及びデータ処理装置におけるメモリ割り当て方法 |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8386723B2 (en) * | 2009-02-11 | 2013-02-26 | Sandisk Il Ltd. | System and method of host request mapping |
US9075557B2 (en) * | 2013-05-15 | 2015-07-07 | SanDisk Technologies, Inc. | Virtual channel for data transfers between devices |
US9690928B2 (en) * | 2014-10-25 | 2017-06-27 | Mcafee, Inc. | Computing platform security methods and apparatus |
-
2016
- 2016-09-08 FR FR1658373A patent/FR3055715B1/fr active Active
-
2017
- 2017-09-06 JP JP2019513044A patent/JP2019531546A/ja active Pending
- 2017-09-06 WO PCT/FR2017/052368 patent/WO2018046850A1/fr active Application Filing
- 2017-09-06 US US16/331,429 patent/US11494308B2/en active Active
- 2017-09-06 CN CN201780062063.1A patent/CN109952567B/zh active Active
- 2017-09-06 KR KR1020197009869A patent/KR102398616B1/ko active IP Right Grant
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000055734A1 (en) * | 1999-03-17 | 2000-09-21 | Rambus, Inc. | Dependent bank memory controller method and apparatus |
CN1763730A (zh) * | 2004-10-22 | 2006-04-26 | 富士通株式会社 | 用于在处理环境中提供路径记忆的系统和方法 |
CN101213531A (zh) * | 2005-06-30 | 2008-07-02 | 英特尔公司 | 用于微拼接的存储器访问的存储器控制器接口 |
JP2007249314A (ja) * | 2006-03-14 | 2007-09-27 | Yaskawa Electric Corp | 高速データ処理装置 |
CN102043730A (zh) * | 2009-10-14 | 2011-05-04 | 索尼公司 | 储存单元及存储系统 |
CN103870412A (zh) * | 2012-12-12 | 2014-06-18 | 辉达公司 | 降低dram访问的访问粒度的地址位重映射方案 |
CN104516830A (zh) * | 2013-09-26 | 2015-04-15 | 凯为公司 | 多阶段地址转换中的转换旁路 |
CN105706071A (zh) * | 2013-09-26 | 2016-06-22 | 英特尔公司 | 持久性存储器的块存储孔 |
EP3018587A1 (en) * | 2014-11-05 | 2016-05-11 | Renesas Electronics Europe GmbH | Memory access unit |
FR3032814A1 (zh) * | 2015-02-18 | 2016-08-19 | Upmem |
Also Published As
Publication number | Publication date |
---|---|
KR102398616B1 (ko) | 2022-05-16 |
FR3055715A1 (fr) | 2018-03-09 |
US11494308B2 (en) | 2022-11-08 |
WO2018046850A1 (fr) | 2018-03-15 |
KR20190067171A (ko) | 2019-06-14 |
FR3055715B1 (fr) | 2018-10-05 |
JP2019531546A (ja) | 2019-10-31 |
CN109952567A (zh) | 2019-06-28 |
US20210349826A1 (en) | 2021-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109952567B (zh) | 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 | |
US10019369B2 (en) | Apparatuses and methods for pre-fetching and write-back for a segmented cache memory | |
US8205061B2 (en) | Seamless application access to hybrid main memory | |
US9223710B2 (en) | Read-write partitioning of cache memory | |
US6260131B1 (en) | Method and apparatus for TLB memory ordering | |
JP5528554B2 (ja) | ブロックベースの非透過的キャッシュ | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
JP5030796B2 (ja) | データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 | |
US9286221B1 (en) | Heterogeneous memory system | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
CN111201518B (zh) | 用于管理能力元数据的设备和方法 | |
EP1869557B1 (en) | Global modified indicator to reduce power consumption on cache miss | |
US6950909B2 (en) | System and method for reducing contention in a multi-sectored cache | |
JP5129023B2 (ja) | キャッシュメモリ装置 | |
US10169234B2 (en) | Translation lookaside buffer purging with concurrent cache updates | |
CN111742304A (zh) | 当调试要在处理电路上执行的程序时访问元数据的方法 | |
US9760488B2 (en) | Cache controlling method for memory system and cache system thereof | |
JP2021506028A (ja) | 共通のメモリページからメモリへのキャッシュラインのリンス | |
CN114746848A (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 |