CN106487704B - 包括接口电路、存储器模块以及切换电路的服务器设备 - Google Patents
包括接口电路、存储器模块以及切换电路的服务器设备 Download PDFInfo
- Publication number
- CN106487704B CN106487704B CN201610797865.4A CN201610797865A CN106487704B CN 106487704 B CN106487704 B CN 106487704B CN 201610797865 A CN201610797865 A CN 201610797865A CN 106487704 B CN106487704 B CN 106487704B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- server device
- memory module
- circuit
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1076—Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
服务器设备包括:多个接口电路,被配置为与网络连接并且在网络分组与数据块之间执行格式转换,该网络分组是与网络通信的分组,该数据块遵从内部格式;多个存储器模块,彼此独立地进行操作;以及切换电路,连接在多个接口电路与多个存储器模块之间,该切换电路被配置为基于从多个接口电路所传送的第一数据块的属性来从多个存储器模块当中选择至少一个存储器模块,并且将第一数据块发送到所选择的存储器模块,其中,所选择的至少一个存储器模块被配置为对第一数据块进行解码并且基于解码结果执行与第一数据块相关联的读取操作或写入操作。
Description
对相关申请的交叉引用
本申请要求2015年9月2日向韩国知识产权局提交的第10-2015-0124259号韩国专利申请的优先权,该韩国申请的全部内容通过引用并入于此。
技术领域
本发明构思的至少一些示例实施例涉及一种半导体设备,并且更具体地,涉及接口电路、存储器模块以及包括连接接口电路和存储器模块的切换(switch)电路的服务器设备。
背景技术
数据中心包括应用服务器、数据库服务器以及缓存服务器。应用服务器处理客户端的请求,并且可以响应于客户端的请求来访问数据库服务器或缓存服务器。数据库服务器存储由应用服务器所处理的数据,并且响应于应用服务器的请求来将所存储的数据提供给应用服务器。缓存服务器临时地存储在数据库服务器中所存储的数据,并且以高于数据库服务器的速度来对应用服务器的请求进行响应。
缓存服务器或数据库服务器的响应速度可以是影响数据中心的操作速度的因子。因此,具有更加提高的操作速度的缓存服务器或数据库服务器正在被研究和开发以提高数据中心的速度。
发明内容
本发明构思的至少一些示例实施例提供了一种具有提高的操作速度的服务器设备。
根据本发明构思的至少一些示例实施例,服务器设备包括:多个接口电路,被配置为与网络连接并且执行格式转换以将多个网络分组(packet)当中的网络分组转换为数据块(data chunk),该网络分组是与网络通信的分组,该数据块遵从内部格式;多个存储器模块,彼此独立地进行操作;以及切换电路,连接在多个接口电路与多个存储器模块之间,该切换电路被配置为基于从多个接口电路所传送的数据块的属性来从多个存储器模块当中选择至少一个存储器模块,并且将数据块发送到所选择的存储器模块,其中,所选择的至少一个存储器模块被配置为对数据块进行解码并且基于解码结果执行与数据块相关联的读取操作或写入操作。
切换电路可以被配置为当数据块包括键(key)和值,数据块的键包括特定的信息以及与键和值相关联的命令是写入命令时,从多个存储器模块当中选择两个或更多个存储器模块。
切换电路可以被配置为当数据块包括键,数据块的键包括特定的信息以及与键相关联的命令是读取命令时,选择两个或更多个存储器模块中的一个。
切换电路可以被配置为当特定的存储器模块被选择时,重新选择除了该特定的存储器模块之外的另一存储器模块,该特定的存储器模块是多个存储器模块当中的存储器模块,该特定的存储器模块被注册在切换表格处。
切换电路可以被配置为当数据块包括键并且数据块的键包括特定的信息时,从多个存储器模块当中选择特定的存储器模块,该特定的存储器模块通过切换表格来指定。
切换电路可以包括:存储电路,被配置为存储包括与数据块的属性相对应的切换策略的切换表格;以及数据平面电路,被配置为基于在存储电路中所存储的切换表格来选择至少一个存储器模块,该至少一个存储器模块与数据块的属性相对应。
服务器设备可以进一步包括:控制平面电路,被配置为当在数据平面电路处发生异常时响应于来自数据平面电路的调用(call),对异常进行处理。
控制平面可以被配置为当切换策略不具有用于数据块的信息时,生成用于数据块的新策略并且将新策略并入切换策略。
服务器设备可以被配置为使得由控制平面电路所驱动的控制平面通过多个接口电路或带外(out-of-band,OOB)接口中的至少一个来更新。
服务器设备可以被配置为使得切换表格通过多个接口电路或带外(OOB)接口中的至少一个来更新。
服务器设备可以进一步包括:管理电路,被配置为通过监视多个存储器模块当中的模块的负载并且基于监视结果更新切换表格,来执行关于多个存储器模块的负载均衡。
管理电路可以被配置为当服务器设备的负载大于或等于阈值时,将数据块通过多个接口电路转发到外部设备。
管理电路可以被配置为当服务器设备的负载大于或等于阈值时,将数据块通过带外接口(OOB)转发到外部设备。
多个接口电路当中的每个接口电路可以包括:传输控制协议/互联网协议(TCP/IP)减负电路,被配置为在从网络所接收的网络分组当中提取来自TCP/IP分组的有效载荷。
数据块可以包括至少一个分组,该至少一个分组可以包括报头和有效载荷,并且切换电路可以被配置为基于该至少一个分组的有效载荷来选择至少一个存储器模块。
多个存储器模块中的存储器模块可以是第一存储器模块,并且多个存储器模块当中的每个第一存储器模块可以包括多个第二存储器模块以及被配置为控制多个第二存储器模块的存储器控制器,并且存储器控制器可以包括:存储电路,被配置为存储包括与数据块的第一属性相对应的存储器分配策略的第一处理表格;以及数据平面电路,被配置为基于在存储电路中所存储的第一处理表格和数据块的第一属性来分配在其中要写入数据块的存储空间并且在所分配的存储空间处写入数据块。
服务器设备可以被配置为使得第一处理表格通过多个接口电路或带外(OOB)接口中的至少一个来更新。
存储电路可以被配置为进一步存储包括无用单元收集(garbage collection)的运行策略的第二处理表格和包括数据块的处理策略的第三处理表格;并且数据平面电路可以被配置为:基于第二处理表格来执行无用单元收集,其中,聚集存储有多个存储器模块的有效数据的存储空间;以及基于第三处理表格来执行图像数据的压缩、解压、加密、解密或缩小尺寸中的至少一个。
根据本发明构思的至少一些示例实施例,服务器设备包括:多个接口电路,被配置为与网络连接并且在从网络所接收的网络分组中检测键;多个存储器模块,彼此独立地进行操作;以及切换电路,连接在多个接口电路与多个存储器模块之间并且被配置为,基于从多个接口电路所传送的键来从多个存储器模块当中选择至少一个存储器模块并且将键发送到所选择的至少一个存储器模块,该所选择的至少一个存储器模块被配置为对键进行解码并且基于解码结果来执行与键相关联的读取操作或写入操作。
根据本发明构思的至少一些示例实施例,设备包括:多个接口电路,被配置为从网络接收网络分组,该网络分组是为第一数据格式的数据分组,并且将网络分组转换为内部分组,该内部分组是为第二数据格式的数据分组;以及切换电路,连接到多个接口电路,该切换电路被配置为接收内部分组中的一个,获得指示所接收的内部分组的至少一个属性的属性信息,基于至少一个属性来从多个存储器模块当中选择至少一个存储器模块,以及将所接收的内部分组发送到所选择的存储器模块。
附图说明
通过参考附图详细地描述本发明构思的示例实施例,本发明构思的示例实施例的上述和其他特征以及优点将变得更加明显。附图意欲描绘本发明构思的示例实施例并且不应当被解释为限制权利要求的预期的范围。附图不被认为是按照比例绘制的,除非明确地指出。
图1是示出了根据本发明构思的至少一个示例实施例的计算机网络的图;
图2是示出了根据本发明构思的至少一个示例实施例的对象缓存服务器设备的框图;
图3是示出了根据本发明构思的至少一个示例实施例的对象缓存服务器设备的操作方法的流程图;
图4是示出了切换表格的示例的图;
图5是示出了数据平面电路的框图;
图6是示出了在图2中所示的对象缓存服务器设备的应用的框图;
图7是示出了根据本发明构思的至少一个示例实施例的对象缓存服务器设备的操作方法的流程图。
图8是示出了图6中所示的对象缓存服务器设备的操作的框图;
图9是示出了其中对象缓存服务器设备通过带外接口互联的示例的图;
图10是示出了图9中所示的对象缓存服务器设备的负载的示例的表格;
图11是示出了其中图9的对象缓存服务器设备转发数据块的示例的图;
图12是示出了当数据块被转发时所创建的替换表格的示例的图;
图13是示出了其中图9的对象缓存服务器设备转发数据块的示例的图;
图14是示出了其中图9的对象缓存服务器设备执行负载报告的示例的图;
图15是示出了根据本发明构思的至少一个示例实施例的第一存储器模块MODk的框图;
图16是示出了根据本发明构思的至少一个示例实施例的数据平面电路的框图;
图17是示出了根据本发明构思的至少一个示例实施例的数据平面电路的操作方法的流程图;
图18是示出了根据本发明构思的至少一个示例实施例的第二存储器***的框图;
图19是示出了其中存储器分配器组织第一行列至第四行列的方法的流程图;
图20是示出了其中存储器分配器基于第一大块(slab)分类至第四大块分类来组织第一行列至第四行列的示例的图;
图21是示出了其中存储器分配器分配大块以写入数据的方法的流程图;
图22是示出了根据本发明构思的至少一个示例实施例的存储器分配器的框图;
图23是示出了无效寄存器存储被无效的地址的示例的表格;
图24是示出了在前的索引寄存器存储在前的地址的示例的表格;
图25是示出了地址表格的示例的表格;
图26是示出了其中存储器分配器基于被无效的地址、在前的地址以及地址表格来分配大块的方法的流程图;
图27是示出了存储器分配器的另一示例的图;
图28是示出了日志结构(log-structured)方式的存储器分配器中的多报头示例的图;
图29是示出了其中当使用日志结构方式的存储器分配器时在存储器中存储值和与值相关联的元数据的示例的图;
图30是示出了图16中所示的数据平面电路的应用的框图;
图31是示出了图27中所示的数据平面电路的应用的框图;
图32是示出了图31中所示的数据平面电路的应用的框图。
具体实施方式
在本文中公开了本发明构思的详细示例实施例。然而,在本文中所公开的具体的结构和功能细节仅是代表性的,以用于描述本发明构思的示例实施例的目的。然而,本发明构思的示例实施例可以被例示为许多替选形式并且不应当被解释为仅限于在本文中所陈述的实施例。
相应地,当本发明构思的示例实施例能够具有各种修改和替选形式时,在附图中以示例的方式示出其实施例并且将在本文中详细地进行描述。然而,应当理解,不意欲将本发明构思的示例实施例限制为所公开的具体形式,而是相反,本发明构思的示例实施例将覆盖落入本发明构思的示例实施例的范围内的所有修改、等同物以及替选。贯穿附图的描述,相同的附图标记指代相同的元件。
将理解到,尽管术语第一、第二等可以在本文中被用来描述各种元件,但是这些元件不应当受这些术语限制。这些术语仅被用来将一个元件与另一元件相区分。例如,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件,而不背离本发明构思的示例的范围。当在本文中使用时,术语“和/或”包括相关联列举项中的一个或多个的任何和所有组合。
将理解到,当元件被称为“连接”或“耦合”到另一元件时,其可以直接地连接或耦合到该另一元件或可以存在介于中间的元件。相反,当元件被称为“直接地连接”或“直接地耦合”到另一元件时,不存在介于中间的元件。应当以相同的方式来解释被用于描述元件之间的关系的其他词语(例如,“在……之间”相对于“直接地在……之间”,“邻近”相对于“直接地邻近”等)。
在本文中所使用的术语仅是出于描述具体的实施例的目的,并且不意欲对本发明构思的示例实施例进行限制。当在本文中使用时,单数形式“一”、“一个”以及“该”也意欲包括复数形式,除非上下文清楚地指示并非如此。将进一步理解到,当在本文中使用时,术语“包括”、“包括有”、“包含”和/或“包含有”指明所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
还应当注意到,在一些替选实施方式中,所指出的功能/动作可能不按照在附图中所指出的顺序来发生。例如,依赖于所涉及的功能/动作,被接连地示出的两个附图可以实际上基本上并行地被运行,或有时可以按照相反的顺序被执行。
在本文中参考本发明构思的理想化实施例(和中间结构)的示意图示来描述本发明构思的示例实施例。因此,将预期到例如作为制造技术和/或容差的结果与图示的形状的偏离。因此,本发明构思的示例实施例不应当被解释为限于本文中所示的区域的具体形状,而是将包括例如由制造引起的形状的偏离。
尽管可能未示出一些(一个或多个)横截面视图的相对应的平面图和/或透视图,但是在本文中所示的设备结构的(一个或多个)横截面视图提供了对于下述多个设备结果的支持:如将在平面视图中所示地沿着两个不同的方向延伸和/或如将在透视图中所示的沿着三个不同的方向延伸。两个不同的方向可以或可以不彼此正交。三个不同的方向可以包括可以与两个不同方向正交的第三方向。多个设备结构可以被整合到同一电子设备中。例如,在横截面视图中示出设备结构(例如,存储器单元结构或晶体管结构)时,电子设备可以包括多个设备结构(例如,存储器单元结构或晶体管结构,如将通过电子设备的平面视图所示地。多个电子设备可以被布置为阵列和/或二维图案。
图1是示出了根据本发明构思的至少一个示例实施例的计算机网络的图。参考图1,计算机网络可以包括客户端群组CG、第一网络NET1、应用服务器群组ASG、第二网络NET2、对象缓存服务器群组OCSG以及数据库服务器群组DSG。
客户端群组CG可以包括多个客户端设备C。客户端设备C可以通过第一网络NET1与应用服务器群组ASG通信。客户端C可以包括各种设备,包括例如智能电话、智能平板、笔记本式计算机、个人计算机、智能相机和智能电视。第一网络NET1可以是例如互联网或可以例如包括互联网。
应用服务器群组ASG可以包括多个应用服务器设备AS。应用服务器设备AS可以通过第一网络NET1从客户端设备C接收各种请求。应用服务器ASG可以通过第二网络NET2将客户端设备C请求应用服务器设备AS存储的数据存储在数据库服务器群组DSG中。应用服务器设备AS可以将在数据库服务器群组DSG中所存储的数据存储在对象缓存服务器群组OCSG中。应用服务器设备AS可以通过第二网络NET2从对象缓存服务器群组OCSG获得客户端设备C请求应用服务器群组AS所读取的数据。当所请求的数据不存在于对象缓存服务器群组OCSG中时,应用服务器设备AS可以通过第二网络NET2从数据库服务器群组DSG获得客户端设备C请求应用服务器设备AS所读取的数据。
数据库服务器群组DSG可以包括多个数据库服务器设备DS。数据库服务器设备DS中的每个可以提供非易失性大量存储。
对象缓存服务器群组OCSG可以包括多个对象缓存服务器设备OCS。对象缓存服务器设备OCS可以分别地在应用服务器设备AS与数据库服务器设备DS之间执行缓存功能。对象缓存服务器设备OCS可以临时地存储通过第二网络NET2在数据库服务器设备DS中所存储的数据或从数据库服务器设备DS所读取的数据。对象缓存服务器设备OCS中的每个可以提供高速存储。例如,对象缓存服务器设备OCS中的每个可以被提供基于DRAM的存储。
第二网络NET2可以包括例如局域网(LAN)或内联网。
图2是示出了根据本发明构思的至少一个示例实施例的对象缓存服务器设备OCS的框图。参考图2,对象缓存服务器设备OCS可以包括多个接口电路IC1至ICm,切换电路SWC以及多个存储器模块MOD1至MODn。
接口电路IC1至ICm可以基于第一数据格式与第二网络NET2通信,并且可以基于第二数据格式与切换电路SWC通信。接口电路IC1至ICm中的每个可以包括减负电路OC,用于第一数据格式与第二数据格式之间的转换。例如,通过第二网络NET2所传达的第一数据格式可以是传输控制协议/互联网协议(TCP/IP)格式。通过切换电路SWC所传达的第二数据格式可以是PCIe格式或由对象缓存服务器设备OCS的供应商所定义的供应商格式。出于描述的方便,第二数据格式被假定为PCIe格式。然而,本发明构思的至少一些示例实施例可以不限于此。
以下,作为示例将描述接口电路IC1至ICm的减负电路OC中的一个。减负电路OC可以从TCP/IP格式的分组中移除报头,以检测有效载荷。减负电路OC可以添加遵循或替选地基于PCIe格式的报头,以将数据块DC输出为PCIe格式的分组。
根据本发明构思的至少一些实例实施例,TCP/IP的分组的有效载荷(在下文中被称为“TCP/IP有效载荷”)和数据块DC的有效载荷可以共享相同的信息。例如,TCP/IP有效载荷和数据块DC的有效载荷中的每个可以包括键、值以及设置命令SET。TCP/IP有效载荷和数据块DC的有效载荷中的每个可以包括键和得到命令GET。即,TCP/IP有效载荷和数据块DC的有效载荷中的每个可以包括基于键-值存储的数据结构的访问请求(写入请求或读取请求)。
例如,减负电路OC可以添加与TCP/IP格式相关联的信息作为数据块DC的有效载荷。例如,减负电路OC可以添加TCP/IP格式的信息当中与源互联网协议(IP)地址、源端口、目标IP地址等相对应的信息作为数据块DC的有效载荷。
接口电路IC1至ICm可以被标识为连接到第二网络NET2的不同的网络节点。例如,接口电路IC1至ICm可以被标识为第二网络NET上的不同的IP地址或不同的端口。
切换电路SWC可以通过第一接口INF1与多个接口电路IC1至ICm连接,并且可以通过第二接口INF2与多个第一存储器模块MOD1至MODn通信。第一接口INF1和第二接口INF2中的每个可以是例如PCIe接口或供应商接口。
切换电路SWC可以在多个接口电路IC1至ICm与多个第一存储器模块MOD1至MODn之间执行切换(或路由)操作。切换电路SWC可以从多个接口电路IC1至ICm的源接口电路接收数据块DC。切换电路SWC可以基于所接收的数据块DC——具体地,数据块DC的有效载荷——来选择多个第一存储器模块MOD1至MODn的至少一个或多个目标存储器模块。切换电路SWC可以将所接收的数据块DC传送到目标存储器模块。当从至少一个目标存储器模块接收响应时,切换电路SWC可以将所接收的响应发送到源接口电路。
切换电路SWC可以包括存储电路SC、数据平面电路DPC以及控制平面电路CPC。
存储电路SC可以包括切换表格ST和策略池PP。切换表格ST可以分别地包括与数据块DC的有效载荷的属性相对应的切换(或路由)策略。策略池PP可以包括当异常发生时将被运行的策略。存储电路SC可以具有提供参考表格的简单结构。例如,存储电路SC可以包括三态内容寻址存储器(TCAM)。
数据平面电路DPC可以检测从接口电路IC1至ICm所接收的数据块DC的数据行,并且可以参考所检测的属性和切换表格ST来确定数据块DC的切换(或路由)策略。以下参考图4更详细地讨论示例属性。数据平面电路DPC可以基于所确定的策略来选择至少一个目标存储器模块,并且可以将数据块DC发送到因此所选择的至少一个目标存储器模块。数据平面电路DPC是可以采用硬件来实施。
当数据平面电路DPC接收具有未在切换表格ST处注册的属性的数据块DC或当诸如错误的异常发生时,数据平面电路DPC可以将异常信号EXC输出到控制平面电路CPC。
控制平面电路CPC可以执行计算和控制功能,并且可以驱动可编程控制平面CP。例如,根据本发明构思的至少一些示例实施例,控制平面电路CPC可以是或可以包括处理器,该处理器运行计算机可读指令(例如,在以这样的方式所存储的软件和/或固件中所包括的指令,以便可由控制平面电路CPC访问)以将在本文中所描述的操作实施为通过控制平面CP来执行。
当在本公开中使用时,术语“处理器”可以指代例如具有下述电路的硬件实施的数据处理设备:该电路物理地被构造为运行期望的操作,例如包括如在程序中所包含的代码和/或指令所表示的操作。以上提及的硬件实现的数据处理设备的示例包括但是不限于微处理器、中央处理单元(CPU)、处理器核心、多核心处理器;多处理器;专用集成电路(ASIC)以及现场可编程门阵列(FPGA)。运行程序代码的处理器是被编程的处理器,并且因此,是专用计算机。
当异常信号EXC被激活时,控制平面CP可以确定并且处理异常。例如,当接收到具有未在切换表格ST处注册的属性的数据块DC时,控制平面CP可以参考策略池PP来确定新的切换(或路由)策略,并且可以在切换表格ST处注册新的切换(或路由)策略。当错误发生时,控制平面CP可以输出错误消息或可以输出指示数据块DC的重新发送的信息到作为数据块DC的源的接口电路。
多个第一存储器模块MOD1至MODn中的每个可以从切换电路SWC接收数据块DC。多个第一存储器模块MOD1至MODn中的每个可以对所接收的数据块DC进行解码并且可以基于解码结果来执行读取操作或写入操作。例如,多个第一存储器模块MOD1至MODn中的每个可以从数据块DC移除报头以检测有效载荷。当所检测的有效载荷包括键、值以及设置命令SET时,多个第一存储器模块MOD1至MODn中的每个可以执行写入操作。当所检测的有效载荷包括键和得到命令GET时,多个第一存储器模块MOD1至MODn中的每个可以执行读取操作。
如参考图2所描述地,通过第二网络NET2所接收的TCP/IP格式的分组可以由减负电路OC转换为PICe格式的数据块DC,而无需处理器的控制。数据块DC可以由数据平面电路DPC基于硬件实现的数据平面电路DPC来切换(或路由)到第一存储器模块MOD1至MODn。因为基于硬件来处理通过第二网络NET2所接收的分组并且处理结果被提供给第一存储器模块MOD1至MODn,所以与软件介于其间的其他服务器设备相比,可以显著地提高对象缓存服务器设备OCS的操作速度。
根据本发明构思的至少一个示例实施例,对象缓存服务器设备OCS可以支持更新在控制平面电路CPC上所驱动的控制平面CP以及在存储电路SC中所存储的切换表格ST和策略池PP的功能。例如,切换表格ST、策略池PP或控制平面CP可以通过多个接口电路IC1至ICm来更新。
根据本发明构思的至少一个示例实施例,对象缓存服务器设备OCS可以操作基于键-值存储的数据结构。可以使用两个或更多个数据块来接收一个基于键-值存储的请求。在这种情况下,第一数据块可以包括关于请求的所有数据块的数目的信息。切换电路SWC可以参考在第一数据块中所包括的信息来维持切换(或路由)路径直到所有数据块被传送为止。
图3是示出了根据本发明构思的至少一个示例实施例的对象缓存服务器设备OCS的操作方法的流程图。本发明构思的至少一个示例实施例,在图3中示出了数据平面电路DPC的操作方法。
参考图2和图3,在步骤S110中,数据平面电路DPC可以接收数据块DC。在步骤S120中,数据平面电路DPC可以从所接收的数据块DC中提取属性。在步骤S130中,数据平面电路DPC可以将所提取的属性与切换表格ST进行比较。
如果在步骤S140中未发生异常,例如,如果在切换表格ST中存在与所提取的属性相对应的切换(或路由)策略,则在步骤S150中,数据平面电路DPC可以基于切换(或路由)策略选择至少一个第一存储器模块。在步骤S160中,数据平面电路DPC可以将数据块DC发送到所选择的至少一个第一存储器模块。
如果在步骤S140中发生异常,例如,如果在切换表格ST中缺少与所提取的属性相对应的切换(或路由)策略,则数据平面电路DPC可以将异常信号EXC发送到控制平面电路CPC。在步骤S170中,控制平面CP可以创建与所提取的属性相对应的新的切换(或路由)策略,并且可以将所创建的策略注册在切换表格ST处。之后,方法可以继续到步骤S150。
步骤S110至S160可以通过硬件实现的数据平面电路DPC来执行。即,当未发生异常时,数据块DC可以通过数据平面电路DPC基于硬件来切换(或路由),从而提高切换电路SWC的切换(或路由)速度。
步骤S170可以通过控制平面CP来执行。即,当异常发生时,控制平面CP可以抓住(grasp)并且处理异常。如以上参考图2所讨论地,控制平面CP可以通过运行软件或固件的控制平面电路CPC来实施,并且因此,控制平面CP可以鉴于各种情形而灵活地被实施。另外,因为控制平面CP被更新,所以其可以灵活地应对环境或情形改变。另外,可以能够调试控制平面CP。因此,可以改进切换电路SWC的灵活性。
图4是示出了切换表格ST的示例的图。参考图2至图4,切换表格ST可以包括数据块DC的属性以及与其相对应的切换(或路由)策略。
属性可以包括键和命令CMD。键可以是在数据块DC的有效载荷中所包括的基于键-值存储的信息。命令可以是在数据块DC的有效载荷中所包括的基于键-值存储的命令。
根据本发明构思的至少一个示例实施例,属性可以进一步包括与TCP/IP格式相关联的信息。例如,属性可以进一步包括源IP地址SRC_IP,源端口SRC_PT、目标IP地址以及目标端口DST_PT。
策略可以包括目标存储器模块MOD和动作ACT。目标存储器模块MOD可以是从多个第一存储器模块MOD1至MODn当中作为(一个或多个)切换(或路由)目标所选择的(一个或多个)存储器模块。动作ACT可以是关于目标存储器模块所执行的切换(或路由)操作。
在切换表格ST处所注册的第一策略P1可以以具有设置命令SET和包括“img*”的键的数据块DC为目标。当接收到与第一策略P1相对应的数据块DC时,其可以被寻址到所有第一存储器模块MOD1至MODn(即,多播)。根据本发明构思的至少一个示例实施例,第一策略P1可以被用于将副本分布到并且写入到多个第一存储器模块MOD1至MODn。
在切换表格ST处所注册的第一策略P2可以以具有得到命令GET和包括“img*”的键的数据块DC为目标。当接收到与第二策略P2相对应的数据块DC时,数据块DC可以被寻址到第一存储器模块MOD1到MODn当中一个或多个随机地选择的模块。例如,可以选择第一存储器模块MOD1到MODn中的一个(例如,通过随机或替选地伪随机过程),并且数据块DC可以被发送到所选择的第一存储器模块。第二策略P2可以被用于读取其副本被分布到并且存储到第一存储器模块MOD1至MODn的数据。
当数据块DC的目标是存储器模块MOD2时,在切换表格ST处所注册的第三策略P3可以被用于将相对应的数据块DC转发到另一存储器模块。例如,当基于在切换表格ST处所注册的切换(或路由)策略所选择的目标存储器模块是存储器模块MOD2时,相对应的数据块DC可以被发送到作为转发目标的另一存储器模块,来代替被发送到目标存储器模块。当存储器模块MOD2未进行操作时或当负载集中在存储器模块MOD2上时,可以使用第三策略P3。
在切换表格ST处所注册的第四策略P4可以被用来将具有包括“a*”的键的数据发送到存储器模块MOD1。
根据本发明构思的至少一个示例实施例,在切换表格ST处所注册的策略P1至P4可以分别地具有优先级。当数据块的属性与两个或更多个策略相对应时,数据平面电路DPC可以选择具有高优先级的策略。
根据本发明构思的至少一个示例实施例,在切换表格ST中所使用的属性的数目、种类和内容以及在其中所使用的切换(或路由)策略的数目、种类和内容可以通过多个接口电路IC1至ICm来更新。在切换表格ST处所注册的策略P1至P4的数目、种类和内容可以通过多个接口电路IC1至ICm或控制平面CP来更新。
图5是示出了数据平面电路DPC的框图。参考图2和图5,数据平面电路DPC可以包括接口电路IIC、解码器DC1、查询块LB以及切换构造SF。接口电路IIC可以通过第一接口INF1从多个接口电路IC1至ICm中的一个接收数据块DC。接口电路IIC可以为解码器DC1提供所接收的数据块DC、所接收的数据块DC的有效载荷或所接收的数据块DC的有效载荷的一部分(例如,命令和键)。
解码器DC1可以从接口电路IIC的输出中检测数据块DC的属性ATTR。所检测的属性ATTR可以被发送到查询块LB。
查询块LB可以被配置为将属性ATTR与切换表格ST进行比较。根据本发明构思的至少一个示例实施例,查询块LB可以包括多个查找电路LC。多个查找电路LC中的每个可以将一个属性与切换表格ST进行比较。即,查询块LB可以将属性ATTR与多级结构的切换表格ST进行比较。查询块LB可以从切换表格ST中检测与属性ATTR相对应的策略P,并且可以将所检测的策略P发送到切换构造SF。切换构造SF还可以被称为被切换的构造或用于切换的构造。
切换构造SF可以基于从查询块LB所输出的策略P,来将接口电路IIC与多个第一存储器模块MOD1至MODn中的至少一个连接。
接口电路IIC可以通过切换构造SF将数据块DC发送到所选择的至少一个第一存储器模块。
根据本发明构思的至少一个示例实施例,可以并行地提供多个解码器-查询群组,该多个解码器-查询群组中的每个由解码器DC1和查询块LB构成。解码器-查询分组可以分别地与接口电路IC1至ICm相对应,并且可以并行地处理分别地从接口电路IC1至ICm所输出的数据块DC。
图6是示出了在图2中所示的对象缓存服务器设备OCS的应用的框图。参考图6,对象缓存服务器设备OCSa可以包括多个接口电路IC1至ICm、切换电路SWC、多个存储器模块MOD1至MODn以及管理电路MGC。与图2的对象缓存服务器设备OCS相比,对象缓存服务器设备OCSa可以进一步包括管理电路MGC。
管理电路MGC可以包括中央处理单元(CPU)、主存储器MEM以及存储装置STOR。管理电路MGC可以通过监视路径MP来监视多个第一存储器模块MOD1至MODn的负载。管理电路MGC可以基于监视结果来关于第一存储器模块MOD1至MODn来执行负载均衡。例如,管理电路MGC可以通过下述来执行负载均衡:通过控制路径CTRL更新切换表格ST以允许数据块DC被发送到其负载相对地小的存储器模块,来代替被发送到其负载相对地大的存储器模块。
图7是示出了根据本发明构思的至少一个示例实施例的对象缓存服务器设备OCSa的操作方法的流程图。根据本发明构思的至少一个示例实施例,在图7中示出了管理电路MGC的操作方法。参考图6和图7,在步骤S210中,管理电路MGC可以监视第一存储器模块MOD1至MODn的负载。
在步骤S220中,管理电路MGC可以确定第一存储器模块MOD1至MODn的负载是否不均衡。例如,当第一存储器模块MOD1至MODn的最大负载与最小负载之间的差异大于或等于阈值时,负载可以被确定为不均衡。当第一存储器模块MOD1至MODn的负载的平均和与平均相距最远距离的最远值之间的差异大于或等于阈值时,负载可以被确定为不均衡。当第一存储器模块MOD1至MODn的方差或标准差大于或等于阈值时,负载可以被确定为不均衡。
如果第一存储器模块MOD1至MODn的负载不均衡,则管理电路MGC可以执行负载均衡。
如参考图6和图7所描述地,对象缓存服务器设备OCS可以基于硬件以高速对通过第二网络NET2所接收的TCP/IP分组进行处理,并且可以将处理后的结果发送到第一存储器模块MOD1至MODn。另外,对象缓存服务器设备OCS可以使用管理电路MGC执行关于第一存储器模块MOD1至MODn的负载均衡。
图8是示出了图6中所示的对象缓存服务器设备OCSa的操作的框图。参考图8,对象缓存服务器设备OCSb可以包括多个接口电路IC1至ICm、切换电路SWC、多个存储器模块MOD1至MODn以及管理电路MGC。与图6的对象缓存服务器设备OCSa相比,对象缓存服务器设备OCSb可以进一步包括:带外接口OOB,被配置为通过通信路径与接口电路IC1至ICm通信并且被配置为与外部设备EXT通信而不经过接口电路IC1至ICm。
管理电路MGC可以通过通信路径CP和接口电路IC1至ICm来与第二网络NET2通信。例如,管理电路MGC可以将关于对象缓存服务器设备OCSb的负载的信息发送到第二网络NET2中的切换(或路由器)。管理电路MGC可以通过第二网络NET2来与外部对象缓存服务器设备共享关于负载的信息。当对象缓存服务器设备OCSb的负载大时,管理电路MGC可以通过第二网络NET2来将数据块DC转发到外部对象缓存服务器设备。例如,管理电路MGC可以请求接口电路IC1至ICm中的至少一个来转发数据块DC。接口电路IC1至ICm可以转发由管理电路MGC所请求的数据块DC。
管理电路MGC可以通过带外接口OOB来与外部设备EXT通信。管理电路MGC可以通过带外接口OOB来与外部设备EXT通信。管理电路MGC可以通过带外接口OOB来与外部对象缓存服务器设备共享关于负载的信息。管理电路MGC可以通过带外接口OOB来与外部负载管理电路通信。响应于外部负载管理电路的控制,管理电路MGC可以将数据块DC通过接口电路IC1至ICm转发到外部负载管理设备,或者通过其从外部负载管理设备接收数据块DC。
根据本发明构思的至少一个示例实施例,切换表格ST、策略池PP或控制平面CP可以通过带外接口OOB来更新。
图9是示出了其中对象缓存服务器设备OCS1至OCS4通过带外接口OOB互联的示例的图。参考图9,对象缓存服务器设备OCS1至OCS4可以通过集成电路间(I2C)接口来互联。即,带外接口OOB可以是I2C接口。然而,带外接口OOB可以不限于此。
参考图9,根据本发明构思的至少一个示例实施例,第一对象缓存服务器设备OCS1至第四对象缓存服务器设备OCS4连接到第二网络NET2,并且通过I2C接口互联。然而,根据本发明构思的至少一些示例实施例,对象缓存服务器设备的数目可以与图9中所示的数目不同。
图10是示出了图9中所示的对象缓存服务器设备OCS1至OCS4的负载的示例的表格。参考图9和图10,第一对象缓存服务器设备OCS1的负载等级可以是低等级。第二对象缓存服务器设备OCS2和第三对象缓存服务器设备OCS3的负载等级中的每个可以是中等等级。第四对象缓存服务器设备OCS4的负载等级可以是高等级。
第一对象缓存服务器设备OCS1至第四对象缓存服务器设备OCS4可以通过第二网络NET2或I2C接口来共享负载信息。例如,第一对象缓存服务器设备OCS1至第四对象缓存服务器设备OCS4中的每个可以具有图10中所示的负载信息。
图11是示出了其中图9的对象缓存服务器设备OCS1至OCS4转发数据块的示例的图。参考图9至图11,在步骤S1中,数据块DC可以通过第二网络NET2被传送到第四对象缓存服务器设备OCS4。
如图10中所示,第四对象缓存服务器设备OCS4的负载等级可以是高等级。在步骤S2中,第四对象缓存服务器设备OCS4可以将所接收的数据块DC转发到另一对象缓存服务器设备。例如,第四对象缓存服务器设备OCS4可以通过I2C接口将数据块DC转发到具有最低负载等级的第一对象缓存服务器设备OCS1。
例如,当第二网络NET2的切换(或路由器)支持第一对象缓存服务器设备OCS1至第四对象缓存服务器设备OCS4的转发时,第四对象缓存服务器设备OCS4可以将提供数据块DC被转发的通知的消息发送到第二网络NET2的切换(或路由器)。第二网络NET2的切换(或路由器)可以基于所接收的消息来更新目标IP地址或目标端口,并且因此,数据块DC可以被确定为被存储在第一对象缓存服务器设备OCS1中。
作为另一示例,第四对象缓存服务器设备OCS4可以创建并且管理指示数据块DC被转发到第一缓存服务器设备OCS1的替换表格。
图12是示出了当数据块DC被转发时所创建的替换表格RT的示例的图。参考图12,替换表格RT可以包括与在数据块DC的有效载荷中所包括的键、转发的源设备以及转发的目标(或目的地)相关联的信息。
例如,被转发的数据块DC的键可以是“IMM”,源可以是第四对象缓存服务器设备OCS4以及目标可以是第一对象缓存服务器设备OCS1。
当在创建了替换表格RT之后,具有“IMM”的键的数据块DC被提供给第四对象缓存服务器设备OCS4时,第四对象缓存服务器设备OCS4可以将数据块DC转发到第一对象缓存服务器设备OCS1。
根据本发明构思的至少一个示例实施例,替换表格RT可以在作为转发的源的第四对象缓存服务器设备OCS4(例如,由第四对象缓存服务器设备OCS4)上创建。替换表格RT可以由作为转发的源的第四对象缓存服务器设备OCS4和作为转发的目标的第一对象缓存服务器设备OCS1共享。替换表格RT可以由共享第二网络NET2的第一对象缓存服务器设备OCS1至第四对象缓存服务器设备OCS4来共享。
图13是示出了其中图9的对象缓存服务器设备OCS1至OCS4转发数据块的示例的图。参考图9、图10和图13,在步骤S1中,数据块DC可以通过第二网络NET2被传送到第四对象缓存服务器设备OCS4。
如图10中所示,第四对象缓存服务器设备OCS4的负载等级可以是高等级。第四对象缓存服务器设备OCS4可以将数据块DC转发到另一对象缓存服务器设备。例如,在步骤S2中,第四对象缓存服务器设备OCS4可以将具有最低负载等级的第一对象缓存服务器设备OCS1设置为目标,并且将数据块DC发送到第二网络NET2。在步骤S3中,数据块DC可以通过第二网络NET2被发送到第一对象缓存服务器设备OCS1。
例如,当第二网络NET2的切换(或路由器)支持第一对象缓存服务器设备OCS1至第四对象缓存服务器设备OCS4的转发时,第四对象缓存服务器设备OCS4可以将提供数据块DC被转发的通知的消息发送到第二网络NET2的切换(或路由器)。第二网络NET2的切换(或路由器)可以基于所接收的消息来更新目标IP地址或目标端口,并且因此,数据块DC可以被确定为被存储在第一对象缓存服务器设备OCS1中。
作为另一示例,如图12所示,第四对象缓存服务器设备OCS4可以创建并且管理指示数据块DC被转发到第一缓存服务器设备OCS1的替换表格。
图14是示出了其中图9的对象缓存服务器设备执行负载报告的示例的图。参考图9、图10和图14,在步骤S1中,数据块DC可以通过第二网络NET2被传送到第四对象缓存服务器设备OCS4。
在步骤S2中,第四对象缓存服务器设备OCS4可以将负载报告消息NT发送到第二网络NET2。负载报告消息NT可以包括用于请求第二网络NET2将数据块DC转发到第一对象缓存服务器设备OCS1的信息。负载报告消息NT可以包括参考图10所描述的表格。
在步骤S3中,第二网络NET2可以再次参考负载报告消息NT来将数据块DC发送到第一对象缓存服务器设备OCS1。
图15是示出了根据本发明构思的至少一个示例实施例的第一存储器模块MODk的框图。根据本发明构思的至少一个示例实施例,图15的MODk是图2的第一存储器模块MOD1至MODn中的一个的示例。
参考图15,第一存储器模块MODk可以包括多个第二存储器模块SMOD和存储器控制器MC。多个第二存储器模块SMOD中的每个可以包括多个存储器设备。
存储器控制器MC可以被配置为通过第三接口INF3来控制多个第二存储器模块SMOD。例如,存储器控制器MC可以对数据块DC进行解码。基于解码的结果,存储器控制器MC可以将数据发送到多个第二存储器模块SMOD,或可以从多个第二存储器模块SMOD接收数据。例如,第三接口INFC3可以是双列直插存储器模块(DIMM)接口。
存储器控制器MC可以包括数据平面电路DPC2、存储电路SC2以及控制平面电路CPC2。
数据平面电路DPC2可以从切换电路SWC接收数据块DC。数据平面电路DPC2可以对数据块DC进行解码。基于解码结果和在存储电路SC2中所存储的处理表格PT,数据平面电路DPC2可以将数据写入在从第二存储器模块SMOD中所选择的存储器模块处,或可以从所选择的存储器模块中读取数据。
存储电路SC2可以存储处理表格PT。处理表格PT可以包括关于其中数据平面电路DPC2对数据块DC进行处理的方法的信息。
控制平面电路CPC2可以被配置为驱动可编程控制平面CP2。当在数据平面电路DPC2上发生异常时,控制平面CP2可以对异常进行处理。为了对异常进行处理,控制平面CP2可以更新处理表格PT。
根据本发明构思的至少一个示例实施例,第一存储器模块MODk可以支持处理表格PT的更新或控制平面CP2的算法的更新。如参考图1或图8所描述地,处理表格PT或控制平面CP2可以通过多个接口电路IC1至ICm或通过带外接口OOB来更新。
如上所述,在第一存储器模块MODk中,数据块DC的解码和第二存储器模块SMOD的访问可以由数据平面电路DPC2来执行,从而提高了第一存储器模块MODk的操作速度。在数据平面电路DPC2上发生的异常可以由在控制平面电路CPC2上所驱动的控制平面CP2来处理。
数据平面电路DPC2可以对与数据块DPC的写入或读取相关联的操作进行处理。当数据平面电路DPC2执行与读取或写入相关联的操作时所使用的策略可以被写入在处理表格PT中。例如,在处理表格PT中存储有下述策略:当数据块DC被写入时,数据平面电路DPC2确定是否分配第二存储器模块SMOD的存储空间的策略;以及当针对第二存储器模块SMOD的存储空间的管理执行无用单元收集时,数据平面电路DPC2确定是否选择存储空间的策略。处理表格PT可以由控制平面CP2来更新。
根据本发明构思的至少一些示例实施例,数据处理可以全部由数据平面电路DPC2来执行,从而提高第一存储器模块MODk的操作速度。另外,数据平面电路DPC2不能够进行处理的异常可以由控制平面CP2来处理,并且因此,关于各种异常的复杂的处理可以是可能的。控制平面CP2可以通过软件来实现并且可以是可更新的。因此,诸如数据块DC的格式改变、命令CMD的添加或关于额外的异常的策略的添加的改变可以通过更新控制平面CP2来完成。例如,根据本发明构思的至少一些示例实施例,控制平面电路DPC2可以是或可以包括处理器,该处理器运行计算机可读指令(例如,在以这样的方式所存储的软件和/或固件中所包括的指令,以便可由控制平面电路CPC访问)以将在本文中所描述的操作实施为通过控制平面CP2来执行。
这可以意味着改进了第一存储器模块MODk的灵活性。另外,因为控制平面CP2的调试是可能的,所以可以改进第一存储器模块MODk的可靠性。当处理表格PT通过控制平面CP2来更新时,可以增加确定数据平面的策略的灵活性。
图16是示出了根据本发明构思的至少一个示例实施例的数据平面电路DPC2的框图。参考图15和图16,数据平面电路DPC2可以包括接口电路IIC2、解码器DC2、哈希计算器HC、存储器分配器MA、哈希表格管理器HTM、物理电路PHY以及值存取电路VAC。根据本发明构思的至少一些示例实施例,哈希表格管理器HTM可以通过电路或电路***来例示。
接口电路IIC2可以从切换电路SWC接收数据块DC,或可以将数据块DC输出到切换电路SWC。例如,在写入操作期间,接口电路IIC2可以从切换电路SWC接收包括键、值以及命令CMD的数据块DC。数据平面电路DPC2可以基于所接收的数据块DC来执行写入操作。在读取操作期间,接口电路IIC2可以从切换电路SWC接收包括键和命令CMD的数据块DC。数据平面电路DPC2可以基于所接收的数据块DC从第二存储器模块SMOD得到值。接口电路IIC2可以生成包括键和所得到的值的数据块DC,并且可以将所生成的数据块DC发送到切换电路SWC。根据本发明构思的至少一个示例实施例,接口电路IIC2可以基于PICe接口与切换电路SWC通信。
接口电路IIC2可以从值存取电路VAC接收值。在写入操作期间,接口电路IIC2可以将包括键、值以及命令CMD的数据输出到解码器DC2。在读取操作期间,接口电路IIC2可以将包括键和命令CMD的数据块DC输出到解码器DC2。
在读取操作期间,解码器DC2可以对从接口电路IIC2所接收的数据进行解码,以提取键和命令CMD。解码器DC2可以将所提取的键输出到哈希计算器HC。
在写入操作期间,解码器DC2可以对从接口电路IIC2所接收的数据进行解码以提取键、值和命令CMD。解码器DC2可以将所提取的键和值输出到哈希计算器HC。解码器DC2可以根据值来生成请求大小RS或请求大小RS和请求计数RC,并且可以将请求大小RS或请求计数RC输出到存储器分配器MA。将参考图17至图26来详细地描述请求大小RS和请求计数RC。
哈希计算器HC可以从解码器DC2接收键或者键和值。哈希计算器HC可以通过关于键执行哈希操作来生成哈希数据HD。例如,哈希计算器HC可以关于所接收的键执行完全哈希操作或部分哈希操作。哈希计算器HC可以将哈希数据HD和键或者哈希数据HD、键以及值输出到哈希表格管理器HTM。
存储器分配器MA可以从解码器DC2接收请求大小RS和请求计数RC。存储器分配器MA可以控制物理电路PHY以便从多个第二存储器模块SMOD当中的与请求大小RS相对应的一个第二存储器模块读取地址表格AT。存储器分配器MA可以基于在存储电路SC2中所存储的第一处理表格PT1、请求大小RS以及请求计数RC来分配所选择的第二存储器模块的地址ADDR。例如请求大小RS和请求计数RC可以指示用于写入操作的存储空间。第一处理表格PT1可以包括:关于包含要被分配的存储空间的第二存储器模块的信息以及用于选择第二存储器模块中的存储器设备的信息。存储器分配器MA可以基于第一处理表格PT1的策略来分配通过请求大小RS和请求计数RC所请求的存储空间,并且可以将所分配的存储空间的地址输出到哈希表格管理器HTM。
在写入操作期间,哈希表格管理器HTM可以从哈希计算器HC接收键、哈希数据以及值。哈希表格管理器HTM可以从存储器分配器MA接收地址ADDR。哈希表格管理器HTM可以控制物理电路PHY以便更新在多个第二存储器模块SMOD当中的、哈希数据HD所指示的一个第二存储模块中所存储的哈希表格HT。例如,哈希表格管理器HTM可以将键与地址ADDR之间的对应关系添加到哈希表格HT。哈希表格管理器HTM可以将地址ADDR和值输出到值存取电路VAC。
在读取操作期间,哈希表格管理器HTM可以从哈希计算器HC接收键和哈希数据。哈希表格管理器HTM可以控制物理电路PHY以便读取在多个第二存储器模块SMOD当中的、哈希数据HD所指示的一个第二存储模块的哈希表格HT。哈希表格管理器HTM可以基于哈希表格HT检测与键相对应的地址ADDR。哈希表格管理器HTM可以将所检测到的地址ADDR输出到值存取电路VAC。
在写入操作期间,值存取电路VAC可以从哈希表格管理器HTM接收地址ADDR和值。值存取电路VAC可以基于地址ADDR将值写入在从第二存储器模块SMOD中所选择的存储器模块处。
在读取操作期间,值存取电路VAC可以从哈希表格管理器HTM接收地址ADDR。值存取电路VAC可以基于地址ADDR在从第二存储器模块SMOD中所选择的存储器模块中读取值。
物理电路PHY可以访问多个第二存储器模块SMOD。例如,物理电路PHY可以基于DIMM接口来控制第二存储器模块SMOD。
图17是示出了根据本发明构思的至少一个示例实施例的数据平面电路DPC2的操作方法的流程图。参考图16和图17,在步骤S310中,数据平面电路DPC2可以从切换电路SWC接收数据。例如,数据平面电路DPC2可以接收包括键或键和值的数据。
在步骤S320中,数据平面电路DPC2可以通过关于键执行哈希操作来生成哈希数据HD。
在步骤S330中,数据平面电路DPC2可以基于操作是写入操作还是读取操作来执行下面的操作。在写入操作的情况下,在步骤S340中,数据平面电路DPC2可以使用哈希数据HD来选择第二存储器模块,可以分配地址,可以写入值以及可以采用值和地址ADDR来更新哈希表格HT。在读取操作的情况下,在步骤S350中,数据平面电路DPC2可以使用哈希数据HD来选择第二存储器模块,可以使用键在哈希表格HT中搜索地址ADDR以及可以读取值。
当在哈希表格HT中缺少相对应的键时,即,当搜索地址ADDR失败时,接口电路IIC2可以执行由对象缓存协议所定义的操作,例如,“未发现”响应传输。
图18是示出了根据本发明构思的至少一个示例实施例的第二存储器模块SMOD的框图。参考图15和图18,第二存储器模块SMOD可以包括多个存储器设备DRAM。多个存储器设备DRAM中的每个可以包括动态访问存取存储器。然而,存储器设备DRAM的种类可以不限于此。
多个存储器设备DRAM可以形成第一行列RANK1至第四行列RANK4。第一行列RANK1至第四行列RANK4可以由存储器控制器MC彼此独立地访问。属于所选择的行列的存储器设备DRAM可以由存储器控制器MC并行地并且同时地访问。形成第一行列RANK1至第四行列RANK4的存储器设备可以具有相同的结构和相同的属性。例如,存储器设备DRAM可以是同质存储器设备。出于描述的方便,可以假定存储器设备DRAM形成了第一行列RANK1至第四行列RANK4。然而,行列的数目可以不限于此。
图19是示出了其中存储器分配器组织第一行列RANK1至第四行列RANK4的方法的流程图。根据本发明构思的至少一个示例实施例,可以在初始化对象缓存服务器设备OCS时或当根据外部请求重新配置对象缓存服务器设备OCS时,执行图19的组织。
参考图1、图16和图19,在步骤S410中,控制电路210可以设置大块分类。例如,每个大块分类可以包括其大小彼此相同的同质大块。每个不同的大块分类可以包括其大小彼此不同的异质大块。每个大块可以是被分配为写入数据——例如,值——的基本单位。
例如,存储器分配器MA可以选择第一大小的大块。存储器分配器MA可以形成第一大块分类,其中,大块中的每个具有第一大小。存储器分配器MA可以选择形成因子。例如,存储器分配器MA可以选择为“2”的形成因子。存储器分配器MA可以选择通过将形成因子与第一大小相乘的第二大小。存储器分配器MA可以形成具有下述大块的第二大块分类:该大块中的每个具有第二大小。同样地,存储器分配器MA可以选择通过将形成因子与第k-1大小相乘的第k大小。形成因子和大块分类的数目可以被调整,而不限于此。
在步骤S420中,存储器分配器MA可以将大块分类分别地分配给行列RANK1至RANK4。例如,存储器分配器MA可以将一个大块分类分配给一个行列或多于两个行列。作为另一示例,存储器分配器MA可以将一个大块分类或者两个或更多个大块分类分配给一个行列。
根据本发明构思的至少一个示例实施例,行列与大块分类SC之间的对应关系可以被存储为存储电路SC2中的第一处理表格PT。例如,存储器分配器MA可以基于第一处理表格PT1来设置行列和大块分类SC。存储器分配器MA可以基于第一处理表格PT1来分配地址ADDR。
图20是示出了其中存储器分配器MA基于第一大块分类至第四大块分类来组织第一行列RANK1至第四行列RANK4的示例的图。根据本发明构思的至少一个示例实施例,在图20中示出了一个大块分类属于一个行列的情况。
参考图20,第一大块分类SC1可以被分配给第一行列RANK1。第二大块分类SC2可以被分配给第二行列RANK2。第三大块分类SC3可以被分配给第三行列RANK3。第四大块分类SC4可以被分配给第四行列RANK4。
根据本发明构思的至少一个示例实施例,存储器分配器MA可以将不同的大块分类分配给不同的行列。即,存储器分配器MA可以彼此独立地使对不同的大块分类的访问分离。
在图20中示出了一个大块分类与一个行列相对应的情况。然而,本发明构思的至少一些示例实施例不限于图20中所示的示例。例如,一个大块分类可以被分配给多个行列。作为另一示例,两个或更多个大块分类可以被分配给一个行列。在这种情况下,被分配给一个行列的两个或更多个大块分类可以是彼此最接近的大块分类。例如,彼此最接近的第k-1大块分类和第k大块分类可以被分配给一个行列。
图21是示出了其中存储器分配器MA分配大块以写入数据的方法的流程图。参考图15、图16、图20以及图21,在步骤S510中,存储器分配器MA可以接收请求大小RS和请求计数RC。
在步骤S520中,存储器分配器MA可以确定请求大小RS是否小于或等于第一参考大小RS1。例如,第一参考大小RS1可以是第一大块分类SC1的每个大块的大小。
如果请求大小RS小于或等于第一参考大小RS1,则在步骤S530中,存储器分配器MA可以分配属于第一行列RANK1的大块——即,第一大块分类SC1的大块——以写入数据。例如,存储器分配器MA可以分配第一大块分类SC1中的大块,其数目与请求计数RC相对应。如果请求大小RS大于第一参考大小RS1,则处理可以继续到步骤S540。
在步骤S540中,存储器分配器MA可以确定请求大小RS是否大于第一请求大小RS1并且小于或等于第二参考大小RS2。例如,第二参考大小RS2可以是第二大块分类SC2中的每个大块的大小。
如果请求大小RS大于第一参考大小RS1并且小于或等于第二参考大小RS2,则在步骤S550中,存储器分配器MA可以分配属于第二行列RANK2的大块——即,第二大块分类SC2的大块——以写入数据。例如,存储器分配器MA可以分配第二大块分类SC2中的大块,其数目与请求计数RC相对应。如果请求大小RS大于第二参考大小RS2,则处理可以继续到步骤S560。
在步骤S560中,存储器分配器MA可以确定请求大小RS是否大于第二请求大小RS2并且小于或等于第三参考大小RS3。例如,第三参考大小RS3可以是第三大块分类SC3中的每个大块的大小。
如果请求大小RS大于第二请求大小RS2并且小于或等于第三参考大小RS3,则在步骤S570中,存储器分配器MA可以分配属于第三行列RANK3的大块——即,第三大块分类SC3的大块——以写入数据。例如,存储器分配器MA可以分配第三大块分类SC3中的大块,其数目与请求计数RC相对应。
如果请求大小RS大于第三参考大小RS3,则处理可以继续到步骤S580。在步骤S580中,存储器分配器MA可以分配属于第四行列RANK4的大块——即,第四大块分类SC4的大块——以写入数据。例如,存储器分配器MA可以分配第四大块分类SC4中的大块,其数目与请求计数RC相对应。
即,存储器分配器MA可以将不同的大块分类分配给不同的行列。即,当访问不同的大块分类时可以访问不同的行列。
在基于键-值存储的数据结构中,访问频率可以根据值的大小而变化。即,访问频率可以针对每个大块分类而变化。根据本发明构思的至少一个实施例的存储器控制器MC可以将不同的大块分类分离到不同的行列。因此,在根据本发明构思的至少一个实施例的存储器控制器MC中,访问频率可以针对每个行列而变化,并且其访问频率相对地低的行列可以进入省电模式。这可以意味着降低对象缓存服务器设备OCS的电力消耗。
图22是示出了根据本发明构思的至少一个示例实施例的存储器分配器MA的框图。参考图15、图16、图20以及图23,存储器分配器MA可以包括根据本发明构思的至少一个示例实施例的请求生成器RG、无效检查电路ICC、无效寄存器IR、地址检查电路以及在前的索引寄存器PR。
请求生成器RG可以从解码器DC2接收请求大小RS和请求计数RC。例如,请求大小RS可以包括关于要被使用的大块的大小的信息。请求计数RC可以包括关于要被使用的大块的数目的信息。
请求生成器RG可以基于请求大小RS和请求计数RC来输出目标行列信息。例如,请求生成器RG可以选择其中设置有与请求大小RS相对应的大块所属于的大块分类的行列,并且可以输出指示所选择的行列的目标行列信息TR。请求生成器RG可以输出目标行列信息TR,如同与请求计数RC所指示的值相对应的频率一样多。
无效检查电路ICC可以从请求生成器RG接收目标行列信息TR。无效检查电路ICC可以基于无效寄存器IR来确定与目标行列相关联的信息是否被存储在无效寄存器IR中。
无效寄存器IR可以存储关于被无效的地址IA的信息。例如,无效寄存器IR可以针对存储器***100中的每个行列存储在前释放的至少一个大块的地址。
当与目标行列相关联的被无效的地址IA被存储在无效寄存器IR中时,无效检查电路ICC可以将被无效的地址IA和目标行列信息TR输出到地址检查电路ACC。无效检查电路ICC可以从无效寄存器IR中删除所输出的被无效的地址IA。当与目标行列相关联的被无效的地址IA未被存储在无效寄存器IR中时,无效检查电路ICC可以将目标行列信息TR输出到地址检查电路ACC。
地址检查电路可以从无效检查电路ICC接收目标行列信息TR和被无效的地址IA或目标行列信息TR。地址检查电路ACC可以从物理电路PHY接收地址表格AT。例如,当与目标行列相关联的被无效的地址IA被存储在无效寄存器IR中时,地址检查电路ACC可以接收被无效的地址IA和目标行列信息TR。当与目标行列相关联的被无效的地址IA未被存储在无效寄存器IR中时,地址检查电路ACC可以接收目标行列信息TR。
当接收被无效的地址IA和目标行列信息TR时,地址检查电路ACC可以基于地址表格AT来确定被无效的地址IA所指示的大块是在其中存储有无效数据的大块还是在其中存储有有效数据的大块。当被无效的地址IA所指示的大块是在其中存储有无效数据的大块时,地址检测电路ACC可以输出被无效的地址作为所分配的地址ADDR。当被无效的地址IA所指示的大块是在其中存储有有效数据的大块时,地址检查电路ACC可以忽略被无效的地址IA并且可以基于目标行列信息TR来分配大块。
当接收到目标行列信息TR时或当与目标行列信息TR一起接收到的被无效的地址IA错误时,地址检查电路ACC可以参考在前的索引寄存器PR。在前的索引寄存器PR可以存储在前的索引PI,其指示仅仅在前在目标行列中所分配的大块的索引。在前的索引寄存器PR可以针对每个行列存储在前的索引PI。
当与目标行列相关联的在前的索引PI被存储在在前的索引寄存器PR中时,地址检测电路ACC可以基于在前的索引PI来搜索地址表格AT。例如,地址表格电路ACC可以从在前的索引PI起顺序地搜索地址表格AT,并且可以发现存储无效数据的大块。
当与目标行列相关联的在前的索引PI未被存储在在前的索引寄存器PR中时,地址检查电路ACC可以从地址表格AT的第一索引起搜索存储有无效数据的大块。
图23是示出了无效寄存器IR存储被无效的地址的示例的表格。参考图23,针对每个行列可以存储两个被无效的地址。
图24是示出了在前的索引寄存器IR存储在前的地址的示例的表格。参考图24,针对每个行列可以存储仅仅在前被分配的在前索引或在前的索引。
图25是示出了地址表格AT的示例的表格。根据本发明构思的至少一个示例实施例,在图25中示出了与第一行列RANK1和第二行列RANK2相对应的地址表格AT。
参考图25,一个比特可以被分配给被设置到第一行列RANK1的第一大块分类SC1中的每个大块。当每个大块存储有效数据时,相对应的比特可以被设置为“0”。当每个大块存储无效数据时,相对应的比特可以被设置为“1”。
可以基于索引和片段来管理每个行列的地址表格。多个片段可以与一个索引相对应。在第一行列RANK1至第四行列RANK4中,多个片段可以相同。例如,多个片段可以与每个行列中的存储器设备的输入/输出线的总和相对应。即,与目标索引相对应的片段可以与存储器控制器MC根据其通过一个读取操作从所选择的行列中读取数据的大小——即,输入/输出带宽——相对应。
例如,可以基于第一索引IDX1至第十六索引IDX16以及第一片段S1至第十六片段S16来管理第一行列RANK1的大块。可以基于第一索引IDX1至第四索引IDX4以及第一片段S1至第十六片段S16来管理第二行列RANK2的大块。
因为术语每个行列的大块具有相同的大小,所以他们可以均等地占据每个行列的存储空间。可以根据属于每个行列的大块的索引的值和片段的值来计算每个行列的地址ADDR。
图26是示出了其中存储器分配器MA基于被无效的地址IA、在前的地址PI以及地址表格AT来分配大块的方法的流程图。参考图15、图16、图20以及图26,在步骤S610中,请求生成器RG可以接收请求大小RS和请求计数RC。出于说明的方便,可以假定请求计数RC为“1”。
在步骤S620中,请求生成器RG可以基于请求大小RS来选择目标行列。可以通过电路或电路***来例示的请求生成器RG可以输出指示所选择的目标行列的目标行列信息TR。
在步骤S640中,无效检查电路ICC可以基于无效寄存器IR来确定与目标行列相关联的被无效的地址IA是否被存储在无效寄存器IR中。
如果被无效的地址IA被存储在无效寄存器IR中,则在步骤S645中,可以确定与被无效的地址IA相对应的大块是否可用。例如,地址检查电路ACC可以基于地址表格来确定与被无效的地址IA相对应的大块是否存储有效数据。如果与被无效的地址IA相对应的大块未存储有效数据,则其可以被确定为可用。之后,当选择被无效的地址IA所指示的大块,则处理可以继续到步骤S690。如果与被无效的地址IA相对应的大块存储有效数据,则其可以被确定为不可用。之后,处理可以继续到步骤S650。
当未存储被无效的地址IA或当被无效的地址IA错误时,处理可以继续到步骤S650。在步骤S650中,地址检查电路ACC可以基于在前的索引寄存器PR来确定是否存在在前的索引PI。当与目标行列相关联的在前的索引PI未被存储在在前的索引寄存器PR中时,在步骤S670中,地址检查电路ACC可以从在前的索引PI起搜索地址表格AT以发现存储有效数据的大块。地址检查电路ACC可以选择所发现的大块。当与目标行列相关联的在前的索引PI未被存储在在前的索引寄存器PR中时,在步骤S670中,地址检查电路ACC可以从在前的索引PI起搜索地址表格AT以发现存储有效数据的大块。地址检查电路ACC可以选择所发现的大块。地址检查电路ACC可以选择所发现的大块。
之后,在步骤S690中,地址检查电路ACC可以分配所选择的大块的地址。
如上所述,当存在指示在前被无效的大块的被无效的地址IA时,可以不进行对地址表格AT的搜索。因此,可以提高选择大块的速度。
另外,当在每个行列处写入数据的操作开始时,如图26中所示,无效大块可以被集中在每个行列的后部的索引上。在这种情况下,通过基于在前的索引PI来搜索地址表格AT可以提高选择大块的速度。
图27是示出了存储器分配器MA的另一示例的图。因为在以基于大块的方式对存储器进行分配时,大块的大小大于或等于用于存储的值,所以可以生成未被使用的碎片。为了增加第一存储器模块SMOD的容量效率,可以以日志结构的方式来分配存储器。参考图27,存储器分配器MA可以管理报头,以便关于下一个分配请求——例如,请求大小RS——返回所分配的地址ADDR。存储器分配器MA可以基于存储器分配请求来返回报头,并且可以根据所请求的存储器的大小来移动报头的位置。根据本发明构思的至少一个示例实施例,可以返回为“0x1234”的报头并且可以通过加法器ADD来将报头移位(例如,增加)如同所请求的大小RS一样多。
图28是示出了日志结构方式的存储器分配器MA中的多报头示例的图。参考图28,存储器分配器MA可以基于存储器分配请求——即,请求大小RS——来选择多个报头HEAD1至HEAD2中的一个。报头可以根据存储器分配请求——例如,请求大小RS——的种类而变化,以及因此值可以被分类并且存储为与存储器请求的属性相对应。例如,在对象缓存中,访问模式可以根据值的大小而变化。具有相对地小的大小的值可以具有频繁的访问模式,而具有相对地小的大小的值可以具有低频率的访问模式。当使用多个报头HEAD1和HEAD2时,基于值的大小,值可以被存储在不同的第二存储器模块SMOD中或被存储在第二存储器模块SMOD的不同的存储器设备中。例如,在其中存储有具有相对地大的大小的值的第二存储器模块SMOD或存储设备的访问频率可以低于在其中存储有具有相对地小的大小的值的第二存储器模块SMOD或存储设备的访问频率。通过上述描述,可以根据在第二存储器模块SMOD或存储器设备中所存储的值的大小,来调整其中存储器***100进入省电模式的策略。
根据本发明构思的至少一个示例实施例,第一选择器SEL1可以基于请求大小RS来选择第一报头HEAD1和第二报头HEAD2中的一个。当选择了第一报头HEAD1时,第一报头HEAD1——例如,“0x4567”——可以被输出到第二选择器SEL2。可以通过加法器ADD1将第一报头HEAD1移位(例如,增加)如同请求大小RS一样多。当选择第二报头HEAD2时,第二报头HEAD2——例如,“0x1234”——可以被输出到第二选择器SEL2。可以通过加法器ADD2将第二报头HEAD2移位(例如,增加)如同请求大小RS一样多。第二选择器SEL2可以基于请求大小RS来选择第一报头HEAD1和第二报头HEAD2中的一个。
图29是示出了其中当使用日志结构方式的存储器分配器时在存储器中存储值和与值相关联的元数据的示例的图。参考图29,存储器分配器MA可以在第二存储器模块SOMD的存储空间中分配与对报头的大小和元数据的大小加和的值相对应的大小,并且可以调整报头的位置。值存取电路VAC(参考图27)可以将值与元数据一起进行存储。
如图29中所示,根据本发明构思的至少一个实施例,存储第一值Value1和与第一值Value1相对应的第一元数据M2、第二值Value2和与第二值Value2相对应的第二元数据M2以及第三值Value3和与第三值Value3相对应的第三元数据。每个元数据可以包括有效信息、关于值或与对值和元数据进行加和的值相对应的大小有关的信息、或者哈希表格信息。
根据本发明构思的至少一个示例实施例,当请求关于在前存储的值的写入操作时,即,当请求更新时,值存取电路VAC可以将在前存储的值和与在前存储的值相关联的元数据的有效性一起更新。
根据本发明构思的至少一个示例实施例,当执行无用单元收集时,可以扫描在其中要执行无用单元收集的区域。扫描可以包括读取元数据并且确定元数据的有效性。当元数据有效时,可以关于有效的元数据和与有效的元数据相关联的值来分配新的存储空间,并且有效的元数据和与有效的元数据相关联的值可以被复制到所分配的存储空间。可以基于在元数据中所包括的大小信息来扫描在在前扫描的值之后所存储的值的元数据。
图30是示出了图16中所示的数据平面电路DPC2的应用的框图。参考图16和图30,数据平面电路DPC2’可以包括接口电路IIC2、解码器DC2、哈希计算器HC、存储器分配器MA、哈希表格管理器HTM、物理电路PHY、值存取电路VAC以及无用单元收集电路GCC。与图16的数据平面电路DPC2相比,数据平面电路DPC2’可以进一步包括无用单元收集电路GCC。
无用单元收集电路GCC可以基于在存储电路SC2中所存储的第二处理表格PT2来执行无用单元收集。无用单元收集可以包括聚集散落在访问表格AT上的有效大块的操作。例如,无用单元收集电路GCC可以基于地址表格AT通过复制有效大块的数据来聚集有效大块。第二处理表格PT2可以包括无用单元收集策略,诸如执行无用单元收集的时间点和条件以及执行无用单元收集的方法。第二处理表格PT2可以通过第一存储器模块MODk的控制平面CP2来控制和更新,并且可以带外接口OOB(以上参考图8讨论了其示例)或接口电路IC1至ICm(以上参考图2讨论了其示例)来更新。
当使用日志结构方式的存储器分配器MA时,无用单元收集电路GCC可以被配置为扫描其中存储有值的存储器区域,基于扫描结果仅将有效数据复制到新的区域,以及允许存储器分配器MA分配新的区域。根据实施的方式,当值被存储在存储器中时,值是否有效和值的大小可以被包括在元数据中。当扫描存储器区域时,可以基于存储器区域的元数据来确定值是否有效,并且有效值可以被复制到新的区域。
图31是示出了图27中所示的数据平面电路DPC2’的应用的框图。参考图30和图31,数据平面电路DPC2”可以包括接口电路IIC2、解码器DC2、哈希计算器HC、存储器分配器MA、哈希表格管理器HTM、物理电路PHY、值存取电路VAC、无用单元收集电路GCC、数据处理电路DPS以及数据预处理电路DPPC。与图30的数据平面电路DPC2’相比,数据平面电路DPC2”可以进一步数据处理电路DPS和数据预处理电路DPPC。
数据预处理电路DPPS可以从哈希表格管理器HTM接收值和地址ADDR,并且基于在第三处理表格PT3中所存储的策略来关于所接收的值执行数据预处理(例如,压缩、加密等)。数据预处理电路DPPS可以将预处理的值和地址ADDR输出到值存取电路VAC。数据处理电路DPS可以基于第三处理表格PT3中所存储的策略来关于从值存取电路VAC所接收的值执行数据处理(例如,解压、解密等)。当值是图像数据时,数据处理电路DPS可以进一步执行诸如尺寸缩减的数据处理。数据处理电路DPS可以将处理的值发送到接口电路IIC2。
图32是示出了图31中所示的数据平面电路DPC2”的应用的框图。参考图31和图32,数据平面电路DPC2”’可以包括接口电路IIC2、解码器DC2、哈希计算器HC、存储器分配器MA、哈希表格管理器HTM、物理电路PHY、值存取电路VAC、及无用单元收集电路GCC、数据处理电路DPS以及业务(traffic)管理器TM。与图31的数据平面电路DPC2”相比,数据平面电路DPC2”’可以进一步包括业务管理器TM。根据本发明构思的至少一个示例实施例,业务管理器TM可以通过电路或电路***来例示。
根据本发明构思的至少一个示例实施例,可以使用两个或更多个数据块DC来接收一个基于键-值存储的请求。在这种情况下,第一数据块可以包括关于数据块的数目的信息。业务管理器TM可以检测关于数据块的数目的信息。业务管理器TM可以基于所检测到的数目来控制解码器DC2、哈希计算器HC以及哈希表格管理器HD,以便采用一个基于键-值存储的请求来处理两个或更多个数据块DC。
例如,解码器DC2可以通过业务管理器TM来控制,并且可以基于两个或更多个数据块DC来生成请求大小RS和请求计数RC。解码器DC2可以被控制为使得一次从两个或更多个数据块DC中检测到键。哈希计算器HC可以被控制为使得一次关于两个或更多个数据块DC执行哈希操作。哈希表格管理器HTM可以被控制为使得一次关于两个或更多个数据块似乎用哈希表格HT。
根据本发明构思的至少一些示例实施例,存储器模块、接口电路、以及存储器模块和接口电路之间的切换电路的数据处理路径可以采用硬件来实施。因此,可以提高服务器设备的速度。
已经如此描述了本发明构思的示例实施例,将明显的是上述示例实施例可以按照许多方式进行变化。这样的变换不被认为脱离本发明构思的示例实施例的精神和范围,并且将对于本领域计数人员明显的所有这样的修改意欲被包括在所附权利要求的范围内。
Claims (20)
1.一种服务器设备,包括:
多个接口电路,被配置为与网络连接,并且
执行格式转换以将多个网络分组当中的网络分组转换为数据块,所述网络分组是与网络通信的分组,所述数据块遵从内部格式;
多个存储器模块,彼此独立地进行操作;以及
切换电路,连接在所述多个接口电路与所述多个存储器模块之间,所述切换电路被配置为
基于从所述多个接口电路所传送的数据块的属性来从所述多个存储器模块当中选择至少一个存储器模块,并且
将数据块发送到所选择的存储器模块,
其中,所选择的至少一个存储器模块被配置为
对数据块的至少一部分执行哈希操作,以从数据块中生成哈希数据,并且
在由哈希数据指示的存储器区域上执行与数据块相关联的读取操作或写入操作。
2.根据权利要求1所述的服务器设备,其中,切换电路被配置为当
数据块包括键和值,
所述数据块的所述键包括特定的信息,以及
与所述键和所述值相关联的命令是写入命令时,
从所述多个存储器模块当中选择两个或更多个存储器模块。
3.根据权利要求2所述的服务器设备,其中,切换电路被配置为当
数据块包括键,
所述数据块的所述键包括特定的信息,以及
与所述键相关联的命令是读取命令时,
选择所述两个或更多个存储器模块中的一个。
4.根据权利要求1所述的服务器设备,其中,切换电路被配置为当特定的存储器模块被选择时,重新选择除了所述特定的存储器模块之外的另一存储器模块,所述特定的存储器模块是所述多个存储器模块当中的存储器模块,所述特定的存储器模块被注册在切换表格处。
5.根据权利要求1所述的服务器设备,其中,切换电路被配置为当数据块包括键并且所述数据块的所述键包括特定的信息时,从所述多个存储器模块当中选择特定的存储器模块,所述特定的存储器模块通过切换表格来指定。
6.根据权利要求1所述的服务器设备,其中,切换电路包括:
存储电路,被配置为存储包括与数据块的属性相对应的切换策略的切换表格;以及
数据平面电路,被配置为基于在存储电路中所存储的切换表格来选择至少一个存储器模块,所述至少一个存储器模块与所述数据块的所述属性相对应。
7.根据权利要求6所述的服务器设备,进一步包括:
控制平面电路,被配置为当在数据平面电路处发生异常时,响应于来自所述数据平面电路的调用来对所述异常进行处理。
8.根据权利要求7所述的服务器设备,其中,控制平面被配置为当切换策略不具有用于所述数据块的信息时,生成用于所述数据块的新策略并且将新策略并入切换策略。
9.根据权利要求7所述的服务器设备,其中,服务器设备被配置为使得由控制平面电路所驱动的控制平面通过多个接口电路或带外(OOB)接口中的至少一个来更新。
10.根据权利要求6所述的服务器设备,其中,服务器设备被配置为使得切换表格通过多个接口电路或带外(OOB)接口中的至少一个来更新。
11.根据权利要求6所述的服务器设备,进一步包括:
管理电路,被配置为通过监视所述多个存储器模块当中的模块的负载并且基于监视结果更新切换表格,来执行关于所述多个存储器模块的负载均衡。
12.根据权利要求11所述的服务器设备,其中,管理电路被配置为当服务器设备的负载大于或等于阈值时,将数据块通过所述多个接口电路转发到外部设备。
13.根据权利要求11所述的服务器设备,其中,管理电路被配置为当服务器设备的负载大于或等于阈值时,将数据块通过带外(OOB) 接口转发到外部设备。
14.根据权利要求1所述的服务器设备,其中,所述多个接口电路当中的每个接口电路包括:传输控制协议/互联网协议(TCP/IP)减负电路,其被配置为从接收自网络的网络分组当中的TCP/IP分组提取有效载荷。
15.根据权利要求1所述的服务器设备,其中,
数据块包括至少一个分组,
所述至少一个分组包括报头和有效载荷,并且
切换电路被配置为基于所述至少一个分组的有效载荷来选择至少一个存储器模块。
16.根据权利要求1所述的服务器设备,
其中,所述多个存储器模块中的存储器模块是第一存储器模块,并且所述多个存储器模块当中的每个第一存储器模块包括:
多个第二存储器模块,以及
被配置为控制所述多个第二存储器模块的存储器控制器,并且其中,所述存储器控制器包括:
存储电路,被配置为存储包括与数据块的第一属性相对应的存储器分配策略的第一处理表格;以及
数据平面电路,被配置为
基于在存储电路中所存储的第一处理表格和数据块的第一属性来分配在其中要写入数据块的存储空间,并且
在所分配的存储空间处写入数据块。
17.根据权利要求16所述的服务器设备,其中,服务器设备被配置为使得第一处理表格通过多个接口电路或带外(OOB)接口中的至少一个来更新。
18.根据权利要求16所述的服务器设备,其中,
存储电路被配置为进一步存储包括无用单元收集的运行策略的第二处理表格和包括数据块的处理策略的第三处理表格;并且
数据平面电路被配置为:
基于第二处理表格来执行无用单元收集,在无用单元收集过程中,聚集存储有所述多个存储器模块的有效数据的存储空间;以及
基于第三处理表格来执行图像数据的压缩、解压、加密、解密或缩小尺寸中的至少一个。
19.一种服务器设备,包括:
多个接口电路,被配置为与网络连接,并且
在从网络所接收的网络分组中检测键;
多个存储器模块,彼此独立地进行操作;以及
切换电路,连接在所述多个接口电路与所述多个存储器模块之间并且被配置为
基于从所述多个接口电路所传送的键来从所述多个存储器模块当中选择至少一个存储器模块,并且
将键发送到所选择的至少一个存储器模块,
所选择的至少一个存储器模块被配置为
对键执行哈希操作,以从键中生成哈希数据,并且
在由哈希数据指示的存储器区域上来执行与键相关联的读取操作或写入操作。
20.一种服务器设备的操作方法,所述服务器设备包括多个接口电路、切换电路以及多个第一存储器模块,每个第一存储器模块包括存储器控制器和多个第二存储器模块,所述方法包括:
在所述多个接口电路中的一个处,接收网络分组;
在所述多个接口电路中的一个处,将所述网络分组转换为内部分组;
在所述切换电路处,从所述内部分组中提取第一属性;
在所述切换电路处,基于所述第一属性从所述多个第一存储器模块当中选择至少一个第一存储器模块;
通过切换电路向所选择的至少一个第一存储器模块发送所述内部分组;
在所选择的至少一个第一存储器模块的存储器控制器处,在所述内部分组的至少一部分上执行哈希操作,以生成哈希数据;
在所选择的至少一个第一存储器模块的存储器控制器处,根据哈希数据来从所述多个第二存储器模块当中选择第二存储器模块;以及
在所选择的第二存储器模块中,存储所述内部分组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2015-0124259 | 2015-09-02 | ||
KR1020150124259A KR102416004B1 (ko) | 2015-09-02 | 2015-09-02 | 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106487704A CN106487704A (zh) | 2017-03-08 |
CN106487704B true CN106487704B (zh) | 2021-07-27 |
Family
ID=58104397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610797865.4A Active CN106487704B (zh) | 2015-09-02 | 2016-08-31 | 包括接口电路、存储器模块以及切换电路的服务器设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10440112B2 (zh) |
KR (1) | KR102416004B1 (zh) |
CN (1) | CN106487704B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423358B1 (en) * | 2017-05-31 | 2019-09-24 | FMAD Engineering GK | High-speed data packet capture and storage with playback capabilities |
US11036438B2 (en) | 2017-05-31 | 2021-06-15 | Fmad Engineering Kabushiki Gaisha | Efficient storage architecture for high speed packet capture |
US10990326B2 (en) | 2017-05-31 | 2021-04-27 | Fmad Engineering Kabushiki Gaisha | High-speed replay of captured data packets |
US11392317B2 (en) | 2017-05-31 | 2022-07-19 | Fmad Engineering Kabushiki Gaisha | High speed data packet flow processing |
US11003663B2 (en) * | 2017-10-10 | 2021-05-11 | Paypal, Inc. | Configuration-aware micro-database caches |
US11151073B1 (en) * | 2019-05-13 | 2021-10-19 | Barefoot Networks, Inc. | Augmenting data plane functionality with field programmable integrated circuits |
KR20210034726A (ko) | 2019-09-20 | 2021-03-31 | 삼성전자주식회사 | 메모리 모듈, 그것을 제어하는 메모리 제어기의 에러 정정 방법, 및 그것을포함하는 컴퓨팅 시스템 |
US11669570B2 (en) * | 2019-10-31 | 2023-06-06 | EMC IP Holding Company LLC | Amortized execution of updates to a hardened hash table |
US11119914B2 (en) * | 2019-11-15 | 2021-09-14 | Micron Technology, Inc. | Method of operating a memory with dynamically changeable attributes |
US11675513B2 (en) | 2021-08-16 | 2023-06-13 | International Business Machines Corporation | Selectively shearing data when manipulating data during record processing |
US11513704B1 (en) * | 2021-08-16 | 2022-11-29 | International Business Machines Corporation | Selectively evicting data from internal memory during record processing |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099926B1 (en) | 2000-07-06 | 2006-08-29 | International Business Machines Corporation | Object caching and update queuing technique to improve performance and resource utilization |
US7734859B2 (en) * | 2007-04-20 | 2010-06-08 | Nuon, Inc | Virtualization of a host computer's native I/O system architecture via the internet and LANs |
US9143566B2 (en) * | 2008-01-16 | 2015-09-22 | Netapp, Inc. | Non-disruptive storage caching using spliced cache appliances with packet inspection intelligence |
US8732386B2 (en) | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
US8176256B2 (en) | 2008-06-12 | 2012-05-08 | Microsoft Corporation | Cache regions |
AU2010276462B1 (en) | 2010-12-27 | 2012-01-12 | Limelight Networks, Inc. | Partial object caching |
US8429606B2 (en) | 2009-05-29 | 2013-04-23 | Red Hat, Inc. | Transactional object container |
US8725951B2 (en) | 2010-04-12 | 2014-05-13 | Sandisk Enterprise Ip Llc | Efficient flash memory-based object store |
US8868487B2 (en) * | 2010-04-12 | 2014-10-21 | Sandisk Enterprise Ip Llc | Event processing in a flash memory-based object store |
US20130159452A1 (en) | 2011-12-06 | 2013-06-20 | Manuel Alejandro Saldana De Fuentes | Memory Server Architecture |
US9519486B1 (en) | 2012-11-21 | 2016-12-13 | Xilinx, Inc. | Method of and device for processing data using a pipeline of processing blocks |
US9037556B2 (en) | 2012-12-03 | 2015-05-19 | Vmware, Inc. | Distributed, transactional key-value store |
US9112794B2 (en) | 2013-11-05 | 2015-08-18 | International Business Machines Corporation | Dynamic multipath forwarding in software defined data center networks |
JP6025149B2 (ja) * | 2013-11-06 | 2016-11-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データを管理するシステムおよび方法 |
US9323457B2 (en) | 2013-12-09 | 2016-04-26 | Xilinx, Inc. | Memory arrangement for implementation of high-throughput key-value stores |
US9723071B2 (en) * | 2014-09-29 | 2017-08-01 | Samsung Electronics Co., Ltd. | High bandwidth peer-to-peer switched key-value caching |
US9372998B2 (en) * | 2014-10-07 | 2016-06-21 | Storagecraft Technology Corporation | Client-side encryption in a deduplication backup system |
US10581997B2 (en) * | 2015-03-05 | 2020-03-03 | Intel Corporation | Techniques for storing or accessing a key-value item |
US9986569B2 (en) * | 2015-03-18 | 2018-05-29 | Microsoft Technology Licensing, Llc | Battery-backed RAM for wearable devices |
US20160277413A1 (en) * | 2015-03-20 | 2016-09-22 | Kabushiki Kaisha Toshiba | Access Permission Device, Access Permission Method, Program, and Communicating System |
JP6268116B2 (ja) * | 2015-03-20 | 2018-01-24 | 東芝メモリ株式会社 | データ処理装置、データ処理方法およびコンピュータプログラム |
US20160315866A1 (en) * | 2015-04-27 | 2016-10-27 | Telefonaktiebolaget L M Ericsson (Publ) | Service based intelligent packet-in mechanism for openflow switches |
US9652344B2 (en) * | 2015-06-11 | 2017-05-16 | International Business Machines Corporation | In-memory data store replication through remote memory sharing |
-
2015
- 2015-09-02 KR KR1020150124259A patent/KR102416004B1/ko active IP Right Grant
-
2016
- 2016-08-31 CN CN201610797865.4A patent/CN106487704B/zh active Active
- 2016-09-01 US US15/254,400 patent/US10440112B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20170027921A (ko) | 2017-03-13 |
US20170063992A1 (en) | 2017-03-02 |
KR102416004B1 (ko) | 2022-07-04 |
US10440112B2 (en) | 2019-10-08 |
CN106487704A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106487704B (zh) | 包括接口电路、存储器模块以及切换电路的服务器设备 | |
US11025544B2 (en) | Network interface for data transport in heterogeneous computing environments | |
CN104462225B (zh) | 一种数据读取的方法、装置及*** | |
US20150127880A1 (en) | Efficient implementations for mapreduce systems | |
KR102043276B1 (ko) | 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법 | |
US8402248B2 (en) | Explicitly regioned memory organization in a network element | |
US20200379922A1 (en) | Adaptive routing for pooled and tiered data architectures | |
EP3161669B1 (en) | Memcached systems having local caches | |
WO2015110046A1 (zh) | Cache的管理方法及装置 | |
KR20190033284A (ko) | PCIe P2P 접속된 스토리지 장치들 사이의 데이터 전송 방법 및 시스템 | |
US11487473B2 (en) | Memory system | |
US10198180B2 (en) | Method and apparatus for managing storage device | |
US20170062025A1 (en) | Memory system including plural memory devices forming plural ranks and memory controller accessing plural memory ranks and method of operating the memory system | |
JP2017537404A (ja) | メモリアクセス方法、スイッチ、およびマルチプロセッサシステム | |
US11288012B2 (en) | Memory system | |
CN107003940B (zh) | 用于在非统一存储器架构中提供改进的延迟的***和方法 | |
US20110246667A1 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
US20240205292A1 (en) | Data processing method and apparatus, computer device, and computer-readable storage medium | |
US20210191777A1 (en) | Memory Allocation in a Hierarchical Memory System | |
US20150293859A1 (en) | Memory Access Processing Method, Memory Chip, and System Based on Memory Chip Interconnection | |
US11157191B2 (en) | Intra-device notational data movement system | |
CN103500108A (zh) | ***内存访问方法、节点控制器和多处理器*** | |
US8510513B2 (en) | Network load reducing method and node structure for multiprocessor system with distributed memory | |
WO2016201998A1 (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及*** | |
JP2014095946A (ja) | 情報処理装置、情報処理システムの制御方法及び情報処理システムの制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |