CN117591006A - 用于在散列存储中执行高速缓存的系统和方法 - Google Patents
用于在散列存储中执行高速缓存的系统和方法 Download PDFInfo
- Publication number
- CN117591006A CN117591006A CN202311035802.1A CN202311035802A CN117591006A CN 117591006 A CN117591006 A CN 117591006A CN 202311035802 A CN202311035802 A CN 202311035802A CN 117591006 A CN117591006 A CN 117591006A
- Authority
- CN
- China
- Prior art keywords
- tag
- index
- memory
- address
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000015654 memory Effects 0.000 claims abstract description 170
- 230000004044 response Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 47
- 238000004891 communication Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003155 kinesthetic effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
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
-
- 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
优先权
本申请基于2022年8月18日提交的第63/399,025号美国临时专利申请要求其优先权,该美国临时专利申请的全部内容通过引用合并于此。
技术领域
本公开总体上涉及存储器设备和提高散列存储系统的访问速度。
背景技术
文件是应用用来管理用户数据的一种数据结构。因此,数据的高效处理、存储、安全和一般管理对于信息技术(IT)系统是重要的。应用使用并依赖文件系统、操作系统(OS)和其他此类系统软件来进行文件管理和访问相关操作。
用于现代IT基础设施的存储设备(例如,永久性数据存储设备,诸如固态驱动器(SSD))越来越受欢迎,因为各种应用(诸如例如物联网(IOT)、社交网络、自主车辆等)正在生成大量数据。基于NAND闪存介质的SSD存储设备也是IT基础设施的部件。
当应用需要数据时,存储的文件的所期望的数据部分被访问。访问期望的数据部分的速度可能特别重要,从而可快速访问数据,以提高应用(例如,游戏应用和在线购物应用)的用户体验和性能的总吞吐量。
发明内容
做出本公开是为了解决至少上述缺点并提供至少下述优点。
根据本公开的一方面,提供了一种存储器设备的方法。该方法包括:至少部分地基于源索引来识别标签存储器的标签地址;访问对应于标签地址的高速缓冲存储地址;将标签存储器内容和至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突;以及响应于识别是否存在匹配或者是否存在冲突,从高速缓冲存储地址获取信息。
根据本公开的另一方面,一种系统包括存储器和控制器。控制器配置为:至少部分地基于源索引来识别标签存储器的标签地址;访问对应于标签地址的高速缓冲存储地址;将标签存储器内容和至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突;以及响应于识别是否存在匹配或者是否存在冲突,从高速缓冲存储地址获取信息。
根据本公开的另一方面,一种存储设备包括控制器和存储介质。控制器配置为:至少部分地基于源索引来识别标签存储器的标签地址;访问对应于标签地址的高速缓冲存储地址;将标签存储器内容和至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突;以及响应于识别是否存在匹配或者是否存在冲突,从高速缓冲存储地址获取信息。
附图说明
本公开的某些实施例的上述和其他的方面、特征和优点将从以下结合附图的详细描述更加明显,附图中:
图1是示出根据实施例的每输入输出密钥(KPIO)系统的框图;
图2是示出根据实施例的散列冲突解决的框图;
图3是示出根据实施例的作为标签索引的部分源索引的框图;
图4是示出根据实施例的多路标签地址索引的框图;
图5是示出根据实施例的可配置为映射到标签地址的源索引的框图;
图6是示出根据实施例的使用散列索引作为标签地址的框图;
图7是示出根据实施例的作为标签地址的多路散列索引的框图;
图8是示出根据实施例的作为高速缓存索引的双散列的框图;
图9示出了根据实施例比较由图3-8提供的实施例的益处的表;
图10示出了根据实施例比较由图3-8的实施例提供的存储器的大小的表;
图11是示出根据实施例的用于访问高速缓存条目的重定向表的框图;
图12是示出根据实施例的访问存储的存储器的流程图;
图13是示出根据实施例的用于执行本申请中描述的实施例的结构部件的存储器系统;以及
图14示出了根据实施例的网络环境中的电子设备。
具体实施方式
在下文中,将参照附图详细描述本公开的实施例。应注意,尽管在不同的附图中示出了相同的元件,但是它们将由相同的附图标记表示。在以下描述中,仅提供诸如详细配置和部件的具体细节来帮助总体理解本公开的实施例。因此,对于本领域技术人员应明显的是,在不脱离本公开的范围的情况下,可以进行对在此描述的实施例的各种改变和修改。此外,为了清楚和简明起见,省略了对公知功能和结构的描述。下面描述的术语是考虑到本公开中的功能而定义的术语,并且可以根据用户、用户的意图或习惯而不同。因此,术语的定义应基于本说明书全文的内容来确定。
本公开可以有各种修改和各种实施例,下面参照附图详细描述其中的实施例。然而,应理解,本公开不限于这些实施例,而是包括在本公开的范围内的所有修改、等同物和替代物。
尽管包括诸如第一、第二等序数的术语可以用于描述各种元件,但是结构元件不受这些术语限制。这些术语用于将一个元件与另一元件区分开。例如,在不脱离本公开的范围的情况下,第一结构元件可以被称为第二结构元件。类似地,第二结构元件也可以被称为第一结构元件。如这里所使用的,术语“和/或”包括一个或更多个相关项目的任何和所有组合。
这里使用的术语仅用于描述本公开的各种实施例,而不旨在限制本公开。单数形式旨在包括复数形式,除非上下文另有明确指示。在本公开中,应理解,术语“包括”或“具有”表示特征、数字、步骤、操作、结构元件、部分或其组合的存在,并且不排除一个或更多个其他的特征、数字、步骤、操作、结构元件、部分或其组合的存在或添加可能性。
除非另有定义,否则这里使用的所有术语具有与本公开所属领域的技术人员所理解的相同的含义。术语诸如在常用词典中定义的术语将被解释为具有与相关领域中的上下文含义相同的含义,并且将不被解释为具有理想化的或过度形式化的含义,除非在本公开中明确定义。
根据一个实施例的电子设备可以是利用存储设备的各种类型的电子设备之一。电子设备可以包括例如便携式通信设备(例如,智能电话)、计算机、便携式多媒体设备、便携式医疗设备、相机、可穿戴设备或家用电器。根据本公开的一个实施例,电子设备不限于上述那些。
本公开中使用的术语不旨在限制本公开,而是旨在包括对应实施例的各种改变、等同物或替换物。关于附图的描述,类似的附图标记可以用于指代类似的或相关的元件。与项目对应的单数形式的名词可以包括一个或更多个事物,除非相关上下文明确地另有说明。如这里所使用的,诸如“A或B”、“A和B中的至少一个”、“A或B中的至少一个”、“A、B或C”、“A、B和C中的至少一个”以及“A、B或C中的至少一个”这样的短语中的每个可以包括在对应的短语之一中一起列举的项目的所有可能的组合。如这里所使用的,诸如“第1”、“第2”、“第一”和“第二”的术语可以用于将对应的部件与另一部件区分开,但不旨在在其他方面(例如,重要性或顺序)限制部件。意图是,如果元件(例如,第一元件)在使用或不使用术语“操作地”或“通信地”的情况下被称为“与”另一元件(例如,第二元件)“耦合”、“耦合到”另一元件(例如,第二元件)、与另一元件(例如,第二元件)“连接”或“连接到”另一元件(例如,第二元件),则其表示该元件可以直接(例如,有线地)、无线地或经由第三元件与另一元件耦合。
如这里所使用的,术语“模块”可以包括以硬件、软件、固件或其组合实现的单元,并且可以与其他术语(例如,“逻辑”、“逻辑块”、“部分”和“电路”)可互换地使用。模块可以是适配为执行一个或更多个功能的单个一体部件,或者是其最小单元或部分。例如,根据一个实施例,模块可以以专用集成电路(ASIC)的形式来实现。
为了安全的数据存储,应保护用户可访问的数据,这可能需要加密和解密。存储器存储系统可以允许主机设备为每个输入/输出(IO)命令选择加密或解密密钥,称为每IO密钥(KPIO)。
自加密驱动器(SED)可以对用户可访问的数据执行连续加密。这是使用存储设备在永久性介质中生成/保存的少量密钥以接口速度完成的。KPIO可以利用大量的加密密钥进行管理并安全地下载到非易失性存储器子系统中。用户数据的加密可以基于每个命令发生(每个命令可以请求使用不同的密钥)。
为了高效地存储加密的数据,可以使用散列函数。散列函数采用任意长的字节字符串并生成较短的固定大小结果。例如,第一密钥类型可以被输入到散列函数以输出较短的固定大小结果(例如,散列值)。散列值可以是存储在存储器中的特定元素的索引。散列表可以用于将与第一密钥类型和值对相对应的散列值存储在可通过其索引访问的列表中。散列表中的值(与第一密钥类型的散列值配对)可以是用于KPIO的第二密钥类型。因此,当散列表中的值是用于KPIO的第二密钥类型时,这些值可以用于加密/解密数据以执行读/写命令。此外,散列表中的值(与第一密钥类型的散列值配对)可以包括一个或更多个数据对象。
存储器存储系统通常需要大量可能的密钥来存储,但在存储器读/写操作期间可能使用其中相对小的一部分。因此,存储器存储可能效率低下,因为可能分配多于所需的存储器空间来存储大量密钥,从而增加此类设计的成本和功耗。此外,低效的设计也可能导致数据读写缓慢。
提供了一种加速第一层(例如,具有相对快的访问时间的存储器(例如,静态只读存储器(SRAM)或片上存储器))中频繁使用的散列密钥值的查找速度、同时将完整的密钥值集合存储在第二层存储器(例如,具有相对慢的访问时间的存储器(例如,动态只读存储器(DRAM)))中的方法。例如,散列索引或源地址的至少一部分可以用作识别标签来定位高速缓存命中,并减少查找持续时间。该高速缓存标签识别操作可以在较小n打包(smaller-n-packed)的第一层存储器(例如,较快的存储器)中执行。因此,可以提高存储器查找速度,因为它可能未必受到第二层存储器(例如,较慢的存储器)吞吐量的限制。第一层存储器(例如,具有相对较快的存储器访问时间)可以被称为“主存储器”,第二层存储器(例如,具有相对较慢的存储器访问时间)可以被称为“辅助存储器”。
图1是示出根据实施例的每输入输出密钥(KPIO)系统的框图。贯穿整个图1,一些部件包括与每个部件(例如,命令(64x8 b)和/或加密密钥64B)对应的多个比特(b)或字节(B)。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节数或条目的实际数量可以取决于系统的需要而变化。
KPIO系统101可以是{密钥,值}系统。{密钥,值}系统可以将数据存储为密钥-值对的集合,其中密钥充当值的唯一标识符。值可以由固定数量的比特(例如,512比特)组成,并且可以表示用于加密或解密数据的安全密钥(例如,私钥)(注意,“{密钥,值}”对中包括的密钥可以是与“值”字段中包括的安全密钥不同类型的密钥)。高级加密标准(AES)解密密钥可以存储在易失性只读存储器诸如DRAM中。代表安全密钥的值(例如,512比特安全密钥)可以通过命名空间标识符(NSID)+密钥标签来寻址。
参照图1,主机可以向存储设备(例如,SSD(例如,闪存驱动器))发送读或写命令102。命令102可以包括NSID+密钥标签。NSID 103可以标识要读取或写入的存储器。NSID103可以由8个或更多个比特组成。密钥标签104可以是用于索引特定NSID的加密/解密密钥的密钥索引。系统可以由多于一个的NSID组成,并且不同NSID中的密钥标签可以重叠。NSID103和密钥标签104可以组合以形成数据结构105(例如,密钥索引、非重叠{密钥,值}索引、加密索引、解密密钥索引、查找表或数组)。数据结构105可以是AES索引。数据结构105的大小可以由16,777,246(条目)×512比特组成,并且可以被划分为预定数量的命名空间(NS)(例如,256个NS,每个NS为64kb)。每个NS可以包括可线性递增的多个有效条目。有效条目的线性分配可能降低命中率,并且可能由于最近最少使用(LRU)逐出策略而导致限制重新填充。
每个NS可以跨整个数据结构105的各个部分进行索引(这可以称为“稀疏索引”),从而需要大量查找来检索包括在单个NS中的信息。就此而言,数据结构105是大的。数据结构105包括约1600万个可能的条目。然而,系统可使用64000个有效条目。因此,总存储器大小可以是1吉字节(GB),并且总有效存储器大小可以是4兆字节(MB)。因为有效条目的数量相对于存储器的总大小较小,因此存储器是稀疏的。具有预定义的固定/最大数量的有效密钥(例如,64000个)是使用有限的存储器大小和在大而稀疏的源地址空间中的最大查找数的KPIO加密的一个特征,从而增加了依靠高效吞吐量计算来快速查找和检索有效密钥的重要性。
数据结构105可以用于检索安全密钥106(例如,AES加密密钥或加密密钥)。安全密钥106可以是64字节(512比特)。如果安全密钥106是64字节,则其可能较大,并且可能需要保存在高速缓冲存储器或外部存储器上以供访问。
可以检索安全密钥106并将其发送到解密/加密引擎107。解密的数据可以被读取108,或者解密的数据可以从主机写入109到SSD,并且安全密钥106可以由解密/加密引擎107用来读取加密的数据110或者写入加密的数据111。加密的数据110或111可以是4096x 8比特并存储在memflash中。例如,加密的数据110或111可以存储在远程服务器(例如,云服务器)中。
直接地址查找表(LUT)可用于将密钥值存储在KPIO系统中的密钥索引105中。直接地址LUT将每个命令102寻址到密钥索引105中的特定地址空间,然而AES加密密钥索引105的大小必须非常大,因为密钥索引105的大小的固定部分可以包括有效条目。
使用内容可寻址存储器(CAM)查找可能是高效获取或检索KPIO系统中密钥值的解决方案。有利地,CAM查找减少了密钥索引105的存储器存储大小并且实现了快速吞吐量。不幸的是,CAM使用大量逻辑门来输入或检索密钥值,这是昂贵的。例如,对于64000个有效条目,可能需要64000x24比特比较器来执行逻辑功能,以将源索引重定向到密钥索引105中的有效密钥地址空间。
此外,散列寻址可用于将源索引命令散列到有限大小,以识别散列密钥索引的密钥存储地址(例如,将索引命令从24比特减少到16比特)。散列寻址通过使用散列密钥索引有利地减小了存储器的存储器大小,因为散列索引可以以减小的长度紧凑地存储。不幸的是,因为多个源密钥(例如,来自一个或更多个源的要输入到散列函数中的密钥)可能链接到单个散列索引,所以从同一散列索引检索有效值可能需要冲突解决操作,这可能降低吞吐量。
散列冲突解决操作可以涉及当使用散列索引来识别主存储器中的存储索引时执行比较操作。如果比较操作将与主存储器中的存储地址对应的散列索引与源索引(例如,NSID+密钥标签)匹配,则链表可以用来指定辅助存储器地址空间,以将与主存储器中的存储地址对应的散列索引与源索引相关联。以这种方式,可以使用链表将多个条目与同一散列索引相关联。因此,主存储器的大小可以被减小到小的大小,因为可以包括有效条目。然而,当发生冲突并且指定链表时,必须扩展分配给条目的存储器。此外,由于比较操作,可能发生冲突,并且访问存储器可能需要多次操作才能从链表中获取数据。
外围部件互连高速(PCIe)链路可用于访问存储器。PCIe4x4标准可使用每秒200万(M)个输入/输出操作(IOPS)或500纳秒(ns)进行一次查找(例如,读或写)。PCIe4x6标准可使用8M IOPS或125ns进行一次查找。DRAM访问可以约为50-70ns。因此,使用PCIe4x6标准,每个命令只能执行1-2次冲突比较和/或查找,这在查找速度上造成了重大瓶颈。
本申请提出了解决方案,其能使用第一层:高速缓存RAM(例如,高速缓冲存储)来高效查找存储器条目(例如,加密密钥),从而降低需要访问第二层:外部RAM(例如,DRAM)的可能性,其中访问第二层可能较慢。因此,本申请提出了减少用于获取存储器条目的总吞吐时间并最小化查找迭代的次数,从而提高依赖PCIe IOPS标准的系统的查找速度。
而且,本申请提出了使用多种类型的高速缓存比较来识别高速缓存冲突(例如,不匹配)。第一种类型的高速缓存冲突可以被称为传统高速缓存冲突解决。第二种类型可以被称为散列高速缓存冲突解决。贯穿整个公开内容,进行比较以确定是否存在冲突。每个比较可以是例如传统高速缓存冲突解决或散列高速缓存冲突解决。也可以使用其他类型的比较,诸如多路高速缓存比较。
传统高速缓存比较(传统高速缓存冲突解决)可以在两个值之间进行:1.标签_地址访问/索引标签存储器内容(例如,14比特);以及2.源地址的一部分(例如,14比特=24比特-10比特)。这种类型的比较可以通过下面讨论的图3的步骤303来举例说明。
散列高速缓存比较(散列高速缓存冲突解决)可以在两个值之间:1.标签_地址访问/索引标签存储器内容(例如,24比特)以及2.完整源地址(例如,24比特)。这种类型的比较可以由下面讨论的图6的603来举例说明。
为了便于描述,在本公开中使用术语“标签存储器内容”。该术语是指存储在标签存储器(例如,第一层标签RAM)中的存储器内容。取决于使用上述比较中的哪一个,标签存储器内容可以指代不同数量的比特(例如,在传统高速缓存冲突解决的情况下为14比特,在散列高速缓存冲突解决的情况下为24比特等),其可以与源地址的一部分或全部进行比较。
图2是示出根据实施例的散列冲突解决的框图。贯穿整个图2,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可以取决于系统的需要而变化。
使用链表的散列冲突解决可以将单独的链接链表与散列表合并,以为主存储器中未使用的槽节省存储器空间。散列冲突解决可以应用于KPIO系统,使得源索引(NSID和密钥标签)被散列并用于识别与存储在DRAM中的加密或解密密钥对应的存储地址。
图2中描述的操作可以由存储在存储器中的控制器、处理器或计算机实现的指令来执行。
参照图2,包括NSID和密钥标签的源索引可以被从24比特散列到16比特以生成散列索引。散列索引表示主存储器(例如,散列表)的存储地址。在步骤201,(例如,由控制器)将标签部分(例如,24比特)与表示主存储器的存储地址的NSID(例如,8比特)和密钥标签(例如,16比特)进行比较。标签部分可以表示主存储器条目的本地地址并与包括NSID和密钥标签的源索引进行比较。如图2所示,在步骤201将存储器存储中存储的24比特标签与源索引(例如,NSID(8比特)和密钥标签(16比特))进行比较,发现存在冲突(不匹配),并且可以在步骤202执行冲突解决逻辑。例如,可以分配第一指针以将访问1链接到主存储器中的另一存储地址,访问2。此外,可以分配第二指针以将访问2链接到主存储器中的另一存储地址,访问3。可以使用高速缓存索引来访问包括在主存储器中的条目。
访问1、访问2和访问3表示对主存储器的条目的访问尝试。每次访问尝试可以启动以下序列:
1.检查entry(i)的{NSID(i),密钥标签(i)}对与IO命令的源-索引{NSID,密钥标签}对匹配;
2.如果匹配,则使用512b加密密钥;以及
3.如果不匹配,则下一个条目的链接将用于下一次访问尝试,access(i+1),
其中“i”表示主存储器的条目。
图3是示出根据实施例的作为标签索引的部分源索引的框图。贯穿整个图3,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可以取决于系统的需要而变化。
参照图3,提供了24比特源索引301。源索引301的10个低位(例如,最低有效位(LSB))用作标签地址302。这里,标签地址是10比特,因为标签RAM(高速缓冲存储)包括1024个条目,并且log2(1024)=10。源索引301的剩余14比特存储在第一层:标签RAM(高速缓冲存储)中,使得总存储器大小为1024x 14比特。一旦对14比特进行索引,则可以从标签RAM输出值作为标签_内容(术语“标签_内容”可以与术语“标签存储器内容”可互换使用),并且在步骤303中与来自源索引的NSID[8]密钥标签[6]的对应比特进行比较以确定是否存在冲突。如果不存在冲突(高速缓存命中或匹配),则可以从高速缓冲存储输出对应的高速缓存304条目。以这种方式,高速缓冲存储用于提高输出存储条目的命中率,例如线性分配有效条目的系统(例如,KPIO系统)。
如果在步骤303中存在冲突,则不经由第一层高速缓存RAM输出有效条目。在这种情况下,通过将源索引301散列为16比特并将其提供为散列索引305来访问第二层外部RAM以识别有效条目。散列索引305可以是16比特并表示第二层:外部RAM的存储地址。在步骤306,(例如,由控制器)将访问1的标签部分与表示存储器的存储地址的NSID和密钥标签的散列索引进行比较。访问1的标签部分可以表示存储器条目中访问1的本地地址,并与包括NSID和密钥标签的源索引进行比较。如果存在匹配,则在步骤309可以从第二层:外部RAM输出对应的条目。如果在步骤306中存在冲突(未匹配),则在步骤307中可以在存储设备中分配下一个指针以将访问1与访问2链接。
在步骤308中,(例如,由控制器)将访问2的标签部分与表示存储器的存储地址的NSID和密钥标签的散列索引进行比较。如果在步骤308中没有识别出冲突(匹配),则可以从第二层:外部RAM输出该条目,并在步骤309作为输出提供。
经由高速缓冲存储器输出条目(在步骤304)所花费的时间与经由DRAM输出条目(在步骤309)所花费的时间明显不同。如下所讨论的,与使用DRAM执行相同操作相比,高速缓冲存储器的访问和条目输出可以快得多。因此,使用高速缓冲存储器输出条目是更可取的,因为它的延迟要少得多。
KPIO的特征可以是每个NS中的KPIO密钥可以在分配时线性递增。例如,如果每个NS的低地址用作索引,则每个NS可以指向第一索引(例如,索引1)和第一层:标签RAM,如图3中所提供的,可以仅存储1个NS条目(例如,256个NS条目中的1个NS条目)。
图4是示出根据实施例的多路标签地址索引的框图。贯穿整个图4,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可以取决于系统的需要而变化。
图4包括与图3类似的多个部件。因此,为了便于描述,可以从图4的描述中省略对部件的类似描述。
参照图4,提供第一层:标签RAM作为多路标签地址。如图4所示,第一层:标签RAM被复制到两个标签地址(Tag0和Tag1)中。因此,第一条目401和第二条目402可以在LSB中缓存到一个标签地址,从而增加命中率(因为,例如,256个NS条目可以用于提供两个条目而不是一个条目的匹配)。此外,第一层:标签RAM还可以被划分为除两个之外的分区。例如,第一层:标签RAM可以被分配为具有高速缓存到LSB的四个条目,从而进一步增加命中率(因为,例如,256个NS条目可以用于提供四个条目而不是两个条目的匹配)。
在步骤403-404,执行多路高速缓冲存储器比较。在步骤403,执行标签内容(例如,标签_内容_1[15])和源索引的一部分(例如,NSID[8]密钥标签[7])之间的比较。在步骤404,执行标签内容(例如,标签_内容_2[15])和源索引的一部分(例如,NSID[8]密钥标签[7])之间的比较。如上所述,多路高速缓冲存储器比较与传统高速缓存比较和散列高速缓存比较明显不同,因为如步骤403-404所示,2路传统高速缓存比较是两个值之间的比较:1.标签_地址访问/索引标签存储器内容的两个条目(401和402)(15比特)以及2.源地址的一部分(15比特=24比特–9比特)。此外,标签地址可以是9比特,因为源索引的10LSB–1比特,以区分重复的标签地址Tag0和Tag1。
此外,其他多路高速缓冲存储器比较是可能的。例如,4路传统高速缓存在两个值之间进行比较:1.标签_地址访问/索引标签存储器内容的四个条目(16比特)以及2.源地址的一部分(16比特=24比特–8比特)。此外,标签地址可以是8比特,因为源索引的10LSB–2比特,以区分4个重复的标签地址。
此外,可配置的x路传统高速缓冲存储器比较是可能的。例如,x路传统高速缓存在两个值之间进行比较:1.标签_地址访问/索引标签存储器内容的X个条目(14+Log2(X)比特)以及2.源地址的一部分(24比特–标签_地址宽度(例如,标签_地址宽度可以是重复标签地址数量的函数))。此外,标签地址可以等于10–log2(x)。
图5是示出根据实施例的可配置为映射到标签地址的源索引的框图。贯穿整个图5,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可以取决于系统的需要而变化。
图5包括与图3-4类似的多个部件。因此,为了便于描述,可以从图5的描述中省略对部件的类似描述。
参照图5,第一层:标签RAM提供为映射到标签地址的可配置源索引。代替使用LSB来识别标签地址,可以使用源索引的NSID[8]的一部分(表示为“NSID[Y]”)和源索引的密钥标签[16]的一部分(表示为“密钥标签[X]”)来识别高速缓存索引的标签地址。因此,NSID比特的一部分可以是标签地址的一部分,这可以降低它们发生冲突的可能性,因为标签地址是可重新配置的。例如,NSID的7个LSB和密钥标签的3个LSB可以用于识别标签条目,并且剩余的14比特可以表示标签内容。因此,在步骤501,可以执行可配置的x路传统高速缓冲存储器比较。
可配置的源索引可以允许使用高速缓存索引来识别具有有效条目的多个命名空间。对于每个命名空间,可以从零开始增量地识别每个有效条目。
根据实施例,散列源地址可以用作高速缓存标签地址。使用散列源地址作为标签地址可以提高线性增量源地址问题的命中率(例如,较低的冲突可能性)。例如,有效地址可以均匀地分布在高速缓存地址空间中,并将冲突的可能性降低到小于10%。此外,散列源地址(散列索引)的LSB可以用作标签地址(高速缓存标签地址)。
图6是示出根据实施例的使用散列索引作为标签地址的框图。贯穿整个图6,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可以取决于系统的需要而变化。
图6包括与图3-5类似的多个部件。因此,为了便于描述,可以从图6的描述中省略对部件的类似描述。
参照图6,在步骤601,源索引从例如24比特散列到16比特。在步骤602,与第一层:标签RAM的标签地址对应的条目被设为等于散列源索引的预定比特数(例如,10比特)。在步骤603,将标签存储器内容(24比特)与源索引(24比特)进行比较以确定有效条目是否存储在高速缓存中。
对源索引进行散列可以包括与散列索引[16]对应的有效条目作为非线性的额外好处(例如,散列有效条目更有可能以随机方式分布在第一层:标签RAM中),从而解决上面讨论的KPIO的线性增量分配问题,因为命名空间中包括的条目不会线性递增。换句话说,源索引的熵可能挤满了LSB。然而,在散列之后,散列源索引的熵可以均匀地分布在每个散列比特上。此外,散列有利地减少了总比特数(例如,从24比特减少到16比特),从而最小化有效NS条目的大小。
尽管对源索引进行散列解决了线性增量问题,并且还减少了总比特数以最小化有效NS条目的大小,但可能要权衡的是,组成散列索引的值可能未必是唯一的,因此散列冲突的可能性仍然存在。
根据实施例,避免散列冲突的解决方案可以是使用整个标签地址指定最高有效位(MSB)来进行高速缓存识别以确定是否存在冲突。
图7是示出根据实施例的作为标签地址的多路散列索引的框图。贯穿整个图7,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可取决于系统的需要而变化。
图7包括与图3-6类似的多个部件。因此,为了便于描述,可以从图7的描述中省略对部件的类似描述。
参照图7,因为源索引701从24比特散列到16比特,并且与702处的标签地址相关联,于是使用散列地址的散列冲突的可能性增加,从而降低了命中率(不太可能匹配)。因此,通过将源索引与标签存储器内容(例如,标签0)进行比较、然后将其与标签存储器内容(例如,标签1)进行比较以确定高速缓冲存储是否包括有效条目,可以采用与参照图4描述的解决方案类似的解决方案图4的方法。
图8是示出根据实施例的作为高速缓存索引的双散列的框图。贯穿整个图8,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节或条目的实际数量可以取决于系统的需要而变化。
图8包括与图3-7类似的多个部件。因此,为了便于描述,可以从图8的描述中省略对部件的类似描述。
参照图8,执行双散列函数可以降低高速缓存中存在标签冲突的可能性,并提高命中率(最不可能导致未匹配)。在步骤801,使用第一散列函数将源索引从24比特散列为16比特。如果16比特第一散列条目与标签索引中的条目冲突,则可以使用第二散列函数将源索引从24比特散列到16比特,以识别标签索引中的第二条目位置。如果16比特第二散列条目与标签索引的第二条目位置冲突,则可以使用第三散列函数将源索引从24比特散列到16比特,以识别标签索引中的第三条目位置。因此,只要第一层:标签RAM没有被完全占用,高速缓存就几乎可以保证有位置来存储条目。此外,将标签存储器内容1、标签存储器内容2和标签存储器内容3与源索引进行比较以确定高速缓冲存储器是否包括有效条目。
此外,第二层:外部RAM在输出条目时可以使用散列函数。在这种情况下,因为散列函数由第二层:外部RAM使用,所以它可以被重新用作第一、第二和第三散列函数,用于将源索引从24比特散列到16比特。
此外,散列函数不限于散列到24至16比特或从24比特到16比特散列,并且在执行散列时可以散列到大于或小于16的预定比特数。
图9示出了根据实施例比较由图3-8提供的实施例的益处的表。
图9包括通过示例的方式提供的多个值和百分比,以便示出由图3-8提供的实施例的相对效果。图9所示的数值和百分比如不限于所显示的那些,并且可以采用各种其他的值和百分比。
访问存储器地址的过程可以被称为执行“跳(hop)”或“跳跃(jump)”。每次使用比较函数时,执行跳或跳跃。图9比较了图3-8提供的每个实施例执行3跳的平均总时间量(最多140ns)。平均总时间量是高速缓存命中率、散列冲突以及访问第一层和第二层存储器所需时间的函数。因为第一层存储器可以提供为SRAM,所以访问SRAM所花费的时间可以是5ns。因为第二层存储器提供为DRAM,所以访问DRAM所花费的时间可以是70ns。
图10示出了根据实施例比较由图3-8提供的存储器的大小的表。
图10包括与由图3-8提供的实施例提供的存储器的大小有关的多个值。图10所示的值不限于所显示的那些,并且可以采用各种其他的值和百分比。
图11是示出根据实施例的用于访问高速缓存条目的重定向表的框图。贯穿整个图8,一些部件包括对应于每个部件的比特或字节的数量(例如,NSID[8])。对应于每个部件的比特或字节的数量是示例性的并且被提供以帮助理解附图。具体地,每个部件的大小可以用于说明性目的,以帮助理解部件之间的物理关系。每个部件的比特、字节数或条目的实际数量可以取决于系统的需要而变化。
图11包括与图3-8类似的多个部件。因此,为了便于描述,可以从图11的描述中省略对部件的类似描述。
参照图11,散列表由65536x4比特的散列索引重定向表(散列重定向表)组成,这显著减小了存储器的大小,因为通过使用散列索引重定向表结合主存储器中的高速缓冲存储,冲突的可能性降低了4倍。在这种情况下,主存储器可以由静态只读存储器(SRAM)组成,并且可以位于具有比访问DRAM更快的读/写速度的IC(例如,ASIC)上。DRAM可以位于集成电路(IC)芯片之外并且相对于SRAM的大小可以较大。因此,散列重定向表可以被称为“片上”散列重定向表,其可以被快速访问以获得重定向地址。
散列重定向表是重定向到高速缓冲存储的地址的重定向索引。散列重定向表配置为使得散列重定向表的条目指向高速缓冲存储中的对应的第一条目。散列重定向表的输入可以是18比特,输出可以是11比特或更多比特。
当使用散列重定向表时,控制器(例如,处理器)可以使用散列源索引来识别重定向索引以指向存储存储器中的对应条目的第一条目(例如,使用行头(HOL)指针)。重定向索引可以用于识别辅助存储器中的存储条目,而无需首先访问高速缓冲存储器,并且如果高速缓存条目未命中,则识别辅助存储器中的存储条目。因此,当存储条目被存储在辅助存储器中时(例如,当它没有被存储在高速缓冲存储中时),重定向索引加速了识别存储条目的过程。
如图11所示,在源索引从24比特散列到16比特之后,再加上散列重定向表的2比特,这2比特可以用于确定是否存在高速缓存命中或高速缓存未命中。如果存在高速缓存命中,则散列重定向表可以指向主存储器中的高速缓冲存储设备来访问条目。然而,如果存在高速缓存未命中,则散列重定向表可以指向辅助存储器来查找条目。如上所讨论的,访问辅助存储器(在其中执行查找)比访问主存储器需要更多的时间。因此,散列重定向表改善了查找时间,因为它通过降低冲突的可能性而降低了需要访问辅助存储器的可能性。
如上所述,本申请通过提供多种配置来提高存储器系统中的吞吐量,这些配置减少了对基于散列的KPIO系统访问慢速片外存储器的需要,从而提高了吞吐量和延迟,并且降低了操作辅助存储器(DRAM)所需的功耗。
图12是示出根据实施例的访问存储的存储器的流程图。
图12中描述的步骤可以由存储在存储器中的控制器、处理器或计算机实现的指令来执行。
参照图14,在步骤1201,至少部分地基于包括NSID和密钥标签的源索引来识别标签存储器的标签地址。
在步骤1202中,访问对应于标签地址的高速缓冲存储地址。高速缓冲存储地址可以被包括在主存储器中。主存储器可以是SRAM。
在步骤1203中,将标签存储器内容与源索引的至少部分进行比较以识别是否存在冲突。标签存储器内容可以具有与源索引的所述至少部分相同的比特数。
在步骤1204中,响应于在步骤1403中识别是否确实存在冲突而获得来自高速缓冲存储地址的信息。所获得的信息可以是预定大小(例如,512比特)的加密或解密密钥(例如,条目)。
如果不存在冲突,则可以直接从高速缓冲存储设备获取条目。否则,如果确实存在冲突,则可能需要访问辅助存储器(例如,第二层:外部RAM或DRAM)以获得适当的条目以供输出。
如果确实存在冲突,则可能出现许多不同的选项(例如,折叠链表、辅助存储器链表、具有链表的重路由表、具有链表的MFU、顺序双散列冲突解决、并发双散列冲突解决、具有双散列冲突解决的HOL重路由表等)。
图13是示出根据实施例的用于执行本申请中描述的实施例的结构部件的存储器系统。
图1-12中描述的操作可以由存储在存储器中的控制器、处理器或计算机实现的指令来执行。例如,由控制器执行的指令可以使用FPGA、ASIC、通用计算机来实现,或者由远程处理系统(例如,云计算系统)来实现。
参照图13,示出了能够执行本申请中描述的实施例的存储器系统1300。存储器系统1300包括主机1301、IC 1302(例如,存储器缓冲芯片)和DRAM(例如,非易失性存储器)1303。尽管DRAM被示出为与IC 1302分离,但是DRAM可以被包括在IC 1302上。
IC 1302包括主机接口1304、SRAM(例如,易失性存储器)1305、存储介质(例如,闪速存储器)1306和控制器1307。主机接口1304可以将信息从主机1301通信传送到IC 1302或者从IC 1302通信传送到主机1301。与DRAM 1303相比,SRAM 1305的大小可以相对较小。然而,SRAM 1305可以具有比DRAM 1303更快的读/写速度。此外,存储介质1306可以存储要发送到主机1301和/或DRAM 1303或从主机1301和/或DRAM 1303发送的数据。
本申请中描述的实施例提供了特定配置来改善对存储信息的访问,特别是对KPIO系统的存储信息的访问。图13所示的存储系统提供了用于实现本申请的实施例的结构。然而,要注意的是,本申请的实施例不应限于图13的结构,本领域普通技术人员将认识到,可以应用其他的存储器存储系统来实现本申请的实施例。
图14示出了根据实施例的网络环境中的电子设备。
参照图14,网络环境1400中的电子设备1401(例如,包括GPS功能的移动终端)可以经由第一网络1498(例如,短距离无线通信网络)与电子设备1402通信,或者经由第二网络1499(例如,长距离无线通信网络)与电子设备1404或服务器1408通信。电子设备1401可以经由服务器1408与电子设备1404通信。电子设备1401可以包括处理器1420、存储器1430、输入设备1450、声音输出设备1455、显示设备1460、音频模块1470、传感器模块1476、接口1477、触觉模块1479、相机模块1480、电力管理模块1488、电池1489、通信模块1490、用户识别模块(SIM)1496或包括GNSS天线的天线模块1497。在一个实施例中,部件中的至少一个(例如,显示设备1460或相机模块1480)可以从电子设备1401中省略,或者一个或更多个其他的部件可以添加到电子设备1401。在一个实施例中,一些部件可以被实现为单个IC。例如,传感器模块1476(例如,指纹传感器、虹膜传感器或照度传感器)可以嵌入在显示设备1460(例如,显示器)中。
处理器1420可以运行例如软件(例如,程序1440)以控制电子设备1401的与处理器1420耦合的至少一个其他部件(例如,硬件或软件部件),并且可以执行各种数据处理或计算。作为数据处理或计算的至少部分,处理器1420可以将从另一部件(例如,传感器模块1476或通信模块1490)接收到的命令或数据加载到易失性存储器1432中,处理存储在易失性存储器1432中的命令或数据,并将结果数据存储在非易失性存储器1434中。处理器1420可以包括主处理器1421(例如,中央处理单元(CPU)或应用处理器)以及可独立于主处理器1421操作或与主处理器1421结合操作的辅助处理器1423(例如,图形处理单元(GPU)、图像信号处理器(ISP)、传感器中枢处理器或通信处理器(CP))。附加地或可选地,辅助处理器1423可以适配为比主处理器1421耗电更少,或执行特定功能。辅助处理器1423可被实现为与主处理器1421分离或者是主处理器1421的一部分。
当主处理器1421处于非激活(例如,睡眠)状态时,辅助处理器1423而不是主处理器1421可以控制与电子设备1401的部件当中的至少一个部件(例如,显示设备1460、传感器模块1476或通信模块1490)相关的至少一些功能或状态,或者当主处理器1421处于激活(例如,运行应用)状态时,辅助处理器1423可以与主处理器1421一起控制与电子设备1401的部件当中的至少一个部件(例如,显示设备1460、传感器模块1476或通信模块1490)相关的至少一些功能或状态。根据一个实施例,辅助处理器1423(例如,图像信号处理器或通信处理器)可以被实现为在功能上与辅助处理器1423相关的另一部件(例如,相机模块1480或通信模块1490)的部分。
存储器1430可以存储由电子设备1401的至少一个部件(例如,处理器1420或传感器模块1476)使用的各种数据。各种数据可以包括例如软件(例如,程序1440)以及与其相关的命令的输入数据或输出数据。存储器1430可以包括易失性存储器1432或非易失性存储器1434。
程序1440可以作为软件存储在存储器1430中,并且可以包括例如操作系统(OS)1442、中间件1444或应用1446。
输入设备1450可以从电子设备1401的外部(例如,用户)接收要由电子设备1401的另一部件(例如,处理器1420)使用的命令或数据。输入设备1450可以包括例如麦克风、鼠标或键盘。
声音输出设备1455可以将声音信号输出到电子设备1401的外部。声音输出设备1455可以包括例如扬声器或接收器。扬声器可以用于通用用途,诸如播放多媒体或唱片,接收器可以用于接收呼入呼叫。根据一个实施例,接收器可以被实现为与扬声器分离或者是扬声器的一部分。
显示设备1460可以向电子设备1401的外部(例如,用户)视觉地提供信息。显示设备1460可以包括例如显示器、全息设备或投影仪以及用于控制显示器、全息设备和投影仪中的对应一个的控制电路。根据一个实施例,显示设备1460可以包括适配为检测触摸的触摸电路、或者适配为测量由触摸引起的力的强度的传感器电路(例如,压力传感器)。
音频模块1470可以将声音转换为电信号,反之亦可。根据一个实施例,音频模块1470可以经由输入设备1450获得声音,或者经由声音输出设备1455或与电子设备1401直接(例如,有线地)或无线耦合的外部电子设备1402的耳机输出声音。
传感器模块1476可以检测电子设备1401的操作状态(例如,电力或温度)或电子设备1401外部的环境状态(例如,用户的状态),然后生成与检测到的状态对应的电信号或数据值。传感器模块1476可以包括例如手势传感器、陀螺仪传感器、大气压传感器、磁性传感器、加速度传感器、握持传感器、接近传感器、颜色传感器、红外(IR)传感器、生物特征传感器、温度传感器、湿度传感器或照度传感器。
接口1477可以支持用于使电子设备1401直接(例如,有线地)或无线地与外部电子设备1402耦合的一种或更多种指定协议。根据一个实施例,接口1477可以包括例如高清晰度多媒体接口(HDMI)、通用串行总线(USB)接口、安全数字(SD)卡接口或音频接口。
连接端1478可以包括连接器,电子设备1401可以通过该连接器与外部电子设备1402物理连接。根据一个实施例,连接端1478可以包括例如HDMI连接器、USB连接器、SD卡连接器或音频连接器(例如,耳机连接器)。
触觉模块1479可以将电信号转换成可由用户经由触觉或动觉识别的机械刺激(例如,振动或运动)或电刺激。根据一个实施例,触觉模块1479可以包括例如电机、压电元件或电刺激器。
相机模块1480可以捕捉静止图像或运动图像。根据一个实施例,相机模块1480可以包括一个或更多个透镜、图像传感器、图像信号处理器或闪光灯。
电力管理模块1488可以管理供应给电子设备1401的电力。电力管理模块1488可以被实现为例如电力管理集成电路(PMIC)的至少部分。
电池1489可以向电子设备1401的至少一个部件供电。根据一个实施例,电池1489可以包括例如不可再充电的一次电池、可再充电的二次电池或燃料电池。
通信模块1490可以支持在电子设备1401和外部电子设备(例如,电子设备1402、电子设备1404或服务器1408)之间建立直接(例如,有线)通信信道或无线通信信道,并经由所建立的通信信道执行通信。通信模块1490可以包括可独立于处理器1420(例如,应用处理器)操作的一个或更多个通信处理器并支持直接(例如,有线)通信或无线通信。根据一个实施例,通信模块1490可以包括无线通信模块1492(例如,蜂窝通信模块、短距离无线通信模块或全球导航卫星系统(GNSS)通信模块)或有线通信模块1494(例如,局域网(LAN)通信模块或电力线通信(PLC)模块)。这些通信模块中的对应一个可以经由第一网络1498(例如,短距离通信网络,诸如蓝牙TM、无线保真(Wi-Fi)直连、或红外数据协会(IrDA)的标准)或第二网络1499(例如,长距离通信网络,诸如蜂窝网络、互联网或计算机网络(例如,LAN或广域网(WAN))与外部电子设备通信。这些各种类型的通信模块可以被实现为单个部件(例如,单个IC),或者可以被实现为彼此分离的多个部件(例如,多个IC)。无线通信模块1492可以使用存储在用户识别模块1496中的用户信息(例如,国际移动用户识别码(IMSI))来识别和认证通信网络(诸如第一网络1498或第二网络1499)中的电子设备1401。
天线模块1497可以向电子设备1401的外部(例如,外部电子设备)发送信号或电力,或者从电子设备1401的外部(例如,外部电子设备)接收信号或电力。根据一个实施例,天线模块1497可以包括一个或更多个天线,并且例如可以由通信模块1490(例如,无线通信模块1492)从其中选择适合于通信网络(诸如第一网络1498或第二网络1499)中使用的通信方案的至少一个天线。然后可以经由所选择的至少一个天线在通信模块1490和外部电子设备之间发送或接收信号或电力。
上述部件中的至少一些可以相互耦合并经由外围设备间通信方案(例如,总线、通用输入输出(GPIO)、串行外设接口(SPI)或移动工业处理器接口(MIPI))在其间通信地传送信号(例如,命令或数据)。
根据一个实施例,可以经由与第二网络1499耦合的服务器1408在电子设备1401和外部电子设备1404之间发送或接收命令或数据。电子设备1402和1404中的每个可以是与电子设备1401相同类型或不同类型的设备。要在电子设备1401处执行的所有或一些操作可以在一个或更多个外部电子设备1402、1404或1408处执行。例如,如果电子设备1401应自动或者响应于来自用户或另一设备的请求执行功能或服务,则电子设备1401可以请求一个或更多个外部电子设备执行所述功能或服务的至少部分,而不是执行所述功能或服务,或者除了执行所述功能或服务之外,还可以接收请求一个或更多个外部电子设备执行所述功能或服务的至少部分。接收到所述请求的所述一个或更多个外部电子设备可以执行所请求的所述功能或服务的所述至少部分,或者与所述请求相关的附加功能或附加服务,并将执行的结果传送给电子设备1401。电子设备1401可以在对结果进行进一步处理或不进行进一步处理的情况下提供结果作为对所述请求的至少部分答复。为此,例如可以使用云计算、分布式计算或客户端-服务器计算技术。
一个实施例可以被实现为包括存储在机器(例如,电子设备1401)可读的存储介质(例如,内部存储器1436或外部存储器1438)中的一个或更多个指令的软件(例如,程序1440)。例如,电子设备1401的处理器可以调用存储在存储介质中的一个或更多个指令中的至少一个,并且在处理器的控制下使用或不使用一个或更多个其他部件来执行它。因此,机器可以被操作以根据所调用的至少一个指令来执行至少一个功能。所述一个或更多个指令可以包括由编译器生成的代码或解释器可运行的代码。可以以非暂时性存储介质的形式提供机器可读存储介质。术语“非暂时性”表示存储介质是有形设备,并且不包括信号(例如,电磁波),但是该术语不在数据半永久性地存储在存储介质中与数据临时存储在存储介质中之间进行区分。
根据一个实施例,本公开的方法可以被包括并提供在计算机程序产品中。计算机程序产品可作为产品在销售者和购买者之间进行交易。可以以机器可读存储介质(例如,紧凑盘只读存储器(CD-ROM))的形式来发布计算机程序产品,或者可经由应用商店(例如,Play StoreTM)在线发布(例如,下载或上传)计算机程序产品,或者可直接在两个用户设备(例如,智能电话)之间分发(例如,下载或上传)计算机程序产品。如果是在线发布的,则计算机程序产品的至少部分可以是临时产生的,或者可将计算机程序产品中的至少部分至少临时存储在机器可读存储介质(诸如制造商的服务器、应用商店的服务器或转发服务器的存储器)中。
根据一个实施例,上述部件中的每个部件(例如,模块或程序)可以包括单个实体或多个实体。可以省略一种或更多种上述部件,或者可以添加一种或更多种其他部件。可选地或附加地,多个部件(例如,模块或程序)可以被集成到单个部件中。在这种情况下,集成部件仍可以以与集成之前由多个部件中的对应一个部件执行的方式相同或相似的方式来执行所述多个部件中的每个的一个或更多个功能。由模块、程序或另一部件执行的操作可以顺序地、并行地、重复地或启发式地执行,或者一个或更多个操作可以以不同的顺序执行或省略,或者可以添加一个或更多个其他操作。
尽管已经在本公开的详细描述中描述了本公开的某些实施例,但是在不脱离本公开的范围的情况下,可以以各种形式修改本公开。因此,本公开的范围不应仅基于所描述的实施例来确定,而是应基于所附权利要求及其等同物来确定。
Claims (20)
1.一种存储器设备的方法,包括:
至少部分地基于源索引来识别标签存储器的标签地址;
访问对应于标签地址的高速缓冲存储地址;
将标签存储器内容和至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突;以及
响应于识别是否存在匹配或者是否存在冲突,从高速缓冲存储地址获取信息。
2.根据权利要求1所述的方法,其中高速缓冲存储地址被包括在第一存储器中,以及
其中将标签存储器内容和所述至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突还包括:
响应于识别出存在匹配,输出对应于高速缓冲存储地址的条目。
3.根据权利要求1所述的方法,其中多个高速缓存条目对应于标签地址。
4.根据权利要求1所述的方法,其中标签存储器使用命名空间标识符(NSID)的至少一比特和密钥标签的至少一比特来提供可重配置的标签地址。
5.根据权利要求1所述的方法,还包括:
使用散列函数对源索引进行散列以获得散列索引,
其中标签存储器的标签地址基于散列索引被确定。
6.根据权利要求5所述的方法,其中多个高速缓存条目对应于标签地址。
7.根据权利要求5所述的方法,其中散列函数是双散列函数,以及
其中使用散列函数对源索引进行散列以获得散列索引包括:
通过使用第一双散列函数对源索引进行散列来生成第一散列索引,
将标签存储器内容和完整源地址进行比较以识别是否存在匹配或者是否存在冲突,以及
响应于识别出存在冲突,通过使用第二双散列函数对源索引进行散列来生成第二散列索引。
8.一种用于存储器的系统,包括:
存储器;以及
控制器,配置为:
至少部分地基于源索引来识别标签存储器的标签地址;
访问对应于标签地址的高速缓冲存储地址;
将标签存储器内容和至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突;以及
响应于识别是否存在匹配或者是否存在冲突,从高速缓冲存储地址获取信息。
9.根据权利要求8所述的系统,其中高速缓冲存储地址被包括在第一存储器中,以及
其中由控制器将标签存储器内容和所述至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突还包括:
响应于识别出存在匹配,由控制器输出对应于高速缓冲存储地址的条目。
10.根据权利要求8所述的系统,其中多个高速缓存条目对应于标签地址。
11.根据权利要求8所述的系统,其中标签存储器使用命名空间标识符(NSID)的至少一比特和密钥标签的至少一比特来提供可重配置的标签地址。
12.根据权利要求8所述的系统,其中控制器还配置为:
使用散列函数对源索引进行散列以获得散列索引,
其中标签存储器的标签地址基于散列索引被确定。
13.根据权利要求12所述的方法,其中多个高速缓存条目对应于标签地址。
14.根据权利要求12所述的方法,其中散列函数是双散列函数,以及
其中使用散列函数对源索引进行散列以获得散列索引包括:
由控制器通过使用第一双散列函数对源索引进行散列来生成第一散列索引,
由控制器将标签存储器内容和完整源地址进行比较以识别是否存在匹配或者是否存在冲突,以及
响应于识别出存在冲突,由控制器通过使用第二双散列函数对源索引进行散列来生成第二散列索引。
15.一种存储设备,包括:
控制器;以及
存储介质,
其中控制器配置为:
至少部分地基于源索引来识别标签存储器的标签地址;
访问对应于标签地址的高速缓冲存储地址;
将标签存储器内容和至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突;以及
响应于识别是否存在匹配或者是否存在冲突,从高速缓冲存储地址获取信息。
16.根据权利要求15所述的存储设备,其中高速缓冲存储地址被包括在第一存储器中,以及
其中由控制器将标签存储器内容和所述至少部分源索引进行比较以识别是否存在匹配或者是否存在冲突还包括:
响应于识别出存在匹配,由控制器输出对应于高速缓冲存储地址的条目。
17.根据权利要求15所述的存储设备,其中多个高速缓存条目对应于标签地址。
18.根据权利要求15所述的存储设备,其中标签存储器使用命名空间标识符(NSID)的至少一比特和密钥标签的至少一比特来提供可重配置的标签地址。
19.根据权利要求15所述的存储设备,其中控制器还配置为:
使用散列函数对源索引进行散列以获得散列索引,
其中标签存储器的标签地址基于散列索引被确定。
20.根据权利要求19所述的存储设备,其中散列函数是双散列函数,以及
其中使用散列函数对源索引进行散列以获得散列索引包括:
由控制器通过使用第一双散列函数对源索引进行散列来生成第一散列索引,
由控制器将标签存储器内容和完整源地址进行比较以识别是否存在匹配或者是否存在冲突,以及
响应于识别出存在冲突,由控制器通过使用第二双散列函数对源索引进行散列来生成第二散列索引。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/399,025 | 2022-08-18 | ||
US18/087,554 US20240061784A1 (en) | 2022-08-18 | 2022-12-22 | System and method for performing caching in hashed storage |
US18/087,554 | 2022-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117591006A true CN117591006A (zh) | 2024-02-23 |
Family
ID=89918938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311035802.1A Pending CN117591006A (zh) | 2022-08-18 | 2023-08-16 | 用于在散列存储中执行高速缓存的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117591006A (zh) |
-
2023
- 2023-08-16 CN CN202311035802.1A patent/CN117591006A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462504B (zh) | 最终级高速缓存系统和对应的方法 | |
US9846642B2 (en) | Efficient key collision handling | |
JP6190045B2 (ja) | 高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法 | |
US10083131B2 (en) | Generating and/or employing a descriptor associated with a memory translation table | |
EP3123338B1 (en) | Method, apparatus and system to cache sets of tags of an off-die cache memory | |
TW201706850A (zh) | 電腦系統以及非揮發性記憶體的操作方法 | |
EP3420458B1 (en) | Managing memory fragmentation in hardware-assisted data compression | |
US9350828B2 (en) | Network interface device having general-purpose computing capability | |
EP4242819A1 (en) | System and method for efficiently obtaining information stored in an address space | |
CN116738510A (zh) | 有效地获得存储在地址空间中的信息的系统和方法 | |
US20170185541A1 (en) | Peripheral interface circuit | |
US11868270B2 (en) | Storage system and storage device, and operating method thereof | |
US20230393906A1 (en) | Method and system for accelerating application performance in solid state drive | |
EP4325369A1 (en) | System and method for performing caching in hashed storage | |
EP3850474A1 (en) | Hybrid memory system interface | |
CN117591006A (zh) | 用于在散列存储中执行高速缓存的系统和方法 | |
US12039053B2 (en) | Secure processor, operating method thereof, and storage device including same | |
US20240303196A1 (en) | Memory device and method for scheduling block request | |
EP4357928A1 (en) | Methods and system for efficient access to solid state drive | |
US12093697B2 (en) | Methods and apparatus to boot from block devices | |
KR20230012992A (ko) | 파일 읽기 지연 감소를 위한 방법 및 장치 | |
CN115220649A (zh) | 信息处理系统和存储系统 | |
CN117908766A (zh) | 用于高效访问固态驱动器的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |