CN108664211A - 一种实现数据读写的方法及装置 - Google Patents
一种实现数据读写的方法及装置 Download PDFInfo
- Publication number
- CN108664211A CN108664211A CN201710209656.8A CN201710209656A CN108664211A CN 108664211 A CN108664211 A CN 108664211A CN 201710209656 A CN201710209656 A CN 201710209656A CN 108664211 A CN108664211 A CN 108664211A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- inner buffer
- external cache
- hash
- 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.)
- Withdrawn
Links
Classifications
-
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文公开了一种实现数据读写的方法及装置;上述装置包括:哈希模块,用于对收到的数据读出指令或数据写入指令携带的第一地址进行哈希计算;处理模块,用于根据哈希计算的结果,在内部缓存或者外部缓存进行数据读出操作,或者,在内部缓存或外部缓存进行数据写入操作。上述方案通过在数据读写时结合使用内部缓存和外部缓存,从而在保证缓存大容量的情况下,提高传输带宽。
Description
技术领域
本发明涉及数据通信领域,尤其涉及一种实现数据读写的方法及装置。
背景技术
随着当今网络的不断发展,服务提供商和数据中心的带宽需求正在以前所未有的速度增强。面临着新的需求和挑战,新设备必须快速地开发和上市,并能够在极大地降低总体运营成本的同时保持高可用性。然而,在实际使用过程中,在设备或芯片内部通常仅采用传统的片外缓存进行数据读写,但是片外缓存的低带宽特性无法满足对带宽的需求。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本申请实施例提供一种实现数据读写的方法及装置,在能够保证利用外部缓存的大容量的情况下,也能通过利用内部缓存提高传输带宽。
本申请实施例提供一种实现数据读写的方法,包括:
对收到的数据写入指令或数据读出指令携带的第一地址进行哈希计算;
根据哈希计算的结果,在内部缓存或者外部缓存进行数据写入操作,或者,在内部缓存或外部缓存进行数据读出操作。
在示例性实施方式中,所述根据哈希计算的结果,在内部缓存或外部缓存进行数据写入操作,可以包括:
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址未被占用时,根据所述第二地址在所述内部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址已被占用时,根据所述数据写入指令携带的第一地址在外部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述数据写入指令携带的第一地址在外部缓存进行数据写入操作。
在示例性实施方式中,所述根据所述第二地址在所述内部缓存进行数据写入操作,可以包括:
以所述第二地址作为写入地址,将数据写入所述内部缓存的数据缓存区域中;以所述第二地址作为写入地址,将所述数据写入指令携带的第一地址写入所述内部缓存的映射缓存区域中。
在示例性实施方式中,所述根据所述第二地址在所述内部缓存进行数据写入操作时,上述方法还可以包括:
记录所述第二地址,以指示所述内部缓存的所述第二地址被占用。
在示例性实施方式中,所述根据哈希计算的结果,在内部缓存或外部缓存进行数据读出操作,可以包括:
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址时,查询在所述内部缓存中记录的所述第二地址对应的映射地址,在所述映射地址与所述数据读出指令携带的第一地址相同时,根据所述第二地址在所述内部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址,且在所述内部缓存查询到的映射地址与所述数据读出指令携带的第一地址不相同时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作。
在示例性实施方式中,所述根据所述第二地址在所述内部缓存进行数据读出操作之后,上述方法还可以包括:
删除所述内部缓存的第二地址已被占用的记录。
在示例性实施方式中,上述方法还可以包括:
检测所述内部缓存的使用量是否达到搬移门限值;
在达到搬移门限值时,将所述内部缓存中的数据搬移到外部缓存中。
在示例性实施方式中,所述将所述内部缓存中的数据搬移到外部缓存中,可以包括:
根据双向链表确定待释放的第二地址,查询在所述内部缓存中记录的所述第二地址对应的映射地址,并将所述内部缓存中所述第二地址处存储的数据按照所述映射地址写入外部缓存中。
本申请实施例还提供一种实现数据读写的装置,包括:
哈希模块,用于对收到的数据写入指令或数据读出指令携带的第一地址进行哈希计算;
处理模块,用于根据哈希计算的结果,在内部缓存或者外部缓存进行数据写入操作,或者,在内部缓存或外部缓存进行数据读出操作。
在示例性实施方式中,所述哈希模块可以包括:写入哈希处理单元以及读出哈希处理单元;所述写入哈希处理单元用于对收到的数据写入指令携带的第一地址进行哈希计算;所述读出哈希处理单元用于对收到的数据读出指令携带的第一地址进行哈希计算。
在示例性实施方式中,所述哈希模块还可以包括:随机存取存储器(RAM),用于在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址时,记录所述第二地址,以指示所述内部缓存的所述第二地址被占用。
在示例性实施方式中,所述处理模块可以用于通过以下方式根据哈希计算的结果,在内部缓存或外部缓存进行数据写入操作:
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址未被占用时,根据所述第二地址在所述内部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址已被占用时,根据所述第一地址在外部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述第一地址在外部缓存进行数据写入操作。
在示例性实施方式中,所述处理模块可以用于通过以下方式根据哈希计算的结果,在内部缓存或外部缓存进行数据读出操作:
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址时,查询在所述内部缓存中记录的所述第二地址对应的映射地址,在所述映射地址与所述数据读出指令携带的第一地址相同时,根据所述第二地址在所述内部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址,且在所述内部缓存查询到的映射地址与所述数据读出指令携带的第一地址不相同时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作。
在示例性实施方式中,所述处理模块,还可以用于检测所述内部缓存的使用量是否达到搬移门限值;在达到搬移门限值时,将所述内部缓存中的数据搬移到外部缓存中。
在示例性实施方式中,所述处理模块可以用于通过以下方式将所述内部缓存中的数据搬移到外部缓存中:
根据双向链表确定待释放的第二地址,查询在所述内部缓存中记录的所述第二地址对应的映射地址,并将所述内部缓存中所述第二地址处存储的数据按照所述映射地址写入外部缓存中。
本申请实施例还提供一种芯片,包括:内部缓存、外部缓存以及如上所述的实现数据读写的装置。
本申请实施例中,对收到的数据读出指令或数据写入指令携带的第一地址进行哈希计算;根据哈希计算的结果,在内部缓存或者外部缓存进行数据读出操作,或者,在内部缓存或外部缓存进行数据写入操作。本申请的方案通过增加高带宽小容量的内部缓存,配合哈希算法实现对数据的分流,即部分读写由内部缓存承担,从而减小外部缓存带宽的压力,这样既能够利用外部缓存的大容量,又可以提高传输带宽。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本申请实施例提供的实现数据读写装置的示意图;
图2为本申请实施例提供的实现数据读写方法的流程图;
图3为本申请实施例的写入流程示意图;
图4为本申请实施例的读出流程示意图。
具体实施方式
以下结合附图对本申请实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本申请,并不用于限定本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例提供一种实现数据读写的方法及装置。本申请的方案可以应用在芯片中,比如高速路由器的流量接入芯片中。流量接入芯片中可以包括外部缓存和内部缓存。通过使用内部缓存可以提高传输带宽,通过使用外部缓存能够保证大缓存容量,通过结合使用内部缓存和外部缓存,部分读写由内部缓存承担,从而在保证缓存大容量的情况下,提高传输带宽。
本申请实施例提供一种实现数据读写的装置,如图1所示,包括:
哈希(Hash)模块12,用于对收到的数据写入指令或数据读出指令携带的第一地址进行哈希计算;
处理模块14,用于根据哈希计算的结果,在内部缓存18或者外部缓存16进行数据写入操作,或者,在内部缓存18或外部缓存16进行数据读出操作。
如图1所示,哈希模块12可以包括写入哈希处理单元122以及读出哈希处理单元124,其中,写入哈希处理单元122可以用于对收到的数据写入指令携带的第一地址进行哈希计算;读出哈希处理单元124可以用于对收到的数据读出指令携带的第一地址进行哈希计算。
在本实施例中,前级模块10可以传送数据写入指令或数据读出指令携带的第一地址到哈希模块12;对于数据写入指令携带的第一地址,可以由哈希模块12的写入哈希处理单元122进行哈希计算;对于数据读出指令携带的第一地址,可以由哈希模块12的读出哈希处理单元124进行哈希计算。
以写入哈希处理单元122为例进行说明,写入哈希处理单元122可以对数据写入指令携带的N位的第一地址进行哈希计算,将第一地址散列到M位的第二地址,其中,N与M为整数,且不相同,比如,N为23位,M为15位;换言之,将N位的第一地址映射为M位的第二地址。其中,当写入哈希处理单元122对第一地址进行哈希计算时,出现哈希算法无法解决的冲突,则没有第一地址对应的映射结果。另外,读出哈希处理单元124对数据读出指令携带的第一地址的处理方式相同,故于此不再赘述。
在本实施例中,哈希模块12还包括:随机存取存储器(RAM,Random AccessMemory)126,用于在数据写入指令携带的第一地址通过哈希计算映射得到第二地址时,记录该第二地址,以指示内部缓存18内的该第二地址被占用。
本实施例中,处理模块14可以用于通过以下方式根据哈希计算的结果,在内部缓存18或外部缓存16进行数据写入操作:
在数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且内部缓存18中该第二地址未被占用时,根据该第二地址在内部缓存18进行数据写入操作;
在数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且内部缓存18中该第二地址已被占用时,根据第一地址在外部缓存16进行数据写入操作;
在数据写入指令携带的第一地址通过哈希计算没有得到映射结果时,根据第一地址在外部缓存16进行数据写入操作。
其中,处理模块14可以用于通过以下方式根据该第二地址在内部缓存18进行数据写入操作:
以该第二地址作为写入地址,将数据写入内部缓存18的数据缓存区域中;
以该第二地址作为写入地址,将数据写入指令携带的第一地址写入内部缓存18的映射缓存区域中。
换言之,内部缓存18中可以包括数据缓存区域和映射缓存区域;其中,数据缓存区域用于写入数据,映射缓存区域用于写入与第二地址存在哈希映射关系的映射地址(对应数据写入指令携带的第一地址)。
本实施例中,处理模块14可以用于通过以下方式根据哈希计算的结果,在内部缓存18或外部缓存16进行数据读出操作:
在数据读出指令携带的第一地址通过哈希计算映射得到第二地址时,查询在内部缓存18中记录的第二地址对应的映射地址,在该映射地址与数据读出指令携带的第一地址相同时,根据该第二地址在内部缓存18进行数据读出操作;
在数据读出指令携带的第一地址通过哈希计算映射得到第二地址,且在内部缓存18查询到的映射地址与数据读出指令携带的第一地址不相同时,根据数据读出指令携带的第一地址在外部缓存16进行数据读出操作;
在数据读出指令携带的第一地址通过哈希计算没有得到映射结果时,根据数据读出指令携带的第一地址在外部缓存16进行数据读出操作。
在示例性实施方式中,处理模块14还可以用于检测内部缓存18的使用量是否达到搬移门限值;在达到搬移门限值时,将内部缓存18中的数据搬移到外部缓存16中。
其中,处理模块14可以用于通过以下方式将内部缓存18中的数据搬移到外部缓存16中:
根据双向链表确定待释放的第二地址,查询在内部缓存中记录的该第二地址对应的映射地址,并将内部缓存18中该第二地址处存储的数据按照该映射地址写入外部缓存16中。
如图2所示,本申请实施例还提供一种实现数据读写的方法,包括:
S201:对收到的数据读出指令或数据写入指令携带的第一地址进行哈希计算;
S202:根据哈希计算的结果,在内部缓存或者外部缓存进行数据读出操作,或者,在内部缓存或外部缓存进行数据写入操作。
其中,在收到数据读出指令时,对数据读出指令携带的第一地址进行哈希计算,并根据哈希计算的结果,在内部缓存或者外部缓存进行数据读出操作;在收到数据写入指令时,对数据写入指令携带的第一地址进行哈希计算,并根据哈希计算的结果,在内部缓存或者外部缓存进行数据写入操作。
在示例性实施方式中,根据哈希计算的结果,在内部缓存或外部缓存进行数据写入操作,可以包括:
在数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且内部缓存中该第二地址未被占用时,根据该第二地址在内部缓存进行数据写入操作;
在数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且内部缓存中该第二地址已被占用时,根据数据写入指令携带的第一地址在外部缓存进行数据写入操作;
在数据写入指令携带的第一地址通过哈希计算没有得到映射结果时,根据数据写入指令携带的第一地址在外部缓存进行数据写入操作。
其中,根据第二地址在内部缓存进行数据写入操作,可以包括:
以第二地址作为写入地址,将数据写入内部缓存的数据缓存区域中;
以第二地址作为写入地址,将数据写入指令携带的第一地址写入内部缓存的映射缓存区域中。
其中,根据第二地址在内部缓存进行数据写入操作时,本实施例的方法还可以包括:
记录该第二地址,以指示内部缓存的该第二地址被占用。
在示例性实施方式中,根据哈希计算的结果,在内部缓存或外部缓存进行数据读出操作,可以包括:
在数据读出指令携带的第一地址通过哈希计算映射得到第二地址时,查询在内部缓存中记录的该第二地址对应的映射地址,在该映射地址与数据读出指令携带的第一地址相同时,根据该第二地址在内部缓存进行数据读出操作;
在数据读出指令携带的第一地址通过哈希计算映射得到第二地址,且在内部缓存查询到的映射地址与数据读出指令携带的第一地址不相同时,根据数据读出指令携带的第一地址在外部缓存进行数据读出操作;
在数据读出指令携带的第一地址通过哈希计算没有得到映射结果时,根据数据读出指令携带的第一地址在外部缓存进行数据读出操作。
其中,根据第二地址在内部缓存进行数据读出操作之后,本实施例的方法还可以包括:
删除内部缓存的第二地址已被占用的记录。
在示例性实施方式中,本实施例的方法还可以包括:
检测内部缓存的使用量是否达到搬移门限值;
在达到搬移门限值时,将内部缓存中的数据搬移到外部缓存中。
其中,将内部缓存中的数据搬移到外部缓存中,可以包括:
根据双向链表确定待释放的第二地址,查询在内部缓存中记录的该第二地址对应的映射地址,并将内部缓存中该第二地址处存储的数据按照该映射地址写入外部缓存中。换言之,将内部缓存的数据缓存区域中第二地址处存储的数据搬移到外部缓存的映射地址处。
下面通过多个实施例对本申请的方案进行说明。
实施例一
本实施例说明针对数据写入指令的处理过程。如图3所示,本实施例包括:
步骤301:上级(比如,前级模块)传送数据写入指令携带的B地址(对应上述的第一地址)到哈希模块;
步骤302:哈希模块的写入哈希处理单元对B地址进行Hash计算;例如,写入Hash处理单元的输入为23bit的B地址,通过Hash计算将其散列到输出为15bit的C地址(对应上述的第二地址);或者,当出现Hash无法解决的冲突时,即没有命中,则无C地址返回;需要说明的是,本申请对于B地址和C地址的位数并不限定。
步骤303:判断通过哈希计算是否命中C地址,若命中C地址,C地址是否已被占用;
步骤304:当命中C地址,且C地址没有被占用时,以C为地址,将数据写入内部缓存中;同时将B地址也缓存记录下来,即以B地址为内容,C为地址,写入内部缓存中,用于读取该数据时反向查找对应的B地址是否一致;以及进行数据搬移时反向查找对应的B地址,把数据从内部缓存搬移至外部缓存中的B地址;
在本实施例中,内部缓存可以包括数据缓存区域和映射缓存区域,其中,数据缓存区域用于存储数据,映射缓存区域用于存储与C地址存在哈希映射关系的映射地址(比如,B地址);
其中,在命中C地址时,可以在哈希模块的RAM中记录C地址,以指示内部缓存的C地址已被占用。后续接收到数据写入指令携带的地址之后,若通过哈希计算得到C地址,则根据RAM中记录的信息可知,内部缓存中的该C地址已被占用,此时,需要将数据写入外部缓存中。
步骤305:当没有命中C地址时,或者,命中C地址且C地址已被占用时,则将数据写入外部缓存中,写入地址即为数据写入指令携带的B地址。
在本实施例中,采用双向链表建立使用内部缓存的先后关系,确保需要发生搬移时,搬走的是内部缓存中最老的数据。其中,双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。因此,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
通过搬移操作,可以及时将发生拥塞的数据搬移到外部缓存中,从而提高内部缓存的利用率,保证非拥塞数据的带宽。
步骤306:不论数据写入内部缓存还是外部缓存中,当数据写入完成后,都要向上一级返回写释放命令。
实施例二
本实施例说明针对数据读出指令的处理过程。如图4所示,本实施例包括:
步骤401:上级传送数据读出指令携带的B地址(对应上述的第一地址)到哈希模块;
步骤402:哈希模块对B地址进行Hash计算,比如,读出哈希处理单元对B地址进行Hash计算,例如,Hash的输入为23bit的B地址,输出为15bit的C地址(对应上述的第二地址);或者当出现Hash无法解决的冲突时,即没有命中,则无C地址返回;需要说明的是,本申请对于B地址和C地址的位数并不限定。
步骤403:判断通过哈希计算是否命中C地址;
步骤404:如果命中,将上级传送的B地址与写入时存储下来的B地址进行比较;其中,根据命中的C地址在内部缓存的映射缓存区域查询C地址对应的映射地址,比较该映射地址和当前的B地址是否一致,若相等,则说明待读出的数据在内部缓存中,如果不相等,则说明该数据在外部缓存中。
步骤405:如果没有命中,或者,映射地址和当前B地址不相等,则直接判断待读出的数据不在内部缓存,而在外部缓存中,此时,从外部缓存中读出数据,其中,读取外部缓存的地址仍为上级传送过来的B地址。
步骤406:当命中C地址,且查询到的映射地址和上级传送过来的B地址相同时,则从内部缓存的数据缓存区域中读出数据,其中,读取内部缓存的地址为命中的C地址。在从内部缓存中读出数据后,需要释放内部缓存对应的C地址,以供后续写入数据使用;同时需要更新双向链表,将已经读出的数据所占用的地址从双向链表中删除。
步骤407:无论数据是从内部缓存读出还是从外部缓存读出,在数据读出完成后,均要向上级返回读完成指示。
实施例三
本实施例说明进行内部缓存和外部缓存之间的数据搬移过程。在本实施例中,对于内部缓存的使用量,设置有一个搬移门限值。
本实施例包括:
步骤一:当内部缓存的使用量到达该搬移门限值时,从维护内部缓存的双向链表的头部取出最老数据的C地址;
步骤二:根据该C地址,在内部缓存反向查找获取B地址;其中,根据该C地址,在内部缓存的映射缓存区查找该C地址对应的映射地址(即上述B地址);
步骤三:将内部缓存的数据缓存区域的C地址存储的数据写入外部缓存中,其中,写入地址为B地址;当外部缓存返回写完成命令后,释放内部缓存的该C地址,同时需要更新双向链表,将已经搬移出的数据所占用的地址从双向链表中删除。
综上所述,通过本申请的方案,能够在保证利用外部缓存大容量的同时,通过利用内部缓存起到提高传输带宽的作用。
此外,本申请实施例还提供一种芯片,包括:内部缓存、外部缓存以及上述的实现数据读写的装置。关于上述实现数据读写的装置同前所述,故于此不再赘述。
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (16)
1.一种实现数据读写的方法,其特征在于,包括:
对收到的数据写入指令或数据读出指令携带的第一地址进行哈希计算;
根据哈希计算的结果,在内部缓存或者外部缓存进行数据写入操作,或者,在内部缓存或外部缓存进行数据读出操作。
2.根据权利要求1所述的方法,其特征在于,所述根据哈希计算的结果,在内部缓存或外部缓存进行数据写入操作,包括:
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址未被占用时,根据所述第二地址在所述内部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址已被占用时,根据所述数据写入指令携带的第一地址在外部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述数据写入指令携带的第一地址在外部缓存进行数据写入操作。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二地址在所述内部缓存进行数据写入操作,包括:
以所述第二地址作为写入地址,将数据写入所述内部缓存的数据缓存区域中;
以所述第二地址作为写入地址,将所述数据写入指令携带的第一地址写入所述内部缓存的映射缓存区域中。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述第二地址在所述内部缓存进行数据写入操作时,所述方法还包括:
记录所述第二地址,以指示所述内部缓存的所述第二地址被占用。
5.根据权利要求1所述的方法,其特征在于,所述根据哈希计算的结果,在内部缓存或外部缓存进行数据读出操作,包括:
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址时,查询在所述内部缓存中记录的所述第二地址对应的映射地址,在所述映射地址与所述数据读出指令携带的第一地址相同时,根据所述第二地址在所述内部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址,且在所述内部缓存查询到的映射地址与所述数据读出指令携带的第一地址不相同时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第二地址在所述内部缓存进行数据读出操作之后,所述方法还包括:
删除所述内部缓存的第二地址已被占用的记录。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述内部缓存的使用量是否达到搬移门限值;
在达到搬移门限值时,将所述内部缓存中的数据搬移到外部缓存中。
8.根据权利要求7所述的方法,其特征在于,所述将所述内部缓存中的数据搬移到外部缓存中,包括:
根据双向链表确定待释放的第二地址,查询在所述内部缓存中记录的所述第二地址对应的映射地址,并将所述内部缓存中所述第二地址处存储的数据按照所述映射地址写入外部缓存中。
9.一种实现数据读写的装置,其特征在于,包括:
哈希模块,用于对收到的数据写入指令或数据读出指令携带的第一地址进行哈希计算;
处理模块,用于根据哈希计算的结果,在内部缓存或者外部缓存进行数据写入操作,或者,在内部缓存或外部缓存进行数据读出操作。
10.根据权利要求9所述的装置,其特征在于,所述哈希模块,包括:写入哈希处理单元以及读出哈希处理单元;所述写入哈希处理单元用于对收到的数据写入指令携带的第一地址进行哈希计算;所述读出哈希处理单元用于对收到的数据读出指令携带的第一地址进行哈希计算。
11.根据权利要求9或10所述的装置,其特征在于,所述哈希模块还包括:随机存取存储器RAM,用于在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址时,记录所述第二地址,以指示所述内部缓存的所述第二地址被占用。
12.根据权利要求9所述的装置,其特征在于,所述处理模块,用于通过以下方式根据哈希计算的结果,在内部缓存或外部缓存进行数据写入操作:
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址未被占用时,根据所述第二地址在所述内部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算映射得到第二地址,且所述内部缓存中所述第二地址已被占用时,根据所述第一地址在外部缓存进行数据写入操作;
在所述数据写入指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述第一地址在外部缓存进行数据写入操作。
13.根据权利要求9所述的装置,其特征在于,所述处理模块用于通过以下方式根据哈希计算的结果,在内部缓存或外部缓存进行数据读出操作:
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址时,查询在所述内部缓存中记录的所述第二地址对应的映射地址,在所述映射地址与所述数据读出指令携带的第一地址相同时,根据所述第二地址在所述内部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算映射得到第二地址,且在所述内部缓存查询到的映射地址与所述数据读出指令携带的第一地址不相同时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作;
在所述数据读出指令携带的第一地址通过哈希计算没有得到映射结果时,根据所述数据读出指令携带的第一地址在外部缓存进行数据读出操作。
14.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于检测所述内部缓存的使用量是否达到搬移门限值;在达到搬移门限值时,将所述内部缓存中的数据搬移到外部缓存中。
15.根据权利要求14所述的装置,其特征在于,所述处理模块用于通过以下方式将所述内部缓存中的数据搬移到外部缓存中:
根据双向链表确定待释放的第二地址,查询在所述内部缓存中记录的所述第二地址对应的映射地址,并将所述内部缓存中所述第二地址处存储的数据按照所述映射地址写入外部缓存中。
16.一种芯片,其特征在于,包括:内部缓存、外部缓存以及如权利要求9至15中任一项所述的实现数据读写的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710209656.8A CN108664211A (zh) | 2017-03-31 | 2017-03-31 | 一种实现数据读写的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710209656.8A CN108664211A (zh) | 2017-03-31 | 2017-03-31 | 一种实现数据读写的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108664211A true CN108664211A (zh) | 2018-10-16 |
Family
ID=63784266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710209656.8A Withdrawn CN108664211A (zh) | 2017-03-31 | 2017-03-31 | 一种实现数据读写的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664211A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109688070A (zh) * | 2018-12-13 | 2019-04-26 | 迈普通信技术股份有限公司 | 一种数据调度方法、网络设备及转发单元 |
CN110535561A (zh) * | 2019-08-15 | 2019-12-03 | 北京空间飞行器总体设计部 | 一种基于双向链表的航天器遥测数据传输实现方法 |
CN112203280A (zh) * | 2020-10-10 | 2021-01-08 | 北京航空航天大学 | 一种面向边缘网关的数据可信传输机制 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
CN1898653A (zh) * | 2003-10-22 | 2007-01-17 | 英特尔公司 | 用于互连网络上高效的有序储存的方法和装置 |
CN102436421A (zh) * | 2010-09-29 | 2012-05-02 | 腾讯科技(深圳)有限公司 | 缓存数据的方法 |
CN102637147A (zh) * | 2011-11-14 | 2012-08-15 | 天津神舟通用数据技术有限公司 | 利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法 |
CN102857547A (zh) * | 2012-04-12 | 2013-01-02 | 华为技术有限公司 | 分布式缓存的方法及设备 |
US8996790B1 (en) * | 2011-05-12 | 2015-03-31 | Densbits Technologies Ltd. | System and method for flash memory management |
-
2017
- 2017-03-31 CN CN201710209656.8A patent/CN108664211A/zh not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
CN1898653A (zh) * | 2003-10-22 | 2007-01-17 | 英特尔公司 | 用于互连网络上高效的有序储存的方法和装置 |
CN102436421A (zh) * | 2010-09-29 | 2012-05-02 | 腾讯科技(深圳)有限公司 | 缓存数据的方法 |
US8996790B1 (en) * | 2011-05-12 | 2015-03-31 | Densbits Technologies Ltd. | System and method for flash memory management |
CN102637147A (zh) * | 2011-11-14 | 2012-08-15 | 天津神舟通用数据技术有限公司 | 利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法 |
CN102857547A (zh) * | 2012-04-12 | 2013-01-02 | 华为技术有限公司 | 分布式缓存的方法及设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109688070A (zh) * | 2018-12-13 | 2019-04-26 | 迈普通信技术股份有限公司 | 一种数据调度方法、网络设备及转发单元 |
CN110535561A (zh) * | 2019-08-15 | 2019-12-03 | 北京空间飞行器总体设计部 | 一种基于双向链表的航天器遥测数据传输实现方法 |
CN110535561B (zh) * | 2019-08-15 | 2022-04-12 | 北京空间飞行器总体设计部 | 一种基于双向链表的航天器遥测数据传输实现方法 |
CN112203280A (zh) * | 2020-10-10 | 2021-01-08 | 北京航空航天大学 | 一种面向边缘网关的数据可信传输机制 |
CN112203280B (zh) * | 2020-10-10 | 2024-02-09 | 北京航空航天大学 | 一种面向边缘网关的数据可信传输机制 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544269B (zh) | 目录的存储方法、查询方法及节点控制器 | |
CN108664211A (zh) | 一种实现数据读写的方法及装置 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
CN107491523A (zh) | 存储数据对象的方法及装置 | |
CN101841438B (zh) | 一种访问存储海量并发tcp流的流记录的方法或系统 | |
CN105051708B (zh) | 用于包含存储器节点的分布式存储器系统的设备及方法 | |
CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
CN103701469B (zh) | 一种大规模图数据的压缩存储方法 | |
CN107908357A (zh) | 命名数据网转发平面pit存储结构及其数据检索方法 | |
CN107832013A (zh) | 一种管理固态硬盘映射表的方法 | |
CN106802955A (zh) | 一种图片数据缓存方法 | |
CN107301215A (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
CN107888687A (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
CN107133369A (zh) | 一种基于redis过期键的分布式读共享缓存老化方法 | |
CN109918316A (zh) | 一种减少ftl地址映射空间的方法及其系统 | |
CN109240944A (zh) | 一种基于可变长缓存行的数据读写方法 | |
CN103970678B (zh) | 目录设计方法及装置 | |
CN102999443B (zh) | 一种计算机缓存系统的管理方法 | |
CN104965793B (zh) | 一种云存储数据节点装置 | |
CN110460529A (zh) | 内容路由器fib存储结构及其数据处理方法 | |
CN104346404B (zh) | 一种访问数据的方法、设备及系统 | |
CN103019964A (zh) | 一种缓存数据访问方法及数据缓存系统 | |
CN106294191B (zh) | 处理表的方法、访问表的方法和装置 | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
CN110059026A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181016 |
|
WW01 | Invention patent application withdrawn after publication |