Cpu与fifo之间突发模式数据传送的方法和装置的制作方法

文档序号:6517175阅读:322来源:国知局
专利名称:Cpu与fifo之间突发模式数据传送的方法和装置的制作方法
技术领域
本发明涉及一种用于在CPU(中央处理器)与FIFO(“先进先出”)存储器之间进行突发模式数据传送的方法和装置。
背景技术
FIFO存储器常用作CPU与外围设备之间的缓冲器,以便于数据传送。例如,蜂窝电话包括适合经由FIFO与外部照相机接口的CPU。使用FIFO存储器的另一个示例是在UART(“通用异步收发机”)中,其中UART作为在连接到CPU的并行总线与适合串行通信的外围设备之间的接口。通常仅通过单个存储地址便可访问FIFO存储器。
CPU通常配备用于在对应的存储空间之间传送数据的“突发”模式指令。例如,本领域中已知的商品名称为“ARM”的处理器提供了“读取多个”和“写入多个”指令,这些指令高效地将数据块从一个连续存储空间传送到另一存储空间。具体地说,ARM处理器的“读取多个”指令通过单次取指令便可从连续存储空间读取32个字节的数据,并将32个字节的数据存储到内部寄存器中。类似地,“写入多个”指令通过单次取指令便可将32个字节的数据从内部寄存器写到连续存储空间中。没有这种突发模式能力,处理器每次取指令只可读取或写入4个字节,而且地址寄存器的内容必须每次递增。此外,用软件实现读取或写入多个指令需要执行循环,这增加了进一步的处理开销。
因此,突发模式指令、即“读取多个”和“写入多个”通过节省了许多通常需要的时钟周期而允许CPU工作效率高得多。然而,突发模式指令要求由与之交互的顺序地址所标识的连续存储块,因此对于以单一地址标识的FIFO行不通。因此,需要一种用于在CPU与FIFO之间进行突发模式数据传送的方法和装置。

发明内容
提供一种用于在CPU与FIFO之间进行突发模式数据传送的优选方法和装置。CPU执行定义多个存储地址的突发模式存储器访问指令。把多个存储地址解码以产生对于多个存储地址中每一个都相同的输出。通过使用该输出,对于多个存储地址中每一个重复访问FIFO。优选的是,将多个地址按顺序放在总线上,并且从总线上按顺序接收多个存储地址,以便解码。


图1是采用CPU、存储器和具有读FIFO和写FIFO的现有技术UART的现有技术存储器系统的框图。
图2是图1的UART的一部分的框图,示出用于与FIFO接口的图3是说明用于从图1的读FIFO中读取数据的简单地址和数据周期的时序图。
图4是采用CPU、存储器和根据本发明具有读FIFO和写FIFO的UART的存储器系统的框图。
图5是图4的UART的一部分的框图,示出根据本发明与图4的UART的读FIFO配合使用的读控制模块。
图6是更详细地表示的图5的读控制模块的框图。
图7A是将32字节的数据传送到FIFO的传统方法的时序图。
图7B是根据本发明将32字节数据传送到FIFO的方法的时序图。
具体实施例方式
图1示出一种示范性计算机系统10,它可以是蜂窝电话、个人数字助理、寻呼机、个人计算机或其它类似系统。系统10包括CPU 12和存储器14。CPU 12与存储器14通过总线16交互,并且其它计算机、设备和外围设备可连接到该总线。具体地说,外围设备18通过包括至少一个FIFO存储器的电路20连接到总线16。总线16包括控制总线30和地址/数据总线32(如图2所示)。
更具体地说,作为本发明的示范上下文,电路20可以是包括两个FIFO、例如读FIFO RX(22)和写FIFO TX(24)的UART;然而,应当理解,可采用单个FIFO即用于读也用于写。因为有两个FIFO,所以电路20优选地包括用于控制每个FIFO的分开的控制电路,例如,读控制电路26用于控制FIFO RX(22),而写控制电路28用于控制FIFO TX(24)。但是,应当理解,可使用包含两种功能的单一控制电路。
读控制电路26的输出是“读”信号42,在该信号有效时,使FIFORX(22)将四个字节输出到总线16。类似地,写控制电路28将“写”信号43输出到FIFO TX(24),使FIFO TX从总线16上采样四个字节。
转到图2,其中示出图1的UART的一部分的框图。为执行存储内容转储,CPU 12通常在总线16上发出地址和控制信号。具体地说,控制信号在控制总线30上传送,而地址和数据在地址/数据总线32上传送。本例中的控制信号包括地址使能30a、读使能30b以及写使能30c。CPU可命令存储器14与FIFO 22和24之间、CPU中内存寄存器与FIFO之间、或者FIFO与连接到总线的任何其它设备或存储器之间的存储内容转储。
转到图3,示范性时序图表示了用于CPU 12执行的典型“读”指令的一部分地址周期34和数据周期#1(36)。(“地址使能”#(30a)和“读使能”#(30b)信号是低电平有效。)“读”指令定义单个存储地址“SA”。最初,“读使能”#为高电平,CPU将存储地址“SA”放在地址/数据总线32上。随后,“地址使能”#信号从低电平转变到高电平,这使得存储地址“SA”被锁存到读控制电路26中。这样便完成了地址周期34。
存储地址“SA”由读控制电路26进行解码,如果该地址与FIFORX(22)的读地址寄存器(未示出)的地址匹配,则读控制电路26使FIFORX 22将它已存储在其中的数据“RD”放在总线32上。在数据周期36期间,“地址使能”#是高电平,在“读使能”#从低到高转变时,CPU从总线32上采样数据“RD”。
通过使用FIFO TX(24)的写地址寄存器(也未示出),相同的工作原理反过来应用于“写”指令。
CPU的“读”和“写”指令可用于通过采用众所周知的软件循环来实现伪“突发模式”。然而,CPU 12也支持硬件突发存储器访问指令。这里所述的系统采取了ARM处理器、例如ARM7TDMI的一些指令,但是应当理解,也可使用具有类似特征的任何其它处理器。示范性的ARM7TDMI CPU提供“读取多个”指令,通过该指令,可以突发方式从连续的指定存储单元中读取32个字节的数据并存储在内部寄存器中,以及提供相应的“写入多个”指令,通过该指令,可以突发方式将32个字节的数据从CPU的内部寄存器写到指定的连续存储单元中。虽然突发模式指令优选地采用CPU内部的寄存器,但是在不背离本发明原理的前提下,只要外部寄存器可由CPU在适当的时间帧内访问,也可采用CPU外部的寄存器。
在从CPU到存储器的突发模式传送中,存储地址在硬件中递增,从而用最小的处理开销提供用于访问相应的多个存储单元的多个地址的范围。通常,如ARM处理器中一样,突发模式指令将存储地址逐步地单调递增1,对应于定义存储空间块的连续存储单元,但这不是必需的。采用这些指令,图3所示的总线定时看起来相同,但是CPU12将更高效地工作。然而,如上所述,突发模式指令无法用于寻址FIFO,因为FIFO是由单个地址来标识的。
根据本发明,CPU以突发模式访问读FIFO RX(22)和写FIFOTX(124),其中使用一组预定的多个地址对FIFO重复地访问。图4示出对应于图1的电路20的电路41。电路41包括根据本发明用于控制FIFO RX(22)的读控制电路46和根据本发明用于控制FIFORX(24)的写控制电路48。正如图2显示了图1的电路20的一部分一样,图5显示了图4的电路41的一部分。
在图5中,读控制电路46显示为以上述图3中所指示的信号作为输入。读控制电路46的输出是“读”信号42,该信号有效时,使FIFO RX(22)输出四个字节到总线16上。类似地,给写控制电路48(见图4;图5中省略)提供相同的信号,以便作为接收“写”信号43的结果使FIFO TX(24)从总线16上采样四个字节。
转到图6,其中更详细地显示了图5的读控制电路46。电路46响应从控制总线30接收的控制信号,将从地址/数据总线32接收的地址位锁存。地址或数据的每一位被锁存在各自的上升沿触发的D触发器(D1...DN)中,触发器的输出由解码器44进行解码。可用组合逻辑来实现的解码器44,只要地址处于预定的地址范围内就断言“读”信号42。优选的是,“读”解码器适合响应在低地址与高地址之间的地址的增量变化来断言“读”信号,并在该地址具有任何其它值时取消断言“读”信号。可对写控制电路48采用相同的实现,其中解码器断言“写”信号以便如上所述导致FIFO TX(24)被写入。
本发明明显地节约了CPU开销。转到图7A,其中示出将32个字节从存储器传送到FIFO的传统方法的时序图。示范性的ARM CPU一次可读或写四个字节的数据。为便于说明,假设取指令、读存储器、写FIFO都只需要一个时钟周期。
在建立步骤39中,首先需要四个时钟周期来确定第一源地址和FIFO目标地址。随后需要八个时钟周期来传送连续的四字节数据块,作为以下动作的结果(1)取“读取存储器”指令(时钟周期C1);(2)从存储器中读取4个字节(时钟周期C2);(3)取“写入FIFO”指令(时钟周期C3);(4)将四个字节写入FIFO(时钟周期C4);(5)取“递增源地址”指令(时钟周期C5);(6)递增源地址(时钟周期C6);(7)取“检查地址”指令(时钟周期C7);以及(8)检查地址以确定是否已传送了32个字节(时钟周期C8)。因此,需要4+(N×8)=68个时钟周期来传送32个字节(其中N=32/4=8)。
如图7B所示,采用常规方式传送32个字节所需要的68个时钟周期可减少到只要22个时钟周期。开始,如以前一样,需要四个时钟周期来确定源和目标地址(步骤39)。然而,从存储器中读取32个字节只需要一次针对指令“读取多个”的取指令(CM1),之后是用于读取八个块的八个读周期(CM2-9),每个块具有4个字节的数据,以及一次针对“写入多个”指令的取指令(CM10),之后是用于写入八个块的八个写周期(CM11-18)。因此,CPU时间减少了超过三分之二。容易理解,对于从FIFO传送32个字节的数据可得到类似的结果。
本领域的普通技术人员会立刻明白,上述功能性可用硬件通过多种不同方式来实现。而且,根据本发明的方法和装置可以用硬件、软件或两者来实现,可提供包含了一个或多个机器可执行指令的程序以完成根据本发明的一种或多种方法的机器可读媒体。此外,将认识到,虽然已经表示和描述了用于在FIFO与RAM之间高效传送数据的具体方法和装置作为优选方案,但是在不背离本发明的原理的前提下,还可利用除所提及的那些之外的其它配置和方法。
前面说明中采用的术语和表达在这里用作说明术语,而非限制术语,在使用这种术语和表达时,没有要排除所示和所述特征或其部分的等效物的意图,应认识到,本发明的范围仅由以下权利要求来定义和限定。
权利要求
1.一种用于在CPU与FIFO之间进行突发模式数据传送的方法,所述CPU适合执行定义多个存储地址的突发模式存储器访问指令,所述方法包括以下步骤对所述多个存储地址进行解码,从而产生对于所述多个存储地址中每一个都相同的输出;以及通过使用所述输出,针对所述多个地址中每一个,重复访问所述FIFO。
2.如权利要求1所述的方法,其特征在于,所述方法还包括将所述多个存储地址按顺序放在总线上,并且按顺序从所述总线接收所述多个存储地址以用于所述解码步骤。
3.如权利要求1所述的方法,其特征在于,所述访问步骤是读访问。
4.如权利要求1所述的方法,其特征在于,所述访问步骤是写访问。
5.一种用于通过CPU进行突发模式数据传送的装置,所述CPU适合执行定义多个存储地址的突发模式存储器访问指令,所述装置包括FIFO;以及解码器,所述解码器适用于接收所述多个存储地址并对其解码,以便产生对于所述多个存储地址中每一个都相同的输出,并向所述FIFO提供所述输出以用于访问所述FIFO。
6.如权利要求5所述的装置,其特征在于,所述CPU和所述解码器连接到总线,以及所述解码器适合按顺序从所述总线接收所述多个存储地址。
7.如权利要求5所述的装置,其特征在于,所述解码器的所述输出用于读访问所述FIFO。
8.如权利要求5所述的装置,其特征在于,所述解码器的所述输出用于写访问所述FIFO。
9.一种机器可读取的媒体,其中包含所述机器可执行以实现在CPU与FIFO之间突发模式数据传送的方法的指令的程序,所述CPU适合执行定义多个存储地址的突发模式存储器访问指令,所述方法包括以下步骤对所述多个存储地址进行解码,从而产生对于所述多个存储地址中每一个都相同的输出;以及通过使用所述输出,针对所述多个地址中每一个,重复访问所述FIFO。
10.如权利要求9所述的媒体,其特征在于,所述方法还包括将所述多个存储地址按顺序放在总线上,并且按顺序从所述总线接收所述多个存储地址以用于所述解码步骤。
11.如权利要求9所述的媒体,其特征在于,所述方法还包括读访问所述FIFO。
12.如权利要求9所述的媒体,其特征在于,所述方法还包括写访问所述FIFO。
13.一种用于突发模式数据传送的系统,包括CPU,适合执行定义多个存储地址的突发模式存储器访问指令;FIFO;以及解码器,所述解码器适用于接收所述多个存储地址并对其解码,以便产生对于所述多个存储地址中每一个都相同的输出,并向所述FIFO提供所述输出以用于访问所述FIFO。
14.如权利要求13所述的系统,其特征在于还包括总线,其中所述CPU和所述解码器连接到所述总线,其中所述解码器适合按顺序从所述,总线上接收所述多个存储地址。
15.如权利要求13所述的系统,其特征在于,所述解码器的所述输出用于读访问所述FIFO。
16.如权利要求13所述的系统,其特征在于,所述解码器的所述输出用于写访问所述FIFO。
全文摘要
一种用于在CPU与FIFO之间进行突发模式数据传送的方法和装置。CPU执行定义多个存储地址的突发模式存储器访问指令。对多个存储地址进行解码,产生对于多个存储地址中每一个都相同的输出。通过使用所述输出,针对多个地址中每一个重复访问FIFO。
文档编号G06F13/20GK1658175SQ20051000956
公开日2005年8月24日 申请日期2005年2月18日 优先权日2004年2月20日
发明者林忠力, T·P·卡丹特塞瓦 申请人:精工爱普生株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1