首页> 中国专利> 在不对称多处理器架构中处理中断和异常的系统和方法

在不对称多处理器架构中处理中断和异常的系统和方法

摘要

含有多个具有控制和数据处理特性互不相同的不对称处理器的多处理器计算机系统。指令集各不相关的这些不对称处理器由单一操作系统控制。该多处理器计算机系统使用中断和异常处理的多处理器架构定义。在复位或检测到异常时,所述多处理器计算机系统的数据处理器进入空闲状态,该系统的控制处理器读和写数据处理器内的也能由数据处理器读写的各控制和状态寄存器。因此在执行操作系统或应用程序时,控制处理器控制数据处理器的运行。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-10-02

    未缴年费专利权终止 IPC(主分类):G06F15/163 授权公告日:20100602 终止日期:20120815 申请日:19970815

    专利权的终止

  • 2010-06-02

    授权

    授权

  • 1999-10-06

    实质审查请求的生效

    实质审查请求的生效

  • 1998-03-18

    公开

    公开

说明书

本发明涉及一种含有具有不相同控制和数据处理特性的不对称处理器的多处理器系统。具体说,本发明涉及在不对称多处理器系统中处理中断和异常的系统和方法。

通用的处理器一般都包括处理中断和异常的电路和结构。中断是一种事件,该事件使处理器停止执行当前的指令线程(instruction thread)而开始执行由中断处理器指定和激活的中断服务指令线程。当完成中断服务指令线程的执行后,就继续执行当前指令线程。中断的起因与当前指令线程中各指令的执行并无直接关系,在此意义上说,中断是外部事件。处理中断的方法通常是保存处理器的状态或现场、执行中断服务程序、然后复原处理器的状态或现场并继续被中断的执行线程。

异常是一种由处理器执行或企图执行某指令所引起的事件,执行该指令与处理器的当前状态不一致。造成异常条件的事件例子有:企图由处理器执行非法或未定义的指令,企图在未对准指令地址或数据地址时执行指令,保护出错,已设置的断点,被零除,及执行算术指令时的溢出条件。处理器通过执行异常处理程序的指令线程来响应异常条件。在已有技术中,处理异常的方法是执行一套经过选择的指令集,具体执行哪个指令取决于造成异常条件的特定条件类型。

中断和异常处理固有的控制操作用通用处理器进行起来既迅速又容易,但采用大现场的向量处理器则难得多,所以把多处理器架构系统中使用的中断和异常处理机构用于具有不相同控制和数据处理特性的处理器的不对称多处理器系统通常是低效的。使用中断和异常来处理的多处理器系统的操作经常涉及各处理器的状态的保存,而这种保存包括对诸寄存器和当前正在接受处理的数据的保存。在诸如多处理器的现场交换之类的操作期间,具有许多大寄存器的处理器不容易保存和重新加载处理器的状态。

对于含有大机器状态或大现场的不对称处理器,需要的是便于处理中断和异常的多处理器架构。

按照本发明的一个方面,多处理器计算机系统包括称为不对称处理器的多个处理器,这些处理器具有互不相同的控制和数据处理特性。虽然各别处理器的指令集和另一些处理器的指令集互不相关,但是这些不对称处理器受单一操作系统的控制。该多处理器计算机系统采用中断和异常处理的多处理架构定义,该定义规定由具有大机器状态和大数据宽度的称作数据或向量处理器的处理器来检测异常但是把中断和异常处理操作委托给另一个具有小机器状态和小数据宽度的称作控制处理器的处理器。由于控制程序一般涉及对个别状态标志和指针的监视和控制,所以控制处理器的小机器状态和小数据宽度十分适合于执行中断和异常处理之类的操作系统程序。与此相反,大机器状态和大数据宽度的数据或向量处理器处理控制任务的效果差,所以把中断和异常处理委托给控制处理器是非常有利的。

按照本发明的另一方面,多处理器计算机系统包括在复位和检测到异常时进入空闲状态的数据处理器。该数据处理器进入空闲状态是为了方便系统的设计和编程,及为了在系统复位时简化各处理器的同步。

按照本发明的又一实施例,多处理器计算机系统包括读写数据处理器内的各控制和状态寄存器的控制处理器。因此该控制处理器控制了执行操作系统或应用程序期间数据处理器的操作。控制处理器进行独立于数据处理器执行的对数据处理器的各控制和状态寄存器的访问,使同一控制和状态寄存器可以由控制处理器和数据处理器并行地访问。

按照本发明的再一实施例,多处理器计算机系统包括一种架构定义,其中控制处理器被约束只在数据处理器处于空闲状态时才访问该数据处理器的包括各控制和状态寄存器在内的内部状态。这一约束显著地简化了控制处理器和数据处理器之间的程序运行的相互作用,保护了数据处理器不致进入不协调和无效状态。

所述不对称多处理器架构和操作方法具有许多优点。优点之一是即使与采用相同多个处理器的对称架构相比,编程模型和数据处理器的实现也得到显著的简化。

在附后的权利要求书中明确陈述了所述实施例的被认为是新颖的特点。然而,与结构和运行方法二者有关的本发明实施例参考以下描述和附图可得到最好的理解。

图1是表示按照本发明实施例的多媒体多处理器系统的高层次概略方框图。

图2是表示包含在图1多媒体多处理器系统的多媒体信号处理器的概略方框图。

图3是表示多媒体多处理器系统中的控制处理器的概略方框图。

图4是控制处理器的功能图。

图5是表示图2多媒体信号处理器中的向量处理器的概略方框图。

图6是表示图5向量处理器的向量处理器执行数据路径的概略方框图。

图7是表示图2多媒体信号处理器中的协处理器接口的概略方框图。

图8是表示多媒体信号处理器的固体架构的概略方框图。

图9是表示在多媒体多处理器系统中与中断和异常处理有关的操作的流程图。

参照图1,高层次概略方框图示出了包括主处理器102和多媒体信号处理器104的多媒体多处理器系统100。典型的主处理器102是诸如PentiumTM或Pentium ProTM之类的x86处理器。主处理器102根据保持在系统存储器116内的指令和数据来执行程序。主处理器102通过如PCI总线之类的系统总线106与多媒体信号处理器104通信。多媒体信号处理器104与各种功能块接口,如音频和通信CODEC108、视频A/D变换器110、视频D/A变换器112、和帧缓冲SDRAM存储器114。

参照图2,概略方框图示出多媒体多处理器系统100内部的多媒体信号处理器104。多媒体信号处理器104包括连接到多个多媒体接口的数字信号处理器(DSP)核202。

DSP核202是多媒体信号处理器104的计算机器,包括RISC控制处理器204、向量处理器206、高速缓冲存储器子系统208、快速总线(FBUS)210及I/O总线212。控制处理器204是由英国ARM Limited公司设计和制造的32位ARM 7TM控制处理器,它执行通用处理功能如实时操作系统操作、中断和异常处理、输入/输出设备管理、与主处理器102的通信等等。在一个实施例中,控制处理器204工作在40MHz。控制处理器204通过协处理器接口242与向量处理器206对接。

控制处理器204响应于异常(通常是在处理指令时出现的不正常条件)而进行异常处理,从而导致执行控制流动的改变。控制处理器204响应于七种异常,它们按照从高到低的优先权次序列出为:复位条件、中止(数据)条件、FIQ、IRQ、中止(预取)条件、以及未定义的指令陷阱或软件中断。

参照图3,概略方框图示出了由指令译码器和控制逻辑302控制的ARM7控制处理器204。控制处理器204通过写数据寄存器304及指令流水线和读数据寄存器306与高速缓冲存储器子系统208通信。控制处理器204包括地址寄存器308和地址增量器310以对31×32位寄存器组312中的数据寻址。控制处理器204包括算术逻辑电路,如32位ALU 314、桶形移位器316和Booth乘法器318。协处理器接口242通过nOPC、nCPI、CPA和CPB信号线直接耦合到指令译码器和控制逻辑302,这些信号线通过协处理器接口242在控制处理器204和向量处理器206之间交流操作码和指令变元。图4表示控制处理器204的功能图。

向量处理器206是多媒体信号处理器104的数字信号处理机器。向量处理器206有单指令多数据的架构,并包括流水线化的RISC机器,该流水线化的RISC机器并行地对多个数据元素操作以执行如离散余弦变换(DCT)、FIR滤波、卷积、视频运动估计和其他处理操作之类的信号处理功能。向量处理器206支持向量算术,在该向量算术中以向量处理的方式用多个向量执行单元并行地对多个数据元素操作。向量处理器206执行标量操作,也执行组合的向量-标量操作。向量处理器206的多个数据元素打包成576位的向量,以每周(例如,12.5ns)三十二次8/9位定点算术操作、十六次16位定点算术操作或八次32位定点或浮点算术操作的速率进行计算。大多数32位标量操作的流水线速度为每周一个指令,而大多数576位向量操作的流水线速度为每二周一个指令。装入和存储操作与算术操作交叠并独立地由分别的装入和存储电路执行。

参照图5,向量处理器206有四个功能块,它们是取指令单元502,指令译码器和发出器504,指令执行数据路径506,及装入和存储单元508。取指令单元502及指令译码器和发出器504包含在向量处理器206内以允许向量处理器206的操作独立于控制处理器204。

取指令单元502预取指令并处理诸如分支指令和转移至子程序指令之类的控制流动指令。取指令单元502包括当前执行流用的预取指令的16项队列和分支目的流用的预取指令的8项队列。取指令单元502在一周内自指令高速缓冲存储器接收多达8条指令。指令译码器和发出器504译码和调度所有由向量处理器206执行的指令。译码器按照从取指令单元502接收的次序在一周内处理一条指令,而发出器根据执行资源和操作数据的可得情况不按次序地调度大多数指令。

参照图6,指令执行数据路径506包括四端口寄存器组602,八个32×32并行乘法器604和八个36位ALU 606。寄存器组602每个周期支持二次读操作和二次写操作。并行乘法器604每周产生整数或浮点格式的多达八次32位乘法,或十六次16位乘法或三十二次8位乘法。ALU 606每周(例如,12.5ns)执行整数或浮点格式的八次36位ALU操作、十六次16位ALU操作或三十二次8位ALU操作。

寄存器组602包括多个特殊用途寄存器和多个返回地址寄存器。特殊用途寄存器包括向量控制和状态寄存器(VCSR)、向量程序计数器(VPC)、向量异常程序计数器(VEPC)、向量中断源寄存器(VISRC)、向量和控制处理器同步寄存器(VASYNC)以及其他如各种计数、屏蔽、溢出和断点寄存器之类的寄存器。向量程序计数器(VPC)的计数值是待由向量处理器206执行的下一指令的地址。

向量中断源寄存器(VISRC)向控制处理器204指示各中断源。一旦检测到异常,就由硬件设置VISRC的适当位。在向量处理器206恢复执行之前,用软件来使这些位复位。VISRC中的任何一位都使向量处理器206进入VP-IDLE(向量处理器-空闲)状态。如果协处理器接口242的VIMSK寄存器中的对应中断允许位被置位,就向控制处理器204发出IRQ中断请求信号。

向量处理器206检测包括精确异常和不精确异常在内的异常条件。精确异常由向量处理器206检测并在出错指令之前报告。精确异常包括指令地址断点异常、数据地址断点异常、无效指令异常、单步异常、返回地址堆栈溢出异常、返回地址堆栈下溢异常、VCINT异常和VCJOIN异常。向量处理器206的不精确异常在执行按程序次序晚于出错指令的可变数目的指令之后检测和报告。不精确异常包括无效指令地址异常、无效数据地址异常、未对准的数据访问异常、整数溢出异常、浮点数溢出异常、浮点无效操作数据异常、浮点数除零异常及整数除零异常。

当执行指令以中断控制处理器204时,向量中断指令寄存器(VIINS)用向量处理器的VCINT或VCJOIN指令更新。

向量处理器206认得二个特别条件,它们是由控制处理器204执行的协处理器中断(CPINT)指令,和在向量处理器206中由软件执行的多个嵌套的转移运动子程序指令所引起的硬件堆栈溢出。在多媒体信号处理器104中产生的其他中断和异常条件由控制处理器204处理。

一旦系统复位使向量处理器206处于空闲(VP_IDLE)状态,向量处理器206执行一串上电指令。向量处理器206保持在VP_IDLE状态直到控制处理器204用控制处理器指令集中的STARTVP指令初始化向量处理器206中的诸寄存器和激活向量处理器206的诸操作。

再次参照图2,控制处理器204初始化向量处理器206的诸操作。具体说,通过对控制处理器204指令集的扩充,控制处理器204控制与向量处理器206的交互作用。指令集的扩充包括协处理器数据操作(如STARTVP和INTVP指令)、协处理器数据传送、以及协处理器寄存器传送(如用于读写向量处理器206中寄存器的TESTSET指令和MFVP、MTVP、MFER和MTER指令)。

控制处理器204用STARTVP指令起动向量处理器206。STARTVP指令使向量处理器206进入VP_RUN状态,表示向量处理器206正在执行中。如果向量处理器206已经处于VP_RUN状态,则STARTVP什么也不做。响应于STARTVP指令,没有结果传送给控制处理器204,在STARTVP之后控制处理器204继续执行。在设置条件码的协处理器数据操作格式(CDP)指令之后引发STARTVP指令。STARTVP指令用下列汇编器句法来引发:

CDP{cond}p7,0,c0,c0,c0

STARTVP{cond}其中条件(cond)包括等于(eq)、不等于(ne、进位置位(cs)、进位清除(cc)、负(mi)、正(pl)及其他条件。STARTVP只在条件为真时执行。控制处理器204使用STARTVP指令向向量处理器206发出开始执行的请求信号,然后自动清除向量中断源(VISRC)寄存器的向量处理器中断位(VISRC<vip>)和向量处理器联合位(VISRC<vjp>)。一旦作出STARTVP调用,控制处理器204不等待向量处理器206的开始执行就继续执行下一条指令。在调用STARTVP之前必须按需要初始化向量处理器206的状态。如果向量处理器206已经处于VP_RUN状态,则STARTVP指令不起作用。在STARTVP指令执行期间,可以出现向量处理器不可用的异常。

控制处理器204使用中断向量处理器(INTVP)指令来停止向量处理器206。INTVP指令使向量处理器206进入表示向量处理器206不在执行的VP_IDLE状态。如果向量处理器206不在执行中,INTVP什么事也不做。响应于INTVP指令,没有结果传送给控制处理器204,在INTVP之后控制处理器204继续执行。在设置条件码的协处理器数据操作格式(CDP)指令之后引发INTVP指令。INTVP指令只在条件为真时执行。因此,INTVP指令用下列汇编器句法来引发:

CDP{cond}p7,1,c0,c0,c0

INTVP{cond}其中条件(cond)包括等于(eq)、不等于(ne)、进位置位(cs)、进位清除(cc)、负(mi)、正(p1)及其他条件。控制处理器204使用INTVP指令向向量处理器206发出暂停执行的请求信号。一旦作出INTVP调用,控制处理器204不等待向量处理器206的暂停就继续执行下一条指令。一般在INTVP指令之后使用从扩充的寄存器传送(MFER)指令以确定向量处理器206是否已暂停。如果向量处理器206已经处于VP_IDLE状态,则INTVP指令不起作用。在INTVP指令执行期间可以出现向量处理器不可用的异常。

控制处理器204使用测试和置位(TESTSET)指令来测试包括同步测试在内的向量处理器206的操作状态。TESTSET读取为用户扩充的寄存器并把该寄存器的位30置为1,从而提供了向量处理器206和控制处理器204之间的生产者/消费者类型的同步。TESTSET使控制处理器204停车直至寄存器被传送。控制处理器204在设置条件码的协处理器寄存器传送操作(MRC,MCR)指令之后请求TESTSET指令。TESTSET指令只在条件为真时执行。使用下列汇编器句法来调用TESTSET指令。

MRC{cond}      p7,0,Rd,c0,cER,0

TESTSET{cond}  Rd,RNAME其中条件(cond)包括等于(eq)、不等于(ne)、进位置位(cs)、进位清除(cc)、负(mi)、正(pl)和其他条件。Rd是控制处理器204中的寄存器。ER是在协处理器接口242中的扩充的寄存器,RNAME是指由架构规定的寄存器助记符如UER1或VASYNC。

其他控制处理器指令向控制处理器寄存器传送向量处理器标量寄存器/特殊用途寄存器中的数据。另一些其他的控制处理器指令把数据从控制处理器寄存器传送到向量处理器的标量/特殊用途寄存器。

举例说,MFVP指令将数据从向量处理器标量寄存器/特殊用途寄存器传送到控制处理器204中的通用寄存器。在设置条件码的协处理器寄存器传送操作(MRC,MCR)指令以后调用MFVP指令。MFVP指令只在条件为真时执行。使用下列汇编器句法来调用MFVP指令:

MRC{cond}   p7,1,Rd,CRn,CRm,0

MFVP{cond}  Rd,RNAME其中条件(cond)包括等于(eq)、不等于(ne)、进位置位(cs)、进位清除(cc)、负(mi)、正(pl)和其他条件。协处理器号数码p7表示向量处理器206。Rd是控制处理器204中的寄存器。CRn和CRm是向量处理器206中的标量寄存器/特殊用途寄存器。RNAME是指由架构规定的寄存器助记符如SP0或VCSR。控制处理器204调用MFVP指令以把数据从向量处理器206的标量寄存器/特殊用途寄存器CRn和CRm传送到控制处理器寄存器Rd。在执行MFVP指令期间可以出现向量处理器不可用的异常。

向向量处理器传送(MTVP)指令把数据从控制处理器204中的通用寄存器传送到向量处理器标量寄存器/特殊用途寄存器。在设置条件码的协处理器寄存器传送操作(MRC,MCR)指令之后调用MTVP指令。MTVP指令只在条件为真时执行。使用下列汇编器句法来调用MTVP指令:

MRC{cond}  p7,1,Rd,CRn,CRm,0

MTVP{cond}  RNAME,Rd其中条件(cond)包括等于(eq)、不等于(ne)、进位置位(cs)、进位清除(cc)、负(mi)、正(pl)及其他条件。协处理器号数码p7表示向量处理器206。Rd是控制处理器204中的寄存器。CRn和CRm是向量处理器206中的标量寄存器/特殊用途寄存器。RNAME是指由架构规定的寄存器助记符如SP0或VCSR。控制处理器204调用MTVP指令以把控制处理器寄存器Rd中的数据传送到向量处理器206中的标量寄存器/特殊用途寄存器CRn和CRm。在执行MTVP指令期间可以出现向量处理器不可用的异常。

MFVP和MTVP只准备在向量处理器206处于VP_IDLE状态时执行。在控制处理器204和向量处理器206之间不发生直接通信。每次传送使用由协处理器接口242在示范性实施例中提供的中间存储器。

MFVP和MTVP指令允许控制处理器204自由地读和写向量处理器206之中的各控制和状态寄存器。因此在执行操作系统或应用程序期间,控制处理器204控制向量处理器206的操作。MFVP和MTVP指令只准备在向量处理器206处于VP_IDLE状态时执行,因为控制处理器204具有独立于向量处理器206的执行而访问向量处理器206的各控制和状态寄存器的能力,使同一的控制和状态寄存器可能被控制处理器204和向量处理器206并行地访问。

向扩充的寄存器传送(MTER)指令把数据从控制处理器204传送到规定的扩充的寄存器。在设置条件码的协处理器寄存器传送操作(MRC,MCR)指令之后调用MTER指令。MTER指令只在条件为真时执行。使用下列汇编器句法来调用MTER指令:

MRC{cond}   p7,1,Rd,cP,cER,0

MTER{cond}  RNAME,Rd其中条件(cond)包括等于(eq)、不等于(ne)、进位置位(cs)、进位清除(cc)、负(mi)、正(pl)和其他条件。协处理器号数码p7表示向量处理器206。Rd是控制处理器204中的寄存器。P表示选择的协处理器,ER表示在协处理器P中的扩充的寄存器。RNAME是指由架构规定的寄存器助记符如PER0或CSR。控制处理器204调用MTER指令以把控制处理器寄存器Rd中的数据传送到指定的协处理器P中指定的扩充的寄存器ER。在执行MTER指令期间可以出现企图访问指定的协处理器时保护的破坏。

从扩充的寄存器传送(MFER)指令把数据从指定的协处理器中的扩充的寄存器传送到控制处理器204中的寄存器。在设置条件码的协处理器寄存器传送操作(MRC,MCR)指令之后调用MFER指令。MFER只在条件为真时执行。使用下列汇编器句法来调用MFER指令:

MRC{cond}   p7,2,Rd,cP,cER,0

MFER{cond}  Rd,RNAME其中条件(cond)包括等于(eq)、不等于(ne)、进位置位(cs)、进位清除(cc)、负(mi)、正(pl)和其他条件。协处理器号数码p7表示向量处理器206。Rd是控制处理器204中的寄存器。P表示选择的协处理器,ER表示在协处理器P中的扩充的寄存器。RNAME是指由架构规定的寄存器助记符如PER0或CSR。控制处理器204调用MFER指令以把数据从指定的协处理器P中指定的扩充的寄存器ER传送到寄存器Rd。在执行MFER指令期间可以发生企图访问指定的协处理器时保护的破坏。

协处理器接口242的概略方框图示于图7。协处理器接口242通过增加实现扩充控制处理器204指令集的指令用的寄存器和逻辑功能来补充控制处理器204的功能度。协处理器接口242包括在控制处理器204和向量处理器206之间通信用的寄存器。协处理器接口242还充当在以不同时钟速率操作的结构之间交流数据和信号用的缓冲器。在一个实施例中,控制处理器204以40MHz速率操作,而向量处理器206以80MHz执行。

协处理器接口242包括译码器702、状态机704、特许的扩充的寄存器块706和为用户们扩充的寄存器块708。特许的扩充的寄存器块706中的各寄存器和用户扩充寄存器块708都是由控制处理器204和由向量处理器206可读和可写的。译码器702对控制处理器指令集的指令译码。控制处理器指令集包括可在控制处理器204上执行的指令以及不用控制处理器204执行而用协处理器接口242执行以实现协处理器特殊功能度的扩充指令。译码器702对控制处理器指令译码、检测扩充的指令及把检测到的扩充指令供应给状态机704以便执行。状态机704包括实现扩充指令用的逻辑电路。

特许的扩充寄存器块706是在控制处理器204执行特殊指令期间被访问的扩充寄存器。特许的扩充寄存器块706包括控制寄存器(CTR)、处理器版本寄存器(PVR)、向量中断屏蔽寄存器(VIMSK)、指令地址断点寄存器(AIABR)、数据地址断点寄存器(ADABR)、高速暂存寄存器(SPREG)和状态寄存器(STR)。特许的扩充寄存器块706主要用于控制处理器204和向量处理器206的同步。

在一个实施例中,为用户们扩充的寄存器块708的寄存器只有映射到位<30>的单一位,所以位<31>及位<29:0>都读作0。为用户们扩充的寄存器块708包括向量处理器状态(VPSTATE)标志及向量和控制处理器同步(VASYNC)标志。VPSTATE表示当位<30>置位时向量处理器206处于VP_RUN状态。当位<30>复位时,向量处理器206处于VP_IDLE状态并被暂停,此时程序计数器的地址指向下一条要执行的指令。VASYNC允许向量处理器206和控制处理器204之间的生产者-消费者同步。VASYNC标志由在向量处理器206中执行的VMOV指令来置位或复位。VASYNC也通过使用从扩充的寄存器传送(MFER)指令、向扩充的寄存器传送(MTER)指令或TESTSET指令而由控制处理器204处理来置位或复位。

一旦上电复位,特许的扩充寄存器块706和为用户们扩充的寄存器块708的所有各位都被复位,使得向量处理器206为空闲。

向量中断屏蔽寄存器(VIMSK)控制向控制处理器204报告在向量处理器206内出现的异常。当VIMSK中的各位随向量中断源(VISRC)寄存器中的一相应位一起置位时,VIMSK中的各位使异常能中断控制处理器204。VISRC寄存器包括表示多个异常和中断的来源的多个位。VIMSK寄存器的各位包括数据地址断点中断允许(DABE)、指令地址断点中断允许(IABE)和单步中断允许(SSTPE)。VIMSK还控制浮点溢出(FOVE)、浮点无效操作数(FINVE)和浮点数除以零(FDIVE)的各中断允许位以及整数溢出(IOVE)和整数除以零(IDIVE)的各中断允许位。VIMSK还控制VCINT中断允许(VIE)、VCJOIN中断允许(VJE)和现场交换允许(CSE)。

向量处理器206通过向控制处理器204发送信号与控制处理器204相互作用。具体说,向量处理器206包括向控制处理器204提供读访问和写访问的逻辑电路。向量处理器206用VCJOIN指令和VCINT指令通过为用户扩充的寄存器间接向控制处理器204送出表示向量处理器206已执行同步指令的信号。向量处理器206还通过表示向量处理器206已经暂停执行和已进入VP_IDLE状态的中断请求直接向控制处理器204发信号。向量处理器206执行用于告知控制处理器204的二条指令。VCJOIN指令(VCJOINn)有条件地与控制处理器204联合并使向量处理器206暂停和进入VP_IDLE状态。在向量处理器206内的程序计数器(未示出)指向VCJOIN指令后下一条指令的地址。VCINT指令(VCINTn)有条件地中断控制处理器204,同时使向量处理器206暂停和进入VP_IDLE状态。向量处理器206内的程序计数器指向VCINT指令后的下一条指令的地址。VCINT和VCJOIN指令是由向量处理器206执行的归入控制流动类别的指令。控制流动指令包括如分支、减量然后分支、转移、自子程序返回、现场交换和屏蔽(barrier)指令之类的各种条件指令。

在向量处理器206上执行的多个指令,包括条件现场交换(VCCS)指令、条件中断(VCINT)指令和条件联合(VCJOIN)指令,用于中断和异常处理。

条件中断(VCINT)指令,如果被使能,暂停向量处理器206的执行和中断控制处理器204。VCINT指令可以产生VCINT中断。条件中断(VCINT)指令的汇编器句法如下:

VCINTcond#ICODE其中cond是规定的条件码,#ICODE是标记供控制处理器204使用的常数的23位数值。条件码(cond)从以下条件码中选择:无条件(un)、小于(lt)、等于(eq)、小于或等于(1e)、大于(gt)、不等于(ne)、大于或等于(ge)及溢出(ov)。VCINT的操作由伪码描述如下:

If((cond==VCSR[SO,GT,EQ,LT])|(cond==un)){ VISRC<vip>=1; VIINS=[VCINT.cond#ICODE instruction]; VEPC=VPC; if(VIMSK<vie>==1)signal control processor int; VP_STATE=VP_IDLE;} else VPC=VPC+4c;

因此,如果向量控制和状态寄存器(VCSR)与条件码相配或者条件码为无条件,则向量中断源(VISRC)寄存器的向量中断位置位,向量中断指令寄存器(VIINS)装入由#ICODE参数标记的指令,向量异常程序计数器(VEPC)装入来自向量处理器206的程序计数器的数值。向量中断指令寄存器(VIINS)装入VCINT指令的标记符、条件和#ICODE变元以向控制处理器204供给与以下有关的信息:(1)向量处理器206要中断控制处理器204中的原因和(2)在执行软件中断服务程序中供控制处理器204使用的常数值。如果VIMSK寄存器的向量处理器中断允许位被置位,则向量处理器206向控制处理器204发送中断信号(IRQ)。向量处理器206的状态(VP_STATE)被设成空闲状态。然而,如果条件码不是无条件或者控制码与向量控制和状态寄存器(VCSR)不配,则VCINT指令被忽视,但是程序计数器增四。

有条件与控制处理器任务联合(VCJOIN)指令,如果被使能,暂停向量处理器206的执行并参加在控制处理器204中工作的任务。VCJOIN指令可以产生VCJOIN中断。条件联合(VCJOIN)指令的汇编器句法如下:

VCJOIN.cond#Offset其中cond是规定的条件码,#Offset是标记相对于向量处理器206存储器中VCJOIN指令位置的偏移量的23位数值,其中的存储器存有在以后待激活的向量处理器子程序。VCJOIN指令激活在控制处理器204中执行的中断服务程序。控制处理器204保存#Offset参数并执行规定的中断服务程序。中断服务程序完成时,控制处理器204进行规定的操作并对向量处理器206中的诸寄存器置位以作将来的处理。一旦完成中断服务程序,控制处理器204用STARTVP指令起动向量处理器206,并指定保存的地址#Offset作为向量处理器206应该开始执行的子程序的位置。控制处理器204以分支指令的方式使用偏移量变元以引导控制处理器204执行的指令序列。使用VCJOIN指令的一个例子描述于美国专利申请号××/×××,×××,代理人案号M-4365 US,S.P.Song等人发明的标题为“EFFICIENT CONTEXT SAVING ANDRESTORING IN MULTIPROCESSORS(多处理器中有效的现场保存和恢复)”的申请,为了本文的完整将其纳入作为参考文献。条件码(cond)从以下的条件码中选择:无条件(un)、小于(lt)、等于(eq)、小于或等于(le)、大于(gt)、不等于(ne)、大于或等于(ge)和溢出(ov)。VCJOIN的操作由伪码描述如下:

If(cond==VCSR[SO,GT,EQ,LT])|(cond==un)){VISRC<vjp>=1;VIINS=[VCJOIN.cond#Offset instruction];VEPC=VPC;if(VIMSK<vje>==1)signal control processorint;VP_STATE=VP_IDLE;}else VPC=VPC+4;

因此,如果向量控制和状态寄存器(VCSR)与条件码相配或者条件码为无条件,则向量中断源(VISRC)寄存器的向量联合位被置位,向量中断指令寄存器(VIINS)装入由#Offset参数标记的指令,向量异常程序计数器(VEPC)装入来自向量处理器206的程序计数器的数值。向量中断指令寄存器(VIINS)装入VCJOIN指令的标记符、条件和#Offset变元以向控制处理器204供给与以下有关的信息:(1)向量处理器206要中断控制处理器204的原因和(2)向量处理器206的指令存储器中自地址或标签(label)的偏移值,该偏移值表示在控制处理器204重新激活向量处理器206时引导向量处理器例行程序的指令顺序流动的分支偏移值。如果VIMSK寄存器的向量处理器联合允许位被置位,则向量处理器206向控制处理器204发送中断信号(IRQ)。向量处理器206的状态(VP_STATE)被设成空闲状态。然而,如果条件码不是无条件或者控制码与向量控制和状态寄存器(VCSR)不配,则VCJOIN指令被忽视,但是程序计数器增四。

如果VIMSK寄存器的现场交换允许位VIMSK<cse>为真,条件现场交换(VCCS)指令执行向现场交换子程序的立即(不延时的)转移。如果VIMSK<cse>为真,则把VPC+4中的返回地址保存到返回地址堆栈上。否则,在地址VPC+4处异常继续。VCCS指令可以产生返回地址堆栈溢出异常。条件现场交换(VCCS)指令的汇编器句法如下:

VCCS  #Offset其中#Offset是标记现场交换子程序位置的23位数值。VCCS操作由伪码描述如下:

If VIMSK<cse>==1){ if(VSP<4>>15){VISRC<RASO>=1;signal control processor with RASO;VP_STATE=VP_IDLE;} else{RSTACK[VSP<3:0>]=VPC+4;VSP<4:0>=VSP<4:0>+1; VPC=VPC+4;}}else VPC=VPC+4;

因此,如果VIMSK寄存器的现场交换允许位被置位,则测试返回堆栈指针(VSP)的溢出。如果已发生溢出条件,则向量中断源(VISRC)寄存器的返回地址堆栈溢出位被置位,向量处理器206向控制处理器204发送返回地址堆栈溢出异常,向量处理器206的状态(VP_STATE)被置成空闲状态。如果不曾发生溢出条件,则加四后的程序计数器值被压入返回地址堆栈(RSTACK),返回堆栈指针(VSP)被加一,向量处理器206的程序计数器(VPC)被增以#Offset乘四的带符号乘积。如果VIMSK寄存器的现场交换允许位没有置位,则忽视VCCS指令,但是程序计数器增四。

一旦在控制处理器204执行STARTVP指令之后向量处理器206开始执行操作,控制处理器204和向量处理器206就互相独立地并行操作。控制处理器204和向量处理器206互相独立和并行的操作利用特殊控制指令同步。对二个线程(一个在控制处理器204上,另一个在向量处理器206上)同时执行的支持有利地增加了任务执行速度,还便于把在控制处理器204上运行的指令码移植到MSP处理器系列的种种处理器。在本说明性的实施例中,向量处理器206以80MHz的速率工作。

再次参看图2,高速缓冲存储器子系统208包括数据高速缓冲存储器214(例如5KB)、指令高速缓冲存储器216(例如2KB)和高速缓冲存储器ROM218(例如16KB),该子系统208一般工作在向量处理器206的同一速率(80MHz)上。在一个实施例中,高速缓冲存储器子系统208包括控制处理器204用的1KB指令存储器和1KB数据存储器、向量处理器206用的1KB指令存储器和4KB数据存储器以及控制处理器204和向量处理器206合用的16KB集成的指令和数据高速缓冲存储器ROM。高速缓冲存储器子系统208通过32位数据总线与控制处理器204接口,通过128位数据总线与向量处理器206接口。高速缓冲存储器ROM 218包括uROM初始化软件、自检诊断软件、各种系统管理软件、库例行程序及用于经过挑选的指令和数据常数的高速缓冲存储器。具体说,高速缓冲存储器ROM 218包括控制处理器204用的指令异常处理器和输入输出设备中断处理器0、1、2和3。高速缓冲存储器ROM218也包括在控制处理器204中执行的向量处理器中断处理器和向量处理器断点异常处理器。

FBUS 210与多个FBUS外设对接,这些FBUS外设包括例如32位PCI总线接口220、64位SDRAM存储器控制器222、8通道DMA控制器224、客户ASIC逻辑块226及存储器数据传送器228。PCI总线接口220连接至系统总线106并工作于例如33MHz。客户ASIC逻辑块226按需要提供实现常规功能的控制逻辑。在一个实施例中,客户ASIC逻辑块226提供包括与各种模拟CODEC和客户专用的I/O设备接口的10K个门。存储器数据传送器228把DMA数据从主处理器102传送给在多媒体信号处理器104内部的SDRAM存储器230。

I/O总线212与多个I/O总线设备对接,这些设备包括位流处理器232、UART串行线234、定时器电路236、中断控制器238和特殊寄存器240。位流处理器232处理视频位流。特殊寄存器240用于受软件控制的初始化和中断处理。

参照图8,概略方框图示出了多媒体信号处理器104的软件和固件架构800,包括在多媒体信号处理器104上执行的MSP系统部件软件802和在主处理器102上执行的PC应用程序和操作系统软件808。多媒体信号处理器104受固件控制,该固件包括在向量处理器206上执行的向量化-DSP固件库804和在控制处理器204上执行的系统管理功能块806。向量化-DSP固件库804和系统管理功能块806包括在MSP系统部件软件802中。架构800的优点是把信号处理的功能从主处理器应用控制操作中分离出来以简化软件的开发,它改进了软件设计管理和降低了应用程序开发和维护的成本。

MSP系统部件软件802专门在控制处理器204上执行,它包括MSP实时核心810、多媒体库模块812、系统管理功能块806和向量化-DSP固件库804。MSP实时核心810一般负责与主处理器102的接口、资源管理、I/O设备处理和大部分中断及异常处理。MSP实时核心810包括与在主处理器102执行的与WindowsTM和WindowsNTTM软件接口用的软件。MSP实时核心810还包括从主处理器102选择和下载已选应用固件的软件、在控制处理器204和向量处理器206中执行用的调度诸任务的软件以及管理多媒体信号处理器104的包括存储器和I/O设备在内的系统资源的软件。MSP实时核心810包括使多媒体信号处理器104各任务之间的通信同步的软件和报告与MSP有关的中断、异常和状态条件的软件。

向量化-DSP固件库804实质上执行所有数字信号处理功能。向量化-DSP固件库804还控制由控制处理器204向向量处理器206发出的如协处理器中断之类的专用特殊中断,或控制在向量处理器206内产生的硬件堆栈溢出异常。

多媒体库模块812执行通信处理功能如数据通信、MPEG视频和音频、语言编码和合成、与Sound BlasterTM兼容的音频等。MSP实时核心810是实时、健壮(robust)、多任务、抢先的操作系统,它包括便于在多媒体信号处理器104上执行多媒体应用程序的增强措施。

在主处理器102中执行的PC应用和操作系统软件808控制多媒体信号处理器104,其方法是通过系统总线106读写各MSP控制和状态寄存器,及写入驻留到系统存储器116和驻留到多媒体信号处理器104的共用数据结构。

MSP的程序执行随控制处理器204执行第一执行流而开始。控制处理器204可以在向量处理器206起动第二个独立的执行流。控制处理器204和向量处理器206的操作用以下指令同步:在控制处理器204中运行的专用协处理器指令,包括STARTVP,INTVP和TESTVP指令;在向量处理器206中执行的特殊指令,包括VJOIN和VINT指令。控制处理器204和向量处理器206之间的数据传送用在控制处理器204中执行的数据传送指令来实现。

在上电之后,多媒体信号处理器104自动进入自检顺序以充分测试功能性。自检顺序包括多媒体信号处理器104中所有寄存器的初始化和检验多媒体信号处理器104各部件功能性的片内自检诊断程序的执行。一旦自检顺序结束,多媒体信号处理器104就执行MSP系统部件软件802以装入和执行MSP初始化软件及装入和执行MSP实时核心810。多媒体信号处理器104支持三种复位操作,它们是:通过PCI总线的受硬件控制的系统复位、通过MSP控制寄存器中PCI系统复位位的受软件控制的系统复位以及通过控制处理器204和通过MPS控制寄存器内向量重新起动位的受软件控制的重新起动。

参照图9,流程图示出与多媒体多处理器系统100中中断和异常处理有关的操作。

向量处理器206在多媒体多处理器系统100中执行非常有限的控制和管理功能。具体说,虽然向量处理器206产生异常,向量处理器206却不包括处理异常的能力。相反,复位初始化和各异常由控制处理器204来处理。此外,只在向量处理器206空闲时才允许控制处理器204去读或写向量处理器206。因此,控制处理器204作为主动控制的处理器工作,而向量处理器206作为在主动控制处理器控制下的受控处理器工作。

如此,在向量处理器206和控制处理器204具有互不相同的控制和数据处理特性的意义上,多媒体多处理器系统100包括多个不对称的处理器。这些不对称处理器由单一的操作系统控制。向量处理器206和控制处理器204具有互不相关的指令集。多媒体多处理器系统100采用中断和异常处理的多处理器架构定义,其中向量处理器206具有大机器状态或现场、大数据宽度和许多寄存器。在一个说明性实施例中,向量处理器206具有288位数据宽度、64个288位向量寄存器、80个以上的32位标量寄存器和4KB高速暂存(scratch pad)存储器。向量处理器206的大机器状态包括具有相当大量位数的相当大量寄存器。向量处理器206对于阵列或向量之类的大数据结构的处理十分有效,但是对于位和状态标志之类的小数据结构的处理不是最优的。因此向量处理器206包括检测异常的电路,但是把中断和异常处理操作委托给控制处理器204。控制处理器204具有小机器状态和小数据宽度,例如16或32位,这对执行中断和异常处理之类的操作系统程序是有利的,因为控制程序一般涉及个别状态标志和指针的监视和控制。

向量处理器206检测异常条件但是不为该条件服务而是向控制处理器204发送中断信号、进入空闲状态并且保持在空闲状态直到引起异常的条件或来源接受了控制处理器204的操作的服务。由于异常和中断控制操作不需要协调,由于所有控制操作都单独由控制处理器204执行,所以简化了多媒体多处理器系统100的控制。

向量处理器206工作在按照MSP架构定义的运行状态(VP_RUN)和空闲状态(VP_IDLE)以分别指示向量处理器206正在执行或是无限期暂停执行。一旦多媒体多处理器系统100复位902,向量处理器206进入VP_IDLE状态904。控制处理器204仅在VP_IDLE状态期间才被允许读写向量处理器206中的寄存器906。当向量处理器206处于VP_RUN状态时,由控制处理器204执行的和指向向量处理器206的寄存器的读操作或写操作的结果是“有界无定义的(boundedly undefined)”。“有界无定义的”结果是多媒体信号处理器104中任何指令序列都可产生的多媒体多处理器系统100的状态。因此,只允许控制处理器204在向量处理器206处于VP_IDLE状态时进行对向量处理器206内各寄存器的读写访问。

控制处理器204初始化向量处理器206中的诸寄存器908。在把向量处理器206中的诸寄存器初始化到选定的状态之后,控制处理器204执行STARTVP指令910以把向量处理器206的状态改变为VP_RUN状态911。

当向量处理器206遭遇异常条件912时,向量处理器206进入VP_IDLE状态914并用中断请求916告知控制处理器204。向量处理器206保持在VP_IDLE状态直到控制处理器204执行另一条STARTVP指令918。控制处理器204通过读出向量处理器206中的诸寄存器而确定所报告的异常的类别920并以规定的方式处理该异常922。然后控制处理器204,如果有需要,重新初始化924向量处理器206中的诸寄存器,接着重新起动向量处理器206的执行926。

在保存和恢复向量处理器206中的诸寄存器方面,向量处理器206比控制处理器204更有效。因此,当控制处理器204编程使向量处理器206在现场交换操作期间执行寄存器保存和恢复指令时,实现了性能上的优点。一种有利的现场交换操作的详细讨论见于在本发明同一申请日申请的、一起正在审理中的、美国专利申请号××/×××,×××(代理人案号M-4365)、S.P.Song等人发明的标题为“EFFICIENT CONTEXT SAVING ANDRESTORING IN MULTIPROCESSORS(多处理器中有效的现场保存和恢复)”的申请。

当复位和检测到异常时,向量处理器206进入VP_IDLE状态以方便系统的设计和编程及在系统复位时简化处理器的同步。异常一般不经常出现,所以在不显著降低向量处理器206功能度或性能的情况下大大简化了向量处理器206的中断处理。此外,普遍认为对异常的响应性是重要性有限的特性。例如,许多实时执行的现有应用程序诸如多媒体应用程序包括在实时操作模式下禁止对异常事件作出响应的编程。在另一例中,某些现有的应用程序使用饱和模式(saturation mode)来避免实时算术处理时的算术或下溢条件。

虽然参照各种实施例对本发明作了描述,但是应当懂得这些实施例是说明性的,本发明的范围不受它们的限制。可能对所述的实施例作出许多变动、修改、添加和改进。例如,这些实施例是作为利用包括Pentium主计算机和特定多媒体处理器的多处理器系统的系统来描述的。在其他实施例中可以采用其他的处理器配置。

本专利文件与以下同时申请的专利有关,为了完整起见,将它们纳入作为参考:

美国专利申请号××/×××,×××,代理人案号M-4354 US,标题“MULTIPROCES SOR OPERATION IN A MULTIMEDIA SIGNALPROCESSOR(在多媒体信号处理器中的多处理器操作)”,发明者Le Nguyen。

美国专利申请号××/×××,×××,代理人案号M-4355 US,标题“SINGLE-INSTRUCTION-MULTIPLE-DATA PROCESSING IN AMULTMEDIA SIGNAL PROCESSOR(在多媒体信号处理器中的单指令多数据处理)”,发明者Le Nguyen。

美国专利申请号××/×××,×××,代理人案号M-4365 US,标题“EFFICIENT CONTEXT SAVING AND RESTORING IN MULTIPROCESSORS(多处理器中有效的现场保存和恢复)”,发明者S.P.Song等人。

美国专利申请号××/×××,×××,代理人案号M-4366 US,标题“SYSTEM AND METHOD FOR HANDLING SOFTWARE INTERRUPTSWITH ARGUMENT PASSING(随变元传送处理软件中断的系统和方法)”,发明者S.P.Song等人。

美国专利申请号××/×××,×××,代理人案号M-4368 US,标题“METHODS AND APPARATUS FOR PROCESSING VIDEO DATA(处理视频数据的方法和装置)”,发明者C.Reader等人。

美国专利申请号××/×××,×××,代理人案号M-4369 US,标题“SINGLE-INSTRUCTION-MULTIPLE-DATAPROCESSING USINGMULTIPLE BANKS OF VECTOR REGISTERS(使用多组向量寄存器的单指令多数据处理)”,发明者Le Nguyen等人。

美国专利申请号××/×××,×××,代理人案号M-4370 US,标题“SINGLE-INSTRUCTION-MULTIPLE-DATAPROCESSING WITHCOMBINED SCALAR/VECTOR OPERATIONS(带标量/向量组合操作的单指令多数据处理)”,发明者Le Nguyen等人。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号