追踪数据流处理器的进展的制作方法

文档序号:6499530阅读:177来源:国知局
专利名称:追踪数据流处理器的进展的制作方法
背景技术
PCI Express是试图与PCI(外设部件互连)软件兼容的I/O(输入/输出)互连。在试图与PCI保持一定程度兼容性的同时,PCI Express提供了很多PCI中没有或者不完全支持的特征。对于等时(isochronous)数据传输的支持就是这样一个特征。对等时数据传输的支持可以帮助多媒体应用,例如,音频和/或视频回放应用获得高品质的效果。然而,等时数据传输的PCIExpress实现放宽了一些严格的PCI排序(order)规则。所以经由PCIExpress通道等时传输数据的软件应用可能需要利用不同于用于追踪常规PCI数据传输进展的技术来追踪这样的传输进展。


此处描述的本发明是以示例的形式而非限制性形式在附图中描述的。为了描述的简单与清晰,图中所示要素并不一定是按照比例绘制的。举例来说,为了清晰起见,一些要素的尺寸可能相对于其他要素被放大了。再者,在适当的考虑下,图中重复出现的标号是用来指示对应的或类似的要素。
图1描述了具有音频控制器的计算设备的实施方案。
图2描述了与系统存储器的缓冲区和缓冲区描述符(descriptor)列表(list)相关的音频控制器的实施方案。1.
图3描述了在系统存储器中缓冲区与编解码器(codec)之间传输数据的方法的实施方案。
详细描述以下描述了数据流向(Data Streaming)技术。在以下的描述中,阐述了诸如实现逻辑实现、操作码、指定操作数的方式、资源划分/共享/复制的实现、系统组件(component)的类型和它们间的相互关系、以及逻辑划分/整合抉择等很多具体的细节,以提供对本发明的更透彻的理解。然而,本领域内的技术人员将会意识到,无需使用这些具体的细节可以实现本发明。此外,为了不模糊本发明,控制结构、门级电路和完整的软件指令序列没有详细示出。本领域普通技术人员,利用所包括的描述,能够在不需非常规试验(undueexperimentation)的情况下实现适当的功能。
在说明书中提及的“一个实施方案”、“实施方案”、“示例性的实施方案”等等,表明所述实施方案可以包括具体特征、结构和特性,但每一个实施方案并不一定要包括所述具体特征、结构和特性。而且这些短语不一定是指相同的实施方案。再者,在描述与实施方案相关的具体特征、结构和特性时,无论是否被明确地描述,认为本领域内的技术人员在其知识范围内是能实现与其他实施方案相关的这些特征、结构和特性的。
本发明的实施方案可以以硬件、固件、软件或它们的任何组合形式实现。本发明的实施方案也可以用能够被一个或更多个处理器读取和执行、存储在机器可读介质中的指令来实现。机器可读介质可以包括任何用于存储或传输可被机器(如计算设备)读取的信息的机制。举例来说,机器可读介质可以包括只读存储器(ROM);随机访问存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声或其他形式的传播信号(如载波、红外信号、数字信号等)以及其他介质。
计算设备的实施方案如图1所示。计算设备可能包括一个或更多个经由处理器总线104与芯片组102耦合的处理器100的。芯片组102可以包括一个或更多个集成电路封装(package)或芯片,所述集成电路封装或芯片将处理器100耦合到主存储器或者系统存储器106、音频控制器108和/或计算设备的其他组件110。具体来说,芯片组102可以包括一个或更多个设备接口112,所述设备接口112支持通过一条或更多条总线114送到和/或传自计算设备的其他组件110(例如BIOS固件、键盘、鼠标、存储设备、网络设备等)的数据传输。
芯片组102还可以包括经由存储器总线118访问系统存储器106的存储控制器116。存储控制器106可以响应于对与处理器100、音频控制器108和计算设备的其他组件110相关联的存储器事务访问系统存储器106。此外,系统存储器106还可以包括提供可寻址存储位置(location)的各种存储设备,存储控制器116可以从中读取数据和/或将数据写入其中。具体来说,系统存储器106可以包括一个或更多个不同类型的存储器设备,例如DRAM(动态随机访问存储器)设备、SDRAM(同步DRAM)设备、DDR(双倍数据速率)SDRAM设备或其他存储器设备。
计算设备还可以包括经由音频总线122耦合到音频控制器108的一个或更多个编解码器120。编解码器120可以集成到音频控制器108和/或芯片组102中,也可以安装到计算设备的主板上,也可以安装到与计算设备耦合的附加卡(add-in card)上,和/或成为诸如坞站(docking station)、音频混音器等耦合到计算设备的接口端口(未示出)的外部设备的一部分。此外,编解码器120还可以与计算设备中可产生和/或处理数据流的声卡、调制解调器、传真设备、电话设备、音频捕捉设备、视频捕捉设备等相关联。
音频控制器108可以使数据在编解码器120与系统存储器106的缓冲区124之间流动,所述缓冲区120由存储在系统存储器106中的一个或更多个缓冲区描述符列表(BDL)126来定义。音频控制器108也可以更新系统存储器106的缓冲区中的直接存储器访问(DirectMemory Access,DMA)位置(Direct Memory Access Position in Buffer,DPIB)结构128,以反映音频控制器108在音频控制器108与一个或多或更多个缓冲区124之间传输数据的进展。
音频控制器108可以集成到芯片组102中。但是,在所述的实施方案中,音频控制器108是与芯片组102分离的。在这样的实施方案中,芯片组102与音频控制器108可以各包括一条或更多条支持经由等时通道132的等时数据传输和/或经由非等时通道134的非等时数据传输的总线接口130。在一个实施方案中,一条或更多条等时通道132将音频控制器108的总线接口130耦合到芯片组102的总线接口130来支持彼此之间的等时数据传输。在一个实施方案中,每个总线接口130可以实现与PCI Express兼容的接口,所述接口支持等时虚拟通道。但是,总线接口130可以实现另外的和/或可替换的接口协议。此外,芯片组102和总线接口130还可以实现类似于比传统的PCI排序规则要更加宽松的PCI Express排序规则的排序规则。具体来说,不同于PCI排序规则,供处理器读取的完成数据(completion data)不会推动对系统存储器106的等时读和/或写。此外,中断也不会推动对系统存储器106的等时读和/或写。但是,在一个实施方案中,排序规则保证了等时写不会经由相同的通道传递先前发布的等时读/或写。帮我弄清楚(FIX-ME)这些排序规则准确吗(ARE THESE ORDERING RULES ACCURATE)?音频控制器108还可以包括用于将编解码器120耦合到音频控制器108的音频总线122上的音频总线接口136。在一个实施方案中,音频总线接口136可以经由音频总线122的一个或更多个点对点串行输入链路接收来自于编解码器120的数据帧。音频总线接口136还可以经由音频总线122的广播串行输出链路将数据帧发送到一个或更多个编解码器120,所述编解码器120根据不同的格式对流进行编码和/或解码。
现在参照图2,音频控制器108可以包括一个或更多个BDL DMA控制器138、DPIBDMA控制器140、一个或更多个输入DMA控制器142,以及一个或更多个输出DMA控制器144。在一个实施方案中,每一个输入DMA控制器142可以被处理器100编程,以分别使得从一个或更多个编解码器120接收到的数据流到系统存储器106的缓冲区124。类似地,每个输出DMA控制器142可被处理器100编程,以分别使得来自系统存储器106的缓冲区124的数据流到一个或更多个编解码器120。
每个BDL DMA控制器138可以从系统存储器106读取缓冲区描述符列表126,并且给适当的DMA控制器142、144提供缓冲区描述符列表。每个缓冲区描述符列表126可以定义缓冲区124的很多缓冲区段(segment)146,其中对应的输出DMA控制器142、144可从所述缓冲区段146中读取数据或者对应的输入DMA控制器可以将数据写入所述缓冲区段146。缓冲区描述符列表126的每一个描述符148可以包括标识缓冲区124的缓冲区段146开始端的基址(base)和标识缓冲区段146末端的长度。在一个实施方案中,DMA控制器142、144可以把它们各自的缓冲区124作为环状或者循环的缓冲区。因此,在到达它们各自缓冲区124的末端时,DMA控制器142、144可以绕回(wrap-around)或返回它们对应的缓冲区124的开始端。
音频控制器108还可以包括用于每一个输入DMA控制器142和输出DMA控制器144的分别的(separate)缓冲区长度寄存器150、分别的缓冲区中DMA位置(DPIB)计数器152以及分别的缓冲区中链路位置(Link Position In Buffer,LPIB)计数器154。处理器100和/或BDL DMA控制器138可以在每个DMA控制器142、144的缓冲区长度寄存器150中存储对应的缓冲区124的长度。每个输入DMA控制器142可以递增其DPIB计数器152以便DPIB计数器152包含的计数与输入DMA控制器142已向缓冲区124传输的字节(byte)数相等。另外,每个输入DMA控制器还可以递增其LPIB计数器154以便其LPIB计数器154包含的计数与输入DMA控制器142从其输入链路中已接收到的字节数相等。类似地,每个输出DMA控制器144可以递增它的DPIB计数器152以便DPIB计数器152包含的计数与输出DMA控制器144从其缓冲区124中已传输出的字节数相等。每个输出DMA控制器还可以递增它的LPIB计数器154以便LPIB计数器154包含的计数与输出DMA控制器144已传输到音频总线122的输出链路的字节数相等。
一旦DPIB计数器152和LPIB计数器154的计数指示已经到达了各自缓冲区124的末端时,它们可以清除自身或者复位到初始值(比如0、对应的缓冲区长度等等)。在一个实施方案中,一旦它们的计数与对应的缓冲区长度寄存器150的缓冲区长度到达预定的关系时,DPIB计数器152和LPIB计数器154可以清除自身或者以其他方式复位到初始值。在另一个实施方案中,DPIB计数器152和LPIB计数器154可以响应于计数器152、154的上溢(overflow)和下溢(underflow),清除自身或者以其他方式复位到初始值。另外,LPIB计数器154还可以这样来实现,从而使处理器能够读取LPIB计数器154的计数,但是不能写或者更新LPIB计数器154的计数。
音频控制器还可以包括刷新(update)计数器156和刷新率(update rate)寄存器158。在一个实施方案中,刷新计数器156可以响应于刷新计数器156的计数递增到超过存储在刷新率寄存器158中的值,产生上溢信号。响应于该上溢信号,刷新计数器156的计数可以被清除或置为0。在另一个实施方案中,刷新计数器156可以响应于刷新计数器156的计数递减到超过0,产生下溢信号。响应于下溢信号,刷新计数器156的计数可以被置为存储在刷新率寄存器158中的值。
DPIB DMA控制器140可以使用下溢/上溢信号来确定什么时候更新DPIB结构128。如图2所示,DPIB结构128可以包括用于每个输入DMA控制器142和每个输出DMA控制器144的DPIB字段(field)160。DPIB结构128还可以包括被保留作为将来可能使用的保留字段162。在一个实施方案中,DPIB结构128包括系统存储器106的连续的部分,并且DPIB结构的每个字段160、162包括32位(bit)。
图3示出了在缓冲区124和编解码器120之间引流(stream)或者传输数据的方法的实施方案。在方框200中,处理器100可以给流分配缓冲区124,并且可以将标识己分配缓冲区124的缓冲区段146的缓冲区描述符列表126存储在系统存储器106中。在方框202中,处理器100可以将音频控制器108的DMA控制器142、144分配给流,并且可以配置音频控制器108来使数据流动。在一个实施方案中,处理器100可以给音频控制器108提供已分配缓冲区124的长度、缓冲区描述符列表126的基址、要传输的流的流标识符、用于使数据流动的DMA控制器142和144的DMA标识符、一个或更多个用于在数据传输中涉及的编解码器120的编解码器标识符以及刷新率寄存器158的更新值。
在方框204中,音频控制器108可基于接收自处理器100的信息为流配置一个或更多个DMA控制器138、140、142、144。在一个实施方案中,音频控制器108可以基于接收到的缓冲区长度更新已分配的DMA控制器142、144缓冲区的长度寄存器150,可以初始化已分配的DMA控制器142、144的DPIB计数器和LPIB计数器154,并且可以给已经分配的DMA控制器142、144的BDL DMA控制器138提供已分配缓冲区124的缓冲区描述符列表126的基址和已分配DMA控制器142、144的DMA描述符。
在方框206中,BDL DMA控制器138可以从系统存储器106中读取缓冲区描述符列表126。BDL DMA控制器138还可以提供缓冲区描述符列表126给与接收到的DMA控制器相关联的DMA控制器142、144,和/或可以配置DMA控制器142、144根据(per)读取的缓冲区描述符列表126来传输数据。接着在方框208中,音频控制器108可以根据缓冲区描述符列表126在缓冲区124与编解码器120之间传输数据。具体来说,对于输入流,音频总线接口136可以经由音频总线122的输入链路从编解码器120接收流描述符和相关的数据。音频总线接口136可基于流描述符将数据路由(route)到适当的输入DMA控制器142,并且输入DMA控制器142可以经由等时通道132将数据写到已分配的缓冲区124。类似地,输出DMA控制器144可以经由等时通道132从如缓冲区描述符126所定义的已分配缓冲区124中读取数据。音频总线接口136可以从输出DMA控制器144接收数据,并且可以经由音频总线122的输出链路将数据以帧的形式传输到适当的编解码器120中。
方框210中,响应于经由音频总线接口136发送和接收数据,DMA控制器142、144可以更新各自的LPIB计数器154来反映在音频总线122的链路上的传输进展。在一个实施方案中,DMA控制器142、144可根据自从上次更新以来在链路上传输的字节数来递增其LPIB计数器154。此外,在方框212中,DMA控制器142、144还可以基于其链路上传输的数据来更新刷新计数器156。在一个实施方案中,每个DMA控制器142、144可以根据自从上次更新以来在其对应的链路上传输的帧数来更新刷新计数器156的计数,从而使刷新计数器156追踪在音频总线122上传输的帧数。
在方框214中,响应于从缓冲区124读取数据或将数据写入缓冲区124,DMA控制器142、144可以更新其各自的DPIB计数器152,来反映在缓冲区124与音频控制器108之间进行数据传输的过程中DMA控制器142、144已取得的进展。在一个实施方案中,DMA控制器142、144可以根据自从上次更新以来缓冲区124与音频控制器108之间传输的字节数来更新其DPIB计数器512。
在方框216中,基于刷新计数器156的计数,DPIB DMA控制器140可以确定是否要更新系统存储器106中的DPIB结构128。在一个实施方案中,DPIB DMA控制器140可以响应于刷新计数器156的上溢和/或下溢信号,确定更新存储在系统存储器106中的DPIB结构128。在另一个实施方案中,DPIB DMA控制器140可以响应于确定刷新计数器156的计数与存储在刷新率寄存器158中的更新值具有预定的关系(比如说相等),确定更新DPIB结构128。方框218中,响应于确定要更新DPIB结构128,DPIB DMA控制器140可以经由被DMA控制器142、144使用的相同的虚拟通道将DPIB计数器152的当前值写入系统存储器106中DPIB结构128的各自的DPIB字段160。
由于总线接口130维持经由虚拟通道的写排序,处理器100可以从DPIB结构128确定音频控制器108等时地向系统存储器106中的缓冲区124传输数据和/或从系统存储器106中的缓冲区124传输数据的进展。此外,处理器100还可以读取LPIB计数器154来确定音频控制器108经由音频总线122的链路传输数据的进展。
在方框220中,音频控制器108可以确定DMA控制器142、144是否到达了其缓冲区124的末端。在一个实施方案中,音频控制器108响应于DPIB计数器156的上溢和/或下溢信号,可以确定DMA控制器142、144到达了其缓冲区的末端。在另一个实施方案中,音频控制器108响应于确定DPIB计数器152的计数与其对应的缓冲区长度寄存器150中存储的缓冲区长度具有预定的关系,确定DMA控制器142、144到达了其缓冲区124的末端。方框222中,DMA控制器142、144响应于确定到达缓冲区124末端,可以复位或初始化其DPIB计数器152和LPIB计数器154。DMA控制器142、144还可以根据其缓冲区描述符列表126返回缓冲区124的开始端。然后DMA控制器142、144可以返回方框208,以继续在其缓冲区124与音频控制器108之间传输数据。
参照示例性的实施方案描述了本发明的某些特征。但是所述描述不想要被视为限制性的。本发明所属领域内的技术人员将会清楚,示例性实施方案的各种修改以及本发明的其他实施方案,被视为落在本发明的精神和范围之内。
权利要求
1.一种在包括系统存储器和编解码器的计算设备的控制器中的方法,所述方法包括通过所述控制器的第一接口从所述系统存储器的缓冲区读取数据,通过所述控制器的第二接口向所述编解码器传输所述数据,追踪所述缓冲区中的位置,所述控制器已从所述位置读取所述数据,以及通过所述第一接口向所述系统存储器写入值,以指示所述缓冲区中的所述位置。
2.如权利要求1所述的方法,其中读取操作包括通过所述第一接口等时地接收所述数据。
3.如权利要求1所述的方法,还包括追踪通过所述第二接口将所述数据传输到所述编解码器的进展。
4.如权利要求1所述的方法,其中从所述缓冲区读取所述数据的操作包括根据定义所述缓冲区的缓冲区描述符列表读取数据。
5.如权利要求4所述的方法,其中从所述缓冲区读取所述数据的操作还包括响应于到达所述缓冲区的末端,返回所述缓冲区的开始端。
6.如权利要求1所述的方法,还包括在将所述值写入所述系统存储器之前,基于通过所述第二接口传输的所述数据,确定更新所述系统存储器中的所述值。
7.一种在包括系统存储器和编解码器的计算设备的控制器中的方法,所述方法包括通过所述控制器的第一接口从所述编解码器接收数据,通过所述控制器的第二接口将所述数据写入所述系统存储器的缓冲区,追踪所述缓冲区中的位置,所述控制器已向所述位置写入所述数据,以及通过所述第二接口向所述系统存储器写入值,以指示所述缓冲区中的所述位置。
8.如权利要求7所述的方法,其中将所述数据写入所述缓冲区的操作包括通过所述第二接口向所述缓冲区等时地传输所述数据。
9.如权利要求7所述的方法,还包括追踪通过所述的第一接口从所述编解码器接收所述数据的进展。
10.如权利要求7所述的方法,其中将所述数据写入所述缓冲区的操作包括根据定义所述缓冲区的缓冲区描述符列表写入数据。
11.如权利要求10所述的方法,其中将所述数据写入所述缓冲区的操作还包括响应于到达所述缓冲区的末端,返回所述缓冲区的开始端。
12.如权利要求7所述的方法,还包括在将所述值写入系统存储器之前,基于通过所述第一接口接收的所述数据,确定更新所述系统存储器中的所述值。
13.一种系统,包括处理器,包括缓冲区和缓冲区位置的系统存储器,通过第一总线耦合到所述系统存储器的音频控制器,以及通过第二总线耦合到所述音频控制器的编解码器,其中所述音频控制器通过所述第一总线和所述第二总线在所述缓冲区和所述编解码器之间传输数据,并且通过所述第一总线来更新所述缓冲区位置以指示缓冲区中与所述缓冲区和所述音频控制器之间的所述音频控制器传输有关的位置。
14.如权利要求13所述的系统,其中所述音频控制器通过等时通道将所述数据经过所述第一总线传输,并且通过所述等时通道更新所述缓冲区位置。
15.如权利要求13所述的系统,其中所述音频控制器将所述数据经过所述第一总线的链路传输,并且基于经过所述链路传输的数据更新所述音频控制器的链路位置计数器。
16.如权利要求13所述的系统,其中所述系统存储器还包括定义所述缓冲区的缓冲区描述符列表,并且所述音频控制器基于所述的缓冲区描述符列表传输所述数据。
17.如权利要求13所述的系统,其中所述音频控制器通过所述第一总线等时地从所述缓冲区读取所述数据,并且通过所述第二总线将所述数据传输到所述编解码器。
18.如权利要求13所述的系统,其中所述音频控制器通过所述第二总线从所述编解码器接收所述数据,并且通过所述第一总线将所述数据等时地写入所述缓冲区。
19.一种控制器,包括第一直接存储器访问控制器,所述第一直接存储器访问控制器通过到系统存储器的第一接口和到编解码器的第二接口在所述系统存储器和所述编解码器之间传输数据,以及缓冲区中位置控制器,所述缓冲区中位置控制器通过所述第一接口更新所述系统存储器中的位置值,以指示所述直接存储器访问控制器在所述缓冲区中的位置。
20.如权利要求19所述的控制器,还包括第二直接存储器访问控制器,所述第二直接存储器访问控制器,用来从所述系统存储器读取定义所述系统存储器中缓冲区的缓冲区描述符列表,以及配置所述第一直接存储器访问控制器,以根据所述的缓冲区描述符列表在所述缓冲区与所述编解码器之间传输所述数据。
21.如权利要求19所述的控制器,还包括用于维持计数的链路计数器,所述计数指示所述第一直接存储器访问控制器经过所述第二接口传输所述数据的进展。
22.如权利要求19所述的控制器,还包括用于维持计数的缓冲区位置计数器,所述计数指示所述第一直接存储器访问控制器经过所述第一接口传输所述数据的进展。
23.如权利要求19所述的控制器,其中所述第一直接存储器访问控制器将所述数据等时地写入所述缓冲区。
24.如权利要求19所述的控制器,其中所述的第一直接存储器访问控制器从所述缓冲区等时地读取所述数据。
25.一种包括多条指令的机器可读介质,响应于所述指令被执行,导致计算设备配置音频控制器来使数据在所述计算设备的系统存储器中的缓冲区和所述计算设备的编解码器之间流动,配置所述音频控制器来基于所述缓冲区与所述编解码器之间传输数据的进展来更新所述系统存储器中的缓冲区位置;以及从所述系统存储器中读取所述缓冲区位置来确定所述音频控制器使所述数据在所述缓冲区和所述音频控制器之间流动的进展。
26.如权利要求25所述的机器可读介质,其中响应于所述多条指令的执行,还导致所述计算设备从所述音频控制器读取链路位置,以确定所述音频控制器使所述数据在所述编解码器与所述音频控制器之间流动的进展。
27.如权利要求25所述的机器可读介质,其中响应于所述多条指令的执行,还导致所述计算设备在所述系统存储器中分配所述缓冲区,并且将缓冲区描述符列表存入所述系统存储器中,以及配置所述音频控制器,以根据所述缓冲区描述符列表传输所述数据。
28.如权利要求25所述的机器可读介质,其中响应于所述多条指令的执行,还导致所述计算设备在所述系统存储器中分配缓冲区中位置结构,以及进行配置,以利用所述缓冲区位置更新所述缓冲区中位置结构。
全文摘要
描述了用于使数据在编解码器和系统存储器中的缓冲区之间流动以及用于在系统存储器中维持指示缓冲区当前位置的数值的机器可读介质、方法和设备。在一些实施方案中,音频控制器经由具有松散型排序规则的等时通道使数据流到系统存储器中的缓冲区并且通过经由所述等时通道对系统存储器的写操作来更新指示当前位置的值。
文档编号G06F13/28GK1882927SQ200480034078
公开日2006年12月20日 申请日期2004年11月10日 优先权日2003年11月25日
发明者佐哈尔·博金, 布伦特·沙特兰德, 小阿瑟·亨特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1