CN102282537B - 处理器和减少从处理器中取程序指令的数量的方法 - Google Patents
处理器和减少从处理器中取程序指令的数量的方法 Download PDFInfo
- Publication number
- CN102282537B CN102282537B CN200980154584.5A CN200980154584A CN102282537B CN 102282537 B CN102282537 B CN 102282537B CN 200980154584 A CN200980154584 A CN 200980154584A CN 102282537 B CN102282537 B CN 102282537B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- instruction
- processor
- pipeline
- programmed instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 61
- 238000012545 processing Methods 0.000 claims abstract description 80
- 230000008569 process Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 11
- 230000009849 deactivation Effects 0.000 claims description 5
- 230000004913 activation Effects 0.000 claims description 4
- 230000003111 delayed effect Effects 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 3
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 3
- 238000004148 unit process Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 208000019901 Anxiety disease Diseases 0.000 description 1
- 230000036506 anxiety Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000007634 remodeling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
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
处理器(20),包括:一个或多个处理单元(40),一个执行流水线(32)和控制电路(28)。所述执行流水线至少包括第一和第二流水线级(44、48、52),它们被级联以使得:程序指令——其指定了待由流水线的连续循环中的处理单元执行的操作——由第一流水线级从存储器取出并传递给第二流水线级,这使得处理单元执行所指定的操作。所述控制电路被连接,以使得一旦确定了存在于该流水线的第一循环的第二流水线级中的一个程序指令将在该流水线的随后的一个循环中被再次执行,则该执行流水线在所述流水线级的一个中重新使用所述程序指令,而不从所述存储器重新取所述程序指令。
Description
技术领域
本发明总体涉及处理器架构,且具体地涉及用于增强处理器的处理效率的方法和系统。
背景技术
处理器,诸如数字信号处理器(DSP),通常将程序指令存储在指令存储器中,并且从存储器取指令以执行这些指令。一些存储器使用各种缓存机制来减少从指令存储器取指令的次数,所述缓存机制临时缓存先前用过的指令。
发明内容
本发明的实施方案提供了一种处理器,包括:
一个或多个处理单元;
一个执行流水线,至少包括第一流水线级(pipeline stage)和第二流水线级,它们被级联以使得:程序指令——其指定了待由该流水线的连续循环中的处理单元执行的操作——由所述第一流水线级从存储器取出并传递给所述第二流水线级,这使得所述处理单元执行所指定的操作;以及
控制电路,被连接以使得:一旦确定了存在于该流水线的第一循环的第二流水线级中的一个程序指令将在该流水线的随后的一个循环中被再次执行,则该执行流水线在流水线级中的一个中重新使用该程序指令,而不从所述存储器中重新取该程序指令。
在一些实施方案中,所述执行流水线包括N个流水线级,且其中所述控制电路被连接以通过确定所述程序指令被包含在具有少于N个程序指令的程序循环内来确定所述程序指令待要被再次执行。
在另一个实施方案中,控制电路被连接,以通过将所述程序指令从所述第二流水线级拷贝到所述第一流水线级,使得所述执行流水线重新使用所述程序指令。在一个替代的实施方案中,所述控制电路被连接,以通过使所述执行流水线将所述程序指令至少保持在所述第二流水线级以便在随后的循环中执行,使得所述执行流水线重新使用所述程序指令。在一个实施方案中,所述控制电路被连接,以通过禁止所述执行流水线从所述存储器取所述程序指令,使得所述执行流水线重新使用所述程序指令。
在一些实施方案中,所述一个或多个处理单元包括彼此并发操作的多个处理单元,其中每个给定程序指令指定了所述多个处理单元在执行给定程序指令时所应用的一个配置,以及所述处理器还包括互连电路,该互连电路被连接以响应于各自的配置而在每个给定程序指令中配置所述多个处理单元。所述互连电路可被连接以感测一个或多个处理单元的输出,并且根据通过感测到的输出而定义的条件来配置所述多个处理单元。在一个实施方案中,所述互连电路被连接以通过对选自下列各属性组成的一组属性中的至少一个进行设置来配置一个给定处理单元:激活/去激活(activation/deactivation)给定处理单元,选择输入到给定处理单元的一个或多个数据源,以及选择待由给定处理单元执行的操作。
在所公开的一个实施方案中,所述处理单元中的至少一个包括:内部存储器,保持一个包括多个元的内部数据矢量;以及处理逻辑,被连接以循环经过所述矢量元并且对所循环的矢量元操作。在另一个实施方案中,所述处理单元中的至少一个包括一个输入和一个输出,且被连接以:在输入处接受数据,延迟所述数据,以及在输出处产生被延迟的数据,以便被另一个处理单元处理。
在一些实施方案中,处理器包括:临时存储存储器;以及仲裁电路,该仲裁电路被连接以响应于识别一个给定程序指令——其包含了由各自的两个或更多个处理元件提出的访问给定资源的两个或更多个请求——而使执行流水线停转,以在所述临时存储存储器中存储由所述请求指定的各自的数据,以允许所述两个或更多个处理元件在所述执行流水线停转时访问所述给定资源,以及响应于所述请求将从所述资源返回的各自的结果存储在所述临时存储存储器内。在一个实施方案中,所述资源包括共享存储器。所述处理元件可包括所述处理单元中的一个或多个。所述处理元件的一个或多个可在所述处理器外部。
根据本发明的一个实施方案,还提供了一种计算方法,包括:
操作一个或多个处理单元;
操作一个执行流水线,该执行流水线至少包括第一流水线级和第二流水线级,它们被级联以使得:程序指令——其指定了待由该流水线的连续循环中的处理单元执行的操作——由所述第一流水线级从存储器取出并传递给所述第二流水线级,这使得所述处理单元执行所指定的操作;
确定存在于该流水线的第一循环的第二流水线级中的一个程序指令将在该流水线的随后的一个循环中被再次执行;以及
使得该执行流水线在所述流水线级的一个中重新使用该程序指令,而不从所述存储器重新取所述程序指令。
附图说明
图1是根据本发明的一个实施方案而示意性地示出了一个处理器的方框图。
图2是根据本发明的一个实施方案而示意性地示出了用于选择性地取程序指令的一种方法。
图3是根据本发明的一个实施方案而示意性地示出了处理单元(PU)40的方框图。
图4是根据本发明的一个实施方案而示意性地示出了一种PU配置的方框图。
图5是根据本发明的一个实施方案而示意性地示出了一种用于在具有多个PU的处理器内进行仲裁的方法的流程图。
具体实施方式
概览
在许多处理器中,从指令存储器取程序指令消耗了大量的电能。由指令取操作消耗的电能通常主导了处理器的总电能消耗,尤其在具有大指令宽度的处理器中。
下面描述的本发明的实施方案提供了用于减少从具有流水线架构的处理器的指令存储器中取程序指令的数量的方法和系统。在流水线架构中,所述处理器包括一个执行流水线,该执行流水线具有两个或更多个流水线级,所述流水线级取程序指令、解码程序指令以及使得程序指令执行。
本文描述的方法和系统利用了如下事实:当前预期取的指令可能已经存在于执行流水线中。在一些实施方案中,所述处理器包括控制电路,所述控制电路确定预期取的程序指令的先前实例(instance)已经存在于执行流水线中,并且使得该流水线重新使用已有的指令而不是从指令存储器中重新取该指令。
指令可被重新使用的一个常见场景发生在,当处理器执行比流水线深度短的程序循环时(例如,当循环中的指令数目比流水线级的数目少时)。当第二次或更高次迭代执行这样的短循环时,来自先前循环迭代的程序指令已经在流经该流水线。在一些实施方案中,控制电路识别属于短循环的一部分的指令,并且使得该处理器重新使用在流水线内的这些指令而无需访问指令存储器。通过将一个给定指令拷贝到流水线的输入或使得流水线将该指令保持在相同位置持续另一时钟周期,可以重新使用该给定指令。
通常,重新使用执行流水线内的指令要比从指令存储器取该指令消耗少得多的电能。因此,与已知技术相比,本发明所公开的方法和系统提供了电能消耗方面的明显减少。由所公开的技术可实现的电能消耗的减少通常依赖于使用短程序循环对各种类型的软件任务进行编程的能力。本文描述了增强了处理器就短循环方面来应付不同软件任务的能力的硬件机制的几个实施例。
不同于一些已知的将先前用过的指令缓存在专用存储器中的指令缓存技术,本文描述的方法和系统使用固有地(inherently)流过现有的流水线级的指令,且不需要额外的存储器元件来缓存指令。大多数已知的指令缓存方案通常旨在减少访问延迟并且需要相对大的存储器空间来实现这一目标。同样地,这些方案通常对总体指令取方案的电能消耗的影响很小或者没有影响(有时有负面影响)。因此,所公开的方法和系统对于缓存和非缓存指令处理器都是有益的。此外,与缓存技术相反,本文所公开的方法和系统使得能够重新使用程序指令,以及对于具体程序代码段的所生成的电能节省,是完全确定性的而不是统计性的,且程序员能很容易地预期并且计划。
系统描述
图1是根据本发明的一个实施方案,示意性地示出一个处理器20的方框图。本文描述的方法和系统尤其有利于这样的计算任务:在整个数据矢量或阵列上执行给定的一系列操作。这种任务一般在数字信号处理(DSP)中常见,尤其(但不是仅仅)在正交频分复用(OFDM)和正交频分多址(OFDMA)系统的基带处理中常见。
在本实施例中,处理器20包括超大指令字(VLIW)处理器,该处理器用于在依照IEEE802.16标准,称为WiMAX,而运行的无线通信系统中执行DSP功能。然而,替代地,处理器20可以用在执行任何其他适合的通信标准或协议的通信系统中,这些通信标准或协议诸如长期演进(LTE)、扩展全球平台(XGP)、WiFi、全球移动通信系统(GSM)、EDGE、码分多址2000(CDMA2000)、仅数据演进(EVDO)、宽带码分多址(WCDMA)、时分同步码分多址(TD-SCDMA)、高速分组接入(HSPA)或者个人手持电话系统(PHS)。进一步替代地,处理器20可包括用于执行任何其他适当功能的任何其他适合的处理器。
处理器20执行存储在指令存储器24中的程序指令。控制电路28,将所述指令提供给执行流水线32,这将在下文中进一步描述。执行流水线包括两个或更多个流水线级42,所述流水线级取程序指令、解码程序指令和执行程序指令。在图1的实施方案中,处理器20包括标为42A和42B的两个流水线级。流水线级42A取程序指令并且解码程序指令,而流水线级42B执行程序指令。所述流水线架构使得能够以高效方式处理和执行程序指令。在一个给定的时钟周期内,流水线级42B执行某一指令,而同时流水线级42A取并且解码下一个指令。
程序指令指定待被处理器20执行的操作,诸如算术操作、数据移动操作、流控制操作,或任何其他适合的操作。处理器20包括多个处理单元(PU)40,所述处理单元(PU)40执行在程序指令中指定的操作和/或临时地存储数据(例如,通用寄存器)。例如,图1示出了标为40A…40D的四个PU。不同的PU可以具有相似的或不同的设计或配置。通常,每个程序指令指定了待要被多个各自的PU所执行的多个操作。
PU被数据和控制交换网(DCSM)36所配置和控制。所述DCSM通常包括一组多路复用器,它们根据某一互连设置将不同PU的输入和输出互连。在执行给定程序指令期间所应用的互连设置是在该指令中指定的。当执行给定指令时,执行流水线32的输出被提供给DCSM36,以及可能连同控制电路的某些输出,这将在下文进一步详述,以及连同PU的输出。如流水线32的程序指令输出中所指定的,所述DCSM配置不同的PU,将PU的输入和输出互连,并且给PU提供数据。也就是说,执行流水线使得PU执行在程序指令中指定的操作。在下文更详细地描述PU40和DCSM36的功能。在一些实施方案中,DCSM36给控制电路28提供信息,诸如到IFC64的分支信息,到CEC68的条件信息,以及指令信息。
在当前实施例中,每个程序指令包括三个部分:(1)待由PU执行的操作的操作码;(2)DCSM配置设置;以及,(3)提供给DCSM用于执行指令的数据。每个流水线级包括三个单元,它们分别处理程序指令的所述三个部分。操作码处理单元44处理命令操作码,DCSM选择单元48处理DCSM设置,以及中间单元52处理待提供给DCSM的数据。(虽然图1的配置是关于双级流水线,但本文描述的方法和系统可用于具有任何其他适当数目的流水线级以及级之间的功能分割的任何其他适当的执行流水线。)
控制电路28包括一个从存储器24加载程序指令的取指示器(FI)60。指令流控制器(IFC)64管理程序流,例如,使程序指令的地址前进,处理分支指令以及其他与任务相关的程序计数器(PC)。具体地,IFC64产生并且输出用于取下一个程序指令的PC值。处理单元启用器(PUE)56产生启用/禁用信号给处理器20的不同的元件。
条件执行控制器(CEC)68基于操作数比较来执行对PU40的条件启用、条件禁用和条件配置。在一个给定的时钟周期内,CEC68比较两个操作数,并且基于比较结果将一组输入控制信号翻译成一组输出控制信号,所述输出控制信号控制(例如,启用、禁用、互连或配置)所述PU。通常,PUE和CEC共同运行以使用DCSM配置和控制所述PU。PUE56通常基于在指令中传递的数据和由CEC68提供的信息来决定,在给定指令周期中启用哪些PU。
在一些实施方案中,处理器20还包括仲裁器72,它使得多个PU能够在同一指令周期内无死锁地访问处理器资源(例如存储器74)。在下文进一步详述仲裁器的功能。在一些实施方案中,仲裁器72也可以管理处理器20外部的其他元件的访问,所述其他元件与PU40一起竞争对所讨论的资源的访问。
虽然图1的实施方案陈述了某种处理器配置,但这个选择完全是以举例方式作出的。本发明的原理绝不限于此配置,且可用于任何其他适当的配置。处理器20的一些对于展示所公开的技术并非必需的元件,为清楚考虑已略去。
通过选择性地取程序指令来减少电能消耗
在许多处理器架构中,从指令存储器24取指令消耗了大量的电能。由这些指令取操作消耗的电能通常成为处理器的总电能消耗的主导因素,尤其是在具有大指令宽度的处理器中。
本文描述的本发明的实施方案提供了用于减少从指令存储器取指令的次数的方法和系统。本文描述的方法和系统基于下列事实:既然处理器具有流水线架构,当前预期取的指令可能已经存在于执行流水线内。这样的指令可以在流水线内重新使用,而无需从指令存储器再次取它。
这一场景例如在该处理器执行短于流水线深度的程序循环时(也即,当循环中的指令数目小于流水线级的数目时)是常见的。当第二次或更高次迭代执行这样的循环时,来自先前的循环迭代的程序指令的实例已经存在于流水线中。因此,该处理器可以在流水线内重新使用这些先前的指令实例,而无需访问指令存储器。
该处理器可以重新使用给定指令,例如,通过将其拷贝回流水线输入,或通过把该指令保持在该流水线内持续一个额外的时钟周期(即,防止流水线将指令移位)。在上述任一情况中,重新使用流水线内的指令仅仅消耗了从指令存储器或从缓存取该指令所需的电能的一部分。同样地,本文描述的方法和系统显著地减少了处理器的总电能消耗。虽然本文描述的方法和系统对大指令字DSP是最优化的,但是它们在各种其他不同类型的处理器中也是有利的。
在图1的示例实施方案中,流水线32具有两个级。在此配置中,处理器20可以执行单指令循环而不反复访问指令存储器。(通常是在执行第一次循环迭代时访问指令存储器。后续的循环迭代重新使用已经存在于流水线内的指令。)
在两个流水线级的情况下,控制电路28可以重新使用指令,通过:使得将该指令保持在流水线内的同一位置上持续一个额外的时钟周期,并且禁止处理器从指令存储器取指令。与从指令存储器的同一地址反复地取同一个指令相比,禁止取指令而消耗的功率显著地更少。
在一些实施方案中,每个程序指令包括一个标记,该标记指示了该指令是否是单指令循环的一部分。基于该标记,IFC64产生了一个控制信号以指示:(1)当前指令是单指令循环的一部分;以及(2)当前循环迭代是第二次或更高次迭代。响应于此信号,PUE56禁止FI60从指令存储器取该指令,并且使得流水线32将该指令保持在相同位置上持续一个额外的时钟周期(通常除了沿着流水线将指令移位之外)。结果,在不反复地访问指令存储器的前提下重新执行了指令。将流水线内容保持一个额外的时钟周期的技术进一步减少了电能消耗,因为它最小化了处理器的控制电路中的切换。
在替代实施方案中,控制电路28可包括一个硬件机制(在图中未示出),用于将指令拷贝(环回)回到流水线的输入,以重新执行所述指令而不从指令存储器24重新取它们。进一步替代地,控制电路28可以识别流水线内可重新使用的指令,而不使用标志程序循环的专用控制信号。例如,所述控制电路可以将下一个指令的程序地址(PC值)和已经在流水线内的指令的程序地址作比较。
图2是根据本发明的一个实施方案的示意性地示出一种用于选择性地取程序指令的方法的流程图。该方法始于指令检查步骤80,控制电路28检查预期取的下一个程序指令的地址。在核对步骤84,控制电路(例如,IFC64)核对该指令是否为短于流水线深度的循环的第二次或更高次迭代的一部分。(为简便,本文将短于流水线深度的循环称为短循环。)
在外部取步骤88,如果该指令不是短循环的第二次或更高次迭代的一部分,则控制电路(通常是FI60)从指令存储器24取该指令。另一方面,在重新使用步骤92,如果该指令是短循环的第二次或更高次迭代的一部分,则控制电路重新使用流水线内的该指令。在执行步骤96,在上述任一情况下,流水线32都处理该指令,且该指令通过DCSM36提供给PU40以便执行。
虽然本文描述的实施方案主要陈述了属于短程序循环的部分的指令,但是本文描述的方法和系统也可以被用于其中预期取的指令已存在于流水线内的任何其他场景中。
用于实施短程序循环的技术
如上所述,重新使用执行流水线内的指令在执行短程序循环方面尤其有用。在一些实施方案中,处理器20包括使得能够使用短循环来编码不同类型的软件任务的额外的特征和机制。使用这些机制,给定软件任务的较大部分可以用短程序循环来编码。从而,由上面公开的方法使得在电能消耗方面的减少可以应用到软件任务的较大部分。
例如,并行地操作多个PU(如在图1的处理器20中)使得能够将循环“平面化”,也即,写短程序循环,其中每个指令被分布在多个PU中。在一些实施方案中,此能力通过PU40的灵活配置而增强,此配置是由DCSM36实现的。在一些实施方案中,根据由一个或多个PU40输出的数据所定义的条件,可配置PU40的一个或多个属性。通常,每个PU可以单独配置而独立于其他PU。在一个给定的指令周期中,可配置的PU属性可包括:激活或去激活该PU,选择输入到该PU的一个或多个数据源,从该PU支持的多个操作中选择一个待由该PU执行的操作,和/或任何其他合适的属性。
上述灵活的PU配置机制,提供了使用等价的短循环(其长度短于处理器的执行流水线的深度的循环)来表示嵌套循环和长循环的能力。然后可通过如上所述的重新使用已存在于执行流水线内的指令来实现所产生的短循环,从而降低电能消耗。
例如,考虑一个软件任务,其常规地被公式化表示为具有内循环和外循环的嵌套循环。假定内循环具有M个指令。当并行地使用多个PU时,嵌套循环可被等价地编码成单个短循环,其中每个指令都指定了待要被多个各自的PU执行的多个操作。在等价的表示中,PU被配置为有条件地执行外循环的操作——每M次迭代执行一次。当内循环迭代的次数少且外循环迭代的次数多时,此方法尤其有益。
通常,因为每个指令可以指定待由PU执行的多个操作,并行地操作多个可配置的PU提供了将指定长的操作序列的循环写成短循环的能力。该序列中不同操作之间的变化(例如索引或变量值的变化)可以由不同PU的条件配置表示。
附加地或替代地,将软件任务写成短循环的能力可通过如下方式增强:使得每个PU能够保持内部数据矢量,并且以循环方式访问以及处理每个时钟周期内的连续的矢量元。例如,在通信和信号处理应用中遇到的许多滤波任务,涉及用一个滤波器系数矢量(例如,有限脉冲响应(FIR)滤波器)以循环方式对一个已采样信号进行滤波(卷积)。将数据矢量内部地存储在PU中而不是在外部存储器中,大大地减少了由PU请求的存储器访问操作的次数。因为存储器访问资源通常是昂贵的且因此是有限的,减少它们使得滤波任务能够使用显著更短的循环来进行编码。
图3是根据本发明的一个实施方案示意性地示出了PU40的方框图。在本实施例中,PU40包括处理逻辑100和一个内部存储器——其保持了系数矢量104。矢量104包括多个元,例如滤波器系数。系数矢量可例如被一个或多个先前的程序指令或被外部配置指定。在一个给定的时钟周期内,处理逻辑以循环方式从一个矢量元前进到下一个矢量元,执行一个给定操作(例如,乘法)并且将操作结果输出到DCSM。
因为不需要从外部存储器取矢量元,所以存储器访问资源的需要大大减少,尤其当所执行的任务需要加载多个输入且存储器访问资源有限时。因而,可以使用显著更短的循环来对滤波操作进行编码,且因此可以通过重新使用已经存在于处理器的执行流水线内的指令来实现滤波操作,这导致电能消耗大大减少。
上述机制(平面化嵌套循环、处理系数矢量)可以不同的方式彼此结合。例如,如果仅仅每n个操作使矢量104前进一次,则通过定义基于内部循环的值而条件性地使该矢量的一个指令前进,可在外部循环中使该矢量前进。
此外附加地或替代地,通过将所述PU中的一个或多个PU配置成具有延迟元件的功能,使用短循环对软件任务进行编码的能力可以进一步增强。当执行某一顺序过程(例如这样的过程,其中某一PU的输出用作另一PU的输入)时,这样的延迟元件使得给定数据可以在过程的不同阶段使用,而无需从存储器重新取数据。如上文所解释,减少对存储器访问资源的需要,使得循环尺寸大大地减少。在一些实施方案中,延迟元件是流水线化的。也就是说,在接收输入数据n和产生各自的延迟输出之间的时间间隔内,具有延迟d的流水线化的延迟元件可以顺序地存储数据输入n+1、n+2、…至n+d-1,从而增加了它在单指令循环中的效率。
图4是根据本发明的一个实施方案的示意性地示出一种PU配置的方框图。在本实施例中,标为PU1…PU6的六个PU被配置为执行某一顺序过程。这些PU中的每一个都使用前一PU的输出作为输入。另外,PU6接受另一个PU(标为PU7)的输出作为输入。PU7对PU2的输出进行操作。
流平衡PU108被配置为:在将PU2的输出作为输入提供给PU7之前,将受控延迟引入到PU2的输出。流平衡PU108的延迟被设置以使得PU108和PU7的总延迟等于PU3、PU4和PU5的总延迟。尽管在不同的时钟周期需要数据,但通过使用流平衡PU,PU2的输出可以用作到PU3和PU7的输入。如果没有流平衡特征,那么PU2的输出将不得不存储在存储器中,且然后在适当时间取出,以将其提供给PU7。如上文所解释,减少存储器访问操作的次数对使用更短的循环对软件任务进行编码是有贡献的。
流平衡PU可包括配置为引入期望延迟的PU40中的一个。在给定指令中的PU配置可以配置将任何期望数目的PU用作流平衡PU。替代地或附加地,处理器20可包括一个或多个流平衡PU,其专用于此具体功能。由PU108引入的延迟可被程序指令或被外部配置指定。
当并行地部署多个PU时,两个或更多个PU可以在同一程序指令中请求访问同一处理器资源(例如图1中的存储器74)。在某些实施方案中,上面图1的仲裁器72无死锁地解决了这样的多个请求。由仲裁器72提供的无死锁操作使得PU40能够并发操作,而不需要将对同一资源的请求在不同指令之间进行分割。因此,大大地增强了使用短循环对软件任务进行编码的能力。
图5是根据本发明的一个实施方案的示意性地示出用于在具有多个PU40的处理器20内的无死锁仲裁的方法的流程图。在图5的方法中,图1的仲裁器72通过多个竞争元件来控制对给定资源的访问。该资源可包括一个存储器或任何其他适当类型的资源。如上所述,竞争元件可包括一个或多个PU40和/或处理器20外部的一个或多个元件。在一个具体实施方式中,这样的外部竞争元件可包括与处理器20相似的另一个处理器的PU。
本方法基于如下机制:其中给每个竞争的PU40分配了一个临时存储空间,用于存储所请求的存储器访问操作的地址,并且用于存储由存储器访问操作返回给PU的数据。临时存储空间(例如,寄存器)可以居于个体PU内、仲裁器72内或在任何其他适当的位置。
下文的说明涉及多个PU,它们为访问存储器资源而竞争。当为执行某一存储器访问操作而访问存储器资源时,给定PU指定了所请求的存储器地址。在执行存储器访问操作之后,数据从存储器返回给PU。然而在替代的实施方案中,图5的方法可用于不同其他类型的共享资源,诸如可被处理器20访问和被其他处理器访问的处理引擎。通常,访问共享资源的每个PU指定了用于执行所请求的操作的某些信息,且该资源将某些数据作为结果返回。
图5的方法始自,在指令仲裁步骤110,仲裁器72检测一个程序指令,在该程序指令中多个PU请求访问一个给定的存储器资源。所讨论的指令包括多个各自的PU执行存储器访问操作的多个请求,其中每个请求指定了一个相应的存储器地址。在停转步骤114,所述仲裁器将由不同PU请求的地址存储在临时存储空间之内,并且将执行流水线32停转。流水线的停转可以在地址的存储之前、之后或同时执行。在访问许可步骤118,仲裁器许可有且仅有一个提出请求的PU访问存储器。
在许可核对步骤122,每个提出请求的PU核对它是否被许可访问存储器。在访问步骤126,一旦一个给定PU被许可访问,则该PU访问存储器并且执行所请求的操作。所讨论的存储器访问操作返回某些数据。
在返回数据存储步骤130,所述仲裁器将由存储器访问操作所返回给PU的数据存储在临时存储空间内。在终止核对步骤134,仲裁器核对是否所有提出请求的PU都得到了服务。在访问重新许可步骤138,如果不是所有PU都已得到服务,则仲裁器许可尚未得到服务的另一个PU独占地访问存储器资源。然后该方法循环回至上面的步骤122,以及被许可访问的PU访问所述存储器。在流水线释放步骤142,当所有提出请求的PU都已得到服务时,所述仲裁器释放所述执行流水线。
如上所述,对于各种不同类型的共享资源和在这样的资源上执行的操作,图5的仲裁方案可以用直接的方式来总结。通常,所述仲裁器将由PU提供的信息存储在临时存储空间内,以执行所请求的操作。在执行所述操作之后,所述仲裁器将从所述资源返回的数据(通常是操作的结果)存储在临时存储空间之内。
图5的仲裁过程是示例过程,其完全是以举例方式选择的。在替代实施方案中,处理器20可以应用各种其他无死锁仲裁方案,其中:(1)给每个PU提供临时存储空间,用于所请求的地址(或者执行该操作所需的其他信息)以及用于返回的数据;(2)只要存储器访问被拒绝,则所请求的地址就被保持;以及,(3)至少从访问被许可起一直到执行流水线被释放为止保持所返回的数据。
本文描述的仲裁方案为在任何期望数目的为一个指令行内的资源而争夺的对PU之间共享的资源提供了无死锁的访问。此外,所公开的仲裁方案允许多个处理器20竞争共享资源,而无死锁之虞。
虽然本文描述的实施方案主要陈述了在无线通信系统中执行信号处理功能的超长指令字(VLIW)处理器,但是本发明的原理也可以用于运行在长数据流上的其他处理器和其他应用中,诸如网络处理器(NP)。
应理解,上文描述的实施方案均是以举例方式引用,且本发明不限于上文所具体示出和描述的内容。相反地,本发明的范围包括了上述各种不同特征的组合和子组合,以及本领域技术人员在阅读前述说明书之后可想到的但在现有技术中未公开的所述特征的变体和改型。
Claims (25)
1.一种超长指令字处理器,包括:
一个或多个处理单元;
一个执行流水线,至少包括第一流水线级和第二流水线级,它们被级联以使得:指定了待由该流水线的连续循环中的处理单元执行的操作的程序指令由所述第一流水线级从存储器取出并传递给所述第二流水线级,这使得所述处理单元执行所指定的操作;以及
控制电路,被连接以:确定当在该流水线的第一循环中被取出、解码或执行的一个程序指令将在该流水线的随后的一个循环中被再次执行时,则通过将所述程序指令从所述第二流水线级拷贝到所述第一流水线级、或者通过使所述执行流水线将所述程序指令的拷贝至少保持在所述第一流水线级以便在随后的循环中执行,来使得该执行流水线在流水线级中的一个中重新使用所述程序指令。
2.根据权利要求1所述的处理器,其中所述执行流水线包括N个流水线级,且其中所述控制电路被连接以通过确定所述程序指令被包含在具有少于N个程序指令的程序循环内来确定所述程序指令待要被再次执行。
3.根据权利要求1所述的处理器,其中所述控制电路被连接,以通过禁止所述执行流水线从所述存储器取所述程序指令,使得所述执行流水线重新使用所述程序指令。
4.根据权利要求1-3中任一所述的处理器,其中所述一个或多个处理单元为彼此并发操作的多个处理单元,其中每个给定程序指令指定了该多个处理单元在执行给定程序指令时待被应用的一个配置,以及所述处理器包括互连电路,该互连电路被连接以响应于该多个处理单元待被应用的各自的配置而在每个给定程序指令中配置该多个处理单元。
5.根据权利要求4所述的处理器,其中所述互连电路被连接以感测一个或多个处理单元的输出,并且根据通过感测到的输出而定义的条件来配置所述多个处理单元。
6.根据权利要求4所述的处理器,其中所述互连电路被连接以通过对选自下列各属性组成的一组属性中的至少一个进行设置来配置一个给定处理单元:激活/去激活给定处理单元,选择输入到给定处理单元的一个或多个数据源,以及选择待由给定处理单元执行的操作。
7.根据权利要求1-3中任一所述的处理器,其中所述处理单元中的至少一个包括:
内部存储器,保存一个包括多个元的内部数据矢量;以及
处理逻辑电路,被连接以循环经过所述矢量的多个元并且对所被循环经过的所述矢量的多个元操作。
8.根据权利要求1-3中任一所述的处理器,其中所述处理单元中的至少一个包括一个输入和一个输出,且被连接以:在输入处接受数据,延迟所述数据,以及在输出处产生被延迟的数据,以便被另一个处理单元处理。
9.根据权利要求1-3中任一所述的处理器,还包括:
临时存储存储器;以及
仲裁电路,被连接以响应于识别一个给定程序指令而使所述执行流水线停转,所述给定程序指令包含了由两个或更多个处理元件分别提出的访问给定资源的两个或更多个请求;以在所述临时存储存储器中存储由所述请求指定的相应的数据;以允许所述两个或更多个处理元件在所述执行流水线停转时访问所述给定资源;以响应于所述请求将从所述给定资源返回的相应的结果存储在所述临时存储存储器内。
10.根据权利要求9所述的处理器,其中所述给定资源包括共享存储器。
11.根据权利要求9所述的处理器,其中所述处理元件包括所述处理单元中的一个或多个。
12.根据权利要求9所述的处理器,其中所述处理元件中的一个或多个在所述处理器外部。
13.一种减少从根据权利要求1所述的处理器中取程序指令的数量的方法,包括:
操作一个或多个处理单元;
操作执行流水线;
确定在该流水线的第一循环中在执行流水线的一个级中目前被取出、解码或执行的一个程序指令将在该流水线的随后的一个循环中被再次执行;以及
通过将所述程序指令从所述第二流水线级拷贝到所述第一流水线级、或者使得所述执行流水线将所述程序指令的拷贝至少保持在所述第一流水线级以便在随后的循环中执行,来使得该执行流水线在所述第一流水线级和所述第二流水线级的一个中重新使用所述程序指令。
14.根据权利要求13所述的方法,其中所述执行流水线包括N个流水线级,且其中确定所述程序指令待要被再次执行包括确定所述程序指令被包含在具有少于N个程序指令的程序循环内。
15.根据权利要求13所述的方法,其中将所述程序指令从所述第二流水线级拷贝到所述第一流水线级,是以与从存储器取程序指令相比消耗少得多的电能的方式实施的。
16.根据权利要求13所述的方法,其中使得所述执行流水线重新使用所述程序指令包括禁止所述执行流水线从所述存储器取所述程序指令。
17.根据权利要求13-16中任一所述的方法,其中所述一个或多个处理单元为彼此并发操作的多个处理单元,其中每个给定程序指令指定了该多个处理单元在执行该给定程序指令时待被应用的一个配置,且其中操作处理单元包括响应于该多个处理单元待被应用的各自的配置而在每个给定程序指令中配置该多个处理单元。
18.根据权利要求17所述的方法,其中配置该多个处理单元包括感测一个或多个处理单元的输出,并且根据通过感测到的输出而定义的条件来配置该多个处理单元。
19.根据权利要求17所述的方法,其中配置该多个处理单元包括,对于一个给定处理单元,对选自下列各属性组成的一组属性中的至少一个进行设置:激活/去激活给定处理单元,选择输入到给定处理单元的一个或多个数据源,以及选择待由给定处理单元执行的操作。
20.根据权利要求13-16中任一所述的方法,其中所述处理单元中的至少一个包括内部存储器,该内部存储器保存一个包括多个元的内部数据矢量;且其中操作所述处理单元包括循环经过该矢量的多个元并且对所被循环经过的该矢量的多个元进行操作。
21.根据权利要求13-16中任一所述的方法,其中所述处理单元中的至少一个具有一个输入和一个输出,且其中操作所述处理单元包括配置所述处理单元中的至少一个,以在输入处接受数据,延迟所述数据,以及在输出处产生被延迟的数据,以便被另一个处理单元处理。
22.根据权利要求13-16中任一所述的方法,其中操作所述处理单元包括:
响应于识别一个给定程序指令而使所述执行流水线停转,所述给定程序指令包含了由两个或更多个处理元件分别提出的访问给定资源的两个或更多个请求;
将由所述请求指定的相应的数据存储在临时存储存储器内;
允许所述两个或更多个处理元件在所述执行流水线停转时访问所述给定资源;并且
响应于所述请求将从所述给定资源返回的相应的结果存储在所述临时存储存储器内。
23.根据权利要求22所述的方法,其中所述给定资源包括共享存储器。
24.根据权利要求22所述的方法,其中所述处理元件包括所述处理单元中的一个或多个。
25.根据权利要求22所述的方法,其中所述处理元件中的一个或多个在所述处理器外部。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/354,034 | 2009-01-15 | ||
US12/354,034 US9170816B2 (en) | 2009-01-15 | 2009-01-15 | Enhancing processing efficiency in large instruction width processors |
PCT/IB2009/055923 WO2010082100A1 (en) | 2009-01-15 | 2009-12-23 | Enhancing processing efficiency in large instruction width processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102282537A CN102282537A (zh) | 2011-12-14 |
CN102282537B true CN102282537B (zh) | 2015-10-14 |
Family
ID=42319849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980154584.5A Active CN102282537B (zh) | 2009-01-15 | 2009-12-23 | 处理器和减少从处理器中取程序指令的数量的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9170816B2 (zh) |
EP (1) | EP2377014A4 (zh) |
JP (1) | JP2012515388A (zh) |
CN (1) | CN102282537B (zh) |
WO (1) | WO2010082100A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079303A1 (en) * | 2010-09-24 | 2012-03-29 | Madduri Venkateswara R | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
JP5630396B2 (ja) * | 2011-07-27 | 2014-11-26 | 高田 周一 | Dma制御装置 |
US20120185714A1 (en) * | 2011-12-15 | 2012-07-19 | Jaewoong Chung | Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques |
EP2608015B1 (en) * | 2011-12-21 | 2019-02-06 | IMEC vzw | System and method for implementing a multiplication |
GB2525262B (en) * | 2014-04-17 | 2021-06-02 | Advanced Risc Mach Ltd | Sharing processing results between different processing lanes of a data processing apparatus |
US10514928B2 (en) | 2014-04-17 | 2019-12-24 | Arm Limited | Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result |
US9817466B2 (en) | 2014-04-17 | 2017-11-14 | Arm Limited | Power saving by reusing results of identical micro-operations |
US9933841B2 (en) | 2014-04-17 | 2018-04-03 | Arm Limited | Reuse of results of back-to-back micro-operations |
US9898292B2 (en) * | 2015-02-25 | 2018-02-20 | Mireplica Technology, Llc | Hardware instruction generation unit for specialized processors |
GB2551523B (en) * | 2016-06-20 | 2019-07-03 | Imagination Tech Ltd | Livelock recovery circuit |
US10684856B2 (en) | 2017-07-11 | 2020-06-16 | International Business Machines Corporation | Converting multiple instructions into a single combined instruction with an extension opcode |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4566063A (en) * | 1983-10-17 | 1986-01-21 | Motorola, Inc. | Data processor which can repeat the execution of instruction loops with minimal instruction fetches |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
US6085315A (en) * | 1997-09-12 | 2000-07-04 | Siemens Aktiengesellschaft | Data processing device with loop pipeline |
US6076159A (en) * | 1997-09-12 | 2000-06-13 | Siemens Aktiengesellschaft | Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline |
FR2770659A1 (fr) * | 1997-10-31 | 1999-05-07 | Sgs Thomson Microelectronics | Processeur de traitement perfectionne |
US6052771A (en) * | 1998-01-20 | 2000-04-18 | International Business Machines Corporation | Microprocessor with pipeline synchronization |
US6163839A (en) * | 1998-09-30 | 2000-12-19 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
EP1004959B1 (en) * | 1998-10-06 | 2018-08-08 | Texas Instruments Incorporated | Processor with pipeline protection |
EP1039375A1 (en) | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Method and apparatus for implementing zero overhead loops |
US6832306B1 (en) * | 1999-10-25 | 2004-12-14 | Intel Corporation | Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions |
US6598155B1 (en) * | 2000-01-31 | 2003-07-22 | Intel Corporation | Method and apparatus for loop buffering digital signal processing instructions |
EP1459177A2 (en) * | 2001-12-14 | 2004-09-22 | Koninklijke Philips Electronics N.V. | Data processing system having multiple processors |
KR100491530B1 (ko) * | 2002-05-03 | 2005-05-27 | 엘지전자 주식회사 | 모션 벡터 결정 방법 |
US7571303B2 (en) * | 2002-10-16 | 2009-08-04 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
JP4594666B2 (ja) * | 2004-07-12 | 2010-12-08 | 富士通株式会社 | 再構成可能な演算装置 |
JP4527571B2 (ja) | 2005-03-14 | 2010-08-18 | 富士通株式会社 | 再構成可能演算処理装置 |
US8966223B2 (en) * | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
JP5233078B2 (ja) | 2006-03-23 | 2013-07-10 | 富士通セミコンダクター株式会社 | プロセッサ及びその処理方法 |
US20080148020A1 (en) * | 2006-12-13 | 2008-06-19 | Luick David A | Low Cost Persistent Instruction Predecoded Issue and Dispatcher |
US7571305B2 (en) * | 2007-01-11 | 2009-08-04 | Arm Limited | Reusing a buffer memory as a microcache for program instructions of a detected program loop |
-
2009
- 2009-01-15 US US12/354,034 patent/US9170816B2/en active Active
- 2009-12-23 EP EP09838186A patent/EP2377014A4/en not_active Withdrawn
- 2009-12-23 CN CN200980154584.5A patent/CN102282537B/zh active Active
- 2009-12-23 WO PCT/IB2009/055923 patent/WO2010082100A1/en active Application Filing
- 2009-12-23 JP JP2011545806A patent/JP2012515388A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4566063A (en) * | 1983-10-17 | 1986-01-21 | Motorola, Inc. | Data processor which can repeat the execution of instruction loops with minimal instruction fetches |
Also Published As
Publication number | Publication date |
---|---|
EP2377014A1 (en) | 2011-10-19 |
US9170816B2 (en) | 2015-10-27 |
CN102282537A (zh) | 2011-12-14 |
JP2012515388A (ja) | 2012-07-05 |
EP2377014A4 (en) | 2012-05-30 |
US20100180102A1 (en) | 2010-07-15 |
WO2010082100A1 (en) | 2010-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102282537B (zh) | 处理器和减少从处理器中取程序指令的数量的方法 | |
CN102782672B (zh) | 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型 | |
US20130054939A1 (en) | Integrated circuit having a hard core and a soft core | |
KR101723121B1 (ko) | 판독 및 기입 마스크들에 의해 제어되는 벡터 이동 명령어 | |
EP1134654A1 (en) | Program product and data processor | |
JP2012515388A5 (zh) | ||
KR20160046331A (ko) | 범용 유닛을 기반으로 하는 고성능 프로세스 시스템 및 방법 | |
EP1124181B1 (en) | Data processing apparatus | |
KR20170097633A (ko) | 융합된 단일 사이클 증가-비교-점프를 수행하기 위한 명령어 및 로직 | |
US5666535A (en) | Microprocessor and data flow microprocessor having vector operation function | |
CN111027690B (zh) | 执行确定性推理的组合处理装置、芯片和方法 | |
CN112214241A (zh) | 一种分布式指令执行单元的方法及系统 | |
EP3314397A1 (en) | Locking operand values for groups of instructions executed atomically | |
JP6918051B2 (ja) | マルチスレッドプロセッサの命令キャッシュ | |
EP1502182B1 (en) | Automatic task distribution in scalable processors | |
US20230195526A1 (en) | Graph computing apparatus, processing method, and related device | |
CN101727435A (zh) | 一种超长指令字处理器 | |
US20030120905A1 (en) | Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor | |
Gray et al. | Viper: A vliw integer microprocessor | |
CN114138334A (zh) | 一种循环程序执行方法、装置以及处理器 | |
EP3314404A1 (en) | Processing header to interpret information regarding a group of instructions | |
CN113795823A (zh) | 处理器资源的可编程控制 | |
JPH11119998A (ja) | 情報処理装置 | |
US20030182511A1 (en) | Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor | |
WO2005036384A2 (en) | Instruction encoding for vliw processors |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Israel David Xia sellum Patentee after: Sony semiconductor Israel Ltd. Address before: Hodehasaron, Israel Patentee before: Altair Semiconductor Co.,Ltd. |