CN117372236A - 共享内存的访问方法、装置、计算机设备 - Google Patents
共享内存的访问方法、装置、计算机设备 Download PDFInfo
- Publication number
- CN117372236A CN117372236A CN202210789015.5A CN202210789015A CN117372236A CN 117372236 A CN117372236 A CN 117372236A CN 202210789015 A CN202210789015 A CN 202210789015A CN 117372236 A CN117372236 A CN 117372236A
- Authority
- CN
- China
- Prior art keywords
- channel
- work item
- detected
- storage
- shared memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000010354 integration Effects 0.000 claims abstract description 135
- 238000012545 processing Methods 0.000 claims abstract description 130
- 238000001514 detection method Methods 0.000 claims abstract description 55
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 4
- RKWPMPQERYDCTB-UHFFFAOYSA-N ethyl n-[4-[benzyl(2-phenylethyl)amino]-2-(4-nitrophenyl)-1h-imidazo[4,5-c]pyridin-6-yl]carbamate Chemical compound N=1C(NC(=O)OCC)=CC=2NC(C=3C=CC(=CC=3)[N+]([O-])=O)=NC=2C=1N(CC=1C=CC=CC=1)CCC1=CC=CC=C1 RKWPMPQERYDCTB-UHFFFAOYSA-N 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种共享内存的访问方法及其装置。所述方法包括:获取共享内存的配置信息及待处理工作项的通道信息;根据该配置信息及通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项。基于该待检测工作项的通道信息,对与该待检测工作项对应的通道地址进行通道地址连续性检测,以确定与该待检测工作项对应的通道处理模式,该通道处理模式包括通道整合模式和通道不整合模式。基于该通道处理模式对该待检测工作项的通道地址进行处理,并基于处理后的通道地址访问该共享内存。这样,大大提高了对共享内存访问的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及图形处理器中的一种高效的共享内存的访问方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着科技的飞速发展,图形处理器包含大量的并行处理单元,可以通过编程,进行单指令多数据流的并行计算,例如:常采用通用图像处理器进行并行计算。在通用图像处理器进行并行计算的过程中,同一个工作组的工作项可以对同一共享内存进行访问。
在传统的访问方法中,每个工作项的通道可独立的对共享内存中的存储库进行访问。然而,对于多通道的工作项,可能会访问到同一存储库,出现存储库冲突(BankConflict)导致共享内存访问效率低。有鉴于此,本发明提供一种基于工作项通道地址检测的共享内存的高效访问方法及其装置,能够有效减少共享内存的访问次数、降低存储库冲突,提高访问效率。
发明内容
基于此,有必要针对上述技术问题,提供一种共享内存的访问方法、装置。
第一方面,本申请提供了一种共享内存的访问方法。所述方法包括:
获取共享内存的配置信息,并确定待处理工作项的通道信息;
在根据所述配置信息及通道信息确定与所述待处理工作项对应的存储库满足通道整合条件的情况下,则将所述待处理工作项作为待检测工作项;
基于所述待检测工作项的通道信息,对与所述待检测工作项对应的通道地址进行通道地址连续性检测,以确定与所述待检测工作项对应的通道处理模式,所述通道处理模式包括通道整合模式和通道不整合模式;
基于所述通道处理模式对所述待检测工作项的通道地址进行处理,并基于处理后的通道地址访问所述共享内存。
第二方面,本申请还提供了一种共享内存的访问装置。所述装置包括:
获取模块,用于获取共享内存的配置信息,并确定待处理工作项的通道信息;
确定模块,用于在根据所述配置信息及通道信息确定与所述待处理工作项对应的存储库满足通道整合条件的情况下,则将所述待处理工作项作为待检测工作项;
检测模块,用于基于所述待检测工作项的通道信息,对与所述待检测工作项对应的通道地址进行通道地址连续性检测,以确定与所述待检测工作项对应的通道处理模式,所述通道处理模式包括通道整合模式和通道不整合模式;
处理模块,用于基于所述通道处理模式对所述待检测工作项的通道地址进行处理,并基于处理后的通道地址访问所述共享内存。
上述共享内存的访问方法及其装置,通过获取共享内存的配置信息,并确定待处理工作项的通道信息。在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项。这样,通过判断存储库是否满足通道整合条件,实现了对待处理工作项的存储库进行初步检测,以确保后续能够对共享内存进行有效且准确的访问。基于该待检测工作项的通道信息,对与该待检测工作项对应的通道地址进行通道地址连续性检测,以确定与该待检测工作项对应的通道处理模式,该通道处理模式包括通道整合模式和通道不整合模式。这样,基于通道地址连续性检测,能够对待检测工作项的通道地址进行精准判定,以得到与待检测工作项的通道相匹配的通道处理模式。基于该通道处理模式对该待检测工作项的通道地址进行相应的处理,并基于处理后的通道地址访问该共享内存。这样,基于与待检测工作项的通道相匹配的通道处理模式,降低了对共享内存的访问次数,从而能够降低存储库冲突,进而,大大提高了对共享内存访问的效率。
附图说明
图1为一个实施例中共享内存的访问方法的应用环境图;
图2为一个实施例中共享内存的示意图;
图3A为一个实施例中的工作项多通道访问共享内存的示意图;
图3B为另一个实施例中的工作项多通道访问共享内存的示意图;
图3C为另一个实施例中的工作项多通道访问共享内存的示意图;
图3D为另一个实施例中的工作项多通道访问共享内存的示意图;
图4为一个实施例中存储库冲突示意图;
图5为一个实施例中共享内存的访问方法的流程示意图;
图6为一个实施例中确定存储通道阈值的步骤的流程示意图;
图7为一个实施例中确定通道处理模式步骤的流程示意图;
图8为一个实施例中判断横跨存储库步骤的流程示意图;
图9为一个实施例中确定通道处理模式步骤的流程示意图;
图10为一个实施例中共享内存控制单元的拓扑图;
图11为另一个实施例中确定通道处理模式步骤的流程示意图;
图12为另一个实施例中确定通道处理模式步骤的流程示意图;
图13为另一个实施例中共享内存控制单元的拓扑图;
图14为另一个实施例中确定通道处理模式步骤的流程示意图;
图15为一个实施例中共享内存的访问装置的结构框图;
图16为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本发明提供一种高效的共享内存的访问方法及其装置。在详细介绍该访问方法及其装置之前,针对本发明说明书及权利要求书中使用的计算机名词作如下解释。
算术逻辑运算单元:发送共享内存的读和/或写请求及通道信息至共享内存控制单元,比如,将工作项的地址和/或数据发送到共享内存控制单元。
通用寄存器文件:用于存储算术逻辑运算单元所需的源数据,如:从共享内存控制单元收到的读操作返回的数据,以供算术逻辑运算单元运算。
共享内存控制单元:用于处理算术逻辑运算单元发送的读和/或写请求及通道信息,其包括通道地址连续性检测单元和请求拆分单元,控制共享内存的读操作和/或写操作,并负责将读请求返回的数据旁路到通用寄存器文件中;其中,该通道地址连续性检测单元还包括处理模式选择单元。
共享内存:用于存储工作项的通道数据,共享内存可以根据存储库的个数m、存储库宽度的字节指数n、缓存行的行数k,进行配置。
图1为本发明一实施例中的应用环境示意图。如图1所示,终端102通过通信网络与服务器104进行通信。数据存储系统可以存储终端102及服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云网络或其他网络服务器上。
终端102可以但不限于是包括有图形处理单元的个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备。物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。其中,图像处理单元包括集成显卡、独立显卡、以及移动手机端的图像处理单元。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
图2为本发明一实施例中的共享内存的示意图。如图2所示,该共享内存包含m个存储库(Bank),即包含存储库Bank0、Bank1、Bank2……Bankm-3、Bankm-2、Bankm-1,其中m为大于1的整数。每个存储库包含k个缓存行(Line),即缓存行Line0、Line1、Line2、Line3……Linek-1,其中k亦为大于1的整数。具体的,Bank0中的Line0的存储宽度为2n Bytes,其中n为字节指数(如图2中纯色填充的“0”所示)。因此,整个共享内存(如图2中的0、1、2……m-3、m-2、m-1……km-1)的大小可以表示为m*2n*k Bytes。
也就是说,该共享内存可以根据存储库的个数m、存储库宽度的字节指数n、缓存行的行数k进行配置。在本发明的说明书及权利要求书当中,将上述的参数m,n,k称为共享内存的配置信息。
图3A至图3D均为本发明实施例中的工作项多通道访问共享内存的示意图。如图3A所示,工作项A具有x、y、z、w四通道,每个通道独立且连续的访问存储库。x通道存储于存储库j的Byte0到Byte1之间,y通道存储于存储库j的Byte2到Byte3之间,z通道存储于存储库j+1的Byte0到Byte1之间,w通道存储于存储库j+1的Byte2到Byte3之间。类似的,如图3B、3C及3D所示,为工作项A具有x、y、z三通道、x、y二通道、x单通道时访问存储库的示意图。
在图像处理器和通用图像处理器中,共享内存能够为算数逻辑运算单元提供快速读写,其读写延迟应尽可能短。
图4为本发明一实施例中的存储库冲突的示意图。以工作项A具有四通道为例进行说明,如图4所示,通道x存储于存储库j的Byte0到Byte1之间,通道y存储于存储库j的Byte2到Byte3之间。此时,通道x与通道y属于访问同一存储库j,两通道之间存在存储库冲突。同样,在通道z及通道w之间也存在存储库冲突。也就是,通道x与通道y不能同时访问存储库j,通道z及通道w不能同时访问存储库j+1。如此一来,通道y及通道w就需要等待下一周期再访问存储库j及存储库j+1。工作项的多通道相互单独访问共享内存时,多通道可能会访问到同一个存储库中,即产生存储库冲突,从而大大降低了对共享内存访问的效率。
此处需要补充说明的是,工作项中的通道可以具有不同的数据格式,例如:8/16/32/64bpc(即每个通道具有的比特数)等,其中,数据格式小于存储库的宽度。
此处还需要补充说明的是,图4部分只是简单介绍存储库冲突的工作原理,关于内存、硬盘、移动硬盘等存储装置的存储库冲突,应属于本领域技术人员的习知技术,本发明不在此不做过多描述。
需要说明的是,本发明所涉及到的计算机设备均是部署有通用图像处理器的计算机设备。
图5为本发明一实施例中的共享内存的访问方法示意图。如图5所示,在步骤S502,获取共享内存的配置信息,并确定待处理工作项的通道信息。
其中,配置信息包含共享内存中存储库的个数m、存储库宽度的字节指数n及缓存行的行数k用于表征共享内存的大小,通道信息包含通道的数据格式及通道数等用于表征待处理工作项的通道信息。
接着,在步骤S504,在根据该配置信息及通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项。
需要说明的是,关于是否满足通道整合条件及如何判断是否满足通道整合条件请参考公式(一)内容部分,在此不重述。
接着,在步骤S506,基于该待检测工作项的通道信息,对该工作项的通道地址进行通道地址连续性检测,以确定与该待检测工作项对应的通道处理模式,该通道处理模式包括通道整合模式和通道不整合模式。
其中,通道地址连续性检测用于确定工作项的通道数、确定工作项的通道是否横跨多个存储库以及确定通道处理模式。其中,通道整合模式表征将至少两个通道进行整合的模式,通道不整合模式表征通道不整合的模式。
例如,基于该待检测工作项的通道信息,计算机设备中的共享内存控制单元对该待处理检测工作项对应的通道地址进行通道地址连续性检测,确定通道在存储库中的存储情况,并通过该存储情况确定与该待检测工作项对应的通道处理模式。其中,该存储情况能够表征待检测工作项的通道是否进行整合的模式及多个横跨存储库。
最后,在步骤S508,基于该通道处理模式对该待检测工作项的通道地址进行处理,并基于处理后的通道地址访问该共享内存。
需要说明的是,步骤S508所涉及到的处理是对通道地址进行整合或者不整合的处理。
具体地,基于该通道处理模式,计算机设备对该待检测工作项的通道地址,按照通道处理模式进行处理,得到处理后的通道地址,并基于该处理后的通道地址访问该共享内存。
例如,计算机设备中的共享内存控制单元将该通道处理模式发送给共享内存单元中的请求拆分单元,该请求拆分单元对该待检测工作项的通道地址,按照通道处理模式进行处理,得到处理后的通道地址,并基于该处理后的通道地址访问该共享内存。
上述共享内存的访问方法中,通过获取共享内存的配置信息,并确定待处理工作项的通道信息。在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项。这样,通过判断存储库是否满足通道整合条件,实现了对待处理工作项的存储库进行初步检测,以确保后续能够对共享内存进行有效且准确的访问。基于该待检测工作项的通道信息,对该待检测工作项对应的通道地址进行通道地址连续性检测,以确定与该待检测工作项对应的通道处理模式,该通道处理模式包括通道整合模式和通道不整合模式。这样,基于通道地址连续性检测,能够对待检测工作项的通道地址进行精准判定,以得到与待检测工作项的通道相匹配的通道处理模式。基于该通道处理模式对该待检测工作项的通道地址进行相应的处理,并基于处理后的通道地址访问该共享内存。这样,基于与待检测工作项的通道相匹配的通道处理模式,降低了对共享内存的访问次数,从而能够降低存储库冲突,进而,大大提高了对共享内存访问的效率。
在一个实施例中,在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项之前,该方法还包括:根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值。当该存储通道数值大于第一阈值数量时,则确定该待处理工作项所对应的存储库满足通道整合条件。
其中,通道数值为一个存储库最多可存储的通道数。
具体地,计算机设备基于存储库的字节指数、待处理工作项的通道数、通道的数据格式信息,确定与待处理工作项对应的通道容量。计算机设备将通道容量和通道数中的最小值,确定为通道数值。计算机设备对该存储通道数值和第一阈值数量进行比较,若该存储通道数值大于第一阈值数量时,则确定待处理工作项所对应的存储库满足通道整合条件。其中,该通道容量用于表征通道大小。
例如,计算机设备中的共享内存控制单元确定存储库的字节指数n为2,即存储库的宽度为4个字节。该共享内存控制单元确定数据格式channelbpc为8个比特每个通道、以及通道数chnum为2,则通过下述公式(一)确定存储通道数值ch_numin_bank:
其中,通过上式计算可知,存储通道数值为2,即最多可以有2个通道存储在同一个存储库中。该共享内存控制单元判断该通道数值是否不小于第一阈值数量(例如:第一阈值数量可以为“1”),若通道数值大于1,则确定该待处理工作项所对应的存储库满足通道整合条件。其中,对于其他数据格式,比如16/32/64bpc等,可以根据共享内存的配置信息和通道数以及数据格式,根据上述公式确定通道数值。
需要说明的是,通道整合条件可以确定存储库能够反映存储库的存储情况,即存储能力。其中,对于不满足通道整合条件的存储库,其存储库最多能存储待检测工作项的通道数为1,而对于满足通道整合条件的存储库,其存储库所能存储的最多的通道数大于1,也就说明,满足通道整合条件的存储库中存储的通道数相对较多,则存储情况更加复杂。
在本实施例中,根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值,从而,能够确定存储库最多能存储的通道数。当该存储通道数值大于第一阈值数量时,则确定该待处理工作项所对应的存储库满足通道整合条件,从而,能够简便且准确的确定待处理工作项对应的存储库的存储通道情况。
图6为本发明另一实施例中的共享内存的访问方法示意图。如图6所示,在步骤S602中,获取与各访问请求分别对应访问信息,并从该访问信息中提取出各个待处理工作项各自的通道信息。
其中,该访问请求可以为从存储库读数据的读请求,也可以为向存储库写数据的写请求。该访问请求中包含通道信息和地址信息,其中,通道信息包含数据格式和通道数,该地址信息为工作项的地址。
例如,当访问请求为写请求时,计算机设备中的共享内存控制单元获取与该写请求对应的访问信息,并从该访问信息中提取通道信息,其中,该通道信息包含有数据格式、通道数、以及待写入的数据。当访问请求为读请求时,该共享内存控制单元获取与该读请求对应的访问信息,并从该访问信息中提取通道信息,该通道信息包含数据格式和通道数。
接着,在步骤S604,对该访问请求的数量进行判断,若获取到的访问请求的数量小于第二阈值数量,则继续获取访问请求。
例如,计算机设备中的缓冲器获取访问请求,并存储该访问信息。若该访问情况的数量小于第二阈值数量,则继续访问请求,直至访问请求的数量达到阈值数量。
需要说明的是,第一阈值数量和第二阈值数量为不同的阈值数量,该第一阈值数量用于判断存储通道数值,即表征存储通道数值的最大数值。该第二阈值数量是用于判断访问请求的数量,即表征访问请求的最大数量。
接着,在步骤S606,若获取到的访问请求的数量达到该第二阈值数量,则对于每个待处理工作项,均执行该根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值的步骤。
具体地,若获取到的访问请求的数量达到第二阈值数量,则计算机设备直接对待处理工作对应的存储库进行通道整合的判定,并对于每个待处理工作项,均执行该根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值的步骤。
例如,若计算机设备中的缓冲区获取到的访问请求的数量达到第二阈值数量,则计算机设备的共享内存控制单元获取存储在缓冲区的各访问信息,并对于每个待处理工作项,共享内存控制单元均执行该根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值的步骤。
在本实施例中,若访问请求的数量满足第二阈值数量,则直接触发对与待处理工作项对应的存储库的存储通道数值进行处理的步骤。若访问请求的数量小于第二阈值数量,则继续获取访问请求。这样,确保了数据的并行处理,大大提高了数据处理的效率。
图7为本发明又一实施例中的共享内存的访问方法示意图。如图7所示,在步骤S702中,基于与该待检测工作项对应的通道地址信息,判断与待检测工作项对应的多个通道是否横跨至少两个存储库。
具体地,计算机设备获取与该待检测工作项对应的通道地址信息,并基于该通道地址信息,确定待检测工作项对应的缓存行的位置信息、存储库的位置信息、以及存储库中起始字节位置信息。基于该缓存行的位置信息、存储库的位置信息、以及存储库中起始字节位置信息,判断与待检测工作项对应的多个通道是否横跨至少两个存储库。
接着,在步骤S704,若待检测工作项对应的多个通道横跨至少两个存储库,则将相应的待检测工作项作为第一待检测工作项,并将与该第一待检测工作项对应的多个存储库作为第一存储库。
接着,在步骤S706,基于与该第一待检测工作项对应的第一通道地址信息、第一通道数、以及第一数据格式,对与该第一待检测工作项对应的第一存储库进行拆分处理,以确定每个第一存储库各自所存储的第一存储通道数。
具体地,获取与该第一待检测工作项对应的第一通道地址信息,并确定与该第一通道地址信息对应的存储库中起始字节位置信息。基于该存储库的字节指数、起始字节位置信息、第一通道数、以及第一数据格式,确定第一存储库的数量,并基于所述第一存储库的数量、该存储库的字节指数、起始字节位置信息、第一通道数、以及第一数据格式,对该第一待检测工作项对应的第一存储库进行拆分处理,以确定每个第一存储库各自所存储的第一存储通道数。
例如,计算机设备中的共享内存控制单元获取该第一待检测工作项对应的第一通道地址信息,并确定与该第一通道地址信息对应的存储库中起始字节索引byte_idx。该共享内存控制单元获取第一待检测工作项对应的第一通道数ch_num、以及数据格式bpc,则根据如下公式(二)确定第一存储库的数量banknum:
其中,为向上取整。基于该第一存储库的数量banknum,并基于公式(三)确定各个第一存储库的索引bankx、以及与各个第一存储库各自存储的第一存储通道数ch_numin_bankx:
bankx=bankidx
bankx+1=bankidx+1
…
其中,为各个第一存储库的索引。
为各个第一存储库各自存储的第一存储通道数。
接着,在步骤S708,对于每个第一待检测工作项对应的第一存储库,均基于各第一存储库分别对应的第一存储通道数,确定与相应第一待检测工作项对应的通道处理模式。
具体地,对于每个第一待检测工作项对应的第一存储库,计算机设备均判断各第一存储库是否满足整合条件,得到各个第一存储库分别对应的判断结果。基于各个第一存储库分别对应的判断结果,确定与相应第一待检测工作对应的通道处理模式。
在本实施例中,通过与待检测工作项对应的通道地址信息,能够及时确定与待检测工作项对应的多个通道是否横跨至少两个存储库。若与待检测工作项对应的多个通道横跨两个存储库,则基于第一通道地址信息、第一通道数、以及第一数据格式,能够准确确定各个第一存储库的位置以及各个第一存储库各自存储的第一存储通道数。这样,基于各个第一存储通道数,能够准确确定与相应第一待检测工作项的通道相匹配的通道处理模式,从而,大大提高了对共享内存访问的效率。
在一个实施例中,该方法还包括:若与待检测工作项对应的多个通道未横跨不同的存储库,则将相应的待检测工作项作为第二待检测工作项,并确定与第二待检测工作项对应的通道处理模式为通道整合模式。
具体地,若与待检测工作项对应的多个通道未横跨不同的存储库,则计算机设备将与多个通道未横跨不同的存储库对应的待检测工作项,作为第二待检测工作项。计算设备直接确定与第二待检测工作项对应的通道处理模式为通道整合模式。
在本实施例中,一旦确定与待检测工作项对应的多个通道未横跨不同的存储库,则将相应的待检测工作项作为第二待检测工作项,并能够迅速且准确的确定与第二待检测工作项对应的通道处理模式为整合通道模式,大大简化了多个通道未横跨不同的存储库的情况,从而,能够提高对共享内存访问的效率。
图8为本发明再一实施例中的共享内存的访问方法示意图。如图8所示,在步骤S802,基于共享内存的配置信息,确定该共享内存中存储库的数量、以及各个存储库的宽度。
接着,在步骤S804,基于待检测工作项对应的通道地址信息、存储库的数量、以及该存储库的宽度,进行行索引计算,确定与该待检测工作项对应的行索引;其中,该行索引用于表征与待检测工作项对应的存储库在共享内存中的行位置。
例如,设定与待检测工作项对应的通道地址信息为Addr,存储库的数量m、存储库的宽度2n,则可以根据下述公式确定与待检测工作项对应的存储库在共享内存中的行索引line_idx:
line_idx=Addr/(m*2n)
其中,该m×2n可视为共享内存存储行的长度(宽度)。
步骤S806,基于与该待检测工作项对应的行索引、通道地址信息、以及该存储库的数量和宽度,进行起始字节索引计算,确定与该待检测工作项对应的存储库中起始字节索引;其中,该起始字节索引用于表征与工作项对应的通道地址在存储库中的起始字节位置。
具体地,计算机设备基于该存储库的数量和宽度,确定共享内存的长度,并确定该共享内存的长度与该行索引的乘积。计算机设备确定该与待检测工作项对应的通道地址信息与该乘积的差值,并将该差值和存储库的宽度进行除法计算,确定商和余数,计算机设备将商作为与待检测工作项对应的存储库索引、以及将余数作为与该待检测工作项对应的存储库中起始字节索引。
例如,设定与待检测工作项对应的行索引line_idx、通道地址信息为Addr、存储库的数量m、存储库的宽度2n,则可以根据下述公式确定与待检测工作项对应的存储库索引bank_idx、以及存储库中起始字节索引byte_idx:
bank_idx=(Addr-line_idx*m*2n)/2n
byte_idx=(Addr-lineidx*m*2n)%2n
步骤S808,基于与该待检测工作项对应通道的数据格式、以及与该待检测工作项对应的起始字节索引,进行横跨存储库检测,得到横跨存储库检测结果。
具体地,计算机设备基于与该待检测工作项对应的通道的数据格式,确定与该数据格式对应的存储通道阈值。计算机设备基于与该待检测工作项对应的起始字节索引、存储通道数值、数据格式,确定待检测的宽度,并基于该待检测的宽度与存储库的宽度的比较结果,确定横跨存储库检测结果。
例如,设定与待检测工作项对应的存储库中起始字节索引byte_idx、存储通道数值ch_numin_bank、数据格式bpc、存储库的宽度2n,则可以根据下述公式确定待检测的宽度D:
D=byte_idx+ch_numin_bank*(bpc>>3)
将该待检测的宽度D与存储库的宽度进行比较,确定横跨存储库检测结果。其中,该横跨存储库检测结果包括待检测的宽度大于存储库的宽度、待检测的宽度小于存储库的宽度中的至少一种。
步骤S810,基于该横跨存储库检测结果,确定与待检测工作项对应的多个通道是否横跨至少两个存储库。
具体地,若该横跨存储库检测结果为待检测的宽度大于存储库的宽度,则确定与待检测工作项对应的多个通道横跨至少两个存储库。若该横跨存储库的检测结果为待检测的宽度小于存储库的宽度,则确定与待检测工作项对应的多个通道不横跨至少两个存储库。
例如,设定与待检测工作项对应的存储库中起始字节索引byte_idx、存储通道数值ch_numin_bank、数据格式bpc、存储库的宽度2n,则可以根据下述公式确定与待检测工作项对应的多个通道是否横跨至少两个存储库:
bAcrossBank=(byte_idx+ch_numin_bank*(bpc>>3))>2n?1:0
若该bAcrossBank为0,则确定与待检测工作项对应的多个通道不横跨至少两个存储库;若该bAcrossBank不为0,则确定与待检测工作项对应的多个通道横跨至少两个存储库。
在本实施例中,结合与待检测工作项对应的通道地址信息、存储库的数量、以及存储库的宽度,能够准确的确定与待检测工作项对应的存库在共享内存中的行索引、与待检测工作项对应的存储库索引和存储库的起始字节索引,从而,能够准确定与待检测工作项对应的多个通道是否横跨至少两个存储库,即,能够清楚且明确的反映与待检测工作项对应多个通道在存储库中的存储位置情况,有利于后续根据多个通道是否至少横跨两个存储库的横跨结果,精准确定与待检测工作项对应的通道处理模式,进而,能够大大提高对共享内存访问的效率。
图9为本发明一实施例中的通道整合流程示意图。如图9所示,该对于每个第一待检测工作项对应的第一存储库,均基于各第一存储库分别对应的第一存储通道数,确定与相应第一待检测工作项对应的通道处理模式,包括:
步骤S902:对于每个第一待检测工作项所对应的每个第一存储库,将第一存储通道数与第一阈值数量进行比较,并将满足通道整合条件的第一存储库,作为整合存储库,并将该整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式。
具体地,对于每个第一待检测工作项对应的每个第一存储库,计算机设备将第一存储通道数与第一阈值数量进行比较,得到比较结果。若该比较结果表示为该第一存储通道数大于该第一阈值数量,则确定该第一存储库满足通道整合条件。计算机设备将该满足通道整合条件的第一存储库作为整合存储库。计算机设备将该整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式。
步骤S904:将不满足通道整合条件的第一存储库,作为不整合存储库,并将该不整合存储库中存储的多个第一通道的通道处理模式确定为通道不整合模式。
具体地,对于每个第一待检测工作项对应的每个第一存储库,计算机设备将第一存储通道数与第一阈值数量进行比较,得到比较结果。若该比较结果表示为该第一存储通道数等于该第一阈值数量,则确定该第一存储库不满足通道整合条件。计算机设备将不满足通道整合条件的第一存储库作为不整合存储库,并将该不整合存储库中存储的多个第一通道的通道处理模式确定为通道不整合模式。
下述各实施例中实施主体由通用图像处理器的共享内存控制单元执行,其中,通用图像处理器是部署在计算机设备中。该共享内存控制单元的拓扑图如图10所示。其中,该共享内存控制单元中包括通道地址连续性检测单元、请求拆分单元、写操作、读操作、以及共享内存缓存单元。
在一个可选实施例中,如图11所示,其中,该共享内存控制单元包括通道地址连续检测单元。对于每个第一待检测工作项对应的每个第一存储库,共享内存单元中的通道地址连续性检测单元判断第一存储通道数是否不等于数值1,若是,则通道地址连续性检测单元中的处理模式选择单元确定该满足通道整合条件的第一存储库作为整合存储库。通道地址连续检测单元将该整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式。若否,则通道地址连续性检测单元中的处理模式选择单元确定该满足通道整合条件的第一存储库作为不整合存储库。通道地址连续检测单元将该整合存储库中存储的多个第一通道的通道处理模式确定为通道不整合模式。
其中,对于通道不整合模式,则将每个第一通道均设置为1个通道的通道整合模式,对于通道整合模式,则将多个第一通道进行组合,得到组合后的第一通道,即选择第一存储通道数个通道的整合模式。
在本实施例中,通过将每个第一存储库中对应的第一存储通道数进行比较,以确定第一存储库是否满足通道整合条件,若满足,则直接确定第一存储库对应第一通道的通道处理模式为通道整合模式。若不满足,则将第一存储库对应第一通道的通道处理模式确定为通道不整合模式。这样,能够对第一待检测工作项的通道地址进行精准判定,以得到与第一待检测工作项的通道相匹配的通道处理模式。
在一个实施例中,如图12所示,通道地址连续性检测单元从该配置信息中确定存储库的数量m,并确定各个存储库的字节指数n,并基于该各个存储库的字节指数,确定各个存储库的宽度2n。通道地址连续性检测单元基于存储库的数量和存储库的宽度,确定共享内存的宽度,通道地址连续性检测单元将与该待检测工作对应的通道地址信息除以该共享内存的长度,确定与该待检测工作项的行索引。通道地址连续性检测单元基于该存储库的数量和宽度,确定共享内存的长度,并确定该共享内存的长度与该行索引的乘积。通道地址连续性检测单元确定该与待检测工作项对应的通道地址信息与该乘积的差值,并将该差值和存储库的宽度进行除法计算,确定商和余数,通道地址连续性检测单元将商作为与待检测工作项对应的存储库索引、以及将余数作为与该待检测工作项对应的存储库中起始字节索引。
步骤①横跨存储库:通道地址连续性检测单元根据与待检测工作项对应的存储库中起始字节索引、存储库的宽度、以及数据格式,判断与待检测工作项对应的多个通道横跨至少两个存储库(即对应图中判断是否横跨存储库)。若判断结果表征为字符“0”,则确定不横跨存储库,即与待检测工作项对应的多个通道不横跨至少两个存储库,则将待检测工作项为第二待检测工作项。通道地址连续性检测单元中的处理模式选择单元,直接确定与该第二待检测工作项对应的通道处理模式为通道整合模式。其中,在通道处理模式为通道整合模式时,将第二待检测工作项对应的多个第二存储通道数进行组合,得到组合后的第二通道,并基于组合后的第二通道进行访问。
步骤②存储库拆分:若判断结果表征为字符“1”,则确定横跨存储库,即与待检测工作项对应的多个通道横跨至少两个存储库,则将待检测工作项为第一待检测工作项。通道地址连续性检测单元将与该第一待检测工作项对应的多个存储库作为第一存储库,并确定第一存储库的数量banknum,并基于所述第一存储库的数量、该存储库的字节指数、起始字节位置信息、第一通道数、以及第一数据格式,对与该第一待检测工作项对应的第一存储库进行拆分处理,以确定每个第一存储库的索引bankx、以及各自所存储的第一存储通道数ch_numin_bankx。
步骤③:通道地址连续性检测单元对第一存储库进行整合检测,即将每个第一存储库的第一存储通道数与预设单位数据进行比较,得到比较结果。若该比较结果表示为该第一存储通道数大于第一阈值数量(比如数值1),则通道地址连续性检测单元中的处理模式选择单元确定该第一存储库满足通道整合条件。处理模式选择单元将该满足通道整合条件的第一存储库作为整合存储库,并将该整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式。
在本实施例中,通过与待检测工作项对应的通道地址信息,能够及时确定与待检测工作项对应的多个通道是否横跨至少两个存储库。若与待检测工作项对应的多个通道横跨两个存储库,则基于第一通道地址信息、第一通道数、以及第一数据格式,精准确定各个第一存储库的位置以及各个第一存储库各自存储的第一存储通道数,这样,基于各个第一存储通道数,能够准确确定与相应第一待检测工作项的通道相匹配的通道处理模式,从而,大大提高了对共享内存访问的效率。一旦确定与待检测工作项对应的多个通道未横跨不同的存储库,则将相应的待检测工作项作为第二待检测工作项,并能够迅速且准确的确定与第二待检测工作项对应的通道处理模式为整合通道模式,大大简化了多个通道未横跨不同的存储库的情况,从而,能够提高对共享内存访问的效率。
在一个实施例中,该方法还包括:在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库不满足通道整合条件的情况下,则直接确定该待处理工作项对应的通道处理模式为通道不整合模式。
具体地,计算机设备根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值。当该存储通道数值大于第一阈值数量时,则确定该待处理工作项对应的存储库不满足通道整合条件,则直接确定该待处理工作项对应的通道处理模式为通道不整合模式,即不对待处理工作项的多个通道进行整合。
在本实施例中,在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库不满足通道整合条件的情况下,则直接确定该待处理工作项对应的通道处理模式为通道不整合模式,从而,大大简化了确定待处理工作项对应的存储库的存储通道情况,进而,能够及时且准确确定在不满足通道整合条件情况下,待处理工作项的通道处理模式,提高了对共享内存访问的效率。
为了便于更加清楚的了解本申请的技术方法,提供了一个更为详细实施例进行解释。本实施例的实施主体具体为计算机设备,该计算机设备设置有通用图像处理器。其中,该通用图像处理器包含有共享内存控制单元,该共享内存控制单元中包括通道地址连续性检测单元、请求拆分单元、共享内存缓存单元等。如图13所示,该通道地址连续性检测单元中包含处理模式选择单元。
需要说明的是,共享内存通常是SRAM(Static Random-Access Memory,静态随机存取存储器),集成在CPU(central processing unit,中央处理器)或者GPU(graphicsprocessing unit,图形处理器)中,该共享内存的大小很小,一般为几十KB。但是,由于共享内存更靠近CPU或者GPU的ALU单元(arithmetic and logic unit,算术逻辑单元),因此使得ALU计算单元可以进行快速读取,即共享内存读取速度快。
如图14所示,共享内存控制单元收到算术逻辑运算单元发送访问请求,并从该访问信息中提取出各个待处理工作项各自的通道信息。共享内存控制单元将访问请求和访问信息存储到缓冲区中。
步骤一:若缓冲区收集齐一定数量的访问请求或访问信息,则共享内存控制单元直接对待处理工作对应的存储库进行通道整合的判定,并对于每个待处理工作项,均执行该根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值ch_numin_bank。若该存储通道数值大于第一阈值数量,则直接确定待处理工作项的整合处理模式为通道不整合模式。
步骤二:若该存储通道数值大于第一阈值数量,则将待处理工作项作为待检测工作项,即进行整合检测。具体地,共享内存控制单元中的通道地址连续性检测单元基于与该待检测工作项对应的通道的数据格式,确定与该数据格式对应的存储通道阈值。通道地址连续性检测单元基于与该待检测工作项对应的起始字节索引、存储通道数值、数据格式,确定待检测的宽度,并基于该待检测的宽度与存储库的宽度的比较结果,确定横跨存储库检测结果。基于该横跨存储库检测结果,判断与待检测工作项对应的多个通道是否横跨至少两个存储库(即对应图中判断是否横跨库)。若该横跨存储库的检测结果为待检测的宽度小于存储库的宽度,则确定与待检测工作项对应的多个通道不横跨至少两个存储库,通道地址连续性检测单元将与多个通道未横跨不同的存储库对应的待检测工作项,作为第二待检测工作项。通道地址连续性检测单元中的处理模式选择单元直接确定与第二待检测工作项对应的通道处理模式为通道整合模式。
若该横跨存储库的检测结果为待检测的宽度大于存储库的宽度,则确定与待检测工作项对应的多个通道横跨至少两个存储库,则将相应的待检测工作项作为第一待检测工作项,并获取与该第一待检测工作项对应的多个存储库并,将与该第一待检测工作项对应的多个存储库作为第一存储库。通道地址连续性检测单元基于该存储库的字节指数、起始字节位置信息、第一通道数、以及第一数据格式,确定第一存储库的数量,并基于所述第一存储库的数量、该存储库的字节指数、起始字节位置信息、第一通道数、以及第一数据格式,对与该第一待检测工作项对应的第一存储库进行拆分处理,以确定每个第一存储库各自所存储的第一存储通道数。通道地址连续性检测单元进行整合检测,即对于每个第一待检测工作项对应的每个第一存储库,将第一存储通道数与第一阈值数量进行比较,得到比较结果。若该比较结果表示为该第一存储通道数大于该第一阈值数量,则确定该第一存储库满足通道整合条件。通道地址连续性检测单元将该满足通道整合条件的第一存储库作为整合存储库,则处理模式选择单元将该整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式。若该比较结果表示为该第一存储通道数等于该第一阈值数量,则确定该第一存储库不满足通道整合条件通道地址连续性检测单元将不满足通道整合条件的第一存储库作为不整合存储库,并处理模式选择单元将该不整合存储库中存储的多个第一通道的通道处理模式确定为通道不整合模式。
对上述步骤1至步骤3的过程进行举例说明:设定共享内存配置:32个存储库、存储库宽度为8个字节、1024存储行。对于通道数为2C/3C/4C和数据格式为32/16/8bpc(比特数)。
(1)通道数为2C,数据格式为32bpc
(1.1)工作项字节地址为0x128
步骤一:根据
步骤二:首先判断该工作项是否横跨存储库,计算得到:
byteidx=(0x128-1*32*23)%23=0
bAcrossBank=(0+2*4)>23?1:0=0
则该工作项为不横跨存储库,则该工作项的两个通道位于同一存储库,该工作项存储在第一存储行line1的第5个存储库bank5,相对起始地址为0,即byte0,具体如下表1:
表1工作项字节地址为0x128
步骤三:确定通道处理模式为通道整合模式,即整合模式为2C。
(1.2)工作项字节地址为0x124
基于上述相同的计算过程,确定该工作项存储在第一存储行,横跨两个存储库,分别为第4个存储库bank4和第5个存储库bank5,相对起始地址为第4个存储库的第4个byte(字节)。其中,第4个存储库的存储情况如表2所示,第5个存储库的存储情况如表3所示:
表2工作项字节地址为0x124
表3工作项字节地址为0x124
经步骤三计算确定该工作项横跨两个存储库,第4个存储库bank4和第5个存储库bank5均为通道不整合模式,即均为1C模式。
(2)通道数为3C,数据格式为16bpc
(2.1)工作项字节地址为0x122
基于上述相同的计算过程,确定该工作项存储在第一存储行,未横跨存储库,相对起始地址为2,具体如下表4:
表4工作项字节地址为0x122
经步骤三计算确定该工作项未横跨两个存储库,通道处理模式为通道整合模式,即为3C模式。
(2.2)工作项字节地址为0x134
基于上述相同的计算过程,确定该工作项存储在第一存储行,横跨两个存储库,分别是第6个存储库bank6和第7个存储库bank7,相对起始地址为第6个存储库的第4个byte(字节)。其中,第6个存储库的存储情况如表5所示,第7个存储库的存储情况如表6所示:
表5工作项字节地址为0x134
表6工作项字节地址为0x134
经步骤三计算确定该工作项横跨两个存储库,第6个存储库bank6和第7个存储库bank7。其中,第6个存储库为通道整合模式,即2C模式,第7个存储库为通道不整合模式,即为1C模式。
(2.2)工作项字节地址为0x136
基于上述相同的计算过程,确定该工作项存储在第一存储行,横跨两个存储库,分别是第6个存储库bank6和第7个存储库bank7,相对起始地址为第6个存储库的第6个byte(字节)。其中,第6个存储库的存储情况如表7所示,第7个存储库的存储情况如表8所示:
表7工作项字节地址为0x136
表8工作项字节地址为0x136
经步骤三计算确定该工作项横跨两个存储库,第6个存储库bank6和第7个存储库bank7。其中,第6个存储库为通道不整合模式,即1C模式,第7个存储库为通道整合模式,即为2C模式。
(3)通道数为3C,数据格式为16bpc
(3.1)工作项字节地址为0x204
基于上述相同的计算过程,确定该工作项存储在第2存储行line2,未横跨存储库,相对起始地址为4,具体如下表9:
表9工作项字节地址为0x204
经步骤三计算确定该工作项未横跨两个存储库,通道处理模式为通道整合模式,即为4C模式。
(3.2)工作项字节地址为0x205
基于上述相同的计算过程,确定该工作项存储在第2存储行,横跨两个存储库,分别是第0个存储库bank0和第1个存储库bank1,相对起始地址为第0个存储库的第5个byte(字节)。其中,第0个存储库的存储情况如表10所示,第1个存储库的存储情况如表11所示:
表10工作项字节地址为0x205
表11工作项字节地址为0x205
经步骤三计算确定该工作项横跨两个存储库,第0个存储库bank0和第1个存储库bank1。其中,第0个存储库为通道整合模式,即3C模式,第1个存储库为通道不整合模式,即为1C模式。
(3.2)工作项字节地址为0x206
基于上述相同的计算过程,确定该工作项存储在第二存储行,横跨两个存储库,分别是第0个存储库bank0和第1个存储库bank1,相对起始地址为第0个存储库的第6个byte(字节)。其中,第0个存储库的存储情况如表12所示,第1个存储库的存储情况如表13所示:
表12工作项字节地址为0x206
表13工作项字节地址为0x206
经步骤三计算确定该工作项横跨两个存储库,第0个存储库bank1和第1个存储库bank1。其中,第0个存储库为通道整合模式,即2C模式,第1个存储库为通道整合模式,即为2C模式。
(3.3)工作项字节地址为0x207
基于上述相同的计算过程,确定该工作项存储在第二存储行,横跨两个存储库,分别是第0个存储库bank0和第1个存储库bank1,相对起始地址为第0个存储库的第7个byte(字节)。其中,第0个存储库的存储情况如表14所示,第1个存储库的存储情况如表15所示:
表14工作项字节地址为0x207
表15工作项字节地址为0x207
经步骤三计算确定该工作项横跨两个存储库,第0个存储库bank0和第1个存储库bank1。其中,第0个存储库为通道不整合模式,即1C模式,第1个存储库为通道整合模式,即为3C模式。
上述示例中确定通道整合模式后,通过请求拆分单元对请求进行拆分,基于拆分后的粒度对共享内存进行访问。
此外,为了进一步确定本申请中访问的次数,以表16、表17、表18、表19进一步比较工作项在采用本申请的整合方案和不采用本申请整合方案的情况下,读/写请求次数的比较。
表16访问次数比较
整合 | 不整合 | |
2C | 2C | 1C |
访问次数 | 1 | 2 |
表17访问次数比较
表18访问次数比较
表19访问次数比较
如上述表16至表19,工作项为三通道(3C)情况时,若三通道均位于同一个存储库,即整合模式为3C,则只需要访问共享内存1次,不需要拆分;若横跨两个存储库,则整合模式为2C,即以2C的整合模式和1C的通道不整合模式。若为通道不整合模式,则需要访问3次,此时,该工作项的每个通道可独立访问共享内存。对于任意通道数kC,可以根据本申请的方案对共享内存进行访问。
在本实施例中,通过获取共享内存的配置信息,并确定待处理工作项的通道信息。在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项。这样,通过判断存储库是否满足通道整合条件,实现了对待处理工作项的存储库进行初步检测,以确保后续能够对共享内存进行有效且准确的访问。基于该待检测工作项的通道信息,对与该待检测工作项对应的通道地址进行通道地址连续性检测,以确定与该待检测工作项对应的通道处理模式,该通道处理模式包括通道整合模式和通道不整合模式。这样,基于通道地址连续性检测,能够对待检测工作项的通道地址进行精准判定,以得到与待检测工作项的通道相匹配的通道处理模式。基于该通道处理模式对该待检测工作项的通道地址进行相应的处理,并基于处理后的通道地址访问该共享内存。这样,基于与待检测工作项的通道相匹配的通道处理模式,能够在确保完成对共享内存的访问的同时,还能减少对共享内存的访问次数,从而能够降低存储库冲突,以此大大提高对共享内存的访问效率。此外,本申请的方法可以适用于所有并行计算的场景中,也适用于不同共享内存配置、工作项多通道数、以及数据格式的组合,即适用场景广泛。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的共享内存的访问方法的共享内存的访问装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个共享内存的访问装置实施例中的具体限定可以参见上文中对于共享内存的访问方法的限定,在此不再赘述。
在一个实施例中,如图15所示,提供了一种共享内存的访问装置,包括:获取模块1502、确定模块1504、检测模块1506和处理模块1508,其中:
获取模块1502,用于获取共享内存的配置信息,并确定待处理工作项的通道信息。
确定模块1504,用于在根据该配置信息及通道信息确定与该待处理工作项对应的存储库满足通道整合条件的情况下,则将该待处理工作项作为待检测工作项。
检测模块1506,用于基于该待检测工作项的通道信息,对与该待检测工作项对应的通道地址进行通道地址连续性检测,以确定与该待检测工作项对应的通道处理模式,该通道处理模式包括通道整合模式和通道不整合模式。
处理模块1508,用于基于该通道处理模式对该待检测工作项的通道地址进行处理,并基于处理后的通道地址访问该共享内存。
在一个实施例中,该确定模块1504,还用于根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值。当该存储通道数值大于第一阈值数量时,则确定该待处理工作项所对应的存储库满足通道整合条件
在一个实施例中,该获取模块1502,用于获取与各访问请求分别对应访问信息,并从该访问信息中提取出各个待处理工作项各自的通道信息。该确定模块1504,还用于对该访问请求的数量进行判断,若获取到的访问请求的数量小于第二阈值数量,则继续获取访问请求。若获取到的访问请求的数量达到该第二阈值数量,则对于每个待处理工作项,均执行该根据该共享内存的配置信息、以及该待处理工作项的通道信息,确定与该待处理工作项对应的存储库的存储通道数值的步骤。
在一个实施例中,该检测模块1506,用于基于与该待检测工作项对应的通道地址信息,判断与待检测工作项对应的多个通道是否横跨至少两个存储库。若与待检测工作项对应的多个通道横跨至少两个存储库,则将相应的待检测工作项作为第一待检测工作项,并将与该第一待检测工作项对应的多个存储库作为第一存储库。基于与该第一待检测工作项对应的第一通道地址信息、第一通道数、以及第一数据格式,对与该第一待检测工作项对应的第一存储库进行拆分处理,以确定每个第一存储库各自所存储的第一存储通道数。对于每个第一待检测工作项对应的第一存储库,均基于各第一存储库分别对应的第一存储通道数,确定与相应第一待检测工作项对应的通道处理模式。
在一个实施例中,该检测模块1506,还用于若与待检测工作项对应的多个通道未横跨不同的存储库,则将相应的待检测工作项作为第二待检测工作项,并确定与第二待检测工作项对应的通道处理模式为通道整合模式。
在一个实施例中,该检测模块1506,还用于基于共享内存的配置信息,确定该共享内存中存储库的数量、以及各个存储库的宽度。基于与该待检测工作项对应的通道地址信息、存储库的数量、以及该存储库的宽度,进行行索引计算,确定与该待检测工作项对应的行索引;其中,该行索引用于表征与待检测工作项对应的存储库在共享内存中的行位置。基于与该待检测工作项对应的行索引、通道地址信息、以及该存储库的数量和宽度,进行起始字节索引计算,确定与该待检测工作项对应的存储库中起始字节索引;其中,该起始字节索引用于表征与工作项对应的通道地址在存储库中的起始字节位置。基于与该待检测工作项对应通道的数据格式、以及与该待检测工作项对应的起始字节索引,进行横跨存储库检测,得到横跨存储库检测结果。基于该横跨存储库检测结果,确定与待检测工作项对应的多个通道是否横跨至少两个存储库。
在一个实施例中,该检测模块1506,还用于对于每个第一待检测工作项所对应的每个第一存储库,将第一存储通道数与第一阈值数量进行比较,并将满足通道整合条件的第一存储库,作为整合存储库,并将该整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式。将不满足通道整合条件的第一存储库,作为不整合存储库,并将该不整合存储库中存储的多个第一通道的通道处理模式确定为通道不整合模式。
在一个实施例中,该确定模块1504,还用于在根据该配置信息和该通道信息确定与该待处理工作项对应的存储库不满足通道整合条件的情况下,则直接确定该待处理工作项对应的通道处理模式为通道不整合模式。
上述共享内存的访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储共享内存的访问数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种共享内存的访问方法。
本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种共享内存的访问方法,其特征在于,所述方法包括:
获取共享内存的配置信息,并确定待处理工作项的通道信息;
在根据所述配置信息及通道信息确定与所述待处理工作项对应的存储库满足通道整合条件的情况下,则将所述待处理工作项作为待检测工作项;
基于所述待检测工作项的通道信息,对与所述待检测工作项对应的通道地址进行通道地址连续性检测,以确定与所述待检测工作项对应的通道处理模式,所述通道处理模式包括通道整合模式和通道不整合模式;
基于所述通道处理模式对所述待检测工作项的通道地址进行处理,并基于处理后的通道地址访问所述共享内存。
2.根据权利要求1所述的方法,其特征在于,所述满足通道整合条件之前,所述方法还包括:
根据所述共享内存的配置信息、以及所述待处理工作项的通道信息,确定与所述待处理工作项对应的存储库的存储通道数值;
当所述存储通道数值大于第一阈值数量时,则确定所述待处理工作项所对应的存储库满足通道整合条件。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取与各访问请求分别对应访问信息,并从所述访问信息中提取出各个待处理工作项各自的通道信息;
在所述根据所述共享内存的配置信息、以及所述待处理工作项的通道信息,确定与所述待处理工作项对应的存储库的存储通道数值之前,
对所述访问请求的数量进行判断,若获取到的访问请求的数量小于第二阈值数量,则继续获取访问请求;
若获取到的访问请求的数量达到所述第二阈值数量,则对于每个待处理工作项,均执行所述根据所述共享内存的配置信息、以及所述待处理工作项的通道信息,确定与所述待处理工作项对应的存储库的存储通道数值的步骤。
4.根据权利要求1所述的方法,其特征在于,所述通道信息包含通道的数据格式、以及工作项的通道数,所述基于所述待检测工作项的通道信息,对与所述待检测工作项对应的通道地址进行通道地址连续性检测,以确定与所述待检测工作项对应的通道处理模式,包括:
基于与所述待检测工作项对应的通道地址信息,判断与待检测工作项对应的多个通道是否横跨至少两个存储库;
若与待检测工作项对应的多个通道横跨至少两个存储库,则将相应的待检测工作项作为第一待检测工作项,并将与所述第一待检测工作项对应的多个存储库作为第一存储库;
基于与所述第一待检测工作项对应的第一通道地址信息、第一通道数、以及第一数据格式,对与所述第一待检测工作项对应的第一存储库进行拆分处理,以确定每个第一存储库各自所存储的第一存储通道数;
对于每个第一待检测工作项对应的第一存储库,均基于各第一存储库分别对应的第一存储通道数,确定与相应第一待检测工作项对应的通道处理模式。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若与待检测工作项对应的多个通道未横跨不同的存储库,则将相应的待检测工作项作为第二待检测工作项,并确定与第二待检测工作项对应的通道处理模式为通道整合模式。
6.根据权利要求4所述的方法,其特征在于,所述基于与所述待检测工作项对应的通道地址信息,判断与待检测工作项对应的多个通道是否横跨至少两个存储库,包括:
基于共享内存的配置信息,确定所述共享内存中存储库的数量、以及各个存储库的宽度;
基于与所述待检测工作项对应的通道地址信息、存储库的数量、以及所述存储库的宽度,进行行索引计算,确定与所述待检测工作项对应的行索引;其中,所述行索引用于表征与待检测工作项对应的存储库在共享内存中的行位置;
基于与所述待检测工作项对应的行索引、通道地址信息、以及所述存储库的数量和宽度,进行起始字节索引计算,确定与所述待检测工作项对应的存储库中起始字节索引;其中,所述起始字节索引用于表征与工作项对应的通道地址在存储库中的起始字节位置;
基于与所述待检测工作项对应通道的数据格式、以及与所述待检测工作项对应的起始字节索引,进行横跨存储库检测,得到横跨存储库检测结果;
基于所述横跨存储库检测结果,确定与待检测工作项对应的多个通道是否横跨至少两个存储库。
7.根据权利要求4所述的方法,其特征在于,所述对于每个第一待检测工作项对应的第一存储库,均基于各第一存储库分别对应的第一存储通道数,确定与相应第一待检测工作项对应的通道处理模式,包括:
对于每个第一待检测工作项所对应的每个第一存储库,将第一存储通道数与第一阈值数量进行比较,并将满足通道整合条件的第一存储库,作为整合存储库,并将所述整合存储库中存储的多个第一通道的通道处理模式确定为通道整合模式;
将不满足通道整合条件的第一存储库,作为不整合存储库,并将所述不整合存储库中存储的多个第一通道的通道处理模式确定为通道不整合模式。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括:
在根据所述配置信息和所述通道信息确定与所述待处理工作项对应的存储库不满足通道整合条件的情况下,则直接确定所述待处理工作项对应的通道处理模式为通道不整合模式。
9.一种共享内存的访问装置,其特征在于,所述装置包括:
获取模块,用于获取共享内存的配置信息,并确定待处理工作项的通道信息;
确定模块,用于在根据所述配置信息及通道信息确定与所述待处理工作项对应的存储库满足通道整合条件的情况下,则将所述待处理工作项作为待检测工作项;
检测模块,用于基于所述待检测工作项的通道信息,对与所述待检测工作项对应的通道地址进行通道地址连续性检测,以确定与所述待检测工作项对应的通道处理模式,所述通道处理模式包括通道整合模式和通道不整合模式;
处理模块,用于基于所述通道处理模式对所述待检测工作项的通道地址进行处理,并基于处理后的通道地址访问所述共享内存。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210789015.5A CN117372236A (zh) | 2022-07-06 | 2022-07-06 | 共享内存的访问方法、装置、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210789015.5A CN117372236A (zh) | 2022-07-06 | 2022-07-06 | 共享内存的访问方法、装置、计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117372236A true CN117372236A (zh) | 2024-01-09 |
Family
ID=89404712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210789015.5A Pending CN117372236A (zh) | 2022-07-06 | 2022-07-06 | 共享内存的访问方法、装置、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117372236A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252204A1 (en) * | 2006-10-30 | 2011-10-13 | Nvidia Corporation | Shared single access memory with management of multiple parallel requests |
CN102591589A (zh) * | 2010-11-15 | 2012-07-18 | 三星电子株式会社 | 数据存储设备、用户设备以及数据写方法 |
US20140019672A1 (en) * | 2012-07-13 | 2014-01-16 | Kabushiki Kaisha Toshiba | Memory system and control method thereof |
US20190073316A1 (en) * | 2017-09-05 | 2019-03-07 | NGINX, Inc. | Using Shared Memory To Transport Data Between Server Processes |
WO2021008311A1 (zh) * | 2019-07-12 | 2021-01-21 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
-
2022
- 2022-07-06 CN CN202210789015.5A patent/CN117372236A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252204A1 (en) * | 2006-10-30 | 2011-10-13 | Nvidia Corporation | Shared single access memory with management of multiple parallel requests |
CN102591589A (zh) * | 2010-11-15 | 2012-07-18 | 三星电子株式会社 | 数据存储设备、用户设备以及数据写方法 |
US20140019672A1 (en) * | 2012-07-13 | 2014-01-16 | Kabushiki Kaisha Toshiba | Memory system and control method thereof |
US20190073316A1 (en) * | 2017-09-05 | 2019-03-07 | NGINX, Inc. | Using Shared Memory To Transport Data Between Server Processes |
WO2021008311A1 (zh) * | 2019-07-12 | 2021-01-21 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11706020B2 (en) | Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms | |
US9569454B2 (en) | Selective compression of objects in a storage compute device | |
CN111079917B (zh) | 张量数据分块存取的方法及装置 | |
US9977598B2 (en) | Electronic device and a method for managing memory space thereof | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN105677755A (zh) | 一种处理图数据的方法及装置 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN117251641A (zh) | 向量数据库检索方法、系统、电子设备及存储介质 | |
JP2021532498A (ja) | 畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 | |
US11030714B2 (en) | Wide key hash table for a graphics processing unit | |
CN117372236A (zh) | 共享内存的访问方法、装置、计算机设备 | |
CN111158757A (zh) | 并行存取装置和方法以及芯片 | |
CN111291240A (zh) | 处理数据的方法和数据处理装置 | |
CN115641887A (zh) | 闪存管理方法及闪存设备 | |
US20240143495A1 (en) | Method and apparatus for updating raid 5 check value, and medium | |
CN115456858B (zh) | 图像处理方法、装置、计算机设备及计算机可读存储介质 | |
CN117806709B (zh) | 系统级芯片的性能优化方法、装置、设备和存储介质 | |
US9223708B2 (en) | System, method, and computer program product for utilizing a data pointer table pre-fetcher | |
CN117270789B (zh) | 一种基于分布式存储的数据控制方法、系统及电子设备 | |
CN117873384A (zh) | 数据写入方法、装置和计算机设备 | |
KR20180018269A (ko) | 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 | |
CN117076790A (zh) | 地址匹配方法、装置、计算机设备、存储介质和程序产品 | |
CN115713453A (zh) | 数据处理方法、装置、计算机设备及计算机可读存储介质 | |
CN117251212A (zh) | 数据访存装置、方法、处理器及计算机设备 | |
CN117349320A (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 | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 200135, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Granfei Intelligent Technology Co.,Ltd. Address before: 200135 Room 201, No. 2557, Jinke Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Applicant before: Gryfield Intelligent Technology Co.,Ltd. Country or region before: China |