CN111295641A - 使用宽度减小vliw处理器的vliw指令处理的系统和方法 - Google Patents

使用宽度减小vliw处理器的vliw指令处理的系统和方法 Download PDF

Info

Publication number
CN111295641A
CN111295641A CN201880070368.1A CN201880070368A CN111295641A CN 111295641 A CN111295641 A CN 111295641A CN 201880070368 A CN201880070368 A CN 201880070368A CN 111295641 A CN111295641 A CN 111295641A
Authority
CN
China
Prior art keywords
instruction
instructions
register
packet
vliw
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
CN201880070368.1A
Other languages
English (en)
Other versions
CN111295641B (zh
Inventor
P·萨索内
C·科布
S·K·凡库玛汉堤
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 CN111295641A publication Critical patent/CN111295641A/zh
Application granted granted Critical
Publication of CN111295641B publication Critical patent/CN111295641B/zh
Active 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3822Parallel decoding, e.g. parallel decode units
    • 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
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

公开了使用宽度减小处理器的超长指令字VLIW指令处理。在特定实施例中,VLIW处理器包含控制电路,所述控制电路经配置以接收包含第一数目的指令的VLIW包并且将所述指令分配到第二数目的指令执行路径。所述第一数目大于所述第二数目。所述VLIW处理器还包含经配置以存储执行所述指令的结果的物理寄存器以及耦合到所述控制电路的寄存器重命名电路。

Description

使用宽度减小VLIW处理器的VLIW指令处理的系统和方法
优先权主张
本专利申请主张2017年11月7日递交的标题为“使用宽度减小VLIW处理器的VLIW指令处理的系统和方法(SYSTEM AND METHOD OF VLIW INSTRUCTION PROCESSING USINGREDUCED-WIDTH VLIW PROCESSOR)”的第15/805,935号申请的优先权,并且让渡给本受让人且在此以引用的方式明确并入本文中。
技术领域
本发明大体上涉及处理器,且更确切地说涉及超长指令字(VLIW)处理器。
背景技术
技术上的进步已经产生更强大的计算装置。举例来说,例如膝上型计算机和桌上型计算机的计算装置和服务器以及例如便携式无线电话的无线计算装置具有改进的计算能力并且能够执行越来越复杂的操作。增加的计算能力也已在各种其它应用中增强装置能力。举例来说,车辆可包含用于启用全球定位系统操作或其它定位操作、自动驾驶操作、交互式通信及娱乐操作等的处理装置。其它实例包含家用电器、安全相机、计量设备等,其也并入有计算装置以启用增强的功能性,例如物联网(IoT)装置之间的通信。
计算装置可包含处理器以执行程序指令。举例来说,计算装置可包含超长指令字(VLIW)处理器,所述处理器处理多个指令的VLIW包(也被称作长字)。每个指令可指定将执行指令的结果存储于其中的特定寄存器。将执行指令的结果存储于指定的寄存器中被称作指令的“提交”,其可以改变所指定的寄存器的状态。VLIW包内的指令将被以原子方式提交(即,当所有指令成功地执行时执行特定VLIW包的所有指令的结果存储在它们的相应的指定的寄存器中)。如果VLIW包的指令中的任何一个无法被提交(例如,执行指令引起异常,例如除以零异常),那么包的指令中并无一个被提交。因此,指定的寄存器的状态并未改变直至处理器已经验证所有指令成功地执行。
VLIW处理器包含至少与VLIW包大小一样多的并行执行路径以确保接收到的VLIW包中的所有指令并行地执行并且作为原子群组提交或中止。虽然实施多个并行处理路径启用高处理量操作,但是与具有较少处理路径的处理器相比多个并行处理路径也可能增大VLIW处理器的成本、大小和功率消耗。
发明内容
在特定方面中,超长指令字(VLIW)处理器包含控制电路,所述控制电路经配置以接收包含第一数目的指令的VLIW包并且将指令分配到第二数目的指令执行路径。第一数目大于第二数目。VLIW处理器包含经配置以存储执行指令的结果的物理寄存器。VLIW处理器还包含耦合到控制电路的寄存器重命名电路。
在另一方面中,操作处理器的方法包含在包含第二数目的指令执行路径的处理器处接收包含将以原子方式在处理器处提交的第一数目的指令的包。第一数目大于第二数目。方法包含在第一时间周期期间执行包的第一指令。方法还包含将执行第一指令的结果写入到第一寄存器。方法进一步包含,在第一时间周期之后的第二时间周期期间执行包的第二指令之后,指示第一寄存器是指令集定义的寄存器。
在另一方面中,设备包含用于存储指令执行结果的装置。设备包含用于将VLIW包的指令分配到第二数目的用于执行指令的装置的装置。第二数目小于VLIW包中的指令的第一数目。设备还包含用于重命名用于存储的装置的装置。
在另一方面中,非暂时性计算机可读媒体存储可由处理器执行以使得处理器执行操作的指令。操作包含接收包,所述包包含将以原子方式在处理器处提交的第一数目的指令。第一数目大于处理器的指令执行路径的第二数目。操作包含在第一时间周期期间执行包的第一指令。操作还包含将执行第一指令的结果写入到第一寄存器,并且在第一时间周期之后的第二时间周期期间执行包的第二指令之后,指示第一寄存器是指令集定义的寄存器。
通过所公开的方面中的至少一个提供的一个特定优点是通过具有小于每个VLIW包中的指令的数目的处理器宽度(例如,执行路径的数目)的处理器的VLIW指令的执行,实现与具有较大宽度的处理器相比降低的处理器成本、面积和功率消耗,同时保留与现有VLIW代码和编译器的兼容性。本发明的其它方面、优点和特征将在审阅整个申请之后变得显而易见,所述整个申请包含以下章节:附图说明、具体实施方式和权利要求书。
附图说明
图1是处理器的特定实施方案的框图,所述处理器经配置以执行VLIW包的指令并且包含与在VLIW包中的指令的数目相比较少的执行路径。
图2是说明图1的处理器的组件的特定实施方案的框图。
图3是在多个时间周期期间处理VLIW包的特定实施方案的时序图。
图4是在多个时间周期期间处理VLIW包的另一实施方案的时序图。
图5是在多个时间周期期间处理VLIW包的另一实施方案的时序图。
图6是在多个时间周期期间处理VLIW包的另一实施方案的时序图。
图7是在多个时间周期期间操作处理器以执行VLIW包的指令的方法的特定实施方案的流程图。
图8是操作包含与VLIW包中的指令的数目相比较少的执行路径的处理器的方法的特定实施方案的流程图。
图9是包含处理器的便携式装置的框图,所述处理器包含与VLIW包中的指令的数目相比较少的执行路径。
具体实施方式
图1描绘了VLIW处理器100,所述处理器经配置以执行VLIW包102的指令并且包含与在VLIW包102中的指令的数目相比较少的执行路径。处理器100包含耦合到一或多个指令执行路径的控制电路114,所述指令执行路径被说明为:第一执行路径170,其包含第一执行单元180;第二执行路径171,其包含第二执行单元181;第三执行路径172,其包含第三执行单元182;以及第M执行路径173,其包含第M执行单元183(M是正整数)。在特定实施方案中,执行单元180-183中的每一个包含:算术计算电路系统,例如算术逻辑单元(ALU);地址计算电路系统,例如地址产生单元(AGU);浮点计算电路系统,例如浮点单元(FPU);加载存储电路系统,例如加载存储单元,其它电路系统,或其任何组合。虽然说明了四个执行路径,对应于M=4,但是在其它实施方案中M具有其它值,例如M=1、M=2、M=3、M=5或M>5。指令可以在执行路径170-173处并行地执行。举例来说,当M=4时,多达四个指令可以经由四个指令执行路径170-173并行地执行。
执行路径170-173耦合到物理寄存器126。物理寄存器126包含代表性物理寄存器PR1、PR2、PR8和PR12,然而可以包含任何数目的物理寄存器(例如,多于12个)。执行路径170-173经配置以将指令执行的结果存储到物理寄存器126中。举例来说,每个执行路径170-173可包含一或多个缓冲器、驱动器电路和控制电路系统,其经配置以将指令执行结果传送到所识别的物理寄存器中以用于存储。在一些实施方案中,多个物理寄存器用于存储执行单个指令的结果。在说明性实例中,指令产生存储在单独的寄存器中的多个结果。在另一说明性实例中,指令产生大于单个物理寄存器并且分段成多个部分的结果(例如,双倍精密值)以用于存储到多个物理寄存器中。
寄存器重命名电路134耦合到控制电路114并且耦合到物理寄存器126。寄存器重命名电路134经配置以指示物理寄存器126的寄存器是指令集定义的寄存器(也被称作“架构寄存器”)。寄存器重命名电路134包含重命名表136,所述重命名表经配置以经由指针150将指令集定义的寄存器名称140映射到物理寄存器126的特定寄存器。举例来说,重命名表136说明第一架构寄存器(R0)141与将R0映射到物理寄存器PR8的指针151相关联,第二架构寄存器(R1)142与将R2映射到物理寄存器PR2的指针152相关联,并且第A架构寄存器(RA)143与将RA映射到物理寄存器PR12的指针153相关联(A是正整数)。
控制电路114经配置以接收包含多个指令的VLIW包并且将多个指令分配到指令执行路径170-173中的一或多个。举例来说,控制电路114经配置以接收包含N个指令103-105(N是大于M的正整数)的VLIW包102并且将N个指令103-105分配到执行路径170-173。分配指令可以包含调度指令103-105中的两个以在相同的指令执行路径中执行。举例来说,控制电路114可使得第一指令103在第一时间周期期间在第一执行单元180处被执行并且第二指令104在第一时间周期之后的第二时间周期期间在第一执行单元180处被执行。进一步详细参考图3到6描述了“破坏”VLIW包102以在多个时间周期上执行指令的实例。
作为说明性实例,VLIW包102是在时间周期T0期间接收到的,第一指令103指定执行第一指令103的结果将被写入到指令集定义的寄存器R1中,第二指令104指定执行第二指令104的结果将被写入到指令集定义的寄存器RA中,并且第N指令105指定执行第N指令105的结果将被写入到指令集定义的寄存器R0中。第一指令103在第一时间周期T1期间在第一执行单元180处被执行并且第一执行路径170经配置以在T1期间将第一指令103的执行的第一可提交结果163存储到PR2(物理寄存器126中的一个)。并且在T1期间,第二指令104在第三执行单元182处被执行并且执行第二指令104的结果164被写入到PR12。在T1之后的第二时间周期T2期间(紧接在介入时间周期之后或在介入时间周期之后)在第一执行单元180处执行第N指令105之后,第一执行路径170将第N指令105的结果165写入到PR8。
响应于通过第一执行路径170对第N指令105的执行引起第二可提交结果165,并且在指令103-105中的每一个的结果被写入到相应的物理寄存器中之后,寄存器重命名电路134经配置以指示寄存器PR8、PR2和PR12是架构寄存器。举例来说,寄存器重命名电路134可起始原子提交操作,所述操作包含更新重命名表136的指针151、152和153以指示寄存器PR8、PR2和PR12相应地是指令集定义的寄存器R0、R1和RA。经由重命名表136存取(例如,从中读取值)R0、R1和RA中的一或多个的接下来执行的指令相应地涉及PR8、PR2和PR12。
响应于确定VLIW包102的多个指令103-105中的每一个的执行已产生可提交结果(例如,已完成而没有触发异常),更新指针作为重命名表更新操作的部分执行。重命名表更新操作包含更新重命名表136的多个指针以指示存储可提交结果的寄存器是指令集定义的寄存器。因此,指令执行结果存储在物理寄存器中直至所有的指令103-105已经被执行,并且其后指令103-105是经由重命名表更新操作提交的。通过更新重命名表136而并非将来自物理寄存器的结果复制到专用架构寄存器,可避免与数据的“双倍写入”相关联的功率消耗,包含将结果写入到物理寄存器并且随后将结果复制到架构寄存器。
寄存器重命名的使用使得VLIW处理器100能够具有数目小于VLIW包102中的指令“槽”的数目的指令执行路径(例如,M<N)。因此,与具有数目等于或超过VLIW指令的数目的执行路径的处理器相比,VLIW指令可在不修改VLIW包的情况下并且在具有较少指令执行路径的降低的成本或较低功率处理器处(例如,M≥N)被执行。寄存器重命名的使用还使得VLIW处理器100能够执行无序执行。为了说明,包含多个指令(包含第三指令)的第二VLIW包可以在时间周期T1期间被接收,并且第三指令可以在第二时间周期T2之前的时间周期期间被执行(例如,在VLIW包102的最终指令被执行之前),如进一步参考图5所描述。
在一些实施方案中,寄存器重命名的使用使得处理器100能够支持将指令103-105中的一或多个转译成多个硬件层级子指令的微码。举例来说,处理器100可具有低功率设计而没有专业化的整数除以硬件,并且在VLIW包102中接收到的整数除以指令可以通过用子指令的序列代替整数除以指令以模拟整数除以来执行。在更新重命名表136以按原子方式与包102的其它指令一起提交指令的结果之前处理器100可执行多个子指令中的每一个。参考图2和图6描述了包含微码的另外的实例。
参考图2,具有两个执行路径的图1的处理器100的特定实施方案被描绘且指定为200。VLIW包102被说明为包含三个指令(即,N=3)。VLIW包102在耦合到存储器204的解码器202处被接收。存储器204包含关于将指令转译成子指令的群组(例如,微码)的信息。举例来说,存储器204包含数据以使得解码器202用包含第一子指令211、第二子指令212和第三子指令213的子指令的群组取代第三指令105。存储器204还包含数据以使得解码器202将第四指令208映射到包含第四子指令214和第五子指令215的子指令的群组中。
解码器202经配置以检测具有在存储器204中的相关联的子指令的VLIW包102中的一或多个指令并且用对应的子指令代替此类指令。举例来说,如所说明,解码器202存取存储器204以用子指令211-213代替VLIW包102的第三指令105以形成原子提交指令群组220。原子提交指令群组220包含第一指令103、第二指令104、第一子指令211、第二子指令212,以及第三子指令213。
控制电路114经配置以将原子提交指令群组220的指令和子指令分配到执行路径中的一或多个:第一执行路径(XP1)170和第二执行路径(XP2)171。控制电路114包含无次序调度器221、指令群组追踪器222,以及原子提交引擎224。无次序调度器221经配置以调度每个接收到的原子提交指令群组的个体指令和子指令并且将每个接收到的原子提交指令群组的个体指令和子指令路由到执行路径170-171。无次序调度器221经配置以“破坏”VLIW包102使得对应于VLIW包102的个体指令或子指令在多个时间周期被执行。参考图3到6进一步详细说明了可通过无次序调度器221执行的无次序调度的实例。
指令群组追踪器222经配置以维持对应于每个接收到的原子提交指令群组的指令和子指令的信息(如果存在的话)。举例来说,指令群组追踪器222经配置以维持关于原子提交指令群组220的指令103、104中的每一个以及子指令211、212和213中的每一个的执行状态的信息。在原子提交指令群组220的指令和子指令中的每一个的成功的执行之后,指令群组追踪器222更新状态指示符以指示是否获得可提交结果或者是否已经产生中断。指令群组追踪器222可记录指示哪些物理寄存器126存储对应于原子提交指令群组220的哪些指令或子指令的结果的信息。指令群组追踪器222可由原子提交引擎224存取以提供对应于可提交指令执行结果的信息。
原子提交引擎224经配置以检测原子提交指令群组何时已经通过可提交结果完成执行。举例来说,在一些实施方案中原子提交引擎224经配置以检测指令103、104和子指令211、212和213中的每一个何时已经产生已经存储在特定物理寄存器126中的可提交结果。在一些实施方案中,原子提交引擎224进一步经配置以确定原子提交指令群组220是在处理器处的最老的原子提交指令群组(例如,在VLIW包102之前在无次序调度器221处接收到的所有VLIW包已经被执行并且被提交或中止)。响应于确定指令103、104以及子指令211、212和213具有可提交的结果,原子提交引擎224可在寄存器重命名电路134处起始间接表更新操作240。
寄存器重命名电路134包含被实施为包含硬件间接指针230的间接表的重命名表136。举例来说,图1的指针151-153中的每一个可以通过硬件间接指针实施以将架构寄存器映射到物理寄存器126的特定物理寄存器。寄存器重命名电路134响应于原子提交引擎224来执行间接表更新操作240。举例来说,间接表更新操作240可使得寄存器重命名电路134更新间接表136,方法是更新对应于由指令103-105指定的架构寄存器的硬件间接指针230中的每一个以指向原子提交指令群组220的可提交结果已经存储在其中的物理寄存器。
在特定实施方案中,响应于确定VLIW包102的多个指令103-105中的每一个(即,原子提交指令群组220的指令103和104中的每一个以及子指令211、212和213中的每一个)的执行已经产生可提交结果(例如,已经完成而没有触发异常),硬件间接指针更新被执行为间接表更新操作240的部分。间接表更新操作240包含更新多个硬件间接指针以指示存储可提交结果的寄存器是指令集定义的寄存器。因此,指令执行结果存储在物理寄存器中直至所有的指令103、104以及子指令211、212和213已经被执行并且其后结果经由间接表更新操作240被提交。
通过更新重命名表136而非将来自物理寄存器的结果复制到专用架构寄存器,可避免与将来自临时物理寄存器的数据复制到单独的架构寄存器相关联的功率消耗。此外,将指令转译成子指令的群组使得处理器100能够支持VLIW包102的指令集而不包含专用组件来处理指令集的每个指令。在说明性实例中,指令105是整数除以指令或串复制指令,并且处理器100执行子指令211、212和213以产生指令105的结果而不相应地包含专用整数划分电路或专用串复制电路。因此,与包含专业化电路系统以支持指令的执行而不使用微码的处理器相比处理器100在降低的成本和处理器大小下支持VLIW包102的指令集。
参考图3,时序图300说明在实施方案中VLIW包102的指令的执行的实例,其中处理器100具有三个执行路径并且VLIW包102具有四个指令。如所说明,VLIW包102包含第一指令304、第二指令305、第三指令306和第四指令307,并且处理器100包含第一执行路径(XP1)180、第二执行路径(XP2)181和第三执行路径(XP3)182。
在第一时间周期(T0)320期间,处理器100在第一执行路径170处执行第一指令304、在第二执行路径171处执行第二指令305,并且在第三执行路径172处执行第四指令307。响应于产生可提交结果的指令304、305和307的执行,结果存储在物理寄存器中。在第一时间周期320之后的第二时间周期(T1)322期间,第三指令306在第一执行路径170处被执行并且第三指令306的执行的可提交结果被存储到物理寄存器中。在第三指令306的执行的完成之后,VLIW包102的指令中的每一个已经被执行并且结果已经存储到相应的物理寄存器中。因此,原子提交操作330可在第二时间周期322的完成之后执行,例如在第二时间周期322之后的第三时间周期(T2)324期间。为了说明,原子提交330可包含图2的间接表更新操作240。
在两个时间周期期间破坏VLIW包102且执行指令304-307使得处理器100能够使用与在VLIW包102中的指令的数目相比具有较少执行路径的处理器架构支持VLIW包102的指令的执行和原子提交。因此,处理器100提供与具有用于VLIW包102的每个指令槽的专用执行路径的VLIW处理器的实施方案相比降低的成本、降低的功率消耗,以及较小的面积。
图4描绘了实施方案的时序图400,其中处理器100具有单个执行路径(第一执行路径170)并且VLIW包102具有两个指令:第一指令304和第二指令305。
第一指令304在第一时间周期320期间在第一执行路径170中被执行,并且第二指令305在第二时间周期322期间在第一执行路径170中被执行。在VLIW包102的指令304、305中的两者的成功的执行之后,可执行原子提交操作330(例如,在第二时间周期322的末尾)。因此,VLIW包102可以在具有单个执行路径(即,M=1)的处理器100的实施方案中被执行以用于与图3的处理器100的实施方案相比进一步降低的成本、降低的功率消耗,以及较小的面积。虽然图4将VLIW包102描绘为包含两个指令(即,N=2),但是在其它实施方案中VLIW包102包含更大数目的指令(例如,N>2)。
图5描绘了实施方案的时序图500,其中处理器100具有三个执行路径180-182并且VLIW包102具有四个指令304-307。VLIW包102可以在时间T0 320之前的时间被接收到,并且第一指令304、第二指令305和第三指令306可以在第一时间周期320期间被执行。并且在第一时间周期320期间,第二VLIW包502可以被接收和准备用于执行(例如,解码、调度等)。
VLIW包502包含第五指令504、第六指令505,以及第七指令506。虽然VLIW包502经配置以包含四个指令,但是一个指令“槽”被空操作(NOP)占位符507代替。在第二时间周期322期间,第二VLIW包502的第五指令504、第六指令505和第七指令506被执行。
在第二时间周期322期间在指令504-506中的每一个的成功的执行之后,可执行对应于第二VLIW包502的所有的指令的原子提交532。然而,在其中处理器100被约束到按它们被接收到的次序提交VLIW包的实施方案中,第二VLIW包502的指令可能并不在第一VLIW包102的指令被提交之前被提交。
第一VLIW包102的第四指令307可以在第三时间周期324期间被执行。在一些实例中,第四指令307不可用于在第二时间周期322期间执行,例如由于由分支误预测或芯片外存储器存取所引起的延迟,作为说明性非限制性实例。在其它实例中,第四指令307可供用于在第二时间周期322期间执行但是出于一或多个其它原因通过无次序调度器221经调度以用于在第三周期324期间执行,以便减少在第二时间周期322期间的峰值功率消耗。
在第一时间周期320期间指令304-306中的每一个和在第三时间周期324期间第四指令307的成功的执行之后,可执行第一原子提交操作330以提交VLIW包102,并且第二原子提交操作532可在第一原子提交操作330的执行之后执行或与第一原子提交操作330的执行同时执行。第二原子提交操作532对应于提交第二VLIW包502的指令504-506。
因此,图5描绘了其中第二VLIW包502在第一VLIW包102之后被接收到并且包含将在处理器100处以原子方式提交的指令504-506的群组的实施方案。指令504-506中的一或多个是在第一VLIW包102的执行的完成之前被执行的(例如,第一VLIW包102是“被破坏的”并且指令在包之间无次序地被执行)。因此,在其中将执行第一VLIW包102的最终指令的时间周期324之前,在时间周期322期间执行第二VLIW包502的一或多个指令。
通过将VLIW包102和502的指令的执行重新排序,与其中每个VLIW包以程序次序被执行的实施方案相比,处理器100可通过减少执行路径310-314中的停滞或延迟来改进处理量。虽然图5描绘了其中处理器100受到提交VLIW包502的指令直至先前VLIW包102已经被提交的约束的实施方案,但是在其它实施方案中处理器100可包含电路系统,所述电路系统经配置以确定第一VLIW包102的指令与第二VLIW包502的指令之间是否实际上存在一或多个依赖性并且以响应于确定没有数据依赖性受到提交操作330-532的次序影响而在执行第一原子提交操作330之前或与执行第一原子提交操作330同时执行第二原子提交操作532。
图6描绘了处理器100的实施方案的时序图600,其中处理器100具有三个执行路径180-182并且VLIW包102包含四个指令304-308。在图6中描绘的实施方案中,VLIW包102经处理以产生参考图2所描述的原子提交群组220的特定实施方案。确切地说,第三指令306经解码并且被除了第一指令304、第二指令305和第四指令308之外也包含在原子提交群组220中的子指令602、604和606的群组代替。因此,与VLIW包102中的初始数目的指令相比原子提交群组220包含较大数目的组合的指令和子指令以被执行和以原子方式提交。第一指令304、第二指令305和第一子指令602在第一时间周期320期间被执行,并且第四指令308、第二子指令604和第三子指令606在第二时间周期322期间被执行。在原子提交群组220的指令304、305和308中的每一个以及子指令602、604和606中的每一个的完成之后,可执行原子提交操作330。
将第三指令306转译成子指令306-308使得处理器100能够支持VLIW包102的指令集而不包含专用组件来处理第三指令306(例如,整数除以指令)以实现与包含专业化硬件来执行指令306而没有微码的处理器100的实施方案相比降低的成本和功率消耗。
虽然图3到6描绘了在时间周期320-324中的两个或大于两个期间执行VLIW包102的指令的特定实例,但是应理解在两个以上或三个时间周期或其任何组合期间指令可以不同的次序被执行。举例来说,在图4的实施方案的替代实施方案中,第二指令305在第一时间周期320期间被执行,并且第一指令304在第二时间周期322期间被执行。因为在一些实施方案中VLIW包102包含经选择以彼此并行地可执行的指令(例如,通过VLIW编译器布置成包),所以在指令304、305之间不存在将干扰以任一次序的指令的依序执行的数据依赖。
图7描绘了操作例如处理器100的VLIW处理器的方法700的实例。方法700描绘了执行具有与处理器的执行路径的数目相比较大数目的指令的VLIW包的指令的实例。
方法700包含在702处接收VLIW包。VLIW包包含多个指令,例如图1的VLIW包102。
在可选的实施方案中,在704处,VLIW包的一或多个指令可由微指令的集合代替。为了说明,解码器202可经配置以存取图2的存储器204以用子指令代替VLIW包的一或多个指令以产生原子提交群组,例如原子提交群组220。
在706处,将VLIW包的指令调度为原子提交群组。举例来说,VLIW包的指令(包含任何子指令)可以由控制电路114调度,例如由图2的无次序调度器221调度。
在708处,根据调度执行原子提交群组的一或多个指令。举例来说,在图3的第一时间周期320期间,执行VLIW包102的前三个指令304、305和307。在710处,作出所执行的指令是否已经产生可提交结果的确定。在指令中的一或多个并未产生可提交结果的情况下,例如当异常产生时,在712处丢弃已经由于原子提交群组中的指令的执行产生且已经存储在物理寄存器中的所有的结果。举例来说,再次参考图3,如果第一指令304和第二指令305产生存储在物理寄存器126的集合中的物理寄存器中的可提交结果,但是第四指令307产生异常,那么可以从物理寄存器丢弃第一指令304和第二指令305的结果。举例来说,丢弃指令结果可包含擦除寄存器、覆写寄存器,或将寄存器标记为未使用的或可供用于新数据存储。
如果在708处被执行的所有所执行的指令在710处被确定为已经产生可提交结果,那么在714处指令的结果被存储在物理寄存器126中。在716处,关于原子提交群组是否准备好被提交执行确定。举例来说,在图3的第一时间周期320的末尾,可以通过原子提交引擎224关于对应于VLIW包的原子提交指令群组的所有指令是否已经产生可提交结果作出确定。在指令中的一或多个尚未产生可提交结果的情况下,例如在VLIW包中的所有指令的执行之前,处理返回到708并且根据调度在下一个时间周期期间(例如,图3到6的第二时间周期322或第三时间周期324)执行原子提交群组的一或多个额外指令。否则的话,当在716处原子提交群组准备好提交时,在718处,硬件间接指针经过更新以指示存储原子提交群组结果的物理寄存器是架构寄存器。举例来说,原子提交引擎224可查询图2的原子提交群组220的状态以验证原子提交指令群组220的所有指令和子指令已经产生可提交结果,并且原子提交引擎224可使得寄存器重命名电路134执行间接表更新操作240以更新硬件间接指针230中的一或多个。
方法700中的寄存器重命名和原子提交的使用使得VLIW处理器能够具有小于VLIW指令的数目的指令执行路径的数目(例如,M<N)。因此,与具有等于或超过VLIW指令的数目的执行路径的数目的处理器相比(例如,M≥N),VLIW指令可以在具有较少指令执行路径的降低的成本或较低功率处理器处被执行。
图8描绘了操作例如处理器100的处理器的方法800的实例,其包含执行具有与处理器的执行路径的数目相比较大数目的指令的VLIW包的指令。
方法800包含在802处,在包含第二数目的指令执行路径的处理器处接收包含将以原子方式在处理器处提交的第一数目的指令的包。第一数目大于第二数目。作为说明性实例,第二数目是一(例如,处理器100包含单个执行路径),并且第一数目是两个或大于两个,例如在图4中描绘的实施方案中。在其它说明性实例中,第二数目是两个或大于两个(例如,处理器100包含多个执行路径)。
在804处,包的第一指令在第一时间周期期间被执行,并且在806处,执行第一指令的结果被写入到第一寄存器。在说明性实例中,第一结果163通过执行第一指令103产生并且被写入到物理寄存器126中的一或多个。
在第一时间周期之后的第二时间周期期间执行包的第二指令之后,方法800包含在808处,指示第一寄存器是指令集定义的寄存器。举例来说,在执行第一指令103之后的时间周期期间执行第N指令105之后,保存第一结果163的寄存器被指示为架构寄存器。
为了说明,在一些实施方案中,执行包的指令中的每一个的结果存储在特定物理寄存器中,并且结果以原子方式提交,方法是更新一或多个硬件间接指针以指示特定物理寄存器是架构寄存器。在特定实施方案中,指示第一寄存器是指令集定义的寄存器包含更新硬件间接指针,例如硬件间接指针230。在说明性实例中,更新硬件间接指针被执行为间接表更新操作的部分,例如间接表更新操作240,所述操作响应于确定指令中的每一个的执行已经产生可提交结果而执行。间接表更新操作包含更新多个硬件间接指针以指示存储可提交结果的寄存器是指令集定义的寄存器。
在一些实施方案中,方法800包含用多个子指令代替包的指令并且在指示第一寄存器是指令集定义的寄存器之前执行多个子指令中的每一个。为了说明,解码器202经配置以用子指令211-213代替第三指令105以形成原子提交指令群组220。
在特定实施方案中,方法800包含在接收包之后接收第二包,例如图5的第二VLIW包502。第二包包含将以原子方式在处理器处被提交且包含第三指令的指令的群组。第三指令是在第二时间周期之前的第三时间周期期间被执行的。举例来说,第二VLIW包502的指令504-506在T2 324期间来自第一VLIW包102的指令307的执行之前在T1 322期间被执行。
通过将执行第一指令的结果写入到第一寄存器并且稍后指示第一寄存器是指令集定义的寄存器,方法800使得处理器能够具有小于第一数目的指令的第二数目的指令执行路径(例如,M<N)并且以原子方式提交包的指令的执行的结果。因此,与具有等于或超过包中指令的数目的执行路径的数目的处理器相比(例如,M≥N),VLIW指令可以在具有较少指令执行路径的降低的成本或较低功率处理器处被执行。
参考图9,描绘了电子装置的特定说明性实施方案的框图并且一般将其表示为900,所述电子装置包含与VLIW包中的指令的数目相比包含较少执行路径的处理器。作为说明性实例,电子装置900可对应于移动装置(例如,蜂窝式电话)。在其它实施方案中,电子装置900可对应于计算机(例如,服务器、膝上型计算机、平板计算机,或桌上型计算机)、可穿戴式电子装置(例如,个人相机、头戴式显示器或手表)、车辆控制系统或控制台、家用电器、机顶盒、娱乐单元、导航装置、电视、监视器、调谐器、无线电(例如,卫星无线电)、音乐播放器(例如,数字音乐播放器或便携式音乐播放器)、视频播放器(例如,数字视频播放器,例如数字视频光盘(DVD)播放器或便携式数字视频播放器)、机器人、保健装置、另一电子装置,或其组合。
装置900包含耦合到存储器932的处理器910,例如数字信号处理器(DSP)。在说明性实例中,处理器910是使用包含图1的控制电路114的VLIW处理器100实施的,所述控制电路经配置以将VLIW包的N个指令分配到M个执行路径,其中M和N是正整数,并且M小于N。
存储器932可耦合到处理器910或集成于所述处理器内。存储器932可包含随机存取存储器(RAM)、磁阻随机存取存储器(MRAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、一或多个寄存器、硬盘、可移动磁盘、压缩光盘只读存储器(CD-ROM)、另一存储装置,或其组合。存储器932存储可通过处理器910执行的一或多个指令以执行操作,例如图7的方法700、图8的方法800,或其组合。
图9还示出了耦合到数字信号处理器910且耦合到显示器928的显示器控制器926。译码器/解码器(编解码器)934也可以耦合到数字信号处理器910。扬声器936和麦克风938可以耦合到编解码器934。
图9还指示无线控制器940可以耦合到处理器910且耦合到天线942。在特定实施方案中,处理器910、显示器控制器926、存储器932、编解码器934和无线接口940包含于封装内系统或芯片上系统装置922中。在特定实施方案中,输入装置930和电源944耦合到芯片上系统装置922。此外,在特定实施方案中,如图9中所说明,显示器928、输入装置930、扬声器936、麦克风938、天线942和电源944在芯片上系统装置922外部。然而,显示器928、输入装置930、扬声器936、麦克风938、天线942和电源944中的每一个可以耦合到芯片上系统装置922的组件,例如接口或控制器。
前述所公开装置及功能性,例如,如参考图1到9中的任何一或多个所描述,可经设计和配置成存储于计算机可读媒体上的计算机文件(例如,RTL、GDSII、GERBER等)。一些或所有此类文件可提供给基于此类文件制造装置的制造操作者。所得产品包含半导体晶片,所述半导体晶片随后被切割成半导体裸片且封装到半导体芯片中。芯片随后在上文所描述的装置中被采用。
结合所公开的实例,非暂时性计算机可读媒体(例如,存储器932)存储可由处理器(例如,处理器100)执行以执行操作的指令。操作包含接收包含将以原子方式在处理器处提交的第一数目的指令的包,第一数目大于处理器的指令执行路径的第二数目。操作还包含在第一时间周期期间执行包的第一指令、将执行第一指令的结果写入到第一寄存器,并且在第一时间周期之后的第二时间周期期间执行包的第二指令之后,指示第一寄存器是指令集定义的寄存器。
结合所公开的实例,设备包含用于存储指令执行结果的装置。举例来说,用于存储指令执行结果的装置可包含一或多个物理寄存器(例如,物理寄存器126),经配置以存储指令执行结果的一或多个其它电路或组件,或其任何组合。
设备还包含用于将VLIW包的指令分配到第二数目的用于执行指令的装置的装置。第二数目小于VLIW包中的指令的第一数目。举例来说,用于分配VLIW包的指令的装置可包含控制电路114、无次序调度器221、经配置以分配指令的一或多个其它电路或组件,或其任何组合。用于执行指令的装置可包含执行路径170-173中的一或多个、执行单元180-183中的一或多个、经配置以执行指令的一或多个其它电路或组件,或其任何组合。
设备还包含用于重命名用于存储的装置的装置。举例来说,用于重命名用于存储的装置的装置可包含寄存器重命名电路134、重命名表136、经配置以重命名用于存储的装置的一或多个其它电路或组件,或其任何组合。
在一些实施方案中,用于重命名的装置进一步经配置以按原子方式提交执行指令的结果,方法是更新用于指示的一或多个装置以指示存储执行指令的结果的用于存储的特定装置是用于存储的架构装置。举例来说,用于指示的装置可包含硬件间接指针230、经配置以指示用于存储的装置是用于存储的架构装置的一或多个其它电路或组件,或其任何组合。
在一些实施方案中,设备包含用于用多个子指令代替多个指令中的一个指令的装置。举例来说,用于代替的装置可包含解码器202、存储器204、经配置以用多个子指令代替一个指令的一或多个其它电路或组件,或其任何组合。
所属领域的技术人员将进一步了解,结合本文中所公开的实施例描述的各种说明性逻辑块、配置、模块、电路和算法步骤可以被实施为电子硬件、计算机软件或两者的组合。上文已大体就其功能性而言描述了各种说明性组件、块、配置、模块、电路和步骤。此类功能性是实施为硬件还是软件取决于特定应用和强加于整个系统的设计约束。所属领域的技术人员可以针对每个特定应用以不同方式实施所描述的功能性,但是此类实施决策不应被解译为引起对本发明的范围的脱离。
所描述的方法或算法的部分结合本文中所公开的实施例可以直接在硬件中实施、在通过处理器执行的软件模块中实施,或在这两者的组合中实施。软件模块可驻留在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、压缩光盘只读存储器(CD-ROM)或所属领域中已知的任何其它形式的存储媒体中。示例性非暂时性(例如,有形的)存储媒体耦合到处理器,使得处理器可以从所述存储媒体读取信息并将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。在替代方案中,处理器和存储媒体可以作为离散组件驻留在计算装置或用户终端中。
提供对所公开实施例的先前描述以使得所属领域的技术人员能够制造或使用所公开的实施例。对这些实施例的各种修改对所属领域的技术人员将是显而易见的,并且可以将本文中定义的原理应用到其它实施例而不脱离本发明的范围。因此,本发明并不意图限于本文中所示的实施例,而是应被赋予与如由所附权利要求书界定的原理和新颖特征一致的可能的最广范围。

Claims (20)

1.一种超长指令字VLIW处理器,其包括:
控制电路,其经配置以接收包含第一数目的指令的VLIW包并且将所述指令分配到第二数目的指令执行路径,所述第一数目大于所述第二数目;
物理寄存器,其经配置以存储执行所述指令的结果;以及
寄存器重命名电路,其耦合到所述控制电路。
2.根据权利要求1所述的VLIW处理器,其中所述寄存器重命名电路经配置以指示所述物理寄存器中的特定寄存器是指令集定义的寄存器。
3.根据权利要求1所述的VLIW处理器,其中所述控制电路经配置以调度所述VLIW包的第一指令以在第一时间周期期间在第一执行路径处被执行并且调度所述VLIW包的第二指令以在所述第一时间周期之后的第二时间周期期间在所述第一执行路径处被执行。
4.根据权利要求3所述的VLIW处理器,其中所述第一执行路径经配置以在所述物理寄存器的第一寄存器中存储所述第一指令的执行的第一可提交结果,并且其中所述寄存器重命名电路进一步经配置以响应于所述第二指令的执行引起第二可提交结果指示所述第一寄存器是架构寄存器。
5.根据权利要求1所述的VLIW处理器,其进一步包括单个指令执行路径并且其中所述第二数目是一。
6.根据权利要求1所述的VLIW处理器,其中所述寄存器重命名电路进一步经配置以按原子方式提交执行所述指令的所述结果,方法是更新一或多个硬件间接指针以指示存储执行所述指令的所述结果的特定寄存器是架构寄存器。
7.根据权利要求6所述的VLIW处理器,其进一步包括经配置以用多个子指令代替所述VLIW包的指令的解码器,并且其中所述寄存器重命名电路进一步经配置以在所述多个子指令的执行之后更新所述一或多个硬件间接指针。
8.一种方法,其包括:
在包含第二数目的指令执行路径的处理器处接收包含将以原子方式在所述处理器处提交的第一数目的指令的包,所述第一数目大于所述第二数目;
在第一时间周期期间执行所述包的第一指令;
将执行所述第一指令的结果写入到第一寄存器;以及
在所述第一时间周期之后的第二时间周期期间执行所述包的第二指令之后,指示所述第一寄存器是指令集定义的寄存器。
9.根据权利要求8所述的方法,其中指示所述第一寄存器是指令集定义的寄存器包含更新硬件间接指针。
10.根据权利要求9所述的方法,其中更新所述硬件间接指针被执行为间接表更新操作的部分,所述间接表更新操作是响应于确定所述指令中的每一个的执行已经产生可提交结果执行的,并且其中所述间接表更新操作包含更新多个硬件间接指针以指示存储所述可提交结果的寄存器是指令集定义的寄存器。
11.根据权利要求8所述的方法,其进一步包括:
用多个子指令代替所述包的指令;以及
在指示所述第一寄存器是指令集定义的寄存器之前执行所述多个子指令中的每一个。
12.根据权利要求8所述的方法,其进一步包括:
在接收所述包之后接收第二包,所述第二包包含将以原子方式在所述处理器处提交的指令的群组,所述指令的群组包含第三指令;以及
在所述第二时间周期之前的第三时间周期期间执行所述第三指令。
13.根据权利要求8所述的方法,其中执行所述包的所述指令中的每一个的结果存储在特定物理寄存器中,并且其中所述结果以原子方式提交,方法是更新一或多个硬件间接指针以指示所述特定物理寄存器是架构寄存器。
14.一种设备,其包括:
用于存储指令执行结果的装置;
用于将VLIW包的指令分配到第二数目的用于执行指令的装置的装置,所述第二数目小于所述VLIW包中所述指令的第一数目;以及
用于重命名所述用于存储的装置的装置。
15.根据权利要求14所述的设备,其中所述用于分配的装置经配置以调度所述VLIW包的第一指令以用于在第一时间周期期间执行并且调度所述VLIW包的第二指令以用于在所述第一时间周期之后的第二时间周期期间执行。
16.根据权利要求14所述的设备,其中所述用于重命名的装置进一步经配置以按原子方式提交执行所述指令的结果,方法是更新用于指示的一或多个装置以指示存储执行所述指令的结果的用于存储的特定装置是用于存储的架构装置。
17.根据权利要求16所述的设备,其进一步包括用于用多个子指令代替所述VLIW包的指令的装置,并且其中所述用于重命名的装置进一步经配置以更新所述用于指示的一或多个装置以指示所述用于存储的特定装置是用于在所述多个子指令的执行之后所述用于存储的架构装置。
18.一种非暂时性计算机可读媒体,其包括至少一个指令,所述至少一个指令在由处理器执行时使得所述处理器执行包括以下各项的操作:
接收包含将以原子方式在所述处理器处提交的第一数目的指令的包,所述第一数目大于所述处理器的指令执行路径的第二数目;
在第一时间周期期间执行所述包的第一指令;
将执行所述第一指令的结果写入到第一寄存器;以及
在所述第一时间周期之后的第二时间周期期间执行所述包的第二指令之后,指示所述第一寄存器是指令集定义的寄存器。
19.根据权利要求18所述的非暂时性计算机可读媒体,其中指示所述第一寄存器是指令集定义的寄存器包含响应于确定所述包的所述指令中的每一个的执行已经产生可提交结果执行间接表更新操作,并且其中所述间接表更新操作包含更新多个硬件间接指针以指示存储所述可提交结果的寄存器是指令集定义的寄存器。
20.根据权利要求18所述的非暂时性计算机可读媒体,所述操作其进一步包括:
用多个子指令代替所述包的指令;以及
在指示所述第一寄存器是指令集定义的寄存器之前执行所述多个子指令中的每一个。
CN201880070368.1A 2017-11-07 2018-11-07 使用宽度减小vliw处理器的vliw指令处理的系统和方法 Active CN111295641B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/805,935 US10719325B2 (en) 2017-11-07 2017-11-07 System and method of VLIW instruction processing using reduced-width VLIW processor
US15/805,935 2017-11-07
PCT/US2018/059658 WO2019094492A1 (en) 2017-11-07 2018-11-07 System and method of vliw instruction processing using reduced-width vliw processor

Publications (2)

Publication Number Publication Date
CN111295641A true CN111295641A (zh) 2020-06-16
CN111295641B CN111295641B (zh) 2024-05-31

Family

ID=64557140

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880070368.1A Active CN111295641B (zh) 2017-11-07 2018-11-07 使用宽度减小vliw处理器的vliw指令处理的系统和方法

Country Status (4)

Country Link
US (2) US10719325B2 (zh)
EP (1) EP3707598A1 (zh)
CN (1) CN111295641B (zh)
WO (1) WO2019094492A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719325B2 (en) 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor
US12067395B2 (en) 2021-08-12 2024-08-20 Tenstorrent Inc. Pre-staged instruction registers for variable length instruction set machine
US11599358B1 (en) 2021-08-12 2023-03-07 Tenstorrent Inc. Pre-staged instruction registers for variable length instruction set machine

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096343B1 (en) * 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
CN101702118A (zh) * 2009-11-12 2010-05-05 中国人民解放军国防科学技术大学 非完全锁步的vliw处理器流水线控制方法
CN102004719A (zh) * 2010-11-16 2011-04-06 清华大学 支持同时多线程的超长指令字处理器结构
CN102662635A (zh) * 2012-03-21 2012-09-12 清华大学 超长指令字变长指令实现方法及实现该方法的处理器
US20150277916A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356918B1 (en) * 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US5996063A (en) 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
US6263416B1 (en) 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6237076B1 (en) * 1998-08-19 2001-05-22 International Business Machines Corporation Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction
US6405305B1 (en) * 1999-09-10 2002-06-11 Advanced Micro Devices, Inc. Rapid execution of floating point load control word instructions
US6889316B2 (en) 2001-03-28 2005-05-03 Intel Corporation Method and apparatus for restoring registers after cancelling a multi-cycle instruction
US20040268098A1 (en) * 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
JP2005032018A (ja) * 2003-07-04 2005-02-03 Semiconductor Energy Lab Co Ltd 遺伝的アルゴリズムを用いたマイクロプロセッサ
US7587585B1 (en) * 2005-10-26 2009-09-08 Sun Microsystems, Inc. Flag management in processors enabled for speculative execution of micro-operation traces
US20070083736A1 (en) * 2005-10-06 2007-04-12 Aravindh Baktha Instruction packer for digital signal processor
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US9946550B2 (en) * 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
US7818552B2 (en) * 2007-12-20 2010-10-19 The United States Of America As Represented By The Secretary Of The Army Operation, compare, branch VLIW processor
US9678754B2 (en) * 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9405542B1 (en) 2012-04-05 2016-08-02 Marvell International Ltd. Method and apparatus for updating a speculative rename table in a microprocessor
US20140281368A1 (en) * 2013-03-14 2014-09-18 Qualcomm Incorporated Cycle sliced vectors and slot execution on a shared datapath
US9569212B2 (en) 2014-03-28 2017-02-14 Intel Corporation Instruction and logic for a memory ordering buffer
US9710272B2 (en) 2014-04-25 2017-07-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Computer processor with generation renaming
US9715392B2 (en) 2014-08-29 2017-07-25 Qualcomm Incorporated Multiple clustered very long instruction word processing core
US20160335092A1 (en) 2015-02-17 2016-11-17 Bruce Ledley Jacob Using Very Long Instruction Word VLIW Cores In Many-Core Architectures
US9928066B2 (en) 2015-06-25 2018-03-27 Intel Corporation Instruction and logic for encoded word instruction compression
US11429393B2 (en) * 2015-11-11 2022-08-30 Arm Limited Apparatus and method for supporting out-of-order program execution of instructions
US10719325B2 (en) 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096343B1 (en) * 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
CN101702118A (zh) * 2009-11-12 2010-05-05 中国人民解放军国防科学技术大学 非完全锁步的vliw处理器流水线控制方法
CN102004719A (zh) * 2010-11-16 2011-04-06 清华大学 支持同时多线程的超长指令字处理器结构
CN102662635A (zh) * 2012-03-21 2012-09-12 清华大学 超长指令字变长指令实现方法及实现该方法的处理器
US20150277916A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline

Also Published As

Publication number Publication date
US11663011B2 (en) 2023-05-30
US20190138311A1 (en) 2019-05-09
US10719325B2 (en) 2020-07-21
CN111295641B (zh) 2024-05-31
EP3707598A1 (en) 2020-09-16
US20200364051A1 (en) 2020-11-19
WO2019094492A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
KR102074961B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
CN107871301B (zh) 在gpu中的任务调度
US9250901B2 (en) Execution context swap between heterogeneous functional hardware units
JP5758515B2 (ja) バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法
JP6306729B2 (ja) ストアをソート及びリタイアする命令及びロジック
US11663011B2 (en) System and method of VLIW instruction processing using reduced-width VLIW processor
CN109564546B (zh) 通过绕过加载存储单元来跟踪存储和加载
JP2014526758A (ja) ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
US20140047218A1 (en) Multi-stage register renaming using dependency removal
US9329865B2 (en) Context control and parameter passing within microcode based instruction routines
KR20160031503A (ko) 마이크로프로세서에서의 선택적 리네이밍을 위한 방법 및 장치
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
TW201729076A (zh) 用於合成與排列操作序列之指令及邏輯
US20090177868A1 (en) Apparatus, system, and method for discontiguous multiple issue of instructions
EP3391193A1 (en) Instruction and logic for permute with out of order loading
US20130339689A1 (en) Later stage read port reduction
KR20230043702A (ko) 셀룰러 모뎀에서 데이터 프로세싱을 동기화하기 위한 시스템들 및 방법들
GB2560059A (en) Scheduling tasks
WO2017222798A1 (en) Method and apparatus for performing simd gather and copy operations
TW201729080A (zh) 用於排列序列之指令及邏輯
EP2691850B1 (en) Integrated circuit device and methods of performing bit manipulation therefor
JP2017513094A (ja) 複数のストランドからの命令をディスパッチするためのプロセッサロジックおよび方法
US9959122B2 (en) Single cycle instruction pipeline scheduling
US10514925B1 (en) Load speculation recovery

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
TG01 Patent term adjustment
TG01 Patent term adjustment