CN102388372A - 保证数据缓存与主存储器之间的一致性 - Google Patents

保证数据缓存与主存储器之间的一致性 Download PDF

Info

Publication number
CN102388372A
CN102388372A CN2010800161183A CN201080016118A CN102388372A CN 102388372 A CN102388372 A CN 102388372A CN 2010800161183 A CN2010800161183 A CN 2010800161183A CN 201080016118 A CN201080016118 A CN 201080016118A CN 102388372 A CN102388372 A CN 102388372A
Authority
CN
China
Prior art keywords
request
memory
thread
separation
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
Application number
CN2010800161183A
Other languages
English (en)
Other versions
CN102388372B (zh
Inventor
R·G·伊舍伍德
Y·N·科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harrow Software Co ltd
Imagination Technologies Ltd
MIPS Tech LLC
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN102388372A publication Critical patent/CN102388372A/zh
Application granted granted Critical
Publication of CN102388372B publication Critical patent/CN102388372B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供一种用于在支持多个线程的多线程处理器控制存储器访问的设备,该设备包括:处理器核心;缓存存储器,该缓存存储器储存能够由多个线程的每一个线程访问的数据;主存储器,该主存储器存储能够由多个线程访问的数据;非相干检测模块;以及存储器仲裁器,其中将非相干检测模块连接在处理器核心与存储器仲裁器之间,以及将存储器仲裁器连接在非相干检测模块与主存储器之间,并且其中存在针对每个线程的单独的请求队列,该请求队列用于从缓存存储器被发送到存储器仲裁器的读取及写入请求;其中,在使用中,非相干检测模块在写入地址存储器中储存对于每个被从缓存存储器发送到主存储器的写入请求的存储器地址的指示,并且将每个被从缓存存储器发送到主存储器的随后的读取请求,与在写入地址存储器中的指示相比较,以及如果随后的读取请求的地址与指示相匹配,则插入对应于读取请求的分隔到匹配的指示所属的线程的请求队列,并且其中,存储器仲裁器阻止随后的读取请求访问存储器总线,直到对应的分隔已经被存储器仲裁器接收。

Description

保证数据缓存与主存储器之间的一致性
技术领域
本发明涉及多线程处理器,并特别地涉及在由多线程访问的缓存存储器与多线程处理器中的主存储器之间的数据非相干(incoherent)的问题。
背景技术
多线程处理器能够同时处理多个不同的指令序列(或线程)。在线程执行期间需要从存储器访问数据和指令。因此,不同的线程可能需要同时访问存储器,并且有时访问存储器的相同部分。为此,在线程之间需要存在某种仲裁以用于存储器访问。
如图1所示,多线程处理器典型地具有包含最常访问的数据和指令的数据缓存和指令缓存。如果在这两个缓存中没有找到所需数据或指令,则必须请求在存储器总线上访问存储器。必须控制访问存储器以保证线程不会相互冲突。出于这个原因,根据不同线程从指令和数据缓存到存储器仲裁模块的存储器访问,每个具有他们自己专用的数据路径。
图1示出了根据现有技术的多线程处理器中的存储器访问系统的示意图。运行在处理器核心10上的线程能够从数据和指令缓存11、12请求数据和指令。该指令和数据缓存每个具有与其相关联的存储器管理单元。如果请求的数据或指令不在一个缓存中,则该请求传递到存储器总线。为了在从来自不同线程的请求之间做出仲裁,先将请求路由通过线程仲裁器13、14,其中线程仲裁器对线程的请求排序,然后路由到存储器仲裁器15,其中,存储器仲裁器15控制到存储器总线的访问。
其中在主存储器中,典型地,数据被以具有固定数量比特的单元(称为缓存行(cache line))的形式储存并访问。所以,为了从存储器读取存储器地址,必须取出包含该地址的整个缓存行。存在两种缓存行。一种是本地缓存行,该缓存行仅储存用于特定线程的数据。另一个是全局缓存行,该缓存行储存可由不同的线程访问的数据。一条数据是被储存在全局缓存行还是本地缓存行取决于其线性地址。本发明是关于在线程间共享的存储器资源(即,全局缓存行)。
全局缓存行可以储存由不同的线程在该缓存行中不同字位置输入的软件本地变量的值。可知,当线程Tx从该缓存行读取其本地变量时,其将取回其上次的写入值。然而,当使用通过由其他线程访问的数据缓存写入到相同缓存行中他们的本地变量时,会出现促使线程Tx去读取旧的错误的值的情况。当这样的情况发生时,Tx被叫做已经变得“数据非相干(incoherent)”。
图2a和2b每个示出了由不同线程造成在线程T0上数据非相干的访问序列的一个例子。
参考图2a,T0先用写入请求访问其本地变量A。然后T1用读取请求访问其本地变量B。A和B的物理地址使得他们缓存在相同的全局数据缓存行。最初A和B都不在该缓存中。
典型地,读取请求到达存储器总线的时间比写入请求短。在这种情况下,T1读取在T0写入之前到达存储器。结果,该缓存行的旧值被储存在该数据缓存中。T0写入请求没有写入到该数据缓存,仅写入到存储器总线。所以,从该数据缓存的缓存行的随后的读取将取得被储存在该数据缓存的旧值作为T1读取的结果。
参考图2b,A和B再一次都在相同的缓存行,并且最初不在该数据缓存中。T1先用读取请求从存储器总线访问B。在B被取得之前,即在读取请求离开该数据缓存的时刻与包含B的缓存行被储存在该数据缓存的时刻之间,对A的写入请求从T0被发布到存储器总线。再一次,来自T0的写入没有被写入到该数据缓存,使得该数据缓存保持缓存行的旧版本,该旧版本将被随后的读取请求访问。
能够看出,当多线程从存储器总线访问全局缓存存储器时,会出现数据非相干,特别是直写式(Write-through)缓存。本发明目的在于通过检测非相干危险并且使用一种机制来保证在安全的时候将读取或写入指令只发布到存储器总线外来处理该问题,。
发明内容
在所附的独立权利要求中限定本发明。在从属权利要求中限定优选的特征。
附图说明
现在将参考附图说明本发明的示例,在附图中:
图1示出了在常规多线程处理器核心中的存储器访问系统;
图2a和图2b每个示出了引起缓存非相干的存储器访问序列;
图3示出了根据本发明的系统;
图4示出了根据本发明的示例性全局写入地址存储器的操作;
图5示出了在图3的系统中使用的非相干检测模块;
图6示出了在图3系统中使用的存储器仲裁器;
图7示出了在仲裁器的命令执行。
具体实施方式
如图2a和图2b所示,由于不同的状况,会出现数据非相干,这可以以不同方式来处理。图2a示出的非相干能够使用第一种机制来避免,而图2b示出的非相干能够使用第二种机制来避免。
图3是示出根据本发明第一方面的系统的示意图。图3示出了用于从存储器总线访问数据的系统,该系统避免能够从参考图2a描述的状况出现的数据非相干。由于本发明关于数据非相干并因此访问数据,因此为了清楚,省略了用于从存储器总线取得指令的路径。
该系统包括数据缓存存储器管理单元30,该数据缓存存储器管理单元30连接到处理器核心;线程仲裁器31、32,该线程仲裁器31、32连接到存储器管理单元;以及存储器仲裁器33,该存储器仲裁器33连接在线程仲裁器与存储器总线之间。
其中,数据缓存存储器管理单元是数据缓存34本身和用于地址翻译等相关的存储器管理功能,以及非相干检测模块。
如图1中的系统、图2中的系统,当在处理器核心上执行的线程发布读取或写入请求时,将该请求路由到数据缓存MMU 30。对于读取请求,如果数据在数据缓存34,则立即取得并使用该数据。如果不在数据缓存中,则必须访问存储器总线上的存储器。对于在直写式缓存的写入请求,该写入请求总是访问存储器总线。与数据缓存相关的存储器管理单元(MMU)功能会将在处理器上运行的程序使用的虚拟存储器地址转换成存储器总线上的物理地址。
本发明的一个方面,提供了非相干检测模块35,用来处理由全局读取请求和全局写入请求造成的非相干。此处使用的术语“全局读取请求”和“全局写入请求”意味着向对多个线程共享的部分存储器的请求。在到达存储器仲裁器33之前,来自数据缓存34的全局读取或写入请求必须首先通过非相干检测模块35,然后通过存储器总线。对非相干检测模块在图5中详细说明。
非相干检测模块具有三种功能。一个是维持之前全局写入请求的物理地址的记录。另一个是将任意新来的全局读取的地址与之前写入请求的记录相比较,以确定是否存在过去的向相同的全局缓存行的写入。最后一个是使用比较信息来向每个请求增加“命令执行边带(order enforcement sideband)”(或插入单独的“分隔请求(barrier request)”),以使存储器仲裁器33能够如非相干检测模块35计划的那样,执行向存储器总线发布请求的命令。该机制在存储器仲裁器之前没有暂缓(stall)或节流(throttle)通过各个模块的数据流,暂缓或节流通过各种模块的数据流会造成性能下降。
保留所有先前的全局缓存写入的单个物理地址的记录,会需要极大的存储器总量,其实现不实际。另一种作为替换的是将全局写入请求的单个地址压缩成地址范围。这种实施方式中,非相干检测模块包括针对每个线程的全局写入地址存储器(GWAM)。每个GWAM包括少量数据存储段(storageslot),每个存储段存储不重叠的地址范围。
图4示出了根据本发明的示例性GWAM是如何操作的。图4a示出了具有4个存储段的GWAM。这些储存器段最初是空的。每个存储器段具有4个字段:有效标志字段、32-比特字节地址字段(TAG)、高地址范围大小掩码(MU)以及低地址范围大小比特掩码(ML)。
有效标志简单地指示记录的写入地址是否在存储器段中。TAG字段指示在存储器地址范围中由该段覆盖的地址。
MU和ML字段定义由该段覆盖的存储器地址范围。对于被覆盖的地址范围,低地址=TAG&&(MU&ML),其中&&表示比特与(AND)操作,以及&表示向量拼接(concatenation)。高地址=TAG||!(MU&ML),其中||表示比特或(OR)操作。例如,使用十六进制符号,对于TAG=0xAAAAAA34,ML=0xFFFF00,MU=0xFF,地址范围=0xAAAAAA00到0xAAAAAAFF。
当第一写入地址被记录时,第一写入地址被分配到GWAM中的存储器段。这在图4b中说明。由于此前所有段为空,就不需要压缩数据。所以在这种情况下,将写入地址0xB1000000以最小地址范围储存在第一段。
当第二写入地址0xA0000000将被储存在GWAM时,第二接入地址被储存在第二段,也是以最小的范围。这在图4c中示出。
当发布第三写入地址时,第三写入地址会落入由另一个段的MU字段定义的地址范围,将第三写入地址放置在那个段并改变ML字段以适应新地址。图4d示出了这点。在图4d中,新的写入请求是到地址0xB1000004。由于这个地址能够通过改变ML(并且不改变MU)的值而被压缩到第一段,故将该地址压缩到第一段。
图4e和图4f示出了再增加两个写入请求地址0x80000000和0x90000000,这两个写入地址不能被压缩到现有的段。在这些地址增加后,所有的段都在被使用。
图4g示出了随后新请求地址0xC0000000的增加。由于这个地址不能被压缩到任何一个段,并且所有的段已满,在第一段,将所有现有的段压缩到一个范围。然后就有三个段可用于新进的写入请求地址。
该GWAM安排允许将关于写入地址的足够的信息储存在小存储器。其能够导致将一些不必要的分隔插入,但在实践中这种折中没有实质上影响性能。
图5示出了图3的非相干检测模块的组成部分。一从线程Tx接收到请求,在块500非相干检测模块首先确定该请求是到全局缓存行的读取请求还是写入请求。
如果该请求是全局写入请求,则将线程Tx的GWAM参考图4来更新。
图5在块510示出了由非相干检测模块维持的针对每个线程的存储器和寄存器。GWAM被示出为块515。还包括:缓存计数寄存器520,该缓存计数寄存器520是为FIFO 580中的线程排队的请求的数量的记录,正等待被传递到存储器仲裁器;最后分隔缓冲空(LB_缓冲_空(LB_buff_empty))寄存器525,该寄存器取值1或0,并指示自该线程的最后一个分隔后,是否有任何请求从数据缓存被传递;以及请求ID(req_id),针对每个在FIFO 580中的请求设置标识值。
如果是来自线程Tx的全局读取请求,该请求被传递到比较器单元530。该比较器单元530检查以查看全局读取请求的存储器地址是否落入在其它线程的任何GWAM中的地址范围内。
如果该读取请求的地址没有落入在另一个线程的GWAM中的地址范围内,那么能够在不插入任何分隔标志或分隔请求的情况下将该读取请求传递到存储器仲裁器。
然而,如果该读取请求的地址落入另一个线程(此处,将该线程成为匹配线程)的GWAM的存储的地址范围内,则将该请求传递到块504,其中,块504确定每个匹配线程的LB_缓冲_空(LB_buff_empty)寄存器的值。如果对于匹配线程该LB_缓冲_空(LB_buff_empty)寄存器具有值0(也就是,如果在插入最后的分隔后没有对该线程排队的请求),那么不需要再插入分隔。然而,如果对于匹配线程该LB_缓冲_空(LB_buff_empty)寄存器具有值1,那么必须对该线程插入分隔,以防止出现非相干问题。
有两种方式能够用来插入分隔。可以将分隔作为附加的边带数据插入到现有请求,或将分隔作为单独的“分隔请求”来插入,该分隔请求是包含带有附加的边带数据的新请求。如果有在FIFO 580中排队的针对所述的线程的请求,则将分隔作为边带数据增加到FIFO的最后的请求。如果在FIFO 580中不存在针对该线程的排队的请求,则没有让分隔边带附着的请求。在那种情况下,分隔必须表现为具有附加的分隔边带数据的新的分隔请求的形式。所以在块545,非相干检测模块确定每个匹配线程的缓存计数是否等于0。
如果缓存计数等于0,则将分隔作为新的分隔请求插入。这在块565被指示。同时,向读取请求增加边带数据(称为块检查数据),以及增加或改变(toggled)添加到每个请求的时间戳。块检查数据包括每个已插入分隔的匹配线程的线程ID。然后将请求在每个线程FIFO 580中排队,直到能够将这些请求发布到存储器仲裁器。此处使用的“时间戳”意思是与时间相关的一条数据,当其被改变时,标记新的时间周期。在优选的实施方式中,时间戳是能够取值0或1的1-比特字段。
如果对于将被插入分隔的匹配线程的缓存计数不等于0,则作为边带数据将分隔附加到FIFO 580中的最后请求。然而,直到该请求已经离开FIFO580之后,才能增加分隔边带数据。因此,对每个线程提供后端分隔插入FIFO550。FIFO 550储存请求的线程ID和分隔数据本身,分隔将被附着到请求的线程ID,包括对应的全局读取请求的ID。
按照所有已说明的检查,针对每个线程的读取和写入请求被排队在每个线程请求FIFO 580中。在图5中示出了多路传输功能570,来说明将请求和分隔路由到适当的线程FIFO 580。来自块565的箭头指示用于插入的分隔请求。来自该图上部的箭头指示经过多路传输器570被增加到每个线程FIFO的读取和写入请求。所以,如果分隔将被作为单独的分隔请求插入,则将该分隔排队在正确的线程请求FIFO中,而将对应的读取请求排队在其线程请求FIFO中。
在每个请求FIFO 580的出口提供后端分隔插入检查阶段560。对首先进入对应的后端分隔插入FIFO 550的条目检查每个离开FIFO 580的请求。当存在匹配,则在将请求发送到存储器仲裁器之前,向该请求附加边带数据。
当在请求队列中包含的分隔,作为边带数据或作为单的分隔请求时,刷新该线程的GWAM。能够抹去该GWAM中的所有条目,因为不再有与那些存储器地址条目相关的任何非相干危险。
总之,为了支持命令执行,当新进的读取地址落入GWAM地址范围段的一个段时,非相干模块进行以下步骤:
1)对需要一个分隔请求的线程发布分隔请求
2)向读取请求分配适当的块检查边带数据
3)改变内部的1-比特时间戳,该1-比特时间戳被附加到每个读取/写入
4)刷新已经发布分隔请求的线程的GWAM。
图6示出了根据本实施方式的命令执行存储器仲裁器的功能硬件块。
该存储器仲裁器维持分隔状态寄存器600以及当前时间戳寄存器605。分隔状态寄存器600指示是否已经通过线程仲裁器610发布分隔以及从哪个线程发布分隔。在每次增加或改变存储器仲裁器内部的时间戳时,将分隔状态寄存器清除。在每次通过线程仲裁器发布具有块检查边带的读取请求时,增加或改变内部的时间戳。该时间戳寄存器是当前时间戳值的简单记录。
首先在块615确定,从非相干检测模块到达的请求是否是具有块检查边带数据的全局读取请求。如果是具有块检查边带数据的全局读取请求,则在块620,存储器仲裁器读取在块检查边带数据中的分隔数据,并且对着分隔状态寄存器检查它,以确定是否相关的分隔都已经被该线程仲裁器610发布。如果所有相关的分隔已经被发布,则将全局读取请求释放到线程仲裁器。如果相关的分隔没有被线程仲裁器全部发布,则将全局读取请求阻挡在存储器仲裁器的输入。重复这些检查,直到能够释放全局读取请求。
如果该请求不是具有块检查边带数据的全局读取请求,则在块625,将该请求的时间戳与储存在当前时间戳寄存器的内部的时间戳值相比较。如果时间戳匹配,则将该请求释放到线程仲裁器。如果时间戳不匹配,则阻挡该请求。重复此时间戳检查,直到时间戳匹配以及请求被释放。
线程仲裁器610接收所有线程的释放的请求,并使用仲裁技术(例如,循环(round robin)技术),以在向存储器总线访问的线程之间仲裁。在线程仲裁器中可使用任意标准以在在线程之间仲裁。
当请求包括分隔(或单独的分隔请求),并且线程仲裁器发布具有块检查边带数据的全局读取请求时,则如上面描述和在图6示出的,将分隔状态寄存器和时间戳寄存器更新。在块630和635中对于具有块检查边带数据的全局读取请求以及分隔来检查请求。如果检测到分隔,则在块640,更新分隔状态寄存器。如果检测到具有块检查边带数据的全局读取请求,则在块645,清除分隔状态寄存器,并且将时间戳寄存器中的时间戳改变。
整体的效果是,存储器仲裁器不发布按照攻击性(offending)读取的任何请求,直到已经将在该读取之前的来自所有线程的所有存储器请求已被发布。由于执行机制已经保证没有将来的新进的请求会赶上(overtake)已经发布的分隔请求,可以将已经发布分隔请求的线程的GWAM内容抹去。
参考图2a的示例序列,当T1_读取_到_C1(T1_Read_to_C1)呈现在检测模块输入时,来自GWAM的匹配将由检测模块产生如下动作:
-向其他非请求线程T0插入分隔请求T0_分隔_T1(T0_Bar_T1)。该分隔请求具有线程ID T1的边带数据,指示该分隔请求是由T1全局读取产生的分隔请求;
-将T1_读取_到_C1(T1_Read_to_C1)的块检查值设置为“等待,直到来自T0的分隔”;
-在全局缓冲读取之后,对将来的请求增加时间戳标志。
存储器仲裁器解码那些命令执行边带值,并采取适当的动作:
-当将分隔请求发布出去到存储器总线时,不暂缓分隔请求T0_分隔_T1(T0_Bar_T1)并更新分隔发布状态寄存器;
-保持T1_读取_到_C1(T1_Read_to_C1),直到分隔发布状态寄存器指示T0_分隔_T1(T0_Bar_T1)已经被发布。在将T1_读取_到_C1(T1_Read_to_C1)发布之后,仲裁器更新其自己的当前时间戳寄存器。T0_分隔_T1(T0_Bar_T1)的发布,意味着在T1_读取_到_C1(T1_Read_to_C1)之前的所有请求已经被发布,这些请求包括来自T0的攻击性写入,T0_写入_到_C1(T0_Write_to_C1)。
-对于那些T0_写入_到_C3(T0_Write_to_C3)以及T1_读取_到_C4(T1_Read_to_C4)的“安全”请求,将仲裁器当前时间戳寄存器与时间戳值相比较,并且仅当时间戳值匹配的时候发布。
图7示出了由存储器仲裁器的这种命令执行过程和结果。来自数据缓冲的初始请求流在图7上部被示出为流70。请求被分到每个线程流中,并且分隔和边带数据由如上面描述并在图7示出的非相干检测模块插入,作为流71和72进入线程仲裁器73。在图7的下部,示出了向存储器总线发送的请求的命令流74。
在图2b中示出的非相干危险能够使用不同的机制来处理。数据缓冲包括在数据缓存的DATA RAM中储存缓存行物理地址的TAG RAM。当数据缓存接收到在数据缓存中遗漏的读取请求时,选择来自TAG RAM的条目来存储将由该读取请求获得的缓存行的物理地址信息。能够将填充标志增加到在TAG RAM的该物理地址信息,该物理地址信息指示该RAM部分为了当前被获得的缓存行而被留出。当缓存行被获得时,填充标志取值1;当没有被获得的缓存行时,填充标志取值0。
当有从向其他线程向相同缓存行的相同或不同位置的随后的写入时,当填充标志具有值1,则为那个缓存行设置另一个在TAG RAM中的标志,称作“污点标志(dirty flag)”。当该污点标志具有值1时,其指示存在潜在的非相干危险,因为一个线程正在修改当前正被获得的缓冲行,因此,不能保证最后被放入数据缓冲行的数据会是最新的数据。当污点标志为1时,由于其数据不能被信任,该缓存行被认为无效。在这种情况下,后续的读取请求将忽略在数据缓存行的数据并将从主存储器获得最新的数据。
以下序列说明用于在图2b中示出的情况的这种机制。
T1读取B。由于B不在数据缓存中,数据缓存MMU从存储器总线获得包括B的缓存行。将TAG RAM中的A TAG字段更新,并且设置填充标志为1,以及设置污点标志为0。
T0将数据0X10写入到A。尽管A不在缓存中,在RAM中的填充标志指示缓冲行当前正被填充。污点标志因此被设置为1。
T1缓冲行获得完成。由于读取请求,在数据缓冲行的缓冲行包括来自主存储器的A的旧值。
T0读取A。尽管TAG RAM指示缓存成功(hit),因为数据缓冲包含具有A的缓存行,对于那个缓存行将污点标志设置为1。然后该硬件确定在缓存中遗漏该读取,并且从存储器总线再次获得该行。由于此读取发生在T0写入之后,读取返回A的最后值并且维持数据的相干性。
两种机制,第一种应对如图2a所示的情景,第二种应对如图2b所示的情景,这两种机制的组合提供了数据非相干的解决方案,这种数据非相干由于在通过数据缓存写入情况下缓存遗漏而产生。

Claims (27)

1.一种用于通过支持多个线程的多线程处理器来控制存储器访问的系统,该系统包括:
处理器核心;
缓存存储器,该缓存存储器储存能由所述多个线程的每一个线程访问的数据;
主存储器,该主存储器存储能由所述多个线程访问的数据;
非相干检测模块;以及
存储器仲裁器,其中所述非相干检测模块连接在所述处理器核心与所述存储器仲裁器之间,以及所述存储器仲裁器连接在所述非相干检测模块与所述主存储器之间,并且其中存在针对每个线程的单独的请求队列,该针对每个线程的单独的请求队列用于读取以及写入被从所述缓存存储器发送到所述存储器仲裁器的请求;
其中,在使用中,所述非相干检测模块在写入地址存储器中储存对于被从所述缓存存储器发送到所述主存储器的每个写入请求的存储器地址的指示、并且将每个被从所述缓存存储器发送到所述主存储器的随后的读取请求的地址与在所述写入地址存储器中的指示相比较,以及,如果随后的读取请求的地址与指示相匹配,则所述非相干检测模块将对应于所述读取请求的分隔插入到匹配的指示所属的线程的请求队列中,并且其中所述存储器仲裁器阻止所述随后的读取请求访问所述主存储器,直到对应的分隔已经被所述存储器仲裁器接收。
2.根据权利要求1所述的系统,其中所述非相干检测模块向所述随后的读取请求附加边带数据。
3.根据权利要求2所述的系统,其中所述边带数据将所述线程的列表包含进对应的分隔已被插入的线程的请求队列中,并且其中所述随后的读取请求被阻止访问所述主存储器,直到所有对应的分隔已经被所述存储器仲裁器接收。
4.根据前述任一项权利要求所述的系统,其中所述非相干检测模块向每个请求附加当前时间戳。
5.根据权利要求4所述的系统,其中,在每次读取请求的地址与所述写入地址存储器中的一个或多个指示相匹配时,所述非相干检测模块更新所述当前时间戳。
6.根据从属于权利要求2或3的权利要求4或5的任一项权利要求所述的系统,其中所述存储器仲裁器包括内部的时间戳计数器,并且当附加到请求的时间戳与所述内部的时间戳计数器相匹配时,仅会允许除了边带数据附加到的读取请求以外的请求访问所述主存储器,以及其中在每次具有附加的边带数据的读取请求通过所述存储器仲裁器时,更新所述内部的时间戳计数器。
7.根据前述任一项权利要求所述的系统,其中所述非相干检测模块通过在所述写入地址存储器中储存写入请求的存储器地址所属的地址范围,来存储所述写入请求的存储器地址的指示。
8.根据权利要求7所述的系统,其中所述非相干检测模块在所述写入地址存储器的单一地址范围条目中储存多个地址,以及其中所述地址范围的大小能够被动态改变。
9.根据前述任一项权利要求所述的系统,其中针对被从所述处理器核心发送到所述存储器总线的每个写入请求的存储器地址的指示被存储在所述非相干检测模块中的线程专用写入地址存储器中,以及所述非相干检测模块将所述随后的读取请求的地址与每个其它线程的写入地址存储器中的指示相比较。
10.根据前述任一项权利要求所述的系统,其中每个线程具有专用写入地址存储器,以及其中当分隔被针对线程而增加到所述请求队列时,删除针对该线程的写入地址存储器中的所有条目。
11.根据前述任一项权利要求所述的系统,其中所述分隔包括用于识别对应的读取请求所属的线程的数据。
12.根据前述任一项权利要求所述的系统,其中所述分隔包括附加到在匹配的指示所属的线程的请求队列中的现有请求的分隔边带数据。
13.根据权利要求1-11中任一项权利要求所述的系统,其中,当在所述匹配的指示所属的线程的请求队列中不存在请求时,所述分隔包括附加到被插入到所述请求队列的新的请求的分隔边带数据。
14.根据前述任一项权利要求所述的系统,其中,由于先前的分隔针对线程被插入,如果已经存在针对该线程的从所述缓存存储器发送的请求,则所述非相干检测模块仅将分隔插入到所述匹配的指示所属的线程的请求队列中。
15.一种用于通过由多线程处理器中的线程来控制访问全局存储器的方法,所述多线程处理器包括处理器核心、储存能由多个线程的每一个线程访问的数据的缓存存储器、连接到存储能由所述多个线程访问的数据的主存储器的存储器总线、以及针对每个线程的写入地址存储器,所述方法包括以下步骤:
(a)针对每个线程,在对应的写入地址存储器中储存对所述主存储器的每个写入请求的存储器地址的指示;
(b)将随后的读取请求的存储器地址与其他线程的写入地址存储器的内容相比较;以及
(c)如果所述读取请求的所述存储器地址对应于写入地址存储器中的指示,则将分隔插入到对应的写入请求所属的线程的请求队列中,以及阻止所述读取请求访问所述主存储器,直到对应的分隔已经被所述主存储器接收。
16.根据权利要求15所述的方法,该方法还包括以下步骤:当分隔被增加到线程的请求队列时,删除针对该线程的写入地址存储器中的所有条目。
17.根据权利要求15或16所述的方法,其中,所述分隔包括用于识别对应的读取请求所属的线程的数据。
18.根据权利要求15、16或17中任一项权利要求所述的方法,其中所述分隔包括附加到所述请求队列中的现有请求的边带数据。
19.根据权利要求15-18中任一项权利要求所述的方法,其中,当在所述匹配的指示所属的线程的请求队列中不存在请求时,所述分隔包括附加到被插入到所述请求队列的新的请求的分隔边带数据。
20.根据权利要求15-19中任一项权利要求所述的方法,其中,由于先前的分隔针对线程被插入,如果已经存在针对该线程的从所述缓存存储器发送的请求,则仅执行将分隔插入到该线程的请求队列中的步骤。
21.根据权利要求15-20中任一项权利要求所述的方法,该方法还包括将当前时间戳附加到每个请求的步骤。
22.根据权利要求21所述的方法,该方法还包括在每次读取请求的所述存储器地址对应于所述写入地址存储器中的一个或多个指示时更新所述时间戳的步骤。
23.根据权利要求15-22中任一项权利要求所述的方法,该方法还包括将边带数据附加到随后的读取请求的步骤。
24.根据权利要求23所述的方法,其中所述边带数据将所述线程的列表包含进对应的分隔已被插入的线程的请求队列中,并且其中仅在所有对应的分隔已经通过所述存储器仲裁器后将所述读取请求传递到所述主存储器。
25.根据权利要求23或24所述的方法,其中所述步骤(c)还包括:阻止除了边带数据已经附加到的读取请求以外的请求访问所述主存储器,直到附加到该请求的时间戳与内部的时间戳计数器相匹配,以及该方法还包括每次具有附加的边带数据的读取请求通过所述存储器仲裁器时更新所述内部的时间戳计数器的步骤。
26.根据权利要求15-25中任一项权利要求所述的方法,其中所述步骤(a)包括:通过在所述写入地址存储器中储存所述写入请求所属的地址范围,储存每个写入请求的存储器地址的指示。
27.根据权利要求26所述的方法,其中所述步骤(a)包括:将多个地址存储作为单一地址范围。
CN201080016118.3A 2009-04-07 2010-04-07 保证数据缓存与主存储器之间的一致性 Active CN102388372B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0906066.6 2009-04-07
GB0906066A GB2469299B (en) 2009-04-07 2009-04-07 Ensuring consistency between a data cache and a main memory
PCT/GB2010/000727 WO2010116151A1 (en) 2009-04-07 2010-04-07 Ensuring consistency between a data cache and a main memory

Publications (2)

Publication Number Publication Date
CN102388372A true CN102388372A (zh) 2012-03-21
CN102388372B CN102388372B (zh) 2014-07-09

Family

ID=40750290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080016118.3A Active CN102388372B (zh) 2009-04-07 2010-04-07 保证数据缓存与主存储器之间的一致性

Country Status (6)

Country Link
US (3) US8234455B2 (zh)
EP (1) EP2417526B1 (zh)
JP (1) JP5619869B2 (zh)
CN (1) CN102388372B (zh)
GB (1) GB2469299B (zh)
WO (1) WO2010116151A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103543954A (zh) * 2012-07-16 2014-01-29 中兴通讯股份有限公司 一种数据存储管理方法和装置
CN104123236A (zh) * 2013-04-29 2014-10-29 国际商业机器公司 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统
CN105453055A (zh) * 2012-10-25 2016-03-30 英派尔科技开发有限公司 多粒高速缓存一致性
CN108292162A (zh) * 2015-12-11 2018-07-17 图芯芯片技术有限公司 用于多线程访问的软件定义fifo缓冲器
CN109416673A (zh) * 2016-07-13 2019-03-01 高通股份有限公司 存储器请求仲裁

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120290780A1 (en) * 2011-01-27 2012-11-15 Mips Technologies Inc. Multithreaded Operation of A Microprocessor Cache
US8812621B2 (en) * 2011-05-03 2014-08-19 Cisco Technology, Inc. Reducing fetching load on cache servers in adaptive streaming
US9195596B2 (en) * 2011-11-02 2015-11-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Mapping of valid and dirty flags in a caching system
US9483325B2 (en) 2012-09-28 2016-11-01 Hewlett Packard Enterprise Development Lp Synchronizing timestamp counters
US9563561B2 (en) * 2013-06-25 2017-02-07 Intel Corporation Initiation of cache flushes and invalidations on graphics processors
KR101968501B1 (ko) * 2014-05-29 2019-04-15 삼성에스디에스 주식회사 데이터 처리 장치 및 데이터 처리 장치의 메모리에 기록된 데이터의 확인 방법
GB2542214B (en) * 2015-11-11 2019-08-28 Imagination Tech Ltd Hardware monitor to verify memory units
CN105357305B (zh) * 2015-11-13 2018-11-20 北京金山安全软件有限公司 文件发送方法和装置、文件接收方法和装置和终端设备
KR102381862B1 (ko) 2015-12-10 2022-04-01 삼성전자주식회사 데이터 통신 장치
US11379242B2 (en) 2017-06-29 2022-07-05 Intel Corporation Methods and apparatus for using load and store addresses to resolve memory dependencies
US10936496B2 (en) 2019-06-07 2021-03-02 Micron Technology, Inc. Managing collisions in a non-volatile memory system with a coherency checker
US11023172B2 (en) 2019-07-26 2021-06-01 Micron Technology, Inc. Selecting read voltage using write transaction data
US11656796B2 (en) * 2021-03-31 2023-05-23 Advanced Micro Devices, Inc. Adaptive memory consistency in disaggregated datacenters
CN114035980B (zh) * 2021-11-08 2023-11-14 海飞科(南京)信息技术有限公司 基于便笺存储器来共享数据的方法和电子装置
CN114116531B (zh) * 2022-01-28 2022-04-22 苏州浪潮智能科技有限公司 一种缓存一致性写回的方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327645B1 (en) * 1999-11-08 2001-12-04 Silicon Integrated Systems Corp. Cache memory system with memory request address queue, cache write address queue, and cache read address queue
CN1659525A (zh) * 2002-06-04 2005-08-24 杉桥技术公司 简化了缓存替换策略的实现的多线程缓存方法和装置

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55147744A (en) * 1979-05-07 1980-11-17 Hitachi Ltd Memory controlling unit
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US5551023A (en) * 1994-08-05 1996-08-27 Panasonic Technologies, Inc. System of database concurrency control based on transaction types and prior access to a data set
US5671407A (en) * 1994-12-07 1997-09-23 Xerox Corporation Application-specific conflict detection for weakly consistent replicated databases
US5784586A (en) * 1995-02-14 1998-07-21 Fujitsu Limited Addressing method for executing load instructions out of order with respect to store instructions
US5666494A (en) * 1995-03-31 1997-09-09 Samsung Electronics Co., Ltd. Queue management mechanism which allows entries to be processed in any order
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5930822A (en) * 1996-09-27 1999-07-27 Hewlett-Packard Co. Method and system for maintaining strong ordering in a coherent memory system
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US5802571A (en) * 1996-10-21 1998-09-01 International Business Machines Corporation Apparatus and method for enforcing data coherency in an information handling system having multiple hierarchical levels of cache memory
US5918005A (en) * 1997-03-25 1999-06-29 International Business Machines Corporation Apparatus region-based detection of interference among reordered memory operations in a processor
US6324623B1 (en) * 1997-05-30 2001-11-27 Oracle Corporation Computing system for implementing a shared cache
US6772324B2 (en) * 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6237067B1 (en) * 1998-08-31 2001-05-22 International Business Machines Corporation System and method for handling storage consistency conflict
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
EP1050807A1 (en) * 1999-05-03 2000-11-08 Sgs Thomson Microelectronics Sa Memory access in a computer memory
US6640292B1 (en) * 1999-09-10 2003-10-28 Rambus Inc. System and method for controlling retire buffer operation in a memory system
US6360298B1 (en) * 2000-02-10 2002-03-19 Kabushiki Kaisha Toshiba Load/store instruction control circuit of microprocessor and load/store instruction control method
US6490635B1 (en) * 2000-04-28 2002-12-03 Western Digital Technologies, Inc. Conflict detection for queued command handling in disk drive controller
US6915395B1 (en) * 2000-05-03 2005-07-05 Sun Microsystems, Inc. Active address content addressable memory
JP3729064B2 (ja) * 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
JP2003029967A (ja) * 2001-07-17 2003-01-31 Fujitsu Ltd マイクロプロセッサ
AU2002217653A1 (en) * 2001-12-12 2003-07-09 Telefonaktiebolaget Lm Ericsson (Publ) Collision handling apparatus and method
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US20040044881A1 (en) * 2002-08-28 2004-03-04 Sun Microsystems, Inc. Method and system for early speculative store-load bypass
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7073031B1 (en) * 2003-12-18 2006-07-04 Emc Corporation Multi-processor system having data coherency
US7343477B1 (en) * 2003-12-29 2008-03-11 Sun Microsystems, Inc. Efficient read after write bypass
US7243200B2 (en) * 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7725618B2 (en) * 2004-07-29 2010-05-25 International Business Machines Corporation Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment
US20060047934A1 (en) * 2004-08-31 2006-03-02 Schmisseur Mark A Integrated circuit capable of memory access control
US8402224B2 (en) * 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US20080189501A1 (en) * 2007-02-05 2008-08-07 Irish John D Methods and Apparatus for Issuing Commands on a Bus
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US8060881B2 (en) * 2007-05-15 2011-11-15 Microsoft Corporation Small barrier with local spinning
US7849354B2 (en) * 2007-06-12 2010-12-07 Microsoft Corporation Gracefully degradable versioned storage systems
EP2159702B1 (en) * 2007-06-20 2013-04-17 Fujitsu Limited Cache control device and control method
US9207997B2 (en) * 2007-08-09 2015-12-08 Novell, Inc. Multithreaded lock management
US20090089510A1 (en) * 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
US7899997B2 (en) * 2008-03-12 2011-03-01 International Business Machines Corporation Systems and methods for implementing key-based transactional memory conflict detection
US20100058034A1 (en) * 2008-08-29 2010-03-04 International Business Machines Corporation Creating register dependencies to model hazardous memory dependencies
US7941584B2 (en) * 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection
US8099566B2 (en) * 2009-05-15 2012-01-17 Oracle America, Inc. Load/store ordering in a threaded out-of-order processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327645B1 (en) * 1999-11-08 2001-12-04 Silicon Integrated Systems Corp. Cache memory system with memory request address queue, cache write address queue, and cache read address queue
CN1659525A (zh) * 2002-06-04 2005-08-24 杉桥技术公司 简化了缓存替换策略的实现的多线程缓存方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103543954A (zh) * 2012-07-16 2014-01-29 中兴通讯股份有限公司 一种数据存储管理方法和装置
CN103543954B (zh) * 2012-07-16 2018-03-23 深圳市中兴微电子技术有限公司 一种数据存储管理方法和装置
CN105453055A (zh) * 2012-10-25 2016-03-30 英派尔科技开发有限公司 多粒高速缓存一致性
CN105453055B (zh) * 2012-10-25 2018-09-21 英派尔科技开发有限公司 晶片、维持多核处理器一致性和处理特定块请求的方法
CN104123236A (zh) * 2013-04-29 2014-10-29 国际商业机器公司 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统
CN104123236B (zh) * 2013-04-29 2017-04-12 国际商业机器公司 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统
CN108292162A (zh) * 2015-12-11 2018-07-17 图芯芯片技术有限公司 用于多线程访问的软件定义fifo缓冲器
CN108292162B (zh) * 2015-12-11 2021-08-31 图芯芯片技术有限公司 用于多线程访问的软件定义fifo缓冲器
CN109416673A (zh) * 2016-07-13 2019-03-01 高通股份有限公司 存储器请求仲裁

Also Published As

Publication number Publication date
US9075724B2 (en) 2015-07-07
US20100257322A1 (en) 2010-10-07
CN102388372B (zh) 2014-07-09
US9703709B2 (en) 2017-07-11
EP2417526A1 (en) 2012-02-15
JP2012523055A (ja) 2012-09-27
GB2469299B (en) 2011-02-16
WO2010116151A1 (en) 2010-10-14
JP5619869B2 (ja) 2014-11-05
GB0906066D0 (en) 2009-05-20
GB2469299A (en) 2010-10-13
US20130219145A1 (en) 2013-08-22
EP2417526B1 (en) 2013-10-16
US20160034395A1 (en) 2016-02-04
US8234455B2 (en) 2012-07-31

Similar Documents

Publication Publication Date Title
CN102388372B (zh) 保证数据缓存与主存储器之间的一致性
CN113853593A (zh) 支持清空写入未命中条目的受害者高速缓存
US8180974B2 (en) System, apparatus, and method for modifying the order of memory accesses
US7284102B2 (en) System and method of re-ordering store operations within a processor
JP5118199B2 (ja) マルチスレッドおよびマルチコア・システムのためのキャッシュ、および、その方法
US8850121B1 (en) Outstanding load miss buffer with shared entries
US7600077B2 (en) Cache circuitry, data processing apparatus and method for handling write access requests
US8090892B2 (en) Ordered queue and methods therefor
US20130160021A1 (en) Signaling, ordering, and execution of dynamically generated tasks in a processing system
CN112789603A (zh) 用于在重排序期间维持高速缓存一致性的方法
CN113853652A (zh) 高速缓冲存储器中的管线化读取-修改-写入操作
US8793435B1 (en) Load miss result buffer with shared data lines
CN102968386B (zh) 数据供给设备、缓存设备及数据供给方法
US20100306421A1 (en) Dma transfer device
US8806135B1 (en) Load store unit with load miss result buffer
US6567883B1 (en) Method and apparatus for command translation and enforcement of ordering of commands
US7454580B2 (en) Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations
JP3708436B2 (ja) 2次元データフィールドのためのキャッシュメモリ
US11614985B2 (en) Insert operation
JP2010152837A (ja) バッファ装置
US20160103776A1 (en) Transaction response modification within interconnect circuitry
US20150095583A1 (en) Data processing system with cache linefill buffer and method of operation
US7664919B2 (en) Cache system
US10419501B2 (en) Data streaming unit and method for operating the data streaming unit
US5926840A (en) Out-of-order fetching

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Hertfordshire

Patentee after: MIPS TECHNOLOGIES, Inc.

Address before: Hertfordshire

Patentee before: Harrow Software Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180824

Address after: Delaware

Patentee after: Imagination Technologies Ltd.

Address before: Hertfordshire

Patentee before: Mips Technologies, Inc.

Effective date of registration: 20180824

Address after: Hertfordshire

Patentee after: Harrow Software Co.,Ltd.

Address before: Hertfordshire

Patentee before: Imagination Technologies Ltd.