CN1809810B - 指令控制数据处理设备 - Google Patents

指令控制数据处理设备 Download PDF

Info

Publication number
CN1809810B
CN1809810B CN2004800176588A CN200480017658A CN1809810B CN 1809810 B CN1809810 B CN 1809810B CN 2004800176588 A CN2004800176588 A CN 2004800176588A CN 200480017658 A CN200480017658 A CN 200480017658A CN 1809810 B CN1809810 B CN 1809810B
Authority
CN
China
Prior art keywords
instruction
functional unit
cycle
combined command
input end
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
Application number
CN2004800176588A
Other languages
English (en)
Other versions
CN1809810A (zh
Inventor
卡洛斯·A·阿尔巴·平托
巴尔克施南·斯里尼瓦桑
拉马纳坦·塞瑟拉曼
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.)
Network System Technology Co ltd
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1809810A publication Critical patent/CN1809810A/zh
Application granted granted Critical
Publication of CN1809810B publication Critical patent/CN1809810B/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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

该数据处理设备具有多个功能单元并在连续的指令周期中发送指令。第一种指令的每一个每次用于一个功能单元。第二种指令使得功能单元的组合在同一指令执行周期中响应,来自一个功能单元的结果被另一个功能单元用作同一指令的执行的一部分。优选地,该设备支持在多个不同的指令周期速率下的可选的操作,这依赖于所执行的程序段是否包含第二种指令。最快的指令周期速率不允许第二种指令的执行,这是因为多个不同的功能单元的操作不适合于在该指令执行周期内。当可能的时候,该设备通过切换到更慢的时钟速率以节省功率,在这种情况下第二种指令被执行,以通过减少需要发送的指令数量来节省额外的功率。

Description

指令控制数据处理设备
技术领域
本发明涉及一种指令控制数据处理设备。
背景技术
PCT专利申请No.W000/60457公开了一种VLIW处理设备。VLIW处理设备包含多个功能单元,其中每个功能单元能够与其它功能单元并行执行指令。VLIW处理设备处理VLIW指令字,其中每个VLIW指令字通常包含用于由各个功能单元并行执行的多条指令。VLIW处理器具有使得能够高速执行程序化的处理任务的优势,但是获得这一优势的代价是高存储器使用和高功耗。WO00/60457以减少VLIW处理设备的程序所需的指令存储器大小为目标。为了达到这一目的,该处理设备响应于存储器中指令而组成VLIW指令。因此,来自存储器的原始指令被转换为VLIW指令字中的多条指令,被不同的功能单元并行执行。
引起高功耗的原因之一,是并行发送许多指令的需要和对所发送的每条指令访问寄存器文件的需要。这些问题在WO00/60457中没有涉及。
发明内容
本发明的目的之一是在指令控制处理设备中降低功耗。
本发明的目的之一是尤其在VLIW处理设备中降低功耗。
在权利要求1中阐明了根据本发明的设备。该设备包含一组功能单元,该组功能单元并行连到发送槽和寄存器文件的端口,用于可选地执行从发送槽发送的、具有来自至少一个端口的操作数的指令以及将结果写到至少一个端口。除了这些可选指令,该设备提供了组合指令,其中该组中多于一个功能单元响应于该组合指令,来自多个功能单元中的第一个的结果被路由到多个功能单元中的第二个的操作数输入端,以响应该组合指令。第二个功能单元的结果被用于生成该组合指令的结果。通过使用组合指令,可以减少对于给定任务的程序执行过程中需要向功能单元组发送的指令数量,因而降低了功耗。与WO00/60457相比,该组合指令并不被分为需要分别发送的多条指令,而是在一个发送槽中被发送。因此,通过部分地避免为不同的功能单元并行地发送指令的需要,该设备部分地违背了VLIW处理的基本原理,即使如此,当然,其他指令可以在同一VLIW指令字中被与组合指令并行发送。
在一个实施例中,该处理设备具有可选择的指令周期时钟速率。通过降低不需要更高时钟速率的处理任务执行过程中的时钟速率,功耗得以降低。当处理任务需要高速执行时,时钟速率增加到最大值,此时所有单独的功能单元仅可以在一个指令周期内执行该指令。根据本发明的一个方面,构建该设备,使得多于一个功能单元在同一指令周期中响应组合指令,串联地工作,并且时钟速率可以增加到高速,使得组合指令的串联执行不再适合于在一个指令周期之内。当时钟速率增加到这样的水平时,避免使用组合指令,例如通过只执行不包含组合指令的程序,或者在使用和不使用组合指令以分别完成相同任务的可选的程序版本之间切换,或者通过将组合指令转换为由不同功能单元在连续的周期中执行的多条指令。
这样,可以实现节省更多的功率,这是因为当该设备在较低的时钟速率下执行时,执行处理任务所需发送的指令总数可以通过将多条指令组合成组合指令而减少,此时发送槽只需在一个指令周期内活跃。当组合指令使用的指令周期不比正常指令多时,它的使用就减少了执行程序所需的时间,使得可能进一步降低必须在指定时间间隔内执行的处理任务的时钟速率。
在另一个实施例中,该处理设备是包含多个功能单元的VLIW处理器,其中来自一个指令字的多条指令可以被并行发送到该多个功能单元,以并行执行。在该实施例中,提供了从另外的功能单元的结果输出端到功能单元中的第二个的操作数输入端的旁路连接,该另外的功能单元与接收组合指令的功能单元组并行接收指令,该第二个功能单元响应组合指令并还接收第一个功能单元的结果。优选地,该旁路连接不包括用于使功能单元在多个指令周期内所执行的执行级流水线化的锁存器。因此,可以使用包含了组合指令和另一条指令的VLIW指令字,其中该组合指令用于一个组中,该另一条指令用于传送在组合指令执行过程中所用操作数的功能单元中。结果,在足够低的时钟速率下只需发送较少的指令,而仍可以维持足够的速度。
在另一个实施例中,组合指令的执行可以扩展到多于一个指令周期。因此,还可以以串联的执行不适合于在一个指令周期内的时钟速率来执行组合指令。在一个实施例中,提供多个中间寄存器,用于当两个功能单元都响应组合指令时,锁存从一个功能单元路由到另一个功能单元的结果。但是,这需要寄存器的额外功耗并且将执行分开。在另一个实施例中,功能单元之间不使用寄存器,使用行波流水线(wave pipelining)在跨越多于一个指令周期的时间间隔的一部分中,将结果从一个功能单元传递到另一个功能单元。
附图简述
将使用以下附图描述本发明的这些和其它目的及其有利方面:
图1示出处理设备;
图2示出一组功能单元;
图3a、b示出时序方面;
图4示出多组功能单元;
图5示出另外的功能单元组。
具体实施方式
图1示出处理设备,包括:指令存储器17、具有发送槽11的指令发送单元10、功能单元组12、寄存器文件14、时钟电路16、时钟速率选择电路18和程序计数器19。程序计数器19具有连到指令存储器17的地址输入端的输出端。指令存储器17具有连到指令发送单元10的输出端。指令发送单元10的发送槽11包含连到功能单元组12的用于操作码的输出端,以及连到寄存器文件14的用于第一个操作数寄存器地址和第二个操作数寄存器地址和结果寄存器地址的输出端。功能单元组12具有连到寄存器文件14的输出端的操作数输入端,以及连到寄存器文件14的输入端的结果输出端。
尽管只示出一个功能单元组12,应当理解可以并行存在多个组。在这种情况下,指令发送单元包含对于每个功能单元组的各自的发送槽,具有连到相应组的操作码输入端的输出端以及连到寄存器文件14的多个寄存器地址输出端。在这种情况下,寄存器文件14还具有对于每个功能单元组的独立的结果输入端,以及独立的操作数输出端。
时钟速率选择电路18具有连到时钟电路16的控制输入端和程序计数器19的输出端。时钟电路16具有连到指令发送单元10和寄存器文件14的时钟输出端。指令发送单元10连到程序计数器19。在操作中,来自时钟电路16的时钟信号定义连续的指令周期。通常在每个指令周期中执行各自的指令。在每个指令周期中指令发送单元10向功能单元组12发送作为指令一部分的命令操作码。同样,指令发送单元10在每个指令周期中向寄存器文件14发送指令的操作数寄存器地址,并且指令发送单元10在每个指令周期中向寄存器文件14发送指令的结果寄存器地址。由于流水线,在同一指令周期中发送的操作码、操作寄存器地址和结果寄存器地址可以属于不同的指令。
在指令周期中,功能单元组12使用从寄存器文件14接收的一个或多个操作数,执行来自指令发送单元10的操作码所标识的命令。
图2更加详细地示出功能单元组12。组12包含多个功能单元20a、b(为了清楚,只示出两个,但是可以存在更多)。组12的操作数输入端22a、b连到功能单元20a、b的操作数输入端。功能单元20a、b的结果输出端通过输出复用器26连到组12的结果输出端。操作码输入端24连到功能单元20a、b的操作码输入端和输出复用器26(优选地,操作码24通过预解码器连到功能单元20a、b和输出复用器26,但是为了清楚没有示出)。
组12还包含控制单元28和输入复用器29。输入复用器29具有连到该组的操作数输入端22a的第一个输入端和连到第二个功能单元20b的操作数输入端的输出端。输入复用器29的第二个输入端连到第一个功能单元20a的结果输出端。控制单元28连到操作码输入端24并且具有连到输入复用器29的选择输入端的输出端。
在操作中,所接收的第一种操作码中的每一个标识执行该操作码的功能单元20a、b之一。对于该第一种操作码,控制单元28使得输入复用器29传递来自操作数输入端22b的操作数。所标识的功能单元20a、b使用应用于其操作数输入端的操作数来执行操作码所标识的处理操作(例如加法,或乘法)。所标识的功能单元20a、b输出结果。输出复用器26将结果从所标识的功能单元20a、b的传递到功能单元组12的结果输出端。
图3a示出功能单元20a、b执行操作的时序方面。上部迹线30指示连续的指令周期。每个指令周期持续T1持续时间。最上一行下面的最小时间间隔32、34指示功能单元20a、b在执行过程中生成结果所需的时间间隔。时间间隔32、34可以依赖于操作码所选择的操作类型,依赖于执行该操作的功能单元20a、b以及操作中所使用的操作数数据。但是结果总是在指令周期结束之前就是可用的,也就是说该间隔的持续时间比T1短。应当注意图3a只示出在一个功能单元中执行所需的时间间隔。在实际中,操作可以流水线化,所以每条指令的处理包括指令读取级、操作数读取级、执行级和结果写入级,如果在锁存了中间结果之后需要的话,不同的级被在连续的指令周期中执行。时间间隔32、34只涉及执行级。
操作码还包括第二种操作码,其导致功能单元20a、b的级联操作。当第二种操作码应用于操作数输入端24时,控制单元使得输入复用器29将结果从第一个功能单元20a传递到第二个功能单元20b的操作数输入端。输出复用器26将结果从第二个功能单元20b传递到功能单元组12的结果输出端。
作为第二种操作码实例的是一个操作数加上一个平方和的计算的操作码
result=A*A+B
在该实例中,组12的第一个功能单元20a是乘法器,而组12的第二个功能单元20b是加法器。该操作具有包含A和B作为操作数的寄存器的寄存器地址。响应于该操作码,组12的第一个功能单元20a形成乘积A*A。响应与同一操作码,控制单元28使得复用器29将乘积A*A作为操作数传递到组12的第二个功能单元20b。仍然响应于同一操作码,组12的第二个功能单元20b形成所接收的乘积A*A和操作数B的和A*A+B。应当理解,这一操作码只是一个示例。可以为其他操作(例如,A*A-B、A/(A+B)、A*B+A等等)提供操作码,可以支持这样单一的操作码或者多个操作码。
当通过在命令中包括多于两个操作数寄存器地址,或通过在同一寄存器中包括多个操作数而有更多的操作数可用时,可以执行更加复杂的操作。例如,当操作数包含一对数字(ReA,ImA)和(ReB,ImB)时,其中每个数字表示复数的实部和虚部,组合操作可以命令乘法器功能单元分别形成实部的乘积(ReA*ReB)以及虚部的乘积(ImA*ImB),并命令加法器将两个乘积相加。在这种情况下,组12优选地包含至少两个乘法器和一个加法器作为功能单元,以及在控制单元28控制之下的复用器,以选择加法器是从操作数输入端22a、b还是从乘法器接收操作数。
图3b示出执行第二种操作码所选择的操作的执行级的时序方面。在这种情况下,指令周期的持续时间是T2。到该操作的结果可用之前所需的时间间隔36的持续时间是第一个时间间隔36a的持续时间、第二个时间间隔36b的持续时间和第三个时间间隔36c的持续时间之和,其中该第一个时间间隔36a是第一个功能单元20a所需的,该第二个时间间隔36b是将第一个功能单元20a的结果传递到第二个功能单元20b的操作数输入端所需的,该第三个时间间隔36c是第二个功能单元20b所需的(更精确地说,替代第二个时间间隔36b的持续时间的是,应当考虑将结果从第一个功能单元20a的输出端传递到第二个功能单元20b的操作数输入端所需的时间间隔的持续时间减去将外部操作数传递到该操作数输入端所需的间隔的持续时间而得到的差值;这一差值可以忽略)。
在第二种操作的结果可用之前的时间间隔36的总持续时间比功能单元20a、b对于组成操作的操作所需的时间间隔36a、36c的持续时间长。尽管如此,该总持续时间应当适合于在指令周期的持续时间T2内。
时钟速率选择电路18向时钟电路16提供信号以选择时钟速率,也就是指令周期的持续时间T1或T2。优选地,时钟速率设置得尽可能低(对于指令周期持续时间,设置得尽可能长),而没有对在要求的时间间隔内执行要求的任务的能力做出折衷。通过降低时钟速率,降低了设备的功耗。
可选的时钟速率包括慢时钟速率和快时钟速率,其中以慢时钟速率,第二种指令的执行持续时间适合于在一个指令周期(持续时间T2)内,而以快时钟速率,第二种指令的执行持续时间不适合于在一个指令周期(持续时间T1)内。当时钟速率被设置为慢时钟速率时,使用带有第二种操作码的指令来执行任务。当时钟速率被设置为快时钟速率时,不使用带有第二种操作码的指令来执行任务,例如通过用带有第一种操作码的多条指令来代替带有第二种操作码的每条指令。通过在低时钟速率下使用带有第二种操作码的指令,减少了执行任务所需的指令周期数。因此加快了执行速度。
可以采用任何方法调整执行任务所使用的指令。在一个实施例中,指令存储器17存储了至少两个执行同一任务的程序的指令,一个程序使用带有第一种操作码的指令而另一个程序不使用这种指令。在该实施例中,时钟速率选择电路18除了选择时钟速率之外还选择相应程序,例如通过在任务执行开始时设置程序计数器19的初始值。
然而,可以使用许多其它方法来避免在任务执行过程中使用第二种操作码。例如,指令可以根据所设置的时钟速率,被执行而跳到带有第二种操作码的程序或者不带有这种操作码的程序。同样,可以根据所选择的时钟速率,将指令地址转换到物理存储器地址,以选择适当的指令。在这些情况下,不需要提供执行任务的整个程序的可选版本(带有和不带有第二种操作码):而只为包含这样的指令的程序部分提供可选版本(在这种情况下,带有第二种操作码的指令优选地只包括在频繁执行的部分中)。作为选择,如果选择了快时钟速率,指令发送单元甚至可以被动态地(on the fly)安排将带有第二种操作码的指令转换为不带有这种操作码的多条指令。
优选地,第二种操作码支持频繁执行的指令。
尽管用具有时钟速率选择电路18的实施例说明了本发明,要理解的是,可以用其它方法选择时钟速率,例如在程序计数器值部分的控制下,从而根据所执行指令所属的程序段来设置时钟速率,或者在来自程序的指令的控制下。
图2示出一个实施例,其中几个功能单元20a、b响应同一个第二种操作码。此外,控制单元28响应该操作码并且输出复用器26只输出来自响应的功能单元20a、b之一的结果。但是,要理解的是,可以使用(预)解码器(未示出)来检测哪个功能单元必须被激活以响应操作码并激活这些功能单元20a、b。在这种情况下,当操作码是第一种时,(预)解码器每个指令周期激活一个功能单元20a、b,而当操作码是第二种时,激活功能单元的组合。如所示,功能单元20a、b中响应于第二种操作码而被激活的每一个功能单元还可以单独响应第一种操作码。因此,指令单元20a、b被有效地重用。但是,可选地,功能单元20a、b中用于级联地执行第二种操作码的一部分可以是不单独响应任何第一种操作码的类型。因此功能单元组12中要引入一定的开销。
尽管以示例的方式只示出单个的输入复用器29,以及两个功能单元20a、b,要理解的是,实际中可以在组12中的功能单元20a、b或其它功能单元(未示出)的输出端之间提供更加复杂的连接网络。
图4示出用于图1所示处理设备中的两个功能单元组12、40,实现了本发明的另一个方面。组12、40中的每一个具有连到指令发送单元(未示出)各自的发送槽的操作选择输入端24、48,并且连到寄存器文件(未示出)的读和写端口。因此,该设备是包含用于不同组12、40的多个实质上独立的可选命令的VLIW处理器(超长指令字处理器)。第一个组12被如图2所示设置,除了增加了另外的复用器44,组12的第二个操作数输入端22b连到其第一个输入端。另外的复用器44的一个输出端连到第二个功能单元20b的操作数输入端。另外的复用器44具有连到控制单元28的控制输入端。
第二个功能单元组40包括多个功能单元40a、40b。第二个组40中的一个功能单元40b的输出端通过旁路连接42连到另外的复用器44的第二个输入端。
在操作中,控制单元28识别组合指令的操作码何时发送到功能单元组12。如果这样,控制单元28使得复用器29、44将来自组12的第一个功能单元20a和来自另外的组40的功能单元40b的操作数传递到组12的第二个功能单元20b的操作数输入端。组12的第一个和第二个功能单元20a、b都响应组合指令,第一个功能单元20a接收来自组12的操作数输入端22a、b的操作数,复用器26将结果从第二个功能单元20b传递到为组12提供的寄存器文件的写端口。
存储在指令存储器17的程序包含指令,该指令包含用于两个组12、40的命令。该指令包含用于第一个组12的组合命令,而用于第二个组40的命令包含激活第二个组的第二个功能单元40b的操作码。因此,响应于该指令,第一个组12的第一个功能单元20a和第二个组40的第2个功能单元40b都生成结果,其中所述结果用作组12的第二个功能单元20b的操作数。来自第二个组40的第二个功能单元40b的结果通过旁路连接42在组12、40之间传递。复用器29、44将结果作为操作数传递到第一个组12的第二个功能单元20b。
作为示例,这种指令可以用于乘-加操作,其中两对操作数的乘积相加
result=A*B+C*D
在该示例中,第一个组12的第一个功能单元20a是乘法器,第二个组40的第二个功能单元40b是乘法器,而第一个组12的第二个功能单元20b是加法器。该指令包含被发送到第一个组12的乘-加命令(组合命令)以及被发送到第二个组40的乘法命令。乘-加命令具有寄存器的寄存器地址,其包含A和B作为操作数,而乘法命令具有寄存器的寄存器地址,其包含C和D作为操作数。响应于该指令,第一个组12的第一个功能单元20a和第二个组40的第二个功能单元40b分别形成乘积A*B和C*D。响应于同一乘-加指令,控制单元28使得复用器29、44将这些乘积作为操作数传递到第一个组12的第二个功能单元20b。仍然响应于同一乘-加指令,第一个组12的第二个功能单元20b形成所接收乘积A*B与C*D的和A*B+C*D。
这种组合的乘法和加法是频繁出现的指令组合,例如在复数乘法中,因此该指令大大节省了这种操作所需发送的指令的数量。但是,应当认识到,本发明不仅限于这一指令。例如,可以将类似技术应用于乘法和减法,以计算A*B-C*D,或者应用于某个程序中出现的任何其他操作组合。该设备可以只支持一条组合指令的操作码或者支持多条这种指令的操作码。
应当注意的是,当用图4的实施例的功能单元执行程序时,当指令周期速率太快而不能连续容纳第二个组40的第二个功能单元40b和第一个组12的第二个功能单元20b的延迟时,可以调整该程序以消除组合指令,如图2的上下文中所讨论的。组合指令可以提供对来自不同功能单元(替代第二个组40的第二个功能单元40b)的结果的选择,用作第一个组12的第二个功能单元20b的操作数。这些不同的功能单元可以是单一的组40的一部分或多个不同组的一部分。在不背离本发明的情况下,第二个组40可以只包含一个功能单元(第二个功能单元40b)。
图5示出用于该设备的可选的功能单元组12。到目前为止示出的实施例中,组合操作在单一的指令周期中执行。在图5的实施例中,使用了多个指令周期。功能单元组12包含控制寄存器50,该控制寄存器50具有连到控制单元28的输入端和连到复用器29、44以及第二个功能单元20b的控制输入端的输出端。复用器29、44的第一个数据输入端连到操作数输入端22a、b。结果寄存器52、54配备有连到复用器29、44的第二数据输入端的输出端。结果寄存器52、54的输入端连到组12中一个或多个功能单元(例如20a)的结果输出端,和/或连到其它组(未示出)中一个或多个功能单元的结果输出端。为了清楚,未示出这些输入连接。
在操作中,控制单元28通过使控制寄存器50载入用于控制复用器29、44和第一个组12的第二个功能单元20b的信息,来响应为了第一个指令周期中的执行而发送的组合指令。在第一个指令周期之后的第二个指令周期中,该信息控制复用器29、44和第一个组12的第二个功能单元20b。在第二个指令周期中,锁存在结果寄存器52、54中的结果被作为操作数传递到组12的第二个功能单元20b,且该第二个功能单元20b接收控制信号,以在第二个指令周期中执行组合指令所暗含的命令中属于该第二个功能单元20b的部分。作为响应,第二个功能单元20b在第二个指令周期末生成结果。
这样,下一条指令可以在第二个指令周期中在组12中被执行,该执行与第二个功能单元20b执行部分组合指令并行。例如,执行第一条指令以计算A*B-C*D可以在第一个指令周期中开始,执行第二条指令以计算A*D+B*B可以在下一个指令周期中开始。因此,使用两条指令计算了两个数A+iC和B+iD的实部和虚部。
当然应当避免来自组合指令和下一条指令的结果之间发生冲突。这可以用各种方法实现。在一个实施例中,下一条指令被从没有在第二个指令周期中生成结果的多条指令的子集中选择(例如,另一个组合指令,或NOP指令)。在该实施例中,控制寄存器50还控制输出复用器26以传递来自第二个功能单元20b的结果。在另一个实施例中,可以使用旁路寄存器(未示出)来并行传递第二个功能单元20b的结果和来自响应下一条指令的功能单元的结果。
应当注意的是,在图5的实施例中,当指令周期太快而不能在单个的指令周期中容纳第一个和第二个功能单元20a、b的延迟时,不需要调整程序。
尽管图5示出了插入到复用器29、44之前的结果寄存器52、54,但是如果使用了行波流水线,可以省略这些寄存器52、54。在这种情况下,在功能单元20a、b内的传播延迟被用于允许来自组合指令和下一条指令的结果同时出现在第二个功能单元20b和执行下一条指令的功能单元的输出端中。在另一个实施例中,可以在生成由第一个组12的第二个功能单元20b使用的结果的特殊功能单元之前提供寄存器。这些寄存器用于通过锁存这些功能单元的操作数来响应组合指令,并在当这些操作数被直接从第一个指令周期的输入端22a、b应用于后续指令周期过程中的特殊功能单元之后,提供这些操作数。
尽管已经使用组合指令说明了本发明,其中所述组合指令涉及串联的两个功能单元响应于同一命令的连续执行,但是要理解的是,可以提供涉及更多串联的功能单元的组合命令。

Claims (9)

1.一种指令控制数据处理设备,所述设备包括:
指令发送单元(10),具有用于发送来自指令集的指令的发送槽(11),所述指令发送单元在连续的指令周期中发送所述指令中的各条指令;
寄存器文件(14),具有读端口和写端口;
功能单元(20a、b)组(12),每个功能单元(20a、b)具有连到所述发送槽(11)的控制输入端、连到所述读端口的操作数输入端(22a、b)以及连到所述写端口的结果输出端,每个功能单元(20a、b)被用于响应其它功能单元(20a、b)所不响应的来自所述指令集的各个子集的指令,所述指令集还包括所述功能单元中的第一个和第二个功能单元(20a、b)所响应的组合指令;
控制单元(28),连到所述发送槽(11),并且响应来自所述指令集的所述组合指令,将所述第一个功能单元(20a)的结果输出路由到所述第二个功能单元(20b)的操作数输入端;
用于对所述指令周期进行计时的时钟电路(16),所述时钟电路(16)具有多个可选的时钟速率,包括第一个时钟速率以及第二个时钟速率,其中,所述第一个时钟速率足够慢,使得在指令执行周期中容纳响应于也在所述指令执行周期内的所述组合指令执行过程中应用于所述第一个功能单元(20a)的操作数而从所述第二个功能单元(20b)生成结果所涉及的延迟,所述第二个时钟速率太快而不能在所述指令周期中容纳所述延迟,但是可以容纳来自所述子集的指令的延迟。
2.根据权利要求1所述的指令控制数据处理设备,被构成为超长指令字VLIW处理器,所述发送槽(11)是用于发送VLIW指令字的所述指令发送单元的多个发送槽之一,其中所述VLIW指令字包含所述组合指令作为其指令之一,所述寄存器文件(14)具有多个读和写端口集,所述设备包括各个功能单元或功能单元组,每个连到所述发送槽中的各个发送槽和所述读和写端口集,用于执行来自所述VLIW指令字的各个指令,并行于执行与所述组合指令在同一指令字中发送的指令,所述第一个和第二个功能单元响应在所述发送槽中发送的所述组合指令。
3.根据权利要求1所述的指令控制数据处理设备,其中所述第一个和第二个功能单元(20a、b)在同一指令执行周期中响应所述组合指令。
4.根据权利要求1所述的指令控制数据处理设备,其中,所述控制单元(28)被用于使所述第二个功能单元(20b)在所述第一个功能单元(20a)响应所述组合指令的指令执行周期之后的指令执行周期中响应所述组合指令。
5.根据权利要求7所述的指令控制数据处理设备,其中,所述第一个功能单元(20a)的结果被从所述第一个功能单元(20a)路由到所述第二个功能单元(20b)的操作数输入端,而没有中间锁存。
6.一种指令控制数据处理设备,所述设备包括:
指令发送单元(10),具有用于发送来自指令集的指令的发送槽(11),所述指令发送单元在连续的指令周期中发送所述指令中的各条指令;
寄存器文件(14),具有读端口和写端口;
功能单元(20a、b)组(12),每个功能单元(20a、b)具有连到所述发送槽(11)的控制输入端、连到所述读端口的操作数输入端(22a、b)以及连到所述写端口的结果输出端,每个功能单元(20a、b)被用于响应其它功能单元(20a、b)所不响应的来自所述指令集的各个子集的指令,所述指令集还包括所述功能单元中的第一个和第二个功能单元(20a、b)所响应的组合指令;
控制单元(28),连到所述发送槽(11),并且响应来自所述指令集的所述组合指令,将所述第一个功能单元(20a)的结果输出路由到所述第二个功能单元(20b)的操作数输入端;
其中所述指令发送单元(10)具有另外的发送槽,并且所述寄存器文件(14)具有另外的读端口,所述设备包括另外的功能单元(40b),所述另外的功能单元(40b)具有连到所述另外的发送槽的控制输入端和连到所述另外的读端口的操作数输入端,所述控制单元(28)被用于在所述组合指令的控制下将所述另外的功能单元(40b)的结果输出路由到所述第二个功能单元(20b)的所述另外的操作数输入端,在所述组合指令的控制下绕开所述寄存器文件(14)。
7.根据权利要求6所述的指令控制数据处理设备,被用包含VLIW指令的程序编程,其中所述VLIW指令包含在同一指令周期中发送的用于所述另外的功能单元(40b)的命令和用于所述功能单元组(12)的所述组合指令。
8.一种执行处理任务的方法,所述方法包括:
提供功能单元组(12),
向所述组(12)发送连续的指令;
执行所述指令中的第一种指令,用功能单元(20a、b)中的一个独立功能单元执行每条所述第一种指令,
用串联的所述功能单元(20a、b)中的第一个和第二个功能单元执行第二种指令;
响应于所述第二种指令,将所述第一个功能单元(20a)的结果路由到所述第二个功能单元(20b)的操作数。
其中所述第一个和第二个功能单元(20a、b)在同一指令周期中响应所述第二种指令,所述方法包括:
从至少第一个和第二个速率中选择指令周期速率,所述第一个速率很慢,使得所述功能单元中级联的至少两个功能单元(20a、b)对组合指令的执行适合于在所述第一个速率的指令周期内,所述第二个速率很快,使得只有所述功能单元中的单个功能单元的指令的执行适合于在所述第二个速率的所述指令周期内,所述组合指令的执行不适合于在所述第二个速率的一个指令执行周期内;
将用于执行所述处理任务的所述指令调整为所述选择的指令周期速率,因此当以所述第一个速率执行所述任务时,使用所述组合指令,而当以所述第二个速率执行所述任务时,用具有相应效果的多条所述第一种指令来代替所述组合指令。
9.根据权利要求8所述的方法,包括:
发送所述连续的指令,每条指令作为VLIW指令字的一部分,其中所述VLIW指令字包含用于各个另外的功能单元(40a、b)的多条指令;
在包含所述第二种指令的所述指令字中,包括用于所述另外的功能单元(40a、b)中的特定一个功能单元的另外的指令;
响应于所述第二种指令,将所述另外的指令的另外的结果从所述另外的功能单元(40a、b)中的所述特定一个功能单元路由到所述第二个功能单元(20b)的另外的操作数输入端。
CN2004800176588A 2003-06-25 2004-06-22 指令控制数据处理设备 Active CN1809810B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP03101877.3 2003-06-25
EP03101877 2003-06-25
PCT/IB2004/050964 WO2004114128A2 (en) 2003-06-25 2004-06-22 Instruction controlled data processing device

Publications (2)

Publication Number Publication Date
CN1809810A CN1809810A (zh) 2006-07-26
CN1809810B true CN1809810B (zh) 2010-06-09

Family

ID=33522407

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800176588A Active CN1809810B (zh) 2003-06-25 2004-06-22 指令控制数据处理设备

Country Status (6)

Country Link
US (1) US7861062B2 (zh)
EP (1) EP1658559B1 (zh)
JP (1) JP2007519052A (zh)
CN (1) CN1809810B (zh)
AT (1) ATE554443T1 (zh)
WO (1) WO2004114128A2 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20060155843A1 (en) * 2004-12-30 2006-07-13 Glass Richard J Information transportation scheme from high functionality probe to logic analyzer
US7903560B2 (en) * 2004-12-30 2011-03-08 Intel Corporation Correlation technique for determining relative times of arrival/departure of core input/output packets within a multiple link-based computing system
EP1849095B1 (en) 2005-02-07 2013-01-02 Richter, Thomas Low latency massive parallel data processing device
US7668193B2 (en) 2005-09-02 2010-02-23 Stmicroelectronics S.R.L. Data processor unit for high-throughput wireless communications
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7818550B2 (en) * 2007-07-23 2010-10-19 International Business Machines Corporation Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system
JP2009048264A (ja) * 2007-08-14 2009-03-05 Oki Electric Ind Co Ltd 半導体集積回路装置
WO2010043401A2 (en) 2008-10-15 2010-04-22 Martin Vorbach Data processing device
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
JP2014164659A (ja) * 2013-02-27 2014-09-08 Renesas Electronics Corp プロセッサ
EP2775395B1 (en) 2013-03-07 2020-11-25 Nxp B.V. Integrated circuit, electronic device and instruction scheduling method
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US20150234449A1 (en) * 2014-02-14 2015-08-20 Qualcomm Incorporated Fast power gating of vector processors
CN104735824B (zh) * 2015-02-28 2018-03-13 华为技术有限公司 数据处理系统
CN105677593B (zh) * 2016-01-11 2018-09-28 福州瑞芯微电子股份有限公司 芯片存储器写操作时序路径自适应调节方法及装置
CN105701041B (zh) * 2016-01-11 2018-09-28 福州瑞芯微电子股份有限公司 芯片自适应调节读数时序路径的方法和装置
CN105752077B (zh) * 2016-02-25 2018-03-06 上海科梁信息工程股份有限公司 混合动力车辆的扭矩分配方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829031A (en) * 1996-02-23 1998-10-27 Advanced Micro Devices, Inc. Microprocessor configured to detect a group of instructions and to perform a specific function upon detection
US5923871A (en) * 1996-08-07 1999-07-13 Elbrus International Multifunctional execution unit having independently operable adder and multiplier
US6442701B1 (en) * 1998-11-25 2002-08-27 Texas Instruments Incorporated Power saving by disabling memory block access for aligned NOP slots during fetch of multiple instruction words

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256745B1 (en) * 1998-06-05 2001-07-03 Intel Corporation Processor having execution core sections operating at different clock rates
US6367003B1 (en) * 1998-03-04 2002-04-02 Micron Technology, Inc. Digital signal processor having enhanced utilization of multiply accumulate (MAC) stage and method
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6289465B1 (en) * 1999-01-11 2001-09-11 International Business Machines Corporation System and method for power optimization in parallel units
KR20010052436A (ko) 1999-03-31 2001-06-25 롤페스 요하네스 게라투스 알베르투스 병렬 데이터 처리
US6606700B1 (en) * 2000-02-26 2003-08-12 Qualcomm, Incorporated DSP with dual-mac processor and dual-mac coprocessor
US20040225868A1 (en) * 2003-05-07 2004-11-11 International Business Machines Corporation An integrated circuit having parallel execution units with differing execution latencies

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829031A (en) * 1996-02-23 1998-10-27 Advanced Micro Devices, Inc. Microprocessor configured to detect a group of instructions and to perform a specific function upon detection
US5923871A (en) * 1996-08-07 1999-07-13 Elbrus International Multifunctional execution unit having independently operable adder and multiplier
US6442701B1 (en) * 1998-11-25 2002-08-27 Texas Instruments Incorporated Power saving by disabling memory block access for aligned NOP slots during fetch of multiple instruction words

Also Published As

Publication number Publication date
EP1658559B1 (en) 2012-04-18
CN1809810A (zh) 2006-07-26
WO2004114128A3 (en) 2006-03-09
US7861062B2 (en) 2010-12-28
WO2004114128A2 (en) 2004-12-29
ATE554443T1 (de) 2012-05-15
EP1658559A2 (en) 2006-05-24
US20080133880A1 (en) 2008-06-05
JP2007519052A (ja) 2007-07-12

Similar Documents

Publication Publication Date Title
CN1809810B (zh) 指令控制数据处理设备
CA1119731A (en) Multibus processor for increasing execution speed using a pipeline effect
CN101482811B (zh) 用于增强的计算能力的处理器体系结构
JP2015133132A (ja) Simd命令をサポートするプログラマブルデータ処理回路
NL8301477A (nl) Multimicroprocessorstelsel.
JPH04299436A (ja) メモリ回路および機能ユニットのグループを備えた処理装置
JP2003005958A (ja) データ処理装置およびその制御方法
CN1997962A (zh) 指令处理电路
CN104111912A (zh) 用于支持处理器的多模式的设备和方法
CN101339498A (zh) 采用risc结构的单片机
CN101387951A (zh) 优化的处理器和指令对准
CN112074810B (zh) 并行处理设备
US11106465B2 (en) Vector add-with-carry instruction
EP1299811A2 (en) Synergetic computing system
KR100639146B1 (ko) 카테시안 제어기를 갖는 데이터 처리 시스템
US7404048B2 (en) Inter-cluster communication module using the memory access network
US5752061A (en) Arrangement of data processing system having plural arithmetic logic circuits
CN101601011B (zh) 用于对计算机架构条件码设置进行有效仿真的方法和装置
US20230071941A1 (en) Parallel processing device
RU2295751C2 (ru) Способ и устройство выполнения арифметических и логических операций
CN114528021A (zh) 分时复用量子测控系统及低功耗高效率量子测控编译方法
SU896623A1 (ru) Устройство управлени конвейерным вычислительным устройством
CA1165455A (en) Pipelined digital signal processor using a common data and control bus
GB2069198A (en) Pipelined data processor
JP2010262600A (ja) プロセッサ

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: 52 high-tech park, 5656AG, Edelhofen, Netherlands

Patentee after: KONINKLIJKE PHILIPS N.V.

Address before: Holland Ian Deho Finn

Patentee before: KONINKLIJKE PHILIPS ELECTRONICS N.V.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230517

Address after: Maine

Patentee after: Network System Technology Co.,Ltd.

Address before: 52 high-tech park, 5656AG, Edelhofen, Netherlands

Patentee before: KONINKLIJKE PHILIPS N.V.