CN109564510A - 用于在地址生成时间分配加载和存储队列的系统和方法 - Google Patents

用于在地址生成时间分配加载和存储队列的系统和方法 Download PDF

Info

Publication number
CN109564510A
CN109564510A CN201680088368.5A CN201680088368A CN109564510A CN 109564510 A CN109564510 A CN 109564510A CN 201680088368 A CN201680088368 A CN 201680088368A CN 109564510 A CN109564510 A CN 109564510A
Authority
CN
China
Prior art keywords
queue
microoperation
storage
age
dispatcher
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
CN201680088368.5A
Other languages
English (en)
Other versions
CN109564510B (zh
Inventor
约翰·M·金
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 CN109564510A publication Critical patent/CN109564510A/zh
Application granted granted Critical
Publication of CN109564510B publication Critical patent/CN109564510B/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

描述了一种用于在地址生成时间分配加载队列(LDQ)和存储队列(STQ)条目的系统和方法,所述系统和方法维持了指令的年龄次序。具体来说,写入LDQ和STQ条目会一直被拖延到地址生成时间。这允许分派加载和存储操作,并且还分派更年轻的操作(所述操作可能不是存储和加载操作)并且执行它们的指令。所述加载或存储操作的所述地址生成在地址生成调度器队列(AGSQ)处一直等到加载或存储队列条目可用于所述操作。实际上是在所述AGSQ中而不是在解码引擎处完成对加载队列条目或存储队列条目的跟踪。从解码引擎的角度来看,LDQ深度和STQ深度是不可见的,并且增加了有效处理和队列深度。

Description

用于在地址生成时间分配加载和存储队列的系统和方法
相关申请的交叉引用
本申请要求2016年8月15日提交的美国非临时专利申请No.15/236,882的权益,所述申请以引用的方式并入,就好像在本文完全阐述一样。
背景技术
处理器一般具有与其相关联的指令管线,所述指令管线包括获取级、解码(或分派)级以及执行级。解码级从获取队列检索指令并且在加载队列(LDQ)或存储队列(STQ)中分配条目。LDQ和STQ资源是深度(即,可以存储在队列中的条目的数目)和队列寿命会影响处理器的性能的结构。虽然更深的LDQ和STQ实现每个时钟更高数目的指令(IPC),但在某种情况下,更深的LDQ和STQ导致时序问题。正常在指令分派下分配LDQ条目和STQ条目。如果加载或存储操作处于分派点但LDQ和STQ是满的,那么分派会一直被拖延到LDQ条目和STQ条目被解除分配为止。这意味着LDQ和STQ深度对于处理器的有效窗口大小是限制器,即,这是对可以一次处理的指令的数目的约束。
附图说明
通过结合附图借助示例给出的以下描述,可以得到更详细的理解,附图中:
图1是根据特定实现方式的处理器的核心处理单元的高级框图和流程图;
图2是根据特定实现方式的整数调度器和/或执行单元的高级框图和流程图;
图3是根据特定实现方式的调度器和/或执行单元的高级框图和流程图;
图4是根据特定实现方式的用于在地址生成时间分配加载和存储队列的方法的流程图;以及
图5是其中可以实施一个或多个所公开的实现方式的示例性装置的框图。
具体实施方式
处理器一般按照指令管线进行操作,所述指令管线包括获取级、解码(或分派)级和执行级。解码级或分派级从获取队列检索指令并且在加载队列(LDQ)或存储队列(STQ)中分配条目。正常在指令分派下分配LDQ条目和STQ条目。如果加载或存储操作处于分派点但LDQ或STQ是满的,那么分派会一直被拖延到LDQ条目或STQ条目被解除分配为止。这意味着LDQ和STQ深度对于处理器的有效窗口大小是限制器。
描述了用于在地址生成时间分配LDQ和STQ条目的系统和方法,所述地址生成时间维持指令的年龄次序。具体来说,写入的LDQ和STQ条目会一直被拖延到地址生成时间。这允许分派加载和存储操作,并且还分派更年轻的操作(所述操作可能不是存储和加载操作)并且开始或完成它们的指令。加载或存储操作的地址生成在地址生成调度器队列(AGSQ)中保持待决,直到加载队列条目或存储队列条目可用于所述操作。实际上是在AGSQ中而不是在分派点处(即,解码引擎处)完成对LDQ条目或STQ条目的跟踪。因为一切都被下推至AGSQ,所以从解码引擎的角度来看,LDQ深度和STQ深度是不可见的,并且增加了有效深度,如本文在下面所描述。
图1是根据特定实现方式的处理器100的核心处理单元105的高级框图和流程图。核心处理单元105包括解码器单元110,所述解码器单元将微操作(micro-ops)提供给调度器和执行单元(SCEX)115。解码器单元110包括连接到缓存122和微操作缓存124的分支预测器120。缓存122进一步连接到解码器126。解码器126和微操作缓存124连接到微操作队列128。
SCEX 115包括整数SCEX 130和浮点SCEX 132,以上两者连接到缓存134。缓存134进一步连接到L2缓存136、LDQ 138和STQ 140。整数SCEX 130包括整数重命名器150,所述整数重命名器连接到调度器151,所述调度器包括算术逻辑单元(ALU)调度器队列(ALSQ)152和地址生成单元(AGU)调度器队列(AGSQ)154。调度器151,并且具体来说是ALSQ 152和AGSQ154,分别进一步连接到ALU 156和AGU 158。整数SCEX 130还包括整数物理文件寄存器160。浮点SCEX 132包括浮点重命名器170,所述浮点重命名器连接到调度器172。调度器172进一步连接到乘法器174和加法器176。浮点SCEX 132还包括浮点物理文件寄存器178。
管线处理器要求将稳定的指令流馈送到管线中。分支预测器120预测在管线化处理器中获取和执行哪组微操作。获取这些微操作并且将其存储在缓存122中,所述微操作继而由解码器126解码。当解码器126解码来自缓存122的微操作时,微操作缓存124对来自分支预测器120的微操作进行缓冲。微操作队列128对来自解码器126和微操作缓存124的微操作进行存储和排队以便分派所述微操作用于执行。
在常规的管线处理中,微操作队列将微操作分派给加载队列或存储队列以存储与微操作相关联的有效负载。出于说明的目的,存储队列可以接受来自所述微操作队列的六个微操作,并且在分派时间将分派有效负载写入到所述存储队列中,所述六个微操作中的四者可以是存储微操作。存储队列随后在地址生成时间从调度器接收队列条目编号以指定正在处理哪个存储队列条目。调度器读出分派有效负载,并且将所述分派有效负载发送到分段逻辑以进行分段检查,并且将所述分派有效负载发送到加载队列以便在微操作管道上进行可能的拾取。也就是说,常规的管线处理是相对于存储和加载队列的二回合写入过程;一个回合在分派时用于有效负载,并且第二回合在地址生成处以产生地址。
在物理上,这因为若干原因而比较困难。首先,架构需要支持微操作队列的整个宽度。举例来说,在分派时写入六个微操作(包括四个存储微操作)需要大量的电线和多路复用器,并且导致保持分派有效负载的存储队列的区域中的拥塞。第二,在地址生成时间读取有效负载需要承担困难的一组路径(即,时序路径),包括将队列条目编号从地址生成单元发送到存储队列;读出有效负载;以及将有效负载发送到分段逻辑和加载队列。因为存储队列保持分派有效负载,所以这意味着存储队列条目在分派开始便被占用,即使在地址生成之前存储微操作也无法做任何事。因此,微操作宽度所需的架构是浪费的。也就是说,存储队列和加载队列的深度限制了处理器的窗口(即,存在对一次可以处理的操作的数目的约束)。
根据实现方式,仅将微操作分派给整数SCEX 130和浮点SCEX 132,而不是按照常规的管线处理直接写入到LDQ 138和STQ 140。具体来说,1)经由整数重命名器150将微操作引导到调度器151;以及2)经由浮点重命名器170将微操作引导到调度器172。调度器151将用于微操作的所有分派有效负载,例如,用于加载和存储微操作的分派有效负载,保持在AGSQ 154中。AGSQ 154保持用于微操作(例如,加载和存储微操作)的分派有效负载,直到适当的LDQ 138或STQ 140中的特定队列条目可用为止。一旦队列条目可用并且源信息就绪,AGSQ 154便产生地址,读取分派有效负载并且将分派有效负载发送到LDQ 138或STQ 140。
为了维持按年龄排序的操作或者按次序的队列,每个存储微操作与特定存储队列条目或队列识别符相关联。在分派时按程序次序将那个存储队列条目指派给存储微操作(例如,可能将存储微操作指派给存储队列条目0,并且将把所述程序次序中的下一个存储微操作指派给存储队列条目1,将把所述程序次序中的下一个存储微操作指派给存储队列条目2,且依此类推)。这按照队列条目编号或位置在存储队列中依序保持存储微操作。按照位置排序的存储队列是处理存储微操作的简单方式并且是本领域技术人员已知的。目前的实现方式保留了那个按次序的性质以及在分派时指派队列条目,而不需要在分派时存储队列条目可用于微操作。
在分派时指派存储队列条目允许AGSQ和ALSQ通过将最老的未提交的存储微操作的存储队列条目编号与所述AGSQ和ALSQ中的存储微操作的存储队列条目进行比较来容易确定何时存储队列条目空闲。具体来说,调度器151需要知晓AGSQ 154何时可以执行地址生成,并且将分派有效负载发送到STQ 140以及ALSQ 152何时可以将存储数据发送到STQ140。因此,当特定的队列条目可用时,STQ 140将特定的队列条目传送到AGSQ 154和ALSQ152。这在下文关于图1中的输出180进一步描述。
具体来说,LDQ 138和STQ 140向调度器151(例如,AGSQ 154和ALSQ 152)发送提交-解除分配信号,使得调度器151(例如,AGSQ 154和ALSQ 152)可以更新其最老的未提交的存储微操作存储队列条目编号,从而在那些较老的存储微操作解除分配并且腾出它们的相应的存储队列条目时实现地址生成,发送分派有效负载并且发送用于较年轻的存储微操作的存储数据。这是(例如)通过将来自LDQ 138和STQ 140的输出180添加到调度器151(例如,AGSQ 154和ALSQ 152)处的输入来实施。
因为调度器151知晓AGSQ 154中的每个存储微操作的存储队列条目编号以及ALSQ152中的每个存储数据微操作的存储队列条目编号,并且调度器151还知晓最老的未提交的存储微操作的存储队列条目编号是什么(加上环绕位),所以调度器151能够确定其队列条目是可用的适当的微操作。举例来说,如果AGSQ 154条目或ALSQ 152条目的存储队列条目编号位于最老的未提交的存储微操作的队列条目(恰当地考虑环绕位)的存储队列深度(XC_STQDEPTH)内,那么用于所述存储微操作的地址生成可以继续进行或者可以发送存储微操作分派有效负载,因为存储微操作的存储队列条目可用于那个存储微操作(假设适当的源信息或源操作数也就绪)。比作为XC_STQDEPTH-1的存储微操作更年轻的任何存储微操作存储无法容许最老的存储微操作执行地址生成、发送分派有效负载或发送存储数据的更年轻的存储微操作,并且被视为未准备好进行微操作拾取(即,执行存储微操作),因为它们的存储队列条目仍然被较老的存储微操作占用。
通过将所有分派有效负载保持在AGSQ 154中并且在地址生成时间之前推迟存储队列分配,可以比存储队列大小(例如,存储队列140的大小)分派更多的存储微操作。通过消除分派拖延的源头,可以在窗口中引入其他的微操作并且容许开始执行。也就是说,虽然一些存储微操作在它们的存储队列条目中的先前的存储微操作解除分配之前将不能够开始,但其他的微操作可以继续进行。重要的是,缓存未命中的负载可以分派和执行地址生成并且开始它们的缓存未命中。
要支持在窗口中处置比存在的存储队列条目更多的存储微操作需要对这些微操作的年龄进行比较的机制。通过使用与存储微操作相关联的存储队列条目编号以及伴随所述存储队列条目编号的“环绕”位来提供所述比较年龄的机制。所述环绕位确定相关联的存储微操作将使用存储队列条目的哪个“时期”。每个“时期”表示存储队列的不同版本或循环。单个环绕位提供用于跟踪存储队列的两个不同的“环绕”或“时期”的手段,这使得能够分派整个存储队列(XC_STQDEPTH)。当容许分派比存储队列条目更多的存储微操作时,可以在窗口中存在具有相同的存储队列条目但来自存储队列的多个不同的“环绕”或“时期”的微操作。对于总共两个环绕位,一个额外的环绕位提供用于跟踪存储队列的四个不同的“环绕”或“时期”的手段,这使得能够分派三倍的存储队列深度。
在说明性示例中,如果所实施的架构具有存储队列深度44并且存在两个14条目AGSQ(用于地址生成时的高达28个额外的微操作存储),那么存在能够在窗口中分派的总共72个存储。因此,处理器不分派存储队列深度的两倍以上,并且使用两个环绕位来跟踪和比较处理器中的所有72个存储微操作的年龄,并且不需要分派拖延。在分派时计算环绕位并且所述环绕位是在AGSQ中保持的分派有效负载的部分。如果AGSQ调度器深度允许分派是存储队列深度三倍以上的存储微操作,那么可以添加额外的环绕位以使得能够分派任意数目的存储微操作。
加载微操作不一定是按年龄排序的,并且使用本领域技术人员已知的其他技术。在一实现方式中,加载微操作与存储微操作类似地操作。
从架构角度来看,本文描述的实现方式解决了上文概述的问题。首先,在存储队列中减小分派有效负载写入端口的数目。举例来说,分派有效负载写入端口的数目从四个(在分派时每个循环四个存储)减小为两个(每个循环两个存储地址生成)。第二,消除了困难的时序路径。举例来说,消除了涉及将队列条目编号发送到存储队列、读出有效负载并且随后将所述有效负载发送到分段逻辑和加载队列的时序路径。
一旦AGSQ 154执行了地址生成并且在需要时将分派有效负载存储在LDQ 138和STQ 140中,核心处理单元105便相应地执行微操作。LDQ 138和STQ 140分别返回用于加载微操作的数据以及执行用于存储微操作的写入,并且调度器151和调度器172在它们的相应的源信息就绪时将微操作发出到整数SCEX 130和浮点SCEX 132。
图2是根据特定实现方式的整数调度器/执行单元200的高级框图。整数调度器/执行单元200包括连接到ALSQ 204、AGSQ 206和撤回队列208的整数重命名器/映射器202。ALSQ 204和AGSQ 206进一步连接到转发多路复用器210,所述转发多路复用器继而分别连接到ALU 212和AGU 214。AGU 214连接到LDQ 216和STQ 218。整数调度器/执行单元200还包括物理文件寄存器220。
类似于图1,仅将微操作分派给AGSQ 206并且不分派给LDQ 216和STQ 218。AGSQ206保持分派有效负载,直到所需的源信息和适当的加载队列或存储队列条目可用为止。具体来说,当所需的源信息就绪并且用于特定微操作的加载队列条目或存储队列条目分别在LDQ 216和STQ 218中可用时,AGSQ 206针对特定加载或存储微操作执行地址生成。这维持微操作的年龄次序执行。LDQ 216和STQ 218在特定队列条目可用时通过分别经由来自LDQ216或STQ 218的输出信号230向AGSQ 206和ALSQ 204发信号来告知AGSQ 206和ALSQ 204。ALSQ 204中的存储数据微操作仅在用于特定存储微操作的存储队列条目可用时才执行并且将存储数据提供给存储队列条目。
一旦AGSQ 206执行了地址生成并且在需要时将分派有效负载保持在LDQ 216和STQ 218中,整数SCEX 200便执行微操作。LDQ 216和STQ 218分别返回用于加载微操作的数据以及执行用于存储微操作的写入,并且调度器在微操作的源信息就绪时将微操作发出到整数SCEX 200。
图3是根据特定实现方式的加载-存储/数据缓存(LSDC)单元300的高级框图和流程图。LDSC单元300包括LDQ 302、STQ 304、加载0(L0)拾取器306和加载1(L1)拾取器308。L0拾取器306连接到翻译旁视缓冲器(TLB)以及微标签访问管线0(TLB0)310和数据缓存访问管线(数据管道0)312。L1拾取器308连接到翻译旁视缓冲器(TLB)以及微标签访问管线1(TLB1)314和数据缓存访问管线(数据管道1)316。TLB0 310和TLB1 314进一步连接到L1/L2TLB 318、页巡行器323和微标签阵列319,所述微标签阵列继而连接到未命中地址缓冲器(MAB)320并且辅助从缓存322读取数据。数据管道0 312和数据管道1 316连接到缓存322。STQ 304连接到预取器324和存储管道拾取器326,所述存储管道拾取器继而连接到存储管线(STP)328。STP 328还连接到L1/L2TLB 318和微标签阵列319。STQ 304进一步连接到存储提交管线330,所述存储提交管线继而连接到写入组合缓冲器(WCB)332和缓存322。
一旦AGSQ执行了地址生成并且在适当时将分派有效负载保持在LDQ 302和STQ304中,LDSC300便执行微操作。在说明性示例中,当拾取加载微操作(例如在L0拾取器306或L1拾取器308处)时,加载微操作使用相应的TLB 0 310或TLB 1 314管线来检查相应的TLB0 310或TLB 1 314管线以寻找用于加载微操作的翻译和所预测的数据缓存方式。加载微操作还分别经由数据管道0 312和数据管道1 316来检查缓存322。在某些实现方式中,微标签阵列319允许微操作通过与整个标签进行比较而在确认所预测的数据缓存方式之前确定所述方式。页巡行器323用于确定微操作的物理地址。在另一说明性示例中,预取器324用于在将请求发送到缓存322之前填充缓存322中的线。
图4是根据特定实现方式的用于在地址生成时间分配加载和存储队列的方法的流程图400。获取微操作,将所述微操作解码并且提供给微操作队列(步骤402)。微操作队列将微操作分派给地址生成单元调度器以用于存储微操作分派有效负载(步骤404)。完成所述分派以维持年龄次序或程序次序。地址生成单元调度器从由加载队列或存储队列发送的信息来确定特定(即,按年龄排序)的队列条目是否可用(步骤406)。如果特定的队列条目不可用,那么地址生成单元调度器维持现状并且再次检查(步骤408)。
如果特定的队列条目可用(步骤410),那么地址生成单元调度器确定微操作所需的源信息是否就绪(步骤412)。如果源信息未就绪,那么地址生成单元调度器维持现状并且再次检查(步骤414)。如果源信息就绪(步骤416),那么地址生成单元调度器执行地址生成,读取微操作分派有效负载并且将微操作分派有效负载发送到适当的加载队列或存储队列(步骤418)。随后执行微操作(步骤420)。所述操作次序仅是说明性的并且可以使用其他次序。
图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.一种用于处理微操作的方法,所述方法包括:
获取微操作;
将所述微操作分派给按年龄排序的调度器队列,其中所述按年龄排序的调度器队列保持与每个微操作相关联的分派有效负载;
在以下条件下针对微操作执行地址生成:加载/存储队列中的相关联的队列条目可用并且所述微操作所需的源信息就绪;
读取所述微操作的所述分派有效负载;以及
将所述微操作的所述分派有效负载发送到所述加载/存储队列。
2.如权利要求1所述的方法,所述方法还包括:
在分派时间使每个微操作按程序次序与所述加载/存储队列中的队列条目关联以维持年龄次序。
3.如权利要求1所述的方法,所述方法还包括:
基于来自所述加载/存储队列的输入来更新最老的未提交的微操作队列条目编号。
4.如权利要求3所述的方法,所述方法还包括:
在所述按年龄排序的调度器队列处将所述最老的未提交的微操作队列条目与用于所述微操作中的每一者的队列条目进行比较以确定所述微操作的队列条目是否可用。
5.如权利要求3所述的方法,其中所述微操作是存储微操作。
6.如权利要求1所述的方法,其中分派窗口大小是所述加载/存储队列的深度和所述按年龄排序的调度器队列的深度。
7.如权利要求1所述的方法,其中跟踪所述加载/存储队列的不同时期以使得能够分派所述加载/存储队列的所述深度以上,其中每个时期表示所述加载/存储队列的循环。
8.一种用于处理微操作的处理器,所述处理器包括:
加载/存储队列;
按年龄排序的调度器队列;以及
解码器,
其中:
所述解码器被配置成将微操作分派给所述按年龄排序的调度器队列,
所述按年龄排序的调度器队列被配置成保持与每个微操作相关联的分派有效负载,
所述按年龄排序的调度器队列被配置成在以下条件下针对微操作执行地址生成:所述加载/存储队列中的相关联的队列条目可用并且所述微操作所需的源信息就绪,
所述按年龄排序的调度器队列被配置成读取所述微操作的所述分派有效负载,以及
所述按年龄排序的调度器队列被配置成将所述分派有效负载发送到所述加载/存储队列。
9.如权利要求8所述的处理器,其中所述解码器进一步被配置成使每个微操作按程序次序与所述加载/存储队列中的队列条目关联以维持所述微操作的年龄次序。
10.如权利要求9所述的处理器,其中所述加载/存储队列被配置成向所述按年龄排序的调度器队列通知所述相关联的队列条目可用。
11.如权利要求8所述的处理器,其中所述调度器被配置成:
基于来自所述加载/存储队列的输入来更新最老的未提交的微操作队列条目编号;以及
将最老的未提交的微操作队列条目与用于所述微操作中的每一者的队列条目进行比较以确定所述微操作的队列条目是否可用。
12.如权利要求8所述的处理器,其中所述微操作是存储微操作。
13.如权利要求8所述的处理器,其中分派窗口大小是所述加载/存储队列的深度和所述按年龄排序的调度器队列的深度。
14.如权利要求8所述的处理器,其中跟踪所述加载/存储队列的不同时期以使得能够分派所述加载/存储队列的所述深度以上,每个时期表示所述加载/存储队列的循环。
15.一种用于处理微操作的方法,所述方法包括:
将微操作分派给调度器队列以用于保持与每个微操作相关联的分派有效负载;
针对具有可用的相关联的队列条目并且具有为微操作就绪的源信息的所述微操作执行地址生成;
读取所述微操作的所述分派有效负载;以及
将所述微操作的所述分派有效负载发送到加载/存储队列。
16.如权利要求15所述的方法,所述方法还包括:
按程序次序将队列条目指派给每个微操作以维持年龄次序。
17.如权利要求15所述的方法,所述方法还包括:
基于来自所述加载/存储队列的输入来更新最老的未提交的微操作队列条目编号。
18.如权利要求17所述的方法,所述方法还包括:
在所述调度器队列处将所述最老的未提交的微操作队列条目与用于所述微操作中的每一者的队列条目进行比较以确定所述微操作的队列条目是否可用。
19.如权利要求15所述的方法,其中分派窗口大小是所述加载/存储队列的深度和所述调度器队列的深度。
20.如权利要求15所述的方法,其中跟踪所述加载/存储队列的不同时期以使得能够分派所述加载/存储队列的所述深度以上,其中每个时期表示所述加载/存储队列的循环。
CN201680088368.5A 2016-08-15 2016-09-19 用于在地址生成时间分配加载和存储队列的系统和方法 Active CN109564510B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/236,882 2016-08-15
US15/236,882 US11086628B2 (en) 2016-08-15 2016-08-15 System and method for load and store queue allocations at address generation time
PCT/US2016/052494 WO2018034678A1 (en) 2016-08-15 2016-09-19 System and method for load and store queue allocations at address generation time

Publications (2)

Publication Number Publication Date
CN109564510A true CN109564510A (zh) 2019-04-02
CN109564510B CN109564510B (zh) 2023-11-14

Family

ID=61159026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680088368.5A Active CN109564510B (zh) 2016-08-15 2016-09-19 用于在地址生成时间分配加载和存储队列的系统和方法

Country Status (6)

Country Link
US (1) US11086628B2 (zh)
EP (1) EP3497558B1 (zh)
JP (1) JP6911102B2 (zh)
KR (1) KR20190031498A (zh)
CN (1) CN109564510B (zh)
WO (1) WO2018034678A1 (zh)

Families Citing this family (2)

* 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
US11513802B2 (en) * 2020-09-27 2022-11-29 Advanced Micro Devices, Inc. Compressing micro-operations in scheduler entries in a processor

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519864A (en) * 1993-12-27 1996-05-21 Intel Corporation Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US20030182537A1 (en) * 2002-03-21 2003-09-25 International Business Machines Corporation Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system
US6785802B1 (en) * 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
US20120278685A1 (en) * 2007-06-05 2012-11-01 Ramesh Gunna Store Handling in a Processor
US20120291037A1 (en) * 2011-05-13 2012-11-15 Advanced Micro Devices, Inc. Method and apparatus for prioritizing processor scheduler queue operations
US20140129806A1 (en) * 2012-11-08 2014-05-08 Advanced Micro Devices, Inc. Load/store picker
US20140351562A1 (en) * 2013-05-23 2014-11-27 Advanced Micro Devices, Inc. Techniques for scheduling operations at an instruction pipeline
CN104823154A (zh) * 2012-06-15 2015-08-05 索夫特机械公司 具有拥有统一结构的动态分派窗口的虚拟加载存储队列
CN104823168A (zh) * 2012-06-15 2015-08-05 索夫特机械公司 用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方法和系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US7782885B1 (en) * 2002-12-10 2010-08-24 Cisco Technology, Inc. System and method for queue management using queue sets
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
KR101702788B1 (ko) * 2012-06-15 2017-02-03 소프트 머신즈, 인크. 스토어 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 로드 스토어 버퍼
GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US9367322B1 (en) 2015-07-27 2016-06-14 International Business Machines Corporation Age based fast instruction issue

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519864A (en) * 1993-12-27 1996-05-21 Intel Corporation Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US6785802B1 (en) * 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
US20030182537A1 (en) * 2002-03-21 2003-09-25 International Business Machines Corporation Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system
US20120278685A1 (en) * 2007-06-05 2012-11-01 Ramesh Gunna Store Handling in a Processor
US20120291037A1 (en) * 2011-05-13 2012-11-15 Advanced Micro Devices, Inc. Method and apparatus for prioritizing processor scheduler queue operations
CN104823154A (zh) * 2012-06-15 2015-08-05 索夫特机械公司 具有拥有统一结构的动态分派窗口的虚拟加载存储队列
CN104823168A (zh) * 2012-06-15 2015-08-05 索夫特机械公司 用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方法和系统
US20140129806A1 (en) * 2012-11-08 2014-05-08 Advanced Micro Devices, Inc. Load/store picker
US20140351562A1 (en) * 2013-05-23 2014-11-27 Advanced Micro Devices, Inc. Techniques for scheduling operations at an instruction pipeline

Also Published As

Publication number Publication date
EP3497558B1 (en) 2022-11-23
EP3497558A4 (en) 2020-07-08
US11086628B2 (en) 2021-08-10
JP6911102B2 (ja) 2021-07-28
JP2019525351A (ja) 2019-09-05
CN109564510B (zh) 2023-11-14
EP3497558A1 (en) 2019-06-19
KR20190031498A (ko) 2019-03-26
US20180046463A1 (en) 2018-02-15
WO2018034678A1 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
TWI575388B (zh) 有效地執行散列運算的方法及設備
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
US9904553B2 (en) Method and apparatus for implementing dynamic portbinding within a reservation station
TW201702866A (zh) 用戶等級分叉及會合處理器、方法、系統及指令
CN109564546B (zh) 通过绕过加载存储单元来跟踪存储和加载
KR20110130488A (ko) 종속 행렬을 사용하여 할당해제된 로드 명령들을 추적하는 장치 및 방법
US7725690B2 (en) Distributed dispatch with concurrent, out-of-order dispatch
CN109564510A (zh) 用于在地址生成时间分配加载和存储队列的系统和方法
EP3475808B1 (en) Method and apparatus for performing simd gather and copy operations
US11093246B2 (en) Banked slice-target register file for wide dataflow execution in a microprocessor
US10846095B2 (en) System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
US20220197696A1 (en) Condensed command packet for high throughput and low overhead kernel launch
US11314510B2 (en) Tracking load and store instructions and addresses in an out-of-order processor
US20150277905A1 (en) Arithmetic processing unit and control method for arithmetic processing unit

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