CN105446777B - 高速缓存行的非对齐加载指令的推测并行执行方法 - Google Patents

高速缓存行的非对齐加载指令的推测并行执行方法 Download PDF

Info

Publication number
CN105446777B
CN105446777B CN201510815208.3A CN201510815208A CN105446777B CN 105446777 B CN105446777 B CN 105446777B CN 201510815208 A CN201510815208 A CN 201510815208A CN 105446777 B CN105446777 B CN 105446777B
Authority
CN
China
Prior art keywords
alignment
load
load instruction
instruction
noted
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.)
Active
Application number
CN201510815208.3A
Other languages
English (en)
Other versions
CN105446777A (zh
Inventor
邸千力
张俊杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority to CN201510815208.3A priority Critical patent/CN105446777B/zh
Publication of CN105446777A publication Critical patent/CN105446777A/zh
Application granted granted Critical
Publication of CN105446777B publication Critical patent/CN105446777B/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/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

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

Abstract

一种执行高速缓存行非对齐加载指令的推测并行执行的方法,包括:推断地预测加载指令与高度缓存存储器是否是非对齐的;将所述加载指令标注为非对齐的并发射指令到调度器;并行地向第一和第二加载流水线派遣所述被标注为非对齐的加载指令,并确定两个加载流水线的相应地址以从包括目标加载数据的第一和第二高速缓冲行撷取数据,并合并从两个加载流水线检测的数据。可以基于匹配被确认为实际上非对齐的加载指令的在前次例程的指令指针来进行预测。可以进一步基于使用前次地址和跳步进行预测以预测加载指令的连续例程之间的地址步长。选择两个加载的地址以合并目标加载数据。

Description

高速缓存行的非对齐加载指令的推测并行执行方法
本申请是申请日为2015年11月18日、申请号为201510794204.1、发明名称为“高速缓存行的非对齐加载指令的推测并行执行系统和方法”的发明专利申请的分案申请。
技术领域
本发明一般涉及一种执行加载指令的进程,以从微处理器的存储器中加载信息,更具体地涉及一种高速缓存行的非对齐加载指令的推测并行执行的系统和方法,以加载跨越高速缓存行边界的数据。
背景技术
计算机程序包括用于执行程序功能的指令,包括用于从存储器读取数据的加载指令(load instructions)。典型的计算机系统包括用于执行指令的微处理器以及耦接到微处理器的、用于存储计算机程序以及可应用的数据和信息的部分的外部系统存储器。从系统存储器加载数据消耗宝贵的处理时间,因此微处理器往往会包括较小的并且显著快速的高速缓存存储器,以加载用于处理的数据。高速缓存存储器典型地包括在微处理器内,以便快速访问。高速缓存存储器可以位于外部,但是,如果这样,通常经由单独的和/或专用的高速缓存总线来连接以获得较高的性能。数据块可以一次拷贝到高速缓存存储器,并且当从高速缓存存储器而非较大的较慢的外部系统存储器进行操作时,微处理器执行得较快且较高效。高速缓存存储器由一顺序序列的高速缓存行构成,其中每一个高速缓存行典型地具有预定长度。例如,高速缓存行通常的尺寸是64字节,但也可考虑替换的高速缓存尺寸。
计算机程序可能重复地执行一个或多个加载指令,诸如在一个循环中等等,以从高速缓存存储器中的特定存储器位置加载特定的数据量。每个加载指令可以包括加载地址和数据长度。但是,在软件程序中指定的加载地址可能不是由微处理器用来访问高速缓存存储器的相同的物理地址。诸如基于x86指令集架构的现代的微处理器执行包括分段(segmentation)和分页等的地址翻译,其中加载地址被转换为全部不同的物理地址以访问高速缓存存储器。而且,可以顺序地执行一系列加载操作以撷取较大的数据块,其中一个或多个加载指令不直接与高速缓存行尺寸对齐。结果,存储器读取操作可以试图加载跨越高速缓存行边界的数据,这意味着指定的数据在一个高速缓存行上开始并在下一个高速缓存行上结束。由于目标数据占据多于一个的缓冲器行,所以这种类型的存储器读操作被称为高速缓存行非对齐加载。通常要求特定的方法来处理高速缓存行非对齐加载操作,因为数据是不能使用单个正常的加载请求来撷取的。现代的微处理器往往使用流行的高速缓存结构,其中对于单个加载请求仅可访问一个高速缓存行,从而高速缓存行非对齐的加载操作一定会以负面地影响性能的不同的方式来处理。
通过一些微处理器执行的公共解决方案是在加载流水线(load pipeline)内顺序地在不同的时间发射相同的加载指令两次。当加载指令初始地由加载流水线接收时,用于定位数据的地址首先被转换为虚拟地址(并且最终转换为用于访问高速缓存存储器的物理地址),并且只有在那时才能确定数据加载操作跨越高速缓存行边界。这样的非对齐加载操作会导致加载失中(load miss)。在加载失中的事件中,在加载流水线中再次执行该加载指令,这会进一步导致由于该加载操作的依赖(dependent)指令的回放(replay)引起的加载失中。进一步,非对齐加载指令的二次发射引起在非对齐加载指令的二次发射与正常发射的另一加载指令之间的仲裁,这将导致相当可观的长延迟。
在这种方式中,高速缓存行非对齐加载操作是效率低且耗费了宝贵的处理时间以最终撷取到正确的数据,包括初始检测、双重执行、资源仲裁、以及依赖指令的回放。造成相当多数量的高速缓存行非对齐加载操作的软件程序会导致效率低的操作和性能下降。
发明内容
根据一个实施例的用于执行高速缓存行的非对齐加载指令的推测并行执行的方法,包括:预测加载指令是否是非对齐的,当预测加载指令是非对齐的加载的时候将加载指令标注为非对齐的,向调度器发射被标注为非对齐的加载指令,派遣被标注为非对齐的加载指令到第一加载流水线,并派遣被标注为非对齐的加载指令的副本到第二加载流水线,在第一加载流水线中确定被标注为非对齐的加载指令的第一地址以从第一高速缓存行访问第一数据,并在第二加载流水线中确定被标注为非对齐的所述加载指令的副本的第二地址以从第二高速缓存行访问第二数据,以及合并第一数据和第二数据以提供被标注为非对齐的加载指令的结果数据。
本发明前述实施例所描述的高速缓存行的非对齐加载指令的推测并行执行的方法被用来改进非对齐加载性能。非对齐加载像正常加载一样完成,没有其他延迟。当高速缓存命中发生时,非对齐加载不引起回放,指令流不因为非对齐延迟而停顿。本发明描述的高速缓存行的非对齐加载指令的推测行执行的方法对于使用多个非对齐加载操作的程序和应用非常有用。
附图说明
参照以下描述和附图,将更好地理解本发明的益处、特征和优点,在附图中:
图1是根据本发明的一个实施例实施的执行高速缓存行非对齐加载操作的超标量流水线微处理器的简化框图;
图2是根据本发明的一个实施例的非对齐加载指令和作为结果的合并操作的推测并行执行结果的简化图;
图3是根据本发明一个实施例的预测器(可被用作图1的预测器)的简化框图;
图4是根据本发明另一个实施例的预测器(也可被用作图1的预测器)的简化框图;
图5是根据本发明一个实施例的非对齐加载派遣器(可被用作图1的非对齐加载派遣器)的简化框图;以及
图6是根据本发明另一个实施例的非对齐加载派遣器(也可被用作图1的非对齐加载派遣器)的简化框图。
具体实施方式
发明人已经认识到与执行高速缓存行非对齐加载指令相关的低效率和低性能。因此,他们开发了一种高速缓存行的非对齐加载指令的推测并行执行的系统和方法,用于检测和执行跨越高速缓存行边界的存储器读取操作。检测跨越高速缓存行边界的加载指令是推测地确定的。许多,如果不是大多数,加载指令在循环中执行。在第一检测方法中,第一非对齐加载的第一例程(iteration)的指令指针(IP)被存储并与后来的例程进行比较以预测后来的非对齐加载。在第二检测方法中,IP用来识别加载指令的后来的例程,并且加载指令的两次例程之间的跳步(skip stride)用来推测一步长,该步长被用于预测加载指令的随后例程的起始地址,其中跳步是该加载指令的前次执行的结束地址和该加载指令的下次执行的起始地址之间的地址跨越长度。预测的起始地址和所提供的每个加载指令例程的数据长度被用于推测地预测加载是否跨越高速缓存边界。非对齐加载被标注并被提供到调度器,调度器将该加载指令复制并派遣至两个单独的加载执行流水线。当地址在执行阶段被确时序,如果该加载最终被确定为是实际上的非对齐加载,则第一加载流水线从第一高速缓存行撷取第一数据,并且第二加载流水线单独地从下面连续的高速缓存行撷取第二数据。第一数据和第二数据然后一起被合并为单个高速缓存行作为第一流水线的结果。在一些实施例中,在第一和第二高速缓存行被撷取之后,才最终确定该加载为实际上非对齐加载。
这里描述的高速缓存行的非对齐加载指令的推测并行执行的系统和方法被用来改进非对齐加载性能。非对齐加载像正常加载一样完成,没有其他延迟。当高速缓存命中发生时,非对齐加载不引起回放,指令流不因为非对齐延迟而停顿。本文描述的高速缓存行的非对齐加载指令的推测并行执行的系统和方法对于使用多个非对齐加载操作的程序和应用非常有用。
图1是根据本发明的一个实施例实施的执行高速缓存行非对齐加载操作的超标量流水线微处理器100的简化框图。微处理器100的宏体系结构可以是x86宏体系结构,其中它正确地执行被设计执行在X86微处理器上的大多数应用程序。如果获得应用程序的期望结果,则应用程序被正确执行。具体地,微处理器100执行x86指令集的指令并且包括x86用户可视寄存器组。本发明不限于x86体系结构,但是其中微处理器100可以是基于本领域普通技术人员已知的任何可替换的体系结构。
在所述的实施例中,微处理器100包括具有多个级的流水线化体系结构,包括检测级102、发射/派遣级104、执行级106以及回写级108。这些级用虚线分隔开,每个虚线通常表示用于基于一个或多个时钟信号控制时序的一组同步锁存器等等。检测级102包括前端110以及预测器112。前端110通常进行操作以从存储器(例如,系统存储器122)或高速缓存(例如,高速缓存存储器120)撷取指令,并以程序顺序将它们发射到发射/派遣级104。例如,前端110可以包括:指令高速缓存(未示出),其缓存来自外部的系统存储器122的程序指令;指令解码器和译码器(未示出),其从指令高速缓存获得程序指令并将它们解码成用于执行的一个或多个微指令;以及寄存器别名表(RAT)(未示出),基于其程序顺序产生每个指令的依赖信息。在一个实施例中,指令翻译包括将微处理器100的宏指令集(诸如x86指令集体系结构)的宏指令翻译成微处理器100的微指令集的微指令。
前端110发射解码的指令及其相关的依赖信息到发射/派遣级104的调度器114。调度器114包括保持从RAT接收的指令和依赖信息的队列。当指令执行时,调度器114派遣这些指令到执行级106。当一个指令的所有依赖都被解析时,并且有执行单元可以执行该指令,则该指令处于执行就绪,。诸如浮点指令(例如媒体类型指令等)或者整型指令等的功能性指令被派遣到功能性执行单元(未示出)。存储器指令,包括加载和存储指令,被派遣到存储器顺序缓冲器(MOB)118。MOB 118包括一个或多个加载和存储流水线,或者组合的加载/存储流水线。
在简化说明中,仅两个加载流水线LP0 128和LP1 130被示出在MOB 118内,但是可以理解还可以包括其它的加载流水线和存储流水线。调度器114包括第一端口0,用于派遣加载指令到第一加载流水线LP0 128,并且包括第二端口1,用于派遣加载指令到第二加载流水线LP1 130。MOB 118访问诸如级别2(L2)高速缓存等的高速缓存存储器120,其存储从系统存储器122加载或者最终存储在系统存储器122的数据和信息。微处理器100包括总线接口单元(BIU)等(未示出),用于将系统存储器122接口连接到微处理器100。高速缓存存储器120典型地在微处理器100内部,尽管也可以构思外部耦接的高速缓存系统。
配合发射指令,RAT也为再排序缓冲器(ROB)126中的指令分配一条目,再排序缓冲器(ROB)126被示出位于回写级108中。因此,以程序顺序将指令分配到ROB 126中,ROB 126可以被配置为环形队列以确保指令以程序顺序退出。在特定配置中,ROB 126内的分配的条目可以还包括诸如寄存器等的存储空间,用于存储一旦执行指令的结果。可选地,微处理器100包括单独的物理寄存器文件(PRF),其中分配的条目可以包括一指针,其指向PRF内的分配的用于存储结果信息的寄存器。例如,加载指令从高速缓存存储器120撷取数据并临时将数据存储到PRF中的所分配的寄存器。
检测级102内的预测器112用于检测或预测何时加载指令是高速缓存行非对齐加载,其中将被加载的数据跨越高速缓存存储器120的高速缓存行边界。当前端110处理每一个加载指令时,它咨询预测器112推测加载指令是否是高速缓存行非对齐加载。如果预测器112预测加载指令是高速缓存行非对齐加载,则前端110标注加载指令为高速缓存行非对齐加载,否则识别加载指令为高速缓存行非对齐加载。对于未被标注为高速缓存行非对齐加载的正常的加载指令,调度器114或者经由端口0将加载指令直接派遣到第一加载流水线LP0 128或者经由端口1直接派遣到第二加载流水线LP1 130,有效地旁路(或者直接穿过)非对齐加载派遣器116。
当所发射的加载指令已经被标注为高速缓存行非对齐加载指令,则调度器114经由其端口之一派遣加载指令并临时停止其他端口。非对齐加载派遣器116检测从调度器114派遣的加载指令是否被标注为高速缓存行非对齐加载指令,并且,如果是,则非对齐加载派遣器116向第一加载流水线LP0 128和第二加载流水线LP1 130二者都派遣该加载指令。换言之,相同的加载指令被高效地并行派遣到两个不同的加载流水线。
MOB 118检测相同的加载指令已经派遣到两个不同的加载流水线LP0和LP1,并进一步确定在第一加载流水线LP0 128中进行的加载指令的起始地址以从高速缓存存储器120内的第一高速缓存行撷取数据,以及确定在第二加载流水线LP1 130中进行的加载指令的副本的起始地址以从高速缓存存储器120内的下一高速缓存行撷取数据。详细地,MOB118还将加载指令的地址翻译成虚拟地址,其最终被转换成直接存取高速缓存存储器120的物理地址。注意,虚拟地址就足够使用了,因为虚拟地址的可用的低位与物理地址的相同(都参照存储器内的相同尺寸的页面)。在一个实施例中,例如,使用4K字节页面,其中虚拟地址和物理地址的低12位是相同的。一旦虚拟地址已知,并且假定数据长度是加载指令自身指定的,则MOB 118能够认定加载指令是否实际上是非对齐的。在一个实施例中,仅当MOB118认定加载指令是实际上非对齐的时候,MOB 118再确定在第一加载流水线LP0 128和第二加载流水线LP1 130中进行的加载指令的起始地址。在另一实施例中,MOB 118从第一加载流水线和第二加载流水线撷取数据而不管虚拟地址是否指示加载指令是实际上非对齐的,并且被撷取的两个高速缓存行随后被合并逻辑124根据实际物理地址和数据长度进行处理。
最终确定虚拟地址的对应的物理地址,诸如从翻译查找缓冲器(translationlook-aside buffer TLB)撷取的或者作为表经历处理(table walk process)等的结果,其中第一加载流水线LP0 128使用物理地址或者物理地址的修改版本来从第一高速缓存行访问数据,并且第二加载流水线LP1 130使用物理地址的另一个修改版本从第二高速缓存行访问数据。这样的地址修改可以基于高速缓存行对齐、基于数据长度的对齐、或者依赖于具体实现的其他方法。
一旦撷取两个高速缓存行,执行级106内的合并逻辑124将所请求的数据合并到单个高速缓存行,并且结果存储在ROB 126中或者PRF的分配的寄存器。注意,就像从派遣到加载流水线之一(例如,加载流水线LP0 128)的调度器114的一个端口(例如,端口0)派遣的一样产生结果,并且可以丢弃针对其他端口(例如,端口1)和加载流水线(例如,加载流水线LP1 130)产生的任何其他数据。
当MOB 118确定加载指令实际上不是高速缓存行非对齐加载指令时,则加载指令以与正常加载指令相同的方式被处理。加载指令在第一和第二加载流水线LP0 128或LP1130之一中处理,并且加载指令在第一和第二加载流水线LP0 128或LP1 130的另一个中被丢弃。注意,由于调度器114的端口之一临时被停止并且两个加载流水线被临时用于执行单个加载指令,所以错误预测的非对齐加载指令呈现轻微的性能下降。错误预测的非对齐加载指令的性能下降显著小于当单个加载流水线试图执行最终结果是非对齐的加载指令时出现的性能下降。
MOB 118在确定加载指令是否实际上是高速缓存行非对齐加载指令之后,还提供该加载指令的对齐或非对齐指示(A/U)以及相应的指令指针(IP)。在另一个实施例中,MOB118还提供加载指令的虚拟地址(VA)和跳步(SS)。预测器112使用这个信息,包括A/U和IP、或A/U、IP、SS和VA,以对检测高速缓存行非对齐加载指令做出未来的预测。注意,当从指令高速缓存读取时,前端110访问每个加载指令的IP,并且当通过微处理器流水线传播时,与加载指令一起发射和派遣IP。由于加载指令通常会反复执行很多次,例如在循环程序中,IP地址可以用来在相同指令在接下来的执行中被辨识。
图2是根据本发明的一个实施例的非对齐加载指令和作为结果的合并操作的推测并行执行结果的简化图。通过一种类型的“字节顺序”(endianness)示出示例,(例如,高字节序或低字节序),其中可以理解,同样可以构思相反的字节顺序。在这个例子中,高速缓存存储器120的高速缓存行长度是64字节(64B)并且非对齐的加载指令指定16字节的数据。以ULA示出的非对齐加载指令的地址出现在高速缓存存储器120的第一高速缓存行CL1内,其中CL1仅包括所请求数据的头5个字节(5B)。所请求数据的其余12个字节(11B)出现在下一高速缓存行CL2上。由于该加载指令的数据长度是16字节,所以可以通过加载流水线之一(例如,第一加载流水线LP0 128)将非对齐加载指令地址ULA转换成调整的加载地址ALA0,以从包括目标数据的5字节部分的第一高速缓存行CL1加载16字节。另一个加载地址ALA1由另外的加载流水线(例如,第二加载流水线LP1 130)确定,诸如沿着高速缓存行边界,以加载包括目标数据的其余11字节部分的第二高速缓存行CL2的16字节。
作为如这里描述的非对齐加载指令的推测并行执行的结果,通过加载流水线(例如LP0 128)返回在202示出的第一高速缓存行CL1的16字节以及通过另一加载流水线(例如LP1 130)返回在204示出的第二高速缓存行CL2的16字节。结果附接在一起并且所请求的16字节结果部分被隔离和加载到结果寄存器206。可以使用各种方法附接两个流水线的结果,并将结果合并或隔离到可应用的目的寄存器206,包括加载、移位、掩蔽、反相等或其组合。
图3是根据本发明一个实施例的预测器300(其中预测器300可被用作图1的预测器112)的简化框图。在这种情况中,预测器300包括用于控制和搜索非对齐预测队列(UPQ)304的搜索和控制逻辑302。UPQ 304是存储针对已经被确定将是非对齐的每一个加载指令的指令指针(IP)的存储器。搜索和控制逻辑302被示出为从所述UPQ 304分离,但是可替换地可以结合在其中。如图所示,例如,UPQ 304可以存储至多整数“N”个IP,IP1,IP2,…IPN。N是用于存储给定配置的适合数量的IP的任何合适的数字。尽管未示出,每一个条目可以包括有效值或位等。一旦UPQ 304变满,可以根据任何替代策略保持UPQ 304,诸如其中在UPQ 304内较以新的IP代替最老的IP的最近最少使用的(LRU)策略。
当前端110接收用于执行的加载指令时,它还接收用于加载指令的相应的以IP_L示出的IP。前端110将IP_L应用到搜索和控制逻辑302,搜索和控制逻辑302搜索用于匹配IP的UPQ 304。搜索和控制逻辑302声明(assert)非对齐检测(UD)至前端110,以指示是否存在匹配。例如当在UPQ 304内发现匹配时,可以声明UD为高(例如逻辑“1”),或者当在UPQ 304内没有发现匹配时,可以声明UD为低(例如逻辑“0”)。如果发现匹配,则前端110将相应的加载指令标注为非对齐的加载指令。否则,当在UPQ 304内没有发现匹配IP时,则前端110不标注加载指令。
如前所述,MOB 118接收和执行加载指令,确定加载指令是否实际上是高速缓存行非对齐加载指令,并与加载指令的IP一起提供A/U指示。执行的加载指令的A/U和IP被提供到搜索和控制逻辑302。如果加载指令最初没有被预测为非对齐的(例如,在UPQ 304内未被在前发现),但是A/U指示指示加载指令事实上是非对齐的,则搜索和控制逻辑302以IP更新UPQ 304,从而相同加载指令的随后例程(iteration)将被标注为非对齐的。注意,加载指令的任何这样的随后例程可以具有变化的虚拟/物理地址,并且任何一个或多个可以实际上不是非对齐的加载操作。因此,对于一个或多个随后的例程,预测可能是错误的。但是,已经确定错误地预测加载为非对齐的惩罚是相对小的。在一个实施例中,如果同一个加载指令的错误预测(错误地预测为非对齐)的情况的连续数量达到预定的执行数量,则搜索和控制逻辑302可以删除UPQ 304内的加载指令的IP。
如果加载指令被预测为非对齐(例如,在UPQ 304内在前被发现)但是A/U指示指示其不是非对齐的(即,是不跨越高速缓存边界的正常的加载指令),则搜索和控制逻辑302可以或可以不从UPQ 304移除相应的IP。如上所注意的,错误地预测加载为非对齐的惩罚是相对小的。在所示的一个实施例中,如果同一个加载指令的错误预测情况的连续数量达到预定的执行数量,则搜索和控制逻辑302可以删除加载指令的IP。
图4是根据本发明另一个实施例的预测器400(其中预测器400也可被用作图1的预测器112)的简化框图。在这种情况中,预测器400包括用于控制和搜索另一个非对齐预测队列(UPQ)404的搜索和控制逻辑402。搜索和控制逻辑402被示出为从所述UPQ 404分离,但可替换地可以是结合在其中。以与UPQ 304相同的方式,UPQ 404是存储针对已经被确定将是非对齐的加载指令的每一个加载指令的指令指针(IP)的存储器。对于每一个存储的IP,UPQ404附加地存储与加载指令的IP对应的“前次地址”和“跳步”。因此对于存储的IP,IP1,IP2,…IPN的每一个IP,UPQ 404还可以存储相应的前次地址LA1,LA2,…,LAN和相应的跳步SS1,SS2,…,SSN。在此实施例中,从MOB 118提供每一个前次地址LA作为其虚拟地址VA。相同加载指令在两个连续例程中的地址可以不是连续的。“跳步”是在一加载指令的前次执行的结束地址和加载指令的下一执行的起始地址之间的地址跳过长度,并且,在本实施例中,通过监视相应加载指令的最近执行来确定每一个跳步。如果加载指令的跳步是相对固定的,则通过相应的前次地址和跳步预测相应的加载指令的下一例程的加载地址,并且该类可预测的并且实际上非对齐的加载指令被记录在UPQ 404中。
在这种情况中,当前端110接收用于执行的加载指令,它将加载指令的IP_L和加载指令的数据长度(DATA_LEN)应用到搜索和控制逻辑402,搜索和控制逻辑402搜索用于匹配IP的UPQ 404。如果存在匹配,则意味着该加载指令的前次例程被MOB 118检测为实际上非对齐的。在匹配时,搜索和控制逻辑402声明MATCH信号,并使UPQ 404输出与匹配IP对应前次地址和跳步,以MLA和MSS示出。匹配条目的匹配的前次地址MLA和跳步MSS被提供给第一加法器406的相应输入,第一加法器406输出加载指令的新例程的起始地址SA。因此,SA是新加载指令的起始地址的预测。
预测的起始地址SA被提供给第二加法器408的一个输入,第二加法器408在其另一输入接收DATA_LEN,并输出用于加载指令的新例程的结束地址EA。SA、EA和MATCH被提供给非对齐检测器410的输入,非对齐检测器410声明UD信号至前端110。具体地,如果存在匹配条目并且如果SA和EA不在高速缓存存储器120的相同高速缓存行内,则加载指令被认为是非对齐的,非对齐检测器410声明UD以指示加载指令是非对齐的。但是,如果即使存在匹配的IP,但SA和EA仍在高速缓存存储器120的相同高速缓存行内,则加载指令被认为是对齐的(正常的),则非对齐检测器410去声明(de-assert)UD以指示加载指令不是非对齐的。前端110相应地基于UD信号标注加载指令。
注意,当发现匹配IP,但是加载指令被断定是对齐的(或者不是非对齐的),则在那时不需要从UPQ 404移除IP、相应的前次地址LA和跳步SS。首先,实际上,加载指令可能是如通过MOB 118确定的为非对齐的,在MOB 118中对应的前次地址用执行的非对齐加载的相应的虚拟地址VA更新。其次,由于有至少一个例程被确定为非对齐的,则加载指令的随后例程可以包括附加的非对齐的出现,从而即使当一些例程转换为对齐的,仍在UPQ 404中保持其存储的条目是更有效率的做法。如上所注意的,预测加载是非对齐的且是错误的比预测加载是对齐的且是错误的惩罚要小。如果连续数量的后续例程是对齐的,则可以移除条目。
基于MOB 118的结果更新UPQ 404的操作与针对UPQ 304描述的类似,除了还提供确定的虚拟地址VA和跳步SS用于确定预测之外。执行的加载指令的A/U、IP、SS和VA被提供给搜索和控制逻辑402。如果加载指令未被预测为非对齐的(例如在UPQ 404内没有在前被发现),但是A/U指示指示它是非对齐的,则搜索和控制逻辑402以IP、SS和VA更新UPQ 404,从而相同加载指令的后续例程可以被标注为非对齐的,如预测器400所确定的。再次,对于一个或多个后续例程,预测可能是错误的,其中错误地预测加载为非对齐的惩罚是相对小的。如同预测器300,如果同一个加载指令的错误预测情况的连续数量达到预定的执行数量,则预测器400的搜索和控制逻辑402可以删除加载指令的IP/LA/SS条目。而且,如果加载指令被预测为非对齐的(例如,在UPQ 404内被在前发现)但是A/U指示指示它不是非对齐的(即,是没有跨越高速缓存行边界的正常的加载指令),则搜索和控制逻辑402可以基于诸如连续的错误预测的数量从或不从UPQ 404移除相应的IP。
图5是根据本发明一个实施例的非对齐加载派遣器500(可被用作图1的非对齐加载派遣器116)的简化框图。非对齐加载派遣器500包括非对齐加载感测器502和多路器(MUX)504。非对齐加载感测器502检测从调度器114的端口0派遣的非对齐的加载指令(例如被标注为非对齐的任何加载指令)并相应地声明一选择信号US。提供US至MUX 504的选择输入,MUX 504具有耦接到调度器114的输出端口1的第一输入或逻辑“0”以及具有耦接到调度器114的输出端口0的第二输入或逻辑“1”。MUX 504的输出提供给加载流水线LP1 130。通常,从端口0派遣的正常(对齐的)加载指令提供至加载流水线LP0 128,并且US信号是低(或逻辑“0”),从而从端口1派遣的正常加载指令提供至加载流水线LP1 130。
在这个例子中,配置调度器114以经由端口0派遣非对齐加载指令(例如,被标注为非对齐的任何加载指令)并临时停止端口1。非对齐加载感测器502感测从调度器114的端口0派遣的被标注为非对齐的任何加载指令,并声明引起MUX 504改为选择调度器114的端口0的US信号为高(或为逻辑“1”)。以这种方式,当经由调度器114的端口0派遣非对齐加载指令时,其被派遣至加载流水线LP0 128和LP0 130二者用于如前面所述的并行执行。
图6是根据本发明另一个实施例的非对齐加载派遣器600(也可被用作图1的非对齐加载派遣器116)的简化框图。非对齐加载派遣器600也包括以基本相同方式耦接的非对齐加载感测器502和多路器(MUX)504,其中非对齐加载感测器502检测从调度器114的端口0派遣的非对齐的加载指令并相应地控制MUX 504。在这种情况中,US信号被示出为信号US1。非对齐加载派遣器600还包括非对齐加载感测器602和第二多路器(MUX)604。非对齐加载感测器602检测从调度器114的端口1派遣的非对齐的加载指令并相应地经由信号US2控制MUX604。在这种情况中,调度器114的端口0被提供MUX 604的逻辑“0”输入以及调度器114的端口1被提供MUX 604的逻辑“1”输入。通常,US1和US2二者都是低,从而从端口0派遣的正常(对齐的)加载指令提供至加载流水线LP0 128,并且从端口1派遣的正常加载指令提供至加载流水线LP1 130。
在这种情况中,配置调度器114以经由端口0或端口1派遣非对齐加载指令(例如,被标注为非对齐的任何加载指令)并临时停止另一端口。例如,如果调度器114经由端口1派遣非对齐加载,则端口0被临时停止,并且反之亦然。非对齐加载感测器602以非对齐加载感测器502的下列方式相同的方式操作:非对齐加载感测器502感测从调度器114的端口0派遣的被标注为非对齐的任何加载指令,并声明引起MUX 504改为选择调度器114的端口0的US1信号为高(或逻辑“1”)。以这种方式,当经由调度器114的端口0派遣非对齐加载指令时,其被派遣至加载流水线LP0 128和LP0 130二者。另外,非对齐加载感测器602以类似的方式操作并感测从调度器114的端口1派遣的被标注为非对齐的任何加载指令,并声明引起MUX604改为选择调度器114的端口1的US2信号为高(或逻辑“1”)。以这种方式,当经由调度器114的端口1派遣非对齐加载指令时,其被派遣至加载流水线LP0 128和LP0 130二者,用于如前面所述的并行执行。
概括来说,微处理器第一或检测级中的预测器用于推测发射到调度器的加载指令是否是非对齐的。微处理器的前端将加载指令相应地标注为非对齐的加载指令。微处理器的发射/派遣级的非对齐加载派遣器检测被派遣微处理器执行级的、被标注为非对齐的加载指令,并并行地派遣加载指令的两个副本至执行级的两个加载流水线。执行级内的存储器系统(例如,MOB等)确定加载指令的地址(例如,虚拟地址),以确认加载指令为实际上非对齐或者不是,并提供该确定用于预测器的访问。该信息用于更新和改善非对齐加载指令预测。存储器系统调整加载指令的副本的物理地址以撷取来自一个加载流水线的第一高速缓存行的目标加载数据的第一部分,并且同时撷取来自另一个加载流水线的下一高速缓存行的目标加载数据的剩余部分。如果加载指令被确定为实际上非对齐的,则执行级内的合并逻辑合并来自两个加载流水线的结果以提供合并的结果作为被标注为非对齐的加载指令的合适结果。如果相反加载指令被确定为对齐的(即,不是非对齐的),则一个加载流水线中的加载指令处理为正常的加载指令,并且另一个加载流水线的结果被丢弃。
请认识到,高速缓存行非对齐加载指令是被推测地确定的,并可能是被误预测。如果预测没能识别加载指令为非对齐的,则加载指令的性能结果恶化基本上与现有配置相同。如果预测非正确地将正常的加载指令标注为非对齐的(当事实上它不是)时,与按正常执行加载相比性能仅少许恶化。但是,当预测正确地识别非对齐加载指令时,获得显著的性能改善,主要因为避免了与试图如正常加载指令一样执行非对齐加载指令相关的显著恶化。因为这里描述的高速缓存行非对齐加载指令的推测并行执行的系统和方法正确地预测了相当可观的数量的非对齐加载指令,因此微处理器的整体效率和性能与现有配置相比得到显著改善。
已经呈现前述描述以使得本领域普通技术人员能够如在特定应用及其需求的上下文中提供的那样做出和使用本发明。虽然已经参照其一些优选版本考虑细节而描述了本发明,但是其他版本和变形是可以的并且可以被预计到。优选实施例的各种修改对于本领域技术人员来说将是显而易见的,并且这里所限定的一般原理可以被应用于其他实施例。例如,可以以包括逻辑器件或电路等的任何适当方式来实施这里所描述的电路。
本领域技术人员应当明白,他们能够容易地使用所公开的概念和特定实施例来作为设计或修改其他结构的基础,以执行与本发明相同的目的,而不会背离本发明的精神和范围。因此,本发明不意欲被限制为这里所示出和描述的特定实施例,而是应当符合与这里公开的原理和新颖性特征一致的最宽范围。

Claims (10)

1.一种执行高速缓存行非对齐加载指令的推测并行执行的方法,包括:
预测加载指令是否是非对齐的;
当预测所述加载指令是非对齐加载指令的时候,将所述加载指令标注为非对齐的;
发射标注为非对齐的加载指令到调度器;
经由非对齐加载派遣器并行地向第一加载流水线及第二加载流水线派遣所述被标注为非对齐的加载指令;
在所述第一加载流水线中确定所述被标注为非对齐的加载指令的第一地址以从第一高速缓存行访问第一数据,并在第二加载流水线中确定所述被标注为非对齐的加载指令的第二地址以从第二高速缓存行访问第二数据;以及
合并所述第一数据和所述第二数据以提供所述被标注为非对齐的加载指令的结果数据。
2.根据权利要求1所述的方法,还包括:
将所述被标注为非对齐的加载指令的地址翻译为虚拟地址;以及
基于所述被标注为非对齐的加载指令的所述虚拟地址和数据长度确认所述被标注为非对齐的加载指令是否是实际上非对齐的。
3.根据权利要求2所述的方法,还包括:
当所述被标注为非对齐的加载指令被确认为是实际上非对齐的时候,确定所述第一地址和所述第二地址。
4.根据权利要求2所述的方法,其中所述预测加载指令是否是非对齐的步骤更包括:
存储被确认为是实际上非对齐的每一个加载指令的非对齐指令指针;以及
当新加载指令的指令指针与所存储的所述非对齐指令指针匹配时,指示所述新加载指令是非对齐的。
5.根据权利要求2所述的方法,其中所述预测加载指令是否是非对齐的步骤更包括:
存储被确认为实际上非对齐的每一个加载指令的非对齐指令指针、相应的虚拟地址和跳步;
比较新加载指令的指令指针与所存储的所述非对齐指令指针以确定是否发现匹配;
当发现匹配时,根据和与所述新加载指令匹配的所述非对齐指令指针一起存储的相应的虚拟地址和相应的跳步以及所述新加载指令的数据长度,确定所述新加载指令的起始地址和结束地址;以及
基于所述起始地址和结束地址指示所述新加载指令是否是非对齐的。
6.根据权利要求5所述的方法,其中所述跳步是所述加载指令的第一执行的结束地址和所述加载指令的第二运行的起始地址之间的地址跨越长度。
7.根据权利要求5所述的方法,其中所述确定所述新加载指令的起始地址的步骤更包括:将相应的跳步加到被确认为实际上非对齐的相应的加载指令的结束地址上。
8.根据权利要求5所述的方法,其中所述确定所述新加载指令的结束地址的步骤更包括:将所述新加载指令的所述数据长度加到所述起始地址上。
9.根据权利要求1所述的方法,其中所述派遣所述被标注为非对齐的加载指令的步骤更包括:
仅从调度器的第一端口派遣所述被标注为非对齐的加载指令到所述第一加载流水线;
当所述被标注为非对齐的加载指令从所述第一端口派遣时,停止调度器的第二端口;以及
当感测到所述被标注为非对齐的加载指令已经从调度器的第一端口派遣时,并行地将所述被标注为非对齐的加载指令派遣到所述第二加载流水线。
10.根据权利要求1所述的方法,其中所述派遣所述被标注为非对齐的加载指令的步骤更包括:
从调度器的第一端口派遣所述被标注为非对齐的加载指令到第一加载流水线或者从调度器的第二端口派遣所述被标注为非对齐的加载指令到第二加载流水线;
当所述被标注为非对齐的加载指令是从所述第一端口派遣的时候,停止所述第二端口,并且当所述被标注为非对齐的加载指令是从所述第二端口派遣的时候,停止所述第一端口;
当感测到所述被标注为非对齐的加载指令已经从所述第一端口派遣时,并行地将所述被标注为非对齐的加载指令派遣到所述第二加载流水线;以及
当感测到所述被标注为非对齐的加载指令已经从所述第二端口派遣时,并行地将所述被标注为非对齐的加载指令派遣到所述第一加载流水线。
CN201510815208.3A 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行方法 Active CN105446777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510815208.3A CN105446777B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510815208.3A CN105446777B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行方法
CN201510794204.1A CN105446773B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行系统和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201510794204.1A Division CN105446773B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行系统和方法

Publications (2)

Publication Number Publication Date
CN105446777A CN105446777A (zh) 2016-03-30
CN105446777B true CN105446777B (zh) 2019-06-04

Family

ID=54843651

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510794204.1A Active CN105446773B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行系统和方法
CN201510815208.3A Active CN105446777B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510794204.1A Active CN105446773B (zh) 2015-11-18 2015-11-18 高速缓存行的非对齐加载指令的推测并行执行系统和方法

Country Status (3)

Country Link
US (1) US10310859B2 (zh)
EP (1) EP3171264B1 (zh)
CN (2) CN105446773B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509289B (zh) * 2017-02-28 2021-06-29 龙芯中科技术股份有限公司 一种基于MIPS处理器vxWorks系统的验证方法和装置
US10372452B2 (en) * 2017-03-14 2019-08-06 Samsung Electronics Co., Ltd. Memory load to load fusing
CN107066238A (zh) * 2017-04-18 2017-08-18 上海兆芯集成电路有限公司 执行高速缓存行未对齐加载指令的系统和方法
US11188234B2 (en) * 2017-08-30 2021-11-30 Micron Technology, Inc. Cache line data
CN111221579B (zh) * 2018-11-27 2022-04-26 展讯通信(上海)有限公司 预测Load指令执行延迟的方法及系统
CN111813722B (zh) * 2019-04-10 2022-04-15 北京灵汐科技有限公司 基于共享内存的数据读写方法,系统及可读存储介质
CN111158757B (zh) * 2019-12-31 2021-11-30 中昊芯英(杭州)科技有限公司 并行存取装置和方法以及芯片
CN117348929A (zh) * 2022-06-29 2024-01-05 中科寒武纪科技股份有限公司 指令执行方法、系统控制器及相关产品
CN117472797A (zh) * 2023-12-28 2024-01-30 北京微核芯科技有限公司 非对齐地址访存指令的处理方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704854B1 (en) * 1999-10-25 2004-03-09 Advanced Micro Devices, Inc. Determination of execution resource allocation based on concurrently executable misaligned memory operations
CN101156132A (zh) * 2005-02-17 2008-04-02 高通股份有限公司 不对准存储器存取预测

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009510A (en) * 1998-02-06 1999-12-28 Ip First Llc Method and apparatus for improved aligned/misaligned data load from cache
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
US6851033B2 (en) * 2002-10-01 2005-02-01 Arm Limited Memory access prediction in a data processing apparatus
US8117404B2 (en) * 2005-08-10 2012-02-14 Apple Inc. Misalignment predictor
US8539209B2 (en) * 2009-08-24 2013-09-17 Via Technologies, Inc. Microprocessor that performs a two-pass breakpoint check for a cache line-crossing load/store operation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704854B1 (en) * 1999-10-25 2004-03-09 Advanced Micro Devices, Inc. Determination of execution resource allocation based on concurrently executable misaligned memory operations
CN101156132A (zh) * 2005-02-17 2008-04-02 高通股份有限公司 不对准存储器存取预测

Also Published As

Publication number Publication date
US10310859B2 (en) 2019-06-04
CN105446773A (zh) 2016-03-30
EP3171264A1 (en) 2017-05-24
EP3171264B1 (en) 2019-07-17
CN105446777A (zh) 2016-03-30
CN105446773B (zh) 2019-02-12
US20170139718A1 (en) 2017-05-18

Similar Documents

Publication Publication Date Title
CN105446777B (zh) 高速缓存行的非对齐加载指令的推测并行执行方法
US8516222B1 (en) Virtual architectures in a parallel processing environment
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
KR100305310B1 (ko) 멀티스레드프로세서의명령어및연관된인출요청의백그라운드완료
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
US10402200B2 (en) High performance zero bubble conditional branch prediction using micro branch target buffer
KR100974384B1 (ko) 분기 명령들을 예측하기 위한 방법 및 장치
CN100495325C (zh) 用于按需临时寄存器重命名的方法和系统
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
JPH10133874A (ja) スーパスカラプロセッサ用分岐予測機構
KR20090089358A (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JPH06242949A (ja) キュー管理式命令キャッシュ
TWI613590B (zh) 處理器流水線中的靈活的指令執行
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
TWI613589B (zh) 處理器流水線中的靈活的指令執行
CN107066238A (zh) 执行高速缓存行未对齐加载指令的系统和方法
US20020099927A1 (en) System and method for determining operand access to data
US11836498B1 (en) Single cycle predictor
US11816489B1 (en) Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle
JP2001356905A (ja) スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法
US20240045695A1 (en) Prediction unit that provides a fetch block descriptor each clock cycle
US20240045610A1 (en) Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block
US20230401066A1 (en) Dynamically foldable and unfoldable instruction fetch pipeline
US20230401063A1 (en) Folded instruction fetch pipeline

Legal Events

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

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

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

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

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.