高性能通信控制器的制作方法

文档序号:7594127阅读:255来源:国知局
专利名称:高性能通信控制器的制作方法
技术领域
本发明通常涉及通信控制器,具体涉及高性能通信控制器。
通信控制器一般可见于网络和电信产品中。通信控制器根据各种多层通信协议处理数据流,并把与一个通信层相关的数据包变换为与另一个通信层相关的数据包。
当通信处理机处理与各种通信协议相关的数据流时,通信控制器以分离模式来处理各个通信协议,并可在不同的模式之间跳转。
通信控制器不但需要处理高速数据流,而且还需要根据各种多层通信协议来处理数据流。为了处理高速数据流,通信控制器需要有很大的带宽,例如数百MIPS甚至更多。为了能够根据各种通信协议,特别是以非常快速的模式接收,发送并处理数据,通信控制器需要在它的不同模式之间很快速地跳转。


图1是一张根据现有技术的简化的示意图,描述了旧式通信信道1180,旧式外存储体1100和旧式通信控制器101。旧式通信控制器101与摩托罗拉的MC68360芯片类似。旧式通信控制器101包括旧式调度器1050,旧式的第一直接存储器存取控制器(也就是旧式的第一DMA)1060,旧式的第一存储体1070,旧式的第一处理器1090,旧式的指令存储体1130,旧式的第二处理器1100和旧式接口1160。旧式的通信控制器101与一个旧式的外存储体1110相连。旧式的通信控制器101还可以与其他外部设备如另一个外部存储体,主系统和其他处理器相连,但并不局限于以上三种外部设备。旧式的通信控制器101可以与多个外存储体相连。为了便于解释,把这多个存储体称之为旧式外存储体1110。
旧式调度器1050具有输入1054,1056和输入/输出(即I/O)1052。旧式的第一DMA1060具有输入1066,输出1068和输入/输出1062,1064。旧式的第一存储体1070具有输入/输出1072,1074和1076。旧式的第一处理器1090具有输入1095,输出1096和输入/输出1092,1094,1098。旧式的第二处理器1100包括输入/输出1102。旧式的外存储体1110包括输入/输出1116。旧式接口1160包括输入/输出1162和1165。
N个旧式外设PR(1)—PR(N)1141-1148,统一表示为1140,与旧式外设总线1112相连。N个旧式外设1140被置于旧式通信控制器101内。这N个旧式外设1140把旧式通信控制器101与多个旧式通信信道CC(1)-CC(K)1181-1188相连,1181-1188统一表示为1180。旧式通信信道1180具有统一表示为1182的输入/输出。旧式外设具有统一表示为1144的输入/输出。输入/输出1182与输入/输出1144相连。
旧式外设1140的输入/输出1142,旧式第一存储体1070的输入/输出1072和旧式调度器1150的输入1054均与旧式外设总线1112相连。旧式第一DMA1060的输入/输出1062,旧式的外存储体1110的输入/输出1116,旧式第二处理器1100的输入/输出1102,旧式接口1160的输入/输出1162与单总线1113相连。单总线1113是一根外部总线,它把旧式通信控制器101与不同的外部设备连接起来。旧式调度器1150的输入/输出1052与旧式的第一处理器1090的输入/输出1092相连。旧式的第一处理器1090的输入/输出1094与旧式的指令存储体1130的输入/输出1132相连。旧式的第一处理器1090的输入/输出1095与接口1160的输入/输出1165相连。旧式的第一处理器90的输入/输出1098与旧式的第一存储体1070的输入/输出1076相连。旧式的第一处理器90的输出1096与旧式的第一DMA1060的输入1066相连。旧式的第一DMA1060的输入/输出1064与旧式的第一存储体1070的输入/输出1074相连。
旧式接口1060是一组寄存器,它可被旧式的第一处理器1090以及被可以访问单总线1113的任意设备进行存取。
通常把旧式外设制做成能够处理一个或多个通信协议。一些旧式外设可以与单通信信道相连,另一些外设可以与多通信信道相连。有一种外设为串行通信控制器(即SCC),它可以处理各种通信协议如IEEE802.3/以太网,高级/同步数据链路控制(即HDLC/SDLC),通用异步收发器(即UART)。另一种外设是串行管理控制器(SMC),它处理UART并提供全透明功能性。还有一种外设是串行外围接口(即SPI),它使得旧式通信控制器101可以与其他通信控制器以及大量如ISDN设备这样的外设和模数转换器之间交换数据。处理串行通信协议的外设通常包括并行到串行转换器,如移位寄存器,它从通信信道接收串行数据位流,把该位流转换为一组要发送到旧式第一处理器1090去的多位字。这些外设还包括并行到串行转换器如移位寄存器,以从旧式第一处理器1090接收多位字,并把每个字转换为单位流。方便起见,每个旧式外设为一状态机。
旧式通信处理器101能够根据各种通信协议处理数据。旧式的通信控制器101具有一个能够根据可编程的例行程序处理各种通信协议的旧式第一处理器1090,上述例行程序可存储在旧式指令存储体1130,旧式第一存储体1070或任何其他的存储体中。在处理数据时,旧式第一处理器1090使用存储在旧式第一存储体1070或旧式外存储体1110中的一组参数(请求信道参数,通信信道参数)。方便起见,这些参数可以是每个通信协议(即协议)的一部分。通常这些参数在本技术领域都是公知的。例如,以太网协议的具体参数被刊印在摩托罗拉的MC68360用户手册第7-247页到7-248页,UART协议的具体参数被刊印在第7-145页,HDLC协议的具体参数被刊印在第7-173页,BISYNC协议的具体参数被刊印在第7-203页,透明协议的具体参数被刊印在第7-225页。有各种类型的参数,如请求信道参数用于定义请求信道的状态,通信信道参数用于定义单个通信信道的状态。例如与SCC相类似的请求信道的请求信道参数被刊印在摩托罗拉MC68260用户手册的7-125页,各种通信协议的通信信道参数被刊印在摩托罗拉用户手册的第7-145,7-173,7-203,7-225,和7-247至7-248中。
旧式的第二处理器1100初始化旧式第一处理器1090并处理高级管理和协议功能,例如字节交换,压缩和路由选择。旧式的第一处理器1090控制所有的数据流事务处理。在旧式的调度器1150接收到处理这样事务的请求并通知旧式第一处理器需要处理该事务之后,旧式的第一处理器1090才处理该事务。如果有来自一些旧式外设处的不止一个请求,旧式调度器1050便选择最高优先级的请求。
“任务”被定义为一组指令,它由旧式第一处理器1090执行以控制数据帧的单个事务。通常数据的单个事务是由从外设接收到的请求或发送来的请求来初始化的。
为便于理解,图2为旧式第一存储体的一部分和旧式外存储体的一部分的示意图。
与通信信道相关的数据帧被存储在缓冲器BF(k)814中,缓冲器BF(k)814的大小可被编程。一个数据帧(如每个通信协议所定义)可以存储在一个或更多个缓冲器中,单个缓冲器不会存储来自多于一个数据帧的数据。至少一个数据帧与一单个通信信道相关。存储与单个通信信道相关的数据的该组缓冲器形成一个循环队列。大多数缓冲器位于旧式的外存储体1110中。缓冲器BF(k)814由缓冲描述符BD(k)812定位,缓冲描述符统一表示为288。大多数缓冲描述符被存储在旧式的第一存储体1070中,另有一些被存储在旧式的外存储体1110中。
方便起见,缓冲描述符BD(k)812包括一个指针字段(即PT(k))810,一个状态和控制字段(即SW(k))806和一个长度字段(即LW(k))808。缓冲器BF(k)814的起点由PT(k)810定位。LW(k)808确定缓冲器BF(k)814的长度。SW(k)806包括一个F/S位FSB(k)802,它确定旧式第一和旧式第二处理器1090和1100中哪一个能够处理和/或访问缓冲器BF(k)814。旧式第一处理器1090会在它完成发送所有存储在BF(k)814中的数据,或完成接收一个数据帧,或所接收的数据填充BF(k)814时,设置FSB(k)。旧式第二处理器1100会在它用要发送给一个通信信道的数据填充BF(k)814,或在它完成读取存储在BF(k)814中的数据时,复位FSB(k)802,其中该数据是从一个通信信道中接收到的。SW(k)806还包括一个换行字段(即WB(k))804,它用于表明BD(k)812是否为涉及通信信道的最后一个缓冲描述符。PT(k)810指向BF(k)814的起点。因为缓冲器包括多个存储字,因此需要一个临时的计数器TMP(k)816指向存储从CC(k)接收到新数据字,或存储要发送给CC(k)数据字的地址。在存储/发送了数据之后,对TMP(k)816进行更新。
每一个缓冲描述符BD(k)812由一个描述符指针DP(k)818定位。描述符指针被存储在旧式第一存储体1070中。
旧式第一处理器1090在它完成对缓冲器BF(k)814处理之前不能提取新的缓冲描述符BD(k+1),也不能处理存储在与此缓冲描述符相关的缓冲器BF(k+1)中存储的数据。
对数据的发送和接收涉及到提取请求信道参数,通信信道参数,TMP(k)816,DP(k)818,BD(k)812以及存储在BF(k)814中的数据(即信息)。如果需要从外存储器中提取信息,旧式的第一处理器1090便启动旧式的第一DMA 1060并一直等到提取到信息。在提取到信息之后,旧式的第一处理器1090继续执行涉及从旧式外存储器1100中提取信息的任务。
旧式的第一处理器1090和第二处理器1010共享一条外部总线,因此便限制了旧式通信控制器101的频率和可用的带宽。
在耗时操作例如从外存储器提取信息结束时,旧式的第一处理器1090为空闲状态,这样便降低了它的频率。
旧式的通信控制器101没有所要求的带宽,不能在任务之间跳转,不能处理高速数据流,特别是与各种通信协议相关的高速数据流。
因此便需要一种得到改善的高性能通信控制器,以能处理高速数据流,特别是与各种通信协议相关的高速数据流。
本发明的特性在所附的权利要求中已经指出,其他的特征将参照附图在下面进行详细描述。其中,图1是根据现有技术的简化的示意图,描述了旧式通信信道,旧式外存储体和旧式通信控制器;图2为旧式第一存储体的一部分和旧式外存储体的一部分的示意图;图3为根据本发明的优选实施例的简化的示意图,描述了通信信道,外存储体和通信控制器;图4为根据本发明的优选实施例的第一直接存储器存取控制器的控制部分的示意图;图5为根据本发明的优选实施例的第一直接存储器存取控制器的缓冲部分的示意图;图6为根据本发明的优选实施例的使能单元,调度器和屏蔽逻辑电路的示意图;图7为根据本发明的优选实施例的调度器的示意图;图8为根据本发明的优选实施例的块传送机的示意图9为根据本发明的优选实施例的第一存储体的示意图;图10为根据本发明的优选实施例的第一存储体内的一条存储体的示意图;图11为一流程图,描述了根据本发明的优选实施例用于执行任务和任务转换的方法的优选实施例;图12为一流程图,描述了根据本发明的优选实施例用于执行由接收或发送的请求所初始化的任务的方法的优选实施例;图13为根据本发明的优选实施例描述第一处理器对各种接收/发送请求所作出的响应的时间关系图;图14为根据本发明的优选实施例描述第一处理器对各种接收/发送请求所作出的响应的时间关系图。
通常,本发明的一个方面是处理高速数据流特别是与各种通信协议相关的高速数据流的能力。
应当注意,在详细的描述和附图中所使用的特定术语,表示方式以及所披露的特定结构和操作细节只是用于描述性目的,并不是意于限制所附权利要求中描述的本发明的范围。
图3为根据本发明的优选实施例的简化的示意图,描述了通信信道180,外存储体110和通信控制器111。如虚线119所示,通信控制器111包括调度器50,第一DMA 60,第二DMA 160,第一存储体70,第一处理器90,指令存储体130,第二处理器100以及多个外设,统一表示为140。通信控制器111与两个外部总线-第一总线113和第二总线114相连。通信控制器还与外部存储体110以及被统一表示为180的多个通信信道相连。方便起见,这多个通信信道180与多个外设140相连。通信控制器111还可以与其他外部设备如另一个外部存储体,主系统和其他处理器相连,但并不局限于以上三种外部设备。通信控制器还包括桥接器120,接口160和块传送机(即BTM)40。通信控制器111还可以与多个外部存储体相连。为了便于解释,这多个存储体被称之为外存储体110。
调度器50具有输入561-568和输入/输出52。第一DMA 60具有输出67和输入/输出62,64,65。第二DMA 160与第一DMA 60类似,具有输出167和输入/输出162,164和165。第一存储体具有输入/输出72,74,76和78。第一处理器90具有输入/输出92,93,94,95,96,97和98(为便于解释,图8显示了输入/输出97)。第二处理器100具有输入/输出102,104。外存储体110具有输入/输出116和118。指令存储体130具有输入/输出132。BTM 40具有输入/输出43,45和47(为便于解释图8显示了输入/输出46)。桥接器120具有输入/输出124和122。接口160具有输入/输出162和164。M个外设PR(1)-PR(M)1401-1408,统一表示为140,具有M个统一表示为144的输入/输出和M个统一表示为142的输入/输出。最好,将M个外设140放置于通信控制器111中。多(M)个外设140把通信控制器111与多(K)个通信信道CC(1)-CC(K)1801-1808(统一表示为180)通过输入/输出144和182连接起来。
外设140的输入/输出142,BTM 40的输入/输出43和调度器50的输入561-568与外围总线112相连。第二DMA 160的输入/输出162,外存储体110的输入/输出118,第二处理器110的输入/输出104和桥接器的输入/输出162均与第二总线114相连。第一DMA 60的输入/输出62,外部存储体110的输入/输出116以及桥接器120的输入/输出122均与第一总线113相连。第一存储体70的输入/输出72与BTM40的输入/输出45相连。第一存储体70的输入/输出74与第二DMA 160的输入/输出164相连。第一存储体70的输入/输出78与第一DMA 60的输入/输出64相连。第一存储体70的输入/输出76与第一处理器90的输入/输出98相连。第一处理器90的输入/输出93与第二DMA 160的输入/输出165相连。第一处理器90的输入/输出96与第一DMA 60的输入/输出65相连。第一处理器90的输入/输出94与指令存储体130的输入/输出132相连。第一处理器90的输入/输出95与接口160的输入/输出164相连。第一处理器90的输入/输出92与调度器50的输入/输出52相连。第二处理器100的输入/输出102与桥接器120的输入/输出124相连。第二DMA 160的输入/输出167和第一DMA 60的输入/输出67通过屏蔽逻辑电路(图6所示)与调度器的输入561-568相连。
桥接器120用于连接第二处理器100和第一总线113。接口160包括一个寄存器,它用于把第一处理器90与不同的单元如第二处理器100通过第一总线100连接起来。接口160可用于向第一处理器90写指令。
外设140中的一些外设包括一个缓冲器或一个队列,该缓冲器或队列与通信信道180中的一个或多个通信信道相连。方便起见,外设更复杂,通常把每个外设制成能够处理一个或多个通信协议。一些外设可以与单个通信信道相连,一些外设则可以与多个通信信道相连。例如,但并不以此限制本发明的范围,处理HDLC协议的外设可以与256个通信信道相连。
例如,但并不以此限制本发明的范围,一种外设类似于摩托罗拉的MC68360 SCC,但也能处理异步传输模式的通信协议。另一种外设类似于摩托罗拉的MC68360 SMC。另一种外设类似于摩托罗拉的MC68360 SPI。还有一种外设允许通信控制器111处理ATM协议,而再一种外设则允许通信控制器111处理快以太网(Fast Ethernet)协议。处理串行通信协议的外设通常包括从并行到串行的转换器,例如移位寄存器,它从通信信道接收串行数据位流,并把该数据位流转换为一组将发送到第一处理器90去的多位字。这些外设进一步还包括并行到串行转换器,例如移位寄存器,用于从第一处理器90接收一个多位字,再把每个字转换为单位流。方便起见,每个外设包括一台状态机,该状态机适用于至少一个通信协议。状态机可以把原始数据位流转换为与通信协议相容的位流。
通信处理器111根据不同的通信协议处理数据。通信控制器111具有一个能够根据可编程的例行程序处理各种通信协议的第一处理器90,上述例行程序可被存储在指令存储体130,第一存储体70或任何其他的存储体中。在处理数据时,第一处理器90使用存储在第一存储体70或外存储体110中的一组参数(请求信道参数,通信信道参数)。方便起见,这些参数可以是每个通信协议(即协议)的一部分。通常这些参数是本技术领域公知的。例如,但并不以此来限制本发明的范围,以太网协议的具体参数被刊印在摩托罗拉的MC68360用户手册第7-247页到7-248页,UART协议的具体参数被刊印在第7-145页,HDLC协议的具体参数被刊印在第7-173页,BISYNC协议的具体参数被刊印在第7-203页,透明协议的具体参数被刊印在第7-225页。有各种类型的参数,如请求信道参数用于定义请求信道的状态,通信信道参数用于定义单个通信信道的状态。例如与SCC相类似的请求信道的请求信道参数被刊印在摩托罗拉MC68260用户手册的7-125页,各种通信协议的通信信道参数被刊印在摩托罗拉用户手册的第7-145,7-173,7-203,7-225,和7-247至7-248中。
第二处理器100初始化第一处理器90并处理高级管理和协议功能,例如字节交换,压缩和路由选择。方便起见,第二处理器类似于摩托罗拉的MC68360芯片的CPU32+(被刊印在摩托罗拉的MC68360芯片用户手册中)。第一处理器90控制所有的数据流事务处理。
“任务”被定义为一组指令,它由第一处理器90执行以控制帧的事务。通常帧的事务是由从一个外设接收到的请求或发送来的请求来初始化的。
方便起见,外设可以接收数据或传送数据。为了便于解释,每个外设140都被认为包括两个请求信道,一个传送请求信道,用于传送数据和发送传送请求,一个接收请求信道,用于接收数据和发送接收请求。为了便于解释,把第z个请求信道表示为RC(z),z555是一个值为1到2M的索引。Z555表示第z个请求信道已经发出接收或传送请求。
方便起见,由通信控制器111所处理的数据存储在外存储体110中,对数据的处理涉及到使用缓冲器BF(k),缓冲描述符BD(k),描述符指针DP(k),指针字段PT(k),临时指针TMP(k),状态和控制字段SCW(k),长度字段LW(k),F/S位FSB(k)确定第一和第二处理器90和100中哪一个能够处理和/或访问缓冲器BF(k)。这些BF(k),BD(k),DP(k),PT(k),TMP(k),SCW(k),LW(k)和FSB(k)与旧式通信处理器101的缓冲器BF(k),缓冲描述符BD(k),描述符指针DP(k),指针字段PT(k),状态和控制字段SCW(k),调换字段WB(k),长度字段LW(k),F/S位FSB(k)相类似的。第一处理器90会在它完成发送所有存储在BF(k)中的数据,或完成接收一个数据帧,或所接收的数据填充BF(k)时设置FSB(k)。第二处理器100会在它用要发送给一个通信信道的数据填充BF(k),或在它完成读取存储在BF(k)中的数据时,复位FSB(k),其中该数据是从一个通信信道中接收到的。PT(k)指向BF(k)的起点。
在存储/发送了数据字之后,对TMP(k)进行更新。因而,在第一处理器90执行了任务转换/开始执行一项任务时,把更新的TMP(k)发送到/从第一存储体70(发送)。
第一处理器90在它完成对整个当前缓冲器BF(k)处理之前,通常不提取新的缓冲描述符BD(k+1),也不能处理存储在与此缓冲描述符相关的缓冲器BF(k+1)中存储的数据。
如参照图10所详细进行解释的那样,对数据的发送和接收涉及到提取请求信道参数,通信信道参数,TMP(k),DP(k),BD(k)以及存储在BF(k)中的数据。如果在上述的任意提取过程中需要执行DMA操作,并且如果DMA请求需要访问第一总线113或第二DMA160,或者DMA请求需要访问第二总线114,第一处理器90便启动第一DMA 60。
图4为根据本发明的优选实施例的第一DMA 60的控制部分的示意图。第一DMA 60的控制部分类似于第二DMA 160的控制部分。方便起见,第一DMA 60的控制部分包括一个DMA请求队列(即队列)62,一个使能单元64。如以后将进一步详细解释的那样,队列62可以存储多个DMA请求和使能单元64。使能单元64屏蔽传送请求或接收从请求信道发送到调度器50的请求。最好,第一DMA 60的控制部分包括一个队列62,一个使能单元64,一个请求旁路寄存器(即旁路寄存器)68,一个使能单元64,一个输入多路复用器(即DI_MUX)66,一个输出多路复用器(即DO_MUX)69。DI_MUX 66具有输入662和668,输出666。队列62具有输入626,输出628和多个统一表示为624的N个输出。旁路寄存器68具有输入682,输出684和686。DO_MUX69包括输入692,694,696,输出698。使能单元64具有多个统一表示为646的N个输入,输入642和2M位输出676,676与第一DMA 60的输出67相连。DI_MUX 66的输入662和668与第一DMA 60的输入65相连。
队列62具有N个存储字621-628。方便起见,每个存储字621-628具有两个部分6211-6281和6212-6282。第一部分6211-6281用于存储z555,它表示哪一个请求信道与直接存取存储请求(即DMA请求)相关。第二部分6212-6282用于存储DMA请求。DMA 60把一个信息块从存储体的第一个位置移动和/或拷贝到存储体的第二个位置。方便起见,DMA请求包括由第一DMA 60所传送的信息块的信源,目的地以及大小。
旁路寄存器68具有两个部分。第一个部分681用于存储z555,第二个部分682用于存储DMA请求。
DI_MUX66通过输入664接收一个DMA请求和z555。DI_MUX66通过输入668接收一个BYQ信号668,它确定是否把DMA请求和z555写入旁路寄存器68或队列62。
如果旁路寄存器68为非空,DO_MUX 69通过输入692接收到一个控制信号,使其选择输入696并输出存储在旁路寄存器68中的DMA请求。否则,DO_MUX 69便选择输入694,并输出存储在第二部分6212中的DMA请求。
发送请求初始化任务。接收请求也初始化任务。
第一部分6211-6281通过队列62的输出624与使能单元64的输入646相连。当第一处理器70向第一DMA 60发送与RC(z)相关的DMA请求时,RC(z)的发送或接收请求被禁止。在执行了所有与RC(z)相关的DMA请求之后,它的接收或发送请求便被使能。通常在与请求相关的任务结束时,接收或发送请求被禁止。
使能单元64把与存储在DMA队列62中的DMA请求相关的请求信道的发送或接收请求进行屏蔽。使能单元64可以通过输出648向调度器50发送一个具有相应z555的使能信号。方便起见,输出648有2M位,分别用于2M个请求信道,使能单元64向与RC(z)相关的其输出648的第z位发送一个1位信号。
图5为根据本发明的优选实施例的第一DMA 60的缓冲部分的示意图。第一DMA 60的缓冲部分类似于第二DMA 160的缓冲部分。缓冲部分包括第一发送(即tx)缓冲器612,第二发送(即tx)缓冲器614,第一接收(即rx)缓冲器616,第二接收(即rx)缓冲器618,发送控制单元610,和接收控制单元615。
第一tx缓冲器612具有输入6126,6124和输出6122。第二tx缓冲器614具有输入6146,6144和输出6142。发送控制单元610具有输入6108和输出6104,6102。接收控制单元615具有输入6158和输出6154,6105。第一rx缓冲器616具有输入6162,6164和输出6166。第二rx缓冲器618具有输入6182,6184和输出6186。
第一tx缓冲器612的输出6122和第一rx缓冲器616的输入6162与第一DMA 60的输入/输出64和62相连。第二tx缓冲器614的输入6146和第二rx缓冲器618的输出6186与第一总线113相连。第一tx缓冲器612的输入6126与第二tx缓冲器614的输出6142相连。第一rx缓冲器616的输出6166与第二rx缓冲器618的输入6182相连。DO_MUX 69的输出898分别与接收控制单元615的输入6158和发送控制单元610的输入6108相连。发送控制单元610的输出6102与第一tx缓冲器612的输入6124相连。接收控制单元615的输出6152与第一rx缓冲器616的输入6164相连。发送控制单元610的输出6104与第二tx缓冲器610的输入6144相连。接收控制单元615的输出6154与第二rx缓冲器618的输入6184相连。
发送控制单元610具有一个能存储从DO_MUX 69发送的DMA指令的寄存器,DO_MUX 69涉及到把数据从第一存储体70的输入/输出78,第一处理器90的输入/输出96通过输入/输出64和96发送到第一总线113。发送控制单元610启动第一tx缓冲器612把数据发送到输入/输出64或96,启动第二tx缓冲器614把数据从第一总线113读取到第二tx缓冲器614中。发送控制单元向第一和第二tx缓冲器612和614发送控制信号,以把数据从第二tx缓冲器614发送到第一tx缓冲器612。发送控制单元具有一个用于存储z555的字段6102。最好,第一和第二tx缓冲器可以独立操作。
接收控制单元615具有一个能存储从DO_MUX 69发送的DMA指令的寄存器,DO_MUX 69涉及到把数据从第一总线113通过输入/输出64和96发送到第一存储体70的输入/输出78或第一处理器90的输入/输出96。接收控制单元615启动第一rx缓冲器616,从输入/输出64或96发送数据,启动第二rx缓冲器618,把数据从第二rx缓冲器618发送到第一总线113。接收控制单元615向第一和第二rx缓冲器616和618发送控制信号,以把数据从第一rx缓冲器616发送到第二rx缓冲器618。接收控制单元615具有一个用于存储z555的字段6502。最好,第一和第二rx缓冲器616和618可以独立操作。
方便起见,使能单元64不会检查队列62的第一部分6211-6281以及旁路寄存器682的681。把接收和发送单元615,610的字段6502和6102的内容与第一部分6211-6281和628的内容进行比较,如果存在不匹配,字段6502和6102的内容便被发送到使能单元64。
图6为根据本发明的优选实施例的使能单元64,调度器50和屏蔽逻辑电路80的示意图。屏蔽逻辑电路包括多个“与”逻辑门。为了便于解释,本说明涉及多个“与”逻辑门(即门)中的四个3-输入端逻辑“与”门81-84。第一门81具有输入812,814,818和输出816。第二门82具有输入822,824,828和输出826。第三门83具有输入832,834,838和输出836。第四门84具有输入842,844,848和输出846。
使能单元64的输出671与第一门81的输入812相连。使能单元64的输出672与第二门82的输入822相连。使能单元64的输出673与第三门83的输入832相连。使能单元64的输出674与第四门84的输入842相连。使能单元164的输出1671与第一门81的输入818相连。使能单元64的输出1672与第二门82的输入828相连。使能单元64的输出1673与第三门83的输入838相连。使能单元64的输出1674与第四门84的输入848相连。第四门84的输出846与调度器50的输入564相连。第三门83的输出836与调度器50的输入563相连。第二门82的输出826与调度器50的输入562相连。第一门81的输出816与调度器50的输入561相连。第四门84的输入844与线路14012相连,以从请求信道接收接收或发送请求。第三门83的输入834与线路14022相连,以从另一个请求信道接收接收或发送请求。第二门82的输入824与线路14032相连,以从一个请求信道接收接收或发送请求。第一门81的输入814与线路14042相连,以从一个请求信道接收接收或发送请求。
当第一DMA 60或第二DMA 160接收到一个与接收信道相关的DMA请求时,它就向从该请求信道接收接收或发送请求的逻辑门发送一个禁止信号(低电平信号),使能信号便屏蔽掉从该信道来的请求。当第一DMA 60或第二DMA 160没有接收到与请求信道相关的请求时,它们就会向与该请求信道相连的逻辑门发送一个使能信号。如果第一DMA 60和第二DMA 160都发送使能信号,请求信道的接收或发送请求就可以抵达调度器50。
例如,第一门81与第一请求信道RZ(1)相连。第一请求信道通过线路14042发送一个发送请求(高电平信号)。如果第一DMA 60或第二DMA 160都没有接收到与第一请求信道RZ(1)相关的请求,第一DMA 60和第二DMA 160就会向第一逻辑门81的输入812和818发送高电平信号。调度器50通过输入561从第一请求信道RZ(1)接收到发送请求,然后使第一处理器90开始执行第一项任务T(1)以处理发送请求。当第一项任务T(1)需要一个DMA请求时,第一处理器90便向第一DMA 60或第二DMA 160发送一个DMA请求。为了便于解释,这里假定第一处理器90向第一DMA 60发送了DMA请求。直到第一DMA 60执行完DMA请求,使能单元64向第一门81的输入812发送一个低电平信号,使得第一门的输出信号很底,这样便屏蔽了第一请求信道RZ(1)的发送请求。
禁止信号进一步还来自第一处理器90。当第一处理器90发送了一个DMA信号时,禁止信号也被发送。第一处理器90和使能单元64与一个触发器相连,同时第一处理器与触发器的复位输入端相连,使能单元64与触发器的置位输入端相连。如上所述,触发器的输出端与“与”逻辑门的输入端相连。第一处理器还与第二DMA 160的使能单元164相连。
图7为根据本发明的优选实施例的调度器50的示意图。调度器50包括;请求选择器56,栈指针输入多路复用器(即sp input mux)52,栈指针输出多路复用器(即sp output mux)58和2M的栈指针寄存器1sp_reg-2Msp_reg541-548,统一表示为540。
调度器50存储了一组多达2M个栈指针。一个栈指针是一个指令I(z,r)的地址,指令I(z,r)是任务T(z)的一部分,z和r为整数,z的值为1到2M。最好,任务T(z)专属于从请求信道RC(z)来的单个接收或发送请求。任务T(z)可以存储在指令存储体130、第一存储体70或外部存储体110中。任务T(z)或其一部分还可以存储在其他的存储体内。
例如,如果所选择的发送或接收请求与RC(c)相关,它便使第一处理器90从Dsp_reg提取一个栈指针。Csp_reg的内容是指令I(c,r)的地址。第一处理器90便执行任务T(c)的一部分。
通常,如参照图13将进一步进行详细解释的那样,第一处理器90执行第z项任务T(z)的一些指令(I(z,r)-I(z,r+d),d为整数),直到需要从外部单元提取信息为止。第一处理器90向第一DMA60或第二DMA 160发送一个与RC(z)相关的DMA请求,并向Zsp_reg发送一个更新的栈指针(指向指令I(z,r+d+1),该指令紧随指令I(z,r+d)。方便起见,如果任务T(z)完成,I(z,1)便被发送给Zsp_reg),并等待从调度器50接收一个新选择的栈指针。当调度器向第一处理器90发送了一个新选择的与第x项任务T(x)相关的栈指针,第一处理器90便开始执行任务T(x)中的指令。
把“任务转换”定义为由第一处理器90所执行的过程,它涉及到终止一项任务的执行,等待接收所选择的任务,和开始执行所选择任务中的指令。通常所选择的任务不同于所终止的任务,但也不是必须如此。
请求选择器56具有2M个输入561-568,一个控制输入569和输出560。Sp input mux 52具有输入520和529,第一组2M个输出511-518和第二组2M个输出521-528。栈指针寄存器(即sp寄存器)541-548具有第一组输入5411-5481,第二组输入5412-5482和输出5413-5483。Sp output mux 58具有2M个输入581-588,输入580和输出589。请求选择器56的输出560与sp output mux 58的输入580相连,用于选择把2M个输入581-588中的哪一个与输出589相连。请求选择器56的输入561-568与2M个统一表示为150的请求信道RC(1)-RC(2M)相连。如参照图4进一步进行详细解释的那样,输出648向接收信道发出使能信号。方便起见,把2M个“与”逻辑门(未显示),其中每个逻辑门具有两个输入和一个输出,与使能单元64的2M位输出648相连,连接在一边的2M个接收和发送信道上,和另一边的2M个输入561-568上。
发送请求通常在一个请求信道完成向一个通信信道发送数据时发送,请求信道可以接收一个新数据。接收请求通常在一个请求信道接收数据时发送。
请求选择器56检查它是否从一个或多个请求信道接收到发送或接收请求。如果答案为“是”,请求选择器56便选择最高优先级别的请求。为了便于解释,假定具有最高优先级别的请求来自第z个请求信道RC(z)。请求选择器56向sp input mux 52发送一个控制信号,使得存储在Gsp_reg中的第z个栈指针被发送到第一处理器90。第一处理器90从指令存储体130中提取由第z个栈指针所指向的指令I(z,r),并开始执行它以及后续的任务T(z)的指令。
请求的优先级可以是固定的,也是可以更改的。例如,通过第一输入561输入的请求可以具有最低的优先级,而通过第M个输入568输入的请求则可以具有最高的优先级。
图8为根据本发明的优选实施例的块传送机(即BTM)40的示意图。BTM 40包括BTM数据寄存器(即bdata寄存器)41,BTM控制单元(即bcontrol单元)46,数据控制器44和CRC机48。BTM40与CRC REG 42,第一存储体70以及外设140相连。CRC REG 42是第一处理器90的一个寄存器。
方便起见,BTM 40处理从(到)外设140到(从)第一存储体70的数据传送。通常,第一处理器90向BTM 40发送一个传送请求,表明要传送的数据的源点和目的地以及数据的长度。例如,如果BTM40通过一条32位总线与外设和第一存储体70相连,就需要传送8×32=256位,然后第一处理器70将发送一个长度字段为8的传送指令,表明8个32位传送将被执行。通常,ATM通信协议需要传送更大的数据块,例如48×32=1536位。方便起见,BTM 40也可以单独包括一个DMA控制器。最好,DMA 40既可以处理数据的发送还可以处理它发送的数据。每个外设1401-1408都有一个输入/输出1421-1428。
Bdata缓冲器41具有输入414,输入/输出412和416。CRC REG 41具有输入424和输入/输出426。BRAM 43包括输入/输出432和输入434。数据控制器44具有输入442,444和输入/输出446。Bcontrol单元46包括输入462和输出464。CRC机48具有输入484,482和输入/输出486。
外设总线112通过BTM 40的输入/输出43与数据控制器44的输入/输出442和CRC机48的输入482相连。Bcontrol单元46的输出464通过BTM 40的输入/输出46与CRC REG 42的输入424,CRC机48的输入484,数据控制器44的输入444,BRAM 43的输入344,bdata缓冲器41的输入414相连。Bcontrol单元46的输入462通过BTM的输入/输出47与第一处理器90的输入/输出97相连。CRC REG 42的输入/输出426通过BTM 40的输入/输出47与CRC机48的输入/输出486相连。数据控制器44的输入/输出446与bdata缓冲器41的输入/输出412相连。bdata缓冲器41的输入/输出416通过输入/输出45与第一存储体70的输入/输出72相连。
Bcontrol单元46由从第一处理器90的输出97来的控制信号和/或操作数启动。Bcontrol单元46通过输出464向CRC REG 42,CRC机48,数据控制器44,和bdata缓冲器41发送控制信号从而控制BTM40的操作。Bcontrol单元46发送控制信号,使得数据从(到)外设总线112流向(从)第一存储体70。Bcontrol单元会让CRC机对数据做CRC检查,并把结果存储在CRC REG 42中。方便起见,CRC机48会在单个时钟周期内做CRC检查。最好,CRC机会在单个时钟周期内对16位的数据字做CRC检查。数据控制器44可以通过输入/输出442读取数据字,交换数据字,或产生移位数据字,并通过输入/输出446向bdata缓冲器41的输入/输出412发送新的数据字。bdata缓冲器41存储新的数据字并把它发送给bram 43。bdata缓冲器41还可以从bram 43接收数据字并把它发送给数据控制器44。数据控制器44可以交换数据字,或产生移位数据字并通过输入/输出442向外设总线112发送新的数据字。
图9为根据本发明的优选实施例的第一存储体70的示意图。存储体70包括Q个部分(即存储体)1BANK-QBANK 701-708。1BANK-QBANK 701-708中的每个存储体都与第一处理器90,第一DMA 60,第二DMA 160和BTM 40相连。为了便于解释,只显示出两个存储体1BANK 701和QBANK 708,但是任意数目Q个存储体都可以实现。为了便于解释未显示第二DMA 160。
第一处理器90的输入/输出98通过第一存储体70的输入/输出78与1BANK 701的输入7148,QBANK 708的输入7848,1BANK 701的输入/输出7168和QBANK 708的输入/输出7868相连。第一DMA 60的输入/输出64通过第一存储体70的输入/输出78与1BANK 701的输入7148,QBANK 708的输入7848,1BANK 701的输入/输出7166,QBANK 708的输入/输出7866相连。BTM 40的输入/输出45通过第一存储体70的输入/输出72与1BANK 701的输入7144,QBANK 708的输入7844,1BANK 701的输入/输出7164,QBANK 708的输入/输出7864相连。如根据图8所示做进一步解释的那样,如果一块存储体(例如1BANK 701)同时被第一处理器90,第一DMA 60和BTM 40中的多个访问,1BANK 701便确定首先服务哪个元件以及在服务了第一个元件之后再服务哪一个元件。
图10为根据本发明的优选实施例的第一存储体70内的Q个存储体中的存储体1BANK 701的示意图。1BANK 701包括存储器阵列718,数据多路复用器(即DATA MUX)716,地址多路复用器(即ADDRESS MUX)714和存储体选择器712。DATA MUX 716具有输入7163和输入/输出7164,7166,7168,7169。ADDRESS MUX 714具有输入7144,7146,7148,7149和输出7142。存储体选择器712具有输入7124,7126,7128和输出7123,7125。存储器阵列718具有输入7182和输入/输出7184。DATA MUX 716的输入7163与存储体选择器712的输出7123相连。ADDRESS MUX 714的输入7149与存储体选择器712的输出7125相连。ADDRESS MUX 714的输出7142与存储器阵列718的输入7182相连。DATA MUX 716的输入/输出7169与存储器阵列718的输入/输出7184相连。
BTM 40,第一DMA 60,第二DMA 160和第一处理器90可以向ADDRESS MUX 714的输入7144,7146,7148以及存储体选择器712的输入7124,7126,7128发送相应的地址字。一些地址字位被发送到存储体选择器712,其余的地址字位被发送到ADDRESS MUX714。发送到存储体选择器712去的地址字位被用于从1BANK-QBANK701-708中选择一个存储体。
如果第一处理器90,第一DMA 60和BTM 40中只有一个元件发送了地址字,那么此元件便被选中,存储体选择器712从输出7125和7163中发送一个选择信号给ADDRESS MUX 714的输入7149和DATA MUX 716的输入7163。该选择信号会使得ADDRESS MUX 714把从所选择的元件发送来的地址字的剩余位发送给存储器阵列718的输入7182。选择信号会使得DATA MUX 716把存储器阵列718的输入/输出7184与所选择元件的输入/输出相连。例如,当BTM 40向1BANK写入数据字时,它向1BANK 701发送一个地址字,向DATAMUX 716的输入/输出7164发送一个数据字。存储体选择器712接收到地址字的一些位,确定BTM 40向(从)1BANK 701写入(读取)一个数据字。存储体选择器712向DATA MUX 716发送选择信号,DATA MUX 716把输入/输出7164(最终是BTM 40的输入/输出42)与DATA MUX 716的输出7169,进而与存储器阵列718的输入/输出7184连接起来。
如果BTM 40,第一DMA 60和第一处理器90中不只一个元件向1BANK发送了数据地址,存储体选择器712便选择从具有最高优先级的元件来的请求,并向DATA MUX 716,进而向ADDRESS MUX 714发送选择信号。例如,如果BTM 40和第一处理器90同时向1BANK发送了地址字,但第一处理器比BTM 40具有更高的优先级,存储体选择器便发送一个选择信号,使得ADDRESS MUX 714的输入7148与存储器阵列718的输入/输出7184相连。
可以把存储体1BANK-QBANK中的一些进行交织,以提供更高的顺序存取速率。这种交织规定第一存储字要在第一存储体中找到,第二存储字要在第二存储体中找到。这种交织是通过把地址字中最低有效位与最高有效位交换而完成的。例如,如果第一存储体包括16个存储体,每一个有2K个字,那么地址字必须要有15位长,四个位用于从16个存储体中选择一个,其余的11个位用于定义在一个2K的字存储体中选择哪个数据字。交织可以通过把一个15位的地址字中的4个最低有效位发送给每个存储体选择器712的地址总线的4个高有效位,而把剩余的11个位送到ADDRESS MUX 714。
图11为一张流程图,描述了根据本发明的优选实施例用于执行任务和任务转换的方法900的优选实施例。
方法900从步骤910开始,此处调度器50检查它是否从任何一个请求信道接收到一个或多个接收或发送请求。步骤910之后为步骤920,如路径913所示。
在步骤920,调度器50选择具有最高优先级的接收/发送请求。为了便于解释,假定请求来自RC(z)。调度器50发送一个与所选择的接收/发送请求相关的栈指针,使得第一处理器90执行与RC(z)相关的任务T(z)。执行任务T(z)通常涉及到提取数据,状态字,请求信道参数,通信信道参数和指针(即信息)。在步骤920中,第一处理器90执行任务T(z),直到任务T(z)结束或直到需要从外存储体110或外部单元提取信息为止。
如路径934所示,在步骤962,如果需要提取存储在外存储体110中的信息,第一处理器向第一DMA 60发送一个DMA请求,把更新的栈指针SP(z)存储在调度器50的第z个栈指针寄存器(即Zsp_reg)中,并向调度器50发送一个禁止信号,用于屏蔽从RC(z)来的任意发送或接收请求。如路径962所示,步骤960之后为步骤910。
如路径964所示,在发送出一个DMA请求之后,在步骤970,第一DMA 60或第二DMA 160执行请求并提取信息。在提取了信息之后,第一DMA 60或第二DMA 160向调度器50发送一个使能信号,不屏蔽从T(z)来的任意接收或发送请求。在根据任务T(x)执行了步骤910,920,930,940,950和960时,就可以执行步骤970了。
如虚线路径972所示,步骤972之后为步骤910,这意味着在提取了与任务T(z)相关的信息之后,可以从步骤910开始执行任务T(z)。如根据图4所详细进行解释的那样,T(z)包括一组指令,而第一处理器可以执行这些指令中的一些I(z,r)-I(z,r+d),然后执行任务转换。当第一处理器90响应来自RC(z)的请求时,它将提取下面的指令,从指令I(z,r+d)之后的指令I(z,r+d+1)开始。
如路径924,952和步骤950所示,如果任务T(z)结束,第一处理器90就会发送一个更新的栈指针给Zsp_reg,方法900就会开始步骤910以检查调度器50是否接收到了发送/接收请求。
在步骤960的开始,为了提取与任务T(z)相关的信息,第一处理器90向第一DMA 60或第二DMA 160发送一个DMA请求,并向调度器50发送一个禁止信号,该信号用于屏蔽任意从CR(z)来的发送或接收信号。第一处理器90向Zsp_reg发送它当前的栈指针。禁止信号还可以由第一DMA 60或第二DMA 160发送。
图12为一张流程图,描述了根据本发明的优选实施例用于执行由接收或发送的请求所初始化的任务的方法1000的优选实施例。
步骤1014,1018,1022,1030涉及到提取信息。如果信息存储在外存储体110或任意其他的外部单元,第一处理器90便会执行任务转换,如根据图9所解释的那样。步骤1046后可以跟随一个任务转换。例如,如果一个请求外设没有存储整个帧而是该帧的一部分,并且第一处理器90已经处理完那部分,就需要提取该帧的剩余部分,这样第一处理器90就会执行任务转换,并且当该帧的另一个部分存储在外设中时可返回执行该任务。为了便于解释,这些任务转换没有显示在图10中,而方法1000的执行被描述为没有进行任务转换。
在步骤1010中,第一处理器90通过提取T(z)的第一条指令I(z,1)而开始执行来自所选择的任务T(z)的指令。
如路径1012所示,步骤1010之后为步骤1014。在步骤1014中,第一处理器90提取并读取所选择的信道RC(z)的请求信道参数。
举例来说,但此例并不限制本发明的范围,信道参数可以包括PD(k)。在接收根据ATM通信协议发送的数据流时,第一处理器90可以读取单元的头部。头部包括地址,该地址与虚拟连接(即CV)相关。该地址定义了在步骤1018中要读取信道参数的信道。在根据快以太网通信协议接收数据流时,第一处理器90检查是否存在冲突(如果冲突出现在一个预定的时间窗口中),如果答案为“是”,通信控制器111就会忽略所接收到的信息,或当第一处理器执行涉及到向RC(z)发送数据的任务时重新发送数据流。如果答案为“否”,第一处理器90便向第二处理器100发送一个出错信号。
如路径1016所示,步骤1014之后为步骤1018。在步骤1018中,第一处理器提取通信信道参数。第一处理器90检查通信控制器111要接收(或发送)的数据字是否为一个通信帧中的第一个数据字。如果答案为是,步骤1018之后为步骤1022,否则它之后为步骤1030。通常,通信信道参数包括一个能够表明一个数据字是否为帧的开始的字段。例如,当根据ATM通信协议接收单元时,这种指示可以在单元的头部找到。
如路径1020所示,步骤1018之后为步骤1022。在步骤1022中,第一处理器90根据先前提取的DP(k)提取BF(k)。TMP(k)得到PT(k)的值,因为第一处理器90将开始把从CC(k)处接收到的数据字写入BF(k)的开头。
如路径1024所示,步骤1022之后为步骤1026。在步骤1026中,第一处理器读取FSB(k)。如果该位已被设置,第一处理器90便不能访问BF(k)。方便起见,第一处理器90将会一直等到第二处理器100复位FSB(k),而不会试图把数据写入其他的缓冲器描述符,但这也不是必须的。如路径1028所示,当复位了FSB(k)时,第一处理器在步骤1030中提取TMP(k)。TMP(k)指向所接收到的数据字将被存储的地址(或数据字将被发送的地址)内。
如路径1032所示,步骤1030之后为步骤1034。如果执行步骤1034而通信控制器111通过外设从CC(k)接收到数据,那么就把一个数据字(或多个数据字)从CC(k)发送到第一存储体70,然后再从第一存储体70发送到由TMP(k)所指向的地址。如果执行步骤1034,而通信控制器111通过外设向CC(k)发送数据,那么就把一个数据字(或多个数据字)从由TMP(k)所指向的地址发送到第一存储体70,然后再从第一存储体70发送到CC(k)。如根据图8所解释的那样,BTM 40处理数据从(到)CC(k)到(从)第一存储体70的发送。
如路径1036所示,步骤1034之后为步骤1038。
在查询步骤,第一处理器90检查在步骤1034中存储在BF(k)(或从BF(k)发送)的数据字是否为一个帧中的最后的数据字或者BF(k)是否为满(空)。
如路径1048所示,如果两个问题的答案都为“否”,那么步骤1038之后为步骤1046。在步骤1046中,增加TMP(k),以使得它指向BF(k)内空的数据字(指向要发送到CC(k)的下一个数据字),该数据字在先前由TMP(k)指向的存储字之后。如路径1056所示,步骤1046之后为步骤1034。
如路径1044所示,如果数据字为一个帧的结尾,不管BF(k)的状态如何,查询步骤1038之后为步骤1050。在步骤1050中,第一处理器90向第二处理器100发送一个帧的指示结尾,通过设置FSB(k)关闭BD(k),并更新通信信道参数。这种更新包括由下列描述符指针DP(k+1)代替DP(k)。
例如,当根据ATM AL5通信协议(ATM通信协议的子协议)接收数据流时,第一处理器90必须检查CRC检查是否表明了在发送帧时存在错误,如果这样,它就向第二处理器发送一个中断。第一处理器90还可以检查最后单元的长度,并以此更新LW(k)。
如路径1040所示,如果BF(k)为“满”(空,当从通信控制器111发送数据字时),步骤1038之后为步骤1042。在步骤1042,第一处理器90通过设置FSB(k)关闭BD(k),并更新通信信道参数。这种更新包括由下列描述符指针DP(k+1)代替DP(k)。
图13为根据本发明的优选实施例描述第一处理器对各种接收/发送请求所作出的响应的时序图。
信号PR1代表由第一处理器90执行第一任务T(1)。信号PR2代表由第一处理器90执行第二任务T(2)。信号PR3代表由第一处理器90执行第三任务T(3)。第一任务T(1)比第二任务T(2)具有更高的优先级,而第三任务T(3)的优先级则比第二任务T(2)的优先级要低。
如过渡1550和1551所示,第一处理器90开始执行第一任务T(1),直到第一任务T(1)需要从外部存储体110提取信息为止。第一任务T(1)由于其最高的优先级而在第二和第三任务T(2)和T(3)之前执行。如过渡1551所示,第一处理器90向第一DMA 60发送一个DMA请求并执行任务转换。如渡1551和1560所示,第一处理器90停止执行第一任务T(1),开始执行第二任务T(2)。DMA请求要在过渡1562之前执行,否则任何从与第一任务T(1)相关的请求信道来的请求都会被禁止,第一处理器将不会执行第一任务T(1)。
在过渡1561之后,第一处理器90开始以与它执行第一任务T(1)相同的方式执行第二任务T(2)。如过渡1560和1561所示,执行第二任务T(2),直到需要从外部存储体110提取信息为止。如渡1561和1570所示,第一处理器90执行任务转换,它停止执行第二任务T(2),并以与它执行第一任务T(1)和第二任务T(2)相同的方式开始执行第三任务T(3)。如过渡1580和1581所示,执行第三任务T(3),直到需要从外部存储体110提取信息为止。在过渡1581之后,第一处理器检查是否存在请求,并且因为所有的接收/发送请求都被禁止,第一处理器90一直等到与第一任务T(1)相关的DMA请求完成,然后开始执行第一任务T(1),如过渡1562所示。
在过渡1560和1561,1562和1563,1564和1565,1566和1567之间执行第一任务T(1)。在过渡1561和1562,1563和1564,1565和1566之间,第一DMA 60执行与第一任务T(1)相关的DMA请求。在过渡1570和1571,1572和1573之间执行第二任务T(2)。在过渡1571和1572之间,第一DMA 60或第二DMA 160执行与第二任务T(2)相关的DMA请求。在过渡1580和1581,1582和1583,1584和1585,1586和1587之间执行第三任务T(3)。在过渡1581和1582,1583和1584,1585和1586之间,第一DMA 60执行与第三任务T(3)相关的DMA请求。
图14为根据本发明的优选实施例描述第一处理器对各种接收/发送请求所作出的响应的时序图。
如参照图11所进一步详细解释的那样,信号PR1代表由第一处理器90执行第一任务T(1)。第一处理器在过渡1560和1561,1562和1563,1564和1565,1566和1567之间执行第一任务T(1)。过渡1561,1563和1565表示任务转换,它通常是由需要从外部存储体或其他外部单元提取信息所导致的。
信号CR1代表从CR(z)所发送的一个接收/发送请求。如过渡1590所示,该请求一直到第一处理器90完成执行第一任务T(1)前都是有效的。
信号R1代表输入到调度器50的被屏蔽的信号。如过渡1591所示,当第一任务T(1)需要从外存储体110提取信息时,第一处理器90向第一DMA 60或向第二DMA 160发送一个DMA请求,并向调度器50发送一个禁止信号。禁止信号使信号R1复位。如参照图4进一步详细解释的那样,在第一DMA 60或第二DMA 160执行完所有由RC(z)所产生的DMA请求后,它向调度器50发送一个使能信号。如过渡1592所示,该使能信号设置信号R1。过渡1592是过渡1562的先决条件。只要与RC(z)相关的DMA请求没有被充分执行,第一处理器90就不会处理第一任务T(1)。
在过渡1562之前执行DMA请求,否则从与第一任务T(1)相关的请求信道来的任何请求都被禁止,第一处理器将不会恢复执行第一任务T(1)内的指令。
如过渡1592,1594和1596所示,R1信号是在第一DMA 60执行完与RC(z)相关的DMA请求之后被设置的。如过渡1593和1595所示,当需要执行与RC(z)相关的DMA请求时,信号R1被复位。
如过渡1597所示,当第一处理器90执行完第一任务T(1)时,R1被复位。
这样,此处就描述了一个实施例,它包括至少一个改进的用于对数据处理器指令进行分类的方法和装置的优选实施例以及指令系统的实施例。很明显,对于本技术领域内的人员来讲,可以用众多的方式来修改所披露的主题,并采用很多不同于上面所描述和专门陈述的优选形式。因此,上面所披露的主题只被认为是描述性的,而并不是限制性的。由法律最大程度的允许,所附的权利要求意于覆盖所有此类的修改以及本发明的真正精神和范围内的其它实施例。本发明的范围将由下面的权利要求及其等效物所具有的最大许可诠释确定,而不是前面的详细描述所确定。
权利要求
1.一种高速通信控制器,用于接收,发送和处理高速数据流,数据流包括帧,通信控制器适合于与一组通信信道,与第一和第二外部总线相连。通信控制器包括第一处理器,用于控制数据流的事务,其中第一处理器通过执行任务控制帧的事务;第二处理器,用于处理高级管理和通信协议功能;以及调度器,与第一处理器相连,用于感知是否需要执行一项任务,并选择待由第一处理器执行的选定任务。
2.权利要求1中的通信控制器,进一步包括指令存储体,与第一处理器相连,用于存储任务;第一存储体,与第一处理器相连,用于存储待由第一处理器处理的数据;第一直接存储器存取控制器,与第一处理器和第一外部总线相连,用于提取存储在与第一外部总线相连的外存储体内的信息;第二直接存储器存取控制器,与第一处理器和第二外部总线相连,用于提取存储在与第二外部总线相连的外存储体内的信息;多个外设,与调度器和第一存储体相连,用于在多个通信信道和第一存储体之间起缓冲作用。
3.权利要求2的通信控制器,其中调度器存储了多个栈指针;其中一个栈指针与一项任务相关;调度器向第一处理器发送一所选择的栈指针,该所选择的栈指针与所选择的任务相关;一项任务的执行涉及到更新所选择的栈指针;以及当第一处理器停止执行所选任务时,它向调度器发送所选的更新了的栈指针。
4.权利要求3的通信控制器,其中当任务的执行涉及到从外部存储体中提取信息时,第一处理器便停止执行任务。
5.权利要求4的通信控制器,其中一个外设具有两个请求信道;第一请求信道处理数据从通信控制器向一个通信信道的发送;第二请求信道处理数据从通信信道发送到通信控制器的接收;当第一请求信道可以接收到要发送到通信信道去的数据时,它会向调度器发送一个发送请求;以及当第二请求信道接收到从通信信道来的数据时,它会向调度器发送一个接收请求。
6.权利要求5的通信控制器,其中调度器包括请求选择器,与外设相连,用于接收发送请求和接收请求并选择所选定的请求;多个栈指针寄存器,用于存储多个栈指针;栈指针输入多路复用器,与多个栈指针多路复用器和第一处理器相连,用于把栈指针写入多个栈指针寄存器中;以及栈指针输出多路复用器,与多个栈指针寄存器,第一处理器和请求选择器相连,用于把选定的栈指针发送到第一处理器。
7.权利要求6的通信控制器,其中第一直接存储器存取控制器和第二直接存储器存取控制器包括一个直接存储器存取请求队列,与第一处理器相连,用于存储多个直接存储器存取请求;和一个使能单元,与直接存储器存取请求队列和调度器相连,用于把与存储在直接存储器存取控制器中的直接存储器存取请求相关的第一请求信道来的发送请求进行屏蔽,并把与存储在直接存储器存取控制器中的直接存储器存取请求相关的第二请求信道来的接收请求进行屏蔽。
8.权利要求7的通信控制器,其中第一直接存储器存取控制器和第二直接存储器存取控制器进一步包括一个请求旁路寄存器,用于存储直接存储器存取请求;一个输入多路复用器,用于确定是把直接存储器存取请求存储在直接存储器存取请求队列中还是存储在请求旁路寄存器中;以及一个输出多路复用器,与第一存储体,直接存储器存取请求队列和旁路请求寄存器相连,如果请求旁路寄存器存储了一个有效的直接存储器存取请求,它就用于选择存储在请求旁路寄存器中的直接存储器存取请求。
9.权利要求8的通信控制器,其中直接存储器存取请求队列包括多个存储字;每个存储字都具有第一位置和第二位置;第二位置是用于存储直接存储器存取请求;以及第一位置用于存储一个标记,该标记表明了与存储在第二位置中的直接存储器存取请求相关的请求信道。
10.权利要求7的通信控制器,其中当第一直接存储器存取控制器和第二直接存储器存取控制器中有一个的使能单元屏蔽了来自第一请求信道的发送请求时,来自第一请求信道的发送请求便被屏蔽;和当第一直接存储器存取控制器和第二直接存储器存取控制器中有一个的使能单元屏蔽了自第二请求信道来的接收请求时,自第二请求信道来的接收请求便被屏蔽。
11.权利要求10的通信控制器,进一步具有一个块传送机,用于传送从外设到第一存储体或从第一存储体到外设的数据;其中块传送机包括位字段单元,与外设相连,用于处理数据;CRC机,与外设相连,用于执行CRC检查;BTM数据寄存器,与CRC机,数据处理器和第一存储体相连,用于存储待从第一存储体发送到外设的数据,并存储待写入第一存储体中的数据;BTM控制单元,与CRC机,数据处理器和BTM数据寄存器相连,用于控制块传送机。
12.权利要求11的通信控制器,其中第一存储体具有多个部分,每个部分都与第一处理器,第二处理器,第一直接存储器存取控制器,第二直接存储器存取控制器和BTM相连,其中每个部分包括一个存储器阵列,用于存储信息;一个存储体选择器,用于从第一处理器,第二处理器,第一直接存储器存取控制器,第二直接存储器存取控制器和BTM中选择所选定的设备;数据多路复用器,用于使能所选定的设备与存储器阵列之间的数据传输;以及地址多路复用器,用于使能所选定的设备向存储器阵列发送一个地址字。
13.权利要求5的通信控制器,其中外部存储体具有多个缓冲器,用于存储数据;外部存储体进一步具有缓冲器描述符,用于存储一个指针,一个状态和控制字段和一个长度字段;指针指向缓冲器;长度字段定义了由指针所指向的缓冲器的长度;以及状态和控制字具有一个F/S字段,它表示第一处理器和第二处理器中哪一个可以对指针所指向的缓冲器进行存取。
14.权利要求13的通信控制器,其中缓冲器存储与请求信道相关的数据;与单个请求信道相关的一组缓冲器形成一个循环队列;状态和控制字包括一个换行字段,用于表示具有换行字段的缓冲器描述符所涉及的缓冲器是否为该组中的最后一个缓冲器;一个缓冲器存储从单个数据帧来的数据;每个缓冲器包括多个存储字;第一存储体存储一个临时指针;以及临时指针指向待由第一处理器所要处理的下一个存储字。
15.权利要求14的通信处理器,其中在第一处理器处理了由缓冲器描述符所涉及的缓冲器之后,它对F/S字段进行设置;和在第二处理器处理了由缓冲器描述符所涉及的缓冲器之后,它对F/S字段进行复位。
16.权利要求14的通信控制器,其中当第一处理器执行任务转换时,它在第一存储体中保存更新的临时指针;和当第一处理器开始执行任务中的指令时,它会提取临时指针。
17.一种用于处理数据流事务的方法,数据流包括帧,其中帧事务是通过执行任务来处理的,其中执行任务涉及到从外部单元提取信息,该方法包括下列步骤检查是否需要处理事务;如果需要处理一项事务,便执行任务,直到任务结束,或直到任务的执行涉及到从外部单元提取信息;如果任务结束,便跳到检查是否需要处理事务那一步;以及否则,便初始化从外部单元提取信息的过程,停止执行涉及从外部单元提取信息的任务,并跳到检查是否需要处理事务那一步。
18.权利要求17的方法,其中当需要从通信信道接收帧的一部分时,便停止任务的执行。
19.一种操作通信控制器的方法,该通信控制器用于接收,发送和处理高速数据流,数据流由帧组成,通信控制器与多个通信信道和外部单元相连,通信控制器具有一个第一处理器,用于控制数据流事务;其中第一处理器通过执行任务控制帧的事务;第二处理器,用于处理高级管理和通信协议功能;第一外部总线,与第一处理器和第二处理器相连,用于把第一处理器,第二处理器与外部单元连接起来;第二外部总线,与第一处理器和第二处理器相连,用于把第一处理器,第二处理器与外部单元连接起来;调度器,与第一处理器相连,用于感知是否需要执行一项任务,并选择要执行哪一项任务;该方法包括下列步骤检查是否需要处理事务;如果需要处理一项事务,便执行任务,直到任务结束,或直到任务的执行涉及到从外部单元提取信息;以及如果任务结束,便跳到检查是否需要处理事务那一步;否则,便初始化从外部单元提取信息的过程,停止执行涉及从外部单元提取信息的任务,并跳到检查是否需要处理事务那一步。
20.权利要求19的方法,其中通信控制器进一步具有一个指令存储体,它与第一处理器相连,用于存储任务;第一存储体,与第一处理器相连,用于存储要由第一处理器处理的数据;第一直接存储器存取控制器,与第一处理器和第一外部总线相连,用于提取存储在与第一外部总线相连的外部存储体内的信息;第二直接存储器存取控制器,与第一处理器和第二外部总线相连,用于提取存储在与第二外部总线相连的外部存储体内的信息;多个外设,与调度器和第一存储体相连,用于在多个通信信道和第一存储体之间起缓冲作用;其中每个外设包括两个请求信道;其中第一请求信道处理数据从通信控制器向通信信道的发送;其中第二请求信道处理数据从通信信道发送到通信控制器的接收;其中请求信道参数定义了请求信道的状态;其中通信信道参数定义了通信信道的状态;其中外部存储体具有多个缓冲器,用于存储数据;其中外部存储体进一步具有缓冲器描述符,用于存储指针,状态和控制字段,和长度字段;其中指针指向缓冲器;该方法包括下列步骤开始任务;读取请求信道参数;提取通信信道参数,并检查可以表明任务是否涉及处理帧中第一个数据字的通信信道参数;如果任务涉及处理帧中第一个数据字便执行下列步骤提取缓冲器描述符;设置临时指针为缓冲器描述符中的指针值;检查缓冲器描述符是否被使能,其中如果缓冲器描述符未被使能,则一直等到它被使能;提取临时指针;否则,跳到提取临时指针那一步;如果从外部单元接收数据和把数据移动到通信信道,如果发送数据,把数据从通信信道移动到外部单元,;检查数据帧是否结束,缓冲器是否结束;如果缓冲器结束,更新通信信道参数,并跳到提取缓冲器描述符那一步;如果帧结束,发送帧指示的末端,关闭缓冲器描述符,更新通信信道参数,并跳到开始任务那一步;以及否则,更新临时指针,并跳到移动数据那一步。
全文摘要
一种通信控制器,用于处理高速多协议数据流,其中数据流由帧组成。通信控制器具有两个处理器,第二处理器初始化第一处理器并处理高级管理和协议功能,第一处理器处理数据流事务。第一和第二处理器与两条外部总线相连。第一处理器通过执行任务而处理帧的事务。如果第一处理器确实处理了一整个帧,或者如果需要从通信信道提取帧的一部分,当需要从与第一或第二外部总线相连的外部单元提取信息时,第一处理器便执行任务转换。
文档编号H04L12/40GK1346468SQ00805899
公开日2002年4月24日 申请日期2000年3月14日 优先权日1999年4月2日
发明者约伦·耶文, 埃利泽·魏茨, 莫蒂·柯尼克, 阿维·沙列夫, 阿维·黑格 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1