支持无线手持多媒体设备的集成处理器平台的制作方法

文档序号:6469690阅读:215来源:国知局
专利名称:支持无线手持多媒体设备的集成处理器平台的制作方法
技术领域
本发明涉及诸如数字电话的无线手持多媒体设备,具体地说,本发明涉及无线手持多媒体设备中的处理器平台。更具体地,本发明涉及这样一种处理器平台,其具有最小的尺寸和功耗,且能够在处理器平台的多个处理器和多个外设之间进行有效的数据传输。
在此类多媒体设备中,特别是数字蜂窝电话中,处理器平台包括两个主处理器核连接到无线接口的数字信号处理器(DSP)核以及用于运行设备并且协调来自几个外设的数据传送的主处理器核。这样的设备可包括外设、通用串行总线(USB)、具有选择模式以支持IrDA标准的通用异步接收机/发射机(UART)、同步串行接口(SSI)、多媒体卡(MMC)和支持蓝牙标准的蓝牙接口。
希望能够在各种外设和主处理器的存储器之间来回地移动数据,也希望在各种外设和DSP的存储器之间来回地移动数据,而且,希望在DSP的存储器和主处理器的存储器之间来回地移动数据。使用在该领域中所熟知的技术,如直接存储器存取(DMA),方便地进行此类传输,不需要涉及处理机或者DSP。因此,例如不是由主处理器初始化从特定的外设到主处理器存储器的数据传输,而是DMA控制器执行数据传输,使得主处理器能够去处理更加重要的功能。有利的是,DMA技术将主处理和DSP从简单的数据传输的繁重任务中解放出来,使得能够更快和更加有效地使用设备中的处理器。
然而,DMA控制器在两个节点之间形成了硬连线的单向数据信道。DMA控制器连接在特定外设和系统总线之间,其访问从执行数据传输的任务中解放出来的处理器和它的存储器。DMA控制器向硬件提供了执行直接存储器访问。由于每一个数据信道是单向的,对于在两个节点之间的双向数据传输,要求两个单独的DMA数据信道。而且,由于每一个信道以硬件实现,一旦建立信道之后,不能够重配置数据信道以允许在不同节点之间或者不同的方向上的来回的数据传输。
因此,单独的单向数据信道必须是硬连线以允许对多个处理器和多个外设进行直接存储器访问。不利的是,在手持多媒体设备中,可能有大量的外设;因此,要求很多的DMA控制器以硬连线所有可能的DMA连接。例如,为了充分地将主处理器和DSP从不得不执行在外设和各个存储器之间的数据传输中解放出来,必须在每一个外设和主处理器以及DSP存储器之间以硬件实现DMA控制器,使得每一个DMA控制器建立所希望的单向数据信道。
不利的是,在小型的手持应用中,执行大量的DMA控制器花费处理器平台上宝贵的固定设备(valuable real estate)。换言之,需要的硬件DMA控制器越多,在处理器平台上要求的晶体管越多,而且DMA硬件在平台上占用的空间越多。需要一种处理器平台,其执行DMA功能,允许多个处理器的有效运行而不需要为所有不同的数据传输路径使用传统的DMA硬件。
在用于小型手持多媒体处理器的处理器平台中所关心的另一方面是使功耗最小。采用不关心节约功率的处理器平台不必要地减少了电池寿命,而电池寿命在手持应用装置中很重要,因为这缩短所要求的电池两次充电之间的时间。而且,在要求大量的随机访问存储器(RAM)的多媒体应用装置中,希望采用与静态RAM(SRAM)相反的动态RAM(DRAM),因为考虑到相对于阵列密度的芯片尺寸,DRAM的造价比SRAM低很多。
此外,嵌入到处理器平台中的DRAM即嵌入式DRAM(eDRAM)可用来减少处理器平台要求的整个空间。然而,与SRAM相比,为了确保使包含在其中的数据得到保存,必须周期地刷新DRAM和eDRAM。通常由刷新控制器执行的刷新过程消耗宝贵的功率以确保数据保持存储。需要一种方法,其以尽可能多的节约功率的这样一种方式刷新DRAM。
而且,在此类手持多媒体设备中,诸如电话,液晶显示器(LCD),诸如那些在个人数字助理(PDA)中可见到的设备被执行以允许(例如)用户稳定地浏览网页。典型地LCD要求将数据从视频缓冲区移动到显示器驱动电路中。这带来的问题在于大的LCD总线必须从仅有8,16或者32位宽度的存储器(例如,eDRAM)传输和接收来自8,16或者32位总线的数据。不利的是,相对于要求访问用于DMA技术的系统存储器的其它外设和设备,LCD控制器和LCD的图像处理器花费很多时间使用系统存储器,作为视频缓冲器,其使其它外设和设备对系统存储器的访问更难。因此,当视频图像在LCD上显示时,系统存储器(例如,eDRAM)主要作为视频缓冲器,也作为系统RAM。单个RAM(例如,另一个eDRAM)可以被执行以作为视频缓冲器;然而,此附加的存储器不利地增加晶体管计数,并因此增加处理器平台的尺寸。需要一种有效的存储器,其能够在被用作系统RAM的同时支持LCD控制器,以用于DMA数据传输。
本发明有利地阐述了上述和其他的需要。


通过结合附图和附录A和B给出的下面的更加详细说明,可以更加清楚地看到本发明的上述的和其他方面、特点和优点,其中图1是无线多媒体处理器平台的高层方框图,具有三个处理器核数字信号处理器(DSP)、主处理器和位于内嵌处理器通信模块(IPCM)的RISC处理器核,其中,内嵌处理器通信模块执行可编程直接存储器存储功能;图2是图1的无线多媒体处理器平台的详细方框图;图3是图1和图2的无线多媒体处理器平台的内嵌处理器通信模块(IPCM)的方框图;图4是说明由图1和图2的内嵌处理器通信模块(IPCM)提供的可编程地选择直接存储器访问(DMA)数据信道的框图;图5是说明根据本发明优选实施例的图2的事件调度程序的功能的图解;图6是位于内嵌处理器通信模块和主处理器存储器内的指针和存储器缓冲器的框图,所述指针和存储器缓冲器被用于每一个可编程的直接存储器访问数据信道;图7是根据本发明优选实施例的、在由图2刷新控制器执行的执行选择刷新技术中执行步骤的流程图;图8是在根据本发明优选实施例中执行存储器刷新的温度补偿方法中的、由图2的刷新控制器执行的步骤的流程图;图9是使用图7和图8的选择刷新技术和温度补偿刷新技术的存储器刷新系统的方框图。
在所有的视图中,相应的参考标记代表相应的组件。
有利的是,本发明通过提供无线多媒体处理器平台阐述了上面的需要以及其它需要,所述无线多媒体处理器平台包括多个处理器核,多个外设,和内嵌处理器通信模块,该内嵌处理器通信模块执行可编程直接存储器访问功能以用于在多个处理器核的存储器和连接到其上的各个外设之间的可编程地选择数据传输。而且,处理器平台包括使处理器平台的尺寸和功耗最小的特征以及允许从主处理器存储器的视频缓冲以支持LCD显示器而没有限制其他设备访问主处理器存储器的能力的特征。多媒体处理器平台综述首先参见图1,示出了无线多媒体处理器平台的高层方框图,具有三个核数字信号处理器(DSP)、主处理器和位于内嵌处理器通信模块(IPCM)的RISC处理器核,其中,内嵌处理器通信模块执行可编程直接存储器存储功能。图中示出的是多媒体处理器平台100,其包括数字信号处理器102(也称为DSP 102),随机访问存储器104(也称为RAM,DSP存储器或者DSP RAM),主处理器106(也称为主机106或者Mcore),嵌入式动态随机访问存储器108(也称为eDRAM 108或者主处理器存储器),通用串行总线110(也称为USB 110),带有选择模式以支持IrDA标准的通用异步接收机/发射机112(也称为UART/IrDA 112),多媒体卡114(也称为MMC 114),和内嵌处理器通信模块116(也称为IPCM 116)。
以单个集成电路或者芯片的形式构成的多媒体处理器平台100,其也被称为处理器平台100或者简单地称为处理器100,具有三个处理器核DSP 102,主处理器106,和位于IPCM 116之内的RISC处理器核。处理器100代表“片上系统”设计(也称为“SOC”)。在无线手持多媒体设备的应用中,有利的是处理器100的组件都出现在单个芯片上。这是因为手持应用设备中的尺寸的限制,也因为在分立芯片上的分立的处理器必须通过硬连线连接在一起,这将导致芯片到芯片连线的失配。然而,重要的是要注意到本发明不限于在芯片上的系统设计,因此,如果在另外的应用中需要,可以在分立的芯片上实现三个处理器核,也就是DSP 102、主处理器106、和IPCM 116的RISC处理器核。
在运行中,IPCM 116将所有的三个部分,即DSP部分(也就是DSP 102和RAM 104)、主处理器部分(也就是主处理器106和eDRAM108)和外设(也就是USB 110,UART/IrDA 112,和MMC 114)耦合起来。有利的是,IPCM 116提供可编程直接存储器访问(DMA)数据信道以允许进行以下直接存储器访问数据传输(1)从特定外设到DSP RAM 104或者eDRAM 108,(2)从DSP RAM 104或者eDRAM108到特定外设,(3)在DSP RAM 104或者eDRAM 108之间。这些DMA数据传输可以是次数同步的(time coordinated)(以预定次数出现)或者事件同步的(event coordinated)(根据请求或者指令出现)。IPCM具有一个精简指令集计算机(RISC)处理器核,其允许通过可编程地选择DMA数据信道进行直接存储器访问(DMA)数据传输。例如,IPCM 116代替大量的硬件DMA控制器以创建(例如)32个可编程数据信道,其中每一个数据信道可被编程以在上述的三个方向中的任意之一传输数据。等价的硬件DMA实现通常需要2*n*(c+1)个单个的DMA数据硬件控制器,其中2代表两个方向上的数据信道,n代表数据信道数目,c代表能够使用IPCM 116的处理器数目,这样c+1代表数据路径数目。在示出的实施例中,n=32,c=2(也就是DSP 102和主处理器106),这样c+1=3(也就是数据路径的数目,例如,外设到存储器,存储器到外设,和存储器到存储器),这得到IPCM 116代替192个单个的硬件DMA控制器。不利的是,这样大量的DMA控制器数目在成本上不经济,并且将占据处理器的可用空间。因此,IPCM提供大量的DMA数据信道或者数据路径,它们中的每一个可被配置或可编程以将不同的节点连接在一起。这样,节点通常是RAM 104,eDRAM 108,或者其中一个外设。因此,可以对单个的DMA数据信道进行编程以提供从USB 110到eDRAM 108的直接存储器访问数据传输,然后,可以在之后的时间内对相同的数据信道重编程或者重配置以提供从DSP RAM 104到MMC 114的直接存储器访问数据传输。
这是来自提供了非可编程、从一个节点到另一个节点的单向有线数据信道的硬件DMA控制器的发送(departure),这些DMA控制器不能在随后的时间内重新配置作为两个不同的节点。有利的是,在无线多媒体应用中,当芯片或者处理器100的物理尺寸很重要、并且由大量的外设要求很多的DMA控制器进行直接存储器访问时,IPCM 116提供了一种可编程的DMA功能,在此功能中,形成的数据信道可以根据需要进行改变。因此,不需要很多的DMA控制器,并且处理器100的整个尺寸小于如果实现很多的硬件DMA控制器时的尺寸。
IPCM 116的功能有利地将主处理器106和DSP 104从为了执行数据传输不得不停止执行任务的情况中解放出来。IPCM 116执行这些传输以提供给DSP 102和主处理器106最有效的操作。换言之,允许DSP 102和主处理器106以他们最优的速度工作,并且在不降低它们执行简单的数据传输的情况下来执行制定给它们的重要任务。
接下来参见图2,示出了图1的无线多媒体处理器平台的一个实施例的详细方框图。图中示出了多媒体处理器平台100,包括数字信号处理器102(DSP 102),DSP RAM 104,DSP外设接口202,主处理器106(也称为呼叫处理器106),嵌入式DRAM 108(eDRAM108),包括图像处理器206和配置寄存器208的LCD控制器204(通常也称为显示控制器),以及主外设接口210。处理器平台100也包括下述外设230USB 110,UART/IrDA 112,同步串行接口212(也称为SSI 212),MMC 114,和蓝牙接口214。此外,还包括IPCM 116,事件定时器216,数据路径选择218(也称为数据路径选择单元218),eDRAM刷新控制器220(也称为刷新控制器220),和总线接口222。
处理器平台进一步包括以下总线耦合到刷新控制器220的时钟总线224(也称为“c”总线224);将DSP 102、DSP RAM 104和DSP外设202耦合到IPCM 116的DSP系统总线226(也称为“d”总线);将外设230耦合到事件定时器216和IPCM 116的事件总线228(也称为“e”总线228);将主处理器耦合到外设230和210、LCD控制器204、总线接口222、数据路径选择218、刷新控制器220和IPCM 116的主系统总线232(也称为“h”总线232);将IPCM 116耦合到外设230的IPCM总线234(也称为“i”总线234);将数据路径选择218耦合到eDRAM 108的存储器总线236(也称为“m”总线236);将图像处理器206耦合到数据路径选择218的LCD总线238(也称为“p”总线238);将刷新控制器220耦合到数据路径选择218的刷新总线240(也称为“r”总线240);将总线接口耦合到(例如)外部存储器244的外部系统总线242(也称为“s”总线242);和将IPCM 116耦合到数据路径选择218的传输总线246(也称为“t”总线246)。
图2中也示出了不是处理器平台100的一部分的如下方面耦合到DSP外设接口202的无线硬件248,耦合到图像处理器206的LCD面板250,耦合到总线接口222的外部存储器244,和耦合到刷新控制器220的时钟输入252。
处理器平台包括三个处理器核DSP 102,主处理器106,和嵌入在IPCM 116中的RISC处理机核。有利的是,在此实施例中,以片上系统形式实现处理器平台100,尽管本发明的很多特征并不限于在芯片上的集成系统设计。下面是对处理器平台100的几个组件的简要介绍。
正如本领域所公知的一样,DSP 102经过DSP系统总线226与系统存储器(例如DSP RAM 104和DSP外设接口202)连接。DSP RAM 104包括DSP程序和数据存储区域使用DSP外设接口202来将DSP核(即调制解调器)连接到无线硬件248以执行蜂窝无线通信。这些组件在本领域中是熟知的,并且通常可在蜂窝电话中见到。
如本领域所知,主处理器106是通用的精简指令集计算机(RISC)处理器或者复杂指令集计算机(CISC)处理器。LCD控制器204是一个包含数字逻辑的模块,该模块被配置将存储器内(例如,eDRAM108存储阵列)的二进制图像呈现到外部LCD面板250上。主外设接口210包括一个或多个数字逻辑模块,其被配置作为由主处理器106操作的外设。一个这样的外设接口包括键盘接口、通用定时器和通用I/O端口。
主处理器还包括多媒体外设230。USB 110是一个逻辑块,其被配置作为执行在通用串行总线中公知的开放标准的多媒体访问层功能的外设。该模块配置有2个接口端口经h总线232连接到主处理器106的端口,以用于配置管理和控制,以及经i总线226连接到IPCM 116的数据端口,用于将数据发到外部串行接口并从外部串行接口发送数据。
IrDA/UART 112是一个被配置为本领域中熟知的执行必要功能的外设的逻辑块,作为具有选择模式的通用异步接收机/发射机,以支持IrDA标准。IrDA/UART 112配置有2个接口端口经h总线232连接到主处理器106的端口,用于配置管理,以及经I总线236连接到IPCM116的数据端口,用于将数据发到外部串行接口并从外部串行接口发送数据。
SSI 212是一个被配置为在本领域中的执行必要功能的逻辑块,作为同步串行接口。该模块配置有2个接口端口经h总线232连接到主处理器106的端口,用于配置管理,以及经i总线236连接到IPCM116的数据端口,用于将数据发到外部串行接口并从外部串行接口发送数据。
MMC 114是一个被指定用于连接到并且与多媒体卡(MULTIMEDIACARD)一起工作的数字接口。MMC 114配置有2个接口端口经h总线232连接到主处理器106的端口,用于配置管理,以及经i总线236连接到IPCM 116的数据端口,用于将数据发到外部MULTIMEDIACARD并从外部MULTIMEDIACARD发送数据。
蓝牙接口214是包含设计用于支持BLUETOOTH开放标准的数字接口。蓝牙接口214配置有2个接口端口经h总线232连接到主处理器106的端口,用于配置管理,以及经i总线236连接到IPCM 116的数据端口,用于将数据发到外部的蓝牙兼容无线电路并从外部的蓝牙兼容无线电路发送数据。
事件定时器216是一个经e总线228耦合到IPCM 116的二进制计数器,并且具有“n”个状态,这些状态被连接到能够检测预定不同的状态的比较逻辑,用于在指出特定状态时产生一个信号。该计数器由一个精确的时钟源计时。在一个实施例中,事件定时器216可以在给定的时间内处理32个事件。在一些实施例中,可使用事件定时器216来以(例如)规则的时间间隔将编程的事件或者直接存储器访问数据传输发送到IPCM 116。
设计IPCM 116来执行内嵌处理器和采用DSP 102处理器的串行I/O通信,以及诸如USB 110、IRDA/UART 112、蓝牙接口214和MMC114的I/O外设230。有策略地将IPCM 116放置在一结构中以使到/来自可编程直接存储器访问(DMA)数据传输可与主处理器106或者DSP102进行。此外,IPCM 116支持在DSP和主机本身之间的数据传输。因此,有利的是,IPCM 116可作为一个可编程DMA来将数据传输到存储器,而无需涉及DSP 102或者主处理器106来进行数据传输。
在IPCM 116之内是可编程RISC核,其被编程以执行DMA功能。参照图3进行详细地介绍IPCM 116的内部工作。相比于不可编程(例如基于硬件)的方案,该措施提供了几种优点。ICPM 116的可编程DMA功能具有很多好处。首先,允许对RISC核进行编程以执行各种任务的动态路由。在可编程控制之下,在一个实施例中,可将IPCM 116配置具有32个同时的DMA数据信道,每一个DMA数据信道可以配置在上述的三个方向中任意之一。通过在这32个DMA数据信道中的各个信道上路由DMA数据传输。例如,可以配置每一个数据信道作为DMA数据信道以在下述之间进行DMA数据传输(1)外设230到存储器(例如DSP RAM 104或者eDRAM 108),(2)存储器(例如DSP RAM 104或者eDRAM 108)到外设230,(3)存储器(例如DSPRAM 104或者eDRAM 108)到存储器(例如eDRAM或者108DSP RAM104)。有利的是,可以在后面对这32个可编程的DMA数据信道中的每一个进行重编程以允许在两个不同的节点之间进行DMA数据传输。
而且,IPCM 116允许以更小的脚印(footprint)实现的更多功能。这是因为IPCM 116代替了不同的节点之间,也就是DSP RAM 104、eDRAM 108、和不同的I/O外设230之间的多个分立的有线DMA控制器。这显著地节约了在管芯上所需要的门或者晶体管,这对于减少手持多媒体应用的处理器尺寸来说很重要。通常,DMA信道的门数大约为每信道3k门。在此实施例中,当要求多于6个硬件DMA信道时,IPCM 116具有节约空间的优点。有利的是,在此实施例中,IPCM116在大约6个实际的硬件DMA信道的脚印之内可用作192个分立的DMA信道(如上所述)。
此外,IPCM 116很灵活,并且可缩放(scalable)。这个概念使得可在下一代产品中对其自身进行改进。灵活的数据路由能力使得能够附加到诸如基于硬件加速器的基本结构上。IPCM 116的RISC核的增强包括增加寄存器和新的指令以允许该概念满足将来的需要。
同样,IPCM 116的可编程RISC处理器核提供了要定义的公共应用程序接口(API),因为可编程RISC核使用被映射到主存储器(也就是eDRAM 108)的虚拟控制寄存器。当在下一代增强了IPCM 116时,API可以完整保持。这一特点增加了软件的可重使用性。
另一个特点是将智能功率管理提供给IPCM 116,使其在不工作期间进入睡眠模式。这对于在将电池的寿命作为重要考虑因素的手持应用中是很重要的。
IPCM 116的另一个特点是,如在本领域中公知一样,可以使用little-Endian格式或者big-Endian格式来将DMA数据传输送到存储器(例如,DSP RAM 104或者eDRAM 108)和从存储器(例如,DSP RAM104或者eDRAM 108)发送DMA数据传输。这使得IPCM 116能够与根据任一格式配置的不同类型的处理器进行通信。例如,配置为littleEndian格式或者big Endian格式的DSP可以与IPCM 116接口。
处理器平台100的另一个组件是,由于整个系统在芯上实现,主处理器106的RAM是由如本领域中熟知的DRAM类型比特单元构成的片上阵列,并且被称为嵌入式DRAM或者eDRAM 108。该阵列被配置为65536个字(64k字),每一字为128位,总计67,108,846位单元(64M位)。必须周期地刷新eDRAM 108,这一功能由刷新控制器220来完成。eDRAM 108的128位宽度被优化用于LCD控制器,这将在下面进一步地介绍。因此,eDRAM 108作为主处理器存储器和用于LCD面板250的片上视频缓冲器。有利的是,eDRAM的宽度减少了LCD控制器204消耗的访问周期数,从而增加了可用于主处理器106和IPCM 116的访问周期数。
总线接口222是包含被配置作为本领域公知的存储器控制器的数字逻辑的模块。该模块支持经总线242连接到处理器平台100的外部存储器244。外部存储器244包括诸如SRAM,EPROM,FRASH和DRAM的多个分立的存储器设备。外部存储器244可由主处理器106直接地访问,或者由DSP 102经IPCM 116间接地访问。这是有利的,因为这使得主处理器106和/或DSP 102加载和运行应用程序,该应用程序太大以至无法存储在这些处理器的相应存储器中。例如,DSP 102可以加载和运行存储在外部存储器244中的语音识别程序。而且,总线接口222允许同时处理在主处理器106、IPCM 116和DSP 102之间的操作;因此,在单个集成电路上执行多个指令流、多个数据流(也就是MIMD)实现了(例如)多媒体电话。
注意,由于eDRAM 108具有自己的总线也就是m总线236,而不是作为主系统总线或者h总线232的一部分,主处理器106可以通过总线接口22访问外部存储器244,同时IPCM 116访问eDRAM 108。
数据路径选择218包括仲裁逻辑和预编程的数据多路复用器,该预编程的数据多路复用器被设计用于将eDRAM 108的数据路径连接到可能要求访问阵列的4个实体中的一个。可以访问eDRAM 108的4个实体是具有32位访问宽度的主处理器106,具有32位访问宽度的IPCM 116,具有128位访问宽度的LCD控制器204,和用于象本领域所熟知的那样执行为4096行的16毫秒周期封装刷新(stealingrefresh)。在示出的实施例中,每一个请求者具有唯一的路径总线宽度,例如p总线238具有128位的宽度,而i总线246和h总线232具有32位的宽度。数据路径选择218根据获得授权访问的设备自动地配置合适的数据路径。这样,数据路径选择218将128位宽度的阵列进行转换以支持例如在IPCM 116之内的常用的32位RISC处理器核。在所有的情况下,为了从阵列中引用正确的数据元素,要考虑由请求者提供的存储器地址。用于每一个请求者的总线宽度和访问模式示于下面的表1中。
表1 数据路径配置

而且,在一个实施例中,数据路径选择218总是使用big-Endian格式来向和从eDRAM 108存储和获取数据。然而,由于IPCM被配置为工作于little-Endian格式或者big-Endian格式,如果IPCM根据little-Endian格式来工作,数据路径选择218根据little-Endian来将IPCM进行来回转换,并且来回转换eDRAM为big-Endian格式。这样,IPCM必须通知数据路径选择它被配置为那一个格式。
刷新控制器220产生对eDRAM 108的存储请求,以便于周期地刷新位于eDRAM阵列中的位单元。然而,在本发明的优选实施例中,以这样一种方式执行刷新eDRAM 108的方法,这在已知的刷新技术是所不考虑的最小化功耗。参考图7-9介绍设计用于节约功耗的几种特定的刷新技术。
下面是对各种总线接口的介绍。时钟总线224(“c”总线)是一个时钟输入线,用于对刷新控制器220进行程序设计和定时。DSP系统总线226(“d”总线)包含分开的地址和数据路径,以及具有向选定的设备传送读写操作的控制信号。此外,也包括了总线请求和总线确认信号,以允许IPCM 116请求使用DSP系统总线。事件总线228(“e”总线)是由外设230驱动的一组信号,其被发送到IPCM 116(见图3)的输入事件检测设备以用于激活数据传送操作。主系统总线232(“h”总线)包含分开的地址和数据路径,以及具有向选定的设备传送读写操作的控制信号。h总线232可以独立于其它所有的总线工作。此外,总线请求和总线确认信号也协同工作以允许IPCM请求使用h总线232。IPCM总线234(“i”总线)是包含分开的地址和数据路径的IPCM系统总线,以及具有向选定的外设230传送读写操作的控制信号。存储器总线236(“m”总线236)是一个双向总线,并且被用于将eDRAM 108和数据路径选择218模块互连。存储器总线236具有128位的总线宽度。LCD总线238(“p”总线238)是具有128位的宽度的单向总线,用来将显示图像样值传送到LCD控制器204以在LCD面板250上显示。刷新总线240(“r”总线)是这样的一种总线,当有效时,包含在eDRAM 108阵列中的要被刷新的下一行的地址。外部系统总线242(“s”总线)包含分开的地址和数据路径,该数据路径具有传送选定的外部存储器244进行读和写操作的控制信号。外部系统总线242可由主处理器106或者IPCM 116进行访问。传输总线246(“t”总线)将访问请求从IPCM 116传送到eDRAM 08阵列。传输总线是双向的,并且具有32位数据路径和32位地址路径。
eDRAM 108的另一个特征是,其提供了一个片上视频缓冲器,同时它被作为用于主处理器106的RAM。有利的是,为了适应LCD控制器204,eDRAM 108是128位宽度。如果eDRAM为32为宽度,其将习惯于支持通用RISC处理器核和主处理器,eDRAM将由来自支持LCD控制器204的请求支配,使得使用eDRAM的其他设备不得不与LCD控制器204竞争。因此,LCD控制器204实质上成为eDRAM和IPCM 116的主要用户,而主处理器106成为次要用户。通过提供与LCD总线238相同宽度的很宽的缓冲器,LCD控制器204仅仅简要地访问eDRAM 108,允许IPCM 116和主处理器106成为eDRAM 108的主要用户。因此,以128、位宽度配置eDRAM,LCD控制器仅仅使用2-3%的eDRAM能力,有利地将97%留给使用eDRAM的其他设备。注意,数据路径选择218允许不同宽度的总线访问eDARM 108。
事实上,eDARM 108兼作系统存储器和视频缓冲器进一步减少了在处理器平台100上的空间。如果采用专用的分立视频缓冲器,如同常规进行的一样,该分立的视频缓冲器将占用处理器平台上的额外空间,或者成为连接到LCD控制器204的分立集成电路,其将占据更加多的空间,并且导致了配线中的损失。与常规的分立视频缓冲器不同,处理器平台100的eDARM 108以小型封装实现系统存储器和视频缓冲器。
下面介绍IPCM 116的其它方面的特征。
由于IPCM允许从映射到IPCM总线236的外设到DSP RAM 104或者eDRAM 108进行数据传输,该IPCM允许由DSP 102和/或主处理器106使用外设230。例如,诸如MMC 114的数据存储设备能够访问DSP 102或者主处理器106。因此,MP3格式的数据可以从MMC 114流到DSP 102以影响互联网音频播放器。其它的应用包括由主处理器106使用IPCM来写或读位于MMC 114中的数据文件。而且,IPCM可以被配置以将数字音频样值向/从移动DSP RAM 104,并移动到一对USB同步端口;因此,实现了一个扬声器电话。此外,IPCM 116支持多个源于和/或终止于eDRAM 108或者DSP RAM 104的数据流。来自eDRAM 108和DSP RAM 104中的每一个的数据流可以相互独立地传送。
此外,由于IPCM 116包含RISC处理器核(详情参见参考图3的介绍),它是可智能编程的。因此,可以经来自eDRAM的DMA数据传输将编程任务从主处理器106卸下。例如,IPCM 116可以执行通常由主处理器106执行的“bit-blit”任务。正如在计算机图形技术领域所熟知的那样,“bit-blit”任务涉及改变可视显示的背景显示或者导致图像“飞”过可视显示。IPCM 116可以将必要的程序从主处理器116下载以执行此类任务,而不是由主处理器106来执行,使得主处理器106解放以执行其它任务。
另一个应用是将主处理器106或者DSP 102从执行诸如用在IrDA标准中的“PPP”或者“LAP层”功能的分组协议帧功能中解放出来。此时,有利的是,主处理器106和DSP 102不需要必须执行这些功能。
在一个实施例中,通过在主处理器106的控制和管理下将分组发送到解码器,IPCM 116支持耦合到SSI 212或者UART/IrDA 112的MPEG解码器。IPCM 116从外部MPEG解码器重新得到已解码的像素数据,并且将像素数据存放到分配在eDRAM 108中的视频缓冲器区域。这样,将“在桌面窗口上的图像(picture-in-desktop-window)”提供给LCD面板250。
IPCM利用事件定时器216,使得可以根据事件定时器216来激活可编程的DMA数据传输,除了可由各自的外设和/或DSP 102和/或主处理器106触发的事件激活之外。因此,预编程的DMA数据传输将自动地出现预定的次数。
而且,为了使功耗最小,将IPCM设计为当没有事件时进入低功耗模式(也就是睡眠模式)。因此,IPCM 116将不会不必要地在DMA数据传输之间消耗电池寿命。内嵌处理器通信模块(IPCM)接下来参见图3,示出了图1和2的无线多媒体处理器平台100的内嵌处理器通信模块(IPCM)的方框图。示出的IPCM 116(也称为“可编程直接存储器访问模块”)包括RISC处理器核(更通常地也称为处理器302的RISC核),事件调度器304(也称为事件检测单元304,任务调度器304或者可编程任务调度器304),静态RAM 306(也称为SRAM 306),只读存储器(也称为ROM 308),DSP直接存储器访问单元310(也称为DSP DMA单元310),主直接存储器访问单元312(也称为主DMA单元312),DSP控制寄存器314(也称为DSP控制单元314),和主控制寄存器316(也称为主控制单元316)。图中也示出了DSP系统总线226(“d”总线226)。主系统总线232(“h”总线232),IPCM总线234(“i”总线234),和包括USB 110、IrDA/UART112、SSI 212和MMC 114的外设230。图中也示出了事件定时器输入318和外设/DMA事件输入320,其经事件总线228(“e”总线228)进入事件调度器304。
经总线接口将DSP控制寄存器314和DSP DMA单元310耦合到d总线226。经总线接口将主控制寄存器316和主DMA单元312耦合到h总线226。IPCM 116也包括耦合到各种外设230的i总线234。在IPCM 116之内,RISC处理器核302、SRAM 306、ROM 308、DSP控制寄存器314、DSP DMA单元310、主控制寄存器316和主DMA单元312都被耦合到i总线234。DSP DMA单元310和主DMA单元312各自包括常规的DMA控制器的总线收发器部分。事件调度器304被耦合到处理器302。到事件调度器304的输入是事件定时器318和外设/DMA事件320。
在运行中,IPCM 116提供了内嵌处理器和串行I/O数据传输,它们采用直接存储器访问(DMA)技术,而没有实际上为所有的不同可能的数据传输路径实现各自专用的硬件DMA信道。有利的是,通过提供IPCM 116执行这些DMA数据传输,主处理器和DSP从此类任务中解放出来,并且可以执行更加重要的任务。有利的是,与传统的DMA电路(也称为DMA控制器)相反,IPCM 116是一个可编程的DMA模块,其提供了可编程DMA数据信道,该可编程DMA数据信道可被编程来执行三种类型的数据传输之一(1)从可选择的外设230到两个存储器(例如DSP RAM 104或eDRAM 108)任意之一,(2)从两个存储器(例如DSP RAM 104或eDRAM 108)任意之一到可选择的外设230,(3)两个存储器之间。因此,IPCM 116配置了(例如)32个可编程DMA数据信道,每一个可被配置用于六种数据传输中的一个。有利的是,在本领域中熟知的近似6个常规硬件DMA控制器的物理脚印,在一个实施例中,IPCM 116在任意给定的时间替代192个独立的DMA控制器,并具有为192个可能的DMA数据信道之外的32个进行配置的能力。然后,这32个编程的DMA数据信道中的每一个用来进行DMA数据传输。而且,之后或者根据需要,这32个数据信道可被重配置为192个可能的DMA数据信道配置中不同的32个信道。这在空间宝贵的应用中,例如手持设备中证实是非常有价值而且灵活的。
在一个实施例中,保留32个DMA信道中的一个用作从主处理器106到IPCM 116的控制信道。因此,IPCM 116可在186个可能的DMA数据路径配置之外配置31个DMA。方便是,这个控制信道允许主处理器能够向IPCM发送控制消息,以便将31个已配置的DMA数据路径组中的一个或多个重新配置成186个可能的DMA数据路径配置中的另外一个。甚至没有控制信道,也可以将全部32个已配置的DMA数据路径组清除并由主处理器重新配置。
为了完成这个可编程DMA数据传输的功能,IPCM 116包括了RISC处理器核302和ROM 308以及SRAM 306。在一些实施例中,RISC处理器核由微RISC处理器核构成。RISC处理器核302用于执行完成DMA数据传输的短命令或指令(存储在SRAM 306中)。一个定制RISC处理器核及其指令集的特定例子在本文后面有更详细的描述。还包括有一对DMA单元,DSP DMA单元310和主DMA单元312,它们与RISC处理器核302接口,对所有的DMA传输使用规定的,专用寄存器。因此,DSP DMA单元310和主DMA单元312包括传统DMA控制器的总路线收发机的一部分。传统DMA控制器的,例如,地址寄存器,数据寄存器和计数器在RISC处理器核302内部实现。这样,DSP DMA单元310和主DMA单元312分别代表与RISC处理器核302线连接的数据通路和相应的总线,如d总路线226和h总路线232。
ROM 308启动脚本(即引导代码)和由驻留在SRAM 306中的脚本参考的其它应用程序。附录B中附有ROM脚本的例子。SRAM 306被分成处理器内容空间区和用于存储信道脚本的代码空间区。通过使用主DMA单元312,由IPCM 116将信道脚本从eDRAM或从外部存储器中下载到SRAM 306之中。通过使用由主处理器提供的命令和指针请求下载。每个可编程的或“虚拟”DMA数据路径可以在主处理器的控制下基于“所需”独立地进行配置。这在使用可能的内部存储封装脚印的时候允许一宽范围的功能。可以将微码程序存储在外部存储器中,例如在大容量快速存储器中,并且在需要时将其下载。
任务调度器304是一个可编程调度器,其从外设230、主处理器106和DSP RAM 102接收请求以进行DMA数据传输。这些请求的形式是在e总线228上检测到的“事件”。一个事件是控制特定可编程DMA数据信到的操作出现的条件。例如,一个事件是来自希望进行DMA数据传输的中的外设、主机或者DSP(例如外设/DMA事件输入320)的一个的指示。一个事件可以是来自主处理器的信号,警告IPCM重新编程特定DMA数据信道。事件也可以是来自事件定时器(也就是事件定时器输入318)的要发生DMA数据传输的定时指示。例如,根据在e总线228上哪一个线检测到事件,任务调度器304可以指出谁在请求或者指出希望进行DMA传输。任务调度器304对请求划分优先权并且进行管理。任务调度器304监视并且检测用于DMA数据传输的外部事件,并且将事件(例如,指出要执行DMA数据传输的信号)映射到特定DMA数据信道。事件被根据优先权来映射到位于特定DMA数据信道内的DMA数据传输,使得较高优先权的数据传输发生在较低优先权的DMA数据传输之前。而且,任务调度器304能够执行“抢占优先权”,其中,中断(暂停)由IPCM当前执行的特定DMA数据传输,使得可以执行较高优先权DMA数据传输。一旦完成较高优先权的DMA数据传输,则恢复已经被中断的DMA数据传输,除非请求了另外的较高优先权DMA数据传输。通常,处理器是知道抢占优先权的;然而,常规DMA控制器是基于硬件的(也就是不可编程的),因此,不能够进行此类抢先。有利的是,该实施例提供了在可编程DMA系统中的抢占优先权。
下面是对由IPCM支持的不同类型的可编程DMA数据传输中的数据流的简要说明。
1.外设到存储器通常,各种外设230负责收集要输入到处理器平台的数据。当数据已经到达特定的外设时,例如,到达了MMC 114,外设经事件总线228将事件发送到IPCM 116的任务调度器304。任务调度器304能够在任意给定时间里处理32个事件。由任务调度器304赋给事件优先权,并且映射到特定的DMA数据信道。一旦执行事件,RISC处理器核302以位于SRAM 306中的脚本的形式运行软件。软件是专用于特定DMA数据信道的,并且配置特定的DMA数据信道。软件有效地指导RISC处理器核302以影响从特定外设到存储器目的地(例如,Edram或者DSP RAM)的DMA数据传输。DMA数据传输由在RISC处理器核302中的软件执行,使得在外设中的数据经i总线234和各自的DMA单元,例如DSP DMA单元310或者主DMA单元312发送到各自的存储器。
有利的是,DMA数据传输的进行不涉及到DSP或主处理器。而且,通过使用包括RISC处理器核302和单个硬件DMA电路,例如主DMA单元312,通过单个硬连线的DMA单元可建立很多不同的DMA数据路径。这些数据路径中的每一个被称为可编程DMA数据信道或者“虚拟”DMA数据信道。例如,可能有从USB 110到DSP RAM104的一个DMA数据信道或者路径,以及从SSI 212到DSP RAM 104的另一个DMA数据信道或路径,二者都经过DSP DMA单元310传输。有利的是,任一DMA数据信道可以在后来被配置成不同的DMA数据信道,例如从MMC 114到DSP RAM 104。因此,到存储器DMA数据信道的每一个外设利用DSP DMA单元310或主DMA单元中的任一个,但是可以被可编程地选择为从任意一个外设耦合到IPCM116。
2.存储器到外设这种类型的DMA传输与第一种类型的不同之处在于传输是从处理器平台的处理器核其中之一的存储器例如为DSP RAM或主处理存储器(例如eDRAM)到外设230中的一个。DSP经过DSP控制寄存器314将“事件”(数据传输)发送到任务调度器304,任务调度器赋给事件优先权,并且将其映射到DMA数据信道,且发信号到RISC处理器核302以执行数据传输。由DSP提供的信息显示DSP RAM中数据存储的位置和将要发送多少数据。然后,RISC处理器以位于SRAM306中的脚本的形式运行软件。该软件专用于特定的DMA数据信道。该软件有效地指导RISC处理器核302以影响从DSP RAM 104到特定外设230的DMA数据传输。该传输由在RISC处理器核302中的软件执行,使得将数据从DSP RAM拷贝到位于DSP RAM单元内的寄存器,然后数据经i总线234传输到外设。
3.存储器到存储器第三种类型的DMA数据传输是存储器到存储器。例如,在数据从DSP存储器(例如,DSP RAM 104)传输到主处理器存储器(例如,eDRAM 108)的情况下,DSP将一事件报告给IPCM 116的任务调度器304。任务调度器304识别该事件,给其分配优先权,然后引发RISC处理器核302从SRAM 306下载脚本以影响经DSP RAM单元310从DSP RAM到RISC处理器核302本身的DMA数据传输。例如,数据被临时放到位于RISC处理器核302内的寄存器。然后,经主DMA单元312在RISC处理器核302和主处理器存储器(例如,eDRAM 108)之间执行DMA数据传输。这是有效的“背对背”DAM数据传输。IPCM116解决了存储器大小的不同。例如,如果DSP RAM为16位宽度,而主处理器存储器为32位宽度,IPCM将收集16位字并且将他们封装位32位字,然后将32位字传输到主处理存储器。
一旦完成经RISC处理器核302的从DSP RAM到主处理器的“背对背”DMA数据传输,IPCM 116将向主处理器发信号以通知主处理器有数据存储在存储器中。换言之,RISC处理器核302经主控制寄存器316将控制信号发送到主处理器,向主处理器给出到一地址的位置指针,该地址指出在主处理器存储器中数据开始于何处、有多少字已经被放置在开始于所述地址的主处理器存储器中。在该点上,主处理器在方便的时候重新获得数据。注意,大多数DMA数据传输为很多字节的长度(例如1000字节),在发送传输完成事件信号之前要求重复很多次。这一显著的过程也相同于外设到存储器的传输,也就是RISC处理器核302通知各个处理器核,例如DSP或主处理器数据挂起于存储器中。
这与在本领域中所熟知的允许在两个处理器之间进行数据传输的处理器网桥相反。例如,如果主处理器想要将数据从主机移到DSP,主机将必须中断DSP,等到DSP准备好交换数据,然后挂起片刻(briefmoment),主处理将控制DSP存储器,以影响传输。这不利地在数据传输期间暂时中止DSP和主处理器。因此,主处理器存储器和DSP存储器同时停止和通信。
相反,IPCM 116允许不需要中断DSP进行从主存储器到RISC处理器核302的直接存储器访问数据传输。主处理器106的唯一要求的活动是传输一控制信号以将一事件发送到IPCM以执行从主存储器到RISC处理器核302的数据的DMA数据传输。接下来,执行从RISC处理器核302到DSP存储器的DMA数据传输。然后,DSP从DSP RAM重新获得数据。在此情况下,DSP或主处理器都不需要为对方停止下来以进行传输。
接下来参见图4,示出的图说明了由图1,2和3的IPCM 116提供的可编程地选择直接存储器访问(DMA)数据信道。图中示出了IPCM116、DSP RAM单元310、主DMA单元312、RISC处理器核302、i总线234、d总线226和h总线232。DSP RAM单元310包括第一DSPRAM数据连接402和第二DSP DMA数据连接404。主DMA单元312包括第一主DAM数据连接406和第二主DMA数据连接418。
IPCM 116包括DSP DMA单元310和主DMA单元312。每一个DMA单元310和312包括常规DMA控制器的总线收发器部分,并且形成2个硬连线的DMA数据连接(通过该连接可编程DMA数据信道可建立用于DMA数据传输),一个连接在RISC处理器核302到存储器的方向上,另一个在存储器到RISC处理器核302的方向上。这4个DMA数据连接可由IPCM的RISC处理器核302进行编程,就好像他们是带RISC处理器核302的一个整体,具有192个(如果其中一个DMA数据信道是控制信道则为186)实际的硬件DMA控制器。相反,常规的DMA控制器仅仅允许使用DMA数据连接来建立一个专用的DMA信道。
就广义来说,RISC处理器充当设备和各种有线DMA数据连接之间的切换。因此,可将第一主DMA信道连接406配置或编程为许多不同的可编程DMA数据信道,例如从USB 110到eDRAM 108的DMA数据信道、从SSI 212到eDRAM 108的DMA数据信道和从MMC114到Edarm 108的DMA数据信道。这些使用第一主DMA数据连接406的不同DMA数据信道可被称为“虚拟”DMA数据信道,因为他们有效地提供了比在硬件中更多的DMA数据信道。因此,第一主DMA数据信到406是可编程地选择,使得其能够支持从几个外设中的任意一个或者从第二DSP DMA数据连接404的始发节点到在第一主DMA数据连接406的目的端处的存储器(例如,eDRAM 108)的DMA数据传输。因此,RISC处理器核302和单个DMA单元,例如主DMA单元312代替很多分立的有线连接的常规DMA控制器。
同样,第二主DMA数据连接408可以被编程地选择为从始发节点或者节点(例如,eDRAM 108)到几个外设中的任意一个或到第一DSP DMA数据连接402的目的节点的“虚拟”DMA数据信道。这些虚拟DMA数据信道中的每一个利用第二主DMA数据连接408。而且,可通过第二主DMA数据连接408和第一DSP DMA数据连接402经RISC处理器核302影响“背靠背”DMA数据信道。定制的RISC处理器核/IPCM注意,RISC处理器核可以是如本领域中所熟知的标准RISC处理器一样。然而,可以设计定制的RISC处理器,其可改善IPCM 116中的性能。下面是对用作图1-4的IPCM的定制的RISC处理器核和IPCM的特定实施例的说明。
定制的RISC处理器核302是具有16位指令的32位寄存器结构。正如本领域中所熟知的那样,有8个通用的32位寄存器,4个标志(T,LM,SF,和DF)和PCU寄存器(PC,RPC,SPC,和EPC)。RISC处理器核302是两级流水线,并且还包括ROM 308和SRAM 306。ROM308为1K字节(配置为256×32),而SRAM 306为8K字节(配置为2048×32)。
定制的RISC处理器核302(之后简单地成为RISC处理器核302)被用来执行完成DMA数据传输的一短程序。指令集(存储在SRAM 306中)由除了加载/存储(Load/Store)、CRS、DMA以外的单周期指令,和要花费两个或更多周期执行的分支指令构成。在被附加到此的附表A中提供了优选的指令集。i总线234支持32位数据路径和16位地址总线。一对DMA单元,即DSP DMA单元310和主DMA单元312与RISC处理器核302连接,并且为所有的DMA传输使用特定的、专用的寄存器。
ROM 308包含启动脚本(即引导代码)和由驻留在SRAM 306中的脚本参考的其它应用程序。SRAM 306被分成处理器内容区和用于存储路径脚本的代码区。通过使用主DMA单元312,由IPCM 116将路径脚本从eDRAM或从外部存储器中下载到SRAM 306之中。通过使用由主处理器提供的命令和指针启动下载。每个可编程的或“虚拟”DMA数据路径可以在主处理器的控制下基于“所需”独立地进行配置。这在可能使用的最低的内部存储脚印时允许一宽范围的功能。可以将微码程序存储在外部存储器中,例如在大容量快速存储器中,并且在需要时将其下载。
任务调度器304负责监视和检测外部事件,将事件映射到DMA数据信道(也简单地称为信道),并且将各个信道映射到预配置的优先权。在任何时刻,任务调度器将请求服务的最高的优先权信道提供给IPCM 116。使用一个特定的IPCM核指令来“有条件地产生”被用于执行请求服务的合格信道的当前信道。当且仅当合格信道处于挂起时(pending),当前执行的信道被预置空(pre-empted)。有两个“产生”的指令,其不同地确定合格信道在第一种中,合格信道是具有严格高于当前信道优先权的较高优先权的挂起信道;在第二种中(“产生(yieldge)”),合格信道是具有大于或等于当前优先权的优先权的挂起信道。任务调度器304通过32个输入事件端口(事件定时器输入318和外设/DMA事件320)检测需要服务的设备(例如,信道)。检测到事件之后,并且仅当其被映射到信道时,信道事件被锁存到“信道挂起(EP)”寄存器中。所有挂起的信道的优先权与由主处理器和DSP设置的控制位组合起来,并且被连续的评估以更新最高的挂起优先权。当完成信道服务程序时,由信道脚本软件清除在信道挂起寄存器中的每一位。
主控制模块(也就是主控制寄存器316)包括被组织为阵列的几个小RAM块,这几个RAM块被用来控制(也就是信道映射)32个独立信道。信道便能寄存器是最大的RAM阵列(32位×32位),用于将事件映射到特定的信道(一个或几个)。第二阵列是优先权RAM用来将信道分配给可编程的1到7(1-of-7)级优先权。
经e总线228连接到任务调度器的32个事件输入来自不同的源,并类似于中断请求信号。在UART和USB端口中发现的接收寄存器满和传输寄存器空的事件是连接到IPCM上的事件端口的典型的信号。一些事件输入来源于层1的定时器(例如,事件定时器304)。在层1的定时器内是基于比较/捕获方块的寄存器,其可被用来发送唯一的事件、层1定时器的瞬间状态。可使用这些事件来触发特定的IPCM信道或信道。这一特征可被用来实现在两个处理器(例如DSP和主处理器)之间的“实时(just-in-time)”数据交换,以放松满足关键期限的要求。
IPCM的内在本质要求在片调试能力以确保产品质量和可靠性,且实现所述核的所有性能能力。OnCE兼容调试端口包括支持设置断点、单步和跟踪以及寄存器清除能力(dump capability)。此外,从调试端口可访问所有的存储器位置。
IPCM 116具有两个存储器空间一个用于指令,另一个用于数据;两个空间共享相同的资源(ROM和RAM设备),系统总线管理当IPCM访问用于读指令以及读或写数据的相同资源时可能的冲突。
16位宽的指令被存储在32位宽的设备中,并且也象数据一样可以访问。相应的是Big Endian偶数指令地址(以“0”结尾)访问32位数据中的最高有效部分(比特[31∶16]),而奇数指令地址(以“I”结尾)访问32位数据的最低有效部分(比特[15∶0])。
可以从IPCM和RAM中获取指令。可以象访问数据一样访问ROM、RAM、外设(USB、UART1、UART3、MMC和VSAP)以及存储器映射寄存器。
任务调度器304是基于硬件的设计,用作根据信道状态和优先权来协调由IPCM及时执行的32个可编程的选择DMA数据信道(虚拟DMA信道)。任务调度器执行下面的功能(1)监视、检测和寄存所提供的32个事件输入中的任意之一的出现;(2)将特定事件输入链接到特定信道或信道组中(信道映射);(3)忽略没有被映射到事先配置的信道(一个或几个)中的事件;(4)维持请求服务的所有信道的列表;(5)将预编程的优先权等级(1至7)分配给请求服务的每一个信道;和(6)检测和标记出超程/欠载(overrun/underrun)条件。
可编程DMA数据信道或虚拟DMA数据信道(下文简称为信道)管理通过IPCM 116的数据流。数据流动通常是单向的,但是可以重配置或可重编程。IPCM可以有32个同时工作的信道,标记为0到31。信道0专用于主处理器106以控制IPCM 116。其它所有信道可由主处理器软件分配。
事件是可以控制信道操作的出现的条件。事件可由外部(也就是在IPCM之外)控制条件(例如,UART接收FIFO到达一阈值)或者通过启动内部定时器(例如,事件定时器)引起。IPCM将执行最多32个事件,它们相互之间彼此随机地出现。因此,事件被设计为随机地到达任务调度器,同时任务调度器可以在任何时候处理32个事件。
任务调度器304将事件映射到信道中,并且赋给事件优先权。信道可以停止(stall)服务于一个事件上。一个事件可以唤醒不只一个信道(例如,L1定时器)。从事件到其影响的信道的映射处于程序控制之下。对于32个事件中的每一个都有一个寄存器,其包含一个位图。对于每一个信道有一位用来确定事件唤醒了哪一个信道。对于32个信道中的每一个也有一个寄存器,其包含信道将工作在哪一优先权级。
硬件调度模块这样执行一个调度算法,当脚本执行允许重新调度的指令时,将运行具有挂起事件的最高优先权脚本。
可以在任意给定的时间运行多个信道。在当前信道让出时任务调度器304(硬连线逻辑)选出最高优先权的信道运行。退出的信道可阻塞外部事件或者挂起由主处理器106或信号发生器102的干涉。仅当下面的条件为真时可运行第I个信道(HE(i))|HO[i[)&DDE[i]|DO[i])&(EP[i]|EO[i])用于每一个信道的主使能位HE[i]可由主处理器设置或清除。它可以由脚本清除。
用于每一个信道的主超越(override)使能位HO[i]可由主处理器设置或清除。它可以由脚本清除。通过设定这一位,主处理器106可允许信道不需要涉及它,就象在DSP 102和外设230之间的通信一样。
dsp使能位DE[i]由DSP设置或清除。它可以被脚本清除。
DSP超越使能位DO[i]可由主处理器设置或清除。通过设定这一位,主处理器106可防止DSP挂起信道。这是当信道传输没有涉及DSP时的情况。
事件挂起位EP[i]是任务调度器的输出。它可以由脚本清除。它也可以由主机设置以超越事件/信道连接矩阵。
事件超越位EO[i]由主处理器设置或清除。通过设置该位,主处理器可防止信道停止下来挂起外设事件。这是当信道没有处理i/o事件,例如主处理器到DSP DMA数据传输时的情况。
在复位时,将所有的HE[i]、HO[i]、DO[i]、ER[i]和EO[i]设置为0。
IPCM 116可以借助于执行指令(done instruction)或通知指令来清除HE[i]、DE[i]和EP[i]位。执行的指令引起一个重新调度,而通知指令则没有。执行和通知指令可以清除下述位中的一个(且只有一个)HE[i],DE[i],或EP[i]当几个具有相同优先权的信道都是合格时,硬件布线的选择树将自动地用最大的号来选择信道也就是,如果具有优先权4的信道7和信道24都在挂起,信道24将是下一运行的信道。
在“产生”指令的情况下(也就是产生如果大于或等于),并且具有与当前信道相同的优先权的信道在挂起时,如上面所述一样,由硬件布线选择树驱动该行为(behavior)。例如,给定的三个信道(即,7、23和29)具有相同的最高优先权。
信道7是有效的,并且运行一个“产生”;其可被信道29抢先;一会之后,信道29运行“产生”,然后,其被信道23抢先,信道23象信道29一样是被选择的信道,不属于可选择的信道,因为它是当前信道。之后,信道23运行一个“产生”,并且被信道29抢先。在每一个“产生”之后,信道23和29将继续切换,直到它们中的一个中止。仅在该时刻信道7变成合格的。在该例子中,假设没有其他合格的信道在挂起。
接下来参见图5,图中示出的描述说明了在根据本发明的实施例的图3中的定制RISC处理器中所使用的任务调度器的特定实施例的功能。图中示出的是边缘检测和锁存单元502、多路复用器504、计数器506、信道使能RAM 508、信道挂起寄存器510(产生事件挂起位EP[i]的EP)、“或”门512、“与”门514、信道误差记录器516、主使能寄存器518(产生主使能位HE[i]的HE)、主超越使能寄存器520(产生主覆盖使能位HO[i]的HO)、DSP使能寄存器522(产生DSP使能位DE[i]的DE)、DSP超越寄存器524(产生主超越位DO[i]的DO)、事件超越寄存器526(产生事件超越位EO[i]的EO)、决定树528、优先权寄存器534、最高挂起优先权寄存器530(HPPR)、和最高挂起当前信道寄存器532(HPCR)。
任务调度器304包括3级流水线,用于处理事件输入并且附给其优先权。流水线的第一级扫描事件输入,并且将检测到的事件映射到激活的信道(一个或多个)。流水线的第二级维持请求服务的信道的列表(信道挂起寄存器),并且从优先权RAM 534将优先权分配给所有挂起的信道,而第三级标识顶级优先权和相关的信道。
任务调度器的优先权输出被应用到IPCM的RISC处理器核,并且与由RSIC处理器核执行的当前优先权进行比较。该核将当前优先权保存在程序状态字(PSW)中。当遇到产生指令时,如果任务调度器优先权大于当前优先权,将发生抢占优先权。
下面的内容是对任务调度器的流水线的说明。
流水线的第一级(级1)包含放在32×1数字多路复用器504(称为mux或M1)的前端的32位边沿检测和锁存单元502。模32计数器506通过32个事件输入驱动mux504选择输入和mux504序列。对于被扫描的每一个相应的逻辑“1”,逻辑“1”应用于32×32进入信道使能RAM 508 因此将一个事件映射到信道中。与扫描到的事件对应的边沿检测锁存在下一个时钟周期被自动清除。在事件输入中的一个的正检测将一个允许读出信号加到信道使能RAM 508。一个事件可占用32个时钟以被检测。一旦检测到,事件可以在一个时钟周期内通过信道使能RAM 508从mux 504传播出去。
在第二级,信道使能RAM 508由相同的32位计数器506寻址,并且是一个具有通过每一个信道提供给每一个事件的单比特的方(32×32)阵列。如果允许信道且检测到相应的事件,从数据输出端口上的信道使能RAM 508产生逻辑“1”输出。该信号被锁存到位于信道挂起寄存器510内的相应位置。检测到的事件在2个时钟周期内从信道使能RAM 508传播到信道挂起寄存器510。信道挂起寄存器510(EP)是一个具有其各位对应于32个信道中的每一个的32位寄存器。注意,在任意给定的时钟周期上判定为(assert to)信道挂起寄存器510的信道数目由在对应于5位计数器所选择的地址的32位掩码中设为“1”的数目确定的。使用“或”门512来将“当前状态反馈”提供给陷阱(trap),并且保持在信道挂起寄存器510中的检测到的事件。同样,注意,提供了一个“位清除”输入来允许IPCM核清除在信道挂起寄存器510中的特定位。当已经服务了相应的信道时,由IPCM核通过软件指令执行该操作。
之后,使用一组32个“与”门514来检测没有被服务的事件的再主张。换言之,如果发送了一个事件且信道已经是在挂起,则一个相应的位表示和超程/欠载条件被锁存到信道差错寄存器516中。然后,告知主处理器任务调度器中的任何错误。
在流水线的第三级,前端信道挂起寄存器510的输出与EO寄存器526、HE寄存器518、HO寄存器520、DE寄存器522和DO寄存器524的输出,以及优先权寄存器534(其存储当前的优先权)用来确定哪一个信道使能,并且通过决定树528来进行排序。
这个优先权树以一个循环跟着一个循环为基础,分发具有最高优先权的使能的信道(如果(EP[i]|EO[i])&(HE[i]|HO[i])&(DE[i]|DO[i])被设为1,用于该特定的信道,则信道“i”是允许的)。
在有多个具有相同优先权的允许信道是合格的情况下,将选择第一个检测到的(检测开始于信道31,并且向下进行;也就是如果信道13和信道24都是合格的,选择信道24)。
“树结构”允许动态修改(EP[i]|EO[i])&(HE[i]|HO[i])&(DE[i]|DO[i],也允许动态修改优先权。
传播时间是从信道挂起寄存器510到FIFO的一个时钟。
下面是图5的任务调度器的步骤简要的概述,参见图5中的标记相应于图中执行步骤的部分。
在步骤1,数字mux 502扫描事件输入。所有的输入都是边沿敏感的并且被锁存直到被扫描。在扫描之后它们被自动地清除。在步骤2,当在事件和信道使能寄存器508中的相应的位映射产生正结果时,“设置”在信道挂起寄存器510中的位。在步骤3,信道挂起寄存器510(EP)连续地与来自EO、DE、DO、HE和HO寄存器的位连同其优先权组合在一起,馈给决定树528。在步骤4,在最高挂起优先权寄存器530(HPPR)中的值RISC处理器核提供当前挂起服务的最高优先权。在步骤5,信道差错寄存器516捕获当信道处于挂起且在该信道上检测到另一个随后的事件的时机。在步骤6,当已经服务该信道时,IPCM核清除在信道挂起寄存器510中的单个位。一旦清除,当检测到另一个事件时,可以再主张该信道。
在进行一个执行指令(done instruction)时,程序控制单元将跳到内容切换子程序(见附表B-用于IPCM的RISC处理器核的ROM脚本例子),并将当前内容倒出到存储器。在当前内容已经被倒出到存储器之后,执行测试挂起和切换(TstPendingAndSwitch)指令时发生“实际内容切换”,这里CRR(当前信道寄存器)(图5中未示出,但是位于IPCM的RISC处理器核内)变为PPCR 532(最高挂起信道寄存器)。
内容切换程序(见附表B)可被分成6个部分(1)加载当前内容的自旋基地址;(2)将寄存器当前内容倒出到存储器;(3)测试挂起信道并作适当地反应(TstpendingALnd Switch);(4)加载新的内容的基地址;(5)下载新的内容;和(6)拷贝阴影寄存器。
执行TstPPendingAndSwitch指令时,如果不再有HPPR 530(最高挂起优先权寄存器)为空,由于修改(HE[i]|HO[i])&(EP[i]|EO[i]&DE[i]|DO[i]或者修改优先权),RISC核将进入空闲(IDLE)模式,否则将执行内容切换脚本的第二半部分,并且将下载选择的信道的内容。
在进入IDLE模式的情况下(也就是在已经完成将内容倒出到存储器之后,HPCR/HPPR为空的情况下),在一个新的事件时,我们将继续第二半部分的脚本,并且下载与新的事件相关的信道的内容。
一旦选择,当前信道寄存器的状态(CCR)和当前信道优先权(CPRi)就不能改变了,即使相关(HE[i]|HO[i])&(EP[i]|EO[i]&DE[i]|DO[i]的条件转移到零或与之相关的优先权已被主机动态修改。
在倒出部分子程序,并且HPCR/HPPR为空之后的情况下,退出(yield)(dene_000)将以不同的方式进行处理。在这种特殊情况下,我们将继续脚本并下载回刚刚倒出存储器的内容。
下面描述了IPCM 116的几个功能单元。
在一个实施例中,定制IPCM包括与RISC处理器相连的循环冗余校验码(CRC)单元(未示出)。其能够为一组给出的多项式进行深度从8到32的CRC计算。CRC单元包括两个32位寄存器用于选取多项式的CRC算法CA和每次处理之后累计数据的CRC校验和CS。
在两个寄存器都被加载以选择多项式并初始化计算之后,CRC单元就可以在每个周期循环处理一个字节了。
DSP DMA单元310从RISC处理器核302接收指令。它可以通过DMA访问向DSP存储器写或从那里读数据并允许向石英DMA进行32位和1位传输。
DSP DMA单元310从RISC处理器核302接收指令。它可以通过DMA访问从/向DSP存储器读或写数据,并允许向石英DMA进行32位和16位传输。
DSP DMA单元310所使用的主要寄存器有两种包含向石英存储器读或写数据地址的地址寄存器(DA)和包含数据本身的数据寄存器(DD)。
因为它的预取和快速能力,DSP DMA310可以对石英存储器进行访问而不使RISC处理器核失速,这样当DSP DMA310在挂起读或写命令完成时能够执行其它指令。
主DMA单元312从RSIC处理器核302(也称为IPCM核)接收指令。其能够DMA访问从/向嵌入式DRAM 108或外部存储器244读和写数据,并且它允许32位、16位和8位传输。外部存储器244访问通过MCORE本地总线(MLB)切换完成。
主DMA312使用的有两种主要寄存器地址寄存器(MA)包含数据地址以读或写石英存储器,数据寄存器(MD)包含数据本身。
因为它的预取和快速能力,主DMA 310可以对主处理器(例如MCORE)存储器(也就是eDRAM 108)进行访问而不使RISC处理器核302失速(stall),以便使其在主DMA 310挂起要完成的读或写命令时能够执行其它指令。注意,MCORE是已知的主机或呼叫处理器。
IPCM总线切换允许通过连结到MCORE本地总线的MCORE的EIM模块访问外部存储器。它也允许其它设备(诸如MCORE测试模块、NEXUS模块或GEM模块)控制MLB。
而且,IPCM 116内部管理两个功率模式RUN和IDLE。在RUN模式下,IPCM 116的所有模块接收100MHz的IPCM时钟。当信道激活时,IPCM 116处于RUN模式。
在IDLE模式下,已经服务了所有的信道,并且没有信道处于挂起;这是在复位之后的模式。IPCM模块的大多数RICS处理器核、功能单元和总线仲裁逻辑不再接收100MHz时钟。任务调度器304在其接收到样值输入事件时继续工作,并且决定何时在此开始接收新的信道。保持IPCM 116的控制寄存器的主控制模块316和DSP控制模块314仍然接收100MHz的时钟,因为当IPCM处于IDLE模式时它们可以由主处理器106或DSP 102访问。IDLE模式节约了功率,这对于靠电池工作的环境而言是重要的。
对于主处理器来说也可能通过时钟控制器来完全停止IPCM116。在此情况下,根本没有时钟被IPCM 116接收,IPCM 116根本不可能重新启动它的时钟。主处理器能够恢复IPCM时钟。当没有通过IPCM 116要求的数据传输时,这一功能模式是有用的。
在复位之后(从复位模块接收到或由主处理器要求的软件复位),IPCM 116处于IDLE模式;一旦有信道激活,其将开始位于地址0处的引导代码。可以由主处理器在编程正的优先权并且设置在EVTPEND寄存器中的信道位之后激活信道。
重要的是要注意,当IPCM 116处于IDLE模式时,不可能执行需要执行在核上的指令的OnCE调试;必须预先通过激活信道来唤醒IPCM。一种可能是通过OnCE执行调试请求,然后激活任意的信道,该信道将起动IPCM时钟,并且所述核将无需任何指令立即进入调试模式。详细的说明参见OnCE说明章节。另一种可能是使用JTAG模块来切断IPCM时钟选通,这使得能够立即响应,并且不要求具有激活的信道;在该模式下,不论IPCM模式如何,时钟总是运行的。
下面介绍用来操作IPCM 116的可编程DMA数据信道的软件接口。
接下来参见图6,图中示出位于IPCM和主处理存储器内的指针和存储器缓冲器,其被用于直接存储器访问数据信道中的每一个信道。图中示出的IPCM包括表602,表602包括指针寄存器604、信道使能寄存器606、DSP超越寄存器608和事件超越寄存器610。图中也示出了系统RAM 601,其包括表612,表612包括信道指针613。系统RAM 601也包括表614,表614也包括缓冲器指针616、计数字段619和模式字段620。系统RAM也包括缓冲器618。
这一部分介绍用于IPCM 116和主处理器106(也称为主MCU)或DSP 102之间的缓冲器管理机制。IPCM依赖于具有用于激活每一个信道的最小的一个或多个缓冲器。这些信道缓冲器必须分别位于MCU和DSP(例如,DSP RAM 104)的系统RAM 601(例如,eDRAM108)中。通过使用作为位于MCU和DSP的系统RAM 601区域中的链路列表实现的虚拟控制寄存器来介绍和管理缓冲器。下面介绍用于主MCU端口的控制结构。
表602是一组位于IPCM 116内的硬件寄存器。指针寄存器604是可由主核访问的32位读/写寄存器,其包括指向612的指针,其具有指针613的结构。指针613和604可引用位于系统RAM 601内的任何存储器位置。
应当告知程序员,当表612和表614位于主系统601(例如,在智能电话的情况下的eDRAM 108)时,实现最佳的性能。
表612是一个具有32个入口的固定结构。每一个入口代表32个IPCM DMA数据信道中的一个,并且包括一个32位指针。IPCM 116使用表602中的指针找到表612。即便所有DE 32个信道都没有使用时,也必须给出表612的全部(entirety even)。IPCM 116不会将指针入口用于没有被允许的信道(例如,设置在信道使能寄存器606中的位)。
希望表602和612中的指针(一个或几个)值对于IPCM操作会话期间保持“静止”。
表614包含操作命令和状态寄存器、缓冲器大小指示符(例如,计数字段619)和到物理缓冲器618本身的指针616。专用的表614必须被提供给32个信道中的每一个,并且以链路列表结构实现。这种技术允许将一个或多个缓冲器618分配到单个DMA信道,从而允许有各种实现方案,诸如缓冲器交换和菊花链方式。
在操作中,IPCM 116将读出在列表中描述的第一缓冲器的命令寄存器元素,并且增加缓冲器618,直到它被充满容量或者由一些事件关闭。IPCM 116将返回到链路列表,并且如果声明了下一个缓冲器,就将其打开。当IPCM 116到达列表的末端时,所有的缓冲器618已被充满或关闭,将关闭由表614引用的贫瘠(arid)的特定的IPCM信道。通过由MCU更新用于各个信道的表614的内容,而后声称位于IPCM中的信道使能寄存器606中合适的信道使能位可重新起动该信道。
使用提供的模式,可能有各种操作情况。可选地,缓冲器618可是交换的菊花链的,或在模块模式中操作的。通过在模式寄存器中配置合适的控制位,当充满或关闭特定的缓冲器时,可向主MCU或DSP产生中断。
表614的结构之内的模式字段620包括用作信号标志并且称为“D”位的控制位。当设置缓冲区是由IPCM拥有时,计数、指针、状态、和控制字段不得由MCU改变。当D=0,MCU拥有特定的缓冲器,IPCM不会试图写入任何控制字段或缓冲器空间。
注意,到石英DSP的信道接口类似于到主MCU的信道接口。主处理器编程模型主处理器106(简称为主机)借助于几个接口寄存器控制IPCM116。除了一次命令寄存器(ONCE_CMD)要求挂起状态1及信道RAM(CHANNEL RAM)也要求挂起状态1以外。这些寄存器都可用等待状态0(wait-state)在ip总线接口上来访问,它们都由IPCM时钟提供时钟信号(这意味着当主机想要访问任何寄存器时,它必须确保IPCM时钟是运行的)。
关于允许的读和写大小任何读操作将不论读的大小(也就是忽略允许的字节数)都在总线上输入寄存器的32位内容;任何写操作根据要求的大小来更新寄存器的内容(也就是允许的字节数被用来允许将相应的字节从总线写到寄存器),除了当写入CHANNEL RAM时,CHANNEL RAM总是不论大小将总线(32位)上的实际大小的字写入到RAM中。
下面是根据本发明的一个实施例的用于控制IPCM 116的主处理器的寄存器。
COPTR(信道0指针)。该寄存器包括在主处理器中的开始于信道0(控制信道)的信道控制块阵列的32位地址。主机具有读/写访问,IPCM具有只读访问。在复位时,该寄存器全都为0。在该寄存器允许信道之前(例如,信道0),应当由主机对其初始化。
INTR-信道中断。该寄存器包括32个HI[i]位。如果设置了任意一位,将向主机引发一个中断。该寄存器是一个到主机的“一次写(write-ones)”寄存器。当主机在该寄存器中设置一位时,清除相应的HI[i]位。当服务各自的中断时,中断服务程序将清除各自的信道位,没有清除的话将导致继续中断。当运行了相应的完成执行指令时,IPCM负责设置相应于当前信道的HI[i]位。
STOP/SRAT-信道停止/信道状态。这个32位的寄存器具有用于每一个信道的一位。该寄存器是一个到主机的“一次写(write-ones)”寄存器。当主机将I写入该寄存器的位i时,清除HE[i]和START[i]位。读出该寄存器产生HE[i]位的当前状态。
SRART-信道开始。该寄存器具有用于每一个信道的一位。该寄存器是一个到主机的“一次写(write-ones)”寄存器。当清除相应的HE[i]位时,也不可设置START[i]。当主机试图通过写入1来设置START[i]位时,如果相应的HE[i]是清除的,在SRATR[i]寄存器中的位将保持清除,并且设置HE[i]位。如果已经设置了相应的HE[i]位,将设置SRART[i]位。下一次IPCM信道试图借助于执行的(done)指令来清除HE[i]位时,在START[i]寄存器中的位将被清除,并且HE[i]将获得START[i]位的旧值。读出该寄存器产生了START[i]位的当前状态。该机制允许主机每个信道输送两个START命令。
EVTOVR-信道事件超越。该寄存器包括32个EO[i]位。在此寄存器中设置的一位导致IPCM在调度相应的信道时忽略事件。向该寄存器中的写重写前一个值。
DSPOVR-信道DSP超越。该寄存器包括32个DO[i]位。在此寄存器中设置的一位导致IPCM在调度相应的信道时忽略DSP使能。
HOSTOVR-信道主机超越。该寄存器包括32个HO[i]位。在此寄存器中设置的一位导致IPCM在调度相应的信道时忽略主机使能。
EVTPEND-信道事件挂起。该寄存器包括32个EP[i]位。读此寄存器允许主机确定哪一个信道具有挂起的事件。在此寄存器中设置的一位导致IPCM重评估调度,仿佛已经发生了指定给该信道的外设事件(这是一个“一次写”机制写入“0”不会清除相应的位)。这对于启动信道是有用的,使得在挂起第一个事件之前进行初始化。任务调度器也可以根据接收的事件来设置在EVTPEND寄存器中的位。在运行信道I脚本时,可由执行指令来清除EP[i]位。
DSPENMBL-信道DSP使能。该寄存器包括32个DE[i]位(来自DSP控制模块或控制寄存器)。该寄存器使主机能够确定DSP已经允许了哪一个信道。
RESET-复位寄存器。该寄存器包括两个控制位(1)复位位(RESET
),当被设置时,引起IPCM在软件复位中被保持。在可以释放该复位之前,必须将其保持几个循环。实际上,使用一个计数器来使该软件复位(soft_rstB低)在这些循环中保持有效。当复位位被设置时,驱动soft_rstB信号使其低。由IPCM清除复位位。和(2)resched位(REST[i]),当被设置时,强迫IPCM重新调度。仿佛脚本已经运行了一个执行指令。这允许主机通过经停止寄存器清除它的HE[i]位从在信道上的失控脚本恢复,然后,经过RESET寄存器的RESCHED位来强迫进行重新调度。当开始内容交换时,由IPCM清除resched位。
EVTERR-事件错误寄存器。当接入的事件被检测到并且其触发已经处于挂起或被服务的信道时,由IPCM使用该寄存器来加热主机。这大概指出对于该信道发生了数据溢出。这是一个用于调度器的“一次写”寄存器;其仅能够设置标志;当主机读寄存器或在IPCM复位期间,清除该标志。
当已经通过事件输入引脚接收到触发了信道i的事件,并且已经设置了EP[i]位时,设置任意的EVTERR[i]位;如果主机试图设置EP[i],而EP[i]位已经被设置,不影响EVTERR[i]。
这个寄存器不同于DSP EVTERR当主机进行读并且清除它时,相同的信息在DSP寄存器中仍然可用。
INTRMASK-信道中断屏蔽标志。该寄存器包括32个中断产生屏蔽位。如果设置位INTMASK[i],HI[i]位被设置,并且任何时候,事件错误在信道i上被检测到时(也就是,EVTERR[i]被设置),将中断发送到主机。
PSW-调度器状态。这是具有下述状态信息的16位寄存器[40]寄存器(当前信道寄存器);[75]CCP(当前信道优先权);[128]NCR(下一个信道寄存器);和[1513]NCP(下一个信道优先权)。
EVTERRDBG-用于调试的事件错误寄存器。该寄存器与EVTERR相同,除了进行读时没有改变它的内容(也就是,不清楚它);该地址被用在调试模式中MCU OnCE可检查该寄存器值而不修改它。
ONCE ENB-OnCE使能。该一位寄存器选择OnCE控制源;当被清除时(0),JTAG控制OnCE;当被设置时(1),主机通过下面介绍的寄存器来控制OnCE。复位之后,清除OnCE使能位(JTAG控制)。
ONCE CMD-OnCE命令寄存器(1挂起状态)。写该寄存器将导致OnCE执行写命令;当需要时,在向该寄存器写入命令之前,ONCE_DATA和ONCE_INSTR寄存器应当被加载正确的值。
CSWADDR-内容交换地址。一个15位寄存器,其包含内容交换地址(位13-0)和使能位(14);当设置所述使能位时,假设内容交换程序开始于包括在位13-0中的地址。对于所述使能位,该寄存器的复位值为0,对于内容交换地址,为十进制32。
ILLINSTADDR-非法指令陷阱地址。该寄存器的位13-0包含当执行非法指令时IPCM跳到的地址;在复位时,其为0x0001。
CHN0ADDR-信道0地址。由引导码或IPCM使用此13位寄存器复位之后,其指向在ROM中的标准引导程序(信道0程序);通过改变该地址,用户有能力用他自己的程序来执行引导顺序。引导码的第一指令获取该寄存器的内容(其也被映射到IPCM存储器的空间)并且跳到给定的地址。复位值为0x0050(十进制为80)。
CHNENBL-信道使能RAM。主控制模块包含32×32个信道使能RAM。该信道使能RAM包含事件/信道对应映射。根据RAM的内容,任意事件可以触发信道的任何可能组合。
CHNPRI-信道优先权寄存器。这一组32个寄存器包含每一个信道的优先权;优先权号在1到7之间。0是一个保留值,由IPCM硬件使用来检测什么时候没有信道挂起。DSP编程模块相比于主处理器106(也就是主机),DSP 102经过接个接口寄存器来控制IPCM 116受到一些限制。每一个寄存器占用两个16位字以适应所有32个信道。所有的寄存器以相同方式工作,作为主处理器的对应物(counterpart)。在DSP接口中,没有实现CEVTOVR和CDSPOVR寄存器。
诸如COPTR的所有的地址都由32位字组成,该32位字可以寻址位于石英存储器空间内(4G字节)的任何位置。
所有的寄存器与IPCM时钟同步(这意味着当DSP访问这些寄存器时,主机必须确保IPCM时钟运行)。
关于读和写允许的大小任何读操作将寄存器的32位内容放到总线上,而不论读的数据大小(也就是,不考虑允许的字节);任何写操作根据要求的数据大小来更新寄存器的内容(也就是,使用允许的字节来将相应的字节从总线写到寄存器)。
下面是根据本发明的一个实施例的用于控制IPCM 116的DSP的寄存器。
COPRT-信道0指针。该寄存器在DSP存储器中包含信道控制块的阵列的32位地址,所述信道控制块以用于信道0(控制信道)的CCB开始。DSP具有读/写访问,IPCM具有只读访问。在复位时,该寄存器将全为0。在允许任何信道之前,应当由DSP初始化该寄存器。
INTR-信道中断。该寄存器包含32个DI[i]位。如果设置了任意位,将导致主机发生一个中断。该寄存器是到主机的“一次写”寄存器。当主机设置在该寄存器中的位时,清除相应的DI[i]位。当服务了中断服务程序时,它们应当清除各自的信道位。不这样做,将导致中断继续发生。当运行相应的执行指令时,IPCM负责设置相应于当前信道的DI[i]位。
STOP/STAT-信道停止/信道状态。该32位寄存器具有用于每一个信道的一位。该寄存器是到DSP的“一次写”寄存器。当DSP将1写入该寄存器的位I时,清除相应的DE[i]和START[i]位。读该寄存器将产生DE[i]位的当前状态。
START-信道开始。该32位寄存器具有用于每一个信道的一位。该寄存器是到DSP的“一次写”寄存器。当清除相应的DE[i]位时,不能设置START[i]位。当DSP试图通过写入1来设置START[i]位时,如果相应的DE[i]位是清空的,则在START[i]寄存器中的位将保持清除,并且设置DE[i]位。如果已经设置了相应的DE[i]位,将设置START[i]位。在下一次IPCM信道I试图借助于执行指令来清除DE[i]位时,将清除在START[i]寄存器中的位,并且DE[i]位将代替START[i]位的旧值。读该寄存器将产生START[i]位的当前状态。该机制允许DSP每一个信道输送两个START命令。
EVTERR-事件错误寄存器。当检测到接入事件时,由IPCM使用该寄存器来加热DSP,并且该寄存器触发已经挂起或被服务的信道。这可能意味着该信道发生了数据溢出。这是用于调度器的“一次写”寄存器。其仅能够设置标志;当由DSP读该寄存器或者在IPCM复位期间,这些标志被清除。
当通过事件输入引脚接收到触发信道I的事件并且已经设置了EP[i]位时,设置任何的EVTERR[i]位;如果主机试图设置EP[i]位,而EP[i]位已经被设置,则不影响EVTERR[i]位。
该寄存器不同于主机EVTERR。当DSP进行读操作并且清除它时,在主寄存器中相同的信息仍然可用。
INTRMASK-信道中断屏蔽标志。该寄存器包括32个中断发生屏蔽位。如果设置了位INTRMASK[i],则设置DE[i]位,并且无论何时在信道I上检测到事件错误(也就是,设置EVTERR[i]),将中断发送给DSP。
PSW-调度器状态。这是带有下面的状态信息的16位寄存器[40]CCR(当前信道寄存器);[75]CCR(当前信道优先权);[128]NCR(下一个信道寄存器);和[1513]NCP(下一个信道优先权)。
EVTERRDBG-用于调试的事件错误寄存器。该寄存器与EVTERR相同,除了进行读操作时不改变它的内容(也就是,不清除它);该地址被用于调试模式。DSP OnCE可检查该寄存器而不修改它。IPCM编程模型每一个可编程DMA数据信道具有被脚本使用的8个通用的32位寄存器。通用寄存器0具有用于环路指令的专用功能,但可以用于其它目的。
功能单元状态。每一个信道内容具有作为功能单元的部分的一些状态。该状态的特定分配是该功能单元定义的部分。该状态必须在内容交换中保存/恢复。
编程计数寄存器(PC)。该PC是14位的。由于指令是16位宽度,且在IPCM中的所有的存储器是32位宽度,PC的最低位选择包含当前指令的32位字的一半。具有0的最低位选择该字的最高有效一半(也就是,Big-Endian)。
标志。每一个信道具有4个标志T位反映一些运算和测试指令的状态。当加法或减法的结果为0时设置该标志,其它情况则清除它。它也是对测试位的复制。最后,当环路计数器(Greg0)为0时,也可设置该标志;当硬件环路的最后指令是可修改T标志的操作时,不考虑对T的影响,且由Greg0状态代替。
另两个位SF和DR被用来分别指出来自于加载数据源和存储到目的地的错误条件。访问错误将设置这些位,成功的事务则清除它们。也可以由特定指令(CLRF和LOOP)清除这两位。通过加载LD和LDF来更新SF(源错误);通过存储ST和STF来更新DF(目的地错误)。
由几种条件引起访问错误写入ROM,写入只读映射倒寄存器的存储器。当外设进行访问时,其接收到访问技术非映射地址(accessingart unmapped address)或者任何传输错误。
SF和DF标志对硬件环路的性能产生主要影响如果当开始硬件环路时SF或DF被设置,并且SF或DF没有被环路指令屏蔽,不会执行该循环体;现在,在循环体内部,如果负载或存储设置相应的SF或DF标志,则循环立即退出。测试在环路的末端处的T标志的状态(也测量SF和DF)指出是否由于任何预期的退出防止Greg0到达0值从而设置了T标志导致循环异常地退出。如果错误发生在上一个循环的最后的指令处,这也是有效的。
最后的标志是循环模式标志LM,其指出何时处理器工作在循环模式。该标志由循环指令设置,并且在执行上一个循环的最后的指令后被清除。
返回程序计数器(RPC)。RPC为4位。通过跳到子程序指令来设置,并且由从子程序指令返回使用。提供指令来向/从通用寄存器传输它的内容。
环路模式开始程序计数器(SPC)。SPC为14位。由环路指令将其设置到紧跟其后的位置。
环路模式结束程序计数器(EPC)。EPC为14位。由环路指令将其设置到在循环之后的下一个指令的位置。
内容交换。每一个信道具有由8个通用寄存器和代表所述功能单元的状态的附加内容组成的隔离的内容。激活的寄存器和功能单元包含激活信道的内容。不激活信道的内容存储在作为部分或IPCM地址空间的IPCM RAM中。内容交换将旧信道的内容区域存储到激活的存储器,并且从新的信道的内容区域加载新的内容。这正好要求47个IPCM循环来完成。
可能定义一个定制的内容交换程序。只要可能,用户必须将其存储到RAM中,并且必须经过MCORE将它的地址写入CSWADDR控制寄存器中。使用该选项,不可能获得象内嵌的程序一样的相似的循环计数(也就是,47循环),因为所有的加载和存储要求2个循环来完成而不是要求在ROM程序中的1个循环(1个循环执行加载/存储,另一个循环获取下一个指令两个访问都使用RAM,这意味着他们不能够被并行地进行)。
存储器映射寄存器。IPCM可以通过系统总线访问几个寄存器。
主信道0指针(MCOPTR)。在MCU存储器空间中,其包含初始IPCM内容和脚本的地址,由运行在信道0上的IPCM引导脚本加载所述初始IPCM内容和脚本。这是只读寄存器。
DSP信道0指针(DCOPTR)。在DSP存储器空间中,其包含初始IPCM内容和脚本的地址,由运行在信道0上的IPCM引导脚本加载所述初始IPCM内容和脚本。这是只读寄存器。
当前信道寄存器(CCR)。其包含安装信道内容的信道的5位优先权。这是只读寄存器。
当前信道优先权(CCPR)。其包含安装了内容的信道的3位优先权。这是只读寄存器。
最高挂起信道寄存器(HPCR)。包含信道的已编码的32位信道号,所述信道已被任务调度器选择来下一次运行。在选择的位置或信道将一位设为“1”(类如,如果HPCR包含值0x04000000,信道26是被调度器选择的下一个信道)。这是只读寄存器。
最高挂起优先权(HDPR)。其包含信道的3位优先权,所述信道已被任务调度器选择来下一次运行。这是只读寄存器。
当前信道指针(CCPTR)。其包含用于当前信道的内容数据的开始地址它的值为CONTEXT_BASE+20*CCR(CONTEXT_BASE=0x0800);这是只读寄存器。
CHN0ADDR。其包含由MCORE编程的信道0程序的地址;在每一次开始引导并且IPCM跳到它包含的地址时,它被加载到通用寄存器。缺省情况下,其指向ROM中的标准引导程序。
地址空间。IPCM具有连个内部总线用来从存储器中读出指令的指令总线;和用来访问与在指令总线上的可视存储器相同的存储器的数据总线,加上一些存储器映射寄存器(调度器状态和OnCE寄存器)和5个外设寄存器(USB、UART1、UART3、MMC和视频SAP)。
指令内存映象。它基于14位地址总线和16位数据(指令)总线;从程序ROM或程序RAM中获得指令。IPCM脚本能够改变程序RAM的内容,所述程序RAM也可从数据总线上看到。
最前面的两个指令位置(在0和1处)是特殊的。位置0是在复位时设置PC之处。位置1是在执行非法指令时设置PC之处。希望这两个位置都包含一个jmp以处理程序。
数据内存映象。IPCM脚本可访问的所有数据占据(make tip)数据存储器空间或IPCM。该地址空间有几个部分ROM、RAM、外设寄存器和调度寄存器(CCR、HPCR和CCPTR)以及OnCE寄存器。IPCM脚本可以读和写内容RAM、数据RAM和外设寄存器。
地址范围是16位,数据宽度是32位;然而,当访问外设寄存器(USB,等等),数据宽度可以不同;在此情况下,外设忽略要写入的32位数据的未使用部分;在读操作中,32位读数据中的丢失部分由“0”代替。IPCM初始化在硬件复位之后,IPCM 116、程序RAM、内容RAM和数据RAM具有不可预测的内容。有效的寄存器设置被分配给信道0,并且PC被初始化为全0。然而,由于信道使能寄存器都为0,没有有效的信道,并且中止IPCM。
为了启动IPCM,主处理器106(即主机)首先在用于控制信道(信道0)中创建几个信道控制块,然后将信道0指针寄存器初始化为第一控制块的地址。然后设置在信道使能寄存器中的位0(对应于信道0)。
当被允许时,IPCM 116开始执行在用于信道0的程序ROM中的、位于地址0处的脚本。这个ROM 308脚本将读出信道0指针寄存器,并且使用含在其中的地址来开始获取(使用DMA)第一信道控制块。如果该块包含有效的命令,其解释该命令(其通常被用于从主机下载一些数据道IPCM存储器)并且继续执行该命令以及移动到下一个控制块。这将继续下去,直到到达一个无效的信道命令,到达无效命令时将中止脚本,等主机再次允许该信道。
也有两种方法来使IPCM在用户自定义的脚本上引导。首先,通过使用OnCE(经过它的MCORE接口的Jtag接口)来下载在IPCM RAM中的任何代码,并且强迫IPCM引导该代码;其次,通过使用在主编程模型中的CHN0ADDR寄存器,IPCM引导代码获得该寄存器的内容并且跳到给定的地址。
IPCM脚本的执行取决于组成脚本的指令和在其上工作的数据内容。在允许执行脚本之前,二者都必须初始化。32个信道中的每一个具有一个隔离的数据内容,但是可以共享在数据RAM中的脚本和位置。
主机管理程序RAM和数据RAM中的空间。其也管理IPCM信道的分配,这些信道被分配给要求它们的设备驱动器。通过主机使用信道0来下载任何要求的脚本和数据值以及信道初始化内容来初始化信道。所述内容包含寄存器的所有初始化值,包括PC。然后,主机106激活该信道,并且该信道编程有效,开始从它的脚本中获取和执行指令。
参见题目为“用于IPCM的RISC处理器的指令集”的附件A,其介绍了根据本发明的一个实施例的、用于IPCM 116中的优选的指令完整集。
下面进一步介绍对应于采用附表A功能单元的指令集的实施例的DSP DMA单元和主处理器DMA单元。
该功能单元指令导致8位代码(可在指令的低8位中找到)出现在(asserted)功能单元控制总线上。使用这些位中的一些位来选择几个功能单元中的一个。为了建立编程设计约定,假设选择的位是8位代码中的最高有效位中的一些位。而且,由给定的功能单元解码最低有效位的一些位来建立要执行的操作类型。
对于主DMA单元312,DMA指令控制DMA状态机,并且可引起在相关的存储器总线上的一个DMA循环。有三个寄存器与主DMA单元相关地址寄存器(MA)、数据缓冲器(MD)和状态机寄存器(MS)。
地址寄存器(MA)包含指向与下一个数据传输相关的DMA存储器的指针。其具有字节间隔尺寸。用1df指令读该寄存器(也就是,读操作)没有负面影响。写地址寄存器可能有负面影响。如果在缓冲器中有一个写数据值,并且地址改变,该写数据将被刷新(即,发出一个DMA写循环)。如果设置了预取的位,并且没有有效的写数据,用新的地址发出DMA读循环。
当数据被传输到数据缓冲器或从数据缓冲器传输出时,将地址寄存器增加传输的字节数目/地址增加32位字边界的数目,将刷新在缓冲器中的任何有效的写数据。
在数据缓冲器(MD)中,DMA循环不总是与加载写缓冲器的stf指令相关,该指令可刚好将传输的子单元加载到缓冲寄存器,因为缓冲寄存器累加字节,之后该字节被用在实际的大小的存储器传输中。DMA单元保持字节有效的状态,并且正确地移位和插入信数据。加载写缓冲器的指令可有条件地导致刷新结果缓冲器,引起一个DMA写循环,即使没有完全填满该缓冲器。
如果还没有取走数据,读数据缓冲器的1df指令可引起DMA循环。如果在缓冲器中的所有字节已经被传输,每一个读传输可以有条件地引起预取。
数据缓冲器的读和写可以分别引起目的或源错误。由于MLB不支持24位访问,当在MLB上请求3字节访问时,主DMA触发错误。当请求刷新或获取时,没有发生这种情况;只要没有外部访问要执行,内部MD寄存器可以在任何时候具有3字节的数据。eDRAM支持3字节的访问。
有一种刷新的特殊情况使用字节访问MD,可能得到3个有效字节,并且请求刷新;在MD中的3个有效字节将被正确地写入eDRAM;但是,如果是在MLB上进行写操作,该访问将引起错误。
状态寄存器(MS)包含DMA状态-机值。不希望用户在正常模式下访问它。实际上,由于在DMA处于任何状态时可发生内容交换,需要保存该状态,这个保存由内容交换程序来完成。
预取和刷新管理允许在执行DMA访问时继续IPCM RISC机制。当RISC核要求对主DMA进行预取(p=1)或自动刷新(f=0)时,在DMA完成外部访问之前,RISC核将接收一个立即传输确认;这允许RISC核进行类似访问其它DMA机制的其它事情。
然而,用户必须注意该机制的固有限制只要DMA没有FIFO栈来存储命令,如果发出了预取/自动刷新命令,而DMA没有完成它的上一个访问,将延迟传输确认,直到所述的在前访问过去。
另一点是错误管理当DMA立即将确认发送到RISC核时,假设没有错误发生(除了如果检测到象对MLB的24位访问的访问被禁止)。如果发生了错误,将做出标记(传输错误确认),以用于后面的DMA访问。
如果恰当地使用了DMA,则这不成为问题。预取/自动刷新特征被用于硬件环路中,且在硬件环路之后应当执行没有预取(p=0)的最后一个访问或强制的刷新(f=1)该访问将收集任何剩下的错误(错误本身以及来自前一个预取或自动刷新访问的错误)。
DSP DMA单元310功能上相同于主DMA单元312,但有一些微小的限制。其允许到石英DMA进行32位和16位传输。
DMA指令控制DMA状态机,且可在相关的存储器总线上引起DMA循环。有三个与主DMA单元相关的寄存器地址寄存器(DA)、数据缓冲器(DD)和状态机寄存器(DS)。
地址寄存器(DA)包含指向与下一个数据传输相关的DMA存储器的指针。其具有字节间隔尺寸。用1df指令读该寄存器没有负面影响。写地址寄存器可能有负面影响。如果在缓冲器中有一个写数据值,并且地址改变,该写数据将被刷新(即,发出一个DMA写循环)。如果设置了预取的位,并且没有有效的写数据,用新的地址发出DMA读循环。
当数据被传输到数据缓冲器或从数据缓冲器传输出时,将地址寄存器增加传输的字节数目/地址增加32位字边界的数目,将刷新在缓冲器中的任何有效的写数据。
在数据缓冲器(DD)中,DMA循环不总是与加载写缓冲器的DMA指令相关,该指令可刚好将传输的子单元加载到缓冲寄存器,因为缓冲寄存器累加字节,之后该字节被用在实际的大小的存储器传输中。DMA状态保持字节有效的状态,并且正确地移位和插入新数据。加载写缓冲器的指令可有条件地导致刷新结果缓冲器,引起一个DMA写循环,即使没有完全填满该缓冲器。
如果还没有取走数据,读数据缓冲器的DMA指令可引起DMA循环。如果在缓冲器中的所有字节已经被传输,每一个读传输可以有条件地引起预取。
数据缓冲器的读和写可以分别引起目的或源错误。由于石英DMA不支持字节访问,DSP DMA检测任何未允许的访问大小并且因此触发错误。未允许的大小为1字节和3字节。当请求刷新或获取时,才发生这种情况。只要没有外部访问要执行,内部DD寄存器可以在任何时候具有I-字节或3-字节的数据。
状态寄存器(DS)包括没有负面影响的00110000的32位读操作。
预取和刷新管理允许在执行DMA访问时继续IPCM RISC机制。当RISC核要求对主DMA进行预取(p=1)或自动刷新(f=0)时,在DMA完成外部访问之前,RISC核将接收一个立即传输确认;这允许RISC核进行类似访问其它DMA机制的其它事情。
然而,用户必须注意该机制的固有限制只要DMA没有FIFO栈来存储命令,如果发出了预取/自动刷新命令,而DMA没有完成它的上一个访问,将延迟传输确认,直到所述的在前访问过去。
另一点是错误管理当DMA立即将确认发送到RISC核时,假设没有错误发生(除了如果检测到象对MLB的24位访问的访问被禁止)。如果发生了错误,将做出标记(传输错误确认),以用于后面的DMA访问。
如果恰当地使用了DMA,则这不成为问题。预取/自动刷新特征被用于硬件环路中,且在硬件环路之后应当执行没有预取(p=0)的最后一个访问或强制的刷新(f=1)该访问将收集任何剩下的错误(错误本身以及来自前一个预取或自动刷新访问的错误)。程序设计约定在主机或DSP中见到的多数程序模型不是由IPCM的硬件结构托管(mandate),而是由在IPCM上运行的脚本托管。一些脚本在ROM中,使得它们给出的约定难以更改。
在主处理器一方,在一个阵列中有32个信道控制块(CCG),在C0PTR中指出该阵列的基地址。每一个控制块由4个32位字组成。第一个字包含当前未定义的状态。第二个字包含指向缓冲器描述符(Bd)的阵列的基址的指针。第三个字包含指向当前BD的指针。第四个字当前未使用。
仅当信道不运行时,可由主机改变信道控制块的内容。
主缓冲器描述符(参见图6)形成可编程大小的阵列,最后的缓冲器描述符被这样标记。缓冲器描述符的阵列被当作一个环(ring),一些逻辑上连续的部分由主机拥有,剩余部分由IPCM拥有。状态位指出每一个缓冲器描述符的主权。
当缓冲器描述符将主权从主机改变到IPCM时,计数字段指出有多少要传输的数据或者接收缓冲器的大小。当主权被返给主机时,计数指出传输或接收了多少数据。
信到0命令。缓冲器描述符的命令字段包含用于主机和IPCM之间通信的8位命令代码。目前,信到0脚本仅识别下面的命令(1)将在随后的命令中使用的IPCM地址设为包含在缓冲器地址字段中的值;(2)从在缓冲器地址处的主存储器复制到IPCM存储器;(3)从IPCM存储器复制到在缓冲器地址处的主存储器;(4)从主存储器复制到在高5位中的信道号的信道内容;和(5)从在高5位中的信道号的信道内容复制到主存储器。
在DSP一方,在一个阵列中有32个信道控制块(CCB),所述阵列的基地址在C0-TR中指出。没有使用用于信道0的CCB。每一个信到控制块由8个16位字组成/第一个两个字包含当前未定义的状态。第二个两个字包含指向缓冲器描述符(Bd)的基址的指针。第三个两个字包含指向当前BD的指针。第四个两个字当前未使用。动态存储器刷新方法现在简要地回顾一下图2,示出的处理器平台包括用于刷新动态随机访问存储器也就是eDRAM的刷新控制器。刷新控制器220经r总线240、通过数据路径选择218被耦合到eDRAM 108,其进行对多路复用从诸如IPCM 116、主处理器106和LCD控制器204的竞争设备的对eDRAM的访问。
正如本领域中所熟知的那样,要求给动态存储器(DRAM或eDRAM)提供DC电源并且周期地对其进行刷新,使得保持存储在存储器中的数据。相反,只要将恒定的电源供给静态存储器(例如,SRAM),不需要刷新静态存储器。设计处理器平台100的一个实施例的刷新控制器220来尽可能的节约电源,这对于手持应用来说有利地延长电池寿命。
刷新控制器220有两个基本的运行模式有效模式和数据保持模式。有效模式在eDRAM 108的正常的操作期间被调用。任何时候终端用户操作包含了处理器平台100的产品,则使用该有效模式。有效模式使用在离散DRAM实现领域中熟知的“循环封装(cycle stealing)”分布式刷新方法。
当包含了处理器平台100的产品没有工作并且希望保持eDRAM108的内容时,调用数据保持模式。该数据保持模式有三种工作模式(1)分布式刷新方法,(2)“选择刷新”方法和(3)“温度补偿”刷新方法。
本领域中熟知的分布式刷新方法与工作的有效模式的相同点在于存储器被周期地刷新,而选择刷新和温度补偿刷新可以被单独使用或可被一起使用,以减少要求用于保持数据在eDRAM存储器阵列的功率量,或者可以被一起使用来获得进一步完全减少保持数据而消耗的功率,这导致电池寿命更长,电池寿命对于手持应用来说特别地重要。
尽管有效模式和分布式刷新技术在本领域中是熟知的,尽管在其它实事例中可使用本领域中其他熟知的时钟,有利的是,刷新控制器220使用低频时钟源,该时钟源来自于工作于32kHz的日立钟模块。因此,在优选实施例中,到刷新控制器220的时钟输入252是要求用于包含了处理器平台100的产品中的日立钟。
该32kHz时钟输入252在刷新控制器252内被倍增(x2),并且被用来激活刷新循环。如本领域所熟知的那样,在具有“n”个状态的刷新控制器220中提供了一个计数器,这里“n”等于在阵列中的行总数。计数器是随每一个时钟跳变的递增模“n”。如本领域所熟知的那样,“读出放大器(Sense amplifiers)”执行对在各行中的选择的位单元的实际刷新。
有利的是,刷新控制器220使用已有的日历钟作为时钟输入;因此,消除了用分离的专用时钟来运行刷新控制器220的需要,而这是常规所需要的。采用分离的专用时钟用于刷新控制器220进一步增加了当断电时系统消耗的功率。
接下来参见图7,选择刷新方法有利地减少了存储器(例如,eDRAM 108)中要刷新的行数,为了以减少要保持的存储器数目为带价来减少功耗。例如,如果存储器(例如,DRAM)可以分为多个部分,可刷新存储器中的多个部分中的一个或多个而无需刷新所有的部分。特别地,多个部分可以是阵列中的存储器的多行。因此,将保存被刷新的存储器的多行的内容,而在存储器的行中没有被刷新的内容将丢失。例如,当由用户关闭设备时(例如,断开),主处理器106确定在存储器中(例如,eDRAM 108)的哪些行需要保存,哪些部分(例如,行)不需要保持(步骤702)。接下来,主处理器106将控制信号发送到刷新控制器220,通知希望保存主处理器存储器中的哪些行或部分(步骤704)。刷新控制器220被配置以仅刷新在断电期间、在存储器内的标识的行或部分。然后,刷新控制器220访问主处理器存储器(例如,通过数据路径选择218访问eDRAM 108)并且刷新配置的行(步骤706)。因此,在刷新存储器中消耗的功率很小,因为仅有存储器的一部分被刷新,而不是刷新整个存储器。在此实施例中,这相当节省功耗,因为eDRAM 108很大,通常该功耗小于需要用于保存整个eDRAM 108的功耗。
下面介绍刷新控制器220执行的选择刷新方法。假设在存储器阵列(例如eDRAM 108)中有n行,将j定义为要刷新的存储器阵列中的总行数,这样j是在数字0和n之间。则该算法变为i=0刷新Rowii=i+1模j换言之,刷新控制器220模“n”计数器降低为模“(n-a)”计数器,其中“a”为在刷新中省略的行数。
接下来参见图8,流程800示出了执行存储器刷新的温度补偿方法的图2的刷新控制器220的步骤。存储器刷新的温度补偿方法根据产品的周围温度来调整刷新行为的周期。在常温和下面中,这可节约相当多的功率,这对于增加在手持设备工作的电池的电池寿命很重要。
通常,温度越高,要求更加频繁地刷新给定的存储器(例如,eDRAM)。现有技术的方法根据“最坏情况”的情形来设计刷新单元的刷新速率,在这些情形下,包含了DRAM的产品处于很高的缺省温度下。这样,在大多数时间内,存储器实际上为“过刷新”。然而,在很注重尺寸和功耗的应用中,诸如在用作为希望使功耗最小的多媒体无线手持设备中的处理器平台100的使用中,这种“过刷新”可导致由于不必要的过多操作刷新控制器而产生的功率消耗。
因此,与常规的刷新控制器不同,假设用于刷新控制器220的缺省温度很低,使得缺省刷新速率很低(也就是,在刷新之间的时间更长),通常导致节省了功率。然而,该产品的温度可处于此低温或者之下,但在其它时候产品的环境温度高于此低的刷新速率温度。除非刷新速率补偿了更高的温度,在DRAM中保持的数据将在刷新循环之间丢失。因此,刷新的温度补偿方法测量产品的环境温度以确定刷新速率是否需要增加或是否可以维持在较低的刷新循环以节约功率。当产品的环境温度高,刷新循环之间的时间被减少。
具体而言,下面介绍温度补偿刷新方法。首先,假定一个数字定时器电路被一个精确的百万分之+/-100时钟计时,并且具有至少0.1秒的分辨率。该定时器应当能够使用合适的时钟信号来测量时间,并且在经过预编程的时间之后,发送“事件”。该定时器应当具有一个被设为整数值的寄存器,且被用来表示要被测量的预编程值逝去的时间。也假定电子数字温度电路,其指出精度为+/“j”度的x到7度的范围,并且进一步假设一个翻译表,该表由具有“n”个元素的非易失性存储器阵列(例如,预编程的ROM)组成,每一个元素包含在此称为“计数”的整数。由下式确定阵列的界限(即,元素数目)n=y-x,式中n为阵列元素的数目,x和y为上下限温度范围。
“计数”的绝对值和范围必须与在数字定时器中支持的“计数”寄存器的绝对值和范围相适合。每一个“计数”入口被分配来占据阵列中的一个元素。以线性升序排列阵列中的“计数”入口,使得在阵列中的第一个元素对应于最低的测量温度(即,x),并且阵列中的最后的元素对应于最高的测量的温度(即,y)。
从实验数据中得到分配给每一个计数入口的值,所述实验数据是从要使用的实际的DRAM存储器设备的实际样值中获得的。作为替换,可以通过晶体管的泄漏特性的计算机仿真方法来确定用于“计数”的值,所述晶体管的泄漏特性被使用在存储器阵列中作为环境温度改变的函数。在两种情况下,“计数”的值代表最小刷新速率,需要该刷新速率以维持在位于x到y度的范围内的特定温度下的数据完整性。在阵列中的每一个元素代表环境温度的递增改变,环境温度开始于温度x,并且增加到温度y。每一个元素的内容代表维持数据完整性的所必需的最小刷新速率。必须给定附加的误差以适应数字温度精度“j”和存储器工作电压误差以及期望的单元-单元变化。希望以相对于温度的线性方式来排列阵列的元素,“计数”值可该代表指数特性。
通过刷新存储器阵列中的所有行来开始温度补偿刷新方法工作程序(步骤802)。注意,对行的刷新可由相对于图7在上面介绍的“选择刷新方法”管理,使得在步骤802中进行的刷新少于对在存储器阵列的存储器中的所有行(部分)的刷新。接下来,使用数字温度计测量环境温度(步骤804)。接着,使用一个查找表来将环境温度测量值转换成一个计数值(步骤806)。查找表代表通过仿真和实验数据确定的不同温度处的各种刷新速率。如果测量的温度超出查找表的边界,则在超过最低边界“x”的情况下应当选择第一个元素,或在超过最高边界“y”的情况下应当选择最后一个元素。将计数值应用到数字定时器电路(步骤808)。一旦终止了定时器“事件”,也就是数字定时器电路终止(步骤810),刷新所有的行;因此,重复步骤802到步骤810。无限地重复所有的步骤,直到给产品上电(turned on)(步骤812);因此,重新进入有效刷新模式(步骤814)。
因此,通过采用存储器刷新的温度补偿刷新方法,尤其是在或低于室温工作环境下时,与标准刷新操作(例如,分布式刷新方法)相比,节约了功率。
有利的是,可以同时操作“温度补偿模式”和“选择刷新模式”,以消耗可能最低的数据保持功率。在产品关闭之前,经公开地向h总线232发送信号,由主处理器配置刷新控制器的运行模式。当主处理器106重新进入有效状态即接通电源时,刷新控制器220自动地回复到“正常”运行的刷新模式(例如,分布式刷新)。可以无缝地执行数据保持和正常操作(有效模式)之间的转换,无需要求来自主处理器106的任何干涉。
###接下来参见图9,方框图示出了使用图7和8的选择刷新技术和温度补偿刷新技术的存储器刷新系统900。图中示出了日历钟902,二进制计数器904和906,比较器908和910,局部刷新寄存器912,主处理器914(主机MCU 914),计数寄存器916,存储器阵列918,数字温度测量920,温度传感器922,刷新使能触发器924,清除信号926,设置信号928,刷新使能信号930和刷新行使能932。
与图7和8的相关介绍一致,数字温度传感器922测量环境温度。如上参照图8的所述,该温度测量值920被送到存储器阵列918,并且被根据存储在存储器阵列中的查找表转换成计数值。此计数值对应于用于各种运行温度的刷新循环之间的时间测量值。该计数值被复制到计数寄存器916中。然后,由它们之间连接的比较器将该计数值与二进制计数器906的值进行比较。二进制计数器906被耦合到日历钟902,使得它根据实际时间来进行计数。
当二进制计数器906中的值等于计数寄存器916中的值时,比较器910输出一个设置信号928以设置刷新使能触发器924来激活一个刷新循环,也就是刷新使能触发器924输出一个刷新使能信号930(例如,刷新使能信号930变成高电平或“1”)。此时,根据温度确定了一定的时间量之后,刷新存储器。同样,设置信号928被输回到二进制计数器906(将其重设为0或另一个参考开始点)并且送到数字温度测量920,该数字温度测量被重新加载到存储器阵列918以为下一个刷新循环确定下一个可变的时间量。如果温度保持相同,刷新循环之间的时间保持相同。当温度改变时,刷新循环之间的时间将改变。例如,如果温度降低,则加长刷新循环之间的时间,这有利地节约了功率,因为不频繁地发生刷新循环。
此外,主处理器耦合到局部刷新寄存器912,使得主处理器914将一个值加载到局部刷新寄存器912中,指出要刷新系统存储器的哪一部分,例如,要刷新哪一行,不刷新哪一列。然后,由它们之间连接的比较器908将局部刷新寄存器912的值与二进制计数器904的值进行比较。二进制计数器904也连接到日历钟902,但是二进制计数器904不开始计数,直到比较器910输出一个设置信号928,该设置信号也被输到二进制计数器904。因此,一旦由进入刷新使能触发器924的设置信号928激活刷新循环(输出了刷新使能信号),则二进制计数器904开始计数。
一旦二进制计数器904中的值等于局部刷新寄存器912中的值,比较器将一个清除信号926输到刷新使能触发器924,并且输回到二进制计数器904。该清除信号复位二进制计数器904,且引起刷新使能触发器禁止刷新使能信号930(例如,刷新使能信号930变低或为“0”)。这有效地停止了刷新过程,使得不刷新存储器的整个部分(因为在断电之前有主处理器确定),这有利地节约了功率。注意,在此实施例中,二进制计数器也对相应于存储器(DRAM)中的刷新行地址的数目进行计数,也就是刷新行地址信号932进行计数。
有利地是,在图9中示出的存储器刷新系统都使用选择刷新技术和温度补偿刷新技术来共同减少在刷新DRAM期间的功耗。使用的组件在本领域中是公知的。根据该实施例,大多数组件可以是图2的刷新控制器220的一部分。例如,在一个实施例中,温度传感器922,温度测量920和存储器阵列918位于单独的芯片上,而主处理器位于相同的处理器平台上。局部刷新寄存器912,比较器908和910,二进制计数器904和906,计数寄存器916,和刷新使能触发器924都是刷新控制器220的一部分。
尽管借助于特定的实施例和应用介绍了在此公开的发明,在不背离权利要求书中阐述的发明范围的情况下,本领域普通技术人员可以进行各种修改和变化。
权利要求
1.一种数据传输系统,其包括多个外设接口;第一存储器;和耦合到第一存储器的可编程直接存储器访问模块,其连接到所述多个外设接口,其中,所述可编程直接存储器访问模块配置在第一存储器和所述多个外设接口的各个外设接口之间的选择地可编程直接存储器访问数据信道。
2.根据权利要求1的所述数据传输系统,进一步包括耦合到所述可编程直接存储器访问模块并且与第一存储器相关的第一处理器。
3.根据权利要求1的所述数据传输系统,进一步包括耦合到所述可编程直接存储器访问模块的第二存储器,其中,所述可编程直接存储器访问模块配置在第二存储器和所述多个外设接口的各个外设接口之间的所述选择地可编程直接存储器访问数据信道。
4.根据权利要求3的所述数据传输系统,进一步包括耦合到所述可编程直接存储器访问模块并且与第二存储器相关的第二处理器。
5.根据权利要求3的所述数据传输系统,其中,配置第一存储器和第二存储器之间的所述选择地可编程直接存储器访问信道。
6.根据权利要求1的所述数据传输系统,其中所述可编程直接存储器访问模块包括可编程处理器。
7.根据权利要求6的所述数据传输系统,其中,所述可编程直接存储器访问模块进一步包括耦合到所述可编程处理器的直接存储器访问控制器,其中所述编程处理器经过所述直接存储器访问控制器的专用直接存储器访问数据传输信道来配置在第一存储器和所述多个外设接口的各个外设接口之间的所述选择地可编程直接存储器访问数据信道。
8.根据权利要求1的所述数据传输系统,其中,所述可编程直接存储器访问模块进一步包括可编程调度器,该可编程调度器用于通过所述选择的可编程直接存储器访问数据信道中的各个数据信道来给数据传输分配优先权。
9.一种直接存储器访问系统,包括直接存储器访问控制器,其建立直接存储器访问数据信道,并且包括用于耦合到存储器的第一接口;用于耦合到多个节点的第二接口;和耦合到所述直接存储器访问控制器且耦合到第二接口的处理器,其中,所述处理器配置所述直接存储器访问数据信道以在所述多个节点的一个或多个可编程选择的节点与所述存储器之间传输数据。
10.根据权利要求9的所述系统,其中所述多个节点是多个外设接口和存储器接口中的一个。
11.根据权利要求9的所述系统,进一步包括耦合到所述处理器的可编程调度器,其经过所述直接存储器访问数据信道来赋给所述数据传输优先权,使得根据预定的优先权来进行所述数据传输。
12.一种用于执行直接存储器访问的方法,该方法包括接收用于直接存储器访问数据传输的请求;配置代码以在由所述请求指定的节点和直接存储器访问接口之间建立直接存储器访问数据传输信道;和沿着所述直接存储器访问数据传输信道在所述节点和所述直接存储器接口之间传输数据。
13.根据权利要求12的所述方法,其中,所述接收步骤包括接收用于直接存储器访问数据传输的定时请求。
14.根据权利要求12的所述方法,进一步包括为经所述直接存储器访问数据传输信道传输的数据来分配优先权。
15.根据权利要求14的所述方法,进一步包括在更高优先权的直接存储器访问数据传输被要求的情况下,中断所述数据传输。
16.根据权利要求15的所述方法,进一步包括当完成了所述更高优先权直接存储器访问数据传输时,恢复所述中断的数据传输。
17.一种存储器访问系统,包括存储器;经具有第一总线宽度的第一总线耦合到所述存储器的多路复用器;经具有第二总线宽度的第二总线耦合到所述多路复用器的主处理器,其中第二总线宽度小于第一总线宽度;和经具有与第一总线宽度相同的第三总线宽度的第三总线耦合到所述多路复用器的显示控制器,以允许所述存储器被用作所述主处理器和所述显示控制器的缓冲器,使得所述显示控制器和所述主处理器中之一可访问所述存储器,而不限制所述主处理器或所述显示控制器的另一个访问所述存储器的能力。
18.根据权利要求17的所述存储器访问系统,其中第一总线宽度为128位。
19.根据权利要求17的所述存储器访问系统,其中第二总线宽度为预定的位数,所述预定位数为8,16或32位。
20.根据权利要求17的所述存储器访问系统,进一步包括经具有比第一总线宽度窄的第四总线宽度的第四总线耦合到所述多路复用器的可编程直接存储器访问模块,以允许所述存储器被用作直接存储器访问节点。
21.根据权利要求20的所述存储器访问系统,其中第四总线宽度为预定的位数,所述预定位数为8,16或32位。
22.根据权利要求17的所述存储器访问系统,其中所述存储器被嵌入到包括所述主处理器和所述显示控制器的处理器平台。
23.一种存储器刷新的方法,该方法包括提供具有预定容量的动态随机访问存储器;和周期地刷新小于其预定容量的所述动态随机访问存储器的一部分,以减少由于刷新所述存储器部分消耗的功率。
24.根据权利要求23的所述方法,进一步包括根据环境温度调整所述动态随机访问存储器的刷新速率,并且通过周期地以所述调整的刷新速率刷新所述部分来周期地刷新存储器。
25.根据权利要求23的所述方法,其中所述存储器容量包括预定的总行数,且所述存储器部分包括小于它的预定总行数的所述动态随机访问存储器的行数。
26.一种存储器刷新的方法,该方法包括提供动态随机访问存储器;根据环境温度来调整所述动态随机访问存储器的刷新速率;和以所述调整的刷新速率来周期地刷新所述动态随机访问存储器,在所述调整的刷洗速率下,在较低的环境温度下较少地进行刷新,以减少在较低温度下消耗的功率。
27.根据权利要求26的方法,其中,所述周期地刷新步骤包括周期地刷新比所述存储器的预定容量小的所述动态随机访问存储器的一部分,以减少由于刷新所述存储器部分而消耗的功率。
28.根据权利要求26的方法,其中所述存储器容量包括预定的总行数,且所述存储器部分包括比其预定总行数小的所述动态随机访问存储器的行数。
29.一种处理器通信系统,包括主处理器直接存储器访问接口;一个或多个外设端口;用于在所述主处理器直接存储器访问接口和所述一个或多个外设端口之间传送数据的数据总线;和可编程控制器,其包括多个与所述数据总线通信以维持数据通信的寄存器,所述可编程控制器能够存储数据和从所述多个寄存器重新获得数据,以在所述主处理器直接存储器访问接口和所述一个或多个外设端口之间建立多个数据传输。
30.如权利要求29的所述系统,其包括第二处理器直接存储器访问接口,其中所述可编程控制器能够在所述主处理器直接存储器访问接口,所述第二处理器直接存储器访问接口和所述一个或多个外设端口之间建立多个数据传。
31.如权利要求30的所述系统,其中所述可编程处理器赋给所述多个数据传输优先权,所述多个数据传输是通过存储所述数据且从所述多个寄存器中重新获得所述数据来建立的,以用于在所述主处理器直接存储器访问接口、所述第二处理器直接存储器访问接口和所述一个或多个外设端口之间的数据传输。
32.如权利要求30的所述系统,其中所述第二处理器直接存储器访问接口包括到与数字信号处理器相关的随机访问存储器的数字信号处理器直接存储器访问接口。
33.如权利要求32的所述系统,其中所述可编程控制器能够在所述主处理器直接存储器访问接口、所述数字信号处理器、直接存储器访问接口、和所述一个或多个外设端口之间建立多个虚拟直接存储器访问信道。
34.如权利要求33的所述系统,其包括与所述主处理器一起使用的嵌入式动态随机访问存储器。
35.一种存储器刷新系统,其包括用于提供温度测量值的温度传感器;耦合到所述温度传感器的存储器,用于根据所述温度测量值提供取决于温度的计数值;和耦合到所述存储器的计数寄存器,用于存储所述取决于温度计数值,所述取决于温度计数值用来确定用于动态随机访问存储器的取决于温度的刷新循环。
36.根据权利要求35的系统,进一步包括耦合到所述计数寄存器的比较器;和耦合到所述比较器的计数器,其中当所述计数器与在所述计数寄存器内的取决于温度的计数值匹配时,所述比较器输出一信号。
37.根据权利要求36的系统,进一步包括耦合到所述比较器的刷新使能单元,其中所述刷新使能单元提供响应于从所述比较器输出的信号的刷新使能信号,其中提供用于所述动态随机访问存储器的所述取决于温度的刷新循环。
全文摘要
本文公开了一种直接存储器访问系统,其包括建立直接存储器访问数据信道的直接存储器访问控制器(116),且包括用于耦合到存储器的第一接口。第二接口用于耦合到多个节点。并且处理器(106)耦合到所述直接存储器访问控制器(116),且耦合到第二接口,其中所述处理器配置所述直接存储器访问数据信道以在可编程选择的多个节点中的一个或多个以及存储器(104或108)之间传输数据。在一些实施例中,所述多个节点为将在无线多媒体手持电话中实现的多媒体处理器平台(100)的数字信号处理器存储器和主处理器存储器。
文档编号G06F13/38GK1436333SQ01810911
公开日2003年8月13日 申请日期2001年5月30日 优先权日2000年6月9日
发明者希拉·雷德, 布赖恩·卢卡斯, 普拉迪普·加兰尼, 弗朗兹·施泰宁格 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1