存储器控制器与数据处理方法与流程
未命名
10-08
阅读:84
评论:0

背景技术:
::2.随着数据储存装置的科技在近几年快速地成长,许多数据储存装置,如符合安全数位(securedigital,缩写为sd)/多媒体卡(multimediacard,缩写为mmc)规格、复合式快闪存储器(compactflash,缩写为cf)规格、记忆条(memorystick,缩写为ms)规格与极数位(extremedigital,缩写为xd)规格的记忆卡、固态硬碟、嵌入式多媒体记忆卡(embeddedmultimediacard,缩写为emmc)以及通用快闪存储器储存(universalflashstorage,缩写为ufs)已经广泛地被应用在多种用途上。因此,各领域对于数据储存装置的需求也大幅成长。以其中的ufs为例,由于ufs可提供高传输速度与高稳定性,已广泛用于数位相机、智慧型手机、笔记型电脑、桌上型电脑等消费电子产品。3.有鉴于此,如何提升快闪存储器的存取速度变成一个重要的议题。技术实现要素:4.本发明之一目的在于提升快闪存储器的存取速度。5.根据本发明的一实施例,一种存储器控制器,耦接一存储器装置与一主机装置,用以控制该存储器装置的存取操作,包括一缓冲存储器、一存储器接口、一微处理器以及一主机接口。存储器接口耦接缓冲存储器与存储器装置,用以响应于一读取指令读取存储器装置,其中读取指令是由主机装置发出以读取一既定数据,既定数据包括多个部分,这些部分被分配不同的标签值,存储器接口自存储器装置分别读出既定数据的这些部分,将读出的既定数据的这些部分写入缓冲存储器,以完成既定数据的这些部分的数据传输,并且响应于既定数据的各部分的数据传输的完成依序向微处理器提供各部分所对应的存取资讯。微处理器响应于既定数据的这些存取资讯的取得对应地产生多个描述符,其中微处理器直接按照取得这些存取资讯的时间先后顺序产生并输出各存取资讯所对应的一描述符作为这些描述符之其中一者。主机接口耦接主机装置与缓冲存储器,并且包括一描述符池、一路由管理装置以及一直接存储器存取引擎。描述符池用以接收并暂存这些描述符。路由管理装置耦接描述符池,用以依序自描述符池所暂存的描述符中根据标签值选择出一描述符作为一最新的描述符,并将最新的描述符提供给直接存储器存取引擎。直接存储器存取引擎耦接路由管理装置,用以根据最新的描述符读取缓冲存储器,以取得既定数据之至少一部份。6.根据本发明的另一实施例,一种数据处理方法,包括:响应于一读取指令读取一存储器装置,以分别读出一既定数据所包括的多个部分,其中该读取指令是由一主机装置发出以读取既定数据,并且这些部分被分配不同的标签值;将分别读出的既定数据的这些部分写入一存储器控制器的一缓冲存储器,以完成既定数据的这些部分的数据传输;响应于既定数据的各部分的数据传输的完成依序提供各部分所对应的一存取资讯;取得既定数据的这些存取资讯并按照取得这些存取资讯的时间先后顺序对应地产生多个描述符;由一描述符池接收并暂存这些描述符;由一路由管理装置依序自描述符池所暂存的这些描述符中根据这些标签值选择出一描述符作为一最新的描述符,并将最新的描述符提供给一直接存储器存取引擎;以及由直接存储器存取引擎根据最新的描述符读取缓冲存储器,以取得既定数据之至少一部份。附图说明7.图1显示根据本发明的一实施例所述的数据储存装置的方块图范例。8.图2显示于本发明的一实施例中由微处理器根据取得的存取资讯触发主机接口的数据传输操作的简单示意图。9.图3显示根据本发明的一实施例所述的一数据处理方法的范例流程图。10.图4显示根据本发明的一实施例所述的配置于主机接口内的直接存储器存取引擎、路由管理装置与描述符池等装置的范例方块图。11.图5显示根据本发明的一实施例所述的于主机接口内的描述符处理流程示意图。12.符号说明13.100:数据储存装置14.110:存储器控制器15.112:微处理器16.112c:程序码17.112m:只读存储器18.114:存储器接口19.116:缓冲存储器20.118:主机接口21.120:存储器装置22.130:主机装置23.140:错误更正码引擎24.150,160,460:直接存储器存取引擎25.170,470:路由管理装置26.180,480:描述符池27.200:存取资讯集合28.220,520:触发数据集合29.461:直接存储器存取管理装置30.462:直接存储器存取装置31.471:描述符输出装置32.472-1,472-2,472-(n):路由引擎33.490:状态缓存器34.540:描述符集合35.slot_num:储存槽编号36.t0~t7:时间点37.tag_num:标签值具体实施方式38.在下文中,描述了许多具体细节以提供对本发明实施例的透彻理解。然而,本领域技术人员仍将理解如何在缺少一个或多个具体细节或依赖于其他方法、元件或材料的情况下实施本发明。在其他情况下,未详细示出或描述公知的结构、材料或操作,以避免模糊本发明的主要概念。39.在整个说明书中对“一实施例”或“一范例”的引用意味着结合该实施例或范例所描述的特定特征、结构或特性包括于本发明的多个实施例的至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“于本发明的一实施例中”、“根据本发明的一实施例”、“于一范例中”或“根据本发明的一范例”不一定都指到相同的实施例或范例。此外,特定特征、结构或特性可以在一个或多个实施例或范例中以任何合适的组合和/或子组合进行结合。40.此外,为让本发明的目的、特征和优点能更明显易懂,下文特举出本发明的具体实施例,并配合附图,作详细说明如下。目的在于说明本发明的精神而非用以限定本发明的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。41.图1显示根据本发明的一实施例所述的数据储存装置的方块图范例。数据储存装置100可包括一存储器装置120与一存储器控制器110。存储器控制器110用以存取(access)存储器装置120及控制存储器装置120的运作。存储器装置120可为一非挥发性(non-volatile,缩写为nv)存储器装置(例如,一快闪存储器(flashmemory)),并且可包括一或多个记忆元件(例如,一或多个快闪存储器晶粒、一或多个快闪存储器晶片、或其他类似元件)。42.数据储存装置100可耦接至一主机装置130。主机装置130可至少包括一处理器、一电源电路、以及至少一随机存取存储器(randomaccessmemory,缩写为ram),例如至少一动态随机存取存储器(dynamicram,缩写为dram)、至少一静态随机存取存储器(staticram,缩写为sram)等(以上未示于图1)。处理器与随机存取存储器可透过一总线彼此相互连接,并且可耦接至电源电路以取得电源。处理器可控制主机装置130的运作。电源电路可将电源供应至处理器、随机存取存储器以及数据储存装置100,例如输出一或多个驱动电压至数据储存装置100。数据储存装置100可自主机装置130取得所述驱动电压作为数据储存装置100的电源,并且为主机装置130提供储存空间。43.根据本发明的一实施例,主机装置130可对数据储存装置100发出指令,例如,读取指令或写入指令,用以存取存储器装置120所储存的数据,或者主机装置130可对数据储存装置100发出指令以进一步控制、管理数据储存装置100。44.根据本发明的一实施例,存储器控制器110可包括一微处理器112、一只读存储器(readonlymemory,缩写为rom)112m、一存储器接口114、一缓冲存储器116、与一主机接口118。只读存储器112m用以储存程序码112c。而微处理器112则用来执行程序码112c以控制对存储器装置120的存取。程序码112c可包括一或多个程序模块,例如启动载入(bootloader)程序码。当数据储存装置100自主机装置130取得电源时,微处理器112可藉由执行程序码112c执行数据储存装置100的一初始化程序。于初始化程序中,微处理器112可自存储器装置120载入一组系统内编程(in-systemprogramming,缩写为isp)程序码(未示于图1)。微处理器112可执行该组系统内编程程序码,使得数据储存装置100可具备各种功能。根据本发明的一实施例,该组系统内编程程序码可包括,但不限于:一或多个与存储器存取(例如,读取、写入与抹除)相关的程序模块,例如一读取操作模块、一查找表格模块、一损耗均衡(wearleveling)模块、一读取刷新(readrefresh)模块、一读取回收(readreclaim)模块、一垃圾回收模块、一非预期断电恢复(suddenpoweroffrecovery,缩写为spor)模块、以及一不可更正错误更正码(uncorrectableerrorcorrectioncode,缩写为uecc)模块,其分别被提供用以执行对应的读取、查找表格、损耗均衡、读取刷新、读取回收、垃圾回收、非预期断电恢复以及对侦测到的uecc错误进行错误处理等操作。45.存储器接口114包含了一错误更正码引擎140。错误更正码引擎140内部可包含一数据缓冲器(图未示),用以暂存数据,以辅助错误更正码引擎140对数据执行编码与解码操作。于将数据写入存储器装置120的写入流程中,错误更正码引擎140对需被写入存储器装置120的数据进行编码,例如执行错误更正码(ecc)编码,以产生额外的奇偶位元(paritybits)。而于将数据读出存储器装置120的读取流程中,错误更正码引擎140对从存储器装置120所读出的数据进行解码,用以检测数据中的错误位元,并且于可更正的情况下(例如,数据中的错误位元数量不超过错误更正码引擎140所能更正的错误位元数上限),修正错误位元的位元值。46.于典型状况下,存储器装置120包含了多个记忆元件,例如多个快闪存储器晶粒或多个快闪存储器晶片,各记忆元件可包含多个个存储器区块(block)。存储器控制器110对存储器装置120进行抹除数据运作以区块为单位来进行。另外,一存储器区块可记录(包含)特定数量的数据页(page),例如,实体数据页,其中存储器控制器110对存储器装置120进行写入数据的运作以数据页为单位来进行写入。47.实作上,存储器控制器110可利用其本身内部的元件来进行诸多控制运作,例如:利用存储器接口114来控制存储器装置120的存取运作(尤其是对至少一存储器区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用主机接口118来与主机装置130沟通。48.在一实施例中,存储器控制器110透过主机接口118并使用一标准通讯协定与主机装置130沟通。举例而言,上述的标准通讯协定包含(但不限于):通用序列总线(usb)标准、sd接口标准、超高速一代(ultrahighspeed-i,缩写为uhs-i)接口标准、超高速二代(ultrahighspeed-ii,缩写为uhs-ii)接口标准、cf接口标准、mmc接口标准、emmc接口标准、ufs接口标准、高技术组态(advancedtechnologyattachment,缩写为ata)标准、序列高技术组态(serialata,缩写为sata)标准、快捷外设互联标准(peripheralcomponentinterconnectexpress,缩写为pci-e)标准、并列先进附件(paralleladvancedtechnologyattachment,缩写为pata)标准等。49.在一实施例中,用以提供数据缓冲的缓冲存储器116以随机存取存储器来实施。例如,缓冲存储器116可以是静态随机存取存储器,但本发明亦不限于此。于其他实施例中,缓冲存储器116可以是动态随机存取存储器。50.在一实施例中,数据储存装置100可以是可携式存储器装置(例如:符合sd/mmc、cf、ms、xd标准的记忆卡、usb随身碟等装置),且主机装置130为一可与数据储存装置连接的电子装置,例如手机、笔记型电脑、桌上型电脑…等等。而在另一实施例中,数据储存装置100可以是固态硬碟或符合ufs或emmc规格的嵌入式储存装置,并且可被设置在一电子装置中,例如设置在手机、笔记型电脑、桌上型电脑之中,而此时主机装置130可以是该电子装置的一处理器。51.根据本发明的一实施例,存储器接口114可更包含一直接存储器存取(directmemoryaccess,缩写为dma)引擎150,用以执行数据传输操作,例如,用以于缓冲存储器116与存储器装置120的间传输数据,以辅助存储器装置120的存取操作。类似地,主机接口118也可包含一直接存储器存取引擎160,用以于主机装置130(或,对应的一数据缓冲器或一总线)与缓冲存储器116之间传输数据。为图示简洁,于图1中将直接存储器存取引擎150与160分别标记为dma引擎150与dma引擎160。52.于一读取操作中,存储器接口114会根据读取指令内所带的地址资讯透过dma引擎150自存储器装置120的对应位置读取数据,并将自存储器装置120读出的数据(以下称为读出数据read-out-data)暂存于缓冲存储器116中。于将读出数据read-out-data传输至缓冲存储器116后,存储器接口114会将缓冲存储器116内所储存的数据的相关资讯(以下称存取资讯)提供给微处理器112,以触发主机接口118的数据传输操作。例如,由主机接口118的dma引擎160进一步将缓冲存储器116内所储存的数据传输至主机接口118内部的数据缓冲器或总线,接着透过主机接口118将数据提供给主机装置130。53.一般而言,存储器接口114于完成一笔读出数据read-out-data的数据传输,便会将该笔读出数据read-out-data所对应的存取资讯提供给微处理器112,使微处理器112可即时根据取得的存取资讯触发主机接口118的数据传输操作。然而,存储器接口114可能不按照数据的原始顺序完成数据传输,其中数据的原始顺序可根据数据的逻辑地址被定义,而逻辑地址则为主机装置130识别存储器装置120内所储存的数据所使用的地址。举例而言,假设存储器接口114于执行一次读取操作时的最大处理数据量为4k位元组,若主机装置130发出一个要读取数据量为16k位元组的读取指令,存储器接口114会将此读取指令所欲读取的16k位元组的数据分割为4个数据量分别为4k位元组的部分,并对应地执行四次读取操作。由于各读取操作所耗费的时间未必相同,因此,沿着时间轴观察,这4个部分未必会依照数据的原始顺序被写入缓冲存储器116。举例而言,存储器接口114可能先完成前述16k位元组的数据的第四部分的写入操作,再完成其第三部分的写入操作,其中于16k位元组的数据中,第四部分接续在第三部分之后,因此第四部分所对应的逻辑忆体地址会接续在第三部分之后。54.此现象于存储器接口114被设计为使用多通道的架构执行存储器装置120的存取操作时更容易发生。由于多个通道可被配置用以同时处理多个读取指令所对应的读取操作,因此,前述无秩序(disorder)的现象将更为明显。55.当读出数据read-out-data被无秩序地写入缓冲存储器116时,由存储器接口114响应于数据传输的完成所依序提供之或者由微处理器112所依序收集的存取资讯从时间轴上来看也会是无秩序的,即,不按照数据的原始顺序,其中数据的原始顺序可根据数据的逻辑地址被定义。例如,对于数笔逻辑地址连续的数据,微处理器112可能无法依照其逻辑地址递增(或递减)的顺序收集到对应的存取资讯。56.图2显示于本发明的一实施例中由微处理器112根据取得的存取资讯触发主机接口的数据传输操作的简单示意图。存取资讯集合200为前述由存储器接口114响应于数据传输的完成所依序提供之或者由微处理器112所依序收集到的存取资讯。存取资讯集合200可以是多笔存取资讯的一集合,例如,于图2中,一横向的行(row)代表一笔存取资讯。一笔存取资讯对应于缓冲存储器116内所储存之一笔数据,或者对应于执行一次缓冲存储器116的写入操作所写入的数据,并且可至少包括一储存槽编号slot_num与一标签值tag_num之资讯。根据本发明之一实施例,由主机装置130所发出之一读取指令会被分配一储存槽编号slot_num,例如,0、1、2、3…等整数值,而为了区隔一既定时间内自主机装置130接收到的多个读取指令,于该既定时间内所接收到的不同读取指令会被分配不同的储存槽编号slot_num,即,不同的读取指令会对应于不同的储存槽编号slot_num。57.此外,如上所述,由于存储器接口114可能将一读取指令所欲读取的数据分割为多个部分,并对应地执行多个次读取操作,因此,不同的部分可被分配不同的标签值tag_num,但对应于一既定读取指令的既定数据所包含的多个部分会被分配相同的储存槽编号。举例而言,若主机装置130如上所述发出一个要读取数据量为16k位元组的读取指令,存储器接口114会将此读取指令所欲读取的16k位元组的数据被分配相同的储存槽编号,并进一步将数据分割为4个数据量分别为4k位元组的部分,且这4个部分可依序被分配标签值:0、1、2、last(最末),或者其他连续或递增的数列,其中的last用来代表这笔数据的最后一个部分。举另一例而言,若主机装置130发出一个要读取一既定数据的读取指令,其中既定数据所对应的逻辑地址范围为自逻辑区块地址(logicalblockaddress,缩写lba)lba1到lba16,存储器接口114可将既定数据分割为多个部分,例如,2个、4个或8个部分。假设存储器接口114于执行一次读取操作时可处理两个逻辑区块地址的数据量,则可将既定数据分割为8个部分,且这8个部分可分别如上所述被分配相同的储存槽编号,并依序被分配标签值0、1、2、…last,或者可依序被分配标签值0、2、4、6、8、10、12、14。换言之,于本发明的实施例中,标签值tag_num可被设定为连续且递增(或递减)的整数,或被设定为dma引擎160可识别的存储器地址的偏移量,其可为一递增(或递减)的数列,或者一等量递增(或递减)的数列,使得dma引擎160可根据标签值tag_num及既定数据于缓冲存储器116的起始地址推算出要从缓冲存储器116的哪个存储器地址取得各标签值所对应的部分的数据。因此,于本发明的实施例中,分配给一既定数据的多个部分的标签值具有一既定顺序,而此既定顺序可以是一数值递增(或递减)的顺序,或者一数值连续的顺序,或者其他足以辨别出既定数据的原始顺序或其逻辑地址顺序的特定顺序。58.图2最左侧以由上而下的箭头代表时间轴,包含时间点t0~t7,以表示取得存取资讯的时间先后顺序,其中储存槽编号slot_num标记为0与标签值tag_num标记为0的存取资讯为存取资讯集合200中最早取得的存取资讯,并对应于时间点t0,储存槽编号slot_num标记为0与标签值tag_num标记为last的存取资讯为存取资讯集合200中最晚取得的存取资讯,并对应于时间点t7。如上所述,由于各读取操作所耗费的时间未必相同,因此,微处理器112未必会依照数据的原始顺序收集到对应的存取资讯,甚至未必会依照多个读取指令的接收顺序收集到对应的存取资讯。59.图2亦显示出由微处理器112根据取得的存取资讯产生的触发数据集合220。触发数据集合220可以是多笔触发数据的一集合,例如,于图2中,一横向的行代表用以触发一数据传输作业的一笔触发数据,并且藉由图中的储存槽编号slot_num与标签值tag_num显示出各触发数据所对应的存取资讯。由于主机接口118的数据传输操作必须以正确的顺序(即,前述数据的原始顺序或前述逻辑地址递增(或递减)的顺序)被触发,因此,于此实施例中,如图所示,微处理器112于接收到储存槽编号slot_num标记为0且标签值tag_num标记为0的第一笔存取资讯以及储存槽编号slot_num标记为0且标签值tag_num标记为2的第二笔存取资讯后,由于第二笔存取资讯并非顺序正确的存取资讯(及,并非第一笔存取资讯所指的数据或部分的下一笔数据或部分所对应的存取资讯),因此,微处理器112仅能先根据第一笔存取资讯产生第一笔触发数据,接着必须等待直到下一个顺序正确的存取资讯,例如,储存槽编号slot_num标记为0且标签值tag_num标记为1的第三笔存取资讯,被收集到后,才能分别再根据第三笔存取资讯产生第二笔触发数据以及根据第二笔存取资讯产生第三笔触发数据,并以此类推。60.由微处理器112产生的触发数据会被提供给主机接口118的dma引擎160,以触发dma引擎160的数据传输操作,用以进一步将缓冲存储器116内所储存的数据传输至主机接口118内部的数据缓冲器或总线,其中触发数据可于被附加其他必须资讯(例如,来源起始地址和目标起始地址、要传输的数据大小等)后直接被提供给dma引擎160、或者微处理器112可于触发数据中再附加其他额外资讯(例如,状态资讯等)后提供给dma引擎160、或者微处理器112可根据触发数据或触发数据与其他必须资讯产生对应的一描述符(descriptor)后提供给dma引擎160,而本发明并不限于任一种实施方式。需注意的是,虽本发明并不限于任一种实施方式,但为简洁说明,以下将统一使用描述符(descriptor)一词作为说明。61.图2右侧显示出由微处理器112提供给dma引擎160的多个描述符,其下方的由右而左的箭头代表时间轴,以显示出提供描述符的时间先后顺序,方格内填入的数值(x,y)代表储存槽编号为x且标签值为y的触发数据所对应的描述符,并且其中以斜线填满的方格代表因微处理器112的等待操作而无法提供描述符的期间。如图所示,由于dma引擎160无法持续收到描述符,因而大幅影响读取操作的效率。62.为解决上述问题,于本发明的另一些实施例中,于主机接口118内更配置有一路由管理装置170与一描述符池(descriptorpool)180,其中描述符池180用以接收并暂存由微处理器112提供的描述符,使得微处理器112可无需费时等待顺序正确的存取资讯,而是直接可以根据取得或收集到存取资讯产生对应的描述符,并直接将描述符提供给主机接口118。即,于本发明的实施例中,微处理器可不理会或不考虑(或者,忽略或无视)存取资讯内所带的标签值的连续性或其应有的既定顺序,而仅按照取得存取资讯的时间先后顺序输出各存取资讯所对应的描述符。如此一来,微处理器112可有效率地于更短的时间内完成触发主机接口118执行数据传输的作业,并无须耗费时间等待存取资讯。当微处理器112完成触发主机接口118的作业,便可执行存储器控制器110的其他作业。因此可有效提升忆体控制器110的数据处理效率。63.图3显示根据本发明的一实施例所述的一数据处理方法的范例流程图,包含以下步骤:64.步骤s302:响应于一读取指令读取存储器装置120,以分别读出一既定数据所包括的多个部分,其中读取指令由主机装置130发出以读取既定数据,并且如上所述,既定数据的这些部分会被分配不同的标签值,且分配给既定数据的这些部分的标签值依照其应有的数据顺序而具有一既定顺序。65.步骤s304:将分别读出的既定数据的这些部分依序写入存储器控制器110的缓冲存储器116,以完成既定数据的数据传输。66.步骤s306:响应于既定数据的各部分的数据传输的完成依序提供各部分所对应的一存取资讯。67.于本发明的一实施例中,存储器控制器110的微处理器112可响应于接收到的读取指令触发存储器接口114执行步骤s302与s304,以完成既定数据的第一阶段数据传输。此外,于本发明的一些实施例中,步骤s306可由存储器接口114执行,而本发明的另一些实施例中,步骤s306也可改为由微处理器112响应于既定数据的各部分的数据传输的完成(例如,存储器接口114可于数据传输完成后通知微处理器112)主动收集各部分所对应的一存取资讯。68.步骤s308:取得既定数据的存取资讯并按照取得存取资讯的时间先后顺序对应地产生多个描述符。于本发明的实施例中,步骤s308可由微处理器112执行,并且于产生描述符后,微处理器112可直接将描述符提供给主机接口118。此外,于本发明的实施例中,存取资讯可包括主机装置130欲读取的既定数据的各部分所对应的一储存槽编号与一标签值的资讯,而描述符(或者,前述的触发数据)也可包括所述储存槽编号与标签值的资讯,以告知主机接口118目前储存于缓冲存储器116内的数据所对应的储存槽编号与标签值的相关资讯。接着,步骤s310~s314为主机接口118内部的操作,以完成既定数据的第二阶段数据传输。69.步骤s310:由主机接口118的描述符池180接收并暂存这些描述符。于本发明的一些实施例中,描述符池180可由一或多个暂存器实施。70.步骤s312:由路由管理装置170依序自描述符池180所暂存的描述符中根据储存槽编号与标签值选择出一描述符作为一最新的描述符,并将最新的描述符提供给dma引擎160。需注意的是,于本发明的实施例中,路由管理装置170可包括多个路由引擎(显示于图4),路由引擎会对应于不同的储存槽编号,各路由引擎用以专门处理标记有其所对应的储存槽编号的描述符,因此,步骤s312的操作也可以是由各路由引擎根据标签值的既定顺序自描述符池180所暂存的描述符中选择出一描述符。71.步骤s314:由直接存储器存取引擎根据最新的描述符读取缓冲存储器116,以取得既定数据之至少一部份。72.于取得既定数据或既定数据之至少一部份后,dma引擎160可进一步将取得的数据传输至主机接口118内部的数据缓冲器或总线。接着,透过主机接口118将既定数据的各部份以正确的顺序(即,前述数据的原始顺序)结合并依循前述标准通讯协定(例如,ufs接口标准)包装后,将既定数据提供给主机装置130。73.图4显示根据本发明的一实施例所述的配置于主机接口内的直接存储器存取引擎、路由管理装置与描述符池等装置的范例方块图。于本发明的实施例中,微处理器112可直接并持续将描述符提供给描述符池480。例如,微处理器112可直接响应于取得或收集到的存取资讯产生并输出各存取资讯所对应的一描述符,因此,于本发明的实施例中,微处理器112可按照取得存取资讯的时间先后顺序产生并输出各存取资讯所对应的描述符,并直接将描述符提供给描述符池480。74.路由管理装置470可包括一描述符输出装置471以及多个路由引擎472-1、472-2…472-(n),其中n为一正整数。于本发明的实施例中,可将不同的储存槽编号分配给不同的路由引擎,因此,路由引擎472-1、472-2…472-(n)可分别对应于不同的储存槽编号,用以分别自描述符池480所暂存的多个描述符中根据标签值的一既定顺序检索出具有对应的储存槽编号的一描述符作为一目标描述符。描述符输出装置471耦接路由引擎472-1、472-2…472-(n),并且可扮演一仲裁者的角色,用以自路由引擎472-1、472-2…472-(n)接收各路由引擎所检索出的目标描述符,并依序选择这些目标描述符之一者作为要输出的最新的描述符,用以依序将这些目标描述符输出。例如,描述符输出装置471可以循环(roundrobin)的方式轮流输出自路由引擎472-1、472-2…472-(n)所检索出的目标描述符作为最新的描述符。于其他实施例中,路由引擎472-1、472-2…472-(n)也可被赋予不同的优先权,描述符输出装置471可根据优先权顺序依序选择对应的目标描述符输出作为最新的描述符。75.直接存储器存取引擎460可包括一直接存储器存取管理装置461(以下称dma管理装置461)与一直接存储器存取装置462(以下称dma装置462)。dma管理装置461可自描述符输出装置471依序接收目前所取得的最新的描述符,并且将最新的描述符转译为dma装置462所需或者可识别的资讯后,将转译的资讯提供给dma装置462。dma装置462可根据dma管理装置461所提供的资讯读取缓冲存储器116,以取得主机装置所欲读取的数据之至少一部份。76.于本发明的一些实施例中,dma装置462于完成数据传输后,可回报数据传输作业的一状态,而主机接口118可还包括一状态缓存器490,用以暂存由dma装置462回报的状态。微处理器112可存取状态缓存器490,以取得所需的状态资讯。77.图5显示根据本发明的一实施例所述的于主机接口内的描述符处理流程示意图。延续图2所示的存取资讯集合200范例,触发数据集合520为微处理器112根据取得的存取资讯集合200内的存取资讯所产生的触发数据的一集合,或者,如上所述的也可以代表微处理器112根据存取资讯或触发数据或其他必须资讯所对应产生的描述符的一集合。描述符集合540为描述符池480内所储存的描述符的一集合。由图5中可看出,于本发明的实施例中,由于微处理器112可直接并持续将描述符提供给描述符池480,因此,沿着时间轴观察,触发数据集合520内所对应的数据顺序与描述符集合540内所对应的数据顺序相同。78.如上所述,由主机装置130所发出的一读取指令会被分配一储存槽编号slot_num,而路由引擎472-1、472-2…472-(n)可分别对应于不同的储存槽编号,用以专门处理标记有其所对应的储存槽编号的描述符。假设路由引擎472-1(于图5中标记为路由引擎1)对应于储存槽编号0,路由引擎472-2(于图5中标记为路由引擎2)对应于储存槽编号1,路由引擎472-3(于图5中标记为路由引擎3)对应于储存槽编号3,则路由引擎472-1会自描述符池480所暂存的多个描述符中根据标签值的既定顺序依序检索出具有储存槽编号0的描述符,路由引擎472-2会自描述符池480所暂存的多个描述符中根据标签值的既定顺序依序检索出具有储存槽编号1的描述符,并以此类推。79.于本发明的实施例中,既定顺序可为一连续顺序或一递增顺序。路由引擎1、2、3可根据标签值的既定顺序设定要检索的目标描述符(例如,设定目前要检索的储存槽编号及标签值),使得目标描述符所指的数据或部分为接续先前检索出的描述符所指的数据的下一笔数据或部分,并分别自描述符池480所暂存的多个描述符中检索出目标描述符,此目标描述符具有路由引擎所对应的储存槽编号及目前所设定的标签值。由路由引擎1、2、3依序检索出的目标描述符将提供给描述符输出装置471,由描述符输出装置471依序选择其中一者输出。80.图5右侧显示出分别由路由引擎1、2、3依序检索出的描述符,以及依序由描述符输出装置471输出的描述符,其下方的由右而左的箭头代表时间轴,以显示出输出描述符的时间先后顺序,方格内填入的数值(x,y)代表储存槽编号为x且标签值为y的存取数据所对应的描述符。如图所示,路由引擎1、2、3会依照标签值的既定顺序检索出对应的描述符,而描述符输出装置471则会依照其自订的仲裁机制依序将描述符提供给直接存储器存取引擎。需注意的是,虽此范例中既定顺序为一连续顺序或一递增顺序,然而于本发明的另一些实施例中,既定顺序也可以是一递减顺序。81.于本发明的实施例中,一读取指令所对应的既定数据的多个部分可以一既定顺序被分配不同的标签值,而不同于图2的实施范例,于图5的实施范例中,微处理器112不理会或不考虑标签值的既定顺序,而仅按照取得存取资讯的时间先后顺序输出各存取资讯所对应的描述符。即,微处理器112可响应于最新取得的存取资讯即时输出对应的描述符。接着,再利用路由管理装置内的路由引擎依既定顺序检索出的排序正确的描述符,使得主机接口118的数据传输操作可以正确的顺序(即,前述数据的原始顺序或前述逻辑地址递增(或递减)的顺序)被触发。如此一来,微处理器112可有效率地于更短的时间内完成触发主机接口118执行数据传输的作业,无须耗费时间等待存取资讯。此外,dma引擎160也无需费时等待描述符的到来,而是可以连续执行数据传输操作,因此可有效提升存储器控制器110的数据处理效率及读取操作的效率。82.以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。当前第1页12当前第1页12
技术特征:
1.一种存储器控制器,耦接一存储器装置与一主机装置,用以控制该存储器装置的存取操作,包括:一缓冲存储器;一存储器接口,耦接该缓冲存储器与该存储器装置,用以响应于一读取指令读取该存储器装置,其中该读取指令由该主机装置发出以读取一既定数据,该既定数据包括多个部分,这些部分被分配不同的标签值,该存储器接口自该存储器装置分别读出该既定数据的这些部分,将读出的该既定数据的这些部分写入该缓冲存储器,以完成该既定数据的这些部分的数据传输,并且响应于该既定数据的各部分的数据传输的完成依序向一微处理器提供各部分所对应的一存取资讯;该微处理器,响应于该既定数据的这些存取资讯的取得对应地产生多个描述符,其中该微处理器直接按照取得这些存取资讯的时间先后顺序产生并输出各存取资讯所对应的一描述符作为这些描述符之其中一者;以及一主机接口,耦接该主机装置与该缓冲存储器,包括:一描述符池,用以接收并暂存这些描述符;一路由管理装置,耦接该描述符池,用以依序自该描述符池所暂存的这些描述符中根据这些标签值选择出一描述符作为一最新的描述符,并将该最新的描述符提供给一直接存储器存取引擎;以及该直接存储器存取引擎,耦接该路由管理装置,用以根据该最新的描述符读取该缓冲存储器,以取得该既定数据之至少一部份。2.如权利要求1所述的存储器控制器,其特征在于,该路由管理装置包括:多个路由引擎,这些路由引擎对应于不同的储存槽编号,用以分别自该描述符池所暂存的这些描述符中根据这些标签值的一既定顺序检索出具有对应的该储存槽编号的一描述符作为一目标描述符;以及一描述符输出装置,耦接这些路由引擎,用以自这些路由引擎接收这些目标描述符,并依序选择这些目标描述符之一者作为该最新的描述符。3.如权利要求2所述的存储器控制器,其特征在于,该既定顺序为一递增顺序。4.如权利要求2所述的存储器控制器,其特征在于,该既定数据的这些部分被分配相同的储存槽编号。5.如权利要求2所述的存储器控制器,其特征在于,不同的读取指令对应于不同的储存槽编号。6.如权利要求4所述的存储器控制器,其特征在于,由该存储器接口所提供各部分所对应的该存取资讯包括各部分所对应的该储存槽编号与该标签值。7.如权利要求2所述的存储器控制器,其特征在于,该既定数据的这些部分被分配不同但连续的标签值,该微处理器不理会这些标签值的该既定顺序而仅按照取得这些存取资讯的时间先后顺序输出各存取资讯所对应的该描述符。8.一种数据处理方法,包括:响应于一读取指令读取一存储器装置,以分别读出一既定数据所包括的多个部分,其中该读取指令由一主机装置发出以读取该既定数据,并且这些部分被分配不同的标签值;将分别读出的该既定数据的这些部分写入一存储器控制器的一缓冲存储器,以完成该
既定数据的这些部分的数据传输;响应于该既定数据的各部分的数据传输的完成依序提供各部分所对应的一存取资讯;取得该既定数据的这些存取资讯并按照取得这些存取资讯的时间先后顺序对应地产生多个描述符;由一描述符池接收并暂存这些描述符;由一路由管理装置依序自该描述符池所暂存的这些描述符中根据这些标签值选择出一描述符作为一最新的描述符,并将该最新的描述符提供给一直接存储器存取引擎;以及由该直接存储器存取引擎根据该最新的描述符读取该缓冲存储器,以取得该既定数据之至少一部份。9.如权利要求8所述的数据处理方法,其特征在于,该描述符池、该路由管理装置以及该直接存储器存取引擎设置于该存储器控制器的一主机接口内。10.权利要求8所述的数据处理方法,其特征在于,还包括:将不同的储存槽编号分配给该路由管理装置的多个路由引擎;这些路由引擎分别自该描述符池所暂存的这些描述符中根据这些标签值的一既定顺序检索出具有对应的该储存槽编号之一描述符作为一目标描述符;以及这些路由引擎接收这些目标描述符,并依序选择这些目标描述符之一者做为该最新的描述符。11.如权利要求10所述的数据处理方法,其特征在于,该既定顺序为一递增顺序。12.如权利要求10所述的数据处理方法,其特征在于,该既定数据的这些部分被分配相同的储存槽编号。13.如权利要求10所述的数据处理方法,其特征在于,不同的读取指令对应于不同的储存槽编号。14.如权利要求12所述的数据处理方法,其特征在于,各部分所对应的该存取资讯包括各部分所对应的该储存槽编号与该标签值。15.如权利要求8所述的数据处理方法,其特征在于,该既定数据的这些部分以一既定顺序被分配不同的标签值,并且于执行取得该既定数据的这些存取资讯并按照取得这些存取资讯的时间先后顺序对应地产生这些描述符的步骤时,不考虑这些标签值的该既定顺序。
技术总结
本发明涉及一种存储器控制器和数据处理方法。该方法包括:响应于一读取指令读取存储器装置,以分别读出既定数据所包括的多个部分;将分别读出的这些部分写入缓冲存储器,以完成既定数据的这些部分的数据传输;响应于既定数据的各部分的数据传输的完成依序提供各部分所对应的存取资讯;取得既定数据的存取资讯并按照取得存取资讯的时间先后顺序对应地产生多个描述符;接收并暂存描述符;依序自描述符池中根据标签值选择出一最新的描述符并提供给直接存储器存取引擎;以及由直接存储器存取引擎根据最新的描述符读取缓冲存储器,以取得既定数据之至少一部份。取得既定数据之至少一部份。取得既定数据之至少一部份。
技术研发人员:叶柏昌 陈奕达 陈文殊 郭国铨
受保护的技术使用者:慧荣科技股份有限公司
技术研发日:2022.04.11
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/