CN110603521A - 超线程处理器 - Google Patents

超线程处理器 Download PDF

Info

Publication number
CN110603521A
CN110603521A CN201880025858.XA CN201880025858A CN110603521A CN 110603521 A CN110603521 A CN 110603521A CN 201880025858 A CN201880025858 A CN 201880025858A CN 110603521 A CN110603521 A CN 110603521A
Authority
CN
China
Prior art keywords
instruction
row
issue
ready
instructions
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
CN201880025858.XA
Other languages
English (en)
Other versions
CN110603521B (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.)
Intensive Co Ltd
Original Assignee
Intensive Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intensive Co Ltd filed Critical Intensive Co Ltd
Publication of CN110603521A publication Critical patent/CN110603521A/zh
Application granted granted Critical
Publication of CN110603521B publication Critical patent/CN110603521B/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/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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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/30109Register structure having multiple operands in a single register
    • 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/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

所公开的发明包括一处理器装置及方法,其使得一通用处理器能够达成典型处理器的两倍的操作频率,以面积适度增加及每次操作的能量适度增加来实现。本发明依赖于利用多个独立的执行流。用于多个寄存器文件的低面积及低能量存储器阵列以一适度的工作频率操作。通过包括保证来自相同线程的多个指令之间的间隔比访问所述寄存器文件的时间更宽的逻辑,可以以高于这个频率的一速率发出多个指令。本发明的结果是重叠长延迟结构的能力,这允许使用较低能量结构,从而减少每次操作的能量。

Description

超线程处理器
相关申请
本申请要求2017年2月20日提交的美国临时专利申请No.62/460,909、2017年5月5日提交的美国临时专利申请No.62/501,780及2018年1月22日提交的美国临时专利申请No.62/620,032的优先权。这些临时专利申请的公开内容在此引入作为参考。
技术领域
本发明属于计算机硬件领域。
背景技术
存在若干种用于计算指令的多线程处理的方法。然而,这些方法通常在硬件要求需要一显着开销。这会增加的硬件产生能量管理及热量问题。
附图说明
图1示出了根据本发明的各种实施例的一处理器。
图3A及3B示出了根据本发明的各种实施例的一上下文单元的进一步细节。
图2示出了根据本发明的各种实施例的存储器端口访问的一时序图。
图4示出了根据本发明的各种实施例的一存储器具阵列。
图5示出了根据本发明的各种实施例的执行多个独立线程的方法。
图6示出了根据本发明的各种实施例的确保在一行中的一指令准备发出然后发信号通知其准备就绪的过程。
图7示出了根据本发明的各种实施例的执行一指令的过程。
发明内容
本发明的各种实施例包括在一种处理器系统内的一指令提取机制,所述处理器系统具有多个硬件上下文,通过所述多个硬件上下文所述处理器系统以某种交错方式执行来自多个指令线程的多个指令。所述指令提取机制从所述指令高速缓存或指令存储器中取出一完整的高速缓存块作为一个单元,并且将其存储到多个临时存储位置中的一个,其中所述多个临时存储位置各自与一特定执行线程相关联。为了执行来自一特定线程的多个指令,所述多个指令从与那个线程相关联的所述本地存储取得。当要执行的一指令不存在于所述本地存储器中时,则启动一提取以填充所述本地存储器。
本发明的各种实施例包括一种处理器系统,包括:一逻辑寄存器文件集,包括多个物理存储器阵列,每个存储器阵列具有一访问时间及多个访问端口,所述寄存器文件集的每个寄存器文件被分配给一不同的硬件上下文;多个硬件上下文,每个硬件上下文包括:所述多个逻辑寄存器文件中的一个及一上下文单元的一行,所述上下文单元包括多个行,其与多个不同的硬件上下文相关联,所述上下文单元的所述行还包括:一程序计数器存储;一指令块存储,配置成用以存储一指令块;逻辑,配置成用以从一高速缓存提取所述指令块;逻辑,配置成用以指示一指令准备从所述行发出;多个管道,每个管道包括至少一个执行单元;以及发出逻辑,配置成用以从所述多个行中选择一行,并且从所述选定的行发出一指令给所述多个管道中的一个,其中所述行的选择是基于所述选定的行的一就绪状态;其中,所述发出逻辑配置成用以选择所述行,使得所述逻辑寄存器文件集以一频率被访问,所述频率除以一单个存储器阵列的所述访问时间大于一,通过要求来自相同硬件上下文的多个指令在时间上间隔开以通过所述端口访问所述存储器阵列所需要的一最少时钟周期数。
本发明的各种实施例包括一种处理器系统,包括:一管道,包括一执行单元;一指令高速缓存;一上下文单元,包括多个行;所述多个行中的每个被分配给一独立线程;所述多个行中的每个包括至少一个程序计数器;所述多个行中的每个包括存储,配置成用以存储一个或多个指令;所述多个行中的每个包括逻辑,配置成用以从所述指令高速缓存中提取所述一个或多个指令;及所述多个行中的每个包括逻辑,配置成用以确定何时一指令准备从所述各自的行发出给所述管道;以及发出逻辑,配置成用以从所述多个行中选择一行,并且从所述选定的行发出一指令给所述管道。
本发明的各种实施例包括一种执行一组计算指令的方法,所述方法包括:将与一指令线程相关联的多个指令从存储器从所述存储器移动进入与相同指令线程相关联的一硬件上下文行,所述行包括一程序计数器及一存储,所述存储用以存储所述移动的指令,其中有多个行,每个行与一不同的指令线程相关联并且每个行保存一硬件上下文的一部分,并且包括控制逻辑,所述控制逻辑的行为取决于所述过去动作的历史加上对所述系统的输入并且具有至少两个功能,其中这些控制逻辑可选地通过具有一第一有限状态机的多个有限状态机实现,所述第一有限状态机配置成用以指示一指令准备从所述各自的行发出,并且所述多个行中的每个包括一第二有限状态机配置成用以控制通过所述硬件上下文所执行的一个或多个下一个指令的提取,其中移动所述多个指令是响应于来自所述行的一指令的发出,并且移动所述指令需要一访问时间;在一行中的所述第一有限状态机确定一指令准备从所述行发出到一管道,其涉及避免多个正在进行的多个指令发生冲突,所述多个指令试图使用相同一次性内部资源,例如多于一个试图访问存储指令寄存器数据的一特定存储器阵列的相同端口;从准备发出一指令的所述多个行中选择出一行,并且从所述选定的行发出所述就绪指令,所述就绪指令涉及将所述指令移动到所述管道;更新发出一指令的所述行的所述程序计数器,以反映将从所述行发出的所述下一个指令的地址;以及使用所述管道执行所述指令;其中,所述多个指令发出到所述管道,以比可以访问的所述多个物理存储器阵列更快的一速率,所述多个物理存储器阵列存储指示通过在所述多个指令中的多个寄存器地址的所述数据。
本发明的各种实施例包括在一种处理器系统内的一指令提取机制,所述处理器系统具有多个硬件上下文,通过所述多个硬件上下文所述处理器系统以某种交错方式执行来自多个指令线程的多个指令。所述指令提取机制从所述指令高速缓存或指令存储器中取出一完整的高速缓存块作为一个单元,并且将其存储到多个临时存储位置中的一个,其中所述多个临时存储位置各自与一特定执行线程相关联。为了执行来自一特定线程的多个指令,所述多个指令从与那个线程相关联的所述本地存储取得。当要执行的一指令不存在于所述本地存储器中时,则启动一提取以填充所述本地存储器。可选地,其中所述多个指令发出到所述多个管道,以比所述多个物理存储器阵列的依访问时间更快的一频率,所述多个物理存储器阵列存储指示通过在所述多个指令中的多个寄存器地址的所述数据。可选地,所述第一有限状态机的状态响应于通过所述管道执行一指令的进度。可选地,还包括部分解码所述指令,并且确定一时钟周期数直到从所述行发出所述下一个指令是安全的,其中所述第一有限状态机的状态响应于所述时钟周期数。
具体实施方式
本文所使用的术语“独立线程”用于指代各自的指令彼此不相关的计算机指令集,尽管独立线程可以共享通用存储器。
本文所使用的术语“硬件上下文”用于指代专用于执行一独立线程的硬件。在各种实施例中,一硬件上下文可包括一逻辑寄存器文件、一程序计数器存储、表示硬件上下文的状态的元数据,和/或一个或多个执行单元。一硬件上下文可以包括一上下文单元的一行的部分,如本文其他地方进一步讨论的。
本文所使用的术语“控制状态寄存器”用于指代一逻辑机制,通过所述逻辑机制,一指令可以获得关于系统状态或影响系统状态的元信息,其中系统包括处理器核心及处理器核心之外的机制,例如中断控制器、系统中的外围设备(例如,片上网络),和/或类似物。控制状态寄存器的功能包括追踪有关过去指令执行的知识,例如先前在指令流中执行的指令数的总数、关于中断请求的存在的知识、清除这种中断请求的能力,和/或改变处理模式或配置协处理器等。
本文所使用的术语“有限状态机”用于指代基于系统内先前活动的特定序列选择动作的控制逻辑。这种控制逻辑使用系统状态来区分替代的可能的先前路径。有限状态机被配置为基于先前事件表示当前状态。所表示的状态是有限多个允许状态之一。
图1示出了根据本发明的各种实施例的一处理器100。处理器100包括用于执行多个软件指令的电路。一个或多个处理器100可以包括在一计算设备中。在各种实施例中,处理器100在一硅芯片上实现、在设置在一单个封装内或分布在多个封装中的一FPGA中实现。在一些实施例中,一个以上的处理器100包括在一单个封装中。
在一些实施例中,处理器100包括一逻辑寄存器文件集150、多个管道135、一等级1的指令高速缓存110、一等级1的数据高速缓存115、系统控制逻辑130及一上下文单元120。所述逻辑寄存器文件集150包括多个逻辑寄存器文件125A、125B、125C。所述多个管道135各自包含一执行单元145。所述多个执行单元145A及145B执行诸如加法、减法、比较、逻辑AND、逻辑OR等的计算。可以包括多种类型的执行单元,例如浮点、向量等。一浮点执行单元对以尾数加指数形式编码数字的数据进行操作。一向量执行单元作为单个操作数在一组基准上操作。所述组的元素可以是浮点格式,或整数格式,或某些其他格式,例如表示图形数据或某些自定义格式。
处理器100还包括一可选的指令高速缓存110,配置成用以存储组织成集的多个计算指令。所述多个计算指令可以通过两个或多个不同的独立线程所执行。在执行期间,所述多个计算指令通常从处理器100外部的存储器复制到指令高速缓存110。
处理器100还包括一可选的数据高速缓存115,配置成用以存储将通过存储在指令高速缓存110中的所述多个计算指令所处理的数据。存储在数据高速缓存115中的所述数据包含可以复制到处理器100外部的存储器和/或可以从处理器100外部的存储器复制的数据,和/或可以是在处理器100内的指令执行的结果。
处理器100还包括一个、两个或更多个管道135,分别标记管道135A、135B等。管道135配置成用以执行多个软件指令。例如,管道135A可以配置成用以指示它准备好接收一新指令、接收一指令、解码所述接收到的指令、获得所述指令将在其上操作的数据,然后将所述指令及数据传递给执行单元145A。
每个管道135包括一个或多个专用执行单元145,分别标记为145A、145B等。执行单元145可包括:一算术逻辑单元,配置成用以执行整数运算及逻辑;一浮点逻辑单元,配置成用以对浮点数据进行操作;一向量逻辑单元,配置成用以执行向量运算,等等。在一些实施例中,管道135共享多个执行单元145中的一个或多个。
处理器100还包括一寄存器文件集,所述寄存器文件集包括两个或多个寄存器文件125,分别标记为125A、125B等。多个寄存器文件125中的每一个都包括在一不同的硬件上下文中。寄存器文件125是可以以各种不同方式映射到多个实际物理存储器阵列的逻辑构造。例如,多个特定的硬件上下文可以映射到可以通过所述物理存储器的多个访问端口访问的多个特定物理存储器阵列。一物理存储器阵列可以具有1、2、3或更多个访问端口,所述多个访问端口可以独立使用。寄存器文件125的特征在于一访问时间。所述访问时间是从所述寄存器文件125读取数据或向所述寄存器文件125写入数据所需的时间。所述访问时间可以以时钟周期或绝对时间来量测。
处理器100还包括一上下文单元120。上下文单元120包括多个数据结构,本文称为“行”,每个数据结构与一不同的硬件上下文相关联。一特定的硬件上下文包括至少一个逻辑寄存器文件,例如寄存器文件125A,以及上下文单元120的一行。
上下文单元120配置成用以在所述多个行中保存多个指令,直到所述多个指令准备好使用多个管道135中的一个执行。发出逻辑140配置成用以控制从上下文单元120的所述多个行给多个管道135中的成员的多个指令的发出。
图3A及3B示出了根据本发明的各种实施例的一上下文单元120的进一步细节。上下文单元120包括多个行310,分别标记为行310A、行310B等。多个行310中的每个与一不同的硬件上下文相关联。这样,多个行310中的每个被分配以执行一不同的独立软件线程。上下文单元120包括至少两个行310,并且可以包括例如2、4、8、16或32行,或这些值之间的任何数量的行。在一些实施例中,上下文单元120包括多于32行。多个行310可以映射到物理存储器及物理逻辑的任何配置。在一些实施例中,多个行310设置在处理器100内,以最小化将多个指令从多个行310移动到多个管道135所需要的时间和/或电力。
图3A示出了包括多个行310的一上下文单元120的进一步细节。虽然上下文单元120的所述多个行310被称为“行”,但其内容不一定需要布置在一行物理结构中。每个“行”310可以是一逻辑,其映射到各种替代结构中的物理存储器及物理逻辑。
图3B示出了根据各种实施例的上下文单元120的多个行310A的进一步细节,作为多个行310的典型成员的示例。一行310A包含一指令块存储315。指令块存储315可以包括例如存储器,配置成用以存储1、2、4、8、16或其他所需要的数量的指令。多个指令从指令高速缓存110或处理器100外部的指令存储器传送到指令块存储315。多个指令块的传送受到所述指令高速缓存110或处理器100外部的指令存储器的访问时间的限制。从可选指令高速缓存110传送或直接从外部的指令存储器传送到指令块存储315是受到每个行内的历史相关控制逻辑所控制,所述历史相关控制逻辑可选地配置成用以提取一有限状态机380。当将要从一上下文发出的所述下一个指令不存在于指令块存储315中时,则提取有限状态机380发出请求给高速缓存110以提取一新的指令块。包含在系统控制逻辑130内的仲裁逻辑确保在一给定周期中呈现给高速缓存110的访问数量不大于高速缓存110每个周期可以启动的最大数量。系统控制逻辑130配置成用以管理来自高速缓存110的多个指令块的传送。例如,系统控制逻辑130配置成用以传送从高速缓存110出来的多个指令块到所述适当的行。
就绪指令存储320是一逻辑元件,其可以是用于预期接下来将要发出的一个指令的一存储器,或者它可以是一逻辑输出,其从指令块存储器315中选择一指令。
在行310A内的历史相关控制逻辑配置成作为提取有限状态机380来请求从高速缓存110传送多个指令。提取有限状态机380还配置成用以选择下一个指令以从指令块存储315发出。提取有限状态机380还配置成用以,当将要从所述行发出的所述下一个指令存在于所述行中时,发信号给就绪有限状态机390。就绪有限状态机390接收来自所述管道的多个信号,所述多个信号指示何时在所述管道中执行来自所述行的一控制流指令,例如可以控制执行多个指令的一顺序的一指令,并且当所述控制流指令已经解决时,例如在多个指令中可以控制依顺序的一指令被执行时,就绪有限状态机390接收通知。如果所述控制流指令已在一流程中引起一改变,则新指令的地址从管道135A发送到提取有限状态机380。当将要从所述行发出的所述下一个指令具有不位于指令块存储315中的一地址时,则提取有限状态机380发送一请求给高速缓存110,以发送包括将要发出的所述下一个指令的一指令块,并且放置这些指令至指令块存储315中。然后它通知就绪有限状态机390所述下一个指令已经存在。
行310A内的历史相关控制逻辑配置成作为就绪有限状态机390来确定何时下一个指令准备从行310A发出。就绪有限状态机390配置成用以防止访问在寄存器文件125内的一特定物理存储器阵列端口,所述特定物理存储器阵列端口与相同硬件上下文相关联,当包含就绪有限状态机390的所述行310在各自的存储器阵列的所述访问时间内发生不止一次时。具体地,如果一特定物理存储器端口420A的所述访问时间是X个时钟周期,则就绪有限状态机390配置成用以在将要访问所述相同存储器端口420A的多个指令的启动之间要求至少X个时钟周期的延迟。
使用这个要求,多个管道135仍然可以配置成用以在一特定物理存储器阵列的所述访问时间内多于一次地访问所述逻辑寄存器文件集150,即,以一频率被访问,所述频率除以一特定存储器阵列的所述访问时间大于一。这是可以被实现的,因为就绪有限状态机390配置成用以仅允许从它的行310A发出多个指令,所述行访问不同的存储器端口和/或寄存器文件集150的多个不同的寄存器文件,从在执行一访问中已经被占用的所述多个指令。
典型的实施例包括在寄存器文件集150内的多个存储器阵列410,并且在就绪有限状态机390内部采用控制逻辑,这样确保没有两个指令会尝试以一重叠方式使用相同物理存储器阵列的相同端口。从上下文单元120发出到多个管道135的多个连续指令是经过精心挑选的,使得它们的读取及写入所映射到的所述多个特定寄存器条目将访问不同的多个端口410,其不同于它们将及时重叠的任何读取或写入的端口。
图2示出了根据本发明的各种实施例的存储器端口访问的一时序图。水平线表示访问特定端口的时间。所述多个线的长度表示各个端口的访问时间(X)。所述多个端口,A-E,可以分开在多个存储器阵列中。首先在一时间210访问一存储器端口A,并且在一时间220完成访问。在时间210与时间220之间,启动对多个端口B-E的访问但不一定完成。在控制逻辑130的控制下,直到在时间220之后一时间230才进行另一次访问端口A的尝试。在存储器端口A启动一读取操作后,访问存储器端口B可以少于X个时钟周期。这样交错的寄存器访问方法允许寄存器以大于仅访问一单一个端口的频率并行读取及写入操作。
处理器100还包括发出逻辑140。发出逻辑140配置成用以从上下文单元120内选择一行310,并且从所述选定的行发出一指令给多个管道135中的一个。它还发出程序计数器340的值以及所述指令来自的所述行的编号。所述指令被取出的所述行的编号也会被发送,并且将其用作所述指令所属的上下文的标识符。
发出逻辑140通常配置成用以响应于来自多个管道135中的一个指示来进行选择,而那个管道135已准备好一下一个指令。所述选择是基于所述选定的行处于一“就绪状态”。如本文中其他地方进一步讨论的,所述就绪状态可选地通过一“就绪位”或就绪信号来指示。当处于所述就绪状态时,一行准备在一相关联的独立软件线程中发出所述下一个指令。那个指令在存储器中的位置是通过程序计数器340所指示。
发出所述指令的所述硬件上下文的所述标识符也与所述指令及所述程序计数器值一起发送到所述管道。在一些实施例中,所述硬件上下文的所述标识符是从发出所述指令的所述行的一标识符。
在一些实施例中,每个管道135包括一种特定类型的执行单元145。在这些实施例中,从要发出一指令的一行310的选择可选地还取决于所述执行单元145被配置成用以处理的指令类型与准备从行310的特定成员发出的指令类型之间的匹配。这个方法通常要求所述指令在行310中时至少被部分地解码。在这个方法中,不是就绪有限状态机390执行部分解码,就是发出逻辑140执行部分解码。
在替代实施例的管道135A中,可以向管道135A发布指令,而不必考虑与这个特定管道相关联的执行单元145A的类型。在这种情况下,可以在解码一指令之后,发现这个指令对于执行单元145A是错误的类型。如此一来,管道135A将在解码之后将所述指令传送到所述多个管道135中的不同成员,所述不同成员包含对所述指令是适当类型的执行单元145。
在一些实施例中,处理器100包括用于每种类型的管道135的发出逻辑140的不同实例。在这些实施例中,发出逻辑的每个实例仅选择适合于其所连接的管道的类型的指令。可选地,每个管道135与自己的发出逻辑140实例相关联。
行310A还包括一就绪位330。就绪位330配置成用以被发出逻辑140用来从多个行310中选择一行并且一指令从所述选定的行310发出给多个管道135中的一个。在每个时钟周期,发出逻辑140配置成用以扫描行310的所述就绪位330,并从宣称具有它们就绪位330的行中进行选择。所述选定的行具有其从就绪指令存储320取出的就绪指令,并且发送到多个管道135中的一个。因此,所述发出逻辑140响应于通过包括在所述选定的行中的就绪有限状态机390所宣称的一就绪位330。如果不是所有管道都采用相同格式的操作数,则发出逻辑140可以选择性地确保所述指令的格式与发出所述指令的管道的格式相同。
每一个行310还包括一程序计数器340。当一指令发出到一管道135时,这个指令伴随有这个指令驻留在所述存储器地址空间内的地址。程序计数器340配置成用以保存这个地址。存在于有限状态机380内部的所述控制逻辑配置成用以更新程序计数器340的内容,以确保在发出指令时所述内容是正确的。各个程序计数器340的内容(例如,所述存储器地址)与从多个行310的一成员发出的每一个指令一起发送到管道135。
每一个行310可选地还包括控制/状态寄存器350。控制状态寄存器350可以包括存储器,配置成用以存储指示处理器100的状态的数据的存储器和/或作为一个端口以控制处理器的操作。控制状态寄存器用作一接口机制,允许指令访问有关所述系统的元信息并且操纵所述系统。这样的元信息包括,例如,存在中断请求、这个请求的原因、状态信息,诸如自上次复位以来通过线程所执行的指令总数。在一控制状态寄存器350上执行一写入操作可以用于:清除中断请求、改变管道或协处理器的操作模式等。一些控制状态寄存器350在多个行310之间共享,例如用于访问实时时钟的所述控制寄存器,而其他控制状态寄存器350则特定于行310的各个成员,例如用于访问已从这个行的上下文完成的指令总数的所述状态寄存器。
每一个行310还包括一提取有限状态机380。提取有限状态机380配置成用以管理行310A内的指令块。这样的管理包括,发出一请求以从高速缓存110提取一新指令块、接收到的指令块存储在指令块存储315中、更新程序计数器340以确保在从行310A发出一指令时保持正确的存储器地址、将指令放置在就绪指令存储320中及并将信号发送到就绪有限状态机390(在本文其他地方进一步讨论)。具体地,提取有限状态机380配置成用以,当块存储器315中不存在要从所述行发出的下一个指令时,从L1指令高速缓存110中提取一指令块。这样的情况可以以多种方式发生,包括当指令块存储315中的所有指令都已被处理时,或者当一分支转移到指令块存储315中尚未存在的指令时。如果在所述指令块中的所述下一个指令是所述下一个指令将要被执行,则提取有限状态机380配置成用以递增程序计数器340,或者如果一控制流指令已经发生在所述指令线程中,则存储一分支的计算目标地址或跳转到程序计数器。提取有限状态机380配置成用以放置一指令在就绪指令存储320中。就绪指令存储320可以是其自己的单独存储元件,或者可以是一系统,其从指令块存储315中选出的一个特定指令。就绪指令存储320用作门户,当从行中发出所述指令时,指令发出逻辑140从中接收指令。当下一个指令放置在就绪指令存储320中时,这个事实传送到就绪有限状态机390。将指令放置在就绪指令存储320中并指示这个指令存在的要求的细节在本文其他地方讨论。参见例如图5及图6。
每一个行310还包括就绪有限状态机390。就绪有限状态机390配置成用以控制从行310A到管道135A或135B的成员的多个指令的发出。通常,所述发出的指令是存储在用于所述各自的行310的就绪指令存储320中的一个指令。在一些实施例中,就绪有限状态机390配置成用以追踪来自相同线程或可选地来自其他线程的多个先前指令的执行进度,并且可以可选地接收关于多个先前指令的类型及接下来要发出的所述指令的类型的信息。基于多个先前指令的类型及进度,就绪有限状态机390配置成用以指示何时就绪指令存储320中的所述指令准备好发出给一管道以执行。准备发出指令的一个标准是:提取有限状态机380首先指示发布指令存储320中当前有下一个发布指令。所述指令准备发出的一个标准是提取有限状态机380首先指示将要发出的所述下一个指令目前在就绪指令存储320中可以使用。当就绪有限状态机390确定在就绪指令存储320中的指令已准备好时,它通过相应地设置就绪位330来发信号通知这个准备就绪。注意,在替代实施例中,提取有限状态机380及就绪有限状态机390的功能可以在行310A的这两个元件之间重新分配。
处理器100还包括系统控制逻辑130。系统控制逻辑130管理系统级控制操作,包括管理对指令高速缓存110及数据高速缓存115的请求。系统控制逻辑130在对所述高速缓存的多个请求中进行仲裁。系统控制逻辑130还追踪所述上下文的一标识符,其中所述上下文发出一指令。系统控制逻辑130还管理在处理器100的多个元件之间与指令执行的状态有关多个发送信号。例如,系统控制逻辑130检测到一存储器操作何时已完成对数据高速缓存115的访问,并且将指示完成的一信号发送至所述指令所来自的所述行,并且可选地完成指令的一标识符。
图4示出了两个存储器阵列410A及410B,它们各自具有三个端口420,每个端口420分别标记为420A-420F,通过它们访问存储器阵列行450A至450H的内容。处理器100还包括多个存储器阵列410A、410B等,它们用于实现所述多个寄存器文件125,并在指令高速缓存110及数据高速缓存115以及其他地方使用。存储器阵列410可以实现为一SRAM阵列、一触发器阵列、一锁存器阵列或专门用作寄存器文件存储器的专用位单元阵列。所述阵列可选地使用物理手段来实现,以访问存储阵列行450的内容,这个行通常称为一端口420。例如,存储器阵列410A具有两个读取端口(420A及420B)与一个写入端口420C,其允许在进行写入的同时进行读取。
图5、6、7及8示出了根据本发明的各种实施例的执行多个独立线程的方法。所述方法包括相互作用的多个并发过程。图5示出了从所述存储器系统中提取指令到一行310中的过程。图6示出了确保在一行中的一指令准备发出然后发信号通知其准备就绪的过程。图7示出了执行一指令并且发信号通知其进度及结果的过程。图8示出了执行一存储器操作并且发信号通知其状态的过程。
图5示出了从所述存储器系统中提取指令到一行310中的过程。所述过程开始于一尝试前进步骤510,其中提取有限状态机380尝试发展到在指令块存储315中的所述下一个指令。如果在所述线程中执行的所述下一个指令的地址在所述指令块存储315中的所述指令的地址之外,则这个步骤失败。
在存在?步骤520,基于发展到所述下一个指令是否成功来选择下一个动作。如果不成功,则下一个步骤是发出提取530,其发出一提取请求。
当所述线程中将要执行的所述下一个指令不存在于所述各自的行310的所述本地指令块存储315中时,发出提取步骤530发生。在这种情况下,提取有限状态机380发出一提取求请求给指令高速缓存110。多个行310中的许多行可能以重叠的方式发出请求,但是指令高速缓存110可能只能处理比发出的请求少的请求。为了处理这种情况,系统控制逻辑130包括仲裁逻辑,其组织进入指令高速缓存110的请求的顺序。
在一等待步骤535中,所述系统等待指令高速缓存110检索/提供所指示的指令。这可能涉及高速缓存缺失,在这种情况下,必须从处理器100外部的存储器中提取所示指令。一高速缓存缺失需要一些时间才能完成所述请求。
在一接收步骤540中,从指令高速缓存110接收一指令块。
在一存储指令步骤550中,将所述接收到的指令块存储到所述各自的行310的指令块存储315中。一旦存储指令步骤550完成,所述方法返回到存在?步骤520。
在存在?步骤520中,如果答案为是,则步骤560及570并行执行。
在一调整个人计算机步骤560中,调整所述程序计数器,使其具有存在指令存储320中的所述指令的正确地址。
在一移动步骤570中,使将要通过所述线程执行的所述下一个指令在就绪指令存储320是可用。这个指令将会通过发出逻辑140从就绪指令存储320发出至一选定的管道135。
在一通知就绪步骤580中,提取有限状态机380发送一信号给就绪有限状态机390,表明所述指令存在于就绪指令存储320中。
在一等待步骤590中,所述过程等待来自发出逻辑140的一信号,所述信号指示所述行已经被选择用以发出一指令。一旦接收到这个信号,提取有限状态机380循环到步骤510,以尝试发展到使得所述指令流中的所述下一个指令存在于就绪指令存储320中。
图6示出了确保在一行中的一指令准备发出然后发信号通知其准备就绪的过程。所述过程可选地同时和/或并行地在每个行310中进行。一旦开始,所述多个行将无限地继续所述过程,直到重置所述处理器系统为止,或是可选地,执行某些配置以禁用所述多个行130中的一个,例如通过所述多个制状态寄存器350。
所述过程从存在?610步骤开始,其中在就绪有限状态机390内执行一检查以确定在行指令存储320中是否存在将从所述行310发出的所述下一个指令。
如果所述指令不存在,则在一等待步骤620中,就绪有限状态机390等待直到提取有限状态机380发信号通知其存在。然后,所述过程进行到一干扰?步骤630。
如果在存在?610步骤中,这个指令存在,则所述过程直接进行到干扰?步骤630。
干扰?步骤630在多个行130中的一单一成员内进行,并且涉及所述行310中的多个元件。干扰?步骤630检查是否检查在就绪指令存储320中的指令与先前从多个行130中的同一成员所发出的指令之间是否存在干扰。这样的干扰可能包括情况,例如,如果在就绪指令存储320中的指令要在下一个周期发出,被存在于就绪指令存储320的所述指令中指定的所述寄存器访问的所述物理存储器阵列的所述端口将由一不同的指令使用。另一个示例是,当就绪指令存储320中的所述指令是一存储器访问指令,但是来自同一行310的一先前存储器访问指令仍在执行时。
如果存在干扰,则所述过程进入等待步骤640。在等待步骤640中,就绪有限状态机390等待,直到所有干扰都解决为止。就绪有限状态机390通过从处理器100的多个其他部分接收信号来检测分辨率,其中这些信号指示先前发出的多个指令的状态。这样的信号的示例包括所述系统控制逻辑130发送指示一储存器访问指令完成的一信号给所述行310,其在所述L1数据高速缓存115完成访问时发出所述指令。系统控制逻辑130追踪从其发出的每个指令的所述上下文,并且使用这个信息以传递所述信号到所述正确的行310。接收到所述信号的所述行中的所述就绪有限状态机390然后由于所述信号的接收而更新其状态。如果这个信号的接收清除与就绪指令存储320中的所述指令相关的所有干扰,则就绪有限状态机390停止等待,并且所述过程进行到一发信号步骤650。
在发信号步骤650中,宣称就绪位330,这是给发出逻辑140的所述信号,通知发出逻辑140包含所述就绪位330的所述行310准备将其指令保存在就绪指令存储320中发出给所述管道。然后,所述过程进行到一等待步骤660。
在等待步骤660中,提取有限状态机380及就绪有限状态机390都在等待包含由发出逻辑140所选择的内容的多个行130的所述成员。当发出逻辑140选择包含它们的所述行310时,发出逻辑140提供一信号给两个有限状态机。当等待结束后,所述过程循环回到存在?610步骤。
图7示出了执行一指令并且发信号通知其进度及结果的过程。当一指令发出到所述管道时,这个过程在每一个管道135中的每个循环的所述开始阶段开始。
在一接收指令步骤705中,一有效指令接收到管道135A中。所述通过发出逻辑140从多个行130的一选定成员传输。所述过程接下来进行到一提取寄存器地址步骤710及一解码步骤715,可选地并行进行。
在提取寄存器地址步骤710中,从所述接收到的指令中提取位。大多数指令集架构的大多数指令都指定一个或多个寄存器来保存指令的输入。所述提取的位标识所述逻辑寄存器,所述逻辑寄存器保存数据以用作所述执行单元的输入。指示一寄存器的所述位被发送到寄存器文件集150,其中它们被用于通过一特定的存储器端口从一特定的存储器阵列访问一特定的位置。然后,所述过程进行到一接收寄存器内容步骤725。
在解码步骤715中,对所述接收到的指令进行解码,其确定指令的类型、所需的执行单元的类型等。指令的类型有时会确定所述指令将花费多少个时钟周期,从而决定所述流中下一个指令多久可以发出。
在一条件通知行步骤720中,如果所述指令的类型是允许其紧随其后的,则在这个步骤中,管道135A发出一信号发到系统控制逻辑130,系统控制逻辑130依次传递所述信号到发出指令的多个行130的成员。在接收所述信号的多个行130的成员中,所述就绪有限状态机390使用所述信号来确定来自所述行的所述下一个指令是否准备好发出。这个步骤可选地以其他方式完成,例如将一部分解码器及计数器放置在就绪有限状态机390中,所述计数器对需要等待直到不再可能干扰这种类型的指令的时钟周期的数量进行计数。
在一接收寄存器内容步骤725中,待操作的所述数据通过管道135A接收,并且用作管道135A内部的所述执行单元145A的输入。
在一执行操作步骤730中,所述指令在执行单元145中执行。
一流控制步骤735是所述过程中的一决定点。如果所述指令不是一控制流类型,则下一个步骤是740。如果是一控制流类型,则下一个步骤是775。一流控制类型是一种可以控制指令执行顺序的指令类型。
一储存器操作(MemOP)?步骤740是所述过程中的决定点。如果所述指令类型不是一存储器操作,诸如一加载指令或一存储指令之类的,则下一个步骤是一发送结果步骤745。如果是一存储器操作,则下一个步骤是一发送MemOp步骤755。
发送结果步骤745用于一非控制流及非存储器操作。对于这种指令类型,通常通过所述执行单元145生成一执行结果,并且这个结果通过系统控制逻辑130发送到所述寄存器文件集150。下一个步骤是写入结果步骤750。
在写入结果步骤750中,从管道145发送的所述结果写入到一物理存储器中。这可以确保所述结果写入的所述存储器阵列的所述端口是空闲的,因为就绪有限状态机390配置成用以仅在所述结果的这个步骤期间不存在冲突下,使指令准备好发布给管道135。可替代地,系统控制逻辑130可以配置成用以确保没有两个写入以一重叠的方式占据同一物理存储器阵列的同一端口。
发送储存器操作步骤755用于存储器操作类型的指令。在这个步骤中,使将要执行的所述存储器操作、所述存储器地址及可选地将要写入的所述数据对系统控制逻辑130是可用的,所述系统控制逻辑130在试图访问所述数据高速缓存115的许多管道之间进行仲裁。接下来是一通知上下文单元步骤760。
通知上下文单元步骤760花费一任意数量时间,在此期间内访问所述存储器系统并且完成所述存储器操作。在完成所述存储器操作之后,所述系统控制逻辑130通知从其发出所述指令的所述行310它已经完成。
在那个行中的所述就绪有限状态机390在确定那个行310是否准备好发出它的下一个指令时,使用这个信息。接下来是存储?步骤765。
存储?步骤765是所述过程中的一决定点。如果所述完成的存储器操作是一加载指令,则下一个步骤是写入结果步骤770。如果不是一加载指令,则那个指令的执行结束。
写入结果步骤770用于一加载指令。从所述存储器系统中检索到的所述结果发送到所述寄存器文件集150,在所述寄存器文件集150所述数据写入到一物理存储器阵列。这个指令的执行到此结束。
改变流?步骤775用于控制流指令。它是所述过程中的一决定点。一旦通过执行单元145完成了对一指令的处理,它知道所述控制流指令是否被采用。如果指令不被采取,则下一个步骤是一通知上下文单元步骤780。如果指令被采取,则下一个步骤是发送新地址785。
通知上下文单元步骤780使用系统控制逻辑130来通知发出所述指令的所述行310,所述分支没有被采取。所述提取有限状态机380使用这个信息来确定要放入就绪指令存储320的所述指令。这个指令的执行到此结束。
发送新地址步骤785用于控制流指令,其中控制流的改变确实发生。一控制流的一示例是一采取分支指令并且另一个示例是一跳转指令。在发送新地址步骤785中,系统控制逻辑130用于传送所述新指令地址到发出所述控制流指令的所述行。这个地址由提取有限状态机380接收,并确定将什么指令放入就绪指令存储320中。这个指令的执行到此结束。
在本文中具体示出和/或描述了数个实施例。然而,应当理解的是,在不脱离本发明的精神和预期范围的情况下,以上教导并且在所附权利要求的范围内涵盖了修改和变型。例如,如本文中所使用的,物理存储器阵列可以包括被布置为专用寄存器位单元的SRAM阵列,或者触发器或锁存器的阵列,或者晶体管的阵列。
本文讨论的实施例说明了本发明。当参考图示描述本发明的这些实施例时,所描述的方法和/或特定结构的各种修改或改编对于本领域技术人员而言将变得显而易见。依赖于本发明的教导的所有这些修改,改编或变型以及通过这些教导使本领域的技术进步,都被认为在本发明的精神和范围内。因此,不应将这些描述和附图视为限制性的,因为应当理解,本发明绝不限于所示的实施例。
本文所指的计算系统可以包括集成电路、微处理器、个人计算机、服务器、分布式计算系统、通信设备、网络设备等以及它们的各种组合。计算系统还可包括易失性和/或非易失性存储器,例如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、磁性介质、光学介质、纳米介质、硬盘驱动器、光盘、数字多功能光盘(DVD)和/或其他配置为存储模拟或数字信息的设备(例如数据库)。上面提到的逻辑的各种示例可以包括存储在计算机可读介质上的硬件、固件或软件,或其组合。如本文所使用的计算机可读介质明确地排除了纸。本文提到的方法的计算机实现的步骤可以包括存储在计算机可读介质上的一组指令,这些指令在被执行时使计算系统执行这些步骤。被编程为根据来自程序软件的指令执行特定功能的计算系统是用于执行那些特定功能的专用计算系统。在执行那些特定功能时由专用计算系统操纵的数据至少以电子方式保存在计算系统的缓冲区中,从而将专用计算系统从一种状态物理改变为一种状态,并且每次更改所存储的数据。
本文讨论的逻辑可以包括存储在计算机可读介质上的硬件、固件和/或软件。该逻辑可以在电子设备中实现以产生专用计算系统。

Claims (27)

1.一种处理器系统,包括:
一逻辑寄存器文件集,包括多个物理存储器阵列,每个存储器阵列具有一访问时间及多个访问端口,所述寄存器文件集的每个寄存器文件被分配给一不同的硬件上下文;
多个硬件上下文,每个硬件上下文包括:
所述多个逻辑寄存器文件中的一个及一上下文单元的一行,所述上下文单元包括多个行,其与多个不同的硬件上下文相关联,所述上下文单元的所述行还包括:
一程序计数器存储;
一指令块存储,配置成用以存储一个或多个指令;
逻辑,配置成用以管理从一高速缓存提取一个或多个;及
逻辑,配置成用以控制何时一指令准备从所述行发出;
多个管道,每个管道包括至少一个执行单元;以及
发出逻辑,配置成用以从所述多个行中选择一行,并且从所述选定的行发出一指令给所述多个管道中的一个,其中所述行的选择是基于所述选定的行的一就绪状态;
其中,所述发出逻辑配置成用以选择所述行,使得所述逻辑寄存器文件集以一频率被访问,所述频率除以一单个存储器阵列的所述访问时间大于一,通过要求来自相同硬件上下文的多个就绪指令在时间上间隔开以通过所述端口访问所述存储器阵列所需要的一最少时钟周期数。
2.如权利要求1所述的系统,其特征在于:所述发出逻辑配置成用以选择所述行,使得所述逻辑寄存器文件集以一频率被访问,所述频率除以一单个存储器阵列的所述访问时间大于一,通过要求指示为准备发出的多个指令,所述多个指令的寄存器访问相同存储器阵列的相同端口,在时间上间隔开以通过所述端口访问所述存储器阵列所需要的一最少时钟周期数。
3.如权利要求1所述的系统,其特征在于:所述发出逻辑配置成用以交替地选择所述多个行中不同的行,使得在访问所述多个存储器阵列中的一个的所需要的一时间内,相同硬件上下文的一行不会被选择两次。
4.如权利要求1所述的系统,其特征在于:所述多个行中的每个还包括一指令就绪存储,配置成用以存储准备发出给所述多个管道中的一个的一指令。
5.如权利要求1所述的系统,其特征在于:所述发出逻辑配置成用以交替地选择所述多个行中不同的行,使得在最新指令从所述硬件上下文发出到通过所述多个管道中的一个来处理的所需要的一时间内,相同硬件上下文的一行不会被选择两次。
6.如权利要求1所述的系统,其特征在于:所述指令块存储配置成用以存储至少8个指令。
7.如权利要求1所述的系统,其特征在于:所述多个行中的每个还包括一就绪位存储,配置成用以指示一指令准备从所述各自的行发出,并且所述发出逻辑配置成用以响应于存储在所述绪位存储器中的一位来选择所述行。
8.如权利要求1所述的系统,其特征在于:所述多个行中的每个还包括逻辑,配置成用以至少部分地解码一指令,并且所述发出逻辑还配置成用以基于所述解码的指令的一类型来选择所述行。
9.如权利要求1所述的系统,其特征在于:所述多个管道中的每一个与所述发出逻辑的一部分相关联,所述发出逻辑配置成用以基于一不同的指令类型来选择一行。
10.如权利要求1所述的系统,其特征在于:所述发出逻辑响应于一就绪状态,所述就绪状态被包括在所述选定的行中的一有限状态机所指示。
11.如权利要求11所述的系统,其特征在于:所述有限状态机配置成用以响应于:1)已经通过所述多个管道中的一成员充分遍历的一先前指令及2)将要发出的所述下一个指令存在于所述行中,来指示所述就绪状态。
12.如权利要求11所述的系统,其特征在于:所述有限状态机配置成用以确定所述下一个指令的一类型。
13.如权利要求1所述的系统,其特征在于:所述多个管道包括不同类型的管道,并且每种类型的管道配置成用以处理一个或多个类型的数据。
14.如权利要求1所述的系统,其特征在于:所述多个管道中的每一个配置成用以报告它们的状态给所述逻辑,所述逻辑配置成用以指示在所述多个行中的每个中的一指令准备发出。
15.如权利要求1所述的系统,其特征在于:所述多个管道中的至少一个配置成用以基于所述指令的一类型,转发一指令转发给所述多个管道中的另一个。
16.一种处理器系统,包括:
一管道,包括一执行单元;
一指令高速缓存;
一上下文单元,包括多个行;
所述多个行中的每个被分配给一独立线程;
所述多个行中的每个包括至少一个程序计数器;
所述多个行中的每个包括存储,配置成用以存储一个或多个指令;
所述多个行中的每个包括逻辑,配置成用以从所述指令高速缓存中提取所述一个或多个指令;及
所述多个行中的每个包括逻辑,配置成用以确定何时一指令准备从所述各自的行发出给所述管道;以及
发出逻辑,配置成用以从所述多个行中选择一行,并且从所述选定的行发出一指令给所述管道。
17.如权利要求17所述的系统,其特征在于:所述逻辑配置成用以响应于在所述各自的行中的一过去动作的历史来确定何时一指令准备好。
18.如权利要求17所述的系统,其特征在于:所述逻辑配置成用以响应于在所述各自的行中的一过去动作的历史来确定何时一指令准备好。
19.如权利要求17所述的系统,其特征在于:所述多个行中的每个与一不同的硬件上下文相关联,并且每个硬件上下文被分配以执行一不同的独立线程。
20.如权利要求17所述的系统,其特征在于:所述发出逻辑配置成用以,自一指令从所述选定的行最后发出之后,响应于一时钟周期数来选择所述行。
21.如权利要求17所述的系统,其特征在于:所述发出逻辑配置成用以响应于在所述行中指示一指令准备发出的逻辑来选择所述行。
22.一种执行一组计算指令的方法,所述方法包括:
将与一指令线程相关联的多个指令从存储器从所述存储器移动进入与相同指令线程相关联的一硬件上下文行,所述行包括一程序计数器及一存储,所述存储用以存储所述移动的指令,其中有多个行,每个行与一不同的指令线程相关联并且每个行保存一硬件上下文的一部分,并且包括控制逻辑,所述控制逻辑的行为取决于所述过去动作的历史加上对所述系统的输入并且具有至少两个功能,其中这些功能可以通过具有一第一有限状态机的多个有限状态机实现,所述第一有限状态机配置成用以指示一指令准备从所述各自的行发出,并且所述多个行中的每个包括一第二有限状态机配置成用以控制通过所述硬件上下文所执行的一个或多个下一个指令的提取,其中移动所述多个指令是响应于来自所述行的一指令的发出,并且移动所述指令需要一访问时间;在一行中的所述第一有限状态机确定一指令准备从所述行发出到一管道,其涉及避免多个正在进行的多个指令发生冲突,所述多个指令试图使用相同一次性内部资源,例如多于一个试图访问存储指令寄存器数据的一特定存储器阵列的相同端口;
从准备发出一指令的所述多个行中选择出一行,并且从所述选定的行发出所述就绪指令,所述就绪指令涉及将所述指令移动到所述管道;
更新发出一指令的所述行的所述程序计数器,以反映将从所述行发出的所述下一个指令的地址;以及
使用所述管道执行所述指令;
其中,所述多个指令发出到所述管道,以比可以访问的所述多个物理存储器阵列更快的一速率,所述多个物理存储器阵列存储指示通过在所述多个指令中的多个寄存器地址的所述数据。
23.如权利要求23所述的方法,还包括:多个附加行,每个附加行选择存储在存储器中的多个指令,并且将所述多个选定的指令移动进入所述行。
24.如权利要求23所述的方法,其特征在于:所述逻辑响应于通过所述管道执行一指令的进度。
25.如权利要求23所述的方法,还包括:当所述指令在所述行时,部分解码所述指令,并且确定一时钟周期数直到从所述行发出所述下一个指令是安全的,其中所述逻辑响应于所述时钟周期数。
26.一种处理器系统,包括:
一管道,包括一执行单元;
一指令高速缓存;
一上下文单元,包括多个行;
所述多个行中的每个被分配给一独立线程;
所述多个行中的每个包括至少一个程序计数器;
所述多个行中的每个包括存储,配置成用以存储多个指令的一高速缓存块;
所述多个行中的每个包括逻辑,配置成用以从所述指令高速缓存中提取所述一个或多个指令;及
所述多个行中的每个包括逻辑,配置成用以确定何时一指令准备从所述
各自的行发出给所述管道;以及
发出逻辑,配置成用以从所述多个行中选择一行,并且从所述选定的行发出一指令给所述管道。
27.如权利要求3所述的系统,其特征在于:所述发出逻辑配置成用以交替地选择所述多个行中的多个不同行为一就绪位。
CN201880025858.XA 2017-02-20 2018-02-20 超线程处理器 Active CN110603521B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762460909P 2017-02-20 2017-02-20
US62/460,909 2017-02-20
US201762501780P 2017-05-05 2017-05-05
US62/501,780 2017-05-05
US201862620032P 2018-01-22 2018-01-22
US62/620,032 2018-01-22
PCT/US2018/018865 WO2018152551A1 (en) 2017-02-20 2018-02-20 Super-thread processor

Publications (2)

Publication Number Publication Date
CN110603521A true CN110603521A (zh) 2019-12-20
CN110603521B CN110603521B (zh) 2023-10-27

Family

ID=63167816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880025858.XA Active CN110603521B (zh) 2017-02-20 2018-02-20 超线程处理器

Country Status (8)

Country Link
US (2) US10437603B2 (zh)
EP (1) EP3583486A4 (zh)
JP (1) JP2020508534A (zh)
KR (1) KR20190130570A (zh)
CN (1) CN110603521B (zh)
AU (1) AU2018221270A1 (zh)
CA (1) CA3053391A1 (zh)
WO (2) WO2018152551A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220229662A1 (en) * 2017-02-20 2022-07-21 Intensivate, Inc. Super-thread processor
JP2020508534A (ja) * 2017-02-20 2020-03-19 インテンシベイト インコーポレイテッドIntensivate Inc. スーパースレッドプロセッサ、処理システム、および方法
US11263013B2 (en) * 2020-04-07 2022-03-01 Andes Technology Corporation Processor having read shifter and controlling method using the same

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
CN1276888A (zh) * 1997-10-23 2000-12-13 国际商业机器公司 在多线程处理器中选择线程切换事件的方法和装置
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US20070074005A1 (en) * 2005-09-27 2007-03-29 Ibm Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US20070174597A1 (en) * 1999-05-11 2007-07-26 Sun Microsystems, Inc. Multiple-thread processor with in-pipeline, thread selectable storage
US20070204137A1 (en) * 2004-08-30 2007-08-30 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
WO2008036852A1 (en) * 2006-09-21 2008-03-27 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
CN101681262A (zh) * 2007-05-30 2010-03-24 Xmos有限公司 在处理器中调度多个线程
US20100161948A1 (en) * 2006-11-14 2010-06-24 Abdallah Mohammad A Apparatus and Method for Processing Complex Instruction Formats in a Multi-Threaded Architecture Supporting Various Context Switch Modes and Virtualization Schemes
US20100169579A1 (en) * 2008-12-30 2010-07-01 Gad Sheaffer Read and write monitoring attributes in transactional memory (tm) systems
US20110078414A1 (en) * 2009-09-30 2011-03-31 Olson Christopher H Multiported register file for multithreaded processors and processors employing register windows
US20140282565A1 (en) * 2013-03-15 2014-09-18 Aamer Jaleel Processor Scheduling With Thread Performance Estimation On Core Of Different Type
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US20150324207A1 (en) * 2014-05-12 2015-11-12 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7558939B2 (en) * 2005-03-08 2009-07-07 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
US8776077B2 (en) 2008-04-02 2014-07-08 Oracle America, Inc. Method for multithreading an application using partitioning to allocate work to threads
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
JP2020508534A (ja) * 2017-02-20 2020-03-19 インテンシベイト インコーポレイテッドIntensivate Inc. スーパースレッドプロセッサ、処理システム、および方法

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1276888A (zh) * 1997-10-23 2000-12-13 国际商业机器公司 在多线程处理器中选择线程切换事件的方法和装置
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US20070174597A1 (en) * 1999-05-11 2007-07-26 Sun Microsystems, Inc. Multiple-thread processor with in-pipeline, thread selectable storage
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US20070204137A1 (en) * 2004-08-30 2007-08-30 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US20070074005A1 (en) * 2005-09-27 2007-03-29 Ibm Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
WO2008036852A1 (en) * 2006-09-21 2008-03-27 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
US20100161948A1 (en) * 2006-11-14 2010-06-24 Abdallah Mohammad A Apparatus and Method for Processing Complex Instruction Formats in a Multi-Threaded Architecture Supporting Various Context Switch Modes and Virtualization Schemes
CN101681262A (zh) * 2007-05-30 2010-03-24 Xmos有限公司 在处理器中调度多个线程
US20100169579A1 (en) * 2008-12-30 2010-07-01 Gad Sheaffer Read and write monitoring attributes in transactional memory (tm) systems
US20110078414A1 (en) * 2009-09-30 2011-03-31 Olson Christopher H Multiported register file for multithreaded processors and processors employing register windows
US20140282565A1 (en) * 2013-03-15 2014-09-18 Aamer Jaleel Processor Scheduling With Thread Performance Estimation On Core Of Different Type
US20150324207A1 (en) * 2014-05-12 2015-11-12 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOOST HOOZEMANS 等: "Multiple Contexts in a Multi-ported VLIW Register File Implementation", 《IEEE》 *

Also Published As

Publication number Publication date
KR20190130570A (ko) 2019-11-22
US20180239608A1 (en) 2018-08-23
US10437603B2 (en) 2019-10-08
AU2018221270A1 (en) 2019-08-29
EP3583486A4 (en) 2021-01-06
US11321097B2 (en) 2022-05-03
WO2018152551A1 (en) 2018-08-23
JP2020508534A (ja) 2020-03-19
CN110603521B (zh) 2023-10-27
EP3583486A1 (en) 2019-12-25
US20200034153A1 (en) 2020-01-30
WO2021091649A1 (en) 2021-05-14
CA3053391A1 (en) 2018-08-23
WO2021091649A8 (en) 2022-05-05

Similar Documents

Publication Publication Date Title
US5893165A (en) System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US5375216A (en) Apparatus and method for optimizing performance of a cache memory in a data processing system
US8375196B2 (en) Vector processor with vector register file configured as matrix of data cells each selecting input from generated vector data or data from other cell via predetermined rearrangement path
CN104756090B (zh) 提供扩展的缓存替换状态信息
US10572179B2 (en) Speculatively performing memory move requests with respect to a barrier
CN101410797A (zh) 无序处理器中的事务存储器
US10140052B2 (en) Memory access in a data processing system utilizing copy and paste instructions
US11321097B2 (en) Super-thread processor
US20190213129A1 (en) Selective downstream cache processing for data access
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
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
US8645588B2 (en) Pipelined serial ring bus
KR100618248B1 (ko) 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법
US10241945B2 (en) Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
JPH02239331A (ja) データ処理システム及びその命令実行を促進する方法
JPH05506323A (ja) 機能停止キャッシュを提供する装置と方法
US11436124B2 (en) Apparatus and method for accessing metadata when debugging a device
US20220229662A1 (en) Super-thread processor
JPH10502756A (ja) ベクトルプロセッサのためのチャンク連鎖
US20080282050A1 (en) Methods and arrangements for controlling memory operations
US7234027B2 (en) Instructions for test & set with selectively enabled cache invalidate
US20080282051A1 (en) Methods and arrangements for controlling results of memory retrival requests
JP3570877B2 (ja) 情報処理装置
EP0550290A2 (en) CPU register array
JPH02259945A (ja) ストア処理方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant