存储器直接存取控制设备 本发明涉及存储器直接存取(DMA)控制设备,尤其涉及用于在DMA传送期间暂时给予企图使用源或目的存储器的微处理器或另一个主控制器(master)使用存储器的优先权的DMA控制设备。
DMA传送的目的是从特定的存储器向另一个存储器快速传送数据以便微处理器能在DMA传送期间完成不同的任务,这样就能提供更有效和更佳的系统性能。
为完成DMA传送,DMA控制设备接收来自微处理器的用于从特定的存储器,即源存储器,向另一个存储器,即目的存储器,传送数据的一组指令,然后执行这些指令。传统的DMA控制设备由用于存储从微处理器发出的指令的控制寄存器;用于产生存储被发送的数据地源存储器的地址的源地址产生器;用于产生其中存储从源存储器传送的数据的目的存储器的地址的目的地址产生器;用于存储应完成的DMA传送的数目的计数寄存器;用于存储在DMA传送期间产生的状态的状态寄存器;和用于控制DMA传送的DMA控制器组成。
当完成如存储在计数寄存器中的数目的DMA传送时,DMA控制设备通知发出DMA传送指令的微处理器,并且将DMA控制设备设置为等待下一个指令的初始状态。如果在DMA传送期间发生错误,将错误记录在状态寄存器并且将错误中断送到微处理器以便微处理器能读取状态寄存器并采取适当的行动。
如上所述,传统的DMA控制设备仅支持DMA传送。当开始一个DMA传送时,其他的主控制器,例如,微处理器或其他的控制器,不能存取存储器,即DMA控制器正使用的源和目的存储器,直到已经完成指定数目的DMA传送为止。
为克服这个缺陷,采取使DMA传送数据量较小的方法以便减少执行DMA传送所需的时间。
然而,这样的方法未带来大的改进,因为仍需要长的准备时间用于微处理器存取存储器。在要求高速性能的系统中,在CPU处理期间的响应延迟将会降低系统性能。在具有共用存储器结构的多处理器系统的情况下,很多的主控制器频繁竞争来存取共用的存储器。
因此,存储器处理器应等待存取存储器直到完成DMA传送为止。更为糟糕的是,可能产生损害系统的时间超出,时间超出抵消使用DMA传送的优点。
为解决上面的问题,本发明的一个目的是提供用于在DMA传送期间为改进系统的性能,暂时给予企图存取源或目的存储器的微处理器或其他主控制器使用存储器的优先权而不用长的准备时间的DMA控制设备。
本发明的另一目的是提供包括了地址和数据路径控制的DMA传送系统,以便微处理器通过使用DMA控制设备在DMA传送期间能存取源或目的存储器。
为实现上面的目的,在具有微处理器,用于存储被传送的数据的源存储器,和用于存储传送的数据的目的存储器的计算机系统中,提供用于控制存储器直接存取(DMA)传送的DMA控制设备,DMA控制设备包括:用于存储指令的DMA控制寄存器,该指令由用于DMA传送的微处理器发送到DMA控制设备;用于记录DMA传送数目的DMA计数寄存器;用于在DMA传送期间产生源存储器地址的装置;用于在DMA传送期间产生目的存储器的地址的装置,用于在源存储器的数据传送到目的存储器之前暂时存储源存储器的数据的DMA数据缓冲器;用于在DMA传送期间当从企图使用一个源和目的存储器的至少一个主控制器接收到存储器存取请求时仲裁每个DMA传送周期发生时的存储器存取优先权的DMA判优装置;和用于请求来自DMA判优器的该存储器存取优先权,将存储器控制信号送到具有存储器存取优先权的主控制设备,并将关于DMA传送频率的信息送到DMA计数寄存器的DMA进程(engine)控制装置。
为实现另一目的,提供DMA传送系统,包括:用于产生DMA传送指令并在DMA传送期间执行另一任务的微处理器;用于控制由执行从微处理器接收的指令而产生的数据和地址流并产生用于地址和数据缓冲器的控制信号的DMA控制装置;用于存储被发送的数据的源存储器;用于存储传送数据的目的存储器;用于在DMA传送期间在将其送到目的存储器之前暂存源存储器数据的DMA数据缓冲器;用于暂存在微处理器和目的存储器之间传送的数据的目的数据缓冲器;用于暂存由微处理器传送的目的存储器的地址的目的地址缓冲器;用于暂存在微处理器和源存储器之间传送的数据的源地址缓冲器;和用于接收从DMA控制装置输出的源存储器地址和从微处理器输出的源地址,并根据来自DMA控制装置的控制信号输出源存储器地址和源地址中的一个地址的多路复用器。
通过参考附图详细描述优选实施例,本发明的上面目的及优点将变得显而易见。
附图简要说明
图1是根据本发明的优选实施例的DMA控制设备的方框图;
图2是图1所示的DMA判优器和DMA进程(engine)控制器140的详细方框图;和
图3是使用图1所示的DMA控制设备的根据本发明的DMA传送系统的优选实施例的方框图。
参考图1其中示出根据本发明的优选实施例的DMA控制设备,一DMA控制寄存器110用于存储从微处理器到DMA控制设备传送的DMA传送指令;DMA计数寄存器100用于记录DMA传送的数目;DMA状态寄存器120用于接收来自DMA进程(engine)控制器140的有关DMA传送状态的信息并存储这些信息。
在DMA传送期间源存储器地址产生器160产生源存储器的地址,而目的存储器地址产生器150产生目的存储器的地址。在DMA传送期间DMA数据缓冲器170在将其传送到目的存储器之前暂存来自源存储器的数据。
DMA判优器(arbitrator)130将DMA传送周期划分为用于从源存储器到DMA数据缓冲器170传送数据的第一周期,和用于从DMA数据缓冲器170到目的存储器传送数据的第二周期。每个第一和第二周期将被认为是基本的DMA传送周期。如果存在来自企图访问源或目的存储器的至少一个主控制器(master)的存储器存取请求,DMA判优器130在每个基本的DMA传送周期发生时确定存储器存取的优先权。
DMA进程(engine)控制器140请求来自DMA判优器130的存储器存取优先权,产生用于DMA传送的存储器控制信号和由具有存储器存取优先权的主控制器要求的存储器控制信号,并将关于DMA传送数的信息送到DMA计数寄存器100。
图2是图1所示的DMA判优器130和DMA进程控制器140的详细方框图。
DMA判优器130具有源存储器判优器132,目的存储器判优器134,和缓冲器控制信号产生器136。
源存储器判优器132从企图使用源存储器的主控制器接收用于存取源存储器的请求信号并在基本的DMA传送周期单元内确定存储器存取优先权。
目的存储器判优器134从企图使用目的存储器的主控制器(master)接收用于存取目的存储器的请求信号并在基本的DMA传送周期单元内确定存储器存取优先权。
缓冲器控制信号产生器136产生缓冲器控制信号用于暂存由主控制器而不是DMA控制设备产生的地址和数据总线信号并根据该源和目的存储器的判优器132和134的仲裁结果送到源或目的存储器。
DMA进程(engine)控制器140具有指令分析器142,状态转换机构144,正常结束处理器146,和错误结束处理器148。
指令分析器142分析存储在DMA控制寄存器的指令。
状态转换机构144接收通知从源存储器到目的存储器的DMA传送的信息,产生向源和目的存储器判优器132和134请求使用该源和目的存储器的信号,并在接收到存储器使用优先权时根据DMA传送状态产生控制数据和地址流的控制信号。
在状态转换机构144中当DMA传送正常结束时正常结束处理器146将DMA传送结束通知请求DMA传送的主控制器。
如果在状态转换处理器144中发生DMA传送错误,错误结束处理器148就将出现的错误通知请求DMA传送的主控制器。
参考图1和2所示的DMA控制设备方框图,描述DMA控制设备的操作。
首先,请求DMA传送的微处理器将源存储器的开始地址传送到源存储器地址产生器160,将目的存储器的开始地址送到目的存储器地址产生器150,并根据被传送的数据量将DMA传送的数目送到DMA计数寄存器100。然后,微处理器将用于请求DMA传送的指令d-cmd送到DMA控制寄存器110。接着,该指令被传送到DMA进程(engine)控制器140。DMA进程(engine)控制器140的指令分析器142接收该指令并确定DMA传送路径。根据分析状态转换机构144进行操作以开始DMA传送。
如上所述,DMA传送周期划分为用于从源存储器到该DMA数据缓冲器170传送数据的第一周期,和用于将DMA数据缓冲器170中的数据传送到目的存储器的第二周期。
当第一周期结束时,DMA进程(engine)控制器140的状态转换机构144将表示第一周期结束的信号1st-end送到DMA判优器130的目的存储器判优器134。类似地,当第二周期结束时,DMA进程控制器140的状态转换机构144将表示第二周期结束的信号2nd-end送到DMA判优器130的源存储器判优器132。
此外,当其中一个周期结束时,DMA进程控制器140产生请求存取目的存储器的信号dma-dst-req或请求存取该源存储器的信号dma-src-req并将这些信号送到DMA判优器130以便继续DMA传送。当DMA进程控制器140接收允许源存储器存取的信号src-gnt或允许目的存储器存取的信号dst-gnt时,根据由缓冲器控制信号产生器136产生的缓冲器控制信号,DMA进程控制器140分别输入在源存储器地址产生器160或目的存储器地址产生器150中产生的该源存储器地址或目的存储器地址。
当第二周期结束时,即,完成一个DMA数据块的传送,DMA进程控制器140发送一个增加该源和目的存储器地址产生器160和150的当前地址的信号(inc),于是准备下一个块的传送。
同时,当第二周期结束时,DMA进程控制器140产生将记录在DMA计数寄存器100的DMA传送数目减1的信号dec。然后,DMA计数寄存器100确定DMA传送数目是否被设定为零。如果该数目不是零,DMA进程控制器140继续DMA传送。然而,如果数目为零,将表示全部DMA传送结束的计数信号输出到DMA进程控制器140。然后,DMA进程控制器140的正常结束处理器146通过发送一中断信号通知微处理器DMA传送结束,这样DMA传送结束。
同时,当正在执行DMA传送时DMA进程控制器140将DMA连续传送的当前状态通知DMA状态寄存器120以便DMA状态寄存器120存储这些状态。在DMA传送期间当DMA传送正常结束或发生错误时,DMA进程控制器140在DMA状态寄存器120中也存储其相关信息并经正常结束处理器146或错误结束处理器148发送中断信号到微处理器来指示传送结束或错误发生以便微处理器能采取适当的行动。
现在,将描述在DMA传送期间微处理器或其他的主控制器企图使用该源或目的存储器的情况。假定当DMA进程控制器140执行第一或第二周期时微处理器或其他主控制器将存储器存取请求信号m-src-req和m-dst-req送到DMA判优器130。首先,DMA进程控制器140结束当前周期。即,在第一周期期间当请求存储器存取时,第一周期结束,而在第二周期期间当请求存储器存取时,第二周期结束。然后,通过DMA判优器130确定存储器存取优先权。接着获得存储器存取优先权的主控制器存取该存储器并且该DMA传送暂时中止。在主控制器已访问该存储器之后,该DMA控制器140从DMA判优器130获得存储器存取优先权,这样重新开始DMA传送。
图3是使用上述DMA控制设备的DMA传送系统的优选实施例的方框图。这里,假定存取该源存储器和目的存储器的主控制器为微处理器和DMA控制设备。
在DMA传送期间微处理器300产生DMA传送指令并执行另一个任务。DMA控制装置310接收来自微处理器300的DMA传送指令,完成DMA传送,并将控制信号送到地址缓冲器325,地址MUX335,和数据缓冲器320及330以控制地址和数据流。
链接到局部总线的局部存储器360根据DMA传送路径用作存储将被发送的数据的源存储器或存储所发送的数据的目的存储器。链接到系统总线的系统存储器370也根据DMA传送路径用作该源或目的存储器。
在DMA传送期间DMA数据缓冲器340在将数据传送到目的存储器之前暂存来自该源存储器的数据。处理器数据缓冲器320暂存在微处理器300和系统存储器370之间传送的数据。
局部存储器(local memory)数据缓冲器330暂存在微处理器300和局部存储器360之间传送的数据。处理器地址缓冲器325暂存由微处理器300传送到系统存储器370的地址信号。
局部地址多路复用器(MUX)335接收从DMA控制装置310和微处理器300输出的局部存储器地址并根据DMA控制装置的控制信号输出它们中的一个地址。
地址解码器375解码从微处理器300输出的地址并将解码的地址送到DMA控制装置310的DMA判优器316。系统存储器地址缓冲器345和系统存储器数据缓冲器350在它们被输出到系统总线之前缓冲传送到系统存储器370的地址信号和数据信号。
参考图1到图3,将描述根据本发明的DMA传送系统的操作。图3的DMA控制装置310和DMA数据缓冲器340对应于图1的DMA控制设备。因为参考图1和图2已经描述了DMA控制设备,这里,将略去对其的描述,而将详细描述DMA传送系统的地址缓冲器控制和数据缓冲器控制。
为描述简单起见,假定局部存储器360和系统存储器370分别为源和目的存储器。
请求DMA传送的微处理器300传送该源存储器(局部存储器360)的开始地址到地址产生器311,传送目的存储器(系统存储器370)的开始地址到地址产生器312,并根据被传送的数据量执行DMA传送数目。然后,微处理器300向DMA控制寄存器314发送请求DMA传送的指令d-cmd。DMA进程控制器317接收该指令并确定DMA传送路径。根据分析,进程控制器317的状态转换机构(未示出)产生控制地址和数据缓冲器的信号。这样,开始DMA传送。
这里,通过两个周期完成DMA传送:其中将数据从源存储器(局部存储器360)传送到DMA数据缓冲器340为第一周期和其中将存储在DMA数据缓冲器340的数据传送到目的存储器(系统存储器370)为第二周期。
第一周期按如下执行。首先,DMA进程控制器317的状态转换机构产生选择局部地址MUX335的选择信号mux-sel(未示出),而局部存储器地址产生器311产生从其中读出数据的局部存储器地址。输出局部存储器360的地址数据并锁存在DMA数据缓冲器340,这样结束第一周期。然后,DMA进程控制器317将表示第一周期结束的信号1st-end发送到DMA判优器316。
在DMA进程控制器317获得来自DMA判优器316的存储器存取优先权之后开始第二周期。当DMA进程控制器3 17获得存储器存取优先权时,控制器317输出一个输出致能信号d-local2sys-en(未示出),以便输出锁定在DMA数据缓冲器340中的数据并经系统存储器数据缓冲器350传送到系统存储器370。当传送的数据被存储在系统存储器370时,第二周期结束并且DMA进程控制器317输出表示第二周期结束的信号到DMA判优器316。
同时,当第一或第二周期的其中一个结束时,DMA判优器317产生请求存取目的存储器(系统存储器370)的信号或请求存取该源存储器(局部存储器360)的信号以便仲裁存取源存储器或目的存储器。当DMA判优器317输出允许存取源存储器360的信号或允许存取目的存储器370的信号时,该源存储器(局部存储器360)或目的存储器(系统存储器370)根据由DMA判优器316的缓冲器控制信号产生器(未示出)产生的缓冲器控制信号分别输入由源存储器地址产生器311产生的源存储器地址或在目的存储器地址产生器312中产生的目的存储器地址。
同时,当第二周期结束时,即,已完成传送一个DMA块的传送,DMA进程控制器317将当前地址加1的信号inc发送到源和目的存储器地址产生器311和312,这样为下一个块的传送作准备。此外,DMA进程控制器317将DMA传送数目减1的信号(dec)发送到DMA计数寄存器313。
然后,记录在DMA计数寄存器313的DMA传送数目减1。DMA计数寄存器313确定DMA传送数目是否为零。这里,如果该数目不为零继续DMA传送。然而,如果该数目为零,计数输出信号发送到DMA进程控制器317以表示全部DMA传送结束。当接收到计数输出信号时,DMA进程控制器317的正常结束处理器(未示出)通过中断将DMA传送结束通知微处理器300。
同时,当正在执行该DMA传送时DMA进程控制器317将当前DMA状态信息连续发送到DMA状态寄存器315,并且该DMA状态寄存器315记录当前DMA状态。在传送期间当DMA传送正常结束或发生错误时,该DMA进程控制器317将其相关信息存储在DMA状态寄存器315,通过正常结束处理器或DMA进程控制器316的错误结束处理器发送一中断到微处理器300以表示传送结束或发生错误以便采取适当的行动。
现在将描述在DMA传送期间微处理器300企图使用源或目的存储器的情况。假定当DMA进程控制器317执行第一或第二周期时微处理器300将存储器存取请求信号发送到DMA判优器316。这里,产生的所述存储器存取请求信号,用于由微处理器300产生的并由地址解码器375解码的局部存储器360或系统存储器370的地址。当产生该存储器存取请求信号时,该DMA进程控制器317结束当前的周期。即,在第一周期期间请求存储器存取时,第一周期结束,而在第二周期期间请求存储器存取时,第二周期结束。然后,由DMA判优器316确定存储器存取优先权。
这里,如果该微处理器300获得存储器存取优先权,暂时中止上述的DMA传送。如果微处理器300获得到局部存储器360的存取优先权,DMA进程控制器317接收来自DMA判优器316的允许经微处理器300进行存储器存取的信号,并产生局部地址MUX335的选择信号,mux-sel(未示出)以便由微处理器300产生的地址输入局部存储器360。此外,该DMA进程控制器317将数据缓冲器330的输出致能信号,up2local-en(未示出)输出到局部存储器360,以便微处理器300存取局部存储器360。
如果该微处理器300从DMA判优器316获得到系统存储器370的存取优先权,DMA判优器316的缓冲器控制信号产生器将输出控制信号,up2sys-en或sys2up-en发送到处理器数据缓冲器320以便该缓冲器320输出数据。缓冲器控制信号产生器也将输出控制信号,up-addr-en发送到处理器地址缓冲器325以便由微处理器300产生的地址经系统存储器地址缓冲器345输入到系统存储器370。
同时,在微处理器300完成存储器存取之后,DMA进程控制器317从DMA判优器316重新获得存取存储器的优先权,这样重新开始DMA传送。
在上面的描述中,尽管局部存储器360和系统存储器分别假定为源存储器和目的存储器,它仅仅是一个应用的实例。因此,局部存储器360和系统存储器370也可以分别指定为目的和源存储器。
如上所述,根据本发明,通过保证通用处理器的周期以及DMA传送周期能提高 要求高速与最小暂停时间相平衡的多处理器系统的性能。
更进一步,当DMA传送周期或微处理器周期长时间占据存储器周期时能防止时间超出或总线错误,因此增强系统的稳定性并由此提高系统的效率。