CN104756070A - 存储回放政策 - Google Patents

存储回放政策 Download PDF

Info

Publication number
CN104756070A
CN104756070A CN201380057123.2A CN201380057123A CN104756070A CN 104756070 A CN104756070 A CN 104756070A CN 201380057123 A CN201380057123 A CN 201380057123A CN 104756070 A CN104756070 A CN 104756070A
Authority
CN
China
Prior art keywords
playback
instruction
storage instruction
state
storage
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
CN201380057123.2A
Other languages
English (en)
Other versions
CN104756070B (zh
Inventor
D·A·卡普兰
J·鲁普利
T·纳克拉
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN104756070A publication Critical patent/CN104756070A/zh
Application granted granted Critical
Publication of CN104756070B publication Critical patent/CN104756070B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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

Landscapes

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

Abstract

本发明提供一种用于执行可高速缓冲存储的方法。所述方法包括基于所述高速缓存线的状态和所述存储指令的执行阶段确定是否回放存储指令以重新获取一个或多个高速缓存线(130)。响应于确定回放所述存储指令,回放所述存储指令。本发明提供一种包括存储队列(SQ)(135)的设备,所述存储队列可被配置来基于所述高速缓存线的状态和所述存储指令的执行阶段确定是否回放存储指令以重新获取一个或多个高速缓存线。本发明提供用于调适制作设施以制造所述设备的计算机可读存储装置。

Description

存储回放政策
发明背景
技术领域
本文提出的实施方案大体上涉及计算系统和处理装置,且更特定来说,涉及一种用于在处理装置中实施可高速缓冲存储回放政策的方法和设备。
相关技术描述
执行指令和过程数据的电气电路和装置已变得越来越快且越来越复杂。随着对现代数据处理器架构的性能需求和低功率需求递增(例如,多核处理器),提交(即,写入)新数据(即,可高速缓冲存储)到数据高速缓存已变得越来越复杂。设计能够有效地提交新数据的处理器同时避免问题情况(包括争用状态和活锁状态)以及功率消耗事件(诸如由不同处理器内核重复地获取高速缓存线)尤其成问题。
在一些先前解决方案中,仅在等待可高速缓冲存储变成系统中的最旧可高速缓冲存储之后,尝试高速缓存线的获取和可高速缓冲存储的提交。在其它情况下,在可高速缓冲存储撤销之后尝试高速缓存线的获取和可高速缓冲存储的提交,且计数器经实施使得在一定次数的尝试之后,仅在所述可高速缓冲存储变成系统中的最旧可高速缓冲存储之后,才进行获取和可高速缓冲存储提交的进一步尝试。然而,这些先前解决方案遭遇不良性能和低效的功率利用。
本文提出的实施方案消除或减轻上文所描述的技术现状中固有的问题。
实施方案概述
在一些实施方案中,提供一种方法。.所述方法包括执行可高速缓冲存储。所述方法的一些实施方案包括基于由所述高速缓存线的状态指示的存储指令状态和所述存储指令的执行阶段确定是否回放存储指令以重新获取一个或多个高速缓存线。响应于确定回放所述存储指令,回放所述存储指令。提供一种包括存储队列(SQ)的设备,所述存储队列可被配置来基于由所述高速缓存线的状态指示的存储指令状态和所述存储指令的执行阶段确定是否回放存储指令以重新获取一个或多个高速缓存线。本发明提供用于调适制作设施以制造所述设备的计算机可读存储装置。
附图简述
通过参考结合附图进行的下文描述,可以理解本文的实施方案,其中参考数字中的最左边有效位标示各自参考数字出现的第一图,且其中:
图1示意地示出根据一些实施方案的计算机系统的简化方框图;
图2示出根据一些实施方案的包括中央处理单元(CPU)和存储队列(SQ)电路的电路的简化方框图;
图3提供根据一些实施方案的包括如图2中所示的一个或多个电路的硅裸片/芯片的表示;
图4提供根据一些实施方案的包括可以在制作设施中生产的一个或多个硅裸片/芯片的硅晶片的表示;
图5示出根据一些实施方案的在计算机处理器的背景下图2的存储队列(SQ)电路的简化方框图;
图6示出根据一些实施方案的可高速缓冲存储的执行的简化时间线;
图7示出根据一些实施方案的流程图,其描绘根据回放政策执行可高速缓冲存储;和
图8概念地示出可以在图5中所示的存储队列中实施的状态机的实例。
虽然本文的实施方案具有各种修改和替代形式,但其具体实施方案已在附图中通过实例来示出且在本文予以详述。然而,应了解,具体实施方案的本文描述并非意在将所公开实施方案限于所公开特定形式,但相反,意在涵盖落在如由所附权利要求书界定的所公开实施方案范围内的所有修改、等效物和替代物。
详述
下文描述本申请的说明性实施方案。为了清楚起见,本说明书中未描述实际实施方式的所有特征。当然,应明白,在任何这种实际实施方案的开发中,可以作出诸多实施方式专属决定以达成开发者的具体目标,诸如与系统相关和/或业务相关约束兼容,其可从一个实施方式变化到另一个实施方式。此外,应明白,这种开发工作可以是复杂而耗时的,但虽然如此,仍可能是获益于本公开的本领域一般技术人员的例行任务。
现将参考附图描述本申请的实施方案。各种结构、连接、系统和装置出于解释目的而在附图中予以示意地描绘,且以免使所公开主题与本领域的技术人员熟知的详情混淆。然而,附图经包含以描述和解释本发明实施方案的说明性实例。本文所使用的字词和片语应被理解和解译为具有与相关领域的技术人员对所述字词和片语的理解一致的含义。术语或片语的特殊定义,即,不同于如本领域的技术人员理解的普通和习惯含义的定义,并非意在由本文的术语或片语的一致使用暗示。就术语或片语意在具有特殊含义即除本领域的技术人员所理解外的含义来说,在本说明书中依直接而明确地提供术语或片语的特殊定义的下定义方式清楚地陈述这种特殊定义。
如本文所使用,术语“实质上”和“近似”可以意指在85%、90%、95%、98%和/或99%内。在一些情况下,如本领域的一般技术人员应了解,术语“实质上”和“近似”可以指示差异(在可察觉时)可以忽略不计或足够小以致被忽略。此外,在一个值近似等于另一值的背景下使用时的术语“近似”可以意指所述值“约”等于彼此。例如,在测量时,所述值可以足够接近以致被本领域的一般技术人员确定为相等。
如本文所论述,数据可以“维持”、“保存”、“保持”和/或“存储”在各种数据存储结构中,包含但不限于队列、存储器、高速缓存、缓冲器、寄存器、触发器等。在本文中可以同义地和互换地使用术语“维持”、“保存”、“保持”和/或“存储”。
如本文所论述,“可高速缓冲存储”可以是将存储在处理装置(例如,单核微处理器和多核微处理器(CPU)和图形处理器(GPU)或其各自个别处理内核)的高速缓存(例如,L1数据高速缓存或L2数据高速缓存,但不限于此)中的一组或多组数据或数据元。如本文所论述,“可高速缓冲存储”可以提交或写入到将存储其的高速缓存。如本文所描述,“可高速缓冲存储”可以被执行一次或多次以在高速缓存中完成其存储。获取可高速缓冲存储的高速缓存线的后续执行可以被称为“回放”或“重新执行”。可高速缓冲存储的执行还可以被称为“拾取”,在所述执行期间通过CPU的执行管线等挑选和处理所述可高速缓冲存储,如获益于本公开的本领域一般技术人员应明白。
本文提出的实施方案大体上涉及一种用于在处理装置中实施可高速缓冲存储回放政策的方法和设备。如上文所述,处理装置(例如,单核微处理器和多核微处理器(CPU)和图形处理器(GPU)或其各自个别处理内核)可以执行可高速缓冲存储以便将新数据写入到高速缓存。为了这样做,可高速缓冲存储可能需要其高速缓存线存在于高速缓存(例如,数据高速缓存)中且处于可写入状态。然而,在可高速缓冲存储尝试通过将新数据写入到高速缓存中来提交在所述可高速缓冲存储开始执行时存在的高速缓存线时,所述高速缓存线可能不在所述高速缓存中。例如,在可高速缓冲存储的执行期间,可以由系统中的其它CPU、其它CPU内核和/或其它装置从高速缓存探测可高速缓冲存储的高速缓存线。为了将数据写入到高速缓存,可高速缓冲存储可能需要重新获取高速缓存线—这被称为进行回放。在可高速缓冲存储的初始执行或回放期间,所述可高速缓冲存储可以保持在存储队列(SQ)中,其中可以追踪所述可高速缓冲存储的各种状态和/或属性,诸如其数据、其存储器地址、执行或回放结果等。此外,可以根据一个或多个回放政策进行可高速缓冲存储的回放,如本文更详细论述。
本文所描述的实施方案允许通过根据使针对系统争用因素的高速缓存线的早期获取平衡的回放政策进行执行和回放来有效地执行和回放可高速缓冲存储。在一些实施方案中,具体回放政策有关于或取决于可高速缓冲存储的执行的各个阶段。在一些实施方案中,所述系统基于所述高速缓存线的状态和所述存储的执行阶段确定是否回放存储以重新获取所述存储的至少一个高速缓存线。例如,所述系统可以取决于所述存储已完成、已撤销或变成存储队列中的最旧存储决定是否回放存储。所述系统还可以基于所述存储的至少一个先前回放的至少一个结果回放所述存储。例如,在回放将高速缓存线的状态变更为更接近于允许提交存储的可写入状态的状态时,可以将所述回放特性化为“良好回放”。在回放未将高速缓存线的状态变更为更接近于可写入状态的状态时,可以将所述回放特性化为“不良回放”。可以回放存储直到其具有可配置数量的良好回放为止。或者,可以根据需要经常回放存储,例如,直到高速缓存线处于可写入状态为止。然而,其它政策可以替代地用于确定是否回放存储。
现参考图1,示出根据一些实施方案的计算机系统100的方框图。在各个实施方案中,计算机系统100可以是个人计算机、膝上型计算机、手持型计算机、平板型计算机、移动装置、电话、个人数据助理(“PDA”)、服务器、主机、工作终端机、音乐播放器、智能电视机等,所有上述装置可以被通称为处理装置。计算机系统100包括主要结构110,其可以是计算机主板、电路板或印刷电路板、桌上型计算机外壳和/或塔、膝上型计算机底座、服务器外壳、移动装置的部分、个人数据助理(PDA)等。在一些实施方案中,主要结构110包括图形卡120。图形卡120可以是来自Advanced Micro Devices(“AMD”)的RadeonTM图形卡或使用存储器的任何其它图形卡。图形卡120可以连接在外围组件互连“(PCI”)总线(未示出)、PCI-Express总线(未示出)、加速图形端口(“AGP”)总线(也未示出)或任何其它计算机系统连接上。应注意,本申请的实施方案不限于图形卡120连接到主要计算机结构110。在一些实施方案中,计算机系统100运行操作系统,诸如Mac等。在一个或多个实施方案中,计算机系统100可以包括被调适来存储由计算机系统100在各种操作期间使用的值的一个或多个系统寄存器(未示出)。
在一些实施方案中,图形卡120包括处理装置,诸如用于处理图形数据的图形处理单元(GPU)125。GPU 125可以包括一个或多个嵌入式/非嵌入式存储器,诸如一个或多个高速缓存130。GPU高速缓存130可以是L1、L2、更高级、图形专属/相关指令、数据等。在各个实施方案中,嵌入式存储器可以是嵌入式随机访问存储器(“RAM”)、嵌入式静态随机访问存储器(“SRAM”)或嵌入式动态随机访问存储器(“DRAM”)。在一些实施方案中,存储器除嵌入GPU 125中外或替代嵌入GPU 125中,还可以在图形卡120上,例如如图1中所示DRAM155在图形卡120上。在各个实施方案中,图形卡120可以被称为电路板或印刷电路板或子卡等。
在一些实施方案中,计算机系统100包括处理装置,诸如可以连接到北桥145的中央处理单元(“CPU”)140。在各个实施方案中,CPU 140可以是单核或多核处理器,或可以是单裸片/芯片(诸如AMDFusionTMAPU装置)上的一个或多个CPU内核和GPU内核的组合。CPU140可以是x86类型架构、RISC类型架构等。在一些实施方案中,CPU140包括一个或多个高速缓存130,诸如但不限于L1、L2、第3级或更高级、数据、指令和/或其它高速缓存类型。在一些实施方案中,CPU 140是管线式处理器。CPU 140和北桥145可以容置在计算机系统100的主板(未示出)或一些其它结构上。预想在一些实施方案中,图形卡120经由北桥145或一些其它计算机系统连接耦接到CPU 140。例如,CPU 140、北桥145、GPU 125可以包括在单封装件中或作为单裸片或“芯片”(未示出)的部分或作为封装件的组合。还预想改变被示出为主要结构110的形成部分的各种组件的配置的一些实施方案。在一些实施方案中,北桥145可以耦接到系统RAM(或DRAM)155;在一些实施方案中,系统RAM 155可以直接耦接到CPU 140。系统RAM155可以是本领域中已知的任何RAM类型且可以包括一个或多个存储器模块;RAM 155的类型不限制本申请的实施方案。例如,RAM 155可以包括一个或多个DIMM。如本发明描述中所提及,存储器可以是本文所提及的RAM、高速缓存或任何其它数据存储结构的类型。
在一些实施方案中,北桥145连接到南桥150。在一些实施方案中,北桥145和南桥150在计算机系统100中的相同芯片上。在一些实施方案中,北桥145和南桥150在不同芯片上。在一些实施方案中,除在计算机系统100别处具有任何其它I/O接口131外,南桥150也具有一个或多个I/O接口131。在各个实施方案中,南桥150可以使用数据连接或总线199连接到一个或多个数据存储单元160。数据存储单元160可以是用于存储数据的硬盘驱动器、固态驱动器、磁带或任何其它可写入介质。在一些实施方案中,所述数据存储单元中的一个或多个是USB存储单元且数据连接199是USB总线/连接。此外,数据存储单元160可以包括一个或多个I/O接口131。在各个实施方案中,中央处理单元140、北桥145、南桥150、图形处理单元125、DRAM 155和/或嵌入式RAM可以是计算机芯片或基于硅的计算机芯片,或可以是计算机芯片或基于硅的计算机芯片的部分。在一个或多个实施方案中,计算机系统100的各个组件可以与总线195或一个以上总线195操作上、电气地和/或物理地连接或相连。
在一些实施方案中,计算机系统100可以包括存储队列(SQ)电路135。在一些实施方案中,SQ电路135包括被调适或配置来提供用于在计算机系统100、CPU 140、GPU 125和/或其各自内核中执行和回放可高速缓冲存储的功能的存储队列(SQ)和相关组件。在一些实施方案中,被调适来提供确定和进行执行和回放的功能的组件驻留在其它系统区块(例如,撤销单元、重新排序缓冲器(ROB)单元、错失地址缓冲器(MAB)、转换后备缓冲器(TLB)、加载-存储(LS)单元、地址生成单元(AGU)等)中,或驻留在SQ电路135和其它系统区块的组合中。下文在图5中更详细论述SQ电路135的组件。SQ电路135可以包括硅裸片/芯片且包括软件、硬件和/或固件组件。在一些实施方案中,SQ电路135封装成硅裸片封装件或电子组件封装件。在一些实施方案中,SQ电路135是包括在现存计算机组件中的电路,诸如但不限于CPU 140、北桥145、图形卡120和/或GPU 125(或这些组件的任何各自内核)。在一些实施方案中,SQ电路135通信地耦接到CPU 140、GPU 125、北桥145、RAM/DRAM 155和/或其各自连接195。如本文所使用,术语“SQ电路”或“SQ”(例如,SQ电路135)可以用于指代物理SQ芯片、或包括在计算机组件中的SQ电路、SQ电路135中的电路、或由SQ实施的功能。SQ电路135可以用作和/或被称为处理器装置的一部分。在一些实施方案中,GPU 125、CPU 140、SQ电路135和/或分别与其相关联的任何硬件/软件计算机100单元的一些组合可以共同地用作和/或被统称为处理装置。在一些实施方案中,CPU 140和SQ电路135、GPU 125和SQ电路135、或CPU 140、北桥145和SQ电路135、和其各自互连件可以用作处理装置。
在一些实施方案中,计算机系统100连接到一个或多个显示单元170、输入装置180、输出装置185和/或其它外围装置190。预想在各个实施方案中,在不影响本申请的实施方案的范围的情况下,这些元件可以在计算机系统100内部或外部,且可以有线地或无线地连接。显示单元170可以是内部或外部监控器、电视屏幕、手持型装置显示器等输入装置180可以是键盘、鼠标、轨迹球、光笔、鼠标垫、鼠标按钮、操作杆、扫描仪等中的任一个。输出装置185可以是监控器、打印机、绘图机、复印机或其它输出装置中的任一个。外围装置190可以是可耦接到计算机的任何其它装置:能够读取和/或写入到对应物理数字介质的CD/DVD驱动器、通用串行总线(“USB”)装置、非易失性存储器、Zip驱动器、外部软盘驱动器、外部硬盘驱动器、电话和/或宽带调制解调器、路由器/网关、接入点等。在一些实施方案中,本文所描述的输入、输出、显示和/或外围装置/单元可以具有USB连接。就本文未描述计算机系统100的某些示例性方面来说,在不限制本申请的实施方案的精神和范围的情况下,在各个实施方案中可以包括或可以不包括这些示例性方面,如本领域的技术人员应了解。
现转向图2,示出根据一些实施方案的示例性SQ电路135、CPU140和/或北桥145的方框图。在一些实施方案中,SQ电路135、CPU140和/或北桥145包括一个或多个高速缓存130。在一些实施方案中,SQ电路135、CPU 140和/或北桥145包括L1、L2或其它级高速缓存130。就本文未描述SQ电路135、CPU 140和/或北桥145和/或一个或多个高速缓存130的某些示例性方面来说,在不限制本申请的实施方案的范围的情况下,在各个实施方案中可以包括或可以不包括这些示例性方面,如本领域的技术人员应了解。
现转向图3,在一些实施方案中,SQ电路135、CPU 140和/或北桥145和高速缓存130可以驻留在硅芯片/裸片340上和/或驻留在计算机系统100组件中,诸如图1中所描绘的组件。硅芯片340可以容置在计算机系统100的主板(例如,110)或其它结构上。在一些实施方案中,在每个硅芯片/裸片340上可以存在一个以上SQ电路135、CPU 140和/或北桥145和/或高速缓存130。如上文所论述,SQ电路135、CPU 140和/或北桥145的各个实施方案可以用于各种各样的电子装置。
现转向图4,根据一些实施方案且如上文所描述,在硅裸片/芯片340(或计算机芯片)上可以包括SQ电路135、CPU 140和/或北桥145中的一个或多个。硅裸片/芯片340可以包括SQ电路135、CPU140和/或北桥145的一个或多个不同配置。可以在制作设施(或“工厂”)390中在硅晶片330上生产硅芯片340。即,硅晶片330和硅裸片/芯片340可以被称为工厂390的产物或产品。在本公开中,硅裸片/芯片340可以用于电子装置,诸如上文所描述的电子装置。
现转向图5,示出根据一些实施方案的SQ电路135和所附电路的图形表示。在各个实施方案中,所附电路(例如,存储队列(SQ)410、选择单元430、回放单元440、仲裁单元475等以及其各自互连件)可以被包括作为SQ电路135的部分且被称为SQ电路135的部分。在一些实施方案中,SQ电路135可以是CPU 140、GPU 125和/或其各自内核的部分。SQ电路135可以通信地耦接到高速缓存130(例如,L1数据高速缓存和/或和L2数据高速缓存)、TLB 485和重新排序缓冲器495(ROB)。本文未详述与可高速缓冲存储的执行相关的高速缓存130、TLB 485和ROB 495以及额外CPU 140和/或GPU 125组件(未示出),但其通常为获益于本公开的本领域的一般技术人员所理解。
在一些实施方案中,SQ电路135可以包括存储队列(SQ)410。SQ 410可以包括被配置来在一个或多个可高速缓冲存储的执行期间保存或维持所述可高速缓冲存储的一个或多个入口413a-n。SQ 410可以依某种方式耦接到选择单元430,使得入口413a-n可以各自分别连接到选择单元430的输入端,且响应于从仲裁单元475接收的输入信号,可以进行由选择单元430进行的控制和选择。每个SQ入口413a-n可以包括一个或多个状态单元415a-n、一个或多个阶段单元420a-n、一个或多个回放结果单元423a-n和一个或多个回放政策单元425a-n。如图5中所示,状态单元415a-n、阶段单元420a-n和回放结果单元423a-n可以连接到各自回放政策单元425a-n,且可以被配置来将其各自数据提供到各自回放政策单元。
状态单元415可以被配置来维持与可高速缓冲存储相关联的当前和/或过往状态数据。在一些实施方案中,由可高速缓冲存储意在写入的高速缓存线(或多个高速缓存线)的状态确定所述存储的状态。例如,所述状态可以指示高速缓存线可写入、被填充或未知且因此可能需要回放对应可高速缓冲存储。在可写入状态下,可高速缓冲存储的高速缓存线依可写入状态存在于L1数据高速缓存中。在填充未决状态下,所述存储的高速缓存线当前未依可写入状态存在,但所述高速缓存线处于获取的过程中。例如,可高速缓冲存储的高速缓存线可以不依可写入状态存在于或位于高速缓存130中,但错失地址缓冲器(MAB)499可能已经分配以获取所述高速缓存线。在未知状态下,所述存储的高速缓存线当前未依可写入状态存在且未被主动获取,这可能是因为可高速缓冲存储未知高速缓存线可写入。例如,可高速缓冲存储的高速缓存线可以不依可写入状态存在于或位于高速缓存130中,且错失地址缓冲器(MAB)499可能未经分配以获取高速缓存线。在这种状态下,可能需要回放可高速缓冲存储。所述状态可以基于回放或探测424来更新。根据一些实施方案,所示状态415可以实施用于确定可高速缓冲存储的状态的状态机。
图8概念地示出可以在图5中所示的状态单元415中实施的状态机700的实例。状态机700包括可写入状态705、未决状态710和回放状态715。响应于与可高速缓冲存储相关联的高速缓存线的探测,处于可写入状态705的可高速缓冲存储可以转换(在720处)到回放状态715。响应于与可高速缓冲存储相关联的高速缓存线的成功填充,处于未决状态710的可高速缓冲存储可以转换(在725处)到可写入状态705。响应于不返回可写入高速缓存线的填充返回,处于填充未决状态710的可高速缓冲存储可以转换(在730处)到回放状态715。处于回放状态715的可高速缓冲存储可以取决于可高速缓冲存储的回放结果转换(在735、740或745处)到可写入状态705、未决状态710或回放状态715。致使从回放状态715转换(在735或740处)到可写入状态705或未决状态710的回放可以被称为“良好回放”,这是因为所述回放将可高速缓冲存储置于比其先前状态更佳的状态(例如,所述可高速缓冲存储可以接近于被提交)。“不良回放”未将可高速缓冲存储置于比其先前状态更佳的状态(例如,所述可高速缓冲存储可以不接近于被提交)。如果所述回放导致“不良回放”,那么在可高速缓冲存储上可能需要和/或进行后续回放。
重新参考图5,阶段单元420可以被配置来维持与可高速缓冲存储相关联的当前执行阶段。下文参照图6更详细论述与可高速缓冲存储的执行相关联的不同阶段。回放结果单元423可以被配置来维持与可高速缓冲存储的执行相关联的一个或多个回放结果,如上文示例性地描述。在回放期间和/或回放完成之后,状态单元415、阶段单元420和回放结果单元423中的数据可以根据与可高速缓冲存储的执行相关的回放结果和/或其它信息来更新。更新的数据可以例如通过SQ电路135的元件、TLB 485、高速缓存130、加载-存储单元(例如,LS/AGU 498)或处理器(例如,CPU 140/GPU 125/内核)或系统(例如,计算机系统100)中的任何其它适当元件传输到SQ 410。
仍参考图5且在一个或多个实施方案中,回放政策单元425可以被配置来存储用于进行可高速缓冲存储的回放或重新执行的回放政策。来自状态单元415a-n、阶段单元420a-n和回放结果单元423a-n的数据可以提供到各自回放政策单元425a-n,其中所述数据可以被回放政策单元425a-n用于根据本文所描述的回放政策确定与给出入口413相关联的可高速缓冲存储是否有资格回放或重新执行。如果确定可高速缓冲存储有资格回放,那么回放政策单元425可以将指示这个确定的信号输出到选择单元430,且可以使用选择单元430选择与作出所述确定的入口413相关联的可高速缓冲存储。
应了解,可以由一个或多个SQ入口413a-n利用单个回放政策单元425a(被配置来实施一个或多个可高速缓冲存储回放政策)。即,一个或多个入口413a-n可以各自具有其自身回放政策单元425a,或可以与一个或多个其它入口413a-n共享回放政策单元425a。还预想,多个回放政策单元425a-n可以同时实施一个或多个不同回放政策。在一个或多个实施方案中,一个或多个实施的回放政策可以供系统软件选择,可以硬接线到回放政策单元425a-n中,或可以依其它方式实施,如获益于本公开的本领域的一般技术人员应了解。根据各个实施方案,一个或多个回放政策可以根据设计和/或操作考虑、在系统启动时、动态地或在其它适当时间变更。
根据一个或多个实施方案,SQ 410可以被配置来维持失准可高速缓冲存储(即,跨越高速缓存线边界的可高速缓冲存储)。在这种情况下,SQ 410可以包括复制入口413a2-n2(未示出),其与每个入口413a-n分组在一起以有效地使每个入口413的存储容量加倍(例如,对于失准可高速缓冲存储的每一半,分别是入口413a和入口413a2。失准可高速缓冲存储的执行可以依如本文参照对准(正常)可高速缓冲存储所描述的相称方式形成。应注意,失准可高速缓冲存储的每一半可以一起、独立地、实质上平行地或依重叠方式执行和/或回放。相似地,每一半的提交可以同期地、同时地或依非重叠间隔或循环进行。
选择单元430可以是或包括具有一个或多个可选择输入的多路复用器,或可以是被配置来基于选择信号从SQ 410选择输入的电路。在一些实施方案中,选择信号可以通过仲裁单元475提供到选择单元430。仲裁单元475可以基于一个或多个仲裁算法提供选择信号,包括但不限于公平算法(例如,循环仲裁)、基于年限的仲裁或实施方式专属算法。在一些实施方案中,一个或多个仲裁算法可以供系统软件选择,可以硬接线到仲裁单元475中,或可以依其它方式实施,如获益于本公开的本领域的一般技术人员应了解。根据各个实施方案,一个或多个仲裁算法可以根据设计和/或操作考虑、在系统启动时、动态地或在其它适当时间变更。
回放逻辑单元440可以配置有用于进行和/或促进可高速缓冲存储的执行和/或回放的逻辑。在各个实施方案中,这可以根据本文所描述的一个或多个回放政策进行。回放逻辑单元440可以从选择单元430接收输入(例如,将执行和/或回放的可高速缓冲存储)。回放逻辑单元440还可以被配置来与高速缓存130、MAB 499和/或ROB 495(如下文将更详细论述)以及处理器(例如,CPU 140/GPU 125/内核)或系统(例如,计算机系统100)中的其它适当元件通信。
现转向图6,示出如一个或多个实施方案中的可高速缓冲存储的执行的简化时间线。可高速缓冲存储的执行可以包括一个或多个阶段。阶段可以是所述执行的部分,其可以由所述执行期间的不同事件来界定。虽然不限于此,但现根据一个实施方案描述按阶段的示例性执行。在可高速缓冲存储首先调度到加载-存储单元(例如,LS/AGU498)时,可高速缓冲存储的执行可以开始于阶段一510。在阶段一510期间,可高速缓冲存储可以等待例如将由地址生成单元(AGU)(未示出)生成的其线性地址。阶段二520可以在可高速缓冲存储具有地址之后开始且可以持续到可高速缓冲存储将完成信号发到ROB 495为止。在阶段二520期间,可高速缓冲存储可具有其“初始拾取”,此时可高速缓冲存储确定是否存在其相关联高速缓存线。阶段三530可以在TLB 485查找完成之后开始且可以持续到ROB 495指示可高速缓冲存储已撤销为止。在阶段三530期间,可高速缓冲存储仍可以被视为是推测的。阶段四540可以在可高速缓冲存储撤销时与可高速缓冲存储变成系统中的绝对最旧可高速缓冲存储时之间发生。如上文所描述,SQ 410可以被配置来保存或维持诸多可高速缓冲存储处于这个撤销后状态(例如,在阶段四540开始之后),且出于架构原因,可能需要按序提交可高速缓冲存储。为此,在阶段四540期间,可高速缓冲存储可以继续等待直到其成为系统中的最旧可高速缓冲存储为止。预想如果系统中不存在更旧可高速缓冲存储,那么可高速缓冲存储可以直接从阶段三530跳转到阶段五550。阶段五550可以在可高速缓冲存储成为最旧可高速缓冲存储之后开始,且可以持续到可高速缓冲存储提交(将数据写入到高速缓存)为止,此时可以将可高速缓冲存储从SQ 410删除。
应注意,图6中所描绘的时间线不一定按比例绘制且执行或回放的不同阶段可以短于或长于所示阶段。然而,在一些实施方案中,所述阶段的相对持续时间可以近似等于图6中所示的持续时间。此外,根据处理器的架构规则和要求,可以跳过或重复不同执行阶段。
现转向图7,示出示例性流程图600,其描绘一些实施方案中的可高速缓冲存储的执行和回放。如图7中所示,可高速缓冲存储的执行和回放可以根据本文所描述的实施方案和回放政策进行。此外,如上文所述,获益于本公开的本领域的一般技术人员应认识到,本文所描述的流程和实施方案还可以经修改以容纳失准可高速缓冲存储。
在602处,可以在处理装置中接收可高速缓冲存储以供执行。可以在图5中所描述的SQ 410处和/或在进行可高速缓冲存储的执行所必需的处理装置的其它元件处接收所述可高速缓冲存储。在一些实施方案中,在可高速缓冲存储的执行期间,SQ 410可以通过处理装置或处理装置执行管线保存或维持所述可高速缓冲存储。在605处,可以开始可高速缓冲存储的执行,且所述流程可以进入610,其中所述可高速缓冲存储可以调度到加载-存储单元(例如,LS/AGU单元498),其中在615处可以由地址生成单元(例如,LS/AGU单元498)生成可高速缓冲存储的线性地址。所述流程可以进入620,其中由例如SQ 410接收线性地址。在625处,TLB可以确定TLB入口是否存在可高速缓冲存储的线性地址。在630处完成TLB查找之后,所述执行流程可以进入635,其中ROB(例如,ROB 495)可以指示可高速缓冲存储已撤销。或者,所述流程可以从630进入675a,其中一个或多个回放可以根据本文所描述的各种回放政策进行。在一些实施方案中,在675a处的回放可以响应于其初始拾取(在阶段2中)是不良回放而重复,直到其已进行可配置数量的良好回放为止。例如,在这个阶段中,所述存储可以回放直到其已进行一个良好回放为止。在进行一个良好回放之后,所述存储可能不被允许再次回放直到其被撤销为止。
所述流程可以从675a进入635以撤销可高速缓冲存储。
所述流程可以从635进入640,其中可高速缓冲存储继续等待直到其成为系统中的最旧可高速缓冲存储为止。或者,所述流程可以从635进入675b,其中可以进行一个或多个回放。在一些实施方案中,在675b处的回放可以重复直到其已进行可配置数量的良好回放为止,而不管在所述存储撤销之前尝试的回放的任何回放结果是什么。例如,在这个阶段中,所述存储可以回放直到其已进行一个良好回放为止。在进行一个良好回放之后,所述存储可能不被允许再次回放直到所述存储成为存储队列中的最旧存储为止。
所述流程可以从675b进入640,其中可高速缓冲存储继续等待直到其成为系统中的最旧可高速缓冲存储为止。
在可高速缓冲存储成为最旧可高速缓冲存储时,所述流程可以从640进入645,其中将与所述可高速缓冲存储相关联的数据提交或写入到高速缓存(例如,高速缓存130)。或者,所述流程可以从640进入675c,其中可以进行一个或多个回放。在一些实施方案中,根据需要经常重复在675c处的回放,例如,直到高速缓存线处于可写入状态为止。所述流程可以从675c进入645,其中将与所述可高速缓冲存储相关联的数据提交或写入到高速缓存。应注意,如果不存在其它可高速缓冲存储,那么所述流程可以从635进入645,而(在640处)所述可高速缓冲存储无需等待变成最旧可高速缓冲存储。还预想,如上文所描述,在跳过640时,所述流程可以在继续645之前进入675d。在675d处,一个或多个回放可以根据本文所描述的各种回放政策或其它回放政策进行。在675c处的回放可以根据回放政策所要求重复。在数据已提交到高速缓存之后,所述流程可以从645进入650,其中将可高速缓冲存储从SQ(例如,SQ 410)删除。
在一些实施方案中,可以使用存储的信息(诸如存储队列中的位或寄存器)来配置回放政策的方面。例如,在回放675a-d期间允许的可配置数量的回放可以存储在一或多个位或寄存器中。对于回放675a-d中的每个,可配置数量的回放可以相同,或对于一个或多个回放675a-d,可配置数量的回放可以不同。所述位或寄存器可以使对软件可见使得其可被所述软件读取或修改。获益于本公开的本领域的一般技术人员还应明白,本文所描述的回放675a-d意在作为实例。替代实施方案可以使用其它回放政策以基于由一个或多个高速缓存线的状态指示的存储的状态和所述存储的执行阶段确定是否回放存储指令。
预想如图7中所示的元件可以不限于上文描述其的顺序。根据一些实施方案,在不背离本文提出的实施方案的精神和范围的情况下,图7中所示的元件可以循序地、平行地或依交替顺序进行。还预想所述流程图可以根据本文提出的一个或多个实施方案全部地、部分地进行。即,图中所示的流程图无需进行一个或多个实施方案中所描述的每个元件。图7中所示的方法的一些实施方案可以在硬件、固件、软件或其组合中实施。暂时性或非暂时性计算机可读介质可以用于存储在被执行时可配置处理系统以实施或执行本文所描述的方法的一些实施方案的指令。例如,表示本文所描述的方法的一些实施方案的经编码指令可以存储在非暂时性计算机可读存储装置上,例如,数据存储单元、RAM(包含嵌入式RAM、SRAM或DRAM)、高速缓存、光盘、DVD、固态存储装置或其它存储介质。
此外,还预想在一些实施方案中,不同种类的硬件描述性语言(HDL)可以用于设计和制造超大型集成电路(VLSI电路)(诸如半导体产品和装置和/或其它类型半导体装置)的过程。HDL的一些实例是VHDL和Verilog/Verilog-XL,但可以使用其它未列HDL格式。在一个实施方案中,HDL代码(例如,寄存器传送级(RTL)代码/数据)可以用于生成GDS数据、GDSII数据等。GDSII数据例如是描述性文件格式且可以在不同实施方案中用于表示半导体产品或装置的三维模型。这些模型可以被半导体制造设施用于构造半导体产品和/或装置。GDSII数据可以存储为数据库或其它程序存储结构。这个数据还可以存储在计算机可读存储装置上(例如,数据存储单元160、RAM 155(包括嵌入式RAM、SRAM和/或DRAM)、高速缓存130、光盘、DVD、固态存储装置等)。在一些实施方案中,GDSII数据(或其它相似数据)可以被调适来配置制造设施(例如,通过使用掩膜作品)以构造能够体现本文(在本申请中)所描述的各个方面的装置。换句话说,在各个实施方案中,这个GDSII数据(或其它相似数据)可以编程到计算机、处理器或控制器中,其接着可以全部地或部分地控制半导体制造设施(或工厂)的操作以构造半导体产品和装置。例如,在一个实施方案中,可以使用GDSII数据(或其它相似数据)来构造包括一个或多个CPU 140、GPU 125、SQ电路135、硬件状态机和/或算法(未示出)、高速缓存130等的硅晶片。
还应注意,虽然可以关于SQ电路相关联的各种处理器或可高速缓冲存储回放描述各个实施方案,但预想本文所描述的实施方案可以广泛适用于例如包括处理装置的各种装置,如获益于本公开的本领域的技术人员应明白。
上文所公开的特定实施方案仅是说明性的,这是因为本文的实施方案可以依获益于本发明教学内容的本领域的技术人员所明白的不同但等效的方式进行修改和实践。此外,并非意在对如本文所示的结构或设计的详情进行限制(如下文权利要求书中所描述的除外)。因此,显然可以更改或修改所公开实施方案且应认为所有这些变动在所公开实施方案的范围内。
因此,本文所寻求的保护正如下文权利要求书中所陈述般。

Claims (15)

1.一种方法,其包括:
基于由至少一个高速缓存线的状态指示的存储指令的状态和所述存储指令的执行阶段确定是否回放所述存储指令以重新获取所述至少一个高速缓存线;和
响应于确定回放所述存储指令,回放所述存储指令。
2.根据权利要求1所述的方法,其中确定是否回放所述存储指令包括基于所述存储指令的至少一个先前回放的至少一个结果确定是否回放所述存储指令。
3.根据权利要求2所述的方法,其包括确定所述存储指令的所述至少一个先前回放的所述至少一个结果是修改所述至少一个高速缓存线的所述状态以更接近于允许所述存储指令提交的可写入状态的良好回放还是不修改所述至少一个高速缓存线的所述状态以免更接近于所述可写入状态的不良回放。
4.根据权利要求3所述的方法,其中确定是否回放所述存储指令包括基于在所述执行阶段期间所述存储指令的可配置数量的良好回放确定是否回放所述存储指令。
5.根据权利要求4所述的方法,其包括响应于确定所述存储指令已完成但尚未撤销且在所述存储指令完成之后所述存储指令未进行所述可配置数量的良好回放,回放所述存储指令。
6.根据权利要求5所述的方法,其包括响应于所述存储指令已撤销但所述存储指令尚不是存储队列中的最旧存储指令且自所述存储指令撤销以来所述存储指令未进行良好回放,回放所述存储指令。
7.根据权利要求6所述的方法,其包括响应于确定所述存储指令是所述存储队列中的最旧存储指令但所述存储指令尚未提交,回放所述存储指令直到所述至少一个高速缓存线处于所述可写入状态为止。
8.一种设备,其包括:
存储队列电路,其可被配置来基于由至少一个高速缓存线的状态指示的存储指令的状态和所述存储指令的执行阶段确定是否回放所述存储指令以重新获取所述至少一个高速缓存线。
9.根据权利要求8所述的设备,其中所述存储队列电路可被配置来基于所述存储指令的至少一个先前回放的至少一个结果确定是否回放所述存储指令。
10.根据权利要求9所述的设备,其中所述存储队列电路可被配置来确定所述存储指令的所述至少一个先前回放的所述至少一个结果是修改所述至少一个高速缓存线的所述状态以更接近于允许所述存储指令提交的可写入状态的良好回放还是不修改所述至少一个高速缓存线的所述状态以免更接近于所述可写入状态的不良回放。
11.根据权利要求10所述的设备,其中所述存储队列电路包括可被配置来确定所述存储指令的所述状态的状态机,且其中所述存储指令的状态包括所述可写入状态、用于所述存储指令的所述至少一个高速缓存线不存在于所述高速缓存中但存在于获取的过程中的未决状态或用于所述存储指令的所述至少一个高速缓存线既不存在于所述高速缓存中也不存在于获取的过程中的回放状态。
12.根据权利要求10所述的设备,其中所述存储队列电路可被配置来基于在所述执行阶段期间所述存储指令的可配置数量的良好回放确定是否回放所述存储指令。
13.根据权利要求12所述的设备,其包括可被配置来进行以下步骤的回放逻辑:响应于所述存储队列电路确定所述存储指令已完成但尚未撤销且在所述存储指令完成之后所述回放逻辑未进行所述存储指令的所述可配置数量的良好回放,回放所述存储指令。
14.根据权利要求13所述的设备,其中所述回放逻辑可被配置来响应于所述存储队列电路确定所述存储指令已撤销但所述存储指令尚不是所述存储队列电路中的存储队列中的最旧存储指令且自所述存储指令撤销以来所述回放逻辑未进行所述存储指令的良好回放,回放所述存储指令。
15.根据权利要求14所述的设备,其中所述回放逻辑可被配置来响应于所述存储队列电路确定所述存储指令是所述存储队列中的最旧存储指令但所述存储指令尚未提交,回放所述存储指令直到所述至少一个高速缓存线处于所述可写入状态为止。
CN201380057123.2A 2012-11-02 2013-10-31 实施可高速缓冲存储回放政策的方法和设备 Active CN104756070B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/667,095 2012-11-02
US13/667,095 US9361103B2 (en) 2012-11-02 2012-11-02 Store replay policy
PCT/US2013/067848 WO2014071059A1 (en) 2012-11-02 2013-10-31 Store replay policy

Publications (2)

Publication Number Publication Date
CN104756070A true CN104756070A (zh) 2015-07-01
CN104756070B CN104756070B (zh) 2017-11-24

Family

ID=49627054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380057123.2A Active CN104756070B (zh) 2012-11-02 2013-10-31 实施可高速缓冲存储回放政策的方法和设备

Country Status (6)

Country Link
US (1) US9361103B2 (zh)
EP (1) EP2915039B1 (zh)
JP (1) JP6196315B2 (zh)
KR (1) KR102199342B1 (zh)
CN (1) CN104756070B (zh)
WO (1) WO2014071059A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392380B2 (en) * 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6163838A (en) * 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
CN1511280A (zh) * 2000-12-21 2004-07-07 英特尔公司 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法
US20060248275A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Selecting a command to send to memory
CN101013401A (zh) * 2006-02-03 2007-08-08 国际商业机器公司 用于预取数据线的方法和处理器
US20070186049A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for instruction lines
US20080086623A1 (en) * 2006-10-10 2008-04-10 P.A. Semi, Inc. Strongly-ordered processor with early store retirement
US20120124296A1 (en) * 2010-11-17 2012-05-17 Bryant Christopher D Method and apparatus for reacquiring lines in a cache
CN102662634A (zh) * 2012-03-21 2012-09-12 杭州中天微系统有限公司 非阻塞发射和执行的存储器访问执行装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265233A (en) * 1991-05-17 1993-11-23 Sun Microsystems, Inc. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
WO1998002804A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. Load/store unit and method for non-blocking completion of loads in a superscalar microprocessor
JP3727244B2 (ja) * 2001-01-30 2005-12-14 Necエレクトロニクス株式会社 キャッシュシステムの制御回路
US6842831B2 (en) * 2002-04-25 2005-01-11 Intel Corporation Low latency buffer control system and method
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US20040163082A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Commit instruction to support transactional program execution
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US9286346B2 (en) * 2005-02-18 2016-03-15 International Business Machines Corporation Replication-only triggers
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US8782348B2 (en) * 2008-09-09 2014-07-15 Via Technologies, Inc. Microprocessor cache line evict array

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6163838A (en) * 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
CN1511280A (zh) * 2000-12-21 2004-07-07 英特尔公司 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法
US20060248275A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Selecting a command to send to memory
CN101013401A (zh) * 2006-02-03 2007-08-08 国际商业机器公司 用于预取数据线的方法和处理器
US20070186049A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for instruction lines
US20080086623A1 (en) * 2006-10-10 2008-04-10 P.A. Semi, Inc. Strongly-ordered processor with early store retirement
US20120124296A1 (en) * 2010-11-17 2012-05-17 Bryant Christopher D Method and apparatus for reacquiring lines in a cache
CN102662634A (zh) * 2012-03-21 2012-09-12 杭州中天微系统有限公司 非阻塞发射和执行的存储器访问执行装置

Also Published As

Publication number Publication date
CN104756070B (zh) 2017-11-24
WO2014071059A1 (en) 2014-05-08
EP2915039A1 (en) 2015-09-09
JP6196315B2 (ja) 2017-09-13
KR20150082239A (ko) 2015-07-15
US9361103B2 (en) 2016-06-07
KR102199342B1 (ko) 2021-01-06
EP2915039B1 (en) 2019-08-21
US20140129776A1 (en) 2014-05-08
JP2015533442A (ja) 2015-11-24

Similar Documents

Publication Publication Date Title
US9910605B2 (en) Page migration in a hybrid memory device
US20140040532A1 (en) Stacked memory device with helper processor
US9286223B2 (en) Merging demand load requests with prefetch load requests
US9262322B2 (en) Method and apparatus for storing a processor architectural state in cache memory
US20140108766A1 (en) Prefetching tablewalk address translations
US9489203B2 (en) Pre-fetching instructions using predicted branch target addresses
KR101669784B1 (ko) 메모리 대기 시간 관리
KR20150070179A (ko) 캐시 계층 내 프로세서 구조적 상태 저장 방법 및 장치
TW201800948A (zh) 提取資料至具保證完成指示快取階之處理器、方法、系統及指令
CN110574045A (zh) 用于优化后的深度网络处理的图形匹配
CN113515470B (zh) 高速缓冲存储器寻址
US20140181407A1 (en) Way preparation for accessing a cache
US20140244932A1 (en) Method and apparatus for caching and indexing victim pre-decode information
US20140310506A1 (en) Allocating store queue entries to store instructions for early store-to-load forwarding
KR20150096226A (ko) 멀티미디어 데이터 프로세싱 방법 및 그에 따른 멀티미디어 데이터 프로세싱 시스템
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
US9189417B2 (en) Speculative tablewalk promotion
US9286233B2 (en) Oldest operation translation look-aside buffer
CN104756070A (zh) 存储回放政策
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US20130159673A1 (en) Providing capacity guarantees for hardware transactional memory systems using fences
US8438335B2 (en) Probe speculative address file
CN116895305A (zh) 提供对封装存储器的细粒度访问

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