CN1991810A - 可支持多个内部通道软件请求的直接存储器存取控制器 - Google Patents

可支持多个内部通道软件请求的直接存储器存取控制器 Download PDF

Info

Publication number
CN1991810A
CN1991810A CNA2006101717407A CN200610171740A CN1991810A CN 1991810 A CN1991810 A CN 1991810A CN A2006101717407 A CNA2006101717407 A CN A2006101717407A CN 200610171740 A CN200610171740 A CN 200610171740A CN 1991810 A CN1991810 A CN 1991810A
Authority
CN
China
Prior art keywords
request
channel
memory access
prediction
direct memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006101717407A
Other languages
English (en)
Other versions
CN100495374C (zh
Inventor
伊沃·图西克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1991810A publication Critical patent/CN1991810A/zh
Application granted granted Critical
Publication of CN100495374C publication Critical patent/CN100495374C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种直接存储器存取(DMA)控制器,可支持一通道(内部通道)中多个处于等待的软件请求。该直接存储器存取控制器包含多个通道配置缓存器、通道请求仲裁器、尾部搜寻单元、通道预测单元、命令和请求项产生器与请求队列。这些通道配置寄存器可输出一组实际通道参数,该通道预测单元则产生一组预测通道参数,而命令和请求项产生器乃依据尾部搜寻单元的输出送出一请求至请求队列。如果在对直接存储器存取控制器的当前处于等待的请求执行尾部搜寻的过程中没有找到有效的处于等待的内部通道请求,则该命令和请求项产生器会使用实际通道参数值以产生下个命令和请求;否则,该命令和请求项产生器使用最新列入排程的内部通道软件请求的预测通道参数值,以产生下个命令和请求。

Description

可支持多个内部通道软件请求的直接存储器存取控制器
技术领域
本发明涉及数据传输,尤其涉及直接存储器存取(DMA)控制器,用于最佳化快速存储器对存储器的传输,以支持内部通道(同一直接存储器存取通道)中多个处于等待的软件请求(software request)。
背景技术
在数据存储器装置的运行中,最好的方式是由直接存储器存取来执行在处于分页模式的主存储器和作为数据存储装置的辅助存储器之间的数据传输存取,这种技术是通过直接存储器存取控制器来执行数据传输,且不需与数据处理器(processor)产生任何相互操作。虽然直接存储器存取是通过数据处理器来启动操作,但是数据在传输时并不需要经由数据处理器。直接存储器存取装置可与直接存储器存取控制器合并,因此可将数据从辅助存储器(例如磁盘驱动器)直接传输给主存储器。
直接存储器存取控制器是通过直接存储器存取请求(DMA request)来执行直接存储器存取传输的。直接存储器存取请求可以是软件请求或者是硬件请求。来自或发送至******的直接存储器存取传输与******所产生的直接存储器存取硬件请求相关,并传送至直接存储器存取控制器。而存储器对存储器(memory-to-memory)直接存储器存取传输则与软件请求相关。大量的直接存储器存取传输是先将数据分组拆解成小块并以突发传输(burst)的方式将数据送至***数据总线,且每个数据分组或突发传输都与直接存储器存取的硬件或软件请求相关。
如图1所示,其是直接存储器存取控制器的结构图。所述直接存储器存取控制器100提供数个可配置在CPU总线上的直接存储器存取通道。在本实施例中的直接存储器存取控制器中,直接存储器存取通道可配置在通道配置寄存器112中,以在“本地存储器”(local memory)和连接***总线的外部***存储器之间传输数据。该直接存储器存取控制器100可包括数个模块,如总线接口单元110、直接存储器存取半队列(en-queue)引擎130、全队列(de-queue)引擎150、直接存储器存取队列管理器170和***总线接口190以处理数据传输。
该直接存储器存取控制器100用于管理内部的数笔数据和控制信息队列。该直接存储器存取控制器的通道请求仲裁器134在当前的直接存储器存取传输请求之间进行仲裁,这些请求是与通道配置寄存器112中的所有当前的直接存储器存取通道相关,且每个请求涉及数据分组的传输,例如从本地存储器(local memory)至外部***存储器(直接存储器存取写入,DMA Write),或由外部***存储器至本地存储器(直接存储器存取读取,DMA Read)。对每个来自通道请求仲裁器134的特定(selected)直接存储器存取(写入或读出)请求,该半队列引擎130会将数据分组列入排程以供直接存储器存取传输之用。针对每个特定的请求,该半队列引擎130将一控制信息项(entry)写入到先进先出请求队列(reqQ)132,并写入一控制信息项到先进先出命令队列(cmdQ)174之中。此外,如果是直接存储器存取写入请求,则半队列引擎130会从本地存储器(未示出)读取数据并将数据置于写入数据队列(wdQ)172。命令队列(cmdQ)174中的一项可控制每个列入排程的数据分组如何送到***总线上。从外部***存储器接收至***总线上的数据放置在读取数据队列(rdQ)176。与直接存储器存取写入和读取传输相关的***总线传输许可/中止(OKAY/ABORTED)状态信息则置放于先进先出响应队列(respQ)178中,所述状态信息是来自***总线上的响应信号,而响应信号相关于***总线上的每笔数据传输,用以指示数据传输是否传输成功(许可)与否(中止)。请求队列132的所有项乃对应至直接存储器存取控制器的内部队列中已列入排程或尚在等待中的所有请求。请求队列132的每一项包含用以描述已列入排程的直接存储器存取的描述元;直接存储器存取控制器100依序执行请求队列132中所有的该类项。全队列引擎150将请求队列132表头的一项与响应队列(respQ)178的响应信号作配对。与直接存储器存取读取传输相关的数据自读取数据队列(rdQ)176传送到本地存储器。当所有与直接存储器存取请求相关的所有响应信号都已处理完毕后,请求队列132表头的该项会被弹出请求队列,同时更新相关的直接存储器存取通道配置参数,以反映数据已在***总线上成功传送完毕。假设数据分组或该数据分组的部分无法成功传送,则禁止该直接存储器存取通道进行下一步的传输,同时更新其配置参数以反映该数据传输在***总线上被中止。
一个直接存储器存取控制器通常可支持多个直接存储器存取通道(例如,8个通道),内部缓冲器的切割方式可存放至少一最大容量突发的写入数据于对外写入数据缓冲器(wdQ),而其对内读取数据缓冲器(rdQ)可存放至少一最大容量突发的读取数据。由于队列的动态特性,当一最大容量突发传输弹出响应队列与读取数据缓冲器的同时,另一最大容量突发传输可传送到***总线,而第三个最大容量突发传输则被推入命令队列与写入数据队列。
对应于多个直接存储器存取通道的多个请求可同时于直接存储器存取控制器内处于等待。然而,与同一直接存储器存取通道相关的存储器对存储器传输若能越快执行越好。因此直接存储器存取控制器可管理内部队列中接连的多个处于等待的内部通道软件请求乃所期望者。
然而,支持多个处于等待的内部通道软件请求有许多的问题存在。当与同一直接存储器存取通道相关的其余内部通道请求已于直接存储器存取控制器处于等待的同时,此直接存储器存取控制器如何计算下个请求的来源与目的地址?再者,直接存储器存取控制器如何得知当前最新的处于等待的请求于何时会使通道到达终端计数(terminal count)?这些问题的原因在于通道参数基本上并未更新,直到处于等待的请求已完成,且直接存储器存取控制器确认相关的数据分组已于***总线上传输成功。
因此,提供一个可有效支持多个处于等待的内部通道软件请求的直接存储器存取控制器,仍为待解决的课题。
发明内容
本发明提供一种直接存储器存取控制器以支持同一通道中多个处于等待的软件请求。
在本发明的一个实施例中,直接存储器存取控制器包括:通道配置寄存器(channel configuration register)、通道请求仲裁器(channel request arbiter)、尾部搜寻单元(tail search unit)、通道预测单元(channel prediction)、命令和请求项产生器(command/request entry generator)以及请求队列(request queue)。该通道配置寄存器输出一组实际通道参数,该通道预测单元产生一组预测通道参数,而命令和请求项产生器依据尾部搜寻器的输出发送一请求至请求队列。如果在尾部搜寻中没有找到有效且处于等待的内部通道请求,则该命令和请求项产生器使用实际通道参数值以产生下个命令或请求;否则,该命令和请求项产生器使用于尾部搜寻请求队列中处于等待的请求中找到预测通道参数值。
在本发明的另一实施例中,提供一种适用于直接存储器存取控制器的等待请求队列格式。该等待请求队列格式包括:预测终端计数字段(predictedterminal count field)、用于预测一特定通道是否在一后续的处于等待的请求成功完成后到达其终端计数,预测位计数字段,用于预测后续的处于等待的请求成功完成后剩余位的数目,以及两个预测存储器地址,用于预测下个传送的内部通道数据分组的来源以及目的存储器启始地址。该些预测值组成下个将传送的内部通道数据分组的实际通道参数值。
在本发明的又一实施例中,提供一种适用于直接存储器存取控制器传送多个处于等待的请求的方法。该方法包含下列步骤:提供一通道请求,执行一尾部搜寻,并依尾部搜寻的结果执行该请求。如果于尾部搜寻中没有找到处于等待的内部通道请求,则使用实际通道参数值来产生下一个命令和请求;否则,使用于尾部搜寻请求队列中处于等待的请求所找到的预测通道参数值。
附图说明
以下的附图是为了使本发明更易于了解。此附图与实施方式是为了说明本发明的实施例,并阐述本发明的原理。如下所示:
图1示出传统直接存储器存取控制器。
图2示出本发明的一个优选实施例的直接存储器存取控制器的结构图。
图3示出本发明的一个优选实施例的通道预测寄存器配置的方块图。
图4示出本发明的一个优选实施例的、包括错误响应信号的直接存储器存取通道参数更新过程。
图5示出本发明的一个优选实施例的、内部通道分组直接存储器存取服务过程的流程图。
图6示出本发明的一个优选实施例的直接存储器存取控制器的尾部搜寻单元的方块图。
图7示出本发明的一个优选实施例的直接存储器存取控制器的通道预测单元的方块图。
【主要元件符号说明】
212通道组态暂存器
214请求遮罩单元
216通道请求仲裁器
218尾部搜寻单元
220通道预测单元
222命令与请求项目产生器
224请求队列
226命令队列
302预测外部记忆体地址
304预测本地记忆体地址
306预测位元计数
308预测线路计数
310预测终端计数
312预留栏位
具体实施方式
本发明公开了一种可支持同一通道中多个处于等待的软件请求的直接存储器存取控制器。本发明的直接存储器存取控制器可根据尾部搜寻结果动态产生一组预测通道参数。在本发明的一个优选实施例中,当其余请求已置入队列中且后续的请求正在排程时,可计算预测参数值,并伴随一通道号码(channel number)放置于请求队列以做为项目的一部份,以有效解决先前的地址计算与终端计数问题。
参考图2,该图是本发明的一个优选实施例的直接存储器存取控制器的结构图。直接存储器存取控制器200包括:多组通道配置寄存器(channelconfiguration register)212、请求屏蔽(request mask,Req Mask)单元214、一个通道请求仲裁器(channel request arbiter)216、尾部搜寻单元(tail searchunit)218、通道预测单元(channel prediction unit)220、命令和请求项产生器(command/request entry generator)222、请求队列(request queue,reqQ)224以及命令队列(command queue,cmdQ)226。
请求屏蔽单元214不仅接收软件请求也接收与当前直接存储器存取通道相关的硬件请求,并且将上述的请求传送到通道请求仲裁器216。当通道请求仲裁器216指定某个新软件请求并将其列入服务清单时,命令和请求项产生器222首先执行所谓的尾部搜寻,以寻找在指定通道的内部请求队列(reqQ)224是否已有处于等待的请求。已列入服务清单且放进请求队列的直接存储器存取请求将由直接存储器存取控制器依序执行。在尾部搜寻期间,命令和请求项产生器222搜寻命令队列(reqQ)224中具有相同通道号码的有效项。在一个实施例中,该搜寻从请求队列224尾部至头部搜寻所有项,以寻找直接存储器存取中目前处于等待的最后一个内部通道软件请求。如果找到了该项,则随后即停止尾部搜寻,而尾部搜寻单元218会将该项的预测参数值传送给通道参数预测单元220;否则尾部搜寻单元218传送该指定通道的实际通道参数值给通道参数预测单元220。通道参数单元220使用从尾部搜寻接收的数值来预测与该软件请求相关的新通道参数。该命令和请求项产生器222将相关的项推进请求队列224并将描述元推进命令队列226以产生并半队列化新的请求。在一个实施例中,请求队列和命令队列都以先进先出为基础来处理。
参考图3,其是本发明的一个优选实施例的寄存器配置,其示出请求队列中包含通道预测字段的一个项。本范例通过将请求队列的每一项与一单一80位寄存器相结合,以实现可支持内部通道多个软件请求的功能。请求队列项寄存器300包含至少4个字段来表示预测通道参数,其分别为预测终端计数(predicted terminal count)、预测字节计数(predicted byte count),预测本地存储器地址(predicted local memory address)、以及预测外部存储器地址(extemal memory address)。第一个字段是一位的预测终端计数(PRED_TC)310,用以预测当相关的处于等待的请求完成时,该通道是否将到达终端计数。第二个字段是16位的预测位计数(PRED_BYTE_COUNT)306,用以预测当相关的处于等待的请求完成之后,剩余需发送到一特定的通道上的位数量。第三个字段是16位的预测本地存储器地址(PRED_LM_ADDR)304,用以预测相关的处于等待的请求完成之后,本地存储器内的下个地址为何。第四个字段是32位的预测外部存储器地址(PRED_EM_ADDR)302,用以预测当相关的处于等待的请求完成之后,外部存储器地址内的下个地址为何。此外,第五个字段是5位的预测线路计数(PRED_LN_COUNT)308,可视需要于直接存储器存取控制器为固定偏移(Offset)分散或集中直接存储器存取控制器时选择性使用。预测线路计数(PRED_LN_COUNT)308用以预测当相关的处于等待的请求完成之后,线路计数值为何。剩余的10位则为保留为预留字段312。关于固定偏移分散或聚集直接存储器存取控制器的详细数据可在申请人的另一申请“固定偏移分散或聚集直接存储器存取控制器”得知相关细节。请求项内还包含其它未显示在图中的信息,例如,用以表示一请求项为有效的有效位,以及结合一项与直接存储器存取控制器其中一通道的通道号码信息字段。
在操作中,当一新的软件请求被列入服务清单,且尾部搜寻单元218显示无其它请求处于等待中,命令和请求项产生器222会产生命令描述元传给命令队列(cmdQ)226,并依据通道配置寄存器212中的通道参数值执行通道参数预测。另一方面,当一个新的软件请求被列入服务清单,同时尾部搜寻单元218显示已有其它请求处于等待中,命令和请求项产生器222则产生命令描述元传给命令队列(cmdQ)226,并依据请求队列(reqQ)224中最新的预测通道参数值执行新通道参数预测。若预测终端计数310为1时,则该内部通道软件请求受请求屏蔽单元214屏蔽。
依据直接存储器存取控制器所能提供的功能,通道参数预测可增加其它信息类型的预测。其中的一个范例为预测线路计数参数,其为预测线路区段计数值,用以改善固定偏移分散或聚集直接存储器存取控制器的分散或聚集性能。该控制器的详细数据在申请人的另一申请案“固定补偿分散或聚集直接存储器存取控制器”,其中有更详细的描述。
直接存储器存取控制器可将直接存储器存取传输分解成较小的数据分组,并以突发传输的方式送至***总线,在一个实施例中,该***总线为先进高效能总线(AHB)。
举例而言,直接存储器存取控制器可以1位、2位或4位的单一、4节拍或8节拍的突发传输来传送与接收数据,其中4位的8节拍突发传输是在8个连续数据时钟周期中传输4位数据。在通道配置时,编程器可决定直接存储器存取传输计数,来源与目的地址以及数据应如何传送。举例而言,如果传输计数设定为1024字节,则应使用4位的8个节拍突发传输,直接存储器存取控制器会将传输分成32个突发传输(32×8×4=1024)。
当突发传输送出后,直接存储器存取控制器会连续不断地更新其通道配置寄存器。先进高效能总线(AHB)的一个重要特征为每个数据状态传输与来自接收终端的响应相关。一个典型实例为,直接存储器存取控制器随着OK响应而送出或接收突发传输数据。在其它实施例中,突发传输可能会等待、***或重试,意即突发传输将于稍后完成。无论如何,如果在其中一通道的直接存储器存取传输期间接收到错误信息响应,则直接存储器存取控制器将会禁止该直接存储器存取通道,更新该通道的传输大小以及来源与目的地址寄存器,使其可反应于错误信息响应发送之前已成功送出的数据数量,并设定通道错误标志。与错误信息响应相关的数据传输将因此中止。在图4的实施例中,第0数组是依据用户的设定值。第1列与第2列的数值对应于先进高效能总线上一突发传输成功后所更新的数值。第3列则反映至接收到错误信息响应为止所传送的位数目。接收到错误信息响应后,该通道可再一次藉由软件来执行服务。
当一直接存储器存取通道是用以自本地存储器传输数据至外部存储器配置时,该直接存储器存取读取对应于本地存储器的突发传输的数据分组,并将该数据分组置入写入请求队列(wrQ),而且命令和请求项产生器会产生一写入命令到命令队列(cmdQ)中以及一描述请求项到请求队列(reqQ)。当突发传输经由***总线传输,与每个数据状态传输相关的响应会以相反方向通过响应队列(respQ)。响应分析器接着提供更新的通道信息给通道配置寄存器。命令项(command entry)、请求项(request entry)与响应分组(respose packet)都与每一写入数据分组(write-data packet)相关。
另一方面,当直接存储器存取通道用以自外部存储器传输数据至本地存储器,直接存储器存取将来自命令和请求项产生器的读取命令置放至命令队列(cmdQ)并将请求项置放至请求队列(reqQ)。当突发传输送至***总线,读取数据被置入读取数据队列(rdQ),同时相关响应也被置入响应队列(respQ)。响应分析器接着提供更新的通道信息给通道配置寄存器。此外,命令项、请求响应与应答分组都与每一读取数据分组(read-data packet)相关。
本发明是关于直接存储器存取控制器的设计,该直接存储器存取控制器与可支持每笔数据传输相关的许可或中止响应信号的***总线相连接,该直接存储器存取控制器通过支持多个处于等待的内部通道软件请求以最佳化快速存储器对存储器传输。
传输计数、来源与目的地址寄存器应在突发传输已通过***总线,以及其相关的许可或中止响应已被确认之后再做更新较为恰当。甚者,若在直接存储器存取控制器中包含多个属于同一直接存储器存取通道的处于等待的请求,且其相关的数据传输在总线上被中止,传输计数、来源与目的地址寄存器在分组被列入服务清单时即迅速更新,则于上述情况发生时将难以计算正确的值。在一直接存储器存取数据总线传输中止后,其相关的直接存储器存取通道应被禁止,且该通道中的传输计数值、来源与目的地址寄存器应反映被终止的数据。
当一分组列入直接存储器存取传输清单,直到该分组到达目的地的时间点时,可能产生可观的时间延迟。同时事先可能已有多个处于等待的分组被列入清单了。因此在分组传送完毕且所有的响应都已经过确认后,再更新通道参数,还可提供追踪直接存储器存取传输行进的能力。实际通道参数的更新应以可反映已成功传送的数据的方式执行。
参考图5,其是在直接存储器存取控制器中,运用多个处于等待的软件请求的内部通道数据分组直接存储器存取传输过程的流程图。首先于步骤502设定直接存储器存取通道的初始配置,此步骤使用软件请求与8节拍突发传输的4位数据传输,以传送107位数据。直接存储器存取控制器在504、506与508等三个步骤中分别传送三个32位分组并于步骤512中传送11位的分组。这些分组在步骤504、506与508中依序处理。通道参数如传输计数、来源与目的地址与终端计数等,在每一次数据分组完成传输,且其相关的响应信号已经确认后受到更新,也即在步骤510、514、516与518结束时。当编号#1、#2与#3的分组被列入传输清单以备传输时,直接存储器存取控制器内已有其它内部通道分组处于等待中。因此,直接存储器存取控制器只有在处理分组#0时会使用通道的配置寄存器内的实际参数值,而在处理其它分组#1、#2与#3时这些参数值并非最新更新值。
因此,如果在直接存储器存取控制器内有多个处于等待的内部通道分组时,如何确定尚有其它的内部通道分组也可被列入排程清单;再者,若该内部通道分组可被列入排程清单,又要如何决定其大小、来源与目的地址,皆为需解决的课题。
其中一个解决问题的方法是,提供一组与每一通道相关的预测通道参数值,当直接存储器存取通道有一个已列入排程的分组等待传输,且其仍于直接存储器存取控制器内等待时,该组参数为有效值。当该组参数被视为有效值时,则于每次直接存储器存取通道排定一新的分组进入服务清单时,使用该组预测参数值。该组预测值是一请求成功完成后所得到的值。依据该组预测值,所有与下一内部通道的分组相关的参数,例如分组大小、来源与目的地址寄存器等,可于其它内部通道的分组仍在队列中等待时,即可计算得知。如果直接存储器存取控制器可支持的处于等待的分组总数的最大值,比直接存储器存取通道总数还多,则该组通道预测参数可与每个通道的配置寄存器共同被存储。然而,当受支持的通道数量要比处于等待的分组的最大总数量多时,则将此预测通道参数提供为请求队列(reqQ)中处于等待的请求的项的一部分,乃为较节省成本的作法。
该预测终端计数位310由图2中的请求屏蔽单元214所使用。请求屏蔽单元214监控所有与当前的直接存储器存取通道相关的硬件与软件请求,遮蔽部分有效请求,并将其它的有效请求送至通道请求仲裁器以作为当前的请求。当一直接存储器存取通道已有请求于直接存储器存取控制器内处于等待时,与此通道相关的硬件请求则永远被遮蔽。如果一个已启动的通道包含有效项于请求队列中,且预测终端计数位310被设为1,则此通道的软件请求亦被遮蔽。
通道请求仲裁器216监视来自请求屏蔽单元214的所有当前的请求,并选择下个欲服务的直接存储器存取通道号码。该通道号码供予尾部搜寻单元218与命令和请求项产生器222使用,并可用以多任务输出与所选定的通道相关的实际通道参数212。
参考图6,是图解本发明的一个优选实施例的尾部搜寻单元。在本实施例中,尾部搜寻单元800支持3-项深度先进先出请求队列(reqQ)。尾部搜寻优先译码器802的输入包含预测通道参数值,请求队列(reqQ)224中请求队列项的通道号码与有效位,其中reqQ[2].*表示来自reqQ的尾部项的参数,而reqQ[0].*表示来自reqQ的头部项的参数。尾部搜寻优先译码器802的输入还包含所选定通道的实际通道参数值,以ch_nr.*来表示,以及来自通道仲裁器216的所选定的通道号码arb_ch_nr。如果所选定的通道于请求队列的项中存在有优先译码器802所产生的最新预测的内部通道参数值,则尾部搜寻单元800根据此预测参数值产生数个输入参数(于图6中标示为p_X);反之,则依据所选定通道的实际参数值来产生。p_X输入参数,例如p_ln_count、p_byte_count、p_em_addr、p_lm_addr,供予前述的通道参数预测单元以及命令和请求项产生器使用。
参考图7,其图解本发明的一个优选实施例的通道参数预测单元900。在本实施例中,通道参数预测单元900所接收的输入包含p_ln_count、p_byte_count、p_em_addr与p_lm_addr等来自尾部搜寻单元的信号,与所选定的通道相关的某些实际通道参数以及packet_size等,其中packet_size是由图2的命令和请求项产生器222依据所选定的通道其突发传输长度与传输大小参数以及p_byte_count的值计算而得。通道参数预测单元900可产生与即将列入排程的新请求相关的一组新的预测通道参数。
本发明的直接存储器存取控制器可于监控***总线上的每一数据传输相关的响应时,隐藏其过程所引起的数据分组处理延迟,而达到提升存储器对存储器传输效率的效果。
虽然本发明已公开数个优选实施例,但本发明也同时覆盖这些实施例的各种变化。在本发明的实施例是实现一种用于处于等待的请求队列的格式,但也可以利用其它相似的方法应用于其它寄存器配置以达到相似的结果。
综上所述,本领域技术人员应可推知,本发明的范围并不局限于实施例的公开与描述,且在不违背本说明书所公开原理与新颖特征之下,本发明的范围也涵盖利用本发明的精神所为的改进与变形。

Claims (13)

1、一种直接存储器存取(DMA)控制器,包括:
请求队列,用于存储至少一个项,每一项至少包含一组预测参数和一直接存储器存取通道号码;
尾部搜寻单元,用于搜寻该请求队列中属于一选定的直接存储器存取通道的处于等待的请求,并输出通道参数;
通道预测单元,用于产生至少一组与一新请求相关的预测通道参数,该新请求根据该尾部搜寻单元的该通道参数所排程;以及
命令和请求项产生器,用于根据该尾部搜寻单元的该通道参数与该通道预测单元的该组预测通道参数,发送该新请求至该请求队列;
其中该尾部搜寻单元于该请求队列中搜寻不到有效的处于等待的请求时,停止搜寻,并输出该项的该组预测通道参数;该通道预测单元于该请求队列中搜寻到有效的处于等待的请求时,输出该选定通道的一组实际通道参数值。
2、如权利要求1所述的直接存储器存取控制器,还包括:
多个通道配置寄存器,用于存储多个当前的直接存储器存取通道,并且输出一组实际通道参数;
通道请求仲裁器,用于仲裁该通道配置寄存器中,与所有这些当前的直接存储器存取通道相关的多个请求,以及选择欲服务的下个直接存储器存取通道号码;以及
请求屏蔽单元,用于接收多个软件请求以及与当前的直接存储器存取通道相关的多个硬件请求,并将所述多个软件请求与多个硬件请求传送至该通道请求仲裁器以寻求服务;
其中该通道请求仲裁器监控来自该请求屏蔽单元的所有这些当前请求。
3、如权利要求1所述的直接存储器存取控制器,其中该预测通道参数包括:
预测终端计数字段,用于存储预测结果,以显示当成功完成该处于等待的请求后,该选定的直接存储器存取通道是否到达其终端计数;
预测位计数字段,用于存储当成功完成该处于等待的请求后,所需传送的预测剩余位的值;
二个预测存储器地址字段,用于存储当成功完成该处于等待的请求后,预测来源与目的存储器地址的值;以及
预测线路计数字段,用于存储预测线路区段计数值。
4、如权利要求1所述的直接存储器存取控制器,其中该尾部搜寻单元包含下列组件至少一个:
多任务器;以及
尾部搜寻优先译码器,用于支持多重项目深度的请求队列,该尾部搜寻优先译码器接收所述预测通道参数值、该通道号码与来自该请求队列中对应的所述项的多个有效位,并且该尾部搜寻优先译码器也接收来自该选定的直接存储器存取通道的该组实际通道参数值。
5、如权利要求4所述的直接存储器存取控制器,其中该尾部搜寻单元根据该尾部搜寻优先译码器所产生最新的预测内部通道参数值以产生多个输入参数。
6、一种直接存储器存取控制器的等待请求队列,包括:
预测终端计数字段,用于存储预测结果,以显示当成功完成一处于等待的请求后,一特定的通道是否到达其终端计数;
预测位计数字段,用于存储当成功完成该处于等待的请求后,所需传送的预测剩余位的值;以及
两个预测存储器地址字段,用于存储当成功完成该处于等待的请求后,预测来源存储器地址与预测目的存储器地址的值。
7、如权利要求6所述的等待请求队列,还包括预测线路计数字段,用于存储预测线路区段计数值。
8、一种在直接存储器存取控制器中传输多个处于等待的请求的方法,包括:
存储至少一个项,每个项至少包含预测参数值和直接存储器存取通道号码;
尾部搜寻一指定的直接存储器存取通道是否有任何请求在一请求队列处于等待,若在该尾部搜寻期间寻得任何有效的处于等待的内部通道请求,则停止该尾部搜寻动作,并且输出对应的该项的预测参数值,若尾部搜寻期间找不到有效的处于等待的内部通道请求,则输出该指定的直接存储器存取通道的一组实际通道参数值;
根据该尾部搜寻的结果,产生至少一组与一个被列入排程的新请求相关的预测通道参数;以及
根据该尾部搜寻的结果与该组新的预测通道参数,传送该新请求至该请求队列。
9、如权利要求8所述的方法,还包括接收与当前的多个直接存储器存取通道相关的多个软件请求和多个硬件请求,并对所述多个软件请求与多个硬件请求进行仲裁。
10、如权利要求8所述的方法,还包括:
存储多个当前的直接存储器存取通道,并且输出一组实际通道参数,以及
仲裁与所有这些当前的直接存储器存取通道相关的多个有效的直接存储器存取传输请求,并选择欲服务的下一个直接存储器存取通道号码。
11、如权利要求8所述的方法,其中该预测通道参数包括:
预测终端计数字段,用于存储预测结果,以显示当成功完成该处于等待的请求后,该指定的直接存储器存取通道是否到达其终端计数;
预测位计数字段,用于存储当成功完成该处于等待的请求后,所需传送的预测剩余位的值;
两个预测存储器地址字段,用于存储当成功完成该处于等待的请求后,预测来源存储器地址与预测目的存储器地址的值;以及
预测线路计数字段,用于存储预测线路区段计数值。
12、如权利要求8所述的方法,还包括接收该预测通道参数,该直接存储器存取通道号码与多个有效位是来自请求队列中对应所述项的多个有效位,同时也接收该指定的直接内存通道的该实际通道参数。
13.如权利要求12所述的方法,还包括根据最新的该预测通道参数,产生多个输入参数。
CNB2006101717407A 2005-12-19 2006-12-19 可支持多个内部通道软件请求的直接存储器存取控制器 Active CN100495374C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US75171805P 2005-12-19 2005-12-19
US60/751,718 2005-12-19
US11/467,462 2006-08-25

Publications (2)

Publication Number Publication Date
CN1991810A true CN1991810A (zh) 2007-07-04
CN100495374C CN100495374C (zh) 2009-06-03

Family

ID=38165699

Family Applications (3)

Application Number Title Priority Date Filing Date
CNB2006101717407A Active CN100495374C (zh) 2005-12-19 2006-12-19 可支持多个内部通道软件请求的直接存储器存取控制器
CNB2006101685533A Active CN100504828C (zh) 2005-12-19 2006-12-19 可执行分散/聚集直接存储器存取的***与方法
CNA2006101717394A Pending CN1983121A (zh) 2005-12-19 2006-12-19 带自检机制的直接存储器存取控制器及全域时钟门控方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CNB2006101685533A Active CN100504828C (zh) 2005-12-19 2006-12-19 可执行分散/聚集直接存储器存取的***与方法
CNA2006101717394A Pending CN1983121A (zh) 2005-12-19 2006-12-19 带自检机制的直接存储器存取控制器及全域时钟门控方法

Country Status (3)

Country Link
US (3) US20070162643A1 (zh)
CN (3) CN100495374C (zh)
TW (2) TWI326828B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI798976B (zh) * 2021-12-02 2023-04-11 大陸商星宸科技股份有限公司 直接記憶體存取電路、其操作方法,以及記憶體存取指令的產生方法

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100369024C (zh) * 2005-01-17 2008-02-13 北京中星微电子有限公司 直接存储访问控制装置和图像处理***以及传输方法
US7904614B1 (en) * 2006-06-27 2011-03-08 Marvell International Ltd. Direct memory access controller with multiple transaction functionality
US7707324B1 (en) 2006-06-28 2010-04-27 Marvell International Ltd. DMA controller executing multiple transactions at non-contiguous system locations
US8117475B2 (en) * 2006-12-15 2012-02-14 Microchip Technology Incorporated Direct memory access controller
US9141572B2 (en) 2006-12-15 2015-09-22 Microchip Technology Incorporated Direct memory access controller
US20080209089A1 (en) * 2007-02-27 2008-08-28 Integrated Device Technology, Inc. Packet-Based Parallel Interface Protocol For A Serial Buffer Having A Parallel Processor Port
US7870313B2 (en) * 2007-02-27 2011-01-11 Integrated Device Technology, Inc. Method and structure to support system resource access of a serial device implementating a lite-weight protocol
US7617346B2 (en) * 2007-02-27 2009-11-10 Integrated Device Technology, Inc. Rapid input/output doorbell coalescing to minimize CPU utilization and reduce system interrupt latency
US8516163B2 (en) * 2007-02-27 2013-08-20 Integrated Device Technology, Inc. Hardware-based concurrent direct memory access (DMA) engines on serial rapid input/output SRIO interface
US8094677B2 (en) * 2007-02-27 2012-01-10 Integrated Device Technology, Inc. Multi-bus structure for optimizing system performance of a serial buffer
US7761656B2 (en) * 2007-08-22 2010-07-20 Advanced Micro Devices, Inc. Detection of speculative precharge
US7584308B2 (en) * 2007-08-31 2009-09-01 International Business Machines Corporation System for supporting partial cache line write operations to a memory module to reduce write data traffic on a memory channel
US7899983B2 (en) 2007-08-31 2011-03-01 International Business Machines Corporation Buffered memory module supporting double the memory device data width in the same physical space as a conventional memory module
US7818497B2 (en) * 2007-08-31 2010-10-19 International Business Machines Corporation Buffered memory module supporting two independent memory channels
US7840748B2 (en) * 2007-08-31 2010-11-23 International Business Machines Corporation Buffered memory module with multiple memory device data interface ports supporting double the memory capacity
US8082482B2 (en) * 2007-08-31 2011-12-20 International Business Machines Corporation System for performing error correction operations in a memory hub device of a memory module
US7865674B2 (en) * 2007-08-31 2011-01-04 International Business Machines Corporation System for enhancing the memory bandwidth available through a memory module
US8086936B2 (en) * 2007-08-31 2011-12-27 International Business Machines Corporation Performing error correction at a memory device level that is transparent to a memory channel
US7861014B2 (en) * 2007-08-31 2010-12-28 International Business Machines Corporation System for supporting partial cache line read operations to a memory module to reduce read data traffic on a memory channel
US7558887B2 (en) * 2007-09-05 2009-07-07 International Business Machines Corporation Method for supporting partial cache line read and write operations to a memory module to reduce read and write data traffic on a memory channel
US8019919B2 (en) * 2007-09-05 2011-09-13 International Business Machines Corporation Method for enhancing the memory bandwidth available through a memory module
US8495301B1 (en) 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
US8176252B1 (en) 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
CN101470652B (zh) * 2007-12-27 2010-12-15 英业达股份有限公司 未***存储器的示警方法及***
US7770077B2 (en) * 2008-01-24 2010-08-03 International Business Machines Corporation Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem
US7925825B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to support a full asynchronous interface within a memory hub device
US7930469B2 (en) 2008-01-24 2011-04-19 International Business Machines Corporation System to provide memory system power reduction without reducing overall memory system performance
US7930470B2 (en) * 2008-01-24 2011-04-19 International Business Machines Corporation System to enable a memory hub device to manage thermal conditions at a memory device level transparent to a memory controller
US7925826B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to increase the overall bandwidth of a memory channel by allowing the memory channel to operate at a frequency independent from a memory device frequency
US7925824B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency
US8140936B2 (en) * 2008-01-24 2012-03-20 International Business Machines Corporation System for a combined error correction code and cyclic redundancy check code for a memory channel
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
KR101553651B1 (ko) * 2009-10-13 2015-09-17 삼성전자 주식회사 다중 뱅크 메모리 액세스 장치
US8250253B2 (en) * 2010-06-23 2012-08-21 Intel Corporation Method, apparatus and system for reduced channel starvation in a DMA engine
WO2012120690A1 (en) 2011-03-08 2012-09-13 Renesas Electronics Corporation Data transferring method, dma controller and image processing device
JP2012243176A (ja) * 2011-05-23 2012-12-10 Renesas Electronics Corp 半導体装置及び制御方法
CN102308293B (zh) * 2011-07-11 2014-04-30 华为技术有限公司 获取芯片内部状态数据的方法和装置
KR101842245B1 (ko) 2011-07-25 2018-03-26 삼성전자주식회사 시스템 온 칩 버스 장치 및 그에 따른 루트 클럭 게이팅 방법
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9330027B2 (en) 2013-03-15 2016-05-03 Intel Corporation Register access white listing
US20150234841A1 (en) * 2014-02-20 2015-08-20 Futurewei Technologies, Inc. System and Method for an Efficient Database Storage Model Based on Sparse Files
US10339079B2 (en) 2014-06-02 2019-07-02 Western Digital Technologies, Inc. System and method of interleaving data retrieved from first and second buffers
KR102280734B1 (ko) 2014-12-09 2021-07-21 삼성전자주식회사 시스템 온 칩과 이를 포함하는 모바일 전자 기기
JP6467935B2 (ja) * 2015-01-20 2019-02-13 富士通株式会社 Dma制御装置、マイクロコントローラおよびdma制御方法
CN104820574B (zh) * 2015-04-23 2018-05-18 华为技术有限公司 一种访问间接寻址寄存器的方法及电子设备
CN106294233B (zh) * 2015-06-29 2019-05-03 华为技术有限公司 一种直接内存访问的传输控制方法及装置
US10776118B2 (en) * 2016-09-09 2020-09-15 International Business Machines Corporation Index based memory access using single instruction multiple data unit
US10936046B2 (en) * 2018-06-11 2021-03-02 Silicon Motion, Inc. Method for performing power saving control in a memory device, associated memory device and memory controller thereof, and associated electronic device
TWI660587B (zh) 2018-07-30 2019-05-21 瑞昱半導體股份有限公司 具有分時及分頻啟動機制的時脈產生系統及方法
US10761999B1 (en) * 2019-05-30 2020-09-01 Western Digital Technologies, Inc. Storage device with predictor engine of host turnaround time
US11003606B2 (en) * 2019-06-21 2021-05-11 Microchip Technology Incorporated DMA-scatter and gather operations for non-contiguous memory
US11567767B2 (en) * 2020-07-30 2023-01-31 Marvell Asia Pte, Ltd. Method and apparatus for front end gather/scatter memory coalescing
JP7467325B2 (ja) * 2020-12-17 2024-04-15 株式会社東芝 通信制御装置、通信制御方法、情報処理装置、情報処理方法、および、プログラム
US11526650B1 (en) * 2021-03-31 2022-12-13 Cadence Design Systems, Inc. Switching power aware driver resizing by considering net activity in buffering algorithm
US20230102680A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Stacked command queue

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5016876A (en) * 1988-10-14 1991-05-21 Williams Electronics Games, Inc. Video display co-processor for use in a video game
US5133060A (en) * 1989-06-05 1992-07-21 Compuadd Corporation Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter
CA2125788A1 (en) * 1991-12-13 1993-06-24 Eric Charles Peters Buffer and frame indexing
US5619729A (en) * 1993-12-02 1997-04-08 Intel Corporation Power management of DMA slaves with DMA traps
US5708849A (en) * 1994-01-26 1998-01-13 Intel Corporation Implementing scatter/gather operations in a direct memory access device on a personal computer
US5596376A (en) * 1995-02-16 1997-01-21 C-Cube Microsystems, Inc. Structure and method for a multistandard video encoder including an addressing scheme supporting two banks of memory
US5805923A (en) * 1995-05-26 1998-09-08 Sony Corporation Configurable power management system having a clock stabilization filter that can be enabled or bypassed depending upon whether a crystal or can oscillator is used
US5710561A (en) * 1996-01-02 1998-01-20 Peerless Systems Corporation Method and apparatus for double run-length encoding of binary data
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US5943504A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation System for transferring pixel data from a digitizer to a host memory using scatter/gather DMA
US5910930A (en) * 1997-06-03 1999-06-08 International Business Machines Corporation Dynamic control of power management circuitry
US6473780B1 (en) * 1998-04-01 2002-10-29 Intel Corporation Scheduling of direct memory access
DE69924475T2 (de) * 1999-06-09 2006-02-16 Texas Instruments Inc., Dallas Multikanal-DMA mit Datenverkehrplanung auf die Ausgänge
EP1059588A1 (en) * 1999-06-09 2000-12-13 Texas Instruments Incorporated Multi-channel dma with request scheduling
US7254687B1 (en) * 2002-12-16 2007-08-07 Cisco Technology, Inc. Memory controller that tracks queue operations to detect race conditions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI798976B (zh) * 2021-12-02 2023-04-11 大陸商星宸科技股份有限公司 直接記憶體存取電路、其操作方法,以及記憶體存取指令的產生方法

Also Published As

Publication number Publication date
CN1983121A (zh) 2007-06-20
US20070162642A1 (en) 2007-07-12
TW200731081A (en) 2007-08-16
US20070162643A1 (en) 2007-07-12
CN1991809A (zh) 2007-07-04
US20070162648A1 (en) 2007-07-12
TW200739357A (en) 2007-10-16
CN100504828C (zh) 2009-06-24
TWI326828B (en) 2010-07-01
CN100495374C (zh) 2009-06-03

Similar Documents

Publication Publication Date Title
CN1991810A (zh) 可支持多个内部通道软件请求的直接存储器存取控制器
CN1049059C (zh) 实时数据图象网络***及操作该***的方法
US9652379B1 (en) System and method for reducing contentions in solid-state memory access
US8549204B2 (en) Method and apparatus for scheduling transactions in a multi-speed bus environment
US7277982B2 (en) DRAM access command queuing structure
US20200125297A1 (en) Method of scheduling requests to banks in a flash controller
CN1864145A (zh) 用于处理输入/输出命令的方法、***和程序
CN1667597A (zh) 资源管理装置
CN101040271A (zh) 用于优化dma信道选择的方法和***
CN1162785A (zh) 存储器直接存取控制设备
CN1222986A (zh) 执行并飞"异"运算的方法和***
US20040049628A1 (en) Multi-tasking non-volatile memory subsystem
US20110208891A1 (en) Method and apparatus for tracking transactions in a multi-speed bus environment
CN1700196A (zh) 通过直接存储器访问控制器传输数据的***及方法
CN1180430A (zh) 不按顺序执行读写指令的存储器控制器
US20200409874A1 (en) Data storage system data access arbitration
CN110716691A (zh) 调度方法、装置、闪存设备和***
CN100351824C (zh) 总线***和用于连接到总线的总线接口
US7350050B2 (en) Disk controller with logically partitioning function
CN1542627A (zh) 减少快取储存器标签阵列存取动作的***及其方法
CN1658176A (zh) 数据通信的方法及设备
US20200409846A1 (en) Dual controller cache optimization in a deterministic data storage system
CN1685324A (zh) 配置总线上的组件进行输入/输出操作的方法、***和程序
CN111338999B (zh) 直接存储器存取dma***及数据传输方法
CN1514973A (zh) 用于多个读取请求的存储器控制

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant