用于控制处理器与外设之间的通信的控制器和方法

文档序号:6656966阅读:441来源:国知局
专利名称:用于控制处理器与外设之间的通信的控制器和方法
技术领域
本发明涉及一种数据处理系统、一种控制器和一种方法,用于对处理器与外设之间的通信进行控制。
背景技术
为了增强基于现代微处理器的数据处理系统的性能,使用一般接口(可以是类SRAM接口,即存储映射接口)来扩展系统的能力。这种接口的示例可以包括通用串行总线USB控制器、调制解调器控制器、IEEE 1394控制器等。这些控制器使数据处理系统中的微处理器能够和与控制器相连的外设进行通信。例如,像便携式数字助理PDA、移动电话、数码相机和便携式存储设备的外设可以使用USB接口与主机交换数据。然而,如果每一个外设都包括USB接口,那么这些外设还可以彼此通信而不需要主机。所有这些控制器和接口具有共同点,即,它们典型地包含本地存储管理单元MMU,MMU被设计用于对微处理器向外设中的内部缓冲存储器发出的访问请求进行处理。
存储管理单元MMU对内部缓冲存储器的访问或读取包括预取时间段。这个时间段组成了存储管理单元MMU从缓冲存储器获取数据所需的时间段。应当注意的是,预取时间段典型地比通常的读取时间段长几倍。
在数据处理期间,微处理器可以使用减小的时间以满足预取约束。这里,引入了与每次访问控制器中的缓冲存储器的预取时间段相对应的延迟。可选地,可以使用就绪信号。然而,这些就绪信号可能不能够用于所有的数据处理平台。
为了改进从外部扩展系统(即外设)进行读取的能力,使用突发模式来执行读取。这里,微处理器把期望的起始地址(即数据读取应当开始的地址)写入寄存器,该地址用作预取地址。之后,微处理器等待预取时间段并以全速(即正常的操作速度)发起对外设的访问。这同样用于访问连续数据。然而,如果微处理器需要访问外设中其它位置的数据,则必须再次启动预取周期。因此,在不需要就绪信号且不减小外设控制器的可用带宽的情况下满足了预取约束。关于更多信息,请参考Data Sheet of Am29N323D of Advanced Micro Devices,Rev.B,2002年8月8日。
然而,在多线程、多任务数据处理环境中可能会出现问题。如果第一线程正在从512个字节的地址0x1000开始起访问外设,并在读取了256个字节后,数据处理系统可能会切换到可能具有更高优先级的第二线程,第二线程把不同的地址写入寄存器作为预取地址。一旦第二线程完成了其处理,对外设的访问将会结束,数据处理系统将会切换回第一线程。然而,由于寄存器中作为预取地址的当前值已经被第二线程更改,所以这可能导致数据讹误。
US 2002/0091719涉及计算机与计算机网络之间的数据系统环境中的一种消息处理系统,它基于多线程数据集操作。不同的线程由费里斯轮队列(ferris wheel queue)来处理。具体地,费里斯轮队列包括处理单元,所述处理单元具有与缓冲空间可用性和输入数据源有关的信息。为了写入数据,线程首先必须为其自身向处理单元进行请求。如果没有可用的缓冲空间,则拒绝该请求。如果处理单元被设置在存储设备(即外设)侧上,则可能会出现问题,这是因为处理单元不会具有与当前线程正在访问缓冲器有关的任何信息。另一方面,如果处理单元拒绝了读/写请求,由于外设不应拒绝读/写,所以数据处理系统可能会崩溃。费里斯轮队列可以应用于要求对某些数据进行缓冲并共享同一个物理缓冲器的多线程。需要一种特定的请求/准许/拒绝机制,以确保线程不会干扰其它线程当前正在进行的其它读/写操作。然而,引入这种准许/请求/拒绝机制会降低相应硬件的兼容性,而且会减小可用带宽。这里,仅在第一线程已经完成其处理之后来执行第二线程。

发明内容
本发明的目的是提供多线程环境中的一种数据处理系统,所述系统能够有效地与外设通信。
这个目的通过根据权利要求1所述的数据处理系统、根据权利要求4所述的控制器以及根据权利要求5所述的处理器与外设之间通信的控制方法来解决。
因此,提供了一种基于多线程操作系统的数据处理系统。该数据处理系统包括至少一个处理器,用于基于多线程对数据进行处理;至少一个控制器单元,用于控制所述至少一个处理器与外设之间的通信,其中所述外设与所述至少一个控制器单元相连。所述至少一个控制器单元包括至少一个缓冲存储器,用于对来自与所述至少一个控制器单元相连的所述外设的数据进行缓冲;以及至少一个存储管理单元,通过把所述至少一个缓冲存储器映射到N个存储体来管理对所述至少一个缓冲存储器的访问,其中每一个存储体都具有专用预取寄存器。把所述多线程中至少一个线程映射到所述N个存储体中的一个存储体和该存储体的专用预取寄存器。
因此,提供了一种基于多线程操作系统的数据处理系统,所述系统允许对各个线程的预取寄存器进行有效的切换,从而实现了对外设的高速访问。通过避免额外的预取时间段,可以有效地交替执行多个线程。另外,控制器与处理器相连作为存储映射资源。甚至在多个线程的情况下,带宽没有减小并且能够以全速运行读取访问。
根据本发明的一方面,提供了一种用于存储线程标识信息的线程寄存器。基于这个信息,控制器自身将会知晓哪一个线程当前正在访问缓冲存储器BM,并且可以基于这个信息在各个预取寄存器之间切换,避免了额外的预取时间段。
本发明还涉及一种控制器,用于在基于多线程操作系统的数据处理环境中,对至少一个处理器与外设之间的通信进行控制,其中所述外设与所述至少一个控制器相连。所述控制器包括至少一个缓冲存储器,用于对来自与所述至少一个控制器相连的所述外设的数据进行缓冲;以及至少一个存储管理单元,通过把所述至少一个缓冲存储器映射到N个存储体来管理对所述至少一个缓冲存储器的访问,其中每一个存储体都具有专用预取寄存器。把所述多线程中至少一个线程映射到所述N个存储体中的一个存储体和该存储体的专用预取寄存器。
本发明还涉及一种控制方法,用于在基于多线程操作系统的数据处理环境中,对至少一个处理器与外设之间的通信进行控制,其中所述外设与所述至少一个控制器相连。基于多线程对数据进行处理。对来自与所述至少一个控制器单元相连的所述外设的数据进行缓冲。通过把所述至少一个缓冲存储器映射到N个存储体来管理对所述至少一个缓冲存储器的访问,其中每一个存储体都具有专用预取寄存器。把所述多线程中至少一个线程映射到所述N个存储体中的一个存储体和该存储体的专用预取寄存器。
本发明基于如下概念为多线程操作系统中的各种外设提供连接性,从而多个线程能够以与访问系统共享存储器(即类SRAM存储器)相同的方式有效地对外设进行访问。因此,外设接口包括被存储管理单元映射为N个存储体的缓冲存储器。专用预取寄存器与缓冲存储器的N个存储体中的每一个存储体相关联。这个预取寄存器的附加地址空间用于把特定线程信息传送到接口,从而根据访问接口的不同线程来及时地切换预取寄存器。


参考下文描述的实施例,本发明的这些和其它方面将会得以说明。
图1示出了根据第一实施例的数据处理系统的基本体系结构;图2示出了图1中的控制器的基本设置的框图;图3示出了图2中的缓冲存储器BM的映射的基本表示;以及图4示出了根据第二实施例的图1中的控制器的基本设置。
具体实施例方式
图1示出了根据第一实施例的数据处理系统的基本体系结构。至少一个处理器PROC通过系统总线B与控制器CU相连。控制器CU可以与至少一个外设PD相连。控制器CU对处理器PROC与外设PD之间的通信进行管理和控制。
图2示出了图1中的控制器的基本设置的框图。控制器CU包括一般接口GI,用于把控制器与处理器PROC相连(例如通过系统总线B)。控制器还包括缓冲存储器BM、存储管理单元MMU、存储判决器(MA)和外设接口PDI。具有一般接口GI的控制器允许控制器与不同的处理器相连作为存储映射资源。存储管理单元MMU的使用使得能够通过一般接口GI来访问内部缓冲存储器BM。存储管理单元MMU还用于实现缓冲存储器的虚拟分段,能够根据多任务环境中不同任务的请求来进行存储体切换。
图3示出了图2中的缓冲存储器BM的映射的基本表示。这里,64KRAM的缓冲存储器BM被映射或分段为4个存储体C0、C1、C2和C3。通过把缓冲存储器BM映射到4个不同的存储体C0-C3,同一个物理存储器SRAM在处理器PROC看来是不同的部分。为了对64K RAM进行寻址,需要16比特的地址A15,0。根据第一实施例,处理器PROC上处理的每一个线程T0-T3都与缓冲存储器BM的存储体C0-C3中的一个存储体相关联。如果处理器PROC对4个线程T0-T3进行处理,则4个存储体可以与地址范围400-7FC、800-1BFC、1C00-4BFC和4C00相对应,即4个存储体C0-C3在内部被映射到同一个物理存储器。可以把与哪个线程T0-T3和哪个存储体C0-C3相关联有关的信息编码为2个比特。因此,提供了附加的地址线A17/16(2比特),从而两个附加地址线的具体值0,0;0,1;1,0;1,1分别代表4个存储体C0-C3。
图4示出了根据第二实施例的图1中的控制器的基本设置。控制器包括缓冲存储器BM;存储判决器MA;存储管理单元MMU;线程寄存器TR;预取寄存器Addr_0、Addr_1、Addr_2和Addr_3;FIFO FIFO0-3;以及解码器DEC。解码器DEC与处理器PROC的接口相连,存储判决器MA与外设的接口相连。这里,仅对解释本发明基本原理所需的单元进行明确的示出。然而,控制器还可以包括其它单元。
预取寄存器Addr_0、Addr_1、Addr_2和Addr_3以及FIFO用于减小缓冲存储器BM的读取访问等待时间,并进行设置从而缓冲存储器BM中的每一个存储体C0-C3都具有专用预取寄存器Addr_0、Addr_1、Addr_2和Addr_3。存储在线程寄存器TR中的4个存储体的2比特地址用于把线程之一映射到根据图3所述的4个存储体C0-C3中的一个存储体。因此,2比特地址为控制器提供了与哪一个线程T0-T3正在访问缓冲存储器BM有关的明确指示。换句话说,每一个线程访问按照2比特地址的指示来访问缓冲存储器BM中的不同扇区或存储体。地址位0至15用于指示缓冲存储器BM中的地址,地址位16-17指示缓冲存储器BM中的不同扇区或存储体。因此,如果对存储在线程寄存器TR中的地址位16和17进行检查,那么控制器将会在不知道处理器或处理器上的处理的情况下,知晓哪一个线程正在访问缓冲存储器。
在下文中,对根据第一和第二实施例的数据处理系统中的多线程处理的示例(具体为4个线程)进行描述。第一至第四线程T0-T3分别使用地址寄存器Addr_0至Addr_3。缓冲存储器BM占据了全部存储映射系统(即共享存储器)中的256K(起始地址0x2000 0000,结束地址0x2003 FFFF)。如上文所述,这个缓冲存储器空间被分为4个存储体,即C00x2000 0000至0x2000 FFFF(64K)、C10x2001 0000至0x2001FFFF(64K)、C20x2002 0000至0x2002 FFFF(64K)和C30x20030000至0x2003 FFFF(64K)。
处理开始于从地址0x2001 0400起对缓冲存储器BM进行访问的第一线程T0,因此这个地址被写入预取寄存器Addr_0。根据这个地址,解码器确定第一线程T0访问第一存储体C0,并从与第一存储体C0相关的FIFO 0中提取数据。由此递增地址寄存器Addr_0,从而地址寄存器中的内容总是指示要读取的下一位置。例如,如果在第一线程T0正在访问地址0x2000 0408时出现中断,那么处理器切换至在地址0x20010800处对缓冲存储器进行访问的第二线程T1,并把地址0x2001 0800写入第二地址寄存器Addr_1。第二线程T1等待,直到各自的数据被预取到FIFO 1中。解码器DEC确定第二线程T1正在访问第二存储体C1(地址线A17/16的值已经改变),并从与第二存储体C1相关的FIFO 1中提取各个数据。由此递增第二地址寄存器。在第二线程T1完成对缓冲存储器的访问之后,处理器PROC切换回到第一线程T0。由于地址线A17/A16的值已经改变,根据存储在线程寄存器TR中的不同的值来检测处理器PROC所进行的线程切换。因此,由于随后的数据在先前(即中断前)已经被预取,所以再次选择第一地址寄存器Addr_0作为预取寄存器,以及第一线程T0可以继续访问与第一个存储体C0相关的FIFO 0而不需要等待预取时间段。
上述控制器或接口可以用于像便携式数字助理PDA、移动电话、数字摄像机、便携式存储设备等的外设中,作为与主机交换数据的接口。然而,这些外设也可以包括不需要主机而与彼此进行通信的控制器或接口,其中每一个外设包括各自的接口。这些接口可以是IEEE1394控制器、USB控制器、调制解调器控制器等。
虽然在上文的实施例中仅描述了4个存储体和4个线程,应当注意的是同样可以使用任意其它数目的线程。然而,对于USB接口来说,4个存储体是优选的。通过允许两个或多个线程共享存储体及其相应的线程寄存器,在处理器能够处理多于存储体数的线程数的情况下,允许进行适当的降级。
上述概念的唯一缺点是需要比实际的物理存储器更多的地址空间。
注意的是,本发明的保护范围不限于这里描述的实施例。本发明的保护范围不受权利要求中的附图标记的限制。词“包括”不排除权利要求中提及部分之外的其它部分。元件前的冠词不排除多个所述元件。用于形成本发明一部分的装置可以由专用硬件来实现,或是由可编程通用处理器来实现。本发明在于每一个新的特征或特征的组合。
权利要求
1.一种基于多线程操作系统的数据处理系统,包括至少一个处理器(PROC),用于基于多线程(T0-T3)对数据进行处理;至少一个控制器单元(CU),用于控制所述至少一个处理器(PROC)与外设(PD)之间的通信,其中所述外设与所述至少一个控制器单元(IU)相连,所述至少一个控制器单元(CU)包括至少一个缓冲存储器(BM),用于对来自与所述至少一个控制器单元(CU)相连的所述外设(PD)的数据进行缓冲;以及至少一个存储管理单元(MMU),通过把所述至少一个缓冲存储器(BM)映射到N个存储体(C0-C3)来管理对所述至少一个缓冲存储器(BM)的访问,其中每一个存储体都具有专用预取寄存器(Addr_0-Addr_3),把所述多线程(T0-T3)中至少一个线程映射到所述N个存储体中的一个存储体和该存储体的专用预取寄存器(Addr_0-Addr_3)。
2.根据权利要求1所述的数据处理系统,还包括线程寄存器(TR),用于存储线程标识信息。
3.根据权利要求2所述的数据处理系统,其中所述线程标识信息被编码在附加的地址线(A17/16)中。
4.一种控制器单元(CU),用于在基于多线程操作系统的数据处理环境中,对至少一个处理器(PROC)与外设(PD)之间的通信进行控制,其中所述外设(PD)与所述至少一个控制器单元(IU)相连,所述控制器单元(CU)包括至少一个缓冲存储器(BM),用于对来自与所述至少一个控制器单元(CU)相连的所述外设(PD)的数据进行缓冲;以及至少一个存储管理单元(MMU),通过把所述至少一个缓冲存储器(BM)映射到N个存储体(C0-C3)来管理对所述至少一个缓冲存储器(BM)的访问,其中每一个存储体都具有专用预取寄存器(Addr_0-Addr_3),以及把所述多线程(T0-T3)中至少一个线程映射到所述N个存储体中的一个存储体和该存储体的专用预取寄存器(Addr_0-Addr_3)。
5.一种控制方法,用于在基于多线程操作系统的数据处理环境中,对至少一个处理器(PROC)与外设(PD)之间的通信进行控制,其中所述外设(PD)与所述至少一个控制器单元(CU)相连,所述方法包括步骤基于多线程(T0-T3)来对数据进行处理;对来自与所述至少一个控制器单元(CU)相连的所述外设(PD)的数据进行缓冲;以及通过把所述至少一个缓冲存储器(BM)映射到N个存储体(C0-C3)来管理对所述至少一个缓冲存储器(BM)的访问,其中每一个存储体都具有专用预取寄存器(Addr_0-Addr_3),以及把所述多线程(T0-T3)中至少一个线程映射到所述N个存储体中的一个存储体和该存储体的专用预取寄存器(Addr_0-Addr_3)。
全文摘要
本发明涉及一种基于多线程操作系统的数据处理系统。所述数据处理系统包括至少一个处理器(PROC),用于基于多线程对数据进行处理;至少一个控制器单元(CU),用于控制所述至少一个处理器(PROC)与外设(PD)之间的通信,其中所述外设与所述至少一个控制器单元(CU)相连。所述至少一个控制器单元(CU)包括至少一个缓冲存储器(BM),对来自与所述至少一个控制器单元(CU)相连的所述外设(PD)的数据进行缓冲;以及至少一个存储管理单元(MMU),通过把所述至少一个缓冲存储器(BM)映射到N个存储体(C0-C3)来管理对所述至少一个缓冲存储器(BM)的访问,其中每一个存储体都具有专用预取寄存器(Addr_0-Addr_3)。把所述多线程(T0-T3)中至少一个线程映射到所述N个存储体(C0-C3)中的一个存储体和该存储体的专用预取寄存器(Addr_0-Addr_3)。
文档编号G06F12/08GK101040255SQ200580033360
公开日2007年9月19日 申请日期2005年7月22日 优先权日2004年8月3日
发明者奇·Y·恩吉, 尼蒂·S·卡布拉 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1