CN105793832A - 快取管理请求合并 - Google Patents

快取管理请求合并 Download PDF

Info

Publication number
CN105793832A
CN105793832A CN201480065193.7A CN201480065193A CN105793832A CN 105793832 A CN105793832 A CN 105793832A CN 201480065193 A CN201480065193 A CN 201480065193A CN 105793832 A CN105793832 A CN 105793832A
Authority
CN
China
Prior art keywords
cache
request
memory cache
core
merging
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
CN201480065193.7A
Other languages
English (en)
Other versions
CN105793832B (zh
Inventor
道格拉斯·R·瑞德
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.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co 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 Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Publication of CN105793832A publication Critical patent/CN105793832A/zh
Application granted granted Critical
Publication of CN105793832B publication Critical patent/CN105793832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or 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/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
    • 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/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

一种处理器,包含多个处理核与由该多个处理核共用的一快取存储器。该快取存储器包含一合并引擎,用以自该多个处理核中的各个处理核接收一个别请求,并据此执行与该快取存储器相关的一操作。该合并引擎将来自该多个处理核中两个或更多个处理核的多个个别请求合并为一合并后请求。该合并引擎通过执行一单一操作来执行该合并后请求,并于该单一操作完成时,通知该多个处理核中的两个或更多个处理核,其个别请求已经完成。

Description

快取管理请求合并
交叉引用相关的申请
本申请主张申请日为2014年9月18日的美国专利第62/052,387号临时申请的国际优先权。该优先权的全文并入本申请以供参考。
背景技术
近年来,随着快取存储器快取空间规格的增加,执行快取存储器管理操作所需要的时间愈来愈长。举例而言,对快取空间规格为四百万字节的大型快取存储器执行一个回写无效(writebackinvalidation)操作所需要的时间可能长到对该快取存储器的处理器的其他运作带来干扰。在由多个处理核共用一快取存储器的情况下,若该些处理核在短时间内提出多个快取存储器管理操作请求,上述干扰会更加恶化。
此外,对现行处理器来说,诊断错误非常的困难,要诊断与快取存储器相关的错误尤其困难。原因在于,快取存储器中可能储存有大量且相当复杂的数据,尤其是在多个处理核共用快取存储器的情况。
一般而言,开发人员可用的主要除错工具为设计处理器时所用的模拟软件或模拟器。开发人员可将处理器(包含快取存储器)的初始状态提供给模拟器。根据此初始处理器状态,模拟器开始执行一目标程序,直到出现程序漏洞。开发人员得以回顾模拟器的执行历史记录来判断何时发生错误,以及是哪一个元件导致错误。
发明内容
本发明的一范畴在于提供一种处理器。该处理器包含多个处理核以及由该多个处理核共用的一快取存储器。该快取存储器包含一合并引擎,用以自该多个处理核中的各个处理核接收一个别请求,并据此执行与该快取存储器相关的一操作。该合并引擎将来自该多个处理核中两个或更多个处理核的多个个别请求合并为一合并后请求。针对该合并后请求,该合并引擎执行一单一操作,并于该单一操作完成时,个别通知该多个处理核中的两个或更多个处理核,其个别请求已经完成。
本发明的另一范畴在于提供用于一处理器的操作方法。该处理器具有多个处理核与一快取存储器。该快取存储器由该多个处理核共用。该方法包含利用该快取存储器自该多个处理核中的各个处理核接收一个别请求,以执行相关于该快取存储器的一操作。该方法亦包含合并来自该多个处理核中的两个或更多个处理核的该些个别请求为一合并后请求。该方法亦包含通过执行一单一操作以执行该合并后请求,以及于该单一操作完成时,个别通知该多个处理核中的两个或更多个处理核,其个别请求已经完成。
本发明的另一范畴在于提供一计算机程序产品。该计算机程序产品被编码于供运算装置使用的至少一非暂态计算机可使用介质中。该计算机程序产品包含储存于该介质中用以配合一处理器的计算机可使用程序码。该计算机可使用程序码包含用以配合多个处理核的第一程序码,以及用以配合该多个处理核共用的一快取存储器的第二程序码。该快取存储器包含一合并引擎,用以自该多个处理核中的各个处理核接收一个别请求,并执行相关于该快取存储器的一操作。该合并引擎合并来自该多个处理核中的两个或更多个处理核的该些个别请求为一合并后请求。为执行该合并后请求,该合并引擎执行一单一操作,并于该单一操作完成时个别通知该多个处理核中的两个或更多个处理核,其个别请求已经完成。
附图说明
图1呈现一处理器的功能方块图。
图2呈现图1中的系统总线的局部功能方块图。
图3呈现图1中的末级快取存储器中的一快取项目的示意图。
图4根据一集合相联实施例呈现图1中的末级快取存储器中的一集合的示意图。
图5为图1中的末级快取存储器呈现一个更详细的功能方块图。
图6呈现图5中的合并引擎请求表的一示意图。
图7呈现图1中的处理器的一操作流程图。
图8呈现图1中的处理器在另一实施例中的操作流程图。
图9呈现图1中的处理器于执行图7、图8中步骤706的诊断回写程序其流程的更多操作细节。
图10呈现图1中的处理器于一实施例中将末级快取存储器的一快取项目写至总线的操作细节。
图11呈现图1中的处理器于另一实施例中将末级快取存储器的一快取项目写至总线的操作细节。
图12呈现图1中的处理器自一核/服务处理器接收一请求并可能将该请求与来自其他核/服务处理器的请求进行合并的操作流程图。
图13呈现图1中的处理器于执行一请求时的操作流程图。
图14呈现图1中的处理器于一处理核取消一合并引擎请求时的操作流程图。
图15为当一处理核取消所有对于合并引擎的请求时图1中的处理器的运作流程图。
具体实施方式
以下将以实施例说明根据本发明的处理器如何执行一诊断回写程序,其中,该处理器的一快取存储器在未令其快取列状态无效的状况下将其所有的标签与快取列状态写出至一系统总线。此程序有助于为处理器(尤其是快取存储器)除错及/或增进其效能。
图1呈现一处理器100的功能方块图。处理器100为一多核处理器,其中包含多个处理核102、一总线接口单元108与一共用的末级快取存储器106。于图1的实施例中,处理器100包含四个处理核,分别被标示为处理核0102-0、处理核1102-1、处理核2102-2、处理核3102-3,以下统称处理核102。处理核0102-0、1102-1、2102-2、3102-3各自通过接口112-0、112-1、112-2、112-3(统称接口112)存取末级快取存储器106。总线接口单元108则是通过接口112-4存取末级快取存储器106。处理器100为一较大运算系统(未绘示)的一部分,该运算系统可包含系统存储器与周边装置(亦未绘示);末级快取存储器106可通过总线接口单元108、系统总线124与该运算系统沟通。虽然图1所绘示的处理器100包含四个处理核102,本发明的概念可应用于包含其他数量的处理核102的实施例,并令该些处理核102皆共用末级快取存储器106。
处理核0102-0、1102-1、2102-2、3102-3各自包含一私有快取存储器104-0、104-1、104-2、104-3(统称私有快取存储器104)。在一实施例中,私有快取存储器104小于末级快取存储器106且具有相对较短的存取延迟。于一实施例中,私有快取存储器104包含一第一级(level-1)指令快取存储器与一第一级数据快取存储器。处理核102可包含但不限于下列功能单元:指令取得单元、分支指令预测单元、指令解码器、指令转译器、微指令/结构式/非结构式暂存器集合、重新命名单元、重新排序暂存器、保留站、指令发送器,以及多个执行单元。该多个执行单元可包含整数运算单元、浮点运算单元、介质单元、分支单元、载入单元与储存单元。多种微架构可被包含在处理核102内。举例而言,处理核102可为超纯量(superscalar)处理器或纯量处理器,可依序或不依序执行指令。于一实施例中,处理核102大致符合x86指令集架构。须说明的是,处理核102不限于特定指令集架构,且可包含其他存储器请求代理电路,例如绘图处理单元(GPU)或可规划化逻辑门阵列(fieldprogrammablegatearray,FPGA)。
各处理核102的微指令包含除错程序,以下称追踪程序。追踪程序可响应于多种事件针对各处理核102启动,例如:(1)一处理核102停止响应,亦即该处理核102被占用但经过多个时脉周期皆未响应任何指令;(2)一处理核102自存储器中的不可快取的区域载入数据;(3)处理器100发生温度变化;(4)操作系统请求改变处理器100的总线速率及/或电压;(5)处理器100主动改变其总线速率及/或电压,例如为了减少耗电量或提高效能;(6)一处理核102中的内部计时器过期;(7)一快取存储器窥探(snoop)命中一修改过的快取列,导致该快取列被写回存储器;(8)处理器100的温度、电压或总线速率超过特定范围;(9)使用者或处理器100的外部接脚产生一外部触发信号;(10)发生例外状况;以及(11)侦测到内部错误。一种使用追踪程序的方式是定期启动它。举例而言,一追踪程序查核点(checkpoint)可每隔N个时脉周期被触发,其中N为一特定数字,例如100,000。耦接至系统总线124的一逻辑分析器可于两个查核点之间监控系统总线124上的活动并加以记录。当查核点被触发,追踪程序将处理器100的大量状态输出至系统总线124。该逻辑分析器亦取得系统总线124上的状态输出,并将它们储存至一档案中。处理器100随后被重新启动。此程序持续进行,直到程序漏洞出现。
上述查核点对于找出多种类型的漏洞(包含快取存储器漏洞)是有效的。一种有效的方法为配合一软件模拟器。在该软件模拟器中,处理器100的初始状态可被载入为该逻辑分析器对应于某一个查核点所储存的处理器100状态,例如程序漏洞出现前的最后一个查核点。该模拟器接着开始进行模拟,直到程序漏洞出现。
一种典型的方法是设定一旗标,以控制追踪程序于输出处理器100状态时执行一回写无效操作,借此迫使末级快取存储器106进入一已知状态,亦即令末级快取存储器106中所有的快取项目都被设定为无效。相对应地,于软件模拟器中,末级快取存储器106的快取项目也被设定为无效,以使于该查核点之后重新开始时,软件模拟器的初始状态与处理器100的实际状态相符。然而,此现有技术的缺点之一是,由于所有的快取项目都被设定为无效,末级快取存储器106的状态会因此被扰乱。这种状况的坏处在于可能会使得程序漏洞要经过较久才出现(若存在程序漏洞),尤其当程序漏洞是在快取存储器中。
相对地,本发明的诊断回写程序并未将末级快取存储器106的快取列状态设定为无效。此外,末级快取存储器106中所有快取项目的快取列状态,例如其标签以及修改/专有/共享/无效状态(以下称MESI状态),会被写入系统总线124,使逻辑分析器能取得该些状态,供后续载入软件模拟器作为其初始状态。更有利地,末级快取存储器106的一合并引擎504(参见图5)可利用能最小化查核点时间的系统总线124速度来写入末级快取存储器106状态。
须说明的是,虽然在上述实施例中使用该诊断回写程序的快取存储器是末级快取存储器,但采用其他快取存储器层级的处理器亦可运用上述诊断回写程序。此外,虽然上述实施例中的处理器100为多核处理器,但其他配合一个或多个快取存储器的单核处理器亦可运用上述诊断回写程序。
图2呈现图1中的系统总线124的局部功能方块图。总线124包含一数据部分202、一地址部分204与一控制部分206。更明确地说,数据部分202包含一预先决定的位数量,地址部分204包含一预先决定的位数量,控制部分206包含一预先决定的位数量。系统总线124可被实现为一平行总线型态以令该些位被同时传递,亦可被实现为一串流型态以令该些位被依序传递,或者亦可被实现为两种型态的组合。控制部分206用以指出系统总线124上正在执行的操作的类型,例如为一读取操作或一写入操作。地址部分204用以指出一系统地址。举例而言,于一实施例中,地址部分204的位数量为36,因而可对应于236个字节(亦即六十四亿字节)的位置。一般而言,一装置,例如具有存储器位置及/或控制/状态暂存器的存储器装置或周边装置,位于地址部分204能指出的地址,并且会响应于指定地址,接收或提供由数据部分202传递的数据。为了增进诊断处理器100中的漏洞的能力,于根据本发明的实施例中,一部分或全部的地址部分204被用以传递末级快取存储器106的中继数据,亦即末级快取存储器106中各快取项目300的标签304与状态306(参见图3),而非单纯传递一装置中特定位置的地址。于另一实施例中,一部分或全部的数据部分202被用以传递末级快取存储器106的中继数据304/306,而非单纯传递数据。
图3呈现末级快取存储器106中的一快取项目300的示意图。末级快取存储器106包含许多快取项目,图3呈现的快取项目300仅作为代表。各快取项目300包含一快取列的数据302、该快取列的标签304及该快取列的一状态306。若状态306指出快取项目300是无效的,则数据302和标签304都是无效的。于一实施例中,状态306根据一种被广泛使用的快取存储器一致性协定被设定,例如前述MESI状态中的修改状态/专有状态/共享状态/无效状态。须说明的是,其他采用不同快取存储器一致性协定的实施例亦涵盖于本发明的范畴内。在一实施例中,末级快取存储器106包含图1所示的处理核102中的私有快取存储器104,且状态306包含与私有快取存储器104中各快取列状态相关的信息。于一实施例中,各处理核102包含一第一级指令快取存储器与一第一级数据快取存储器,且MESI状态306包含十二个位。位[11:10]用以指出末级快取存储器106的MESI状态。位[7:0]中的各个位于当各处理核102的第一级指令/数据快取存储器存有该快取列的一复本时被设定。位[9:8]用以指出私有快取存储器104的一整体MESI状态。若没有任何私有快取存储器104存有该快取列的复本,该整体MESI状态为无效状态;若只有一个私有快取存储器存有该快取列的复本,该整体MESI状态为专有状态;否则,该快取列的整体MESI状态为共用状态。
通过图1中的接口112,一地址被提供给末级快取存储器106。随后,末级快取存储器106根据该地址进行查找,以决定该地址是否命中末级快取存储器106。末级快取存储器106可为一直接快取存储器、一集合相联(set-associative)快取存储器或一完全相联(fullyassociative)快取存储器。在一实施例中,末级快取存储器106为一集合相联快取存储器,具有NUM_SET个集合,且为NUM_WAYS关联路,如同图1绘示的实施例。末级快取存储器106根据一待查找地址的中间地址位(例如[16:6])选择一集合,该待查找地址的较高地址位(例如[35:17])被拿来比较被选择的集合中的NUM_WAYS关联路的各快取项目300的标签304,以决定是否发生一快取命中。末级快取存储器106的快取项目300的标签304和MESI状态306可被写至总线124,以协助除错及/或效能调整。
图4根据一集合相联实施例呈现末级快取存储器106中的一集合400的示意图。在一实施例中,末级快取存储器106包含多个集合,图4呈现的集合400仅作为代表。各集合400包含末级快取存储器106中各关联路的快取项目300以及一置换方案位402。于一实施例中,该置换方案为最近最少使用(least-recentlyused,LRU)方案,但采用其他取代方案的实施例亦涵盖于本发明的范畴内,例如伪最近最少使用(pseudo-LRU)方案、循环(round-robin)方案、随机方案等等。于一实施例中,NUM_WAYS等于十六。
图5为末级快取存储器106呈现一个更详细的功能方块图。末级快取存储器106包含请求队列502,用以接收处理核102、总线接口单元108及服务处理器509对于存取末级快取存储器106的请求532。
服务处理器509用以除错、效能监控/加强以及动态解决漏洞。服务处理器509能存取末级快取存储器暂存器526、非核私有随机存取存储器(PRAM)524、标签阵列514以及LRU阵列516。服务处理器509包含一程序处理器,用以辅助处理核102但不同于处理核102。处理核102于架构上可见地执行处理核102的指令集架构(例如x86指令集架构)的指令,服务处理器509则是并未于架构上可见地执行处理核102的指令集架构的指令。举例而言,操作系统无法运行于服务处理器509上,亦不能安排处理核102的指令集架构(例如x86指令集架构)的程序于服务处理器509上运行。换句话说,服务处理器509并非由操作系统管理的系统资源。相对地,服务处理器509负责执行用以为处理器100(包含末级快取存储器106)除错的操作。此外,服务处理器509可协助量测处理核102的效能或提供其他功能。在一实施例中,相较于处理核102,服务处理器509较小、复杂度较低、较省电。于一实施例中,服务处理器509包含内建时脉门控。于一实施例中,服务处理器509包含一FORTH中央处理器核。
末级快取存储器106亦包含一合并引擎504。合并引擎504自请求队列502接收请求。合并引擎504亦耦合至一进行中暂存器507(功用容后详述)。此外,合并引擎504亦自较高地址位暂存器508接收较高地址位,并存取一合并引擎请求表506(细节容后配合图6详述)。在一实施例中,较高地址位暂存器508的预设值是可配置的,例如通过熔断处理器100的熔丝来进行设定。在一实施例中,较高地址位暂存器508为可程序化的,例如通过处理器100的微指令或是服务处理器509改变其预设值。在一实施例中,较高地址位暂存器508的预设值的设定响应于一架构指令,例如x86指令集架构写入模型设定暂存器(writemodelspecificregister,WRMSR)指令。于一实施例中,较高地址位暂存器508为四个位宽且负责保存一数值;该数值于一诊断回写程序中代表总线124中地址部分204的四个较高位。合并引擎504执行的诊断回写程序的细节随后会再说明。
以下说明较高地址位暂存器508的使用范例。假设该系统配置有八十亿字节的系统存储器,且操作系统被告知(例如通过基本输入输出系统)仅四十亿字节的系统存储器为可用的。也就是说,在该四十亿字节之外的存储器为不可快取的存储器空间。较高地址位暂存器508存有一数值0x1(可能为预设值或被编写而成),用以指出系统存储器在四十亿字节与八十亿字节之间的范围。当一诊断回写程序被执行,末级快取存储器106的中继数据304/306被写至存储器在四十亿字节与八十亿字节之间的范围内的位置,不影响操作系统使用的系统存储器(亦即低于四十亿字节),但允许一逻辑分析器为了除错目的检视总线124,以取得末级快取存储器106的中继数据304/306,例如利用处理器100的一软件模拟器来重现程序漏洞或进行效能分析。
末级快取存储器106包含一数据阵列529,用以存放图3中的快取项目300的快取列数据302。末级快取存储器106亦包含一标签/MESI阵列514(简称标签阵列514),用以存放快取项目300的标签304和MESI状态306。标签阵列514负责在共用末级快取存储器106的处理核102之间保持数据一致性。末级快取存储器106亦包含一LRU阵列516(或称取代信息阵列516),用以存放图4呈现的LRU位402。末级快取存储器106亦包含一非核私有随机存取存储器(PRAM)524与一末级快取存储器暂存器526,用以设置操作型态并记录末级快取存储器106的状态。非核PRAM524由处理核102共用,可被用以执行核间通信并作为处理核102的微指令的私有暂用空间等等。
末级快取存储器106亦包含数据输送线522与标签输送线512。数据输送线522可存取数据阵列529、非核PRAM524与末级快取存储器暂存器526,并读取及/或更新其内容。数据输送线522自数据阵列529、非核PRAM524、末级快取存储器暂存器526取得数据302,并将数据提供给处理核102与总线接口单元108。数据输送线522亦接收来自请求队列502与合并引擎504的请求中的数据,并将数据写入至数据阵列529、非核PRAM524与末级快取存储器暂存器526。标签输送线512可存取标签阵列514与LRU阵列516,并可读取及/或更新其内容。标签输送线512产生响应或动作,以更新请求队列502与合并引擎504中的请求。这些请求亦可更新标签阵列514中的MESI状态306,并可间接地更新LRU阵列516中的LRU位402。于一实施例中,末级快取存储器106包含两个数据输送线522与两个标签输送线512。
仲裁逻辑528负责仲裁来自请求队列502与合并引擎504对于数据输送线522的存取请求。相似地,仲裁逻辑518负责仲裁来自请求队列502与合并引擎504对于标签输送线512的存取请求。
在一实施例中,合并引擎504能使用总线124的整个频宽,以使上述诊断回写程序能以相较于传统方法更快速的方式被执行。此外,不同于传统的回写无效操作(例如x86WBINVD指令),该诊断回写程序并未令末级快取存储器106中快取项目300的MESI状态306为无效。该诊断回写程序的这两个特色都有利于令程序漏洞较快出现,进而有利于较快地找到并修复程序漏洞。在一实施例中,合并引擎504包含两个状态机,用以执行诊断回写程序。须说明的是,虽然以上说明主要描述利用一模拟器的除错方案,根据本发明的诊断回写程序可利用其他方案来除错。举例而言,除错者/工程人员可仅检查诊断回写程序的输出,例如仅检视诊断回写程序的输出及/或通过计算机软件分析该输出,尤其是当不需要使用快取列数据,而是使用快取列状态来寻找程序漏洞的情况,例如根据图11的实施例。
图6呈现图5中的合并引擎请求表506的一示意图。合并引擎请求表506包含针对多个类型的快取存储器管理请求(亦称为合并引擎请求或仅称为请求)各自设有一排的位;该些请求可能接收自处理核102与服务处理器509。图6的实施例中的请求类型包含:诊断回写请求602、回写无效请求604、回写无效私有请求606以及调整大小请求(resizerequest)608。合并引擎请求表506亦包含与调整大小请求608相关的一尺寸暂存器(sizeregister)612,以及与回写无效私有请求606相关的一位遮罩暂存器614。位遮罩暂存器614对应于各处理核102分别包含一位。
响应于一诊断回写请求602,合并引擎504执行一诊断回写程序。响应于一回写无效请求604,合并引擎504执行一回写无效操作,以回写末级快取存储器106的修改过的快取列至系统存储器,并令末级快取存储器106的所有快取项目300无效。于一实施例中,在将修改过的快取列回写至系统存储器与无效末级快取存储器106的快取列之前,合并引擎504首先自私有快取存储器104将所有正确的快取列搬移至末级快取存储器106,并令私有快取存储器104的所有快取项目为无效。于一实施例中,合并引擎504探访末级快取存储器106的快取项目的关联路/集合顺序相似于后续图9与表1所述的回写无效操作中的顺序。
由一处理核102或服务处理器509发出的各个回写无效私有请求606包含一位遮罩。该位遮罩包含对应于各处理核102的一位。如后续与图12的步骤1208有关的说明,当处理核102或服务处理器509发出一回写无效私有请求606,合并引擎504(例如通过布林运算的OR)将该些位遮罩合并,产生合并引擎请求表506中位遮罩暂存器614的数值。合并引擎504针对一回写无效私有请求606执行一回写无效私有操作时,检查位遮罩暂存器614中的位来决定哪些处理核102有设定该位。若各处理核102皆于位遮罩暂存器614中设定该位,合并引擎504会自该些私有快取存储器104将所有正确的快取列搬移至末级快取存储器106,并令位遮罩暂存器614指出的处理核102的私有快取存储器104为无效。因此,当该回写无效私有请求606已完成,针对位遮罩暂存器614指出的处理核102,末级快取存储器106会反映出处理器中的最新版本可快取数据。于一实施例中,合并引擎504探访末级快取存储器106的快取项目的关联路/集合顺序相似于后续图9与表1所述的回写无效私有操作中的顺序。
来自一处理核102或服务处理器509的各调整大小请求608会指定一快取空间规格,也就是末级快取存储器106被启用的关联路的数量。针对一调整大小请求608,合并引擎504执行一重设快取空间规格操作,以将末级快取存储器106的快取空间规格重设为尺寸暂存器612指定的关联路数量。也就是说,合并引擎504会停用Q关联路的末级快取存储器106,其中Q等于NUM_WAYS减去尺寸暂存器612中指定的数值。在一实施例中,合并引擎504为了降低处理器100的耗电量,通过停止其时脉信号及/或停止其供电来停用Q关联路的末级快取存储器106。若尺寸暂存器612中指定的数值大于目前使用中的关联路数量,则合并引擎504会启用先前被停用的关联路,例如通过启用其电力与时脉信号。在一实施例中,合并引擎504依图9的步骤902与表1呈现的顺序停用Q关联路的末级快取存储器106,并依相反顺序启用关联路。
针对各类型的请求,合并引擎请求表506为每一处理核102与服务处理器509皆各自设有一个位。当某一处理核102或服务处理器509有一个未完成的请求,对应于该请求类型的那一个位会被设定;直到该请求被完成或取消,该位才会被清除。合并引擎请求表506可协助分别合并四个类型的请求,做法详述如下。若一特定类型的一请求正在等待中–如同合并引擎请求表506对应于该操作类型的位列中的一个或多个设定位所显示者–当另一处理核102/服务处理器509发出相同类型的请求,则相关请求于合并引擎请求表506中的对应位被设定。随后,合并引擎504开始将合并后请求递送至标签输送线512与数据输送线522,以执行合并引擎请求表506指出的请求。当合并引擎504已完成执行被请求的操作,合并引擎504便清空该请求类型所对应的位列中的所有位。于一实施例中,合并引擎504首先将合并后请求递送至标签输送线512,并响应于标签输送线512的动作,将请求提交给请求队列502(例如填充队列及/或查询队列),以进行后续与数据输送线522相关的仲裁。
举例而言,若一处理核102提出一回写无效请求604,且另一处理核102在第一个请求开始前提出一回写无效请求604,则合并引擎504将执行一单一回写无效操作,以满足所有提出回写无效请求604的处理核102。针对一调整大小请求608,最新被请求的快取空间规格会被储存在尺寸暂存器612并被合并引擎504据以执行合并后调整大小请求608。针对多个处理核102提出的回写无效私有请求606的合并,合并引擎504对末级快取存储器106进行一次整体浏览(亦即查看各快取项目300的MESI状态306,其中包含各私有快取存储器104的MESI状态),并窥探回写无效私有请求606位被设定的各处理核102的快取列。这种做法优于令合并引擎504对末级快取存储器106依序进行多次整体浏览,亦即为各个回写无效私有请求606位被设定的处理核102分别对末级快取存储器106进行一次整体浏览。
合并请求(稍后将配合图12~图15进一步说明)在多方面是有利的。首先,这种做法可增加处理器100的效能。由于快取存储器管理请求通常需要相当长的时间才能完成,通过合并请求并执行单一快取存储器管理操作来满足多个快取存储器管理请求,整体而言可减少完成多个快取存储器管理请求的时间。上述合并的执行不为处理核102所知。也就是说,一处理核102并不会知道其快取存储器管理请求被合并。其次,这种做法可简化实现快取存储器管理请求的微指令。尤其,这种做法可减少处理核102内部通信的复杂度。
诊断回写
图7呈现图1中的处理器100的一操作流程图。该流程开始于步骤702。
于步骤702中,发生启动一处理核102的追踪程序微指令的触发事件。该微指令侦测到一旗标被设定为指出应以追踪程序执行一诊断回写程序。该流程随后执行步骤704。
于步骤704,该微指令编写一控制暂存器,以设定合并引擎请求表506中的诊断回写请求602位。或者,响应于启动服务处理器509去请求诊断回写程序的一触发事件,服务处理器509编写该控制暂存器,以设定该诊断回写请求602位。该流程随后执行步骤706。
于步骤706,合并引擎504侦测到诊断回写请求602位中的一个或多个位被设定,并响应于此,执行一诊断回写程序(随后将配合图9详述)。当合并引擎504开始进行诊断回写程序时,合并引擎504清除所有的诊断回写请求602位。该流程结束于步骤706。
图8呈现图1中的处理器100在另一实施例中的操作流程图。该流程开始于步骤802。
于步骤802,一个处理核102执行一诊断回写指令。在一实施例中,该诊断回写指令为一架构指令,亦即处理器100的指令集架构中的一个指令,可由系统软件(例如操作系统)执行。于一范例中,该系统软件可响应一最佳化编辑器的请求而执行该架构诊断回写指令,其中该最佳化编辑器为了一效能最佳化程序产生对于末级快取存储器106的中继数据304/306的需求。于另一范例中,一软件诊断程序可执行该架构诊断回写指令,以诊断末级快取存储器106是否正在正常运作。于另一范例中,该系统软件可为了除错目的执行该架构诊断回写指令。在一实施例中,诊断回写指令包含一参数,用以在诊断回写程序开始之前指定被写入较高地址位暂存器508的一数值。该流程随后执行步骤804。
于步骤804,处理核102编写一控制暂存器,以于合并引擎请求表506中设定其诊断回写请求602位。该流程随后执行步骤706,令合并引擎504执行如图7所示的一诊断回写程序。该流程结束于步骤706。
图9呈现图1中的处理器100于执行图7、图8中步骤706的诊断回写程序其流程的更多操作细节。该流程开始于步骤902。
于步骤902,一静态阵列“way_order[]依一预先决定的顺序被初始化;该预先决定的顺序为末级快取存储器106的一集合中的关联路被写出至总线124的顺序。表1中的虚拟程序码以十六个关联路为例呈现一顺序实施例。然而,其他预先决定的顺序亦涵盖于本发明的范畴内。下述实施例对应于当对末级快取存储器106执行一调整大小请求608时将关联路停用的顺序。于一实施例中,该顺序基于LRU位402的组态预先决定。该流程随后执行步骤904。
于步骤904,一变数“N”被初始化为零。变数N的数值用以作为静态阵列way_order[]的索引值(步骤906)。于一实施例中,若末级快取存储器106中的某些关联路被停用(例如由于一先前执行的调整大小请求608),则N被设定为被停用的关联路数量。举例而言,若有四个关联路被停用(例如图9的实施例中的关联路15、7、11、3),则这些关联路不会被造访,其快取项目亦不会被写至系统总线124。在一实施例中,末级快取存储器106被启用的关联路数量被记录在末级快取存储器106的一控制暂存器中,且其数值会被被写至总线124,借此让除错者能得知在诊断回写程序中末级快取存储器106将有多少快取项目300被写至系统总线124。该流程随后执行步骤906。
于步骤906,一变数“way”被指派为way_order[N]的数值。变数way的数值用以决定目前的集合中是哪一个关联路的快取项目300将要被写至总线124。该流程随后执行步骤908。
于步骤908,一变数“set”被初始化为零。变数set的数值用以决定末级快取存储器106中的哪一个集合的快取项目300将要被写至系统总线124。该流程随后执行步骤912。
于步骤912,变数set与变数way的目前数值指定的快取项目300的中继数据304/306被写至总线124(细节容后配合图10、图11详述)。该流程随后执行步骤914。
值得注意的是,于步骤914,合并引擎504并未于步骤912无效被写至总线124的快取项目300。通过不将快取项目300的MESI状态设定为无效,该诊断回写程序有利于令程序漏洞较快出现。该流程随后执行步骤916。
于步骤916,变数set的数值被递增。该流程执行判断步骤918。
步骤918为判断变数set的数值是否小于NUM_SETS-1。若是,该流程回到步骤912,以写出目前关联路的下一个快取项目300;否则,该流程随后执行步骤922。
于步骤922,变数N的数值被递增。该流程执行判断步骤924。
步骤924为判断变数N的数值是否小于NUM_WAYS-1。若是,该流程回到步骤906,以写出下一个关联路的快取项目300;否则,此流程结束。
表1中的虚拟程序码为图9所示的操作程序的另一种表示法。须说明的是,图9中的流程图与表1中的虚拟程序码仅为一种实施例,呈现合并引擎504于进行一诊断回写程序时可执行的动作;合并引擎504的有限状态机可根据其他实施例来设计。举例而言,虽然以上范例采用了way_order、set、N、way几个变数,合并引擎504的有限状态机实际上仍可以在不采用该些变数的情况下,实现相同的功效,亦即依预先决定的顺序将多个快取项目300的中继数据304/306写至总线124。于一实施例中,有两个标签输送线512,其中一个标签输送线512负责执行与偶数编号的集合有关的虚拟程序码操作,同时,另一个标签输送线512负责执行与奇数编号的集合有关的虚拟程序码操作。
way_order[]={15,7,11,3,13,5,9,1,14,6,10,2,12,4,8,0};
for(n=0;n<NUM_WAYS;n++)
{
way=way_order[n];
for(set=0;set<NUM_SETS;set++)
{
write_项目_to_bus(set,way);
}
}
表1
由图9的流程图以及表1的虚拟程序码可看出,在诊断回写程序中,各快取项目300的索引值与其信息被提供至系统总线124的顺序具有明确的关系。如此一来,除错者通过重建索引值与标签304便得以明确地决定快取项目300的快取列地址。假设在诊断回写程序中,J为一从零开始递增的数值,用以表示一特定快取项目300于步骤912被写至总线124的顺序。更明确地说,第一个快取项目300对应的数值J为零,而第二个快取项目300对应的数值J为一。依此类推,J=(NUM_SETS*NUM_WAYS)–1。除错者可得知中继数据304/306被写至系统总线124的一特定快取项目300的索引值为J模数NUM_WAYS。此外,于步骤912被写至系统总线124的各中继数据304/306所属的快取项目300的关联路,亦可明确地对应其信息在诊断回写程序中被写至总线124的顺序与预先决定的way_order[]。更明确地说,被写至系统总线124的中继数据304/306的第一个NUM_SETS数字来自关联路15;被写至系统总线124的中继数据304/306的第二个NUM_SETS数字来自关联路7;被写至系统总线124的中继数据304/306的第三个NUM_SETS数字来自关联路11;依此类推。
于一实施例中,早于一诊断回写请求602,指定所有处理核102的一回写无效私有请求606被执行,以将所有修改过的快取列数据搬移至末级快取存储器106,以令最新的快取列数据(根据图10的实施例)能在总线124上被取得。这种做法有助于载入最新的快取列数据至模拟器的末级快取存储器106。须说明的是,这会使得私有快取存储器104被无效(模拟器载入被无效的私有快取存储器104)。如此一来,可能会扰乱程序漏洞的出现。然而相较于执行传统的回写无效请求604,这种做法可能有助于令某些程序漏洞更容易重现。或者,为了决定私有快取存储器104中修改过的数据,一第一诊断回写请求602被执行,借此取得快取列数据与中继数据304/306的一第一集合。接着,指定所有处理核102的一回写无效私有请求606被执行。随后,一第二诊断回写请求602被执行,以取得快取列数据与中继数据304/306的一第二集合。除错者可比较上述第一集合和第二集来决定私有快取存储器104中的哪些快取列存有修改过的数据,并取得该些数据。
于一实施例中,合并引擎504亦能自处理核102/服务处理器509接收一诊断回写私有请求。于一实施例中,为执行一诊断回写私有操作,合并引擎504窥探到该些私有快取存储器104为可共用的;也就是说,该些私有快取存储器104放弃将修改过的快取列的数据搬移至末级快取存储器106,但保持该些快取列为共用状态,而非无效该快取列。在这个情况下,最新的快取列数据在该诊断回写程序中会出现在总线124上;有利地,对于私有快取存储器104和末级快取存储器106的扰乱数量被最小化,且模拟器的末级快取存储器106与私有快取存储器104皆可载入与硬件处理器100相符的快取列数据。于另一实施例中,合并引擎504窥探到该些私有快取存储器104为可专有的;也就是说,该些私有快取存储器104放弃将修改过的快取列的数据搬移至末级快取存储器106,但保持该些快取列为一专有状态,而非无效该快取列。在这个情况下,扰乱可被进一步减少。因为,接下来若希望修改该快取列,私有快取存储器104可不需在修改之前取得该快取列的专有权。
图10呈现处理器100于一实施例中将末级快取存储器106的一快取项目300写至总线124(图9的步骤912)的操作细节。于步骤1002,合并引擎504传送一请求至总线接口单元108,以针对末级快取存储器106的一快取项目300于总线124上执行一相关动作。该请求提供快取项目300的数据302给总线124的数据部分202。
该请求亦提供较高地址位暂存器508中的数值给总线124的地址部分204中的较高位。于一实施例中,较高位指位[35:32]。此外,该请求亦提供快取项目300的标签304和MESI状态306给总线124的地址部分204。于一实施例中,标签304被提供至位[33:15],MESI状态306被提供至位[13:3]。
于一实施例中,该请求亦提供一个位至地址部分204的其他位,用以指出两个标签输送线512中是哪一个标签输送线512负责处理快取项目300。于一实施例中,此位为位[14]。于一实施例中,一标签输送线512负责处理末级快取存储器106中为偶数编号的快取项目300,另一标签输送线512负责处理为奇数编号的快取项目300,借此令标签输送线512在诊断回写程序中可被明确地依照预定顺序分派以将被写至总线124的快取项目300。
于一实施例中,MESI状态306以缩减后的11位的形式被提供。如图3所示,快取项目300中的MESI状态306可具有一12位结构,且细节如下:
[11:10]=LLC_MESI(M,E,S,orI)
[9:8]=Global_L1_MESI(E,S,orI)
[7:0]=L1_Bitmap(core0L1D,core0L1I,core1L1D,core1L1I,
core2L1D,core2L1I,core3L1D,core3L1I)
位8是多余的,因此可被移除,以产生一个11位的缩减值。位8在逻辑上为多余的原因在于,位8和位9永远都不会同时被设定。若位8和位9同时被设定,表示有一修改过的快取列在一第一级快取存储器104中;这是末级快取存储器106不会为Global_L1_MESI位设定的状态。此外,只有在位[7:0]中的一个或多个位被设定时,位8才会被设定。因此,根据被写至总线124的11个位,除错者便能根据下列关系重建原始MESI状态306中的位8:
Global_L1_MESI[0]=~Global_L1_MESI[1]&(L1_位遮罩[7:0]!=0)
须说明的是,在以上说明中,Global_L1_MESI[0]对应于快取项目300的MESI状态306的位8,Global_L1_MESI[1]对应于快取项目300的MESI状态306的位9。
于一实施例中,LRU位402亦被提供于总线124的地址部分204。于一实施例中,LRU位402的位数量为十五,其中每一个位对应于一集合的十六个关联路中的一个关联路。针对一特定集合,除错者能够根据被写至总线124的快取项目300重建LRU位402的十五个位。如先前所述,这是根据快取项目300被写至总线124的预先决定的顺序可明确得知的。
图11呈现处理器100于另一实施例中,将末级快取存储器106的一快取项目300写至总线124(图9的步骤912)的操作细节。于步骤1102,合并引擎504传送一请求至总线接口单元108,以针对末级快取存储器106的一快取项目300于总线124上执行一相关动作。该请求提供快取项目300的标签304和MESI状态306给总线124的数据部分202。于一实施例中,快取项目300的数据302的一部分亦被被写至总线124的数据部分202(与标签304和MESI状态306不同的位)。由以上说明可看出,与快取存储器最相关的漏洞不会受到末级快取存储器106的快取项目300中的实际数据302影响。此实施例即利用此潜在优点。
该请求亦提供较高地址位暂存器508中的数值给总线124的地址部分204中的较高位。于一实施例中,针对第一个被写至总线124的快取项目300,较低地址部分204(亦即非对应于较高地址位508的地址部分204)被初始化为零(或其他预先决定的值),并且在随后每次有一快取项目300被该诊断回写程序写至总线124时逐次增加。在这个情况下,若该诊断回写程序所执行的位置(亦即被诊断回写程序写至总线124的地址范围)为未被操作系统用于一般操作的系统存储器(例如未被分派给操作系统辖下的程序),则中继数据304/306可被储存于系统存储器的此区域,供系统软件后续撷取与分析之用。
根据本发明的实施例的一个优点在于,不同于传统的回写与无效操作,该诊断回写程序并未导致快取存储器中的信息遗失。由于在无效程序之后需要很长的时间通过正常程序载入、储存、预取(prefetch)重新搬移快取存储器;传统的回写与无效操作会大幅延长模拟时间。更明确地说,模拟器可能会将大部分的时间运用在重新安置快取存储器,尤其是针对一大型的快取存储器(例如一末级快取存储器),始能令程序漏洞出现。
合并引擎的请求合并
图12呈现图1中的处理器100自一核/服务处理器102/509接收一请求并可能将该请求与来自其他核/服务处理器102/509的请求进行合并的操作流程图。该流程开始于步骤1202。
于步骤1202,一处理核102或服务处理器509传送一请求至合并引擎504,以执行一请求。该请求所属的请求类型合并引擎504所支持的,例如诊断回写请求602、回写无效请求604、回写无效私有请求606或调整大小请求608。该流程随后执行步骤1204。
于步骤1204,合并引擎504根据提出请求的处理核102或服务处理器509,以及该请求相关的请求类型602/604/606/608,设定合并引擎请求表506中相对应的位。这个请求随后可能会与其他核/服务处理器102/509提出的类型相同的一个或多个请求合并。更明确地说,当合并引擎504处于闲置状态,亦即当无请求正在进行中(如图13的步骤1302所决定者),若多于一个核/服务处理器102/509对应于一特定请求类型602/604/606/608的位被设定,则合并引擎504将针对该请求类型602/604/606/608执行一单一操作,并于操作完成时通知所有位被设定的处理核/服务处理器102/509其个别请求已完成(图13中的步骤1312、1314)。该流程执行判断步骤1206。
于判断步骤1206,合并引擎504判断该请求是否为一回写无效私有请求606。若是,该流程随后执行步骤1208;否则,该流程执行判断步骤1212。
于步骤1208,合并引擎504对该回写无效私有请求606中指定的处理核位遮罩数值与位遮罩暂存器614中目前的数值进行布林OR运算。该流程结束于步骤1208。
于判断步骤1212,合并引擎504决定该请求是否为一调整大小请求608。若是,该流程随后执行步骤1214;否则,此流程结束。
于步骤1214,合并引擎504根据调整大小请求608中指定的快取空间规格更新尺寸暂存器612。该流程结束于步骤1214。
图13呈现图1中的处理器100于执行一请求时的操作流程图(该请求可为一合并后请求)。该流程开始于判断步骤1302。
于判断步骤1302,合并引擎504判断是否有一请求正在进行中。也就是说,合并引擎504会判断是否它正在响应来自一个或多个核/服务处理器102/509的请求602/604/606/608执行相关于末级快取存储器106的一操作。于一实施例中,合并引擎504根据进行中暂存器507中是否有任何位被设定来判断是否有一请求正在进行中。若一请求正在进行中,该流程回到判断步骤1302;否则,该流程继续执行步骤1304。
于步骤1304,合并引擎504将合并引擎请求表506中与请求类型602/604/606/608相关的位(例如图6中的一个位)储存至进行中暂存器507,并将相关数值储存至尺寸暂存器612与位遮罩暂存器614。于一实施例中,合并引擎504采用固定的优先顺序来选择接着要服务四种请求类型602/604/606/608中的哪一种。于另一实施例中,合并引擎504依循环(round-robin)顺序选择这四种请求类型602/604/606/608。该流程随后执行步骤1306。
于步骤1306,合并引擎504清除步骤1304中所选择的请求类型602/604/606/608在合并引擎请求表506中的相关位。此外,合并引擎504亦清除位遮罩暂存器614与尺寸暂存器612。该流程随后执行判断步骤1308。
于判断步骤1308,合并引擎504判断在进行中暂存器507中是否有任何在步骤1304中被存入的位是被设定的。也就是说,合并引擎504决定是否有任一个核/服务处理器102/509有一等待中的请求属于目前选择的请求类型602/604/606/608。若否,则该流程回到判断步骤1302,以针对下一种请求类型602/604/606/608检查等待中的请求。若是,则该流程随后执行步骤1312。
于步骤1312,合并引擎504为进行中暂存器507所指出的所有核/服务处理器102/509,针对目前选择的请求类型602/604/606/608执行一单一操作。针对一调整大小请求608或回写无效私有请求606,合并引擎504会分别根据尺寸暂存器612或位遮罩暂存器614中目前储存的数值执行该操作。更明确地说,若目前选择的请求类型在合并引擎请求表506中有多于一个核/服务处理器102/509位被设定,则该些个别请求会被合并为一合并后请求。该合并后请求将通过针对目前选择的请求类型的单一操作来完成。举例而言,若处理核1102-1与处理核3102-3皆设定了其回写无效私有请求606位,则合并引擎504将执行一单一回写无效私有操作,以窥探处理核1102-1和处理核3102-3的私有快取存储器104,而非两个回写无效私有操作。于另一范例中,若处理核0102-0、处理核1102-1、处理核3102-3皆设定了其回写无效请求604位,则合并引擎504将执行一单一回写无效操作,而非三个回写无效操作。于另一范例中,若处理核2102-2与处理核3102-3皆设定了其诊断回写请求602位,则合并引擎504将执行一单一诊断回写程序,而非两个诊断回写程序。于另一范例中,若处理核0102-0与处理核3102-3皆设定了其调整大小请求608位,则合并引擎504将执行一单一重设快取空间规格操作,以将末级快取存储器106重设快取空间规格为尺寸暂存器612中指定的快取空间规格(亦即最后一个发送至合并引擎504的请求所指定的快取空间规格),而非两个重设快取空间规格操作。该流程随后执行步骤1314。
于步骤1314,当步骤1312所执行的操作已完成,合并引擎504通知进行中暂存器507中所记录的各核/服务处理器102/509,其请求已经完成。合并引擎504亦清空进行中暂存器507。该流程结束于步骤1314。
后续范例将说明快取存储器管理请求的合并及其优点。如先前所述,一回写无效私有操作的执行通过整体浏览末级快取存储器106中各个被启用的集合/关联路,并寻找位遮罩暂存器614所指定的处理核102中的正确的快取列,无论有多少位在位遮罩暂存器614中被设定(只要有至少一个位被设定)。假设依渐增的处理核编号顺序,各处理核102给传送合并引擎504一个指定自己的回写无效私有请求606。在这个情况下,后续事件的发生顺序将如下所述。
在时间点0,处理核0传送一回写无效私有请求606给合并引擎504(例如于步骤702或802或1202)。响应于此,合并引擎504为处理核0设定合并引擎请求表506中对应于回写无效私有请求606的该位(于步骤1204),并将回写无效私有请求606中指定的处理核位遮罩(仅指向处理核0)与先前被清空的位遮罩暂存器614合并,令对应于处理核0的该位被设定(于步骤1208)。
由于没有其他等待中的请求(决定于步骤1302),合并引擎504将合并引擎请求表506中对应于回写无效私有请求606的位存至进行中暂存器507,同时亦储存仅指向处理核0的处理核位遮罩(于步骤1304),并清除合并引擎请求表506中对应于回写无效私有请求606的位、清除位遮罩暂存器614(于步骤1306)。合并引擎504随后开始针对处理核0的回写无效私有请求606进行回写无效私有操作(于步骤1312),亦即检查末级快取存储器106中各个被启用的集合/关联路、寻找处理核0的私有快取存储器104中正确的快取列,并将它们搬移至末级快取存储器106。
稍后,处理核1传送一回写无效私有请求606给合并引擎504。合并引擎504(于步骤1302)判定一回写无效私有请求606(来自处理核0)正在进行中,因此不会立即开始另一个回写无效私有操作,但会设定合并引擎请求表506中对应于回写无效私有请求606以及处理核1的位(于步骤1204),并将处理核1的回写无效私有请求606中指定的处理核位遮罩(仅指向处理核1)与先前被清空的位遮罩暂存器614合并,令对应于处理核1的该位被设定(于步骤1208)。
稍后,处理核2传送一回写无效私有请求606给合并引擎504。合并引擎504判定(于步骤1302)针对处理核0的回写无效私有请求606仍在进行中,因此不会立即开始另一回写无效私有操作,但会设定合并引擎请求表506中对应于回写无效私有请求606以及处理核2的位(于步骤1204),并将处理核2的回写无效私有请求606中指定的处理核位遮罩(仅指向处理核2)与先前仅设定处理核1的位的位遮罩暂存器614合并,借此令对应于处理核1、2的位都被设定(于步骤1208)。这种做法有效地合并了来自处理核1与处理核2的请求606。
稍后,处理核3传送一回写无效私有请求606给合并引擎504。合并引擎504判定针对处理核0的回写无效私有请求606仍在进行中,因此不会立即开始另一回写无效私有操作,但会设定合并引擎请求表506中对应于回写无效私有请求606以及处理核3的位,并将处理核3的回写无效私有请求606中指定的处理核位遮罩(仅指向处理核3)与先前仅设定处理核1、2的位的位遮罩暂存器614合并,借此令对应于处理核1、2、3的位都被设定。这种做法有效地合并了来自处理核1、2、3的请求606。
在数百或数千个时脉周期之后,合并引擎504完成了处理核0的回写无效私有请求606,并通知处理核0其请求606已完成,随后清空进行中暂存器507(于步骤1314)。
接着,合并引擎504侦测到(于步骤1302)没有请求正在进行中,并开始步骤1304至步骤1314中的程序,以执行一相对于处理核1、2、3的合并后的回写无效私有操作(例如于步骤1312)。
由先前的说明可看出,合并引擎504能在针对四个处理核102的两个回写无效私有操作的时间内完成针对四个处理核102的四个回写无效私有请求606。更明确地说,合并引擎504仅对末级快取存储器106中所有的集合/关联路组合的所有快取项目300进行两次整体浏览。合并请求可将满足四个请求606所需要的时间大致减半。此外,若当处理核0、1、2、3依序传送其请求606至合并引擎504时,合并引擎504正在工作中(例如执行一重设快取空间规格操作),则合并引擎504将合并四个请求606为单一回写无效私有操作,借此节省更多时间,亦即将满足四个请求606的所需时间减少为大致四分之一。
后续范例用以说明快取存储器管理请求的合并及其优点。假设处理核0传送一调整大小请求608给合并引擎504,请求重设快取空间规格为十个关联路。假设末级快取存储器106的目前快取空间规格大于十个关联路。假设有另一请求(例如诊断回写请求602)正在进行中,则合并引擎504会将调整大小请求608送入合并引擎请求表506排队等候。更明确地说,合并引擎504会设定处理核0的调整大小请求608位,并将十个关联路的数值写入尺寸暂存器612。随后,处理核1亦传送一调整大小请求608给合并引擎504,请求重设快取空间规格为六个关联路。合并引擎504可看出处理核0的等待中的请求为十个关联路。合并引擎504将设定处理核1的调整大小请求608位(处理核0的调整大小请求608位先前已设定),并将尺寸暂存器612的数值更新为六(于步骤1214),借此合并处理核0与处理核1的请求。当合并后调整大小请求608开始被执行(亦即合并引擎504状态机传送合并后仲裁请求至标签与数据输送线512/522,以开始执行该合并后重设快取空间规格操作),合并引擎504将末级快取存储器106重设快取空间规格为六个关联路,并通知处理核0、处理核1其调整大小请求608已完成。有利地,上述将请求合并的动作不为处理核0与处理核1所知,可减少所需时间。
图14呈现图1中的处理器100于一处理核102取消一合并引擎504请求时的操作流程图。该流程开始于步骤1402。
于步骤1402,一处理核102(以下称处理核X),传送一通知至合并引擎504,以取消请求类型602/604/606/608中的一种请求(以下称请求Y)。请求Y先前由某个处理核102传递至合并引擎504。在一实施例中,处理核102通过编写末级快取存储器106的一控制暂存器来实现此动作。该流程执行判断步骤1404。
于判断步骤1404,合并引擎504判断请求Y是否正在进行中,亦即合并引擎504目前是否正在执行相关于请求Y的操作。于一实施例中,合并引擎504通过检查进行中暂存器507来决定请求Y是否正在进行中。若请求Y正在进行中,该流程执行判断步骤1408;否则,该流程随后执行步骤1406。
于步骤1406,合并引擎504为处理核X清除其于合并引擎请求表506中对应于请求Y的所属类型602/604/606/608的位。此外,合并引擎504会通知处理核X,告知其请求Y已被取消。若合并引擎504仍然在执行相关于请求Y的操作,它将不会针对处理核X。也就是说,若处理核X是唯一一个送出等待中的请求Y的处理核102,则合并引擎504将不会执行相关于请求Y的操作。然而,若有其他处理核102送出等待中的请求Y,亦即若合并引擎请求表506中有其他一个或多个其他处理核102(或服务处理器509)对应于与请求Y同类型请求的位被设定,则合并引擎504将会针对其他一个或多个处理核102执行相关于请求Y的操作,但不是针对处理核X。举例而言,若请求Y为一回写无效私有请求606,则合并引擎504会针对其他一个或多个处理核102执行一回写无效私有操作,但不是针对处理核X。该流程结束于步骤1406。
于判断步骤1408,合并引擎504决定请求Y是否正在仅针对处理核X进行中,亦即仅针对处理核X而未针对任何其他处理核102。若是,该流程随后执行步骤1414;否则,该流程随后执行步骤1412。
于步骤1412,合并引擎504为处理核X清除其于合并引擎请求表506中对应于请求Y的所属类型602/604/606/608的位。此外,合并引擎504会通知处理核X,告知其请求Y已被取消,相似于步骤1406。然而,合并引擎504会继续执行进行中的请求Y操作。在一实施例中,合并引擎504会继续针对处理核X执行进行中的请求Y操作(如同针对任何其他于进行中暂存器507中有位被设定的处理核102)。举例而言,若一回写无效私有操作正在针对处理核1、3进行中,且处理核3取消其回写无效私有请求606,则合并引擎504将继续针对处理核1、3执行该回写无效私有操作,除非是处理核1取消其回写无效私有请求606,合并引擎504才会停止执行该回写无效私有操作(步骤1414)。该流程结束于步骤1412。
于步骤1414,合并引擎504停止执行相关于请求Y的操作,并通知处理核X已将请求Y取消。也就是说,合并引擎504停止传送仲裁请求至标签输送线512及/或数据输送线522,用以存取标签/MESI阵列514、数据阵列529、非核PRAM524及/或末级快取存储器暂存器526、及/或传送窥探请求至私有快取存储器104、及/或传送请求至总线接口单元108,以回写快取列及/或中继数据304/306至总线124、及/或停用/启用末级快取存储器106的关联路。该流程结束于步骤1414。
图14(或图15)所述的快取存储器管理请求的取消,尤其有利于调整大小请求608。于一实施例中,或许是响应于操作系统所执行的一架构指令,或是由于侦测到处理器100工作负担较低,处理核102的微指令传送一调整大小请求608给合并引擎504,要求减少末级快取存储器106的快取空间规格(亦即减少启用的关联路数量以节省电力)。举例而言,假设末级快取存储器106原本总共有十六个关联路被启用,而调整大小请求608指定的快取空间规格为六个关联路。假设当该微指令传送通知给合并引擎504要求取消调整大小请求608时,合并引擎504已经回写修改过的数据并停用四个关联路(亦即已将末级快取存储器106的快取空间规格缩减为十二个关联路)。该微指令要求取消调整大小请求608的原因可能是由于它侦测到一个等待中、且不能等到调整大小请求608完成后才处理的中断请求。然而,有利地,末级快取存储器106中已经被停用四个关联路,当该微指令再次传送指定快取空间规格为六个关联路的调整大小请求608时,合并引擎504将能够自快取空间规格为十二个关联路开始,亦即合并引擎504将仅需再回写并停用六个关联路,而不需自十六个关联路开始回写与停用十个关联路。如此一来,可达成棘轮效果(ratcheting-downeffect),且先前的调整大小请求608的进程被保留。
图15为当一处理核102取消所有对于合并引擎504的请求时处理器100的运作流程图。该流程开始于步骤1502。
于步骤1502,一处理核102传送一指示至合并引擎504,以取消所有的请求。在一实施例中,处理核102通过编写末级快取存储器106的一控制暂存器来完成此动作。该流程随后执行步骤1504。
于步骤1504,合并引擎504清除合并引擎请求表506中对应于请求Y类型602/604/606/608所有被设定的位,并清空进行中暂存器507。接着,合并引擎504通知所有在进行中暂存器507或合并引擎请求表506中有相关于请求Y类型602/604/606/608的位被设定的处理核102,其请求Y已被取消。该流程结束于步骤1414。
通过以上具体实施例的详述,希望能更加清楚描述本发明的特征与精神,而并非以上述所揭露的具体实施例来对本发明的范畴加以限制。本发明所属技术领域的技术人员可理解,在形式与细节上有多种变化型可在不脱离本发明范畴的情况下可被实现。举例而言,软件能实现前述装置与方法的功能、制造、建立模型、模拟、描述及/或测试,通过通用的程序语言(例如C、C++)、硬件描述语言(包含VerilogHDL、VHDL等等)或其他可用程序。此软件可被存放于任何已知的计算机可使用介质,例如磁带、半导体、磁盘或光盘(例如CD-ROM、DVD-ROM等等)、网路、有线、无线或其他通信介质。前述装置与方法的实施例可被包含于一半导体产品中,例如一处理器处理核(例如嵌入式或专用处理器)或是集成电路产品中的硬件。此外,前述装置与方法可被实现为一硬件与软件的组合。因此,本发明不受限于前述各实施例。尤其,本发明可被实现于一通用计算机所使用的处理器装置中。最后,本发明所属技术领域的技术人员可运用以上揭露的观念及实施例作为基础,来设计或修改其他架构,在不背离本发明精神的情况下达成相同的目的。各种改变及具相等性的安排皆涵盖于本发明所欲申请的权利要求书的范畴内。

Claims (22)

1.一种处理器,包含:
多个处理核;以及
一快取存储器,由该多个处理核共用,其中该快取存储器包含一合并引擎,用以自该多个处理核中的各个处理核接收一个别请求,并据此执行与该快取存储器相关的一操作;
其中该合并引擎将来自该多个处理核中两个或更多个处理核的多个个别请求合并为一合并后请求,该合并引擎通过执行一单一操作来执行该合并后请求,并于该单一操作完成时,通知该多个处理核中的两个或更多个处理核其个别请求已经完成。
2.根据权利要求1所述的处理器,其中,
该快取存储器包含多个快取项目,每一个快取项目包含的一储存区域,用以存放一快取列及相关的一快取列状态;以及
相关于该快取存储器的该操作包含该合并引擎检查该多个快取项目中目前未停用的快取项目各自的该快取列状态。
3.根据权利要求1所述的处理器,其中,相关于该快取存储器的该操作包含该合并引擎将该快取存储器中被修改过的一个或多个快取列回写至一系统存储器。
4.根据权利要求1所述的处理器,其中,与该快取存储器相关的该操作包含一诊断回写请求。
5.根据权利要求1所述的处理器,其中,与该快取存储器相关的该操作包含一回写无效请求。
6.根据权利要求1所述的处理器,其中,与该快取存储器相关的该操作包含将该快取存储器重设快取空间规格的一请求。
7.根据权利要求6所述的处理器,其中,
每一个别请求各自为该快取存储器指定一新快取空间规格;以及
当该合并引擎执行该单一操作以将该快取存储器重设快取空间规格时,该合并引擎根据所述个别请求中的一最新个别请求所指定的该新快取空间规格将该快取存储器重设快取空间规格。
8.根据权利要求1所述的处理器,其中,
该多个处理核的每一个处理核各自包含一私有快取存储器;以及
相关于该快取存储器的该操作包含一请求,用以自所述私有快取存储器中的一个或多个私有快取存储器窥探该快取存储器中的修改过的快取列,并将该一个或多个私有快取存储器设定为无效。
9.根据权利要求8所述的处理器,其中,
每一个别请求指定该多个处理核的一个别集合,该个别集合中的处理核所具有的私有快取存储器将被窥探;以及
该合并引擎窥探一母集合中的各处理核所具有的私有快取存储器,其中该母集合为所述个别请求所指定的个别集合的合集。
10.根据权利要求1所述的处理器,其中,
该多个处理核中的一处理核传送一通知至该合并引擎以取消该处理核的个别请求;以及
若该合并引擎在收到该通知之前尚未开始处理该合并后请求,则该合并引擎于执行该单一操作时不针对该处理核,并通知该处理核其个别请求未被完成而是被取消。
11.一种适用于一处理器的操作方法,该处理器包含多个处理核与由该多个处理核共用的一快取存储器,该操作方法包含:
利用该快取存储器,自该多个处理核中的各个处理核接收一个别请求,并据此执行与该快取存储器相关的一操作;
将来自该多个处理核中两个或更多个处理核的多个个别请求合并为一合并后请求;以及
通过执行一单一操作来执行该合并后请求,并于该单一操作完成时,通知该多个处理核中的两个或更多个处理核其个别请求已经完成。
12.根据权利要求11所述的操作方法,其中,
该快取存储器包含多个快取项目,每一个快取项目包含的储存区域,用以存放一快取列与相关的快取列状态;以及
相关于该快取存储器的该操作包含检查该多个快取项目中目前未停用的快取项目各自的该快取列状态。
13.根据权利要求11所述的操作方法,其中,相关于该快取存储器的该操作包含将该快取存储器中被修改过的一个或多个快取列回写至一系统存储器。
14.根据权利要求11所述的操作方法,其中,相关于该快取存储器的该操作包含一诊断回写请求。
15.根据权利要求11所述的操作方法,其中,相关于该快取存储器的该操作包含一回写无效请求。
16.根据权利要求11所述的操作方法,其中,相关于该快取存储器的该操作包含将该快取存储器重设快取空间规格的一请求。
17.根据权利要求16所述的操作方法,其中,
每一个别请求各自为该快取存储器指定一新快取空间规格;以及
执行该单一操作以将该快取存储器重设快取空间规格包含根据所述个别请求中的一最新个别请求所指定的该新快取空间规格将该快取存储器重设快取空间规格。
18.根据权利要求11所述的操作方法,其中,
该多个处理核的每一个处理核各自包含一私有快取存储器;以及
相关于该快取存储器的该操作包含一请求,用以自所述私有快取存储器中的一个或多个私有快取存储器窥探该快取存储器中的修改过的快取列,并将该一个或多个私有快取存储器设定为无效。
19.根据权利要求18所述的操作方法,其中,
每一个别请求指定该多个处理核的一个别集合,该个别集合中的处理核所具有的私有快取存储器将被窥探;以及
窥探一母集合中的各处理核所具有的私有快取存储器,其中该母集合为该多个个别请求所指定的个别集合的合集。
20.根据权利要求11所述的操作方法,其中,进一步包含:
自该多个处理核中的一处理核传送一通知以取消该处理核的个别请求;以及
若在收到该通知之前尚未开始处理该合并后请求,则于执行该单一操作时不针对该处理核,并通知该处理核其个别请求未被完成而是被取消。
21.一种计算机程序产品,编码于供一运算装置使用的至少一非暂态计算机可使用介质中,该计算机程序产品包含:
储存于该介质中的计算机可使用程序码,用以控制一处理器,该计算机可使用程序码包含:
第一程序码,用以控制多个处理核;以及
第二程序码,用以控制由该多个处理核共用的一快取存储器,其中该快取存储器包含一合并引擎,用以自该多个处理核中的各个处理核接收一个别请求,并据此执行与该快取存储器相关的一操作;以及
其中该合并引擎将来自该多个处理核中两个或更多个处理核的多个个别请求合并为一合并后请求;该合并引擎通过执行一单一操作来执行该合并后请求,并于该单一操作完成时,通知该多个处理核中的两个或更多个处理核,其个别请求已经完成。
22.根据权利要求21所述的计算机程序产品,其中,该至少一非暂态计算机可使用介质为一磁性储存介质、一光学储存介质或一电子储存介质。
CN201480065193.7A 2014-09-18 2014-11-26 处理器及其操作方法、以及计算机可读存储介质 Active CN105793832B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462052387P 2014-09-18 2014-09-18
US62/052,387 2014-09-18
PCT/IB2014/003088 WO2016042353A1 (en) 2014-09-18 2014-11-26 Cache management request fusing

Publications (2)

Publication Number Publication Date
CN105793832A true CN105793832A (zh) 2016-07-20
CN105793832B CN105793832B (zh) 2018-12-18

Family

ID=55532606

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201480065193.7A Active CN105793832B (zh) 2014-09-18 2014-11-26 处理器及其操作方法、以及计算机可读存储介质
CN201480065192.2A Active CN105793833B (zh) 2014-09-18 2014-11-26 处理器及其操作方法、计算机可读存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480065192.2A Active CN105793833B (zh) 2014-09-18 2014-11-26 处理器及其操作方法、计算机可读存储介质

Country Status (4)

Country Link
US (2) US9892803B2 (zh)
CN (2) CN105793832B (zh)
TW (2) TWI571739B (zh)
WO (2) WO2016042353A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
US9892803B2 (en) 2014-09-18 2018-02-13 Via Alliance Semiconductor Co., Ltd Cache management request fusing
WO2016097795A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode
US9652398B2 (en) * 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
EP3129886B1 (en) 2014-12-14 2019-10-02 VIA Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
EP3066572B1 (en) * 2014-12-14 2020-02-19 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
JP6207765B2 (ja) * 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
KR101817847B1 (ko) 2014-12-14 2018-02-21 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 접근 타입에 기초한 통로에 의해 버짓화된 캐시 메모리
US9652400B2 (en) * 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
KR101867143B1 (ko) * 2014-12-14 2018-07-17 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 이종 치환 정책을 가진 셋트 연관 캐시 메모리
US10482024B2 (en) * 2017-07-20 2019-11-19 Alibaba Group Holding Limited Private caching for thread local storage data access
US10891228B2 (en) * 2018-02-12 2021-01-12 International Business Machines Corporation Cache line states identifying memory cache
US11048552B2 (en) * 2018-05-30 2021-06-29 Texas Instruments Incorporated High-speed broadside communications and control system
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US10976950B1 (en) * 2019-01-15 2021-04-13 Twitter, Inc. Distributed dataset modification, retention, and replication
US11113270B2 (en) 2019-01-24 2021-09-07 EMC IP Holding Company LLC Storing a non-ordered associative array of pairs using an append-only storage medium
CN114365097A (zh) * 2019-08-27 2022-04-15 美光科技公司 受管理存储器系统中的写入缓冲器控制
CN111428246B (zh) * 2020-03-30 2023-04-18 电子科技大学 面向自主芯片硬件安全的逻辑漏洞深度挖掘方法
US11599546B2 (en) 2020-05-01 2023-03-07 EMC IP Holding Company LLC Stream browser for data streams
US11604759B2 (en) 2020-05-01 2023-03-14 EMC IP Holding Company LLC Retention management for data streams
US11599420B2 (en) 2020-07-30 2023-03-07 EMC IP Holding Company LLC Ordered event stream event retention
US11513871B2 (en) 2020-09-30 2022-11-29 EMC IP Holding Company LLC Employing triggered retention in an ordered event stream storage system
US11755555B2 (en) 2020-10-06 2023-09-12 EMC IP Holding Company LLC Storing an ordered associative array of pairs using an append-only storage medium
US11599293B2 (en) 2020-10-14 2023-03-07 EMC IP Holding Company LLC Consistent data stream replication and reconstruction in a streaming data storage platform
US11816065B2 (en) 2021-01-11 2023-11-14 EMC IP Holding Company LLC Event level retention management for data streams
US11740828B2 (en) * 2021-04-06 2023-08-29 EMC IP Holding Company LLC Data expiration for stream storages
US12001881B2 (en) 2021-04-12 2024-06-04 EMC IP Holding Company LLC Event prioritization for an ordered event stream
US11954537B2 (en) 2021-04-22 2024-04-09 EMC IP Holding Company LLC Information-unit based scaling of an ordered event stream
US11681460B2 (en) 2021-06-03 2023-06-20 EMC IP Holding Company LLC Scaling of an ordered event stream based on a writer group characteristic
US11735282B2 (en) 2021-07-22 2023-08-22 EMC IP Holding Company LLC Test data verification for an ordered event stream storage system
US11971850B2 (en) 2021-10-15 2024-04-30 EMC IP Holding Company LLC Demoted data retention via a tiered ordered event stream data storage system
US20230136274A1 (en) * 2021-11-04 2023-05-04 Softiron Limited Ceph Media Failure and Remediation
US11977779B2 (en) * 2022-05-11 2024-05-07 Bank Of America Corporation Smart queue for distributing user requests to automated response generating systems
US20240012579A1 (en) * 2022-07-06 2024-01-11 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for data placement in a storage device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1609823A (zh) * 2003-10-23 2005-04-27 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US20060112227A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US20080022049A1 (en) * 2006-07-21 2008-01-24 Hughes Christopher J Dynamically re-classifying data in a shared cache
CN101916232A (zh) * 2009-08-26 2010-12-15 威盛电子股份有限公司 存储器配置装置以及方法
US20110219208A1 (en) * 2010-01-08 2011-09-08 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
CN102446158A (zh) * 2010-10-12 2012-05-09 无锡江南计算技术研究所 多核处理器及多核处理器组

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69127936T2 (de) * 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
US5999721A (en) * 1997-06-13 1999-12-07 International Business Machines Corporation Method and system for the determination of performance characteristics of a cache design by simulating cache operations utilizing a cache output trace
US7194587B2 (en) * 2003-04-24 2007-03-20 International Business Machines Corp. Localized cache block flush instruction
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7380071B2 (en) 2005-03-29 2008-05-27 International Business Machines Corporation Snoop filtering system in a multiprocessor system
US7392351B2 (en) 2005-03-29 2008-06-24 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers
US7584327B2 (en) * 2005-12-30 2009-09-01 Intel Corporation Method and system for proximity caching in a multiple-core system
US7356652B1 (en) * 2006-03-28 2008-04-08 Unisys Corporation System and method for selectively storing bus information associated with memory coherency operations
US7809926B2 (en) 2006-11-03 2010-10-05 Cornell Research Foundation, Inc. Systems and methods for reconfiguring on-chip multiprocessors
US8151059B2 (en) * 2006-11-29 2012-04-03 Intel Corporation Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture
US8209689B2 (en) * 2007-09-12 2012-06-26 Intel Corporation Live lock free priority scheme for memory transactions in transactional memory
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
US20090249046A1 (en) * 2008-03-31 2009-10-01 Mips Technologies, Inc. Apparatus and method for low overhead correlation of multi-processor trace information
US9690591B2 (en) * 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8412971B2 (en) * 2010-05-11 2013-04-02 Advanced Micro Devices, Inc. Method and apparatus for cache control
JP5499987B2 (ja) * 2010-08-13 2014-05-21 富士通株式会社 共有キャッシュメモリ装置
CN103136113B (zh) * 2011-11-25 2016-01-13 中国科学院沈阳计算技术研究所有限公司 面向多核处理器的共享Cache冲突预测方法
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
US9081706B2 (en) 2012-05-10 2015-07-14 Oracle International Corporation Using a shared last-level TLB to reduce address-translation latency
CN102929832B (zh) 2012-09-24 2015-05-13 杭州中天微系统有限公司 基于非写分配的高速缓存一致性的多核处理器数据传输系统
US9329936B2 (en) 2012-12-31 2016-05-03 Intel Corporation Redundant execution for reliability in a super FMA ALU
US9454486B2 (en) 2013-07-12 2016-09-27 Apple Inc. Cache pre-fetch merge in pending request buffer
US9652388B2 (en) 2013-07-31 2017-05-16 Intel Corporation Method, apparatus and system for performing management component transport protocol (MCTP) communications with a universal serial bus (USB) device
US9892803B2 (en) 2014-09-18 2018-02-13 Via Alliance Semiconductor Co., Ltd Cache management request fusing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1609823A (zh) * 2003-10-23 2005-04-27 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US20060112227A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US20080022049A1 (en) * 2006-07-21 2008-01-24 Hughes Christopher J Dynamically re-classifying data in a shared cache
CN101916232A (zh) * 2009-08-26 2010-12-15 威盛电子股份有限公司 存储器配置装置以及方法
US20110219208A1 (en) * 2010-01-08 2011-09-08 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
CN102446158A (zh) * 2010-10-12 2012-05-09 无锡江南计算技术研究所 多核处理器及多核处理器组

Also Published As

Publication number Publication date
US20160283376A1 (en) 2016-09-29
CN105793833A (zh) 2016-07-20
TW201614503A (en) 2016-04-16
TW201618117A (zh) 2016-05-16
CN105793833B (zh) 2019-08-06
WO2016042353A1 (en) 2016-03-24
US20160293273A1 (en) 2016-10-06
WO2016042354A1 (en) 2016-03-24
US9892803B2 (en) 2018-02-13
CN105793832B (zh) 2018-12-18
US9911508B2 (en) 2018-03-06
TWI571739B (zh) 2017-02-21
TWI578327B (zh) 2017-04-11

Similar Documents

Publication Publication Date Title
CN105793832A (zh) 快取管理请求合并
JP6802287B2 (ja) キャッシュ・メモリ・アクセス
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
TWI522802B (zh) 確保微處理器之快取記憶體層級之資料一致性的裝置與方法
US9208091B2 (en) Coherent attached processor proxy having hybrid directory
US20140181417A1 (en) Cache coherency using die-stacked memory device with logic die
CN103729306B (zh) 高速缓存块无效的方法和数据处理设备
US20110173392A1 (en) Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
JP5100176B2 (ja) マルチプロセッサシステム
CN111615687B (zh) 使用高速缓存一致性协议数据来解耦跟踪数据流
US20140250275A1 (en) Selection of post-request action based on combined response and input from the request source
US20150082001A1 (en) Techniques for supporting for demand paging
JP5499987B2 (ja) 共有キャッシュメモリ装置
US6446241B1 (en) Automated method for testing cache
CN110291507A (zh) 用于提供对存储器系统的加速访问的方法和装置
TWI407306B (zh) 快取記憶體系統及其存取方法與電腦程式產品
US11899607B2 (en) Sending a request to agents coupled to an interconnect
US20220107897A1 (en) Cache probe transaction filtering
JP2010128698A (ja) マルチプロセッサシステム
TW202230127A (zh) 監測獨占指令
US9436613B2 (en) Central processing unit, method for controlling central processing unit, and information processing apparatus
TWI417725B (zh) 微處理器、微處理器之資料快取存取方法與電腦程式產品
US11940914B2 (en) Performance aware partial cache collapse
US20240184697A1 (en) Data storage in non-inclusive cache
JP4974638B2 (ja) シミュレーション装置及びシミュレーション方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Pudong New Area, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.