CN109564546A - 通过绕过加载存储单元来跟踪存储和加载 - Google Patents

通过绕过加载存储单元来跟踪存储和加载 Download PDF

Info

Publication number
CN109564546A
CN109564546A CN201780050033.9A CN201780050033A CN109564546A CN 109564546 A CN109564546 A CN 109564546A CN 201780050033 A CN201780050033 A CN 201780050033A CN 109564546 A CN109564546 A CN 109564546A
Authority
CN
China
Prior art keywords
load
storage
mdarn
scheduler
unit
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
CN201780050033.9A
Other languages
English (en)
Other versions
CN109564546B (zh
Inventor
贝蒂·安·麦克丹尼尔
迈克尔·D·阿亨巴赫
大卫·N·萨格斯
弗兰克·C·格洛维
卡伊·特勒斯特
克里斯南·V·拉马尼
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 CN109564546A publication Critical patent/CN109564546A/zh
Application granted granted Critical
Publication of CN109564546B publication Critical patent/CN109564546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • 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/604Details relating to cache allocation

Landscapes

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

Abstract

公开了用于通过绕过在执行单元内的加载存储(LS)单元来跟踪存储和加载以在从同一存储器地址存储和加载时减小加载时延的系统和方法。该系统和方法包括:将数据存储在一个或多个存储器相关体系结构寄存器编号(MdArn)中;将一个或多个MdArn分配到MEMFILE;将所分配的一个或多个MdArn写到映射文件,其中映射文件包含MdArn映射图以实现对在MEMFILE中的条目的随后访问;当接收到加载请求时,经由映射文件来检查基数、索引、位移和匹配/命中以识别在MEMFILE中的条目和相关联的存储;以及在命中时,响应于来自一个或多个MdArn的加载请求而提供条目。

Description

通过绕过加载存储单元来跟踪存储和加载
相关申请的交叉引用
本申请要求2016年8月19日提交的美国临时申请号62/377,301和2016年12月15日提交的美国专利申请号15/380,778的益处,这两个申请通过引用被并入,好像在本文被充分阐述一样。
背景技术
当前的计算机系统使用加载队列和存储队列为存储器存取提供加载和存储。通常,这些系统使用存储到加载转发来操作。然而,存储到加载转发不能为加载和存储指向同一地址的情况提供最低时延解决方案。
附图说明
从结合附图作为例子给出的下面的描述中可以有更详细的理解,其中:
图1示出根据某些实现的处理器的核心处理单元;
图2示出用于在图1的核心处理单元内操纵数据存取的加载存储(LS)单元;
图3示出结合在图1的核心处理单元内的LS单元的存储器重命名的硬件流程;
图4示出用于结合在图1的核心处理单元内的LS单元的存储器重命名的方法;以及
图5示出可实现一个或多个所公开的例子的一个或多个部分的示例装置的图。
具体实施方式
存储器重命名是跟踪存储和加载到同一地址并在加载跟随相关联的存储时绕过加载存储单元的方式。这个情形可能频繁地发生。作为例子,当程序经由存储队列存储数据、执行其它处理、接着经由加载队列加载同一数据时,存储器重命名是需要的。这个加载跟随相关联的存储。程序常常设法加载最近被存储的数据。
公开了用于通过绕过加载存储单元来跟踪存储和加载的系统和方法。该系统和方法包括将数据存储在一个或多个存储器相关体系结构寄存器编号(MdArn)中。一个或多个MdArn被分配到内存文件高速缓存(MEMFILE)。所分配的一个或多个MdArn被写到映射文件,其中映射文件包含MdArn映射图以实现对在MEMFILE中的条目的随后访问。当接收到加载请求时,经由映射文件来检查基数、索引、位移和匹配/命中以识别在MEMFILE中的条目和相关联的存储。在命中时,响应于来自一个或多个MdArn的加载请求来提供条目。
图1是根据某些实现的处理器100的核心处理单元105的高级方框图和流程图。核心处理单元105包括但不限于向调度器和/或执行单元115提供微操作(micro-op)的解码器单元110。解码器单元110包括但不限于连接到高速缓存122和微操作高速缓存124的分支预测器120。高速缓存122进一步连接到解码器126。解码器126和微操作高速缓存124连接到微操作队列128。
调度器和/或执行单元115包括但不限于整数调度器和/或执行单元130以及浮点调度器和/或执行单元132,这两个都连接到高速缓存134。高速缓存134进一步连接到L2高速缓存136、加载队列138和存储队列140。加载队列138、存储队列140和高速缓存134共同被称为加载存储(LS)单元139。
整数调度器和/或执行单元130包括但不限于连接到调度器151的整数重命名器150,调度器151包括算术逻辑单元(ALU)调度器(ALSQ)152和地址生成单元(AGU)调度器(AGSQ)154。调度器151且特别是ALSQ 152和AGSQ 154进一步分别连接到ALU 156和AGU158。整数调度器和/或执行单元130还包括整数物理寄存器文件160。
浮点调度器和/或执行单元132包括但不限于连接到调度器172的浮点重命名器170。调度器172进一步连接到乘法器174和加法器176。浮点调度器和/或执行单元132还包括浮点物理寄存器文件178。
管线处理器需要待馈送到管线内的稳定指令流。分支预测器120预测应取出并在管线处理器中执行哪个指令集。这些指令被取出并存储在高速缓存122中,且当从高速缓存122被读取时由解码器126解码成操作。当解码器126产生微操作时,微操作高速缓存124缓存微操作。微操作队列128存储来自解码器126和微操作高速缓存124的微操作并将微操作排入队列,用于调度用于执行的微操作。
在常规管线处理中,微操作队列将某些微操作(例如加载或存储操作)直接调度到保持有效载荷(例如从操作解码的控制信息和与微操作相关联的存储器地址)的加载队列和/或存储队列。为了说明的目的,存储队列可从微操作队列接受多个操作并在调度时间将有效载荷写到存储队列内。在地址生成时间,存储队列则从调度器接收队列索引以规定哪个存储条目被处理。调度器读出调度有效载荷,并将它发送到分段逻辑用于分段检查,并发送到加载队列用于在微操作管线上的可能挑选。也就是说,常规管线处理是关于存储和加载队列的双程写入过程;一次在对有效载荷的调度时以及另一次在地址生成以生成在存储器中的地址时。
根据一个实现,微操作只被调度到整数调度器和/或执行单元130和浮点调度器和/或执行单元132而不是按照常规管线处理直接写到加载队列138和存储队列140。特别是,微操作:(1)经由整数重命名器150指向调度器151;以及(2)经由浮点重命名器170指向调度器172。调度器151将微操作的所有调度有效载荷(例如用于存储微操作的调度有效载荷)保持在AGSQ 154中。也就是说,AGSQ154保持微操作(例如加载和存储微操作),直到在适当的加载队列138和/或存储队列140中的队列条目是可用的为止。一旦队列条目是可用的且物理寄存器文件160的源准备好,AGSQ 154就生成地址,读取调度有效载荷并将调度有效载荷发送到加载队列138和/或存储队列140。
为了维持按年龄排序的操作或按顺序的队列,每个存储微操作与特定的队列条目或对列标识符相关联。特别是,调度器151需要知道AGSQ 154何时可执行地址生成以及调度器151何时可将所存储的数据(即,调度有效载荷)发送到存储队列140。因此,当特定的队列是可用的时,特定的队列由存储队列140传递到AGSQ 154。虽然这个传递链未在图1中特别示出,但这个传递作为一般事项被提供。
加载队列138和存储队列140给调度器151(AGSQ 154和ALSQ152)发送提交-解除分配信号,使得调度器151(AGSQ 154和ALSQ152)可更新它的最老的微操作存储队列索引以实现地址生成或当那些较老的存储微操作解除分配并释放它们的相应存储队列条目时发送较年轻的存储微操作的存储数据。这可例如通过将来自加载队列138和存储队列140的输出(未示出)添加到在调度器151(AGSQ 154和ALSQ 152)处的输入来实现。
通过将所有调度信息保持在AGSQ 154中并使存储队列分配延迟直到地址生成时间为止(例如,通过前一存储微操作来为存储队列条目仍然在使用中的存储微操作存储数据),可调度比存储队列140的大小更多的存储微操作。通过消除调度推迟的源,可在窗口中引入另外的微操作并允许开始它们的工作。任何存储微操作在它们的存储队列条目中的前一存储解除分配前不能开始,但其它微操作可继续进行。这允许可以是高速缓存未命中的加载,进行调度和/或执行地址生成,以便开始高速缓存未命中。
为支持在窗口中操纵比所存在的存储队列条目更大数量的存储,需要一种方式来比较微操作的年龄。通过使用与微操作相关联的存储队列条目编号以及附随存储队列条目编号的“环绕”位来提供比较微操作的年龄的方式。环绕位确定相关联的存储微操作将使用存储队列条目的哪个“轮转时期”。单个环绕位提供跟踪存储队列的两个不同“环绕次数”或“轮转时期”的方式,其使调度完整的存储队列(XC_STQDEPTH)成为可能。当允许调度比存储队列条目更多的存储微操作时,窗口中可以有具有相同存储队列条目的但来自存储队列的多个不同“环绕次数”或“轮转时期”的微操作。对于总共两个环绕位,一个额外的环绕位提供跟踪存储队列的四个不同“环绕次数”或“轮转时期”的方式,其使得能够调度多达三倍的存储队列深度。
在所示例子中,如果所实现的体系结构具有44的存储队列深度且存在两个14条目AGSQ(对于在地址生成时多达28个额外的微操作存储),则存在能够在窗口中被调度的总共72个存储。因此,处理器将不调度多于两倍的存储队列深度。两个环绕位足以跟踪并比较在机器中的所有72个存储的年龄,且无需调度推迟。在调度时计算环绕位并将其保持在AGSQ有效载荷中。如果AGSQ调度器深度允许调度多于存储队列深度三倍的存储,则可添加额外的环绕位以使得能够调度任意数量的存储。
加载微操作不一定是按年龄排序的且可使用本领域技术人员已知的其它技术来控制指令的执行顺序。在一个实现中,加载微操作可与存储微操作类似地操作。
从体系角度看,本文所述的实现解决上面概述的问题。首先,可在存储队列中减小调度有效载荷写端口的数量。例如,调度有效载荷写端口的数量可从四(在调度时每循环四个存储)减小到二(每循环两个存储地址生成)。其次,困难的定时路径被消除了。例如,涉及将队列索引发送到存储队列、读出有效载荷并接着将有效载荷发送到分段逻辑和加载队列的定时路径被消除了。
一旦地址生成由AGSQ 154执行且数据/调度有效载荷按需要存储在加载队列138和存储队列140中,核心处理单元105就执行微操作。加载队列138和存储队列140分别返回加载微操作的数据并执行存储微操作的写入。对于其它类型的操作,当整数调度器和/或执行单元130和浮点调度器和/或执行单元132的相应源变得准备好时,调度器151和调度器172向整数调度器和/或执行单元130和浮点调度器和/或执行单元132发出微操作。
如下面将在文本更详细讨论的,解码器126、物理寄存器文件160和LS单元139被通信地耦合。
图2示出用于在处理器100内操纵数据存取的加载存储(LS)单元139。LS单元139包括加载队列210和存储队列215,每个队列操作地耦合到数据高速缓存220。LS单元139被配置到独立的总称为225和230的管线内。在一个实现中,LS单元139包括总称为225和230的三个管线,其实现每循环两个加载存储器操作225A、225B和一个存储存储器操作230的执行。
LS单元139的加载队列210包括多个条目。在一个实现中,加载队列210包括44个条目。加载队列210在调度时接收加载操作,且当加载完成并将数据输送到整数调度器和/或执行单元130或浮点调度器和/或执行单元132时,加载离开加载队列210。
存储队列215包括多个条目。在一个实现中,存储队列215包括44个条目。虽然这个例子等于在上面的示例加载队列210中的条目的数量,但在加载队列210和存储队列215中不需要相等数量的条目。存储队列215保持来自调度的存储,直到存储数据被写到数据高速缓存220为止。
数据高速缓存220缓存数据,直到在L2 235中的存储被执行为止。数据高速缓存220是存储数据的硬件或软件部件,所以对那个数据的未来请求可更快地被应答。存储在数据高速缓存220中的数据可以是较早的计算的结果、存储在其它地方的数据的副本或来自存储队列215的存储数据。L2 235可以是数据高速缓存220的较慢和/或较大的版本。
LS单元139对操作动态地重新排序,支持使用绕过较老的加载的加载队列210的加载操作和使用绕过较老的非冲突存储的存储队列215的存储操作。LS单元139确保处理器遵循如由处理器100的系统体系结构经由加载队列210和存储队列215定义的体系结构加载/存储排序规则。
当存在包含加载的所有字节的较老存储且存储的数据已被产生并在存储队列215中是可用的时,LS单元139支持存储到加载转发(STLF)。来自STLF的加载不需要相对于存储的任何特定对准,只要它完全包含在该存储内即可。
在包括处理器100的计算系统中,分配某些地址位以确定STLF合格性。重要地,计算机系统避免具有带有相同的地址位的多个存储,其在处理中同时最终去往不同的地址。这是加载可能需要STLF的情况。通常,跟随存储到类似的地址位的加载使用相同的寄存器,且访问被紧密地分组在一起。这个分组在可能时避免干预对由存储和加载使用的寄存器的修改或写入。这允许LS单元139跟踪“途中”的加载/存储。例如,LS单元139可跟踪“途中”的高速缓存未命中。
对简单的地址生成模式优化LS单元139和相关联的管线225A、225B、230。基数+位移、基数+索引和仅位移寻址模式(不考虑位移大小)被视为简单的寻址模式并实现4循环加载到使用整数加载时延和7循环加载到使用浮点(FP)加载时延。寻址模式(其中索引和位移都存在)例如具有基数+索引+位移的通常使用的3源寻址模式和利用按比例调整的索引例如×2、×4或×8比例的任何寻址模式被视为复杂寻址模式,且需要时延的额外循环来计算地址。复杂寻址模式实现5循环(整数)/8循环浮点加载到使用时延。通常,这些系统通过在时延敏感代码中避免复杂的(例如按比例调整的索引或索引+位移)寻址模式来操作。
图3示出结合在图1的核心处理单元105内的LS单元139的存储器重命名的硬件流程300。图3示出通过绕过LS单元139来跟踪存储和加载的硬件流程300。特别地,存储器重命名是当加载跟随相关联的存储时用于绕过LS单元139跟踪存储和加载到同一地址的方法。存储器重命名用于优化数据从存储到加载的转发。存储器重命令的使用通常在不涉及LS单元139的资源的情况下操作。本质上,存储器重命名使数据能够在整数调度器和/或执行单元130和浮点调度器和/或执行单元132中“被记住”。
通常,为了实现“记住”,利用微体系结构寄存器,其为存储器相关体系结构寄存器编号(MdArn)。MdArn用作用于“记住”被存储以在随后的加载时使用的数据的位置。即使数据还存储在传统存储器存储中也利用MdArn。传统存储器存储通过LS单元139出现。MdArn是体系结构寄存器编号,其为图1所示的整数重命名器150和/或浮点重命名器170的部分且是整数重命名器150和/或浮点重命名器170可访问的。这允许整数重命名器150和/或浮点重命名器170加载来自MdArn的数据(“记住”)而不需要从LS单元请求数据。
在一个实现中,关于MdArn的信息被存储在映射图320中。映射图320是包括MdArn映射图的文件,其将映射图提供到存储在特定MdArn中的内容。MdArn在体系结构上不可见且只在内部用于存储器相关重命名。特别地,在映射图320中的每个条目包含物理寄存器编号(PRN),其为给定存储数据除了被发送到LS单元139以外还被写入的物理寄存器文件(PRF)160、178的索引。映射图320使存储数据能够使用相关联的存储的MdArn通过重命名来在本地被转发到加载和加载相关。存在数量为N的MdArn。
硬件流程300示出N-指令305的调度。N-指令指令305如上面关于图1和2所述的被存储。除了在那些附图中详述的存储过程以外,存储315还使用包括多个单独MdArn 337.1、337.2...337.n的MdArn。虽然图3示出调度在映射图320中的数量为N的MdArn,组间相关性的数量由同时被调度的操作的数量(例如在6-宽体系结构中的6个操作)约束。在当前调度组中的任何存储315的地址信息被写(308)到在解码单元110内的MEMFILE 310内,被分配MdArn,且重命名器150、170将它映射到自由PRN,将它存储在映射图320中,就像对所映射的ARN所做的一样。如果存在到调度组内的同一地址的多个存储,则只有最老的存储被存储在MEMFILE 310中并被重命名为MdArn。MEMFILE 310是内存文件高速缓存。
最老的存储由程序顺序定义。在公共调度分组中,操作是以程序中的顺序。检查组间相关性以确保正确的源。最老的操作不依赖于任何较年轻的操作。例如,第二最老的操作可以依赖于最老的操作,而最年轻的操作可以依赖于它的任何较老的操作。
存储315被分配并写(308)到MEMFILE 310并在映射图320中被识别。当存储315指向MEMFILE 310并在映射图320中被识别时,还将它们与调度加载325进行比较用于地址匹配,如在337(337.1,337.2...337.n)中所示的。此外,对照在347(347.1,347.2...347.n)中描绘的先前在MEMFILE 310中写入的存储来检查所调度的加载325用于地址匹配。加载325(其地址匹配在比较逻辑337和347中的存储)与给定存储相关联,经历组间相关性检查(350、360、370),且然后被映射到由存储MdArn表示的PRN。
在一个实现中,调度器和/或执行单元115按顺序在MEMFILE310中监控每个存储315,MEMFILE 310在解码器126内。简而言之,在一个实现中,MEMFILE 310是被分配有被调度的每个存储315的按年龄排序的旋转先进先出(FIFO)。调度是当指令被解码并被发送到重命名器和调度队列(363、368)时,例如在微操作队列128和重命名器150之间(在整数重命名器的情况下)。在MEMFILE 310内的每个条目包含关于存储315的信息,例如在物理寄存器文件160内的基数和索引寄存器,并包括位移的部分。这个存储315以旋转方式被分配MdArn(其有N个)。
在调度器和/或执行单元115中,存储315如上面关于图1和2在本文所述的操作。存储315分成地址生成分量和到LS单元139的存储315数据运动。对于存储器重命名,存储315还包括将存储数据移动到MdArn。在到LS单元139的存储数据移动期间,对于被分配到在映射图320中的那个MdArn的PRN,写入物理寄存器文件160。
存储器重命名通过将STLF时延改变到寄存器到寄存器移动来减小STLF时延。操作的子集可此外与只在映射中实现的移动消除组合,将STLF减小到零循环时延。
如果加载325是加载操作或纯加载,则名义上来自存储器(例如高速缓存134或L2136或其它存储器)的操作数例如替代地由MdArn提供。加载325执行地址生成,且LS单元139验证存储器重命名流程300的正确性。LS单元139避免返回数据。此外,LS单元139检查不存在到给定地址的中间存储,其中断重命名的存储-加载关联。如果验证失败,则LS单元139通过重新执行加载325来使加载325重新同步。加载325的重新同步包括重新执行已被执行的所有工作,清空管线以及以加载开始从头开始执行。
图4示出用于结合在图1的核心处理单元105内的LS单元139的存储器重命名的方法400。方法400包括在步骤410存储在MdArn中的指令连同传统存储路径。在步骤420,方法400基于MdArn存储来分配并写到MEMFILE 310。在步骤430,分配自由目的地PRN以供使用且写入映射图。系统在步骤440监控加载请求。当在加载请求时,在步骤450在调度逻辑(其中MEMFILE 310驻留)内、例如在微操作队列128和映射图320(在如所讨论的重命名器150内)之间检查在MEMFILE 310中的基数、索引、位移和匹配/命中。在命中时,在步骤460,LS单元139被阻止返回数据并提供来自从MEMFILE识别的MdArn的加载的条目。在步骤470,LS单元139验证存储-加载对被正确地关联。如果否,则加载被清空并重新执行。
图5示出可实现一个或多个所公开的例子的一个或多个部分的示例装置500的图。装置500可包括例如头戴式装置、服务器、计算机、游戏装置、手持装置、机顶盒、电视机、移动电话或平板计算机。装置500包括计算节点或处理器502、存储器504、存储装置506、一个或多个输入装置508和一个或多个输出装置510。装置500还可以可选地包括输入驱动器512和输出驱动器514。应理解,装置500可包括未在图5中示出的额外的部件。
计算节点或处理器502可包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一裸片上的CPU和GPU或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器504可与计算节点或处理器502位于同一裸片上,或可与计算节点或处理器502分开地被定位。存储器504可包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置506可包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置508可包括键盘、袖珍键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如用于无线IEEE 802信号的传输和/或接收的无线局域网卡)。输入装置510可包括显示器、扬声器、打印机、触摸反馈装置、一个或多个灯、天线或网络连接(例如用于无线IEEE 802信号的传输和/或接收的无线局域网卡)。
输入驱动器512与计算节点或处理器502和输入装置508通信,并允许计算节点或处理器502从输入装置508接收输入。输出驱动器514与计算节点或处理器502和输出装置510通信,并允许处理器502将输出发送到输出装置510。注意,输入驱动器512和输出驱动器514是可选的部件,并且如果输入驱动器512和输出驱动器514不存在,装置500也将以相同的方式操作。
通常且没有限制地,本文所述的实施方案,计算机可读非临时介质包括指令,其当在处理系统中执行时使处理系统执行用于在地址生成时间加载和存储分配的方法。
应理解,基于本文的公开,很多变化是可能的。虽然上面在特定的组合中描述了特征和元件,每个特征或元件可在没有其它特征和元件的情况下单独地或在有或没有其它特征和元件的情况下在各种组合中被使用。
所提供的方法可在通用计算机、处理器或处理器核心中实现。适当的处理器作为例子包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。可使用经处理的硬件描述语言(HDL)指令和包括连线表的其它中间数据(例如能够存储在计算机可读介质上的这样的指令)的结果通过配置制造过程来制造这样的处理器。这样的处理的结果可以是掩模品,其然后在半导体制作过程中被使用来制造实现实施方案的方面的处理器。
本文提供的方法或流程图可在被合并在非临时计算机可读存储介质中的计算机程序、软件或固件中实现,用于由通用计算机或处理器执行。非临时计算机可读存储介质的例子包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质例如内部硬盘和可移动盘、磁光介质和光学介质例如CD-ROM盘和数字通用盘(DVD)。
* * *

Claims (20)

1.一种用于通过绕过在执行单元内的加载存储(LS)单元来跟踪存储和加载以在从同一存储器地址存储和加载时减小加载时延的方法,所述方法包括:
将数据存储在一个或多个存储器相关体系结构寄存器编号(MdArn)中;
将所述一个或多个MdArn分配到内存文件高速缓存;
将所分配的一个或多个MdArn写到文件,其中所述文件包含MdArn映射图以实现对在所述内存文件高速缓存中的条目的随后访问;
当接收到加载请求时,经由所述文件来检查基数、索引、位移和匹配/命中以识别在所述内存文件高速缓存中的条目和相关联的存储;以及
在命中时,响应于来自所述一个或多个MdArn的所述加载请求而提供所述条目。
2.如权利要求1所述的方法,还包括分配在物理寄存器文件(PRF)中的自由目的地。
3.如权利要求1所述的方法,还包括在命中时阻止所述LS单元响应于加载请求而返回数据。
4.如权利要求1所述的方法,其中所述阻止出现在调度器中。
5.如权利要求4所述的方法,其中所述调度器包括算术逻辑单元(ALU)调度器(ALSQ)。
6.如权利要求4所述的方法,其中所述调度器包括地址生成单元(AGU)调度器(AGSQ)。
7.一种用于通过绕过在执行单元内的加载存储(LS)单元来跟踪存储和加载以在从同一存储器地址存储和加载时减小加载时延的系统,所述系统包括:
多个存储器相关体系结构寄存器编号(MdArn),其用于存储数据;
内存文件高速缓存,其用于分配所述多个MdArn中的至少一个;以及
文件,其用于写MdArn映射图;
当接收到加载请求时,经由所述文件来检查基数、索引、位移和匹配/命中以识别在所述内存文件高速缓存中的条目和相关联的存储;以及
在命中时,响应于来自所述多个MdArn中的所述至少一个的所述加载请求而提供所述条目。
8.如权利要求7所述的系统,还包括物理寄存器文件(PRF)以分配自由目的地。
9.如权利要求7所述的系统,还包括在命中时阻止所述LS单元响应于加载请求而返回数据。
10.如权利要求9所述的系统,其中所述阻止由调度器执行。
11.如权利要求10所述的系统,其中所述调度器包括算术逻辑单元(ALU)调度器(ALSQ)。
12.如权利要求10所述的系统,其中所述调度器包括地址生成单元(AGU)调度器(AGSQ)。
13.如权利要求7所述的系统,其中所述检查由调度器和/或执行单元执行。
14.一种包含用于使计算机通过绕过在执行单元内的加载存储(LS)单元来执行跟踪存储和加载以在从同一存储器地址存储和加载时减小加载时延的程序指令的非临时计算机可读介质,所述方法包括:
将数据存储在一个或多个存储器相关体系结构寄存器编号(MdArn)中;
将所述一个或多个MdArn分配到内存文件高速缓存;
将所分配的一个或多个MdArn写到文件,其中所述文件包含MdArn映射图以实现对在所述内存文件高速缓存中的条目的随后访问;
当接收到加载请求时,经由所述文件来检查基数、索引、位移和匹配/命中以识别在所述内存文件高速缓存中的条目和相关联的存储;以及
在命中时,响应于来自所述一个或多个MdArn的所述加载请求而提供所述条目。
15.如权利要求14所述的计算机可读介质,所述方法还包括分配在物理寄存器文件(PRF)中的自由目的地。
16.如权利要求14所述的计算机可读介质,所述方法还包括在命中时阻止所述LS单元响应于加载请求而返回数据。
17.如权利要求16所述的计算机可读介质,其中所述阻止由调度器执行。
18.如权利要求17所述的计算机可读介质,其中所述调度器包括算术逻辑单元(ALU)调度器(ALSQ)。
19.如权利要求17所述的计算机可读介质,其中所述调度器包括地址生成单元(AGU)调度器(AGSQ)。
20.如权利要求14所述的计算机可读介质,其中所述检查由调度器和/或执行单元执行。
CN201780050033.9A 2016-08-19 2017-08-04 通过绕过加载存储单元来跟踪存储和加载 Active CN109564546B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662377301P 2016-08-19 2016-08-19
US62/377,301 2016-08-19
US15/380,778 US10331357B2 (en) 2016-08-19 2016-12-15 Tracking stores and loads by bypassing load store units
US15/380,778 2016-12-15
PCT/US2017/045640 WO2018034876A1 (en) 2016-08-19 2017-08-04 Tracking stores and loads by bypassing load store units

Publications (2)

Publication Number Publication Date
CN109564546A true CN109564546A (zh) 2019-04-02
CN109564546B CN109564546B (zh) 2023-02-17

Family

ID=61191635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780050033.9A Active CN109564546B (zh) 2016-08-19 2017-08-04 通过绕过加载存储单元来跟踪存储和加载

Country Status (6)

Country Link
US (1) US10331357B2 (zh)
EP (1) EP3500936A4 (zh)
JP (1) JP7084379B2 (zh)
KR (1) KR102524565B1 (zh)
CN (1) CN109564546B (zh)
WO (1) WO2018034876A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846095B2 (en) * 2017-11-28 2020-11-24 Advanced Micro Devices, Inc. System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
US11099846B2 (en) 2018-06-20 2021-08-24 Advanced Micro Devices, Inc. Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability
US11281466B2 (en) 2019-10-22 2022-03-22 Advanced Micro Devices, Inc. Register renaming after a non-pickable scheduler queue
KR102456176B1 (ko) * 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US11301351B2 (en) 2020-03-27 2022-04-12 International Business Machines Corporation Machine learning based data monitoring
US20230195466A1 (en) * 2021-12-17 2023-06-22 Arm Limited Move elimination

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
US6230254B1 (en) * 1992-09-29 2001-05-08 Seiko Epson Corporation System and method for handling load and/or store operators in a superscalar microprocessor
US20100268882A1 (en) * 2009-04-15 2010-10-21 International Business Machines Corporation Load request scheduling in a cache hierarchy
US20150234663A1 (en) * 2014-02-14 2015-08-20 Zeshan A. Chishti Instruction and Logic for Run-time Evaluation of Multiple Prefetchers
US20160055083A1 (en) * 2014-08-19 2016-02-25 Imagination Technologies Limited Processors and methods for cache sparing stores

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994008287A1 (en) * 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US6651161B1 (en) * 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US7174428B2 (en) 2003-12-29 2007-02-06 Intel Corporation Method and system for transforming memory location references in instructions
US7263600B2 (en) 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US7937569B1 (en) * 2004-05-05 2011-05-03 Advanced Micro Devices, Inc. System and method for scheduling operations using speculative data operands
US7302527B2 (en) 2004-11-12 2007-11-27 International Business Machines Corporation Systems and methods for executing load instructions that avoid order violations
US7987343B2 (en) * 2008-03-19 2011-07-26 International Business Machines Corporation Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass
US9164900B1 (en) 2012-05-23 2015-10-20 Marvell International Ltd. Methods and systems for expanding preload capabilities of a memory to encompass a register file
US9116817B2 (en) 2013-05-09 2015-08-25 Apple Inc. Pointer chasing prediction
US9606806B2 (en) * 2013-06-25 2017-03-28 Advanced Micro Devices, Inc. Dependence-based replay suppression
US9710268B2 (en) * 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230254B1 (en) * 1992-09-29 2001-05-08 Seiko Epson Corporation System and method for handling load and/or store operators in a superscalar microprocessor
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
US20100268882A1 (en) * 2009-04-15 2010-10-21 International Business Machines Corporation Load request scheduling in a cache hierarchy
US20150234663A1 (en) * 2014-02-14 2015-08-20 Zeshan A. Chishti Instruction and Logic for Run-time Evaluation of Multiple Prefetchers
US20160055083A1 (en) * 2014-08-19 2016-02-25 Imagination Technologies Limited Processors and methods for cache sparing stores

Also Published As

Publication number Publication date
US10331357B2 (en) 2019-06-25
US20180052613A1 (en) 2018-02-22
JP2019525355A (ja) 2019-09-05
KR20190033084A (ko) 2019-03-28
EP3500936A4 (en) 2020-04-22
KR102524565B1 (ko) 2023-04-21
EP3500936A1 (en) 2019-06-26
JP7084379B2 (ja) 2022-06-14
WO2018034876A1 (en) 2018-02-22
CN109564546B (zh) 2023-02-17

Similar Documents

Publication Publication Date Title
CN109564546A (zh) 通过绕过加载存储单元来跟踪存储和加载
US6944744B2 (en) Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US11048506B2 (en) Tracking stores and loads by bypassing load store units
Sinharoy et al. IBM POWER8 processor core microarchitecture
US9830158B2 (en) Speculative execution and rollback
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US9442755B2 (en) System and method for hardware scheduling of indexed barriers
US7263600B2 (en) System and method for validating a memory file that links speculative results of load operations to register values
JP5035277B2 (ja) 共有メモリに対するアトミックな更新を可能にするロックメカニズム
JP2005537567A (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
JP7244046B2 (ja) 遠隔アトミックオペレーションの空間的・時間的マージ
US9448803B2 (en) System and method for hardware scheduling of conditional barriers and impatient barriers
JP2001500641A (ja) 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置
US6425072B1 (en) System for implementing a register free-list by using swap bit to select first or second register tag in retire queue
WO2002057908A2 (en) A superscalar processor having content addressable memory structures for determining dependencies
JP3138259B2 (ja) カウントによる高速レジスタ・リネームのためのシステムおよび方法
US7266673B2 (en) Speculation pointers to identify data-speculative operations in microprocessor
US7937569B1 (en) System and method for scheduling operations using speculative data operands
CN109564510B (zh) 用于在地址生成时间分配加载和存储队列的系统和方法
CN114327635A (zh) 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置
US11561794B2 (en) Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry
US7610476B1 (en) Multiple control sequences per row of microcode ROM

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
GR01 Patent grant
GR01 Patent grant