一种多数据对多端口的仲裁方法及相关装置
技术领域
本申请涉及端口分配技术领域,特别涉及一种多数据对多端口的仲裁方法;还涉及一种多数据对多端口仲裁装置、设备以及计算机可读存储介质。
背景技术
硬件电路设计实现中,通常会出现多个数据向多个端口申请访问的情况,此时需要仲裁算法,按照多个数据不同的访问需求,实现对数据进行仲裁有效分配。成功仲裁需要避免“饿死”问题,即保证每一个数据按照需求分配到不同的端口,不会出现有数据无法获得端口的情况。例如在海量数据的存储压缩及恢复的应用场景中,在完成特征提取后,会产生多个数据,每个数据有基于哈希数据得到的多个存储位置可以进行选择存储,此时在硬件实现中,涉及对多个数据面向多个端口的仲裁实现问题。传统存储加密压缩主要基于CPU的通用服务器,其运算速度受限于CPU架构,计算资源受限于系统调度,无法实现高速并行计算,因此在高速大量数据的需求背景下,具有很强的专用集成电路的实现需求。
具体应用场景可以解释为:在实际的工作情况中,已知多数据对多端口的仲裁问题,每个数据虽然可以至少分往一个端口,但是每个端口最多可以接受一个数据,当N个数据分往M个端口,需满足;1、M大于或等于N。2、有相同端口需求的n个数据,所能满足其需求的端口数量m大于或等于n。由此,每个数据都在不同的端口且符合该数据所申请的端口需求的情况下,可以有至少一个有效的仲裁方式。如果按照每个数据对端口访问的申请需求,随机进行分配,很容易出现端口冲突问题,即多个数据同时申请且只能申请同一个端口,出现无法成功分配N个数据到N个不同端口的问题。
目前,常见的软件解决方案有两种方式,第一种是罗列出所有的可能仲裁方式,排除掉可能导致“饿死”的情况,留下合适的仲裁解决方案。第二种是正向仲裁后,每当发现无法解决的“饿死”情况时,反向回溯前一步,直到正向找到正确的仲裁方式。
对于第一种方案,在硬件实现上,需要预留最差情况下的数据暂存单元,面积损耗巨大。对于第二种方案,需要不断回溯并判断,在最差情况下,需要进行遍历每种所有可能的选择,硬件实现的速度太慢,需要设置的时钟周期取决于最差情况,导致电路工作速度很低。
有鉴于此,如何提高仲裁速度已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种多数据对多端口的仲裁方法,能够有效提高仲裁速度。本申请的另一个目的是提供一种多数据对多端口的仲裁装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种多数据对多端口的仲裁方法,包括:
构建数据与端口的关系矩阵;所述关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;
根据数据与端口的排列组合的个数确定乘法器的个数;
以数据与端口的关系矩阵的元素作为所述乘法器的输入值输入所述乘法器;同一乘法器输入所述关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;
选择一个输出值为1的乘法器,并以输出值为1的所述乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
可选的,所述根据数据与端口的排列组合的个数确定乘法器的个数包括:
当数据的个数大于端口的个数时,所述乘法器的个数等于
当数据的个数小于或等于端口的个数时,所述乘法器的个数等于
其中,A表示排列组合运算,m表示端口的个数,n表示数据的个数。
可选的,所述选择一个输出为1的乘法器,包括:
当输出为1的乘法器的个数为一个时,选择唯一输出为1的所述乘法器;
当输出为1的乘法器的个数为两个或两个以上时,采用轮询的方式,选择首个轮询到的输出为1的所述乘法器。
可选的,所述选择一个输出为1的乘法器,包括:
当输出为1的乘法器的个数为一个时,选择唯一输出为1的所述乘法器;
当输出为1的乘法器的个数为两个或两个以上时,通过选择器选通其中一个输出为1的所述乘法器。
为解决上述技术问题,本申请还提供了一种多数据对多端口的仲裁装置,包括:
构建模块,用于构建数据与端口的关系矩阵;所述关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;
确定模块,用于根据数据与端口的排列组合的个数确定乘法器的个数;
输入模块,用于以数据与端口的关系矩阵的元素作为所述乘法器的输入值输入所述乘法器;同一乘法器输入所述关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;
选择模块,用于选择一个输出值为1的乘法器,并以输出值为1的所述乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
可选的,所述确定模块具体用于当数据的个数大于端口的个数时,所述乘法器的个数等于An m;当数据的个数小于或等于端口的个数时,所述乘法器的个数等于Anm;其中,A表示排列组合运算,m表示端口的个数,n表示数据的个数。
可选的,所述选择模块具体用于当输出为1的乘法器的个数为一个时,选择唯一输出为1的所述乘法器;当输出为1的乘法器的个数为两个或两个以上时,采用轮询的方式,选择首个轮询到的输出为1的所述乘法器。
可选的,所述选择模块具体用于当输出为1的乘法器的个数为一个时,选择唯一输出为1的所述乘法器;当输出为1的乘法器的个数为两个或两个以上时,通过选择器选通其中一个输出为1的所述乘法器。
为解决上述技术问题,本申请还提供了一种多数据对多端口的仲裁设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的多数据对多端口的仲裁方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的多数据对多端口的仲裁方法的步骤。
本申请所提供的多数据对多端口的仲裁方法,包括:构建数据与端口的关系矩阵;所述关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;根据数据与端口的排列组合的个数确定乘法器的个数;以数据与端口的关系矩阵的元素作为所述乘法器的输入值输入所述乘法器;同一乘法器输入所述关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;选择一个输出值为1的乘法器,并以输出值为1的所述乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
可见,本申请所提供的多数据对多端口的仲裁方法,在构建数据与端口的关系矩阵的基础上,以数据与端口的关系矩阵中的元素作为乘法器的输入,乘法器的输入反映数据与端口的排列组合情况,数据与端口的排列组合情况在电路设计前即可确定,仲裁时,各乘法器可并行工作,各乘法器基于其输入而输出0或1,进而从中选择输出为1对应的一个排列组合方式即可得到仲裁结果,达到快速仲裁的目的,能够极大的提高仲裁速度。
本申请所提供的多数据对多端口的仲裁装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种多数据对多端口的仲裁方法的流程示意图;
图2为本申请实施例所提供的一种数据与端口的关系矩阵的示意图;
图3为本申请实施例所提供的一种二叉树的示意图;
图4为本申请实施例所提供的一种关系矩阵中元素与乘法器的输入关系的示意图;
图5为本申请实施例所提供的一种仲裁结果的示意图。
具体实施方式
本申请的核心是提供一种多数据对多端口的仲裁方法,能够有效提高仲裁速度。本申请的另一个核心是提供一种多数据对多端口的仲裁装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种多数据对多端口的仲裁方法的示意图,参考图1所示,该方法包括:
S101:构建数据与端口的关系矩阵;关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;
具体的,构建数据与端口的关系矩阵;其中,可以以数据的个数为行数,端口的个数为列数构建数据与端口的关系矩阵;也可以以数据的个数为列数,端口的个数为行数构建数据与端口的关系矩阵。当以数据的个数为行数、端口的个数为列数构建数据与端口的关系矩阵时,关系矩阵中位于同一行的各个元素为同一数据对各个端口的请求情况对应的值;当以端口的个数为行数、数据的个数为列数构建数据与端口的关系矩阵时,关系矩阵中位于同一列的各个元素为同一数据对各个端口的请求情况对应的值。
所谓数据对端口的请求情况是指数据是否对端口有请求。若数据对端口有请求,则该请求情况对应的值为1,相反,若数据对端口无请求,则该请求情况对应的值为0。
例如,参考如2所示,以数据的个数为5个,端口的个数为6个为例,构建得到以数据的个数为行数,端口的个数为列数的数据与端口的关系矩阵。图中1~5表示数据,A~F表示端口。关系矩阵中位于同一行的各个元素分别表示数据对各个端口的请求情况。如关系矩阵的第一行中的第一个元素为1,表示数据1对端口A有请求,数据1与端口A有相互配对的可能性;第一行中的第二个元素为0,表示数据1对端口B无请求数据1与端口B没有相互配对的可能性;依次类推,第一行中的第六个元素为1,表示数据1对端口F有请求,数据1与端口F没有相互配对的可能性。同理,第五行中的第一个元素为0,表示数据5对端口A无请求,数据5与端口没有相互配对的可能性;第五行中的第六个元素为1,表示数据5对端口F有请求,数据5与端口F有相互配对的可能性。
也就是说,数据1可能被分配到端口A与端口F中的一个,数据2可能被分配到端口B、端口C以及端口D中的一个,数据3可能被分配到端口C、端口D以及端口F中的一个,数据4可能被分配到端口B、端口C以及端口E中的一个,数据5可能被分配到端口B、端口C以及端口F中的一个。
S102:根据数据与端口的排列组合的个数确定乘法器的个数;
具体的,乘法器的个数等于数据与端口的排列组合的个数。当数据的个数大于端口的个数时,乘法器的个数等于
当数据的个数小于或等于端口的个数时,乘法器的个数等于
其中,A表示排列组合运算,m表示端口的个数,n表示数据的个数。
具体而言,以数据与端口二者中数量较少的一方作为待分配元素,采用二叉树的方式罗列待分配元素被分配的可能情况。以图2所示关系矩阵为例,由于数据的个数少于端口的个数,因此以数据作为待分配元素,采用二叉树的方式罗列得到5个数据被不重复的分配到6个端口的所有可能的情况。
参考图3所示,图中二叉树中,A1表示的是端口A与待分配元素的数据1进行了配对,B1表示的是端口B与待分配元素的数据1进行了配对,依次类推,F1表示的是端口F与待分配元素的数据1进行了配对。第二层为基于第一层进行所有可被分配的配对,A1-B2的组合表示当第一层端口A和数据1发生配对后,第二层端口B和数据2发生配对。同理,在端口A与数据1进行了配对后还可能发生的情况有A1-C2,即当第一层端口A和数据1发生配对后,第二层端口C和数据2发生配对;A1-D2,即当第一层端口A和数据1发生配对后,第二层端口D和数据2发生配对;A1-E2,即当第一层端口A和数据1发生配对后,第二层端口E和数据2发生配对;A1-F2,即当第一层端口A和数据1发生配对后,第二层端口F和数据2发生配对。
完成A1为第一层,其后的第二层排列后,依次实现B1为第一层,C1为第一层直至F1为第一层后的所有排列对应的第二层组合。并依次类推,直至完成所有二叉树的排列组合。以图2所示关系矩阵为例,完成所有二叉树的排列组合可以得到:A1-B2-C3-D4-E5、F1-B2-C3-D4-A5等等类似的组合。
组合的总个数等于乘法器的个数等于
A表示排列组合运算,m表示端口的个数,n表示数据的个数。
S103:以数据与端口的关系矩阵的元素作为乘法器的输入值输入乘法器;同一乘法器输入关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;
S103:选择一个输出值为1的乘法器,并以输出值为1的乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
具体的,在确定了乘法器的个数的基础上,以数据与端口的关系矩阵的元素作为乘法器的输入值输入乘法器;其中,同一乘法器输入关系矩阵的每行或者每列中的一个元素。当数据的个数小于或等于端口的个数,且以数据为行时,则同一乘法器输入的是关系矩阵的每行中的一个元素,当数据的个数小于或等于端口的个数,且以数据为列时,则同一乘法器输入的是关系矩阵的每列中的一个元素。可以明白的是,当一个乘法器输入的是关系矩阵中每行中的一个元素时,其他的乘法器也输入关系矩阵的每行中的一个元素。当一个乘法器输入的是关系矩阵中每列中的一个元素时,其他的乘法器也输入关系矩阵的每列中的一个元素。但是不同乘法器输入的元素不完全相同,即至少有一个元素不同。
矩阵中的0或1经过乘法器进行运算,只有当输入乘法器的元素均为1时,乘法器的输出才会为1。因此,选择一个输出值为1的乘法器,并以输出值为1的乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
例如,参考图4所示,关系矩阵中第一行第六列的元素1、第二行第二列的元素1、第三行第三列的元素0、第四行第四列的元素0以及第五行第一列的元素0输入同一个乘法器,此时该乘法器输出为零。
关系矩阵中第一行第一列的元素1、第二行第二列的元素1、第三行第三列的元素1、第四行第五列的元素1以及第五行第六列的元素1输入同一乘法器,该乘法器输出为1,此时,可以选择该乘法器的输入值对应的数据与端口的分配情况A1-B2-C3-E4-F5为仲裁结果,即如图5所示,以数据1分配到端口A、数据2分配到端口B、数据3分配到端口C、数据4分配到端口E、数据5分配到端口F为仲裁结果。
在实际应用场景下,输出为1的乘法器的个数可能为一个,也可能为两个或两个以上,因此,当输出为1的乘法器的个数为一个时,选择唯一输出为1的乘法器;当输出为1的乘法器的个数为两个或两个以上时,可以采用轮询的方式,选择首个轮询到的输出为1的所述乘法器。例如,输出为1的乘法器的个数为3个,首先轮询到第2个乘法器输出为1,故此时选择轮询到的此第2个乘法器,并以该乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。或者,也可以通过选择器选通其中一个输出为1的乘法器,以所选通的输出为1的乘法器输入值对应的数据与端口的分配情况作为冲裁结果。当然,还可以采取其他的选择方式,具体可根据实际应用需要进行相应的设置。
综上所述,本申请所提供的多数据对多端口的仲裁方法,在构建数据与端口的关系矩阵的基础上,以数据与端口的关系矩阵中的元素作为乘法器的输入,乘法器的输入反映数据与端口的排列组合情况,数据与端口的排列组合情况在电路设计前即可确定,仲裁时,各乘法器可并行工作,各乘法器基于其输入而输出0或1,进而从中选择输出为1对应的一个排列组合方式即可得到仲裁结果,达到快速仲裁的目的,能够极大的提高仲裁速度。
本申请还提供了一种多数据对多端口的仲裁装置,下文描述的该装置可以与上文描述的方法相互对应参照。该装置包括:
构建模块,用于构建数据与端口的关系矩阵;所述关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;
确定模块,用于根据数据与端口的排列组合的个数确定乘法器的个数;
输入模块,用于以数据与端口的关系矩阵的元素作为所述乘法器的输入值输入所述乘法器;同一乘法器输入所述关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;
选择模块,用于选择一个输出值为1的乘法器,并以输出值为1的所述乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
在上述实施例的基础上,可选的,所述确定模块具体用于当数据的个数大于端口的个数时,所述乘法器的个数等于
当数据的个数小于或等于端口的个数时,所述乘法器的个数等于
其中,A表示排列组合运算,m表示端口的个数,n表示数据的个数。
在上述实施例的基础上,可选的,所述选择模块具体用于当输出为1的乘法器的个数为一个时,选择唯一输出为1的所述乘法器;当输出为1的乘法器的个数为两个或两个以上时,采用轮询的方式,选择首个轮询到的输出为1的所述乘法器。
在上述实施例的基础上,可选的,所述选择模块具体用于当输出为1的乘法器的个数为一个时,选择唯一输出为1的所述乘法器;当输出为1的乘法器的个数为两个或两个以上时,通过选择器选通其中一个输出为1的所述乘法器。
本申请还提供了一种多数据对多端口的仲裁设备,该设备包括存储器和处理器。
存储器,用于存储计算机程序;
处理器,用于执行计算机程序实现如下的步骤:
构建数据与端口的关系矩阵;所述关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;根据数据与端口的排列组合的个数确定乘法器的个数;以数据与端口的关系矩阵的元素作为所述乘法器的输入值输入所述乘法器;同一乘法器输入所述关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;选择一个输出值为1的乘法器,并以输出值为1的所述乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
构建数据与端口的关系矩阵;所述关系矩阵中位于同一行或者位于同一列的各个元素为同一数据对各个端口的请求情况对应的值;若数据对端口有请求,则对应的值为1;若数据对端口无请求,则对应的值为0;根据数据与端口的排列组合的个数确定乘法器的个数;以数据与端口的关系矩阵的元素作为所述乘法器的输入值输入所述乘法器;同一乘法器输入所述关系矩阵的每行或者每列中的一个元素,不同乘法器输入的元素不完全相同;选择一个输出值为1的乘法器,并以输出值为1的所述乘法器的输入值对应的数据与端口的分配情况作为冲裁结果。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的多数据对多端口的仲裁方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。