CN204945992U - 一种处理器 - Google Patents

一种处理器 Download PDF

Info

Publication number
CN204945992U
CN204945992U CN201520504307.5U CN201520504307U CN204945992U CN 204945992 U CN204945992 U CN 204945992U CN 201520504307 U CN201520504307 U CN 201520504307U CN 204945992 U CN204945992 U CN 204945992U
Authority
CN
China
Prior art keywords
thread
processor
logic
instruction
operator scheme
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
CN201520504307.5U
Other languages
English (en)
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.)
Hai Luo Software Co ltd
Mex Technology Co ltd
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Application granted granted Critical
Publication of CN204945992U publication Critical patent/CN204945992U/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Computer Hardware Design (AREA)

Abstract

描述了一种处理器。在一个实施方式中,处理器包括64位硬件,并且当运行64位操作系统时,处理器起单线程处理器的作用。然而,当运行32位操作系统(其可能为运行在虚拟机上的客户操作系统)时,处理器起双线程核的作用。寄存器文件在逻辑上被分为两个部分,每个线程一个部分,且功能单元内的逻辑可在线程之间被分割、线程之间被共享或被复制以便为每个线程提供逻辑的实例。配置位可被设置成指示处理器是应该起单线程还是多线程设备的作用。

Description

一种处理器
技术领域
本实用新型涉及一种处理器。
背景技术
当提及处理器为64位或32位时,这通常指的是寄存器的宽度(即,软件可见寄存器的宽度),以及当提及操作系统为64位或32位时,这指的是虚拟存储地址的宽度。具有64位存储地址的处理器因此能够直接访问264字节的字节可寻址存储器。大部分新处理器为64位的,并且这种处理器当运行64位软件的时候执行得最有效率。然而,64位处理器是向下兼容的,以及大部分可以运行大部分32位软件,但这个效率低,因为32位软件在64位处理器中不使用所有的硬件。
下面描述的实施方式不受解决已知处理器结构的任何或所有缺点的实现的限制。
实用新型内容
本实用新型内容被提供以简化形式来介绍一系列概念,这些概念在具体实施方式中有进一步的描述。该实用新型内容并不打算表明所主张的主题的关键特征或本质特征,其也不打算用作在确定所主张的主题的范围时的帮助。
描述了在64位处理器上有效运行32位操作系统的方法。在一个实施方式中,处理器包括64位硬件,并且当运行64位操作系统时,处理器起单线程处理器的作用。然而,当运行32位操作系统(其可能为运行在虚拟机上的客户操作系统)时,处理器起双线程核的作用。寄存器文件在逻辑上被分为两个部分,每个线程一个部分,且功能单元内的逻辑可在线程之间被分割、线程之间被共享或被复制以便为每个线程提供逻辑的实例。配置位(configurationbits)可被设置成指示处理器是应该起单线程还是多线程设备的作用。
根据本实用新型的一方面,提供了一种处理器,其可具有:第一操作模式,其中所述处理器可以起单线程(n.X)位处理器的作用;第二操作模式,其中所述处理器可以起n线程X位处理器的作用,其中n是大于一的正整数,所述处理器可包括:
取指级,其可被安排成在第一操作模式中从软件的单一线程提取指令,并在所述第二操作模式中从软件的n个线程中的每一个线程提取指令;
一个或多个配置寄存器,其可被安排成存储配置参数,所述配置参数可指示软件可见寄存器的宽度;
寄存器文件,其可包括多个通用寄存器;
控制逻辑,其可与所述寄存器文件相关联,并可被安排成在所述第二操作模式中在逻辑上将所述寄存器文件分为n个部分并控制对所述部分的访问,每个部分可被安排成存储用于所述软件的n个线程中的一个线程的数据;以及
一个或多个功能单元,其可被安排成在所述第一操作模式中执行来自所述单一线程的指令,并且在所述第二操作模式中执行来自所述n个线程的指令,
其中所述取指级、所述控制逻辑和所述功能单元均可被安排成根据所述配置参数的值在所述第一操作模式和所述第二操作模式之间转换。
在一些实施方式中,所述处理器可以为64位处理器,n=2且X=32,所述配置参数可被安排成指示所述软件是64位操作系统还是32位操作系统,以及所述取指级、所述控制逻辑和所述功能单元均可被安排成在所述第一操作模式中运行以响应所述配置参数指示所述软件为64位操作系统,并且在所述第二操作模式中运行以响应所述配置参数指示所述软件为32位操作系统。
在一些实施方式中,n=2。
在一些实施方式中,所述功能单元可包括由两个连接的逻辑块形成的逻辑功能,其中在所述第二操作模式中,所述逻辑块之间的连接可以被封住,且每个块可执行来自两个线程中的一个线程的指令,其中可基于所述配置参数的值控制所述两个连接的逻辑块之间的链接。
在一些实施方式中,处理器还可包括在所述两个连接的逻辑块之间的进位路径中的逻辑,其中,所述逻辑可被基于所述配置寄存器中存储的配置参数的值控制。
在一些实施方式中,所述功能单元可包括逻辑功能,所述逻辑功能可包括多个复制的块,每个块可被安排成执行来自不同线程的指令。
在一些实施方式中,所述功能单元可包括逻辑功能,所述逻辑功能可包括逻辑块和仲裁逻辑,且所述仲裁逻辑可被安排成在所述第二操作模式中在线程之间共享所述逻辑块。
在一些实施方式中,所述处理器可以为乱序处理器,且所述处理器还可包括:
重排序缓冲器;以及
提交单元,
其中在所述第二操作模式中,所述重排序缓冲器可在逻辑上被分为n个部分,每个部分可以与所述n个线程中的一个线程相关联,以及
其中所述提交单元可被安排成在所述第一操作模式中对所述单一线程的指令进行重排序,并且在所述第二操作模式中通过从所述重排序缓冲器读取来对所述n个线程中的每一个线程的指令进行重排序。
在一些实施方式中,功能单元可包括刷新逻辑,所述刷新逻辑可被安排成在刷新所述功能单元的一部分之前执行对线程号的比较。
在一些实施方式中,所述软件可包括运行在所述处理器上的虚拟机上的客户系统。
第一方面提供具有第一和第二操作模式的处理器,处理器包括:一个或多个配置寄存器,其被安排成存储配置参数,配置参数表明软件可见寄存器的宽度;寄存器文件,其包括多个通用寄存器;控制逻辑,其与寄存器文件相联系并在第二操作模式中安排成逻辑上将寄存器文件分为多个部分并控制对部分的访问,每个部分被安排成存储用于软件的多个线程中的一个的数据;以及一个或多个功能单元,其被安排成在第一操作模式中执行来自单线程的指令并在第二操作模式中执行来自多线程的指令,其中取指级、控制逻辑和功能单元中每个被安排成根据配置参数的值在第一和第二操作模式之间转换。
第二方面提供一种操作处理器的方法,其包括设置一个或多个配置寄存器来指示软件可读寄存器的宽度;以及根据配置寄存器在第一和第二操作模式之间转换,其中在第一操作模式中,处理器起单线程处理器的作用,并在第二操作模式中,处理器起多线程处理器的作用。
另外的方面提供了计算机可读存储介质,其具有在其上编码的用于产生如本文中所述的处理器的计算机可读程序代码;计算机可读存储介质,其具有在其上编码的用于产生配置成执行本文描述的方法的处理器的计算机可读程序代码。
本文描述的方法可由配置有软件的计算机执行,软件以存储在有形存储介质上的机器可读形式,例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式、或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码工具的计算机程序的形式,且其中的计算机程序可体现在计算机可读存储介质上。有形(或非暂时性)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
本文描述的硬件部件可由非暂时性计算机可读存储介质产生,非暂时性计算机可读存储介质具有在其上编码的计算机可读程序代码。
这确认了固件和软件可被单独使用,且是有价值的。预期包含软件,软件运行于或控制“哑”或标准硬件,以执行期望功能。还预期包括“描述”或定义硬件配置的软件,例如,如用于设计硅片或用于配置通用可编程芯片的HDL(硬件描述语言)软件,以执行期望功能。
如将对技术人员明显的是,优选的特征可在适当时被组合,并可与本实用新型的任何方面组合。
附图说明
将参考下面的附图以例子的方式描述本实用新型的实施方式,其中:
图1示出示例性乱序处理器的原理图;
图2示出算术逻辑单元(ALU)里的加法器功能的三个原理图;
图3示出第一和第二操作模式中的示例性功能单元的两个原理图;
图4为操作如图1所示的处理器的示例性方法的流程图;以及
图5是示例性有序处理器的原理图。
在全部附图中使用共同的参考数字来指示类似的特征。
具体实施方式
下面仅以例子的方式描述本实用新型的实施方式。这些例子代表申请人当前已知的实施本实用新型的最佳方式,但是其不是可实现本实用新型的唯一方式。该描述阐述例子的功能和用于构造和操作例子的步骤序列。然而,可通过不同的例子来实现相同或等效的功能和序列。
如上所述,尽管诸如32位操作系统(OS)的32位软件能够在64位硬件上运行,但是32位软件不利用64位处理器中的额外的硬件。本文描述了处理器结构和操作处理器的方法,其使得64位硬件能够对运行在该硬件上的32位软件表现为双线程32位核,对64位软件表现为单线程64位核。例如,32位软件可以是运行在64位管理程序(或虚拟机监视程序)上的客户OS,或者可选择地,处理器可被设计成被启动到64位操作模式或32位操作模式。通过在起双线程32位处理器(如本文所述的)作用的64位硬件上运行32位软件,与将32位软件运行在标准的64位处理器上相比,提高了软件的性能。而且,在使用虚拟化的情况下(例如,32位软件为运行在64位管理程序上的客户OS的情况下),硬件能以对于客户OS透明的方式在两种操作模式(单线程64位和双线程32位)之间转换,并且可根据硬件上正运行什么(例如,客户OS是32位还是64位)来动态地做到这点。本文所描述的硬件操作对于64位软件是不变的,但是对于32位软件有差异地运行。
存在为什么用户可能希望在64位硬件上运行32位软件的许多原因。不是所有的操作需要64位软件的额外的容量,且具有大量的遗留32位软件。在不同示例中,用户可能使用虚拟化来在根OS的顶上托管客户OS,其中根OS是64位软件,且客户OS可以是32位或64位软件。在不同示例中,除了客户OS在进行大的乘法之外,可能不需要64位,因此用户可只使用32位客户OS或可在64位客户OS和32位客户OS之间转换。在一些示例中,用户可在根OS的顶上运行两个或多于两个客户操作系统(例如,工作OS和家庭OS),其中一个或两个均可以是32位OS。与在64位硬件上的单一32位线程相比,可通过以两个32位线程运行的这种方式来获得性能的提高。
为了起双线程核的作用,当运行32位软件的时候,处理器中(例如,在处理器中的寄存器文件中)的通用寄存器(GPR)在逻辑上被分为两个部分,其中每个线程使用GPR的两个部分中的一个部分。例如,第一线程(线程0)可使用每个GPR的下半部分(例如,GPR[0]的下半部分、GPR[1]的下半部分等),且第二线程(线程1)可使用每个GPR的上半部分(例如,GPR[0]的上半部分、GPR[1]的上半部分等)。此外,处理器中的一些算术逻辑单元(ALU)可被设计,从而可将64位ALU使用于并行实施两个32位操作。可在线程之间共享或者复制其他ALU,以为每个线程提供逻辑实例。
尽管方法和硬件在本文中被描述为用于在64位硬件上运行32位软件,但是本技术也可被使用于:在128位硬件上运行32位软件(这种情况下,硬件作为四线程32位处理器);在128位硬件上运行64位软件(这种情况下,硬件作为双线程64位处理器);在96位硬件上运行32位软件(这种情况下,硬件作为三线程32位处理器)等等。总之,本文所述的方法和硬件可被使用于在(n.X)位硬件上(其中n为大于1的正整数)运行X位软件(其中,例如,X=32、64等),其中该(n.X)位硬件作为n线程X位处理器。产生的硬件具有多个操作模式:第一操作模式,其中它作为单线程(n.X)位核;以及至少一个额外的操作模式,其中它作为n线程X位处理器(其中每个GPR被分为n个部分,每个线程使用GPR的部分中的一个)。
在不同示例中,硬件可具有多于两个的操作模式,例如,128位硬件可在第一操作模式中作为单线程128位处理器、在第二操作模式中作为双线程64位处理器和在第三操作模式中作为四线程32位处理器操作。通常,硬件至少有两个操作模式。在一个操作模式中,它作为单线程核(且这个可被称为操作的“普通操作模式”),以及在每个额外的操作模式中,它作为多线程核(且额外的操作模式可被称为操作的“多线程操作模式”)。
图1示出示例性乱序处理器100的原理图,乱序处理器100中可实现本文所述的方法。尽管图1示出了乱序处理器,该方法也可以在如图5所示的有序处理器(即,不乱序地处理指令的处理器)中实现。在此示例中,处理器100为单线程处理器;然而,该方法也可被使用于多线程处理器,且在多线程处理器中,该方法可被使用于所有线程(例如,双线程64位核可使用本文所述方法来在四线程32位操作模式中操作,或者用于线程的只有一个(合适的)子集(例如,双线程64位核能使用本文所述的方法来在双线程32位操作模式中使用一个线程操作以及在单线程64位操作模式中使用另一个线程))。
处理器100包括取指级102、解码和重命名级104、重排序缓冲器106、提交级108、一个或多个功能单元110和寄存器文件(RF)116,每个功能单元110包括一个或多个执行管道。图1的下半部分示出寄存器文件116和功能单元110的部分的展开图。
取指级102被配置成按程序计数器(PC)所指示地从程序中(以程序顺序)提取指令。当在64位硬件上运行64位软件时,取指级102正常运行;然而,当在64位硬件上运行32位软件时,取指级102为两个线程提取指令。例如,取指级102可选择地为两个线程提取指令,或可使用任何技术来确定是为第一线程(线程0)提取指令,还是为第二线程(线程1)提取指令。在不同示例中,取指级102可能包括额外的逻辑103,逻辑103确定是将处理器运行在第一操作模式(对于64位软件是单线程的)中,还是在第二操作模式(对于32位软件是双线程的)中,并且这个可是基于一个或多个配置寄存器105的值确定的,其中配置寄存器105指示软件可读寄存器的宽度(例如,对于32位软件为32位宽度)。在一个示例中,可能具有表示操作系统是64位或32位的单一配置位,以及在一个示例中,对于64位可将其设为“1”,对于32位可将其设为“0”。尽管在图1中将配置寄存器105示为独立于RF116,在其他示例中它们可以是RF的一部分。
取指级102中的额外逻辑103使得取指级能够处理来自双线程的指令,尤其是当可能在线程之间共享PC时(例如,以对GPR的相似方式,因为PC的宽度与GPR的相同,例如对于线程0为31:0和对于线程1为63:32)。该额外逻辑103选择从哪个线程取指(例如,对于在32位操作模式中运行的64位硬件是线程0还是线程1)。
在使用虚拟化和根OS是64位OS的情况下,配置寄存器105只被硬件使用,以识别客户环境是32位还是64位软件。配置寄存器105可被管理程序设置(例如,当在客户OS的环境中转换)。然而,在整个核被启动到第一操作模式(64位操作)或第二操作模式(双线程32位操作)的情况下,CPU之外的某物可以设置配置参数。在各种示例中,可在外部引脚上设置配置参数,如果不重启核,配置参数将不改变。
一旦提取了指令,就向解码和重命名级104提供该指令,解码和重命名级104被安排成解释该指令并进行寄存器重新命名。具体地,每个指令可包括:寄存器写入操作;一个或多个寄存器读取操作;和/或算术操作或逻辑操作。寄存器写入操作向目标寄存器写入,以及寄存器读取操作从源寄存器读取。在寄存器重新命名期间,指令中所引用的每个结构寄存器(例如,每个源和目标寄存器)用物理寄存器替代(或重命名)。
对于寄存器写入操作,所引用的结构寄存器(例如,目标寄存器)被分配未使用的(或可用的)物理寄存器。任何分配可被存储在寄存器重新命名表格中,其中寄存器重新命名表格为数据结构,该数据结构示出每个结构寄存器和在程序流中分配给该指令的物理寄存器之间的映射。对于寄存器读取操作,用于特定结构寄存器(例如,源寄存器)的正确物理寄存器可从由结构寄存器索引的寄存器重新命名表格中的条目确定。
在指令通过解码和重命名级104之后,其被插入重排序缓冲器106(ROB)并派给功能单元110,以便执行。指令被派给的功能单元110可基于指令的类型。重排序缓冲器106为使得指令能够乱序地被执行、但有序地被提交的缓冲器。重排序缓冲器106以程序顺序保持被插入其中的指令,但是ROB106里的指令可由功能单元110失序地执行。在一些示例中,重排序缓冲器106可被形成为循环缓冲器,其具有指向ROB106中的最旧的指令的头和指向ROB106中的最新的指令的尾。将指令从重排序缓冲器106以程序的顺序输出到提交级108。换言之,当已经执行了指令时,将指令从ROB106的头输出,并且将头增加到ROB106中的下个指令。将输出自重排序缓冲器106的指令提供给提交级108,提交级108将指令的结果提交给寄存器/存储器。
每个功能单元110负责执行指令,并且可被配置成执行特定类型的指令。功能单元110可包括:一个或多个存取单元;整数单元;浮点单元(FPU);数字信号处理(DSP)/单指令多数据(SIMD)单元;或乘积累加(MAC)单元。存取单元将数据读给L1缓存和超过其的内存,且从L1缓存和超过其的内存写入数据。在一些实例中,存取单元可计算地址,且它可能(或可能不)包含L1缓存,并进行数据/标签RAM查找。当在多线程操作模式中运行的时候,L1缓存本身可以“硬”和“软”的方式在线程之间被分开(但是当在普通操作模式中以只有一个线程运行时候不被分开)。在硬分割中,每个缓存被分割成使得物理缓存的部分专用于每个线程,以及在不刷新缓存的情况下不能改变分区的尺寸,例如基于索引划分L1缓存。在软分割中,缓存被分割成使得运行时候可以改变分区的尺寸。在不同示例中,可基于使用任何合适的方法的方式(对于相关缓存)来分割L1缓存,且可根据所用方法将其视为硬或软分割。整数单元执行整数指令,FPU执行浮点指令,DSP/SIMD单元具有对多个数据点同时执行相同操作的多个处理元件,以及MAC单元计算两个数字的乘积并将该乘积加到累加器中。功能单元内的管道可具有不同的长度和/或复杂度。例如,FPU管道通常长于整数执行管道,因为它通常执行更复杂的操作。
当执行接收自解码和重命名级104的指令时,每个功能单元110对一个或多个共享的寄存器文件116中的物理寄存器执行读取和写入。当在64位硬件上运行32位软件时(第二操作模式),寄存器文件116(和具体地RF里的GPR)在逻辑上被分成两个部分120、122,寄存器文件116在不同示例中可被安排成存储32个64位地址。第一部分RF-A120被第一线程(线程0)使用,并且其尺寸为32x32位。第二部分RF-B122被第二线程(线程1)使用,并且其尺寸也为32x32位。相比之下,当运行64位软件时(第一操作模式),单线程从RF-A120读取GPR的底部32位并从RF-B122读取GPR的顶部32位,表现出具有包含全部32x64位的单一寄存器文件116。
以这种方式分割RF可能只涉及到RF中的GPR。然而,在不同示例中,如果RF中具有其中要存储的值在多线程操作模式中也比在普通操作模式中的小的其他寄存器,这些寄存器也可在线程之间被分割。
如图1的下半部分中所示,功能单元110包括逻辑124、126(其可被称为“解码逻辑”),逻辑124、126驱动RF116内的寄存器(例如,触发器)和多工器。在第一操作模式中(例如,当运行64位软件时),这些元件124和126均接收指令并以相同信息驱动RF116的两个部分(即,RF-A120和RF-B122)(例如,两个部分均从每个各自的部分提取GPR1和2)。如图1所示,ALU124中的操作结果也被写回到RF的两个部分120、122。结果的底部32位被写回到RF-A120中,以及结果的顶部32位被写回到RF-B122中。在第二操作模式中(例如,当运行2个32位线程),这些逻辑元件的第一个124接收与线程0相关的指令,并驱动RF116的第一部分RF-A120。相似地,这些逻辑元件的第二个126接收与线程1相关的指令,并驱动RF116的第二部分RF-B122。如图1所示,ALU124中的操作结果也被写回到RF的两个部分120、122。与第一线程相关的结果被写回到第一部分RF-A120,且与第二线程相关的结果被写回到第二部分RF-B122。
通过逻辑上以这种方式分割RF116,相同的RF可被用于64位或32位操作。此外,当与虚拟化一起使用时,根OS(其为64位软件)将寄存器视为全部64位宽的32条目,而不考虑客户OS是64位还是32位,并且如果需要时(例如,当环境转换时)将把RF116中的所有数据存入存储器,而不需要任何额外的逻辑或指令的变化。
在功能单元中(例如,在ALU124中),可能具有能在两个线程之间划分的逻辑的部分、可被复制的逻辑的部分和可在线程之间共享的逻辑的部分。
图2示出ALU中的加法器功能的三张原理图21-23。如在第一张图21中所示,64位加法器可从两个32位加法器202形成,且进位信号从一个32位加法器传输到另一个。通过将逻辑加入进位路径(例如,如图2中的第二张图22所示的“与”门204),配置位(例如,对于64位软件设置为1,对32位软件设置为0)可被使用于控制进位是从一个32位加法器传到另一个(例如,对于64位操作)还是不从一个32位加法器传到另一个(例如,对于双线程32位操作)。配置位可被存储于图1所示的配置寄存器105中。当配置位堵住进位路径,两个加法器202独立运行。第一加法器202然后可被用于第一线程,且第二加法器202可被用于第二线程。如第三张图23中所示,另一个实现可通过具有65位加法器206来做相似的事情,65位加法器206中位32(由箭头208和210表示)针对一个输入运算对象,与配置位相关联,针对第二输入运算对象,与0相关联,且在输出端被忽略。在此示例中,具有值1的配置位将导致在底部32位的任何溢值被传到顶部32位,而不明确地需要进位脉动型加法器(carry-ripplestyleadder)。图21-23中所示的对此的相似的实现可被用于ALU中的诸如倍增器的其他数学功能,其中两个块在第一操作模式中一起工作(并可能以某种方式关联,例如,类似于整数SIMD倍增器的方式),并在第二操作模式中两个块独立工作。
图3示出第一和第二操作模式中的示例性功能单元的两个原理图31、32。功能单元包括逻辑功能A,接下来是逻辑功能B302,以及然后是逻辑功能C304。在第一操作模式中(例如,当运行64位软件时),以与图2中前两张图中所示的加法器相似的方式,逻辑功能A由两个连接的块A1306、A2308组成。为了能够也在第二操作模式(两个32位线程)中运行,将逻辑310的部分在两个线程之间划分(例如,逻辑A1306和A2308),复制逻辑312的部分(例如,逻辑B302),并将逻辑314的部分(例如,逻辑C304)在线程之间共享,且逻辑316在线程间仲裁,以确定在任一时刻哪个线程使用逻辑。在第一操作模式中(如图31中所示),不使用复制的逻辑B和仲裁逻辑316。这是示出不同可能的情况的示例,其他实现可使用划分的/复制的/共享的逻辑的组合,产生或更多或更少的额外的逻辑。
尽管诸如加法器或倍增器的一些逻辑功能可轻易地在两个线程之间被分割(如图2和3中所示),可具有诸如除法器的其他逻辑功能,其不能被轻易地分割,且这种逻辑功能可被复制(正如图3中逻辑B)或在线程之间被共享(正如图3中逻辑C)。相似地,如果功能单元(例如,FPU)在两种版本的软件(例如,32位版本和64位版本)中具有相同的寄存器宽度,那么不能为多线程操作将其分割。如果不能分割功能单元,线程可能暂时共用该功能单元(例如,在一个循环上线程0使用它,在下一个循环上线程1使用它,在下一个循环上线程0使用它,等等,正如取指级102)。
处理器100还可包括除图1所述的那些之外的功能元件。例如,处理器可还包括分支预测器,分支预测器被配置成在已知导致可能的流变化的指令(诸如分支指令)的情况下预测程序流将采取哪个方向。分支预测是有用的,因为它使得指令在知道分支指令的结果之前能够被处理器100推测地执行。当分支预测器精确地预测程序流,这提高处理器100的性能。然而,如果分支预测器没有正确地预测分支方向,那么出现程序能继续进行之前需要被纠正的误预测。为了纠正误预测,丢弃发送给ROB106的推测性指令,且取指级102开始从正确的程序分支提取指令。
应理解,其它处理器可能不包括图1中所示的所有的功能元件(即,可省略图1中所示的一个或多个功能元件),且在一些实施例中,可包括图1中未示出的额外的功能元件。
图4为操作如图1所示的操作处理器的示例性方法的流程图。如上所述,设置配置寄存器105(块402),其确定处理器的操作模式(块404中)。在第一操作模式中,处理器起单线程64位设备的作用:提取指令(块406)、解码并重命名那些指令(块408)、将指令传输给ROB(块410)、执行指令(块412)、并在提交指令(块414)之前,将它们重排序至PC顺序(块413)。在第二操作模式中,处理器起双线程32位设备的作用,并从两个线程提取指令(块416),例如,可以轮流从线程0和线程1提取指令。所提取的指令被解码并重命名(块418),并被传输至ROB(块420)。如上所述,然后执行指令(块422),且来自第一线程的指令从寄存器文件的第一部分读取并向寄存器的第一部分写入,来自第二线程的指令从寄存器文件的第二部分读取并向寄存器的第二部分写入。如图3所示和上述描述,可并行进行执行的一些方面(例如,从而使得来自线程0的第一指令可与来自线程1的第二指令至少部分并行地执行),以及执行的其他方面可被串行执行,其中仲裁逻辑确定任意时刻哪个线程具有优先级。最后,在将两个线程的指令结果提交给存储器(块424)之前,来自每个线程的指令被重排序到PC顺序(块423)。
除在第二操作模式中分割RF116(如图1所示)之外,如图1所示,在第二操作模式中还可在两个线程之间分割ROB106(ROB-A106A、ROB-B106B)。提交单元118也可被修改成适应两个线程。提交单元118是通过在执行后从ROB106中读取来恢复指令顺序、并处理提交级108(例如,在块413中)的单元。对提交单元118的修改使其能够在第二操作模式中独立地对来自两个线程的指令进行重排序(例如,在块423中)。
在实施本文所述的方法的处理器中的逻辑的复制量可以是应用专有的。大量的复制将导致更大幅度的性能提高(与运行在标准64位硬件上的32位软件相比),但增大设备的区域。在不同示例中,处理器可在ALU中包括用于关键特性的复制的逻辑,但其他特性可被共用。
如上所述,可在处理器中实施方法,处理器可还包括分支预测器,分支预测器被配置成在已知导致可能的流变化的指令(诸如分支指令)的情况下预测程序流将采取哪个方向。如果分支预测器没有正确地预测分支方向,那么出现程序能继续进行之前需要被纠正的误预测。为了纠正误预测,丢弃发送给ROB106的推测性指令,且取指级102开始从正确的程序分支提取指令。当运行在第二操作模式中时(例如,运行32位软件),在两个线程中任一线程(例如,线程0或线程1)中的误预测可导致刷新来自功能单元110的两个线程中的误预测的指令和所有接下来的指令。在这种示例中,取指单元102然后又开始为两个线程提取指令。然而可选地,用于在处理器误预测的情况下刷新功能单元的逻辑可被修改/复制,从而使得在32位线程中的一个(例如,线程0)中的误预测只导致刷新来自该线程的指令,而不需要刷新来自其他线程(例如,线程1)的任何指令。用于刷新功能单元的逻辑遍布功能单元,例如在功能单元中的寄存器级上(例如,以实现“如果(刷新)寄存器.有效=0”)。可增加额外的逻辑,以有选择性地刷新管道,该逻辑进行额外的比较(对线程号)以查看是否需要刷新该级(例如,“如果(刷新和刷新.线程==寄存器.线程)寄存器.有效=0”)。
可结合虚拟化使用本文所述的方法。在这种示例中,管理程序/根OS是64位软件,且客户OS可以是32位或64位。
如上所述,处理器可在操作模式之间动态转换。在使用虚拟化的情况下,当启动不同的客户OS时可能发生转换,且在未使用虚拟化的情况下,当启动处理器时发生转换。可在硬件或软件中进行对配置位的设置,该配置位控制处理器运行于其中的操作模式。
尽管上述说明指的是乱序处理器,该方法也可以在如图5所示的有序处理器500中使用。有序处理器包括取指级102、解码级504、一个或多个功能单元110和寄存器文件116。应理解,其它有序处理器可能不包括图5中所示的所有的功能元件(即,可省略图5中所示的一个或多个功能元件),且在一些实施例中,可包括图5中未示出的额外的功能元件。在有序处理器500中实现该方法的情况下,具有一些在乱序处理器中未使用的额外的变化。例如,可提供额外的逻辑(在取指或解码级102、104中),以刷新被封住的线程(当运行于多线程操作模式中时),从而另一个线程可以通到功能(或执行)单元110。
尽管许多上述示例涉及在提供更宽的寄存器(例如,如由64位硬件提供的64位软件)的硬件上运行具有减少的宽度的软件可见寄存器的OS(例如,32位OS),应理解,操作系统只是能使用本文所述的方法的软件类型的一个示例(例如,该方法可被用于软件为固件而不是完全的OS的情况)。
尽管所描述的处理器100、500包括在多线程操作模式中在线程之间共用的RF,在不同示例中,处理器可包括在多线程操作模式中在线程之间共用的额外的级和/或缓冲器。
术语“处理器”和“计算机”在本文用于指代具有使其可执行指令的处理能力的任何设备或其部分。例如,术语“处理器”可包含中央处理器(CPU)、图形处理器(GPU或VPU)、物理处理器(PPU)、数字信号处理器(DSP)、通用处理器(例如,通用GPU)、微处理器、设计成在CPU外部加速任务的任何处理单元等。本领域中的技术人员将认识到,这样的处理能力合并到很多不同的设备中,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络当中。例如,远程计算机可存储被描述为软件的过程的例子。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段,或在本地终端处执行一些软件指令和在远程计算机(或计算机网络)处执行一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路例如DSP、可编程逻辑阵列等执行。
存储用于实现所公开的方面的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的例子包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的例子包括光学和磁性存储器技术、闪存、相变存储器、电阻性RAM。
对“逻辑”的特定提及指执行一种或多种功能的结构。逻辑的例子包括布置成执行那些功能的电路系统。例如,这样的电路系统可包括晶体管和/或在制造过程中可用的其它硬件元件。作为例子,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器例如寄存器、触发器或锁存器、逻辑运算器例如布尔运算、数学运算器例如加法器、乘法器或移位器和互连的电路系统或结构。这样的元件可被提供为定制电路或标准单元库、宏或以其它抽象级来提供。可以特定的布置使这样的元件互连。逻辑可包括固定功能的电路系统,且电路系统可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现组成部分的功能或子过程的逻辑。在例子中,硬件逻辑具有实现固定功能操作或多个固定功能操作、状态机或过程的电路系统。
本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效应,这对技术人员将是明显的。
将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。
对“一个”项目的任何提及指那些项目中的一个或多个。术语“包括”在本文用于意指包括所标识的方法框或元件,但这样的框或元件并不包括排他列表,且装置可包含附加框或元件,以及方法可包含附加操作或元件。此外,框、元件和操作本身并不隐含地是封闭的。
本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行的多个步骤的执行。此外,单独的框可从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何例子的方面可与所描述的其它例子中的任一个的方面组合以形成另外的例子,而不失去所寻求的效应。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流向。元件之间的流向可以在任一方向上或在两个方向上。
将理解,优选实施方式的上述描述仅作为例子被给出,以及各种修改可由本领域中的技术人员做出。虽然上面以某个详细程度或参考一个或多个单独的实施方式描述了各种实施方式,但是本领域中的技术人员可对所公开的实施方式进行很多变更而不偏离本实用新型的精神或范围。

Claims (10)

1.一种处理器,其具有:第一操作模式,其中所述处理器起单线程(n.X)位处理器的作用;第二操作模式,其中所述处理器起n线程X位处理器的作用,其中n是大于一的正整数,所述处理器包括:
取指级(102),其被安排成在第一操作模式中从软件的单一线程提取指令,并在所述第二操作模式中从软件的n个线程中的每一个线程提取指令;
一个或多个配置寄存器(105),其被安排成存储配置参数,所述配置参数指示软件可见寄存器的宽度;
寄存器文件(116),其包括多个通用寄存器;
控制逻辑(124、126),其与所述寄存器文件相关联,并被安排成在所述第二操作模式中在逻辑上将所述寄存器文件分为n个部分并控制对所述部分的访问,每个部分被安排成存储用于所述软件的n个线程中的一个线程的数据;以及
一个或多个功能单元(110),其被安排成在所述第一操作模式中执行来自所述单一线程的指令,并且在所述第二操作模式中执行来自所述n个线程的指令,
其中所述取指级、所述控制逻辑和所述功能单元均被安排成根据所述配置参数的值在所述第一操作模式和所述第二操作模式之间转换。
2.根据权利要求1所述的处理器,其中所述处理器为64位处理器,n=2且X=32,所述配置参数被安排成指示所述软件是64位操作系统还是32位操作系统,以及所述取指级、所述控制逻辑和所述功能单元均被安排成在所述第一操作模式中运行以响应所述配置参数指示所述软件为64位操作系统,并且在所述第二操作模式中运行以响应所述配置参数指示所述软件为32位操作系统。
3.根据权利要求1所述的处理器,其中n=2。
4.根据权利要求3所述的处理器,其中所述功能单元包括由两个连接的逻辑块(306、308)形成的逻辑功能(310),其中在所述第二操作模式中,所述两个连接的逻辑块之间的连接被封住,且每个块执行来自两个线程中的一个线程的指令,并且其中,基于所述配置参数的值控制所述两个连接的逻辑块之间的链接。
5.根据权利要求4所述的处理器,还包括在所述两个连接的逻辑块之间的进位路径中的逻辑,其中,所述进位路径中的逻辑基于所述配置寄存器中存储的配置参数的值进行控制。
6.根据权利要求1所述的处理器,其中所述功能单元包括逻辑功能(312),所述逻辑功能(312)包括多个复制的块(302),每个块被安排成执行来自不同线程的指令。
7.根据权利要求1所述的处理器,其中所述功能单元包括逻辑功能(314),所述逻辑功能(314)包括逻辑块(304)和仲裁逻辑(316),且所述仲裁逻辑(316)被安排成在所述第二操作模式中在线程之间共享所述逻辑块。
8.根据权利要求1所述的处理器,其中所述处理器为乱序处理器,且所述处理器还包括:
重排序缓冲器(106);以及
提交单元(118),
其中在所述第二操作模式中,所述重排序缓冲器在逻辑上被分为n个部分(106A、106B),每个部分与所述n个线程中的一个线程相关联,以及
其中所述提交单元被安排成在所述第一操作模式中对所述单一线程的指令进行重排序,并且在所述第二操作模式中通过从所述重排序缓冲器读取来对所述n个线程中的每一个线程的指令进行重排序。
9.根据权利要求8所述的处理器,其中功能单元包括刷新逻辑,所述刷新逻辑被安排成在刷新包括所述刷新逻辑的所述功能单元的一部分之前执行对线程号的比较。
10.根据权利要求1-9中任一项所述的处理器,其中所述软件包括运行在所述处理器上的虚拟机上的客户系统。
CN201520504307.5U 2014-07-14 2015-07-13 一种处理器 Active CN204945992U (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1412478.8A GB2522290B (en) 2014-07-14 2014-07-14 Running a 32-bit operating system on a 64-bit machine
GB1412478.8 2014-07-14

Publications (1)

Publication Number Publication Date
CN204945992U true CN204945992U (zh) 2016-01-06

Family

ID=51454100

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510408225.5A Pending CN105302543A (zh) 2014-07-14 2015-07-13 在64位机器上运行32位操作系统
CN201520504307.5U Active CN204945992U (zh) 2014-07-14 2015-07-13 一种处理器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510408225.5A Pending CN105302543A (zh) 2014-07-14 2015-07-13 在64位机器上运行32位操作系统

Country Status (4)

Country Link
US (1) US10048967B2 (zh)
CN (2) CN105302543A (zh)
DE (1) DE102015111333A1 (zh)
GB (1) GB2522290B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302543A (zh) * 2014-07-14 2016-02-03 想象技术有限公司 在64位机器上运行32位操作系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838719B2 (en) 2014-11-14 2020-11-17 Marvell Asia Pte, LTD Carry chain for SIMD operations
US10180841B2 (en) 2014-12-22 2019-01-15 Centipede Semi Ltd. Early termination of segment monitoring in run-time code parallelization
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
GB2540971B (en) * 2015-07-31 2018-03-14 Advanced Risc Mach Ltd Graphics processing systems
US9830150B2 (en) * 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
RU2618367C1 (ru) * 2016-03-23 2017-05-03 Андрей Сергеевич Моляков Вычислительное устройство программно-аппаратного комплекса
US10565017B2 (en) * 2016-09-23 2020-02-18 Samsung Electronics Co., Ltd. Multi-thread processor and controlling method thereof
US20180095766A1 (en) * 2016-10-05 2018-04-05 Centipede Semi Ltd. Flushing in a parallelized processor
US10853040B2 (en) * 2017-03-31 2020-12-01 Microsoft Technology Licensing, Llc Address space splitting for legacy application compatibility
GB2569275B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
US10802754B2 (en) * 2018-03-12 2020-10-13 Micron Technology, Inc. Hardware-based power management integrated circuit register file write protection
US10977101B2 (en) * 2018-12-12 2021-04-13 International Business Machines Corporation Interoperability between programs associated with different addressing modes
US11249760B2 (en) 2019-04-10 2022-02-15 International Business Machines Corporation Parameter management between programs
FR3097345B1 (fr) * 2019-06-13 2021-06-25 Stmicroelectronics Grand Ouest Sas Procede de gestion du fonctionnement d’une unite de calcul capable de fonctionner avec des instructions de tailles differentes et circuit integre correspondant
US11294695B2 (en) 2020-05-28 2022-04-05 International Business Machines Corporation Termination of programs associated with different addressing modes
US11947993B2 (en) 2021-06-22 2024-04-02 International Business Machines Corporation Cooperative input/output of address modes for interoperating programs

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6343356B1 (en) * 1998-10-09 2002-01-29 Bops, Inc. Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision
US6862563B1 (en) * 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US7051329B1 (en) * 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6973562B1 (en) * 2000-01-14 2005-12-06 Advanced Micro Devices, Inc. Establishing an operating mode in a processor
US6954846B2 (en) * 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US7181744B2 (en) * 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
US20040216101A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7051158B2 (en) * 2003-04-30 2006-05-23 Intelitrac, Inc. Single computer distributed memory computing environment and implementation thereof
US20040268093A1 (en) * 2003-06-26 2004-12-30 Samra Nicholas G Cross-thread register sharing technique
US7260702B2 (en) * 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US7533221B1 (en) * 2004-12-30 2009-05-12 Sun Microsystems, Inc. Space-adaptive lock-free free-list using pointer-sized single-target synchronization
US7577798B1 (en) * 2004-12-30 2009-08-18 Sun Microsystems, Inc. Space-adaptive lock-free queue using pointer-sized single-target synchronization
US8250348B2 (en) * 2005-05-19 2012-08-21 International Business Machines Corporation Methods and apparatus for dynamically switching processor mode
US8082423B2 (en) * 2005-08-11 2011-12-20 International Business Machines Corporation Generating a flush vector from a first execution unit directly to every other execution unit of a plurality of execution units in order to block all register updates
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US7840783B1 (en) * 2007-09-10 2010-11-23 Netlogic Microsystems, Inc. System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths
US20110320765A1 (en) * 2010-06-28 2011-12-29 International Business Machines Corporation Variable width vector instruction processor
CN102759983A (zh) * 2011-05-10 2012-10-31 任少华 具有多个工作模式的计算机及其操作系统
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302543A (zh) * 2014-07-14 2016-02-03 想象技术有限公司 在64位机器上运行32位操作系统

Also Published As

Publication number Publication date
CN105302543A (zh) 2016-02-03
GB201412478D0 (en) 2014-08-27
US20160011869A1 (en) 2016-01-14
DE102015111333A1 (de) 2016-01-14
GB2522290A (en) 2015-07-22
GB2522290B (en) 2015-12-09
US10048967B2 (en) 2018-08-14

Similar Documents

Publication Publication Date Title
CN204945992U (zh) 一种处理器
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
US20210216318A1 (en) Vector Processor Architectures
TWI423127B (zh) 指令處理方法以及其所適用之超純量管線微處理器
US9361242B2 (en) Return stack buffer having multiple address slots per stack entry
US9400650B2 (en) Read and write masks update instruction for vectorization of recursive computations over interdependent data
CN104756090B (zh) 提供扩展的缓存替换状态信息
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
EP3166014B1 (en) Processors supporting endian agnostic simd instructions and methods
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US20140095828A1 (en) Vector move instruction controlled by read and write masks
US10664280B2 (en) Fetch ahead branch target buffer
US20140047218A1 (en) Multi-stage register renaming using dependency removal
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
US7313676B2 (en) Register renaming for dynamic multi-threading
US20140331032A1 (en) Streaming memory transpose operations
US10437594B2 (en) Apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
US10318172B2 (en) Cache operation in a multi-threaded processor
KR20150038328A (ko) 1들을 최하위 비트들이 되도록 풀링하면서 비트들을 좌측으로 시프팅하기 위한 명령어
EP3060979B1 (en) Processor and methods for immediate handling and flag handling
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
CN101907984B (zh) 指令处理方法以及其所适用的超纯量管线微处理器
US11830547B2 (en) Reduced instruction set processor based on memristor
JP4444305B2 (ja) 半導体装置

Legal Events

Date Code Title Description
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Hertfordshire

Patentee after: Mex Technology Co.,Ltd.

Address before: Hertfordshire

Patentee before: Hai Luo Software Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20180713

Address after: California, USA

Patentee after: Imagination Technologies Ltd.

Address before: Hertfordshire

Patentee before: Mex Technology Co.,Ltd.

Effective date of registration: 20180713

Address after: Hertfordshire

Patentee after: Hai Luo Software Co.,Ltd.

Address before: Hertfordshire

Patentee before: Imagination Technologies Ltd.

TR01 Transfer of patent right