CN113853590A - 伪随机路选择 - Google Patents

伪随机路选择 Download PDF

Info

Publication number
CN113853590A
CN113853590A CN202080038124.2A CN202080038124A CN113853590A CN 113853590 A CN113853590 A CN 113853590A CN 202080038124 A CN202080038124 A CN 202080038124A CN 113853590 A CN113853590 A CN 113853590A
Authority
CN
China
Prior art keywords
cache
request
way
controller
transactions
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
Application number
CN202080038124.2A
Other languages
English (en)
Inventor
A·A·查查德
T·D·安德森
D·M·汤普森
N·布霍里亚
P·K·斯瓦米
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN113853590A publication Critical patent/CN113853590A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0824Distributed directories, e.g. linked lists of caches
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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

Abstract

一种方法(1100)包含接收在N路组关联高速缓存中分配线的第一请求(1102),及响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,针对所述第一请求分配所述路(1104)。所述方法还包含响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态,随机选择所述组中的所述路中的一者(1106)。所述方法还包含响应于所述选定路的高速缓存一致性状态指示另一请求未针对所述选定路待决,针对所述第一请求分配所述选定路(1108)。

Description

伪随机路选择
背景技术
一些存储器系统包含多级高速缓存系统,其中存储器(例如,高速缓存)的层次结构提供对高速缓存数据的不同存取速度。第一级(L1)高速缓存紧密地耦合到中央处理单元(CPU)核心且向CPU核心提供对高速缓存数据的更快存取(例如,相对于主存储器)。第二级(L2)高速缓存还耦合到CPU核心且在一些实例中,较大且因此保存比L1高速缓存更多的数据,但与L1高速缓存相比,L2高速缓存提供对高速缓存数据的相对较慢存取。层次结构的额外存储器级别是可能的。
发明内容
在一些实例中,一种方法包含接收在N路组关联高速缓存中分配线的第一请求,及响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,针对所述第一请求分配所述路。所述方法还包含响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态,随机选择所述组中的所述路中的一者。所述方法还包含响应于所述选定路的高速缓存一致性状态指示另一请求未针对所述选定路待决,针对所述第一请求分配所述选定路。
在一些实例中,一种方法包含接收在N路组关联高速缓存中分配线的第一请求,及响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存无效,针对所述第一请求分配所述路。所述方法还包含响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态,通过屏蔽具有指示另一请求针对任何路待决的高速缓存一致性状态的所述路而创建所述组中的路的被屏蔽子集,随机选择所述被屏蔽子集中的所述路中的一者,且针对所述第一请求分配所述选定路。
在一些实例中,二级(L2)高速缓存子系统包含:L2高速缓存,其经配置为N路组关联高速缓存;及L2控制器,其经配置以接收在所述L2高速缓存中分配线的第一请求且响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,针对所述第一请求分配所述路。所述L2控制器还经配置以响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态,随机选择所述组中的所述路中的一者。所述L2控制器还经配置以响应于所述选定路的高速缓存一致性状态指示另一请求未针对所述选定路待决,针对所述第一请求分配所述选定路。
在一些实例中,一种方法包含通过管线中的第一级从所述管线中的前一级接收第一事务;确定所述第一事务是包括高优先级事务还是低优先级事务;响应于所述第一事务包括高优先级事务,通过将所述高优先级事务发送到输出缓冲器而处理所述高优先级事务;从所述前一级接收第二事务;及确定所述第二事务是包括高优先级事务还是低优先级事务。响应于所述第二事务包括低优先级事务,所述方法包含通过在将所述低优先级事务发送到所述输出缓冲器时监测来自所述输出缓冲器的全信号而处理所述低优先级事务;响应于所述全信号被断言且无高优先级事务从所述前一级可得,暂停所述低优先级事务的处理;响应于所述全信号被断言且高优先级事务从所述前一级可得,停止所述低优先级事务的处理且处理所述高优先级事务;且响应于所述全信号被取消断言,通过将所述低优先级事务发送到所述输出缓冲器而处理所述低优先级事务。
在一些实例中,一种方法包含通过管线中的第一级从管线中的前一级接收第一事务;确定所述第一事务是包括高优先级事务、中优先级事务还是低优先级事务;响应于所述第一事务包括高优先级事务,通过将所述高优先级事务发送到输出缓冲器而处理所述高优先级事务。所述方法还包含从所述前一级接收第二事务;确定所述第二事务是包括中优先级事务还是低优先级事务。响应于所述第二事务包括中优先级事务,所述方法包含通过在将所述中优先级事务发送到所述输出缓冲器时监测来自所述输出缓冲器的全信号而处理所述中优先级事务;响应于所述全信号被断言且无高优先级事务从所述前一级可得,暂停所述中优先级事务的处理;响应于所述全信号被断言且高优先级事务从所述前一级可得,停止所述中优先级事务的处理且处理所述高优先级事务;及响应于所述全信号被取消断言,通过将所述中优先级事务发送到所述输出缓冲器而处理所述中优先级事务。所述方法还包含响应于所述第二事务包括低优先级事务,通过在将所述低优先级事务发送到所述输出缓冲器时监测来自所述输出缓冲器的所述全信号而处理所述低优先级事务;响应于所述全信号被断言且无高或中优先级事务从所述前一级可得,暂停所述低优先级事务的处理;响应于所述全信号被断言且高或中优先级事务从所述前一级可得,停止所述低优先级事务的处理且处理所述高或中优先级事务;及响应于所述全信号被取消断言,通过将所述中优先级事务发送到所述输出缓冲器而处理所述低优先级事务。
在一些实例中,一种方法包含二级(L2)高速缓存子系统,其包括L2管线及所述L2管线中的状态机。所述状态机经配置以从耦合到所述L2管线中的前一级的输入缓冲器接收第一事务;确定所述第一事务是包括高优先级事务、中优先级事务还是低优先级事务;且响应于所述第一事务包括高优先级事务,通过将所述高优先级事务发送到输出缓冲器而处理所述高优先级事务。所述状态机还经配置以从所述输入缓冲器接收第二事务;确定所述第二事务是包括中优先级事务还是低优先级事务;且响应于所述第二事务包括中优先级事务,处理所述中优先级事务。当所述状态机处理所述中优先级事务时,所述状态机进一步经配置以在将所述中优先级事务发送到所述输出缓冲器时监测来自所述输出缓冲器的全信号;响应于所述全信号被断言且无高优先级事务从所述输入缓冲器可得,暂停所述中优先级事务的处理;响应于所述全信号被断言且高优先级事务从所述输入缓冲器可得,停止所述中优先级事务的处理且处理所述高优先级事务;且响应于所述全信号被取消断言,通过将所述中优先级事务发送到所述输出缓冲器而处理所述中优先级事务。所述状态机还经配置以响应于所述第二事务包括低优先级事务,处理所述低优先级事务。当所述状态机处理所述低优先级事务时,所述状态机进一步经配置以在将所述低优先级事务发送到所述输出缓冲器时监测来自所述输出缓冲器的所述全信号;响应于所述全信号被断言且无高或中优先级事务从所述输入缓冲器可得,暂停所述低优先级事务的处理;响应于所述全信号被断言且无高或中优先级事务从所述输入缓冲器可得,停止所述低优先级事务的处理且处理所述高或中优先级事务;且响应于所述全信号被取消断言,通过将所述中优先级事务发送到所述输出缓冲器而处理所述低优先级事务。
在一些实例中,一种设备包含CPU核心、耦合到所述CPU核心的第一高速缓存子系统及耦合到所述高速缓存子系统的第二存储器。所述第一高速缓存子系统包含配置寄存器、第一存储器及控制器。所述控制器经配置以:接收经引导到所述第二存储器中的地址的请求且响应于所述配置寄存器具有第一值,在非高速缓存模式中操作。在所述非高速缓存模式中,所述控制器经配置以将所述请求提供到所述第二存储器而不将通过所述请求返回的数据高速缓存于所述第一存储器中。响应于所述配置寄存器具有第二值,所述控制器经配置以在高速缓存模式中操作。在所述高速缓存模式中,所述控制器经配置以将所述请求提供到所述第二存储器且将通过所述请求返回的数据高速缓存于所述第一存储器中。
在一些实例中,一种方法包含通过包括配置寄存器的二级(L2)控制器接收经引导到三级(L3)存储器中的地址的请求;及响应于所述配置寄存器具有第一值,通过将所述请求提供到所述L3存储器且不将通过所述请求返回的数据高速缓存于L2高速缓存中而在非高速缓存模式中操作所述L2控制器。响应于所述配置寄存器具有第二值,所述方法包含通过将所述请求提供到所述第二存储器且将通过所述请求返回的数据高速缓存于所述L2高速缓存中而在高速缓存模式中操作所述L2控制器。
在一些实例中,二级(L2)高速缓存子系统包含配置寄存器、第一存储器及L2控制器。所述L2控制器经配置以接收经引导到耦合到所述L2高速缓存子系统的第二存储器中的地址的请求且响应于所述配置寄存器具有第一值,在非高速缓存模式中操作。在所述非高速缓存模式中,所述L2控制器经配置以将所述请求提供到所述第二存储器而不将通过所述请求返回的数据高速缓存于所述第一存储器中。响应于所述配置寄存器具有第二值,所述L2控制器在高速缓存模式中操作。在所述高速缓存模式中,所述L2控制器经配置以将所述请求提供到所述第二存储器且将通过所述请求返回的数据高速缓存于所述第一存储器中。
在一些实例中,一种设备包含第一CPU及第二CPU核心、耦合到所述第一CPU核心且包括L1控制器的L1高速缓存子系统、及耦合到所述L1高速缓存子系统及所述第二CPU核心的L2高速缓存子系统。所述L2高速缓存子系统包含L2存储器及L2控制器,其经配置以响应于存储器映射控制寄存器中的值被断言而在别名模式中操作。在所述别名模式中,所述L2控制器接收来自所述第一CPU核心的经引导到所述L2存储器中的虚拟地址的第一请求,接收来自所述第二CPU核心的经引导到所述L2存储器中的所述虚拟地址的第二请求,将所述第一请求引导到所述L2存储器中的物理地址A,且将所述第二请求引导到所述L2存储器中的物理地址B。
在一些实例中,一种方法包含响应于存储器映射控制寄存器值被断言而在别名模式中操作二级(L2)高速缓存子系统的L2控制器。在所述别名模式中操作所述L2控制器进一步包括接收来自第一CPU核心的经引导到所述L2高速缓存子系统的L2存储器中的虚拟地址的第一请求,接收来自第二CPU核心的经引导到所述L2存储器中的所述虚拟地址的第二请求,将所述第一请求引导到所述L2存储器中的物理地址A,且将所述第二请求引导到所述L2存储器中的物理地址B。
在一些实例中,一种方法包含通过二级(L2)控制器接收未被分配为L2高速缓存中的高速缓存线的地址的写入请求。所述写入请求指定写入数据。所述方法还包含通过所述L2控制器产生针对所述地址的读取请求;通过所述L2控制器为响应于所述读取请求而返回的读取数据保留寄存器文件中的条目;通过所述L2控制器用所述写入数据更新所述条目的数据字段;通过所述L2控制器更新与所述写入数据相关联的所述条目的启用字段;及通过所述L2控制器接收所述读取数据且将所述读取数据合并到所述条目的所述数据字段中。
在一些实例中,二级(L2)高速缓存子系统包含L2高速缓存、具有条目的寄存器文件及L2控制器。所述L2控制器经配置以接收针对未被分配为所述L2高速缓存中的高速缓存线的地址的写入请求,所述写入请求包括写入数据;产生针对所述地址的读取请求;为响应于所述读取请求返回的读取数据保留所述寄存器文件中的所述条目;用所述写入数据更新所述条目的数据字段;更新与所述写入数据相关联的所述条目的启用字段;且接收所述读取数据且将所述读取数据合并到所述条目的所述数据字段中。
在一些实例中,一种设备包含中央处理单元(CPU)核心及耦合到所述CPU核心的一级(L1)高速缓存子系统。所述L1高速缓存子系统包含L1高速缓存及L1控制器。所述设备还包含耦合到所述L1高速缓存子系统的二级(L2)高速缓存子系统。所述L2高速缓存子系统包含L2高速缓存、具有条目的寄存器文件及L2控制器。所述L2控制器经配置以接收针对未被分配为所述L2高速缓存中的高速缓存线的地址的写入请求,所述写入请求包含写入数据;产生针对所述地址的读取请求;为响应于所述读取请求返回的读取数据保留所述寄存器文件中的所述条目;用所述写入数据更新所述条目的数据字段;更新与所述写入数据相关联的所述条目的启用字段;且接收所述读取数据且将所述读取数据合并到所述条目的所述数据字段中。
在一些实例中,一种方法包含通过L2控制器接收对L2高速缓存执行全局操作的请求及阻止新的阻塞事务进入耦合到所述L2高速缓存的管线而允许新的非阻塞事务进入所述管线。阻塞事务包含读取事务及非受害者写入事务。非阻塞事务包含响应事务、监听事务及受害者事务。所述方法进一步包含响应于所述管线不含有任何待决阻塞事务的指示,阻止新的监听事务进入所述管线而允许新的响应事务及受害者事务进入管线;响应于所述管线不含有任何待决监听事务的指示,阻止所有新事务进入所述管线;及响应于所述管线不含有任何待决事务的指示,对所述L2高速缓存执行所述全局操作。
在一些实例中,一种设备包含中央处理单元(CPU)核心及耦合到所述CPU核心的一级(L1)高速缓存子系统。所述L1高速缓存子系统包含L1高速缓存、L1控制器及耦合到所述L1高速缓存子系统的二级(L2)高速缓存子系统。所述L2高速缓存子系统包含L2高速缓存及L2控制器。所述L2控制器经配置以接收对所述L2高速缓存执行全局操作的请求且阻止新的阻塞事务进入耦合到所述L2高速缓存的管线且允许新的非阻塞事务进入所述管线。阻塞事务包含读取事务及非受害者写入事务。非阻塞事务包含响应事务、监听事务及受害者事务。所述L2控制器进一步经配置以响应于所述管线不含有任何待决阻塞事务的指示,阻止新的监听事务进入所述管线且允许新的响应事务及受害者事务进入所述管线;响应于所述管线不含有任何待决监听事务的指示,阻止所有新事务进入所述管线;且响应于所述管线不含有任何待决事务的指示,对所述L2高速缓存执行所述全局操作。
在一些实例中,二级(L2)高速缓存子系统包含L2高速缓存及L2控制器。所述L2控制器经配置以接收对所述L2高速缓存执行全局操作的请求且阻止新的阻塞事务进入耦合到所述L2高速缓存的管线且允许新的非阻塞事务进入所述管线。阻塞事务包含读取事务及非受害者写入事务。非阻塞事务包含响应事务、监听事务及受害者事务。所述L2控制器进一步经配置以响应于所述管线不含有任何待决阻塞事务的指示,阻止新的监听事务进入所述管线且允许新的响应事务及受害者事务进入所述管线;响应于所述管线不含有任何待决监听事务的指示,阻止所有新事务进入所述管线;且响应于所述管线不含有任何待决事务的指示,对所述L2高速缓存执行所述全局操作。
附图说明
对于各种实例的详细描述,现将参考附图,其中:
图1展示各种实例中的多级高速缓存系统的框图;
图2展示各种实例中的多级高速缓存系统的另一框图;
图3展示各种实例中的包含一级(L1)主及受害者高速缓存的多级高速缓存系统的另一框图;
图4展示各种实例中的多级管线的框图;
图5展示各种实例中的包含事务仲裁的管线的P4级的框图;
图6是各种实例中的用于事务仲裁的方法的流程图;
图7是各种实例中的用于暂停高速缓存管线以执行全局操作的方法的流程图;
图8a展示各种实例中的响应于写入分配而改进高速缓存分配的实例;
图8b展示各种实例中的图8a中使用的寄存器文件的实例;
图9展示各种实例中的响应于写入分配而改进高速缓存分配的方法的流程图;
图10展示各种实例中的使用随机数产生器的基于屏蔽的路选择策略的实例及流程图;
图11展示各种实例中的使用随机数产生器的替代路选择策略的流程图;
图12展示各种实例中的在高速缓存及非高速缓存模式中操作高速缓存控制器的流程图;
图13展示各种实例中的别名及非别名存储器操作的实例;及
图14展示各种实例中的用于执行别名及非别名存储器操作的方法的流程图。
具体实施方式
图1展示本描述的实例中的系统100的框图。实例系统100包含多个CPU核心102a到102n。每一CPU核心102a到102n耦合到专用L1高速缓存104a到104n及专用L2高速缓存106a到106n。L2高速缓存106a到106n继而耦合到共享第三级(L3)高速缓存108及共享主存储器110(例如,双倍数据速率(DDR)随机存取存储器(RAM))。在其它实例中,单一CPU核心102耦合到L1高速缓存104、L2高速缓存106、L3高速缓存108及主存储器110。
在一些实例中,CPU核心102a到102n包含寄存器文件、整数算术逻辑单元、整数乘法器及程序流控制单元。在实例中,与每一CPU核心102a到102n相关联的L1高速缓存104a到104n包含单独一级程序高速缓存(L1P)及一级数据高速缓存(L1D)。L2高速缓存106a到106n是保存指令及数据两者的组合指令/数据高速缓存。在某些实例中,CPU核心102a及其关联L1高速缓存104a及L2高速缓存106a形成在单一集成电路上。
CPU核心102a到102n在程序控制下操作以对数据执行数据处理操作。在解码及执行之前提取指令。在图1的实例中,L1高速缓存104a到104n的L1P存储由CPU核心102a到102n使用的指令。CPU核心102首先尝试存取来自L1高速缓存104的L1P的任何指令。L1高速缓存104的L1D存储由CPU核心102使用的数据。CPU核心102首先尝试存取来自L1高速缓存104的任何所需数据。两个L1高速缓存104(L1P及L1D)由L2高速缓存106支持,所述L2高速缓存106是统一高速缓存(例如,包含数据及指令两者)。在L1高速缓存104的高速缓存未命中的情况下,从L2高速缓存106寻找所请求指令或数据。如果所请求指令或数据存储在L2高速缓存106中,那么其被供应到请求L1高速缓存104以供应到CPU核心102。所请求指令或数据被同时供应到请求高速缓存及CPU核心102两者以加速使用。
统一L2高速缓存106进一步耦合到第三级(L3)高速缓存108,所述第三级(L3)高速缓存108在图1的实例中由L2高速缓存106a到106n共享。L3高速缓存108继而耦合到主存储器110。如下文将进一步详细描述,存储器控制器促进CPU核心102、L1高速缓存104、L2高速缓存106、L3高速缓存108与主存储器110中的不同各者之间的通信。存储器控制器处置以存储器为中心的功能,例如可高速缓存性确定、高速缓存一致性实施、错误检测及校正、地址转换及类似者。在图1的实例中,CPU核心102是多处理器系统的部分,且因此存储器控制器还处置CPU核心102之间的数据传送且维持CPU核心102当中的高速缓存一致性。在其它实例中,系统100仅包含单一CPU核心102以及其关联L1高速缓存104及L2高速缓存106。
图2展示一些实例中的系统200的框图。系统200的某些元件类似于上文关于图1描述的元件,但更详细地展示。举例来说,CPU核心202类似于上文描述的CPU核心102。上文描述的L1高速缓存104子系统被描绘为L1D 204及L1P 205。上文描述的L2高速缓存106在此处被展示为L2高速缓存子系统206。L3高速缓存208类似于上文描述的L3高速缓存108。系统200还包含耦合到L2高速缓存子系统206的串流引擎210。系统200还包含耦合到L2高速缓存子系统206的存储器管理单元(MMU)207。
L2高速缓存子系统206包含L2标签随机存储器212、L2一致性(例如,修改、独占、共享、无效(“MESI”))数据存储器214、阴影L1标签随机存储器216及L1一致性(例如,MESI)数据存储器218。框212、214、216、218中的每一者替代地被称为存储器或RAM。L2高速缓存子系统206还包含标签随机存储器错误校正码(ECC)数据存储器220。在实例中,针对存储器212、214、216、218中的每一者维持ECC数据存储器220。
L2高速缓存子系统206包含L2控制器222,下文将进一步详细描述所述L2控制器222的功能性。在图2的实例中,L2高速缓存子系统206耦合到包含四个组224a到224d的存储器(例如,L2 SRAM 224)。接口230执行数据仲裁功能且通常协调L2高速缓存子系统206与L2SRAM 224之间的数据传输,而ECC块226执行错误校正功能。L2高速缓存子系统206包含一或多个控制或配置寄存器228。
在图2的实例中,L2 SRAM被描绘为四个组224a到224d。然而,在其它实例中,L2SRAM包含更多或更少组,包含被实施为单一组。L2 SRAM 224用作L2高速缓存且在本文中被替代地称为L2高速缓存224。
L2标签随机存储器212包含物理地址列表,所述物理地址列表的内容(例如,数据或程序指令)已被高速缓存到L2高速缓存224。在实例中,地址转换器将虚拟地址转换为物理地址。在一个实例中,地址转换器直接从虚拟地址产生物理地址。举例来说,使用虚拟地址的低n位作为物理地址的最低有效n位,其中基于配置于主存储器中的一组表产生物理地址的最高有效位(低n位以上)。在这个实例中,L2高速缓存224可使用物理地址寻址。在某些实例中,来自标签随机存储器212查找的命中/未命中指示符存储在存储器中。
L2 MESI存储器214维持一致性数据以实施与L2 SRAM 224、外部共享存储器及在来自系统200中的其它位置的L2高速缓存中高速缓存的数据的完全MESI一致性。下文进一步详细描述系统200一致性的功能性。
L2高速缓存子系统206还跟踪或隐藏L1D阴影标签随机存储器216及L1D MESI存储器218中的L1D标签。标签随机存储器ECC数据220为标签存储器且也为L2 MESI存储器214及L1D MESI存储器218中的一或两者提供错误检测及校正。L2高速缓存控制器222控制L2高速缓存子系统206的操作,包含L2高速缓存子系统206内部及系统200的其它组件当中两种情况的处置一致性操作。
图3展示演示在一些实例中实施的高速缓存一致性的各种特征的系统300的框图。系统300含有类似于上文关于图1及2描述的元件的元件。举例来说,CPU核心302类似于CPU核心102、202。图3还包含L1高速缓存子系统304、L2高速缓存子系统306及L3高速缓存子系统308。L1高速缓存子系统304包含耦合到L1 SRAM 312的L1控制器310。L1控制器310还耦合到L1主高速缓存314及L1受害者高速缓存316,其在下文进一步详细描述。在一些实例中,L1主及受害者高速缓存314、316实施L1D 204及/或L1P 205的功能性。
L1控制器310耦合到L2高速缓存子系统306的L2控制器320。L2控制器320还耦合到L2 SRAM 322。L2控制器320耦合到L2高速缓存324且耦合到L1主高速缓存326的阴影以及L1受害者高速缓存328的阴影。为便于描述,单独展示L2高速缓存324及L2 SRAM 322,但其可物理上一起实施(例如,作为L2 SRAM 224的部分,包含在分组式配置中,如上文描述)。类似地,阴影L1主高速缓存326及阴影L1受害者高速缓存328可物理上一起实施,且类似于上文描述的L1D阴影标签随机存储器216及L1DMESI 218。L2控制器320还耦合到L3高速缓存子系统308的L3控制器309。为了简单起见,未展示L3高速缓存及主存储器(例如,上文描述的DDR110)。
高速缓存一致性是允许数据及程序高速缓存以及不同请求者(包含不具有高速缓存的请求者)确定存储器中的给定地址的最新数据值的技术。高速缓存一致性使这个一致数据值能够通过系统300中存在的观察者(例如,发出读取给定存储器位置的命令的高速缓存或请求者)确定。特定的一些实例是指示范性MESI一致性方案,其中高速缓存线经设置为四个高速缓存一致性状态中的一者:修改、独占、共享或无效。其它一些实例是指MESI一致性方案的子集,而又其它实例包含比MESI一致性方案更多的一致性状态。不管一致性方案如何,给定高速缓存线的高速缓存一致性状态存储在(举例来说)上文描述的L2 MESI存储器214中。
具有修改的高速缓存一致性状态的高速缓存线指示相对于主存储器(例如,DDR110)修改高速缓存线,且高速缓存线独占地保存在当前高速缓存(例如,L2高速缓存324)中。修改高速缓存一致性状态还指示高速缓存线明确地不存在于任何其它高速缓存(例如,L1或L3高速缓存)中。
具有独占的高速缓存一致性状态的高速缓存线指示未相对于主存储器(例如,DDR110)修改高速缓存线,但高速缓存线独占地保存在当前高速缓存(例如,L2高速缓存324)中。独占高速缓存一致性状态还指示高速缓存线明确地不存在于任何其它高速缓存(例如,L1或L3高速缓存)中。
具有共享的高速缓存一致性状态的高速缓存线指示未相对于主存储器(例如,DDR110)修改高速缓存线。共享高速缓存状态还指示高速缓存线可存在于多个高速缓存(例如,除L2高速缓存324以外的高速缓存)中。
具有无效的高速缓存一致性状态的高速缓存线指示高速缓存线不存在于高速缓存(例如,L2高速缓存324)中。
一些实例利用硬件技术、控制逻辑及/或状态信息来实施一致系统。每一观察者可发出读取请求—且某些观察者能够发出写入请求—到被标记为可共享的存储器位置。高速缓存特定来说还可向其发出监听请求,取决于监听操作的类型而要求其高速缓存状态被读取、返回或甚至更新。在上文描述的示范性多级高速缓存层次结构中,L2高速缓存子系统306经配置以既发送又接收监听操作。L1高速缓存子系统304接收监听操作,但不发送监听操作。L3高速缓存子系统308发送监听操作,但不接收监听操作。在一些实例中,L2高速缓存控制器320维持状态信息(例如,呈硬件缓冲器、存储器及逻辑的形式)以还跟踪L1主高速缓存314及L1受害者高速缓存316两者中存在的一致高速缓存线的状态。跟踪一致高速缓存线的状态实现一致硬件高速缓存系统的实施。
一些实例是指各种类型的一致事务,包含读取事务、写入事务、监听事务、受害者事务及高速缓存维护操作(CMO)。这些事务有时分别被称为读取、写入、监听、受害者及CMO。
读取返回给定地址的当前值,无论所述值是存储在端点(例如,DDR 110)处,还是存储在一致系统300中的高速缓存中的一者中。写入更新给定地址的当前值,且使存储在一致系统300中的高速缓存中的给定地址的其它副本无效。监听读取存储在高速缓存中的数据的副本或使其无效(或两种情况)。监听从层次结构的数字较高级发起到层次结构的下一数字较低级的高速缓存(例如,从L2控制器320到L1控制器310),且能够根据需要进一步传播到层次结构的甚至更低级。受害者从层次结构中的数字较低级高速缓存发起到高速缓存层次结构的下一数字较高级(例如,从L1控制器310到L2控制器320)。受害者将经修改数据传送到层次结构的下一级。在一些情况中,受害者被进一步传播到高速缓存层次结构的数字较高级(例如,如果L2控制器310针对DDR 110中的地址向L2控制器320发送受害者,且L2高速缓存324中不存在线,那么L2控制器320将受害者转发给L3控制器309)。最后,CMO导致在针对给定地址的高速缓存中的一者中采取动作。
仍参考图3,在一个实例中,L1主高速缓存314是服务读取及写入命中及监听的直接映射高速缓存。L1主高速缓存314还保持跟踪其高速缓存线的高速缓存一致性状态信息(例如,MESI状态)。在实例中,L1主高速缓存314是读取分配高速缓存。因此,在未在L1主高速缓存314中分配空间的情况下将未命中L1主高速缓存314的写入发送到L2高速缓存子系统306。在L1主高速缓存314经直接映射的实例中,当在L1主高速缓存314中发生新分配时,组中的当前线被移动到L1受害者高速缓存316,而不管线是干净的(例如,未修改)或脏的(例如,经修改)。
在实例中,L1受害者高速缓存316是完全关联高速缓存,其保存(举例来说)归因于替换已从L1主高速缓存314移除的高速缓存线。L1受害者高速缓存316保存干净及脏线两者。L1受害者高速缓存316服务读取及写入命中及监听。L1受害者高速缓存316还保持跟踪其高速缓存线的高速缓存一致性状态信息(例如,MESI状态)。当从L1受害者高速缓存316替换处于经修改状态的高速缓存线时,所述高速缓存线作为受害者被发送到L2高速缓存子系统306。
如上文描述,L2高速缓存子系统306包含统一L2高速缓存324,所述统一L2高速缓存324用于服务来自多个请求者类型的请求,包含L1D及L1P(通过L1控制器310)、串流引擎210、存储器管理单元(MMU 207)及L3高速缓存(通过L3控制器309)。在实例中,L2高速缓存324不与L1高速缓存子系统304包含在一起,此意谓L2高速缓存324无需包含存储在L1高速缓存314、316中的所有高速缓存线,但可在两个级中高速缓存一些线。继续这个实例,L2高速缓存324也是非独占的,此意谓未明确地阻止高速缓存线高速缓存在L1及L2高速缓存314、316、324中。举例来说,归因于分配及随机替换,高速缓存线可存在于L1及L2高速缓存中的一者、两者中或不存在于任一者中。非包含及非独占高速缓存策略的组合使L2控制器320能够管理其高速缓存内容而无需L1控制器310使高速缓存线无效或移除高速缓存线。这简化L2高速缓存子系统306中的处理且通过允许临界数据保持高速缓存在L1高速缓存子系统304中(即使其已从L2高速缓存324逐出)而实现提高CPU核心302的性能。
在一些实例中,L2高速缓存子系统306包含处理不同类型的事务的控制管线。在本描述中的某些实例中,(举例来说)基于接收装置是被允许延迟事务还是暂停事务来将事务分类为阻塞的或非阻塞的。阻塞事务的实例包含读取及写入请求及指令提取。非阻塞事务的实例包含受害者、监听及对读取及/或写入请求的响应。仍参考图3,本文中描述的L2控制器320组合本地一致性(例如,处置标定其本地L2 SRAM 322作为端点的请求)及外部一致性(例如,处置标定外部存储器(例如L3 SRAM(为简单起见未展示)或DDR110)作为端点的请求)两者。端点是指存储器目标,例如L2 SRAM 322或DDR 110,其驻留在芯片上的特定位置处,通过单一控制器及/或接口直接作用,且可高速缓存在例如图3中描绘的一致高速缓存层次结构的各个级。主机(例如,硬件组件、电路或类似者)是指发出读取及写入存取到端点的请求者。在一些实例中,主机将这些读取及写入存取的结果存储于高速缓存中,但主机不一定将此类结果存储于高速缓存中。
在实例中,端点(例如,用于源自L2控制器320的高速缓存事务的L3高速缓存子系统308及用于源自L2控制器320的监听事务的L1高速缓存子系统304)将不在另一阻塞事务之后暂停非阻塞事务。因此,保证由端点消耗非阻塞事务。然而,可通过端点无限期地暂停阻塞事务。L2控制器320将阻塞及非阻塞事务两者发送到L3控制器309及L1控制器310两者。如果L2控制器320具有待发送阻塞事务,但其被暂停,那么管线控制器(例如,仲裁逻辑)确保非阻塞事务可绕过暂停的阻塞事务且被发送到端点。作为一个实例,L2管线充满来自串流引擎205的读取,所述读取是阻塞事务。L3控制器309能够暂停此类串流读取。然而,如果L1控制器310需要将受害者发送到L2控制器,或如果L2控制器320需要响应于来自L3控制器309的监听,那么一些实例允许通过同一控制管线发送此类非阻塞事务。
图4展示一些实例中的L2高速缓存子系统306的管线400。特定一些实例特别涉及在管道级P4 428中实行的事务仲裁。然而,为了额外上下文及清楚起见,下文描述管线400。管线400从各种主机接收事务,例如程序存储器控制器402(例如,PMC或L1P 205)、数据存储器控制器404(例如,DMC或L1D 204)、串流引擎406(例如,SE 210)、多核共享存储器控制器408(例如,MSMC或L3控制器309)及存储器管理单元410(例如,MMU 207)。多个FIFO 412含有来自各种主机402、404、406、408、410的不同类型的事务,而资源分配单元(RAU)414、416、418(举例来说)基于请求者的特定类型及可源自所述请求者的事务的类型仲裁来自每一请求者的事务。出于本描述的目的,将事务分类为阻塞的及非阻塞的。
RAU级414、416、418在具有某些特性的不同事务类型当中仲裁。举例来说,阻塞读取及写入包含数据加载及存储、代码提取及SE 406读取。这些阻塞事务可在非阻塞事务或响应之后暂停。另一实例包含非阻塞写入,其包含DMC 404受害者(来自本地CPU核心或来自由DMC 404高速缓存的不同CPU核心)。这些类型的事务基于一致性规则与其它非阻塞及响应事务一起仲裁。另一实例包含非阻塞监听,其为来自MSMC 408的监听,所述监听基于一致性规则与其它非阻塞及响应事务一起仲裁。另一实例包含例如对发送到MSMC 408的读取或高速缓存线分配事务或发送到DMC 404的监听的响应。在两个情况中,响应基于一致性规则与其它非阻塞及响应事务一起仲裁。最后,DMA事务是可能的,其通常被允许在其它非阻塞或阻塞事务之后暂停。
并非所有请求者发起所有这些类型的事务。举例来说,DMC 404可发起阻塞读取、阻塞写入、非阻塞写入(例如,DMC 404受害者)、非阻塞监听响应及非阻塞DMA响应(例如,针对L1D 204SRAM)。针对DMC 404,非阻塞事务优先于阻塞事务赢得仲裁。在各种非阻塞事务之间,非阻塞命令依其到达的顺序被处理。DMA响应用于存取L1D 204SRAM且不一定遵循任何命令顺序。
实例PMC 402可仅发起阻塞读取。在一个实例中,按顺序处理来自PMC 402的读取。
实例SE 406可发起阻塞读取及CMO。在一个实例中,按顺序处理来自SE 406的读取及CMO存取。
实例MMU 410可仅发起阻塞读取。在一个实例中,按顺序处理来自MMU 410的读取。
最后,实例MSMC 408可发起阻塞DMA读取、阻塞DMA写入、非阻塞写入(例如,来自另一CPU核心的L1D 204受害者)、非阻塞监听及非阻塞读取响应。针对MSMC 408,非阻塞事务优先于阻塞事务赢得仲裁。非阻塞事务之间的仲裁取决于保持存储器一致所需的排序。然而,在实例中,读取响应依任何顺序进行仲裁,因为读取响应之间不存在危险。
级P0(420)到P3(426)是非暂停的及非阻塞的。非暂停性质意谓事务不在这些管线级中暂停。在实例中,事务花费1或2个周期,在下一管线级中具有保证时隙。非阻塞性质依赖于以下事实:P0 420之前的仲裁已保证FIFO条目可用于进入P0 420的事务及其可产生的任何次级事务。
级P0 420通常执行信用管理功能,其中某些事务基于事务类型「消耗」信用。这些消耗信用稍后在管线400中释放。信用的概念是一种确保仅在其使存储器元件在稍后管道级中到位时允许事务前进,此确保管线的非阻塞特性的示范性方法。然而,其它实例不一定依赖于信用,而是采用其它方法来确保仅在存在足够管线空间以允许事务继续通过非阻塞的管线级时允许事务前进。
级P0 420以及级P1 422及P2 424执行各种高速缓存及SRAM功能性,例如设置对各种高速缓存的读取,针对各种高速缓存执行ECC检测及/或校正,且确定高速缓存命中及未命中。级P3 426执行额外高速缓存命中及未命中控制,且还释放某些事务类型的信用。
一些实例涉及管线级P4 428及高速缓存未命中仲裁及发送级中的各种事务的动态仲裁,其在下文进一步详细描述。参考图5,展示系统500,其包含来自管线400中的一者的示范性P4级428。尽管为了简单起见未展示,然应了解,其它管线含有以类似于下文描述的P4级428的方式起作用的类似P4级。如展示,P4级428包含用于各种事务类型的FIFO。举例来说,P4级428包含用于类型0阻塞变换502的FIFO、用于类型1非阻塞事务504的FIFO及用于类型2非阻塞事务506的FIFO。下文进一步详细描述特定事务类型。将每一FIFO 502、504、506的输出输入到多路复用器508,所述多路复用器508由动态仲裁状态机510控制,此也将在下文进一步详细描述。每一P4级428的输出可用于高速缓存未命中仲裁及发送级的各种FIFO512,所述高速缓存未命中仲裁及发送级是其中来自所有管道的事务经仲裁、多路复用且从L2高速缓存子系统306发送(举例来说)到L3高速缓存子系统308的单个级。
FIFO 502从先前管道级接收类型0事务,所述类型0事务包含所有阻塞读取及写入事务。FIFO 504从先前管道级接收类型1事务,所述类型1事务包含来自L1D 204的非阻塞受害者或监听响应。FIFO 506从先前管道级接收类型2事务,所述类型2事务包含命中L2高速缓存324的非阻塞L2受害者或监听响应。
如描述,高速缓存未命中仲裁及发送级是处置来自所有管道的事务的级。在这级中仲裁来自任何管道的旨在用于L3高速缓存子系统308的事务。在实例中,这个仲裁与来自每一管道的旨在用于L1高速缓存子系统304的事务隔离且独立于所述事务。高速缓存未命中仲裁及发送级基于事务类型评估将特定事务发送到L3高速缓存子系统308端点所需的信用的类型及数目,且仲裁来自管道的可出去的一个事务(例如,使用仲裁逻辑514来控制进入各种FIFO 512)。
在高速缓存未命中仲裁及发送级的一个实例中,输出FIFO 512包含具有可变可配置深度的不同结构。在这个实例中,全局FIFO可接受阻塞及非阻塞事务。阻塞FIFO可接受高速缓存分配及阻塞读取及写入事务。当全局FIFO已满时,将阻塞事务推入阻塞FIFO中。非阻塞FIFO可接受监听响应及L1高速缓存子系统304及L2高速缓存子系统306受害者。当全局FIFO已满时,将非阻塞事务推入非阻塞FIFO中。举例来说,基于与L3高速缓存子系统308的交互从FIFO 512释放事务,所述交互指示在L3高速缓存子系统308中事务处理带宽是否可用及/或有多少事务处理带宽可用,以及用于什么类型的事务(例如,基于信用的方案)。读取响应FIFO用于DMA读取响应,所述DMA读取响应在DMA线程上被释放到L3高速缓存子系统308。
在实例中,FIFO全信号从输出FIFO 512发送到P4级428。在一个实例中,FIFO全信号实际上包含用于FIFO 512中的每一者的单独信号。这些单独信号在对应FIFO 512已满时被断言,且在对应FIFO 512未满时被取消断言。如下文将进一步描述,对下一级中的FIFO512的状态的这种洞察允许P4级428的动态仲裁状态机510在各种事务(例如,类型0、类型1、类型2)当中更有效地仲裁。
特定来说,FIFO全信号指示事务(例如,被动态仲裁状态机510考虑)试图前进到的FIFO 512不具有空时隙。状态机510监测其可将事务推进到的FIFO 512的FIFO全信号的特定信号。在事务包括下文进一步描述的两个数据阶段的实例中,FIFO全信号指示FIFO 512中的两个数据时隙的可用性。
在一些实例中,P4级428的动态仲裁状态机510监测来自前一级P3 426的事务,以及FIFO 512的可用性(例如,通过FIFO全信号)。如描述,前一级P3 426可将类型2、类型1或类型0的事务发送到P4级428。基于上文描述的阻塞及非阻塞规则,类型2事务具有最高优先级,而类型0事务具有最低优先级。
图6展示动态仲裁状态机510的操作的流程图600。图表600(例如,状态机510)开始于状态602,其中状态机510监测来自级P3 426的事务。举例来说,FIFO 502、504、506最初是空的,且因此在接收到来自级P3 426的事务时,状态机510知道事务存在于FIFO 502、504、506中的一者中。当在FIFO 502、504、506中的一者中接收到事务时,状态机510继续进行到框604以确定事务是否具有最高优先级(例如,在上文实例中,在FIFO 506中的类型2)。如果类型2事务可得,那么状态机510继续进行到框606。
在图6的实例中,假设事务作为两个数据阶段(DP)被处理。举例来说,高速缓存线的一致性单位是128字节,而物理总线宽度仅为64字节(例如,数据阶段),且因此事务被分为第一及第二数据阶段。在其中事务是单一DP事务的另一实例中,通过消除在再次监测来自FIFO 502、504、506的新事务之前发送第二DP的需求而简化状态机510。
由于假设事务具有两个DP,因此状态机510继续进行到框606,其中发送第一DP及命令以对进入FIFO 512进行仲裁。当高速缓存未命中仲裁级接受第一DP时,其将ACK信号传输到状态机510。状态机510在继续进行到框608且发送第二DP以对进入FIFO 512进行仲裁之前等待接收ACK。在这个实例中,ACK在通过P4级428将第一DP及命令发送到高速缓存未命中仲裁级之后的周期到达。
在发送第二DP之后,状态机510继续进行到框610以确定事务是否具有最高优先级(例如,类型2)。如果类型2事务在FIFO 506中可得,那么状态机510返回到框606且如上文描述般继续进行。因此,只要类型2事务在FIFO 506中可得,状态机510就继续将最高优先级赋予那些事务。
然而,如果类型2事务不存在于FIFO 506中(如在框604或框610中确定),那么状态机继续进行到框612以确定事务在FIFO 504中是否可得(例如,是类型1事务)。如果类型1事务在FIFO 504中可得,那么状态机510继续到框614。如上所述,假设事务具有两个DP,且因此状态机在框614中继续进行以发送第一DP及命令以对进入FIFO 512进行仲裁。
与处理具有最高优先级的类型2事务时不同,当尚未接收到ACK时,状态机510继续进行到框616以校验FIFO全信号。只要FIFO全信号未被断言(例如,对于涉及类型1事务的FIFO 512),状态机510就返回到框614以继续等待ACK。然而,如果FIFO全信号被断言,那么涉及类型1事务的FIFO 512中不存在空间,且状态机510继续到框618以确定类型2事务在FIFO 506中是否可得。如上所述,如果无法完成较低优先级事务(例如,归因于FIFO 512已满),那么状态机510优先考虑最高优先级类型2事务(如果在FIFO 506中可得)。如果类型2事务可得,那么状态机510返回到框606以处理如上文描述的类型2事务。如果在框618中,确定类型2事务不可得,那么状态机510返回到框616以确定FIFO全信号是否仍被断言。
框616、614与618之间的上述循环继续直到接收到ACK,此时状态机510从框614继续进行到框620且发送第二DP以对进入FIFO 512进行仲裁。一旦已发送第二DP,状态机510便在框620中等待ACK且继续进行返回到框602以监测FIFO 502、504、506中的事务。
参考回到框612,如果类型1事务在FIFO 504中不可得,那么类型0的事务在FIFO502中可得且状态机510继续到框624。如上所述,假设事务具有两个DP,且因此状态机在框624中继续进行以发送第一DP及命令以对进入FIFO 512进行仲裁。
如上文处理类型1事务,当尚未接收到ACK时,状态机510继续进行到框626以校验FIFO全信号。只要FIFO全信号未被断言(例如,针对涉及类型0事务的FIFO 512),状态机510就返回到框624以继续等待ACK。然而,如果FIFO全信号被断言,那么涉及类型0事务的FIFO512中不存在空间,且状态机510继续到框628以确定类型2事务在FIFO 506中可得或类型1事务在FIFO 504中可得。如上所述,如果无法完成较低优先级事务(例如,归因于FIFO 512已满),那么状态机510优先考虑较高优先级类型2事务(如果在FIFO 506中可得)及类型1事务(如果在FIFO 504中可得)。如果类型2或类型1事务可得,那么状态机510返回到框604以确定类型2或类型1可得,且状态机510如上文描述般操作。如果在框628中,确定类型2或类型1事务不可得,那么状态机510返回到框626以确定FIFO全信号是否仍被断言。
框626、624与628之间的上述循环继续直到接收到ACK,此时状态机510从框624继续进行到框600且发送第二DP以对进入FIFO 512进行仲裁。一旦已发送第二DP,状态机510便在框630中等待ACK且继续进行返回到框602以监测FIFO 502、504、506中的事务。
因此,动态仲裁状态机510经常优先考虑较高优先级事务,以确保较低优先级事务无法继续进行到下一级不会干扰此类较高优先级事务的处理。
而且,通过在各种事务的处理期间校验FIFO全信号,状态机510保持知道特定事务是否可从级P4 428继续进行。举例来说,如果FIFO全信号被断言,那么事务无法从P4级428继续进行到高速缓存未命中仲裁及发送级。FIFO全信号为低指示通过动态仲裁状态机510操作事务最终将能够进入FIFO 512中的一者(但在一些情况中,其可被暂时暂停)。举例来说,如果另一管线的P4级能够将事务推进到高速缓存未命中仲裁及发送级,那么FIFO 512可能变满,从而导致FIFO全信号被断言。然而,如果FIFO 512具有可用时隙,那么FIFO全信号保持取消断言。最后,如果状态机510被暂停(举例来说,因为FIFO全信号被断言),那么事务无法前进。如果具有较高优先级的事务到达,那么状态机510切换以处理较高优先级事务。正被处理的事务可被暂时保存或搁置(例如,在存储器结构中,其在一些实例中不同于FIFO 502、504、506、512),直到状态机510已处理较高优先级事务,此时状态机510返回以处理较低优先级事务。
在图6的实例中,归因于数据阶段大小小于事务大小,假设事务作为两个数据阶段(DP)被处理。然而,在其它实例中,事务作为单一数据阶段被处理,且因此从图6中的状态机移除框608、620及630。在另一实例中,代替具有高、中及低优先级事务(例如,分别为类型2、类型1及类型0事务),事务被分类为高优先级或低优先级。在这个实例中,从图6中的状态机移除框612及624到630。在又另一实例中,代替具有多个输入事务缓冲器502、504、506,将这些缓冲器压缩为较少缓冲器,在一些实例中包含单一缓冲器。类似地,代替具有多个输出缓冲器512,将这些缓冲器压缩为较少缓冲器,在一些实例中包含单一缓冲器。
在一些实例中,全局高速缓存操作被管线化以利用上文描述的L2高速缓存子系统306的分组式配置。全局高速缓存操作是在多于一条高速缓存线上操作的事务。另外,L2控制器320管理L2高速缓存子系统306上的全局高速缓存操作以避免在全局高速缓存操作期间遇到任何阻塞状况。
如描述,在一些实例中,L2高速缓存子系统306包含多个组(例如,上文在图2中展示的组224a到224d)。在某些实例中,组的数目是可配置的。每一组具有与其相关联的独立管线400。因此,L2控制器320经配置以促进对L2高速缓存324并行的多达四个事务(在图2的实例中)(例如,每一组一个事务)。在一些实例中,这使L2控制器320能够同时促进L2高速缓存324的组上的全局一致性操作。
图7展示在各种一些实例中用于暂停L2高速缓存子系统306的管线(例如,上文描述的管线400)以执行全局高速缓存操作的方法700的流程图。方法700开始于框702,所述框702是全局操作状态机的开始。在框702中,L2控制器320接收对L2高速缓存324执行全局操作的请求。在一些实例中,请求呈断言控制寄存器(例如ECR 228)中的字段的程序(例如,由CPU核心302执行)的形式。
能够向L2控制器320请求各种全局高速缓存操作。在一个实例中,全局高速缓存操作是无效操作,其使L2高速缓存324中的每一高速缓存线无效。在另一实例中,全局操作是写回无效操作,其中L2高速缓存324中的脏高速缓存线(例如,具有修改的一致性状态)被写回到其端点且随后无效。在又另一实例中,全局操作是写回操作,其中L2高速缓存324中的脏高速缓存线被写回到其端点。接着,L2高速缓存324中的写回、脏高速缓存线使其一致性状态更新为共享高速缓存一致性状态。在一些这些实例中,全局操作包括查询L2高速缓存324中的每一线的高速缓存一致性状态及更新L2高速缓存324中的每一线的高速缓存一致性状态。举例来说,如果全局操作是写回操作,那么在L2高速缓存324中的经修改高速缓存线被写回到其端点之后,L2控制器320查询L2高速缓存324中的线的一致性状态且更新待共享的经修改高速缓存线的一致性状态。
不管(举例来说)如对L2控制器320的请求中指示(例如,基于控制寄存器(例如ECR228)的断言字段)般执行的全局高速缓存操作的类型如何,方法700继续到框704,其中L2控制器320强制执行阻塞软暂停。在阻塞软暂停阶段中,L2控制器320暂停所有新的阻塞事务进入管线,而允许包含响应事务、非阻塞监听及受害者事务的非阻塞事务被接受到管线中且进行仲裁。
在实例中,L2控制器320需要多个周期以在阻塞软暂停阶段704中冲刷其管线。因此,方法700在框706中继续以确定是否已从管线冲刷所有阻塞事务。响应于管线不再含有阻塞事务的指示,方法700继续到框708,其中L2控制器320强制执行非阻塞软暂停。在非阻塞软暂停阶段中,L2控制器320暂停新的监听事务进入管线,而允许新的响应事务及受害者事务进入管线。因此,非阻塞软暂停阶段阻止针对先前高速缓存在L1高速缓存314中的线向L1控制器310发起新的监听。
方法700在框710中继续以确定是否已从管线冲刷所有监听事务。响应于管线不再含有待决监听事务的指示,方法700继续到框712,其中L2控制器320强制执行硬暂停。在硬暂停阶段中,L2控制器320阻止包含响应事务的所有新事务进入管线。
在一些实例中,L2控制器320在软及硬暂停阶段期间取消断言就绪信号。取消断言就绪信号向CPU核心302指示不向L1控制器310发送针对全局一致性操作或高速缓存大小改变的额外请求。因此,L2控制器320能够完成待决全局一致性操作同时保证CPU核心302将不发出额外全局一致性操作。就绪信号保持取消断言直到完成全局操作。
方法在框714中继续以确定是否已从管线冲刷所有事务。响应于L2控制器320确定管线不再含有待决事务,方法700继续到框716。通过L2控制器320(举例来说)在每一管线上独立地(例如,作为针对每一管线实施的状态机)且并行地执行方法700步骤702到714。然而,在框716中,L2控制器320等待从所有管线确认其已冲刷所有待决事务(例如,所有管线已继续进行到框716)。一旦接收到所有管线已冲刷所有待决事务的确认,方法700便继续到框718,其中执行全局操作。在实例中,全局操作也在管线中的每一者上独立并行地继续进行到分组式L2高速缓存324。在CPU核心302上执行的请求执行全局操作(例如,通过断言控制寄存器(例如ECR 228)中的字段)的应用程序也经配置以轮询同一字段,L2控制器320经配置以在完成全局操作后取消断言所述字段。
通过以如上文描述的分阶段方式暂停其管线,L2控制器320首先避免继续处理可改变L2高速缓存324的状态的事务(例如,导致高速缓存线的高速缓存一致性状态改变的读取请求)。虽然L2高速缓存324将不再接收可改变其状态的事务,但L2控制器320继续处理由在请求全局操作之前发生的事务产生的某些事务。举例来说,如果L1控制器310作为全局操作之前的读取的结果向L2控制器320发出受害者,那么L2控制器320不一定知道什么读取请求导致来自L2控制器310的受害者,且因此继续处理此类受害者(及监听响应)作为较安全方法。L2控制器320不继续发送新事务,因为这可能导致循环条件。全局操作之前的监听事务继续被处理(例如,在框710中)且一旦那些监听事务被处理,L2控制器320便已成功地停止处理新事务,且处理已在进行中的那些事务直到完成。因此,通过L2控制器320启用的全局操作的并行性能从分组式L2高速缓存324的并行性质及全球操作的并行实施改进性能。
从CPU核心302接收的可高速缓存在L2高速缓存324中但未命中L2高速缓存324的写入请求可为“写入分配”。一些实例涉及由L2控制器320及L2高速缓存子系统306的关联结构针对此类写入分配事务启用的某些改进。
在实例中,L2高速缓存子系统306包含用于服务写入分配事务的存储器存储元件(例如,缓冲器)。这些在本文中被称为寄存器文件,但本描述不应被解释为限于特定类型的存储器元件。下文进一步论述的图8b展示用于服务写入分配事务的寄存器文件的实例。
当L2控制器320确定执行写入分配时(例如,当写入请求未命中L2高速缓存324时),L2控制器320经配置以产生针对待写入L2高速缓存子系统306中的地址的读取请求。因此,代替将写入请求转发到L3控制器309或DDR 110,L2控制器320经配置以将待写入数据带入L2高速缓存子系统306中以最终存储在L2高速缓存324中。
由L2控制器320接收的写入请求包含数据字段中的写入数据,且在一些情况中还包含启用字段,所述启用字段指定数据字段的有效部分(例如,含有有效写入数据的那些)。下文进一步描述启用字段。无论如何,在一些情况中,L2控制器320在寄存器文件中为与写入请求相关联的数据(例如,数据字段及可能启用字段)分配空间。而且,L2控制器320在寄存器文件中为预期由L2控制器320作为写入分配的结果发出的读取请求产生的读取响应分配空间。当接收到读取响应时,L2控制器320将读取响应数据写入L2高速缓存324中的线且接着将写入数据写入L2高速缓存324中的相同线,从而完成初始写入请求。然而,这个方法需要寄存器文件中的更多存储且增加为最后实施写入请求而实行的事务的数目。
在一些实例中,L2控制器320经配置以在寄存器文件中为响应于由写入分配事务产生的读取请求而返回的读取数据保留条目。L2控制器320用写入数据(例如,初始写入请求的数据字段)更新保留条目的数据字段且L2控制器320基于写入数据来更新保留条目的启用字段。接着,当读取响应被返回时,L2控制器320经配置以将返回的读取数据合并到保留条目的数据字段中。接着,将保留条目写入L2高速缓存324中。这减小寄存器文件中服务此写入分配事务所需的空间。而且,减少到L2高速缓存324的事务,因为在L2高速缓存子系统306的寄存器文件中发生合并。
图8a展示上述功能性的实例800,其使L2控制器320能够尤其响应于写入请求而改进高速缓存分配。实例800包含在已由未命中L2高速缓存324的L2控制器320接收到写入请求之后寄存器文件中的条目的初始快照。在这个实例800中,写入请求是针对地址A。写入数据包含数据字段的第一部分802中的x0A及数据字段的第二部分804中的x0B。在这个实例中,启用字段包括数据字段中的每字节一位数据,其在对应数据字段部分有效时被断言。因此,第一及第二部分802、804的启用字段被断言。相反地,第三及第四部分806、808的启用字段被取消断言,且因此第三及第四部分806、808中的数据字段作为无效写入数据而无关。
实例800还包含在已由L2控制器320接收到读取响应(例如,对由写入分配事务导致的读取请求的响应)之后寄存器文件中的条目的稍后快照。在这个实例800中,地址A处含有的数据是xCDEF9876。如上所述,L2控制器320经配置以将写入数据与条目中的读取响应合并。特定来说,有效写入数据(通过断言的对应启用字段指示)覆写部分810及812中的读取响应数据,而未被覆写(归因于取消断言的对应启用字段)的读取响应数据保留在部分814、816中的条目中。特定来说,当启用字段的子字段或部分(例如,部分802及804)被断言时,将写入数据与条目中的读取响应合并包含丢弃读取数据。类似地,当启用字段的子字段或部分(例如,部分806及808)被取消断言时,将写入数据与读取响应合并包含用读取数据的对应部分(例如,实例800中的字节)替换与取消断言的子字段相关联的数据字段的部分(例如,实例800中的字节)。尽管未描绘,但是读取响应也可作为互斥片段返回,且因此以类似方式处置合并。
图8b展示含有如上文描述的条目的实例寄存器文件850。实例寄存器文件850被包含在L2高速缓存子系统306中。特定来说,实例850将寄存器文件描绘为包含写入分配地址FIFO 852、写入分配数据FIFO 854及写入分配启用FIFO 856的示意性单独块。尽管这些被标记为FIFO,但是寄存器文件的结构不一定在所有实例中都是先进先出结构。在一些实例中,当L2控制器320产生对下一级高速缓存(例如,L3高速缓存子系统308)的读取请求时,将写入数据写入FIFO 852、854、856中的每一者中的条目。在这个实例中,写入数据包含写入分配地址,所述写入分配地址被写入到写入分配地址FIFO 852。写入数据还包含实际写入数据本身,所述实际写入数据被写入到写入分配数据FIFO 854。最后,写入数据包含指定写入数据字段是否有效的启用数据(例如,每字节一位写入数据),所述启用数据被写入到写入分配启用FIFO 856。在以读取响应(例如,来自L3高速缓存子系统308)的形式从地址返回数据时,(举例来说)基于如上文关于图8a描述的写入分配启用FIFO 856中的对应启用数据,读取数据与写入分配数据FIFO 854的条目中的写入数据合并。
图9展示用于响应于写入请求而改进高速缓存分配的方法900的流程图。方法900开始于框902,其中L2控制器320接收针对未被分配为L2高速缓存324中的高速缓存线的地址的写入请求。写入请求包含写入数据。
方法900在框904中继续,其中L2控制器320产生针对写入请求的地址的读取请求。接着,方法900在框906中继续,其中为响应于产生的读取请求而返回的读取数据保留寄存器文件中的条目。
方法900进一步在框908及910中继续,其中L2控制器320分别用写入数据更新寄存器文件中的条目的数据字段,且更新与写入数据相关联的条目的启用字段。如上所述,启用字段指示写入数据的对应部分的有效性,且在图8a的实例中包括每字节一位写入数据。最后,方法900结束于框912,其中L2控制器320接收到读取数据且将读取数据合并到条目的数据字段中,举例来说如上文关于图8a描述。
对L2高速缓存子系统306中的写入分配的这些改进减小寄存器文件中服务这样一个写入分配事务所需的空间。而且,减少到L2高速缓存324的事务,因为在L2高速缓存子系统306的寄存器文件中发生合并。
高速缓存替换算法的选择可影响高速缓存子系统(例如上文描述的L2高速缓存子系统306)的性能。
在实例中,L2高速缓存324是读取及写入可分配8路高速缓存。L2高速缓存324中的高速缓存线的分配取决于各种页面属性、高速缓存模式设置及类似者。在检测到L2高速缓存324中不存在线(例如,高速缓存未命中)时,L2控制器320决定分配线。为了简洁起见,假设允许L2控制器320在高速缓存未命中时分配线。以下实例说明L2控制器320如何分配线。
在一些实例中,L2控制器320经配置以将分配管线化到L2高速缓存324。因此,L2控制器320可能最终以其中将多条高速缓存线分配发送到相同路的情况结束。因为响应数据可能混乱,所以如果将多条线分配到L2高速缓存324中的相同路,那么这可能导致数据损坏。另一方面,如果多条高速缓存线是到相同组,那么避免通过发送分配的路数(8)限制L2控制器320是有利的。
如上所述,L2高速缓存324中的每一线包括一致性状态(例如,MESI状态,需要2位)。而且,通过L2控制器320跟踪线的安全或不安全状态(例如,需要1位)。然而,具有无效的一致性状态的线的安全状态是不相关的,且因此额外高速缓存线状态能够被L2控制器320跟踪而无需任何额外替换位开销。减小由特定替换算法采用的替换位开销是有利的。
作为一个实例,以下是L2高速缓存324中的线的可能一致性状态:
·“000”:INVALID-路是空的且可用于分配
·“001”:PENDING-路是空的,但已被标记用于分配
·“010”:SHARED__NON_SECURE-分配到这路的线处于共享MESI状态且是非安全线
·“011”:SHARED__SECURE-分配到这路的线处于共享MESI状态且是安全线
·“100”:EXCLUSIVE__NON_SECURE-分配到这路的线处于独占MESI状态且是非安全线
·“101”:EXCLUSIVE__SECURE-分配到这路的线处于独占MESI状态且是安全线
·“110”:MODIFIED__NON_SECURE-分配到这路的线处于修改MESI状态且是非安全线
·“111”:MODIFIED__SECURE-分配到这路的线处于修改MESI状态且是安全线
如上所述,这使这个状态字段的Bit_0能够用于指示线待决,且用作安全位(如果线已被分配)两种情况。这减小保存这个状态信息所需的存储。为便于说明,出于下文描述高速缓存替换策略的目的,待决也被认为是高速缓存一致性状态。
如本文中使用,待决是指其中L2控制器320已决定分配线且已做出关于其将被分配到哪一路的决定的情况。这个路本质上被锁定到其它分配且在到达时存储响应数据。在一些实例中,L2控制器320利用待决位来确定哪些路可用于新分配,这与纯随机高速缓存替换策略相比改进性能。
在一些实例中,L2控制器320采用伪随机替换策略。在组中存在可用(例如,具有无效的高速缓存一致性状态)的至少一个路的情况下,L2控制器320经配置以挑选所述路用于分配。然而,如果组中的所有路具有待决的高速缓存一致性状态,那么L2控制器320无法选择路用于分配。代替暂停事务,L2控制器320经配置以将事务转换为非可分配存取且将事务转发到端点(例如,L3高速缓存子系统308)。因此,L2控制器320继续管线输出存取而没有不必要的事务暂停。
最后,如果组中不存在空(例如,无效)路,那么L2控制器320利用随机数产生器来识别组中的路。图10展示使用随机数产生器的基于屏蔽的路选择的实例1000。特定来说,组包含如框1002中展示的八个路。框1004演示路0、1、4及7具有待决高速缓存一致性状态。屏蔽逻辑1006被应用于框1002及1004以创建被屏蔽子集,所述屏蔽子集包含组的未待决的路,所述路为如框1008中展示的路2、3、5及6。如果在框1010中所有路待决,或框1008中的被屏蔽子集为空,那么L2控制器320在框1012中将事务转换为非可分配存取(例如,到L3控制器309),且如上所述。然而,如果在框1014中并非所有路待决,那么L2控制器320应用随机数产生器以从框1008中的符合条件路进行选择。在框1016中,在框1014中选择的路使其高速缓存状态更新为待决且L2控制器320将分配请求发送到(举例来说)L3控制器309。
图11展示使用随机数产生器进行路选择的替代方法1100的流程图。方法1100开始于框1102,其中L2控制器320接收在作为如描述的N路组关联高速缓存的L2高速缓存324中分配线的第一请求。响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,方法1100在框1104中继续,其中L2控制器320针对第一请求分配所述路。这类似于上文描述的行为。
然而,响应于组中没有路具有指示存储在路中的高速缓存线无效的高速缓存一致性状态,方法1100在框1106中继续,其中L2控制器320使用随机数产生器来随机地选择组中的路中的一者。在方法1100中,利用随机数产生器而无需首先屏蔽待决路,此减小处理要求。响应于随机选定路的高速缓存一致性状态指示另一请求未针对选定路待决(例如,随机选定路具有除待决以外的一致性状态),方法1100在框1108中继续,其中L2控制器针对第一请求分配选定路。
在方法1100中的随机选定路具有待决的一致性状态的情况下,L2控制器320可(举例来说)通过将第一请求转换为非分配请求且将非分配请求发送到通过第一请求识别的存储器端点来选择服务第一请求而不在L2高速缓存324中分配线。在其它实例中,当随机选定路具有待决的一致性状态时,L2控制器320经配置以随机选择组中的路中的另一者。在一些实例中,L2控制器320经配置以依这个方式随机重新选择,直到选定路的高速缓存一致性状态未指示另一请求针对选定路待决。在其它实例中,L2控制器320经配置以依这个方式随机重新选择,直到已执行阈值数目的随机选择。
不管采用的随机路选择的特定方法如何,如上所述,在L2控制器320未分配线(例如,将请求转换为非分配请求)的情况下,通过不暂停CPU核心302增强性能,且L2控制器320继续将存取发送到(举例来说)L3控制器309。
如上所述,L3高速缓存子系统308包含L3 SRAM,且在一些实例中,L3 SRAM地址区域存在于L2高速缓存子系统306及CPU核心302地址空间外部。取决于各种应用程序的性能要求,L3 SRAM地址区域被认为是共享L2或L3存储器。一种将L3 SRAM地址区域实施为共享L2或L3存储器的方式是禁用L2高速缓存子系统306高速缓存映射到L3 SRAM地址区域的任何地址的能力。然而,如果应用程序无需使用L3 SRAM作为共享L2或L3存储器(例如,以使L2高速缓存子系统306能够高速缓存L3 SRAM地址区域中的地址),那么物理L3 SRAM区域被映射(例如,通过上文描述的MMU)到外部、虚拟地址。这个映射需要(例如,MMU的)额外编程,且L2控制器320必须管理映射到同一物理L3 SRAM地址区域的不同地址,此增加使L2高速缓存子系统306能够高速缓存L3 SRAM地址区域中的地址的那些应用程序的复杂性。
在一些实例中,L2高速缓存子系统306包含高速缓存配置寄存器(例如,ECR 228的寄存器或字段),所述高速缓存配置寄存器允许对L2高速缓存子系统306是否能够高速缓存L3 SRAM地址区域中的地址进行可配置控制。在一些实例中,L3 SRAM包含多个地址区域,且高速缓存配置寄存器确立每一地址区域是可由L2高速缓存子系统306高速缓存还是不可由L2高速缓存子系统306高速缓存。为了简单起见,假设L3 SRAM是单一地址区域,且因此可通过(举例来说)高速缓存配置寄存器中的单个位控制L3SRAM地址区域的可高速缓存性。
举例来说,响应于高速缓存配置寄存器具有第一(例如,取消断言)值,L2控制器320经配置以在非高速缓存模式中操作,其中L2控制器320向L3高速缓存子系统308提供请求但不高速缓存通过请求返回的任何数据。然而,响应于高速缓存配置寄存器具有第二(例如,断言)值,L2控制器320经配置以在高速缓存模式中操作,其中L2控制器320向L3高速缓存子系统308提供请求且将通过请求返回的任何数据高速缓存(举例来说)于L2高速缓存324中。
因此,当L2控制器320在非高速缓存模式中操作时,L3 SRAM地址区域可在多个CPU核心(例如,CPU核心102a到102n)当中共享,而无任何高速缓存相关性能损失,例如增加事务量以维持高速缓存一致性(例如,受害者事务)。然而,当(举例来说)特定应用程序受益于此行为时(例如,存储在L3 SRAM中的数据很少在CPU核心当中共享),L2控制器320也具有高速缓存L3 SRAM地址区域的灵活性。
在实例中,当L2控制器320从非高速缓存模式转变为高速缓存模式(例如,高速缓存配置寄存器或其字段被断言)时,L2控制器320可开始高速缓存来自L3 SRAM地址区域的地址而无需采取额外动作。举例来说,因为L2控制器320先前尚未高速缓存这些地址,所以L2控制器320简单地开始在高速缓存模式中操作没有障碍。
然而,当确定(例如,通过CPU核心302)将L2控制器320从高速缓存模式转变为非高速缓存模式(例如,高速缓存配置寄存器或其字段被取消断言)时,可在L2控制器320转变为非高速缓存模式之前执行额外步骤。举例来说,采取步骤以从L2高速缓存324驱逐从L3SRAM地址区域高速缓存的任何线。
在这个实例中,暂停来自CPU核心302针对映射到L3地址区域的地址的流量。举例来说,请求L2控制器320从高速缓存模式转变为非高速缓存模式(例如,通过配置寄存器的取消断言)的CPU核心302(或在其上执行的应用程序)暂停向L2控制器320发送被引导到L3SRAM中的地址的请求。同时,CPU核心302可继续向L2高速缓存子系统306发送经引导到除L3SRAM地址区域中以外的地址的请求。
接着,举例来说响应于高速缓存配置寄存器的取消断言,L2控制器320经配置以驱逐其L2高速缓存324中的对应于L3 SRAM地址区域的高速缓存线。L2控制器320可驱逐其L2高速缓存320中的所有高速缓存线或仅对应于L3 SRAM地址区域的那些。在一个实例中,L2控制器320使L2高速缓存324中的对应于L3 SRAM地址区域的每一线无效。在另一实例中,L2控制器320写回L2高速缓存324中的对应于L3 SRAM地址区域的每一线。在又另一实例中,L2控制器320对L2高速缓存324中的对应于L3SRAM地址区域的每一线执行写回无效。一些实例不一定限于从对应于L3 SRAM地址区域的L2高速缓存324驱逐线的特定形式。
继续写回无效实例,L2控制器320执行其整个L2高速缓存324或L2高速缓存324的对应于L3 SRAM地址区域的部分的写回无效。在一个实例中,L2控制器320执行写回无效操作,而在另一实例中,串流引擎205用于执行(例如,L2高速缓存324中的对应于L3 SRAM地址区域的地址的)阻塞写回。L2控制器320(举例来说)通过向CPU核心302断言信号或改变通过CPU核心302轮询的写回无效寄存器值而指示写回无效的完成。一旦CPU核心302接收到写回无效完成的指示,CPU核心302便取消断言高速缓存配置寄存器以禁用由L2高速缓存子系统306高速缓存L3 SRAM地址区域。接着,CPU核心302能够恢复向L2高速缓存子系统306发送针对将不由L2控制器320高速缓存的L3 SRAM地址区域中的地址的请求。
图12展示在各种实例中用于在高速缓存或非高速缓存模式中操作高速缓存控制器(例如,L2控制器320)的方法1200的流程图。方法1200开始于框1202,其中L2控制器320接收经引导到L3 SRAM地址区域中的地址的请求。在框1204中,确定高速缓存配置寄存器具有第一值(例如,取消断言)或第二值(例如,断言)。如果高速缓存配置寄存器被取消断言,那么方法1200继续到框1206,其中L2控制器320通过向L3 SRAM提供请求(例如,经由L3控制器309)在非高速缓存模式中操作。接着,方法1200继续到框1208,其中L2控制器320不将通过请求返回的数据高速缓存于其L2高速缓存324中。
返回到框1204,如果高速缓存配置寄存器被断言,那么方法1200继续到框1210,其中L2控制器320通过向L3 SRAM提供请求(例如,经由L3控制器309)在高速缓存模式中操作。接着,方法1200继续到框1212,其中L2控制器320将通过请求返回的数据高速缓存于其L2高速缓存324中。
一些实例涉及操作L2控制器320以允许在别名及非别名模式两者中存取L2SRAM322。在一些情况中,先前版本的处理器在硬件中利用无法编程、静态实施(例如,使用多路复用器)以在别名模式中操作。在这个方法中,存储器经静态地构建为无法合并成一个共同存储器映射的三个单独存储器。而且,多路复用应用于所有事务及请求者,且因此不可能在非别名模式中操作。本文中描述的实例使传统应用程序能够在存取L2 SRAM322时根据需要继续利用别名模式,但也不将L2 SRAM 322限于严格别名存取,此更普遍地增加L2高速缓存子系统306的功能性及灵活性。
图13展示各种实例中的(例如,与L2 SRAM 322交互的L2控制器320的)操作的非别名及别名模式的实例及框图1300。实例1300包含CPU核心1302(例如,类似于上文描述的CPU核心302)及DMA引擎1304。在这个实例1300中,DMA引擎1304类似于图1中展示的CPU核心102中的另一者,其也能够存取L2高速缓存子系统102a(例如,通过共享L2高速缓存子系统108)。在实例1300中,CPU核心1302替代地被称为写入到L2 SRAM 322的数据的“生产者”,而DMA引擎1304替代地被称为从L2 SRAM 322读取的数据的“消费者”。
CPU核心1302及DMA引擎1304两者耦合到L2控制器320,所述L2控制器320继而耦合到如上文描述的L2 SRAM 322。而且,L2控制器320耦合到存储器映射控制寄存器1306及存储器切换控制寄存器1308,其功能在下文进一步描述。在一些实例中,控制寄存器1306、1308是单一控制寄存器的部分,而在其它实例中,控制寄存器1306、1308是单独结构,如展示。
在一些实例中,控制寄存器1306、1308通过软件(例如,在CPU核心1302上执行)控制作为存储器映射寄存器。在实例中,存储器映射控制寄存器1306指定CPU核心1302及DMA引擎1304是能够查看及存取L2 SRAM 322的完整存储器映射(例如,非别名模式)还是能够查看及存取L2 SRAM 322的别名存储器映射(例如,别名模式)。
如果存储器映射控制寄存器1306经设置以在L2 SRAM 322的实例1310中展示的非别名模式中操作,那么CPU核心1302及DMA引擎1304两者能够将事务引导到缓冲器IBUFLA、IBUFHA、IBUFHLB、IBUFHB中的虚拟地址。在非别名模式1310中,L2控制器320经配置以将此类事务引导到那些相同缓冲器中的对应物理地址。因此,在非别名模式中,L2控制器320经配置以将(从CPU核心1302或DMA引擎1304)到缓冲器IBUFLA中的虚拟地址的事务引导到L2SRAM 322中的缓冲器IBUFLA中的对应物理地址等等。
如果存储器映射控制寄存器1306经设置以在L2 SRAM 322的实例1312中展示的别名模式中操作,那么CPU核心1302及DMA引擎1304两者仅能够将事务引导到某些虚拟地址(例如,在这个实例中,在缓冲器IBUFLA、IBUFHA中)。尝试将事务引导到其它虚拟地址(例如,在这个实例中,在缓冲器IBUFLB、IBUFHB中)导致下文进一步描述的错误。在别名模式1312中,L2控制器320经配置以将从CPU核心1302到虚拟地址(例如,在缓冲器IBUFLA中)的事务引导到第一物理地址(例如,也在IBUFLA中)且将从DMA引擎1304到缓冲器IBUFLA中的同一虚拟地址的事务引导到第二不同物理地址(例如,在IBUFLB中)。这被描绘为将操作的别名模式1312中的虚拟地址映射到不同物理地址1314。
通过在别名模式中操作L2控制器320,作为生产者的CPU核心1302写入到某一虚拟地址且同时作为消费者的DMA引擎1304从所述同一虚拟地址读取。然而,归因于别名操作模式,由CPU核心1302产生到的物理地址不同于由DMA引擎1304消耗到的物理地址。这允许CPU核心1302产生到物理缓冲器A(例如,IBUFLA及IBUFHA)而DMA引擎1304从物理缓冲器B(例如,IBUFLB及IBUFHB)消耗,尽管两者将事务寻址到虚拟地址。
在实例中,存储器切换控制寄存器1308依据CPU核心1302及DMA引擎1304是否“拥有”某一缓冲器来指定虚拟地址别名到哪一物理地址。这个背景内容中的所有权是互斥的;因此,如果存储器切换控制寄存器1308指定CPU核心1302拥有缓冲器A(例如,IBUFLA及IBUFHA),那么DMA引擎1304无法也拥有缓冲器A。在这个实例中,假设缓冲器的拥有者使其事务别名到命名缓冲器中的物理地址,而缓冲器的非拥有者使其事务别名到别名缓冲器中的物理地址。举例来说,如果CPU核心1302拥有缓冲器A,那么L2控制器320经配置以将CPU核心1302事务引导到也在缓冲器A中的物理地址。类似地,由于DMA引擎1304未拥有缓冲器A,所以L2控制器320经配置以将DMA引擎1304事务引导到缓冲器B中的物理地址。
通过管理存储器切换控制寄存器1308,启用乒乓型效应,其允许CPU核心1302及DMA引擎1304两者相信其向某一缓冲器产生及从某一缓冲器消耗(例如,通过将事务引导到缓冲器A中的虚拟地址)。然而,当存储器切换控制寄存器1308指示CPU核心1302是缓冲器A的拥有者时,CPU核心1302产生到缓冲器A中的物理地址而DMA引擎1304从缓冲器B中的物理地址消耗。随后(例如,当CPU核心1302接近用数据填充缓冲器A中的物理地址时),存储器切换控制寄存器1308经更新以指示DMA引擎1304是缓冲器A的拥有者。因此,DMA引擎1304开始从缓冲器A中的物理地址消耗而CPU核心1302开始产生到缓冲器B中的物理地址。
在更普遍实例中,L2 SRAM 322包含工作缓冲器(WBUF)、第一缓冲器A(例如,包含图13中的IBUFLA及IBUFHA)及第二缓冲器B(例如,包含图13中的IBUFLB及IBUFHB)。因为第一、第二及工作缓冲器是L2 SRAM 322的部分,所以在一个实例中,使用基址控制寄存器(为了简单起见未展示),其针对第一、第二及工作缓冲器中的每一者指定L2 SRAM 322中的基址。在图13的特定实例中,基址控制寄存器针对每一缓冲器IBUFLA、IBUFHA、IBUFLB、IBUFHB及WBUF指定基址。这允许这些缓冲器驻留在L2 SRAM 322中的何处的进一步可配置性。在一个实例中,IBUF缓冲器的大小固定为如展示的32KB(例如,从指定基址),而WBUF缓冲器扩展到L2 SRAM 322的末尾(从其指定基址)。然而,在另一实例中,缓冲器的大小是可配置的。
在一些实例中,L2控制器320经配置以(举例来说)通过断言错误状态寄存器中(例如,在L2高速缓存子系统306中)的位来指示各种错误状况。举例来说,L2控制器320经配置以响应于对工作缓冲器(WBUF)的请求是针对各种缓冲器所驻留的地址范围(例如,在L2SRAM 322中)之外的地址而指示错误。
在另一实例中,L2控制器320经配置以响应于对(举例来说)缓冲器A的请求是针对缓冲器A的地址范围之外的地址而指示错误。缓冲器A的地址范围是基于缓冲器A的基址及缓冲器A的大小,其是固定的或可配置的。
在另一实例中,当L2控制器320在别名模式中操作时,L2控制器320经配置以响应于经引导到映射到别名缓冲器中的物理地址的虚拟地址的请求而指示错误。举例来说,返回参考图13,当在别名模式1312中操作时,如果CPU核心1302或DMA引擎1304尝试直接存取别名缓冲器(其在这个情况下是缓冲器B(例如,IBUFLB及IBUFHB)),那么指示错误。在一般意义上,在别名模式中,允许存取一个缓冲器(例如,缓冲器A)中的虚拟地址但不存取另一别名缓冲器(例如,缓冲器B)中的虚拟地址。因此,在别名模式中,存取别名缓冲器B的物理地址的唯一方式是通过L2控制器320的别名模式操作。
在前述错误实例中的任一者中,错误清除寄存器(例如,在L2高速缓存子系统306中)含有对应于错误状态寄存器中的字段的字段。当错误清除寄存器中的字段被断言时,举例来说,清除错误状态寄存器中的对应字段。
图14展示在各种实例中用于在别名模式中通过L2控制器320对L2 SRAM 322操作的方法1400的流程图。方法1400开始于框1402,其中响应于存储器映射控制寄存器值被断言而在别名模式中操作L2控制器320。方法1400在框1404中继续,其中L2控制器320从第一CPU核心(例如,CPU核心1302)接收经引导到L2高速缓存子系统306的L2存储器(例如,L2SRAM 322)中的虚拟地址(例如,在缓冲器A中)的第一请求。方法1400在框1406中继续,其中从第二CPU核心(例如,DMA引擎1304)接收经引导到L2 SRAM 322中的同一虚拟地址的第二请求。由于L2控制器320在别名模式中操作,方法1400在框1408中继续,其中将第一请求引导到L2 SRAM 322中的物理地址A(例如,如在图13中的1314展示)且在框1410中继续,其中将第二请求引导到L2 SRAM 322中的物理地址B(例如,如图13中的1314展示)。
在前述描述中及在权利要求书中,术语“包含”及“包括”以开放式方式使用,且因此意谓“包含但不限于…”。而且,术语“耦合(couple或couples)”意谓间接或直接连接。因此,如果第一装置耦合到第二装置,那么所述连接可通过直接连接或通过经由其它装置及连接的间接连接。类似地,耦合在第一组件或位置与第二组件或位置之间的装置可通过直接连接或通过经由其它装置及连接的间接连接。“经配置以”执行任务或功能的元件或特征可在由制造商制造时配置(例如,编程或结构设计)以执行功能及/或可在制造之后由用户配置(或重新配置)以执行功能及/或其他额外或替代功能。配置可通过装置的固件及/或软件编程,通过装置的硬件组件及互连的构造及/或布局、或其等的组合。而且,前述描述中的短语“接地”或类似者的使用包含机壳接地、大地接地、浮动接地、虚拟接地、数字接地、共同接地、及/或适用于或适于本描述的教导的任何其它形式的接地连接。除非另有陈述,值之前的“大约”、“近似”或“实质上”意谓所述值的+/-10%。
上文描述说明本描述的原理及各种实施例。一旦完全理解上述描述,所属领域的技术人员便将变得明白许多变动及修改。以下权利要求书包括所有此类变动及修改。

Claims (18)

1.一种方法,其包括:
接收在N路组关联高速缓存中分配线的第一请求;
响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,针对所述第一请求分配所述路;
响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态:
随机选择所述组中的所述路中的一者;且
响应于所述选定路的高速缓存一致性状态指示另一请求未针对所述选定路待决,针对所述第一请求分配所述选定路。
2.根据权利要求1所述的方法,其进一步包括响应于所述选定路的所述高速缓存一致性状态指示另一请求针对所述选定路待决,服务所述第一请求而不在所述高速缓存中分配线。
3.根据权利要求2所述的方法,其中服务所述第一请求而不在所述高速缓存中分配线进一步包括将所述第一请求转换为非分配请求且将所述非分配请求发送到通过所述第一请求识别的存储器端点。
4.根据权利要求1所述的方法,其进一步包括响应于所述选定路的所述高速缓存一致性状态指示另一请求针对所述选定路待决,随机选择所述组中的所述路中的另一者。
5.根据权利要求4所述的方法,其进一步包括继续随机选择所述组中的所述路中的另一者,直到所述选定路的所述高速缓存一致性状态未指示另一请求针对所述选定路待决。
6.根据权利要求4所述的方法,其进一步包括继续随机选择所述组中的所述路中的另一者,直到已执行阈值数目的随机选择。
7.根据权利要求1所述的方法,其中针对所述第一请求分配所述选定路进一步包括更新所述选定路的所述高速缓存一致性状态以指示所述第一请求针对所述选定路待决且将所述第一请求发送到通过所述第一请求识别的存储器端点。
8.一种方法,其包括:
接收在N路组关联高速缓存中分配线的第一请求;
响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,针对所述第一请求分配所述路;
响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态:
通过屏蔽具有指示另一请求针对任何路待决的高速缓存一致性状态的所述路而创建所述组中的路的被屏蔽子集;
随机选择所述被屏蔽子集中的所述路中的一者;且
针对所述第一请求分配所述选定路。
9.根据权利要求8所述的方法,其进一步包括响应于所述被屏蔽子集为空,服务所述第一请求而不在所述高速缓存中分配线。
10.根据权利要求9所述的方法,其中服务所述第一请求而不在所述高速缓存中分配线进一步包括将所述第一请求转换为非分配请求且将所述非分配请求发送到通过所述第一请求识别的存储器端点。
11.根据权利要求8所述的方法,其中针对所述第一请求分配所述路进一步包括更新所述选定路的所述高速缓存一致性状态以指示所述第一请求针对所述选定路待决且将所述第一请求发送到通过所述第一请求识别的存储器端点。
12.一种二级(L2)高速缓存子系统,其包括:
L2高速缓存,其经配置为N路组关联高速缓存;及
L2控制器,其经配置以:
接收在所述L2高速缓存中分配线的第一请求;
响应于路的高速缓存一致性状态指示存储在所述路中的高速缓存线无效,针对所述第一请求分配所述路;
响应于所述组中没有路具有指示存储在所述路中的所述高速缓存线无效的高速缓存一致性状态:
随机选择所述组中的所述路中的一者;且
响应于所述选定路的高速缓存一致性状态指示另一请求未针对所述选定路待决,针对所述第一请求分配所述选定路。
13.根据权利要求12所述的L2高速缓存子系统,其中所述L2控制器进一步经配置以响应于所述选定路的所述高速缓存一致性状态指示另一请求针对所述选定路待决,服务所述第一请求而不在所述高速缓存中分配线。
14.根据权利要求13所述的L2高速缓存子系统,其中在所述L2控制器服务所述第一请求而不在所述高速缓存中分配线时,所述L2控制器进一步经配置以将所述第一请求转换为非分配请求且将所述非分配请求发送到通过所述第一请求识别的存储器端点。
15.根据权利要求12所述的L2高速缓存子系统,其中所述L2控制器进一步经配置以响应于所述选定路的所述高速缓存一致性状态指示另一请求针对所述选定路待决,随机选择所述组中的所述路中的另一者。
16.根据权利要求15所述的L2高速缓存子系统,其中所述L2控制器进一步经配置以继续随机选择所述组中的所述路中的另一者,直到所述选定路的所述高速缓存一致性状态未指示另一请求针对所述选定路待决。
17.根据权利要求15所述的L2高速缓存子系统,其中所述L2控制器进一步经配置以继续随机选择所述组中的所述路中的另一者,直到已执行阈值数目的随机选择。
18.根据权利要求12所述的L2高速缓存子系统,其中在所述L2控制器针对所述第一请求分配所述选定路时,所述L2控制器进一步经配置以更新所述选定路的所述高速缓存一致性状态以指示所述第一请求针对所述选定路待决且将所述第一请求发送到通过所述第一请求识别的存储器端点。
CN202080038124.2A 2019-05-24 2020-05-25 伪随机路选择 Pending CN113853590A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962852461P 2019-05-24 2019-05-24
US62/852,461 2019-05-24
US16/882,287 2020-05-22
US16/882,287 US20200371935A1 (en) 2019-05-24 2020-05-22 Pseudo-random way selection
PCT/US2020/034458 WO2020243045A1 (en) 2019-05-24 2020-05-25 Pseudo-random way selection

Publications (1)

Publication Number Publication Date
CN113853590A true CN113853590A (zh) 2021-12-28

Family

ID=73456730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080038124.2A Pending CN113853590A (zh) 2019-05-24 2020-05-25 伪随机路选择

Country Status (3)

Country Link
US (12) US11294707B2 (zh)
CN (1) CN113853590A (zh)
WO (1) WO2020243045A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018140722A1 (en) * 2017-01-30 2018-08-02 Walmart Apollo, Llc Distributed autonomous robot interfacing systems and methods
US11392498B2 (en) 2019-05-24 2022-07-19 Texas Instruments Incorporated Aliased mode for cache controller
US11321248B2 (en) * 2019-05-24 2022-05-03 Texas Instruments Incorporated Multiple-requestor memory access pipeline and arbiter
US11294707B2 (en) * 2019-05-24 2022-04-05 Texas Instruments Incorporated Global coherence operations
US11461106B2 (en) * 2019-10-23 2022-10-04 Texas Instruments Incorporated Programmable event testing
TWI811151B (zh) * 2022-11-09 2023-08-01 金麗科技股份有限公司 快取裝置中管理記憶體寫入要求的方法

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0883215A (ja) * 1994-09-12 1996-03-26 Hitachi Ltd メモリ制御装置
US6085292A (en) * 1997-06-05 2000-07-04 Digital Equipment Corporation Apparatus and method for providing non-blocking pipelined cache
US6430654B1 (en) * 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6145054A (en) * 1998-01-21 2000-11-07 Sun Microsystems, Inc. Apparatus and method for handling multiple mergeable misses in a non-blocking cache
US6226713B1 (en) * 1998-01-21 2001-05-01 Sun Microsystems, Inc. Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem
EP1150213B1 (en) * 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data processing system and method
US6643747B2 (en) * 2000-12-27 2003-11-04 Intel Corporation Processing requests to efficiently access a limited bandwidth storage area
US20020169935A1 (en) * 2001-05-10 2002-11-14 Krick Robert F. System of and method for memory arbitration using multiple queues
US6915396B2 (en) * 2001-05-10 2005-07-05 Hewlett-Packard Development Company, L.P. Fast priority determination circuit with rotating priority
US6918021B2 (en) * 2001-05-10 2005-07-12 Hewlett-Packard Development Company, L.P. System of and method for flow control within a tag pipeline
US6766389B2 (en) * 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
JP2003044358A (ja) * 2001-07-31 2003-02-14 Mitsubishi Electric Corp キャッシュメモリ制御装置
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US6912628B2 (en) 2002-04-22 2005-06-28 Sun Microsystems Inc. N-way set-associative external cache with standard DDR memory devices
US7062631B1 (en) * 2003-07-17 2006-06-13 Transmeta Corporation Method and system for enforcing consistent per-physical page cacheability attributes
US7441101B1 (en) * 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7631132B1 (en) * 2004-12-27 2009-12-08 Unisys Corporation Method and apparatus for prioritized transaction queuing
EP1859346B1 (en) * 2005-03-04 2012-01-11 Hewlett-Packard Development Company, L.P. A method and apparatus for facilitating pipeline throughput
US7386685B2 (en) 2005-03-29 2008-06-10 International Busniess Machines Corporation Method and apparatus for filtering snoop requests using multiple snoop caches
US10031848B2 (en) * 2005-06-14 2018-07-24 Intel Corporation Method and apparatus for improving snooping performance in a multi-core multi-processor
US7769956B2 (en) * 2005-09-07 2010-08-03 Intel Corporation Pre-coherence channel
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US8060226B2 (en) * 2006-08-01 2011-11-15 Creative Technology Ltd Method and signal processing device to provide one or more fractional delay lines
US7934069B2 (en) * 2007-04-27 2011-04-26 Hewlett-Packard Development Company, L.P. Enabling and disabling cache in storage systems
JP4613247B2 (ja) * 2007-06-20 2011-01-12 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US7890699B2 (en) * 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US8131948B2 (en) * 2008-08-29 2012-03-06 Freescale Semiconductor, Inc. Snoop request arbitration in a data processing system
US8327082B2 (en) * 2008-08-29 2012-12-04 Freescale Semiconductor, Inc. Snoop request arbitration in a data processing system
US8095734B2 (en) 2009-04-30 2012-01-10 Lsi Corporation Managing cache line allocations for multiple issue processors
US8572356B2 (en) * 2010-01-05 2013-10-29 Oracle America, Inc. Space-efficient mechanism to support additional scouting in a processor using checkpoints
US9251058B2 (en) * 2010-09-28 2016-02-02 SanDisk Technologies, Inc. Servicing non-block storage requests
JP5692381B2 (ja) * 2011-07-13 2015-04-01 富士通株式会社 マルチコアプロセッサシステム、および制御方法
US9223705B2 (en) * 2013-04-01 2015-12-29 Advanced Micro Devices, Inc. Cache access arbitration for prefetch requests
CN105740168B (zh) * 2016-01-23 2018-07-13 中国人民解放军国防科学技术大学 一种容错目录高速缓存控制器
US10331582B2 (en) * 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time
US20190042445A1 (en) * 2017-08-07 2019-02-07 Intel Corporation Technologies for caching persistent two-level memory data
US20190065404A1 (en) * 2017-08-30 2019-02-28 Seagate Technology Llc Adaptive caching in a storage device
US10621103B2 (en) * 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations
US10417175B2 (en) * 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US20190303297A1 (en) * 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US10459866B1 (en) * 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) * 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10915471B2 (en) * 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11294707B2 (en) * 2019-05-24 2022-04-05 Texas Instruments Incorporated Global coherence operations
US11392498B2 (en) * 2019-05-24 2022-07-19 Texas Instruments Incorporated Aliased mode for cache controller
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
US20220100680A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits

Also Published As

Publication number Publication date
US20240152385A1 (en) 2024-05-09
US20200371935A1 (en) 2020-11-26
US11762683B2 (en) 2023-09-19
US20230058689A1 (en) 2023-02-23
US20200371834A1 (en) 2020-11-26
US11494224B2 (en) 2022-11-08
WO2020243045A1 (en) 2020-12-03
US11907753B2 (en) 2024-02-20
US20240004694A1 (en) 2024-01-04
US20220229690A1 (en) 2022-07-21
US20230409376A1 (en) 2023-12-21
US20220164217A1 (en) 2022-05-26
US20200371924A1 (en) 2020-11-26
US20200371926A1 (en) 2020-11-26
US20230023242A1 (en) 2023-01-26
US11461127B2 (en) 2022-10-04
US20200371925A1 (en) 2020-11-26
US11740930B2 (en) 2023-08-29
US11194617B2 (en) 2021-12-07
US11294707B2 (en) 2022-04-05

Similar Documents

Publication Publication Date Title
US11740930B2 (en) Global coherence operations
US11392498B2 (en) Aliased mode for cache controller
US11816032B2 (en) Cache size change

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