实时音频处理的内存分配 本发明涉及为实时音频处理进行的内存分配。具体来说,本发明涉及为实时音频数据储存进行的DRAM存储体切换。
实时音频信号处理要求存取时间要快。典型的音频系统中,有通用处理器和专用信号处理器(DSP)。通用处理器也叫主处理器,它可以是任何通用中央处理单元(CPU),例如个人电脑(PC)中的CPU。主处理器通常执行数据储存、用户接口、网络控制、以及其它通用命令和内部管理功能。主处理器也交接到外围设备,诸如串行通讯、磁盘控制器(例如硬盘控制器)。DSP通常执行信号处理功能,处理实时音频数据,例如数字过滤。若干个独立的存储体既可以被主处理器访问,也可以被SCSI控制器之类的其它直接内存存取(DMA)设备访问。
实时音频信号处理通常有三种基本操作模式:录音、放音和编辑。
在录音模式期间,音频数据从音频输入通道发出,被DSP储存在随机存取存储器(RAM)中。随后,音频数据通过SCSI控制器被转送到硬盘驱动器之类的存储设备中。
在放音模式期间,在硬盘驱动器中储存的音频数据首先通过SCSI控制器被转送到随机访问存储器(RAM)中。然后,DSP访问RAM,以处理音频数据,并输出到适当的音频输出通道。
RAM的组织结构一般是可以被主处理器和SCSI控制器访问的若干个存储体。传统技术采用的方法是,存储数据时,要在一个存储体存满数据后再向下一个存储体存储数据。然而,如果某存储体正忙于接受数据,DSP将不能立即访问它,这就导致处理延迟。
因此,有必要提供一种方法和设备,有效地为实时音频信号处理进行内存分配。
本发明披露了一种在具有第一处理器和第二处理器的系统中分配N个音频通道的实时音频数据的方法。该方法包括的步骤是:(1)提供P个存储体,其中每个存储体均可被第一和第二处理器访问;(2)将音频数据地P个子集分别储存于P个存储体中,其中,P个子集对应于P个不同的音频通道组。
本发明的特点和优点,显见于以下对本发明的详细说明中,其中:
图1是表示按照本发明的教导操作的一个音频录/放系统的实施例的框图。
图2是表示该音频录/放系统中一个嵌入框的实施例的示意图。
图3是存储体的一个实施例的示意图。
图4是表示音频信号采样的定时图。
图5是表示储存在存储体中的音频采样数据的分配的一个实施例的示意图。
图6是表示从大容量存储器读取音频采样并播放音频数据的过程的流程图。
本发明披露了一种在实时音频信号处理系统中有效地分配内存,以减少内存等待时间的方法。内存被划分为能被主处理器和数字信号处理器独立访问的若干独立的存储体。音频信号采样是以将内存存取分布在若干个存储体的交叉方式被存入各存储体的。这种内存分配使小型计算机系统接口(SCSI)控制器和DSP能同等程度地访问存储体。
以下说明中为了便于解释,列举了大量细节,这是为了能让读者对本发明有透彻的理解。然而,对于本领域的熟练人员来说,这些具体细节对于本发明的实施显然并非必须。在其它例子中,为了避免徒劳无益地干扰对本发明的说明,对一些已知的电气设备和电路是用框图的形式来表示的。
参见图1,这是表示按照本发明的教导操作的一个音频录/放系统100的实施例的框图。系统100含有嵌入框(EBX)EBX1~EBXN(1101~110N,“N”为正整数)、K个远程客户计算机(RCC)1201~120K(“K”为正整数)、网络通道115、符合音频工程学会(AES-audio engineering society)标准的输入/输出通道125、同步时钟130。
每个嵌入框1101~110N都是一个带有大容量存储器的音频信号处理系统。在一个实施例中,每个EBX都含有一个个人电脑(PC)系统以及一个或多个数字信号处理器(DSP)。其它具有类似诸功能的配置也可以考虑。音频采样数据被储存在多个动态随机访问存储器(DRAM)体中。这些DRAM体既可以被PC的主处理器访问,也可以被DSP访问。关于EBX的详细结构,本文将在以后讨论。
每个远程客户计算机(RCC)1201~120K都提供图形用户接口(GUI),供用户在网络通道115上向嵌入框1101~110N发送命令和控制信息。每个RCC有两种与EBX进行通讯的模式:个别寻址模式和广播模式。在个别寻址模式中,RCC向指定的EBX发送命令或控制信息。目的地的各个地址被作为命令或控制信息的一部分编码。
按照AES标准,AES标准的I/O通道125对应每个EBX有16个音频I/O通道。该标准的编号是AES3-1992,可从音频工程学会公司得到(该机构位于美国纽约州纽约市)。同步时钟130为同步嵌入框1101~110N的所有实时活动提供一个主定时信号。
参见图2,这是表示嵌入框110的一个实施例的框图。嵌入框110中有一个或多个处理器2051~205M(“M”为正整数)和一个主存储器230(例如动态随机访问存储器DRAM、静态随机访问存储器SRAM,等等),处理器与主存储器由芯片集(chipset)220连接。一般来说,芯片集220起着主总线210与外部总线235之间的接口的作用。
处理器2051~205M可以是任何微处理器。本实施例中的处理器2051~205M是Intel公司(位于美国加州Santa Clara)生产的Pentium或Pentium Pro。
芯片集220一般包括高速缓冲存储器DRAM控制器(CDC)、外部总线控制器和数据路径单元(SPU)。外部设备互连(PCI)桥(PB)提供一组主总线到PCI总线和PCI总线到主总线的事务处理的翻译。
主总线210是一种能够支持向许多连接的处理器进行事务处理的总线。主总线210也可以称作并行总线或多处理器总线,因为它支持并行操作,支持多个处理器。可考虑主总线210能按流水线方式操作以提高效率。不过,不应将这些特点当作是对本发明教导的限定。即使在只有一个连接到主总线210的处理器、或者主总线210是单处理器总线的情况下,照样可以使用本发明。
外部总线235提供了处理器2051~205M(“M”为正整数)或主存储器230与多个外部设备2501~250P(“P”为正整数)之间的一个通讯通路。这些外部设备2501~250P可以包括I/O设备,例如磁盘控制器2501、局域网(LAN)卡2502。在一个实施例中,磁盘控制器2501是一个小型计算机系统接口(SCSI)-2控制器,它通过SCSI-2总线与许多大容量存储器(例如光读写驱动器252和硬盘驱动器254)连接。与本发明相关的信号处理子系统(SPS)270,包括数字信号处理器(DSP)、多个动态随机访问存储器(DRAM)体和PCI接口电路。SPS270与串行输入/输出通讯设备272连接,后者又与AES标准I/O通道接口274相连。外部总线235可以包括一个外部设备互连(PCI)总线或任何其它类型的总线体系结构。
扩展总线255在外部总线235与多个扩展外围设备2601~260L(“L”为正整数)之间构成一个通讯通路。扩展总线255可以包括工业标准体系结构(ISA)的总线或扩展的工业标准体系结构(EISA)的总线。
PCI至ISA/EISA桥240在外部总线或PCI总线235与扩展总线或ISA/EISA总线255之间提供一个通讯通路。
术语PCI处理器,指的是能够控制PCI总线进行数据传送的处理器。信号名称后的符号#表示这是一个低电平有效的信号。信号名称后没有该符号则表示这是一个高电平有效的信号。记号0x系十六进制标志符。
SPS270中有一个或多个数字信号处理器(DSP),以及许多存储体。SPS270中有一个按本发明方法操作的存储器系统300。
参见图3,这是表示存储器系统300的一个实施例的框图。存储器系统300中有两个2至1的多路转接器MUX0 310和MUX1 311,两个存储体DRAM BANK0 320和DRAM BANK1 321。后文将会说明,带有N个存储体的系统可以与N个2至1的多路转接器一起使用。
MUX0 310和MUX1 311是2至1的多路转接器,它们与DSP总线和(用于SCSI访问的)PCI总线相连,并且分别与DRAM BANK0 320和DRAM BANK1 321相连。MUX0 310和MUX1 311中每一个都设计有两个多路转接器:地址多路转接器(单向)和数据多路转接器(双向)。为简明起见,图中只表示了一个多路转接器,标注的方向为双向。本实施例中使用的多路转接器是Quality半导体公司(位于加州的Santa Clara)生产的双向开关(部件号QS3275)或类似的器件。
MUX0 310和MUX1 311分别由信号SEL0和SEL1信号控制。当SEL0和SEL1在第一逻辑电平(例如低电平)时,数据传输在选定的DRAM存储体与PCI总线(SCSI控制器)之间进行。当SEL0和SEL1在第二逻辑电平(例如高电平)时,数据传输在选定的DRAM存储体与DSP总线之间进行。
DRAM BANK0 320和DRAM BANK1 321是两个独立操作的动态随机访问存储器(DRAM)体。本领域的熟练人员知道,也可以使用其它类型的存储器,例如静态RAM。在一个实施例中,各DRAM单元的组织结构为4M×32,或16M字节。
通过控制SEL0和SEL1,这两个DRAM体可以同时被两个不同的处理器访问。例如,在DSP正从DRAM BANK1 321读取数据的同时,SCSI控制器可以访问DRAM BANK0 320以储存数据。
参见图4,这是表示音频信号采样的定时图400。定时图400中有音频时钟410、时钟(CLK)420和音频采样数据430。
音频时钟410对应48KHz的音频采样速率,采用这个速率,一个采样周期约为20微秒。在一个实施例中,在每个采样周期内,要从串行AES输入端口接受16个音频通道的16个数据样本并按录音模式存入各DRAM存储体。在同一个采样周期内,数字音频的播放是通过读取各DRAM存储体中存储的数据并将数据送往串行AES输出端口而进行的。
CLK420表示每个音频时钟周期内16个通道的分离。音频采样数据430表示一串被采样的音频数据。各采样数据与各通道处的一个音频样本相对应。在每个时间段内所获得的数据样本的个数取决于所选择的通道的个数。在一个实施例中,所选择的通道的个数是16。对于图4所示的实施例来说,在时间段T1内,获得了16个通道的16个数据采样,每个通道一个。然后,在时间段T2内,又获得了16个通道的后16个数据采样。
参见图5,这是表示储存在存储体中的音频采样数据的分配的一个实施例的示意图。将DRAM BANKO设置成只储存通道0、2、4…14(偶数通道)的音频采样数据,将DRAM BANK1设置成只储存通道1、3、5…15(奇数通道)的音频采样数据。
可以将这种分配方案延伸到两个以上的存储体。其目的是在所有存储体上平均分配所有音频通道的存储量,使得对所有16个通道的访问不是集中于一个或数个存储体。这种平均分配,减少了SCSI控制器和DSP同时访问同一个存储体的机会。即使SCSI控制器和DSP同时访问同一个存储体,其中的一个处理器也不需要等待太久,就能轮到它访问内存。以上的结果是,向存储体写入或从存储体读出音频采样数据的速度得到提高,满足了实时处理的需要。
例如,假设有P个存储体,DRAM BANK0存储的采样数据来自通道O、通道P、通道2P、通道3P、等等。DRAM BANK1存储的采样数据来自通道1、通道P+1、通道2P+1、通道3P+1、等等。DRAM BANKP存储的采样数据来自通道P-1、通道2P-1、通道3P-1、等等。总之,各DRAM存储体应当存储一个与音频通道组中的一个不同的组对应的音频数据的子集。
参见图6,这是表示从大容量存储器读取音频采样并播放音频数据的过程S600的流程图。本实施例中使用了两个存储体(DRAM BANK0和DRAM BANK1)。录音是采用相同的内存分配方法完成的。
从启动状态开始,过程S600进入步骤S610。在步骤S610,主处理器确定音频数据的位置,用以指示SCSI从硬盘驱动器还是其它大容量存储器读取音频采样数据。过程S600下一步进入判断步骤S620,判断通道号是偶数还是奇数。如果判断通道号是偶数,过程S600进入步骤S630,在DRAM BANK0中选择并分配一个内存块,由于存储该采样数据。然后,过程S600进入步骤S640,将音频采样数据写入DRAM BANK0,过程至此结束。
如果判断通道号是奇数,过程S600进入步骤S631,在DRAM BANK1中选择并分配一个内存块,由于存储该采样数据。然后,过程S600进入步骤S641,将音频采样数据写入DRAM BANK1,过程至此结束。
以上结合示范性的实施例对本发明作了说明,本说明并不意欲被理解为具有限定性。本发明有关领域的熟练人员显然知道,在不超出本发明原理和范围的前提下,可以对这些示范性的实施例进行各种改进,也可以用其它方式实施本发明。