CN101223504A - 高速缓存用于多状态处理器的指令 - Google Patents

高速缓存用于多状态处理器的指令 Download PDF

Info

Publication number
CN101223504A
CN101223504A CNA2006800255998A CN200680025599A CN101223504A CN 101223504 A CN101223504 A CN 101223504A CN A2006800255998 A CNA2006800255998 A CN A2006800255998A CN 200680025599 A CN200680025599 A CN 200680025599A CN 101223504 A CN101223504 A CN 101223504A
Authority
CN
China
Prior art keywords
instruction
processor
pre decoding
state
cache memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006800255998A
Other languages
English (en)
Other versions
CN101223504B (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101223504A publication Critical patent/CN101223504A/zh
Application granted granted Critical
Publication of CN101223504B publication Critical patent/CN101223504B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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 or look ahead
    • 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/30181Instruction operation extension or modification
    • 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
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

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

Abstract

一种用于高速缓存用于具有多个操作状态的处理器的指令的方法和设备。所述处理器的所述操作状态中的至少两者支持不同的指令组。当所述处理器在所述状态中的一者下操作时,可从存储器检索指令块。可根据所述状态中的所述一者对所述指令进行预解码,并将其加载到高速缓冲存储器中。所述处理器或另一实体可用于在所述处理器需要所述高速缓冲存储器中所述经预解码的指令中的一者时确定所述处理器的当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同。

Description

高速缓存用于多状态处理器的指令
技术领域
本发明大体上涉及处理系统,且更具体地说,涉及高速缓存用于多状态处理器的指令。
背景技术
计算机通常使用存储器所支持的处理器。存储器是保存程序和数据的存储媒体,处理器需要所述程序和数据来执行其功能。近来,随着更强大的软件程序的出现,对存储器的需求已经以令人惊讶的速度增加。结果是现代处理器需要大量的存储器,其自然比较小的存储器慢。具有能够支持现今的处理器的速度的较大存储器对大规模商业应用来说实在是太昂贵了。
计算机设计师已经通过将存储器组织成若干分级组件来解决此问题。在容量方面最大的组件通常是硬盘驱动器。硬盘驱动器提供大量的廉价永久存储。基本输入/输出系统(BIOS)和操作系统仅仅是通常存储在硬盘驱动器上的程序的几个实例。当计算机运转时,这些程序可加载到随机存取存储器(RAM)中。由用户装入的软件应用程序也可从硬盘驱动器加载到RAM中。RAM是允许处理器更容易地存取信息的临时存储区。
计算机的RAM仍不是快得足以赶上处理器。这意味着处理器可能必须等待将程序指令和数据写入到RAM和从RAM读取程序指令和数据。高速缓冲存储器用于通过使最经常由处理器使用的信息容易可得来增加存储器存取的速度。这通过将少量存储器(已知为初级或等级1(L1)高速缓冲存储器)集成到处理器中来实现。还可在一些计算机应用中使用RAM与L1高速缓冲存储器之间的次级或等级2(L2)高速缓冲存储器。
可通过在将指令放入高速缓冲存储器中之前对所述指令部分地解码,来进一步改进计算机的速度。此过程通常被称为“预解码”,且伴随产生一些“预解码信息”,其可连同指令一起存储在高速缓冲存储器中。预解码信息指示指令的一些基本方面,例如所述指令是算术指令还是存储指令,所述指令是否为分支指令,所述指令是否将作出存储器引导,或可由处理器用来减小解码逻辑的复杂性的任何其它信息。预解码指令通过在不减小其操作频率的情况下减小机器的管线的长度,来改进处理器性能。
在现今的新兴技术的情况下,能够在多个状态下操作的处理器正变得普遍。“多状态处理器”表示可支持两个或两个以上不同指令组的处理器。ARM(高级RISC机器)处理器仅是一个实例。ARM处理器是现今通常在移动应用中使用的高效、低功率RISC处理器,所述移动应用例如是移动电话、个人数字助理(PDA)、数码相机和游戏控制台(仅举几个实例)。ARM处理器过去已经支持两个指令组:ARM指令组,其中所有指令的长度都是32位;和Thumb指令组,其将最通常使用的指令压缩成16位格式。近来已经添加到一些ARM处理器的第三指令组是“Thumb-2执行环境”(T2EE)。T2EE是被优化为用于字节码语言(例如Java和NET)的动态(JIT)编译目标的指令组(类似于Thumb)。
这些多状态处理器已显著增加了现代计算系统的容量,但可能对计算机设计师提出空前挑战。举例来说,如果L1指令高速缓冲存储器中大小为一行的指令块含有来自多个指令组的指令,那么通过假定整个高速缓存行含有在一个状态下的指令而计算出的预解码信息不能用于实际上在另一状态下的那些指令。本发明中所描述的解决方案并不限于具有Thumb和/或T2EE能力的ARM处理器,而是可应用于在将指令放入高速缓冲存储器之前用重叠指令编码来对多个指令组的指令进行预解码的任一系统。
发明内容
本发明的一个方面针对一种操作处理器的方法。所述处理器能够在不同状态下操作,其中每个状态支持一个不同的指令组。所述方法包含在所述处理器在所述状态中的一者下操作时,从存储器检索指令块;根据所述状态中的所述一者对所述指令进行预解码;将经预解码的指令加载到高速缓冲存储器中;以及在所述处理器需要所述经预解码的指令中的在高速缓冲存储器中的一者时确定所述处理器的当前状态是否与所述状态中的用于对指令进行预解码的所述一者相同。
本发明的另一方面针对一种处理系统。所述处理系统包含存储器;高速缓冲存储器;能够在不同状态下操作的处理器,所述状态中的每一者支持一个不同的指令组,所述处理器进一步经配置以当在所述状态中的一者下操作时,从所述存储器检索指令块;以及预解码器,其经配置以根据所述状态中的所述一者,对从存储器检索到的指令进行预解码,其中所述处理器进一步经配置以将经预解码的指令加载到高速缓冲存储器中,且当处理器需要经预解码的指令中的在所述高速缓冲存储器中的一者时,确定所述处理器的当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同。
应了解,所属领域的技术人员从以下详细描述内容中将容易明了本发明的其它实施例,其中以说明的方式来展示和描述本发明的各个实施例。将认识到,本发明能够具有其它且不同的实施例,且本发明的若干细节能够在各个其它方面进行修改,所有这些都是在不脱离本发明的精神和范围的前提下进行的。因此,应将附图和具体实施方式视为本质上是说明性的而不是限制性的。
附图说明
在附图中,以实例的方式而不是限制的方式来说明本发明的各方面,其中:
图1是说明处理系统的实例的功能框图;
图2是说明预解码器的实例的功能框图;
图3A是说明高速缓冲存储器中的指令的数据结构的图;
图3B是说明高速缓存行的数据结构的图;
图3C是说明具有状态信息的高速缓存行的数据结构的图;
图4是说明多状态处理器的一个实施例的操作的流程图;
图5是说明具有状态信息的高速缓存目录标签的数据结构的图;以及
图6是说明多状态处理器的另一实施例的操作的流程图。
具体实施方式
希望下文结合附图陈述的具体实施方式作为对本发明各个实施例的描述,且不希望其代表可实践本发明的仅有的实施例。出于提供对本发明的全面理解的目的,具体实施方式包含特定细节。然而,所属领域的技术人员将了解,可在没有这些特定细节的情况下实践本发明。在一些情况下,以框图形式来展示众所周知的结构和组件,以免混淆本发明的概念。
图1是说明能够处理、检索和存储信息的计算机100(或其它处理系统)的实例的概念框图。计算机100可以是独立组件,或者嵌入装置中,所述装置例如是移动电话、PDA、数码相机、游戏控制台或任一其它合适的装置。计算机100可包含处理器102,例如微处理器或其它处理实体。在计算机100的一个实施例中,处理器102是32位嵌入式RISC微处理器,在业界通常称为ARM处理器。ARM处理器通常被用作平台来运行用于无线、消费者、成像、自动化、工业和连网应用的复合操作系统。包含在许多ARM处理器中的是Thumb指令组,其将大部分通常使用的32位ARM指令压缩成16位形式。ARM也将32位指令添加到Thumb。Thumb指令组是可在需要代码密度时使用的32位ARM指令的子集的简略形式。如本发明的背景技术部分中所指示,ARM处理器还可执行T2EE。
计算机100还可包含存储器104,其保存处理器102需要用来执行其功能的程序指令和数据。存储器104可用RAM或其它合适的存储器来实施,且可由计算机的主存储器和(视情况)L2高速缓冲存储器组成。可在处理器102与存储器104之间使用指令高速缓冲存储器106。指令高速缓冲存储器106是相对较小的,高速的L1高速缓冲存储器,其用于临时存储来自存储器104的待由处理器102执行的程序指令。在计算机100的一个实施例中,指令高速缓冲存储器106是高速静态RAM(SRAM),而不是可用于存储器104的较慢且较便宜的动态RAM(DRAM)。指令高速缓冲存储器106提供用于增加处理器存取速度的机制,因为多数程序重复地存取相同的指令。通过尽可能多地将此信息保存在指令高速缓冲存储器106中,处理器102避免了必须存取较慢的存储器104。计算机100还可包含数据高速缓冲存储器(未图示),其用于存储执行所述指令的过程中所使用的数据
指令高速缓冲存储器106为来自存储器104的最新近由处理器102存取的指令提供存储。当处理器102需要来自存储器104的指令时,其首先检查指令高速缓冲存储器106,以确定所述指令是否在那里。当在指令高速缓冲存储器106中找到处理器102所需的指令时,所述查找被称为“高速缓存命中”。在高速缓存命中的情况下,可直接从指令高速缓冲存储器106检索所述指令,因此大大增加指令可被处理的速率。处理器102所需的未在指令高速缓冲存储器106中找到的指令导致“高速缓存未中”。在高速缓存未中的情况下,处理器102必须从存储器104取出所需的指令,这与从指令高速缓冲存储器106取出指令相比,花费显著较长的时间。通常,处理器102从存储器104取出“高速缓存行”。来自存储器104的高速缓存行可存储在指令高速缓冲存储器106中,以供将来存取。
可通过在将来自存储器104的指令放在指令高速缓冲存储器106中之前对所述指令进行预解码,来进一步增强计算机性能。预解码器108在指令被从存储器104取出时取得所述指令,根据处理器102的操作状态对所述指令进行预解码,并将预解码信息存储在指令高速缓冲存储器106中。来自处理器102的信令可用于指示处理器102的针对预解码操作的当前操作状态。
图2是说明预解码器的实例的功能框图。预解码器108包含输入寄存器202,其用于接收来自存储器104(见图1)的高速缓存行中的指令。在多状态处理器的情况下,可使用两个预解码器(一个预解码器针对一个处理器状态)204a、204b。可将输入寄存器202中的指令提供到预解码器204a、204b,以产生每个指令的预解码信息。可使用多路复用器206来基于来自处理器102(见图1)的信令,选择适当的预解码信息。在预解码器108的一些实施例中,可对到达预解码器204a、204b的输入进行选通,以通过仅启用由处理器102选定的预解码器来节约功率。可将来自寄存器202的每个指令连同来自多路复用器206的其相应预解码信息一起放在输出寄存器208中。可将输出寄存器的内容读取到处理器102和指令高速缓冲存储器106(见图1)两者中。
图3A说明单个指令302如何与其预解码信息304一起存储在指令高速缓冲存储器106中。图3B说明由八个指令组成的整个高速缓存行如何存储在指令高速缓冲存储器106中。在此实例中,每个指令302a-302h的末端上附加有其预解码信息304a-304h。视特定应用和总体设计限制而定,预解码信息可以是任一数目的位。此外,使用八个指令来说明高速缓存行仅作为实例而提供,应了解,每个高速缓存行可保存任一数目的指令。
指令高速缓冲存储器106保存高速缓存目录(未图示)。高速缓存目录针对每个高速缓存行含有一个条目或“标签”。高速缓存目录标签与高速缓冲存储阵列中的其相关联高速缓存行之间存在一对一映射。高速缓存目录标签含有用于高速缓存行中的第一指令的存储器地址。处理器102(见图1)通过搜索高速缓存目录以获得具有所述存储器地址的标签来取出指令。匹配用信号通知高速缓存命中。匹配的高速缓存目录标签指示哪一高速缓存行含有所需的指令。接着,处理器可存取指令及其预解码信息。如果处理器不能找到匹配(即,高速缓存未中),那么其将试图从存储器104(见图1)读取高速缓存行。从存储器检索到的高速缓存行被预解码并放入指令高速缓冲存储器106中。一个或一个以上指令还可直接加载到处理器102中,以供立即解码和执行。可对高速缓存目录进行更新,使得处理器102在将来存取时可确定高速缓存行驻存在高速缓冲存储阵列中的何处。
在图1的处理系统中,在使用多状态处理器102的情况下,多个指令组可驻存在存储器104中。在这些多状态处理环境下,从存储器104检索到的高速缓存行可包含用于所述处理器的多个状态的指令。此外,将基于处理器102的当前状态对高速缓存行中的每个指令进行预解码,且一次对整个高速缓存行进行预解码。如果(例如)当从存储器104检索高速缓存行时处理器102正在特定状态下操作,那么在将高速缓存行中所含有的所有指令放入指令高速缓冲存储器106中之前,将对所述指令进行预解码,如同它们是用于所述状态的指令。由于所述预解码的缘故,当处理器102处于不同的状态时不能合适地执行对指令高速缓冲存储器106的随后存取。
处理系统100可使用若干技术来确保从指令高速缓冲存储器106检索到的每个指令不会由具有不正确预解码信息的处理器102执行。一种可能的解决方案是将“状态信息”与预解码的指令一起存储在每个高速缓存行中。将“状态信息”界定为一个或一个以上位,其指示当相关联的高速缓存行被预解码时处理器102处于哪一状态。图3C说明由八个经预解码的指令组成的整个高速缓存行如何与状态信息一起存储。类似于图3B,每个指令302a-302h的末端上附加有其预解码信息304a-304h。然而,除图3B中所示之外,高速缓存行的开端处还包含有两个位的状态信息306。两个位的状态信息提供至多达四个不同的操作状态。所属领域的技术人员将容易能够确定支持其它应用中的必需数目的处理器状态所需的位的数目。
图4是说明多状态处理器使用状态信息与经预解码的指令来确定特定指令的预解码信息是否正确的操作的流程图。在步骤402中,处理器将所需指令的虚拟地址翻译成存储器地址。接着,在步骤402中,处理器搜索高速缓存目录中的标签,以获得所述存储器地址。所述搜索导致高速缓存命中或高速缓存未中。在高速缓存未中的情况下,在步骤406中,处理器将试图从存储器检索所述指令。在高速缓存命中的情况下,在步骤408中,处理器将从指令高速缓冲存储器检索所述指令,且在步骤410中,将相应的状态信息与处理器的当前状态进行比较。如果处理器的当前状态与所述指令的状态信息匹配,那么在步骤412中,处理器将使用预解码信息来解码和执行所述指令。否则,在步骤412中解码和执行所述指令之前,在步骤414中,处理器将对所述指令进行预解码。
另一种可能的解决方案是在每个高速缓存目录标签中包含状态信息。图5展示状态信息可如何添加到高速缓存目录中的标签。将高速缓存目录502展示为具有许多标签504,其中每个标签对应于高速缓冲存储阵列中的一个高速缓存行。高速缓存目录标签504含有地址字段506和状态字段508。地址字段506包含用于高速缓存行中的第一指令的存储器地址,且状态字段508包含在高速缓存行被预解码时识别处理器的状态的状态信息。
图6是说明多状态处理器使用高速缓存目录标签中的状态信息来确定特定指令的预解码信息是否正确的操作的流程图。在步骤602中,处理器执行所需的计算来产生用于执行高速缓存查找的地址。在步骤604中,处理器将状态信息添加到对应于处理器的当前状态的存储器地址。存储器地址与状态信息结合形成标签。接着,在步骤606中,将由处理器形成的标签与高速缓存目录中的标签进行比较。在此情况下,高速缓存命中不仅意味着处理器所需的指令在指令高速缓冲存储器中,而且意味着经预解码的指令可由处理器在其当前状态下执行。在高速缓存命中的情况下,在步骤608中,处理器检索所述指令,并在步骤610中,使用预解码信息来解码和执行所述指令。在高速缓存未中的情况下,在步骤612中,处理器从存储器检索具有所需指令的高速缓存行;在步骤614中,起始高速缓存行的预解码;且在步骤616中,使用预解码信息来解码和执行所述指令。在步骤618中,处理器将经预解码的高速缓存行存储到指令高速缓冲存储器中,并用地址和状态信息来更新其标签。结果是存储块的多个副本可存在于指令高速缓冲存储器中不同高速缓存行处。在不同状态下对驻存在这些副本的每一者中的指令进行预解码,且高速缓冲存储器中的单个查找决不会返回多个高速缓存命中。
结合本文所揭示的实施例而描述的各种说明性逻辑块、模块、电路、元件和/或组件可用以下装置来实施或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或经设计以执行本文所述的功能的其任一组合。通用处理器可以是微处理器,但在替代方案中,处理器可以是任一常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一个或一个以上微处理器或任何其它此类配置。
结合本文所揭示的实施例而描述的方法或算法可直接在硬件中实施,在由处理器执行的软件模块中实施,或在上述两者的组合中实施。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移除盘、CD-ROM或此项技术中已知的任一其它形式的存储媒体中。存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息,且将信息写入到存储媒体。在替代方案中,存储媒体可以与处理器成一体式。
提供对所揭示实施例的前面的描述内容,以使所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明了对这些实施例的各种修改,且在不脱离本发明的精神或范围的情况下,本文所界定的一般原理可应用于其它实施例。因此,不希望本发明局限于本文所展示的实施例,而是本发明应符合与权利要求书一致的完整范围,其中不希望以单数形式引用元件表示“一个且仅一个”(除非明确这样陈述),而是表示“一个或一个以上”。所属领域的一般技术人员已知或以后将知道的贯穿本发明而描述的各个实施例的元件的所有结构和功能均等物特意以引用的方式并入本文中,且希望为权利要求书所涵盖。此外,本文所揭示的任何内容均不希望贡献给公众,不管权利要求书中是否明确叙述了此类揭示内容。任何权利要求项要素均不应在35U.S.C.§112第六段的条款下进行解释,除非特意使用短语“用于……的装置”来叙述所述要素,或在方法项的情况下,使用短语“用于……的步骤”来叙述所述要素。

Claims (30)

1.一种操作处理器的方法,所述处理器能够在不同状态下操作,所述状态中的至少两者支持不同的指令组,所述方法包括:
当所述处理器在所述状态中的一者下操作时,从存储器检索指令块;
根据所述状态中的所述一者对所述指令进行预解码;
将所述经预解码的指令加载到高速缓冲存储器中;以及
在所述处理器需要所述高速缓冲存储器中所述经预解码的指令中的一者时确定所述处理器的当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同。
2.根据权利要求1所述的方法,其进一步包括如果确定所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者相同,那么执行所述高速缓冲存储器中所述经预解码的指令中的所述一者。
3.根据权利要求1所述的方法,其进一步包括将状态信息与所述经预解码的指令一起加载在所述高速缓冲存储器中,所述状态信息指示根据所述状态中的所述一者对所述指令进行了预解码。
4.根据权利要求3所述的方法,其中所述确定所述处理器的所述当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同是通过将所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息进行比较来作出的。
5.根据权利要求4所述的方法,其进一步包括如果所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息之间的所述比较指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者相同,那么执行所述高速缓冲存储器中所述经预解码的指令中的所述一者。
6.根据权利要求4所述的方法,其中所述经预解码的指令中的所述一者包含从所述存储器检索到所述指令中的一者和预解码信息,所述方法进一步包括如果所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息之间的所述比较指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者不同,那么忽略所述预解码信息。
7.根据权利要求6所述的方法,其进一步包括在执行之前,对所述指令中不具有所述预解码信息的所述一者进行处理。
8.根据权利要求1所述的方法,其中所述高速缓冲存储器包含与所述经预解码的指令相关联的标签,所述标签由所述处理器用来确定所述经预解码的指令中所述处理器需要的所述一者是否在所述高速缓冲存储器中,所述方法进一步包括将状态信息添加到所述标签,所述状态信息指示根据所述状态中的所述一者对所述指令进行了预解码。
9.根据权利要求8所述的方法,其中所述确定所述处理器的所述当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同是通过检查所述标签来作出的。
10.根据权利要求9所述的方法,其进一步包括如果所述标签指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者相同,那么从所述高速缓冲存储器检索所述经预解码的指令中的所述一者。
11.根据权利要求9所述的方法,其进一步包括如果所述标签指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者不同,那么从所述存储器检索所述指令块的另一副本。
12.根据权利要求11所述的方法,其进一步包括执行来自指令的第二副本的所述指令中的一者。
13.根据权利要求11所述的方法,其进一步包括根据所述处理器的所述当前状态对所述指令的所述另一副本进行预解码,以及将所述指令的所述经预解码的第二副本加载到所述高速缓冲存储器中。
14.根据权利要求13所述的方法,其进一步包括使第二标签与来自指令的所述第二副本的所述经预解码的指令相关联,以及将状态信息添加到所述第二标签,所述添加到所述第二标签的状态信息指示根据所述处理器的所述当前状态对所述指令的所述第二副本进行了预解码。
15.根据权利要求1所述的方法,其中所述处理器的操作状态包含ARM、Thumb和T2EE中的至少两者。
16.一种处理系统,其包括
存储器;
高速缓冲存储器;
处理器,其能够在不同状态下操作,所述状态中的每一者支持一不同指令组,所述处理器进一步经配置以在所述状态中的一者下操作时从所述存储器检索指令块;以及
预解码器,其经配置以根据所述状态中的所述一者对从所述存储器检索到的所述指令进行预解码;
其中所述处理器进一步经配置以将所述经预解码的指令加载到所述高速缓冲存储器中,且当所述处理器需要所述高速缓冲存储器中所述经预解码的指令中的一者时,确定所述处理器的当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同。
17.根据权利要求16所述的处理系统,其中所述处理器进一步经配置以在所述处理器确定其当前状态与所述状态中用于对所述指令进行预解码的所述一者相同时,执行所述高速缓冲存储器中所述经预解码的指令中的所述一者。
18.根据权利要求16所述的处理系统,其中所述处理器进一步经配置以将状态信息与所述经预解码的指令一起加载在所述高速缓冲存储器中,所述状态信息指示根据所述状态中的所述一者对所述指令进行了预解码。
19.根据权利要求18所述的处理系统,其中所述处理器进一步经配置以通过将所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息进行比较来确定其当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同。
20.根据权利要求19所述的处理系统,其中所述处理器进一步经配置以在所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息之间的所述比较指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者相同时,执行所述高速缓冲存储器中所述经预解码的指令中的所述一者。
21.根据权利要求19所述的处理系统,其中所述经预解码的指令中的所述一者包含从所述存储器检索到的所述指令中的一者和预解码信息,且其中所述处理器进一步经配置以在所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息之间的所述比较指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者不同时,忽略所述预解码信息。
22.根据权利要求21所述的处理系统,其中所述处理器进一步经配置以在所述处理器的所述当前状态与所述高速缓冲存储器中的所述状态信息之间的所述比较指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者不同时,在执行之前对所述指令中不具有所述预解码信息的所述一者进行处理。
23.根据权利要求16所述的处理系统,其中所述高速缓冲存储器包含与所述经预解码的指令相关联的标签,所述标签由所述处理器用来确定所述经预解码指令中所述处理器需要的所述一者是否在所述高速缓冲存储器中,且其中所述处理器进一步经配置以将状态信息添加到所述标签,所述状态信息指示根据所述状态中的所述一者对所述指令进行了预解码。
24.根据权利要求23所述的处理系统,其中所述处理器进一步经配置以通过检查所述标签来确定其当前状态是否与所述状态中用于对所述指令进行预解码的所述一者相同。
25.根据权利要求24所述的处理系统,其中所述处理器进一步经配置以在所述标签指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者相同时,从所述高速缓冲存储器中检索所述经预解码的指令中的所述一者。
26.根据权利要求24所述的处理系统,其中所述处理器进一步经配置以在所述标签指示所述处理器的所述当前状态与所述状态中用于对所述指令进行预解码的所述一者不同时,从所述存储器中检索所述指令块的第二副本。
27.根据权利要求26所述的处理系统,其中所述处理器进一步经配置以执行来自指令的所述第二副本的所述指令中的一者。
28.根据权利要求26所述的处理系统,其中所述预解码器进一步经配置以根据所述处理器的所述当前状态对所述指令的所述第二副本进行预解码,且所述处理器进一步经配置以将所述指令的所述经预解码的第二副本加载到所述高速缓冲存储器中。
29.根据权利要求28所述的处理系统,其中所述高速缓冲存储器进一步经配置以使第二标签与来自指令的所述第二副本的所述经预解码的指令相关联,且所述处理器进一步经配置以将状态信息添加到所述第二标签,所述添加到所述第二标签的状态信息指示根据所述处理器的所述当前状态对所述指令的所述第二副本进行了预解码。
30.根据权利要求16所述的处理系统,其中所述处理器的操作状态包含ARM、Thumb和T2EE。
CN2006800255998A 2005-05-18 2006-05-18 高速缓存用于多状态处理器的指令 Expired - Fee Related CN101223504B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/132,748 US7769983B2 (en) 2005-05-18 2005-05-18 Caching instructions for a multiple-state processor
US11/132,748 2005-05-18
PCT/US2006/019788 WO2006125219A2 (en) 2005-05-18 2006-05-18 Caching instructions for a multiple-state processor

Publications (2)

Publication Number Publication Date
CN101223504A true CN101223504A (zh) 2008-07-16
CN101223504B CN101223504B (zh) 2012-11-14

Family

ID=37025156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800255998A Expired - Fee Related CN101223504B (zh) 2005-05-18 2006-05-18 高速缓存用于多状态处理器的指令

Country Status (8)

Country Link
US (1) US7769983B2 (zh)
EP (1) EP1886217B1 (zh)
JP (2) JP5248313B2 (zh)
KR (1) KR101039018B1 (zh)
CN (1) CN101223504B (zh)
IL (1) IL187462A0 (zh)
MX (1) MX2007014522A (zh)
WO (1) WO2006125219A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117260A (zh) * 2009-12-31 2011-07-06 英特尔公司 在cpu和gpu之间共享资源
CN109101276A (zh) * 2018-08-14 2018-12-28 阿里巴巴集团控股有限公司 在cpu中执行指令的方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7925867B2 (en) * 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US8037286B2 (en) * 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US7917735B2 (en) * 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US7747839B2 (en) * 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
GB2460280A (en) 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
CN104765699B (zh) * 2014-01-02 2018-03-27 光宝科技股份有限公司 处理系统及其操作方法

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0476626A (ja) 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
DE69327927T2 (de) * 1992-08-31 2000-10-12 Sun Microsystems Inc Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5819056A (en) 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5822559A (en) 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US6002876A (en) * 1996-09-27 1999-12-14 Texas Instruments Incorporated Maintaining code consistency among plural instruction sets via function naming convention
US6081884A (en) * 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US6430674B1 (en) * 1998-12-30 2002-08-06 Intel Corporation Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
JP3867427B2 (ja) 1999-01-11 2007-01-10 ソニー株式会社 プロセッサ装置および集積回路
US6438700B1 (en) * 1999-05-18 2002-08-20 Koninklijke Philips Electronics N.V. System and method to reduce power consumption in advanced RISC machine (ARM) based systems
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6654871B1 (en) * 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
GB2358261B (en) * 2000-01-17 2004-06-09 Advanced Risc Mach Ltd Data processing with native and interpreted program instruction words
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US6564298B2 (en) 2000-12-22 2003-05-13 Intel Corporation Front end system having multiple decoding modes
US7093108B2 (en) 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US7356673B2 (en) * 2001-04-30 2008-04-08 International Business Machines Corporation System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
US6816962B2 (en) 2002-02-25 2004-11-09 International Business Machines Corporation Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions
US6978358B2 (en) * 2002-04-02 2005-12-20 Arm Limited Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers
EP1387252B1 (en) 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
EP1387250B8 (en) * 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
JP4127495B2 (ja) * 2002-09-05 2008-07-30 株式会社ルネサステクノロジ 情報処理装置
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US20060149927A1 (en) * 2002-11-26 2006-07-06 Eran Dagan Processor capable of multi-threaded execution of a plurality of instruction-sets
GB2403572B (en) * 2002-12-12 2005-11-09 Advanced Risc Mach Ltd Instruction timing control within a data processing system
US7080242B2 (en) * 2002-12-19 2006-07-18 Hewlett-Packard Development Company, L.P. Instruction set reconciliation for heterogeneous symmetric-multiprocessor systems
US6952754B2 (en) * 2003-01-03 2005-10-04 Intel Corporation Predecode apparatus, systems, and methods
GB2402757B (en) * 2003-06-11 2005-11-02 Advanced Risc Mach Ltd Address offset generation within a data processing system
JP2006160200A (ja) 2004-12-10 2006-06-22 Tkj Kk 乗員保護装置、乗員保護装置付車両
US7421568B2 (en) 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US7234043B2 (en) * 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7353363B2 (en) 2006-03-03 2008-04-01 Microsystems, Inc. Patchable and/or programmable decode using predecode selection
US7962725B2 (en) 2006-05-04 2011-06-14 Qualcomm Incorporated Pre-decoding variable length instructions
US7711927B2 (en) 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117260A (zh) * 2009-12-31 2011-07-06 英特尔公司 在cpu和gpu之间共享资源
CN102117260B (zh) * 2009-12-31 2017-06-27 英特尔公司 在cpu和gpu之间共享资源
US10181171B2 (en) 2009-12-31 2019-01-15 Intel Corporation Sharing resources between a CPU and GPU
CN109101276A (zh) * 2018-08-14 2018-12-28 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
US11579885B2 (en) 2018-08-14 2023-02-14 Advanced New Technologies Co., Ltd. Method for replenishing a thread queue with a target instruction of a jump instruction

Also Published As

Publication number Publication date
WO2006125219A2 (en) 2006-11-23
EP1886217B1 (en) 2018-08-01
JP5248313B2 (ja) 2013-07-31
US20060265573A1 (en) 2006-11-23
MX2007014522A (es) 2008-02-07
WO2006125219A9 (en) 2008-01-31
US7769983B2 (en) 2010-08-03
WO2006125219A3 (en) 2007-03-29
IL187462A0 (en) 2008-03-20
EP1886217A2 (en) 2008-02-13
JP2008541313A (ja) 2008-11-20
KR101039018B1 (ko) 2011-06-03
JP2013117974A (ja) 2013-06-13
CN101223504B (zh) 2012-11-14
KR20080015016A (ko) 2008-02-15

Similar Documents

Publication Publication Date Title
CN101223504B (zh) 高速缓存用于多状态处理器的指令
US5870576A (en) Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
JP5341163B2 (ja) 可変長命令の固定数を持つ命令キャッシュ
JP5313228B2 (ja) 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア
JP5231018B2 (ja) ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制
US9396117B2 (en) Instruction cache power reduction
US6757817B1 (en) Apparatus having a cache and a loop buffer
US5396604A (en) System and method for reducing the penalty associated with data cache misses
US7130963B2 (en) System and method for instruction memory storage and processing based on backwards branch control information
MX2007012582A (es) Unidad de memoria de instruccion y metodo de operacion.
WO2004081796A1 (en) Partial linearly tagged cache memory system
CN101158926B (zh) 跟踪高速缓存中节省功率的装置和方法
US6963988B2 (en) Fixed point unit power reduction mechanism for superscalar loop execution
Chapyzhenka et al. Low-power architecture for CIL-code hardware processor
JPH09311787A (ja) データ処理装置
Zhong et al. Power improvement using block-based loop buffer with innermost loop control

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: 20121114

Termination date: 20210518