CN102067087B - 环路控制系统及方法 - Google Patents

环路控制系统及方法 Download PDF

Info

Publication number
CN102067087B
CN102067087B CN200980123763.2A CN200980123763A CN102067087B CN 102067087 B CN102067087 B CN 102067087B CN 200980123763 A CN200980123763 A CN 200980123763A CN 102067087 B CN102067087 B CN 102067087B
Authority
CN
China
Prior art keywords
loop
predicate
instruction
flop
value
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.)
Expired - Fee Related
Application number
CN200980123763.2A
Other languages
English (en)
Other versions
CN102067087A (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
Priority to US12/147,893 priority Critical
Priority to US12/147,893 priority patent/US20090327674A1/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Priority to PCT/US2009/048370 priority patent/WO2009158370A2/en
Publication of CN102067087A publication Critical patent/CN102067087A/zh
Application granted granted Critical
Publication of CN102067087B publication Critical patent/CN102067087B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4452Software pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using guard
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection, loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

本发明揭示环路控制系统及方法。在特定实施例中,硬件环路控制逻辑电路包括用于检测程序环路的环路结束指示符的检测单元。所述硬件环路控制逻辑电路还包括用于使环路计数递减且使谓词触发计数器递减的递减单元。所述硬件环路控制逻辑电路进一步包括用于比较所述谓词触发计数器与参考以确定何时设定谓词值的比较单元。

Description

环路控制系统及方法
技术领域
[0001] 本发明大体来说涉及环路控制系统及方法。
背景技术
[0002] 技术的进步已产生更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包括无线计算装置,例如便携式无线电话、个人数字助理(PDA)及寻呼装置,其小型、轻质且易于由用户携带。更具体来说,便携式计算装置(例如,蜂窝式电话及IP电话)可经由无线网络传送语音及数据包。另外,许多所述便携式无线装置还并入有其它类型的装置。举例来说,无线电话也可包括数字静态相机、数字摄像机、数字记录器及音频文件播放器。又,所述无线电话可处理可执行指令,包括软件应用程序,例如可用于接入因特网的网页浏览器应用程序。因而,这些无线电话可包括显著计算能力。
[0003] 在软件应用程序内重复的可执行指令可作为软件管线式环路而由处理器执行。软件管线化为用于将来自程序环路的不同逻辑反复的非相依指令调度为同时执行的方法。来自环路的不同逻辑反复的重叠指令增加了用于有效处理的并行性的量。举例来说,可在计算装置(例如,无线移动装置)中的处理器的单独的执行单元处并行地执行第一环路指令及第二环路指令,第一指令对应于第一环路反复而第二指令对应于第二环路反复。尽管所述软件管线式环路可比非管线式环路更有效地执行,但用于防止填充管线时归因于指令之间的数据相依性的数据冒险(data hazard)的额外指令(例如,序言指令)及用于防止排空管线时的存储器存取冒险的额外指令(例如,收尾指令)可增加执行应用程序所需的存储器的量。所述额外存储器可能不易于在无线计算装置处可用。
发明内容
[0004] 在特定实施例中,揭示一种包括硬件环路控制逻辑电路的系统。所述硬件环路控制逻辑电路包括用于检测程序环路的环路结束指示符的检测单元、用于使环路计数递减且使谓词触发计数器递减的递减单元,及用于比较谓词触发计数器与参考以确定何时设定谓词值的比较单元。所述系统还包括执行触发硬件环路控制逻辑电路的执行的特殊指令的处理器。具有硬件环路控制逻辑电路的系统的使用使得能够在无序言指令的情况下执行软件管线环路,借此使用减少的存储器。
[0005] 在另一特定实施例中,揭示一种包括用于存储谓词触发计数的谓词计数寄存器的设备。所述设备还包括用于初始化程序环路的环路参数的初始化逻辑电路。所述设备包括用于执行程序环路的环路指令且执行包括环路结束指示符的包的处理器。所述设备还包括用于修改谓词触发计数且修改程序环路的环路计数的逻辑电路。所述设备还包括用于比较谓词触发计数与参考值的比较逻辑电路。所述设备进一步包括用于基于所述比较的结果而改变影响程序环路中的至少一个指令的谓词的值的逻辑电路。
[0006] 在另一特定实施例中,揭示一种处理环路指令的方法。所述方法包括在特殊寄存器中初始化环路参数,其中所述特殊寄存器包括谓词触发计数。所述方法还包括执行环路指令且执行具有环路结束指示符的包。所述方法进一步包括修改谓词触发计数且修改环路计数。在谓词触发计数等于参考值时,所述方法包括改变影响环路指令中的至少一者的谓词的值。
[0007] 在另一特定实施例中,揭示一种处理环路中的指令集合的方法。所述方法包括在执行特定类型的环路指令之后即刻自动地初始化谓词触发计数器以指示在设定谓词值之前待执行的环路的反复的数目。所述方法还包括在环路反复期间执行所述指令集合,且在检测到环路的环路结束指示符之后即刻自动地触发环路控制硬件以修改谓词触发计数器且比较谓词触发计数器与参考以确定何时设定谓词值。基于所述谓词值而有条件地执行所述指令集合中的所述指令中的至少一者。
[0008]由所揭示的实施例中的至少一者提供的一个特定优点是作为管线式软件环路执行的指令的减小的代码大小、较低功率操作及较高速处理。本发明的其它方面、优点及特征将在审阅包括以下章节的整个申请案之后变得显而易见:附图说明、具体实施方式及权利要求书。
附图说明
[0009] 图1为环路控制系统的第一说明性实施例的框图;
[0010] 图2为环路控制系统的第二说明性实施例的框图;
[0011] 图3为说明软件管线式环路的处理的总图;
[0012] 图4为可由图1或图2的环路控制系统执行的环路控制方法的第一说明性实施例的流程图;
[0013] 图5为可由图1或图2的环路控制系统执行的环路控制方法的第二说明性实施例的流程图;以及
[0014] 图6为包括具有谓词计数器的软件管线式环路硬件控制逻辑电路的无线处理装置的特定说明性实施例的框图。
具体实施方式
[0015] 参看图1,描绘环路控制系统的第一说明性实施例且大体将其指定为100。系统100可为计算机、便携式无线装置、无线电话或执行软件指令的任何其它装置的一部分。系统100包括具有硬件环路控制逻辑电路104的处理器102。
[0016] 处理器102经配置以执行环路指令120。环路指令120包括使用谓词逻辑电路110的至少一个有条件地执行的环路指令122。举例来说,当谓词逻辑电路110存储评估为真的谓词值时,可由处理器102执行有条件地执行的环路指令122,且当谓词逻辑电路110存储评估为假的谓词值时,不可执行有条件地执行的环路指令122。举例来说,执行环路指令120使得处理器102能够有效地执行重复操作,例如针对多媒体软件应用程序或数字信号处理操作。
[0017] 环路控制值106可由硬件环路控制逻辑电路104及谓词设定逻辑电路108存取。谓词设定逻辑电路108耦合到谓词逻辑电路110。在特定实施例中,谓词逻辑电路110可包括适于存储具有假值(例如,逻辑“O”值)或真值(例如,逻辑“I”值)的数据位的锁存器或其它存储装置。通过使用硬件环路控制逻辑电路104及谓词设定逻辑电路108,可以紧凑形式对软件管线式环路进行编码,其中用于初始化软件管线的管线式环路级可用结合系统100的硬件环路控制逻辑电路104工作的一个或一个以上有条件地执行的环路指令替代,如下文将描述。
[0018] 在特定实施例中,硬件环路控制逻辑电路104包括适于辨识对应于环路指令120的软件环路的开始的电路。硬件环路控制逻辑电路104可适于最初设定且修改环路控制值106以初始化并控制由处理器102进行的环路指令120的执行。特定来说,硬件环路控制逻辑电路104适于初始化环路控制值106的谓词计数器124。除谓词计数器124外,环路控制值106可包括用于控制环路的操作的其它值,例如环路开始地址及环路反复的数目,此作为说明性实例。
[0019] 可由硬件环路控制逻辑电路104将谓词计数器124初始化为对应于处理循环的数目的值,所述处理循环用以在处理器102处填充包括环路指令120的软件管线式环路。大体来说,处理器102可以管线式方式将每一环路反复作为可在多个执行单元(未展示)处同时执行的多个连续管线级来执行。举例来说,当处理器102执行具有三个管线级的深度的软件管线式环路中的环路指令120时,可将谓词计数器124初始化到为三的值。具有三个管线级的深度的软件管线式环路的实例描绘于图3中。
[0020] 硬件环路控制逻辑电路104可进一步适于检测处理器102处的环路反复条件且针对环路的每一反复修改谓词计数器124。举例来说,谓词计数器124可保持有响应于硬件环路控制逻辑电路104而连续递减直到谓词计数器124的值达到参考值为止的初始化值。当软件管线式环路被完全管线化时,参考值可对应于谓词计数器124的值,其中软件环路的所有指令处理并未因管线相依性而无效的数据。举例来说,在稍后操作使用由环路反复内的较早操作产生的数据且环路被管线化以使得较早操作是在第一管线级处执行且稍后操作是在与第一管线级同时执行的稍后管线级处执行的情况下,稍后管线级对第一管线级处所产生的数据的相依性将使得稍后管线级处理无效数据,直到在稍后管线级处接收到第一管线级处所产生的数据为止。为了说明,处理器可在单独执行单元处执行环路指令“A =A+1 ”及“将A存储到存储器”,但“将A存储到存储器”指令将存储无效结果直到接收到来自第一 “A = A+1”指令的数据为止。
[0021] 谓词设定逻辑电路108可适于响应于检测到谓词计数器124的值而设定谓词逻辑电路Iio处所存储的谓词值。在特定实施例中,谓词设定逻辑电路108包括用于执行谓词计数器124处的值与参考值之间的比较的比较逻辑电路(未展示)。当检测到谓词计数器124处的值具有等于参考值的值时,谓词设定逻辑电路108可经配置以自动地设定谓词逻辑电路110处所存储的谓词值。举例来说,谓词逻辑电路110可经初始化成存储假条件,谓词计数器124可经初始化为软件管线式环路的管线级的数目,且参考值可为零。当将谓词计数器124递减到零时,谓词设定逻辑电路108可自动地将谓词逻辑电路110处的谓词值改变成真条件。可将谓词逻辑电路110处所存储的谓词值的真条件提供到有条件地执行的环路指令122以影响处理器102处的环路指令120的处理。作为另一实例,可将谓词计数器124设定到零且可将参考值设定到软件管线式环路的管线级的数目,且可响应于每一环路反复而使谓词计数器124递增。
[0022] 因此,处理器102处的环路初始化及环路控制可由包括硬件环路控制逻辑电路104、用于存储环路控制值106的锁存器或其它装置的硬件元件来执行,以实施谓词设定逻辑电路108。通过使用硬件来实施用于软件管线式环路的环路控制逻辑,可以紧凑形式对软件环路进行编码,其中用于初始化软件管线的管线式环路级(称作序言)可用结合系统100的硬件而工作的一个或一个以上有条件地执行的环路指令122替代。
[0023] 参看图2,描绘环路控制系统的第二说明性实施例且大体将其指定为200。系统200包括处理器202、硬件环路控制逻辑电路204,及环路参数控制寄存器206。硬件环路控制逻辑电路204可对应于图1中所描绘的硬件环路控制逻辑电路104。环路参数控制寄存器206处所存储的数据可对应于图1中所描绘的环路控制值106,且处理器202可对应于图1中所描绘的处理器102。
[0024] 在特定实施例中,环路参数控制寄存器206包括存储表示待于处理器202处执行的软件管线式环路的开始地址的数据的开始地址寄存器212。环路参数控制寄存器206还包括存储对应于软件管线式环路的环路计数值的环路计数寄存器214。环路参数控制寄存器206进一步包括存储与待于处理器202处执行的软件管线式环路相关联的谓词触发计数值的谓词触发计数寄存器216。大体来说,环路参数控制寄存器206响应于从硬件控制逻辑电路204所接收的控制输入。
[0025] 在特定实施例中,硬件环路控制逻辑电路204包括初始化单元220、递减单元222、比较单元230、检测单元228,及谓词改变单元234。初始化单元220可响应于在处理器202处执行的特殊指令240。初始化单元220可适于确定开始地址且设定开始地址寄存器212处的值。初始化单元220可进一步适于设定递减单元222的环路计数器224的初始值。初始化单元220也可适于设定递减单元222的谓词触发计数器226的初始值。
[0026] 在特定实施例中,递减单元222响应于检测单元228,以响应于来自检测单元228的指示处理器202处的环路反复的完成的控制输入而使环路计数器224及谓词触发计数器226的值递减。特定来说,可将环路计数器224初始化为待于处理器202处执行的环路指令250的反复的总数目,且可响应于在检测单元228处所检测的每一环路反复而使环路计数器224递减。另外,可将谓词触发计数器226初始化为对应于完全填充软件管线式环路的管线以便使用来自先前级的有效数据执行顺序管线级所需的执行循环的数目的值。可响应于由检测单元228检测到的环路反复而使谓词触发计数器226递减。环路计数器224及谓词触发计数器226可分别将值写入到环路计数寄存器214及谓词触发计数寄存器216,且可响应于递减单元222的操作而更新相应值。
[0027] 在特定实施例中,检测单元228经配置以检测处理器202处的环路结束条件。举例来说,检测单元228可包括用于在处理器202处剖析具有环路结束指示符的极长指令字(VLIff)包254的剖析逻辑电路。在特定实施例中,环路结束指示符包括VLIW包254内具有指定值的预定位字段。当检测到环路结束指示符时,检测单元228将控制输入提供到递减单元222以使计数器224及226中的一者或两者递减。
[0028] 在特定实施例中,比较单元230响应于谓词触发计数寄存器216处所存储的值。比较单元230可包括适于比较谓词触发计数寄存器216的值与参考值且将所述比较的输出提供到谓词改变单元234的比较器232。举例来说,在特定实施例中,参考值可为零,且比较单元230可经配置以将零值输出提供到谓词改变单元234直到谓词触发计数寄存器216具有零值或负值为止。在特定实施例中,比较器232适于自动地识别谓词触发计数器226从一值到零值的转变(例如,经由谓词触发计数寄存器216)。[0029] 在特定实施例中,谓词改变单元234响应于从比较单元230所接收的控制信号,以设定或重设谓词逻辑电路210处所存储的谓词值。举例来说,谓词改变单元234可经配置以将谓词逻辑电路210处所存储的谓词值初始化为假条件。当谓词改变单元234接收到来自比较单元230的指示谓词触发计数寄存器216的值等于参考值的控制输入时,谓词改变单元234可将谓词逻辑电路210处的谓词值设定为真值。谓词改变单元234也可响应于初始化单元220,以在执行环路指令之前清除谓词逻辑电路210处所存储的谓词值。
[0030] 在特定实施例中,谓词逻辑电路210可包括经配置以存储逻辑真值或逻辑假值的一个或一个以上硬件组件。谓词逻辑电路210可由处理器202存取以结合执行环路指令250而使用。
[0031] 在特定实施例中,处理器202经配置以接收并执行与软件管线式环路相关联的指令。特定来说,处理器202经配置以执行可指定与后续软件管线式环路相关联的初始化值及控制值的特殊指令240。特殊指令240的初始化值及控制值可由硬件环路控制逻辑电路204来检测或提供到硬件环路控制逻辑电路204。
[0032] 另外,处理器202经配置以接收环路指令250并将其作为软件管线式环路来执行。举例来说,处理器202可适于并行地(例如,在处理器202的多个并行执行单元处)执行环路指令250中的一者或一者以上。另外,处理器202可将环路指令250作为软件管线式指令来执行,以便可在处理器202处的各种顺序管线级中执行环路指令250的单次反复。
[0033] 在特定实施例中,环路指令250包括至少一个有条件地执行的环路指令252。所述至少一个有条件地执行的环路指令252响应于谓词逻辑电路210处所存储的谓词值以确定执行的条件。在特定实施例中,有条件地执行的环路指令252基于谓词逻辑电路210处的谓词值而有条件地存储数据,以便不存储在将谓词值设定为“真”之前所计算的值。举例来说,有条件地执行的环路指令252可包括用于基于在环路指令250的当前反复中较早执行的计算而将数据写入到存储器(例如,写入到输出寄存器(未展示))的写入命令。当在接收到由较早计算产生的数据之前执行写入时,在环路被完全管线化之前执行有条件地执行的环路指令252将会将无效数据写入到存储器。因此,有条件地执行的环路指令252的执行可以谓词逻辑电路210处所存储的谓词值为条件,其中谓词逻辑电路210处所存储的谓词值指示软件管线式环路的对应于环路指令250的条件。为了说明,处理器202可执行环路指令“A = A+1”及“将A存储到存储器”,但“将A存储到存储器”指令将存储无效结果直到接收到来自第一“A = A+1”指令的数据为止。因此,可基于最初经设定为“假”且在已完成第一 “A = A+1 ”指令时改变成“真”的谓词值而有条件地执行“将A存储到存储器”指令。
[0034] 参看图3,描绘处理软件管线式环路的特定说明性实施例且大体将其指定为300。代表性指令管线级302、304、306及308表示软件管线式环路的管线级。谓词值310指示经指定为“P3”且可通过在指令管线级302到308处执行的所述指令中的一者或一者以上存取的谓词处的值。硬件谓词环路计数器312指示对应于软件管线式环路的递减计数值。针对连续时钟循环描绘与指令管线级302到308中的每一者、谓词值310及硬件谓词环路计数器312相关联的值,连续时钟循环在环路开始时间周期以时钟循环I开始,且在稍后时间周期进行到时钟循环23。在特定实施例中,每一时钟循环对应于管线式处理器处的执行循环。[0035] 在说明性实施例中,系统300表示图1中所描绘的处理器102处的环路指令120的执行,其中谓词值310反映谓词逻辑电路110处所存储的谓词值,且硬件谓词环路计数器312对应于谓词计数器124。在另一说明性实施例中,系统300表示图2中所描绘的处理器202处的环路指令250的执行,其中谓词值310对应于谓词逻辑电路210处所存储的谓词值,且硬件谓词环路计数器312对应于谓词触发计数寄存器216处所存储的谓词触发计数器226的输出。
[0036] 在特定实施例中,经由分解图中作为环路初始化指令330说明的特殊指令来起始软件管线式环路。环路初始化指令330包括具有形式spNLoop的指令名称334,其中“N”具有为三的值。环路初始化指令330包括包括程序环路设置信息的数据字段。举例来说,环路初始化指令330包括对应于软件环路的开始地址的第一数据字段336。环路初始化指令330还具有对应于指示待执行的环路的反复的数目的环路计数的第二数据字段338。当由处理器执行环路初始化指令330时,环路初始化指令330可返回对应于谓词的初始化的初始值(例如,谓词P3332的值),其对应于谓词值310。
[0037] 因此,环路初始化指令330可指示环路的指令的开始地址、环路的反复的数目,且可进一步通过名称334中的“N”的值指示硬件谓词环路计数器312的初始值。在所说明的实施例中,名称sp3100p指示硬件谓词环路计数器312处为三的初始值。“N”的其它值可用于指示硬件谓词环路计数器312的其它初始值。作为说明性实例,“splLoop”可指示为一的初始值,且“sp2Loop”可指示为二的初始值。可设定硬件谓词环路计数器312的初始值以防止执行有条件操作直到对环路进行足够管线化为止。在特定实施例中,“N”可为小于四的正整数且可指示序言计数或待在改变谓词值310之前执行的程序环路的环路数目。
[0038] 在处理软件管线式环路初始化指令330之后,软件管线式环路开始,将其说明为包括具有经标记为A、B、C及D的指令的VLIW包。指令A、B、C及D可各自在处理器处(例如,在单一处理器的多个执行单元处)并行执行。此外,指令A、B、C及D可为顺序的,因为指令B可使用由指令A产生的数据。类似地,指令C可使用由指令A、指令B或其任何组合产生的数据。此外,指令D可使用由指令A、B、C中的任一者或其任何组合产生的数据。指令D可将指示每一特定环路反复的输出的数据写入到存储器。举例来说,指令D可使用来自操作A、B及C中的每一者的结果执行计算,且可将所得值存储到输出寄存器。因此,在软件管线式环路被完全管线化之前不应执行指令D,以便在指令D之前顺序地执行指令A、B及C中的每一者以确保到指令D的输入由有效值组成。可在完全填充软件管线之前顺序地执行的指令大体被指定为序言320。软件管线环路的执行的其中管线是满的部分被指定为核心322。软件管线环路的其中第一指令的最终执行已完成但其它管线指令尚未执行的部分大体被称作收尾324。
[0039] 如所说明,在时钟循环一,将初始值“三”存储于硬件谓词环路计数器312处。类似地,将谓词值P3310初始化为假值。软件环路从针对环路的第一反复执行指令A而开始。指令B、C及D也可与A并行执行,如将在核心部分322中执行;然而,因为指令B、C及D可视从先前指令输出的数据而定,所以在时钟循环一中指令B、C及D的结果可能无效。另外,当指令D包括用于将数据存储于存储器处的写入指令时,在待写入的数据为指示第一循环的指令A、B及C的输出的有效数据之前不应执行指令D。因此,可基于谓词值310而有条件地执行指令D,将其说明为指示特定时钟循环中的不执行指令的管线级的阴影化。因为谓词值310为假,所以不执行第四指令管线级308中的有条件写入指令D。
[0040] 继续到时钟循环二,指令B接收来自指令A的输出且针对环路的第一反复而执行,其经指示为Ba)。类似地,使用与环路的第二反复相关联的数据执行指令a,其经指示为A(2)。可执行指令C及D ;然而,可能归因于对先前指令的数据相依性而未界定输入值及因此指令C及D中的每一者的输出。如所说明,在时钟循环2中,将硬件谓词环路计数器从为“三”的值递减到为“二”的值,且谓词值310保持为假。因为谓词值310为假,所以不执行第四指令管线级308中的有条件写入指令D。
[0041] 继续到时钟循环三,对应于环路的第一反复而执行第三指令管线级306处的指令C。对应于环路的第二反复而在第二指令管线级304处执行指令B,且对应于环路的第三反复而在第一指令管线级302处执行指令A。将硬件谓词环路计数器312从为“二”的值递减到为“一”的值,且谓词值310保持为假。因为谓词值310为假,所以不执行有条件写入指令D。
[0042] 在时钟循环四,软件环路的序言部分320已结束且核心部分322已开始。大体来说,在核心部分322中,软件管线已经填充且指令管线级302到308中的每一者对有效数据进行操作。将硬件谓词环路计数器312递减到值“零”,其指示管线是满的且序言级302结束。响应于等于“零”的硬件谓词环路计数器312,将谓词值310设定为真条件。在特定实施例中,由经配置以比较谓词环路计数器312的值与参考值的硬件逻辑电路(例如,图2中所描绘的比较器232)来设定谓词值310。
[0043] 从时钟循环四到时钟循环二十,环路保持在执行的核心部分322中,其中管线保持为满的且所有管线级302到308以顺序次序执行指令以适应所述指令之间的数据相依性。因为谓词值310评估为真,所以在时钟循环四且继续到时钟循环二十期间执行包括指令D的所有指令。在时钟循环二十一,收尾部分324开始,其中第一管线级302已完成针对所有二十个环路反复执行指令A,但剩余管线级304、306及308继续处理与软件环路的先前反复相关联的指令。举例来说,在时钟循环二十一,指令B的执行对应于反复20,指令C的执行对应于反复19,且指令D的执行对应于反复18。因此,在时钟循环二十一,执行指令B、C及D但不执行指令A。在时钟循环二十二,执行指令C及D,但不执行指令A及B。在时钟循环二十三,执行指令D以完成环路的最后反复。
[0044] 如所说明,可使用包括指令A、B、C及D的单一 VLIW包执行序言部分320及核心部分322,其中指令D的执行基于谓词值P3310而为有条件的,且包括环路结束指示符(其经表示为“{A,B,C,if(P3)D}:endloop”)。因此,在序言部分320与核心部分322两者中执行核心代码(即,包括指令A、B、C及D的VLIW包)。当在收尾部分324期间排空管线时,可使用收尾 VLIW 包,例如:{Ν0Ρ,B, C,D}、{NOP, Ν0Ρ, C,D}及{NOP,NOP, NOP, D},其中 NOP指示特定执行单元处无操作。所述收尾指令确保当超出最后环路反复而执行时较早管线指令不会存取存储器的未经授权的部分。然而,在另一实施例中,当可在环路边界外部安全地存取一个或一个以上输入数据源时(例如,可在时钟循环21、22及23通过指令A安全地执行的额外存储器读取操作),收尾部分322可替代地执行核心指令。
[0045] 针对序言部分320及核心部分322使用单一 VLIW包使得能够使用比执行特殊序言指令以填充管线的情况下少的存储器来执行软件环路。通过初始化硬件谓词环路计数器并使其递减以对应于序言部分320期间的非零值及核心部分322处的零值(当环路被完全管线化时),可设定谓词值310以将有条件地执行的数据相依指令(例如,指令D)的执行限制到核心(当管线满时)。可结合图1的处理器102使用谓词逻辑电路110及谓词计数器124来执行所述软件管线式环路处理,或通过结合图2中所描绘的处理器202使用谓词逻辑电路210、谓词触发计数器226及谓词触发计数寄存器216来执行所述软件管线式环路处理。
[0046] 参看图4,其描绘环路控制方法的第一说明性实施例的流程图且大体将其指定为400。在特定实施例中,可使用图1及图2中所描绘的系统中的一者或一者以上来执行处理循环中的指令集合的方法400。在402处,在执行特定类型的环路指令之后即刻自动地初始化谓词触发计数器以指示在设定谓词值之前的环路的反复数目。可将所述指令集合作为软件管线式环路来执行,且谓词触发计数器可基于软件管线式环路的管线级的数目。在说明性实施例中,特定类型的环路指令为图3中所描绘的环路初始化指令330。
[0047] 移到404,在环路反复期间执行所述指令集合。基于所述谓词值而有条件地执行所述指令集合中的所述指令中的至少一者。举例来说,有条件地执行的所述指令集合中的所述指令中的至少一者可基于谓词值而将数据有条件地写入到输出寄存器。
[0048] 继续到406,在检测到环路的环路结束指示符之后,即刻自动地触发修改谓词触发计数器的环路控制硬件。举例来说,环路控制硬件可响应于检测到环路结束指示符而使谓词触发计数器递减。前进到408,在检测到环路的环路结束指示符之后,即刻将谓词触发计数器与参考相比较以确定何时设定谓词值。在特定实施例中,所述参考为零值。
[0049] 在决策410处,针对谓词触发计数器是否等于所述参考作出确定。在谓词触发计数器不等于所述参考的情况下,处理在404处继续,在404处,在下一个环路反复期间执行所述指令集合。在谓词触发计数器等于所述参考的情况下,在412处设定谓词值,且处理返回到404,在404处,在下一个环路反复期间执行所述指令集合。
[0050] 因此,可通过初始化谓词触发计数器且响应于谓词触发计数器与所述参考的比较而设定谓词来控制有条件地执行的指令的执行。因此实现不具有单独序言指令及核心指令的软件管线式环路的执行(例如,图3中所描绘)且可使用图1及图2中所描绘的系统来执行所述软件管线式环路。
[0051] 参看图5,描绘环路控制方法的第二说明性实施例的流程图且大体将其指定为500。在特定实施例中,可使用图1及图2中所描绘的系统中的一者或一者以上来执行处理环路指令的方法500。在502处,在包括谓词触发计数的特殊寄存器中初始化环路参数。在特定实施例中,将谓词值初始化为假条件,且谓词触发计数对应于软件管线式环路的管线深度。
[0052] 进行到504,执行环路指令。在特定实施例中,环路指令包括核心代码但不包括序言指令。核心代码可包括软件管线式环路的指令集合。前进到506,执行具有环路结束指示符的指令。移到508,修改谓词触发计数且修改环路计数。继续到510,当谓词触发计数等于参考值时,改变影响环路指令中的至少一者的谓词的值。
[0053] 举例来说,环路指令可包括基于谓词而有条件地执行的至少一个指令。当将谓词触发计数器初始化为软件管线深度时,将谓词触发计数递减到等于参考值“零”可指示软件管线式环路的序言部分的结束及环路的核心部分的开始(当管线填满时)。可因此在管线填满之前不执行基于谓词而执行的有条件地执行的指令。因此,当使用谓词来防止在管线经足够填充之前可产生有害结果的指令的执行时,也可在序言中执行核心指令。
[0054] 图1及图2中所描绘的系统提供可在其上执行方法500的系统的实例。举例来说,可在图2的环路参数控制寄存器206中初始化环路参数,可由递减单元222来使环路计数及谓词触发计数递减,且可由图2的谓词改变单元234来改变谓词210的值。
[0055] 参看图6,描绘包括具有谓词计数器的软件管线式环路硬件控制逻辑电路664的无线处理装置的特定说明性实施例的框图且大体将其指定为600。装置600包括耦合到存储器632的处理器,例如数字信号处理器(DSP)610。具有谓词计数器的软件管线式环路硬件控制逻辑电路664可包括图1及图2中所描绘的系统中的一者或一者以上且可根据图3到图5中的一者或一者以上或其任何组合而操作。在说明性实施例中,系统600为无线电话。
[0056] 图6还展示耦合到数字信号处理器610及显示器628的显示器控制器626。编码器/解码器(CODEC) 634也可耦合到数字信号处理器610。扬声器636及麦克风638可耦合到CODEC 634。调制解调器640可耦合到数字信号处理器610且进一步耦合到无线天线642。
[0057] 在特定实施例中,DSP 610、显示器控制器626、存储器632、C0DEC 634及调制解调器640包括于系统级封装或芯片上系统装置622中。在特定实施例中,输入装置630及电源644耦合到芯片上系统622。此外,在特定实施例中,如图6中所说明,显示器628、输入装置630、扬声器636、麦克风638、无线天线642及电源644在芯片上系统装置622的外部。然而,每一者可耦合到芯片上系统装置622的组件(例如,接口或控制器)。
[0058] 在操作期间,具有谓词计数器的软件管线式环路硬件控制逻辑664可用于实现数字信号处理器610处的有效软件管线式环路处理。举例来说,具有谓词计数器的软件管线式环路硬件控制逻辑电路664可包括用于在数字信号处理器610处检测环路初始化指令、环路结束指令或环路初始化指令与环路结束指令两者的电路或装置,且可操作以通过控制一个或一个以上环路计数器(例如,序言计数器)、一个或一个以上谓词或其任何组合的值来控制数字信号处理器610处的环路操作。尽管经描绘为包括于数字信号处理器610中,但具有谓词计数器的软件管线式环路硬件控制逻辑电路664可与一个或一个以上处理器分离(例如,在芯片上系统装置622的控制部分处)。大体来说,可在具有一个或一个以上并行管线的任一处理器中实施软件管线式环路,所述一个或一个以上并行管线使得同一软件环路中的指令能够跨越所述一个或一个以上并行管线而执行。另外,应理解,装置600可为任何无线处理装置,例如,个人数字助理(PDA)、音频播放器、因特网协议(IP)电话、蜂窝式电话、移动电话、膝上型计算机、笔记型计算机、模板计算机、可处理软件管线式环路的任何其它系统,或其任何组合。
[0059] 所属领域的技术人员应进一步了解,结合本文中所揭示的实施例所描述的各种说明性逻辑块、配置、模块、电路及算法步骤可经实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此可互换性,上文已大体在功能性方面描述了各种说明性组件、块、配置、模块、电路及步骤。将所述功能性实施为硬件还是软件视特定应用及强加于整个系统的设计约束而定。所属领域的技术人员可针对每一特定应用以变化的方式实施所描述的功能性,但所述实施决策不应被解释为会引起偏离本发明的范围。
[0060] 结合本文中所揭示的实施例所描述的方法或算法的步骤可直接体现于硬件中、由处理器执行的软件模块中,或两者的组合中。软件模块可驻留于随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸式磁盘、紧密光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,以使得所述处理器可从所述存储媒体读取信息,并可将信息写入到所述存储媒体。在替代例中,存储媒体可与处理器成一体式。处理器及存储媒体可驻留于专用集成电路(ASIC)中。ASIC可驻留于计算装置或用户终端中。在替代例中,处理器及存储媒体可作为离散组件驻留于计算装置或用户终端中。
[0061] 提供所揭示的实施例的先前描述以使得任何所属领域的技术人员能够制造或使用所揭示的实施例。所属领域的技术人员将显而易见对这些实施例的各种修改,且可在不偏离本发明的范围的情况下将本文中所界定的原理应用于其它实施例。因此,本发明既定不限于本文中所展示的实施例,而是应符合与如通过所附权利要求书界定的原理及新颖特征一致的最宽可能范围。

Claims (21)

1.一种处理环路中的指令集合的方法,所述方法包含: 响应于接收到指示谓词触发计数、开始地址以及环路计数的单个初始化指令,自动地初始化包括所述谓词触发计数、所述开始地址以及所述环路计数的环路参数,其中所述谓词触发计数操作以指示在执行谓词指令之前待执行的环路反复的计数; 执行包含在包括所述谓词指令的包中的一个或多个环路指令的反复; 在执行所述反复之后,检测包含在所述包中的环路结束指示符;以及 响应于检测到所述环路结束指示符,自动地触发环路控制硬件以: 修改所述谓词触发计数;且 在修改所述谓词触发计数之后,确定是否设定谓词值,其中对设定所述谓词值的确定是基于所述谓词触发计数与参考的比较,其中基于所述谓词值而在随后的下一个环路反复期间有条件地执行所述谓词指令。
2.根据权利要求1所述的方法,其中所述参考为零值且其中所述环路控制硬件响应于检测到所述环路结束指示符而使所述谓词触发计数递减。
3.根据权利要求1所述的方法,其中将所述一个或多个环路指令作为软件管线式环路来执行,且其中所述谓词触发计数指示所述软件管线式环路的管线级的计数。
4.一种处理环路指令的方法,所述方法包含: 响应于接收到指示谓词触发计数、开始地址以及环路计数的单个初始化指令,初始化包括所述谓词触发计数、所述开始地址以及所述环路计数的环路参数,其中在特殊寄存器中初始化所述谓词触发计数; 执行包含在包中的一个或多个环路指令的反复,其中在初始化所述谓词触发计数之后执行所述反复; 检测包含在所述包中的环路结束指示符,其中在执行所述反复之后检测所述环路结束指示符; 响应于检测到所述环路结束指示符而修改所述谓词触发计数;以及响应于所述谓词触发计数具有等于参考值的值,改变影响多个环路指令中的至少一个指令的后续执行的谓词的值。
5.根据权利要求4所述的方法,其中所述多个环路指令不包括序言指令。
6.根据权利要求4所述的方法,其中所述多个环路指令包括包含软件管线式环路的指令集合的核心代码。
7.根据权利要求4所述的方法,其中响应于检测到所述环路结束指示符而使所述谓词触发计数递减。
8.—种设备,其包含: 谓词计数寄存器,其用于存储谓词触发计数; 初始化逻辑电路,其用于响应于接收到指示谓词触发计数、开始地址以及环路计数的单个初始化指令而初始化程序环路的环路参数,其中所述环路参数包括所述谓词触发计数、所述开始地址以及所述环路计数; 处理器,其用于执行所述程序环路的一个或多个环路指令的反复,且在执行所述反复之后检测环路结束指示符,其中所述一个或多个环路指令与所述环路结束指示符包括于包中;第一逻辑电路,其用于响应于检测到所述环路结束指示符而修改所述谓词触发计数;比较逻辑电路,其用于比较所述谓词触发计数与参考值;以及第二逻辑电路,其用于至少部分地基于所述比较的结果而改变谓词的值,其中所述程序环路中的至少一个指令基于所述谓词的值而执行。
9.根据权利要求8所述的设备,其中所述初始化逻辑电路操作以在所述一个或多个环路指令的执行之前初始化所述谓词。
10.一种硬件环路控制逻辑电路,其包含: 初始化单元,其用于响应于接收到指示谓词触发计数、开始地址以及环路计数的单个初始化指令而初始化程序环路的环路参数,其中所述环路参数包括所述谓词触发计数、所述开始地址以及所述环路计数; 检测单元,其用于在执行所述程序环路的一个或多个环路指令的反复之后检测环路结束指示符,其中所述一个或多个环路指令与所述环路结束指示符包括于包中; 递减单元,其用于响应于检测到所述环路结束指示符而使所述谓词触发计数递减;以及 比较单元,其用于比较所述谓词触发计数与参考以确定是否设定谓词值。
11.根据权利要求10所述的硬件环路控制逻辑电路,其中所述程序环路包括基于所述谓词值而有条件地执行的至少一个指令。
12.—种系统,其包含: 处理器,其经配置以执行触发硬件环路控制逻辑电路的执行的特殊指令; 所述硬件环路控制逻辑电路,其包含: 初始化单元,其用于响应于接收到指示谓词触发计数、开始地址以及环路计数的所述特殊指令而初始化程序环路的环路参数,其中所述环路参数包括所述谓词触发计数、所述开始地址以及所述环路计数; 检测单元,其用于在执行程序环路的一个或多个环路指令的反复之后检测环路结束指示符,其中所述一个或多个环路指令与所述环路结束指示符包括于包中; 递减单元,其用于响应于检测到所述环路结束指示符而使所述谓词触发计数递减;以及 比较单元,其用于比较所述谓词触发计数与参考以确定是否设定谓词值。
13.根据权利要求12所述的系统,其中所述特殊指令包含spNloop类型指令,其中N为小于四的正整数且其中N指示在设定所述谓词值之前待执行的所述程序环路的环路数目。
14.根据权利要求13所述的系统,其中响应于执行所述spNloop类型指令,在设定所述谓词值之前计算与所述程序环路的指令相关联的值,且其中不存储所计算的值。
15.根据权利要求13所述的系统,其中所述spNloop类型指令包括包括程序环路设置信息的数据字段。
16.根据权利要求15所述的系统,其中所述检测单元经配置以剖析极长指令字(VLIW)包以检测所述环路结束指示符,且其中所述递减单元经配置以在检测到所述环路结 束指示符时自动地使所述谓词触发计数递减。
17.根据权利要求13所述的系统,其中所述spNloop类型指令是结合软件管线环路应用程序来使用。
18.根据权利要求12所述的系统,其中所述处理器为极长指令字(VLIW)类型处理器,所述处理器包括所述硬件环路控制逻辑电路,且其中所述程序环路中的多个指令由所述处理器并行地执行。
19.根据权利要求15所述的系统,其中N识别序言计数。
20.根据权利要求12所述的系统,其中所述程序环路的至少一个指令基于所述谓词值而有条件地存储数据。
21.根据权利要求16所述的系统,其中所述比较单元包括用于自动地识别所述谓词触 发计数从一值到 零值的转变的比较器。
CN200980123763.2A 2008-06-27 2009-06-24 环路控制系统及方法 Expired - Fee Related CN102067087B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12/147,893 2008-06-27
US12/147,893 US20090327674A1 (en) 2008-06-27 2008-06-27 Loop Control System and Method
PCT/US2009/048370 WO2009158370A2 (en) 2008-06-27 2009-06-24 Loop control system and method

Publications (2)

Publication Number Publication Date
CN102067087A CN102067087A (zh) 2011-05-18
CN102067087B true CN102067087B (zh) 2014-04-23

Family

ID=41306021

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980123763.2A Expired - Fee Related CN102067087B (zh) 2008-06-27 2009-06-24 环路控制系统及方法

Country Status (7)

Country Link
US (1) US20090327674A1 (zh)
EP (1) EP2304557A2 (zh)
JP (3) JP5536052B2 (zh)
KR (1) KR101334863B1 (zh)
CN (1) CN102067087B (zh)
TW (1) TW201015431A (zh)
WO (1) WO2009158370A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991985B2 (en) * 2006-12-22 2011-08-02 Broadcom Corporation System and method for implementing and utilizing a zero overhead loop
US7987347B2 (en) * 2006-12-22 2011-07-26 Broadcom Corporation System and method for implementing a zero overhead loop
JP5300294B2 (ja) * 2008-03-25 2013-09-25 パナソニック株式会社 処理装置、難読化装置、プログラムおよび集積回路
KR101645001B1 (ko) 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
EP2367102B1 (en) * 2010-02-11 2013-04-10 Nxp B.V. Computer processor and method with increased security properties
WO2013089707A1 (en) * 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for loop remainder mask instruction
WO2013089709A1 (en) * 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for generating a loop alignment count or a loop alignment mask
US9632779B2 (en) * 2011-12-19 2017-04-25 International Business Machines Corporation Instruction predication using instruction filtering
KR101991680B1 (ko) * 2012-01-25 2019-06-21 삼성전자 주식회사 소프트웨어 파이프라인된 프로그램의 하드웨어 디버깅 장치 및 방법
US9038042B2 (en) * 2012-06-29 2015-05-19 Analog Devices, Inc. Staged loop instructions
US9280344B2 (en) * 2012-09-27 2016-03-08 Texas Instruments Incorporated Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination
US9342306B2 (en) 2012-10-23 2016-05-17 Analog Devices Global Predicate counter
EP2725483A3 (en) * 2012-10-23 2015-06-17 Analog Devices Global Predicate counter
US9201828B2 (en) 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
CN103777922B (zh) * 2012-10-23 2018-05-22 亚德诺半导体集团 预测计数器
US9830164B2 (en) * 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline
US9633409B2 (en) * 2013-08-26 2017-04-25 Apple Inc. GPU predication
US20160019061A1 (en) * 2014-07-21 2016-01-21 Qualcomm Incorporated MANAGING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10248908B2 (en) * 2017-06-19 2019-04-02 Google Llc Alternative loop limits for accessing data in multi-dimensional tensors
US20190303156A1 (en) * 2018-03-30 2019-10-03 Qualcomm Incorporated Zero overhead loop execution in deep learning accelerators

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452425A (en) * 1989-10-13 1995-09-19 Texas Instruments Incorporated Sequential constant generator system for indicating the last data word by using the end of loop bit having opposite digital state than other data words
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
WO1998006038A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Architectural support for software pipelining of loops
US5958048A (en) * 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
EP0933703B1 (en) * 1998-01-28 2007-08-29 Texas Instruments Incorporated Method and apparatus for processing program loops
US6192515B1 (en) * 1998-07-17 2001-02-20 Intel Corporation Method for software pipelining nested loops
US7302557B1 (en) * 1999-12-27 2007-11-27 Impact Technologies, Inc. Method and apparatus for modulo scheduled loop execution in a processor architecture
US6754893B2 (en) * 1999-12-29 2004-06-22 Texas Instruments Incorporated Method for collapsing the prolog and epilog of software pipelined loops
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration
US6892380B2 (en) * 1999-12-30 2005-05-10 Texas Instruments Incorporated Method for software pipelining of irregular conditional control loops
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
GB2363480B (en) * 2000-06-13 2002-05-08 Siroyan Ltd Predicated execution of instructions in processors
US6615403B1 (en) * 2000-06-30 2003-09-02 Intel Corporation Compare speculation in software-pipelined loops
US6912709B2 (en) * 2000-12-29 2005-06-28 Intel Corporation Mechanism to avoid explicit prologs in software pipelined do-while loops
US6986131B2 (en) * 2002-06-18 2006-01-10 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient code generation for modulo scheduled uncounted loops
US7269719B2 (en) * 2002-10-30 2007-09-11 Stmicroelectronics, Inc. Predicated execution using operand predicates
US20040221283A1 (en) * 2003-04-30 2004-11-04 Worley Christopher S. Enhanced, modulo-scheduled-loop extensions
US7020769B2 (en) * 2003-09-30 2006-03-28 Starcore, Llc Method and system for processing a loop of instructions
US7406590B2 (en) * 2004-02-25 2008-07-29 Analog Devices, Inc. Methods and apparatus for early loop bottom detection in digital signal processors
US7673294B2 (en) * 2005-01-18 2010-03-02 Texas Instruments Incorporated Mechanism for pipelining loops with irregular loop control
US7991984B2 (en) * 2005-02-17 2011-08-02 Samsung Electronics Co., Ltd. System and method for executing loops in a processor
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
GB0524720D0 (en) * 2005-12-05 2006-01-11 Imec Inter Uni Micro Electr Ultra low power ASIP architecture II
US20070266229A1 (en) * 2006-05-10 2007-11-15 Erich Plondke Encoding hardware end loop information onto an instruction
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions

Also Published As

Publication number Publication date
KR20110034656A (ko) 2011-04-05
JP2011526045A (ja) 2011-09-29
WO2009158370A3 (en) 2010-02-25
JP2016157463A (ja) 2016-09-01
JP5536052B2 (ja) 2014-07-02
JP5917592B2 (ja) 2016-05-18
JP2014170571A (ja) 2014-09-18
CN102067087A (zh) 2011-05-18
EP2304557A2 (en) 2011-04-06
KR101334863B1 (ko) 2013-12-02
TW201015431A (en) 2010-04-16
WO2009158370A2 (en) 2009-12-30
US20090327674A1 (en) 2009-12-31

Similar Documents

Publication Publication Date Title
CN102067087B (zh) 环路控制系统及方法
JP6345623B2 (ja) 条件付き非ブランチング命令の非実行を予測するための方法および機器
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP2011526045A5 (zh)
US20120216011A1 (en) Apparatus and method of single-instruction, multiple-data vector operation masking
CN101048731B (zh) 用于单指令、多数据执行引擎的循环指令
JP2007526571A (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
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
CN101371223B (zh) 运算数的提早有条件选择
US9361109B2 (en) System and method to evaluate a data value as an instruction
KR100551544B1 (ko) 하드웨어 루프
JP3822568B2 (ja) イベント処理
CN105892995B (zh) 查找负数的方法、装置及处理器
KR100536018B1 (ko) 하드웨어 루프
US20170046168A1 (en) Scalable single-instruction-multiple-data instructions
US8631173B2 (en) Semiconductor device
US7421595B2 (en) Device and method for managing a standby state of a microprocessor
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
WO2016014239A1 (en) ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
JP2004516572A (ja) スペキュレーティブ・レジスタの調整
CN113031914A (zh) 浮点舍入模式的控制方法、装置、设备及存储介质
CN111158757A (zh) 并行存取装置和方法以及芯片
JPH052485A (ja) パイプライン制御方式

Legal Events

Date Code Title Description
PB01 Publication
C06 Publication
SE01 Entry into force of request for substantive examination
C10 Entry into substantive examination
GR01 Patent grant
C14 Grant of patent or utility model
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140423

Termination date: 20190624

CF01 Termination of patent right due to non-payment of annual fee