CN102822794A - 处理阶层式极长指令包的系统和方法 - Google Patents

处理阶层式极长指令包的系统和方法 Download PDF

Info

Publication number
CN102822794A
CN102822794A CN2011800160876A CN201180016087A CN102822794A CN 102822794 A CN102822794 A CN 102822794A CN 2011800160876 A CN2011800160876 A CN 2011800160876A CN 201180016087 A CN201180016087 A CN 201180016087A CN 102822794 A CN102822794 A CN 102822794A
Authority
CN
China
Prior art keywords
instruction
instructions
sub
bag
performance element
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
CN2011800160876A
Other languages
English (en)
Other versions
CN102822794B (zh
Inventor
卢西恩·科德雷斯库
埃里克·詹姆斯·普隆迪克
阿贾伊·阿南特·英格尔
苏雷什·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 CN102822794A publication Critical patent/CN102822794A/zh
Application granted granted Critical
Publication of CN102822794B publication Critical patent/CN102822794B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions

Landscapes

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

Abstract

本发明揭示一种处理阶层式极长指令字VLIW包的系统及方法。在一特定实施例中,揭示一种处理指令的方法。所述方法包括接收阶层式VLIW指令包,及对来自所述包的指令进行解码以确定所述指令是否为单一指令或所述指令是否包括包含多个子指令的子包。所述方法还包括响应于确定所述指令包括所述子包,执行所述子指令中的每一者。

Description

处理阶层式极长指令包的系统和方法
技术领域
本发明大体上涉及对阶层式极长指令字进行编码。
背景技术
技术的进步已导致更小且更强大的计算装置。举例来说,当前存在各种各样的便携式个人计算装置,包括无线计算装置,例如,小巧、轻便且易于由用户携带的便携式无线电话、个人数字助理(PDA)及寻呼装置。更具体来说,例如蜂窝式电话及因特网协议(IP)电话等便携式无线电话可经由无线网络传送语音及数据包。另外,许多这些无线电话包括并入于其中的其它类型的装置。举例来说,无线电话也可包括数字静态相机、数字摄像机、数字记录器及音频文件播放器。又,这些无线电话可处理可执行指令,包括软件应用程序,例如,网页浏览器应用程序,其可用以接入因特网。因此,这些无线电话可包括显著的计算能力。
为了加速计算且减小程序大小及减少随之的程序存储需求,更有效地包装指令将为有帮助的。通过更有效地包装指令,可减小指令高速缓冲存储器大小,或同样的指令高速缓冲存储器大小可保持更多指令。
发明内容
在一特定实施例中,揭示一种处理指令的方法。所述方法包括接收指令包。所述包包括至少一个指令,所述至少一个指令可经解码以确定所述指令是否为单一指令或所述指令是否包括包含多个子指令的子包。所述方法还包括响应于确定所述指令包括所述子包,执行所述子指令中的每一者。
在另一特定实施例中,处理指令的方法包括接收指令包,其中所述包包括具有第一剖析值的第一指令及具有第二剖析值的第二指令。所述方法包括将所述第一指令路由到第一执行单元,及将所述第二指令识别为包括第一子指令及第二子指令的子包指令。所述方法还包括将所述第一子指令路由到第二执行单元。
在另一特定实施例中,揭示一种处理器。所述处理器包括用以接收指令包的解码器。所述解码器操作以对在所述包内的指令进行解码以确定所述指令是否为包括第一子指令及第二子指令的第一子包指令。所述处理器还包括用以执行所述指令或执行所述第一子指令的执行单元。
由所揭示的实施例中的至少一者提供的一个特定优点为可减小指令高速缓冲存储器大小,这是因为指令是较密集地包装在一起。指令的有率的包装的优点是将更多指令存储于同样量的高速缓冲存储器中的能力。由所揭示的实施例中的至少一者提供的另一优点是从存储器提取代码所需要的能量的减少,这是因为每一包包括较高的指令密度,从而导致检索指令以执行程序的调用的总数的减少。
在审阅整个申请案之后,本发明的其它方面、优点及特征将变得显而易见,整个申请案包括以下部分:附图说明、具体实施方式及权利要求书。
附图说明
图1为进入管线式处理器的极长指令字(VLIW)包的一特定说明性实施例的框图;
图2为包括子包指令的VLIW包的一特定说明性实施例的框图;
图3为处理包括子包指令的VLIW包的管线式处理器的一特定说明性实施例的框图;
图4为正处理包括子包指令的VLIW包的管线式处理器的另一特定说明性实施例的框图;
图5为正处理包括子包指令的VLIW包的管线式处理器的另一特定说明性实施例的框图;
图6为正处理包括子包指令的VLIW包的管线式处理单元的另一特定说明性实施例的框图;
图7为处理包括子包指令的VLIW包的方法的一特定说明性实施例的流程图;
图8为处理包括子包指令的VLIW包的方法的另一特定说明性实施例的流程图;及
图9为包括数字信号处理器以处理包括子指令的VLIW包的无线装置的框图。
具体实施方式
参看图1,揭示极长指令字(VLIW)包的特定说明性实施例。VLIW包102包括N个指令,其包括第一指令110、第二指令112及多达第N个指令114的额外指令。在管线式处理器100的提取级102处,VLIW包102最初是从存储装置(未图示)提取且进入管线式处理器100的解码级104。
在解码级104处,将指令114识别为包括子指令116及118的子包指令。从解码级104,VLIW包102中的多个N个指令前进到执行级106。执行级106包括M个执行单元,其包括执行单元120、122、124及126。在一特定说明性实施例中,M可超过N。在另一特定说明性实施例中,M可小于N。在另一特定说明性实施例中,M可等于N。
在执行级106处,第一指令104进入执行单元120。第二指令112进入执行单元122。第一子指令116进入执行单元124,且第二子指令118进入执行单元126。在一特定说明性实施例中,VLIW包102中的其它指令中的每一者可进入在执行级106处的对应的执行单元。
在一特定说明性实施例中,VLIW包108中的指令中的一者或一者以上是包括两个或两个以上子指令的子包指令。包括一个或一个以上子指令包的VLIW包被称作阶层式VLIW。在图1中展示的说明性实施例中,子指令116及118中的每一者进入不同执行单元,且子指令116与118是同时执行的。或者,可将子指令116及118中的每一者路由到执行子指令116及118两者的单一执行单元。
在一特定说明性实施例中,VLIW包包括多个子包指令,且每一子包指令包括两个或两个以上子指令。在一特定说明性实施例中,子包指令可经解码以识别指令的子子包(sub-sub-packet)(未图示),其中子子包包括被称作子子指令的多个指令。在另一特定说明性实施例中,VLIW包的每一指令包含一包括一个或一个以上嵌套指令的极长指令字,所述一个或一个以上嵌套指令中的至少一者为包括两个或两个以上子指令的子包指令。
在执行级106处存在M个执行单元。当数目M足够大以容纳包括指令110、112及子指令116及118的VLIW包的每一指令时,M大于N且可同时执行VLIW包108的所有指令。同时处理VLIW包108中的所有指令的优点是与依序处理VLIW包108中所包括的指令中的一些指令相比更快地进行处理。
参看图2,VLIW包的一特定说明性实施例经揭示且整体标明为200。VLIW包200包括指令202、204、206及208。指令202、204、206及208中的每一者通常包括固定数目个位。举例来说,指令202、204、206及208中的每一者可含有32个位。所述指令中的每一者可包括一剖析字段。在一特定说明性实施例中,剖析字段包括两个位。在一特定说明性实施例中,将第一剖析值存储在第一指令的两个邻近内部位处,且将第二剖析值存储在第二指令的两个邻近内部位处。举例来说,将剖析值01存储在指令206的两个邻近内部位处,且将剖析值00存储在指令208的两个邻近内部位处。在一特定说明性实施例中,剖析字段位于对应的指令的最中心位处。作为剖析字段的一实例,指令202包括具有存储值10的剖析字段210,指令204包括具有存储值01的剖析字段212,指令206包括具有存储值01的剖析字段214,且指令208包括具有存储值00的剖析字段216。
剖析字段可为指令是否为包结尾(end-of-packet)指令的指示符。在一特定实例中,剖析字段10指示所述包并非包结尾,且也指示所述包处于硬件回路的结尾。在一特定说明性实例中,具有值01的剖析字段指示并非包结尾的指令。在一特定说明性实例中,具有值11的剖析字段指示包结尾指令。在一特定实施例中,具有具值00的剖析字段的指令也指示包结尾指令。具有具值00的剖析字段的指令也指示所述指令为子包指令。子包指令为包括两个或两个以上子指令的指令。
举例来说,指令208包括具有值00的剖析字段216。因此,指令208为子包指令且也为包结尾指令。查看指令208的详图(图2的下部部分),第一子指令218及第二子指令220包括于指令208内。第一子指令218包括标为A的数据,且第二子指令220包括标为B的数据。
除了子指令218及220外,指令208还包括第一指令类别字段222及第二指令类别字段224。指令类别字段222及224可指示指令的类型,例如,加载、存储、算术等。指令类别字段222及224的内容可用于管线式处理器的解码级处。
在一特定说明性实施例中,指令208包括32个位,每一子指令218及220包括13个位,剖析字段216包括2个位,第一指令类别字段222包括3个位,且第二指令类别字段224包括1个位。
在一特定说明性实施例中,在管线式处理器的执行级处同时执行子指令218及220。在另一特定说明性实施例中,在管线式处理器的执行级处连续执行子指令218及220。
参看图3,管线式处理器的一特定说明性实施例经揭示且整体标明为300。管线式处理器300包括多个级。图3展示三个级:提取级302、解码级304及执行级306。在替代实施例中,管线式处理器300可包括例如回写级等其它级。在一特定说明性实例中,在提取级302处提取指令包308。在解码级304处对指令包308进行解码,其后,将指令包308中所包括的多个指令发送到执行级306,在执行级306处执行所述指令中的每一者。
在一特定说明性实例中,指令包308包括指令202、204、206及208。在一特定说明性实施例中,从与处理器300相关联的紧密耦合存储器(未图示)检索指令包308。在另一特定说明性实施例中,从与处理器300相关联的指令高速缓冲存储器(未图示)检索指令包。在一特定说明性实施例中,指令包308的指令202、204、206及208中的每一者具有相同大小(即,包括相同数目个位)。在一特定说明性实施例中,指令202、204、206及208中的每一者具有32个位的大小。
在一特定说明性实施例中,指令包308为极长指令字(VLIW)包。VLIW包308中的指令中的一者(例如,指令208)为包括第一子指令218及第二子指令220的子包指令。指令202、204、206及208中的每一者包括一剖析字段。指令202包括剖析字段210,在图3中展示的实例中,所述剖析字段210具有值10,其表明指令202并非包结尾指令且指令202为硬件回路结尾指令。指令204及206具有对应的剖析字段212及214,其中的每一者具有值01,表明对应的指令并非包结尾指令。指令208为子包指令,且包括具有值00的剖析字段216,所述值表明指令208为子包指令且也表明指令208为包结尾指令。在一特定说明性实施例中,指令208包括两个子指令218及220,其中的每一者具有比指令316小(即,包括较小数目个位)的大小。
在解码级304处,将VLIW指令包308解码成指令202、204、206及子指令218及220。可评估每一指令以确定所述指令是可执行指令还是包括多个子指令的子包指令。举例来说,可将剖析字段220的内容与指示子包指令的定义值进行比较。并未指示为子包指令的指令可立即路由到执行级。经确定为子包指令的指令可经解码成其组成子指令(例如,子包指令218及220)。在一些实施例中,接着并行地将子指令路由到执行级306。可在单一执行单元中或在多个执行单元中并行地执行子指令。在其它实施例中,连续路由所述子指令。执行级306可经配置以基于可用的处理器资源而确定是连续还是并行地执行子指令。
移到执行级306,在一特定说明性实例中,离开解码级的指令中的每一者进入对应的执行单元。指令202进入执行单元330,指令204进入执行单元332,指令206进入执行单元334,子指令218进入执行单元336,且子指令220进入执行单元338。在一特定说明性实施例中,同时执行所有指令202、204、206、218及220。在图3的说明性实施例中,执行单元334、336及338执行例如加载及存储指令等与数据高速缓冲存储器有关的指令,而执行单元330及332为算术执行单元,例如,算术逻辑单元(ALU)。在执行后,每一执行单元的输出在回写级(未图示)期间继续进行以提供结果。
在一特定实施例中,可并行地执行VLIW包中的所有指令。举例来说,所有指令可由处理器300并行地执行,否则,将出现故障。在另一特定实施例中,当处理器300不具有足够的资源来并行地执行指令202、204、206及子指令218及220时,可在已执行了VLIW包中的其它指令之后执行子指令(例如,218或220)。
在一特定实施例中,指令在VLIW包内的位置确定哪一执行单元将接收指令。举例来说,在图3中,指令202为VLIW包308的第一指令且被路由到执行单元330,第二指令204被路由到执行单元332,且第三指令206被路由到执行单元334。
VLIW包可因此向处理器指示并行地处理哪些指令及每一指令将被路由到哪一执行单元。在这些实施例中,可不准许处理器在多个循环内处理在单一包内的指令或将指令路由到与由指令在VLIW包中的位置指示的执行单元不同的执行单元。
因为在包括子指令的VLIW包中包装的指令的总数可大于在无子指令的VLIW包中包装的指令的总数,所以可减少为了获得程序指令而对存储器进行提取的总数,计算时间效率随之增加。由于每一提取具有能量成本,因此提取的总数的减少可导致与执行程序相关联的功率消耗的减少。
参看图4,管线式处理器的一特定说明性实施例经揭示且整体标明为400。管线式处理器400包括提取级402、解码级404及执行级406。管线的额外级(包括回写级)未图示。在提取级402处,从例如指令高速缓冲存储器或其它存储器等存储器提取极长指令字(VLIW)指令408。VLIW指令408包括四个指令202、204、206及208。指令202包括具有值10的剖析字段210,指令204包括具有值01的剖析字段212,指令206包括具有值01的剖析字段214,且指令208包括具有值00的剖析字段216。剖析字段210、212及214具有指示其对应的指令并非包结尾指令的值。具有值00的剖析字段216指示指令208为子包指令且指令208为包结尾指令。指令208包括第一子指令218及第二子指令220。第一子指令218包括由A指示的数据,且第二子指令220包括由B指示的数据。
前进到解码级404,将VLIW包408分离成指令202、204、206及两个子指令218及220中的每一者。前进到执行级406,存在四个执行单元:430、432、434及436。在一特定说明性实施例中,执行单元430及432执行算术指令(用字母X标明),且执行单元434及432为数据加载及存储执行单元(用字母D标明)。在一特定说明性实例中,在执行单元430中执行指令202,在执行单元432中执行指令204,在执行单元434中执行指令206,及在执行单元436中执行第一子指令218。可同时执行指令202、204、206及第一子指令218。在于执行单元436中执行第一子指令218之后,在后一个时钟循环期间在执行单元436中执行第二子指令220。因此,在图4中描绘的实例中,在执行单元436中连续地执行子指令218及220。在另一特定说明性实例(图4中未展示)中,执行单元436经配置以实现两个子指令218及220的同时执行。在此配置中,可同时执行指令202、204、206、218及220。
在图5中说明的又一特定说明性实例中,并非剖析字段(即,不在210、212、214或216内)的指示符字段502可充当一特定指令为子包指令的指示符。举例来说,指令204可包括指示符字段502,所述指示符字段502当经设定时指示指令204为包括第一子指令C 504及第二子指令D 506的子包指令。或者,VLIW包408中的每一指令可包括一子包指示符字段。可在解码级404处对子包指令204进行解码,且接着可执行子指令504及506。在图5中展示的一特定说明性实例中,处理器500包括执行单元532,其经配置以同时执行两个子指令,从而使子指令504及506能够与指令202、206及子指令218同时执行。在另一特定说明性实例(图4或图5中未展示)中,执行单元432及436中的每一者经配置以同时执行两个子指令,从而使子指令218及220及子指令504及506能够与指令202及206同时执行。
参看图6,管线式处理器的一特定说明性实施例经揭示且整体标明为600。管线式处理器600包括控制单元606及执行单元608、610、612及614。控制单元606包括解码器616及通用寄存器堆620。
在操作中,检索一指令包(例如,包括多个指令的VLIW包)且经由总线634将其供应到控制单元。解码器616可操作以对指令包内的多个指令进行解码。在解码器616处将VLIW包解封装成个别指令。VLIW包包括多个指令,其包括指令202、指令204及包括子指令218及子指令220的子包指令。在一特定说明性实施例中,子指令218及220为每一者在大小上比包装在VLIW包中的子包指令小(即,包括较少位)的指令。
在于解码器616处对VLIW包进行解码之后,将经解码的指令发送到执行级。指令202、204、218及220中的每一者进入对应的执行单元。如图6中所示,在指令单元614处执行指令202,在指令单元612处执行指令204,在执行单元610处执行子指令218,及在指令单元608处执行子指令220。因此,在图6中展示的实例中,同时执行指令202、204、218及220。在执行后,将执行单元608、610、612及614中的每一者的输出写入到通用寄存器堆620。也可经由总线634将执行单元608、610、612及614的输出发送到存储存储器。
参看图7,路由指令的方法的一特定说明性实施例经展示且整体标明为700。在710处,接收包括具有第一剖析值的第一指令及具有第二剖析值的第二指令的指令包。举例来说,在图3中,指令206具有一具有第一剖析值01的剖析字段214,且指令208具有一具有第二剖析值00的剖析字段216。在一特定说明性实施例中,所述指令包为VLIW包。举例来说,在图3中,包308为VLIW包。在720处,将第一指令路由到第一执行单元。举例来说,在图3中,将指令206路由到执行单元334。前进到730,将第二指令识别为包括第一子指令及第二子指令的子包指令。举例来说,在图3中,指令208由剖析字段216中的第二剖析值00识别为子包指令。指令208包括第一子指令218及第二子指令220。前进到740,将第一子指令路由到第二指令单元。举例来说,在图3中,将第一子指令218路由到指令单元336。前进到750,可将第二子指令路由到第三执行单元。举例来说,在图3中,将第二子指令220路由到指令单元338。任选地,在760处,同时执行第一子指令、第二子指令及第一指令。举例来说,在图3中,同时执行指令206及子指令218及220。方法在770处结束。在其它实施例中,可将第二子指令路由到第二指令单元以与第一子指令连续地执行。
参看图8,执行指令的方法的一特定说明性实施例经揭示且整体标明为800。在810处,接收包括第一指令的指令包。举例来说,在图3中,包308包括指令208。在820处,对第一指令进行解码。在830处,进行关于第一指令是否为子包指令的确定。当确定第一指令为包括多个子指令的第一子包指令时,方法前进到框840。举例来说,在图3中,指令208为包括第一子指令218及第二子指令220的子包指令。第一指令包括将第一指令识别为子包指令且指示第一指令的包结尾状态的剖析指示符。(包内的指令中的任一者可在解码期间经由其剖析指示符的值而经识别为子包指令或经由识别子包指令的替代方法来识别。)举例来说,在图3中,指令208包括具有值00的剖析指示符216,所述值将指令208识别为子包指令且指示指令208为包结尾指令。在框840处,执行多个子指令中的每一者。举例来说,在图3中,执行第一子指令218及第二子指令220。在一特定说明性实施例中,同时执行多个子指令中的全部。举例来说,在图3中,同时执行第一子指令218及第二子指令220。返回到决策框830,当第一指令不是子包指令时,在850处,执行第一指令。举例来说,在图3中,在解码级304处,确定指令206不是子包指令,且指令206从解码级304前进到执行其的执行级306。方法在860处结束。
参看图9,包括数字信号处理器以处理包括子指令的VLIW包的无线装置的一特定说明性实施例的框图经描绘且整体标明为900。装置900包括处理器(例如,数字信号处理器(DSP)910),以处理VLIW包964中的多个指令。VLIW包964包括指令966、968、970及972。VLIW包964为阶层式指令包,其包括多个子包指令。VLIW包964包括按阶层的三个等级的指令。每一子包指令包括多个子指令。举例来说,指令972为包括子指令974及976的子包指令(所述阶层的第二等级)。子指令974为包括子子指令978及980的子子包指令(所述阶层的第三等级),且子指令976为包括子子指令982及984的子子包指令(所述阶层的第三等级)。
在DSP 910的解码级处,将VLIW包964解码成指令966、968、970及972。子包指令972被解码成子指令974及976。子指令974被解码成子子指令978及980,且子指令976被解码成子子指令982及984。在一说明性实例中,DSP 910根据图3到5中的一者或一者以上及根据图6及7的方法中的一者或一者以上或其任何组合来处理指令966、968、970、978、980、982及984。
图9还展示显示器控制器926,其耦合到数字信号处理器910及显示器928。编码器/解码器(CODEC)934也可耦合到数字信号处理器910。扬声器936及麦克风938可耦合到CODEC 934。
图9还指示无线控制器940可耦合到数字信号处理器910及无线天线942。在一特定实施例中,DSP 910、显示器控制器926、存储器932、CODEC 934及无线控制器940包括于系统级封装或芯片上系统装置922中。在一特定实施例中,输入装置930及电源944耦合到芯片上系统装置922。此外,在一特定实施例中,如图9中所说明,显示器928、输入装置930、扬声器936、麦克风938、无线天线942及电源944在芯片上系统装置922外部。然而,显示器928、输入装置930、扬声器936、麦克风938、无线天线942及电源944中的每一者可耦合到芯片上系统装置922的组件,例如,接口或控制器。
所属领域的技术人员将进一步了解,结合本文所揭示的实施例所描述的各种说明性逻辑块、配置、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清晰地说明硬件与软件的此可互换性,各种说明性组件、块、配置、模块、电路及步骤已在上文大体按其功能性加以描述。将此功能性实施为硬件还是软件视特定应用及强加于整个系统上的设计约束而定。所属领域的技术人员可针对每一特定应用以变化的方式实施所描述的功能性,但这些实施决策不应被解释为会造成脱离本发明的范围。
结合本文中所揭示的实施例所描述的方法或算法的步骤可直接以硬件、由处理器执行的软件模块或两者的组合来体现。软件模块可驻留于随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸式盘、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息及将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器及存储媒体可驻留于专用集成电路(ASIC)中。ASIC可驻留于计算装置或用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻留于计算装置或用户终端中。
提供所揭示的实施例的先前描述,以使任何所属领域的技术人员能够制作或使用所揭示的实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将易于显而易见,且在不脱离本发明的范围的情况下,本文中界定的原理可适用于其它实施例。因此,本发明并不既定限于本文中所展示的实施例,而应被赋予与如由所附权利要求书界定的原理及新颖特征相一致的最广泛的可能范围。

Claims (25)

1.一种处理指令的方法,所述方法包含:
接收指令包,其中所述包包括指令;
对所述指令进行解码以确定所述指令是否为单一指令或所述指令是否包括包含多个子指令的子包;及
响应于确定所述指令包括所述子包,执行所述子指令中的每一者。
2.根据权利要求1所述的方法,其中所述指令包包括多个子包。
3.根据权利要求1所述的方法,其进一步包含对所述多个子指令的第一子包进行解码以识别第一指令子子包。
4.根据权利要求1所述的方法,其中所述解码由可操作以对所述指令包中的多个指令进行解码的解码器执行。
5.根据权利要求1所述的方法,其中所述指令包括将所述指令识别为所述子包的剖析指示符。
6.根据权利要求1所述的方法,其中所述指令包括用以识别指令的类型的指令类别字段。
7.根据权利要求1所述的方法,其中所述包为极长指令字VLIW包。
8.根据权利要求1所述的方法,其中所述包包括多个指令。
9.根据权利要求1所述的方法,其中所述多个子指令中的每一者是在第一执行单元处执行。
10.根据权利要求1所述的方法,其中所述多个子指令中的第一者是在第一执行单元处执行,且所述多个子指令中的第二者是在第二执行单元处执行。
11.根据权利要求10所述的方法,其中同时执行所述子指令中的所述第一者与所述子指令中的所述第二者。
12.根据权利要求1所述的方法,其中所述包的每一指令包含极长指令字VLIW指令。
13.一种处理指令的方法,所述方法包含:
接收指令包,其中所述包包括具有第一剖析值的第一指令及具有第二剖析值的第二指令;
将所述第一指令路由到第一执行单元;
将所述第二指令识别为包括第一子指令及第二子指令的子包指令;及
将所述第一子指令路由到第二执行单元。
14.根据权利要求13所述的方法,其中每一剖析值识别对应指令处于所述包的结尾处、处于硬件回路的结尾处或不在所述包的结尾处。
15.根据权利要求13所述的方法,其中所述第二剖析值将所述第二指令识别为所述子包指令。
16.根据权利要求13所述的方法,其中所述执行单元中的每一者包括算术执行单元或加载/存储数据单元。
17.根据权利要求13所述的方法,其进一步包含同时执行所述第一子指令与所述第二子指令。
18.根据权利要求13所述的方法,其进一步包含将所述第二子指令路由到第三执行单元。
19.一种处理器,其包含:
解码器,其用以接收指令包,其中所述包包括指令,所述解码器操作以对所述指令进行解码以确定所述指令是否为包括第一子指令及第二子指令的第一子包指令;
执行单元,其用以执行所述指令或执行所述第一子指令。
20.根据权利要求19所述的处理器,其进一步包含第二执行单元,所述第二执行单元用以执行所述第二子指令。
21.根据权利要求19所述的处理器,其中所述包进一步包含第二指令,所述处理器进一步包含第三执行单元,所述第三执行单元用以执行所述第二指令。
22.根据权利要求19所述的处理器,其中所述包包括多个指令,其中所述多个指令中的每一指令具有相同大小。
23.根据权利要求22所述的处理器,其中与所述第一子指令及所述第二子指令中的每一者相关联的大小小于与所述指令相关联的所述大小。
24.根据权利要求19所述的处理器,其中所述指令包括第一剖析指示符,所述第一剖析指示符具有与包结尾状态相关联的第一剖析值,所述第一剖析值也指示所述第一指令包括所述第一子指令及所述第二子指令。
25.根据权利要求19所述的处理器,其中与所述第一子指令及所述第二子指令中的每一者相关联的大小小于与所述指令相关联的大小。
CN201180016087.6A 2010-03-03 2011-03-02 处理阶层式极长指令包的系统和方法 Active CN102822794B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/716,359 US9678754B2 (en) 2010-03-03 2010-03-03 System and method of processing hierarchical very long instruction packets
US12/716,359 2010-03-03
PCT/US2011/026815 WO2011109476A1 (en) 2010-03-03 2011-03-02 System and method of processing hierarchical very long instruction packets

Publications (2)

Publication Number Publication Date
CN102822794A true CN102822794A (zh) 2012-12-12
CN102822794B CN102822794B (zh) 2016-08-03

Family

ID=43827510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180016087.6A Active CN102822794B (zh) 2010-03-03 2011-03-02 处理阶层式极长指令包的系统和方法

Country Status (7)

Country Link
US (1) US9678754B2 (zh)
EP (1) EP2542963B1 (zh)
JP (2) JP2013521577A (zh)
KR (1) KR101449732B1 (zh)
CN (1) CN102822794B (zh)
TW (1) TW201203104A (zh)
WO (1) WO2011109476A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620957B2 (en) 2015-10-22 2020-04-14 Texas Instruments Incorporated Method for forming constant extensions in the same execute packet in a VLIW processor
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor
CN110381051A (zh) * 2019-07-12 2019-10-25 苏州浪潮智能科技有限公司 一种报文解析的方法、系统、设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
WO2000022515A1 (en) * 1998-10-14 2000-04-20 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid vliw-simd programming model
US20060259740A1 (en) * 2005-05-13 2006-11-16 Hahn Todd T Software Source Transfer Selects Instruction Word Sizes
CN101176059A (zh) * 2005-03-23 2008-05-07 高通股份有限公司 用于对具有可变指令大小的可变长度分组进行编码的方法及系统
CN101438235A (zh) * 2006-05-10 2009-05-20 高通股份有限公司 将硬件结束循环信息编码到指令上

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2835103B2 (ja) 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP2806359B2 (ja) 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
US8583895B2 (en) 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US5890009A (en) 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
JP3578883B2 (ja) 1997-01-31 2004-10-20 三菱電機株式会社 データ処理装置
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6101592A (en) 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US6366999B1 (en) 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6356950B1 (en) 1999-01-11 2002-03-12 Novilit, Inc. Method for encoding and decoding data according to a protocol specification
US6385757B1 (en) 1999-08-20 2002-05-07 Hewlett-Packard Company Auto design of VLIW processors
US6564264B1 (en) * 1999-12-08 2003-05-13 At&T Corp. System, apparatus and method for automatic address updating of outgoing and incoming user messages in a communications network
US6658551B1 (en) 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
US7096343B1 (en) 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
US7181595B1 (en) 2000-05-11 2007-02-20 Mindspeed Technologies, Inc. Method for decoding composite VLIW packets utilizing a tree structure
KR100464406B1 (ko) 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
EP1367484B1 (en) 2002-05-31 2013-07-24 STMicroelectronics Limited Instruction encoding
US7523295B2 (en) 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7590824B2 (en) 2005-03-29 2009-09-15 Qualcomm Incorporated Mixed superscalar and VLIW instruction issuing and processing method and system
US8775777B2 (en) 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8665996B2 (en) * 2008-04-01 2014-03-04 Qualcomm Incorporated Efficient parallel sub-packet decoding using multiple decoders

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
WO2000022515A1 (en) * 1998-10-14 2000-04-20 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid vliw-simd programming model
CN101176059A (zh) * 2005-03-23 2008-05-07 高通股份有限公司 用于对具有可变指令大小的可变长度分组进行编码的方法及系统
US20060259740A1 (en) * 2005-05-13 2006-11-16 Hahn Todd T Software Source Transfer Selects Instruction Word Sizes
CN101438235A (zh) * 2006-05-10 2009-05-20 高通股份有限公司 将硬件结束循环信息编码到指令上

Also Published As

Publication number Publication date
CN102822794B (zh) 2016-08-03
JP2014238859A (ja) 2014-12-18
WO2011109476A1 (en) 2011-09-09
JP2013521577A (ja) 2013-06-10
US9678754B2 (en) 2017-06-13
EP2542963B1 (en) 2016-02-24
EP2542963A1 (en) 2013-01-09
TW201203104A (en) 2012-01-16
KR101449732B1 (ko) 2014-10-13
KR20120139773A (ko) 2012-12-27
US20110219212A1 (en) 2011-09-08

Similar Documents

Publication Publication Date Title
CN101821712B (zh) 在多级数据处理管线中执行指令的系统和方法
CN103827818B (zh) Fifo加载指令
EP2259190A2 (en) Multithreaded processor with efficient processing for convergence device applications
CN101896892A (zh) 可配置的翻译旁视缓冲器
CN101203830A (zh) 用于在交错的多线程环境中操作的数字信号处理器的寄存器堆
EP2734918B1 (en) Table call instruction for frequently called functions
CN103189853A (zh) 用于提供高效情境分类的方法和装置
CN102822794A (zh) 处理阶层式极长指令包的系统和方法
US8843730B2 (en) Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
CN102160031A (zh) 用以执行线性反馈移位指令的系统及方法
CN101911011B (zh) 确定表内的元素的地址的系统和方法
US8874884B2 (en) Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
CN105027076B (zh) 相加-比较-选择指令
CN101305345A (zh) 用于执行指令的处理系统和方法
US20070022275A1 (en) Processor cluster implementing conditional instruction skip
US20130042091A1 (en) BIT Splitting Instruction
JP5539974B2 (ja) デジタル文書の表示およびその文書内のナビゲーションのためにその文書を前処理する方法
US20060015704A1 (en) Operation apparatus and instruction code executing method
TW200931309A (en) Apparatus and method for determining instruction length using instruction termination bit in multi-mode processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant