CN109189701B - 一种针对嵌入式存储接口数据传输的方法及其系统 - Google Patents
一种针对嵌入式存储接口数据传输的方法及其系统 Download PDFInfo
- Publication number
- CN109189701B CN109189701B CN201810949639.2A CN201810949639A CN109189701B CN 109189701 B CN109189701 B CN 109189701B CN 201810949639 A CN201810949639 A CN 201810949639A CN 109189701 B CN109189701 B CN 109189701B
- Authority
- CN
- China
- Prior art keywords
- data transmission
- request
- command
- module
- data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种针对嵌入式存储接口数据传输的方法及其系统;其中,针对嵌入式存储接口数据传输的方法,包括以下步骤:S1,ALG模块提交请求;S2,将请求压入请求队列中;S3,对接口配置寄存器,接口进行DMA数据传输;S4,判断DMA数据传输是否完成;若是,则进入下步骤;S5,传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;S6,重新进入空闲状态,清理相关寄存器,等待接收新命令,并进行处理。本发明采用接口数据传输的封装化,模块化,进而提高了传输效率,有助于提高存储系统的带宽。
Description
技术领域
本发明涉及固态存储技术领域,更具体地说是指一种针对嵌入式存储接口数据传输的方法及其系统。
背景技术
存储系统中接口数据缓冲区是数据通路上连接主机端和存储系统的模块,它的职责是完成主机端和存储系统的数据传输,包括数据从主机端到存储系统SRAM(写命令)和存储系统SRAM到主机端(读命令)。
数据缓冲区应当是一个独立、封闭的模块,仅需处理数据传输相关的工作:触发数据传输(配置DMA信息),完成数据传输(中断或轮询),以及维护与调用者的交互信息。
但是,在现有技术里,数据缓冲区没有如上述描述的那样模块化,同时因为一些不恰当的同步步骤,导致模块耦合性较大,效率低下。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种针对嵌入式存储接口数据传输的方法及其系统。
为实现上述目的,本发明采用于下技术方案:
一种针对嵌入式存储接口数据传输的方法,包括以下步骤:
S1,ALG模块提交请求;
S2,将请求压入请求队列中;
S3,对接口配置寄存器,接口进行DMA数据传输;
S4,判断DMA数据传输是否完成;若是,则进入下步骤;
S5,传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;
S6,重新进入空闲状态,清理相关寄存器,等待接收新命令,并进行处理。
其进一步技术方案为:所述S2之后,还包括以下内容:
判断请求队列中是否有新请求;若是,则进入S3。
其进一步技术方案为:所述S4之后,还包括以下内容:DMA数据传输完成,对寄存器状态位置起。
其进一步技术方案为:所述S4之后,还包括以下内容:
判断是否收到Stop命令;若是,则进入S5;若不是,则返回判断请求队列中是否有新请求。
其进一步技术方案为:所述S4之后,还包括以下内容:ALG模块回收请求。
其进一步技术方案为:所述S5之后,还包括以下内容:对ALG模块通知已接收到Stop命令,并告知已完成传输的数据量。
其进一步技术方案为:所述S5之后,还包括以下内容:ALG模块回收剩余请求,并清理无效请求。
一种针对嵌入式存储接口数据传输的系统,包括提交单元,压入单元,配置传输单元,判断单元,计算单元,及清理单元;
所述提交单元,用于ALG模块提交请求;
所述压入单元,用于将请求压入请求队列中;
所述配置传输单元,用于对接口配置寄存器,接口进行DMA数据传输;
所述判断单元,用于判断DMA数据传输是否完成;
所述计算单元,用于传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;
所述清理单元,用于清理相关寄存器,等待接收新命令,并进行处理。
其进一步技术方案为:还包括:判断请求单元,用于判断请求队列中是否有新请求。
其进一步技术方案为:还包括:判断收到单元,用于判断是否收到Stop命令;若是,则传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;若不是,则返回判断请求队列中是否有新请求。
本发明与现有技术相比的有益效果是:采用接口数据传输的封装化,模块化,进而提高了传输效率,有助于提高存储系统的带宽。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为现有技术中接收到停止数据传输前的示意图;
图2为现有技术中接收到停止数据传输后的示意图;
图3为现有技术中缓存数据管理模块的内部管理示意图;
图4现有技术中接收停止数据传输时缓存数据管理模块的流程示意图;
图5为本发明一种针对嵌入式存储接口数据传输的方法的流程图;
图6为本发明中缓存数据管理模块的内部管理示意图;
图7本发明中接收停止数据传输时缓存数据管理模块的流程示意图;
图8为本发明一种针对嵌入式存储接口数据传输的系统方框图。
10 提交单元 20 压入单元
30 配置传输单元 40 判断单元
50 计算单元 60 清理单元
70 判断请求单元 80 判断收到单元
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图1到图8所示的具体实施例,其中,如图1至图4所示,现有技术的示意图,其中,先介绍一些专用词语,以方便理解和后续算法阐述:
Sector:Host管理数据的单位,一般为512B;
LBA:Logic Block Address,逻辑块地址,一般设置成Sector大小,即512B;
BM:Buffer Management,缓存数据管理模块;
ALG:Algorithm,算法;
ALG Submit Pos:算法模块提交缓存单元的位置;
ALG Reclaim Pos:算法模块回收(释放)缓存单元的位置;
DMA Submit Pos:DMA配置缓存单元的位置(触发与Host数据传输);
DMA Reclaim Pos:DMA回收缓存单元的位置;
Transmission Line:DMA数据传输完成线,可表示确切有多少数据完成传输。
具体地,如图1至图4所示,现有技术存在以下问题:1、在模块化方面的缺失,在当前实现中,数据缓存区模块耦合了算法模块的信息,降低了功能内聚;ALG Submit Pos和ALG Reclaim Pos属于算法模块的管理信息,它们的存在不可避免的将算法的部分逻辑糅合进来;2、在效率方面的缺陷,不带Block Count的多块数据读写(multi-blocks RD/WR)是困扰嵌入式存储接口数据传输的一大技术点,由于不知道主机期望的真实数据大小,固件算法无法判断命令何时结束、传输多少数据结束,只有额外准备子命令节点(Flash映射单元是4KB,所以需要将主机命令转换成Flash的映射单元命令)和数据,直到接收到主机下发的停止数据传输(stop transmission)命令。
具体地,如图1至图2所示,整个通路上包含三种状态的子命令节点:已写入NANDFlash的节点,对应数据已完成传输但是未写入NAND Flash的节点和数据未完成传输的节点。数据缓存区也存在三种状态的缓存单元:已完成数据传输的单元,等待数据传输的单元和空闲单元。当未接收到停止数据传输命令前,这三种节点和缓存单元循环分配、使用和完成,推动主机读写命令的完成。当收到停止数据传输命令时,已完成的子命令节点需要完成回收,未完成但需要完成的子命令节点需继续完成,额外(多余)的子命令节点则需要丢弃;同样,对于数据缓存区,已完成部分需要等待相应模块取走数据,而额外等待数据传输部分则也需要丢弃。如何快速完成丢弃部分的子命令节点和缓存单元,直接影响命令处理效率,进而影响存储系统的带宽,目前的实现方式中,需要将丢弃的命令节点依次回收,而对于数据缓存区则是采用在处理完数据后,直接重置缓存区这样“暴力”的实现方式。这样的实现带有很强的同步,在小文件的测试模型下,存储系统的性能会非常受影响,事实上测试数据也体现出来了。
其中,如图3至图4所示,缓存区管理模块最重要的是管理一个由缓存单元组成的队列。因此缓存单元采用先进先出(FIFO)的机制,即先提交的缓存单元先处理先完成,后提交的则后处理后完成。缓存单元一般由Tag(标签,通常是指缓存单元对应的命令号)、Flag(标示,通常是一些缓存单元的控制信息,如是否是命令第一笔数据等)以及数据存放的内存起始地址和结束地址等。
其中,ALG Submit Pos和ALG Reclaim Pos为算法模块管理指针,分别标志着算法模块提交和回收请求的位置。这两个信息推动着算法模块命令处理和数据管理的轮转。DMASubmit Pos和DMA Submit Pos为BM模块配置和管理数据传输的指针,分别标志着BufferManagement模块配置和回收的位置。这两个信息推动着BM模块DMA管理的轮转。Transmission Line为接收到DMA数据传输完成或停止数据传输时,体现在缓存单元的一条逻辑线。它最终可转换成已传输的数据量。普通命令不会在缓存单元的中间停止数据传输,因为只有当整个缓存单元完成数据传输时,中断才会起来。但是当接收到停止数据传输命令时,缓存单元可能只完成部分数据传输,这个时候就会出现Transmission Line在当前缓存单元中间的某个部位。
如图5至图7所示,本发明公开了一种针对嵌入式存储接口数据传输的方法,包括以下步骤:
S1,ALG模块提交请求;
S2,将请求压入请求队列中;
S3,对接口配置寄存器,接口进行DMA数据传输;
S4,判断DMA数据传输是否完成;若是,则进入下步骤;若不是,则循环判断DMA数据传输是否完成;
S5,传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;
S6,重新进入空闲状态,清理相关寄存器,等待接收新命令,并进行处理。
其中,在S2之后,还包括以下内容:
判断请求队列中是否有新请求;若是,则进入S3;若不是,则返回循环判断请求队列中是否有新请求。
其中,在S4之后,还包括以下内容:DMA数据传输完成,对寄存器状态位置起。
其中,在S4之后,还包括以下内容:
判断是否收到Stop命令;若是,则进入S5;若不是,则返回判断请求队列中是否有新请求。
其中,在S4之后,还包括以下内容:ALG模块回收请求。
其中,在S5之后,还包括以下内容:对ALG模块通知已接收到Stop命令,并告知已完成传输的数据量。
进一步地,S5之后还包括以下内容:ALG模块回收剩余请求,并清理无效请求。
其中,对于带Block Count的多块数据传输(即事先知道命令需要传输的数据量),现有技术运转良好和高效:ALG提交请求->DMA配置->接口传输数据->DMA回收->ALG回收请求。但是,对于不带Block Count的多块数据传输(即事先不知道命令需要传输的数据量),就显得有些低效,在ALG模块在处理无效请求时,要做严格的同步。不仅需要等待所有处理完成,还要通过重置数据传输模块的信息,从而使其能接收新的命令。只有这两步均结束了,才认为上个命令的数据传输已经完成。而数据传输模块采用以下操作:第一步,DMAReclaim Pos移至Transmission Line处,并进行相关计算(如已完成传输的数据量);第二步,促使ALG模块回收已传输的数据(即ALG Reclaim Pos移至Transmission Line处);第三步,重置缓存区模块的管理信息。具体是促使算法模块处理完流程(命令和数据)后,强行将ALG Submit Pos、ALG Reclaim Pos、DMA Submit Pos和DMA Reclaim Pos复位。第三步的代价很大,可以理解为是一个很强的同步操作。
具体地,如图5至图7所示,本发明针对不带Block Count的多块数据传输流程。其流程在收到Stop命令后,对当前命令信息进行处理和保存,通知ALG模块后,直接进入空闲状态,即可接收新的命令。对比现有技术,最明显的区别是:在处理触发对象和时间点发生变化,触发对象由ALG模块变成数据传输模块,而时间点则直接提前到接收到Stop命令时,其效率大大提高。另外数据传输模块在处理新命令时,ALG模块可能还在对前一命令进行“善后”。可见,现有技术着眼于数据传输模块的根本功能,利用算法设计的封装和模块化等技术,增强其内聚性,同时保障了异步模式,进而提高了带宽。本发明从数据传输模块的管理信息,进一步阐明优化工作,首先,去掉了与算法相关的控制信息ALG Submit Pos和ALGReclaim Pos。所有直接与算法相关的逻辑均不在本模块涉及和实现,从而精简和增强了本模块的功能。本模块只负责与数据传输相关的任务和功能:1)需要完成的传输任务;2)启动传输;3)传输完成后,记录或更新已传输数据总和;4)将本模块的信息返回给上层模块;5)错误处理(或重置)。其次,将对外接口信息凝聚成三个信息:需要传输的数据量、已传输的数据量和停止数据传输标识。根据这三个信息,上层模块和算法模块足以确定哪些请求已完成数据传输、停止数据传输是否已经发生。接口的凝缩,降低了模块间的耦合,同时也为停止数据传输逻辑的优化提供了接口基础。最后,更重要的是彻底改变和优化了停止数据传输的逻辑实现,降低了代价。这里有三个地方的优化:第一,当接收到停止数据传输命令后,数据传输模块仅需更新已完成的传输数据总量。如此处理的好处在于上层模块或算法模块在确定哪些请求完成时,不必拘泥于具体的缓存单元信息,避免了遍历和计算存放在缓存单元的数据量。第二,DMA Submit Pos和DMA Reclaim Pos直接移至Request Pos。减少DMA Submit Pos和DMA Reclaim Pos在此阶段的角色,仅仅保留其核心角色,即DMA配置和回收。因为当停止数据传输后,额外的缓存单元不再需要配置(配置会触发数据传输),当然也就不再需要回收了,所以直接将这两个指针移到Request Pos,是合乎逻辑且最高效的。第三,新的命令提交缓存单元的位置在Request Pos,而不是进行重置。这意味着数据传输管理和命令的管理不是强相关的,当做完第一和第二时,当前命令已经处理完毕(对于数据传输模块),可以接收下一个命令的请求了。于是乎,算法模块和数据传输模块可以并行起来:算法模块在回收多余无效的请求时,数据传输模块可以进行新命令的数据传输。通过这样的异步方式,大大提高了整个系统的带宽。
如图8所示,本发明还公开了一种针对嵌入式存储接口数据传输的系统,包括提交单元10,压入单元20,配置传输单元30,判断单元40,计算单元50,及清理单元60;
提交单元10,用于ALG模块提交请求;
压入单元20,用于将请求压入请求队列中;
配置传输单元30,用于对接口配置寄存器,接口进行DMA数据传输;
判断单元40,用于判断DMA数据传输是否完成;
计算单元50,用于传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;
清理单元60,用于清理相关寄存器,等待接收新命令,并进行处理。
其中,该系统还包括:判断请求单元70,用于判断请求队列中是否有新请求;若是,则对接口配置寄存器,接口进行DMA数据传输;若不是,则返回循环判断请求队列中是否有新请求。
其中,该系统还包括:判断收到单元80,用于判断是否收到Stop命令;若是,则传输模块计算相关信息,并保存在该命令的结束信息中,然后同步和更新队列管理信息;若不是,则返回判断请求队列中是否有新请求。
本发明采用接口数据传输的封装化,模块化,进而提高了传输效率,有助于提高存储系统的带宽。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。
Claims (1)
1.一种针对嵌入式存储接口数据传输的方法,其特征在于,包括以下步骤:
S1,ALG模块提交请求;
S2,将请求压入请求队列中;
S3,对接口配置寄存器,接口进行DMA数据传输;
S4,判断DMA数据传输是否完成;若是,则进入下步骤;
S5,传输模块计算相关信息,并保存在Stop命令的结束信息中,然后同步和更新队列管理信息;
S6,重新进入空闲状态,清理相关寄存器,等待接收新命令,并进行处理;
所述S2之后,还包括以下内容:
判断请求队列中是否有新请求;若是,则进入S3;
所述S4之后,还包括以下内容:DMA数据传输完成,对寄存器状态位置起;
所述S4之后,还包括以下内容:ALG模块回收请求;
所述S4之后,还包括以下内容:
判断是否收到Stop命令;若是,则进入S5;若不是,则返回判断请求队列中是否有新请求;
当收到Stop命令后,对当前命令信息进行处理和保存,通知ALG模块后,直接进入空闲状态,即可接收新的命令;
所述S5之后,还包括以下内容:对ALG模块通知已接收到Stop命令,并告知已完成传输的数据量;
所述S5之后,还包括以下内容:ALG模块回收剩余请求,并清理无效请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810949639.2A CN109189701B (zh) | 2018-08-20 | 2018-08-20 | 一种针对嵌入式存储接口数据传输的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810949639.2A CN109189701B (zh) | 2018-08-20 | 2018-08-20 | 一种针对嵌入式存储接口数据传输的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189701A CN109189701A (zh) | 2019-01-11 |
CN109189701B true CN109189701B (zh) | 2020-12-29 |
Family
ID=64918459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810949639.2A Active CN109189701B (zh) | 2018-08-20 | 2018-08-20 | 一种针对嵌入式存储接口数据传输的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189701B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858414B (zh) * | 2022-12-13 | 2024-10-01 | 东信和平科技股份有限公司 | 基于中断和缓冲区的spi数据传输方法、系统和控制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1169193A (zh) * | 1995-11-21 | 1997-12-31 | 昆腾公司 | 同步dma传输协议 |
US5859990A (en) * | 1995-12-29 | 1999-01-12 | Intel Corporation | System for transferring data segments from a first storage device to a second storage device using an alignment stage including even and odd temporary devices |
CN1426560A (zh) * | 2000-12-28 | 2003-06-25 | 皇家菲利浦电子有限公司 | 具有不同资源访问方案的系统集成代理程序 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484016B2 (en) * | 2004-06-30 | 2009-01-27 | Intel Corporation | Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine |
CN100349150C (zh) * | 2005-06-06 | 2007-11-14 | 北京中星微电子有限公司 | 通过直接存储器访问控制器传输数据的系统及方法 |
CN101901200B (zh) * | 2010-08-11 | 2012-01-11 | 烽火通信科技股份有限公司 | 一种基于双AHB Master接口的片上DMA控制器实现方法 |
US10241946B2 (en) * | 2017-01-18 | 2019-03-26 | Nxp Usa, Inc. | Multi-channel DMA system with command queue structure supporting three DMA modes |
CN107341063A (zh) * | 2017-07-13 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种数据传输方法及系统 |
CN107463829B (zh) * | 2017-09-27 | 2018-08-21 | 山东渔翁信息技术股份有限公司 | 一种密码卡中dma请求的处理方法、系统及相关装置 |
-
2018
- 2018-08-20 CN CN201810949639.2A patent/CN109189701B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1169193A (zh) * | 1995-11-21 | 1997-12-31 | 昆腾公司 | 同步dma传输协议 |
US5859990A (en) * | 1995-12-29 | 1999-01-12 | Intel Corporation | System for transferring data segments from a first storage device to a second storage device using an alignment stage including even and odd temporary devices |
CN1426560A (zh) * | 2000-12-28 | 2003-06-25 | 皇家菲利浦电子有限公司 | 具有不同资源访问方案的系统集成代理程序 |
Also Published As
Publication number | Publication date |
---|---|
CN109189701A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180113615A1 (en) | Storage device generating adaptive interrupt and operating method thereof | |
CN107111453B (zh) | 跨存储装置执行原子写入操作的系统和方法以及存储装置 | |
US11593107B2 (en) | Handling an input/output store instruction | |
CN104969168A (zh) | 具有用于分级写入的nvram的持久性存储装置 | |
US20080155562A1 (en) | Initiator notification method and apparatus | |
CN105376129B (zh) | 一种1394总线事务层-链路层数据包发送电路及方法 | |
AU2020214661B2 (en) | Handling an input/output store instruction | |
CN112416250B (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
CN101478481B (zh) | 缓存管理方法及装置、数据转发系统 | |
US7962676B2 (en) | Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords | |
CN101359321A (zh) | 一种实现处理器相互通讯的方法及装置 | |
EP3918467A1 (en) | Handling an input/output store instruction | |
CN109189701B (zh) | 一种针对嵌入式存储接口数据传输的方法及其系统 | |
US8589607B1 (en) | Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander | |
CN1804792B (zh) | 在长等待时间指令执行期间允许存储转发的方法和系统 | |
CN116755635B (zh) | 一种硬盘控制器缓存系统、方法、硬盘设备及电子设备 | |
CN108804343B (zh) | 嵌入式存储接口数据传输方法、装置、计算机设备及介质 | |
CN108228104B (zh) | 数据传输方法及固态硬盘控制器 | |
US20160026537A1 (en) | Storage system | |
CN107807790A (zh) | 一种固态硬盘数据写入的方法 | |
CN107870885A (zh) | 通信系统、装置及方法 | |
CN114637712B (zh) | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 | |
EP4227790B1 (en) | Systems, methods, and apparatus for copy destination atomicity in devices | |
WO2022126534A1 (zh) | 数据处理方法及相关设备 | |
CN113076282A (zh) | 一种面向处理器片上网络的死锁处理方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |