专利名称:存储器系统、主机控制器以及dma的控制方法
技术领域:
本发明涉及适用于例如安全数字(SD )卡、并具有高级直接存储器存取(ADMA)的主机控制器、存储器系统以及DMA的控制方法。
背景技术:
近来,SD卡例如SD存储卡在作为主机设备的便携电话、数码相机等中广泛使用。 该SD卡经由主机控制器与主机设备连接,通过主机控制器控制主机设备与SD存储卡之间的数据传送。设置于主机设备的系统存储器通过分页(paging)来管理。因此,系统存储器上的数据以页为单位被断片地管理。为了对存储卡高效地进行数据的读/写,使主机控制器具有DMA,并且使DMA能够进行以页为单位管理的数据传送。即,通过使用作为数据传送列表的描述符,能够对在系统存储器上断片化了的数据进行DMA传送。但是,以往的DMA为了在页的边界处生成新的系统地址而产生了中断。因此,打乱了 CPU的操作。为了解决该问题而开发了 ADMA。ADMA具有对应于SD卡的一个读/写命令、通过分页对断片地配置在系统存储器上的数据区域进行数据传送的能力。因此,ADMA通过读入系统存储器上的描述符,从而可以没有CPU中断地控制主机控制器与系统存储器之间的数据传送。主机驱动器通过设定主机控制器内的寄存器组,来控制对存储卡的命令的发布,控制主机控制器与存储卡之间的数据传送,并使用对CPU的中断。如以往那样,在总线性能低的情况下,使用这样的方法没有问题。但是,近来随着总线性能的提高、高速数据传送成为可能,存在主机驱动器的处理出现开销(overhead)这样的问题。因为存储卡的区域不一定总是连续使用的,所以需要分割为多个存储器命令。控制主机驱动器向存储卡发布命令的方式需要在数据传送过程中使主机CPU产生中断,从而执行主机驱动器,直到响应中断为止花费了一定程度的时间。因此,即使使用高速总线也存在由于驱动器处理的等待时间影响而使性能降低这样的问题。因此,通过能够利用DMA处理在数据传送中需要主机驱动器处理的部分,可望高效地实施数据传送。
发明内容
本发明的实施方式提供了能够高效地实施数据传送的主机控制器、存储器系统以及DMA的控制方法。一般地,根据一个实施例,存储器系统具有主机控制器和DMA电路。主机控制器具有控制对设备的命令发布的寄存器组、和访问系统存储器的直接存储器存取(DMA)电路, 控制系统存储器以及存储设备之间的传送。第一描述符至第四描述符存储在所述系统存储器上。第一描述符包括表示多个第二描述符的多个指针的集合。所述多个第二描述符的每个包括第三描述符和第四描述符。所述第三描述符包括作为经由所述主机控制器的所述寄存器组对所述存储设备的命令发布所需要的信息的命令序号、命令操作模式、参数,以及作为数据传送所需要的信息的块长、块数的信息。所述第四描述符包括配置在所述系统存储器上的多个数据的地址和大小的信息。由本提案改良的改良版ADMA电路将所述第一描述符的开头作为起点而将构成所述第二描述符的所述第三描述符的内容设定于所述寄存器组中,按照所述第四描述符的内容从所述系统存储器读入并传送数据。根据本发明的实施方式,能够提供可以高效地实施数据传送的主机控制器、存储器系统以及DMA的控制方法。
图1是概略地表示实施方式的存储器系统的构成图。图2是概略地表示系统存储器和存储卡的存储映射的图。图3是表示实施方式的描述符的构造的图。图4是概略地表示图1所示的ADMA的构成图。图5是表示ADMA的操作的流程图。
具体实施例方式以下,参照附图对实施方式进行说明。以下说明的ADMA表示由本提案改良的改良版ADMA。图1概略地表示本实施方式的存储器系统。本实施方式通过扩展使系统存储器的数据传送为可能的描述符,在DMA传送中能够由主机控制器发布多条SD命令,从而降低由主机驱动器的处理引起的开销。图1所示的系统控制器11控制与CPU 12、系统存储器13以及SD主机控制器14 的接口。系统存储器13存储主机驱动器21、描述符表22以及数据23。在系统存储器13 上通过操作系统(OS)确保用于存储这些主机驱动器21、描述符表22以及数据23所需要的区域。主机驱动器21例如是SD主机控制器14用的OS固有的驱动器,由CPU 12来执行。 主机驱动器21在执行后述的ADMA之前生成描述符表22。该描述符表22是将系统存储器 13与SD卡之间的数据传送所需要的信息制成列表(list)所得到的,按SD主机控制器14 能够解析的格式来描述。对描述符表22的构造稍后进行描述。SD主机控制器14具有使用SD命令在系统存储器13与SD卡之间双向地进行数据传送的功能。SD主机控制器14主要包括系统总线接口(I/F)电路31、存储卡I/F电路 32、含有多个寄存器的寄存器组33、ADMA 34、计时器35。系统总线I/F电路31通过系统总线与系统控制器11连接。存储卡I/F电路32 能够通过未图示的SD总线接口与SD卡、例如SD存储卡15、SDI0卡16连接。SD总线接口并不限定于以往的4位型,也能够适用于使用了 LVDS方式的UHS-II等。在UHS-II中命令以包形式进行传送。SD主机控制器14的寄存器组33被分类为例如未图示的SD命令产生部、响应部、缓冲数据端口部、主机控制部、中断控制部、ADMA部等多个部分。SD命令的发布所需要的信息例如命令序号、命令模式以及变量,和数据传送所需要的信息例如块长、块数被设定于寄存器组33的SD命令产生部中。SD命令产生部通过设定这些信息来对SD卡发布命令。根据该命令,从SD卡提供的响应由寄存器组33内的响应部接收。ADMA ;34为不经由CPU 12而在SD卡与系统存储器13之间传送数据的电路。该 ADMA 34按照存储在系统存储器13上的描述符表22的内容执行数据传送。计时器35为检测超时错误的装置。例如在从读命令发布到结束所设定的时间内读命令的操作没有完成的情况下,计数器35检测到超时错误。该超时错误通过中断通知到主机CPU12,由主机驱动器来处理。图2表示系统存储器13的分页管理和SD物理地址的关系的例子。系统存储器13 通过分页例如按每4千字节(kByte)的小区域单位来进行管理。从主机CPU 12执行的应用程序,通过由主机CPU 12管理的分页功能,利用逻辑地址访问系统存储器13。因此,如逻辑地址系统存储器映射(map)所示,可见数据被配置在连续的地址区域。但是,在系统存储器13中实际存储的数据的位置是任意的,如物理地址系统存储器映射所示那样是断片的。 这些数据通过地址和数据长度(length)来管理。数据长度是可变的。另外,存储于系统存储器13的数据的物理地址与逻辑地址的关系由未图示的页面表来管理。另一方面,存储于SD存储卡15的数据以例如512字节 数兆字节的页面单位(块单位)进行管理,与系统存储器13完全独立。因此,在使SD存储卡15存储系统存储器13 上的数据的情况下,如SD物理地址存储器映射所示,系统存储器13上的数据通过与系统存储器13上不同的大小来存储。SD存储卡15内的数据被保持在按每条命令所指定的连续的存储区域,具有由命令指定的地址,数据长度是可变的并由别的命令指定。DMA传送是由物理地址直接访问系统存储器13。因此,通过在系统存储器13上制作作为传送列表的描述符,能够执行ADMA。图3表示本实施方式的描述符。该描述符在系统存储器13的描述符表22内制作。本实施方式的描述符是扩展以往的描述符得到的,通过分层结构构成。通过使用本实施方式的描述符,能够完全由硬件来执行ADMA进行的系统存储器13与SD存储卡15 之间的数据传送。因此,没有必要在数据传送中对主机CPU 12进行中断。错误处理请求由中断进行通知,但因为发生概率非常小,所以没有问题。如图3所示,第一描述符(综合描述符)包括指向多个第二描述符(部分描述符) 的指针的集合。各第二描述符(部分描述符)包括第三描述符(SD命令描述符)和第四描述符 (系统存储器描述符)的对。第三描述符的内容包括用于发布SD命令的信息。即,第三描述符的内容包括例如命令序号、命令模式、参数,作为数据传送所需要的信息的块长、块数。命令模式例如表示读 /写。通过将该第三描述符写入SD主机控制器14的寄存器组33中的SD命令产生部,从而发布一条SD命令。第四描述符(系统存储器描述符)的内容包括表示系统存储器13上的各数据的位置的地址、和表示数据长度的长度(length),表示以断片方式配置的多个数据的集合。由于第三描述符与一个读/写命令对应,能够指定SD存储卡的某一个连续区域。在如图2所示被分割为多个区域的情况下,需要对各个区域设置第三描述符。以达到与各第三描述符相同的数据传送长度对对应的第四描述符进行编程。第一至第四描述符分别具有属性信息Att。各属性信息Att包含例如用于识别描述符的种类的信息、以及表示描述符的结束位置的结束位。另外,第三描述符因为其格式与其他的描述符不同,所以其属性信息Att可以至少与开头的命令序号对应设置,也可以与其他的描述符同样地对每行都设置。图4表示ADMA 34的概略构成。ADMA 34包括系统地址控制部34a、数据缓冲器 34b、SD命令控制部34c以及缓冲存储器34d。系统地址控制部3 管理系统存储器13的地址。具体而言,管理存储在系统存储器13中的第一至第四描述符的读入。即,系统地址控制部3 首先设定第一描述符(综合描述符)的开头地址作为初始值。由此能够从系统存储器13读出第一描述符(综合描述符)的信息。因为在第一描述符中写入了多个第二描述符的指针,所以读入各指针指示的第二描述符的地址,按照该地址读入第二描述符。即,将作为构成第二描述符的第三描述符的SD命令描述符传送到SD命令控制部34c。进而,依次读入在构成第二描述符的第四描述符中描述的数据的地址以及数据长度,按照该地址以及数据长度,在存储器写时从系统存储器13读出数据,将其传送到数据缓冲器34b。在存储器读时将数据从数据缓冲器34b传送到系统存储器13。为了执行这些操作,系统地址控制部3 具有多个寄存器34a_l 34a_4以及选择这些寄存器的输出信号的多路复用器(MPX) 34a_5,以保持第一描述符(综合描述符)的开头地址、第二描述符(部分描述符)的指针、数据的地址以及数据长度。SD命令控制部;Mc在SD命令产生部中依次产生用于设定值的寄存器地址,并且将作为第三描述符的SD命令描述符所包含的寄存器设定信息依次设定于主机控制器14的寄存器组33中的SD命令产生部中。寄存器组33的SD命令产生部在寄存器的设定完成时发布SD命令。在存储器写的情况下,缓冲存储器34d读入由系统地址控制部3 指定的系统存储器13上的数据,暂时保持供给来的数据。数据缓冲器34b所保持的数据与发布的SD命令同步地被传送到SD存储卡15。另外,在存储器读的情况下,缓冲存储器34d暂时保持与发布的SD命令同步地从作为存储器设备的SD存储卡15读入的数据,将数据传送到由系统地址控制部3 指定的系统存储器13上的位置。在上述构成中,参照图5对使用了扩展描述符的ADMA 34的操作进行说明。为了在系统存储器13与SD存储卡15之间进行数据传送,主机驱动器21在系统存储器13上制作图3所示那样的扩展描述符。第一描述符的开头地址由主机驱动器21设定于系统地址控制部34a的寄存器34a_l中。然后,当通过主机驱动器21启动ADMA 34时,系统地址控制部3 基于寄存器 34a_l所保持的第一描述符的开头地址,读入第一描述符(综合描述符)的开头所记载的第二描述符指针(部分描述符指针),将其保持在寄存器34a_2中。(STll)。接着,通过系统地址控制部3 读入处于第二描述符指针所指示的位置的第二描述符(ST12)。
第二描述符的开头所描述的第三描述符(SD命令描述符)被供给到SD命令控制部34c。SD命令控制部3 将第三描述符所描述的数据写入到构成SD主机控制器14的寄存器组33的SD命令产生部中。于是,通过SD命令产生部对SD存储卡15发布命令(ST13)。接着,通过系统地址控制部3 读入第四描述符(系统存储器描述符)。系统地址控制部3 将第四描述符所描述的地址以及数据长度分别保持在寄存器34a_3 (地址)和寄存器34a_4(长度)中。在存储器写的情况下,系统地址控制部3 从系统存储器13将寄存器34a_3(地址)的地址作为开头地址读出数据,并将其传送到数据缓冲器34b。另外, 在存储器读的情况下,系统地址控制部3 将寄存器34a_3 (地址)的地址作为开头地址, 将数据缓冲器34b的数据写入到系统存储器13中(ST14)。在存储器写的情况下,在数据缓冲器34b内,从系统存储器13供给的断片的数据设为连续的数据。第四描述符(系统存储器描述符)包括以地址和数据长度的对构成的多个数据,ADMA依次重复这种操作来进行系统存储器与数据缓冲器34b之间的数据传送。然后,ADMA将数据缓冲器34b所保持的数据传送到SD存储卡15 (ST15)。与发布的命令(读/写命令)同步地,ADMA访问系统存储器13上的数据,经由数据缓冲器34b在取得同步时执行两者的数据传送。总数据传送量必须在存储设备侧和系统存储器侧设定为相同的值。当基于一个第二描述符的数据的传送完成时,判断全部的第一描述符的执行是否结束(ST16)。其结果,在全部的第一描述符的执行没有结束的情况下,控制移至步骤 ST12,按照第一描述符所描述的部分描述符指针,读入下一个第二描述符,执行上述的操作 (ST16-ST12)。在各描述符中设置所述属性信息Att中的结束位,通过该结束位,能够指定描述符程序的结束位置。当对应于下一个第二描述符,第三描述符被设定于SD主机控制器14的寄存器时, 发布SD命令,按照第四描述符对数据进行传送。例如在存储器写的情况下,在最终数据被读入到数据缓冲器34b之后,通过读入下一个第三描述符,在对系统存储器的DMA传送中也能够发布下一次传送的SD命令。在该情况下,因为看不到命令发布时间,所以进一步高速操作成为可能。另一方面,在执行了第一描述符所描述的全部内容的情况下,SD主机控制器14产生ADMA完成中断(ST17)。由此,CPU 12 (主机驱动器21)能够得知ADMA的处理正常结束了。在没有发生错误的情况下,主机CPU 12从ADMA的启动到结束没有必要涉及传送,因此不会发生因主机驱动器引起的性能降低。另外,在数据传送中能够准备下一个描述符,因此,描述符制作时间不会影响到传送性能。主机驱动器在传送完成时指示文件系统更新信息。由此传送到SD存储卡的数据得以确定。根据上述实施方式,为了在系统存储器13与SD存储卡15之间进行数据传送,通过主机驱动器21在系统存储器13内生成扩展描述符。该扩展描述符包含作为表示第二描述符的位置的指针的集合的第一描述符。在通过主机驱动器21启动ADMA 34时,基于第一描述符的开头地址的内容依次将第二描述符的内容取入ADMA 34中,通过ADMA 34按照第二描述符所描述的第三、第四描述符的内容在系统存储器13与SD存储卡15之间执行数据传送。因此,主机驱动器21在由ADMA 34进行的数据传送中与数据传送没有任何关系。因此,通过ADMA 34使得高速的数据传送成为可能。另外,ADMA 34在启动后,通过将第三描述符设定于寄存器组33的SD命令产生部中来产生命令,通过ADMA 34仅由硬件便能够执行系统存储器13与存储卡15之间的数据传送。因此,与通过主机驱动器21的情况相比,能够显著高速化。进而,为了在数据传送中操作主机驱动器,通常通过中断来启动。因此,如果不能略去中断响应时间,则会引起数据传送性能的降低。但是,通过使用本方式,能够避免这样的性能降低。以上,说明了某些实施方式,但是这些实施方式是作为例子而举出的,没有限定发明范围的意图。这些新的实施方式,能够以其他的各种各样的方式来实施,在不脱离发明的要旨的范围内能够进行各种省略、置换、变更。这些实施方式及其变形,包含于发明的范围或要旨,并且包含于权利要求所记载的发明及其同等的范围内。
权利要求
1.一种存储器系统,包括主机控制器,其具有控制对设备的命令发布的寄存器组、和访问系统存储器的直接存储器存取(DMA)电路,所述主机控制器控制系统存储器以及存储设备之间的传送;存储在所述系统存储器上的第一描述符,所述第一描述符包括表示多个第二描述符的多个指针的集合;构成所述多个第二描述符的每个的第三描述符,所述第三描述符包括作为经由所述主机控制器的所述寄存器组对所述存储设备的命令发布所需要的信息的命令序号、命令操作模式、参数,以及作为数据传送所需要的信息的块长、块数的信息;以及构成所述多个第二描述符的每个的第四描述符,所述第四描述符包括配置在所述系统存储器上的多个数据的地址和大小的信息;所述DMA电路将所述第一描述符的开头作为起点而将构成所述第二描述符的所述第三描述符的内容设定于所述寄存器组中,按照所述第四描述符的内容传送所述系统存储器与所述主机控制器之间的数据。
2.根据权利要求1所述的系统,其中,所述系统存储器保持主机驱动器;所述主机驱动器制作包含传送信息的描述符,具有仅指示所述DMA电路的启动的功能,通过中断来再次启动,进行接下来的数据传送的启动或错误处理。
3.根据权利要求2所述的系统,其中, 所述DMA电路包括系统地址控制部,其控制所述系统存储器的地址,并读出所述各描述符; SD命令控制部,其将从所述系统存储器读出的所述第三描述符的内容设定于所述主机控制器的所述寄存器组中;以及数据缓冲器,其保持从所述系统存储器或存储设备读出的数据。
4.根据权利要求3所述的系统,其中,所述主机控制器在全部访问了所述第一描述符内的多个指针的情况下,产生表示数据传送的结束的中断信号。
5.根据权利要求4所述的系统,其中,所述第一至第四描述符的每个具有包含用于识别描述符的种类的信息、以及表示描述符的结束位置的信息的属性信息。
6.一种主机控制器,包括控制对设备的命令发布的寄存器组;和访问系统存储器的直接存储器存取(DMA)电路; 所述主机控制器控制系统存储器、以及存储设备之间的传送; 所述主机控制器读入第一描述符、第三描述符和第四描述符,所述第一描述符存储在所述系统存储器上,并且包括表示多个第二描述符的多个指针的集合;所述第三描述符构成所述多个第二描述符的每个,并且包括作为经由所述主机控制器的所述寄存器组对所述存储设备的命令发布所需要的信息的命令序号、命令操作模式、参数,以及作为数据传送所需要的信息的块长、块数的信息;所述第四描述符构成所述多个第二描述符的每个,并且包括配置在所述系统存储器上的多个数据的地址和大小的信息;以及所述DMA电路将所述第一描述符的开头作为起点而将构成所述第二描述符的所述第三描述符的内容设定于所述寄存器组中,按照所述第四描述符的内容从所述系统存储器读入并传送数据。
7.根据权利要求6所述的主机控制器,其中,所述系统存储器保持主机驱动器;所述主机驱动器制作包含传送信息的描述符,具有仅指示所述DMA电路的启动的功能,通过中断来再次启动,进行接下来的数据传送的启动或错误处理。
8.根据权利要求7所述的主机控制器,其中, 所述DMA电路包括系统地址控制部,其控制所述系统存储器的地址,并读出所述各描述符; SD命令控制部,其将从所述系统存储器读出的所述第三描述符的内容设定于所述主机控制器的所述寄存器组中;以及数据缓冲器,其保持从所述系统存储器读出的数据。
9.根据权利要求8所述的主机控制器,其中,所述主机控制器在全部访问了所述第一描述符内的多个指针的情况下,产生表示数据传送的结束的中断信号。
10.根据权利要求9所述的主机控制器,其中,所述第一至第四描述符的每个具有包含用于识别描述符的种类的信息、以及表示描述符的结束位置的信息的属性信息。
11.一种DMA的控制方法,包括从存储器读入在第一描述符所描述的多个第二描述符指针中记载于开头的第二描述符指针;从所述存储器读入由所述读入的第二描述符指针所表示的第二描述符; 从所述存储器读入在所述第二描述符的开头描述的第三描述符,将第三描述符的内容写入寄存器并发布命令;从所述存储器读入第四描述符,在系统存储器与缓冲器之间传送由在所述第四描述符描述的地址所表示的数据;以及重复上述操作,在全部的数据传送结束的情况下,产生中断。
12.根据权利要求11所述的方法,其中, 所述DMA由主机驱动器来启动。
13.根据权利要求11所述的方法,其中, 所述中断由包括所述DMA的控制器来产生。
14.根据权利要求13所述的方法,其中,所述第一至第四描述符的每个具有包含用于识别描述符的种类的信息、以及表示描述符的结束位置的信息的属性信息。
全文摘要
本发明公开了存储器系统、主机控制器以及DMA的控制方法。根据一个实施方式,主机控制器具有发布命令的寄存器组以及直接存储器存取(DMA),对系统存储器以及存储设备进行访问。第一至第四描述符被存储在系统存储器上,为表示多个第二描述符的多个指针的集合,第三、第四描述符构成多个第二描述符,包含作为存储设备的命令发布所需要的信息的命令序号、命令操作模式、参数、块长、块数以及多个数据的地址和大小的信息。DMA将第一描述符的开头作为起点而将构成第二描述符的第三描述符的内容设定于寄存器组中,按照第四描述符的内容在系统存储器与主机控制器之间传送数据。
文档编号G06F13/28GK102411549SQ20111006631
公开日2012年4月11日 申请日期2011年3月18日 优先权日2010年9月22日
发明者藤本曜久 申请人:株式会社东芝