CN112416815A - 一种基于srio的高速存储回放方法 - Google Patents
一种基于srio的高速存储回放方法 Download PDFInfo
- Publication number
- CN112416815A CN112416815A CN202011445919.3A CN202011445919A CN112416815A CN 112416815 A CN112416815 A CN 112416815A CN 202011445919 A CN202011445919 A CN 202011445919A CN 112416815 A CN112416815 A CN 112416815A
- Authority
- CN
- China
- Prior art keywords
- srio
- data
- address
- memory
- playback method
- 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
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/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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于SRIO的高速存储回放方法,该方法包括统一对齐地址映射和二级流水。本发明的有益效果是:通过统一对齐地址映射,使得SRIO数据和磁盘文件数据在同一物理地址中,避免了SRIO数据和磁盘文件数据在内存中的搬移,利用直接IO,节省了CPU在***中开销,充分利用了异步无缓存和DMA的高速特性。通过两级直接IO流水线使得SRIO数据进出内存和磁盘文件数据进出内存得以同时流水进行,避免了由于二者的先后顺序造成不必要的阻塞。节省了***资源并提高了传输带宽。
Description
技术领域
本发明涉及一种存储回放方法,具体为一种基于SRIO的高速存储回放方法,属于数字信号处理技术领域。
背景技术
在高性能嵌入式***中,传输速率超过1GB/s的***常用到SRIO,使得SRIO成为了高速数据交换传输的重要的途径,当***中有数据存储和回放的需求时时,针对SRIO数据的高速存储回放功能成为了这一领域的关键技术。
在高性能嵌入式***中,采用Linux***作为存储单元的操作***,为了使得文件能够高速读写,通常采用O_DIRECT方式文件,可以绕过***缓存直接进行数据读写,可以保障数据读写速率,但是采用该方式打开的文件无法直接使用SRIO需要的物理空间。
基于此,本申请提出一种基于SRIO的高速存储回放方法。
发明内容
本发明的目的就在于为了解决问题而提供一种基于SRIO的高速存储回放方法。
本发明通过以下技术方案来实现上述目的:一种基于SRIO的高速存储回放方法,包括:
统一对齐地址映射,在Linux***上,使SRIO驱动使用的物理内存与用户空间内存、文件O_DIRECT读写空间一致;
二级流水,利用同区映射的连续对齐物理内存区域,以地址递增的方式同时连续的进行SRIO的直接DMA和磁盘文件异步无缓存读写两条流水线;
其中,所述统一对齐地址映射的程序流程包括:
(1)、在Linux***中,在设备初始化过程中,注册一段对齐的连续的物理内存(内存块A),并删除内核对特殊页表的特殊处理,使特殊页表可以与普通页表一样使用;
(2)、创建一个内核模块,注册一个MISC设备(设备RMEM),该MISC设备的驱动中,包含open、close、read、write、mmap,mmap可以将内存块A直接映射到用户层,提供给用户的应用程序进行访问;
(3)、软件中打开设备RMEM,通过read操作获取到内存块A的地址和大小,再通过mmap操作将内存块A映射到用户层,提供给应用程序进行访问;
所述二级流水的程序流程包括:
(1)、接收到门铃后,根据门铃的消息内容提交文件写入操作,将对应内存地址的数据写入磁盘,提交后不等待写入完成,立即继续等待接收下一个门铃消息;
(2)、需要进行回放时,根据需要回放的数据长度,循环提交递增偏移地址的文件读取操作,将数据读取到相应物理内存中,直到写入到用于数据回放的逻辑地址的尾部时,回到首地址;
(3)、当上述(2)中的一次数据读取完成时,会通知软件通过SRIO将数据发送到指定设备,至此实现了存储和放回两级直接IO流水。
作为本发明再进一步的方案:所述统一对齐地址映射映射完成后,可以访问连续的逻辑地址,也可以访问连续的物理地址,并且在该段地址对齐的位置可以使用无缓存进行快速读写。
作为本发明再进一步的方案:所述SRIO驱动的SRIO数据抵达物理内存的同时进行数据存储,同样在读取数据的同时可以进行SRIO数据发送,且在数据读写时,使用异步无缓存,在SRIO数据写入对应区域后,只需提交磁盘文件读写到队列。
作为本发明再进一步的方案:所述二级流水程序在进行回放时,提交异步IO需要携带表示内存块计数的数据。
作为本发明再进一步的方案:所述统一对齐地址映射的程序在初始化过程中所注册的连续对齐物理内存采用环形队列。
本发明的有益效果是:该基于SRIO的高速存储回放方法设计合理,通过统一对齐地址映射,使得SRIO数据和磁盘文件数据在同一物理地址中,避免了SRIO数据和磁盘文件数据在内存中的搬移,利用直接IO,节省了CPU在***中开销,充分利用了异步无缓存和DMA的高速特性。通过两级直接IO流水线使得SRIO数据进出内存和磁盘文件数据进出内存得以同时流水进行,避免了由于二者的先后顺序造成不必要的阻塞。节省了***资源并提高了传输带宽。
附图说明
图1为本发明统一对齐地址映射流程示意图;
图2为本发明存储模式下二级直接IO流水原理示意图;
图3为本发明回放模式下二级直接IO流水原理示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1~3,一种基于SRIO的高速存储回放方法,包括:
统一对齐地址映射,在Linux***上,使SRIO驱动使用的物理内存与用户空间内存、文件O_DIRECT读写空间一致;
二级流水,利用同区映射的连续对齐物理内存区域,以地址递增的方式同时连续的进行SRIO的直接DMA和磁盘文件异步无缓存读写两条流水线;
其中,所述统一对齐地址映射的程序流程包括:
(1)、在Linux***中,在设备初始化过程中,注册一段对齐的连续的物理内存(内存块A),并删除内核对特殊页表的特殊处理,使特殊页表可以与普通页表一样使用;
(2)、创建一个内核模块,注册一个MISC设备(设备RMEM),该MISC设备的驱动中,包含open、close、read、write、mmap,mmap可以将内存块A直接映射到用户层,提供给用户的应用程序进行访问;
(3)、软件中打开设备RMEM,通过read操作获取到内存块A的地址和大小,再通过mmap操作将内存块A映射到用户层,提供给应用程序进行访问;
所述二级流水的程序流程包括:
(1)、接收到门铃后,根据门铃的消息内容提交文件写入操作,将对应内存地址的数据写入磁盘,提交后不等待写入完成,立即继续等待接收下一个门铃消息;
(2)、需要进行回放时,根据需要回放的数据长度,循环提交递增偏移地址的文件读取操作,将数据读取到相应物理内存中,直到写入到用于数据回放的逻辑地址的尾部时,回到首地址;
(3)、当上述(2)中的一次数据读取完成时,会通知软件通过SRIO将数据发送到指定设备,至此实现了存储和放回两级直接IO流水。
在本发明实施例中,所述统一对齐地址映射映射完成后,可以访问连续的逻辑地址,也可以访问连续的物理地址,并且在该段地址对齐的位置可以使用无缓存进行快速读写。
在本发明实施例中,所述SRIO驱动的SRIO数据抵达物理内存的同时进行数据存储,同样在读取数据的同时进行SRIO数据发送,且在数据读写时,使用异步无缓存,在SRIO数据写入对应区域后,只需提交磁盘文件读写到队列,不需要等待完成,保证整个存储流程顺畅不会出现阻塞的现象,保证性能。
在本发明实施例中,所述二级流水程序在进行回放时,提交异步IO需要携带表示内存块计数的数据。
在本发明实施例中,所述统一对齐地址映射的程序在初始化过程中所注册的连续对齐物理内存采用环形队列。
工作原理:在使用该基于SRIO的高速存储回放方法时,通过修改Linux内核,将同一段连续对齐物理内存映射给SRIO驱动和用户空间,可以实现程序中SRIO数据需要访问的物理内存与磁盘文件读写需要访问的物理内存地址一致。外部SRIO数据通过直接DMA发送至对应的物理内存,软件将该段物理内存以异步无缓存的方式写入磁盘。同理,软件通过异步无缓存的方式将磁盘数据读出至物理内存,然后通过直接DMA的方式直接发送至SRIO对端设备。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (7)
1.一种基于SRIO的高速存储回放方法,其特征在于,包括:
(a)统一对齐地址映射,在Linux***上,使SRIO驱动使用的物理内存与用户空间内存、文件O_DIRECT读写空间一致;
(b)二级流水,利用同区映射的连续对齐物理内存区域,以地址递增的方式同时连续的进行SRIO的直接DMA和磁盘文件异步无缓存读写两条流水线。
2.根据权利要求1所述的一种基于SRIO的高速存储回放方法,其特征在于,所述统一对齐地址映射的程序流程包括:
(1)、在Linux***中,在设备初始化过程中,注册一段对齐的连续的物理内存,记为内存块A,并删除内核对特殊页表的特殊处理,使特殊页表与普通页表一样使用;
(2)、创建一个内核模块,注册一个MISC设备,记为设备RMEM,该MISC设备的驱动中,包含open、close、read、write、mmap,mmap将内存块A直接映射到用户层,提供给用户的应用程序进行访问;
(3)、软件中打开设备RMEM,通过read操作获取到内存块A的地址和大小,再通过mmap操作将内存块A映射到用户层,提供给应用程序进行访问。
3.根据权利要求2所述的一种基于SRIO的高速存储回放方法,其特征在于,所述二级流水的程序流程包括:
(1)、接收到门铃后,根据门铃的消息内容提交文件写入操作,将对应内存地址的数据写入磁盘,提交后不等待写入完成,立即继续等待接收下一个门铃消息;
(2)、需要进行回放时,根据需要回放的数据长度,循环提交递增偏移地址的文件读取操作,将数据读取到相应物理内存中,直到写入到用于数据回放的逻辑地址的尾部时,回到首地址;
(3)、当上述(2)中的一次数据读取完成时,会通知软件通过SRIO将数据发送到指定设备,至此实现了存储和放回两级直接IO流水。
4.根据权利要求2所述的一种基于SRIO的高速存储回放方法,其特征在于:所述统一对齐地址映射映射完成后可以访问连续的逻辑地址或访问连续的物理地址,并且在该段地址对齐的位置使用无缓存进行快速读写。
5.根据权利要求1所述的一种基于SRIO的高速存储回放方法,其特征在于:所述SRIO驱动的SRIO数据抵达物理内存的同时进行数据存储,同样在读取数据的同时可以进行SRIO数据发送,且在数据读写时,使用异步无缓存,在SRIO数据写入对应区域后,只需提交磁盘文件读写到队列。
6.根据权利要求3所述的一种基于SRIO的高速存储回放方法,其特征在于:所述二级流水程序在进行回放时,提交异步IO需要携带表示内存块计数的数据。
7.根据权利要求6所述的一种基于SRIO的高速存储回放方法,其特征在于:所述统一对齐地址映射的程序在初始化过程中所注册的连续对齐物理内存采用环形队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011445919.3A CN112416815B (zh) | 2020-12-09 | 2020-12-09 | 一种基于srio的高速存储回放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011445919.3A CN112416815B (zh) | 2020-12-09 | 2020-12-09 | 一种基于srio的高速存储回放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416815A true CN112416815A (zh) | 2021-02-26 |
CN112416815B CN112416815B (zh) | 2023-05-23 |
Family
ID=74775553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011445919.3A Active CN112416815B (zh) | 2020-12-09 | 2020-12-09 | 一种基于srio的高速存储回放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416815B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023232079A1 (zh) * | 2022-05-31 | 2023-12-07 | 上海寒武纪信息科技有限公司 | 数据存储、访问、运算方法及相关产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080065854A1 (en) * | 2006-09-07 | 2008-03-13 | Sebastina Schoenberg | Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor |
CN102467473A (zh) * | 2010-11-03 | 2012-05-23 | Tcl集团股份有限公司 | 一种在用户空间和内核之间传输数据的方法和装置 |
CN103731328A (zh) * | 2014-01-02 | 2014-04-16 | 烽火通信科技股份有限公司 | 基于Linux共享内存实现家庭网关数据通信的***及方法 |
CN108197038A (zh) * | 2018-02-01 | 2018-06-22 | 深圳市风云实业有限公司 | 一种Linux数据传输方法、装置和用户终端 |
-
2020
- 2020-12-09 CN CN202011445919.3A patent/CN112416815B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080065854A1 (en) * | 2006-09-07 | 2008-03-13 | Sebastina Schoenberg | Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor |
CN102467473A (zh) * | 2010-11-03 | 2012-05-23 | Tcl集团股份有限公司 | 一种在用户空间和内核之间传输数据的方法和装置 |
CN103731328A (zh) * | 2014-01-02 | 2014-04-16 | 烽火通信科技股份有限公司 | 基于Linux共享内存实现家庭网关数据通信的***及方法 |
CN108197038A (zh) * | 2018-02-01 | 2018-06-22 | 深圳市风云实业有限公司 | 一种Linux数据传输方法、装置和用户终端 |
Non-Patent Citations (2)
Title |
---|
(美)W. CURTIS PRESTON著: "《使用SAN与NAS》", 31 March 2003 * |
RAPIDIO.ORG: "RapidIOTM Interconnect Specification Part 1: Input/Output Logical", 《HTTPS://RAPIDIO.ORG/RAPIDIO-SPECIFICATIONS/》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023232079A1 (zh) * | 2022-05-31 | 2023-12-07 | 上海寒武纪信息科技有限公司 | 数据存储、访问、运算方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN112416815B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402335B2 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US8607005B2 (en) | Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
CN109445685B (zh) | 一种用户态文件***处理方法 | |
US11132145B2 (en) | Techniques for reducing write amplification on solid state storage devices (SSDs) | |
EP3005126B1 (en) | Storage systems and aliased memory | |
CN113031862B (zh) | 一种基于nvme协议控制sata盘的存储*** | |
TWI737031B (zh) | 多平面上頁面的片段資料讀取方法及電腦程式產品 | |
CN101876956B (zh) | Sd卡的文件存取方法及装置 | |
WO2018166179A1 (zh) | 一种基于sd卡的高速数据存储方法 | |
US20220121581A1 (en) | Controller and operation method thereof | |
CN112416815B (zh) | 一种基于srio的高速存储回放方法 | |
TWI410963B (zh) | 作業系統輔助碟片快取電腦系統、方法與製圖子系統 | |
CN113918505A (zh) | 一种星上超高速存储***及方法 | |
US20060143313A1 (en) | Method for accessing a storage device | |
CN104298620A (zh) | 一种耐擦写低能耗的外接计算机加速设备 | |
US20030046499A1 (en) | Integrated drive controller for systems with integrated mass storage | |
CN114860158A (zh) | 一种高速数据采集记录方法 | |
CN212084122U (zh) | 一种NVMe控制器 | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
CN114265791A (zh) | 一种数据调度方法、芯片以及电子设备 | |
CN111949600A (zh) | 一种基于可编程器件适用于千档行情的方法及装置 | |
CN109388584A (zh) | 一种透过不同映址空间实现弹性且快速存取硬件内存队列方法 | |
CN101859232A (zh) | 一种可变长度数据存储接口 | |
CN105528312B (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 |