CN114048151A - 主机内存访问方法、装置及电子设备 - Google Patents
主机内存访问方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114048151A CN114048151A CN202111352884.3A CN202111352884A CN114048151A CN 114048151 A CN114048151 A CN 114048151A CN 202111352884 A CN202111352884 A CN 202111352884A CN 114048151 A CN114048151 A CN 114048151A
- Authority
- CN
- China
- Prior art keywords
- address
- host
- data
- host memory
- memory access
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本申请实施例提供了一种主机内存访问方法、装置及电子设备,其中方法包括:获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系;若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。这样,可以通过地址映射的方式或者DMA的方式实现所述主机内存访问,可以提高访问效率,避免访问延迟的情况出现。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种主机内存访问方法、装置及电子设备。
背景技术
现有技术中的固态硬盘(Solid State Drive,SSD)是用固态电子存储芯片阵列制成的硬盘,主要部件为控制器和存储芯片,内部构造简单。根据是否带动态随机存取存储器(Dynamic RandomAccess Memory,DRAM),SSD有两种设计,即带DRAM的SSD和不带DRAM(DRAM-Less)的SSD。DRAM可以用来存取主机逻辑地址空间与闪存物理地址空间的映射表,而DRAM的成本很高,其占据SSD的硬件总成本的很大比例,带DRAM的SSD成本高,降低了产品的竞争力。所以,产生了以成本为导向的DRAM-Less SSD。
非易失性存储接口(Non Volatile Memory Express,NVMe)协议定义了主机内存缓冲器(Host Memory Buffer,HMB)功能,使得支持NVMe协议的固态硬盘能够使用主机划分的内存,这种固态硬盘就可以不需要自己再配备DRAM,大大降低成本。
NVMe协议规定HMB可以是连续的或者非连续的,但其大小必须是一个或多个完整的主机内存页,用主机内存描述符列表(Host Memory Descriptor List)描述主机为提供HMB所使用的一个或多个存储块的地址。主机内存描述符列表中的各个主机内存描述符描述的是主机为HMB提供的一个存储块,包括存储块的起始地址和存储块大小。由多个不同的主机内存描述符组成主机内存描述符列表,从而可以提供多个不同的存储块来共同构成主机向SSD提供的完整HMB。SSD要使用HMB,通常是使用内部的一块地址空间与HMB构建映射关系来实现的,SSD访问HMB需要遍历所有的主机内存描述符条目才能计算出主机地址。这种通过遍历主机内存描述符来定位主机地址的访问效率比较低、有访问延迟的情况。
发明内容
为了解决上述技术问题,本申请实施例提供了一种主机内存访问方法、装置及电子设备。
第一方面,本申请实施例提供了一种主机内存访问方法,所述方法包括:
获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;
若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系;
若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。
第二方面,本申请实施例提供了一种主机内存访问装置,所述装置包括:
确定模块,用于获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;
第一处理模块,用于若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和固态硬盘地址的映射关系;
第二处理模块,用于若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。
第三方面,本申请实施例提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行第一方面提供的主机内存访问方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行第一方面提供的主机内存访问方法。
上述本申请提供的主机内存访问方法,获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系;若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。这样,可以通过地址映射的方式或者DMA的方式实现所述主机内存访问,可以提高访问效率,避免访问延迟的情况出现。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对本申请保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了现有技术中主机内存描述符列表与主机存储单元的关系示意图;
图2示出了本申请实施例提供的主机内存访问方法的一流程示意图;
图3示出了本申请实施例提供的生成校验码的一过程示意图;
图4示出了本申请实施例提供的主机内存访问装置的一结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
现有技术中,由多个不同的主机内存描述符组成主机内存描述符列表,从而可以提供多个不同的存储块来共同构成主机向SSD提供的完整HMB。SSD要使用HMB,通常是使用内部的一块地址空间与HMB构建映射关系来实现的。请参阅图1,SSD内部地址0-32KB地址与主机内存描述符条0、主机内存描述符条1、主机内存描述符条2、主机内存描述符条3构建映射关系,主机内存描述符条0、主机内存描述符条1、主机内存描述符条2、主机内存描述符条3分别对应HMB的存储块0、存储块1、存储块2、存储块3、存储块0的容量为4KB、存储块1的容量为8KB、存储块2的容量为4KB、存储块3的容量为14KB.假设SSD要访问主机的内部地址为18KB的位置,第一步:访问主机内存描述符条目0,发现4KB小于18KB,说明要访问的HMB主机地址不在存储块0;
第二步:访问主机内存描述符条目1,4KB及8KB的和值小于18KB,说明要访问的HMB主机地址也不在存储块1;
第三步:访问主机内存描述符条目2,4KB、8KB、4KB的和值小于18KB,说明要访问的HMB主机地址也不在存储块2;
第四步:访问主机内存描述符条目3,4KB、8KB、4KB、16KB的和值大于18KB,说明要访问的HMB主机地址在存储块3,并且在存储块3上的偏移量为18KB-(4KB+8KB+4KB)=2KB。
由此可见,这种通过遍历主机内存描述符来定位主机地址的访问效率比较低、有访问延迟的情况。
实施例1
本公开实施例提供了一种主机内存访问方法。
具体的,请参见图2,本公开实施例提供的主机内存访问方法,包括:
步骤S201,获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;
在本实施例中,控制命令可以为在有数据访问需求时,由中央处理器(CentralProcessing Unit,CPU)根据数据访问需求生成对应的控制命令。
在本实施例中,所述预设条件包括第一预设子条件,所述第一预设子条件为控制命令的源地址为CPU可直接访问地址。
这样,可以根据预设条件对控制命令采用的主机内存方式方式进行判断。
在本实施例中,为进一步对控制指令采用的主机内存访问方式进行精确判断,所述预设条件还包括第二预设子条件,所述第二预设子条件为控制命令的待访问数据容量小于或等于第一预设阈值,所述第一预设阈值根据控制命令的源地址对应的主机存储单元的地址确定。
需要补充说明的是,可以预先获取主机存储单元的地址与源地址的映射关系,基于主机存储单元的地址与源地址的映射关系,可以确定第一预设阈值。举例来说,第一预设阈值可以为主机存储单元的地址容量数值,或者小于主机存储单元的地址容量的数值。
在本实施例中,主机存储单元的地址与源地址的映射关系的获取过程包括:
获取主机内存描述符列表,解析所述主机内存描述符列表,以得到多个主机存储单元对应的起始地址;
对各主机存储单元的起始地址对应分配CPU可直接访问地址,以得到主机存储单元的地址和源地址的映射关系。
在本实施例中,在初始化过程中,主机(HOST)按照SSD所提的需求,向SSD提供主机内存描述符列表来描述主机存储单元,SSD接收主机内存描述符列表之后,解析各主机内存描述符对应的主机存储单元的起始地址和存储块容量,将主机存储单元的起始地址和存储容量写到SSD内部的寄存器中。然后将SSD的CPU可直接访问地址配置成与主机存储单元的地址一一对应的源地址,主机存储单元的地址和源地址以一一对应的方式进行映射。这样的映射寄存器组可以配置成多组,实现支持多个主机内存描述符条目所描述的主机存储单元与SSD内部的CPU可直接访问地址进行映射的功能,不使用时也可以关闭。
这样,通过对主机内存描述符列表进行解析,得到多个主机存储单元对应的起始地址,进而为各主机存储单元的起始地址对应分配CPU可直接访问地址,以得到主机存储单元的地址和源地址的映射关系,快速获取映射关系,提高处理效率。
步骤S202,若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系。
在步骤S202中,通过地址映射的方式实现主机内存访问,包括:
并行对所述映射关系中的多个地址映射组进行解析,以获取所述控制命令的源地址对应的待访问目的主机地址,根据所述待访问目的主机地址仲裁得到CPU访问主机存储单元命令,并根据所述CPU访问主机存储单元命令对所述待访问目的主机地址进行访问操作。
在本实施例中,对多个地址映射组并行同步进行解析,解析控制命令中源地址对应的待访问目的主机地址,然后仲裁出一组CPU访问主机存储单元命令,通过CPU访问主机存储单元命令实现对主机存储单元的数据访问。具体来说,可以将CPU访问主机存储单元命令直接解析成AXI4标准接口信号,实现对主机存储单元的访问。
步骤S203,若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。
在步骤S203中,通过DMA的方式实现所述主机内存访问,包括:
确定所述控制命令为DMA命令,从所述DMA命令读取主机地址、从机地址、数据传输长度及数据传输方向,所述从机地址为固态硬盘的内存地址或缓存地址;
根据所述数据传输方向从所述主机地址及所述从机地址中确定源端地址及目的端地址;
根据所述源端地址获取第一数据,并将所述第一数据写入所述目的端地址。
在本实施例中,数据传输方向可以为将主机地址存储的数据传输给从机地址,也可以为将从机地址存储的数据传输给主机地址。若将主机地址存储的数据传输给从机地址,则主机地址为源端地址,从机地址为目的端地址。若将从机地址存储的数据传输给主机地址,则从机地址为源端地址,主机地址为目的端地址。
在本实施例中,对于DMA命令的生成过程,具体包括以下步骤:
在固态硬盘与所述主机存储单元之间交互访问数据容量大于预设阈值或者所述固态硬盘的缓存器与所述主机存储单元之间进行数据访问时,生成对应的DMA命令;
将生成的DMA命令存入DMA命令先入先出队列。
在本实施例中,DMA命令存放在DMA命令先入先出(First Input First Output,FIFO)队列中,便于从DMA命令FIFO队列中读取对应的DMA命令,可实现SSD与主机之间的大量数据的搬移。
补充说明的是,当CPU不能直接访问的SSD内部缓存空间与主机内存单元之间需要进行数据交互,或者在主机与SSD之间要进行大量的数据交互时,由CPU来配置主机地址(HOST_ADDR)、从机地址(DEVICE_ADDR)、数据传输长度、数据传输方向,其中,从机地址为硬盘地址。然后根据主机地址、从机地址、数据传输长度、数据传输方向生成对应的DMA命令,并通过配置触发寄存器将DMA命令存到DMA命令FIFO队列中。
在本实施例中,DMA命令FIFO队列的深度为4,可保存四条DMA命令。当DMA命令FIFO队列没有存满,并且CPU配置触发寄存器(tx_req)时,将主机地址、从机地址、数据传输长度(tx_length)、数据传输方向(tx_dir)进行拼接后作为一个DMA命令,将DMA命令保存到DMA命令FIFO队列。DMA命令FIFO队列中的DMA命令会被依次取出去执行。当DMA命令FIFO队列不空时,取出DMA命令去执行,执行完之后收到一个响应(tx_done),然后取出下一条DMA命令去执行。
在本实施例中,DMA命令的处理过程如下:由CPU配置寄存器信号tx_req,寄存器信号tx_req为1时进入SRC_REQ状态发起读源端地址的命令。命令发送完,等到源端回应(src_ack&buffer_last),进入SRC_WAIT状态等待源端发送数据。接收完源端发过来的数据(src_data_valid&src_data_end&last_req),开始向目的端地址写入数据。在DST_REQ状态发起写目的端地址的命令,等到目的端收到命令并给出回应(dst_ack&buffer_last),进入DST_WAIT状态等待目的端返回的响应。在DST_WAIT状态向目的端发送数据,等到目的端发出接收数据完成(dst_done&last_req)后,进入NEXT_LENGTH状态。在NEXT_LENGTH状态判断数据传输长度是否达到了DMA命令中要求的长度,如果达到数据传输长度(last_data),则整个DMA命令执行完,回到空闲IDLE状态;如果没有,再继续回到SRC_REQ状态发起读源端地址空间的命令。根据传输方向(tx_dir)和已经传输的数据长度(cur_len),可以计算出源端地址和目的端地址。
tx_dir为0,表示将数据写入主机,源端地址等于从机地址(DEVICE_ADDR)的起始读取地址加上已经传输的数据长度(cur_len),目的端地址等于主机地址(HOST_ADDR)的起始写入地址加上已经传输的数据长度(cur_len)。tx_dir为1,表示读主机的数据,源端地址等于主机地址(HOST_ADDR)的起始读取地址加上已经传输的数据长度(cur_len),目的端地址等于从机地址(DEVICE_ADDR)的起始写入地址加上已经传输的数据长度(cur_len)。
需要说明的是,当有多个控制命令,有的控制命令通过地址映射的方式实现主机内存访问,有的控制命令通过DMA的方式实现所述主机内存访问,需要对各控制命令进行仲裁,本实施例使用轮询仲裁。
在本实施例中,为提高主机写入数据时的正确度,还提供了数据验证过程,具体包括:
在向所述主机存储单元的地址写入第二数据时,判断所述第二数据的长度是否为预设固定位长;
若所述第二数据的长度为预设固定位长,则根据所述第二数据产生对应的第一校验码,将所述第一校验码与所述第二数据对应存储;
若所述第二数据的长度不为预设固定位长,则将所述第二数据修改为预设固定位长的第三数据,根据所述第三数据产生对应的第二校验码,将所述第二校验码与所述第三数据对应存储。
补充说明的是,可以对主机地址配置错误检查和纠正(Error Correcting Code,ECC)功能。配置ECC功能的流程包括:配置ECC功能的支持主机地址空间(ECC_DATA_BASE_ADDR),配置用于存放ECC校验码的主机地址空间(ECC_BASE_ADDR),开启中断上报,最后配置ECC_ENABLE,开启ECC功能。
在本实施例中,预设固定位长可以为256位,也可以为其他值,在此不做限制。举例来说,可以设置一个每256bit产生10bit校验位的ECC模块,所以要求接收到AXI4接口信号的数据总线宽度固定为256位。而本实施例为了支持非对齐的传输,例如支持最低32位数据传输,那么在开启ECC功能的情况下,如果从SSD写入主机的数据不是256位对齐的,就需要进行“读-修改-写”操作。
请参阅图3,将AXI接口信号上的256位宽的数据总线分别记为数据线0到数据线255,传输的数据记为数据0到数据255,这些数据分别存入主机地址0到主机地址31。假设需要通过数据线64~127向地址8~15写入一个64位的数据,由于ECC模块是每256位产生10位校验位,所以需要把上一个256位数据的数据0~63、数据128~255从主机内存地址取出来,与本次数据64~127一起拼接成新的256位宽的数据再进行ECC运算,实际写入主机的数据也是拼接后的数据。
在本实施例中,主机内存访问方法还可以包括以下步骤:
在所述目的端地址为所述主机地址,且所述主机地址配置有误差校正功能时,若从所述目的端地址读取所述第二数据,根据所述第二数据生成对应的第三校验码,将所述第三校验码与所述第一校验码比对,若两者相同,则确定所述第二数据正确,若两者不同,则确定所述第二数据有误。
在本实施例中,如果第三校验码与第一校验码不一样,可以根据两个校验码按位异或的结果来恢复1bit的错误,检测出2bit或者3bit的错误,并把错误信息写到寄存器中保存,包括发生错误的主机地址,是不是可恢复的错误等信息。这样,可以实现对第二数据的校验,提高数据的可靠度。
在本实施例中,可以通过使用SSD的内存地址空间与主机内存单元构建映射关系来实现对主机内存单元的数据访问操作,还可以通过DMA命令来实现SSD与主机内存单元之间的数据访问操作。当数据量小时,使用SSD的内存地址空间与主机内存的那样构建映射关系的方式来访问更高效,每次只处理32bit、64bit的数据。当数据量很大、或者是处理某些CPU不能直接访问的SSD内部缓存空间与主机内存单元之间的数据交互时,使用DMA命令的方式来实现。这样,地址映射的方式实现主机内存访问或者通过DMA的方式实现所述主机内存访问,能够节省遍历所有的主机内存描述符条目需要的时间,又能将主机内存地址的访问延迟调节一致;当数据量较大的时候,通过DMA的方式来提高对主机内存地址的访问效率;通过操作寄存器启动ECC功能的开关,增加从主机到SSD内部缓存传输数据的可靠性。
本申请提供的主机内存访问方法,获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系;若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。这样,可以通过地址映射的方式或者DMA的方式实现所述主机内存访问,可以提高访问效率,避免访问延迟的情况出现。
实施例2
本公开实施例提供了一种主机内存访问装置。
具体的,请参见图4,本公开实施例提供的主机内存访问装置400,包括:
确定模块401,用于获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;
第一处理模块402,用于若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和固态硬盘地址的映射关系;
第二处理模块403,用于若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。
在本实施例中,所述第一处理模块402,还用于并行对所述映射关系中的多个地址映射组进行解析,以获取所述控制命令的源地址对应的待访问目的主机地址,根据所述待访问目的主机地址仲裁得到CPU访问主机存储单元命令,并根据所述CPU访问主机存储单元命令对所述待访问目的主机地址进行访问操作;
所述第二处理模块403,还用于确定所述控制命令为DMA命令,从所述DMA命令读取主机地址、从机地址、数据传输长度及数据传输方向,所述从机地址为固态硬盘的内存地址或缓存地址;
根据所述数据传输方向从所述主机地址及所述从机地址中确定源端地址及目的端地址;
根据所述源端地址获取第一数据,并将所述第一数据写入所述目的端地址。
在本实施例中,所述主机内存访问装置400还包括:
第三处理模块,用于在固态硬盘与所述主机存储单元之间交互访问数据容量大于预设阈值或者所述固态硬盘的缓存器与所述主机存储单元之间进行数据访问时,生成对应的DMA命令;
将生成的DMA命令存入DMA命令先入先出队列。
在本实施例中,所述主机内存访问装置400还包括:
第四处理模块,用于获取主机内存描述符列表,解析所述主机内存描述符列表,以得到多个主机存储单元对应的起始地址;
对各主机存储单元的起始地址对应分配CPU可直接访问地址,以得到主机存储单元的地址和源地址的映射关系。
在本实施例中,所述主机内存访问装置400还包括:
在向所述主机存储单元的地址写入第二数据时,判断所述第二数据的长度是否为预设固定位长;
第五处理模块,用于若所述第二数据的长度为预设固定位长,则根据所述第二数据产生对应的第一校验码,将所述第一校验码与所述第二数据对应存储;
若所述第二数据的长度不为预设固定位长,则将所述第二数据修改为预设固定位长的第三数据,根据所述第三数据产生对应的第二校验码,将所述第二校验码与所述第三数据对应存储。
本申请提供的主机内存访问装置,获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系;若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。这样,可以通过地址映射的方式或者DMA的方式实现所述主机内存访问,可以提高访问效率,避免访问延迟的情况出现。
实施例3
此外,本公开实施例提供了一种电子设备,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述实施例1所提供的主机内存访问方法。
需要理解的是,本实施例提供的电子设备可以实现实施例1提供的主机内存访问方法,相关描述可以参见实施例1的内容,为避免重复,在此不做赘述。
实施例4
此外,本公开实施例提供了一种计算机可读存储介质,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述实施例1所提供的主机内存访问方法。
需要理解的是,本实施例提供的计算机可读存储介质可以实现实施例1提供的主机内存访问方法,相关描述可以参见实施例1的内容,为避免重复,在此不做赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种主机内存访问方法,其特征在于,所述方法包括:
获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;
若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和源地址的映射关系;
若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。
2.根据权利要求1所述的方法,其特征在于,所述预设条件包括第一预设子条件,所述第一预设子条件为控制命令的源地址为CPU可直接访问地址。
3.根据权利要求2所述的方法,其特征在于,所述预设条件还包括第二预设子条件,所述第二预设子条件为控制命令的待访问数据容量小于或等于第一预设阈值,所述第一预设阈值根据控制命令的源地址对应的主机存储单元的地址确定。
4.根据权利要求1所述的方法,其特征在于,所述通过地址映射的方式实现主机内存访问,包括:
并行对所述映射关系中的多个地址映射组进行解析,以获取所述控制命令的源地址对应的待访问目的主机地址,根据所述待访问目的主机地址仲裁得到CPU访问主机存储单元命令,并根据所述CPU访问主机存储单元命令对所述待访问目的主机地址进行访问操作;
所述通过DMA的方式实现所述主机内存访问,包括:
确定所述控制命令为DMA命令,从所述DMA命令读取主机地址、从机地址、数据传输长度及数据传输方向,所述从机地址为固态硬盘的内存地址或缓存地址;
根据所述数据传输方向从所述主机地址及所述从机地址中确定源端地址及目的端地址;
根据所述源端地址获取第一数据,并将所述第一数据写入所述目的端地址。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在固态硬盘与所述主机存储单元之间交互访问数据容量大于预设阈值或者所述固态硬盘的缓存器与所述主机存储单元之间进行数据访问时,生成对应的DMA命令;
将生成的DMA命令存入DMA命令先入先出队列。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取主机内存描述符列表,解析所述主机内存描述符列表,以得到多个主机存储单元对应的起始地址;
对各主机存储单元的起始地址对应分配CPU可直接访问地址,以得到主机存储单元的地址和源地址的映射关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在向所述主机存储单元的地址写入第二数据时,判断所述第二数据的长度是否为预设固定位长;
若所述第二数据的长度为预设固定位长,则根据所述第二数据产生对应的第一校验码,将所述第一校验码与所述第二数据对应存储;
若所述第二数据的长度不为预设固定位长,则将所述第二数据修改为预设固定位长的第三数据,根据所述第三数据产生对应的第二校验码,将所述第二校验码与所述第三数据对应存储。
8.一种主机内存访问装置,其特征在于,所述装置包括:
确定模块,用于获取控制命令,根据预设条件确定所述控制命令采用的主机内存访问方式;
第一处理模块,用于若符合所述预设条件,则通过地址映射的方式实现主机内存访问,所述地址映射为主机存储单元的地址和固态硬盘地址的映射关系;
第二处理模块,用于若不符合所述预设条件,则通过DMA的方式实现所述主机内存访问。
9.一种电子设备,其特征在于,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器运行时执行权利要求1至7中任一项所述的主机内存访问方法。
10.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至7中任一项所述的主机内存访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111352884.3A CN114048151A (zh) | 2021-11-16 | 2021-11-16 | 主机内存访问方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111352884.3A CN114048151A (zh) | 2021-11-16 | 2021-11-16 | 主机内存访问方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114048151A true CN114048151A (zh) | 2022-02-15 |
Family
ID=80209339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111352884.3A Pending CN114048151A (zh) | 2021-11-16 | 2021-11-16 | 主机内存访问方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114048151A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643321A (zh) * | 2022-09-29 | 2023-01-24 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN115658559A (zh) * | 2022-12-22 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 内存地址映射方法及装置、芯片 |
-
2021
- 2021-11-16 CN CN202111352884.3A patent/CN114048151A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643321A (zh) * | 2022-09-29 | 2023-01-24 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN115658559A (zh) * | 2022-12-22 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 内存地址映射方法及装置、芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10592448B2 (en) | Master-slave system, command execution method and data access method with use of serial peripheral interface (SPI) | |
US11216362B2 (en) | Data storage device and operating method thereof | |
US10108372B2 (en) | Methods and apparatuses for executing a plurality of queued tasks in a memory | |
US9563368B2 (en) | Embedded multimedia card and method of operating the same | |
US9886194B2 (en) | NVDIMM adaptive access mode and smart partition mechanism | |
US7287101B2 (en) | Direct memory access using memory descriptor list | |
US9110786B2 (en) | Read operation prior to retrieval of scatter gather list | |
US10002085B2 (en) | Peripheral component interconnect (PCI) device and system including the PCI | |
US9176673B2 (en) | Memory device | |
KR102045712B1 (ko) | 메모리 시스템에서의 링크 에러 정정 | |
CN109726163B (zh) | 一种基于spi的通信系统、方法、设备和储存介质 | |
US20150100744A1 (en) | Methods and apparatuses for requesting ready status information from a memory | |
CN114048151A (zh) | 主机内存访问方法、装置及电子设备 | |
TW201506953A (zh) | 減小資料儲存裝置的讀取延時之系統及方法 | |
US10866736B2 (en) | Memory controller and data processing circuit with improved system efficiency | |
TWI790456B (zh) | 記憶體定址方法及相關聯的控制器 | |
EP3033680A1 (en) | Memory migration in presence of live memory traffic | |
EP3371702B1 (en) | Systems and methods for implementing error correcting code in a memory | |
KR20190102438A (ko) | 전자 장치 및 그것의 동작 방법 | |
CN114051611A (zh) | 用于非连续存储器的dma分散和聚集操作 | |
CN109977037B (zh) | 一种dma数据传输方法及系统 | |
CN104866432A (zh) | 具有绕回-至-连续读取的存储器子系统 | |
US8533377B2 (en) | System and method for allocating transaction ID in a system with a plurality of processing modules | |
US10564847B1 (en) | Data movement bulk copy operation | |
KR102554418B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 스토리지 장치 |
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 |