CN107851063A - 智能编码存储器系统的动态编码算法 - Google Patents
智能编码存储器系统的动态编码算法 Download PDFInfo
- Publication number
- CN107851063A CN107851063A CN201680041920.5A CN201680041920A CN107851063A CN 107851063 A CN107851063 A CN 107851063A CN 201680041920 A CN201680041920 A CN 201680041920A CN 107851063 A CN107851063 A CN 107851063A
- Authority
- CN
- China
- Prior art keywords
- database
- memory
- access
- data
- code
- 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
- 230000015654 memory Effects 0.000 claims abstract description 317
- 108091026890 Coding region Proteins 0.000 claims abstract description 62
- 238000003860 storage Methods 0.000 claims abstract description 61
- 238000012544 monitoring process Methods 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 57
- 238000001514 detection method Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 15
- 230000008569 process Effects 0.000 description 33
- 238000012545 processing Methods 0.000 description 6
- 108700026244 Open Reading Frames Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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/0607—Interleaved addressing
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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
-
- 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/0653—Monitoring storage devices or systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了用于存储器区域的动态编码的系统和技术。所描述的技术包括监测对一组存储器区域的访问,每个区域包括一组数据库的两个或多个部分;基于对该组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域;生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组库中的数据值;以及将所述编码区域的编码值存储到编码库中。
Description
相关申请案交叉引用
本申请要求于2015年7月28日提交的申请号为14/811,357,并且题为“智能编码存储器系统的动态编码算法”的美国非临时专利申请的优先权,其全部内容在此通过引用如同复制一般并入本文。
技术领域
本专利文件一般涉及用于存储器访问的技术与系统。
背景技术
计算机系统可以包括诸如随机存取存储器(random access memory,RAM)的存储器,以执行程序并促进输入/输出(input/output,I/O)设备间的数据传输。程序可包括加载和存储指令,以从存储器中读取数据并将数据写入存储器。一些系统包含一个存储器控制器,以处理来自诸如中央处理单元(central processing unit,CPU)、直接存储器访问(direct memory access,DMA)、硬件加速器(hardware accelerator,HAC)和数字信号处理器(digital signal processor,DSP)中的一个或多个来源的存储器请求。一些系统包含一个或多个缓存以加速存储器访问。如果缓存中没有请求数据,则系统可以访问主存储器的数据。主存储器可以包含多个存储体。
发明内容
本文特别描述了涉及存储器区域动态编码的技术。在一个方面,所描述的技术包括监测对一组存储器区域的访问,每个区域包括一组数据库的两个或多个部分;基于对该组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域;生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组库中的数据值;以及将所述编码区域的编码值存储到编码库中。
在另一方面,一种用于存储器区域的动态编码系统可包括一组数据库,其包括第一数据库和第二数据库;编码库;以及与所述数据库和所述编码库耦合的存储器控制器。存储器控制器可被配置为监测对一组存储器区域的访问,每个区域代表数据库的不同部分,基于对所述的一组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域,生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在所述数据库中的数据值,以及将所述编码区域的编码值存储到编码库中。
在另一方面,一种用于存储器区域的动态编码的装置,可包括与编码库和一组数据库耦合的接口;以及与所述接口耦合的存储器控制器。所述存储器控制器可被配置为监测对一组存储器区域的访问,每个区域代表所述数据库的不同部分,基于对所述的一组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域,生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组数据库中的数据值,以及将所述编码区域的编码值存储到编码库中。所述接口可包括与一个或多个存储器总线进行通信的电路。所述存储器控制器可被配置为使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问的数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。
本文所描述的主题的一个或多个实施例的细节将在附图及下面的描述中阐述。本主题的其他特征、方面及优点将通过描述、附图和权利要求变得显而易见。
附图说明
图1示出了用于动态编码的计算机系统的示例体系结构。
图2示出了具有基于编码的备用存储器访问逻辑的存储器子系统的示例的架构。
图3示出了基于图2所述存储器子系统的基于编码的备用存储器的示例。
图4示出了动态编码生成过程的示例的流程图。
图5示出了动态编码生成过程的另一示例的流程图。
图6示出了与基于编码的备用访问相关的请求冲突解决及存储器访问过程的示例的流程图。
图7示出了计算机系统的另一示例的架构。
具体实施方式
诸如台式计算机、服务器、智能手机、平板电脑、手提电脑及其他设备的计算机系统可以被配置用于大量访问的存储器区域的机会编码以增加有效存储器带宽。可以将存储器(包括组成它的数据库)划分为不同区域,其中实时确定和编码频繁访问的区域,以实现基于编码的备用访问技术。程序(如在多个核上执行的程序)可以产生大量的本地存储器请求。这些请求可以引起存储器资源冲突,如存储体冲突。一旦检测到,可以对与大量的本地存储器请求对应的存储器区域进行编码,并将所得到的编码区域存储到一个或多个编码库中。与访问专用于一个或多个存储器请求的数据库不同,基于编码的备用访问技术可以将一些请求从数据库中转移出来,并通过访问一个或多个编码库且基于编码值和从其他存储器请求获得的值重建数据,以服务所述被转移的请求。
可以实施本文中所描述的技术的特定实施例,以便实现以下优点中的一个或多个优点。在一个或多个编码库中对诸如高速访问存储器的存储器区域的一部分的动态编码,可以用总物理存储器中最小的增量来实现,例如,编码库的大小可以明显小于数据库的大小。可以在同一个周期内通过编码库来解决存储体冲突,以增加存储器带宽。此外,可以通过编码库处理附加的请求,以增加存储器带宽。对高频访问区域的动态编码可以减少或消除对未用的编码数据的存储。
图1示出了用于动态编码的计算机系统101的示例架构。计算机系统101可以包括“存储器客户端”,如处理器105a-b、直接存储器访问(direct memory access,DMA)单元107以及数字信号处理器(digital signal processor,DSP)109。其他不同类型的存储器客户端是可能的。这样的存储器客户端与互连110耦合。互连110可以与共享存储器控制器115耦合。共享存储器控制器115可以包括指令扫描解析器130、仲裁器135以及组合调度器140。对于这样的存储器,客户端可以独立生成存储器请求,如读请求或写请求。在本示例中,计算机系统101可以被配置为并行处理多达P个存储器请求。
通过指令扫描解析器130集成存储器请求。经过扫描和解析,仲裁器135应用仲裁规则以减少或最小化访问数据库145a-n的冲突。仲裁规则可以基于对包括数据库145a-n的系统101的物理限制。例如,这样的规则可以指定存储体在每个时钟周期只能服务一个请求。仲裁器135可以提供低级服务,如队列管理和仲裁。在一些情况下,可以通过访问数据库145a-n中的一个来为存储器请求提供服务。在一些其他的情况下,可以通过访问两个或多个数据库145a-n来为存储器请求提供服务。对于读取,组合调度器140可以被配置为连接来自不同数据库145a-n的数据。对于写入,组合调度器140可以被配置为将数据分发到不同的数据库145a-n中。
在一些实施方式中,处理器105a可以通过调度器120调度高级存储器访问。在一些实施方式中,诸如处理器105a或调度器120的组件可以控制各种存储器子系统组件,如监管器125、动态编码控制器102、指令扫描解析器130、仲裁器135以及组合调度器140。在一些实施方式中,诸如不可解决的存储器冲突和存储器读写错误的事件可以通过监管器125报告给处理器105a。在一些实施方式中,监管器125可以为仲裁器135配置一个或多个仲裁规则。
计算机系统101可以被配置用于对大量访问的存储器区域的机会编码,以增加有效存储器带宽。可以将存储器划分为不同区域,其中频繁访问的“热区域”可以通过动态编码控制器102来实时确定并编码。动态编码控制器102可以在编码库150a-m中同时维护一个或多个编码区域。编码区域可以包括值对的线性组合,所述值对存储在对应于相同存储器区域的不同数据库145a-n中。可以将线性组合存储为编码值,如一组一个或多个的编码位。如果存储器区域具有存储在编码库150a-m中的编码区域,那么在多请求之间的存储体冲突可以通过将所述请求之一修改为使用备用数据库和所述编码区域来解决。在一些实施方式中,通过使用编码库150a-m中的一个或多个编码位,可以使从一个数据库获得的用于服务请求的数据用于服务对其他数据库的数据的请求。在一些实施方式中,组合调度器140可以包括编码重建逻辑,以从编码位中提取数据值。在一些实施方式中,编码区域可以包括存储在对应于相同存储器区域的不同数据库145a-n中的三个或多个值的线性组合。在一些实施方式中,编码区域可以包括存储在对应于相同存储器区域的不同数据库145a-n中的两个或多个值的非线性组合。
诸如处理器105a-b、DMA单元107和DSP 109的存储器客户端(可被作主控),可以通过互连110与共享存储器控制器115通信。互连110可以包括诸如一个或多个总线技术,诸如分组交换网络的一个或多个网络,或其组合。在一些实施方式中,互连110中的一个或多个总线的总线宽度可以与其他总线相同或不同。例如,互连110中一个或多个总线可以是128位宽,而其他总线可以是256位宽。此外,一个主控可以在互连110的128位宽的总线上进行通信,而另一个主控可以在互连110的256位宽的总线上进行通信。在一些实施方式中,共享存储器控制器115可以直接与一个或多个诸如处理器105a-b、DMA单元107或DSP109的主控相连。互连110可以使用一个或多个协议来传送数据。在一些实施方式中,一个或多个所述主控可以被配置有与共享存储器控制器115的点对点直接连接,以实现高性能。
计算机系统101中的一个或多个组件可以以共同的频率计时,可以独立计时,或是以两者组合的方式计时。在一些实施方式中,与互连110耦合的组件可以同步计时。存储器(例如,数据库145a-n和编码库150a-m)和共享存储器控制器115的时钟速度可以与和互连110耦合的主控的时钟速度成比例。在一些实施方式中,与互连110耦合的组件可以异步计时。这样的组件可以以不同的频率计时,并且如果异步计时,则可以具有不同的时钟相位。例如,在一些实施方式中,主控可以频率F计时,而存储器(例如,数据库145a-n和编码库150a-m)和共享存储器控制器115可以F/2的频率计时。应当理解,F可以是大于零的数字,包括整数和带有小数部分的数字。或者,在一些实施方式中,共享存储器可以F/2的频率计时,而共享存储器控制器115可以F/4的频率计时。可以调节特定实施方式的时钟速度以满足各种性能和功耗目标。在一些实施方式中,指令扫描解析器130从所有主控处获取读写命令,并根据这些命令的目标地址将命令放入仲裁器135中。
图2示出了具有基于编码的备用存储器访问逻辑214的存储器子系统201的示例架构。存储器子系统201可以控制对具有多个数据库245a-d的存储器240的访问。可以将存储器240划分为不同的区域,其中每个区域与地址范围相对应。在本示例中,诸如区域260的区域在数据库245a-d上是条状的,例如,区域260包括数据库A245a的一部分、数据库B245b的一部分、数据库C245c的一部分以及数据库D245d的一部分。应注意,数据库的一部分的大小小于整个数据库的大小。在一些实施方式中,所述部分对应于不同的地址子范围。例如,对应于连续范围内的存储器地址的值可以线性或交替存储格式分布在各个数据库245a-d中。在一些实施方式中,可以存在多个存储器区域,编码可以占用存储器区域的编码库。例如,可以存在四个不连续且大小不等的存储器区域,将编码存储在这些存储器区域的编码库中。编码的大小可以小于或等于编码库的大小。
存储器子系统201可以在每个存储器周期内支持多达P个对存储器240的存储器访问,例如,读取访问、写入访问或二者的组合。P可以是比零大的整数。在一些实施方式中,可以通过添加更多的存储体(如数据库245a-d、编码库250a-f或两者结合)来增加P。在一些情况下,达到存储器访问的最大值P可能需要无冲突的存储器访问,例如,不能有对同一数据库访问,或者提前确定是否可以在相同周期内满足其他存储器请求。在一些执行环境中,对存储器的访问可以在一段时间内高度本地化到离散的地址区域。如果对数据库的并发访问数量存在物理限制,则可能造成冲突。然而,在本示例中,可以通过基于编码的备用存储器访问技术来解决冲突的存储器访问,从而可以实现存储器访问的最大数量P。此外,存储器子系统201可以通过使用基于编码的备用存储器访问技术来确定在相同周期内是否可以满足其他存储器请求。
存储器子系统201包括编码库250a-f,编码库250a-f提供与数据库245a-d的高访问、热区域260的数据相关联的编码区域。所述编码区域的编码值可以是基于对数据库245a-d中相同行的数据值的线性组合。编码库250a-f中的所述编码区域实现所述基于编码的备用存储器访问技术。这里,第一编码库250a提供覆盖属于热区域260的数据库A245a和数据库B245b(如A+B)中的数据值的编码值,第二编码库250b提供覆盖属于热区域260的数据库B245b和数据库C245c(如B+C)中的数据值的编码值,以此类推。数据库245a-d和编码值间的其他映射是可能的。在一些实施方式中,一组编码位是两个不同的数据库245a-d中数据位的编码功能的输出,例如,异或(XOR)。
仲裁器210可以基于存储器地址对到数据库245a-d的流量进行仲裁。控制器230包括地址扫描逻辑212以检测冲突和/或根据基于编码的备用访问技术确定服务附加请求的可能性。基于编码的备用访问逻辑214可以通过编码库250a-f生成修改的请求以解决冲突或服务附加的请求。基于编码的备用访问逻辑214可以通过生成对备用数据库245a-d和编码库250a-f的请求,修改对目标数据库245a-b的冲突存储器请求。当冲突存储器请求中的一个请求未经修改到达所述目标数据库,则另一个经过修改的存储器请求进入备用数据库245a-d和编码库250a-f,从而允许同时处理请求。为了给修改后的请求返回数据,重建数据值。例如,控制器230包括编码重建逻辑235,以通过组合来自备用数据库245a-d和编码库250a-f的数据来为经过修改的存储器请求重建输出。
在本示例中,编码库250a-f只为热区域260存储编码值。因此,在本示例中,存储器子系统201不提供用于全部存储器区域的编码位。在一些实施方式中,存储器子系统201管理单个热区域260。例如,存储器子系统201可以动态地切换被认为是热区域260的区域。在一些实施方式中,存储器子系统201可以检测数据库245a-d的热区域260,并生成用于存储到编码库250a-f中的编码值。基于检测热区域260到不同区域的变化,存储器子系统201可以生成用于所述新区域的编码值,并用新值替换编码库250a-f中的旧值。在一些实施方式中,存储器子系统201管理两个或多个热区域260,并将两个或多个相应编码区域的编码值存储到编码库250a-f中。编码库250a-f的大小可以明显小于数据库250a-d的大小。在一些实施方式中,编码存储容量是数据存储容量的百分比,例如,10%、15%或20%;其他百分比是可能的。在一些实施方式中,编码库250a-f可以具有相同的大小。在一些实施方式中,编码库250a-f可以具有不相等的大小。
图3示出了基于图2的存储器子系统201的基于编码的备用存储器访问的示例。控制器230可以从一个或多个处理器接收多个存储器请求305、306、307。例如,如果两个存储器请求305、306准备好用于数据库A245a,则控制器230中的地址扫描逻辑212可以检测到这个冲突。为了不引起存储器冲突事件,控制器230中的基于编码的备用访问逻辑214可以根据编码配置,将用于数据库A245a的存储器请求306中一个转换为经过修改的存储器请求310。所述编码配置可以通过使用编码库250a-f中的至少一个编码库来指定访问数据的替换方式。在本示例中,所述编码配置可以指定数据库A245a中的数据可以通过访问数据库B245b和编码库A+B 250a中的数据来重建。在一些实施方式中,A+B中的+运算符指XOR。因此,所述经过修改的存储器请求310包括用于数据库B245b的存储器请求312a和用于编码库A+B 250a的存储器请求312b。
返回用于未经修改的存储器请求305的数据330。然而,可以通过响应于修改后的存储器请求310的数据来重建用于第二存储器请求306的返回数据331。通过从B数据(来自数据库245b)和A+B编码数据(来自编码库250a)重建A数据,控制器230中的编码重建逻辑235可以输出响应于所述修改后的存储器请求310的数据,以形成用于存储器请求306的返回数据331。
此外,可以并行地服务附加请求307与请求305、306。这里,附加请求307用于请求数据库C245c中的数据。控制器230中的基于编码的备用访问逻辑214可以基于编码配置将附加请求307转换为经过修改的附加请求314。所述编码配置可以通过使用编码库250a-f中至少一个编码库来指定备用的访问数据的方式。在本示例中,所述编码配置可以指定,数据库C245c中的数据可以通过编码库A+C 250d和请求305从数据库A245a中访问的数据来重建;这是基于305和307的访问都是针对存储体A中同一行。通过从A数据(来自数据库A245a)和A+C编码数据(来自编码库250d)重建C数据,编码重建逻辑235可以输出响应于所述修改后的附加请求的数据,以形成用于附加请求307的返回数据334。应注意,通过编码库而非数据库服务附加请求307允许控制器230在调度请求305、306、307时,能够在同一周期内调度另一个对于存储体C(未显示)的请求。
图4示出了动态编码生成过程的示例的流程图。在405处,所述过程可以监测对一组存储器区域的访问,并更新区域访问计数器。对存储器区域的访问可以增加计数器。所述过程可以维护存储器区域的元组,例如,[起始地址,长度],其中每个区域由起始地址和区域长度或结束地址来定义。对特定存储器区域的一次访问被认为是一次命中。每次命中可以增加对应存储器区域的访问计数器。在410处,所述过程可以确定存储器区域的访问计数器是否超过阈值。如果没有计数器超过阈值,所述过程将继续在405处监测。如果一个存储器区域的访问计数器超过阈值,所述存储器区域可被称作“热区域”。在一些实施方式中,所述阈值是可编程的。在一些实施方式中,所述阈值可以以分数来定义,如存储器区域大小的1/16。在一些实施方式中,所述阈值可以是对区域访问的预定数量,如对大小为2048位的区域的10次访问。在415处,所述过程可以确定所述热区域是否已存储了编码区域。如果已经存储,则所述过程继续在405处监测。如果没有存储,则在420处的所述过程可以基于存储在所述热区域的数据生成用于新编码区域的编码值。编码值可以包括一个或多个编码位。生成编码值可以包括计算存储在对应于相同热区域的不同数据库中的值对的线性组合。在一些实施方式中,存储器区域可以包括分布在两个或多个数据库上的至少一行,如两个或多个时序存储器元件的分组。在一些实施例中,存储器区域可以包括两行或多行。计算行的线性组合可以包括使用存储在对应于所述行的不同数据库中的值对来计算诸如XOR值的编码值。
在425处,所述过程可以确定所述编码库中的哪个编码区域被移除,如删除或重写。在本示例中,所述编码库可以存储对应于两个或多个热存储器区域的两个或多个编码区域的编码值。在一些实施方式中,所述过程可以使用最近最少使用(least recentlyused,LRU)策略或先进先出(first in first out,FIFO)策略来确定要移除的编码区域。在一些实施方式中,所述编码库一次存储一个存储区域的一个编码区域,因此在425处不需要确定。
在430处,所述过程可以将编码值存储在与所述移除的编码区域相对应的区域中。存储所述编码值可以包括在移除的编码区域中重写数据。此外,所述过程可以调整对所述存储器区域的访问计数器。在一些实施方式中,基于所述移除,重置所述访问计数器。在一些实施方式中,基于当前被选中的新编码区域,重置所述访问计数器。所述过程可以使用所述编码库来增加在单个周期内可用的对高访问存储器区域的并行存储器访问数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。
图5示出了动态编码生成过程的另一示例的流程图。计算机系统可以包括调度器,如芯片级调度器和存储器控制器(memory controller,MC)调度器。在505处,所述MC调度器接收来自芯片级调度器的消息。在510处,所述过程确定是否选择用于动态编码的存储器区域,以实现基于编码的备用访问。在一些实施方式中,确定是否选择用于动态编码的存储器区域可以包括确定一个存储器区域与其他存储器区域相比是否是高访问存储器区域。如果没有选择到区域,则所述过程继续在505处接收消息。
如果在515处选择了存储器区域,则将通知一个或多个调度器所选择的存储器区域。在520处,所述过程确定是否存在容纳新编码区域的空间。确定是否存在容纳新编码区域的空间可以包括检查与所述编码区域相关的数据结构,以确定是否存在未使用的编码区域。如果没有空间,则所述过程在525处基于诸如LRU或FIFO的策略删除一个编码区域。
如果有空间或在一个编码区域被删除后,所述过程在530处基于编码技术以及所述选择的存储器区域在后台生成新的编码区域。编码技术可以包括在存储于不同数据库中的诸如字节或字的不同存储器元素对之间生成诸如XOR值的编码值。其他类型的编码值是可能的。在535处,所述过程通知所述MC调度器所述编码区域已经生成。在540处,所述MC调度器开始调度访问,包括对基于编码的备用访问的访问。
通过基于编码的备用访问,所述MC调度器可以开始解决在所选存储器区域内的数据库的冲突。此外,所述MC调度器可以确定是否能够通过基于编码的备用访问满足其他存储器请求。例如,所述MC调度器可以接收对一组数据库的第一数据库的第一存储器请求,以及对一组数据库的第二数据库的第二存储器请求。基于由所述第一存储器请求产生的数据以及编码库中的编码值,所述MC调度器可以确定是否满足所述第二请求。如可满足,则所述MC调度器可以在单个周期内调度对第一数据库中数据的访问,以满足所述第一存储器请求,以及调度对所述编码库而非对所述第二数据库中的数据的访问以满足所述第二存储器请求。
图6示出了与基于编码的备用访问相关的请求冲突解决和存储器访问过程的示例的流程图。在605处,所述过程检测对目标存储体的存储器请求之间的存储体冲突,所述存储器请求包括第一请求和第二请求。检测冲突可以包括确定所述请求的存储体标识符,以及确定存储体标识符中的任意标识符是否相匹配。在610处,所述过程确定与所述冲突相关联的存储器区域是否在编码库中有对应的编码区域。在一些实施方式中,对照与存储在编码库中的一个或多个编码区域相关的一个或多个标识符的列表检查存储器区域标识符。如果不存在,则所述过程在615处调度不同周期的请求并按照标示进行。然而,如果存在编码区域,则通过将至少一个所述存储器请求转移到备用数据库和编码区域,所述过程可以使用基于编码的存储器访问技术来解决存储体冲突。例如,所述过程在620处基于所述第二请求和所述编码库的编码配置确定所述存储器区域中的备用数据库。在一些实施方式中,编码配置指定两个或多个编码分组,每个编码分组覆盖该组数据库中的至少两个存储体。在一些实施方式中,所述编码配置由查询表表示,对于给定的输入存储库体标识符,所述查询表输出备用数据库标识符和编码库标识符。
在625处,所述过程生成修改的第二请求,所述第二请求包括对备用数据库的访问以及对所述编码库的访问。在630处,所述过程在同一周期内调度所述第一请求和所述修改的第二请求。在635处,所述过程在同一周期内访问存储器和编码库以满足所述请求。访问所述存储器和编码库可以包括访问所述目标数据库以满足所述第一请求,以及访问所述备用数据库和所述编码库中的所述编码区域以满足所述修改的第二请求。在640处,所述过程返回数据以为所述第二请求提供数据,所述返回数据包括基于来自所述备用数据库和所述编码库的数据的重建数据。
图7示出了计算机系统701的另一个示例架构。计算机系统701可以包括多个处理器,如核710a-n、编码存储器控制器715、数据库720a-m和编码库730a-p。编码存储器控制器715可以包括核仲裁器740,以仲裁核710a-m之间的存储器访问;数据库队列745a-m,以使各个数据库720a-m存储请求;以及访问调度器750,以协调数据库720a-m和编码库730a-p之间的访问。核仲裁器740从核710a-n接收请求,并对其进行仲裁,确定对应的数据库720a-m,并将请求插入其对应的队列745a-m中。
访问调度器750可以在每个周期内调度对数据库720a-m的访问。访问调度器750可以检查数据库队列745a-m,包括每个存储体的读取和写入队列,并为给定周期形成最有效的访问模式,如最大化存储器带宽。访问调度器750可以对队列底部的请求进行优先级排序;应注意,请求从顶部插入、从底部删除。访问调度器750可以在队列745a-m中超前,以确定是否存在可以通过基于编码的备用访问技术被服务的请求,使得每个周期内访问的数量最大化。访问调度器750可以使用编码库730a-p来服务对其他存储体720a-m的读取。例如,访问调度器750可以将请求“a1”标记为从数据库A720a中读取。调度器750可以循环访问诸如存储体B、C、D的其他存储体720a-m的队列745a-m,以确定是否存在可以用从读取a1获得的数据,通过一个或多个编码组730a-p服务的读取请求。如果在存储体B中存在对“b1”的请求,并且存在包含a1+b1的线性组合的编码库,则访问调度器750可以用“a1+b1”编码库请求替换“b1”请求,并用“a1+b1”和“a1”的值重建b1。同样的,如果在存储体C中存在对“c1”的请求,并且存在包含a1+c1的线性组合的编码库,则访问调度器750可以用“a1+c1”编码库请求替换“c1”请求,并用“a1+c1”和“a1”的值重建c1。
存储区域动态编码的一种或多种技术可以包括监测对一组存储器区域的访问,每个区域包括一组数据库的两个或多个部分;基于对该组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域;生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组库中的数据值;以及将所述编码区域的编码值存储到编码库中。该组数据库可以包括第一数据库和第二数据库。所述高访问区域可以包括所述第一数据库的第一部分和所述第二数据库的第二部分。所述编码库可以小于所述第一数据库。生成所述编码值可以包括生成数据值对,每对数据值对包括来自所述第一部分的数据值和所述第二部分的数据值。在一些实施方式中,所述编码库包括两个或多个编码库。技术可以包括使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问的数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。技术可以包括从所述编码库中移除编码区域。将编码值存储到所述编码库中可以包括将编码值存储到所移除的编码区域。
技术可以包括接收对该组数据库的第一数据库的第一存储器请求;接收对该组数据库的第二数据库的第二存储器请求;基于由所述第一存储器请求产生的数据以及来自所述编码库中的编码值,确定是否满足所述第二请求;以及在单个周期内调度访问,所述访问包括(i)对来自所述第一数据库的数据的访问以满足所述第一存储器请求,以及(ii)对来自所述编码库而非所述第二数据库的数据的访问,以满足所述第二存储器请求。技术可以包括基于来自所述第一数据库的数据和来自所述编码库的数据重建数据;以及提供重建后的数据以响应所述第二存储器请求。
技术可以包括检测对该组数据库的第一数据库的存储器请求之间的存储体冲突,所述存储器请求包括第一存储器请求和第二存储器请求;基于所述第二存储器请求和所述编码库的编码配置,确定该组数据库的第二数据库;在一个周期内访问所述第一数据库以满足所述第一存储器请求;以及在所述周期内访问所述第二数据库和所述编码库而非访问所述第一数据库,以满足所述第二存储器请求。技术可以包括基于来自所述第二数据库和所述编码库的数据重建数据;以及提供所述重建数据以响应所述第二存储器请求。编码配置可以指定两个或多个编码分组,每个编码组覆盖该组数据库内至少两个存储体。技术可以包括检测对该组数据库中第一数据库的一组存储器请求之间的存储体冲突;确定所述编码库中是否存在编码区域对应于与所述存储体冲突相关的存储器区域;以及使用基于编码的备用存储器访问技术,以通过将至少一个存储器请求转移到备用数据库和所述编码区域来解决所述存储体冲突。
系统可以包括一组数据库、编码库以及与所述数据库和所述编码库耦合的存储器控制器,所述数据库包括第一数据库和第二数据库。所述存储器控制器可被配置为监测对一组存储器区域的访问,每个区域代表所述数据库的不同部分,基于对所述的一组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域,生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在所述数据库中的数据值,以及将所述编码区域的编码值存储到所述编码库中。所述高访问区域包括所述第一数据库的第一部分和所述第二数据库的第二部分。所述编码库可以小于所述第一数据库。所述存储器控制器可以被配置为生成数据值对,每对数据值包括来自所述第一部分的数据值和来自所述第二部分的数据值。存储器控制器可以包括诸如专用逻辑、处理器或两者兼有的电路。在一些实施方式中,所述编码库可以包括两个或多个编码库。
在一些实施方式中,所述存储器控制器被配置为使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问的数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。在一些实施方式中,所述存储器控制器被配置为移除所述编码库中的编码区域,以产生移除的编码区域,其中所述编码值被存储到所述移除的编码区域。
在一些实施方式中,所述存储器控制器被配置为接收对该组数据库的第一数据库的第一存储器请求,接收对该组数据库的第二数据库第二存储器请求,基于由所述第一存储器请求产生的数据以及所述编码库中的编码值,确定是否满足所述第二请求,在单个周期内调度访问,所述访问包括(i)对来自所述第一数据库的数据的访问以满足所述第一存储器请求,以及(ii)对来自所述编码库而非所述第二数据库的数据的访问,以满足所述第二存储器请求。在一些实施方式中,所述存储器控制器被配置为基于所述第一数据库的数据和所述编码库的数据重建数据,以及提供所述重建的数据以响应所述第二存储器请求。
在一些实施方式中,所述存储器控制器被配置为检测对该组数据库的第一数据库的存储器请求之间的存储体冲突,所述存储器请求包括第一存储器请求和第二存储器请求,基于所述第二存储器请求和所述编码库的编码配置,确定该组数据库的第二数据库,在一个周期内访问所述第一数据库以满足所述第一存储器请求,以及在所述周期内访问所述第二数据库和所述编码库而非访问所述第一数据库以满足所述第二存储器请求。所述存储器控制器可以被配置为基于所述第二数据库和所述编码库的数据重建数据,以重建数据;以及提供所述重建的数据以响应所述第二存储器请求。在一些实施方式中,所述存储器控制器被配置为检测对该组数据库中第一数据库的一组存储器请求之间的存储体冲突;确定所述编码库中是否存在编码区域对应于和所述存储体冲突相关的存储器区域;以及使用基于编码的备用存储器访问技术,以通过将至少一个存储器请求转移到备用数据库和编码区域来解决所述存储体冲突。
在一个实施例中,存储器访问系统包括监测装置,用于对一组存储器区域的访问进行监测,每个区域包括一组数据库的两个或多个部分;以及检测装置,用于基于对所述一组存储器区域的一个区域的访问是否超过阈值来检测高访问存储器区域。所述系统还包括编码值生成装置,用于生成与所述高访问区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组数据库的数据值;以及存储装置,用于将所述编码区域的编码值存储到编码库中。
在一个实施例中,所述存储器访问装置被配置为使该组数据库包括第一数据库和第二数据库,其中所述高访问区域包括所述第一数据库的第一部分和所述第二数据库的第二部分,其中所述编码库小于所述第一数据库,并且其中生成所述编码值包括生成数据值对,每对数据值对包括所述第一部分的数据值和所述第二部分的数据值。
装置可以包括与编码库以及一组数据库耦合的接口;以及与所述接口相耦合的存储器控制器。所述存储器控制器可以被配置为监测对一组存储器区域的访问,每个区域代表所述数据库的不同部分,基于对所述的一组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域,生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组数据库中的数据值,以及将所述编码区域的编码值存储到所述编码库中。所述接口可包括与一个或多个存储器总线进行通信的电路。所述存储器控制器可被配置为使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问的数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。第一存储器控制器可以被配置为,接收对该组数据库的第一数据库的第一存储器请求,接收对该组数据库的第二数据库的第二存储器请求,基于由所述第一存储器请求产生的数据以及所述编码库中的编码值,确定是否满足所述第二请求,在单个周期内调度访问,所述访问包括(i)对来自所述第一数据库的数据的访问以满足所述第一存储器请求,以及(ii)对来自所述编码库而非所述第二数据库的数据的访问,以满足所述第二存储器请求,基于所述第一数据库的数据和所述编码库的数据重建数据,以及提供所述重建的数据以响应所述第二存储器请求。
虽然本文包含许多具体实施方式的细节,但这不应被认为是对任何发明或可能请求保护的范围的限制,而是作为对特定发明的具体实施例的特有特征的描述。本文在各个单独的实施例的上下文中所描述的某些特征也可以组合形式在单个实施例中实现。反之,在单个实施例的上下文中所描述的各种特征也可以在多个实施例中分开实现或在任何适当的子组合中实现。此外,虽然上文将特征以特定的组合形式进行了描述,甚至在最初这样要求保护,但在某些情况下,所要求保护的组合的一个或多个特征可以从所述组合中删除,并且所要求保护的组合可以用于子组合或子组合的变形。
Claims (20)
1.一种方法,包括:
监测对一组存储器区域的访问,每个区域包括一组数据库的两个或多个部分;
基于对该组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域;
生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储器区域包括分布在该组数据库中的数据值;以及
将所述编码区域的编码值存储到编码库中。
2.根据权利要求1所述的方法,其中该组数据库包括第一数据库和第二数据库,其中所述高访问区域包括所述第一数据库的第一部分和所述第二数据库的第二部分,其中所述编码库小于所述第一数据库,并且其中生成所述编码值包括生成数据值对,每对数据值对包括来自所述第一部分的数据值和来自所述第二部分的数据值。
3.根据权利要求1至2中任一项所述的方法,包括:
使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。
4.根据权利要求1至3中任一项所述的方法,包括:
从所述编码库中移除编码区域,其中将所述编码值存储在所述编码库中包括将所述编码值存储在移除的编码区域。
5.根据权利要求1至4中任一项所述的方法,包括:
接收对该组数据库的第一数据库的第一存储器请求;
接收对该组数据库的第二数据库的第二存储器请求;
基于由所述第一存储器请求产生的数据以及来自所述编码库中的编码值,确定是否满足所述第二请求;以及
在单个周期内调度访问,所述访问包括:(i)对来自所述第一数据库的数据的访问,以满足所述第一存储器请求,以及(ii)对来自所述编码库而非所述第二数据库的数据的访问,以满足所述第二存储器请求。
6.根据权利要求1至5中任一项所述的方法,包括:
基于来自所述第一数据库的数据和来自所述编码库的数据重建数据;以及
提供所述重建的数据以响应所述第二存储器请求。
7.根据权利要求1至6中任一项所述的方法,包括:
检测对该组数据库中的第一数据库的存储器请求之间的存储体冲突,所述存储器请求包括第一存储器请求和第二存储器请求;
基于所述第二存储器请求和所述编码库的编码配置,确定该组数据库中的第二数据库;
在一个周期内访问所述第一数据库以满足所述第一存储器请求;
在所述周期内访问所述第二数据库和所述编码库而非访问所述第一数据库,以满足所述第二存储器请求;
基于来自所述第二数据库和所述编码库的数据重建数据;以及
提供所述重建的数据以响应所述第二存储器请求。
8.根据权利要求1至7中任一项所述的方法,其中所述编码配置指定两个或多个编码组,每个编码组覆盖该组数据库中的至少两个存储体。
9.根据权利要求1至8中任一项所述的方法,包括:
检测对该组数据库中的第一数据库的一组存储器请求之间的存储体冲突;
确定所述编码库中是否存在编码区域对应于与所述存储体冲突相关的存储器区域;以及
使用基于编码的备用存储器访问技术,以通过将至少一个所述存储器请求转移到备用数据库和所述编码区域来解决所述存储体冲突。
10.一种系统,包括:
一组数据库;
编码库;以及
存储器控制器,与该组数据库和所述编码库相耦合,其中所述存储器控制器被配置为(i)监测对一组存储器区域的访问,每个区域代表所述数据库的不同部分,(ii)基于对该组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域,(iii)生成与所述高访问存储器区域对应的编码区的编码值,所述高访问存储器区域包括分布在该组数据库中的数据值,以及(iv)将所述编码区域的编码值存储到所述编码库中。
11.根据权利要求10所述的系统,其中该组数据库包括第一数据库和第二数据库,其中所述高访问区域包括所述第一数据库的第一部分和所述第二数据库的第二部分,其中所述编码库小于所述第一数据库,并且其中所述存储器控制器被配置为生成数据值对,每对数据值对包括来自所述第一部分的数据值和来自所述第二部分的数据值。
12.根据权利要求10至11中任一项所述的系统,其中所述存储器控制器被配置为使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问的数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。
13.根据权利要求10至12中任一项所述的系统,其中所述存储器控制器被配置为从所述编码库中移除编码区域,以产生移除的编码区域,其中所述编码值被存储在所述移除的编码区域中。
14.根据权利要求10至13中任一项所述的系统,其中所述存储器控制器被配置为:
接收对该组数据库的第一数据库的第一存储器请求;
接收对该组数据库的第二数据库的第二存储器请求;
基于由所述第一存储器请求产生的数据以及来自所述编码库中的编码值,确定是否满足所述第二请求,以及
在单个周期内调度访问,所述访问包括(i)对来自所述第一数据库的数据的访问以满足所述第一存储器请求,以及(ii)对来自所述编码库而非所述第二数据库的数据的访问,以满足所述第二存储器请求。
15.根据权利要求10至14中任一项所述的系统,其中所述存储器控制器被配置为:
基于来自所述第一数据库的数据和来自所述编码库的数据重建数据,以产生重建的数据,以及
提供所述重建的数据以响应所述第二存储器请求。
16.根据权利要求10至15中任一项所述的系统,其中所述存储器控制器被配置为:
检测对该组数据库中的第一数据库的存储器请求之间的存储体冲突,所述存储器请求包括第一存储器请求和第二存储器请求,
基于所述第二存储器请求和所述编码库的编码配置,确定该组数据库中的第二数据库,
在一个周期内访问所述第一数据库以满足所述第一存储器请求,
在所述周期内访问所述第二数据库和所述编码库而非访问所述第一数据库以满足所述第二存储器请求,
基于来自所述第二数据库的数据和所述编码库的数据重建数据,以产生重建的数据,以及
提供所述重建的数据以响应所述第二存储器请求。
17.根据权利要求10至16中任一项所述的系统,其中所述存储器控制器被配置为:
检测对该组数据库中的第一数据库的一组存储器请求之间的存储体冲突;
确定所述编码库中是否存在编码区域对应于和所述存储体冲突相关的存储器区域;以及
使用基于编码的备用存储器访问技术,以通过将至少一个存储器请求转移到备用数据库和所述编码区域来解决所述存储体冲突。
18.根据权利要求10至17中任一项所述的系统,其中所述编码库包括两个或多个编码库。
19.一种装置,包括:
接口,与编码库和一组数据库耦合;以及
存储器控制器,与所述接口耦合,其中所述存储器控制器被配置为(i)监测对一组存储器区域的访问,每个区域代表所述数据库的不同部分,(ii)基于对该组存储器区域中的一个区域的访问是否超出阈值来检测高访问存储器区域,(iii)生成与所述高访问存储器区域对应的编码区域的编码值,所述高访问存储区域包括分布在该组数据库中的数据值,以及(iv)将所述编码区域的所述编码值存储到所述编码库,
其中所述存储器控制器被配置为使用所述编码库来增加在单个周期内可用的对所述高访问存储器区域的并行存储器访问数量,将所述访问的数量从第一数量的访问增加到第二更大数量的访问。
20.根据权利要求19所述的装置,其中所述存储器控制器被配置为:
接收对该组数据库的第一数据库的第一存储器请求,
接收对该组数据库的第二数据库的第二存储器请求,
基于由所述第一存储器请求产生的数据以及来自所述编码库中的编码值,确定是否可以满足所述第二请求,
在单个周期内调度访问,所述访问包括(i)对来自所述第一数据库的数据的访问以满足所述第一存储器请求,以及(ii)对来自所述编码库而非所述第二数据库的数据的访问,以满足所述第二存储器请求,
基于来自所述第一数据库的数据和来自所述编码库的数据重建数据,以产生重建的数据,以及
提供所述重建的数据以响应所述第二存储器请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/811,357 | 2015-07-28 | ||
US14/811,357 US9921754B2 (en) | 2015-07-28 | 2015-07-28 | Dynamic coding algorithm for intelligent coded memory system |
PCT/CN2016/092028 WO2017016502A1 (en) | 2015-07-28 | 2016-07-28 | Dynamic coding algorithm for intelligent coded memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851063A true CN107851063A (zh) | 2018-03-27 |
CN107851063B CN107851063B (zh) | 2020-12-25 |
Family
ID=57882611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680041920.5A Active CN107851063B (zh) | 2015-07-28 | 2016-07-28 | 智能编码存储器系统的动态编码算法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9921754B2 (zh) |
EP (1) | EP3314442B1 (zh) |
JP (1) | JP6754827B2 (zh) |
CN (1) | CN107851063B (zh) |
WO (1) | WO2017016502A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825312A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 数据处理装置、人工智能芯片及电子设备 |
WO2023273873A1 (zh) * | 2021-06-30 | 2023-01-05 | 中兴通讯股份有限公司 | 访问存储器中数据的方法、电子设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10180803B2 (en) * | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
CN110858124B (zh) * | 2018-08-24 | 2021-06-01 | 华为技术有限公司 | 数据迁移方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553346A (zh) * | 2003-07-02 | 2004-12-08 | 普安科技股份有限公司 | 冗余外部储存虚拟化计算机系统 |
CN1760804A (zh) * | 2004-07-05 | 2006-04-19 | 索尼株式会社 | 信息处理设备,信息处理方法,及计算机程序 |
US20110022791A1 (en) * | 2009-03-17 | 2011-01-27 | Sundar Iyer | High speed memory systems and methods for designing hierarchical memory systems |
CN102737132A (zh) * | 2012-06-25 | 2012-10-17 | 天津神舟通用数据技术有限公司 | 基于数据库行列混合存储的多规则复合压缩方法 |
US20120297118A1 (en) * | 2011-05-17 | 2012-11-22 | Sergey Anatolievich Gorobets | Fast translation indicator to reduce secondary address table checks in a memory device |
US20140173180A1 (en) * | 2012-12-14 | 2014-06-19 | Sandisk Technologies Inc. | Tracking read accesses to regions of non-volatile memory |
US20140223223A1 (en) * | 2011-10-19 | 2014-08-07 | Hitachi, Ltd. | Storage system |
US20140245108A1 (en) * | 2013-02-27 | 2014-08-28 | Seagate Technology Llc | ECC Management for Variable Resistance Memory Cells |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2273181A (en) | 1992-12-02 | 1994-06-08 | Ibm | Cache/non-cache access control. |
US6341342B1 (en) | 1997-11-04 | 2002-01-22 | Compaq Information Technologies Group, L.P. | Method and apparatus for zeroing a transfer buffer memory as a background task |
US6385708B1 (en) | 1998-11-16 | 2002-05-07 | Infineon Technologies Ag | Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses |
US6757784B2 (en) * | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
US7480829B2 (en) | 2005-11-15 | 2009-01-20 | International Business Machines Corporation | Method, system and computer program product for recovery of formatting in repair of bad sectors in flash memory |
US7475278B2 (en) | 2005-11-15 | 2009-01-06 | International Business Machines Corporation | Method, system and computer program product for recovery of formatting in repair of bad sectors in disk drives |
CN100530070C (zh) | 2006-11-24 | 2009-08-19 | 骆建军 | 基于flash的硬盘 |
CN101578614A (zh) | 2007-01-30 | 2009-11-11 | 松下电器产业株式会社 | 非易失性存储装置、非易失性存储系统及存取装置 |
WO2008093606A1 (ja) | 2007-01-30 | 2008-08-07 | Panasonic Corporation | 不揮発性記憶装置、不揮発性記憶システム、及びアクセス装置 |
JP4925301B2 (ja) * | 2007-02-07 | 2012-04-25 | 株式会社メガチップス | 半導体メモリシステム |
US20090100236A1 (en) | 2007-10-15 | 2009-04-16 | Ricardo Spencer Puig | Copying data onto a secondary storage device |
JP5194703B2 (ja) * | 2007-10-16 | 2013-05-08 | ソニー株式会社 | データ処理装置及び共有メモリのアクセス方法 |
CN100499556C (zh) | 2007-10-17 | 2009-06-10 | 中国人民解放军国防科学技术大学 | 异构多核处理器高速异步互连通信网络 |
US8245232B2 (en) | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
CN101196857B (zh) | 2008-01-04 | 2010-11-10 | 太原理工大学 | 双端口访问对称动态存储器的接口 |
JP4985512B2 (ja) * | 2008-03-26 | 2012-07-25 | エヌイーシーコンピュータテクノ株式会社 | 分散共有メモリ型マルチプロセッサシステム及びマルチプロセッサシステムにおける負荷分散方法 |
US8074021B1 (en) | 2008-03-27 | 2011-12-06 | Netapp, Inc. | Network storage system including non-volatile solid-state memory controlled by external data layout engine |
US7945752B1 (en) | 2008-03-27 | 2011-05-17 | Netapp, Inc. | Method and apparatus for achieving consistent read latency from an array of solid-state storage devices |
US8266408B2 (en) * | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
KR101370314B1 (ko) | 2009-06-26 | 2014-03-05 | 인텔 코포레이션 | 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화 |
US8838853B2 (en) | 2010-01-18 | 2014-09-16 | Marvell International Ltd. | Access buffer |
US8615629B2 (en) | 2010-01-18 | 2013-12-24 | Marvell International Ltd. | Access scheduler |
US8560796B2 (en) | 2010-03-29 | 2013-10-15 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
US8514651B2 (en) | 2010-11-22 | 2013-08-20 | Marvell World Trade Ltd. | Sharing access to a memory among clients |
EP2717186A4 (en) | 2011-05-25 | 2015-05-13 | Panasonic Ip Man Co Ltd | INFORMATION PROCESSING DEVICE AND INFORMATION PROCESSING METHOD |
WO2012172683A1 (ja) | 2011-06-17 | 2012-12-20 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理装置の制御方法 |
US8982598B2 (en) * | 2012-04-18 | 2015-03-17 | Rambus Inc. | Stacked memory device with redundant resources to correct defects |
US8874979B2 (en) * | 2012-06-14 | 2014-10-28 | International Business Machines Corporation | Three dimensional(3D) memory device sparing |
US9158683B2 (en) | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US8909860B2 (en) * | 2012-08-23 | 2014-12-09 | Cisco Technology, Inc. | Executing parallel operations to increase data access performance |
US9118352B2 (en) | 2012-12-26 | 2015-08-25 | Allen LeRoy Limberg | Remedying low densities of ONEs in transmission and reception of digital television signals |
CN103077123A (zh) | 2013-01-15 | 2013-05-01 | 华为技术有限公司 | 一种数据写入和读取方法及装置 |
US20160313923A1 (en) | 2015-04-22 | 2016-10-27 | Mediatek Inc. | Method for accessing multi-port memory module and associated memory controller |
US10089018B2 (en) | 2015-05-07 | 2018-10-02 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with multiple read ports and multiple write ports per cycle |
US9760432B2 (en) | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10180803B2 (en) | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US9870163B2 (en) | 2016-04-27 | 2018-01-16 | Globalfoundries Inc. | Double bandwidth algorithmic memory array |
-
2015
- 2015-07-28 US US14/811,357 patent/US9921754B2/en active Active
-
2016
- 2016-07-28 WO PCT/CN2016/092028 patent/WO2017016502A1/en unknown
- 2016-07-28 CN CN201680041920.5A patent/CN107851063B/zh active Active
- 2016-07-28 JP JP2018504085A patent/JP6754827B2/ja active Active
- 2016-07-28 EP EP16829867.7A patent/EP3314442B1/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553346A (zh) * | 2003-07-02 | 2004-12-08 | 普安科技股份有限公司 | 冗余外部储存虚拟化计算机系统 |
CN1760804A (zh) * | 2004-07-05 | 2006-04-19 | 索尼株式会社 | 信息处理设备,信息处理方法,及计算机程序 |
US20110022791A1 (en) * | 2009-03-17 | 2011-01-27 | Sundar Iyer | High speed memory systems and methods for designing hierarchical memory systems |
US20120297118A1 (en) * | 2011-05-17 | 2012-11-22 | Sergey Anatolievich Gorobets | Fast translation indicator to reduce secondary address table checks in a memory device |
US20140223223A1 (en) * | 2011-10-19 | 2014-08-07 | Hitachi, Ltd. | Storage system |
JP2014521130A (ja) * | 2011-10-19 | 2014-08-25 | 株式会社日立製作所 | ストレージシステム |
CN102737132A (zh) * | 2012-06-25 | 2012-10-17 | 天津神舟通用数据技术有限公司 | 基于数据库行列混合存储的多规则复合压缩方法 |
US20140173180A1 (en) * | 2012-12-14 | 2014-06-19 | Sandisk Technologies Inc. | Tracking read accesses to regions of non-volatile memory |
US20140245108A1 (en) * | 2013-02-27 | 2014-08-28 | Seagate Technology Llc | ECC Management for Variable Resistance Memory Cells |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825312A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 数据处理装置、人工智能芯片及电子设备 |
CN110825312B (zh) * | 2018-08-10 | 2023-06-23 | 昆仑芯(北京)科技有限公司 | 数据处理装置、人工智能芯片及电子设备 |
WO2023273873A1 (zh) * | 2021-06-30 | 2023-01-05 | 中兴通讯股份有限公司 | 访问存储器中数据的方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107851063B (zh) | 2020-12-25 |
US9921754B2 (en) | 2018-03-20 |
EP3314442A4 (en) | 2018-07-04 |
EP3314442B1 (en) | 2022-04-06 |
EP3314442A1 (en) | 2018-05-02 |
JP6754827B2 (ja) | 2020-09-16 |
WO2017016502A1 (en) | 2017-02-02 |
US20170031606A1 (en) | 2017-02-02 |
JP2018525736A (ja) | 2018-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107851063A (zh) | 智能编码存储器系统的动态编码算法 | |
US10127233B2 (en) | Data processing method and device in distributed file storage system | |
US10152501B2 (en) | Rollover strategies in a n-bit dictionary compressed column store | |
CN104375824B (zh) | 数据处理方法 | |
US20180285167A1 (en) | Database management system providing local balancing within individual cluster node | |
US20110040771A1 (en) | Distributed hardware-based data querying | |
CN104346317B (zh) | 共享资源访问方法和装置 | |
CN108027713A (zh) | 用于固态驱动器控制器的重复数据删除 | |
CN110851383A (zh) | 一种管理存储系统的方法及设备 | |
Dai et al. | Improving load balance for data-intensive computing on cloud platforms | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
CN111708894B (zh) | 一种知识图谱创建方法 | |
CN106598724A (zh) | 用于在计算系统中管理内存的方法 | |
CN110309229A (zh) | 分布式系统的数据处理方法和分布式系统 | |
CN105554069A (zh) | 一种大数据处理分布式缓存系统及其方法 | |
CN107391541A (zh) | 一种实时数据合并方法和装置 | |
JP5043166B2 (ja) | 計算機システム、データ検索方法及びデータベース管理計算機 | |
CN109522299A (zh) | 数据处理方法、装置、系统及存储介质 | |
CN113656411B (zh) | 用于图数据入库的方法及其装置 | |
Hyvönen et al. | Efficient data structures for sparse network representation | |
CN117632470A (zh) | 业务处理方法、装置、设备、存储介质和程序产品 | |
JP5720989B2 (ja) | データ処理装置 | |
CN116127259A (zh) | 张量处理方法、装置、设备及计算机可读存储介质 | |
CN118069024A (zh) | 数据存储方法、装置和存储介质及电子设备 | |
CN114722042A (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 |