CN110737617A - 直接存储器存取 - Google Patents

直接存储器存取 Download PDF

Info

Publication number
CN110737617A
CN110737617A CN201910641180.4A CN201910641180A CN110737617A CN 110737617 A CN110737617 A CN 110737617A CN 201910641180 A CN201910641180 A CN 201910641180A CN 110737617 A CN110737617 A CN 110737617A
Authority
CN
China
Prior art keywords
record
records
register
field
programmed
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.)
Pending
Application number
CN201910641180.4A
Other languages
English (en)
Inventor
F·克卢特
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.)
Italian Semiconductor (grenoble 2) Co
STMicroelectronics Grenoble 2 SAS
Original Assignee
Italian Semiconductor (grenoble 2) Co
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 Italian Semiconductor (grenoble 2) Co filed Critical Italian Semiconductor (grenoble 2) Co
Publication of CN110737617A publication Critical patent/CN110737617A/zh
Pending legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F13/287Multiplexed DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2802DMA using DMA transfer descriptors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及直接存储器存取。一种系统,包括直接存储器存取控制器和耦合到直接存储器存取控制器的存储器。存储器存储记录的链接列表。每个记录包含确定下一个记录的字段的数目的第一字段。例如,每个记录可以表示由直接存储器存取控制器进行的数据传递的执行的参数。

Description

直接存储器存取
相关申请的交叉引用
本申请要求2018年07月19日提交的法国专利申请No.1856705的优先权,该申请通过引用并入本文。
技术领域
本公开一般涉及电子系统,并且在特定实施例中涉及利用直接存储器存取的电子系统。
背景技术
直接存储器存取是在电子系统中使得能够在外围设备和存储器之间、两个外围设备之间或两个存储器之间传递数据而无需中央处理单元(CPU)干预(除了开始和结束传递)的方法。
直接存储器存取通常由直接存储器存取控制电路实施。为了执行数据传递,电路从存储器中读取记录的链接列表中的记录(“链接列表项”-LLI)以获得传递的参数。所读取的参数临时存储在电路的寄存器组件或寄存器组中。然后,电路根据所存储的参数执行传递。
发明内容
一个实施例克服了已知电子系统的至少某些缺点。
一个实施例克服了电子电路的至少某些缺点,其中由寄存器使任务参数化,根据存储在存储器中的记录的链接列表对该寄存器进行编程。
一个实施例克服了电子系统的至少某些缺点,其中由寄存器参数化的任务是由直接存储器存取进行的数据传递。
因此,根据第一方面,一个实施例提供了一种包含记录的至少一个链接列表的存储器,每个记录包含确定下一个记录的字段的数目的第一字段。
根据一个实施例,记录的每个字段表示要在寄存器组的寄存器中编程的内容。
根据一个实施例,第一字段确定内容应当被编程在哪些寄存器中。
根据一个实施例,第一字段包括多个位,多个位中的每个位标识寄存器,多个位的值确定要编程的记录的字段。
根据一个实施例,每个记录表示任务的执行的参数。
根据一个实施例,该任务是由直接存储器存取控制电路进行的数据传递。
根据一个实施例,对于表示数据传递的每个记录,传递的执行的参数包括传递开始条件和传递结束事件。
根据一个实施例,对于每个记录,传递的执行的参数还包括应当检测该条件的至少一个时间以及应当生成该事件的至少一个时间的指示。
根据一个实施例,存储器包含记录的第一链接列表和记录的第二链接列表,第一列表的记录的开始条件对应于检测到第二列表的记录的事件。
根据一个实施例,存储器是SRAM类型的。
根据第一方面,一个实施例提供了一种方法,包括根据被包含在诸如之前定义的存储器中的记录的链接列表来连续更新寄存器组。
根据一个实施例,每个记录确定连续更新中的一个。
根据一个实施例,该方法包括:读取根据当前记录的第一字段编程的寄存器,并对于每个寄存器,从中推断出下一个记录是否包括在对寄存器组的下一次编程期间应当根据其对寄存器进行编程的字段。在对寄存器组的下一次编程期间,基于下一个记录的每个字段,对寄存器组中的对应的寄存器进行编程。
根据第一方面,一个实施例提供了一种电子系统,包括诸如之前定义的存储器,以及设置有寄存器组的电路,该电路被配置成实施之前定义的方法。
根据一个实施例,该电路是直接存储器存取控制器。
根据第二方面,一个实施例提供了一种包含至少一个记录的链接列表的存储器,每个记录表示由直接存储器存取控制电路进行的数据传递的参数,参数包括传递开始条件和传递结束事件。
根据一个实施例,对于每个记录,参数还包括应当检测该条件的至少一个时间的指示以及应当生成该事件的至少一个时间的指示。
根据一个实施例,存储器包含记录的第一链接列表和记录的第二链接列表,第一列表的记录的开始条件对应于检测到第二列表的记录的结束事件。
根据一个实施例,每个记录包含确定下一个记录的字段的数目的第一字段。
根据一个实施例,记录的每个字段表示要在寄存器组的寄存器中编程的内容。
根据一个实施例,第一字段确定应当在哪些寄存器中对内容进行编程。
根据一个实施例,第一字段包括多个位,多个位中的每个位标识寄存器,多个位的值确定要编程的记录的字段。
根据一个实施例,列表中的第一记录包含与寄存器一样多的字段。
根据一个实施例,存储器是SRAM类型的。
根据第二方面,一个实施例提供了一种通过直接存储器存取进行数据传递的方法,其中在直接存储器存取控制电路的第一通道上执行第一传递,在电路的第二通道上执行第二传递,每个第一传递由诸如之前定义的存储器的第一列表的对应记录参数化。
根据一个实施例,第一列表的每个记录对应于与第一通道相关联的第一寄存器组的更新,并且第二列表的每个记录对应于与第二通道相关联的第二寄存器组的更新。
根据一个实施例,每个寄存器组的当前内容使具有与其相关联的寄存器组的通道上的对应传递参数化。
根据一个实施例,对于每个记录,只有在检测到记录的开始条件时才开始对应的传递。
根据第二方面,一个实施例提供了一种电子系统,包括诸如之前定义的存储器,以及设置有多个通道的直接存储器存取控制电路,多个通道中的每个通道与寄存器组相关联,该电路被配置成实施之前定义的方法。
在结合附图的特定实施例的以下非限制性描述中将详细讨论前述内容以及其他特征和优点。
附图说明
作为示例,图1以框的形式非常示意性地示出了将要描述的实施例适用的类型的电子电路1的一个实施例;
图2是以框的形式图示通过直接存储器存取进行数据传递的方法的一个实施例的流程图;
图3以框的形式示意性地示出了直接存储器存取控制电路的寄存器组的一个实施例;
图4示意性地示出了包含用于对图3的寄存器进行编程的记录的链接列表的一个实施例的存储器;
图5是更详细地图示图2的方法的步骤的一个实施例的流程图;
图6以框的形式示意性地图示了直接存储器存取控制电路的寄存器组的另一实施例;和
图7是图示通过直接存储器存取进行数据传递的方法的一个实施例的流程图。
具体实施方式
在不同附图中,相同的元件用相同的附图标记指定。特别地,不同实施例共有的结构和/或功能元件可以用相同的附图标记指定,并且可以具有相同的结构、尺寸和材料性质。
为清楚起见,仅示出了并且详细描述了对理解所描述的实施例有用的那些步骤和元件。特别地,没有详细描述当前用于通过直接存储器存取进行数据传递的各种参数,所描述的实施例与这些通常的参数兼容。另外,没有详细描述其中设置有直接存储器存取控制器的各种电子系统,所描述的实施例与大多数这些通常的电子系统兼容。
作为示例,图1以框的形式非常示意性地示出了将要描述的实施例适用的类型的电子电路1的实施例。
电子系统1包括中央处理单元11(CPU),例如状态机、微处理器、可编程逻辑电路等。系统1还包括一个或多个存储器(其中至少一个为例如SRAM类型的RAM 12(MEM))、与系统1的外部通信的至少一个输入/输出接口13(I/O)(例如,串行总线类型)、直接存储器存取控制电路14(DMA),以及系统1内部的不同元件之间的一个或多个数据、地址和/或控制总线(这里以单个总线15的形式示出)。
另外,系统1可以根据应用集成由框16(FCT)表示的其他功能,例如,专用于图像处理的处理器、其他接口、其他存储器等。
系统1被配置成执行各种应用,诸如图像处理、视频编码和/或解码、对源自传感器的数据的处理等。这种应用需要经由总线15在系统1内部的元件之间进行数据传递。为了使系统1的操作流畅并减少中央处理单元11的负载,在电路14的控制下通过直接存储器存取来执行这种数据传递。在该实施例中,电路14包括多个数据传递通道。电路14的每个通道使得能够在系统1的两个元件(电路和/或存储器)之间执行数据传递。每个通道与寄存器组相关联,寄存器组针对在通道上进行的每个数据传递存储传递的参数。
当应用必须由系统1执行时,中央处理单元11配置电路14,使得电路14为该应用保留这些通道中的一个。然后,经由为该应用保留的通道执行应用的所有数据传递。在所描述的实施例中,要传递的数据的源元素和/或目的地元素可以在应用的执行期间改变。
图2是以框的形式图示通过直接存储器存取进行数据传递的方法的实施例的流程图。更具体地,图2图示了对于给定应用,基于表示应用的数据传递的记录的链接列表,连续更新与图1的电路14的通道相关联的寄存器组的方法。
在初始步骤200(分配通道),将通道分配给应用,这是通过利用该应用的第一数据传递的参数对与该通道相关联的寄存器组进行编程。该步骤相当于向电路14指示应当使用记录的哪个链接列表来参数化将在该通道上发生的传递。列表中的每个记录确定下一个记录的存储器地址。每个记录还确定对应的数据传递的参数,例如,传递涉及数据或数据块的指示、存储要传递的数据或数据块的源的地址范围的起始地址、应当复制所传递的数据或数据块的目的地的地址范围的起始地址、要传递的数据或数据块的数目、数据的大小、每块数据的数目、要传递的两个连续的数据之间或两个连续的块之间的地址偏移等。因此,每个记录可以对应于源和目的地之间的数据的片段、多个数据、数据块或多个块的传递。
根据一个实施例,在步骤200,通过从存储器12的由中央处理单元11提供的存储器地址处读取列表中的第一记录并且通过基于该记录对寄存器组编程来对寄存器组进行编程。
根据另一实施例,在步骤200处,例如,在系统1的初始化时或由中央处理单元11对寄存器组直接编程,而不从存储器12读取记录。具体地,然后,列表中的第一记录的记录被编程在寄存器组中。
在寄存器组被编程,以将通道分配给应用之后,中央处理单元11向电路14指示可以开始执行应用的数据传递。
在下一个步骤202处(执行传递),电路14在为应用保留的通道上执行由通道的寄存器组的内容参数化的数据传递,应当理解这种传递可能涉及多个数据或多个数据块。
然后执行测试203(重复?)以根据寄存器组的内容确定是否应当重复在前一步骤202处执行的数据传递,并且将其参数存储在寄存器组中。
如果必须重复传递(框203的输出为是),则方法继续步骤202。因此可以理解,由于寄存器组的内容未被修改,因此在循环中执行传递。
如果不必重复该最后一次传递(框203的输出为否),则该方法继续进行测试204(下一个LLI?)。该测试基于寄存器组的当前内容确定列表中是否存在下一个记录,换句话说,是否仍然存在要为该应用执行的至少一个传递。
如果列表中没有下一个记录(框204的输出为否),则测试204之后是步骤206(结束),其中通道被释放并且因此可以被分配给新的应用。
如果存在下一个记录(框204的输出为是),则测试204之后是步骤208(加载下一个LLI),其中通过电路14从存储器12读取下一个记录,并且利用应用的下一次数据传递的参数更新寄存器组。然后,该方法在步骤202处继续。
应当注意,可以修改图2的方法的顺序和/或步骤的数目。特别地,可以同时执行测试203和测试204。
作为示例,在本公开的其余部分中考虑其中应当在通道上发生的传递不是在数据块水平执行,而是仅在数据水平执行的情况。还考虑当传递对应于多个数据的传递时,数据一个接一个地存储在源地址范围中,并且一个接一个地复制到目的地地址范围中。
图3以框的形式示意性地示出了与电路14的数据传递通道相关联的寄存器组的实施例。
在该示例中,寄存器组包括五个寄存器R1、R2、R3、R4和R5,使得能够临时存储数据传递的参数。寄存器R1、R2、R3、R4和R5在此分别旨在存储要传递的数据的源的起始地址S@、要传递的数据的目的地的地址范围的起始地址D@、要传递的数据的数目NB、要传递的数据的大小BL,以及存储器12中的下一个记录的地址NLLI@。在本公开的其余部分中,链接列表寄存器或LLR寄存器指定用于存储与记录的链接列表相关的信息的寄存器,具体地是地址NLLI@。优选地,LLR寄存器是寄存器组中的最后一个寄存器,在该示例中是寄存器R5。
在该实施例中,多个寄存器中的一个(优选地,LLR寄存器)还旨在存储与列表中的下一个记录相关的信息。这种信息确定列表中下一个记录的字段的数目。记录的每个字段例如表示在寄存器组的下一次更新时要在对应的寄存器中编程的内容。优选地,在更新期间,将每个字段直接复制到对应的寄存器中。与列表中的下一个记录相关的信息还确定向其分配下一个记录的每个字段的寄存器。这种信息由LLR寄存器R5的位(例如,五个位U1、U2、U3、U4和U5)存储。在该实施例中,位U1、U2、U3、U4和U5分别分配给寄存器R1、R2、R3、R4和R5,每个位U1、U2、U3、U4,U5的值确定下一个记录是否包括表示要在寄存器(分别为R1、R2、R3、R4、R5)中编程的内容的字段。例如,如果位U1处于第一二进制值,例如‘1’,则下一个记录包括表示要在寄存器R1中编程的内容的字段,并且如果该位处于第二二进制值,例如‘0’,则下一个记录不包括这种字段。
作为示例,关于图2描述的测试203包括验证所有位U1至U5是否处于‘0’以及地址@NLLI是否不为空。如果这为真,则这意味着不必更新寄存器组,并且应当重复最后执行的传递。
仍然作为示例,关于图2描述的测试204包括验证地址@NLLI是否为空。如果这为真,则这意味着没有下一个记录,并且已经执行了应用的所有传递。
应当注意,作为示例,可以以与上文描述的形式不同的形式表示与下一个记录的字段的数目和向其分配这些字段中的每个字段的寄存器相关的信息、应当重复传递的指示和/或列表不包含下一个记录的指示。
图4示意性地示出了包含用于对图3的寄存器进行编程的记录的链接列表的实施例的存储器(例如,图1的存储器)。
存储器12被分成固定大小(例如,4个字节)的多个存储器字41,每个存储器字与存储器地址43相关联。在该示例中,存储器12包含由三个记录LLI-1、LLI-2和LLI-3形成的记录的链接列表。在存储器12中(这里从该记录的第一字段的存储器地址开始)一个接一个地记录相同记录的字段。在该示例中,每个字段占用一个存储器字41。作为变型,每个字段可能需要不止一个存储器字以用于其存储器存储,或者存储器字可以包含不止一个字段。优选地,每个记录的字段以与寄存器组的对应的寄存器相同的顺序彼此跟随。在该示例中,记录的存储器地址对应于记录该记录的第一字段的地址。
在该示例中,考虑以下情况:在图2的步骤200处,根据列表中的第一记录LLI-1对寄存器组进行编程。如图4中所示,第一记录LLI-1然后包括与寄存器一样多的字段,在本示例中为五个,使得可以利用记录的字段来对每个寄存器进行编程。更具体地,记录LLI-1包括连续字段C1、C2、C3、C4和C5,表示要在寄存器(分别为R1、R2、R3、R4和R5)中编程的内容。在该示例中,记录LLI-1的字段C1、C2、C3和C4分别表示地址S1@、地址D1@、数目NB-1和大小BL-1。记录的字段C5表示存储器12中下一个记录LLI-2的地址@k2,以及与该下一个记录LLI-2相关的信息。在该示例中,与下一个记录相关的信息的形式为值为‘1’、‘0’、‘1’、‘0’和‘1’的五个位,其分别对应于寄存器R5的位U1、U2、U3、U4和U5。在该示例中,记录LLI-1的第一字段C1记录在地址存储器字@k1中,接下来的字段C2、C3、C4和C5记录在相应的地址@k1+4、@k1+8、@k1+12和@k1+16的接下来的存储器字中,这里的每个存储器字占用4个字节。
第二记录LLI-2包括连续字段C1、C3和C5,分别表示要在寄存器R1、R3和R5中编程的内容。字段C1和C2分别表示地址S2@和数目NB-2,字段C5表示下一个记录LLI-3的地址@k3和值为‘0’、‘1’、‘1’、‘1’和‘1’的五个位,其分别对应于寄存器R5的位U1、U2、U3、U4和U5。在该示例中,记录LLI-2的第一字段C1记录在地址存储器字@k2中,接下来的字段C3和C5记录在相应的地址@k2+4和@k2+8的接下来的存储器字中。
第三记录LLI-3包括连续字段C2、C3、C4和C5,分别表示要在寄存器R2、R3、R4和R5中编程的内容。字段C2、C3和C4分别表示地址D3@、数目NB-3和大小BL-3。在所示的示例中,字段C5表示空地址@NULL和值为“0”的五个位U1到U5,这指示记录LLI-3是列表中的最后一个并且对应于该记录的传递不必重复。在该示例中,记录LLI-3的第一字段C2记录在地址存储器字@k3中,接下来的字段C3、C4和C5记录在相应的地址@k3+4、@k3+8和@k3+12的接下来的存储器字中。
在上述列表中,存储在存储器中的至少某些记录包含比从这些记录更新的寄存器组的寄存器的数目小的数目的字段。因此,相对于其中链接列表的每个记录具有与寄存器组中的寄存器一样多的字段的存储器的存储容量,存储器12的存储容量可以减小。存储器12的存储容量的减小导致其表面积和静态功耗的减小。
图5以流程图的形式图示了上文描述的图2的方法的步骤208,即,基于存储在存储器中的记录的链接列表的记录来更新寄存器组。
在初始化步骤500处(i=1),在本示例中,将循环变量i(i为整数)初始化为1。
在下一个测试步骤502处(Ui=1?),电路14测试LLR寄存器R5的位Ui的当前值,以确定下一个记录是否包含表示要在寄存器Ri中编程的内容的字段Ci。
在步骤502期间,如果LLR寄存器R5的位Ui的当前值是‘1’(框502的输出为是),则这意味着下一个记录包括表示要在寄存器Ri中编程的内容的字段Ci。然后,该测试之后是利用该内容对寄存器Ri进行编程的步骤504(Ri<=Ci)。步骤504之后是测试508(i=5?),在测试508期间,验证寄存器R5的每个位Ui的当前值是否已被测试。如果是(框508的输出为是),则基于下一个记录的寄存器组的更新完成(框结束,510)。否则(框508的输出为否),则方法在步骤512(i=i+1)处继续,其中变量i递增,之后方法循环回到步骤502。
在步骤502期间,如果LLR寄存器R5的位Ui的当前值是‘0’(框502的输出为否),则这意味着下一个记录不包括表示要在寄存器Ri中编程的内容的字段Ci。方法然后直接进行到步骤508并且寄存器Ri的内容保持不变。
当从图4中描述的类型的链接列表的记录更新与通道相关联的寄存器组时,上述方法使得能够仅更新寄存器组中的某些寄存器,优选地只更新在两次连续传递之间具有修改的内容的寄存器。相对于将更新组中的所有寄存器的情况,这导致对存储器12的访问次数的减少。对存储器12的访问次数的这种减少导致存储器12的动态功耗的降低,更一般地,图1的系统1的动态功耗降低。这里的优点在于在为应用保留的通道上的两个连续数据传递通常具有某些相同的参数的事实。
应当注意,可以修改上述方法的步骤的顺序和/或数目。例如,可以首先读取所有位Ui,之后根据读取的位的值执行寄存器的所有更新。
另外,关于图1至图5描述的实施例适用于除直接存储器存取控制器之外的其他电路的寄存器组,以将该电路对任务的执行参数化。
在上述实施例中,与直接存储器存取控制电路中的情况一样,一旦将通道分配给应用(步骤200,图2)并且中央处理单元11已经授权电路14执行该应用的传递之后,电路14自动地执行所有这些传递,而没有中央处理单元11的干预。在执行所有传递之后,电路14通知中央处理单元11,中央处理单元11然后可以将该通道分配给另一个应用。因此,在电路14的两个不同的通道上执行的两个应用之间的同步只能由中央处理单元11在两个应用中的一个的执行开始时执行,或者在两个应用中的一个的执行结束时(此时已经读取了与该应用的数据传递相对应的所有记录并且已经执行了相应的传递)执行。
图6以框的形式示意性地示出了电路14的数据传递通道的寄存器组的另一实施例的示例。
这里的图6的寄存器组包括六个寄存器R1、R2、R3、R4、R5和R6,在该示例中,图6的寄存器R1、R2、R3和R4类似于图3的寄存器R1、R2、R3和R4。这里的寄存器R5旨在存储传递开始条件ctrl-in和传递结束事件ctrl-out。寄存器R6形成寄存器组的链接列表寄存器(LLR),并且如图3中一样,旨在存储下一个记录的地址NLLI@以及与该下一个记录相关的信息,特别是记录的字段的数目和向哪个寄存器分配下一个记录的每个字段。这里的这种信息以分别与寄存器R1、R2、R3、R4、R5和R6相关联的六位U1、U2、U3、U4、U5和U6的形式存储。
与关于图1至图5描述的内容类似地来执行根据记录的链接列表中的记录的对图6的寄存器组的更新,列表中的记录对应地调整。特别地,每个记录可以包括表示要在寄存器R6中编程的内容的附加字段C6(未图示)。另外,对于每个记录,记录的字段C6然后可以包括对应于寄存器R6的六个位U1到U6的六个位。
在备选实施例中,条件ctrl-in和事件ctrl-out存储在寄存器R1至R4和R6中的一个中,并且条件ctrl-in可以存储在存储事件ctrl-out之外的另一个寄存器中。例如,当一个或多个寄存器R1至R4和R6包含未使用的位,从而使能存储信息ctrl-in和ctrl-out时,实施这种变化。这使得能够抑制寄存器R5、LLR寄存器R6在此时被赋予数字R5。
图7是图示通过直接存储器存取进行数据传递的实施例的流程图。更具体地,图7更详细地图示了图2的方法的步骤202。
在由电路14实施的步骤801(ctrl-in?)中,要执行的数据传递的所有参数都存储在寄存器组的寄存器中。步骤801包括检测传递开始条件ctrl-in(在本示例中存储在寄存器R5中)。只要没有检测到条件ctrl-in(框801的输出为否),就重复步骤801。当检测到条件ctrl-in时(框801的输出为是),方法继续进行步骤802(进行传递),在此期间执行由寄存器组的内容参数化的数据传递,然后,一旦传递完成,在步骤804(生成ctrl-out)期间,电路14生成事件ctrl-out。
在该实施例中,当在为第一应用保留的第一通道上的第一数据传递结束生成事件ctrl-out,并且在为第二应用保留的第二通道上开始第二传递的条件ctrl-in对应于事件ctrl-out的检测时,只能在生成第一传递的事件ctrl-out的之后启动第二传递。因此,可以在没有中央处理单元11的干预,并且正在执行这些应用的情况下,第一和第二传递并且因此第一和第二应用可以直接在电路14的水平相互同步。更一般地,为系统1执行的多个应用的至少某些数据传递提供条件ctrl-in和事件ctrl-out使得能够将这些应用同步在一起,而不使用中央处理单元,在执行这些应用期间,中央处理单元可以被设置为待机,甚至关闭。
在未示出的备选实施例中,提供指示应当在传递多个数据期间的什么时间检测条件ctrl-in的附加的参数,时间例如是在传递数据的第一片段之前或传递数据的每个片段之前。类似地,提供指示应当在传递多个数据时的什么时间生成事件ctrl-out的附加参数,时间例如是在传递数据的最后片段之后或传递数据的每个片段之后。然后调整列表中的寄存器和记录以集成这些附加参数。因此也对应地调整了图7的方法。例如,在传递多个数据期间,如果在每次数据传递之前检测到条件ctrl-in并且在每次数据传递之后生成事件ctrl-out,则对每段传递的数据实施步骤801、802和804,此时步骤802对应于数据传递。
提供一个或多个附加参数以指示应当检测条件ctrl-in的传递的时间和应当生成事件ctrl-out的时间使得能够控制粒度,利用该粒度执行由系统1并行执行的应用之间的同步。
应当注意,在通道上的传递的条件ctrl-in可以对应于对除了在另一个通道上的传递期间生成的事件ctrl-out之外的事件的检测,例如,对应于在系统1中生成的中断。
作为示例,每个条件ctrl-in可以对应于电平改变的检测,例如,对应于该条件的信号从高电平到低电平或者反过来。例如,每个事件ctrl-out包括改变对应于该事件的信号的电平。
应当注意,可以在没有位U1至U6的情况下实施图6和图7的实施例。在这种情况下,由于没有寄存器的条件更新,链接列表中的每个记录包含与寄存器一样多的字段。
在未示出的备选实施例中,结合图3至图7描述的寄存器和记录可以集成一个或多个附加参数以管理数据块的传递、和/或源和/或目的地地址范围、在要传递的两个连续的数据的片段或两个连续的数据块之间地址移位。
另外,在寄存器和记录能够管理数据块的传递的情况下,可以认为,在传递多个数据块期间,在传递每个块之前检测条件ctrl-in和/或在传递每个块之后生成事件ctrl-out。然后将对应地调整指示应当检测条件ctrl-in的时间和/或应当生成事件ctrl-out的时间的参数,以及结合图7描述的方法。
已经描述了特定实施例。本领域技术人员可以在不示出任何创造性步骤的情况下,组合这些各种实施例和变型的各种元件。另外,本领域技术人员将想到各种改变和修改。特别地,寄存器的数目、寄存器组存储的参数的数目和/或每个寄存器存储的参数的数目可以变化。
另外,可以提供其他参数。例如,在通过直接存储器存取进行数据传递的情况下,参数可以指示对应于记录的传递的数据和/或数据块是应当逐个传递还是以突发方式传递。
这些改变、修改和改进旨在成为本公开的一部分,并且旨在落入本发明的精神和范围内。因此,前面的描述仅是示例性的,而不是限制性的。本发明仅受以下权利要求及其等同限定。

Claims (22)

1.一种系统,包括:
直接存储器存取控制器;和
存储器,耦合到所述直接存储器存取控制器,所述存储器存储记录的链接列表,每个记录包含确定下一个记录的字段的数目的第一字段。
2.根据权利要求1所述的系统,其中记录的每个字段表示要被编程在寄存器组的寄存器中的内容。
3.根据权利要求2所述的系统,其中所述第一字段确定所述内容应当被编程在哪些寄存器中。
4.根据权利要求2所述的系统,其中所述第一字段包括多个位,所述多个位中的每个位标识寄存器,所述多个位具有确定要被编程的所述记录的所述字段的值。
5.根据权利要求1所述的系统,其中每个记录表示任务的执行的参数。
6.根据权利要求5所述的系统,其中所述任务是由所述直接存储器存取控制器进行的数据传递。
7.根据权利要求6所述的系统,其中对于表示数据传递的每个记录,所述传递的执行的参数包括传递开始条件和传递结束事件。
8.根据权利要求7所述的系统,其中,对于每个记录,所述传递的执行的参数还包括应当检测所述条件的时间以及应当生成所述事件的时间的指示。
9.根据权利要求7所述的系统,其中所述存储器包含记录的第一链接列表和记录的第二链接列表,所述第一列表的记录的所述开始条件对应于检测到所述第二列表的记录的所述事件。
10.根据权利要求1所述的系统,所述存储器包括静态随机存取存储器(SRAM)。
11.根据权利要求2所述的系统,其中一个记录的第一字段在基于下一记录的对所述寄存器组的更新期间确定所述寄存器组中的哪一个或多个寄存器基于所述下一记录的字段被编程。
12.一种系统,包括:
中央处理单元;
直接存储器存取控制器,经由总线耦合到所述中央处理单元;
与所述直接存储器存取控制器相关联的多个寄存器;和
存储器,耦合到所述直接存储器存取控制器,所述存储器存储记录的链接列表,每个记录包含确定下一个记录的字段的数目的第一字段,其中每个记录表示由所述直接存储器存取控制器进行的数据传递的执行的参数。
13.根据权利要求12所述的系统,其中记录的每个字段表示要被编程在寄存器组的寄存器中的内容。
14.根据权利要求13所述的系统,其中所述第一字段确定所述内容应当被编程在哪些寄存器中。
15.根据权利要求13所述的系统,其中所述第一字段包括多个位,所述多个位中的每个位标识寄存器,所述多个位具有确定要编程的所述记录的所述字段的值。
16.根据权利要求12所述的系统,其中,对于表示数据传递的每个记录,所述传递的执行的参数包括传递开始条件和传递结束事件。
17.根据权利要求16所述的系统,其中,对于每个记录,所述传递的执行的参数还包括应当检测所述条件的时间以及应当生成所述事件的时间的指示。
18.根据权利要求17所述的系统,其中所述存储器包含记录的第一链接列表和记录的第二链接列表,所述第一列表的记录的所述开始条件对应于检测到所述第二列表的记录的所述事件。
19.根据权利要求13所述的系统,其中一个记录的第一字段在基于下一记录的对所述寄存器组的更新期间确定所述寄存器组中的哪一个或多个寄存器基于所述下一记录的字段被编程。
20.一种方法,包括:
存储记录的链接列表,每个记录包含确定下一个记录的字段的数目的第一字段;以及
根据所述记录的链接列表连续更新寄存器组。
21.根据权利要求20所述的方法,其中每个记录确定所述连续更新中的一个更新。
22.根据权利要求20所述的方法,还包括:
读取从当前记录的所述第一字段编程的寄存器;
对于每个寄存器,从所述读取推断下一个记录是否包括这样的字段:在对所述寄存器组的下一次编程期间,应当从该字段对所述寄存器进行编程;以及
在对所述寄存器组的所述下一次编程期间,基于所述下一个记录的每个字段对所述寄存器组中的对应的寄存器进行编程。
CN201910641180.4A 2018-07-19 2019-07-16 直接存储器存取 Pending CN110737617A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1856705 2018-07-19
FR1856705A FR3084179A1 (fr) 2018-07-19 2018-07-19 Acces direct en memoire

Publications (1)

Publication Number Publication Date
CN110737617A true CN110737617A (zh) 2020-01-31

Family

ID=65031473

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910641180.4A Pending CN110737617A (zh) 2018-07-19 2019-07-16 直接存储器存取
CN201910654666.1A Pending CN110990308A (zh) 2018-07-19 2019-07-19 直接存储器存取

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910654666.1A Pending CN110990308A (zh) 2018-07-19 2019-07-19 直接存储器存取

Country Status (4)

Country Link
US (1) US10997087B2 (zh)
EP (1) EP3598314A1 (zh)
CN (2) CN110737617A (zh)
FR (2) FR3084179A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3598315B1 (fr) 2018-07-19 2022-12-28 STMicroelectronics (Grenoble 2) SAS Accès direct en mémoire

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781199A (en) * 1995-11-22 1998-07-14 Hitachi, Ltd. Parallel processing method for use with graphics processor
US6782465B1 (en) * 1999-10-20 2004-08-24 Infineon Technologies North America Corporation Linked list DMA descriptor architecture
US20060259657A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Direct memory access (DMA) method and apparatus and DMA for video processing
CN101506785A (zh) * 2006-08-24 2009-08-12 密克罗奇普技术公司 直接存储器存取控制器
US20110131347A1 (en) * 2006-06-27 2011-06-02 Marvell International Ltd. Direct memory access controller with multiple transaction functionality
US20110219152A1 (en) * 2010-03-04 2011-09-08 Ricoh Company, Ltd. Data transfer control apparatus
CN104133790A (zh) * 2013-03-14 2014-11-05 英飞凌科技股份有限公司 用于直接存储器访问控制器的条件链接
US20150186068A1 (en) * 2013-12-27 2015-07-02 Sandisk Technologies Inc. Command queuing using linked list queues

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782365B1 (en) * 1996-12-20 2004-08-24 Qwest Communications International Inc. Graphic interface system and product for editing encoded audio data
US6145027A (en) * 1997-07-09 2000-11-07 Texas Instruments Incorporated DMA controller with split channel transfer capability and FIFO buffering allowing transmit channel to get ahead of corresponding receive channel by preselected number of elements
US20060050693A1 (en) * 2004-09-03 2006-03-09 James Bury Building data packets for an advanced switching fabric
CN106375249B (zh) * 2016-09-22 2019-10-01 盛科网络(苏州)有限公司 交换芯片的控制方法及控制系统
US10191871B2 (en) * 2017-06-20 2019-01-29 Infineon Technologies Ag Safe double buffering using DMA safe linked lists

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781199A (en) * 1995-11-22 1998-07-14 Hitachi, Ltd. Parallel processing method for use with graphics processor
US6782465B1 (en) * 1999-10-20 2004-08-24 Infineon Technologies North America Corporation Linked list DMA descriptor architecture
US20060259657A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Direct memory access (DMA) method and apparatus and DMA for video processing
US20110131347A1 (en) * 2006-06-27 2011-06-02 Marvell International Ltd. Direct memory access controller with multiple transaction functionality
CN101506785A (zh) * 2006-08-24 2009-08-12 密克罗奇普技术公司 直接存储器存取控制器
US20110219152A1 (en) * 2010-03-04 2011-09-08 Ricoh Company, Ltd. Data transfer control apparatus
CN104133790A (zh) * 2013-03-14 2014-11-05 英飞凌科技股份有限公司 用于直接存储器访问控制器的条件链接
US20150186068A1 (en) * 2013-12-27 2015-07-02 Sandisk Technologies Inc. Command queuing using linked list queues

Also Published As

Publication number Publication date
US10997087B2 (en) 2021-05-04
FR3084179A1 (fr) 2020-01-24
CN110990308A (zh) 2020-04-10
FR3084178A1 (fr) 2020-01-24
US20200026662A1 (en) 2020-01-23
EP3598314A1 (fr) 2020-01-22

Similar Documents

Publication Publication Date Title
CN102124443B (zh) 在单指令多数据(simd)数据处理器中提供扩展寻址模式
US6772276B2 (en) Flash memory command abstraction
CN107622020B (zh) 一种数据存储方法、访问方法及装置
CN110781016B (zh) 一种数据处理方法、装置、设备及介质
CN104424030A (zh) 多进程操作共享内存的方法和装置
WO2022143991A1 (zh) 一种多次编程电子熔丝装置
CN115562587A (zh) 应用于存储介质的数据存储方法、装置、设备及存储介质
CN110737617A (zh) 直接存储器存取
US6925522B2 (en) Device and method capable of changing codes of micro-controller
US20040044508A1 (en) Method for generating commands for testing hardware device models
US8239637B2 (en) Byte mask command for memories
US10162540B2 (en) Storage in flash memory
US20130080690A1 (en) Method to emulate eeprom using flash memory
GB2393273A (en) Method and apparatus for detecting an error in writing to persistent memory
US6704799B1 (en) Time-efficient inter-process communication in a harmonic rate system
US20220229796A1 (en) Direct memory access
KR20200123799A (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
US20010044882A1 (en) Multiple port memory apparatus
US9594792B2 (en) Multiple processor system
US20040205701A1 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
US11593289B2 (en) Direct memory access
CN107402887B (zh) 闪速存储器中的计数器
CN103514953A (zh) 对存储在闪存中的数据有地址ram的模拟电可擦存储器
US20140149708A1 (en) Data structure product and method for interface transmission
WO2023064776A1 (en) Reliable flash storage

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination