CN101223503A - 处置越过高速缓冲存储器线边界的指令中的高速缓冲存储器未命中 - Google Patents
处置越过高速缓冲存储器线边界的指令中的高速缓冲存储器未命中 Download PDFInfo
- Publication number
- CN101223503A CN101223503A CNA2006800255837A CN200680025583A CN101223503A CN 101223503 A CN101223503 A CN 101223503A CN A2006800255837 A CNA2006800255837 A CN A2006800255837A CN 200680025583 A CN200680025583 A CN 200680025583A CN 101223503 A CN101223503 A CN 101223503A
- Authority
- CN
- China
- Prior art keywords
- instruction
- line
- cache
- address
- level
- 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
Links
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- 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/30047—Prefetch instructions; cache control instructions
-
- 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
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
Abstract
一种处理器的获取部分包括指令高速缓冲存储器和用于获得指令的若干级的管线。指令可越过高速缓冲存储器线边界。所述管线级处理两个地址以恢复完整的边界越过指令。在此类处理期间,如果所述指令的第二段不在所述高速缓冲存储器中,那么使相对于第一线的获取无效并再循环。在此第一回合中,将对所述指令的第二部分的地址的处理视为对将指令数据从更高等级的存储器加载到所述高速缓冲存储器的预获取请求,而不将任何所述数据传递到所述处理器的稍后级。当所述第一线地址再次穿过所述获取级时,所述第二线地址以正常次序跟随,且可从所述高速缓冲存储器获取并以正常方式组合所述指令的两段。
Description
技术领域
本标的物涉及有效地处置越过高速缓冲线边界的指令的获取,尤其在指令的第二部分尚未处于处理器试图从中获取所述指令的高速缓冲存储器中(高速缓冲存储器未命中)的情况下。
背景技术
现代微处理器和其它可编程处理器电路利用存储器层级来存储并供应指令。常见层级包含指令高速缓冲存储器或L1高速缓冲存储器,其相对靠近处理器的核心,例如在处理器芯片上。将指令从存储指令和数据两者的略远的或L2高速缓冲存储器加载到L1指令高速缓冲存储器。一个或两个高速缓冲存储器加载有来自主存储器的指令,且所述主存储器可从更远的源(例如并入有处理器的装置的盘驱动器)加载。高速缓冲存储器提高了性能。由于其接近处理器核心,所以(例如)从L1高速缓冲存储器获取指令相对较快。
在很多实施方案中,指令高速缓冲存储器线保存许多指令。如果对于所有指令来说,每指令的位的数目是固定的,那么高速缓冲存储器线的大小可适合于保存整数数目的此类指令。举例来说,如果每个指令是32个位,那么256位高速缓冲存储器线将保存八个此类指令,且存储在线中的第一和最后一个指令的边界与所述高速缓冲存储器线的边界匹配或对准。然而,如果处理器处置不同长度的指令(例如32位指令和16位指令),那么给定高速缓冲存储器线中的指令可能不与所述线的边界对准。如果处理器结构命令指令不能与两个高速缓冲存储器线重叠,那么将存在一些浪费。然而,很多结构不强加此类高速缓冲存储器限制。在后者情况下,在读取一部分存储在一个线中且其余部分存储在另一线中的指令的过程中出现问题,其中所述指令例如是在高速缓冲存储器的一个线的末尾处具有16个位且另外16个位存储在下一高速缓冲存储器线的开头处的32位指令。
现代可编程处理器电路常依靠管线处理结构来改进执行速度。管线处理器包含多个处理级,用于在每个指令移动通过管线时循序地处理每个指令。当然,当一个级在处理指令时,沿所述管线的其它级同时处理其它指令。管线的每个级执行每个程序指令的整体处理所必需的不同功能。尽管次序和/或功能可略有改变,但典型的简单管线包含指令获取级、指令解码级、存储器存取或读出级、指令执行级和结果回写级。更高级的处理器设计将一些或所有这些级分解成用于执行这些功能的子部分的若干单独级。超标量设计进一步分解所述功能,且/或提供重复的功能,以执行具有类似深度的平行管线中的操作。
获取级是从分层的存储器系统获得指令的管线处理器的部分。在很多管线设计中,将获取操作分解成两个或两个以上级。对于这些级,一个级收集从L1高速缓冲存储器获取时的指令,并与更高等级的存储器通信,以获得未在L1高速缓冲存储器中找到的指令数据。
在此类获取操作中可能出现问题,其中所述指令的边界越过高速缓冲存储器线边界,且所需指令的一部分尚未存在于L1高速缓冲存储器中。举例来说,如果收集从L1高速缓冲存储器获取的指令的级接收所述指令的第一部分,那么因为在L1高速缓冲存储器中已找到了所述指令,所以其将不会与更高等级的存储器通信。类似地,如果所述级已经获得了含有来自更高等级存储器的第一段的线,那么其将不会起始对含有所述指令的另一段的线的第二请求。而是,所述级等待从前面的级对下一高速缓冲存储器线的处理接收所述指令的其余部分。然而,如果前面的级检测到所需指令的其余部分不在L1高速缓冲存储器的适当的线中(未命中),那么其不能提供所述指令的剩余部分,且其不具有存取更高等级的存储器以获得所述指令的缺失段的能力。通常,在未命中的情况下,此级将把地址降到下一级,以从更高等级的存储器请求数据,但下一级正在等待来自前面的级的分割指令的第二段。在一些极端情况下,获取处理可在某一周期期间锁定,从而等待级不可请求的指令的一部分。
可允许管线的获取部分中的一个以上的级从其它存储器资源请求指令,以避免上文所识别的问题。然而,此类解决方案增加了获取级的构造中、获取级与其它存储器资源的互连中以及对到达和通过获取级的指令流的管理中的复杂性。对于高性能处理器设计,希望从尽可能少的地方作出对更高等级的存储器资源的请求,(例如)因为每个此类请求都在等待所请求数据的返回时延迟其它处理。因此,在获取指令的过程中(其中指令可能越过高速缓冲存储器线边界)仍存在进一步的改进空间。
发明内容
本文的教示提供对高速缓冲存储器未命中的更有效的处置,其中指令越过高速缓冲存储器线边界。实质上,对应于用于指令的第一部分的高速缓冲存储器线的地址再循环到管线的获取部分的头部,而来自所述高速缓冲存储器线的指令的任何相关联的第一部分都不降到管线的稍后级。对应于用于指令的第二部分的线的地址(也就是说,导致高速缓冲存储器未命中的地址)被视为预获取请求。由于存在未命中,所以处理器开始将必需的指令数据加载到指令高速缓冲存储器,但此数据在这个回合穿过获取级时也不降到管线的稍后级。当第一线地址再次穿过获取级,且第二线地址以正常序列跟随时,指令的所有段都可用,且可以正常方式获取和组合。
因此,本教示的方面涵盖从存储器获取指令以供在可编程处理器中执行的方法,其中指令可越过线边界。此类方法的实例可涉及检测待获取的指令越过指令线之间的边界。一旦获取指令数据的含有边界越过指令的第一段的第一线,便确定边界越过指令的第二段是否在高速缓冲存储器中。如果不在,那么指令数据的第一线的获取再循环,而不输出来自数据的第一线的任何指令。接着,所述方法涉及预获取指令数据的第二线,其包含所述指令的缺少的段。在已经对第一线的获取进行再循环的情况下,处理接着需要获取指令数据的第一线且获取指令数据的第二线。来自指令数据的所获取的第一和第二线的段经组合以输出边界越过指令。
如果在相对于第一线的第二获取之前已经开始了任何稍后获取,也就是说,如果在经再循环的获取与对第二线的预获取之间的进程中将存在任何其它获取操作,那么将任何此类介入的获取处理从获取管线中清洗。当相对于第一线的获取进行再循环时,使在初始回合期间由所述获取引起的数据无效,使得没有数据退出获取部分。
本教示的其它方面涵盖获取部分或系统,用于获取指令以供通过可编程处理器(例如管线处理器)进行处理。在实例中,此类获取部分包括指令高速缓冲存储器和至少一个用于依次处理地址的处理级。对于每个地址,所述处理识别可能含有对应于每个各自地址的指令或其一部分的指令高速缓冲存储器中的存储器线。所述处理还从所识别的线读取数据。提供一种用于在指令越过线之间的边界且对应于所述指令的第二地址的高速缓冲存储器线起初不含有所述边界越过指令的一段的情况下,将相对于第一地址的获取再循环到第一指令高速缓冲存储器处理级且用于将相对于第二地址的获取转换成预获取以允许将指令数据线从所述更高等级的存储器资源加载到所述指令高速缓冲存储器的装置。
本教示的其它方面涵盖并入有此类获取部分的可编程处理器,尤其是管线处理器。
将在以下的描述内容中部分陈述额外的目标、优势和新颖特征,且所属领域的技术人员在检查了下文和附图之后将明白其一部分,或可通过实例的生产或操作而了解。可通过实施或使用所附权利要求书中具体指出的方法、手段和组合来实现和得到本教示的目标和优势。
附图说明
附图仅以实例方式而不是以限制方式来描绘与本教示一致的一个或一个以上实施方案。在图中,相同参考标号指代相同或类似元件。
图1是可编程处理器的一部分的高级框图,其包含实施用于有效处置边界越过指令的技术的获取部分的示范性元件。
图2是可编程处理器的管线实施方案的功能框图,所述管线实施方案可并入有图1中所示的元件。
图3描绘来自指令高速缓冲存储器线的指令数据,其中所述高速缓冲存储器线含有八个32位指令。
图4描绘来自指令高速缓冲存储器线的指令数据,其中所述高速缓冲存储器线含有十六个16位指令。
图5描绘来自两个指令高速缓冲存储器线的指令数据,所述两个指令高速缓冲存储器线中的每一者包含16位和32位指令的混合以及边界越过32位指令的一部分。
图6描绘在将选定的位编译成一个32位指令的指令数据对准处理之前的64位寄存器中的数据。
图7描绘通过获取含有边界越过指令的多个部分的两个线而恢复的所得32位指令。
具体实施方式
在以下具体实施方式中,以实例的方式陈述大量特定细节,以便提供对相关教示的全面理解。然而,所属领域的技术人员应明白,可在无此类细节的情况下实施本教示。在其它例子中,已经以相对较高等级而无细节的形式描述了众所周知的方法、程序、组件和电路,以便避免不必要地混淆本教示的方面。
如本文所论述,处理器的意在为所述处理器获取指令的系统或部分的实例包括指令高速缓冲存储器和多个处理级。由此,获取部分本身通常由处理级管线形成。允许指令越过高速缓冲存储器线边界。当从其发出对更高等级存储器的请求的级具有越过高速缓冲存储器线边界的指令的第一部分时,所述级检查下一个线。如果所述级确定所述边界越过指令数据的第二部分不包含在高速缓冲存储器(L1)中,那么其使来自第一线的指令的部分的初始获取无效,并使第一获取地址返回到获取管线的开头。当对第二地址的处理移动到所述级时,第二获取已经转换成接触或预获取操作。处理因此将数据加载到指令高速缓冲存储器,但在此第一次穿过获取管线时不将第二线传递到解码级。因此,含有指令的第二段的指令线在高速缓冲存储器中。当获取级(在再循环之后)再次处理第一地址时,第二地址再次以正常次序跟随,且用于第二地址的高速缓冲存储器中的线现含有边界越过指令的必要的第二段。可将来自第二线的所需指令的所述部分降为所获取的第一线(取代第一线中原本不需要的数据段),以在来自获取级的输出的一个循环内完成所需的指令。
在实例中,管线的高于(在其之前)含有第二获取地址的级的任何级被清洗。因此,不从获取管线输出任何指令线数据,直到所需指令在第二次穿过指令获取管线期间在一个循环中被组合为止。
现详细参考附图中所说明且在下文论述的实例。图1说明管线处理器的若干个级和相关联的存储器。图2描绘整个管线,而图1展示管线的如将在从存储器获取指令且处置越过高速缓冲存储器线边界的指令的过程(如下文所论述)中所涉及的第一部分的稍微更多的细节。
参看图2,简化的管线处理器10包含五类主要的管线处理级,获取11、解码13、读出15、执行17和回写19。图中的箭头表示逻辑数据流,不一定是物理连接。所属领域的技术人员将了解,任一或所有这些级可分解成执行相关功能的部分的多个级,或所述管线可包含用于提供额外功能性的额外级。实际的超标量实例可由两个或两个以上平行管线组成,每个平行管线(例如)包括多个级。出于论述目的,将所述主要种类的级中的若干者展示为单个级,尽管通常将每一者分解成两个或两个以上级。与处置越过高速缓冲存储器线边界的指令的本论述内容相关的部分是获取部分11,因此在图1中更详细地展示形成所述部分的单独级。尽管图1和图2中未单独展示,但管线10的每个级通常包括状态机或实施相关逻辑功能的类似物,以及用于将指令和/或任何处理结果传递到下一级或传递回到GPR寄存器文件29的相关联的寄存器。
在示范性管线10中,管线处理器10的第一部分执行指令获取功能11。获取部分包括一个或一个以上用于获得指令以供由稍后级来处理的站。获取级(11)从一般由存储器21表示的存储器层级获得指令。存储器21通常包含指令高速缓冲存储器(iCache),有时被称为1级(L1)高速缓冲存储器23、2级(L2)高速缓冲存储器25和主存储器27。指令可从其它源(例如自引导ROM或盘驱动器)加载到主存储器。尽管所述存储器中的一些存储器(例如指令高速缓冲存储器)可能在处理器10的核心中或靠近所述核心,但其它存储器(例如主存储器)将在处理器10外部或与处理器10分离。在一些结构中,指令高速缓冲存储器23可以是获取部分11的元件(如针对图1中的实例所示)。
L2高速缓冲存储器27存储待处理的指令和数据两者(操作数数据)。L2高速缓冲存储器27由指令高速缓冲存储器23和(例如)级15在操作数数据读出期间所使用的数据高速缓冲存储器(未图示)共享。L2高速缓冲存储器27与指令高速缓冲存储器23相比较大而且存取较慢。主存储器27进而还要更大且存取更慢,但存储显著更多的信息。从指令高速缓冲存储器23获取(例如)可能需要三个处理循环,从L2高速缓冲存储器25获取可能消耗10个左右处理循环,而从主存储器27获取可能需要大约100个处理循环。
获取级11将每个指令供应到解码级13。指令解码级13的逻辑对接收到的指令字节进行解码,并将结果供应到管线的下一级。
下一主要种类的级提供数据存取或读出,如由级15共同表示。读出级(15)的逻辑存取通用寄存器(GPR)文件29中指定的寄存器中的操作数数据。在一些情况下,读出级15的逻辑可从存储器或其它资源(未图示)获得操作数数据。
将指令和操作数数据传递到提供执行功能的一个或一个以上级17。执行级17实质上对检索到的操作数数据执行每个指令的特定功能,并产生结果。提供执行功能的级17可(例如)实施算术逻辑单元(ALU)。级19将结果回写到文件29中的寄存器,或回写到存储器,例如L2高速缓冲存储器25和/或主存储器27。
如所述,图1稍微更详细地展示形成获取部分11的管线的级和相关联元件。如那里所示,示范性获取部分11包括三个管线级31、33和35,用于循序地处理地址。当地址流经获取管线部分11的级时,在任一给定时间,仅有一个地址在所述级中的每一者中且在所述每一者中被处理。通常,对于给定地址,第一循环(在IC1级31中)处理所述地址以识别用于指令高速缓冲存储器23的适当存储器线的标签。第二循环(在IC2级33中)使用所述标签来存取指令高速缓冲存储器23的特定线。获取管线的指令数据对准(IDA)部分包含:IDA级35,其用于处理从IC2级33下降的地址数据;和IDA数据级39,其用于处理从iCache23下降的数据,以提取实际指令。因此,第三循环(在IDA元件35和39中)处理来自指令高速缓冲存储器23的特定线的数据,以恢复至少所述一个指令,例如来自所述线上的8个或更多个的16或32位指令,以供输出到解码级13。所属领域的技术人员将了解,可将处理器设计成从IDA级中的高速缓冲存储器数据线提取两个或两个以上指令。
更具体地说,以预期执行的次序将指令的地址供应到第一级IC131。通常,所述次序是循序的,尽管程序执行可能改变所述次序,例如在出现条件转移指令的条件时。使用相应的标签来存取指令高速缓冲存储器23的存储器线。第一指令高速缓冲存储器处理级(IC1)31响应于接收到的指令地址,使用内容可寻址存储器(CAM)来识别用于高速缓冲存储器线的标签。所述标签是用于搜索高速缓冲存储器中的指令的地址的子集。实质上,CAM(IC1)级31获得所述地址(标签),并将其与高速缓冲存储器23中可能与之匹配的可能的标签进行比较,从而产生一组搜索结果。在CAM循环的末尾处捕获这些搜索结果,且在地址处于级33中时的RAM(IC2)循环期间使用所述结果,以便将正确的数据从高速缓冲存储器23引导出来,以捕获到IDA数据级39中。倘若管线保持防止立即将由高速缓冲存储器输出的数据捕获到IDA中,那么图1中的高速缓冲存储器23的输出处所示的锁存器37是透明锁存器。
如上文所述,一个标签对应于指令高速缓冲存储器23中的一个存储器线,但每个线保存许多指令。因此,处理一个标签以恢复来自存储器的指定线将恢复IC2级33处的多个存储的指令。第三级35(此处称为IDA(指令数据对准)级)控制IDA数据处理部分39,以接收并处理来自选定指令线的数据。指令高速缓冲存储器23的底部线或寄存器37保存来自选定存储器线的指令数据。IDA数据部分39包含寄存器41以接收并处理来自锁存器37的数据。在实例中,寄存器41可以是64位锁存器。级35和寄存器37中的IDA处理实质上从指令高速缓冲存储器23的底部39选择适当的位,在必要时重新组织那些位以便使所述位对准以将它们改造成指令,并将恢复的指令输出到解码级13。如稍后更多地论述,IDA数据部分39的其它元件执行相关的功能,例如在高速缓冲存储器未命中的情况下,从更高等级的存储器25和27获得指令数据。
一些处理器结构,例如Advanced Risc Machines Limited许可的“ARM”型处理器支持至少两个指令组,其中一个组的指令与另一组中的那些指令具有不同的长度。在ARM型处理器中,(例如)标准指令的长度是32个位。第二或“Thumb”指令组由16位经压缩指令和不同于其在ARM状态下的对应物而编码的32位指令组成。16位Thumb指令被解压缩成其32位ARM均等物,且接着可以正常方式处理。然而,由于长度减小,所以16位Thumb指令在处理器10中或与处理器10相关联的各个存储器装置中需要较少的存储。通常,具有较长字长度的指令提供较快范围的操作和/或更强大或更复杂的操作。如所述,具有较短字长度的指令为程序或子例行程序提供存储器节约,对于所述程序或子例行程序来说,较小指令组的有限能力是足够的。
机器在若干“状态”(ARM、Thumb、Jazelle-X/T2EE等)中的一者中操作,且仅可对为所述状态而设计的指令起作用。ARM状态仅包含32位指令,且在五个最高有效位中,任何编码都是合法的。Thumb状态包含16位指令与32位指令的混合物,T2EE也是如此。在这些状态下,五个最高有效位确定所讨论的指令是16位指令还是32位指令。
如图3中所示,256位高速缓冲存储器线的实例可保存八个32位指令。在ARM中,每一指令由32位的字组成,且每一32位指令与32位字线边界对准,例如在指令高速缓冲存储器23的线中。如果高速缓冲存储器线仅包含16位Thumb指令(例如,当处理器在Thumb模式下操作时),那么同一高速缓冲存储器线可保存十六个16位指令,如图4中所示。一些处理器和/或一些操作模式(包含Thumb)将允许32位指令与16位指令的混合,且因此一个高速缓冲存储器线将含有32位指令与16位指令的混合。
图5展示两个连续的线,其在每个高速缓冲存储器线上保存32位指令与16位指令的不同组合。所述线中的指令的布置纯粹是任意的,且将在处理器10对不同ARM和Thumb指令进行操作时,随着时间而改变。有时指令将与高速缓冲存储器线边界对准。然而,如由图5的实例所表示,以下情形将有时出现,其中32位指令越过两个高速缓冲存储器线之间的边界。在此实例中,第一线CL1上的最后16位保存32位指令的一半A。第二线CL2上的第一16位保存所述同一32位指令的另一半B。现考虑通过图1的获取管线11处理A-B指令。
在第一处理循环期间,IC1级31起初接收对应于含有部分A的线CL1的地址,并处理所述地址以恢复线CL1的标签。在下一处理循环中,IC2级33使用所述标签来存取CL1线,并将所述线上的数据移动到指令高速缓冲存储器23的底部处的锁存器37。高速缓冲存储器23还在命中(H)或未命中(M)线43上提供命中指示,其指示现处于高速缓冲存储器的底部处的锁存器37中的CL1线含有所述指令的所需部分A。当IC2在处理CL1的搜索结果时,也就是说在第二处理循环期间,IC1级31接收下一地址,在此情况下,所述下一地址对应于含有部分B的线CL2。IC1级31处理所述地址以恢复线CL2的搜索结果。
在获取处理的第三循环中,含有部分A的线CL1的地址下降到IDA级35。响应于来自早先循环的命中(H)指示,IDA级35的处理致使IDA数据部分39中的寄存器41从指令高速缓冲存储器23的底部处的锁存器37捕获位(包含所述指令的部分A的16个位)。同时,IC2级33使用线CL2的标签来恢复来自所述存储器线的数据,并将数据加载到指令高速缓冲存储器23的底部处的锁存器37。
当IDA级35接收第一地址时,其检查从锁存器37下来的数据。实质上,IDA级35在寻找所需指令的数据。作为IDA级35的分析的一部分,其将识别所请求的指令是否越过高速缓冲存储器线边界。
使用ARM和Thumb作为指令的实例,32位Thumb指令总是以5个最高有效位的三个可能值中的一者(11101;11110;11111)开始。实质上,所述逻辑可查看锁存器41中的每一条16位数据。如果5个最高有效位不具有32位指令的三个所需值中的一者,那么16位表示Thumb指令。然而,所述逻辑每次发现5个最高有效位具有32位指令所需的三个值中的一者时,其将所述16位辨认为32位指令的第一半。假定时隙不在高速缓冲存储器线的尾端处,所述线上的下一16个位将是32位指令的另一半。如果具有32位指令(如5个最高有效位)的三个值中的一者的时隙在高速缓冲存储器线的尾端处,那么32位指令越过高速缓冲存储器线边界。因此,IDA级35可确定所述指令的部分A在第一线CL1的结尾处,但IDA级35需要查看另一线来寻找所需指令的部分B。
起初,针对此实例,假定指令的另一部分包含在下一高速缓冲存储器线CL2中。在获取处理的第二循环期间,高速缓冲存储器23还在H/M线43上提供命中(H)指示,其指示现处于高速缓冲存储器23的底部处的锁存器37中的CL2线含有指令的所需部分B。以此方式,部分B出现在高速缓冲存储器的底部。IDA级35再次检查高速缓冲存储器线数据的16位部分,并找到越过线CL1与线CL2之间的边界的所述指令的16位第二部分。IDA级35致使寄存器41捕获所需指令的额外部分B。形成寄存器41的64位锁存器现含有所需指令的两段,尽管所述部分可能不正确地对准,如由图6以图表方式所表示。IDA数据级39和寄存器41进行的进一步处理使两个部分A和B的数据位对准并组合成一个32位指令(如由图7以图表方式所表示),并将经组合的指令传递到解码级13。
前面的实例假定所需指令的两个部分A和B存在于指令高速缓冲存储器23中的CL1和CL2高速缓冲存储器线中,也就是说,命中-命中的情形。然而,所属领域的技术人员将了解,情况并非总是如此。相对于指令高速缓冲存储器23的所存取线中的指令数据,将出现获取指令的第二部分的企图会导致高速缓冲存储器未命中的情形。现考虑命中-未命中的情况。第一部分A存在于CL1线(命中)中,但部分B在通过IC2级33的处理进行恢复时并非起初就存在于CL2线中(未命中)。
如在早先实例中,在第一处理循环期间,IC1级31起初接收对应于含有部分A的线CL1的地址,并处理所述地址以恢复线CL1的搜索结果。在下一处理循环中,IC2级33使用那些搜索结果来存取CL1线,并将所述线上的数据移动到指令高速缓冲存储器23的底部处的锁存器37。高速缓冲存储器23还在线43上提供命中(H)指示,其指示现处于高速缓冲存储器的底部处的锁存器37中的CL1线含有指令的所需部分A。当IC2正在处理CL1的搜索结果时,也就是说在第二处理循环期间,IC1级31接收下一地址,在此情况下,即对应于预期含有部分B的线CL2的地址。IC1级31处理所述地址以恢复线CL2的搜索结果。
在获取处理的第三循环中,含有部分A的线CL1的地址下降到IDA级35。响应于来自先前循环的命中(H)指示,IDA级35的处理致使IDA数据部分39中的寄存器41捕获来自指令高速缓冲存储器23的底部处的锁存器37的位(包含指令的部分A的16个位)。同时,IC2级33试图使用线CL2的搜索结果来恢复来自所述存储器线的数据,并将所述数据加载到指令高速缓冲存储器23的底部处的锁存器37。
到目前为止,命中-未命中实例的处理实质上与第一命中-命中实例中的处理相同。然而,在此第二实例中,当IC级33原本会将数据从CL2线移动到锁存器37时,高速缓冲存储器23在H/M线43上提供未命中(M)指示,其指示现处于高速缓冲存储器23的底部处的CL2线不含有指令的所需部分B。
在此实例中,A-B指令越过高速缓冲存储器线边界,且部分11中的逻辑已经确定其具有(成功地获取)从指令高速缓冲存储器23存取的数据的第一线CL1中的指令数据的第一部分A,但所述指令数据的第二部分B不在从高速缓冲存储器23存取的数据的第二线CL2中。因此,IDA级35的逻辑使对应于CL1线的地址的获取无效(以便不将任何指令数据传递到解码级13)。而且,管线的高于(先于)含有第二获取地址的级的任何级被清洗。在所说明的三级获取结构中,IC1级31是唯一一个在保存CL2线的地址的IC2级之上的级,所以IC1级31被清洗。
此时,IDA级35的逻辑还经由重新获取级45使对应于CL1的第一获取地址返回到获取管线11的开头。重新获取级45用于提供经再循环的地址作为在下一循环中输入到IC1级31的下一地址,且使地址输入串复位到所述第一地址,使得随后的输入地址是在再循环的地址之后(在此情况下,在识别CL1线和指令的部分A的地址之后)适当地依次跟随的地址。特别注意,这表示当处理相对于所述第一地址而重新开始时,对应于预期含有部分B的线CL2的地址将再次流经紧在所述第一地址之后的级,如在第一次穿过获取管线11时那样。
在第三处理循环中,当确定第二线CL2产生未命中时,IC2级33将对所述线的获取从获取(F)转换到接触(T)或预获取操作。获取操作检索指令,并将所述指令传递到解码级13,解码级13进而传递所述指令以供最后执行。接触(T)或预获取操作仅抽出所述指令,从而知道所述指令是否尚未在指令高速缓冲存储器23中,所述处理会将所述指令加载到所述高速缓冲存储器23。预获取确保了指令数据在指令高速缓冲存储器23中,以用于稍后的处理,而不使指令下降到稍后的级以供执行。在操作导致未命中的情况下,那表示接触处理将从其它存储器资源(例如L2高速缓冲存储器25和/或主存储器27)获得必要的指令数据,且指令数据线将在相关地址下次流经获取部分11的级时出现。
IC2级33的逻辑包含锁存器或含有T/F型字段47(通常是旗标位)的类似物,所述T/F型字段47指示所述级33中的处理中的地址何时与接触或获取型操作相关。IDA级35的逻辑包含锁存器或含有类似T/F型字段49的类似物。当IC2级33将地址传递到IDA级35时,IC2级33将T或F型指示从其字段47传递到IDA级35中的字段49。
出于此论述的目的应注意,当起初在IC2级33中接收到第二地址时,IC2级将其视为获取(F)操作。然而,对于越过高速缓冲存储器线边界的指令,当高速缓冲存储器在线43上提供指示第二段B不在CL2高速缓冲存储器线上的未命中(M)指示时,IC2级将类型字段47中的F改变成T,从而有效地将获取转换成接触。接着,IC2级将接触(T)指示传递到IDA级35,如由图1中的虚线箭头所表示。
在第四处理循环期间,当已经将第一地址传递到重新获取级45时,将第二地址传递到IDA级35。使用所述地址,IC2级33现将传递仅会针对重新获取处理使用所述地址的指示,例如通过传递接触指示(T)以供在IDA级逻辑中的字段49中使用。IDA级35也根据线43上的未命中(M)指示知道所需的指令数据不在高速缓冲存储器中的线上。因此,IDA级35和IDA数据部分39可起始从更高等级的存储器资源加载必要的指令数据的步骤。IDA元件35、39和41将相对于第二地址的接触处理视为预获取,本以质上将数据加载到指令高速缓冲存储器23,但不将任何结果传递到解码级13。因此,指令线从更高等级的存储器加载到高速缓冲存储器23中,且可用于稍后的处理。
当获取部分11再次处理相对于第一地址的第一获取时,在再循环之后,第二地址再次跟随,但第二地址的线现处于L1指令高速缓冲存储器23中。来自第二线CL2的所需指令的部分B可在IDA处理期间与来自获取的第一线CL2的部分A一起下降,代替所述线中原本不需要的数据段,以完成来自获取部分11的输出的一个线内的所需指令,正如在上文所论述的命中-命中实例中的情况。然而,为了理解这些操作,稍微更详细地考虑对到达IDA级的第二线地址的接触的操作可能是有帮助的。
管线的获取部分11包含两个填充缓冲器51和53,用于将来自L2高速缓冲存储器25的指令数据转移到IDA数据部分39中的寄存器41。当针对指定地址的获取型操作到达IDA级35并导致未命中(M)时,IDA数据部分39将对缺失指令线的请求发送到L2高速缓冲存储器25。L2高速缓冲存储器25可含有用于所请求的线的数据,或如果没有,那么L2高速缓冲存储器25通常从主存储器27获得用于所请求的线的数据。L2高速缓冲存储器25将所述线的一半加载到缓冲器51中,且将另一半加载到缓冲器53中。IDA数据部分39的逻辑以与将数据从高速缓冲存储器23中的锁存器37加载到寄存器41中的方式类似的方式,将高速缓冲存储器线数据的相关部分加载到寄存器41中。同时,缓冲器51和53将整个指令数据线提供到指令高速缓冲存储器23,以供存储和将来使用。
在命中-未命中实例中,对第二高速缓冲存储器线地址的接触使用IDA元件和填充缓冲器的这些操作来将必需线CL2的数据加载到指令高速缓冲存储器23中。多个部分可转到IDA数据部分,但通常不被加载到IDA寄存器41中,因为没有数据下降到解码级。IDA级将相对于所述地址的此第一流动视为接触型操作,即仅预获取。
在接触完成之后的下一循环中,在IC1级31处再次处理第一地址,以识别第一高速缓冲存储器线CL1的标签。IC1级31将第一标签传递到IC2级33。在下一循环中,IC2级读取高速缓冲存储器线IC1,同时在IC2级33处再次处理第二地址,以识别第一高速缓冲存储器CL2的标签。IC2级33的处理将来自CL1线的数据加载到锁存器37,且在下一循环中,所述数据线下降,其中选定部分流动到IDA寄存器41。通过寄存器41中的相关CL1数据,IC2级33读取高速缓冲存储器线CL2,并将数据从所述线加载到锁存器37。在此第二回合,两个高速缓冲存储器线的读取产生命中,如在早先的命中-命中实例中的情况。
以此方式,部分B在指令第二次穿过获取部分11的管线时出现在高速缓冲存储器的底部,且IDA级35致使寄存器41捕获所需指令的额外部分。形成寄存器41的64位锁存器现含有所需指令的两段,尽管所述部分可能不合适地对准,再次如由图6以图表方式表示。IDA数据级39和寄存器41进行的进一步处理使两个部分A和B的数据位对准并组合成一个32位指令(如由图7以图表方式表示),并将经组合的指令传递到解码级13,如在早先实例中那样。
在实例中,当处理使第一获取地址返回到获取管线11的开头时,其初始通过同时无效,以便不传递到解码级。而且,管线的高于(在其之前)含有第二获取地址的级的任何级被清洗。当第一地址再循环时,在其与第二地址的接触之间不存在任何运行中的地址。当预获取完成时,IDA级35丢弃所述地址和IDA寄存器41中的相关联数据。因此,不从获取管线11输出指令线数据,直到所需指令在第二次穿过指令获取管线期间被组合为止。
对于此类型的处理,仅IDA元件可起始从更高等级的存储器资源的获取。这有助于高性能处理器设计,因为在指令获取处理的过程中,仅一个级对更高等级的存储器资源发出请求。再循环的第一地址在下降回到IC1、IC2且接着到IDA中之前,在重新获取45中仅花费一个循环。在这些情况下,针对第二次穿过获取级,L2高速缓冲存储器25通常不可能已经及时使指令数据的第二段返回到高速缓冲存储器23。因此,IDA级在L2高速缓冲存储器25上保持不动并等待,且直接从填充缓冲器51,53接收指令数据的第二半。
在前面的实例中,对越过高速缓冲存储器线边界的指令的两个线的处理导致命中-未命中,因为第一线含有所述指令的一部分,但第二线不含有。在两个高速缓冲存储器线都不含有指令的所需部分的情况(也就是说,未命中-未命中情况)下,应用大体上类似的处理。在此后者情况下,对第一线的处理从L2高速缓冲存储器25或主存储器27获得数据,并将指令数据线加载到指令高速缓冲存储器23中。一旦确定第二线是未命中,第一地址便被再循环;将第二获取转换成接触;且处理如在命中-未命中实例中那样继续。
第一高速缓冲存储器线不含有所需指令的一部分,但第二线含有(未命中-命中)的情况以非常类似于命中-命中的情况的方式流经获取部分11的级。第一线的处理导致未命中,但IDA处理获得来自更高等级存储器资源的必要的指令数据线。从填充缓冲器51,53选择位以填充第一线的IDA寄存器41。在那之后,对来自锁存器37的第二线的处理(第二线上的命中)与命中-命中实例中相同。
为了总结处理逻辑,确定指令获取操作何时第一次到达IDA级35并使其目标高速缓冲存储器线的所有指令数据可用。IDA级确定指令是否越过线边界。如果没有越过,那么IDA级以正常方式处理所述指令。然而,如果存在线边界越过,那么IDA级35的逻辑查看来自高速缓冲存储器23的命中/未命中指示,以确定应含有边界越过指令的第二段的下一线上是否存在命中。如果存在,那么IDA级可从高速缓冲存储器捕获所述第二段,并将完整的指令提供到解码级13。然而,如果在IC2级33中待决的下一线上存在未命中,也就是说,如果下一高速缓冲存储器线不含有边界越过指令的必要的第二段,那么IDA和IC2级实施本文所教示的处理。
在此情况下,IDA级35使相对于第一地址的当前获取无效,并使第一高速缓冲存储器线的地址(例如通过重新获取级45)再循环。第二线的地址下降到IDA级35。然而,在这种情况下,对第二地址的处理已经从获取型操作转换到预获取型操作。IC1级被清洗。IDA级起始加载来自L2高速缓冲存储器25且/或来自主存储器27的必要的指令数据的操作。在此上载完成时,数据存储在指令高速缓冲存储器23中,且IC1级31可从经再循环的第一地址重新开始处理。当两个地址第二次流经获取部分11a的级时,边界越过指令的所有必要数据都出现在高速缓冲存储器23中的适当的两个线上,且获取部分可检索那些部分,并将其位编译成一个指令,且沿管线10将所述指令输出到下一级,例如以供解码。
当指令高速缓冲存储器23全面操作时,应用上文所概述的处理。然而,在指令高速缓冲器23禁用(例如在启动期间)时,可应用类似的处理来经由填充缓冲器51和53来加载数据。在那种情况下,处理流实质上导致高速缓冲存储器23的线中的未命中-未命中情形。当将第二地址转换到接触时,将所述填充缓冲器中的一者用作临时高速缓冲存储器,以保存所述线的用于指令段B的相关一半。当第一指令反向循环通过时,将第一线的相关部分加载到另一填充缓冲器,且IDA数据部分可编译来自两个缓冲器51和52的指令,实质上如针对尚未越过线边界的指令会发生的情况。
在上文的论述中所给出的位的数目(例如不同类型的指令的16位和32位长度、高速缓冲存储器线的8字长度以及锁存器、寄存器和缓冲器的各种大小)仅是代表性实例。所属领域的技术人员将认识到,在不同的处理器结构和实施方案中,各个组件的指令长度和大小可能更长或更短。而且,混合中可能存在更宽范围的可能的指令大小,例如16位、32位、64位或更大。另外,获取部分11中或甚至管线10中的级的数目可显著变化,但处理器仍可根据本文所论述的教示来实施其对越过线边界的指令的获取处理。
虽然前述内容已经描述了被视为最佳模式和/或其它实例的内容,但应了解,可在其中作出各种修改,且本文所揭示的标的物可以各种形式且在各种实例中实施,且所述教示可应用于大量应用中,本文仅描述了其中的一些应用。所附权利要求书意在主张属于本教示的实际范围内的任何和所有应用、修改和变化。
Claims (18)
1.一种从存储器获取指令以供在可编程处理器中执行的方法,其中指令可越过存储器线边界,所述方法包括:
响应于第一地址而起初获取指令数据的第一线;
根据指令数据的所述第一线确定待获取的指令是否越过指令数据的所述第一线与指令数据的第二线之间的边界,其中指令数据的所述获取的第一线含有所述待获取的指令的第一段;
一旦确定所述待获取的指令越过所述边界,便确定对应于第二地址的高速缓冲存储器线是否含有所述待获取的指令的第二段;
一旦确定对应于所述第二地址的所述高速缓冲存储器不含有所述待获取的指令的所述第二段,便:
(a)使对指令数据的所述第一线的所述初始获取无效,并使所述第一地址再循环;
(b)从更高等级的存储器资源预获取指令数据的所述第二线;
(c)响应于所述经再循环的第一地址,获取指令数据的所述第一线;
(d)响应于所述第二地址,获取指令数据的所述经预获取的第二线;以及
(e)根据指令数据的所述获取的第一和第二线,编译所述待获取的指令的所述段。
2.根据权利要求1所述的方法,其中所述使指令数据的所述第一线的初始获取无效防止将待从指令数据的所述起初获取的第一线获取的所述指令中的任一者输出到所述处理器的其它元件。
3.根据权利要求2所述的方法,其中所述预获取将来自所述更高等级的存储器资源的指令数据的所述第二线加载到所述高速缓冲存储器中,而不在随后从所述高速缓冲存储器获取指令数据的所述第二线之前将指令数据的所述第二线中的任一者输出到所述处理器的其它元件。
4.根据权利要求3所述的方法,其中所述预获取步骤需要将相对于所述第二地址的获取操作转换成相对于所述第二地址的接触操作。
5.根据权利要求1所述的方法,其进一步包括一旦确定对应于所述第二地址的所述高速缓冲存储器不含有所述待获取的指令的所述第二段,便清洗可能已相对于随后地址而开始的任何获取相关处理。
6.一种获取指令以用于可编程处理器的方法,其包括:
检测待获取的指令越过指令线之间的边界;
一旦获取指令数据的含有所述边界越过指令的第一段的第一线,便检测所述边界越过指令的第二段不在高速缓冲存储器中;
响应于检测到所述第二段不在所述高速缓冲存储器中,使对指令数据的所述第一线的所述获取再循环,而不输出待从指令数据的所述第一线获取的所述指令中的任一者;
预获取指令数据的第二线;
基于所述再循环,获取指令数据的所述第一线,并获取指令数据的所述经预获取的第二线;以及
对来自指令数据的所述经获取的第一和第二线的所述段进行组合,以输出所述边界越过指令。
7.根据权利要求6所述的方法,其中所述第一线的所述获取的所述再循环包括:在检测到所述第二段不在所述高速缓冲存储器中之前,使待从所述已获取的第一线获取的所述指令的任一部分无效。
8.根据权利要求6所述的方法,其中所述第二线的所述预获取包含:将相对于所述第二线的获取操作转换成相对于所述第二线的所述预获取。
9.根据权利要求6所述的方法,其进一步包括清洗所述第二线的所述预获取与所述第一线的所述经再循环的获取之间的进行中的任何获取操作。
10.一种用于管线处理器的获取部分,其包括:
指令高速缓冲存储器;
第一指令高速缓冲存储器处理级,其用于识别对应于输入地址串中的每个各自地址的高速缓冲存储器线;
第二指令高速缓冲存储器处理级,其响应于高速缓冲存储器线的每个识别,用于从所述高速缓冲存储器中的对应于所述各自地址的存储器线读取指令数据;
指令数据对准部分,其响应于由所述第二指令高速缓冲存储器处理级读取的指令数据的一个或一个以上线,用于输出经获取的指令,所述指令数据对准部分还从更高等级的存储器资源获得数据,以用于起初未在所述指令高速缓冲存储器中找到的任何指令或其部分;以及
再循环和加载装置,其用于一旦检测到指令越过对应于第一和第二地址的线之间的边界且所述对应于所述第二地址的高速缓冲存储器线起初不含有所述边界越过指令的一段,便将相对于所述第一地址的获取再循环到所述第一指令高速缓冲存储器处理级且用于将相对于所述第二地址的获取转换成预获取以促使所述指令数据对准部分将指令数据线从所述更高等级的存储器资源加载到所述指令高速缓冲存储器。
11.根据权利要求10所述的获取级,其中所述指令高速缓冲存储器的每个线可存储具有两个或两个以上不同长度的多个指令。
12.根据权利要求10所述的获取级,其中所述用于再循环的装置包含用于将所述第一地址传递回所述第一指令高速缓冲存储器处理级的输入的重新获取级。
13.根据权利要求10所述的包括所述获取级的管线处理器,其进一步包括用于对所述获取的指令进行解码的解码级、用于根据经解码的指令获得操作数数据以供处理的读出级、用于对操作数数据执行经解码的指令的执行级,以及用于将执行结果写入到存储装置的回写级。
14.一种用于管线处理器的获取部分,其包括:
指令高速缓冲存储器;
至少一个处理级,其用于依次处理多个地址中的每一者,以识别所述指令高速缓冲存储器中可能含有对应于每个各自地址的指令或其一部分的存储器线,并从所述识别的线读取数据;以及
用于以下操作的装置:检测待获取的指令越过高速缓冲存储器线边界且两个经寻址的高速缓冲存储器线中的第二者中缺少所述边界越过指令的一部分,且作为响应,用于使相对于对应于所述两个高速缓冲存储器线中的第一者的地址的获取无效,并使所述对应地址再循环以供输入到所述至少一个处理级,且将含有所述缺少部分的数据从更高等级的存储器预获取到所述第二高速缓冲存储器线,以允许在所述对应地址第二次流动通过所述获取部分时完整地获取所述越过所述边界的指令。
15.根据权利要求14所述的获取部分,其中所述至少一个处理级包含:
第一指令高速缓冲存储器处理级,其用于识别对应于输入地址串中的每个各自地址的高速缓冲存储器线;
第二指令高速缓冲存储器处理级,其响应于高速缓冲存储器线的每个识别,用于从所述高速缓冲存储器中对应于所述各自地址的存储器线读取指令数据;以及
指令数据对准部分,其响应于由所述第二指令高速缓冲存储器处理级读取的指令数据的一个或一个以上线,用于输出经获取的指令,所述指令数据对准部分还从更高等级的存储器资源获得数据,以用于起初未在所述指令高速缓冲存储器中找到的任何指令或其部分。
16.根据权利要求14所述的获取部分,其中所述指令高速缓冲存储器的每个线可存储具有两个或两个以上不同长度的多个指令。
17.根据权利要求14所述的获取部分,其中所述用于再循环的装置包含用于将所述第一地址传递回所述至少一个处理级的输入的重新获取级。
18.根据权利要求14所述的包括所述获取部分的管线处理器,其进一步包括:用于对所述获取的指令进行解码的解码级、用于根据经解码的指令获得操作数数据以供处理的读出级、用于对操作数数据执行经解码的指令的执行级,以及用于将执行结果写入到存储装置的回写级。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/132,749 | 2005-05-18 | ||
US11/132,749 US7404042B2 (en) | 2005-05-18 | 2005-05-18 | Handling cache miss in an instruction crossing a cache line boundary |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101223503A true CN101223503A (zh) | 2008-07-16 |
CN100583028C CN100583028C (zh) | 2010-01-20 |
Family
ID=37025150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680025583A Expired - Fee Related CN100583028C (zh) | 2005-05-18 | 2006-05-18 | 用于在处理器中获取指令的方法及获取装置,以及包括该获取装置的处理器 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7404042B2 (zh) |
EP (1) | EP1886218B1 (zh) |
JP (1) | JP5059749B2 (zh) |
KR (1) | KR100974023B1 (zh) |
CN (1) | CN100583028C (zh) |
BR (1) | BRPI0610069A2 (zh) |
IL (1) | IL187464A0 (zh) |
TW (1) | TWI319157B (zh) |
WO (1) | WO2006125220A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104662520A (zh) * | 2012-09-26 | 2015-05-27 | 高通股份有限公司 | 用于管理具有不同高速缓存能力的跨页指令的方法和设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454596B2 (en) * | 2006-06-29 | 2008-11-18 | Intel Corporation | Method and apparatus for partitioned pipelined fetching of multiple execution threads |
US8239657B2 (en) * | 2007-02-07 | 2012-08-07 | Qualcomm Incorporated | Address translation method and apparatus |
US20120144123A1 (en) | 2010-12-01 | 2012-06-07 | International Business Machines Corporation | Read-ahead processing in networked client-server architecture |
US9201652B2 (en) | 2011-05-03 | 2015-12-01 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
US10120692B2 (en) | 2011-07-28 | 2018-11-06 | Qualcomm Incorporated | Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form |
US9158696B2 (en) * | 2011-12-29 | 2015-10-13 | Intel Corporation | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses |
US9460018B2 (en) | 2012-05-09 | 2016-10-04 | Qualcomm Incorporated | Method and apparatus for tracking extra data permissions in an instruction cache |
US9424046B2 (en) * | 2012-10-11 | 2016-08-23 | Soft Machines Inc. | Systems and methods for load canceling in a processor that is connected to an external interconnect fabric |
US9348754B2 (en) | 2012-10-11 | 2016-05-24 | Soft Machines Inc. | Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher |
US10671391B2 (en) * | 2014-02-25 | 2020-06-02 | MIPS Tech, LLC | Modeless instruction execution with 64/32-bit addressing |
US9495297B2 (en) | 2014-07-22 | 2016-11-15 | International Business Machines Corporation | Cache line crossing load techniques for a caching system |
CN109240944B (zh) * | 2018-08-16 | 2021-02-19 | 上海天数智芯半导体有限公司 | 一种基于可变长缓存行的数据读写方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689672A (en) | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US6006324A (en) * | 1995-01-25 | 1999-12-21 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US6167506A (en) * | 1997-11-17 | 2000-12-26 | Advanced Micro Devices, Inc. | Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location |
US6499085B2 (en) * | 2000-12-29 | 2002-12-24 | Intel Corporation | Method and system for servicing cache line in response to partial cache line request |
US6938126B2 (en) * | 2002-04-12 | 2005-08-30 | Intel Corporation | Cache-line reuse-buffer |
US6877082B1 (en) * | 2002-12-23 | 2005-04-05 | Lsi Logic Corporation | Central processing unit including address generation system and instruction fetch apparatus |
US7437512B2 (en) * | 2004-02-26 | 2008-10-14 | Marvell International Ltd. | Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions |
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
US7509472B2 (en) * | 2006-02-01 | 2009-03-24 | Sun Microsystems, Inc. | Collapsible front-end translation for instruction fetch |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
-
2005
- 2005-05-18 US US11/132,749 patent/US7404042B2/en active Active
-
2006
- 2006-05-18 JP JP2008512600A patent/JP5059749B2/ja not_active Expired - Fee Related
- 2006-05-18 CN CN200680025583A patent/CN100583028C/zh not_active Expired - Fee Related
- 2006-05-18 TW TW095117671A patent/TWI319157B/zh not_active IP Right Cessation
- 2006-05-18 WO PCT/US2006/019789 patent/WO2006125220A2/en active Application Filing
- 2006-05-18 KR KR1020077029640A patent/KR100974023B1/ko active IP Right Grant
- 2006-05-18 BR BRPI0610069-4A patent/BRPI0610069A2/pt not_active IP Right Cessation
- 2006-05-18 EP EP06770879.2A patent/EP1886218B1/en not_active Not-in-force
-
2007
- 2007-11-18 IL IL187464A patent/IL187464A0/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104662520A (zh) * | 2012-09-26 | 2015-05-27 | 高通股份有限公司 | 用于管理具有不同高速缓存能力的跨页指令的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20080015017A (ko) | 2008-02-15 |
BRPI0610069A2 (pt) | 2010-05-25 |
JP2008541314A (ja) | 2008-11-20 |
US7404042B2 (en) | 2008-07-22 |
TW200713033A (en) | 2007-04-01 |
TWI319157B (en) | 2010-01-01 |
CN100583028C (zh) | 2010-01-20 |
WO2006125220A3 (en) | 2007-05-10 |
JP5059749B2 (ja) | 2012-10-31 |
US20060265572A1 (en) | 2006-11-23 |
WO2006125220A2 (en) | 2006-11-23 |
EP1886218A2 (en) | 2008-02-13 |
IL187464A0 (en) | 2008-03-20 |
KR100974023B1 (ko) | 2010-08-05 |
EP1886218B1 (en) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100583028C (zh) | 用于在处理器中获取指令的方法及获取装置,以及包括该获取装置的处理器 | |
CN100478872C (zh) | 最小化未调度d缓存缺失流水线停顿的方法和装置 | |
CN100487642C (zh) | D缓存缺失预测和调度的方法和装置 | |
CN101449238B (zh) | 分支预测信息方法和设备 | |
CN104731719B (zh) | 一种缓存系统和方法 | |
CN101627366B (zh) | 预加载指令的方法及装置 | |
US6163839A (en) | Non-stalling circular counterflow pipeline processor with reorder buffer | |
US6101577A (en) | Pipelined instruction cache and branch prediction mechanism therefor | |
US6625660B1 (en) | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations | |
CN101493762B (zh) | 处理数据的方法和设备 | |
US20020087849A1 (en) | Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System | |
CN105005463B (zh) | 具有世代重命名的计算机处理器 | |
CN104679481B (zh) | 一种指令集转换系统和方法 | |
KR920006275B1 (ko) | 데이타 처리 장치 | |
US20090210675A1 (en) | Method and system for early instruction text based operand store compare reject avoidance | |
KR101005633B1 (ko) | 일정한 개수의 가변 길이 명령을 가진 명령 캐시 | |
CN101460922B (zh) | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 | |
JP2003514299A5 (zh) | ||
KR101081674B1 (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
EP0488819B1 (en) | Conditional branch instructions execution apparatus | |
CN105446777A (zh) | 高速缓存行的非对齐加载指令的推测并行执行方法 | |
US8707014B2 (en) | Arithmetic processing unit and control method for cache hit check instruction execution | |
US6618803B1 (en) | System and method for finding and validating the most recent advance load for a given checkload | |
US6675287B1 (en) | Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor | |
CN109614146B (zh) | 一种局部跳转指令取指方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100120 Termination date: 20210518 |