CN116235153A - 用于高效存储器内处理系统的硬件软件协作地址映射方案 - Google Patents
用于高效存储器内处理系统的硬件软件协作地址映射方案 Download PDFInfo
- Publication number
- CN116235153A CN116235153A CN202180065324.1A CN202180065324A CN116235153A CN 116235153 A CN116235153 A CN 116235153A CN 202180065324 A CN202180065324 A CN 202180065324A CN 116235153 A CN116235153 A CN 116235153A
- Authority
- CN
- China
- Prior art keywords
- memory
- channel
- data elements
- row
- bank
- 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
Images
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- 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/0673—Single storage device
-
- 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/1028—Power efficiency
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 Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Dram (AREA)
- Image Input (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了用于实现硬件软件协作地址映射方案的方法,该方法使得能够对在一个存储体的相同行中或在不同存储体的相同行上一起访问的数据元素进行映射,以通过减少行冲突来实现更高性能。使用存储体内帧分条策略(IBFS),将数据元素的对应子集交织到存储体的单个行中。使用信道内帧分条策略(ICFS),将数据元素的对应子集交织到信道的单个信道行中。存储器控制器利用ICFS和/或IBFS来有效地在存储器诸如支持存储器内处理(PIM)的存储器中存储数据元素并访问这些数据元素。
Description
背景技术
本节所述的方法是可以实行的方法,但不一定是先前已经设想或实行过的方法。因此,除非另有说明,否则不应假设:本节所述的任何方法仅由于其包含在本节中而假定它们是现有技术。另外,不应假设:本节所述的任何方法仅由于其包含在本节中而假定它们是公知的、例行的或常规的。
由于动态随机存取存储器(DRAM)小区的物理性质和支持外围电路,在DRAM存储体级的数据访问延迟是显著的。每个DRAM存储体包含行缓冲器,其中可一次读出来自2D存储器阵列的存储于相应存储体中的单个行。为了访问存储在存储体内部的数据元素,2D存储器阵列的包含数据元素的行需要被激活,并且随后被读出到行缓冲器中。然后可从行缓冲器访问数据元素。为了访问落入另一行中的任何下一数据元素,必须在可激活下一行之前执行预充电操作。这种情况通常被称为行冲突。此类行激活-预充电-激活循环强加几十纳秒的严格定时要求,必须遵循这些定时要求以确保所存储的数据的完整性以及电源管理。
避免行冲突的一种方式是从相同行访问尽可能多的数据元素。然而,不保证落入相同操作系统页或连续物理地址空间(即帧)的相邻数据元素将总是被一起访问。物理存储器模块(即,DRAM信道、存储体、行和列)内的数据元素的放置取决于由控制对DRAM的访问的存储器控制器所采用的物理地址到物理存储器映射方案。一般来说,为了实现存储器级并行性(MLP),来自相同页的数据元素在可用数量的信道上交织。然而,当执行涉及来自不同页的操作数的运算时,未发生的交织可导致过量的行冲突。因此,需要用于解决计算机存储器中的行冲突的更好方法。
附图说明
在附图的图中以示例而非限制的方式描绘了实施方案,并且在附图中相同的附图标号是指类似的元件。
图1是描绘存储器控制器的框图,该存储器控制器耦接到支持存储器内处理(PIM)的存储器用于实现如本文所述的协作地址映射方案。
图2描绘了具有两个信道的存储器系统。
图3描绘了如何映射物理地址位以用于在图2中所描绘的存储器系统内部进行索引。
图4A描绘了具有地址交织存储器映射的支持PIM的存储器的信道-0、存储体-0。
图4B描绘了具有IBFS(存储体内帧分条)地址映射的支持PIM的存储器的信道-0、存储体-0。
图5A描绘了具有地址交织存储器映射的支持PIM的存储器的信道-0。
图5B描绘了具有ICFS(信道内帧分条)地址映射的支持PIM的存储器的信道-0。
图6是描绘用于使用IBFS和ICFS地址映射来访问存储器的方法的流程图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对实施方案的透彻理解。然而,对于本领域技术人员将显而易见的是,能够在没有这些具体细节的情况下实践这些实施方案。在其他情况下,以框图形式描绘了公知的结构和设备,以便避免不必要地模糊这些实施方案。
I.概述
II.架构
III.地址映射方案
A.地址交织存储器映射方案
B.存储体内帧分条策略
C.信道内帧分条策略
D.实施细节
E.示例性程序
F.应用程序
I.概述
提供了用于实现硬件软件协作地址映射方案的方法,该方法使得能够对在一个存储体的相同行中或在不同存储体的相同行上一起访问的由存储器指令使用的数据元素进行映射,以通过减少行冲突来实现更高的处理性能。在一个实施方案中,使用存储体内帧分条策略(IBFS),将数据元素的对应子集交织到存储体的单个行中。在另一实施方案中,使用信道内帧分条策略(ICFS),将数据元素的对应子集交织到信道的单个信道行中。存储器控制器利用IBFS或ICFS来有效地在存储器诸如支持存储器内处理(PIM)的存储器中存储数据元素并访问这些数据元素,这取决于PIM执行单元分别在存储器存储体或信道内的放置。
尽管本文在支持PIM的存储器系统的上下文中描述了实施方案,但是此类实施方案不限于支持PIM的存储器系统本身并且能够应用于其他存储器系统。
与现有技术相比,本文所讨论的方法分别用IBFS和ICFS策略实现了行激活数量的降低,同时并行地访问与大数据结构对应的数据元素。此类降低引起优异的PIM性能和能量效率。
II.架构
图1是描绘耦接到支持存储器内处理(PIM)的存储器104的存储器控制器102的框图,该存储器控制器用于实现如本文所述的协作地址映射方案。
图1包括存储器控制器102和支持PIM的存储器104。支持PIM的存储器104包括PIM执行单元106和存储器结构108。在一个实施方案中,存储器结构108包括存储体。在另一实施方案中,存储器结构108包括具有多个存储体的信道。在此类实施方案中,PIM执行单元被耦接到包括具有多个存储体的信道的存储器结构108。
存储器控制器102包括映射逻辑110,该映射逻辑被配置为管理存储器结构108中的数据元素的存储和访问。使用映射逻辑110,存储器控制器102识别特定的行索引值和列索引值以存储并访问存储器结构108中的数据元素。例如,映射逻辑110可实现存储体内帧分条(IBFS)策略,该IBFS策略提供用于以特定配置在存储体中存储数据元素的逻辑。此类逻辑还可用于一旦存储此类数据元素就从存储体中访问这些数据元素。又如,映射逻辑110可实现信道内帧分条(ICFS)策略,该ICFS策略提供用于以特定配置在信道中存储数据元素的逻辑。此类逻辑还可用于一旦存储此类数据元素就从信道中访问此类数据元素。映射逻辑110由计算机硬件、计算机软件或计算机硬件和计算机软件的任何组合来实现。在一些实施方案中,映射逻辑被存储在存储器控制器102外部,并由存储器控制器102使用以执行本文所述的操作。
支持PIM的存储器104包括具有行解码器112和列解码器114的存储器结构108。存储器结构108被耦接到PIM执行单元106。行解码器112从存储器控制器102接收行索引值,并且被配置为解码所接收到的行索引值以识别存储器结构108的对应于所接收到的行索引值的行。列解码器114从存储器控制器102接收列索引值并且被配置为解码所接收到的列索引值以识别存储器结构108的对应于所接收到的列索引值的列。经解码的行索引值和经解码的列索引值的组合被用于从存储器结构108的对应小区检索值。根据操作,将从小区检索到的值发送到PIM执行单元106或返回到存储器控制器102。PIM执行单元包括用于基于这些值生成结果,并且将该结果传输到存储器结构108和/或传输到存储器控制器102的逻辑。
在一些实施方案中,存储器结构108包括具有多个存储体的信道。在此类实施方案中,单独的行解码器112和列解码器114与信道的多个存储体中的每个存储体相关联。存储器控制器102包括用以传输存储体索引值以从多个存储体中选择存储体并且随后传输行索引值和列索引值以打开行以及访问数据元素的逻辑。根据操作,将所检索到的数据元素发送到PIM执行单元106或返回到存储器控制器102。PIM执行单元包括用以基于这些数据元素生成结果并且将该结果传输到存储器结构108以及/或者传输到存储器控制器102的逻辑。
III.地址映射方案
A.地址交织存储器映射方案
图2描绘了具有两个信道(信道0和信道1)的存储器系统。每个信道具有四个存储体:存储体0、存储体1、存储体2和存储体3。假设每个信道存在一个秩,即每个信道的所有四个存储体构成一个秩。每个存储体包括4x8存储器阵列。在一些实施方案中,每个存储体被耦接到单独的PIM执行单元。在一些实施方案中,信道的每个存储体被耦接到相同的PIM执行单元。假设每个存储器结构的每个小区保存一个数据元素。因此,具有两个信道的支持PIM的存储器可存储256(2×4×4×8)个数据元素并且可由八个物理地址位表示。假设物理地址空间具有四个帧(帧0至3),并且假设四个页A、B、C和D分别被放置到帧0至3中。每个页具有六十四个数据元素。用地址交织存储器映射方案,来自页A、B、C、D的数据元素在信道上交织,并且随后在每个信道内部在存储体上交织,并且随后在每个存储体内部在列上交织,并且随后在行上交织,即,交织顺序是:信道、存储体、列和行。
图2描绘了来自每个页的六十四个数据元素如何用地址交织存储器映射方案分布在存储器系统上。例如,对于包括六十四个数据元素A0至A63的页A,图2示出了在信道0的存储体0的行0、列0中被编入索引的数据元素A0。数据元素A1被放置在信道1的存储体0的行0、列0中。数据元素A2被放置在信道0的存储体1的行0、列0中。数据元素A3被放置在信道1的存储体1的行0、列0中,等等。
图3描绘了如何映射物理地址位以用于使用地址交织存储器映射在支持PIM的存储器内部进行索引。例如,位0表示信道编号。位1和位2表示存储体编号。位3至5表示列号,位6至7表示行号。
作为使用图2中所描绘的存储器系统来执行PIM运算的示例,假设将执行将两个矩阵逐元相加并且将结果存储到第三矩阵中的PIM计算。矩阵被定义为a、b、c并且被存储在单独的阵列中并且分别被分配在页A、B和C中。为了执行计算A[i]=B[i]+C[i],对于页A、B、C中的每个数据元素i,行R1被打开以读取B的第i个数据元素。然后将该元存储到临时缓冲器中。行R2被打开以读取C的第i个数据元素。然后执行数据元素的添加。添加的结果被存储在相同的临时缓冲器中。为了将结果存储在A的第i个数据元素中,行R0被打开并且该结果被存储。在每个存储体内部重复相同的过程,直到所有数据元素都被处理为止。
因此,为了执行一个单一加法运算以生成一个结果元,遇到三个行冲突。从定时和能量的观点来看,行冲突妨碍PIM效率。在该示例中,PIM算术/逻辑运算可能需要单个存储器时钟循环,而每个行冲突可能花费10秒的存储器时钟循环,从而使得数据元素放置成为实现高吞吐量的瓶颈。
B.存储体内帧分条策略
存储体内帧分条(IBFS)策略将来自连续帧的数据元素映射为协同定位在每个存储体内部的相同行中。根据具体实施,数据元素可以不同方式协同定位。例如,来自连续帧的数据元素的的对应子集可交织到存储体的单个行或多个行中。参考图2中所描绘的示例性存储器系统来解释IBFS。在该示例中,物理地址空间具有四个帧,即帧0至3,并且将4个页A、B、C和D分别分配到帧0至3中。为了便于解释,单个存储体被用于示出IBFS的示例。
假设来自图2的信道-0的存储体-0被用于示出IBFS。图4A示出了具有如关于图2所论述的地址交织存储器映射方案的信道-0的存储体-0。图4B示出了具有IBFS地址映射的来自图4A的信道-0的存储体-0。如图4B中所描绘的,用IBFS映射来执行以下计算:A[i]=B[i]+C[i],对于页A、B、C中的一个数据元素i,一个特定行被打开以读取B的第i个数据元素。然后将该数据元素存储到临时缓冲器中。还从相同行读取C的第i个数据元素。然后执行数据元素的添加。添加的结果被存储在相同的临时缓冲器中。为了将结果存储在A的第i个数据元素中,将结果存储在相同行中。在每个存储体内部重复相同的过程,直到所有数据元素都被处理为止。
因此,使用IBFS映射,仅需要打开一个行来执行计算A[i]=B[i]+C[i]的运算。例如,为了执行计算A[i]=B[i]+C[i]的第一运算,即当i=0时该计算的运算,仅需要行R0和来自行R0的数据元素B0、C0和A0。另外,使用IBFS映射,可使用来自相同行R0的数据元素A8、B8、C8来执行计算A[i]=B[i]+C[i],例如当i=8时的第二运算。对于计算A[i]=B[i]+C[i],与针对图2的存储器系统使用地址交织映射的先前技术相比,每个存储体PIM配置使用IBFS实现多达6x的行冲突数量的减少。因此,使用IBFS映射极大地提高了PIM吞吐量。
为了实现IBFS策略,定义了条带数(NoS),该条带数指示将在存储体的每个行中协同定位的帧的数量。每个此类连续帧组被称为帧的超集。如图4B中所描绘的,行R0包括来自4个连续帧的相等数量的数据元素,即,来自页A、B、C和D中的每个页的2个数据元素。数据元素以“条带的”形式放置在每个行内部,其中每个条带包括来自单个页的元。如图4B中所描绘的,NoS是4并且每个条带大小是2。用于保存来自页A、B、C和D中的每个页的数据元素的所有行(例如R0至R3)遵循NoS和条带大小参数,并且行的此类集被称为行的超集。因此,来自页A(例如A0、A8、A16、A24、A32、A40、A48和A56)的使用地址交织存储器映射方案放置在行R0中的8个数据元素使用IBFS映射分布在行R0到R3(例如A0、A8到R0;A16、A24到R1;A32、A40到R2以及A48、A56到R3)的超集上。类似地,来自页B、C和D的数据元素分布在超集的行上。在每个行中,来自不同帧的数据元素的条带起始位置取决于帧相对于超集中的第一帧的相对位置。
根据IBFS映射,以下等式被用于提供物理存储器内的行索引值和列索引值。如图3中所描绘的物理地址的相同位被用于行和列寻址,但为了解码这些位,存储器控制器利用不同等式。下面的等式是外部参数诸如操作系统页大小和NoS的函数。这些等式是灵活的,并且能够用不同参数用于存储器系统中。这里针对所有参数都是2的幂的系统示出了这些等式。对支持不是2的幂的参数的扩展对于本领域技术人员应当是明显的。另外,下面示出了示例性存储器系统参数和操作系统参数以及样本计算:
存储器系统特定参数:
bank_size=32
total_bank=bank_per_channel x total_channel=4x2=8
row_per_bank=4
col_per_row=8
OS/用户特定参数:
frame_size(即页大小)=64
number_of_stripes=4
必要计算:
stripe_size=col_per_row/number_of_stripes=8/4=2
frame_per_bank=bank_size/(frame_size/total_bank)=32/(64/8)=4
row_per_frame_per_bank=row_per_bank/frame_per_bank=4/4=1
IBFS映射的必要等式:
IBFS_col_addr=IBFS_col_base+IBFS_col_offset
IBFS_col_base=relative_frame_position x stripe_size=(frame_number%number_of_stripes)x stripe_size
IBFS_col_offset=col_addr%stripe_size
IBFS_row_addr=IBFS_row_base+IBFS_row_offset_1+IBFS_row_offset_2
IBFS_row_base=super_set_number x row_per_frame_per_bank xnumber_of_stripes=(frame_number/number_of_stripes)xrow_per_frame_per_bank x number_of_stripes
IBFS_row_offset_1=(row_addr%row_per_frame_per_bank)xnumber_of_stripes
IBFS_row_offset_2=col_addr/stripe_size
在一些实施方案中,对于以上等式,帧大小是total_bank x col_per_row的倍数。条带数(NoS)是2的幂,所允许的最大值是col_per_row。col_addr和row_addr分别指由列和行地址位表示的基本二进制数。在一个实施方案中,所有运算都是整数运算。
C.信道内帧分条策略
信道内帧分条(ICFS)策略将来自连续帧的数据元素映射为协同定位在每个信道的存储体上的对应行中。根据具体实施,数据元素可以不同方式协同定位。例如,来自连续帧的数据元素的的对应子集可交织到信道的单个信道行或多个信道行中。参考图2中所描绘的示例性存储器系统来解释ICFS。在该示例中,物理地址空间具有4个帧,即帧0至3,并且将4个页A、B、C和D分别分配到帧0至3中。为了便于解释,单个信道被用于示出ICFS的示例。
假设来自图2的信道-0被用于示出ICFS。图5A示出了采用如关于图2所论述的地址交织存储器映射方案的信道-0。图5B示出了具有ICFS地址映射的来自图2的信道-0。如图5B中所描绘的,用ICFS映射来执行以下计算:A[i]=B[i]+C[i],对于页A、B、C中的一个元素i,存储体1的一个特定行被打开以读取B的第i个数据元素。然后将该数据元素存储到临时缓冲器中。存储体2的一个特定行被打开以读取C的第i个数据元素。然后执行数据元素的添加。添加的结果被存储在相同的临时缓冲器中。为了将结果存储在A的第i个数据元素中,存储体0的一个特定行被打开并且将该结果存储回存储体0的该行。
因此,使用ICFS映射,仅需要打开3个不同存储体上的3个行来执行计算A[i]=B[i]+C[i]的运算。例如,为了执行计算A[i]=B[i]+C[i]的第一运算,即当i=0时的该计算的运算,仅需要针对来自对应行的数据元素A0、B0和C0的来自存储体0的行R0、来自存储体1的行R0和来自存储体2的行R0。另外,使用ICFS映射,例如当i=8、16、24、32、40、48和56时,计算A[i]=B[i]+C[i]的7个附加运算可使用3个存储体上的行的相同集来执行。对于计算A[i]=B[i]+C[i],与针对图2的存储器使用地址交织映射的先前技术相比,每信道PIM系统使用ICFS实现多达24x的行冲突数量的减少。因此,使用ICFS映射极大地提高了PIM吞吐量。
为了实现ICFS策略,利用被称为“信道行”的行的信道级视图。信道行包括来自相应信道的所有存储体的相同行。例如,根据图5B,信道行包括来自存储体0的R0、来自存储体1的R0、来自存储体2的R0和来自存储体3的R0。行的信道级视图与用于IBFS映射的行的存储体级视图(被称为“行”或“存储体行”)形成对比。
定义了指示在每个信道行中要协同定位多少帧的条带数(NoS)。每个此类连续帧组被称为帧的超集。如上所述,所有相同编号的存储体行被一起看作信道行,例如,存储体0、1、2和3的行R0被一起看作信道行R0。在ICFS映射中,将存储体行看作一个单个单元,并且使用该单元来测量条带大小。
如图5B中所描绘的,信道行R0包括来自4个连续帧的相等数量的存储体行大小的数据元素,即来自页A、B、C和D中的每个页的1个此类元素,并且以“条带的”形式放置在存储体上,其中每个条带包括来自单个页的元素。如图5B中所描绘的,NoS是4个并且每个条带大小是1。用于保存来自页A、B、C和D中的每个页的数据元素的所有信道行(例如R0到R3)遵循NoS和条带大小参数,并且信道行的此类集被称为信道行的超集。因此,将使用地址交织存储器映射方案放置到信道行R0中的来自页A的4个存储体行大小的数据元素使用ICFS映射分布在信道行R0到R3(例如,存储体0的R0到信道行R0,存储体1的R0到信道行R1,存储体2的R0到信道行R2,以及存储体3的R0到信道行R3)的超集上。类似地,来自页B、C和D的数据元素分布在超集的信道行上。在每个信道行中,来自不同帧的数据元素的条带起始位置取决于帧相对于超集中的第一帧的相对位置。
根据ICFS映射,以下等式被用于提供物理存储器内的行索引值和存储体索引值。如图3中所描绘的物理地址的相同位被用于行和存储体寻址,但为了解码这些位,存储器控制器利用不同等式。这些等式是外部参数诸如OS页大小和NoS的函数。这些等式是灵活的,并且能够用不同参数用于存储器系统中。这里针对所有参数都是2的幂的系统示出了这些等式。对支持不是2的幂的参数的扩展对于本领域技术人员应当是明显的。另外,下面示出了示例性存储器系统参数和操作系统参数以及样本计算:
特定于存储器系统的参数:
channel_size=16
total_channel=2
CL_row_per_channel(每个信道的信道行)=4
bank_per_CL_row=4
由用户选择的参数:
frame_size(即页大小)=8
number_of_stripes=4
必要计算:
stripe_size=bank_per_CL_row/number_of_stripes=4/4=1
frame_per_channel=channel_size/(frame_size/total_channel)=16/(8/2)=4
CL_row_per_frame_per_channel=CL_row_per_channel/frame_per_channel=4/4=1
ICFS映射的必要等式:
ICFS_bank_addr=ICFS_bank_base+ICFS_bank_offset
ICFS_bank_base=relative_frame_position x stripe_size=(frame_number%number_of_stripes)x stripe_size
ICFS_bank_offset=bank_addr%stripe_size
ICFS_row_addr=ICFS_row_base+ICFS_row_offset_1+ICFS_row_offset_2
ICFS_row_base=super_set_number x CL_row_per_frame_per_channelxnumber_of_stripes=(frame_number/number_of_stripes)xCL_row_per_frame_per_channel x number_of_stripes
ICFS_row_offset_1=(row_addr%CL_row_per_frame_per_channel)xnumber_of_stripes
ICFS_row_offset_2=bank_addr/stripe_size
在一些实施方案中,对于以上等式,帧大小是total_channel xbank_per_channel的倍数。条带数(NoS)是2的幂,所允许的最大值是bank_per_channel。bank_addr和row_addr分别指由存储体和行地址位表示的基本二进制数。在一个实施方案中,所有运算都是整数运算。
D.实施细节
IBFS和ICFS与现有策略一起被并入存储器控制器中。所提供的等式涉及通过两个数的幂的除法/乘法/模运算,其可通过移位运算来有效地实现。存储器控制器被配置为根据非PIM/每存储体支持PIM/每信道支持PIM的系统来使用通用、IBFS和ICFS。例如,对于其中PIM执行单元在存储体级被耦接到存储器结构的系统配置,可选择IBFS以供存储器控制器使用。对于其中PIM执行单元在信道级被耦接到存储器结构的系统配置,可选择ICFS以供存储器控制器使用。
为利用IBFS和ICFS的支持PIM的存储器系统提供参数诸如帧大小和NoS。按照操作系统规范来提供帧大小的选择。在系统启动时按照用户偏好静态地提供NoS(例如经由基本输入/输出系统)或者动态地提供NoS以实现灵活性。
在操作系统和编译器中进行修改,使得支持PIM的存储器系统可利用IBFS和ICFS的益处。操作系统可通过接收来自编译器的提示而意识到彼此相关的存储器分配(mallocs)。程序员可向编译器提供指示PIM计算中涉及哪些数据结构的提示。编译器然后确定一起参与PIM计算的相关数据结构,称为PIM数据结构。编译器选择此类PIM数据结构的数量,其中该数量等于或小于NoS,并且分配单个颜色。每个PIM数据结构集被分配不同的颜色。每当对于任何此类PIM数据结构发生malloc调用时,PIM数据结构在虚拟地址空间中被分配必要数量的页。向操作系统通知与虚拟页相关联的不同颜色,该不同颜色是与相应PIM数据结构相关联的颜色。此时,不分配物理存储器(帧)。当来自相同集的任何其他PIM数据结构是malloced时,进行相同的过程。接下来,当程序访问任何此类页时,操作系统为所请求的页分配物理存储器,其在帧的超集的块中具有相同的颜色。在每个此类数据结构具有n页的情况下,帧的一个超集被按需分配给PIM数据结构的第i页,并且随后帧的另一个超集被按需分配给PIM数据结构的第(i+1)页,并依此类推,直到第n页。
例如,考虑针对PIM计算a[]=b[]+c[]的a[]、b[]和c[]的页分配。假设每个分配需要4个页。所有12(3x4)页被分配红色。操作系统确保所有分配的页[i]是相似的,即,对于a[]的页[0]的分配的需求触发对于b[]和c[]的页[0]的分配。所有分配请求都用落入帧的相同超集中的连续帧来完成。不是触发b[]和c[]的页[0]的分配,而是当需求页时触发分配。然而,在已经分配了a[]的页[0]的帧的相同超集中为未分配的页保留帧。为了避免碎片化,帧的超集的任何未使用的帧可被返回到操作系统以在将来的请求中被分配。
当程序发出指定虚拟地址的任何PIM命令时,遵循常规地址转换过程将虚拟地址转换为物理地址。当存储器控制器被配置为采用IBFS和ICFS时,以PIM友好的方式映射物理地址。
如上所论,IBFS和ICFS可实现为静态或动态方案。在静态方案中,根据用户偏好,NoS在系统启动时被绑定到任何常数(例如,2/4/8)。存储器结构是用指定的NoS映射的,并且如果不重新启动具有不同NoS的系统,映射不能被改变。除了上面已经提出的那些步骤之外,静态方案不需要任何附加步骤。
动态方案通过根据用户偏好允许与PIM数据结构对应的页的PIM友好的地址映射以及同时允许针对其他存储器页的通用地址映射来提供对存储器映射的灵活性和更精细程度的控制。如以上所提出的,编译器用必要的NoS来识别相关PIM数据结构的不同集,并且用不同的颜色来标记每个此类集。在对任何此类集的页进行物理存储器分配时,上述操作系统分配过程确保必要的帧的超集,使得该超集包含NoS数量的帧。任何数据结构和/或页可在其整个生命周期仅与一个NoS值相关联。每当针对这些页发生任何存储器访问(例如,从存储文件读取到这些帧中或写回,或来自处理器内核的任何访问)时,总是向存储器控制器通知对应NoS信息以及在针对页的任何给定虚拟地址的虚拟地址到物理存储器地址转换之后在存储器控制器处接收到的物理存储器地址。存储器控制器识别与每个此类存储器请求一起包括的NoS信息并且解码每IBFS或ICFS的物理存储器地址。因此,针对每个数据结构/页的NoS信息必须被跟踪并且与任何存储器访问请求的物理存储器地址一起被传送到存储器控制器。
为了实现将NoS信息传送到存储器控制器,利用四种可能的方法:(i)基于指令的方法和(ii)基于页表条目(PTE)的方法、(iii)配置寄存器方法和(iv)基于模式寄存器的方法。在基于指令的方法中,指令集架构(ISA)被扩展为包括专门的LOAD/STORE指令,以访问由用户注释以用于PIM计算的任何存储器结构。在编译器首先选择将与必要的NoS信息一起被访问的相关PIM数据结构的集的编译遍中,编译器例如在其符号表中保持跟踪针对每个此类存储器结构的对应NoS信息。稍后,对于这些存储器结构,必要时,编译器发出具有嵌入在指令中的NoS信息的专用LOAD/STORE指令(例如,LOAD_PIM、STORE_PIM)。在一个实施方案中,对于一次仅支持IBFS或ICFS的存储器系统,不需要动态说明符来传达IBFS或ICFS中的哪一者需要由存储器控制器采用。在其他实施方案中,对于动态地允许IBFS和ICFS两者的存储器系统,将单个位策略指示标识信息连同要由存储器控制器使用以在IBFS或ICFS之间进行选择的NoS信息一起嵌入在针对PIM数据结构的专用LOAD/STORE指令中。与这里讨论的NoS信息类似,策略指示标识由编译器决定和管理。
存储器控制器被配备成识别此类专门LOAD/STORE命令,并且从所接收到的命令中找到必要的NoS信息,以便按照IBFS或ICFS或通用地址映射来正确地解码物理存储器地址映射。根据具体实施选择,可使用不同数量的位来传送NoS信息。例如,仅使用2位,可编码四个不同的NoS值1、2、4、8,其中NoS值1指示默认映射策略诸如地址交织存储器映射方案。对于常规LOAD/STORE命令,其中不提供NoS信息,存储器控制器使用NoS值1,默认为默认映射策略诸如地址交织存储器映射方案。
在基于PTE的方法中,对于每个分配的页,使用PTE中的位的集来保持相应页的对应NoS信息。仅使用2位就可对四个不同的NoS值1、2、4、8进行编码,其中NoS值1指示默认映射策略诸如地址交织存储器映射方案。对于不属于任何PIM计算的任何常规页,存储默认NoS值1。PTE中指示NoS值的这些位与物理存储器地址一起被高速缓存到转换后备缓冲器(TLB)条目中。对于任何存储器访问请求,与物理存储器地址一起,包括对应的NoS信息。当任何此类存储器请求到达存储器控制器时,存储器控制器识别所包括的NoS信息以及每个此类存储器请求,并且按照IBFS或ICFS或通用地址映射来解码物理存储器地址映射。在一个实施方案中,对于一次仅支持IBFS或ICFS的存储器系统,不需要动态说明符来传达IBFS或ICFS中的哪一者需要由存储器控制器采用。在其他实施方案中,对于动态地允许IBFS和ICFS两者的存储器系统,单个位策略指示标识信息连同要由存储器控制器使用以在IBFS或ICFS之间进行选择的NoS信息一起包括在任何存储器访问请求中。与基于PTE的方法中的NoS信息类似地选择和管理该策略指示标识。
在基于配置寄存器的方法中,对于存储PIM数据结构的物理存储器地址范围,使用与存储器控制器相关联的一个或多个配置寄存器来保持相应物理地址范围的对应NoS信息。通过软件(例如,操作系统)或硬件来管理将PIM数据结构聚集到物理地址范围中以及用NoS信息对一个或多个配置寄存器进行编程。仅用2位就有可能编码四个不同的NoS值2、4、8、16。由于配置寄存器仅保存地址范围,这些地址范围保存PIM数据结构,因此该方法不需要显式地存储用于默认映射策略诸如地址交织存储器映射方案的指示标识。对于在存储器控制器处接收到的任何存储器访问请求,使用相关联的物理存储器地址来查询配置寄存器。如果地址落入在一个或多个配置寄存器中编程的范围内,则来自该配置寄存器的对应NoS信息与存储器访问相关联。对于不访问PIM数据结构的任何常规访问,配置寄存器将不保存条目,并且使用默认映射,诸如NoS值为1。存储器控制器识别NoS信息,并且按照IBFS或ICFS或通用地址映射来解码物理存储器地址映射。在存储器系统动态地支持IBFS和ICFS两者的实施方案中,单个位策略指示标识信息也与NoS信息一起保存在配置寄存器中,以指示IBFS或ICFS中的哪一者需要由存储器控制器用于对应的物理地址范围。与基于配置寄存器的方法中的NoS信息类似地选择和管理该策略指示标识。
在基于模式寄存器的方法中,在处理器或硬件上运行的软件向与存储器控制器相关联的单个模式寄存器写入用于所有后续存储器访问的NoS信息。仅使用2位就可对四个不同的NoS值1、2、4、8进行编码,其中NoS值1指示默认映射策略诸如地址交织存储器映射方案。在一个实施方案中,在模式寄存器编程之后的所有存储器访问使用来自模式寄存器的NoS信息。模式寄存器可由软件按需要频繁地更新以改变与后续存储器访问相关联的NoS信息。在另一实施方案中,不是单个模式寄存器,而是存储器控制器具有用于系统中的每个存储器请求生成器(例如,每个内核或每个线程)的模式寄存器。在此类实施方案中,来自每个模式寄存器的设置仅被应用于源自相关联的请求者的存储器请求。在存储器系统动态地支持IBFS和ICFS两者的实施方案中,单个位策略指示标识信息也连同NoS信息一起被写入模式寄存器中,以指示IBFS或ICFS中的哪一者需要由存储器控制器用于后续存储器访问。与基于模式寄存器的方法中的NoS信息类似地选择和管理该策略指示标识。
与用于图2的存储器系统的先前方案相比,所提出的硬件/软件协作地址映射方案在访问分别对应于与IBFS和ICFS策略一起访问的大数据结构的数据元素时提供行激活数量的减小。此类降低引起优异的PIM性能和能量效率。
E.示例性程序
图6是描绘用于使用IBFS和ICFS地址映射来访问存储器的方法的流程图600。出于示例的目的,关于图1中所描绘的架构来讨论图6。
在步骤602中,由存储器控制器102接收对存储在存储器中的多个数据元素中的数据元素的存储器访问请求。在一些实施方案中,存储器包括支持存储器内处理(PIM)的存储器。存储器访问请求包括物理存储器地址和条带数(NoS)值。例如,主机处理器传输存储器访问请求并且将该请求传输到存储器控制器102。
在一个实施方案中,从专用指令集架构(ISA)指令导出NoS值。在另一实施方案中,从页表条目(PTE)的一个或多个位导出NoS值。在另一实施方案中,从与包括请求的物理存储器地址的物理存储器地址的范围相关联的一个或多个配置寄存器导出NoS值。在另一实施方案中,从与存储器控制器相关联的模式寄存器导出NoS值。
在步骤604中,使用映射,由存储器控制器102基于所接收到的物理存储器地址和NoS值来计算数据元素的行索引值和列索引值。例如,存储器控制器102使用映射逻辑110来计算数据元素的行索引值和列索引值。
在一个实施方案中,映射包括IBFS映射。在此类实施方案中,存储器包括多个存储体,该多个存储体中的每个存储体包括多个行、多个列和对应的执行单元。在一些实施方案中,存储器包括支持PIM的存储器,并且对应的执行单元包括PIM执行单元。对于多个存储体中的特定存储体,通过将多个数据元素中对应于计算的单独操作数的数据元素分组到该特定存储体的多个行中的单个行中来将该多个数据元素存储在存储器中。
在另一实施方案中,映射包括ICFS映射。在此类实施方案中,存储器包括多个信道,该多个信道中的每个信道包括多个存储体、多个信道行和对应的执行单元。在一些实施方案中,存储器包括支持PIM的存储器,并且对应的执行单元包括PIM执行单元。多个信道行中的每个信道行包括来自多个信道中的相应信道的多个存储体中的所有存储体的相同行。对于多个信道中的特定信道,通过将多个数据元素中对应于计算的单独操作数的数据元素分组到针对该特定信道的多个信道行中的单个信道行中来将该多个数据元素存储在存储器中。
在步骤606中,由存储器控制器102基于行索引值和列索引值从存储器检索数据元素。在一个实施方案中,对于IBFS,存储器控制器102将行索引值传输到行解码器112并且将列索引值传输到列解码器114以打开行并访问数据元素。在另一实施方案中,存储器结构108被视为具有多个存储体的信道,并且对于ICFS,存储器控制器102传输存储体索引值以从该多个存储体中选择存储体并且随后传输行索引值和列索引值以打开行并访问数据元素。PIM执行单元106聚集此类数据元素,执行必要的运算并将结果传输到存储器结构108和/或传输到存储器控制器102。
在一个实施方案中,对于一次仅支持IBFS或ICFS中的一者的存储器系统,不需要动态说明符来传达IBFS或ICFS中的哪一者需要由存储器控制器采用。在其他实施方案中,对于动态地允许IBFS和ICFS两者的存储器系统,策略指示标识信息与NoS信息一起传送以由存储器控制器使用以在IBFS或ICFS之间进行选择。与本文讨论的NoS信息类似地决定和管理策略指示标识信息。
F.应用程序
在一些实施方案中,技术诸如IBFS和ICFS在应用于各种机器学习(ML)应用程序时可以是有用的。例如,实现深度神经网络(DNN)的ML应用程序通常使用运算诸如逐元地添加两个大矩阵且将结果存储到另一矩阵(例如,A[i]=B[i]+C[i])中。在使用具有多个层的残余单元作为构建块的DNN中,每个残余单元的一层可执行逐元矩阵加法运算。使用IBFS和ICFS技术,如果此类矩阵(例如,A[]、B[]、C[])的数据元素的对应子集在相同DRAM存储体级或信道级行中交织,则在访问这些数据元素以执行逐元矩阵加法运算时遇到较少的行冲突。因此,IBFS和ICFS允许DNN以较少的行冲突执行相同运算,从而有效地增加各种ML应用程序的速度。
Claims (21)
1.一种存储器控制器,所述存储器控制器包括映射逻辑,所述映射逻辑被配置为:
确定多个数据元素被存储在存储器中的何处,所述存储器具有多个存储体,所述多个存储体中的每个存储体包括多个行、多个列和对应的执行单元;
针对所述多个存储体中的特定存储体,将所述多个数据元素中的数据元素的对应子集交织到所述特定存储体的所述多个行中的单个行中。
2.根据权利要求1所述的存储器控制器,其中所述执行单元基于交织到所述特定存储体的所述多个行中的所述单个行中的数据元素的所述对应子集来执行计算的第一运算;
其中所述执行单元基于交织到所述特定存储体的所述多个行中的所述单个行中的数据元素的所述对应子集来执行所述计算的附加运算。
3.根据权利要求1所述的存储器控制器,其中所述映射逻辑被进一步配置为:
响应于对所述多个数据元素中的特定数据元素的存储器访问请求,基于条带数(NoS)值解码所述物理存储器地址以生成针对所述特定数据元素的存储体索引、行索引值和列索引值,所述存储器访问请求包括物理存储器地址和相关联的所述NoS值。
4.根据权利要求1所述的存储器控制器,其中所述多个数据元素中的数据元素的所述对应子集基于条带数(NoS)值被存储在所述特定存储体中,所述条带数值定义在所述多个存储体中的所述特定存储体的所述多个行中的单个行中协同定位的帧的数量。
5.根据权利要求4所述的存储器控制器,其中所述NoS值是从以下各项中的一项或多项导出的:专用指令集架构(ISA)指令、页表条目(PTE)的一个或多个位、配置寄存器的一个或多个位或模式寄存器的一个或多个位。
6.根据权利要求4所述的存储器控制器,其中多个帧是基于与每个行对应的所述NoS值在所述多个存储体中的所述特定存储体的所述多个行中的每个行中协同定位的。
7.根据权利要求6所述的存储器控制器,其中所述多个存储体中的所述特定存储体的所述多个行中的每个行包括来自所述多个帧中的每个帧的所述多个数据元素中的一个或多个数据元素;
其中所述多个存储体中的所述特定存储体的所述多个行中的每个行包括来自所述多个帧中的每个帧的相等数量的数据元素。
8.根据权利要求6所述的存储器控制器,其中所述存储器包括支持存储器内处理(PIM)的存储器,并且其中所述执行单元包括PIM执行单元。
9.一种存储器控制器,所述存储器控制器包括映射逻辑,所述映射逻辑被配置为:
确定多个数据元素被存储在存储器中的何处,所述存储器具有多个信道,所述多个信道中的每个信道包括多个存储体、多个信道行和对应的执行单元;
其中所述多个信道行中的每个信道行包括来自所述多个信道中的相应信道的所述多个存储体中的所有存储体的相同行;
针对所述多个信道中的特定信道,将所述多个数据元素中的数据元素的对应子集交织到所述特定信道的所述多个信道行中的单个信道行中。
10.根据权利要求9所述的存储器控制器,其中所述执行单元基于交织到所述特定信道的所述多个信道行中的所述单个信道行中的数据元素的所述对应子集来执行计算的第一运算;
其中所述执行单元基于交织到所述特定信道的所述多个信道行中的所述单个信道行中的数据元素的所述对应子集来执行所述计算的附加运算。
11.根据权利要求9所述的存储器控制器,其中所述映射逻辑被进一步配置为:
响应于对所述多个数据元素中的特定数据元素的存储器访问请求,基于条带数(NoS)值解码所述物理存储器地址以生成针对所述特定数据元素的存储体索引值和行索引值,所述存储器访问请求包括物理存储器地址和所述NoS值。
12.根据权利要求9所述的存储器控制器,其中所述多个数据元素中的数据元素的所述对应子集基于条带数(NoS)值被存储在所述特定信道中,所述条带数值定义在所述多个信道中的每个相应信道的所述多个信道行中的单个信道行中协同定位的帧的数量。
13.根据权利要求12所述的存储器控制器,其中所述NoS值是从以下各项中的一项或多项导出的:专用指令集架构(ISA)指令、页表条目(PTE)的一个或多个位、配置寄存器的一个或多个位或模式寄存器的一个或多个位。
14.根据权利要求12所述的存储器控制器,其中多个帧是基于与每个信道行对应的所述NoS值在所述多个信道中的所述特定信道的所述多个信道行中的每个信道行中协同定位的。
15.根据权利要求14所述的存储器控制器,其中所述特定信道的所述多个信道行中的每个信道行包括与所述多个帧中的每个帧相关联的所述多个数据元素中的一个或多个数据元素;
其中所述特定信道的所述多个信道行中的每个信道行包括来自所述多个帧中的每个帧的相等数量的数据元素。
16.根据权利要求14所述的存储器控制器,其中所述存储器包括支持存储器内处理(PIM)的存储器,并且其中所述执行单元包括PIM执行单元。
17.一种方法,包括:
接收对存储在存储器中的多个数据元素中的数据元素的存储器访问请求,所述存储器访问请求包括物理存储器地址和条带数(NoS)值;
基于所述物理存储器地址和所述NoS值计算针对所述数据元素的索引值;
基于所述索引值从所述存储器结构检索所述数据元素。
18.根据权利要求17所述的方法,其中所述索引值包括针对所述数据元素的行索引值和列或存储体索引值;
其中基于所述行索引值和所述列或存储体索引值从所述存储器结构检索所述数据元素。
19.根据权利要求17所述的方法,其中所述存储器包括支持存储器内处理(PIM)的存储器。
20.根据权利要求17所述的方法,其中所述存储器包括多个存储体,所述多个存储体中的每个存储体包括多个行、多个列和对应的执行单元。
其中针对所述多个存储体中的特定存储体,通过将所述多个数据元素中的数据元素的对应子集交织到所述特定存储体的所述多个行中的单个行中来将所述多个数据元素存储在所述存储器中。
21.根据权利要求17所述的方法,其中所述存储器包括多个信道,所述多个信道中的每个信道包括多个存储体、多个信道行和对应的执行单元;
其中所述多个信道行中的每个信道行包括来自所述多个信道中的相应信道的所述多个存储体中的所有存储体的相同行;
其中针对所述多个信道中的特定信道,通过将所述多个数据元素中的数据元素的对应子集交织到所述特定信道的所述多个信道行中的单个信道行中来将所述多个数据元素存储在所述存储器中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/006,646 US11487447B2 (en) | 2020-08-28 | 2020-08-28 | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
US17/006,646 | 2020-08-28 | ||
PCT/US2021/044350 WO2022046371A1 (en) | 2020-08-28 | 2021-08-03 | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116235153A true CN116235153A (zh) | 2023-06-06 |
Family
ID=80355553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180065324.1A Pending CN116235153A (zh) | 2020-08-28 | 2021-08-03 | 用于高效存储器内处理系统的硬件软件协作地址映射方案 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11487447B2 (zh) |
EP (1) | EP4204977A1 (zh) |
JP (1) | JP2023540232A (zh) |
KR (1) | KR20230056772A (zh) |
CN (1) | CN116235153A (zh) |
WO (1) | WO2022046371A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487447B2 (en) | 2020-08-28 | 2022-11-01 | Advanced Micro Devices, Inc. | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
US20220309734A1 (en) * | 2021-03-29 | 2022-09-29 | Samsung Electronics Co., Ltd. | Apparatus and method with graphics processing |
US20230133360A1 (en) * | 2021-10-28 | 2023-05-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute-In-Memory-Based Floating-Point Processor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101686590B1 (ko) * | 2010-09-20 | 2016-12-14 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 워드 라인 인터리빙 방법 |
KR20120107336A (ko) * | 2011-03-21 | 2012-10-02 | 삼성전자주식회사 | 메모리 시스템 및 그것의 어드레싱 방법 |
US10152408B2 (en) | 2014-02-19 | 2018-12-11 | Rambus Inc. | Memory system with activate-leveling method |
US9734889B2 (en) | 2014-12-22 | 2017-08-15 | Empire Technology Development Llc | Reconfigurable row DRAM |
US9934153B2 (en) | 2015-06-30 | 2018-04-03 | Nvidia Corporation | Patch memory system |
US10198369B2 (en) | 2017-03-24 | 2019-02-05 | Advanced Micro Devices, Inc. | Dynamic memory remapping to reduce row-buffer conflicts |
US10297307B1 (en) | 2017-12-29 | 2019-05-21 | Micron Technology, Inc. | Methods for independent memory bank maintenance and memory devices and systems employing the same |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
US20210333999A1 (en) * | 2018-08-30 | 2021-10-28 | SK Hynix Inc. | Data storage device, operation method thereof and storage system having the same |
KR102520412B1 (ko) * | 2018-09-19 | 2023-04-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20210007503A (ko) * | 2019-07-11 | 2021-01-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11403217B2 (en) * | 2019-10-30 | 2022-08-02 | Qualcomm Incorporated | Memory bank group interleaving |
KR20210152738A (ko) * | 2020-06-09 | 2021-12-16 | 에스케이하이닉스 주식회사 | 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법 |
US11487447B2 (en) | 2020-08-28 | 2022-11-01 | Advanced Micro Devices, Inc. | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
-
2020
- 2020-08-28 US US17/006,646 patent/US11487447B2/en active Active
-
2021
- 2021-08-03 EP EP21862343.7A patent/EP4204977A1/en active Pending
- 2021-08-03 KR KR1020237010518A patent/KR20230056772A/ko unknown
- 2021-08-03 JP JP2023513427A patent/JP2023540232A/ja active Pending
- 2021-08-03 CN CN202180065324.1A patent/CN116235153A/zh active Pending
- 2021-08-03 WO PCT/US2021/044350 patent/WO2022046371A1/en unknown
-
2022
- 2022-05-16 US US17/745,278 patent/US11797201B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220276795A1 (en) | 2022-09-01 |
US11487447B2 (en) | 2022-11-01 |
JP2023540232A (ja) | 2023-09-22 |
KR20230056772A (ko) | 2023-04-27 |
US11797201B2 (en) | 2023-10-24 |
WO2022046371A1 (en) | 2022-03-03 |
US20220066662A1 (en) | 2022-03-03 |
EP4204977A1 (en) | 2023-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797201B2 (en) | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems | |
CN112470113B (zh) | 存储器系统中的隔离性能域 | |
US9336133B2 (en) | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory | |
US9734050B2 (en) | Method and system for managing background operations in a multi-layer memory | |
US8769190B1 (en) | System and method for reducing contentions in solid-state memory access | |
US8873284B2 (en) | Method and system for program scheduling in a multi-layer memory | |
US9348746B2 (en) | Method and system for managing block reclaim operations in a multi-layer memory | |
US9223693B2 (en) | Memory system having an unequal number of memory die on different control channels | |
US8996844B1 (en) | Apparatus and method for accessing non-overlapping portions of memory according to respective orders of dimensions | |
US20160378379A1 (en) | Multi-layer memory system having multiple partitions in a layer | |
US20140185376A1 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US7552292B2 (en) | Method of memory space configuration | |
US20100274960A1 (en) | Memory control method of memory device and memory control system thereof | |
JP2009503729A5 (zh) | ||
CN107025181B (zh) | 存取存储器单元的方法、分配存储器请求的方法、系统及存储器控制器 | |
WO2014105829A2 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
WO2014105705A2 (en) | Flash memory using virtual physical addresses | |
CN114185818B (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
CN111684432B (zh) | 对存储媒体的同步存储器总线存取 | |
CN116795735B (zh) | 固态硬盘空间分配方法、装置、介质及系统 | |
KR20090106221A (ko) | 병렬 구조를 가지는 플래시 메모리 시스템 및 그 데이터기록방법 및 플래시 메모리 | |
US20190034348A1 (en) | Die addressing | |
US20240111672A1 (en) | Data co-location using address hashing for high-performance processing in memory | |
CN115617501A (zh) | 用于利用率感知存储器分配的系统、方法和设备 | |
KR101179275B1 (ko) | 메모리 관리 장치 및 방법 |
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 |