将一个处理器与一个协处理器相接口的方法和装置的制作方法

文档序号:6414425阅读:190来源:国知局
专利名称:将一个处理器与一个协处理器相接口的方法和装置的制作方法
技术领域
本发明涉及具有一个处理器和至少一个协处理器的一个数据处理系统,尤其涉及将一个处理器与一个协处理器相接口的一种方法和装置。
通过专用的和专门的硬件功能元件,扩展一个基准体系结构处理器功能的能力是可测量的和可扩展的体系结构的一个重要方面。
用于扩展一个基准体系结构处理器功能的优选方式中的一种是通过使用协处理器。这些协处理器通常是在处理器的指引下运行的专用的单用途处理器。协处理器一个常用的用途是用作数学协处理器,有选择的为没有直接提供浮点能力的体系结构提供这个功能。这种数学协处理器的例子是Intel 8087和80287。协处理器的其它可能的用途或类型包括乘-累加器,调制器/解调器(调制解调器),数字信号处理器(DSP),维特比计算器,加密处理器,图像处理器和向量处理器。
对于协处理器已经有两种不同的方法。一方面,对于数字设备公司(DEC)的PDP-11系列计算机,将浮点单元与它的主处理器紧密耦合。出现的一个问题是这种紧密耦合要求主处理器要知道协处理器计算的实际数量。这使电路设计复杂起来,这样,将一个新协处理器加到一个集成系统上的扩展是一个主要的工程问题。
可选的实现方法是将协处理器与主处理器松散耦合。这样做的益处是从主处理器中提取并分离出协处理器的操作,并且能够真正减少将一个新的协处理器与一个已存在的处理器相集成时所要做的工作。但是这也必然要花费代价。性能的损失是这种方法的一个问题。由这种松耦合所引起的这种类型的性能命中的一个问题是调用这样一个协处理器时无亏损点也相应地增加。这样,对于协处理器,许多其它的吸引人的应用的效能价格比并不合算。此外,这样一种方法经常要求使用一条总线,还有所有的相应的附加电路和芯片区域。
这样具有一个协处理器接口就是非常重要的,将接口紧密耦合,使得接口的使用足够快,甚至在调用相对简单的函数时也占有优势,同时将接口提取成这样一个扩展,从任何给定的协处理器的细节中将处理器的体系结构尽可能多的分离出来。后者中的一部分包括使接口程序设计器友好,目的是可以方便使用软件而不是硬件设计新的协处理器应用。
通过下面的详细描述和附图能够更清晰的理解本发明的特点和益处,其中相同的数字用来表示相同和相对应的部分,其中

图1是依据本发明的一个数据处理系统的一种实施方式的框图。
图2是图1中处理器的一部分的框图;图3是图1中协处理器的一部分的一种实施方式的框图;图4是依据本发明的一个寄存器窥探操作的时序图;图5是用于指令信号交换的基本指令接口操作的时序图;图6是在使用H-BUSY*信号控制协处理器接口指令执行时,指令接口操作的时序图;图7是指令删除的时序图;图8是指令流水线停顿的一个例子的时序图;图9是一个没有停顿的背对背操作的一个例子的时序图;图10是具有内部流水线停顿的背对背操作的时序图;图11是具有H-BUSY*停顿的背对背协处理器接口30的时序图;图12是图解响应协处理器接口操作码的译码和测试操作由一个协处理器断言的H-EXCP*信号的一个例子的时序图。
图13是图解响应协处理器接口操作码的译码和测试操作当删除协处理器接口指令时,由一个协处理器断言的H-EXCP*信号的一个例子的时序图。
图14是图解一个已经断言了H-BUSY*以延迟一个协处理器接口操作码运行的例子的时序图。
图15是图解与H-CALL原语相关的寄存器传送的一个例子的时序图。
图16是图解与H-LD原语相关的寄存器传送的一个例子的时序图。
图17是图解协处理器接口的一个H-LD的传送顺序的时序图。
图18是图解在一个存储器存取造成一个存取异常的时候协议的时序图。
图19是图解与H-ST原语相关联的传送的一个例子的时序图;图20是图解延迟的存储数据的传送的一个例子的时序图;图21是图解在存储造成一个存取错误的时候协议信号的时序图;图22图解依据本发明的H-CALL原语的一个指令格式;图23图解依据本发明的H-RET原语的一个指令格式;图24图解依据本发明的H-EXEC原语的一个指令格式;图25图解依据本发明的H-LD原语的一个指令格式;图26图解依据本发明的H-ST原语的一个指令格式;在下面的描述中,采用了大量的具体的细节,例如特定的字或字节长度,等等,以提供对本发明的一个透彻的理解。然而对本技术领域中的熟练技术人员来说,可能无须这些特定细节就能够实现本发明。在另外的例子中,以框图的形式来表示电路,目的是不在不必要的细节中混淆本发明。对于大部分,已经省略了有关时序的考虑和相类似的细节,因为对于完整理解本发明这些细节并不是必需的,而且它们也在相关领域的技术人员的技术范围之内。
术语“总线”用来指多个信号或导线,可以使用它们来传送一个或多个不同类型的信息,例如数据,地址,控制或状态。术语“断言(assert)”和“否定(negate)”是用来将一个信号,状态为或相类似设备的描述相应的引用为它的逻辑真或逻辑假状态。如果逻辑真状态是一个逻辑电平1,那么逻辑假状态将是一个逻辑电平0。并且如果逻辑真状态是一个逻辑电平0,那么逻辑假状态将是一个逻辑电平1。
图1是一个图解数据处理系统10的一种实施方式的框图,该数据处理系统包括一个处理器12,一个协处理器14,一个协处理器16,一个存储器18,其它模块20和外部总线接口22,它们都是通过总线28双向耦合的。本发明的可选实施方式可能仅仅包括一个协处理器14,两个协处理器14和16,或更多的协处理器(没有表示)。外部总线接口22通过集成电路终端35与外部总线26双向耦合。存储器24与外部总线26双向耦合。可以选择通过集成电路终端31将处理器12与数据处理系统10外部耦合。可以选择通过集成电路终端32将协处理器14与数据处理系统10外部耦合。可以选择通过集成电路终端32将存储器18与数据处理系统10外部耦合。可以选择通过集成电路终端34将其它模块20与数据处理系统10外部耦合。通过协处理器接口30将处理器12与协处理器14和协处理器16双向耦合。
图2是一个图解图1中处理器12的一部分的框图。在一种实施方式中,处理器12包括控制电路40,指令译码电路42,指令管道44,寄存器46,算术逻辑单元(ALU)48,锁存多路转换器(MUX)50,锁存多路转换器(MUX)52,和多路转换器(MUX)54。在本发明的一种实施方式中,协处理器接口30包括信号60-71。时钟信号是由控制电路40生成的。协处理器运行信号61是由控制电路40生成的,并将该信号提供给协处理器14和16。
管理状态信号62是由控制电路40生成的,并将该信号提供给协处理器14和16。译码信号63是由控制电路40生成的,并将该信号提供给协处理器14和16。协处理器忙信号64是由控制电路40从协处理器14或16中接收到的。执行信号65是由控制电路40生成的,并将该信号提供给协处理器14和16。异常信号66是由控制电路40从协处理器14或协处理器16中接收到的。寄存器写(REGWR*)信号67是由控制电路40生成的,并将该信号提供给协处理器14和16。寄存器信号(REG{4:0})68是由控制电路40生成的,并将该信号提供给协处理器14和16。出错信号(H-ERR*)69是由控制电路40生成的,并将该信号提供给协处理器14和16。数据选通信号(H-DS*)70是由控制电路40生成的,并将该信号提供给协处理器14和16。数据确认信号(H-DA*)是由控制电路40从协处理器14或协处理器16中接收到的。硬件数据端口信号(HDP{31:0})72也被认为是协处理器接口30的一部分,在协处理器14和16与处理器12的内部电路之间它们是双向的。
在本发明的一种实施方式中,从/或向总线28提供多个信号,目的是在存储器18和/或存储器24中加载或存储数据。在一种实施方式中,这些信号包括一个传输请求信号(TREQ*)73,它是由控制电路40生成的并将该信号提供给总线28。通过总线28将传输出错确认信号(TEA*)74提供给控制电路40。通过总线28将传输确认信号(TA*)75提供给控制电路40。从总线28通过导线76将指令提供给指令管道44。通过导线76将数据提供给MUX54。驱动数据信号79能够使三态缓冲器95通过导线88和76提供来自锁存MUX52的数据。地址选择信号78使锁存MUX50能够通过导线77向总线28提供地址。MUX50的另外一个输入是由HDP信号(HDP{31:0})72提供的。MUX54的另外一个输入是通过ALU结果导线86提供的。将MUX54的输出,结果信号83提供给寄存器46和三态缓冲器96的输入。驱动HDP信号82能够使三态缓冲器96在HDP信号72之上驱动结果信号83。三态缓冲器96的输出也与锁存MUX52的输入相耦合。在本发明的可选实施方式中,寄存器46中可能包括任何数量的寄存器。提供结果信号83,作为锁存MUX50的一个输入。通过MUX54将结果信号83提供给寄存器46。结果选择信号(RESULT-SELECT)81选择在结果导线83之上驱动MUX54的哪一个输入。将源选择信号(SOURCE-SELECT)80提供给锁存MUX52,以选择在导线88上将哪一个信号驱动到三态缓冲器95。控制电路40提供控制信息,并通过导线91从寄存器46接收状态信息。控制电路40提供控制信号,并通过导线92从算术逻辑单元48接收状态信号。控制电路40提供控制信号并通过导线93从指令管道44和指令译码电路42接收状态信号。耦合指令管道44以通过导线89向指令译码电路42提供指令。指令译码电路42通过导线90向控制电路40提供译码后的指令信息。寄存器46通过导线84向算术逻辑单元48提供源操作数。寄存器46通过导线84,锁存MUX52,三态缓冲器95和导线76提供数据,将该数据存储在存储器18或存储器24中。寄存器46通过导线84,锁存MUX50,和地址导线77向存储器18或存储器24提供地址信息。寄存器46通过导线85向算术逻辑单元48提供一个第二源操作数。
图3是一个图解协处理器14的一部分的一种实施方式的框图。在一种实施方式中,协处理器14包括控制电路100,计算电路102,和可选的存储电路104。控制电路100通过协处理器接口30与处理器12双向耦合,其中协处理器接口30包括信号60-72。在本发明的一种实施方式中,控制电路100包括译码电路106,该译码电路106从处理器12接收运行信号61和译码信号63。控制电路100提供控制信息,并通过导线108从可选的存储电路104中接收状态信息。控制电路100提供控制信息,并通过导线109从计算电路102中接收状态信息。计算电路102和可选的存储电路104通过导线110双向耦合。向或从总线28或集成的电路终端32提供一个或多个信号110。控制电路100通过导线112从或向总线28或集成的电路终端32接收或提供信息。信号72可以与计算电路102和可选的存储电路104双向耦合。此外,信号72可以与总线28或集成的电路终端32双向耦合。在本发明的一种可选实施方式中,可能并没有实现的可选的存储电路104。在本发明的一种实现了可选的存储电路104的实施方式中,这可以是使用寄存器,任何类型的存储器,包括锁存或可编程的逻辑阵列等等的任何类型的存储电路来实现。在本发明的可选实施方式中,计算电路102可以执行任何类型的逻辑或计算功能。
该系统通过一个外协处理器14(或硬件加速器)提供对任务加速的支持,对于与特定应用相关的操作将外协处理器14(或硬件加速器)最优化。对于执行一个人口数计算,或更复杂的功能例如一个DSP加速协处理器14或能够进行高速乘/累加操作的协处理器14,这些外协处理器14,16可能就象一个协处理器14那么简单。
对于一个特定实现,由若干个机制中的一个或几个,在处理器12和协处理器14之间传送数据。这可被分为向协处理器14的传送,和从协处理器14的传送。
向协处理器14传送数据的的机制中的一个是寄存器窥探机制,它不涉及指令原语,但却是正常的处理器12操作的副产品。这包括在接口中反映对于处理器的12个通用寄存器(“GPR”)46的更新,这样一个协处理器14能够监视对一个或多个处理器12寄存器的更新。对于一个内部寄存器或功能,如果一个协处理器14“覆盖”了一个GPR46,那么这可能是适合的。在这种情况下,不要求从处理器12向一个协处理器14显式的传递参数。
也在基处理器12中提供指令原语以在外协处理器14,16和处理器12之间显式传送操作数和指令。此外还提供了一个信号交换机制,以允许控制指令和数据传送的速率。
注意到协处理器14的功能被设计为是特定实现的单元,这样在不同的实现中,可以自由改变一个给定单元的精确功能,即使可能存在相同的指令映射。
图4是一个图解一个寄存器窥探操作的时序图。为了避免向协处理器14或外监视器额外的传递参数,提供了一个寄存器窥探机制。这允许一个协处理器14实现处理器的12个通用寄存器46中的一个或多个的阴影拷贝(shadow copy)。这个能力是通过传送被写入到处理器GPR46中的值,和一个指示对于每一个GPR寄存器46也正被更新的指示值来实现的。对于每一个GPR更新,断言一个选通信号REGWR*67。在32位的双向数据路径HDP[31:0]72中传送该值,并且一个5位的寄存器数字总线提供了一个指向正在被更新的(REG[4:0])68的实际的处理器寄存器46的指针。在一个正常的文件或一个可选的文件中寄存器编码可能是一个寄存器46。在优选的实施方式中,通过REG[4]==1来指示可选的文件寄存器,由REG[4]==0来指示正常的文件寄存器。但是,要注意本发明不以任何方式依赖于寄存器组实际的分区。
一个协处理器14可能在内部将该值与一个目的寄存器46序号的指示一起锁存,以避免后面的显式移动。也可能由一个调试协处理器14来使用这个功能,以跟踪寄存器46或它的一个子集的状态。
一个专用的12位指令总线(H-OP[11:0])61提供被发布给外协处理器14的协处理器接口30操作码。这条总线反映了该处理器的操作码的低位的12位。没有反映高位的4位,因为它们总是0b0100。也提供了一个管理状态指示器(H-SUP)62来指示PSR(S)位的当前状态,指示处理器是运行在管理状态还是用户状态。这对于将某一协处理器功能限定到管理状态是有用的。使用处理器12和外协处理器14,16之间信号交换的一个集合来协调协处理器接口30指令的执行。
由处理器12生成的控制信号是处理器12内部流水线结构的一个反映。处理器流水线44包括取指令,指令译码42,执行,和结果写回阶段。它包括一个或多个指令寄存器(IR)。处理器12也包括一个指令预取缓冲器以允许在译码阶段42之前缓冲一条指令。通过进入指令译码寄存器IR,指令从这个缓冲器继续到指令译码阶段42。
指令译码器42从IR接收输入,并且在IR中所保存的值的基础上生成输出。这些译码42输出不总是有效的,有可能要依据指令流中的异常条件或变化删除某些输出。即使在有效时,也可能在IR中保存指令,直到它们能够继续进行到指令流水线中的执行阶段。由于这个只有在已经完成了前面的指令时才能发生(这可采取多时钟),译码器将继续译码IR中所包括的值,直到IR被更新。
图5是一个图解用于指令信号交换的基本指令接口操作的时序图。提供一个指令译码选通(H-DEC*)信号63,以由处理器12来指示协处理器接口30操作码的译码。当一个协处理器接口30操作码驻留在IR中时,将断言这个信号,即使可能并不执行该指令而将其删除。对于多时钟,同一指令,可能保持对H-DEC*63信号的断言,直到实际发布或删除该指令。
由处理器12来监测一个忙信号(H-BUSY*)64,以确定一个外协处理器14是否能够接收协处理器接口30指令,并且部分控制指令的发布何时发生。如果H-BUSY*64信号被否定,而断言了H-DEC*63,接口将不能停顿指令的执行,并且一旦继续执行指令就能够断言H-EXEC*65。在处理器12译码一个协处理器接口30操作码的时候(由H-DEC*63的断言来指示),如果断言了信号H-BUSY*64,那么将强迫执行延迟的协处理器接口30操作码。一旦H-BUSY*64信号被否定,处理器12能够通过断言H-EXEC*65来发布指令。如果协处理器14能够缓冲指令,H-BUSY*64信号就能够被用来填充缓冲器。
图6是一个图解当使用H-BUSY*64控制协处理器接口30指令执行的时候指令接口操作的时序图。一旦已经分解了任何内部停顿条件,并已经否定了H-BUSY*64信号,处理器能够断言H-EXEC*65以指示协处理器接口30指令已经进入了流水线的执行阶段。一个外协处理器14应该监视H-EXEC*65信号以控制指令的实际执行,因为对于处理器有可能在某种条件下执行之前就删除了该指令。如果一个较早的指令执行导致了一个异常,那么将不会断言H-EXEC*65信号,并且将否定H-DEC*63输出。如果在IR中将该指令删除,作为程序流中一个改变的结果,那么有可能进行一个相似的处理。
图7是一个图解指令删除的时序图。如果删除了一条指令,那么在将另一个协处理器接口30操作码放在H-OP[11:0]61总线上之前,否定H-DEC*63信号。
图8是一个图解指令流水线停顿的一个例子的时序图。会存在这样的情况,即便断言了H-DEC*63并否定了H-BUSY*64,处理器12也可能延迟H-EXEC*65的断言。在等待完成一条较早的指令的时候,可能会发生这种情况。
图9是一个图解没有停顿的背对背操作的一个例子的时序图。对于背对背协处理器接口30指令,能够保持对H-DEC*63信号的断言,而不是将其否定,即使在新指令进入IR时更新了H-OP[11:0]61总线。总之,H-EXEC*65的断言对应于在前一个时钟被译码的指令的执行。
图10是一个图解具有内部流水线停顿的背对背操作的时序图。在这种情况下,否定了H-BUSY*64,但是,直到内部停顿条件消失,处理器才为第二个协处理器接口30指令断言H-EXEC*65。
图11是一个图解具有H-BUSY*64停顿的背对背协处理器接口30指令的时序图。在这个例子中,外协处理器14为忙,不能立即接收第二条指令。断言H-BUSY*64以阻止处理器12发布第二条指令。一旦协处理器14空闲,则否定H-BUSY*64,并且将下一个第二个协处理器接口30指令提前到执行阶段。
与译码协处理器接口30操作码相关的异常可能是由外协处理器14使用H-EXEC*66信号进行通知的。在断言H-DEC*63并否定H-BUSY*64的时钟周期中,采样处理器12的这个输入,并且如果没有象以前描述的那样删除协处理器接口30操作码,将会引起一个硬件协处理器14异常的异常处理。下面将会描述这个异常处理的细节。
图12是一个图解H-EXCP*66信号的一个例子的时序图,该信号是由协处理器14断言的以响应协处理器接口30操作码的译码和测试操作。在断言H-DEC*63并否定H-BUSY*64的时钟中,处理器12采样H-EXCP*66信号。断言H-EXEC*65信号,无论是否由该接口以信号形式通知一个异常;这个断言将异常时所采取的情况与指令删除情况区别开。
应注意到该异常对应于在前一个时钟周期被译码的指令,并且不应该采取实际的执行。一个协处理器14必须在它所能识别的处理器流水线的执行阶段之前接收一条不好的指令并且发出一个异常信号。对于所有否定H-DEC*63或断言H-BUSY*64的时钟周期,都忽略H-EXCP*66信号。
图13是一个图解H-EXCP*66信号的一个例子的时序图,该信号是由协处理器14所断言的以响应协处理器接口30操作码的解码和测试操作。对比这个与图14中的时序图,在这个例子中,删除了协处理器接口30指令,这样就没有断言H-EXEC*65信号,并且否定了H-DEC*63。
图14是一个图解一个例子的时序图,在该例子中已经断言了H-BUSY*64以延迟一个将会引起一个异常的协处理器接口30操作码的执行所有的协处理器14,16都能共享H-BUSY*64和H-EXCP*66信号,这样就必须以一种协调的方式来驱动它们。应该由对应于H-OP[11:10]61的协处理器14,16在确定H-DEC*63的时钟周期来驱动这些信号(或高或低,无论哪一个都适合)。通过只在时钟的低部分驱动输出,多个协处理器14,16可以无争用的共享这些信号。在这个输入上提供处理器12内部的一个保持锁存,对于时钟的高阶段将它保持在一个有效的状态,同时没有单元在驱动它。
协处理器接口30指令原语中的一些也隐含着在处理器12和外协处理器14之间传送数据项。可以在协处理器接口30中传送操作码,作为被执行的特定原语的一个函数。在一个32位双向数据通路之中,提供向或是从协处理器14传送处理器12个GPR中的一个或多个。此外,也提供从/向具有数据汇/源,即协处理器接口30的存储器18加载或存储一个信号数据项。处理器12将通过HDP[31:0]72总线在CLK60的高部分将参数传送到外协处理器14,并且由处理器12在时钟的低阶段从协处理器接收操作码,并将其锁定。在驱动发生之前提供一个延迟做为时钟转移,以允许总线跨区转接的一个小的阶段。一个协处理器14接口必须在时钟的下降沿提供相同的小的延迟。由数据选通(H-DS*70)输出,数据确认(H-DA*71)输入和数据出错(H-ERR*69)输出信号来支持数据项的信号交换。
处理器12提供向协处理器接口30传送一个调用或返回参数表的能力,这与调用或返回软件例程的方式相同。在H-CALL或H-RET原语中指示变元的数量,以控制所通过的参数的数量。以处理器12寄存器R4的内容开始的寄存器值被传送到(出)外协处理器14,作为H-CALL(H-RET)原语的操作的一部分,总共可能通过七个寄存器参数。这个约定与软件例程调用的约定相类似。
操作数传输的信号交换由数据选通(H-DS*70)输出和数据确认(H-DA*71)输入信号控制。在传输期间处理器12断言数据选通,并且以一种覆盖的方式进行传输,这与处理器12接口操作相同。数据确认(H-DA*)71用来指示一个协处理器14已经接受或驱动了一个数据单元。
图15是一个图解与H-CALL原语相关的寄存器46传输的一个例子的时序图。提供指令原语以传输多处理器寄存器,并且在理想的情况下,在每个时钟都能进行传输。对于向一个外协处理器14的传输,处理器自动在确认当前项之前(或同时)开始驱动下一个操作数(如果需要的话)。外部逻辑必须具有一级缓冲的能力以确保数据不会丢失。这张图表示了向协处理器接口30的H-CALL传输的顺序,其中传送了两个寄存器。根据一个否定的数据确认(H-DA*)71,重复第二次传输。
对于从一个外协处理器14向处理器寄存器46的传输,处理器12能够在已经断言了H-DS*70之后,在每个时钟周期中都从一个外协处理器14中接受值,并且按接收时的情况将这些值写入寄存器文件46,因此不需要缓冲。
图16是一个图解与H-RET原语相关的寄存器46传输的一个例子的时序图。在这个例子中,传输两个寄存器46值。协处理器14可以在断言H-EXEC*65信号之后的时钟的开始处驱动数据,因为这是第一次断言H-DS*70时的时钟。H-DS*70输出随CLK60的上升沿转换,而在时钟CLK60的低阶段采样H-DA*71输入。
处理器12提供了使用H-LD或H-ST指令原语向或从协处理器接口30传输一个单存储器操作数的功能。
H-LD原语被用来从存储器18向一个协处理器14传输数据。向协处理器14的操作数传输的信号交换是由数据选通信号(H-DS*)70信号控制的。由处理器12来断言数据选通,以指示已经将一个有效操作数放在了HDP[31:0]72总线上。对于这一传输,忽略了数据确认(H-DA*)71输入。
图17是一个图解向协处理器接口30的H-LD传输的顺序的时序图。在这种情况中,存在一个立即状态的存储器18存取。对于n个等待状态的存储器18存取,将在n个时钟之后驱动操作数和H-DS*70。如果选择用加载的有效地址更新基寄存器46的选项,则在计算之后的第一个时钟中(H-EXEC*65确认之后的时钟),在HDP[31:0]72上驱动更新值。
图18是一个图解当一个存储器18存取导致一个存取异常时协议的时序图。在这种情况中,断言H-ERR*69信号返回给外协处理器14。
H-ST原语能够被用来从一个协处理器14向存储器18传输数据。如果选择了用存储的有效地址更新基寄存器46的选项,则在被计算之后的第一个时钟(紧接在H-EXEC*65之后的时钟),在HDP[31:0]72上驱动更新值。
图19是一个图解与H-ST原语相关的传输的一个例子的时序图。与H-ST原语相关的信号交换由两部分组成,一个是来自协处理器14的初始信号交换,它必须提供要存储的数据,另一个是一旦完成存储器18的存储,来自处理器12的一个完成信号交换。
初始信号交换使用向处理器12的H-DA*71输入来表明协处理器14已经向处理器12驱动了存储数据。在与协处理器14将数据驱动到HDP[31:0]72总线上的相同的时钟中,断言H-DA*71信号。在总线的下半部分取出存储数据,用于进行半个字长的存储,而不将高区的16位写入到存储器18中。在断言H-EXEC*65信号的时钟的开始处采样H-DA*71信号。在识别出H-DA*71的时钟中,请求存储周期,并且在下一个时钟将存储数据驱动到存储器18。一旦完成了该存储,处理器12将断言H-DS*70信号。
图20是一个图解具有延迟存储数据的传输的一个例子的时序图。
图21是一个图解当存储导致一个存取错误时的协议信号的时序图。应注意断言了H-ERR*69信号。如果硬件单元是通过在断言H-EXCP*65的时钟中断言H-EXCP*66,来异常终止指令,则不应该断言H-DA*71信号。
图22到26是图解做为指令集的一部分所提供的指令,以接口一个硬件加速器(或协处理器)14。处理器12解释原语中字段的一部分,其它字段则由协处理器14单独解释。
图22图解用于H-CALL原语的一个指令格式。这一指令用来调用由协处理器14执行的一个函数。该范例与一个标准的软件调用约定相类似,但是是以一种硬件的前后关系出现的。H-CALL原语是由处理器12和协处理器14共同解释的,以传输一个来自处理器12的“调用参数”或变元表,并且在协处理器14中初始化一个特定函数。
指令字的UU和CODE字段不是由处理器12解释的,它们被用来指定一个协处理器14特定功能。UU字段可以指定一个特定的协处理器14,16,CODE字段可以指定一个特殊操作。CNT字段是由处理器12和协处理器14一起解释,并指定传送到协处理器14的寄存器变元的数目。
从通用寄存器46传送变元,从R4开始并且继续通过R(4+CNT-1)。在一个单独的H-CALL调用中可以通过多达七个参数或寄存器46。
H-CALL指令能够被用来实现模块功能块的调用。人们早就知道这种类型接口的使用会使软件系统具有更高的可靠性和较少的错误。通常最好由值来传递函数参数。这样会显著地降低副作用。在许多情况下,分程序结构语言的现代编译器,例如C和C++,在寄存器46中向调用函数或子例程传送参数或变元的短序列。这种技术可以由H-CALL指令来实现。可以将一个编译器配置成向以R4开始的累次寄存器46加载多达七个参数或变元,接着生成H-CALL指令,该指令替代了生成子例程连接指令的标准编译器。
图23图解用于H-RET原语的一个指令格式。这一指令被用来从一个由协处理器14所实现的函数“返回”。该范例与处理器12使用的软件调用约定相类似,但是以硬件的前后关系出现的。该H-RET原语由处理器12和协处理器14共同解释,以从一个协处理器14向处理器12传输一个“返回参数”或值的列表。
指令字的UU和CODE字段不是由处理器12解释的,它们被用来指定一个协处理器14特定功能。UU字段可以指定一个硬件单元,CODE字段可以指定协处理器14中寄存器46的一个特殊操作或集合以返回。CNT字段是由处理器12和协处理器14一起解释的,并且指定从协处理器14向处理器12传送的寄存器46变元的数目。
变元被传递到处理器12通用寄存器46,以R4开始,并继续通过R(4+CNT-1)。可以返回多达七个参数(或寄存器内容)。
至于H-CALL指令,H-RET指令也可以被用来实现模块化编程。结构化编程要求最好通过值将函数返回值返回到一个调用例程。对于一个子例程或函数返回,这经常可以由编译器在寄存器中放置一个或多个返回值来高效地完成。应该注意到传统的结构化编程希望在调用子例程或函数之后能立即返回。在使用协处理器14的情况下,执行通常与调用引用处理器12的执行相同步。H-RET指令可以被用来使处理器12和协处理器14重新同步。这样,处理器12可以加载一个或多个寄存器46,用一个或多个H-CALL指令激活协处理器14,执行不相关指令,并且接下来通过发布H-RET指令,在从一个协处理器14接收一个结果值或多个值时,与协处理器14重新同步。
图24图解用于H-EXEC原语的一个指令格式。这一指令被用来初始化一个函数或进入一个由加速器实现的运行方式。H-EXEC指令可以被用来控制在一个特定协处理器14,16中由一个UU字段指定的一个函数。代码字段不是由处理器12解释的,但是为指定的协处理器14,16所保留。指令字的UU和CODE字段不是由处理器12解释的,它们被用来指定一个协处理器14的特定函数。UU字段可以指定一个特定协处理器14,16,CODE字段可以指定一个特殊操作。
图25图解用于H-LD指令的一个指令格式。使用这一指令来从存储器18向一个协处理器14传送一个值,传递过程中没有在一个通用寄存器(GPR)46中临时存储存储器操作数。使用一个基指针和一个偏移来寻址该存储器操作数。
H-LD指令执行在存储器18中加载一个值的操作,并且向协处理器14传送存储器操作数,而不是将其存储在一个寄存器46中。H-LD操作有三个选项,w-字,H-半字以及u-更新。通过加载的大小以及零延伸来换算IMM2字段,以来获取Disp。将这个值加到寄存器RX的值上,并且从这个地址执行一个指定大小的加载,将加载的结果传送到硬件接口28。对于半字加载,所取的数据是从零延伸到32位。如果指定u选项,则在计算之后,将加载的有效地址放入寄存器RX46中。
指令字的UU字段不是由处理器12解释的,这个字段可以指定一个特定协处理器14,16。Sz字段指定操作数的大小(只限于半字或字)。Disp字段指定一个要加到由Rbase字段所指定的寄存器中内容的无符号偏移值,以形成加载的有效地址。Disp字段的值是通过要传输的操作数的大小来换算的。Up字段指定在计算之后是否要用加载的有效地址来更新Rbase寄存器46。这个选项允许一个“自动更新”寻址模式。
图26图解用于H-ST指令的一个指令格式。这个指令被用来从一个协处理器14向存储器18传送一个值,而不在处理器12寄存器46中临时存储该存储器操作数。使用一个基指针和一个偏移来寻址该存储器操作数。
指令字的UU字段不是由处理器12解释的。但这个字段可以指定一个特定的协处理器14,16。Sz字段指定操作数的大小(只限于半字或字)。Disp字段指定一个要加到由Rbase字段所指定的寄存器46中内容的无符号偏移值,以形成要存储的有效地址。通过要传输的操作数的大小来换算Disp字段的值。Up字段指定在计算之后,是否要用有效地址来更新Rbase寄存器46。这个选项允许一个“自动更新”寻址模式。
H-ST指令执行从一个协处理器14向存储器18中存储一个操作数,而不在寄存器46中存储该操作数。H-ST操作有三个选项,w-字,H-半字以及u-更新。通过存储的大小以及零延伸来换算IMM2字段以获取Disp。这个值被加到寄存器RX的值上,并且用从硬件接口获得的用于存储的数据对这个地址进行一个指定大小的存储。如果指定u选项,则在计算之后将所加载的有效地址,放入寄存器RX中。
H-LD指令和H-ST指令提供了一种从存储器18向一个协处理器14以及从一个协处理器14向存储器18移动操作数,而不是通过寄存器46进行数据移动的有效机制。偏移和索引设备提供了一种通过阵列进行步进的有效机制。这样,这些指令在循环中非常有用。应该注意对于操作数的每次加载或存储,两条指令都使处理器12与协处理器14相同步。如果这并不是必须的或者是优选的,则可以选择通过重复向一个指定寄存器或多个寄存器46加载来自存储器18的数据,来将数据注入到协处理器14中,并且由于协处理器接口总线30也被用于寄存器窥探,所以也可以让协处理器14检测这些加载。
熟悉本技术的人员会发现可以在不脱离本发明精神的情况下进行修改和变化。因此,本发明包含了所附权利要求书范围内的所有变化和修改。
权利要求
1.在执行至少一个特点在于一个计数字段和一个代码字段的指令(H-CALL)时与通过一条通信总线(30)与之相耦合的协处理器(14,16)协同工作的处理器中,执行所述指令的方法,其特征在于,包括步骤接收所述指令;通过所述通信总线上的一个第一周期,向所述协处理器提供所述计数和代码字段;如果计数字段具有一个值n大于零,则通过所述通信总线上的一个第二周期,向协处理器提供一个第一操作数;并完成所述指令。
2.权利要求1的方法,其特征在于,包括步骤在所述第一周期,通过所述通信总线从该协处理器接收一个第一输入信号(64);其中,如果在所述第一周期,通过通信总线从协处理器接收的第一输入信号具有一个第一状态,则重复所述第一周期,其中重复所述第一周期的步骤包括通过所述通信总线上的所述第一周期,向所述协处理器提供所述计数和代码字段;以及在所述第一周期中,通过所述通信总线从协处理器接收所述第一输入信号;并且其中,如果通过通信总线,在所述第一周期中从协处理器接收的第一输入信号具有一个第二状态,则在所述通信总线上,通过所述第二周期,向所述协处理器提供一个第一输出信号(65)。
3.权利要求1的方法,其特征在于,包括步骤如果一个计数字段值n大于1,则在所述通信总线上的(n-1)个周期中的每一个周期上通过所述通信总线,向协处理器提供(n-1)个操作数中的下一个;以及通过所述通信总线,从协处理器接收一个第二输入信号。
4.权利要求1的方法,其中在所述指令的执行时,处理器适合于与多个协处理器协同工作,处理器和协处理器之间是通过所述通信总线相耦合的,该方法特征还在于步骤在所述第一周期中,通过所述通信总线向所述多个协处理器提供一个识别字段,该字段具有一个值,用于唯一地识别从所述多个协处理器中选定的一个协处理器。
5.权利要求1的方法,其中处理器包括多个用来存储选定操作数的寄存器,并且其中在所述第二周期中,通过所述通信总线向所述协处理器提供所述第一操作数的步骤的特征还在于如果计数字段具有一个值n大于零,则通过所述通信总线上的第二周期向协处理器提供一个存储在所述多个寄存器中一个预定寄存器中的操作数。
6.在执行至少一个特征在于一个有效地址计算字段的指令(H-LD)时与通过一条通信总线(30)与之耦合的协处理器(14,16)协同工作的处理器(12)中,执行所述指令的方法,其特征在于,包括步骤接收所述指令;通过所述通信总线上的一个第一周期,向所述协处理器提供所述有效地址计算字段;根据所述有效地址计算字段计算一个有效地址;取出在所述计算出的有效地址中存储的一个操作数;通过所述通信总线上的一个第二周期,向协处理器提供所述的取出的操作数;并完成所述指令。
7.权利要求6的方法,其特征在于,包括步骤在所述第一周期,通过所述通信总线从协处理器接收一个第一输入信号(64);其中,如果通过通信总线,在所述第一周期中从协处理器接收的第一输入信号具有一个第一状态,则重复所述第一周期,其中重复所述第一周期的步骤包括通过所述通信总线上的所述第一周期,向所述协处理器提供所述有效地址计算字段;以及在所述第一周期中,通过所述通信总线从协处理器接收所述第一输入信号;其中,如果通过通信总线,在所述第一周期中从该协处理器接收的第一输入信号具有一个第二状态,则通过所述通信总线上的所述第二周期,向所述协处理器提供一个第一输出信号(65)。
8.权利要求6的方法,其中处理器包括多个用来存储选定操作数的寄存器,其中有效地址计算字段包括一个基寄存器标识符子字段和一个置换子字段,其中根据所述有效地址计算字段计算所述有效地址的步骤包括把所述置换子字段的内容加到由所述基寄存器标识符子字段内容所指定的所述多个寄存器中一个寄存器内容中。
9.在执行至少一个特征在于一个有效地址计算字段的指令(H-ST)时与通过一条通信总线(30)与之耦合的协处理器(14,16)协同工作的处理器(12)中,执行所述指令的方法,特征在于步骤接收所述指令;通过所述通信总线上的一个第一周期,向所述协处理器提供所述有效地址计算字段;根据所述有效地址计算字段计算一个有效地址;通过所述通信总线上的一个第二周期从协处理器接收一个操作数;在所述的计算出的有效地址存储所述的接收到的操作数;及完成所述指令。
10.权利要求9的方法,其中处理器包括多个用来存储选定的操作数的寄存器,其中有效地址计算字段包括一个基寄存器标识符子字段(Rx)和一个置换子字段(IMM2),其中根据所述有效地址计算字段计算所述有效地址的步骤包括把所述置换子字段的内容加到由所述基寄存器标识符子字段内容所指定的所述多个寄存器中一个寄存器内容中,其中有效地址计算字段包括一个更新字段(UP),其中根据所述有效地址计算字段计算所述有效地址的步骤包括,如果所述更新字段有一个第一值,则在所述多个寄存器中指定的一个寄存器中存储所述的计算出的有效地址。
全文摘要
一个处理器(12)向协处理器(14)的接口,它支持多个协处理器(14,16),用于使用编译器生成软件类型函数调用和返回,指令执行,以及可变加载和存储接口指令。在一个双向共享总线(28)上,或是通过寄存器窥探和广播显式地,或者通过函数调用和返回以及可变加载和存储接口指令隐式地,在处理器(12)和协处理器(14)之间移动数据。在断言一个执行信号之前,通过否定一个译码信号,指示已译码的指令删除来提供流水线操作。
文档编号G06F9/38GK1211012SQ9811858
公开日1999年3月17日 申请日期1998年9月4日 优先权日1997年9月5日
发明者威廉姆·C·莫耶, 约翰·阿兰德斯, 杰夫里·W·斯考特 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1