CN112764687B - 一种数据写入方法、系统、ic芯片及电子设备 - Google Patents
一种数据写入方法、系统、ic芯片及电子设备 Download PDFInfo
- Publication number
- CN112764687B CN112764687B CN202110104403.0A CN202110104403A CN112764687B CN 112764687 B CN112764687 B CN 112764687B CN 202110104403 A CN202110104403 A CN 202110104403A CN 112764687 B CN112764687 B CN 112764687B
- Authority
- CN
- China
- Prior art keywords
- matrix
- selection
- value
- write
- vector
- 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
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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据写入方法,所述数据写入方法包括:接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;将所有写请求对应的选择向量合并生成选择矩阵;求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。本申请能够提高存储池的资源分配效率。本申请还公开了一种数据写入系统、一种IC芯片及一种电子设备,具有以上有益效果。
Description
技术领域
本申请涉及数据存储技术领域,特别涉及一种数据写入方法、系统、一种IC芯片及一种电子设备。
背景技术
哈希表是一种常用的数据结构,基于哈希表可以实现根据数据的关键码值对数据进行直接的访问。每个存储位置记录一个数据是一种常见的哈希表形式,然而,也有很多应用场景需要在一个存储位置中记录多个数据,这些数据在软件中往往使用链表的形式进行存放,这种哈希表也称为哈希链表。
硬件通常以RAM基础实现哈希链表的存储,RAM的地址位宽等于哈希值的位宽,每一个数据在RAM中的地址就是该数据关键码值的哈希值,每一个RAM即一张哈希表。为了实现链表的存储,一般需要多个这样的RAM,每个RAM对应链表中的一个位置。该RAM的集合构成一个存储池。哈希链表的存储池一般具有多个写入端口,以提高吞吐率。
相关技术中的存储池让所有的写入端口共享所有RAM,如果有多个写入端口试图访问同一个链表位置,即使这些端口的哈希值并不相同,也会产生竞争。
因此,如何提高存储池的资源分配效率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种数据写入方法、系统、一种IC芯片及一种电子设备,能够提高存储池的资源分配效率。
为解决上述技术问题,本申请提供一种数据写入方法,该数据写入方法包括:
接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;
将所有写请求对应的选择向量合并生成选择矩阵;
求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
可选的,根据所述链表信息和当前候选项数量生成选择向量,包括:
根据所述哈希链表的长度L构建L维的列向量,并在所述列向量中选择所述当前候选项数量个参考值最小的位置作为候选项;其中,所述参考值越小数据的写入时间越早;
将所述列向量中的所述候选项的值设置为1、其余项的值设置为0,得到所述选择向量。
可选的,求解所述选择矩阵得到资源映射关系,包括:
在预设约束条件下求解所述选择矩阵,得到映射矩阵;其中,所述预设约束条件包括所述映射矩阵与所述选择矩阵大小相同、所述映射矩阵的元素含义与所述选择矩阵的元素含义相同,以及所述映射矩阵的每一行和每一列最多有一个元素的值为1;
根据所述映射矩阵确定所述资源映射关系。
可选的,在预设约束条件下求解所述选择矩阵,得到映射矩阵,包括:
判断所述选择矩阵中是否存在第一类元素;其中,所述第一类元素的值为1,且所述第一类元素所在的行和列只含有一个值为1的元素;
若是,则将一个所述第一类元素设置为向量解,并将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行判断所述选择矩阵中是否存在第一类元素的操作;
若否,则从所述选择矩阵中选取第二类元素数量最少的行或列,并将所述第二类元素数量最少的行或列作为备选向量,保留所述备选向量中的一个第二类元素作为向量解并将其余元素的值设置为0;将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行从所述选择矩阵中选取第二类元素数量最少的行或列的操作;
若构建的新的选择矩阵中的元素的值均为0,则根据所有所述向量解和元素的值均为0的新的选择矩阵合成所述映射矩阵。
可选的,求解所述选择矩阵得到资源映射关系,包括:
根据所述映射矩阵中元素的值为1的行和列确定写请求和资源的资源映射关系;其中,所述映射矩阵的列表示写请求,所述映射矩阵的行表示资源。
可选的,还包括:
根据元素的值均为0的新的选择矩阵确定写冲突数量;
根据所述写冲突数量调整候选项数量。
可选的,根据所述写冲突数量调整候选项数量,包括:
利用统计窗口记录预设时间段内的写冲突统计值;
若所述写冲突统计值在预设门限值区间内,则保持所述当前候选项数量不变;
若所述写冲突统计值大于所述预设门限值区间的最大值,则计算所述写冲突统计值与所述预设门限值区间的最大值的第一冲突统计差值,对所述第一冲突统计差值进行基于滤波算法的计算得到第一调整值,并根据所述第一调整值增加所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内;
若所述写冲突统计值小于所述预设门限值区间的最小值,则计算所述写冲突统计值与所述预设门限值区间的最小值的第二冲突统计差值,对所述第二冲突统计差值进行基于滤波算法的计算得到第二调整值,并根据所述第二调整值减小所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内。
本申请还提供了一种数据写入系统,该系统包括:
信息获取模块,用于接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
向量生成模块,用于根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;
矩阵生成模块,用于将所有写请求对应的选择向量合并生成选择矩阵;
矩阵求解模块,用于求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
本申请还提供了一种IC芯片,包括数据逻辑电路,所述数据逻辑电路工作时实现的操作包括:
接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;
将所有写请求对应的选择向量合并生成选择矩阵;
求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
本申请还提供了一种电子设备,包括上述IC芯片。
本申请提供了一种数据写入方法,包括:接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;将所有写请求对应的选择向量合并生成选择矩阵;求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
本申请在接收到多个写入端口输入的写请求后,获取哈希链表中与所述写请求对应的链表信息,链表信息中包括用于标识数据新旧的参考值,进而根据链表信息和当前候选项数量生成选择向量,以便将最旧的当前候选项数量个数据进行替换。根据链表信息和当前候选项数量生成选择向量可以确定新写入数据可以写入的候选位置。通过将所有写请求对应的选择向量合并生成选择矩阵,并求解选择矩阵得到资源映射关系可以得到所有写入请求与资源的对应关系,并按照资源映射关系写入所述写请求对应的数据。本实施例通过求解选择矩阵的方式得到写入请求与资源的对应关系,该过程只需简单的数学运算,可在有限的步骤中解出矩阵中所存在的所有解,易于硬件实现。因此,本申请能够提高存储池的资源分配效率。本申请同时还提供了一种数据写入系统、一种IC芯片和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种数据写入方法的流程图;
图2为本申请实施例所提供的一种多端口哈希链表示意图;
图3为本申请实施例所提供的一种选择矩阵合成流程示意图;
图4为本申请实施例所提供的一种映射矩阵的示意图;
图5为本申请实施例所提供的一种仲裁器工作原理示意图;
图6为本申请实施例所提供的一种选择矩阵的求解过程的示意图;
图7为本申请实施例所提供的一种对写入冲突进行滑窗统计的原理示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种数据写入方法的流程图。
具体步骤可以包括:
S101:接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;
哈希表是一种常用的数据结构,它根据数据的关键码值对数据进行直接的访问。存储数据时,首先将该数据的关键码值建立一个与数据存储位置的资源映射关系,然后将数据存储到该位置中;读取时,首先获取待查询的数据的关键码值,然后按相同的方法计算出存储位置,然后去读该数据。这种由关键码值和存储地址的资源映射关系构建的数据存储结构叫做哈希表,该资源映射关系被称为哈希函数。
请参见图2,图2为本申请实施例所提供的一种多端口哈希链表示意图,图2中WrPort为写端口,Rd Port为读端口,Arbiter为仲裁器,TP RAM为双端随机存取存储器,哈希链表的长度为L。Bank是为了表述方便引入的一个概念,一次写入过程会把相同的数据内容写入一个bank中的所有RAM,也就是说一个bank中的所有RAM的存储内容都是一样的。哈希链表的存储池一般具有多个写入端口,以提高吞吐率。有的存储池的写入端口可以独立的向链表中的任何一个位置写入,这样的存储池往往采用更多的RAM来实现或者需要多周期来完成一次写入过程。而有的存储池则让所有的写入端口共享所有RAM,因此,如果有多个写入端口试图访问同一个链表位置,即使这些端口的哈希值并不相同,也会产生竞争,因为它们将对同一块RAM发起写入操作,这样的存储池由于能大幅度节省RAM资源,降低成本,而被较多采用,因此也是本实施例所主要针对的场景。
如图2所示,该哈希链表有N个写入端口,链表长度为L,读端口数量为M。所有写入端口共享L个写入位置,一般L需要不小于N,否则,每一次写入过程都将有部分端口无法写入。从N个写入端口到L个资源的映射由仲裁器Arbiter完成,本实施例的执行主体为仲裁器Arbiter。在初始状态下,哈希链表为空,所有位置都未存储有效信息。随着不断写入新内容,部分或全部的哈希链表都被填充了有效数据。此时,新数据再写入哈希表时,根据更新策略的不同,采取不同的行为。其中,最常见的一种是替换最旧的元素,这种策略在压缩等算法中往往取得最佳的性能。本实施例的仲裁算法将基于该策略实施。
本实施例可以接收存储池中多个写入端口输入的写请求,并根据写请求的哈希值读取对应的链表信息,该链表信息中包括用于标识数据新旧的参考值。进一步的,该参考值可以为数据的时间戳或数据的排序值。
S102:根据所述链表信息和当前候选项数量生成选择向量;
其中,候选项数量为用于描述写入请求可选用的资源数,候选项数量可以根据存储池内写冲突的数量确定,写冲突数越多候选项数量越多。当前候选项数量指当前时刻的候选项数量。进一步的,本实施例可以为每一写请求设置对应的当前候选项数量,也可以为所有写请求设置相同的当前候选项数量。候选项为哈希链表中可以为写请求分配的资源。
选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息。作为一种可行的实施方式,本实施例可以根据所述哈希链表的长度L构建L维的列向量,并在所述列向量中选择所述当前候选项数量个参考值最小的位置作为候选项;其中,所述参考值越小数据的写入时间越早。将所述列向量中的所述候选项的值设置为1、其余项的值设置为0,得到所述选择向量。举例说明,上述过程根据哈希链表的长度L构建列向量为(N1,N2,N3,……,NL),若当前候选项数量为3,则可以从N1,N2,N3,……,NL中选取写入时间最早的3个位置作为候选项。例如,若L=9,候选项为N2,N4和N6,最终得到的列向量为(0,1,0,1,0,1,0,0,0)。
S103:将所有写请求对应的选择向量合并生成选择矩阵;
其中,在得到各条写请求对应的选择向量的基础上,可以通过合并所有的选择向量得到选择矩阵。具体的,本实施例可以将所有的选择向量按照写请求的对应的端口序号从小到大的顺序排列,得到选择矩阵。请参见图3,图3为本申请实施例所提供的一种选择矩阵合成流程示意图,如图3所示,本实施例可以将每一写请求中同一位置的选择向量作为相同的行得到选择矩阵。
S104:求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
其中,在预设约束条件下求解所述选择矩阵,得到映射矩阵;其中,所述预设约束条件包括所述映射矩阵与所述选择矩阵大小相同、所述映射矩阵的元素含义与所述选择矩阵的元素含义相同,以及所述映射矩阵的每一行和每一列最多有一个元素的值为1;根据所述映射矩阵确定所述资源映射关系。请参见图4,图4为本申请实施例所提供一种映射矩阵的示意图,图4所示的映射矩阵为求解图3所示的选择矩阵后的结果。本实施例可以采用多种方式对选择矩阵求解,只要得到的映射矩阵符合上述预设约束条件即可。
在得到映射矩阵之后,本实施例可以根据所述映射矩阵中元素的值为1的行和列确定写请求和资源的资源映射关系;其中,所述映射矩阵的列表示写请求,所述映射矩阵的行表示资源。如图4所示,写请求1对应哈希链表的位置1,写请求2对应的哈希链表的位置4,写请求3对应哈希链表的位置2,写请求4对应哈希链表的位置3。进一步的,可以将写请求1对应的数据写入位置1指向的地址,将写请求2对应的数据写入位置4指向的地址,将写请求3对应的数据写入位置2指向的地址,将写请求4对应的数据写入位置3指向的地址。
本实施例在接收到多个写入端口输入的写请求后,获取哈希链表中与所述写请求对应的链表信息,链表信息中包括用于标识数据新旧的参考值,进而根据链表信息和当前候选项数量生成选择向量,以便将最旧的当前候选项数量个数据进行替换。根据链表信息和当前候选项数量生成选择向量可以确定新写入数据可以写入的候选位置。通过将所有写请求对应的选择向量合并生成选择矩阵,并求解选择矩阵得到资源映射关系可以得到所有写入请求与资源的对应关系,并按照资源映射关系写入所述写请求对应的数据。本实施例通过求解选择矩阵的方式得到写入请求与资源的对应关系,该过程只需简单的数学运算,可在有限的步骤中解出矩阵中所存在的所有解,易于硬件实现。因此,本实施例能够提高存储池的资源分配效率。
作为对于图1对应实施例的进一步介绍,可以通过以下规则求解选择矩阵,得到符合预设约束条件的映射矩阵:判断所述选择矩阵中是否存在第一类元素;其中,所述第一类元素的值为1,且所述第一类元素所在的行和列只含有一个值为1的元素;若是,则将一个所述第一类元素设置为向量解,并将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行判断所述选择矩阵中是否存在第一类元素的操作;若否,则从所述选择矩阵中选取第二类元素数量最少的行或列,并将所述第二类元素数量最少的行或列作为备选向量,保留所述备选向量中的一个第二类元素作为向量解并将其余元素的值设置为0;将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行从所述选择矩阵中选取第二类元素数量最少的行或列的操作;若构建的新的选择矩阵中的元素的值均为0,则根据所有所述向量解和元素的值均为0的新的选择矩阵合成所述映射矩阵。
进一步的,本实施例还可以根据元素的值均为0的新的选择矩阵确定写冲突数量;根据所述写冲突数量调整候选项数量。具体的,若写冲突数量较高,则可以增加候选项数量;若写冲突数量较低,则可以减少候选项数量;若写冲突数量适中,则可以保持候选项数量不变。
作为一种可行的实施方式,本实施例可以通过以下方式调整候选项数量,包括:
步骤1:利用统计窗口记录预设时间段内的写冲突统计值;
步骤2:确定写冲突统计值与预设门限值区间中的值的大小关系;
情况A:若所述写冲突统计值在预设门限值区间内,则保持所述当前候选项数量不变;
情况B:若所述写冲突统计值大于所述预设门限值区间的最大值,则计算所述写冲突统计值与所述预设门限值区间的最大值的第一冲突统计差值,对所述第一冲突统计差值进行基于滤波算法的计算得到第一调整值,并根据所述第一调整值增加所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内;
情况C:若所述写冲突统计值小于所述预设门限值区间的最小值,则计算所述写冲突统计值与所述预设门限值区间的最小值的第二冲突统计差值,对所述第二冲突统计差值进行基于滤波算法的计算得到第二调整值,并根据所述第二调整值减小所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内。
下面通过在实际应用中的多端口哈希链表动态仲裁方案说明上述实施例描述的流程。本实施例提供了一种基于矩阵的仲裁方案,该仲裁方案简单、运算步数确定,便于硬件实现;本实施例还提供了一种动态调节参数方案,该动态调节参数方案可根据输入数据的特性动态的选择合适的参数,在控制写入冲突的数量的同时尽可能选择性能更高的参数,以实现性能最优化。
请参见图5,图5为本申请实施例所提供的一种仲裁器工作原理示意图。多端口哈希链表仲裁器有2个主要参数,分别是写入端口数N和最大链长度L。写入端口数表示在一个时钟周期内,允许同时进行写入访问的数量,该数量与哈希链表的并行访问相关,越高能带来越大的吞吐率。最大链长度表示该存储电路在同一个存储位置可以存放的最长的链表的长度,也是所有的写入请求共享访问的资源数。仲裁器的作用就是将N个写入请求映射到L个资源中,为每一个写入请求分配一个合适的资源。
仲裁器的算法大致分为生成选择向量、生成选择矩阵、选择矩阵求解和写冲突统计几个部分。生成选择向量的过程包括:根据哈希链表输出的当前链表的信息以及写冲突统计模块对每个写请求生成一个选择向量;选择向量用来标识该写请求可以选择哪些资源作为候选。本实施例可以将所有的写请求的选择向量进行合并生成一个选择矩阵。选择矩阵求解模块按一定的步骤,对上述选择矩阵进行求解,得到的最终解是一个将每个写请求最多映射到一个资源的资源映射关系。如果出现写入冲突,例如两个写请求试图访问同一个写资源,且该资源是这两个请求的唯一候选项,将出现某个写请求无法写入的情况,这种情况称为一次写冲突。写冲突统计模块将统计所有无法写入的写请求的个数,并用一定的算法改变候选项数量。
一般情况下,候选项数量越少,则写请求的写入位置能越被精确的定位到链表中“最旧”元素的位置,因此,能实现最优的更新策略达到最好的性能。但候选位置的减少会带来写入冲突的提升,写入冲突越大,就意味着越多的新数据无法被写入哈希链表,这将引起性能的下降。因此,写冲突统计模块中的算法需要找到一个最佳的候选项数量,使性能达到最优。同时,不同的数据流以及数据流随时间变化,其特性会发生变化,同一个候选值并不能适应所有的数据流以及所有的时间。因此,根据数据流的特性动态调节候选项数量能达到更好的性能。
本实施例中基于矩阵的仲裁方案具体如下:
根据写请求的哈希值,从哈希链表中读取对应的信息,该信息称为链表信息。根据写入最旧位置的原则,链表信息包含标识数据新旧的相对或绝对值,如数据的时间戳(绝对值)或数据的排序值(相对值)。
写冲突统计模块输出当前候选项数量到每个选择向量生成模块。选择向量生成模块根据该数量以及链表信息,选择相应的位置作为可被写入的候选位置。例如,如果当前候选项数量为4,则选择向量生成模块选择值最小的4个(假定基于数据时间戳)位置,或选择排序值小于4(假定基于数据排序值)的位置。对于每一个写请求,构建一个L维的列向量,L即哈希链表的链长度。将该写请求按上述步骤选择的候选项位置填入1,其余位置填入0。
将所有的选择向量按写请求的顺序排列,形成选择矩阵。如图3所示,选择矩阵中的每个1表示横坐标所对应的写请求尝试写入纵坐标对应的资源。
解出上述选择矩阵,得到满足如下条件的解:
条件1:解是一个与选择矩阵大小相同的矩阵,其元素的含义与选择矩阵相同;
条件2:解的每一行和每一列至多有1个1。
按如下规则可求得选择矩阵满足上述要求的解:遍历矩阵每一行和每一列,选出只含有一个1的行或列。如果有多个行或列都满足该条件,则按一定顺序选择其中一个。该顺序可以是行优先或者列优先,可以按行/列标号从大到小或从小到大。选出该向量后,这个唯一的1就是一个解。如果每一行和每一列的1的个数都大于1或等于0,则选出每一行或每一列1的个数最小的那个向量,如果有多个这样的向量,则按步骤1的规则选出其中一个。选出一个包含多个1的向量后,按一定的顺序,例如标号从小到大或者其他的顺序,选出其中一个1作为解。当得到一个解后,将这个解所在的行和列的其他的1都清0,并且,这些位置不进行下一次的运算。将其他位置的元素组成一个(N-1)*(L-1)大小的矩阵,然后重复上述步骤,直到所有的解都获得或者所有的剩余的元素都为0。请参见图6,图6为本申请实施例所提供的一种选择矩阵的求解过程的示意图。图6中圆圈标记的“1”为解,直线划去的部分是需要清零以及在下次运算前需要剔除的部分。本实施例提出了一种基于解矩阵的仲裁算法,该算法只需简单的数学运算,可在有限的步骤中解出矩阵中所存在的所有解,易于硬件实现。
本实施例中基于矩阵的仲裁方案具体如下:
当解出选择矩阵中所有包含1的行和列后,将剩下N1*L1大小的全0矩阵,其中N1≥0,L1≥0。这意味着此次写入过程,有N1个写请求无法被写入存储电路。这些无法被写入的请求的数量,称为写冲突数量。当发生写入冲突时,当前信息无法被记录至存储电路而引起信息的丢失,必然对使用该信息的算法的性能造成影响,因此应该尽量减少写冲突数量。
作为一种可行的实施方式,本实施例可以通过增加候选项数量减少写入冲突。例如,一种极端情况是,令候选项数量等于链表长度,即对于每个写请求,链表中的所有位置都可以被选择。此时,将得到一个全1的选择矩阵。该矩阵存在至少一组解,使每个写入请求都能写入对应的存储电路,因此不存在写入冲突。但是,由于每个写入请求都候选所有的链表位置,意味着这些请求最后的解的位置都近乎随机,而不是尽可能写入数据较旧的位置。因此,较新的数据很可能被替换,而这往往会引起使用哈希链表的算法性能的下降。由于将写入冲突控制在一个合理值而不一定是0,当继续降低写入冲突所带来的性能提升不足以抵消由于过于宽泛选择写入位置引起的性能下降时,总体性能将会下降,因此不应该继续控制写入冲突,而应该在此基础上减少候选项数量。
由于使用哈希表数据的算法和输入数据的特性不同,候选项数量并不存在一个最优的常数。因此,本实施例提出了一种基于写入冲突统计的动态调节候选项数量的方法,使得对任意算法和任意输入数据特性,通过将写入冲突控制在一定数量的前提下尽量减少候选项数量,使算法逼近最优性能。
具体的实施方法如下,首先,对于每一次的写入统计写入冲突数,由于单次写入冲突数值波动往往较大,因此需要对该数值进行一个滤波处理,简单的一种方式是进行滑窗统计,请参见图7,图7为本申请实施例所提供的一种对写入冲突进行滑窗统计的原理示意图。如图7所示,本实施例可以设置一个统计窗口的大小,将位于窗口内的所有写入冲突数相加作为总数输出,然后在接收到下一次写入请求后将窗口向前移动一个位置,进行一次新的统计。
写入冲突总数理论上越小越好,但如前文讨论的结果,当试图将写入冲突数控制在0时,会使得候选项数量增加,从而引起性能下降,而当写入冲突小于一定数值后,再减少该值所引起的性能提升并不能抵消候选项数量增加引起的性能下降。因此,本实施例提出设置一个门限值,当写入冲突总数高于门限值时,取差值作为误差值输出,当小于等于门限值时,取0作为误差值输出。门限值可以根据不同的算法经过计算和实验得到。
对上述误差值进行滤波算法得到候选项的增、减量输出。有多种滤波算法可以适用,一种较通用的算法是PID算法,即首先对误差值分别进行比例运算、积分运算和微分运算,并分别设置比例增益P、积分常数Ti和微分常数Td作为参数,根据PID的运算结果对候选项数量进行调节,最终使得将写入冲突总数控制在门限以下的同时,动态得获得最小得候选项数量,从而达到较高的算法性能。实际使用中,PID的参数需要根据算法特性的不同进行统计计算,从而获得最优的一组参数,这些方法有很多本文不进行赘述。其他常用滤波方式如FIR、IIR等,也可以作为实现本实施例可实现的方法。本实施例对候选项数量进行动态调节,使得在将写入冲突控制在一个合理值之下后,可以取得尽可能小的候选项数量,从而达到最优性能。
通过上述方案能够动态调节候选项数量,且将写入冲突总数控制在一定范围后,尽量降低候选项数量才能达到最优的性能,而不是直接将写入冲突数控制在0,可以综合提高数据写入性能。上述实施例提出了一种在运行中动态调节仲裁算法参数的方法,使得对于任何算法特性和任何输入数据特性,仲裁算法参数可以自动调节达到最优性能。
本申请实施例还提供一种数据写入系统,该系统可以包括:
信息获取模块,用于接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
向量生成模块,用于根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;
矩阵生成模块,用于将所有写请求对应的选择向量合并生成选择矩阵;
矩阵求解模块,用于求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
本实施例在接收到多个写入端口输入的写请求后,获取哈希链表中与所述写请求对应的链表信息,链表信息中包括用于标识数据新旧的参考值,进而根据链表信息和当前候选项数量生成选择向量,以便将最旧的当前候选项数量个数据进行替换。根据链表信息和当前候选项数量生成选择向量可以确定新写入数据可以写入的候选位置。通过将所有写请求对应的选择向量合并生成选择矩阵,并求解选择矩阵得到资源映射关系可以得到所有写入请求与资源的对应关系,并按照资源映射关系写入所述写请求对应的数据。本实施例通过求解选择矩阵的方式得到写入请求与资源的对应关系,该过程只需简单的数学运算,可在有限的步骤中解出矩阵中所存在的所有解,易于硬件实现。因此,本实施例能够提高存储池的资源分配效率。
进一步的,向量生成模块用于根据所述哈希链表的长度L构建L维的列向量,并在所述列向量中选择所述当前候选项数量个参考值最小的位置作为候选项;其中,所述参考值越小数据的写入时间越早;还用于将所述列向量中的所述候选项的值设置为1、其余项的值设置为0,得到所述选择向量。
进一步的,矩阵求解模块包括:
映射确定单元,用于在预设约束条件下求解所述选择矩阵,得到映射矩阵;其中,所述预设约束条件包括所述映射矩阵与所述选择矩阵大小相同、所述映射矩阵的元素含义与所述选择矩阵的元素含义相同,以及所述映射矩阵的每一行和每一列最多有一个元素的值为1;还用于根据所述映射矩阵确定所述资源映射关系;
数据写入单元,用于按照所述资源映射关系写入所述写请求对应的数据。
进一步的,映射确定单元用于判断所述选择矩阵中是否存在第一类元素;其中,所述第一类元素的值为1,且所述第一类元素所在的行和列只含有一个值为1的元素;若是,则将一个所述第一类元素设置为向量解,并将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行判断所述选择矩阵中是否存在第一类元素的操作;若否,则从所述选择矩阵中选取第二类元素数量最少的行或列,并将所述第二类元素数量最少的行或列作为备选向量,保留所述备选向量中的一个第二类元素作为向量解并将其余元素的值设置为0;将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行从所述选择矩阵中选取第二类元素数量最少的行或列的操作;还用于若构建的新的选择矩阵中的元素的值均为0,则根据所有所述向量解和元素的值均为0的新的选择矩阵合成所述映射矩阵。
进一步的,映射确定单元,用于根据所述映射矩阵中元素的值为1的行和列确定写请求和资源的资源映射关系;其中,所述映射矩阵的列表示写请求,所述映射矩阵的行表示资源。
进一步的,还包括:
写冲突统计模块,用于根据元素的值均为0的新的选择矩阵确定写冲突数量;
候选项数量调整模块,用于根据所述写冲突数量调整候选项数量。
进一步的,候选项数量调整模块,用于利用统计窗口记录预设时间段内的写冲突统计值;还用于若所述写冲突统计值在预设门限值区间内,则保持所述当前候选项数量不变;还用于若所述写冲突统计值大于所述预设门限值区间的最大值,则计算所述写冲突统计值与所述预设门限值区间的最大值的第一冲突统计差值,对所述第一冲突统计差值进行基于滤波算法的计算得到第一调整值,并根据所述第一调整值增加所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内;还用于若所述写冲突统计值小于所述预设门限值区间的最小值,则计算所述写冲突统计值与所述预设门限值区间的最小值的第二冲突统计差值,对所述第二冲突统计差值进行基于滤波算法的计算得到第二调整值,并根据所述第二调整值减小所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种IC芯片,包括数据逻辑电路,所述数据逻辑电路工作时实现的操作包括:
接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;
将所有写请求对应的选择向量合并生成选择矩阵;
求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据。
本申请还提供了一种电子设备,包括上述IC芯片。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (8)
1.一种数据写入方法,其特征在于,包括:
接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;当前候选项数量指当前时刻的候选项数量,所述候选项数量为用于描述写请求可选用的资源数;
将所有写请求对应的选择向量合并生成选择矩阵;
求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据;
其中,根据所述链表信息和当前候选项数量生成选择向量,包括:
根据所述哈希链表的长度L构建L维的列向量,并在所述列向量中选择所述当前候选项数量个参考值最小的位置作为候选项;其中,所述参考值越小数据的写入时间越早;
将所述列向量中的所述候选项的值设置为1、其余项的值设置为0,得到所述选择向量;
其中,求解所述选择矩阵得到资源映射关系,包括:
在预设约束条件下求解所述选择矩阵,得到映射矩阵;其中,所述预设约束条件包括所述映射矩阵与所述选择矩阵大小相同、所述映射矩阵的元素含义与所述选择矩阵的元素含义相同,以及所述映射矩阵的每一行和每一列最多有一个元素的值为1;
根据所述映射矩阵确定所述资源映射关系。
2.根据权利要求1所述数据写入方法,其特征在于,在预设约束条件下求解所述选择矩阵,得到映射矩阵,包括:
判断所述选择矩阵中是否存在第一类元素;其中,所述第一类元素的值为1,且所述第一类元素所在的行和列只含有一个值为1的元素;
若是,则将一个所述第一类元素设置为向量解,并将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行判断所述选择矩阵中是否存在第一类元素的操作;
若否,则从所述选择矩阵中选取第二类元素数量最少的行或列,并将所述第二类元素数量最少的行或列作为备选向量,保留所述备选向量中的一个第二类元素作为向量解并将其余元素的值设置为0;将除了所述向量解所在行和列之外的其他元素构建新的选择矩阵,并执行从所述选择矩阵中选取第二类元素数量最少的行或列的操作;
若构建的新的选择矩阵中的元素的值均为0,则根据所有所述向量解和元素的值均为0的新的选择矩阵合成所述映射矩阵。
3.根据权利要求2所述数据写入方法,其特征在于,求解所述选择矩阵得到资源映射关系,包括:
根据所述映射矩阵中元素的值为1的行和列确定写请求和资源的资源映射关系;其中,所述映射矩阵的列表示写请求,所述映射矩阵的行表示资源。
4.根据权利要求2所述数据写入方法,其特征在于,还包括:
根据元素的值均为0的新的选择矩阵确定写冲突数量;
根据所述写冲突数量调整候选项数量。
5.根据权利要求4所述数据写入方法,其特征在于,根据所述写冲突数量调整候选项数量,包括:
利用统计窗口记录预设时间段内的写冲突统计值;
若所述写冲突统计值在预设门限值区间内,则保持所述当前候选项数量不变;
若所述写冲突统计值大于所述预设门限值区间的最大值,则计算所述写冲突统计值与所述预设门限值区间的最大值的第一冲突统计差值,对所述第一冲突统计差值进行基于滤波算法的计算得到第一调整值,并根据所述第一调整值增加所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内;
若所述写冲突统计值小于所述预设门限值区间的最小值,则计算所述写冲突统计值与所述预设门限值区间的最小值的第二冲突统计差值,对所述第二冲突统计差值进行基于滤波算法的计算得到第二调整值,并根据所述第二调整值减小所述当前候选项数,以使新的写冲突统计值在所述预设门限值区间内。
6.一种数据写入系统,其特征在于,包括:
信息获取模块,用于接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
向量生成模块,用于根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;当前候选项数量指当前时刻的候选项数量,所述候选项数量为用于描述写请求可选用的资源数;
矩阵生成模块,用于将所有写请求对应的选择向量合并生成选择矩阵;
矩阵求解模块,用于求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据;
进一步的,所述向量生成模块用于根据所述哈希链表的长度L构建L维的列向量,并在所述列向量中选择所述当前候选项数量个参考值最小的位置作为候选项;其中,所述参考值越小数据的写入时间越早;还用于将所述列向量中的所述候选项的值设置为1、其余项的值设置为0,得到所述选择向量;
进一步的,矩阵求解模块包括:
映射确定单元,用于在预设约束条件下求解所述选择矩阵,得到映射矩阵;其中,所述预设约束条件包括所述映射矩阵与所述选择矩阵大小相同、所述映射矩阵的元素含义与所述选择矩阵的元素含义相同,以及所述映射矩阵的每一行和每一列最多有一个元素的值为1;还用于根据所述映射矩阵确定所述资源映射关系;
数据写入单元,用于按照所述资源映射关系写入所述写请求对应的数据。
7.一种IC芯片,其特征在于,包括数据逻辑电路,所述数据逻辑电路工作时实现的操作包括:
接收存储池中多个写入端口输入的写请求,并获取哈希链表中与所述写请求对应的链表信息;其中,所述链表信息包括用于标识数据新旧的参考值;
根据所述链表信息和当前候选项数量生成选择向量;其中,所述选择向量用于标识所述哈希链表中与所述写请求对应的候选项的资源位置信息;当前候选项数量指当前时刻的候选项数量,所述候选项数量为用于描述写请求可选用的资源数;
将所有写请求对应的选择向量合并生成选择矩阵;
求解所述选择矩阵得到资源映射关系,并按照所述资源映射关系写入所述写请求对应的数据;
其中,根据所述链表信息和当前候选项数量生成选择向量,包括:
根据所述哈希链表的长度L构建L维的列向量,并在所述列向量中选择所述当前候选项数量个参考值最小的位置作为候选项;其中,所述参考值越小数据的写入时间越早;
将所述列向量中的所述候选项的值设置为1、其余项的值设置为0,得到所述选择向量;
其中,求解所述选择矩阵得到资源映射关系,包括:
在预设约束条件下求解所述选择矩阵,得到映射矩阵;其中,所述预设约束条件包括所述映射矩阵与所述选择矩阵大小相同、所述映射矩阵的元素含义与所述选择矩阵的元素含义相同,以及所述映射矩阵的每一行和每一列最多有一个元素的值为1;
根据所述映射矩阵确定所述资源映射关系。
8.一种电子设备,其特征在于,包括如权利要求7所述的IC芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110104403.0A CN112764687B (zh) | 2021-01-26 | 2021-01-26 | 一种数据写入方法、系统、ic芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110104403.0A CN112764687B (zh) | 2021-01-26 | 2021-01-26 | 一种数据写入方法、系统、ic芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764687A CN112764687A (zh) | 2021-05-07 |
CN112764687B true CN112764687B (zh) | 2023-02-28 |
Family
ID=75705792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110104403.0A Active CN112764687B (zh) | 2021-01-26 | 2021-01-26 | 一种数据写入方法、系统、ic芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764687B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101836409B (zh) * | 2007-12-28 | 2012-08-08 | 中兴通讯股份有限公司 | 资源块映射方法及装置 |
CN101655821B (zh) * | 2009-08-04 | 2011-12-28 | 中兴通讯股份有限公司 | 一种解决地址空间映射哈希地址冲突的方法及装置 |
CN102722554B (zh) * | 2012-05-28 | 2014-07-02 | 中国人民解放军信息工程大学 | 位置敏感哈希随机性减弱方法 |
CN102946382A (zh) * | 2012-10-23 | 2013-02-27 | 上海交通大学 | 基于映射非传递性的多域间rbac策略冲突解决方法 |
US8923089B2 (en) * | 2012-12-21 | 2014-12-30 | Lsi Corporation | Single-port read multiple-port write storage device using single-port memory cells |
US9384145B2 (en) * | 2013-08-26 | 2016-07-05 | Oracle International Corporation | Systems and methods for implementing dynamically configurable perfect hash tables |
EP3195117B1 (en) * | 2014-09-19 | 2020-12-02 | Amazon Technologies Inc. | Automated configuration of log-coordinated storage groups |
-
2021
- 2021-01-26 CN CN202110104403.0A patent/CN112764687B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112764687A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120159057A1 (en) | Memory power tokens | |
US20150046642A1 (en) | Memory command scheduler and memory command scheduling method | |
CN100578469C (zh) | 存储、查询方法及存储控制器和查询系统 | |
CN103019948A (zh) | 使用连续排序的交换文件的工作集合交换 | |
US8171222B2 (en) | Memory access system, memory control apparatus, memory control method and program | |
CN105320608A (zh) | 用于控制存储器设备处理访问请求的存储器控制器和方法 | |
CN104978321A (zh) | 构造数据队列的方法、装置及从其插入和消费对象的方法 | |
US11928580B2 (en) | Interleaving memory requests to accelerate memory accesses | |
CN108139872A (zh) | 一种缓存管理方法、缓存控制器以及计算机系统 | |
WO2022127874A1 (zh) | 基于随机地址的多端口共享内存管理系统及方法 | |
CN107247675A (zh) | 一种基于分类预测的缓存选择方法和系统 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN116724287A (zh) | 一种内存控制方法及内存控制装置 | |
CN112764687B (zh) | 一种数据写入方法、系统、ic芯片及电子设备 | |
CN111045959B (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN116340205B (zh) | 访问请求处理方法以及缓存装置 | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
US20160232125A1 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
CN114819124A (zh) | 一种深度神经网络推断处理器的访存性能提升方法 | |
US20220374154A1 (en) | Methods and apparatus for issuing memory access commands | |
US6643718B1 (en) | Method and apparatus for controlling order dependency of items in a multiple FIFO queue structure | |
CN112068948B (zh) | 数据散列方法、可读存储介质和电子设备 | |
JP3698902B2 (ja) | メモリアクセス装置及びそのアクセス方法 | |
KR20160131191A (ko) | 반도체 장치 및 그 동작 방법 | |
WO2024001414A1 (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 |