CN107748723A - 支持无冲突跨步按块访问的存储方法及访存装置 - Google Patents
支持无冲突跨步按块访问的存储方法及访存装置 Download PDFInfo
- Publication number
- CN107748723A CN107748723A CN201710901233.2A CN201710901233A CN107748723A CN 107748723 A CN107748723 A CN 107748723A CN 201710901233 A CN201710901233 A CN 201710901233A CN 107748723 A CN107748723 A CN 107748723A
- Authority
- CN
- China
- Prior art keywords
- access
- memory bank
- memory
- mrow
- address
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/064—Management of blocks
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)
- Image Input (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种支持无冲突跨步按块访问的存储方法和访存装置,该存储方法步骤包括:配置一个大小的二维存储空间;将二维图像中的每个像素点映射到不同的存储体,以支持无冲突跨步按块访问;该访存装置包括首元素存储体编号计算模块、移位信息计算模块、存储体内部地址计算模块、存储体内部地址排序模块以及访存执行模块。本发明能够支持任意地址起始的无冲突跨步按块访问,同时兼具对齐地址的按行访问无冲突,且具有实现方法简单、访问效率高等优点。
Description
技术领域
本发明涉及向量SIMD(Single Instruction Multiple Data,单指令多数据流)处理器存储技术领域,尤其涉及一种支持无冲突跨步按块访问的存储方法及访存装置。
背景技术
向量SIMD处理器中存储***的设计优劣是制约着能否高效发挥性能的重要因素,目前向量SIMD处理器存储***通常是采用由多个存储模块按照一定的方式组织管理的并行存储机制,这种组织方式尤其适合图像、视频等具有2D访存需求的应用,而视频、图像算法需要并行处理的数据往往组成两维(2D)空间的行、列或块,采用传统的向量SIMD处理器映射时会导致访存效率变低。
为解决上述问题,目前通常是采用2D存储机制,2D存储机制是并行存储机制中的一种,即通过X和Y两个坐标来表示存储空间,以保证图像、视频应用在映射数据时像素之间的2D关系不被破坏,有效地提高应用的数据重用性和执行效率,同时显著提高视频图像算法在向量SIMD处理器中的访存效率。2D存储装置地址映射分为两部分:存储体模块映射和存储体内部地址映射,2D存储机制即是通过设置合适的存储体模块映射函数,保证每次向量访存映射到不同的存储体,而存储体内部地址映射函数可以定位到具体的访问位置。
现有技术中的2D存储机制仅可以实现连续的按行、列或块的无冲突访问,但是视频、图像处理算法中一些滑窗类应用(包括卷积神经网络、亚像素差值,2D滤波等)在运算时存在跨步按块无冲突访问的需求,且在运算的子过程中对横向和纵向的跨步需求还不相同,而对于从任意地址起始的跨步按块访问无冲突,和对齐地址的按行访问无冲突问题,目前还尚未有有效的解决方案,因此如何在各种水平跨步、垂直跨步、以及跨步和存储体数目等情况下,均能够确保在不同二维跨步下按块访问时每个元素均映射至不同的存储体中(即无冲突),并兼顾对齐地址的按行访问无冲突是亟待解决的问题。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够支持任意地址起始的无冲突跨步按块访问,同时兼具对齐地址的按行访问无冲突,且实现方法简单、访问效率高的支持无冲突跨步按块访问的存储方法及访存装置。
为解决上述技术问题,本发明提出的技术方案为:
一种支持无冲突跨步按块访问的存储方法,步骤包括:
配置一个二维存储空间,其中每一个元素坐标为(i,j);
将二维图像中的每个像素点映射到不同的存储体,以支持无冲突跨步按块访问,映射公式具体为:
w=i+((j/h)+(j%2)*i/(M*2s')%2*(N/4)*2)*M*2s';
式中,f(w)为映射得到的存储体的编号,M和N分别为按跨步按块访问时数据块在水平方向、垂直方向上包含的元素的个数,且M和N均为2的整数次幂;s和h分别为跨步按块访问时水平方向跨步、垂直方跨步,s=σ*2s',其中σ和2互质。
作为本发明方法的进一步改进:所述将二维图像中的每个像素点映射到不同的存储体后,按照式(2)确定得到每个像素点在存储体内部地址;
g(i,j)=i/(M*N)+j*(Xm/(2*M*N))+i*(Xm*Ym/(2*M*N)) (2)
其中g(i,j)为存储体内部地址。
作为本发明方法的进一步改进,当需要执行读写访问时,读写访问具体步骤为:
S1.首元素存储体编号计算;按照式(1)计算出首元素x0对应的存储体编号b0;
S2.移位信息计算;根据所述首元素x0对应的存储体编号b0和所述水平方向跨步s,计算出对应的移位信息shift_inf;
S3.存储体内部地址计算;由首元素x0的两维地址坐标和水平方向跨步s、垂直方跨步h计算出所需访问元素的两维地址坐标,并根据式(2)计算出所需访问元素在存储体内部地址A;
S4.存储体内部地址排序;根据所述首元素x0对应的存储体编号b0、所述水平方向跨步s对所述存储体内部地址A内部的元素进行排序;
S5.访存执行;如果是写请求,根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择后,写入到不同的存储体中;如果是读请求,在读出数据后根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择。
作为本发明方法的进一步改进:所述步骤S25还包括检测缓冲器的状态以及访存地址是否冲突以产生Busy信号的Busy信号产生步骤。
本发明进一步提供利用上述支持无冲突跨步按块访问的存储方法的访存装置,包括:
首元素存储体编号计算模块,用于按照式(1)计算出首元素x0对应的存储体编号b0;
移位信息计算模块,用于根据所述首元素x0对应的存储体编号b0和所述水平方向跨步s,计算出对应的移位信息shift_inf;
存储体内部地址计算模块,用于由首元素x0的两维地址坐标和水平方向跨步s、垂直方跨步h计算出所需访问元素的两维地址坐标,并根据式(2)计算出所需访问元素在存储体内部地址A;
存储体内部地址排序模块,用于根据所述首元素x0对应的存储体编号b0、所述水平方向跨步s对所述存储体内部地址A内部的元素进行排序。
访存执行模块,用于如果是写请求,根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择后,写入到不同的存储体中;如果是读请求,在读出数据后根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择。
作为本发明装置的进一步改进:所述首元素存储体编号计算模块包括依次连接的用于对水平跨步s进行选择得到访存类型的访存类型判断电路、用于执行取模运算的取模电路以及用于按照式(1)计算存储体编号的存储体编号计算电路,接入访存逻辑地址、水平跨步s后,依次经过所述访存类型判断电路、取模电路、存储体编号计算电路后输出首元素x0对应的存储体编号b0。
作为本发明装置的进一步改进:所述移位信息计算模块包括相互连接的跨步分组电路以及多路选择电路,所述跨步分组电路接收所述水平跨步s,根据所述水平跨步s将跨步分成不同组,输出给所述多路选择电路,所述多路选择电路分别接收所述跨步分组电路的输出、所述首元素x0对应的存储体编号b0,输出不同跨步下所述移位信息shift_inf。
作为本发明装置的进一步改进:所述存储体内部地址排序模块包括逻辑地址计算电路、块内地址偏移电路,所述逻辑地址计算电路根据首元素x0的两维坐标(i,j)和所述水平跨步s计算得到所需访问的各元素的两维坐标,所述块内地址偏移电路根据式(2)计算得到所需访问的各元素在各个存储体内部的偏移。
作为本发明装置的进一步改进:所述访存执行模块包括缓冲器以及用于对写数据进行位置选择的写数据位置选择电路、用于对读数据进行位置选择的读数据位置选择电路,所述写数据位置选择电路接收写移位信息shift_inf、水平跨步s,对原始数据进行位置选择后输出;所述读数据位置选择电路接收读移位信息shift_inf、水平跨步s,读出数据后对原始数据进行位置选择。
作为本发明装置的进一步改进:还包括Busy信号产生电路,所述Busy信号产生电路包括:用于检测读请求和写请求是否访问相同的存储体的读写地址检测电路、用于检测缓冲所处的空满状态的缓冲空满检测电路,以及用于产生Busy信号的Busy产生器,所述Busy产生器当所述读写地址检测电路检测到发生读写冲突、或者所述缓冲空满检测电路检测到缓冲已满时发出Busy信号。
与现有技术相比,本发明的优点在于:
1)本发明充分考虑了各种水平跨步、垂直跨步、以及跨步和存储体数目等情况,设置统一的地址映射方式,通过采用该统一的地址映射方式,能够保证每次访问所需的数据在不同的存储体内,从而实现从任意地址起始的跨步按块访问无冲突,和对齐地址的按行访问无冲突,可以极大的提升滑窗类等存在跨步按块无冲突访问需求的应用的访存效率;
2)本发明通过构成统一的支持无冲突跨步按块访问的映射方式,将二维图像中的每个像素点映射到存储装置的具***置,包括计算得到像素点映射到存储装置内的具体子存储体,以及确定得到该像素点在子存储体中的具***置,使得将图像数据按照该映射方式写入存储装置后,硬件在进行跨步的按块访问时不会发生冲突,实现无冲突跨步按块访问;
3)本发明进一步依次通过首元素存储体编号计算、移位信息计算、存储体内部地址计算、存储体内部地址排序以及访存执行步骤实现读写访问,支持跨步按块无冲突访问的同时,访问效率高,且整个过程以加法、移位和选择逻辑等简单运算为主,开销小且易于实现。
附图说明
图1是本实施例支持无冲突跨步按块访问的存储方法的实现流程示意图。
图2是本实施例支持无冲突跨步按块访问的访存装置的结构示意图。
图3是本实施例中首元素存储体编号计算模块的结构原理示意图。
图4是本实施例中移位信息计算模块的结构原理示意图。
图5是本实施例中存储体内部地址排序模块的结构原理示意图。
图6是本实施例中访存执行模块的结构原理示意图。
图7是本实施例中Busy信号产生模块的结构原理示意图。
图8是具体实施例中并行卷积运算原理示意图。
图9是本发明在具体实施例中第一种横向跨步下存储体编号示意图。
图10是本发明在具体实施例中第二种横向跨步下存储体编号示意图。
图11是本发明在具体实施例中第三种横向跨步下存储体编号示意图。
图12是本发明在具体实施例中第四种横向跨步下存储体编号示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例支持无冲突跨步按块访问的存储方法,步骤包括:
配置一个Xm×Ym大小的二维存储空间,其中每一个元素坐标为(i,j);
将二维图像中的每个像素点映射到不同的存储体,以支持无冲突跨步按块访问,映射公式具体为:
w=i+((j/h)+(j%2)*i/(M*2s')%2*(N/4)*2)*M*2s'
式(1)中,f(w)为存储体的编号,M和N分别为按跨步按块访问时数据块在水平方向、垂直方向上包含的元素的个数,且M和N均为2的整数次幂,M*N与处理器的SIMD宽度和总的存储体数目相同;s和h分别为跨步按块访问时水平方向跨步、垂直方跨步,s=σ*2s',其中σ和2互质,“/”表示取商操作,“%”表示取余数操作。
首先提供一个Xm×Ym(Xm或Ym为2的整数次幂)大小的2D存储空间,其中每一个元素用坐标(i,j)表示;进一步设n=log2(M*N),并且将s表示为s=σ*2s'的形式,其中σ和2互质,将坐标为(i,j)的元素按照式(1)映射到存储体,得到存储体编号f(w)。
本实施例充分考虑了各种水平跨步、垂直跨步、以及跨步和存储体数目的多少关系等情况,设置如式(1)统一的地址映射函数,通过采用该统一的地址映射方式,能够保证每次访问所需的数据在不同的存储体内,从而实现从任意地址起始的跨步按块访问无冲突,和对齐地址的按行访问无冲突,可以极大的提升滑窗类等存在跨步按块无冲突访问需求的应用的访存效率。
在确定存储体映射函数后,可进一步确定坐标为(i,j)的元素在存储体内部地址。本实施例中,将二维图像中的每个像素点映射到不同的存储体后,按照式(2)确定得到每个像素点在存储体内部地址;
g(i,j)=i/(M*N)+j*(Xm/(2*M*N))+i*(Xm*Ym/(2*M*N)) (2)
其中g(i,j)为存储体内部地址。
本实施例基于上述式(1)、(2)构成统一的支持无冲突跨步按块访问的映射方式,将二维图像中的每个像素点映射到存储装置的具***置,其中通过式(1)计算得到像素点映射到存储装置内的具体子存储体,通过式(2)进一步确定得到该像素点在子存储体中的具***置,将图像数据按照上述映射方式写入存储装置,硬件在进行跨步的按块访问时不会发生冲突,实现无冲突跨步按块访问。
本实施例基于上述存储方法,当需要执行读写访问时,由访存请求携带按块的左上角元素或按行的第一个元素x0的两维地址坐标以及访问类型(跨步按块或按行),读写访问具体步骤为:
S1.首元素存储体编号计算;按照式(1)计算出首元素x0对应的存储体b0;
S2.移位信息计算;根据首元素x0对应的存储体b0和水平方向跨步s,计算出对应的移位信息shift_inf,移位信息shift_inf用于数据写入缓冲器和从缓冲器中读出数据排序;
S3.存储体内部地址计算;由首元素x0的两维地址坐标和水平方向跨步s、垂直方跨步h计算出所需访问元素的两维地址坐标,并根据式(2)计算出所需访问元素在存储体内部地址A;
S4.存储体内部地址排序;根据首元素x0对应的存储体b0、水平方向跨步s对存储体内部地址A内部的元素进行排序;
S5.访存执行;如果是写请求,根据移位信息shift_inf和水平方向跨步s对原始数据进行位置选择后,写入到不同的存储体中;如果是读请求,在读出数据后根据移位信息shift_inf和水平方向跨步s对原始数据进行位置选择。
上述各步骤可以采用一站完成,也可以采用多站流水的方式完成。
本实施例中,步骤S25还包括检测缓冲器的状态以及访存地址是否冲突以产生Busy信号的Busy信号产生步骤。
本实施例上述读写访问步骤,支持跨步按块无冲突访问的同时,访问效率高,整个过程以加法、移位和选择逻辑等简单运算为主,开销小且易于实现。
如图2所示,本实施例利用上述支持无冲突跨步按块访问的存储方法的访存装置,包括:
首元素存储体编号计算模块,用于按照式(1)计算出首元素x0对应的存储体b0;
移位信息计算模块,用于根据首元素x0对应的存储体b0和水平方向跨步s,计算出对应的移位信息shift_inf;
存储体内部地址计算模块,用于由首元素x0的两维地址坐标和水平方向跨步s、垂直方跨步h计算出所需访问元素的两维地址坐标,并根据式(2)计算出所需访问元素在存储体内部地址A;
存储体内部地址排序模块,用于根据首元素x0对应的存储体b0、水平方向跨步s对存储体内部地址A内部的元素进行排序。
访存执行模块;用于如果是写请求,根据移位信息shift_inf和水平方向跨步s对原始数据进行位置选择后,写入到不同的存储体中;如果是读请求,在读出数据后根据移位信息shift_inf和水平方向跨步s对原始数据进行位置选择。
通过上述访存装置,结构简单、所需成本低,且能够保证每次访问所需的数据在不同的存储体内,从而实现从任意地址起始的跨步按块访问无冲突,和对齐地址的按行访问无冲突,可以极大的提升滑窗类等存在跨步按块无冲突访问需求的应用的访存效率。
如图3所示,本实施例首元素存储体编号计算模块具体包括依次连接的用于对水平跨步s进行选择得到访存类型的访存类型判断电路、用于执行取模运算的取模电路以及用于按照式(1)计算存储体编号的存储体编号计算电路,接入访存逻辑地址、水平跨步s后,依次经过访存类型判断电路、取模电路、存储体编号计算电路后输出首元素x0对应的存储体编号b0。
首先通过访存类型判断电路根据水平跨步确定访存类型,即先确定公式(1)中s'的值,本实施例具体通过多路选择器对水平跨步进行选择得到访存类型s';由于公式(1)中需要进行取模操作,本实施例设置取模电路以执行取模操作;存储体编号计算电路具体为由移位、相加等部件构成的硬件结构,以通过硬件结构实现公式(1)的运算,最终得到本次访存首元素对应的存储体编号b0。
如图4所示,本实施例移位信息计算模块具体包括相互连接的跨步分组电路以及多路选择电路,跨步分组电路接收水平跨步s,根据水平跨步s将跨步分成不同组,输出给多路选择电路,多路选择电路分别接收跨步分组电路的输出、首元素x0对应的存储体b0,输出不同跨步下移位信息shift_inf。
由于写操作和读操作支持的访问类型不同,读操作支持数据从任意地址起始的跨步按块访问,而写操作支持数据对齐的按行写入,因此写移位信息和读移位信息的计算方式也不相同,其中读移位信息计算时,先根据水平跨步将跨步分成不同组,再结合首元素的存储体编号b0通过数据选择器来确定不同跨步下移位信息shift_inf;写移位信息时,将首元素两维坐标中的纵坐标进行取模操作(模1~15),根据垂直跨步进行选择。
如图5所示,本实施例存储体内部地址排序模块包括逻辑地址计算电路、块内地址偏移电路,逻辑地址计算电路根据首元素x0的两维坐标(i,j)和水平跨步s计算得到所需访问的各元素的两维坐标,块内地址偏移电路根据式(2)计算得到所需访问的各元素在各个存储体内部的偏移。
如图6所示,本实施例访存执行模块包括缓冲器以及用于对写数据进行位置选择的写数据位置选择电路、用于对读数据进行位置选择的读数据位置选择电路,写数据位置选择电路接收写移位信息shift_inf、水平跨步s,对原始数据进行位置选择后输出;读数据位置选择电路接收读移位信息shift_inf、水平跨步s,读出数据后对原始数据进行位置选择。
访存实施模块的逻辑分为两部分,如果是写请求,由于用户发送的待写入存储体数据是连续的,而实际写入到存储体中并不是连续的,需要根据写shift_inf和s对原始数据进行位置选择,从而写入到不同的存储体中;如果是读请求,从各个存储体中读出的数据需要按一定的要求排列好后提供给用户,因此在读出数据后根据shift_inf和s对原始数据进行位置选择。
如图7所示,本实施例还包括Busy信号产生电路,Busy信号产生电路包括:用于检测读请求和写请求是否访问相同的存储体的读写地址检测电路、用于检测缓冲所处的空满状态的缓冲空满检测电路,以及用于产生Busy信号的Busy产生器,Busy产生器当读写地址检测电路检测到发生读写冲突、或者缓冲空满检测电路检测到缓冲已满时发出Busy信号。
如果访问同一个存储体则会发生访存冲突,此时需要停止发送访存请求,否则会导致数据丢失,通过读写地址检测电路来检测读写请求是否发生访存冲突;缓冲空满检测电路检测缓冲所处的空满状态,本实施例缓冲器遵循先读后写的原则,以乒乓缓冲为例:设计一个两位的寄存器用来标示缓冲状态,总共有4种状态:00,01,10,11,其中00对应为“乒乓”缓冲均为空,01对应为“乒乓”缓冲中的乓缓冲已满,10对应为“乒乓”缓冲中的乒缓冲已满,11对应为“乒乓”缓冲均已满;Busy产生器分别接收读写地址检测电路、缓冲空满检测电路的检测输出,根据检测到的缓冲状态和读写访问情况产生Busy信号,当发生读写冲突或者缓冲已满(状态为11)时发出Busy信号,此时不再接受信号访存请求。
本实施例上述访存装置,由加法、移位和选择逻辑等简单逻辑电路构成,硬件开销小且易于实现。
以下以按4*2(M=4,N=2)的块进行向量访存为例对本发明进行进一步说明,其中缓冲装置采用“乒乓”机制。
图8是具体实施例中执行并行卷积运算示意图,其中卷积运算水平跨步和垂直跨步均为2,卷积核尺寸为3*3。并行计算M*N个输出图像像素点的卷积需要在一拍内从缓冲器获取M*N个图像数据,卷积和数据一拍只需要读出一个,这样9拍便可以计算出8个输出图像像素点的结果。
为避免访存冲突必须保证这些数据分布在不同的存储体内,需要对缓冲进行特定的编址,但是卷积运算存在的跨步进一步增加了缓冲的设计难度。本实施例通过采用上述存储方法对数据进行存储,即通过式(1)计算得到像素点映射到存储装置内的具体子存储体,通过式(2)进一步确定得到该像素点在子存储体中的具***置,以及依次经过首元素存储体编号计算、移位信息计算、存储体内部地址计算、存储体内部地址排序以及访存执行步骤实现读写访问,能够使得在进行跨步的按块访问时不会发生冲突,实现无冲突跨步按块访问。
本实施通过上述访存装置实现无冲突跨步按块访问的具体步骤为:首元素存储体编号计算模块根据用户提供的两维坐标(i,j)和水平跨步s,利用公式(1)计算得到首元素映射到存储体编号b0;移位信息计算模块利用首元素存储体编号b0和水平跨步s得到数据移位信息shift_inf,shift_inf用于数据写入存储体和从存储体中读出数据排序;存储体内部地址排序模块根据首元素的两维坐标(i,j)和水平跨步s计算得到本次需要的8个元素的两维坐标并根据公式(2)计算得到这8个元素在各个存储体内部的偏移;访存执行模块根据shift_inf和s对原始数据进行位置选择,写入到不同的存储体中,以及在读出数据后根据shift_inf和s对原始数据进行位置选择;Busy信号产生电路通过检测缓冲器的状态以及访存地址是否冲突产生Busy信号。
如图9~12所示为本实施例在跨步不同的情况下2D缓冲器编址示意图,SIMD宽度为8,以下以8个(M=4,N=2)存储体个数为例进行说明,支持横向跨步范围为1~15,此时存储体编址函数(式(1))此时可以简化为:
f(w)=(w+(w/8)%s′)%8 (3)
w=i+(j/h)*4s' (4)
根据不同水平跨步的范围,将上述存储体模块映射函数可分为四种情况:
①水平跨步s=1,3,5,7,9,11,13,15
当横向跨步s为1,3,5,7,9,11,13,15时,存储体模块编号如图9所示,具体的编址方式根据公式(5)、(6)确定,此时s'=0:
f(w)=w%8 (5)
w=i+(j/h)*4 (6)
如图9所示,二维缓冲器的水平方向周期为8,图中填充方块部分表示非对齐跨步按块访问,从逻辑地址从(1,0)起始、横向跨步为3,且纵向跨步任意,按4*2的块读取逻辑地址为(1,0)、(4,0)、(7,0)、(10,0)、(0,j)、(4,j)、(7,j)(10,j)的8个数,通过公式(5)和(6),上述8个逻辑地址分别映射到0~7的8个存储体内,即可以确保访存不发生冲突;斜杠方块表示对齐按行连续访存,由于缓冲器水平方向周期为8,所以映射得到的8个物理地址均在不同的存储体内,访存不会发生冲突。即从图8可以看出,从任意地址起始的非对齐的按块跨步访问和对齐的按行访问均不会发生访存冲突。
②水平跨步s=2,6,10,14
横向跨步s为2,6,10,14时,存储体模块编号如图10所示,具体的编址方式根据公式(7)、(8)确定,此时s'=1:
f(w)=(w+(w/8)%2)%8 (7)
w=i+(j/h)*8 (8)
如图10所示,二维缓冲器的水平方向周期为16,图中填充方块部分表示非对齐跨步按块访问,从逻辑地址从(1,0)起始、横向跨步为2,以及纵向跨步任意,按4*2的块每拍读取逻辑地址为(1,0)、(3,0)、(5,0)、(7,0)、(1,j)、(3,j)、(5,j)(7,j)的8个数;上述8个逻辑地址根据公式(7)(8)映射得到的物理地址分别落在不同的存储体内;斜杠方块表示对齐按行访问,同样8个物理地址均在不同的存储体内。即从图9可以看出,从任意地址起始的非对齐的按块跨步访问和对齐的按行访问均不会发生访存冲突。
③水平跨步s=4,12
横向跨步s为4,12时,存储体的编号如图10所示,具体的编址方式根据公式(9)、(19)确定,此时s'=2:
f(w)=(w+(w/8)%4)%8 (9)
w=i+(j/h)*16 (10)
如图11所示,二维缓冲器的水平方向周期为16,图中填充方块部分表示非对齐跨步按块访问,从逻辑地址从(1,0)起始,横向跨步为4,纵向跨步任意,按4*2的块,每拍读取逻辑地址为(1,0)、(5,0)、(9,0)、(13,0)、(1,j)、(5,j)、(9,j)(13,j)的8个数;上述8个逻辑地址根据公式(9)(10)映射得到的物理地址分别落在不同的存储体内;斜杠方块表示对齐按行访问,同样8个物理地址均在不同的存储体内。即从图11可以看出,任意地址起始的非对齐的按块跨步访问和对齐的按行访问均不会发生访存冲突。
④水平跨步s=8
横向跨步s为8时,存储体的编号如图11所示,具体的编址方式根据公式(11)、(12)确定,此时s'=3:
f(w)=(w+(w/8)%8)%8 (11)
w=i+(j/h)*32 (12)
如图12所示,二维缓冲器的水平方向周期为16,图中填充方块部分表示非对齐跨步按块访问,从逻辑地址从(1,0)起始、横向跨步为2以及纵向跨步任意,按4*2的块每拍读取逻辑地址为(1,0)、(9,0)、(17,0)、(25,0)、(1,j)、(9,j)、(17,j)(25,j)的8个数;上述8个逻辑地址根据公式(11)(12)映射得到的物理地址分别落在不同的存储体内;斜杠方块表示对齐按行访问,同样8个物理地址均在不同的存储体内。即从图12可以看出,任意地址起始的非对齐的按块跨步访问和对齐的按行访问均不会发生访存冲突。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种支持无冲突跨步按块访问的存储方法,其特征在于,步骤包括:
配置一个二维存储空间,其中每一个元素坐标为(i,j);
将二维图像中的每个像素点映射到不同的存储体,以支持无冲突跨步按块访问,映射公式具体为:
<mrow>
<mi>f</mi>
<mrow>
<mo>(</mo>
<mi>w</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mo>(</mo>
<mi>w</mi>
<mo>+</mo>
<mo>(</mo>
<mrow>
<mi>w</mi>
<mo>/</mo>
<mrow>
<mo>(</mo>
<mrow>
<mi>M</mi>
<mo>*</mo>
<mi>N</mi>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
<mo>)</mo>
<mi>%</mi>
<msup>
<mn>2</mn>
<msup>
<mi>s</mi>
<mo>&prime;</mo>
</msup>
</msup>
<mo>)</mo>
<mi>%</mi>
<mo>(</mo>
<mi>M</mi>
<mo>*</mo>
<mi>N</mi>
<mo>)</mo>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<msup>
<mi>s</mi>
<mo>&prime;</mo>
</msup>
<mo>&le;</mo>
<mi>n</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>(</mo>
<mi>w</mi>
<mo>+</mo>
<mfrac>
<mrow>
<mi>w</mi>
<mo>/</mo>
<mrow>
<mo>(</mo>
<mrow>
<mi>M</mi>
<mo>*</mo>
<mi>N</mi>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
<msup>
<mn>2</mn>
<mrow>
<msup>
<mi>s</mi>
<mo>&prime;</mo>
</msup>
<mo>-</mo>
<mi>n</mi>
</mrow>
</msup>
</mfrac>
<mo>)</mo>
<mi>%</mi>
<mo>(</mo>
<mi>M</mi>
<mo>*</mo>
<mi>N</mi>
<mo>)</mo>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<msup>
<mi>s</mi>
<mo>&prime;</mo>
</msup>
<mo>></mo>
<mi>n</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
w=i+((j/h)+(j%2)*i/(M*2s')%2*(N/4)*2)*M*2s';
式中,f(w)为映射得到的存储体的编号,M和N分别为按跨步按块访问时数据块在水平方向、垂直方向上包含的元素的个数,且M和N均为2的整数次幂;s和h分别为跨步按块访问时水平方向跨步、垂直方跨步,s=σ*2s',其中σ和2互质。
2.根据权利要求1所述的支持无冲突跨步按块访问的存储方法,其特征在于:所述将二维图像中的每个像素点映射到不同的存储体后,按照式(2)确定得到每个像素点在存储体内部地址;
g(i,j)=i/(M*N)+j*(Xm/(2*M*N))+i*(Xm*Ym/(2*M*N)) (2)
其中g(i,j)为存储体内部地址。
3.根据权利要求2所述的支持无冲突跨步按块访问的存储方法,其特征在于,当需要执行读写访问时,读写访问具体步骤为:
S1.首元素存储体编号计算;按照式(1)计算出首元素x0对应的存储体编号b0;
S2.移位信息计算;根据所述首元素x0对应的存储体编号b0和所述水平方向跨步s,计算出对应的移位信息shift_inf;
S3.存储体内部地址计算;由首元素x0的两维地址坐标和水平方向跨步s、垂直方跨步h计算出所需访问元素的两维地址坐标,并根据式(2)计算出所需访问元素在存储体内部地址A;
S4.存储体内部地址排序;根据所述首元素x0对应的存储体编号b0、所述水平方向跨步s对所述存储体内部地址A内部的元素进行排序;
S5.访存执行;如果是写请求,根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择后,写入到不同的存储体中;如果是读请求,在读出数据后根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择。
4.根据权利要求3所述的支持无冲突跨步按块访问的存储方法,其特征在于,所述步骤S25还包括检测缓冲器的状态以及访存地址是否冲突以产生Busy信号的Busy信号产生步骤。
5.一种利用权利要求1~4中任意一项所述的支持无冲突跨步按块访问的存储方法的访存装置,其特征在于,包括:
首元素存储体编号计算模块,用于按照式(1)计算出首元素x0对应的存储体编号b0;
移位信息计算模块,用于根据所述首元素x0对应的存储体编号b0和所述水平方向跨步s,计算出对应的移位信息shift_inf;
存储体内部地址计算模块,用于由首元素x0的两维地址坐标和水平方向跨步s、垂直方跨步h计算出所需访问元素的两维地址坐标,并根据式(2)计算出所需访问元素在存储体内部地址A;
存储体内部地址排序模块,用于根据所述首元素x0对应的存储体编号b0、所述水平方向跨步s对所述存储体内部地址A内部的元素进行排序;
访存执行模块,用于如果是写请求,根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择后,写入到不同的存储体中;如果是读请求,在读出数据后根据所述移位信息shift_inf和所述水平方向跨步s对原始数据进行位置选择。
6.根据权利要求5所述的访存装置,其特征在于,所述首元素存储体编号计算模块包括依次连接的用于对水平跨步s进行选择得到访存类型的访存类型判断电路、用于执行取模运算的取模电路以及用于按照式(1)计算存储体编号的存储体编号计算电路,接入访存逻辑地址、水平跨步s后,依次经过所述访存类型判断电路、取模电路、存储体编号计算电路后输出首元素x0对应的存储体编号b0。
7.根据权利要求6所述的访存装置,其特征在于:所述移位信息计算模块包括相互连接的跨步分组电路以及多路选择电路,所述跨步分组电路接收所述水平跨步s,根据所述水平跨步s将跨步分成不同组,输出给所述多路选择电路,所述多路选择电路分别接收所述跨步分组电路的输出、所述首元素x0对应的存储体编号b0,输出不同跨步下所述移位信息shift_inf。
8.根据权利要求7所述的访存装置,其特征在于:所述存储体内部地址排序模块包括逻辑地址计算电路、块内地址偏移电路,所述逻辑地址计算电路根据首元素x0的两维坐标(i,j)和所述水平跨步s计算得到所需访问的各元素的两维坐标,所述块内地址偏移电路根据式(2)计算得到所需访问的各元素在各个存储体内部的偏移。
9.根据权利要求8所述的访存装置,其特征在于:所述访存执行模块包括缓冲器以及用于对写数据进行位置选择的写数据位置选择电路、用于对读数据进行位置选择的读数据位置选择电路,所述写数据位置选择电路接收写移位信息shift_inf、水平跨步s,对原始数据进行位置选择后输出;所述读数据位置选择电路接收读移位信息shift_inf、水平跨步s,读出数据后对原始数据进行位置选择。
10.根据权利要求5~9中任意一项所述的访存装置,其特征在于,还包括Busy信号产生电路,所述Busy信号产生电路包括:用于检测读请求和写请求是否访问相同的存储体的读写地址检测电路、用于检测缓冲所处的空满状态的缓冲空满检测电路,以及用于产生Busy信号的Busy产生器,所述Busy产生器当所述读写地址检测电路检测到发生读写冲突、或者所述缓冲空满检测电路检测到缓冲已满时发出Busy信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710901233.2A CN107748723B (zh) | 2017-09-28 | 2017-09-28 | 支持无冲突跨步按块访问的存储方法及访存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710901233.2A CN107748723B (zh) | 2017-09-28 | 2017-09-28 | 支持无冲突跨步按块访问的存储方法及访存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107748723A true CN107748723A (zh) | 2018-03-02 |
CN107748723B CN107748723B (zh) | 2020-03-20 |
Family
ID=61256004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710901233.2A Active CN107748723B (zh) | 2017-09-28 | 2017-09-28 | 支持无冲突跨步按块访问的存储方法及访存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107748723B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635235A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种自共轭矩阵的三角部分存储装置和并行读取方法 |
CN109710309A (zh) * | 2018-12-24 | 2019-05-03 | 安谋科技(中国)有限公司 | 减少存储体冲突的方法 |
CN111209244A (zh) * | 2018-11-21 | 2020-05-29 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN111813722A (zh) * | 2019-04-10 | 2020-10-23 | 北京灵汐科技有限公司 | 基于共享内存的数据读写方法,***及可读存储介质 |
CN112445713A (zh) * | 2019-08-15 | 2021-03-05 | 辉达公司 | 用于对内存有效分区的技术 |
CN114780459A (zh) * | 2022-04-06 | 2022-07-22 | Oppo广东移动通信有限公司 | 控制模块、存储***及控制方法 |
CN114827091A (zh) * | 2022-04-25 | 2022-07-29 | 珠海格力电器股份有限公司 | 一种物理地址冲突的处理方法、装置及通信设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159130A1 (en) * | 2010-12-21 | 2012-06-21 | Mikhail Smelyanskiy | Mechanism for conflict detection using simd |
US8731051B1 (en) * | 2006-02-10 | 2014-05-20 | Nvidia Corporation | Forward and inverse quantization of data for video compression |
CN104699624A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 面向fft并行计算的无冲突存储访问方法 |
CN105843591A (zh) * | 2016-04-08 | 2016-08-10 | 龙芯中科技术有限公司 | 多维数组滑动生成数据的方法、装置及处理器 |
-
2017
- 2017-09-28 CN CN201710901233.2A patent/CN107748723B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8731051B1 (en) * | 2006-02-10 | 2014-05-20 | Nvidia Corporation | Forward and inverse quantization of data for video compression |
US20120159130A1 (en) * | 2010-12-21 | 2012-06-21 | Mikhail Smelyanskiy | Mechanism for conflict detection using simd |
CN103262058A (zh) * | 2010-12-21 | 2013-08-21 | 英特尔公司 | 利用simd进行冲突检测的机制 |
CN104699624A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 面向fft并行计算的无冲突存储访问方法 |
CN105843591A (zh) * | 2016-04-08 | 2016-08-10 | 龙芯中科技术有限公司 | 多维数组滑动生成数据的方法、装置及处理器 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635235A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种自共轭矩阵的三角部分存储装置和并行读取方法 |
CN111209244A (zh) * | 2018-11-21 | 2020-05-29 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN111209244B (zh) * | 2018-11-21 | 2022-05-06 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN109710309A (zh) * | 2018-12-24 | 2019-05-03 | 安谋科技(中国)有限公司 | 减少存储体冲突的方法 |
CN109710309B (zh) * | 2018-12-24 | 2021-01-26 | 安谋科技(中国)有限公司 | 减少存储体冲突的方法 |
CN111813722A (zh) * | 2019-04-10 | 2020-10-23 | 北京灵汐科技有限公司 | 基于共享内存的数据读写方法,***及可读存储介质 |
CN111813722B (zh) * | 2019-04-10 | 2022-04-15 | 北京灵汐科技有限公司 | 基于共享内存的数据读写方法,***及可读存储介质 |
CN112445713A (zh) * | 2019-08-15 | 2021-03-05 | 辉达公司 | 用于对内存有效分区的技术 |
CN114780459A (zh) * | 2022-04-06 | 2022-07-22 | Oppo广东移动通信有限公司 | 控制模块、存储***及控制方法 |
CN114827091A (zh) * | 2022-04-25 | 2022-07-29 | 珠海格力电器股份有限公司 | 一种物理地址冲突的处理方法、装置及通信设备 |
CN114827091B (zh) * | 2022-04-25 | 2023-06-20 | 珠海格力电器股份有限公司 | 一种物理地址冲突的处理方法、装置及通信设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107748723B (zh) | 2020-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107748723A (zh) | 支持无冲突跨步按块访问的存储方法及访存装置 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
RU2623806C1 (ru) | Способ и устройство обработки стереоизображений | |
CN102460503B (zh) | 显示源图像的变形版本的设备和方法 | |
CN108681984A (zh) | 一种3*3卷积算法的加速电路 | |
US10621446B2 (en) | Handling perspective magnification in optical flow processing | |
KR101639574B1 (ko) | 적응적 뱅크 어드레스를 제공하는 디스플레이 시스템 및 그것의 어드레스 맵핑 방법 | |
CN104699465B (zh) | 向量处理器中支持simt的向量访存装置和控制方法 | |
CN208766715U (zh) | 3*3卷积算法的加速电路 | |
CN110163338B (zh) | 具有运算阵列的芯片运算方法、装置、终端及芯片 | |
CN106683158A (zh) | 一种GPU纹理映射非阻塞存储Cache的建模结构 | |
JP3639464B2 (ja) | 情報処理システム | |
CN106021182A (zh) | 一种基于二维fft处理器的行转置架构设计方法 | |
CN110390382B (zh) | 一种带新型特征图缓存模块的卷积神经网络硬件加速器 | |
CN106530209A (zh) | 一种基于fpga的图像旋转方法及装置 | |
CN111861883B (zh) | 基于同步积分surf算法的多路视频拼接方法 | |
CN110637461A (zh) | 计算机视觉***中的致密光学流处理 | |
CN103760525A (zh) | 一种补齐式原地矩阵转置方法 | |
CN102592258B (zh) | 一种适用于指纹图像增强的可配置Gabor滤波硬件加速单元 | |
CN107563080B (zh) | 基于gpu的两相介质随机模型并行生成方法、电子设备 | |
CN106780415A (zh) | 一种直方图统计电路及多媒体处理*** | |
CN117115200A (zh) | 用于致密光学流的阶层式数据组织 | |
CN104869284A (zh) | 一种双线性插值放大算法的高效率fpga实现方法和装置 | |
CN101796845A (zh) | 运动图像编码中的运动搜索装置 | |
CN1105358C (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 |