用于通用串行总线及类似应用的直接存储器存取控制器制造技术

技术编号:2857584 阅读:215 留言:0更新日期:2012-04-11 18:40
一种电路结构,包括:(a)直接存储器存取(DMA)控制电路(38),配置成在至少一个DMA通道(24)上传递数据,和(b)DMA计数寄存器(54),配置成用于存储计数值,该计数值控制在DMA通道(24)上的数据传输的长度,其中DMA控制电路(38)被配置成有选择地使DMA计数寄存器(54)失效和独立于DMA计数寄存器(54)执行数据传输。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般涉及存储器访问和传输,特别涉及直接存储器存取(DMA)控制器。
技术介绍
在计算机或者其他电子系统中的数据传输经常是这种系统性能中的一个综合因素。不管计算机或者电子设备的中央处理单元(CPU)处理数据能有多快,如果数据不能以足够快的方式向CPU或从CPU通信,则系统性能肯定受损。一直用来改善数据传输性能的一种技术被称为直接存储器存取(DMA)。DMA使用一个专用控制器或者电路独立于CPU来处理数据传输,从而在数据的传输操作期间释放CPU以处理其他任务。通常,DMA用于在存储器和外围设备或输入/输出(I/O)设备诸如扩展卡、网络端口、存储设备等之间传输数据。常规DMA控制器通常很少需要CPU的照料以处理数据操作。通常,需要CPU来使DMA控制器初始化以处理一次特定的传输操作,例如通过指定操作的源和目的地和要传输的数据量。DMA控制逻辑通常包括一个字节计数器,它由CPU初始化以设定在一个操作中要传输的数据的总字节数。一旦一个数据传输操作由CPU起动后,DMA控制逻辑就将开始传输数据,而不需CPU的任何进一步干预。在数据传输操作期间,随着DMA控制逻辑传输每一数据字节,它将字节计数器减量,直到字节计数器达到零。此时,DMA控制逻辑可以给CPU发送一个中断信号,通知CPU数据传输操作已完成。经常使用DMA的许多外围设备依赖于相对简单的协议。一些设备例如是基于字符的设备,它们在有字符可提供时给DMA控制逻辑发送信号。在这种实例中要传输的进入字符数通常是基于规则的(亦即它要么是常数要么是由协议动态定义的)。另一种设备是块设备,这些设备使用固定块大小来给DMA控制逻辑中的字节计数器编程。另外一些外围设备不那样简单。例如,通用串行总线(USB)性能规范定义了用于将外围设备连接到计算机的串行数据传输协议。已开发出来的USB性能规范是用来支持范围宽广的外围设备的,它们包括显示器、音频扬声器、打印机、鼠标、网络适配器、调制解调器等。这些设备都具有不同的能力和和数据传输特征,因此,USB性能规范定义了基于包的接口以便以标准化的方式包封数据来支持实际上是任何类型的外围设备。然而,应该注意,在通过USB总线通信的任何数据包中包含的信息量既非一致的也是不可预测的。另外,基础的USB协议并不简单。例如,在USB 2.0性能规范下,有4个通信协议,称为控制、批量、中断和等时。控制协议支持双向数据传输。中断和等时协议在本质上是周期性的,具有得到保证的交付日程,而等时协议不能被抑制(亦即它是实时协议)。在各个单独端点上持续不变的数据速率可能达到192Mb/s。由于USB协议的几个特别的细微差别,常规DMA控制逻辑不太适合结合到用于USB设备的控制器中。首先,USB设备不容易适合于加载一个字节计数到DMA字节计数器中,并且当字节计数用尽时自动关掉DMA控制逻辑和结束数据传输操作的范例。在USB性能规范下,在单一数据包内接收到的字节数目得不到保证。此外,对于实时的等时协议,消息长度是不相干的,而对于周期性的中断或非周期性的批量和控制协议,在数据被收到时消息长度经常是不知道的。因为无论在一个消息内的总数据字节数还是在一个消息的单一包中的字节数并非总是可预测的,因此常规USB的实现通常作出简化的假设,即以包为基础关掉DMA控制逻辑。然而,通过这样做,CPU所需要的监督量常常增加,从而降低了系统性能。第二,许多CPU太慢以致不能介入某些与USB有关的DMA传输。如上所述,实时等时协议不能被调节,并且支持高达192Mb/s的持续数据速率。在单一USB数据包中可以传输的最大字节数是1024字节,所以在最大持续速率的情况下,USB控制器中的常规DMA控制逻辑对于它所服务的每一高带宽端点平均每43μs被关掉一次。另一方面,Linux操作系统的嵌入实时版本需要大约100条指令和对堆栈进行50次访问以便把程序控制引导到一个中断控制器例程并返回。取决于处理器和存储器总线速度和超高速缓存存储器的大小,该系统的开销通常在2到5μs范围内,而且该开销甚至不包括实际使中断处理器执行的时间。这一开销只代表一个端点,而即使对于双缓存的端点,常规DMA控制逻辑也要求能在17μs内重新起动和完成1024字节的传输,否则会丢失数据。其结果,许多CPU不能可靠介入高带宽等时传输。第三,现代的总线结构经常能够损坏与USB有关的DMA数据内容。具体说,常规DMA控制器是面向字节的,而大多数调制解调器总线结构是面向字的。其结果,如果在一个数据包中接收到的字节数不是总线字大小的倍数的话,则常规DMA控制器执行最后字节的传输时只具有部分有效数据。在该最后字传输中剩余的数据是无效的,这样,如果该数据是指定用于一个块设备(诸如海量存储设备)的,则要求在CPU上执行的软件能保存接收到的包的大小,执行部分字的调整(这可能十分麻烦),进行必需的块溢出调整和每当数据传输操作完成时重新起动DMA控制器。这种开销也正是DMA所要提出的那种CPU开销类型,因此,为了处理与USB有关的DMA传输而要求的CPU监督的程度是不希望的。这样,在DMA控制逻辑的技术中存在特别的需要,它解决常规DMA控制器设计中的上述限制,特别是解决每当这种控制逻辑结合与USB有关的数据传输及其类似传输使用时所产生的缺点。
技术实现思路
本专利技术解决与现有技术关联的这些和其他问题,它通过对DMA控制器提供一系列改进而实现,这些改进可以单独地或者组合地使用来优化DMA控制器以用于不一致的DMA应用,诸如与USB兼容的应用。通过后面会叙述的对DMA控制逻辑各种方式的改进,对于需要来自CPU的监督的量和程度明显减少,这将解放CPU以便与DMA传输操作并发地执行其他操作,从而改善了总的系统性能。根据本专利技术的一个方面,例如,可以有选择地使得用于存储控制在DMA通道上的数据传输长度的计数值的DMA计数寄存器失效,从而当该DMA计数寄存器失效时,DMA控制电路可以独立于该DMA计数寄存器而执行数据传输。根据本专利技术的另一方面,可以把一个端点监视定时器耦合到DMA控制电路并将它配置成如果在预定时间段内DMA通道没有接收到数据的话就产生一个中断。另外,根据本专利技术的再一方面,DMA控制电路可以包含部分字推迟(hold off)功能,以便在最后一个字是一个部分字时延迟对数据包中数据的最后字的传输。另外,当DMA控制电路用于USB应用时,可以把一个USB简档(profile)电路耦合到DMA控制电路并配置为去控制该DMA控制电路的至少一个操作参数以便有选择地优化DMA控制电路使该控制电路与由该USB简档电路所支持的多种USB协议中所选择的一个USB协议一起使用。这些以及其他的表征本专利技术的优点和特征在所附权利要求中叙述,它们形成本专利技术的另一部分。然而,为更好地理解本专利技术和通过它的使用所得到的优点和目的,应该参考附图和伴随的说明事项,其中描述了本专利技术的示范实施例。附图说明图1是包括与本专利技术相一致的DMA控制器的一种装置的方框图。图2是在参考图1的各DMA通道之一所使用的DMA控制器控制逻辑中的主要USB特定部件的方框图。图3是一个流程图,描述由图1的USB驱动器执行的端点初始化例行程序的程序流。图4是一个流程图,描述由图1的USB驱动器执行的中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种电路结构,包括(a)直接存储器存取(DMA)控制电路(38),配置成在至少一个DMA通道(24)上传递数据,和(b)DMA计数寄存器(54),配置成用于存储计数值,该计数值控制在DMA通道(24)上的数据传输的长度,其中DMA控制电路(38)被配置成有选择地使DMA计数寄存器(54)失效和独立于DMA计数寄存器(54)执行数据传输。2.权利要求1的电路结构,进一步包括端点监视定时器(40),它被耦合DMA控制电路(38)并被配置成在一个预定时间段内如果DMA通道(24)未接收到数据则产生一个中断。3.权利要求1的电路结构,其中,DMA控制电路(38)被配置成当在DMA通道(24)上传递数据包时,如果最后字是一个部分字,则延迟该数据包中的数据的最后字的传输。4.权利要求3的电路结构,其中,DMA控制电路(38)被配置成仅当为DMA控制电路(38)选择一个部分字推迟方式时才延迟数据的最后字的传输。5.权利要求1的电路结构,进一步包括错误计数器寄存器(58),它被配置成用于记录在DMA通道(24)上的数据传输期间检测到的错误。6.权利要求1的电路结构,其中,DMA控制电路(38)被配置成在响应接收到关断DMA通道(24)的请求而关断DMA通道(24)之前先完成在DMA通道(24)上正在进行的数据包中的数据传输。7.权利要求6的电路结构,其中,请求关断DMA通道(24)的请求是条件停止请求。8.权利要求1的电路结构,进一步包括字节计数器(36),它被配置成用于累计在DMA通道(24)上传输的数据量。9.权利要求1的电路结构,其中,DMA控制电路(38)可以有选择地工作在计数方式和连续方式,其中,在计数方式中,DMA控制电路(38)起动DMA计数寄存器(54),而在连续方式中,DMA控制电路(38)使DMA计数寄存器(54)失效。10.权利要求9的电路结构,其中,DMA控制电路(38)可以有选择地工作在包结束方式,其中,在包结束方式中DMA控制电路(38)使DMA计数寄存器(54)失效并响应检测到数据包的结束而终止在DMA通道(24)上的数据传输。11.权利要求1的电路结构,进一步包括一个通用串行总线(USB)简档电路(26),它耦合到DMA控制电路(38)并配置成去控制DMA控制电路(38)的至少一个操作参数以便有选择地优化DMA控制电路(38)使其与从受USB简档电路(26)所支持的多个USB协议中所选中的一个USB协议一起使用。12.权利要求1的电路结构,进一步包括一个通用串行总线(USB)端点(28),它耦合到DMA控制电路(38),其中,DMA控制电路(38)被配置成去控制在USB端点(28)和一个可编程电子设备之间的数据传输。13.权利要求1的电路结构,其中,DMA控制电路(38)被配置成在多个DMA通道(24)上传递数据,其中,所述电路结构包括多个分别与多个DMA通道(24)关联的DMA计数寄存器(54),其中,每一DMA计数寄存器(54)被配置成在相关联的DMA通道(24)上执行数据传输期间被DMA控制电路(38)有选择地使其失效。14.包括权利要求1的电路结构的DMA控制器(34)。15.包括权利要求1的电路结构的USB控制器(18)。16.包括权利要求1的电路结构的集成电路。17.一种程序产品,包括一个规定权利要求1的电路结构的硬件定义程序,和一个承载该硬件定义程序的信号承载介质,其中,信号承载介质包括可记录介质和传输介质中的至少一种介质。18.一种使用DMA控制电路(38)在直接存储器存取(DMA)通道(24)上传输数据的方法,所述方法包括(a)通过在控制第一数据传输操作长度的DMA计数寄存器(54)中存储一个计数值来执行第一数据传输操作,和(b)通过使DMA计数寄存器(54)失效来执行在DMA通道(24)上的第二数据传输操作,以使得第二数据传输操作与DMA计数寄存器(54)无关地去执行。19.权利要求18的方法,其中,执行第二数据传输操作包括如果在预定时间段内DMA通道(24)没有接收到数据就使用耦合到DMA控制电路(38)上的端点监视定时器来产生一个中断。20.权利要求18的方法,其中,执行第二数据传输操作包括在DMA通道(24)上传输数据包,和如果最后字是一个部分字则延迟传输数据包中的数据的最后字。21.权利要求18的方法,其中,执行第二数据传输操作包括把在DMA通道(24)上传输数据期间检测到的错误记录到错误计数器寄存器(58)中。22.权利要求18的方法,其中,执行第二数据传输操作包括响应在数据包中的数据的传输完成之前接收到关断DMA通道(24)的请求的接收,从而在关掉DMA通道(24)之前完成在DMA通道(24)上对数据包中的数据的传输。23.权利要求18的方法,进一步包括在执行第一和第二数据传输操作期间在字节计数器(56)中累计在DMA通道(24)上传输的数据量。24.权利要求18的方法,其中,执行第一数据传输操作包括把DMA控制电路(38)配置成以计数方式操作,其中,执行第二数据传输操作包括把DMA控制电路(38)配置成以连续方式操作。25.权利要求24的方法,进一步包括执行第三数据传输操作,其中包括把DMA控制电路(38)配置成以包结束方式操作,和响应检测到数据包结束而终止第三数据传输操作。26.权利要求18的方法,其中执行第一和第二数据传输操作的每一种操作包括向或从一个USB端点(28)传输通用串行总线(USB)数据,该方法进一步包括使用一个USB简档电路(26)去控制DMA控制电路(38)的至少一个操作参数来有选择地优化DMA控制电路(38),以便与从受USB简档电路(26)支持的多个USB协议中选中的一个USB协议一起使用。27.一种电路结构,包括(a)直接存储器存取(DMA)控制电路(38),它被配置为在至少一个DMA通道(24)上传递数据;和(b)端点监视定时器(40),它连接到DMA控制电路(38),并被配置为如果在一个预定时间段内DMA通道(24)没有接收到数据则产生一个中断。28.权利要求27的电路结构,其中,端点监视定时器(40)被配置成响应DMA控制电路(38)接收到数据而被复位。29.权利要求27的电路结构,其中,DMA控制电路(38)被配置...

【专利技术属性】
技术研发人员:L·C·戈夫B·罗斯顿
申请(专利权)人:皇家飞利浦电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1