CN101694613B - 不对准存储器存取预测 - Google Patents
不对准存储器存取预测 Download PDFInfo
- Publication number
- CN101694613B CN101694613B CN2009101788459A CN200910178845A CN101694613B CN 101694613 B CN101694613 B CN 101694613B CN 2009101788459 A CN2009101788459 A CN 2009101788459A CN 200910178845 A CN200910178845 A CN 200910178845A CN 101694613 B CN101694613 B CN 101694613B
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory access
- pipeline
- misalignment
- prediction
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims abstract description 180
- 238000000034 method Methods 0.000 claims abstract description 11
- 238000003860 storage Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 3
- 230000002902 bimodal effect Effects 0.000 abstract description 13
- 230000000875 corresponding effect Effects 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 6
- 230000015556 catabolic process Effects 0.000 description 5
- 238000006731 degradation reaction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 229920006395 saturated elastomer Polymers 0.000 description 4
- 241001269238 Data Species 0.000 description 2
- 206010027336 Menstruation delayed Diseases 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在指令执行管线中,预测存储器存取指令的未对准。基于所述预测,在所述存储器存取指令的有效地址产生之前,在所述管线中产生额外微操作。所述额外微操作存取越过预定地址边界的存储器。预测所述未对准且在所述管线中早期产生微操作确保足够的管线控制资源可用于产生和跟踪所述额外微操作,从而在所述资源在有效地址产生时不可用的情况下避免管线冲洗。所述未对准预测可采用已知的条件分支预测技术,例如旗标、双峰计数器、局部预测器、全局预测器和经组合的预测器。未对准预测器可由存储器存取指令旗标或未对准指令类型启用或偏置。
Description
分案申请的相关信息
本案是一件分案申请。本案的母案是国际申请号为PCT/US2006/005782,公开日为2006年8月24日的PCT申请进入中国国家阶段后申请号为:200680011584.6,发明名称为“不对准存储器存取预测”的发明专利申请案。
技术领域
本发明大体上涉及处理器领域,且明确地说涉及预测管线处理器中的不对准存储器存取。
背景技术
便携式电子装置已变得普遍。便携式电子装置的两个趋势是功能性增加和尺寸减小。功能性增加是由较快且更强大的处理器所提供的增加的计算能力推动的。
除了提供高级特征和功能性,便携式电子装置自身的尺寸和重量不断缩减。此缩减趋势的一个影响是用于向装置中的处理器和其它电子元件供电的电池的尺寸不断减小。尽管电池技术提高部分抵销了所述问题,但电池尺寸减小对所有便携式电子装置电子元件强加严格的功率预算。便携式电子装置的功率预算的相当大部分是由处理器消耗的功率。
因此,提高性能且减少功率消耗的处理器改进对于例如便携式电子装置的许多应用来说是理想的。通常现代处理器采用管线结构,其中顺序指令(其每一者具有多个执行步骤)在执行上重叠。为了获得最大性能,指令应连续流动通过管线。导致指令从管线冲洗出且随后重新开始的任何情形均可能不利地影响性能和功率消耗两者。
某些管线资源(例如,用于指令状态和追踪的队列位置)在指令进入管线时被分派。如果稍后在管线中发现单个指令需要比最初分派的资源更多的资源,那么可能需要冲洗随后指令以允许将它们的资源重新分派给需要所述资源的指令。
从存储器加载未对准数据或将未对准数据存储到存储器的存储器存取指令是可能需要比最初分派到的管线资源更多的管线资源的指令的一个实例,可能直到在管线深处才发现指令需要更多管线资源。未对准数据是在存储于存储器中时越过预定存储器边界(例如,字或半字边界)的那些数据。由于在逻辑上构造和寻址存储器以及在物理上将存储器耦合到存储器总线的方式的缘故,通常不能在单个周期中读取或写入越过存储器边界的数据。事实上,可能需要两个连续总线周期——一个用以读取或写入边界一侧的数据,且另一个用以读取或写入剩余数据。
对于不对准数据的存储器存取指令——即加载或存储指令——必须在管线中产生额外指令步骤或微操作,以执行不对准数据所需的额外存储器存取。然而,在执行级处,直到知道存储器存取的有效地址和数据大小(这可能仅发生在管线深处)时才能确定数据的对准。当产生有效地址且发现数据未对准时,可能存在不足以用于产生微操作来执行第二存储器存取的管线控制资源。在此类未对准的情况下,管线必须被冲洗出至少所有随后指令,以释放这些资源。接着必须在管线中重新取出并重新执行所述冲洗出的指令,从而使处理器性能降级且浪费了功率。
发明内容
可在管线中早期在指令的有效地址产生之前预测存储器存取指令的数据未对准。可分派管线资源且控制管线以创建第二微操作。根据未对准数据的需要,利用所述第二微操作来执行第二存储器存取周期。
本发明在一个实施例中涉及一种在指令执行管线中处理存储器存取指令的方法。预测存储器存取指令的未对准,且在针对存储器存取指令产生有效地址之前,响应于所述预测在管线中产生至少一个微操作,所述微操作针对未对准数据执行第二存储器存取。
在另一实施例中,本发明涉及一种管线处理器。所述处理器包括包含多个管级的指令执行管线,和产生存储器存取指令将存取未对准数据的预测的未对准预测器。所述处理器另外包括控制逻辑,其在针对存储器存取指令产生有效地址之前,响应于所述预测在管线中针对存储器存取指令产生额外微操作。
附图说明
图1是处理器的功能方框图。
图2是存储器组织的图。
图3是处理器管线的一部分的功能方框图。
具体实施方式
管线技术是一种处理器实施技术,借此多个指令在执行时同时重叠。典型结构中的每一指令通常以多个执行步骤来执行,所述执行步骤例如取出、解码、一个或一个以上执行步骤、存储器存取和反写。处理器管线包含多个“管级”。每一管级(其通常包含逻辑和存储装置)完成指令的执行步骤或执行步骤的一部分。所述管级耦合在一起以形成管线。指令进入管级,且在所述管级中被连续处理。在先前指令完成执行之前,额外指令进入管线——因此,可在任何给定时间在管线内处理多个指令。这种在顺序指令流中的指令间开发并行性的能力显著有助于改进处理器性能。在理想条件下且在在一个周期中完成每个管级的处理器中,在填充管线的简短初始过程之后,指令可在每个周期中完成执行。
由于包括指令间的数据相依性(数据危险)、例如分支的控制相依性(控制危险)、处理器资源分派冲突(结构危险)、中断、高速缓冲存储器未中等的多种因素的缘故,实际上很少实现此类理想条件。另外,某些指令可能需要通过一个或一个以上所述管级一次以上。在此情况下,处理器可为所述指令产生多个微操作。如本文所使用,微操作是一种逻辑实体,其每次占据一个管级且流动穿过管线。理想地,大多数指令包含管线中的单个微操作(以接近每个周期一个指令的目标)。然而,指令可包含两个或两个以上微操作,或者可分裂成两个或两个以上,其每一者依序流动穿过管线。
一种形式的结构管线危险由未对准的存储器存取产生。在执行级期间,许多存储器存取指令计算有效存储器地址——即从其处加载数据或数据被存储到的地址。然而,在解码级期间,将处理器资源——明确地说,向指令分派管级和穿过管线追踪指令的管线控制资源——分派到加载或存储指令。在字、半字或其它预定地址边界上对准存储器地址的常见情况下,可在单个管级中执行加载或存储操作(但在从存储器检索数据时可暂停管线)。
如果存储器存取指令针对于越过预定地址边界的数据,那么需要两个加载或存储操作,从而需要执行管线中的两个微操作。然而,很可能在解码级中仅将一个微操作分派给所述加载或存储。需要在管线的执行级中产生新的微操作存在问题。在管线资源被完全分派的情况下,需要新的微操作将造成异常,从而需要从管线中冲洗出随后所有的指令以释放必需的管线控制资源。
图1描绘处理器10的功能方框图。所述处理器10根据控制逻辑14在指令执行管线12中执行指令,所述控制逻辑14可包括指令执行FIFO 15。所述管线包括各种寄存器或锁存器器16(其以管级形式组织)和一个或一个以上算术逻辑单元(ALU)18。通用寄存器(GPR)文件20提供组成存储器层级的顶部的寄存器。管线从指令高速缓冲存储器22中取出指令,其中存储器寻址和许可由指令侧转译后备缓冲器(ITLB)24管理。从数据高速缓冲存储器26存取数据,其中存储器寻址和许可由主转译后备缓冲器(TLB)28管理。在各种实施例中,ITLB可包含TLB的一部分的副本。或者,ITLB和TLB可集成。类似地,在处理器10的各种实施例中,I高速缓冲存储器22和D高速缓冲存储器26可集成或联合。I高速缓冲存储器22和/或D高速缓冲存储器26中的未中造成在存储器接口30的控制下对主(芯片外)存储器32的存取,所述存储器接口30可包括高速缓冲存储器未中处理队列29。处理器10可包括输入/输出(I/O)接口34,其控制对各种外围装置36的存取。所属领域的技术人员将认识到可能对处理器10作出多种变化。举例来说,处理器10可包括针对I和D高速缓冲存储器中的任一者或两者的第二级别(L2)高速缓冲存储器。另外,可在特定实施例中省略处理器10中所描绘的功能块中的一者或一者以上。
以下表1描绘代表性管线操作的图。所述代表性结构中的指令以六个步骤执行:
IF-指令取出
ID-指令解码
EX1-执行(取出用于存储器存取指令的地址操作数)
EX2-执行(针对存储器存取指令的有效地址计算)
MEM-存储器存取
WB-反写
表1:代表性管线操作
如果每一管级以一个周期执行,且如果不存在管线停止、危险或中断,那么从周期6到10,在每一周期中完成一个指令并执行其结果的反写。时钟周期1到4代表填充管线的初始化过程,其(例如)在管线的复位、上下文切换、中断或任何其它冲洗之后执行。由于额外指令跟随第i+4指令,因而在理想情况下可无限期地继续每个周期一个指令的执行。表1的管线结构仅仅是代表性的。在任何给定处理器实施方案中,管线可包括针对任何指令步骤的任何数目的管级。
加载(LD)和存储(ST)指令存取存储器以分别读取和写入数据。存储器经组织以每次同时存取预定量的数据。图2是电子装置中的一个存储器结构的方框图,其包括处理器10、总线31和存储器32。在此实例中,总线31为32位宽,且存储器32(其可包含(例如)处理器中的高速缓冲存储器或芯片外RAM)在字(32位)边界上对准。如所属领域的技术人员将容易了解,可实施多种不同的总线和存储器结构,其具有相应的不同数据对准边界。
作为不对准存储器存取的实例,图2描绘由LD指令以有效开始字节地址0x0A读取的存储器,和具有三个字节的尺寸字段。对于字对准的存储器32,不能在一个总线周期中从存储器读取此数据。事实上,处理器10必须首先读取在0x08处开始的全字(遮蔽字节0x08和0x09),且接着读取在0x0C处开始的全字(遮蔽字节0x0D到0x0F)。在具有双字存储器对准和64位总线的系统中,可在单个周期中读取此数据;然而,不可读取在0x07处开始的3字节数据。一般来说,任何现实总线31和存储器32配置可引起不对准存储器存取的问题。
因为不对准数据需要两个总线周期,所以针对不对准数据的存储器存取指令(本文中称为“不对准存储器指令”)将导致在执行级中创建两个微操作。举例来说,如果表1中第i+3个指令是不对准存储器存取指令,那么管线将如以下表2中描绘而执行。
表2:具有不对准存储器存取指令的代表性管线
在EX2级期间,在时钟周期7中确定存储器存取指令i+3的有效地址。只有在此刻,处理器控制逻辑才可确定有效存储器存取是不对准的——也就是说,其越过预定存储器边界且不能在单个总线周期中存取。如果足够的管线资源可用,那么处理器将为存储器存取指令产生额外的微操作(表2中“gen μ-op”),指示为(i+3)2。最初分派的微操作和新的微操作接着依序前进通过剩余管线。
初始微操作(已在EX2处计算第一存储器存取的地址)接着在MEM处存取经寻址数据的第一部分,且在WB处写入数据。新创建的微操作将在时钟周期8中在EX2处计算第二存储器存取的地址(例如,通过添加一个字偏移),接着在MEM处存取经寻址数据的第二部分,且在WB处写入数据。
由于指令i+3的未对准数据所需的额外微操作的缘故,指令i+4在时钟周期8中停止。为了在管线中实施此停止,必须门控针对EX1锁存器的时钟,针对EX1锁存器的输出重新循环到针对EX1锁存器的输入处的多路复用器,或者必须采用某种其它机制来保持EX1内容通过时钟周期7和8两者。类似地,随后指令i+5将在整个管线中在DCD锁存器等等处停止。实施此停止控制提出设计挑战,当在管线中晚期才发现需要停止时尤其如此。另外,需要针对EX2处的存储器存取指令以及针对先前管级中的其它指令“重新循环”管级会在一个或一个以上关键路径上添加多路复用器选择延迟,从而可能通过增加机器周期时间而降低性能。将可能造成管线停止的事件减到最少改进了性能。
还可参看图3更详细地描述未对准存储器存取,图3是指令管线12的一部分的功能方框图。在管线中从指令高速缓冲存储器22取出LD指令并将其加载到IF锁存器40中。所述指令由解码逻辑42解码。在一个实施例中,LD通过将位于第一寄存器r1中的基地址加上位于第二寄存器r2中的偏移来计算有效地址。从所述指令中解码出所述两个寄存器r1和r2的地址以及数据的大小,且将其锁存在DCD锁存器44中。这些寄存器地址接着可将寄存器文件(例如,GPR文件20)索引,所述寄存器文件传回寄存器(指示为(r1)和(r2))的内容。将这些值存储在EX1锁存器46中,由ALU 18相加,且将有效存储器地址存储在EX2锁存器48中。存储器存取接着在50处继续,从而存取数据高速缓冲存储器26。如果数据高速缓冲存储器26中发生存取未中,那么存储器存取操作50在必要时将执行地址转译,且存取芯片外存储器32,从而停止管线直到解决存储器存取为止。在任何情况下,存储器存取操作50传回不对准数据的第一部分,将其存储在MEM锁存器52中。
在48处通过将(r1)和(r2)相加而产生有效地址时,控制逻辑14检查有效地址和大小字段,且第一次检测到存储器存取不对准。如果足够的处理器资源是可用的,那么有效地址在EX2锁存器48处“重新循环”,如箭头54所指示。用单字偏移来更新所述地址,以为第二存储器存取产生有效地址。这向管线添加微操作;且不允许随后指令前进到EX2管级。当从第一字提取的数据沿着管线前进时,在50处存取第二字,并将其存储在MEM锁存器52中。接着可连续地将数据写入到GPR,或在适当时,将其进行组合并接着写入。
注意,出于解释的目的,图3描绘管线12的每一级,在所述级中具有相关的LD指令步骤。实际上,一旦相关LD指令步骤在一管级中完成且相应的微操作移动到后续级,就将另一指令的微操作加载到所述管级中以进行处理。因此,当在48处锁存LD指令的有效地址时,先前三个管级加载有三个微操作,其可对应于多达三个不同指令。当在EX2锁存器48处产生有效地址时,如果没有足够的管线控制资源可用于如54处所描绘而循环地址且产生第二微操作以执行第二存储器存取,那么造成结构危险且将发生异常。在此情况下,必须从管线处冲洗出未对准LD指令后面的所有指令,以使得必要的控制资源可用。稍后必须重新取出这些指令并对其重新处理,从而导致性能损失且浪费与两次执行所述操作相关联的功率。
必须可用于在EX2管级中创建微操作的管线控制资源可包括指令跟踪FIFO 15(图1)中的条目。所述指令跟踪FIFO 15包括针对每一发出指令(以编程次序)的条目。当发出相应指令时分派FIFO 15中的条目,且在若干周期之后,当管线控制逻辑14确定所述指令是否具有可能造成中断的异常时,对所述条目进行更新。依次从指令跟踪FIFO 15中移除条目,使每一者在已被“证实”(即,管线控制器确定指令将完成执行而不发生异常)并“确认”(即,管线控制器已认识到,其及其所有先趋者已被确认,所以显然所述指令在管线中完成执行)之后出栈。
如果指令跟踪FIFO 15中的每一条目对应于单个微操作,那么简化了指令跟踪FIFO15的结构和控制。另一方面,如果不对准存储器存取指令造成在管线深处(例如,在EX2管级中)产生额外微操作,那么指令跟踪FIFO 15中的每一条目必须能够跟踪多个潜在微操作,从而对于每一FIFO条目增加了硬件资源和控制复杂性。此增加的复杂性和大小对于每一FIFO条目来说是需要的,但不对准存储器存取指令(晚期将需要多个微操作跟踪的仅有的指令)相对稀少。作为将指令跟踪FIFO 15设计成每个条目跟踪多个微操作的替代方案,每一条目可仅跟踪一个微操作。在此情况下,晚期未对准存储器存取指令将造成管线(和指令跟踪FIFO 15)冲洗出其后面的所有指令,在指令跟踪FIFO 15中分派对应于两个微指令的两个条目,且重新取出并重新发出所有随后指令。这导致显著的性能和功率损失。
除了指令跟踪FIFO 15之外,在管线中晚期可能不可用的未对准存储器指令所必需的另一资源是高速缓冲存储器未中队列29中的条目。当数据高速缓冲存储器中发生数据存取未中时,可将所述存取放置在队列29中以存取外部总线上的主存储器。如果没有队列条目可用,那么管线必须停止。在存储器存取指令的情况下,可在DCD级期间检查高速缓冲存储器未中队列29,且如果条目可用,那么控制逻辑14允许指令前进,从而知道高速缓冲存储器未中将不会使管线12停止。然而,如果不对准存储器存取指令晚期必须在管中产生额外微操作,以执行额外存储器存取,且如果高速缓冲存储器中发生存储器存取未中,那么需要第二高速缓冲存储器未中队列条目。由于在DCD管级中仅保留一个,因而可能没有足够的队列资源可用,从而造成管线12停止。
根据本发明的一个实施例,在针对存储器存取指令产生有效地址之前,预测存储器存取指令中的数据未对准,且响应于所述预测创建微操作。新的微操作执行存取未对准数据所需的第二存储器存取。这允许早期在管线中(例如,在解码指令之后立即)分派管线控制资源。
再次参看图2,一旦在42处解码存储器存取指令,未对准预测器56就检测所述指令。响应于未对准预测,可立即创建第二微操作,如在IF锁存器40处“重新循环”LD指令所指示。所述第二微操作将跟随初级加载指令微操作通过管线,且将可用于在所预测的数据未对准正确时执行第二存储器存取周期。额外的微操作实际上不需要执行上文针对LD指令所描述的寄存器存取和地址产生,因为已知存储器存取的地址与具有(例如)单字偏移的LD指令的地址是相同的。在50处通过LD指令进行第一存储器存取之后,如果未对准预测是正确的,那么当第一数据存储在MEM锁存器52中时,计算读取未对准数据所必需的第二存储器存取的地址并将其存储在EX2锁存器48中。接着执行第二存储器存取,且从高速缓冲存储器26或存储器32处获得第二数据,且将其加载到MEM锁存器52中。
如果未对准预测错误,那么不执行第二存储器存取,且放弃所述额外的微操作。在管线停止的情况下,LD之后的指令可前进,从而消耗经分派以用于第二微操作的资源并有效地将其从管线中移除。
以下表3描绘其中指令i+3是被正确预测未对准的未对准存储器存取指令的管线。
表3:具有正确预测的不对准存储器存取指令的代表性管线
响应于将指令解码为LD且预测未对准,在解码管级处在时钟周期5中产生第二微操作(i+3)2。如此早期产生微操作(在时钟周期7处在EX2管级中计算LD指令的有效地址之前)确保足够的管线控制资源可用于微操作(i+3)2。指令执行的时序以另外方式与表2中的类似,其假定足够的资源可用于在EX2管级中创建第二微操作(i+3)2。一个不同之是使指令i+4停止相同量,但停止在其执行序列中较早发生,因为在管线中较早产生微操作(i+3)2。
如果未对准预测准确,那么精确地分派正确的管线控制资源以用于执行未对准存储器存取,且可将后续指令加载到管线中并执行而不用担心它们由于未对准的缘故而被冲洗。如果未对准预测错误,那么处理器性能和功率管理降低。然而,性能的降级不是对称的。以下表4描绘对于未对准预测准确性可能性的相关性能和功率影响。
预测 | 实际 | 影响 | 注释 |
对准 | 对准 | 最佳 | 这是普遍情况,且将在99+%应用中发生 |
对准 | 未对准 | 可能极坏 | 如果没有足够的资源可用于产生微操作,那么必定造成异常且冲洗管 |
未对准 | 对准 | 不利 | 单级管气泡——在DCD处创建的非必要微操作 |
未对准 | 未对准 | 最佳 | 确保足够的资源可用于必需的微操作 |
表4:未对准预测准确性的影响
经正确预测的情况通过根据充分执行指令需要的那样精确地将所需数目的微操作分派到存储器存取指令来提供最佳性能。上文描述了预测为对准但实际上未对准的错误预测情况,其中直到针对存储器存取指令产生有效地址(在上述实例中在EX2管级中)才检验数据对准。如所论述,如果足够的管线控制资源可用,那么唯一的性能降级是完成所述存储器存取指令之后的指令的等待时间增加,因为创建了微操作以执行第二存储器存取操作。然而,如果没有足够的管线控制资源可用,那么将发生异常,且管线12将冲洗出加载于存储器存取指令之后的所有指令,以释放用以创建和管理额外微操作的必要资源。这是性能和功率优化方面的最坏可能性。
预测为未对准但实际上对准的错误预测情况在管线12中在存储器存取指令之后产生多余的微操作或“气泡”。一旦产生存储器存取指令的有效地址且控制逻辑14可检测到其实际上是对准的,那么可放弃所述多余的微操作。如果(例如)高速缓冲存储器26中发生存储器存取指令未中,从而迫使存取芯片外存储器32,那么将停止管线12以等待完成存储器存取操作。如果所产生的微操作后面的另一指令在EX1或EX2管级中不遭遇任何危险,那么其可前进到恰好在存储器存取指令后面,从而使得气泡消失。在此情况下,尽管浪费了某些功率来创建和管理微操作,但没有性能降级。在高速缓冲存储器26中发生存储器存取指令命中(且管线12另外不停止)的更可能的情况下,气泡将流动通过管线12,从而造成单周期性能降级(假定每个管级一个周期)。然而,错误预测的未对准将不会造成异常或由于缺少必要控制资源而冲洗管线12。
可以各种其它方式来执行未对准预测,本文中揭示了某些方式。然而,本发明不限于所揭示的特定未对准预测算法。预测(以任何方式)存储器存取指令的未对准和在产生指令的有效地址之前响应于所述预测产生微操作以存取未对准数据属于本发明的范围内。
在未对准数据存取是常见的情况下,合理的微小未对准预测算法可能只是假定未对准,且始终在针对存储器存取指令产生有效地址之前产生额外微操作。这将以每个实际上对准的存储器存取一个周期的执行性能冲击为代价保证不会由于未对准的缘故而造成异常或管线冲洗。根据本发明的一个实施例,“预测未对准”模式由控制寄存器中的位界定。当应用预期较大数目的未对准存储器存取时,其可通过设定所述位来启用所述模式。当设定所述位时,预测所有存储器存取为未对准的。在另一实施例中,未对准预测由存储器存取指令的页表中的属性控制,使得将以相同方式(无论对准还是未对准)预测来自单个页的指令进行的所有存储器存取。
大多数代码可能不会遭遇如此容易地被识别为在特定代码片段或存储器区域内的未对准存储器存取。因此,需要较复杂的未对准预测方法——预测可被连续启用但不盲目预测所有存储器存取或特定页上的所有存取将是未对准的。举例来说,在一个实施例中,未对准预测可遵循堆栈指针对准。如果堆栈指针未对准,那么预测存储器存取是未对准的。
预测条件分支指令的行为的方法是众所周知的,且许多方法可应用于预测未对准。举例来说,过去的新近存储器存取型式可以是未来存储器存取的对准的良好指示符。在一个实施例中,多个一位旗标(通过存储器存取指令的地址位索引)指示相应指令进行的最近存储器存取的对准——例如,“一”指示未对准存取,且“零”指示对准存取(或反之亦然)。未对准旗标可包括比较存储器存取指令地址的全部或大部分以防止存储器存取指令间的未对准混淆(其可降低预测准确性)的标签。或者,为了节省资源,可仅使用地址的最低有效少数位将未对准旗标索引。
在产生存储器存取指令的有效地址之前,且优选地尽可能早地,检验相应的未对准旗标。如果存储器存取指令的最近执行未对准,那么管线控制器可预测待决存取也将是未对准的,且产生微操作以执行第二存储器存取。由于在指令解码管级中首先知道指令(即,存储器存取指令)的类型,因而优选地在那里创建微操作。然而,可在管线中稍后创建微操作。在产生存储器存取指令的有效地址之前响应于未对准预测进行的任何微操作创建均属于本发明范围内。
单个位未对准旗标的一个结果是,对准存储器存取指令流中的奇数未对准存储器存取指令将误预测两次——一次是在首次遭遇未对准指令时,且再次是在指令(其未对准旗标现被设定)的下一次对准执行时。此问题的解决方案(在条件分支预测中也是已知的)是双峰未对准预测器,其包含通过存储器存取指令地址索引的两位饱和计数器的表。每一计数器具有四个状态中的一者:
11-强未对准
10-弱未对准
01-弱对准
00-强对准
当产生存储器存取指令的有效地址时,更新相应的计数器。未对准存储器存取指令使状态朝向强未对准递增,且对准存储器存取指令使状态朝向强对准递减。此类双峰计数器将仅对对准存取流中的奇数未对准存取误预测一次,其代价是在未对准存取流的开始处误预测两次。
可从条件分支预测借用的另一未对准预测算法是局部未对准预测器。局部未对准预测器维持两个表。第一表是局部未对准历史表。其通过存储器存取指令的地址位被索引,且其记录每一存储器存取指令的n个最近执行的对准/未对准历史。另一表是型式历史表。类似于双峰预测器,此表含有双峰计数器;然而,其索引是从第一表中的未对准历史中产生的。为了预测对准,查找未对准历史,且接着使用所述历史来查找进行未对准预测的双峰计数器。
用于预测未对准的又一选项是全局未对准预测器,其利用许多存储器存取的行为与其它新近存储器存取的历史极其相关的事实。全局未对准预测器保持以所执行的每个存储器存取指令的新近未对准历史更新的单个移位寄存器,且使用此值将双峰计数器的表索引。
或者,所述双峰计数器的表可用与存储器存取指令的地址中的少数位链接的新近未对准历史来索引,这称为gselect预测器。对于较小的表尺寸,gselect可比局部预测产生更准确的结果。作为另一替代方案,存储器存取指令地址可与全局历史进行异或运算,而并非链接,这称为gshare预测器。对于较大的表,gshare可比gselet产生更准确的未对准预测。即使gselect和gshare不如局部预测准确,但它们可能出于实施原因而为优选的。gselect和gshare对于每个对准预测需要单次表查找,而局部预测需要连续的两次表查找。
1993年,Scott McFarling在数字西方研究工作实验室技术说明(Digital WesternResearch Laboratory Technical Note)TN-36,“Combining Branch Predictors”中提议组合分支预测器,所述文章全文以引用的方式并入本文中。根据本发明,McFarling所提议的技术可有利地应用于预测未对准存储器存取的问题,以借此在存储器存取指令的有效地址产生之前产生管线微操作。
在一个实施例中,经组合的未对准预测并行使用三个预测器:双峰、gshare,和类似双峰预测器以基于每个存储器存取指令来挑选使用双峰或gshare中的哪一者。选择预测器是另一种2位升/降饱和计数器,在此情况下,MSB选择将使用的预测。在此情况下,每当双峰和gshare预测不一致时更新计数器,以赞同较为准确的任何一个预测器。
在另一实施例中,未对准预测器可维持未对准高速缓冲存储器,其可为完全相关联或设定相关联的,且可通过存储器存取指令地址的一部分或所述地址的与其它新近未对准历史(例如对于以上gselect和gshare参数)链接或进行异或运算的一部分索引。在管线中早期,例如在指令取出管级期间(例如,在恰好知道指令是存储器存取指令之前),可将高速缓冲存储器索引。如果未对准高速缓冲存储器命中,那么存储器存取最近为未对准的,且可预测为未对准。如果此高速缓冲存储器存取未中,那么存储器存取被预测为对准的。向用于未预测为未对准的存储器存取指令的高速缓冲存储器添加条目,且从用于预测为不对准的对准存储器存取的高速缓冲存储器中移除条目。
各种其它未对准预测算法是可能的。举例来说,未对准预测器可保持存储器存取指令的对准行为的详细统计,且逐个指令或全局地基于过去对准经历的统计平均值而预测未对准。类似地,未对准预测器可维持n个最近存储器存取指令的对准的滚动平均值。
某些指令集结构在操作码中包括静态预测位,其可由程序员基于他或她对应用的特定认识来指定。举例来说,如果在“遇误分支(branch on error)”情形中使用分支且错误相对稀少,那么程序员可静态地预测那些分支为“不采用”。类似地,程序员可洞察到特定应用的存储器对准行为。举例来说,许多数据处理应用利用设计周全且有序的数据结构,且将预期很少(如果有的话)的不对准存储器存取。另一方面,某些应用可预期较大数目的不对准数据存取。实例可包括通信程序从共享信道中的连续数据流中提取特定数据,或数据获得应用响应于异步触发器记录来自连续输出的数据。在此类应用中,启用未对准预测或者将未对准预测偏置到较积极模式可改进处理器性能和功率节省。根据本发明的一个实施例,程序员可经由存储器存取指令中的旗标或一组不对准存储器存取指令来影响程序的未对准预测行为。
在一个实施例中,存储器存取指令(例如,LD和ST指令)包括参数列表中的旗标,其指示应执行未对准预测。或者,指令集可包括分别针对可能未对准的加载和存储操作的新的指令(例如,LDMAL和STMAL)。此旗标或新的指令向未对准预测器56提供输入以启用存储器对准预测,且在有效地址产生之前较早地产生微操作,以执行额外存储器存取周期来存取不对准数据。
在另一实施例中,未对准预测旗标或指令类型将未对准预测器56置于一种模式中,在所述模式中与在没有旗标的情况下相比,其作出更积极的未对准预测。举例来说,旗标或指令类型可将未对准预测器从使用两位双峰饱和计数器(如上所述)切换为三位饱和计数器,其中八个状态中的五个或六个状态指示所预测的未对准的程度。此类非对准预测旗标或指令类型的一个优点是,由程序员来控制未对准预测,程序员依靠他或她对应用行为的认识能更好地预测何时未对准预测可能引起处理器性能和功率管理改进。
尽管本文已相对于本发明的特定特征、方面和实施例描述了本发明,但将了解,在本发明的广泛范围内可能作出许多变化、修改和其它实施例,且因此,应将所有变化、修改和实施例视为属于本发明范围内。因此,应在所有方面将本发明实施例解释为说明性的而并非限制性的,且期望在所附权利要求书的含义和等效范围内的所有变化均包含于其中。
Claims (8)
1.一种在指令执行管线中处理存储器存取指令的方法,所述存储器存取指令执行第一存储器存取,所述方法包含:
在获得与有效存储器存取指令的产生相关联的地址操作数之前,在所述指令执行管线的解码级期间,针对所述存储器存取指令预测数据未对准,
其中针对所述存储器存取指令的预测数据未对准包括在控制寄存器中设定未对准预测比特,使得当所述未对准预测比特被设定时,所有的存储器存取指令被预测为是未对准的;以及
响应于所述预测在所述管线中产生至少一个微操作,所述至少一个微操作针对未对准的数据执行第二存储器存取。
2.根据权利要求1所述的方法,其中在所述管线中产生至少一个微操作包含在指令解码管线级中产生所述微操作。
3.根据权利要求1所述的方法,其中产生至少一个微操作包含针对所述微操作分派管线控制资源。
4.一种管线处理器,其包含:
指令执行管线,其包含多个管线级;
未对准预测器,其在所述指令执行管线的解码级期间经配置以在获得与有效存储器存取指令的产生相关联的地址操作数之前,产生存储器存取指令将存取未对准数据的预测,
其中所述未对准预测器包括在控制寄存器中设定未对准预测比特,使得当所述比特被设置时,所有的存储器存取指令都被预测为是未对准的;以及
控制逻辑,其在针对所述存储器存取指令产生有效地址之前,响应于所述预测在所述管线中产生额外微操作,以执行额外存储器存取。
5.根据权利要求4所述的处理器,其中所述额外微操作是在指令解码管线级中产生的。
6.根据权利要求4所述的处理器,其中所述额外微操作占据至少一个所述管线级。
7.根据权利要求4所述的处理器,其中所述未对准预测器包括存储所述存储器存取指令对准历史的存储器。
8.根据权利要求4所述的处理器,其进一步包含指令执行先进先出(FIFO)缓冲器,且其中所述控制逻辑在对应于所述额外微操作的所述指令执行FIFO缓冲器中产生条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/062,221 | 2005-02-17 | ||
US11/062,221 US7437537B2 (en) | 2005-02-17 | 2005-02-17 | Methods and apparatus for predicting unaligned memory access |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800115846A Division CN101156132B (zh) | 2005-02-17 | 2006-02-16 | 用于预测不对准存储器存取的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101694613A CN101694613A (zh) | 2010-04-14 |
CN101694613B true CN101694613B (zh) | 2013-12-18 |
Family
ID=36816969
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800115846A Expired - Fee Related CN101156132B (zh) | 2005-02-17 | 2006-02-16 | 用于预测不对准存储器存取的方法和设备 |
CN2009101788459A Expired - Fee Related CN101694613B (zh) | 2005-02-17 | 2006-02-16 | 不对准存储器存取预测 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800115846A Expired - Fee Related CN101156132B (zh) | 2005-02-17 | 2006-02-16 | 用于预测不对准存储器存取的方法和设备 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7437537B2 (zh) |
EP (1) | EP1849061B1 (zh) |
JP (2) | JP4856100B2 (zh) |
KR (1) | KR100973951B1 (zh) |
CN (2) | CN101156132B (zh) |
BR (1) | BRPI0607888A2 (zh) |
IL (1) | IL185297A0 (zh) |
TW (1) | TWI444892B (zh) |
WO (1) | WO2006089194A2 (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
US7404042B2 (en) * | 2005-05-18 | 2008-07-22 | Qualcomm Incorporated | Handling cache miss in an instruction crossing a cache line boundary |
US8219785B1 (en) * | 2006-09-25 | 2012-07-10 | Altera Corporation | Adapter allowing unaligned access to memory |
US20080320274A1 (en) * | 2007-06-19 | 2008-12-25 | Raza Microelectronics, Inc. | Age matrix for queue dispatch order |
US20080320016A1 (en) * | 2007-06-19 | 2008-12-25 | Raza Microelectronics, Inc. | Age matrix for queue dispatch order |
US8195919B1 (en) * | 2007-10-29 | 2012-06-05 | Oracle America, Inc. | Handling multi-cycle integer operations for a multi-threaded processor |
JP5395383B2 (ja) * | 2008-08-21 | 2014-01-22 | 株式会社東芝 | パイプライン演算プロセッサを備える制御システム |
JP2010157130A (ja) * | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
US20110314263A1 (en) * | 2010-06-22 | 2011-12-22 | International Business Machines Corporation | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
CN102375695B (zh) * | 2010-08-23 | 2015-09-23 | 联想(北京)有限公司 | 一种磁盘的访问方法及计算机系统 |
CN102707988B (zh) * | 2011-04-07 | 2015-09-09 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
US9898402B2 (en) | 2011-07-01 | 2018-02-20 | Micron Technology, Inc. | Unaligned data coalescing |
WO2013058775A1 (en) | 2011-10-21 | 2013-04-25 | Soft Machines, Inc. | Fast unaligned memory access |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US20150188971A1 (en) * | 2013-07-31 | 2015-07-02 | Been, Inc. | Data stream monitoring |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
GB2525314B (en) * | 2014-01-17 | 2016-02-24 | Imagination Tech Ltd | Stack pointer value prediction |
US9535701B2 (en) | 2014-01-29 | 2017-01-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient use of branch delay slots and branch prediction in pipelined computer architectures |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US11093401B2 (en) | 2014-03-11 | 2021-08-17 | Ampere Computing Llc | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction |
US9430245B2 (en) | 2014-03-28 | 2016-08-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9703491B2 (en) * | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9582413B2 (en) | 2014-12-04 | 2017-02-28 | International Business Machines Corporation | Alignment based block concurrency for accessing memory |
JP6407736B2 (ja) | 2015-01-14 | 2018-10-17 | ファナック株式会社 | 産業用ロボットに実装される複合ケーブル |
CN105988774A (zh) * | 2015-02-20 | 2016-10-05 | 上海芯豪微电子有限公司 | 一种多发射处理器系统和方法 |
WO2017019008A1 (en) * | 2015-07-27 | 2017-02-02 | Applied Micro Circuits Corporation | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction |
CN105446777B (zh) * | 2015-11-18 | 2019-06-04 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行方法 |
EP3264317B1 (en) * | 2016-06-29 | 2019-11-20 | Arm Ltd | Permission control for contingent memory access program instruction |
CN108062236A (zh) * | 2016-11-07 | 2018-05-22 | 杭州华为数字技术有限公司 | 一种软硬件协同分支指令预测方法及装置 |
CN110347432B (zh) * | 2019-06-17 | 2021-09-14 | 海光信息技术股份有限公司 | 处理器、分支预测器及其数据处理方法、分支预测方法 |
CN111258654B (zh) * | 2019-12-20 | 2022-04-29 | 宁波轸谷科技有限公司 | 指令分支预测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1168505A (zh) * | 1996-04-15 | 1997-12-24 | 摩托罗拉公司 | 具有自对准堆栈指针的数据处理系统及其方法 |
US6009510A (en) * | 1998-02-06 | 1999-12-28 | Ip First Llc | Method and apparatus for improved aligned/misaligned data load from cache |
CN1558324A (zh) * | 2004-01-13 | 2004-12-29 | 智慧第一公司 | 保持分离队列功能单元之间的状态一致性的方法及装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5148536A (en) * | 1988-07-25 | 1992-09-15 | Digital Equipment Corporation | Pipeline having an integral cache which processes cache misses and loads data in parallel |
US5781753A (en) * | 1989-02-24 | 1998-07-14 | Advanced Micro Devices, Inc. | Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions |
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
US5832297A (en) * | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
JP3507193B2 (ja) * | 1995-06-06 | 2004-03-15 | 株式会社東芝 | ロード・ストア命令処理装置 |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5687336A (en) * | 1996-01-11 | 1997-11-11 | Exponential Technology, Inc. | Stack push/pop tracking and pairing in a pipelined processor |
US5813045A (en) * | 1996-07-24 | 1998-09-22 | Advanced Micro Devices, Inc. | Conditional early data address generation mechanism for a microprocessor |
US6112297A (en) * | 1998-02-10 | 2000-08-29 | International Business Machines Corporation | Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution |
US6374349B2 (en) * | 1998-03-19 | 2002-04-16 | Mcfarling Scott | Branch predictor with serially connected predictor stages for improving branch prediction accuracy |
US6349383B1 (en) * | 1998-09-10 | 2002-02-19 | Ip-First, L.L.C. | System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution |
US6473832B1 (en) * | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6704854B1 (en) * | 1999-10-25 | 2004-03-09 | Advanced Micro Devices, Inc. | Determination of execution resource allocation based on concurrently executable misaligned memory operations |
US6539467B1 (en) * | 1999-11-15 | 2003-03-25 | Texas Instruments Incorporated | Microprocessor with non-aligned memory access |
US6581150B1 (en) * | 2000-08-16 | 2003-06-17 | Ip-First, Llc | Apparatus and method for improved non-page fault loads and stores |
JP2003296105A (ja) * | 2002-04-01 | 2003-10-17 | Mitsubishi Electric Corp | データ処理装置 |
US6851033B2 (en) * | 2002-10-01 | 2005-02-01 | Arm Limited | Memory access prediction in a data processing apparatus |
JP3974063B2 (ja) * | 2003-03-24 | 2007-09-12 | 松下電器産業株式会社 | プロセッサおよびコンパイラ |
US20060009510A1 (en) * | 2004-07-09 | 2006-01-12 | Pharmacia & Upjohn Company Llc | Method of synthesizing indolinone compounds |
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
-
2005
- 2005-02-17 US US11/062,221 patent/US7437537B2/en active Active
-
2006
- 2006-02-16 CN CN2006800115846A patent/CN101156132B/zh not_active Expired - Fee Related
- 2006-02-16 KR KR1020077021353A patent/KR100973951B1/ko active IP Right Grant
- 2006-02-16 EP EP06735444.9A patent/EP1849061B1/en not_active Not-in-force
- 2006-02-16 CN CN2009101788459A patent/CN101694613B/zh not_active Expired - Fee Related
- 2006-02-16 BR BRPI0607888-5A patent/BRPI0607888A2/pt not_active IP Right Cessation
- 2006-02-16 WO PCT/US2006/005782 patent/WO2006089194A2/en active Application Filing
- 2006-02-16 JP JP2007556352A patent/JP4856100B2/ja not_active Expired - Fee Related
- 2006-02-17 TW TW095105325A patent/TWI444892B/zh not_active IP Right Cessation
-
2007
- 2007-08-15 IL IL185297A patent/IL185297A0/en unknown
-
2011
- 2011-03-01 JP JP2011043844A patent/JP5313279B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1168505A (zh) * | 1996-04-15 | 1997-12-24 | 摩托罗拉公司 | 具有自对准堆栈指针的数据处理系统及其方法 |
US6009510A (en) * | 1998-02-06 | 1999-12-28 | Ip First Llc | Method and apparatus for improved aligned/misaligned data load from cache |
CN1558324A (zh) * | 2004-01-13 | 2004-12-29 | 智慧第一公司 | 保持分离队列功能单元之间的状态一致性的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
KR100973951B1 (ko) | 2010-08-05 |
EP1849061A2 (en) | 2007-10-31 |
CN101156132A (zh) | 2008-04-02 |
JP5313279B2 (ja) | 2013-10-09 |
US7437537B2 (en) | 2008-10-14 |
CN101156132B (zh) | 2010-06-09 |
EP1849061B1 (en) | 2014-12-24 |
WO2006089194A2 (en) | 2006-08-24 |
US20060184738A1 (en) | 2006-08-17 |
BRPI0607888A2 (pt) | 2009-10-20 |
TW200639702A (en) | 2006-11-16 |
CN101694613A (zh) | 2010-04-14 |
JP4856100B2 (ja) | 2012-01-18 |
TWI444892B (zh) | 2014-07-11 |
JP2011150712A (ja) | 2011-08-04 |
WO2006089194A3 (en) | 2007-03-29 |
KR20070107772A (ko) | 2007-11-07 |
JP2008530714A (ja) | 2008-08-07 |
IL185297A0 (en) | 2008-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101694613B (zh) | 不对准存储器存取预测 | |
US5706491A (en) | Branch processing unit with a return stack including repair using pointers from different pipe stages | |
EP1296230B1 (en) | Instruction issuing in the presence of load misses | |
JP3871883B2 (ja) | 間接分岐ターゲットを計算するための方法 | |
JP2008530714A5 (zh) | ||
CN112543916B (zh) | 多表分支目标缓冲器 | |
JP2014002735A (ja) | ゼロサイクルロード | |
US20080072024A1 (en) | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors | |
US20160048395A1 (en) | Branch Predictor for Wide Issue, Arbitrarily Aligned Fetch | |
US5596735A (en) | Circuit and method for addressing segment descriptor tables | |
JP5513744B2 (ja) | 動的自動減衰デバイスアーキテクチャ | |
CN101438237A (zh) | 基于区块的分支目标地址高速缓冲存储器 | |
US9317285B2 (en) | Instruction set architecture mode dependent sub-size access of register with associated status indication | |
US10853075B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
US11256622B2 (en) | Dynamic adaptive drain for write combining buffer | |
US8151096B2 (en) | Method to improve branch prediction latency | |
CN111095203A (zh) | 实时寄存器值的集群间通信 | |
US5740416A (en) | Branch processing unit with a far target cache accessed by indirection from the target cache | |
US7346737B2 (en) | Cache system having branch target address cache | |
US20180203703A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
EP4202664B1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
US20100077145A1 (en) | Method and system for parallel execution of memory instructions in an in-order processor | |
WO1998002806A1 (en) | A data address prediction structure utilizing a stride prediction method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131218 Termination date: 20210216 |
|
CF01 | Termination of patent right due to non-payment of annual fee |