CN1290003C - 使处理器与协处理器接口的方法和设备 - Google Patents

使处理器与协处理器接口的方法和设备 Download PDF

Info

Publication number
CN1290003C
CN1290003C CNB028264991A CN02826499A CN1290003C CN 1290003 C CN1290003 C CN 1290003C CN B028264991 A CNB028264991 A CN B028264991A CN 02826499 A CN02826499 A CN 02826499A CN 1290003 C CN1290003 C CN 1290003C
Authority
CN
China
Prior art keywords
broadcast
processor
coprocessor
register file
broadcasting
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
CNB028264991A
Other languages
English (en)
Other versions
CN1610880A (zh
Inventor
威廉·C·矛伊尔
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.)
Zenith Investment LLC
Apple Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN1610880A publication Critical patent/CN1610880A/zh
Application granted granted Critical
Publication of CN1290003C publication Critical patent/CN1290003C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

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)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及使处理器(12)与至少一个协处理器(14,16)接口。一个实施例涉及具有一组广播说明符的处理器,该处理器使用广播说明符向一个协处理器通信总线选择性地广播处理器的寄存器内写入的操作数。因此每个广播说明符可以包含对应于处理器的每个通用寄存器的广播指示符。一个可选实施例也可以使用广播区(164,166,168,170)的概念,其中各个广播区可以具有对应的广播说明符,其中一个广播说明符可对应于多个广播区。可选地,在一个实施例中,处理器可以使用独立于广播说明符的广播区,其中协处理器能够根据当前广播区改变其功能。在一个实施例中,处理器可通过协处理器通信总线(30)提供一个区说明符(H REGION)以指示当前广播区。

Description

使处理器与协处理器接口的方法和设备
技术领域
本发明通常涉及具有处理器及至少一个协处理器的数据处理系统,并且,更具体地,涉及使处理器与协处理器接口的方法和设备。
背景技术
通过专用及特殊硬件功能部件扩展基准体系结构及处理器的能力是可伸缩及可扩展体系结构的一个重要方面。
用于扩展基准体系结构及处理器功能的一个最优方法是通过使用协处理器。这些是在处理器的控制下操作的专用,通常为单目的的处理器。协处理器的一个常规用法是作为数学协处理器,以选择性地向不直接支持浮点能力的体系结构提供浮点能力。这种数学协处理器的某个例子是Intel 8087及80287。某些其它协处理器的可能用法或类型包含:乘累加器,调制器/解调器(调制解调器),数字信号处理器(DSP),vitterbi计算器,加密处理器,图象处理器,及向量处理器。
实现协处理器的一个方案是使用一个协处理器接口,其足够紧密地耦合,使得接口的使用足够快,以致有利于调用即使相当简单的函数是有利的,同时将接口抽象到这样一个程度,使得处理器体系结构与任意指定协处理器的尽可能多的细节相隔离。例如,这样一个紧密耦合的协处理器可以通过到主处理器的专用接口接收操作数及控制字。通常,基于由主处理器执行的一组操作,主处理器会在主处理器产生一个数值之后把该数值传递给一个协处理器。在最后修改之后,该数值可以被发送给协处理器。然而,此最后传送涉及对于某些协处理器操作可能不可接受的开销。
发明内容
本发明提供了一种使处理器通过协处理器通信总线向寄存器堆选择性广播写事务的方法,所述处理器具有包括多个寄存器的所述寄存器堆和对应于该寄存器堆的广播说明符,该方法包括:接收要写入所述寄存器堆的操作数;在所述寄存器堆中选择所述多个寄存器中的一个;向所述寄存器堆提供要写入所述寄存器堆的所述操作数;及根据广播说明符,通过所述协处理器通信总线选择性地提供要写入所述寄存器堆的所述操作数。
本发明提供了一种使具有包括多个寄存器的寄存器堆的处理器通过协处理器通信总线向所述寄存器堆选择性广播写事务的方法,该方法包括:接收要写入所述寄存器堆的操作数;选择所述寄存器堆的所述多个寄存器中的一个;向所述寄存器堆提供要写入所述寄存器堆的所述操作数;及根据所述处理器的当前执行区,通过所述协处理器通信总线选择性地提供要写入所述寄存器堆的所述操作数。
本发明提供了一种处理器,包括:多个寄存器;用于对多个寄存器之一执行写操作的电路;用于提供写操作的操作数给所述多个寄存器之一的导体;一组广播说明符;比较电路,用于比较多个寄存器之一和广播说明符中的选定一个,并且用于提供广播使能信号;及连接到比较电路的端口,用于与协处理器通信总线通信,所述端口包括至少一个协处理器通信总线信号,用于响应广播使能信号选择性地提供所述操作数。
附图说明
通过举例来说明本发明,并且本发明不受附图的限制,其中类似附图标记指示类似单元,并且其中:
图1是根据本发明图解数据处理系统的一个实施例的模块图;
图2是图解图1的处理器的一部分的一个实施例的模块图;
图3是图解图1的协处理器的一部分的一个实施例的模块图;
图4是图解寄存器广播操作的一个实施例的时序图;
图5是图解广播屏蔽寄存器的一个实施例的模块图;
图6是图解广播区的一个实施例的模块图;
图7是图解寄存器广播操作的一个可选实施例的时序图;
图8是图解图2的控制电路的一部分的一个实施例的模块图;而
图9是图解图2的广播区控制单元的一部分的一个实施例的模块图。
本领域技术人员理解,图中的单元以简单和清晰的方式被图解,并且没有必要按比例画出。例如,图中某些单元的尺寸相对于其它单元被放大,以帮助改进对本发明的实施例的理解。
具体实施方式
在下面的描述中,提出诸如具体词或字节长度等等的许多特定细节,以提供对本发明的彻底理解。然而,本领域的技术人员明白,本发明可以在没有这种细节的情况下实施。在其它实例中,为了不以不必要的细节遮盖本发明,电路以模块图形式示出。对于大部分而言,已经省略了涉及时间考虑等等的细节,因为这种细节不是获得对本发明的完整理解所必须的,并且是相关技术领域的普通技术人员所能理解的。
术语“总线”用于表示多个可用于传送诸如数据,地址,控制或状态的一或多个各种信息的信号或导体。当用于将信号,状态位或类似装置呈现为其逻辑真或逻辑假状态时,分别使用术语“声明(assert)”及“取消(negate)”。如果逻辑真状态是逻辑电平一,则逻辑假状态是一个逻辑电平零。并且如果逻辑真状态是逻辑电平零,则逻辑假状态是逻辑电平一。一个跟随在信号名称后的“*”符号表示该信号是一个低电平有效信号(意味着逻辑真状态是一个逻辑电平零)。
图1是图解数据处理系统10的一个实施例的模块图,数据处理系统10包含处理器12,协处理器14,协处理器16,存储器18,其它模块20及外部总线接口22,它们全部通过总线28双向连接。本发明的可选实施例可以具有唯一一个协处理器14,两个协处理器14及16,或甚至更多协处理器(未示出)。通过集成电路终端35把外部总线接口22双向连接到外部总线26。把存储器24双向连接到外部总线26。可选地,可以通过集成电路终端31把处理器12外部连接到数据处理系统10。可选地,可以通过集成电路终端32把协处理器14外部连接到数据处理系统10。可选地,可以通过集成电路终端33把存储器18外部连接到数据处理系统10。可选地,可以通过集成电路终端34把其它模块20外部连接到数据处理系统10。通过协处理器接口30,处理器12双向连接到协处理器14和协处理器16。尽管未在图1中示出,但是可选实施例也可以具有附加存储器,其类似于通过总线28连接的存储器18。
图2是图解图1的处理器12的一部分的模块图。在一个实施例中,处理器12包含控制电路40,指令解码电路42,指令流水线44,寄存器46,算术逻辑单元(ALU)48,锁存多路复用器(MUX)50,锁存多路复用器(MUX)52,多路复用器(MUX)54,广播区控制单元120,及程序计数器单元130。在本发明一个实施例中,协处理器接口30包含信号60-72及128。由控制电路40产生时钟信号60。协处理器操作信号61由控制电路40产生并且被提供给协处理器14及16。
监控模式信号62由控制电路40产生并且被提供给协处理器14及16。解码信号63由控制电路40产生并且被提供给协处理器14及16。通过控制电路40接收来自协处理器14或协处理器16的协处理器忙信号64。执行信号65由控制电路40产生并且被提供给协处理器14及16。通过控制电路40接收来自协处理品14或协处理器16的异常信号66。寄存器写入(REGWR*)信号67由控制电路40产生并且被提供给协处理器14及16。寄存器信号(REG[4:0])68由控制电路40产生并且被提供给协处理器14及16。差错信号(H_ERR*)69由控制电路40产生并且被提供给协处理器14及16。数据选通信号(H_DS*)70由控制电路40产生并且被提供给协处理器14及16。由控制电路40接收来自协处理器14及16的数据确认信号(H_DA*)71。区域信号(H_REGION[N:1])由广播区控制单元120产生并且被提供给控制电路40及协处理器14及16。也被认为是协处理器接口30的一部分的硬件数据端口信号(HDP[31:0])72在协处理器14及16,以及处理器12内的内部电路之间是双向的。
在本发明一个实施例中,提供针对或来自总线28的多个信号,以便在存储器18和/或存储器24中加载或存储数据。在一个实施例中,这些信号包含由控制电路40产生并且被提供给总线28的传送请求信号(TREQ*)73。传送错误确认信号(TEA*)74通过总线28被提供给控制电路40。传送确认信号(TA*)75通过总线28被提供给控制电路40。通过导体76从总线28向指令流水线44提供指令。通过导体76把数据提供给MUX 54。驱动数据信号79使能三态缓冲区95以通过导体88及76从锁存MUX52提供数据。地址选择信号78使能锁存MUX 50以通过导体77向总线28提供地址。通过HDP信号(HDP[31:0])72提供MUX 54的另一个输入。通过ALU结果导体86提供MUX 54的另一个输入。MUX 54的输出,即结果信号83被提供给寄存器46及三态缓冲区96的输入。使能_广播信号82使能三态缓冲区96驱动HDP[31:0]72上的结果信号83。三态缓冲区96的输出也被连接到锁存MUX 52的输入。提供结果信号83作为锁存MUX 50的输入,并且作为控制电路40的输入。通过MUX54向寄存器46提供结果信号83。结果选择信号(结果_选择)81选定MUX54的哪个输入将在结果导体83上被驱动。把源选择信号(源_选择)80提供给锁存MUX 52以选定应当通过导体88驱动哪个信号到三态缓冲区95。控制电路40通过导体91提供控制信息并且接收来自寄存器46的状态信息。控制电路40通过导体92提供控制信号并且接收来自算术逻辑单元48的状态信号。控制电路40通过区说明符122提供控制及信息信号,并且接收来自广播区控制单元20的控制及信息信号。控制电路通过导体124提供控制信号并且接收来自程序计数器单元130的状态信号。控制电路40通过导体93提供控制信号并且接收来自指令流水线44及指令解码电路42的状态信号。指令流水线44通过导体89被连接以向指令解码电路42提供指令。指令解码电路42通过导体90向控制电路40及程序计数器单元130提供解码指令信息。寄存器46通过导体84向算术逻辑单元48提供源操作数。寄存器46通过导体84,锁存MUX 52,三态缓冲区95及导体76提供要存储在存储器18或存储器24中的数据。寄存器46通过导体84,锁存MUX 50及地址导体77向存储器18或存储器24提供地址信息。寄存器46通过导体85向算术逻辑单元48提供第二源操作数。程序计数器单元130通过导体126,锁存MUX 50及地址导体77向存储器18或存储器24提供程序计数器。程序计数器单元130还向广播区控制单元120提供程序计数器信息。程序计数器单元130接收来自锁存MUX 50的输出地址,以作为一个输入以产生下一个存储器地址。
注意,本发明的可选实施例可在寄存器46中包含任何数量的寄存器。并且,本发明的可选实施例可能使用一对单向总线代替双向总线,以及使用多路复用器逻辑代替三态缓冲区以传送信息。例如,HDP[31:0]或其它双向总线可以被实现为分立的输入和输出部分。
图3是图解协处理器14的一部分的一个实施例的模块图。在一个实施例中,协处理器14包含控制电路100,计算电路102及可选存储电路104。控制电路100通过包含信号60-72及128的协处理器接口30双向连接到处理器12。在本发明一个实施例中,控制电路100包含接收来自处理器12的操作信号61及解码信号63的解码电路106。控制电路100通过导体108提供控制信息并且接收来自可选存储电路104的状态信息。控制电路100通过导体109提供控制信息并且接收来自计算电路102的状态信息。计算电路102及可选存储电路104通过导体110双向连接。可以提供针对或来自总线28或集成电路终端32的一或多个信号110。控制电路100通过导体112可以接收或提供针对或来自总线28或集成电路终端32的信息。信号72可以被双向连接到计算电路102及可选存储电路104。另外,信号72可以双向连接到总线28或集成电路终端32。在本发明的一个可选实施例中,可不实现可选存储电路104。在本发明的实现可选存储电路104的实施例中,可以利用寄存器,任何类型的存储器,包含锁存器或可编程逻辑阵列的任何类型的存储电路等实现可选存储电路104。在本发明的可选实施例中,计算电路102可以执行任何类型的逻辑或计算功能。
系统通过针对涉及专门应用的操作而优化的外部协处理器14(或硬件加速器)支持任务加速。这些外部协处理器14,16可以象用于执行种群统计(population count)或更复杂功能的协处理器14(例如DSP加速协处理器14),或能够进行高速乘法/累加操作的协处理器16一样简单。
通过若干适于具体实现的机构,在处理器12及协处理器14之间传送数据。这些可以被分成针对协处理器14的传送,及来自协处理器14的传送。
用于向协处理器14传送数据的机构之一是寄存器广播机构,该机构不涉及指令原语,而是正常处理器12操作的副产品。这涉及通过接口把更新反映到处理器12的通用寄存器(“GPR”)46,使得协处理器14可以监视对一或多个处理器12寄存器的更新。如果协处理器14“覆盖”GPR 46的内部寄存器或功能,这会是适合的。在这种情况下,不需要从处理器12向协处理器14的显式参数传递。
另一个向协处理器14传送数据的方案是数据驱动方案,其涉及向协处理器传送一或多个数据项的协处理。这些项的传送可以在没有协处理器命令或指令的显式传送的情况下启动一个协处理操作。与协处理器14的通信开销的降低可以导致显著的性能提高。
在基处理器12中提供指令原语,用于外部协处理器14,16及处理器12之间操作数及指令的显式传送。提供一个握手机构以允许对指令及数据传送的速率进行控制。
注意,协处理器14被设计为特定于实现的单元,因而一个指定单元的实际功能在不同实现中可自由改变,即使可存在相同指令映射。
图4是图解一个寄存器广播操作的时序图。为了避免针对协处理器14或外部监视器的参数传递的性能开销,提供一个寄存器广播机构(也可以被称为寄存器探听(snooping)机构)。这允许协处理器14实现一或多个处理器12的通用寄存器46的影子复本(shadow copy)。该能力是通过传送写入处理器GPR 46之一的数值和有关哪个寄存器46被针对GPR更新而更新的指示来实现的。(注意,带下划线的寄存器,例如RA及RC,分别表示对应指令,例如ADDC或OR的目的寄存器。)针对每个寄存器更新声明一个选通信号REGWR*67。通过32位双向数据路径HDP[31:0]72传送数值,并且一个5位寄存器编号总线提供一个指针给所更新的实际处理器寄存器46(REG[4:0])68。寄存器编号可以指示一个正常堆(file)或一个可选堆中的寄存器46。在优选实施例中,通过REG[4]==1指示可选堆寄存器,并且通过REG[4]==0指示正常堆寄存器。然而注意,本发明不以任何方式依赖于寄存器组的实际划分。
协处理器14可以内部锁存数值与目的寄存器46编号的指示,以避免稍后寄存器信息的显式移动。这些功能也可以被一个调试协处理器14用以跟踪寄存器堆46或其子集的状态。图4说明广播能力的一个例子。
参照图4说明的广播能力通过HDP[31:0]72对每个针对寄存器堆的写事务执行广播。因此这个能力允许协处理器14保持处理器12的寄存器堆(即GPR46)的一个影子复本,并且不需要从处理器12向协处理器14显式传递某些参数。然而,需要一种进一步控制处理器12及协处理器14的广播能力的能力。因此,图5-9图解了本发明允许处理器12的选择性广播能力并且允许协处理器14的选择性更新策略的的一个实施例。
图5根据本发明的一个实施例图解了允许实现一个选择性广播能力的广播屏蔽寄存器。因此,不是广播每个结果更新到GPR 46,而是广播屏蔽寄存器可以用于选择GPR 46的子集,该子集的结果被广播到协处理器14。例如,对于GPR 46中的每个寄存器,单个位可以用作广播指示符,以确定对该具体寄存器的更新是否会导致(通过HDP[31:0]72)向协处理器14传送更新的寄存器内容。图5图解广播屏蔽寄存器的一个例子,其中假定GPR 46具有16个寄存器。在这个例子中,0指示与具体位相关的寄存器禁止其结果广播,并且1指示与具体位相关的寄存器使能其结果广播。因此,在图5的例子中,只有对对应于位位置8及9(在一个实施例中,可以指示GPR 46内的寄存器R8及寄存器R9)的寄存器的更新被广播到协处理器14。如果GPR 46只包含8个寄存器,则广播屏蔽寄存器只需要8位长。因此,广播屏蔽寄存器可被认为是具有一组对应于GPR 46的广播指示符的广播说明符。
在一个实施例中,广播屏蔽寄存器(例如广播说明符)是用户可编程(通过软件访问),并且当系统状态改变时可被修改,以便当出现新要求时考虑随时间出现的不同协处理活动。在另一个实施例中,通过被设计成更新广播屏蔽寄存器的具体指令内的立即字段可访问广播屏蔽寄存器或广播说明符。可选实施例也可以使用不同的广播说明符以及针对每个需要通过处理器12广播其结果的寄存器提供一个对应广播指示符的不同方法,而不是使用图5所示的广播屏蔽寄存器。例如,可以把寄存器屏蔽字段存储在对应于GPR 46的存储器18或24中。
通过一个广播屏蔽寄存器(或其它广播说明符)的使用,可降低HDP[31:0]72的负载及总功耗。例如,如果一个数值不需要通过协处理器14探听,则通过分配GPR 46内的一个寄存器来存储这个数值并且使用广播屏蔽禁止这个寄存器的广播,可以禁止通过处理器12广播这个数值。因此,如果只有计算数值的一个子集需要从处理器12广播到协处理器14,则可以保留GPR 46的一个子集以保存这些数值,并且接着仅更新这些保留寄存器之一的方式会导致计算的数值的广播。由于产生结果的指令的数量较高,广播全部写入结果会不必要增加HDP[31:0]72的负载,并且消耗更多功率。因而,屏蔽广播以使只向协处理器14广播寄存器更新的一个子集,导致处理器12内功耗的降低,并且降低HDP[31:0]72上过多的负载。
为了进一步控制广播能力,可以使用广播区。图6图解了一个示例程序空间172,它被分成四个广播区:广播区1 164,广播区2 166,广播区3 168,及广播区4 170。程序空间172可以是处理器12内的任何程序空间,并且可以位于诸如存储器18或24的任何程序存储器中。广播区是指指令地址范围(即程序区或执行区),其中广播被控制。在图6中,每个广播区具有一个对应的广播屏蔽。例如,广播区1 164对应于广播屏蔽1 158,广播区2 166及广播区4 170都对应于广播屏蔽2160,并且广播区3 168对应于广播屏蔽3 162。因此,一个广播屏蔽可以对应于不止一个广播区。
可以用多个方式控制对广播区的广播屏蔽分配。其可以是固定的,或可以受软件控制,并且是用户可编程的。通过把广播屏蔽与每个实现的广播区配对的控制寄存器,或者通过其它存储装置可进行编程。当系统执行进行时,广播屏蔽与广播区的关联可以在用户程序控制下,或通过系统事件的硬件监视,或通过适于数据处理系统的任何其他控制装置来改变。
当在一个广播区内正执行代码时,对应广播屏蔽用于提供更新结果的选择性广播。例如,在广播区1 164内,只有对由广播屏蔽1 158指示的寄存器的那些更新被广播到协处理器14。在广播区2 166或广播区4 170内,对由广播屏蔽2 160指示的寄存器的更新被广播到协处理器14。在广播区3 168内,对由广播屏蔽3 162指示的寄存器的更新被广播到协处理器14。
这种广播区的使用还允许协处理器14的简化操作。例如,在某些情况下,协处理器14不再需要来自处理器12的显式命令形式的知识,但是由于处理器12可以被用来只向协处理器14传递实际驱动项,则能以数据驱动方式操作。因此,通过使用广播区及广播屏蔽,处理器12可以控制其广播能力,并且因而控制其发送至协处理器14的驱动项。通过以数据驱动方式进行操作,涉及向协处理器14或16传递单个控制操作或指令的开销可以被降低或消除,因而提高系统性能并且降低系统功耗。
可选地,图6的广播区1-4也可以独立于广播屏蔽1-3使用。例如,广播区可以定义为其中出现或未出现广播的区域。即,对于广播区1164内的代码,针对GPR 46的任何更新,广播可始终发生。然而,可以定义广播区2,使得对于在这个范围内的代码,广播根本不发生。因此,广播能力也可以单纯基于广播区,而不是单纯基于广播屏蔽或广播屏蔽及区域的组合,而是选择性的。
图7图解了一个选择性寄存器广播操作的例子的时序图。指令ADD  R3,R2及OR  R4,R5在图6的广播区1 164内,因此对应于广播屏蔽1 158,其一个例子也在图7中说明。指令ADD  R6,R7,SUB  R3,R4,及MUL  R9,R10在图6的广播区2166内,因此对应于广播屏蔽2160,其一个例子也在图7中说明。图7的时序图指示何时指令在指令流水线44的执行阶段。在各个指令内带下划线的寄存器指示目的寄存器(结果被写入的寄存器)。
在区域1 164内,ADD  R3,R2的结果被写入寄存器R3(其中R3=R3+R2)。由于广播屏蔽1 158把一个“1”写入位位置3,对寄存器R3的任何写入将通过HDP[31:0]72由处理器12广播。因此,在图7的时序图的第一个时钟周期内,ADD指令的结果(被写入处理器12内的R3的结果)通过HDP[31:0]72向协处理器14广播。由于其正被广播,也通过REG[4:0]68向协处理器14提供对应于R3的寄存器编号。声明REGWR*67以允许协处理器14把传入结果写入其寄存器之一,并且声明使能_广播82,使得图2的三态缓冲区96可以驱动结果到HDP[31:0]72。并且,通过H_REGION[N:1]128向协处理器14提供区域指示符。因此,当在区域1中正执行代码时,H_REGION[N:1]128(对应于一个N位数值)指示“1”。
OR  R4,R5指令跟随ADD  R3,R2指令,并且仍然在广播区1164内;然而,其目的寄存器是R4。根据广播屏蔽1 158,写入R4的结果不被广播;因此,OR指令的结果不提供给协处理器14,寄存器编号不需要通过REG[4:0]68,并且REGWR*和使能_广播都解除声明。
下面3个指令AND  R6,R7,SUB  R3,R4,及MUL  R9,R10全在广播区2 166内。R6,R3及R9均带下划线,以指示它们是其对应指令的目的寄存器。一旦进入广播区2166,H_REGION[N:1]128改变状态以指示′2′。广播区2166具有一个表明只应广播对寄存器R9及R6的写入的对应广播屏蔽2 160。因此,如在图7的时序图中所见,当在广播区2 166中时,通过HDP[31:0]72向协处理器14仅广播AND及MUL指令的结果。每个寄存器的寄存器编号也通过REG[4:0]68发送,并且声明REGWR*和使能_广播82。然而,由于广播屏蔽2 160指示在广播区2166内不应广播对寄存器R3的写入,所以未广播SUB指令的结果。
图8以模块图形式图解了图2的控制电路40的一部分的一个实施例。控制电路40的部分包含广播屏蔽1寄存器134,广播屏蔽2寄存器136,及广播屏蔽M寄存器138,屏蔽选择电路132,及目的比较单元142。控制电路40包含M个广播屏蔽寄存器。(同时注意,控制电路40可只包含1或2广播屏蔽寄存器,即使图解了3个。)控制电路40也包含连接到广播屏蔽1寄存器134,广播屏蔽2寄存器136及广播屏蔽M寄存器138的屏蔽选择电路132。屏蔽选择电路也接收H_REGION[N:1],并且向目的比较单元142提供当前广播屏蔽140。目的比较单元142也被从指令解码42连接到导体90,并且向三态缓冲区96提供使能_广播82。
在操作中,广播屏蔽寄存器134,136及138的值可以通过结果信号83加载。因此,可以向处理器12提交一个指令以加载值到广播屏蔽寄存器;因此,通过导体90的控制信号可以指示要执行一个指令以加载广播屏蔽寄存器134,136或138,其中作为来自MUX 54的结果信号83而提供实际值。因此,在这个实施例中,广播屏蔽寄存器134,136及138是用户可编程的。屏蔽选择电路132接收作为指示代码的当前执行区(即,当前程序区域)的N位数值的H_REGION[N:1]128。(注意,根据处理器12的设计,区域数Y可大于或小于广播屏蔽寄存器的数量。)屏蔽选择电路132可以用若干不同方式实现,以把广播屏蔽寄存器134,136,...,138之一与由H_REGION[N:1]128指示的每个区域关联。在一个实施例中,屏蔽选择电路132把唯一广播屏蔽与每个广播区关联。在可选实施例中,屏蔽选择电路132可以包含用户可编程寄存器或其它电路,以允许把一个选择的广播屏蔽任意关联到每个广播区,因而允许不同广播区共享广播屏蔽。可选地,广播屏蔽与广播区的关联可以基于数据处理系统10的状态,并且可以在没有软件干预的情况下动态改变。
因此屏蔽选择电路132使用H_REGION[N:1]128以选择对应广播屏蔽寄存器(134,136或138),并且把它作为当前广播屏蔽140提供。例如,如果HREGION[N:1]128指示图6的广播区2166,则屏蔽选择电路132将选择具有对应于广播屏蔽2160的数值的广播屏蔽寄存器(该值可被存储在广播屏蔽寄存器134,136或138的任何一个中)。接着目的比较单元142确定何时一个指令导致向GPR 46内的一个目的寄存器写入一个操作数,并且把由指令解码42通过导体90提供的目的寄存器与当前广播屏蔽140相比较,以确定是否使能广播。如果比较指示应当广播结果,则声明使能_广播82,以便使能三态缓冲区96驱动结果到HDP[31:0]72上。
图9以模块图形式图解了图2的部分广播区控制单元的一个实施例。广播区控制单元120包含区1上界寄存器146,区1下界寄存器148,区2上界寄存器150,区2下界寄存器152,区Y上界寄存器154,区Y下界寄存器156,及界限比较单元144。区1上界寄存器146,区1下界寄存器148,区2上界寄存器150,区2下界寄存器152,区Y上界寄存器154,区Y下界寄存器156可以接收来自控制单元40的区域_说明符122,并且存储这些说明符。可向每个界限寄存器146,148,150,152,154及156提供唯一说明符。这些说明符可以由控制电路40根据结果83选择,并且因而是指令执行结果值的函数,或可以通过指令解码90,或由其它可选装置提供。界限寄存器146,148,150,152,154及156向界限比较单元144提供输出。界限比较单元144也被从程序计数器单元130连接到导体126,并且提供HREGION[N:1]128作为输出。
在操作中,区1上界寄存器146及区1下界寄存器148定义对应于广播区1(例如,图6的广播区1 164)的开始及结束指令地址。因此,当程序计数器(程序计数器单元130内)在开始及结束指令地址内(即,区1的上界及下界内)时,界限比较单元144输出H_REGION[N:1]128以指示区1。同样,每对上及下区界限,例如150及152或154及156,定义一个广播区,并且当程序计数器在任何这些区内时,输出对应区作为H_REGION[N:1]128。注意,如图9所示,广播区控制单元120包含3个广播区定义;然而,可以定义任何区数Y。通过提供两种数值及控制信号以加载这些寄存器的区域_说明符122,这些上及下界寄存器(146,148,150,152,154及156)可以全部是用户可编程。
在可选实施例中,其它方法及寄存器可用于定义广播区。例如,一个基地址及一个屏蔽可以用于定义每个广播区而不是一个下界及上界。同时,页属性可以用于定义使用保护或重新定位控制的系统中的广播区(例如一个表查找支援缓冲区,TLB)。在可选实施例中,广播区控制单元120也可以位于控制电路40内。可选地,广播屏蔽寄存器及广播区定义寄存器可以组合,使得通过一个具体区选择一个具体屏蔽。通过这种方式,可以降低更新屏蔽及区定义的开销。并且,如上所述,不同广播区可以共享一个相同广播屏蔽,同时降低广播屏蔽寄存器的数量。同时,可选实施例可以不需要向协处理器14提供广播区信息,因而消除对H_REGION[N:1]128的需要。
在本发明的一个可选实施例中,图6的广播区1-4也可以允许协处理器14实现一个选择性执行模式策略。广播区也可以被称作执行区。例如,通过传递一个指示当前执行区(诸如上面描述的H_REGION[N:1]128)的信号,处理器12可以向协处理器14提供一个执行上下文。即,H_REGION[N:1]128可用于允许协处理器14设置本身以在不同及唯一的数据驱动操作模式中操作,其中通过H_REGION[N:1]128的值在处理器12的操作期间动态选择该模式。例如,根据当前执行区(即,当前正执行的程序代码的部分),可以设置协处理器以响应HREGION[N:1]128在不同模式下操作或执行不同功能。例如,如果H_REGION[N:1]128指示执行区2,则协处理器14可以对针对存储器的传送执行循环冗余校验,并且如果H_REGION[N:1]128指示执行区3,则协处理器14可以执行一个过滤函数或一个硬件散列函数。因此,根据当前执行区,协处理器14可以改变其功能。
在当前发明的某些实施例中,响应通过H_REGION[N:1]接收当前执行区说明符而修改协处理器14的操作的概念允许简化协处理器,以及降低处理器12及协处理器14之间命令传送的开销。协处理器14可以工作于数据驱动方式,其中响应通过HDP[31:0]72来自处理器12的数据传送,以及通过GPR 46中正更新的寄存器的REG[4:0]68的指示,进行处理。当与广播屏蔽的概念结合时,只有实际数据驱动项被传递到协处理器14。通过这种方式,由REG[4:0]68指示的,对应于由处理器12执行的指令的目的寄存器的每个值,可以进一步指示由协处理器14执行的具体操作,它是当前执行上下文的一个函数。当一个寄存器广播操作发生时,处理器12的指令执行可以把GPR 46内的具体寄存器作为目标以间接影响由协处理器14的选定功能。另外,当由H_REGION[N:1]指示的执行上下文改变时,REG[4:0]68的具体编码所对应的选定功能可以改变,其中没有通过处理器12显式重新配置协处理器14的开销。
在前面的说明书中参照特定实施例描述了本发明。然而本领域的普通技术人员理解,在不偏离如下面权利要求书提出的本发明的范围的前提下可以进行各种修改和改变。例如,这里描述的电路可以通过单个集成电路,或不止一个集成电路,或硬件和软件的组合来实现。相应地,说明书和图例只被看作图解性的而不是限定性的,并且所有这种修改均被包含在本发明的范围内。
前面已经针对具体实施例描述了本发明的益处、其它优点和问题解决方案。然而,上述益处、优点、问题解决方案和目的是使任何益处、优点或解决方案付诸实现和易于理解的任何要素,均不得被解释成任何或所有权利要求的关键、必需或必要特征或要素。这里,术语″包括″或其任何其他表达方式均被用来覆盖非排它性的内含,使得包括一系列要素的过程、方法、项目或装置不仅仅包含那些要素,而是可以包含其它没有明确列出或所述过程、方法、项目或装置所固有的要素。

Claims (7)

1.一种使处理器通过协处理器通信总线向寄存器堆选择性广播写事务的方法,所述处理器具有包括多个寄存器的所述寄存器堆和对应于该寄存器堆的广播说明符,该方法包括:
接收要写入所述寄存器堆的操作数;
在所述寄存器堆中选择所述多个寄存器中的一个;
向所述寄存器堆提供要写入所述寄存器堆的所述操作数;及
根据广播说明符,通过所述协处理器通信总线选择性地提供要写入所述寄存器堆的所述操作数。
2.如权利要求1所述的方法,其中:
广播说明符包括一组广播指示符,该组广播指示符内的每个广播指示符对应于多个寄存器中的一个;
通过所述协处理器通信总线选择性地提供要写入所述寄存器堆的所述操作数的步骤基于对应于所述寄存器堆的所述多个寄存器中的选定一个的广播指示符。
3.如权利要求1所述的方法,其中广播说明符是处理器内多个广播说明符之一,多个广播说明符中的每个对应于处理器的至少一个广播区,并且其中所述方法还包括:
通过所述协处理器通信总线选择性地提供与当前写事务的当前广播区对应的区指示符。
4.一种使具有包括多个寄存器的寄存器堆的处理器通过协处理器通信总线向所述寄存器堆选择性广播写事务的方法,该方法包括:
接收要写入所述寄存器堆的操作数;
选择所述寄存器堆的所述多个寄存器中的一个;
向所述寄存器堆提供要写入所述寄存器堆的所述操作数;及
根据所述处理器的当前执行区,通过所述协处理器通信总线选择性地提供要写入所述寄存器堆的所述操作数。
5.一种处理器,包括:
多个寄存器;
用于对多个寄存器之一执行写操作的电路;
用于提供写操作的操作数给所述多个寄存器之一的导体;
一组广播说明符;
比较电路,用于比较多个寄存器之一和广播说明符中的选定一个,并且用于提供广播使能信号;及
连接到比较电路的端口,用于与协处理器通信总线通信,所述端口包括至少一个协处理器通信总线信号,用于响应广播使能信号选择性地提供所述操作数。
6.如权利要求5所述的处理器,其中该组广播说明符内的每个广播说明符包括一组广播指示符,其中每个广播指示符对应于多个寄存器中的至少一个。
7.如权利要求6所述的处理器,还包括:
程序计数器单元,用于指示地址位置;及
广播区控制单元,连接到程序计数器单元,用于指示何时来自程序计数器单元的所指示地址位置在一组广播区之一内。
CNB028264991A 2001-11-13 2002-10-30 使处理器与协处理器接口的方法和设备 Expired - Fee Related CN1290003C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/054,577 US7228401B2 (en) 2001-11-13 2001-11-13 Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US10/054,577 2001-11-13

Publications (2)

Publication Number Publication Date
CN1610880A CN1610880A (zh) 2005-04-27
CN1290003C true CN1290003C (zh) 2006-12-13

Family

ID=21992061

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028264991A Expired - Fee Related CN1290003C (zh) 2001-11-13 2002-10-30 使处理器与协处理器接口的方法和设备

Country Status (7)

Country Link
US (1) US7228401B2 (zh)
EP (1) EP1446717A1 (zh)
JP (1) JP4098241B2 (zh)
KR (1) KR100981033B1 (zh)
CN (1) CN1290003C (zh)
TW (1) TWI313822B (zh)
WO (1) WO2003042819A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298639A (zh) * 2014-09-23 2015-01-21 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
JP2005535966A (ja) * 2002-08-09 2005-11-24 インテル・コーポレーション アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
US20050131561A1 (en) * 2003-12-16 2005-06-16 Dell Products L.P. Information handling system including docking station with digital audio capability
US7395410B2 (en) * 2004-07-06 2008-07-01 Matsushita Electric Industrial Co., Ltd. Processor system with an improved instruction decode control unit that controls data transfer between processor and coprocessor
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7921195B2 (en) * 2008-06-09 2011-04-05 International Business Machines Corporation Optimizing service processing based on business information, operational intelligence, and self-learning
CN102207919A (zh) 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
US20130326192A1 (en) * 2011-12-22 2013-12-05 Elmoustapha Ould-Ahmed-Vall Broadcast operation on mask register
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
CN116414459A (zh) 2011-12-23 2023-07-11 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
EP2798464B8 (en) 2011-12-30 2019-12-11 Intel Corporation Packed rotate processors, methods, systems, and instructions
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) * 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9785444B2 (en) 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
US10409601B2 (en) * 2017-12-29 2019-09-10 Intel Corporation Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
US10719329B2 (en) * 2018-06-28 2020-07-21 Arm Limited Apparatus and method for using predicted result values
US12026555B2 (en) 2020-12-15 2024-07-02 International Business Machines Corporation Adjunct processor command-type filtering
US11487556B2 (en) * 2020-12-15 2022-11-01 International Business Machines Corporation Command-type filtering based on per-command filtering indicator

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US5283881A (en) * 1991-01-22 1994-02-01 Westinghouse Electric Corp. Microcoprocessor, memory management unit interface to support one or more coprocessors
DE69229657T2 (de) * 1991-06-19 1999-12-02 Hewlett Packard Co Co-Prozessor unterstützende Architektur für einen Prozessor, der keine Zusatzprozessorfähigkeit hat
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
US5983338A (en) * 1997-09-05 1999-11-09 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor for communicating register write information
US6505290B1 (en) 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US5923893A (en) * 1997-09-05 1999-07-13 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6223277B1 (en) * 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US6138185A (en) * 1998-10-29 2000-10-24 Mcdata Corporation High performance crossbar switch

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298639A (zh) * 2014-09-23 2015-01-21 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口
CN104298639B (zh) * 2014-09-23 2017-03-15 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口

Also Published As

Publication number Publication date
US20030093648A1 (en) 2003-05-15
CN1610880A (zh) 2005-04-27
US7228401B2 (en) 2007-06-05
TWI313822B (en) 2009-08-21
KR100981033B1 (ko) 2010-09-10
TW200300230A (en) 2003-05-16
EP1446717A1 (en) 2004-08-18
JP4098241B2 (ja) 2008-06-11
KR20050058240A (ko) 2005-06-16
JP2005528669A (ja) 2005-09-22
WO2003042819A1 (en) 2003-05-22

Similar Documents

Publication Publication Date Title
CN1290003C (zh) 使处理器与协处理器接口的方法和设备
US6157997A (en) Processor and information processing apparatus with a reconfigurable circuit
CN1299218C (zh) 执行指令的方法
US8458677B2 (en) Generating code adapted for interlinking legacy scalar code and extended vector code
US4575793A (en) Personal-computer to 3270 system interfacing apparatus
US20080250227A1 (en) General Purpose Multiprocessor Programming Apparatus And Method
US20130111188A9 (en) Low latency massive parallel data processing device
US20020042909A1 (en) Retargetable compiling system and method
CN1167018C (zh) 适应性强的通用输入/输出系统
CN1856770A (zh) 具有多寄存器环境的数据处理系统及其方法
EP0742521A1 (en) Interrupt control device of small hardware size which deals with much interrupt processing flexibility
CN102521535A (zh) 通过特定指令集来进行相关运算的信息安全协处理器
US6378050B1 (en) Information processing apparatus and storage medium
EP0982655A2 (en) Data processing unit and method for executing instructions of variable lengths
Kesseler The implementation of functional languages on parallel machines with distributed memory
WO1989009967A1 (en) Computing machine with hybrid communication architecture
CN115437691B (zh) 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置
US7287151B2 (en) Communication path to each part of distributed register file from functional units in addition to partial communication network
EP1499959B1 (en) Vliw processor with data spilling means
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
CN1535427A (zh) 用于芯片上系统设计的有效中断系统
Takesue Cache memories for data flow machines
Polig et al. A soft-core processor array for relational operators
Foster Computer architecture
WO2009004628A2 (en) Multi-core cpu

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
C56 Change in the name or address of the patentee

Owner name: FISICAL SEMICONDUCTOR INC.

Free format text: FORMER NAME: FREEDOM SEMICONDUCTOR CORP.

CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: FREESCALE SEMICONDUCTOR, Inc.

Address before: Texas in the United States

Patentee before: FreeScale Semiconductor

ASS Succession or assignment of patent right

Owner name: APPLE COMPUTER, INC.

Free format text: FORMER OWNER: TIANDING INVESTMENT CO., LTD.

Effective date: 20150707

Owner name: TIANDING INVESTMENT CO., LTD.

Free format text: FORMER OWNER: FISICAL SEMICONDUCTOR INC.

Effective date: 20150707

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150707

Address after: American California

Patentee after: APPLE Inc.

Address before: American California

Patentee before: Zenith investment LLC

Effective date of registration: 20150707

Address after: American California

Patentee after: Zenith investment LLC

Address before: Texas in the United States

Patentee before: FREESCALE SEMICONDUCTOR, Inc.

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

Granted publication date: 20061213

Termination date: 20211030

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