CN105354153B - 一种紧耦合异构多处理器数据交换缓存的实现方法 - Google Patents
一种紧耦合异构多处理器数据交换缓存的实现方法 Download PDFInfo
- Publication number
- CN105354153B CN105354153B CN201510809896.2A CN201510809896A CN105354153B CN 105354153 B CN105354153 B CN 105354153B CN 201510809896 A CN201510809896 A CN 201510809896A CN 105354153 B CN105354153 B CN 105354153B
- Authority
- CN
- China
- Prior art keywords
- atom
- stream
- reservation
- processor
- 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.)
- Expired - Fee Related
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
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种紧耦合异构多处理器数据交换缓存的实现方法。处理器间数据交换单元为元素,每个元素划分为多个固定长度的原子,采用核间共享的最后一级缓存的部分空间存储交换中的元素,各原子以任意数量、任意顺序在处理器和最后一级缓存间传输,并由最后一级缓存控制器维护各元素原子间存储顺序和空间。本发明避免处理器间临时数据交换引入不必要的访存带宽和内存空间占用,允许不同的处理器以最合适的访存模式访问交换的数据。并且由最后一级缓存控制器管理共享数据的空间使用,去除了各个处理器各自管理的负担。
Description
技术领域
本发明涉及一种数据交换缓存的实现方法,尤其是涉及一种紧耦合异构多处理器数据交换缓存的实现方法。
背景技术
紧耦合异构多处理器架构中各个异构处理器核心通过片上互联相互连接,并共享内存,通常也共享最后一级缓存。典型的架构如CPU和GPU通过第三级缓存相连,并在共享的内存中进行数据交换。但是传统的由内存存储,缓存加速的数据交换方式并不适合在处理器间进行细粒度、大规模的临时数据传输。由于这些临时数据仅仅作为处理器间计算的中间结果,存入内存将带来不必要的访存带宽开销和空间占用。
另一方面,当传输的单个数据元素大小超过一次访存请求所支持的大小时,这个元素需要被划分为小块多次访问。然而异构处理器的访存模式差别很大,例如CPU中每个线程独立发送各自的访存请求,而GPU中以单指令多数据的方式执行的一批线程会同时发送多个访存请求,这些请求若访问相邻的地址则会被融合成单个请求以降低访存系统的负担。不同的处理器访问内存时,最适合的数据布局不同,因此传统的共享内存方式进行数据交换无法达到在各个不同的访存模式下都能有最佳的访问效率。并且由于不同处理器的访存模式不同,由各处理器上执行的代码分别管理共享内存空间也比较困难。
发明内容
为了解决背景技术中存在的问题,本发明所要解决的技术问题在于提供一种紧耦合异构多处理器数据交换缓存的实现方法。
本发明所采用的技术方案是:
一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于包括以下步骤:
1.1)处理器间数据交换单元为元素,每个元素划分为多个固定长度的原子;
1.2)采用核间共享的最后一级缓存的部分空间存储交换中的元素;1.3)各原子以任意数量、任意顺序在处理器和最后一级缓存间传输;1.4)并由最后一级缓存控制器维护各元素原子间存储顺序和空间。
其中步骤1.1)进一步包括:原子的长度固定为各个处理器的自然字长中的最小值,按照各原子在一个元素中的顺序对原子递增编号。
其中步骤1.2)进一步包括:
3.1)交换空间的大小根据应用需求任意分配,关闭所分配的这部分空间原缓存控制逻辑;
3.2)原缓存存储组织中每一缓存行存储属于不同元素的同一编号的原子;
3.3)连续的缓存行存储这些缓存行中元素的连续编号的原子,组成一批完整元素的所有缓存行称为元素块,一个所述的元素块的大小为一个缓存行的大小乘以每个元素的原子数。
其中步骤1.3)进一步包括:
4.1)使用所述的缓存交换数据时,各处理器根据执行的线程宽度决定每次访问的元素数量;
4.2)首先发送读或写预约请求检查缓存中是否有足够的空闲空间或足够的元素可满足本次访问所需的元素数量,若不满足则预约请求失败并重试直到成功,若预约请求成功,处理器从请求响应中得到即将访问的元素地址,所述的元素地址包括本次请求访问的第一个元素所在缓存行地址和这个元素在这个缓存行内的偏移量;
4.3)处理器在预约请求成功后以任意的顺序发出此元素中每个原子的访问请求,每个原子的访问请求中给出所述的元素地址、元素数量和此请求访问的原子序号。
其中步骤1.4)进一步包括:
5.1)最后一级缓存控制器在缓存中存储额外的流队列,其中每个流与一个所述的元素块对应,用于记录元素块的已预约写入元素数、已预约读取元素数、写入的原子总数和读取的原子数总数;
5.2)所述的预约读请求从流队列头部开始处理,所述的预约写请求从流队列尾部开始处理,最后一级缓存控制器使用一个部分读指针指向下一个预约读将检查的流,初始时缓存为空,队头、队尾和所述的部分读指针指向同一个位置;
5.3)最后一级缓存控制器接收到所述的预约写请求时,检查队尾是否有足够的空间可写,并发送预约结果给处理器;
5.4)最后一级缓存控制器接收到所述的预约读请求时,检查部分读指针指向的流是否有足够的元素可读,并发送预约结果给处理器;
5.5)最后一级缓存控制器接收到所述的原子的访问请求时,根据请求中的元素地址和原子序号计算此请求访问的所有原子地址,并访问相应的原子的数据;
5.6)最后一级缓存控制器释放已被读完的元素块及相应的流。
其中步骤5.3)进一步包括:
6.1)检查流队列队尾的流的已预约写入元素数,当剩余可写元素数不足时尝试从队尾后获取一个新的流,若当前流剩余足够的可写元素或申请新的流成功则预约成功,否则预约失败;
6.2)若预约失败,返回预约失败给发出请求的处理器;
6.3)若预约成功,返回相应的元素地址给发出请求的处理器,其中元素地址中的第一个元素所在缓存行地址为队尾流的缓存行,元素地址中元素在这个缓存行内的偏移量为队尾流的已预约写入元素数;
6.4)若预约成功,根据预约数量递增队尾流的已预约写入元素数,若申请了新的流,则递增队尾到新的流,并更新这个流的已预约写入元素数为去掉前一个流本次预约写入数量后剩余的预约元素数量。
其中步骤5.4)进一步包括:
7.1)当流位于队头和队尾之间,并且此流的写入的原子总数等于已预约写入元素数乘以每个元素的原子数时此流可读;
7.2)一个流的剩余可读元素为此流的已预约写入元素数和已预约读取元素数差值;
7.3)若部分读指针指向的流可读且剩余可读元素不小于预约请求的元素数,或部分读指针指向的流和下一个流均可读且这两个流的剩余可读元素总和不小于请求的所需元素数,则预约成功,否则预约失败;
7.4)若预约失败,返回预约失败给发出请求的处理器;
7.5)若预约成功,返回相应的元素地址给发出请求的处理器,其中元素地址的第一个元素所在缓存行地址为部分读指针指向的流的缓存行,元素地址中元素在这个缓存行内的偏移量为部分读指针指向的流的已预约读取元素数;
7.6)若预约成功,根据预约数量递增部分读指针指向的流的已预约读取元素数,若这个流的剩余可读元素不足,则更新部分读指针指向队列中的下一个流,并递增这个流的已预约读取元素数为预约请求的元素数减去上一个流本次预约元素数量。
其中步骤5.5)进一步包括:
8.1)访问的首个原子地址为,元素地址中的第一个元素所在缓存行地址加上原子序号与每个缓存行大小之积再加上元素地址中的元素在这个缓存行内的偏移;
8.2)访问的后续原子地址在首个原子地址向后递增;
8.3)对于写访问当后续原子数量超过所在流能存储的最大原子数量,或对于读访问当后续原子数量超过所在流的剩余可读元素数时,第一个超过的原子称为后续流首个原子,后续流首个原子的地址为,所述的首个原子的地址加上一个所述的元素块的大小;
8.4)后续流首个原子之后的原子按照后续流首个原子的地址向后递增。
其中步骤5.5)进一步包括:
9.1)对于所述的原子的写访问请求,从所述的首个原子的地址开始按序写入请求中的所有原子,并递增流的写入的原子总数,直到全部写入或用完首个原子所在流的剩余空间,若此流的剩余空间用完后仍有剩余原子没有写入,则剩余的原子从所述的后续流存储相应原子的缓存行的起始的地址开始顺序写入;
9.2)对于所述的原子的读访问请求,从所述的首个原子地址开始按序读取流中的原子,并递增流的读取的原子总数,直到读完请求的原子数量或者读完全部可读的元素,可读的元素数量为流的已预约写入元素数减去预约请求的原子数,剩余的原子从所述的后续流存储相应原子的缓存行加上元素地址中的缓存行内偏移开始顺序读取;
9.3)原子的写或读访问请求完成后最后一级缓存控制器发送请求完成响应给处理器。
其中步骤5.6)进一步包括:每次完成原子的读访问后,从队头开始检查每个流是否还有剩余可读原子,剩余可读原子为流的写入的原子总数与读取的原子数总数之差,若已没有剩余可读原子,向后移动队头释放相应的流空间,检查直到第一个不满足以上要求的流或部分读指针指向的流为止。
本发明具有的有益效果是:避免处理器间临时数据交换引入不必要的访存带宽和内存空间占用,允许不同的处理器以最合适的访存模式访问交换的数据。并且由最后一级缓存控制器管理共享数据的空间使用,去除了各个处理器各自管理的负担。
附图说明
图1是元素在最后一级缓存中的存储组织示意图。
图2是处理器和最后一级缓存间传输的流程图。
图3是预约写请求处理的流程图。
图4是预约读请求处理的流程图。
图5是原子的读写访问请求处理的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明包括以下步骤:处理器间数据交换单元为元素,每个元素划分为多个固定长度的原子,采用核间共享的最后一级缓存的部分空间存储交换中的元素,各原子以任意数量、任意顺序在处理器和最后一级缓存间传输,并由最后一级缓存控制器维护各元素原子间存储顺序和空间。
1) 元素划分为多个固定长度的原子。
元素的大小由应用程序中交换的数据的大小决定。例如一个计算字符出现个数的程序,其元素大小可以为5字节,其中1个字节保存字符、4个字节保存字符个数。固定长度的原子由所使用的处理器的自然字长决定,例如64位x86 CPU的自然字长为8字节,而NVIDIAFermi架构GPU中每个线程的自然字长为4字节,因此在由64位x86 CPU和NVIDIA Fermi架构GPU组成的共享第三级缓存的紧耦合异构多处理器中,原子长度设为4字节。对于5字节长的元素,按照4字节划分时需要两个原子,分别编号为原子0和原子1。原子0保存4个字节,原子1只保存1个字节的数据,剩余3字节为对齐填充。
2) 核间共享的最后一级缓存的部分空间存储交换中的元素。
关闭分配给数据交换缓存的原缓存控制逻辑,例如前述的CPU和GPU组成的系统,其共享的第三级缓存为8路组相联,若分配1/4的缓存空间作为数据交换缓存,则可关闭其中两路的缓存控制逻辑,这两路的存储不再由原缓存策略控制。
缓存由缓存行构成,连续的缓存行分配给同一批元素,每个缓存行保存这一批元素的同一编号的原子,不同的缓存行按序保存相应编号的原子,保存一批元素的所有缓存行称为元素块。一个元素块中同一个元素的不同原子分别保存在各缓存行相同偏移量处。如图1所示,缓存行从0开始编号,对于前述的由两个原子构成的元素,每两个连续的缓存行属于同一批元素,因此缓存行0和缓存行1同属于一个元素块,而缓存行2和缓存行3同属于另一个元素块。图1中元素A由原子0和原子1两个原子组成,其中原子0保存在缓存行0的偏移1处、原子1保存在缓存行1的相同偏移1处。图1中同属于元素A的两个原子由示意箭头连接。
若缓存行大小为128字节,每个缓存行可保存32个原子,对于由两个原子组成的元素,需要连续两个128字节的缓存行保存32个元素的所有原子,因此一个这样的元素块大小为256字节。
3) 各原子以任意数量、任意顺序在处理器和最后一级缓存间传输。
处理器访问缓存的请求分为预约请求和原子的访问请求。如图2所示,处理器首先发送预约请求到最后一级缓存,预约请求中包含了所访问的元素数量,最后一级缓存控制器根据所访问的元素数量,检查相应的后续访问能否成功,即预约请求能否成功。若预约请求失败,则返回失败响应给处理器,否则返回可访问的元素地址给处理器,元素地址包括访问的第一个元素所在缓存行地址和这个元素在这个缓存行内的偏移量。之后处理器即可以任意的顺序访问之前预约的元素数据。例如在图1所示的存储组织中,每个元素包含两个原子。当前述的架构中GPU中32个线程同时各自写入一个元素,GPU首先发出一个32个元素的预约写请求,第三级缓存控制器在收到此请求后检查缓存中是否有足够的空间存储这32个元素。若没有足够的空间则返回预约失败给GPU,GPU将会重新发送相同的预约请求,直到预约成功或者程序被终止。若第三级缓存有足够的空间,则在缓存中预留这些空间。假设如图1所示,预留的第一个元素为元素A,则返回的元素地址包括缓存行0的地址和已经缓存行0种存储元素A的原子0的偏移量。GPU在收到元素地址后,分别发出两个原子的访问请求,第一个请求写入前述预约的32个元素的原子0,请求中元素地址为所给的地址,原子编号为0;第二个请求写入前述预约的32个元素的原子1,请求中元素的地址与第一个请求相同,原子编号为1。由于片上互联或访存调度策略可能会改变这两个请求的顺序,因此到达第三级缓存时第二个请求可能先于第一个请求到达,根据请求中的原子编号,可以任意顺序完成这些请求。
4) 最后一级缓存控制器维护各元素原子间存储顺序和空间。
最后一级缓存控制器在缓存中存储额外的流队列,流队列中的每个流与一个元素块相对应,并记录了已预约写入元素数、已预约读取元素数、写入的原子总数和读取的原子数总数。例如前述的一个元素块为256字节,存储32个8字节的元素,每个元素块的总原子数为64,因此需两个5位比特分别表示已预约写入元素数和已预约读取元素数,需两个6位比特分别表示写入的原子总数和读取的原子数总数,于是一个流的长度为22位比特。即每256字节的数据,仅需22比特的管理信息。
预约写请求总是从所述流队列的队尾开始处理,预约读请求总是从所述流队列的队头开始,因此在最后一级缓存中保存了队头指针和队尾指针分别指向流队列的相应位置。由于元素在被预约读后,要等到原子的访问请求完成后才可被释放,因此最后一级缓存中还保存了一个部分读指针指向队头开始第一个有尚未被预约读的元素的流。
5) 最后一级缓存控制器对于预约写请求的处理。
如图3所示,当最后一级缓存收到预约写请求时,首先检查队尾流的剩余可写元素,剩余可写元素为一个流可保存的元素数量减去已预约写入的元素数。若队尾流的剩余可写元素小于预约写请求所需的元素,则尝试从队尾后申请新的流,若缓存空间不足即申请失败,返回预约失败响应给处理器。若成功则将元素地址返回给处理器,其中的第一个元素所在缓存行地址即为队尾流对应的缓存行地址,在缓存行内的偏移量为队尾流的已预约写入元素数。然后递增队尾流的已预约写入元素数。若申请了新的流,则更新新的流的已预约写入元素数,并移动队尾到新的流。例如当前队尾为流2,对应的缓存行为4和5,其已预约写入元素数为10,每个元素块能保存32个元素,对于32个元素的预约写请求,将占用流2中剩余20个元素空间以及新的流流3的12个元素空间,返回给处理器的元素地址中的缓存行地址为缓存行4,缓存行内偏移为10,流2的已预约写入元素数更新为32,移动队尾到流3,流3的已预约写入元素数更新为12。
6) 最后一级缓存控制器对于预约读请求的处理。
如图4所示,当最后一级缓存收到预约读请求时,首先检查部分读指针指向的流是否可读,若不可读即预约请求失败。流只有在位于队头和队尾之间,且此写入的原子总数等于已预约写入元素数乘以每个元素的原子数时可读,否则并不确定哪些哪些元素的原子还未写入缓存。再检查流的剩余可读元素,剩余可读元素为已预约写入元素数和已预约读取元素数差值。若部分读指针指向的流的剩余可读元素小于预约读请求所需的元素,则不足部分尝试从部分读指针指向流的下一个流读取,若下一个流不可读或可读元素不足即预约请求失败。预约请求失败时返回预约失败响应给处理器。若预约请求成功则将元素地址返回给处理器,其中第一个元素所在缓存行地址为部分读指针指向的流的缓存行,元素在这个缓存行内的偏移量为部分读指针指向的流的已预约读取元素数。然后递增部分流指针指向流的已预约读取元素数。若读取了下一个流,则更新下一个流的已预约读取元素数,并移动部分读指针到下一个流。例如当前部分读指针为流1,对应的缓存行为2和3,其已预约写入元素数为32,已预约读取元素数为20,下一个流2的已预约元素数为30,已预约读取元素数为0,因此流2的剩余可读元素为12,流3的剩余可读元素为30。对于32个元素的预约读请求,返回给处理器的元素地址中的缓存行地址为缓存行2,缓存行内偏移为20,流1的已预约读取元素数更新为32,移动部分读指针到流2,流2的已预约读取元素数更新为20。
7) 最后一级缓存控制器对于原子的访问请求的处理。
如图5所示,对于原子的写和读访问请求,首先将当前地址设为请求中的元素地址中首个原子的地址,然后从此地址开始访问请求的元素:若为写则将请求中连续的原子写入此地址开始的缓存,若为读则将此地址开始的缓存中的原子存入响应。当原子写入时达到缓存行尾即没有剩余空间,或者原子读取时到达已预约写入元素数指向位置即没有剩余可读元素,则此缓存行用完。若当前缓存行用完时访问请求仍未完成,则将当前地址设为下一个流对应原子的缓存行,写请求的缓存行内偏移为0,读请求的缓存行内偏移为请求的元素地址中的缓存行内偏移。然后继续剩余的元素访问。在执行访问的同时,更新相应的流的写入或读取的原子总数。例如元素由两个原子构成,一个32个元素的原子的读访问请求的元素地址为缓存行2,缓存行内偏移为10,原子序号为0。缓存行2和缓存行3对应流1,流1的写入的原子总数为64,读取的原子总数为42,缓存行4和缓存行5对应流2,流2的写入的原子总数为64,读取的原子总数为10。于是从缓存行2偏移10位置开始读取22个原子,然后从缓存行4偏移10位置开始读取10个原子。流1的读取的原子总数更新为64,流2的读取的原子总数更新为20。
对于原子读的访问,访问完成后还需检查流队列的队头是否还有剩余可读原子,剩余可读原子为写入的原子总数与读取的原子数总数之差,若没有则说明此元素块的所有原子都已经被读完,向后移动队头释放相应的流和元素块所占用的缓存行。重复前述检查操作直到队头到达部分读指针位置或者队头流还有剩余可读原子为止。例如假设前例中队头指向流1,而完成前述原子的读请求后,流1的写入的原子总数与读取的原子总数相等(均为64),因此流1已经完全读完,将队头移动到流2并释放流1占用的空间。流2的写入的原子总数大于读取的原子总数,因此操作在流2停止。
Claims (9)
1.一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于包括以下步骤:
1.1)处理器间数据交换单元为元素,每个元素划分为多个固定长度的原子;
1.2)采用核间共享的最后一级缓存的部分空间存储交换中的元素;
1.3)各原子以任意数量、任意顺序在处理器和最后一级缓存间传输;
1.4)并由最后一级缓存控制器维护各元素原子间存储顺序和空间;
其中步骤1.2)进一步包括:
3.1)交换空间的大小根据应用需求任意分配,关闭所分配的这部分空间原缓存控制逻辑;
3.2)原缓存存储组织中每一缓存行存储属于不同元素的同一编号的原子;
3.3)连续的缓存行存储这些缓存行中元素的连续编号的原子,组成一批完整元素的所有缓存行称为元素块,一个所述的元素块的大小为一个缓存行的大小乘以每个元素的原子数。
2.根据权利要求1所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤1.1)进一步包括:原子的长度固定为各个处理器的自然字长中的最小值,按照各原子在一个元素中的顺序对原子递增编号。
3.根据权利要求1所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤1.3)进一步包括:
4.1)使用所述的缓存交换数据时,各处理器根据执行的线程宽度决定每次访问的元素数量;
4.2)首先发送读或写预约请求检查缓存中是否有足够的空闲空间或足够的元素可满足本次访问所需的元素数量,若不满足则预约请求失败并重试直到成功,若预约请求成功,处理器从请求响应中得到即将访问的元素地址,所述的元素地址包括本次请求访问的第一个元素所在缓存行地址和这个元素在这个缓存行内的偏移量;
4.3)处理器在预约请求成功后以任意的顺序发出此元素中每个原子的访问请求,每个原子的访问请求中给出所述的元素地址、元素数量和此请求访问的原子序号。
4.根据权利要求1所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤1.4)进一步包括:
5.1)最后一级缓存控制器在缓存中存储额外的流队列,其中每个流与一个元素块对应,用于记录元素块的已预约写入元素数、已预约读取元素数、写入的原子总数和读取的原子数总数;
5.2)预约读请求从流队列头部开始处理,预约写请求从流队列尾部开始处理,最后一级缓存控制器使用一个部分读指针指向下一个预约读将检查的流,初始时缓存为空,队头、队尾和所述的部分读指针指向同一个位置;
5.3)最后一级缓存控制器接收到所述的预约写请求时,检查队尾是否有足够的空间可写,并发送预约结果给处理器;
5.4)最后一级缓存控制器接收到所述的预约读请求时,检查部分读指针指向的流是否有足够的元素可读,并发送预约结果给处理器;
5.5)最后一级缓存控制器接收到所述的原子的访问请求时,根据请求中的元素地址和原子序号计算此请求访问的所有原子地址,并访问相应的原子的数据;
5.6)最后一级缓存控制器释放已被读完的元素块及相应的流。
5.根据权利要求4所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤5.3)进一步包括:
6.1)检查流队列队尾的流的已预约写入元素数,当剩余可写元素数不足时尝试从队尾后获取一个新的流,若当前流剩余足够的可写元素或申请新的流成功则预约成功,否则预约失败;
6.2)若预约失败,返回预约失败给发出请求的处理器;
6.3)若预约成功,返回相应的元素地址给发出请求的处理器,其中元素地址中的第一个元素所在缓存行地址为队尾流的缓存行,元素地址中元素在这个缓存行内的偏移量为队尾流的已预约写入元素数;
6.4)若预约成功,根据预约数量递增队尾流的已预约写入元素数,若申请了新的流,则递增队尾到新的流,并更新这个流的已预约写入元素数为去掉前一个流本次预约写入数量后剩余的预约元素数量。
6.根据权利要求4所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤5.4)进一步包括:
7.1)当流位于队头和队尾之间,并且此流的写入的原子总数等于已预约写入元素数乘以每个元素的原子数时此流可读;
7.2)一个流的剩余可读元素为此流的已预约写入元素数和已预约读取元素数差值;
7.3)若部分读指针指向的流可读且剩余可读元素不小于预约请求的元素数,或部分读指针指向的流和下一个流均可读且这两个流的剩余可读元素总和不小于请求的所需元素数,则预约成功,否则预约失败;
7.4)若预约失败,返回预约失败给发出请求的处理器;
7.5)若预约成功,返回相应的元素地址给发出请求的处理器,其中元素地址的第一个元素所在缓存行地址为部分读指针指向的流的缓存行,元素地址中元素在这个缓存行内的偏移量为部分读指针指向的流的已预约读取元素数;
7.6)若预约成功,根据预约数量递增部分读指针指向的流的已预约读取元素数,若这个流的剩余可读元素不足,则更新部分读指针指向队列中的下一个流,并递增这个流的已预约读取元素数为预约请求的元素数减去上一个流本次预约元素数量。
7.根据权利要求4所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤5.5)进一步包括:
8.1)访问的首个原子地址为,元素地址中的第一个元素所在缓存行地址加上原子序号与每个缓存行大小之积再加上元素地址中的元素在这个缓存行内的偏移;
8.2)访问的后续原子地址在首个原子地址向后递增;
8.3)对于写访问当后续原子数量超过所在流能存储的最大原子数量,或对于读访问当后续原子数量超过所在流的剩余可读元素数时,第一个超过的原子称为后续流首个原子,后续流首个原子的地址为,所述的首个原子的地址加上一个所述的元素块的大小;
8.4)后续流首个原子之后的原子按照后续流首个原子的地址向后递增。
8.根据权利要求4所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤5.5)进一步包括:
9.1)对于所述的原子的写访问请求,从首个原子的地址开始按序写入请求中的所有原子,并递增流的写入的原子总数,直到全部写入或用完首个原子所在流的剩余空间,若此流的剩余空间用完后仍有剩余原子没有写入,则剩余的原子从后续流存储相应原子的缓存行的起始的地址开始顺序写入;
9.2)对于所述的原子的读访问请求,从首个原子地址开始按序读取流中的原子,并递增流的读取的原子总数,直到读完请求的原子数量或者读完全部可读的元素,可读的元素数量为流的已预约写入元素数减去预约请求的原子数,剩余的原子从后续流存储相应原子的缓存行加上元素地址中的缓存行内偏移开始顺序读取;
9.3)原子的写或读访问请求完成后最后一级缓存控制器发送请求完成响应给处理器。
9.根据权利要求4所述的一种紧耦合异构多处理器数据交换缓存的实现方法,其特征在于其中步骤5.6)进一步包括:每次完成原子的读访问后,从队头开始检查每个流是否还有剩余可读原子,剩余可读原子为流的写入的原子总数与读取的原子数总数之差,若已没有剩余可读原子,向后移动队头释放相应的流空间,检查直到队头到达部分读指针位置或者队头流还有剩余可读原子为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510809896.2A CN105354153B (zh) | 2015-11-23 | 2015-11-23 | 一种紧耦合异构多处理器数据交换缓存的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510809896.2A CN105354153B (zh) | 2015-11-23 | 2015-11-23 | 一种紧耦合异构多处理器数据交换缓存的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354153A CN105354153A (zh) | 2016-02-24 |
CN105354153B true CN105354153B (zh) | 2018-04-06 |
Family
ID=55330127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510809896.2A Expired - Fee Related CN105354153B (zh) | 2015-11-23 | 2015-11-23 | 一种紧耦合异构多处理器数据交换缓存的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354153B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840150B (zh) * | 2017-11-29 | 2021-10-26 | 北京忆芯科技有限公司 | 存储器分配器 |
EP3493069B1 (en) * | 2017-11-29 | 2021-02-17 | ARM Limited | Resource allocation for atomic data access requests |
CN110442389B (zh) * | 2019-08-07 | 2024-01-09 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
CN114116530B (zh) * | 2021-12-06 | 2022-09-13 | 海光信息技术股份有限公司 | 存储控制方法及装置、数据处理方法及装置以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034593A (zh) * | 2012-12-11 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
CN103345429A (zh) * | 2013-06-19 | 2013-10-09 | 中国科学院计算技术研究所 | 基于片上ram的高并发访存加速方法、加速器及cpu |
CN104281540A (zh) * | 2013-07-04 | 2015-01-14 | 飞思卡尔半导体公司 | 原子地更新多处理器系统中的共享存储器的系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7114042B2 (en) * | 2003-05-22 | 2006-09-26 | International Business Machines Corporation | Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment |
-
2015
- 2015-11-23 CN CN201510809896.2A patent/CN105354153B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034593A (zh) * | 2012-12-11 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
CN103345429A (zh) * | 2013-06-19 | 2013-10-09 | 中国科学院计算技术研究所 | 基于片上ram的高并发访存加速方法、加速器及cpu |
CN104281540A (zh) * | 2013-07-04 | 2015-01-14 | 飞思卡尔半导体公司 | 原子地更新多处理器系统中的共享存储器的系统及方法 |
Non-Patent Citations (1)
Title |
---|
片上异构多核DSP同步与通信的实现;刘建,陈杰;《电子科技大学学报》;20100731;第39卷(第4期);第528-536页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105354153A (zh) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105354153B (zh) | 一种紧耦合异构多处理器数据交换缓存的实现方法 | |
US5535361A (en) | Cache block replacement scheme based on directory control bit set/reset and hit/miss basis in a multiheading multiprocessor environment | |
TWI391821B (zh) | 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法 | |
JP2002510079A (ja) | メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置 | |
DE60204213T2 (de) | Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken | |
WO2016082793A1 (zh) | 高速缓存cache存储器系统及访问缓存行cache line的方法 | |
US11720487B2 (en) | Memory system and method of controlling nonvolatile memory | |
CN106843772A (zh) | 一种基于一致性总线扩展非易失内存的系统及方法 | |
TW201011537A (en) | Apparatus and method for ensuring data coherency within a cache memory hierarchy of a microprocessor | |
CN106484628A (zh) | 基于事务的混合存储器模块 | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存系统及方法 | |
TW580619B (en) | Buffer control device and the management method | |
CN104991868A (zh) | 一种多核处理器系统和缓存一致性处理方法 | |
CN105183662A (zh) | 一种无cache一致性协议的分布式共享片上存储架构 | |
KR960012423B1 (ko) | 비동기식 디지탈 프로세서 사이에 정보를 교환하기 위한 방법 및 장치 | |
CN109952565A (zh) | 内存访问技术 | |
CN102486753B (zh) | 构建及允许访问高速缓存的方法、设备及存储系统 | |
CN105389134B (zh) | 一种闪存接口控制方法及装置 | |
JPS6111865A (ja) | メモリアクセス制御方式 | |
CN107346265A (zh) | 实现QoS的方法与装置 | |
JP2012043031A (ja) | 共有キャッシュメモリ装置 | |
CN110531928A (zh) | DRAM-Less固态硬盘的数据随机写入方法、装置及DRAM-Less固态硬盘 | |
CN110347338A (zh) | 混合内存数据交换处理方法、系统及可读存储介质 | |
CN107506139A (zh) | 一种面向相变存储器的写请求优化装置 | |
JPH04313126A (ja) | 分散ファイルシステムのファイル入出力方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180406 Termination date: 20201123 |