KR102416004B1 - 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치 - Google Patents

인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치 Download PDF

Info

Publication number
KR102416004B1
KR102416004B1 KR1020150124259A KR20150124259A KR102416004B1 KR 102416004 B1 KR102416004 B1 KR 102416004B1 KR 1020150124259 A KR1020150124259 A KR 1020150124259A KR 20150124259 A KR20150124259 A KR 20150124259A KR 102416004 B1 KR102416004 B1 KR 102416004B1
Authority
KR
South Korea
Prior art keywords
data
memory
circuit
data chunk
memory modules
Prior art date
Application number
KR1020150124259A
Other languages
English (en)
Other versions
KR20170027921A (ko
Inventor
백준호
김한준
강정욱
김동욱
양승준
이덕주
이진호
정용택
조상연
Original Assignee
삼성전자주식회사
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150124259A priority Critical patent/KR102416004B1/ko
Priority to CN201610797865.4A priority patent/CN106487704B/zh
Priority to US15/254,400 priority patent/US10440112B2/en
Publication of KR20170027921A publication Critical patent/KR20170027921A/ko
Application granted granted Critical
Publication of KR102416004B1 publication Critical patent/KR102416004B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked 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

인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치{SERVER DEVICE INCLUDIG INTERFACE CIRCUITS, MEMORY MODULES AND SWITCH CIRCUIT CONNECTING INTERFACE CIRCUITS AND MEMORY MODULES}
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치에 관한 것이다.
데이터센터는 어플리케이션 서버, 데이터베이스 서버, 그리고 캐시 서버를 포함한다. 어플리케이션 서버는 클라이언트의 요청을 처리하고, 클라이언트의 요청에 따라 데이터베이스 서버 또는 캐시 서버를 액세스할 수 있다. 데이터베이스 서버는 어플리케이션 서버에 의해 처리된 데이터를 저장하고, 어플리케이션 서버의 요청에 따라 저장된 데이터를 어플리케이션 서버로 제공할 수 있다. 캐시 서버는 데이터베이스 서버에 저장된 데이터를 임시로 저장하며, 데이터베이스 서버보다 더 높은 응답 속도로 어플리케이션 서버의 요청에 응답할 수 있다.
캐시 서버 또는 데이터베이스 서버의 응답 속도는 데이터센터의 동작 속도에 영향을 주는 주요한 인자(factor)이다. 따라서, 데이터센터의 속도를 향상시키기 위하여, 더 향상된 동작 속도를 갖는 캐시 서버 또는 데이터베이스 서버에 대한 연구가 지속적으로 요구되고 있다.
본 발명의 목적은 향상된 동작 속도를 갖는 서버 장치를 제공하는 데에 있다.
본 발명의 실시 예들에 따른 서버 장치는, 복수의 네트워트 노드들과 연결되고, 복수의 네트워크 노드들과 통신되는 네트워크 패킷들 및 내부 포맷에 따른 데이터 청크들을 서로 변환하도록 구성되는 복수의 인터페이스 회로들, 서로 독립적으로 동작하는 복수의 메모리 모듈들, 그리고 복수의 인터페이스 회로들 및 복수의 메모리 모듈들 사이에 연결되고, 복수의 인터페이스 회로들로부터 전달되는 데이터 청크의 특성(attribute)에 따라 복수의 메모리 모듈들 중 적어도 하나의 메모리 모듈을 선택하고, 그리고 선택된 메모리 모듈로 데이터 청크를 전달하도록 구성되는 스위치 회로를 포함한다. 선택된 메모리 모듈은 데이터 청크를 디코딩하고, 디코딩의 결과에 따라 데이터 청크와 연관된 읽기 또는 쓰기를 수행하도록 구성된다.
본 발명의 실시 예들에 따른 서버 장치는, 복수의 네트워트 노드들과 연결되고, 복수의 네트워크 노드들과 통신되는 네트워크 패킷들로부터 키(key)들을 검출하도록 구성되는 복수의 인터페이스 회로들, 서로 독립적으로 동작하는 복수의 메모리 모듈들, 그리고 복수의 인터페이스 회로들 및 복수의 메모리 모듈들 사이에 연결되고, 복수의 인터페이스 회로들로부터 전달되는 키에 따라 복수의 메모리 모듈들 중 적어도 하나의 메모리 모듈을 선택하고, 그리고 선택된 메모리 모듈로 키를 전달하도록 구성되는 스위치 회로를 포함한다. 선택된 메모리 모듈은 키를 디코딩하고, 디코딩의 결과에 따라 키와 연관된 값(value)의 읽기 또는 쓰기를 수행하도록 구성된다.
본 발명의 실시 예들에 따르면, 메모리 모듈들, 인터페이스 회로들, 그리고 메모리 모듈들 및 인터페이스 회로들 사이의 스위치 회로의 데이터 처리 경로가 하드웨어로 구현된다. 따라서, 향상된 속도를 갖는 서버 장치가 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 네트워크를 보여준다.
도 2는 본 발명의 실시 예에 따른 객체 캐시 서버 장치를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 서버 장치의 동작 방법을 보여주는 순서도이다.
도 4는 스위치 테이블의 예를 보여준다.
도 5는 데이터 플레인 회로를 보여주는 블록도이다.
도 6은 도 2의 객체 캐시 서버 장치의 응용 예를 보여주는 블록도이다.
도 7은 객체 캐시 서버 장치의 동작 방법을 보여주는 순서도이다.
도 8은 도 6의 객체 캐시 서버 장치의 응용 예를 보여주는 블록도이다.
도 9는 객체 캐시 서버 장치들이 대역외 인터페이스를 통해 서로 연결되는 예를 보여준다.
도 10은 도 9의 객체 캐시 서버 장치들의 부하들의 예를 보여주는 테이블이다.
도 11은 도 9의 객체 캐시 서버 장치들이 데이터 청크를 포워드하는 예를 보여준다.
도 12는 데이터 청크가 포워드된 때에 생성되는 치환 테이블(RT)의 예를 보여준다.
도 13은 도 9의 객체 캐시 서버 장치들이 데이터 청크를 포워드하는 예를 보여준다.
도 14는 도 9의 객체 캐시 서버 장치들이 부하 보고를 수행하는 예를 보여준다.
도 16은 본 발명의 실시 예에 따른 데이터 플레인 회로를 보여주는 블록도이다.
도 17은 본 발명의 실시 예에 따른 데이터 플레인 회로의 동작 방법을 보여주는 순서도이다.
도 18은 본 발명의 실시 예에 따른 제2 메모리 모듈을 보여주는 블록도이다.
도 19는 메모리 할당기가 제1 내지 제4 랭크들을 조직화하는 방법을 보여주는 순서도이다.
도 20은 메모리 할당기가 제1 내지 제4 슬랩 클래스들에 기반하여 제1 내지 제4 랭크들을 조직화한 예를 보여준다.
도 21은 메모리 할당기가 쓰기 데이터에 슬랩을 할당하는 방법을 보여주는 순서도이다.
도 22는 본 발명의 실시 예에 따른 메모리 할당기를 보여주는 블록도이다.
도 23은 무효화 레지스터가 저장하는 무효화 어드레스의 예를 보여주는 테이블이다.
도 24는 이전 인덱스 레지스터가 저장하는 이전 인덱스의 예를 보여주는 테이블이다.
도 25는 어드레스 테이블의 예를 보여주는 테이블이다.
도 26은 메모리 할당기가 무효화 어드레스, 이전 인덱스 및 어드레스 테이블을 이용하여 슬랩을 할당하는 방법을 보여주는 순서도이다.
도 27은 메모리 할당기의 다른 예를 보여준다.
도 28은 로그 구조 방식의 메모리 할당기에서 멀티 헤드가 사용되는 예를 보여준다.
도 29는 상술된 로그 구조 방식의 메모리 할당기를 사용하는 경우, 메모리에 값과 그와 연관된 메타 데이터가 저장된 예를 보여준다.
도 30은 도 16의 데이터 플레인 회로의 응용 예를 보여주는 블록도이다.
도 31은 도 27의 데이터 플레인 회로의 응용 예를 보여주는 블록도이다.
도 32는 도 31의 데이터 플레인 회로의 응용 예를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 네트워크를 보여준다. 도 1을 참조하면, 컴퓨터 네트워크는 클라이언트 그룹(CG), 제 네트워크(NET1), 어플리케이션 서버 그룹(ASG), 제2 네트워크(NET2), 객체 캐시 서버 그룹(OCSG), 그리고 데이터베이스 서버 그룹(DSG)을 포함한다.
클라이언트 그룹(CG)은 복수의 클라이언트 장치들(C)을 포함한다. 클라이언트 장치들(C)은 제1 네트워크(NET1)를 통해 어플리케이션 서버 그룹(ASG)과 통신할 수 있다. 클라이언트 장치들(C)은 스마트폰, 스마트패드, 노트북컴퓨터, 개인용컴퓨터, 스마트카메라, 스마트텔레비전 등과 같은 다양한 장치들을 포함할 수 있다. 제1 네트워크(NET1)은 인터넷을 포함할 수 있다.
어플리케이션 서버 그룹(ASG)은 복수의 어플리케이션 서버 장치들(AS)을 포함한다. 어플리케이션 서버 장치들(AS)은 제1 네트워크(NET1)를 통해 클라이언트 장치들(C)로부터 다양한 요청들을 수신할 수 있다. 어플리케이션 서버 장치들(AS)은 클라이언트 장치들(C)이 저장을 요청한 데이터를 제2 네트워크(NET2)를 통해 데이터베이스 서버 그룹(DSG)에 저장할 수 있다. 어플리케이션 서버 장치들(AS)은 데이터베이스 서버 그룹(DSG)에 저장되는 데이터를 객체 캐시 서버 그룹(OCSG)에 저장할 수 있다. 어플리케이션 서버 장치들(AS)은 클라이언트 장치들(C)이 읽기를 요청한 데이터를 객체 캐시 서버 그룹(OCSG)으로부터 제2 네트워크(NET2)를 통해 획득할 수 있다. 요청된 데이터가 객체 캐시 서버 그룹(OCSG)에 존재하지 않는 경우, 어플리케이션 서버 장치들(AS)은 클라이언트 장치들(C)이 읽기를 요청한 데이터를 데이터베이스 서버 그룹(DSG)으로부터 제2 네트워크(NET2)를 통해 획득할 수 있다.
데이터베이스 서버 그룹(DSG)은 복수의 데이터베이스 서버 장치들(DS)을 포함한다. 데이터베이스 서버 장치들(DS) 각각은 불휘발성의 대용량 저장소를 제공할 수 있다.
객체 캐시 서버 그룹(OCSG)은 복수의 객치 캐시 서버 장치들(OCS)을 포함한다. 객채 캐시 서버 장치들(OCS)은 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 객체 캐시 서버 장치들(OCS)은 제2 네트워크(NET2)를 통해 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 읽히는 데이터를 임시로 저장할 수 있다. 객체 캐시 서버 장치들(OCS) 각각은 고속의 저장소를 제공할 수 있다. 예를 들어, 객체 캐시 서버 장치들(OCS)은 DRAM (Dynamic Random Access Memory) 기반의 저장소를 제공할 수 있다.
제2 네트워크(NET2)는 지역 네트워크(LAN) 또는 인트라넷을 포함할 수 있다.
도 2는 본 발명의 실시 예에 따른 객체 캐시 서버 장치(OCS)를 보여주는 블록도이다. 도 2를 참조하면, 객체 캐시 서버 장치(OCS)는 복수의 인터페이스 회로들(IC1~ICm), 스위치 회로(SWC), 그리고 복수의 제1 메모리 모듈들(MOD1~MODn)을 포함한다.
복수의 인터페이스 회로들(IC1~ICm)은 제1 데이터 포맷에 따라 제2 네트워트(NET2)와 통신하고, 제2 데이터 포맷에 따라 스위치 장치(SWC)와 통신할 수 있다. 복수의 인터페이스 회로들(IC1~ICm) 각각은 제1 데이터 포맷과 제2 데이터 포맷 사이의 변환을 수행하는 오프로드 회로(OC)를 포함할 수 있다. 예를 들어, 제2 네트워크(NET2)와 통신되는 제1 데이터 포맷은 TCP/IP 포맷일 수 있다. 스위치 회로(SWC)와 통신되는 제2 데이터 포맷은 PCIe 포맷 또는 객체 캐시 서버 장치(OCS)의 제조자에 의해 정의되는 벤더(vendor) 포맷일 수 있다. 이하에서, 간결한 설명을 위하여, 제2 데이터 포맷은 PCIe 포맷인 것으로 가정되나, 이는 본 발명의 기술적 사상을 한정하지 않는다.
오프로드 회로(OC)는 TCP/IP 포맷의 패킷으로부터 헤더를 제거하여 페이로드(payload)를 검출할 수 있다. 오프로드 회로(OC)는 검출된 페이로드(payload)에 헤더를 추가하여 PCIe 포맷의 패킷인 데이터 청크(DC)를 출력할 수 있다.
예시적으로, TCP/IP 포맷의 패킷의 페이로드(이하에서, TCP/IP 페이로드) 및 데이터 청크(DC)의 페이로드는 동일한 정보를 공유할 수 있다. 예를 들어, TCP/IP 페이로드 및 데이터 청크(DC)의 페이로드는 키(key), 값(value) 및 설정 커맨드(SET)를 포함할 수 있다. TCP/IP 페이로드 및 데이터 청크(DC)의 페이로드는 (key) 및 획득 커맨드(GET)를 포함할 수 있다. 즉, TCP/IP 페이로드 및 데이터 청크(DC)의 페이로드는 키-값 저장(key-value store)에 기반한 데이터 구조의 액세스 요청(쓰기 요청 또는 읽기 요청)을 포함할 수 있다..
예를 들어, 오프로드 회로(OC)는 TCP/IP 포맷과 연관된 정보를 데이터 청크(DC)의 페이로드로서 추가할 수 있다. 예를 들어, 오프로드 회로(OC)는 TCP/IP 포맷의 정보 중에서 소스 IP, 소스 포트, 목표 IP, 목표 포트 등과 같은 정보들을 데이터 청크(DC)의 페이로드로서 추가할 수 있다.
복수의 인터페이스 회로들(IC1~ICm)은 제2 네트워크(NET2)에 연결된 서로 다른 네트워크 노드들로 식별될 수 있다. 예를 들어, 복수의 인터페이스 회로들(IC1, ICm)은 제2 네트워크(NET2)에서 서로 다른 IP들 또는 서로 다른 포트들로 식별될 수 있다.
스위치 회로(SWC)는 제1 인터페이스(INF1)를 통해 복수의 인터페이스 회로들(IC1~ICm)과 연결되고, 제2 인터페이스(INF2)를 통해 복수의 제1 메모리 모듈들(MOD1~MODn)과 통신한다. 제1 인터페이스(INF1) 및 제2 인터페이스(INF2)는 PCIe 인터페이스일 수 있다.
스위치 회로(SWC)는 복수의 인터페이스 회로들(IC1~ICm)과 복수의 제1 메모리 모듈들(MOD1~MODn) 사이에서 스위칭(또는 라우팅) 동작을 수행할 수 있다. 스위치 회로(SWC)는 복수의 인터페이스 회로들(IC1~ICm) 중 소스 인터페이스 회로로부터 데이터 청크(DC)를 수신할 수 있다. 스위치 회로(SWC)는 수신된 데이터 청크(DC), 더 상세하게는 데이터 청크(DC)의 페이로드에 기반하여, 복수의 제1 메모리 모듈들(MOD1~MODn) 중 적어도 하나의 목표 메모리 모듈을 선택할 수 있다. 스위치 회로(SWC)는 수신된 데이터 청크(DC)를 목표 메모리 모듈로 전송할 수 있다. 적어도 하나의 목표 메모리 모듈로부터 응답이 수신되면, 스위치 회로(SWC)는 수신된 응답을 소스 인터페이스 회로로 전달할 수 있다.
스위치 회로(SWC)는 저장 회로(SC), 데이터 플레인 회로(DPC), 그리고 제어 플레인 회로(CPC)를 포함한다.
저장 회로(SC)는 스위치 테이블(ST) 및 정책 풀(PP)을 포함할 수 있다. 스위치 테이블(ST)은 데이터 청크(DC)의 페이로드의 특성에 따른 스위칭(또는 라우팅) 정책들을 포함할 수 있다. 정책 풀(PP)은 예외 상황(exception)이 발생할 때에 수행할 수 있는 정책들을 포함할 수 있다. 저장 회로(SC)는 참조 테이블을 제공하는 간결한 구조를 가질 수 있다. 예를 들어, 저장 회로(SC)는 TCAM (Ternary Content Addressable Memory)을 포함할 수 있다.
데이터 플레인 회로(DPC)는 인터페이스 회로들(IC1~ICm)로부터 수신되는 데이터 청크(DC)의 특성을 검출하고, 검출된 특성 및 스위치 테이블(ST)을 참조하여 데이터 청크(DC)의 스위칭(또는 라우팅) 정책을 판별할 수 있다. 데이터 플레인 회로(DPC)는 판별된 정책에 따라 적어도 하나의 목표 메모리 모듈을 선택하고, 선택된 적어도 하나의 목표 메모리 모듈로 데이터 청크(DC)를 전송할 수 있다. 데이터 플레인 회로(DPC)는 하드웨어로 구현된다.
데이터 플레인 회로(DPC)에서 스위치 테이블(ST)에 등록되지 않은 특성을 갖는 데이터 청크(DC)가 수신되거나 또는 에러와 같은 예외 상황(exception)이 발생한 경우, 데이터 플레인 회로(DPC)는 제어 플레인 회로(CPC)로 예외 신호(EXC)를 출력할 수 있다.
제어 플레인 회로(CPC)는 연산 및 제어 기능을 수행하며, 프로그램 가능한 제어 플레인(CP)을 구동할 수 있다. 예외 신호(EXC)가 활성화된 경우에, 제어 플레인(CP)은 예외 상황을 판단하고 예외 상황을 처리할 수 있다. 예를 들어, 스위치 테이블(ST)에 등록되지 않은 특성을 갖는 데이터 청크(DC)가 수신된 경우, 제어 플레인(CP)은 정책 풀(PP)을 참조하여 새로운 스위칭(또는 라우팅) 정책을 판별하고, 판별된 새로운 스위칭(또는 라우팅) 정책을 스위치 테이블(ST)에 등록할 수 있다. 에러가 발생한 경우, 제어 플레인(CP)은 에러 메시지를 출력하거나 데이터 청크(DC)의 재전송을 요청하는 메시지를 소스 인터페이스 회로로 출력할 수 있다.
복수의 제1 메모리 모듈들(MOD1~MODn)은 스위치 회로(SWC)로부터 데이터 청크(DC)를 수신할 수 있다. 복수의 제1 메모리 모듈들(MOD1~MODn)은 데이터 청크(DC)를 디코딩하고, 디코딩의 결과에 따라 쓰기 또는 읽기를 수행할 수 있다. 예를 들어, 복수의 제1 메모리 모듈들(MOD1~MODn) 각각은 데이터 청크(DC)의 헤더를 제거하여 페이로드를 검출할 수 있다. 검출된 페이로드가 키, 값 및 설정 커맨드(CMD)를 포함하면, 복수의 제1 메모리 모듈들(MOD1~MODn) 각각은 쓰기를 수행할 수 있다. 검출된 페이로드카 키 및 획득 커맨드(GET)를 포함하면, 복수의 제1 메모리 모듈들(MOD1~MODn) 각각은 읽기를 수행할 수 있다.
도 2를 참조하여 설명된 바와 같이, 제2 네트워크(NET2)를 통해 수신되는 TCP/IP 포맷의 패킷은 프로세서의 제어 없이 오프로드 회로(OC)에 의해 하드웨어 기반으로 PCIe 포맷의 데이터 청크(DC)로 변환된다. 데이터 청크(DC)는 데이터 플레인 회로(DPC)에 의해 하드웨어 기반으로 제1 메모리 모듈들(MOD1~MODn)로 스위칭(또는 라우팅)된다. 제2 네트워크(NET2)를 통해 수신되는 패킷이 하드웨어 기반으로 처리되어 제1 메모리 모듈들(MOD1~MODn)로 전달되므로, 객체 캐시 서버 장치(OCS)의 동작 속도는 소프트웨어가 개입되는 다른 서버 장치들보다 월등하게 향상된다.
예시적으로, 객체 캐시 서버 장치(OCS)는 제어 플레인 회로(CPC)에서 구동되는 제어 플레인(CP), 저장 회로(SC)에 저장된 스위치 테이블(ST) 및 정책 풀(PP)의 갱신 기능을 지원할 수 있다. 예를 들어, 스위치 테이블(ST), 정책 풀(PP), 또는 제어 플레인(CP)은 복수의 인터페이스 회로들(IC1~ICm)을 통해 갱신될 수 있다.
예시적으로, 객체 캐시 서버 장치(OCS)는 키-값 저장 기반의 데이터 구조를 운용할 수 있다. 하나의 키-값 저장 기반의 요청은 둘 이상의 데이터 청크들로 분할되어 수신될 수 있다. 이때, 첫 번째 데이터 청크는 전체 데이터 청크들의 수에 대한 정보를 포함할 수 있다. 스위치 회로(SWC)는 첫 번째 데이터 청크에 포함된 정보를 참조하여, 전체 데이터 청크들이 전달되는 동안 스위칭(또는 라우팅) 경로를 유지할 수 있다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 서버 장치(OCS)의 동작 방법을 보여주는 순서도이다. 예시적으로, 데이터 플레인 회로(DPC)의 동작 방법이 도 3에 도시되어 있다.
도 2 및 도 3을 참조하면, S110 단계에서, 데이터 플레인 회로(DPC)는 데이터 청크(DC)를 수신한다. S120 단계에서, 데이터 플레인 회로(DPC)는 수신된 데이터 청크(DC)로부터 특성을 추출한다. S130 단계에서, 데이터 플레인 회로(DPC)는 추출된 특성을 스위치 테이블(ST)과 비교한다.
S140 단계에서 예외 상황이 발생하지 않으면, 예를 들어 추출된 특성에 대응하는 스위칭(또는 라우팅) 정책이 스위칭 테이블(ST)에 존재하면, S150 단계에서, 데이터 플레인 회로(DPC)는 스위칭(또는 라우팅) 정책에 따라 적어도 하나의 제1 메모리 모듈을 선택한다. 이후에, S160 단계에서, 데이터 플레인 회로(DPC)는 선택된 적어도 하나의 제1 메모리 모듈로 데이터 청크(DC)를 전송한다.
S140 단계에서 예외 상황이 발생하면, 예를 들어 데이터 청크(DC)의 특성에 대응하는 스위칭(또는 라우팅) 정책이 스위치 테이블(ST)에 존재하지 않으면, 데이터 플레인 회로(DPC)는 예외 신호(EXC)를 제어 플레인 회로(CPC)로 전달한다. S170 단계에서, 제어 플레인(CP)은 추출된 특성에 대응하는 새로운 스위칭(또는 라우팅) 정책을 생성하고, 생성된 정책을 스위칭 테이블(ST)에 등록할 수 있다. 이후에, S150 단계가 수행된다.
S110 단계 내지 S160 단계는 데이터 플레인 회로(DPC)에 의해 수행된다. 즉, 예외 상황이 발생하지 않는 경우, 데이터 청크(DC)는 데이터 플레인 회로(DPC)에 의해 하드웨어 기반으로 스위칭(또는 라우팅)된다. 따라서, 스위칭 회로(SWC)의 스위칭(또는 라우팅) 속도가 향상된다.
S170 단계는 제어 플레인(CP)에 의해 수행된다. 즉, 예외 상황이 발생하는 경우, 제어 플레인(CP)은 예외 상황을 파악하고 예외 상황을 처리할 수 있다. 제어 플레인(CP)은 소프트웨어 기반이며, 따라서 다양한 상황들을 고려하여 유연하게 구현될 수 있다. 또한, 제어 플레인(CP)은 갱신될 수 있으므로, 환경 또는 상황의 변화에 유연하게 대응할 수 있으며 디버깅이 가능하다. 따라서, 스위칭 회로(SWC)의 유연성이 향상된다.
도 4는 스위치 테이블(ST)의 예를 보여준다. 도 2 및 도 4를 참조하면, 스위치 테이블(ST)은 데이터 청크(DC)의 특성(attribute) 및 그에 따른 스위칭(또는 라우팅) 정책을 포함한다.
특성은 키(key) 및 커맨드(CMD)를 포함할 수 있다. 키(key)는 데이터 청크(DC)의 페이로드에 포함되는 키-값 저장 기반의 정보일 수 있다. 커맨드(CMD)는 데이터 청크(DC)의 페이로드에 포함되는 키-값 저장 기반의 커맨드일 수 있다.
예시적으로, 특성은 TCP/IP 포맷과 연관된 정보를 더 포함할 수 있다. 예를 들어, 특성은 소스 IP (SRC_IP), 소스 포트(SRC_PT), 목표 IP (DST_IP), 목표 포트(DST_PT)를 더 포함할 수 있다
정책은 목표 메모리 모듈(MOD) 및 동작(ACT)을 포함할 수 있다. 목표 메모리 모듈(MOD)은 복수의 제1 메모리 모듈들(MOD1~MODn) 중에서 스위칭(또는 라우팅)의 대상으로 선택되는 메모리 모듈들일 수 있다. 동작(ACT)은 목표 메모리 모듈(ACT)에 대해 수행되는 스위칭(또는 라우팅) 동작일 수 있다.
스위치 테이블(ST)에 등록된 제1 정책(P1)은 'img*'를 포함하는 키를 갖고, 설정 커맨드(SET)를 갖는 데이터 청크(DC)를 대상으로 한다. 제1 정책(P1)에 대응하는 데이터 청크(DC)가 수신되면, 모든 제1 메모리 모듈들(MOD1~MODn)에 데이터 청크(DC)가 멀티캐스트된다. 예시적으로, 제1 정책(P1)은 복수의 제1 메모리 모듈들(MOD1~MODn)에 사본들(replicas)을 분산 기입하는 데에 사용될 수 있다.
스위치 테이블(ST)에 등록된 제2 정책(P2)은 'img*'를 포함하는 키를 갖고, 획득 커맨드(GET)를 갖는 데이터 청크(DC)를 대상으로 한다. 제2 정책(P2)에 대응하는 데이터 청크(DC)가 수신되면, 모든 제1 메모리 모듈들(MOD1~MODn)에 대해 임의로 데이터 청크(DC)가 전달될 수 있다. 예를 들어, 제1 메모리 모듈들(MOD1~MODn) 중에서 하나의 메모리 모듈이 선택되고, 선택된 메모리 모듈로 데이터 청크(DC)가 전달될 수 있다. 제2 정책(P2)은 제1 메모리 모듈들(MOD1~MODn)에 사본들(replicas)이 분산 저장된 데이터를 읽는 데에 사용될 수 있다.
스위치 테이블(ST)에 등록된 제3 정책(P3)은 데이터 청크(DC)의 목표가 특정한 메모리 모듈(MOD2)인 경우에, 해당 데이터 청크(DC)를 다른 메모리 모듈로 포워드하는 데에 사용될 수 있다. 예를 들어, 스위치 테이블(ST)에 등록된 스위칭(또는 라우팅) 정책에 따라 선택된 목표 메모리 블록이 특정한 메모리 모듈(MOD2)인 경우에, 해당 데이터 청크(DC)는 목표 메모리 모듈 대신에 포워드 대상인 메모리 모듈로 전달될 수 있다. 제3 정책(P3)은 특정한 메모리 모듈(MOD2)이 동작하지 않거나 또는 특정한 메모리 모듈(MOD2)에 부하가 집중된 경우에 사용될 수 있다.
스위치 테이블(ST)에 등록된 제4 정책(P4)은 'a*'를 포함하는 키를 갖는 데이터 청크(DC)를 특정한 메모리 모듈(MOD1)로 전송하는 데에 사용될 수 있다.
예시적으로, 스위치 테이블(ST)에 등록된 정책들(P1~P4)은 우선 순위를 가질 수 있다. 데이터 플레인 회로(DPC)는 데이터 청크의 특성이 둘 이상의 정책들에 대응할 때, 높은 우선 순위를 갖는 정책을 선택할 수 있다.
예시적으로, 스위치 테이블(ST)에서 사용되는 특성의 수, 종류 및 콘텐츠, 그리고 스위칭(또는 라우팅 정책)의 수, 종류 및 콘텐츠는 복수의 인터페이스 회로들(IC1~ICm)을 통해 갱신될 수 있다. 스위치 테이블(ST)에 등록된 정책들(P1~P4)의 수, 종류 및 콘텐츠는 복수의 인터페이스 회로들(IC1~ICm) 또는 제어 플레인(CP)을 통해 갱신될 수 있다.
도 5는 데이터 플레인 회로(DPC)를 보여주는 블록도이다. 도 2 및 도 5를 참조하면, 데이터 플레인 회로(DPC)는 인터페이스 회로(IIC), 디코더(DC1), 검색 블록(LB, Lookup Block), 그리고 스위치 패브릭(SF)을 포함한다. 인터페이스 회로(IIC)는 복수의 인터페이스 회로들(IC1~ICm) 중 하나로부터 제1 인터페이스(INF1)를 통해 데이터 청크(DC)를 수신할 수 있다. 인터페이스 회로(IIC)는 수신된 데이터 청크(DC), 수신된 데이터 청크(DC)의 페이로드, 또는 수신된 데이터 청크(DC)의 페이로드의 일부(예를 들어, 커맨드 및 키)를 디코더(DC1)로 전달할 수 있다.
디코더(DC1)는 인터페이스 회로(IIC)의 출력으로부터 데이터 청크(DC)의 특성(ATTR)을 검출할 수 있다. 검출된 특성(ATTR)은 검색 블록(LB)으로 전달된다.
검색 블록(LB)은 특성(ATTR)을 스위치 테이블(ST)과 비교하도록 구성된다. 예시적으로, 검색 블록(LB)은 복수의 검색 회로들(LC)을 포함할 수 있다. 복수의 검색 회로들(LC) 각각은 하나의 특성을 스위치 테이블(ST)과 비교할 수 있다. 즉, 검색 블록(LB)은 다단 구조로 특성(ATTR)을 스위치 테이블(ST)가 비교할 수 있다. 검색 블록(LB)은 특성(ATTR)에 대응하는 정책(P)을 스위치 테이블(ST)로부터 검출하고, 스위치 패브릭(SF)으로 전달할 수 있다.
스위치 패브릭(SF)은 검색 블록(LB)으로부터 출력되는 정책(P)에 따라, 인터페이스 회로(IIC)를 복수의 제1 메모리 모듈들(MOD1~MODn) 중 적어도 하나의 메모리 모듈과 연결할 수 있다.
인터페이스 회로(IIC)는 스위치 패브릭(SF)을 통해 복수의 제1 메모리 모듈들(MOD1~MODn) 중 선택된 적어도 하나의 메모리 모듈로 데이터 청크(DC)를 전달할 수 있다.
예시적으로, 디코더(DC1) 및 검색 블록(LB)은 병렬적으로 복수개 제공될 수 있다. 디코더(DC1) 및 검색 블록(LB)은 인터페이스 회로들(IC1~ICm)의 수 만큼 복수개 제공되어, 인터페이스 회로들(IC1~ICm)로부터 출력되는 데이터 청크(DC)를 각각 병렬적으로 처리할 수 있다.
도 6은 도 2의 객체 캐시 서버 장치(OCS)의 응용 예를 보여주는 블록도이다. 도 6을 참조하면, 객체 캐시 서버 장치(OCSa)는 복수의 인터페이스 회로들(IC1~ICm), 스위치 회로(SWC), 복수의 제1 메모리 모듈들(MOD1~MODn), 그리고 관리 회로(MGC)를 포함한다. 도 2의 객체 캐시 서버 장치(OCS)와 비교하면, 객체 캐시 서버 장치(OCSa)는 관리 회로(MGC)를 더 포함한다.
관리 회로(MGC)는 중앙 처리 장치(CPU), 메인 메모리(MEM), 그리고 스토리지(STOR)를 포함할 수 있다. 관리 회로(MGC)는 모니터 경로(MP)를 통해 복수의 제1 메모리 모듈들(MOD1~MODn)의 부하들을 모니터할 수 있다. 관리 회로(MGC)는 모니터 결과에 따라 제1 메모리 모듈들(MOD1~MODn)에 대해 부하 밸런싱(load balancing)을 수행할 수 있다. 예를 들어, 관리 회로(MGC)는 부하가 높은 메모리 모듈 대신에 부하가 낮은 메모리 모듈로 데이터 청크(DC)가 전송되도록 제어 경로(CTRL)를 통해 스위치 테이블(ST)을 갱신함으로써, 부하 밸런싱을 수행할 수 있다.
도 7은 객체 캐시 서버 장치(OCSa)의 동작 방법을 보여주는 순서도이다. 예시적으로, 관리 회로(MGC)의 동작 방법이 도 7에 도시되어 있다. 도 6 및 도 7을 참조하면, S210 단계에서, 관리 회로(MGC)는 제1 메모리 모듈들(MOD1~MODn)의 부하들을 모니터한다.
S220 단계에서, 관리 회로(MGC)는 제1 메모리 모듈들(MOD1~MODn)의 부하들이 불균형한지 판별한다. 예를 들어, 제1 메모리 모듈들(MOD1~MODn)의 부하들 중에서 가장 큰 부하와 가장 작은 부하 사이의 차이가 임계값 이상이면, 부하들이 불균형한 것으로 판별될 수 있다. 제1 메모리 모듈들(MOD1~MODn)의 부하들의 평균값 및 평균값과 가장 먼 외곽값 아이의 차이가 임계값 이상이면, 부하들이 불균형한 것으로 판별될 수 있다. 제1 메모리 모듈들(MOD1~MODn)의 부하들의 분산 또는 표준편차가 임계값 이상이면, 부하들이 불균형한 것으로 판별될 수 있다.
제1 메모리 모듈들(MOD1~MODn)의 부하들이 불균형하면, S230 단계에서, 관리 회로(MGC)는 부하 밸런싱을 수행할 수 있다.
도 6 및 도 7을 참조하여 설명된 바와 같이, 객체 캐시 서버 장치(OCS)는 제2 네트워크(NET2)를 통해 수신되는 TCP/IP 패킷을 하드웨어 기반으로 고속 처리하여 제1 메모리 모듈들(MOD1~MODn)로 전달하도록 구성된다. 또한, 객체 캐시 서버 장치(OCS)는 관리 회로(MGC)를 이용하여 제1 메모리 모듈들(MOD1~MODn) 사이의 부하 밸런싱을 수행할 수 있다.
도 8은 도 6의 객체 캐시 서버 장치(OCSa)의 응용 예를 보여주는 블록도이다. 도 8을 참조하면, 객체 캐시 서버 장치(OCSb)는 복수의 인터페이스 회로들(IC1~ICm), 스위치 회로(SWC), 복수의 제1 메모리 모듈들(MOD1~MODn), 그리고 관리 회로(MGC)를 포함한다. 도 6의 객체 캐시 서버 장치(OCSa)와 비교하면, 객체 캐시 서버 장치(OCSb)의 관리 회로(MGC)는 통신 경로(CP)를 통해 인터페이스 회로들(IC1~ICm)과 통신하도록 구성되고, 인터페이스 회로들(IC1~ICm)을 경유하지 않고 외부 장치(EXT)와 통신하는 대역외 통신 인터페이스(OOB)를 더 포함한다.
관리 회로(MGC)는 통신 경로(CP) 및 인터페이스 회로들(IC1~ICm)을 통해 제2 네트워크(NET2)와 통신할 수 있다. 예를 들어, 관리 회로(MGC)는 제2 네트워크(NET2) 내의 스위치(또는 라우터)에 객체 캐시 서버 장치(OCSb)의 부하에 대한 정보를 전송할 수 있다. 관리 회로(MGC)는 제2 네트워크(NET2)를 통해 외부의 객체 캐시 서버 장치와 부하에 대한 정보를 공유할 수 있다. 객체 캐시 서버 장치(OCSb)의 부하가 큰 경우, 관리 회로(MGC)는 제2 네트워크(NET2)를 통해 외부의 객체 캐시 서버 장치로 데이터 청크(DC)를 포워드할 수 있다. 예를 들어, 관리 회로(MGC)는 데이터 청크(DC)를 포워드하도록 인터페이스 회로들(IC1~ICm) 중 적어도 하나에 요청할 수 있다. 인터페이스 회로들(IC1~ICm)은 관리 회로(MGC)에 의해 요청된 데이터 청크(DC)를 포워드할 수 있다.
관리 회로(MGC)는 대역외 인터페이스(OOB)를 통해 외부 장치(EXT)와 통신할 수 있다. 예를 들어, 관리 회로(MGC)는 대역외 인터페이스(OOB)를 통해 외부의 객체 캐시 서버 장치와 통신할 수 있다. 관리 회로(MGC)는 대역외 인터페이스(OOB)를 통해 외부의 객체 캐시 서버 장치외 부하에 대한 정보를 공유할 수 있다. 관리 회로(MGC)는 대역외 인터페이스(OOB)를 통해 외부의 부하 관리 장치와 통신할 수 있다. 관리 회로(MGC)는 외부의 부하 관리 장치의 제어에 따라, 인터페이스 회로들(IC1~ICm)을 통해 외부의 부하 관리 장치로 데이터 청크(DC)를 포워드하거나 외부의 부하 관리 장치로부터 데이터 청크(DC)를 수신할 수 있다.
예시적으로, 스위치 테이블(ST), 정책 풀(PP), 또는 제어 플레인(CP)은 대역외 인터페이스(OOB)를 통해 갱신될 수 있다.
도 9는 객체 캐시 서버 장치들(OCS1~OCS4)이 대역외 인터페이스(OOB)를 통해 서로 연결되는 예를 보여준다. 도 9를 참조하면, 객체 캐시 서버 장치들(OCS1~OCS4)은 I2C 인터페이스를 통해 서로 연결될 수 있다. 즉, 대역외 인터페이스(OOB)는 I2C 인터페이스일 수 있다. 그러나, 대역외 인터페이스(OOB)는 I2C 인터페이스로 한정되지 않는다.
도 9에서, 제1 내지 제4 객체 캐시 서버 장치들(OCS1~OCS4)이 제2 네트워크(NET2)에 연결되며, I2C 인터페이스를 통해 서로 연결되는 것으로 도시되어 있다. 그러나, 객체 캐시 서버 장치들의 수는 한정되지 않는다.
도 10은 도 9의 객체 캐시 서버 장치들(OCS1~OCS4)의 부하들의 예를 보여주는 테이블이다. 도 9 및 도 10을 참조하면, 제1 객체 캐시 서버 장치(OCS1)의 부하 레벨은 로우 레벨일 수 있다. 제2 및 제3 객체 캐시 서버 장치들(OCS2, OCS3)의 부하 레벨들은 중간 레벨들일 수 있다. 제4 객체 캐시 서버 장치(OCS4)의 부하 레벨은 하이 레벨일 수 있다.
제1 내지 제4 객체 캐시 서버 장치들(OCS1~OCS4)은 제2 네트워크(NET2) 또는 I2C 인터페이스를 통해 부하 정보를 공유할 수 있다. 예를 들어, 제1 내지 제4 객체 캐시 서버 장치들(OCS1~OCS4) 각각은 도 10에 도시된 부하 정보를 가질 수 있다.
도 11은 도 9의 객체 캐시 서버 장치들(OCS1~OCS4)이 데이터 청크를 포워드하는 예를 보여준다. 도 9 내지 도 11을 참조하면, 제1 단계(S1)에서, 제2 네트워크(NET2)는 제4 객체 캐시 서버 장치(OCS4)로 데이터 청크(DC)를 전송할 수 있다.
도 10에 도시된 바와 같이, 제4 객체 캐시 서버 장치(OCS4)의 부하 레벨은 하이 레벨일 수 있다. 제2 단계(S2)에서, 제4 객체 캐시 서버 장치(OCS4)는 수신된 데이터 청크(DC)를 다른 객체 캐시 서버 장치로 포워드할 수 있다. 예를 들어, 제4 객체 캐시 서버 장치(OCS4)는 가장 낮은 부하 레벨을 갖는 제1 객체 캐시 서버 장치(OCS1)로 I2C 인터페이스를 통해 데이터 청크(DC)를 포워드할 수 있다.
예를 들어, 제2 네트워크(NET2)의 스위치(또는 라우터)가 객체 캐시 서버 장치들(OCS1~OCS4)의 포워드를 지원하는 경우, 제4 객체 캐시 서버 장치(OCS4)는 데이터 청크(DC)를 포워드했음을 알리는 메시지를 제2 네트워크(NET2)의 스위치(또는 라우터)에 전달할 수 있다. 수신된 메시지에 따라, 제2 네트워크(NET2)의 스위치(또는 라우터)는 목표 IP 또는 목표 포트를 갱신함으로써, 데이터 청크(DC)가 제1 객체 캐시 서버 장치(OCS1)에 저장된 것으로 식별할 수 있다.
다른 예로서, 제4 객체 캐시 서버 장치(OCS4)는 데이터 청크(DC)가 제1 객체 캐시 서버 장치(OCS1)로 포워드되었음을 가리키는 치환 테이블(replacement table)을 생성 및 관리할 수 있다.
도 12는 데이터 청크(DC)가 포워드된 때에 생성되는 치환 테이블(RT)의 예를 보여준다. 도 12를 참조하면, 치환 테이블(RT)은 데이터 청크(DC)의 페이로드에 포함된 키, 포워드의 소스 장치, 그리고 포워드의 목표 장치에 대한 정보를 치환 테이블(RT)에 등록할 수 있다.
예를 들어, 포워드된 데이터 청크(DC)의 키는 'IMM'이고, 소스는 제4 객체 캐시 서버 장치(OCS4)이고, 목표는 제1 객체 캐시 서버 장치(OCS1)일 수 있다.
치환 테이블(RT)이 생성된 후에 제4 객체 캐시 서버 장치(OCS4)에 'IMM'의 키를 갖는 데이터 청크(DC)가 수신되면, 제4 객체 캐시 서버 장치(OCS4)는 해당 데이터 청크(DC)를 제1 객체 캐시 서버 장치(OCS1)로 포워드할 수 있다.
예시적으로, 치환 테이블(RT)은 포워드의 소스인 제4 객체 캐시 서버 장치(OCS4)에 생성될 수 있다. 치환 테이블(RT)은 포워드의 소스인 제4 객체 캐시 서버 장치(OCS4)와 포워드의 목표인 제1 객체 캐시 서버 장치(OCS1)에서 공유될 수 있다. 치환 테이블(RT)은 제2 네트워크(NET2)를 공유하는 제1 내지 제4 객체 캐시 서버 장치들(OCS1~OCS4)에서 공유될 수 있다.
도 13은 도 9의 객체 캐시 서버 장치들(OCS1~OCS4)이 데이터 청크를 포워드하는 예를 보여준다. 도 9, 도 10 및 도 13을 참조하면, 제1 단계(S1)에서, 제2 네트워크(NET2)는 제4 객체 캐시 서버 장치(OCS4)로 데이터 청크(DC)를 전송할 수 있다.
도 10에 도시된 바와 같이, 제4 객체 캐시 서버 장치(OCS4)의 부하 레벨은 하이 레벨일 수 있다. 제4 객체 캐시 서버 장치(OCS4)는 수신된 데이터 청크(DC)를 다른 객체 캐시 서버 장치로 포워드할 수 있다. 예를 들어, 제2 단계(S2)에서, 제4 객체 캐시 서버 장치(OCS4)는 가장 낮은 부하 레벨을 갖는 제1 객체 캐시 서버 장치(OCS1)를 목표로 설정하고, 데이터 청크(DC)를 제2 네트워크(NET2)로 전송할 수 있다. 제3 단계(S3)에서, 제2 네트워크(NET2)는 데이터 청크(DC)를 제1 객체 캐시 서버 장치(OCS1)로 전달할 수 있다.
예를 들어, 제2 네트워크(NET2)의 스위치(또는 라우터)가 객체 캐시 서버 장치들(OCS1~OCS4)의 포워드를 지원하는 경우, 제4 객체 캐시 서버 장치(OCS4)는 데이터 청크(DC)를 포워드했음을 알리는 메시지를 제2 네트워크(NET2)의 스위치(또는 라우터)에 전달할 수 있다. 수신된 메시지에 따라, 제2 네트워크(NET2)의 스위치(또는 라우터)는 목표 IP 또는 목표 포트를 갱신함으로써, 데이터 청크(DC)가 제1 객체 캐시 서버 장치(OCS1)에 저장된 것으로 식별할 수 있다.
다른 예로서, 도 12에 도시된 바와 같이, 제4 객체 캐시 서버 장치(OCS4)는 데이터 청크(DC)가 제1 객체 캐시 서버 장치(OCS1)로 포워드되었음을 가리키는 치환 테이블(replacement table)을 생성 및 관리할 수 있다.
도 14는 도 9의 객체 캐시 서버 장치들이 부하 보고를 수행하는 예를 보여준다. 도 9, 도 10 및 도 14를 참조하면, 제1 단계(S1)에서, 제2 네트워크(NET2)는 제4 객체 캐시 서버 장치(OCS4)로 데이터 청크(DC)를 전송할 수 있다.
제2 단계(S2)에서, 제4 객체 캐시 서버 장치(OCS4)는 부하 보고 메시지(NT)를 제2 네트워크(NET2)로 전송할 수 있다. 부하 보고 메시지(NT)는 데이터 청크(DC)를 제1 객체 캐시 서버 장치(OCS1)로 포워드할 것을 요청하는 정보를 포함할 수 있다. 부하 보고 메시지(NT)는 도 10를 참조하여 설명된 테이블을 포함할 수 있다.
제3 단계(S3)에서, 제2 네트워크(NT2)는 부하 보고 메시지(NT)를 참조하여 데이터 청크(DC)를 제1 객체 캐시 서버 장치(OCS1)로 다시 전송할 수 있다.
도 15는 본 발명의 실시 예에 따른 제1 메모리 모듈(MODk)을 보여주는 블록도이다. 예시적으로, 도 2의 제1 메모리 블록들(MOD1~MODn) 중 하나가 도 15에 도시되어 있다.
도 15를 참조하면, 제1 메모리 모듈(MODk)은 복수의 제2 메모리 모듈들(SMOD) 및 메모리 컨트롤러(MC)를 포함한다. 복수의 제2 메모리 모듈들(SMOD) 각각은 복수의 메모리 장치들을 포함한다.
메모리 컨트롤러(MC)는 제3 인터페이스(INF3)를 통해 복수의 제2 메모리 모듈들(SMOD)을 제어하도록 구성된다. 예를 들어, 메모리 컨트롤러(MC)는 데이터 청크(DC)를 디코딩하고, 디코딩 결과에 따라 복수의 제2 메모리 모듈들(SMOD)로 데이터(DATA)를 전송하거나 복수의 제2 메모리 모듈들(SMOD)로부터 데이터(DATA)를 수신할 수 있다. 예를 들어, 제3 인터페이스(INF3)는 DIMM (Dual In-line Memory Module) 인터페이스일 수 있다.
메모리 컨트롤러(MC)는 데이터 플레인 회로(DPC2), 저장 회로(SC2), 그리고 제어 플레인 회로(CPC2)를 포함한다.
데이터 플레인 회로(DPC2)는 스위치 회로(SWC)로부터 데이터 청크(DC)를 수신할 수 있다. 데이터 플레인 회로(DPC2)는 데이터 청크(DC)를 디코딩할 수 있다. 디코딩 결과 및 저장 회로(PT)에 저장된 처리 테이블(PT)을 참조하여, 데이터 플레인 회로(DPC2)는 제2 메모리 모듈들(SMOD) 중 선택된 메모리 모듈에 데이터(DATA)를 기입하거나 선택된 메모리 모듈로부터 데이터(DATA)를 읽을 수 있다.
저장 회로(PT)는 처리 테이블(TP)을 저장할 수 있다. 처리 테이블(TP)은 데이터 플레인 (DPC2)이 데이터 청크(DC)를 처리하는 방법에 대한 정보를 포함할 수 있다.
제어 플레인 회로(CPC2)는 프로그램 가능한 제어 플레인(CP2)을 구동하도록 구성된다. 제어 플레인(CP2)은 데이터 플레인 회로(DPC2)에서 예외 상황(exception)이 발생한 경우에 예외 상황을 처리할 수 있다. 제어 플레인(CP2)은 예외 상황을 처리하기 위하여 처리 테이블(PT)을 갱신할 수 있다.
예시적으로, 제1 메모리 모듈(MODk)은 처리 테이블(PT) 또는 제어 플레인(CP2)의 알고리즘의 갱신을 지원할 수 있다. 도 1 또는 도 8을 참조하여 설명된 것과 같이, 처리 테이블(PT) 또는 제어 플레인(CP2)은 복수의 인터페이스 회로들(IC1~ICm)을 통해 또는 대역외 인터페이스(OOB)를 통해 갱신될 수 있다.
상술된 바와 같이, 제1 메모리 모듈(MODk)에서, 데이터 청크(DC)의 디코딩 및 제2 메모리 모듈들(SMOD)의 액세스는 하드웨어로 구현된 데이터 플레인 회로(DPC2)에 의해 수행된다. 따라서, 제1 메모리 모듈(MODk)의 동작 속도가 향상된다. 데이터 플레인 회로(DPC2)에서 발생하는 예외 상황은 제어 플레인 회로(CPC2)에서 구동되는 제어 플레인(CP2)에 의해 처리된다.
데이터 플레인 회로는(DPC2) 데이터 청크(DC)의 읽기 또는 쓰기와 연관된 동작들을 처리하며, 데이터 플레인 회로(DPC2)가 읽기 또는 쓰기와 연관된 동작을을 수행할 때에 참조하는 정책들은 처리 테이블(PT)에 기입될 수 있다. 예를 들어, 데이터 청크(DC)의 쓰기 시에 데이터 플레인 회로(DPC2)가 어떠한 정책에 따라 제2 메모리 모듈(SMOD)의 저장 공간을 할당할 지, 데이터 플레인 회로(DPC2)가 제1 메모리 모듈(SMOD)의 저장 공간의 관리를 위해 가비지 컬렉션을 수행할 때에 어떠한 저장 공간을 선택할 것인지 등과 같은 정책들이 처리 테이블(PT)에 기입될 수 있다. 처리 테이블(PT)은 제어 플레인(CP2)에 의해 갱신될 수 있다.
일반적인 데이터 처리가 모두 데이터 플레인 회로(DPC2)에 의해 수행되므로, 제1 메모리 모듈(MODk)의 동작 속도가 향상된다. 또한 데이터 플레인 회로(DPC2)에 의해 처리 불가능한 예외적인 상황은 제어 플레인(CP2)에 의해 처리되므로, 다양한 예외 상황에 대해 복잡한 처리가 가능하다. 제어 플레인(CP2)은 소프트웨어로 구성되며 갱신 가능하므로, 데이터 청크(DC)의 포맷이 변경, 커맨드(CMD)의 추가, 또는 추가적인 예외 상황에 대한 정책의 추가 등과 같은 변경이 제어 플레인(CP2)의 업데이트를 통해 달성되므로, 제1 메모리 모듈(MODk)의 유연성(flexibility)이 향상된다. 또한 제어 플레인(CP2)의 디버깅이 가능하므로, 제1 메모리 모듈(MODk)의 신뢰성이 향상된다. 그리고 제어 플레인(CP2)에 의해 처리 테이블(PT)이 갱신될 수 있으므로, 데이터 플레인의 정책 결정의 유연성이 증가한다.
도 16은 본 발명의 실시 예에 따른 데이터 플레인 회로(DPC2)를 보여주는 블록도이다. 도 15 및 도 16을 참조하면, 데이터 플레인 회로(DPC2)는 인터페이스 회로(IIC2), 디코더(DC2), 해시 계산기(HC), 메모리 할당기(MA), 해시 테이블 관리자(HTM), 물리 회로(PHY), 그리고 값 액세스 회로(VAC)를 포함한다.
인터페이스 회로(IIC2)는 스위치 회로(SWC)로부터 데이터 청크(DC)를 수신하거나, 스위치 회로(SWC)로 데이터 청크(DC)를 출력할 수 있다. 예를 들어, 쓰기 시에, 인터페이스 회로(IIC2)는 스위치 회로(SWC)로부터 키(KEY), 값(VALUE) 및 커맨드(CMD)를 포함하는 데이터 청크(DC)를 수신할 수 있다. 수신된 데이터 청크(DC)에 기반하여, 데이터 플레인 회로(DPC2)는 쓰기를 수행할 수 있다. 읽기 시에, 인터페이스 회로(IIC2)는 스위치 회로(SWC)로부터 키(KEY) 및 커맨드(CMD)를 포함하는 데이터 청크(DC)를 수신할 수 있다. 수신된 데이터 청크(DC)에 기반하여, 데이터 플레인 회로(DPC2)는 제2 메모리 모듈들(SMOD)로부터 값(VALUE)을 획득할 수 있다. 인터페이스 회로(IIC2)는 키(KEY) 및 획득된 값(VALUE)을 포함하는 데이터 청크(DC)를 생성하고, 생성된 데이터 청크(DC)를 스위치 회로(SWC)로 전송할 수 있다. 예시적으로, 인터페이스 회로(IIC2)는 PCIe 인터페이스에 기반하여 스위치 회로(SWC)와 통신할 수 있다.
인터페이스 회로(IIC2)는 값 액세스 회로(VAC)로부터 값(VALUE)을 수신할 수 있다. 쓰기 시에, 인터페이스 회로(IIC2)는 키(KEY), 값(VALUE) 및 커맨드(CMD)를 포함하는 데이터를 디코더(DC2)로 출력할 수 있다. 읽기 시에, 인터페이스 회로(IIC2)는 키(KEY) 및 커맨드(CMD)를 포함하는 데이터를 디코더(DC2)로 출력할 수 있다.
읽기 시에, 디코더(DC2)는 인터페이스 회로(IIC2)로부터 수신되는 데이터를 디코딩하여 키(KEY) 및 커맨드(CMD)를 추출할 수 있다. 디코더(DC2)는 추출된 키(KEY)를 해시 계산기(HC)로 출력할 수 있다.
쓰기 시에, 디코더(DC2)는 인터페이스 회로(IIC2)로부터 수신되는 데이터를 디코딩하여 키(KEY), 값(VALUE) 및 커맨드(CMD)를 추출할 수 있다. 디코더(DC2)는 추출된 키(KEY) 및 값(VALUE)을 해시 계산기(HC)로 출력할 수 있다. 디코더(DC2)는 값(VALUE)으로부터 요청 사이즈(RS) 또는 요청 사이즈(RS) 및 요청 카운트(RC)를 생성하고, 요청 사이즈(RS) 및 요청 카운트(RC)를 메모리 할당기(MA)로 출력할 수 있다. 요청 사이즈(RS) 및 요청 카운트(RC)는 도 17 내지 도 26을 참조하여 더 상세하게 설명된다.
해시 계산기(HC)는 디코더(DC2)로부터 키(KEY) 또는 키(KEY) 및 값(VALUE)을 수신할 수 있다. 해시 계산기(HC)는 수신된 키(KEY)에 대해 해시 동작을 수행하여 해시 데이터(HD)를 생성할 수 있다. 예를 블어, 해시 계산기(HC)는 수신된 키(KEY)에 대해 전해시(full hash) 또는 부분 해시(partial hash)를 수행할 수 있다. 해시 계산기(HC)는 해시 데이터(HD) 및 키(KEY) 또는 해시 데이터(HD), 키(KEY) 및 값(VALUE)을 해시 테이블 관리자(HTM)로 출력할 수 있다.
메모리 할당기(MA)는 디코더(DC2)로부터 요청 사이즈(RS) 및 요청 카운트(RC)를 수신한다. 메모리 할당기(MA)는 복수의 제2 메모리 모듈들(SMOD) 중에서 요청 사이즈(RS)에 대응하는 제2 메모리 모듈로부터 어드레스 테이블(AT)을 읽도록 물리 회로(PHY)를 제어할 수 있다. 메모리 할당기(MA)는 저장 회로(SC2)에 저장된 제1 처리 테이블(PT1)을 참조하여, 요청 사이즈(RS) 및 요청 카운트(RC)에 따라, 선택된 제2 메모리 모듈의 어드레스(ADDR)를 할당할 수 있다. 예를 들어, 요청 사이즈(RS) 및 요청 카운트(RC)는 쓰기 시에 요구되는 저장 공간을 가리킬 수 있다. 제1 처리 테이블(PT1)은 요구되는 저장 공간을 할당할 제2 메모리 모듈 및 해당 모듈 내의 메모리 장치를 선택하는 포함할 수 있다. 메모리 할당기(MA)는 제1 처리 테이블(PT1)의 정책에 따라, 요청 사이즈(RS) 및 요청 카운트(RC)에 의해 요청된 저장 공간을 할당하고, 할당된 저장 공간의 어드레스(ADDR)를 해시 테이블 관리자(HTM)로 출력할 수 있다.
쓰기 시에, 해시 테이블 관리자(HTM)는 해시 계산기(HC)로부터 키(KEY), 해시 데이터(HD) 및 값(VALUE)을 수신할 수 있다. 해시 테이블 관리자(HTM)는 메모리 할당기(MA)로부터 어드레스(ADDR)를 수신할 수 있다. 해시 테이블 관리자(HTM)는 복수의 제2 메모리 모듈들(SMOD) 중에서 해시 데이터(HD)가 가리키는 제2 메모리 모듈에 저장된 해시 테이블(HT)을 갱신하도록 물리 회로(PHY)를 제어할 수 있다. 예를 들어, 해시 테이블 관리자(HTM)는 키(KEY) 및 어드레스(ADDR)의 대응 관계에 대한 정보가 해시 테이블(HT)에 추가될 수 있다. 해시 테이블 관리자(HTM)는 어드레스(ADDR) 및 값(VALUE)을 값 액세스 회로(VAC)로 출력할 수 있다.
읽기 시에, 해시 테이블 관리자(HTM)는 해시 계산기(HC)로부터 키(KEY) 및 해시 데이터(HD)를 수신할 수 있다. 해시 테이블 관리자(HTM)는 복수의 제2 메모리 모듈들(SMOD) 중에서 해시 데이터(HD)가 가리키는 메모리 모듈의 해시 테이블(HT)을 읽도록 물리 회로(PHY)를 제어할 수 있다. 해시 테이블(HT)에 기반하여, 해시 테이블 관리자(HTM)는 키(KEY)에 대응하는 어드레스(ADDR)를 검출할 수 있다. 해시 테이블 관리자(HTM)는 검출된 어드레스(ADDR)를 값 액세스 회로(VAC)로 출력할 수 있다.
쓰기 시에, 값 액세스 회로(VAC)는 해시 테이블 관리자(HTM)로부터 어드레스(ADDR) 및 값(VALUE)을 수신할 수 있다. 값 액세스 회로(VAC)는 어드레스(ADDR)에 기반하여 값(VALUE)을 제2 메모리 모듈들(SMOD) 중 선택된 메모리 모듈에 기입할 수 있다.
읽기 시에, 값 액세스 회로(VAC)는 해시 테이블 관리자(HTM)로부터 어드레스(ADDR)를 수신할 수 있다. 값 액세스 회로(VAC)는 어드레스(ADDR)에 기반하여 값(VALUE)을 제2 메모리 모듈들(SMOD) 중 선택된 메모리 모듈로부터 읽을 수 있다.
물리 회로(PHY)는 복수의 제2 메모리 모듈들(SMOD)을 액세스할 수 있다. 예를 들어, 물리 회로(PHY)는 DIMM (Dual In-line Memory Module) 인터페이스에 기반하여 제2 메모리 모듈들(SMOD)을 제어할 수 있다.
도 17은 본 발명의 실시 예에 따른 데이터 플레인 회로(DPC2)의 동작 방법을 보여주는 순서도이다. 도 16 및 도 17을 참조하면, S310 단계에서, 데이터 플레인 회로(DPC2)는 스위치 회로(SWC)로부터 데이터를 수신한다. 예를 들어, 데이터 플레인 회로(DPC2)는 키(KEY) 또는 키(KEY) 및 값(VALUE)을 포함하는 데이터를 수신할 수 있다.
S320 단계에서, 데이터 플레인 회로(DPC2)는 키(KEY)에 대해 해시 동작을 수행하여 해시 데이터(HD)를 생성할 수 있다.
S330 단계에서, 데이터 플레인 회로(DPC2)는 쓰기 동작인지 또는 읽기 동작인지에 따라 후속 동작을 수행한다. 쓰기 동작인 경우, S340 단계에서, 데이터 플레인 회로(DPC2)는 해시 데이터(HD)를 이용하여 제2 메모리 모듈을 선택하고, 어드레스(ADDR)를 할당하고, 값(VALUE)을 기입하고, 그리고 키(KEY) 및 어드레스(ADDR)로 해시 테이블(HT)을 갱신한다. 읽기 동작인 경우, S350 단계에서, 데이터 플레인 회로(DPC2)는 해시 데이터(HD)를 이용하여 제2 메모리 모듈을 선택하고, 키(KEY)를 이용하여 해시 테이블(HT)로부터 어드레스(ADDR)를 검색하고, 그리고 값(VALUE)을 읽을 수 있다.
만약 해시 테이블(HT)에 해당 키(KEY)가 존재하지 않는 경우, 즉 어드레스(ADDR) 검색에 실패한 경우, 인터페이스 회로(IIC2)에 의해 객체 캐시 규약(Protocol)에 정의되어 있는 동작, 예를 들어 "Not Found" 응답 전송을 수행한다.
도 18은 본 발명의 실시 예에 따른 제2 메모리 모듈(SMOD)을 보여주는 블록도이다. 도 15 및 도 18을 참조하면, 제2 메모리 모듈(SMOD)은 복수의 메모리 장치들(DRAM)을 포함할 수 있다. 복수의 메모리 장치들(DRAM)은 동적 랜덤 액세스 메모리들(Dynamic Random Access Memories)을 포함할 수 있다. 그러나, 복수의 메모리 장치들(DRAM)의 종류는 한정되지 않는다.
복수의 메모리 장치들(DRAM)은 제1 내지 제4 랭크들(RANK1~RANK4)을 형성할 수 있다. 각 랭크는 메모리 컨트롤러(MC)에 의해 독립적으로 액세스될 수 있다. 선택된 랭크에 속한 메모리 장치들(DRAM)은 메모리 컨트롤러(MC)에 의해 병렬적으로 동시에 액세스될 수 있다. 제1 내지 제4 랭크들(RANK1~RANK4)을 형성하는 메모리 장치들(DRAM)은 동일한 구조 및 동일한 특성을 가질 수 있다. 예를 들어 메모리 장치들(DRAM)은 동종의(homogeneous) 메모리 장치들일 수 있다. 간결한 설명을 위하여 메모리 장치들(DRAM)이 제1 내지 제4 랭크들(RANK1~RANK4)을 형성하는 것으로 가정되나, 랭크들의 수는 한정되지 않는다.
도 19는 메모리 할당기(MA)가 제1 내지 제4 랭크들(RANK1~RANK4)을 조직화하는 방법을 보여주는 순서도이다. 예시적으로, 도 19의 조직화는 객체 캐시 서버 장치(OCS)의 초기화 시에 또는 객체 캐시 서버 장치(OCS)이 외부의 요청에 따라 재구성될 때에 수행될 수 있다.
도 1, 도 16 및 도 19를 참조하면, S410 단계에서, 메모리 할당기(MA)는 슬랩 클래스들(slab classes)을 설정한다. 예를 들어, 각 슬랩 클래스는 동일한 사이즈들을 갖는 동종의(homogeneous) 슬랩들(slabs)을 포함할 수 있다. 서로 다른 슬랩 클래스들은 서로 다른 사이즈들을 갖는 이종의(heterogeneous) 슬랩들을 포함할 수 있다. 각 슬랩은 쓰기 데이터, 예를 들어 값(VALUE), 에 할당되는 기본 단위일 수 있다.
예를 들어, 메모리 할당기(MA)는 슬랩의 제1 사이즈를 선택할 수 있다. 메모리 할당기(MA)는 제1 사이즈들을 갖는 슬랩들로 제1 슬랩 클래스를 형성할 수 있다. 메모리 할당기(MA)는 폼 팩터(form factor)를 선택할 수 있다. 예를 들어, 메모리 할당기(MA)는 '2'의 폼 팩터를 선택할 수 있다. 메모리 할당기(MA)는 제1 사이즈에 폼 팩터를 곱하여 제2 사이즈를 선택할 수 있다. 메모리 할당기(MA)는 제2 사이즈들을 갖는 슬랩들로 제2 슬랩 클래스를 형성할 수 있다. 마찬가지로, 메모리 할당기(MA)는 제k-1 사이즈에 폼 팩터를 곱하여 제k 사이즈를 선택할 수 있다. 메모리 할당기(MA)는 제k 사이즈들을 갖는 슬랩들로 제k 슬랩 클래스를 형성할 수 있다. 폼 팩터 및 슬랩 클래스들의 수는 조절될 수 있으며, 한정되지 않는다.
S420 단계에서, 메모리 할당기(MA)는 슬랩 클래스들을 랭크들(RANK1~RANK4)에 각각 할당한다. 예를 들어, 메모리 할당기(MA)는 하나의 슬랩 클래스를 하나 또는 둘 이상의 랭크들에 할당할 수 있다. 다른 예로서, 메모리 할당기(MA)는 하나의 랭크에 하나 또는 둘 이상의 슬랩 클래스들을 할당할 수 있다.
예시적으로, 랭크들(RANK) 및 슬랩 클래스들(SC) 사이의 대응 관계는 제1 처리 테이블(PT1)로서 저장 회로(SC2)에 저장될 수 있다. 예를 들어, 메모리 할당기(MA)는 제1 처리 테이블(PT1)에 따라 랭크들(RANK) 및 슬랩 클래스들(SC)을 설정할 수 있다. 메모리 할당기(MA)는 제1 처리 테이블(PT1)을 참조하여 어드레스(ADDR)를 할당할 수 있다.
도 20은 메모리 할당기(MA)가 제1 내지 제4 슬랩 클래스들(SC1~SC4)에 기반하여 제1 내지 제4 랭크들(RANK1~RANK4)을 조직화한 예를 보여준다. 예시적으로, 하나의 슬랩 클래스에 하나의 슬랩 클래스가 속한 때의 예가 도 20에 도시되어 있다.
도 20을 참조하면, 제1 랭크(RANK1)에 제1 슬랩 클래스(SC1)가 할당될 수 있다. 제2 랭크(RANK2)에 제2 슬랩 클래스(SC2)가 할당될 수 있다. 제3 랭크(RANK3)에 제3 슬랩 클래스(SC3)가 할당될 수 있다. 제4 랭크(RANK4)에 제4 슬랩 클래스(SC4)가 할당될 수 있다.
예시적으로, 메모리 할당기(MA)는 서로 다른 슬랩 클래스들을 서로 다른 랭크들에 할당할 수 있다. 즉, 메모리 할당기(MA)는 서로 다른 슬랩 클래스들의 액세스들을 독립적으로 분리할 수 있다.
도 20에서, 하나의 랭크에 하나의 슬랩 클래스가 대응하는 것으로 도시되어 있다. 그러나, 복수의 랭크들에 하나의 슬랩 클래스가 할당될 수 있다. 또한, 하나의 랭크에 둘 이상의 슬랩 클래스들이 할당될 수 있다. 이 경우, 하나의 랭크에 할당되는 둘 이상의 슬랩 클래스들은 가장 인접한 슬랩 클래스들일 수 있다. 예를 들어, 가장 인접한 제k-1 및 제k 슬랩 클래스들이 하나의 랭크에 할당될 수 있다.
도 21은 메모리 할당기(MA)가 쓰기 데이터에 슬랩을 할당하는 방법을 보여주는 순서도이다. 도 15, 도 16, 도 20 및 도 21을 참조하면, S510 단계에서, 메모리 할당기(MA)는 요청 사이즈(RS) 및 요청 카운트(RC)를 수신한다.
S520 단계에서, 메모리 할당기(MA)는 요청 사이즈(RS)가 제1 기준 사이즈(RS1) 이하인지 판별한다. 예를 들어, 제1 기준 사이즈(RS1)는 제1 슬랩 클래스(SC1)의 각 슬랩의 사이즈일 수 있다.
요청 사이즈(RS)가 제1 기준 사이즈(RS1) 이하이면, S530 단계에서, 메모리 할당기(MA)는 제1 랭크(RANK1)에 속한 슬랩, 즉 제1 슬랩 클래스(SC1)의 슬랩을 쓰기 데이터에 할당할 수 있다. 예를 들어, 메모리 할당기(MA)는 제1 슬랩 클래스(SC1)에서 요청 카운트(RC)에 해당하는 수의 슬랩들을 할당할 수 있다. 요청 사이즈(RS)가 제1 기준 사이즈(RS1)보다 크면, S540 단계가 수행된다.
S540 단계에서, 메모리 할당기(MA)는 요청 사이즈(RS)가 제1 기준 사이즈(RS1)보다 크고 제2 기준 사이즈(RS2) 이하인지 판별한다. 예를 들어, 제2 기준 사이즈(RS2)는 제2 슬랩 클래스(SC2)의 각 슬랩의 사이즈일 수 있다.
요청 사이즈(RS)가 제1 기준 사이즈(RS1)보다 크고 제2 기준 사이즈(RS2) 이하이면, S550 단계에서, 메모리 할당기(MA)는 제2 랭크(RANK2)에 속한 슬랩, 즉 제2 슬랩 클래스(SC2)의 슬랩을 쓰기 데이터에 할당할 수 있다. 예를 들어, 메모리 할당기(MA)는 제2 슬랩 클래스(SC2)에서 요청 카운트(RC)에 해당하는 수의 슬랩들을 할당할 수 있다. 요청 사이즈(RS)가 제2 기준 사이즈(RS2)보다 크면, S560 단계가 수행된다.
S560 단계에서, 메모리 할당기(MA)는 요청 사이즈(RS)가 제2 기준 사이즈(RS2)보다 크고 제3 기준 사이즈(RS3) 이하인지 판별한다. 예를 들어, 제3 기준 사이즈(RS3)는 제3 슬랩 클래스(SC3)의 각 슬랩의 사이즈일 수 있다.
요청 사이즈(RS)가 제2 기준 사이즈(RS2)보다 크고 제3 기준 사이즈(RS3) 이하이면, S570 단계에서, 메모리 할당기(MA)는 제3 랭크(RANK3)에 속한 슬랩, 즉 제3 슬랩 클래스(SC3)의 슬랩을 쓰기 데이터에 할당할 수 있다. 예를 들어, 메모리 할당기(MA)는 제3 슬랩 클래스(SC3)에서 요청 카운트(RC)에 해당하는 수의 슬랩들을 할당할 수 있다.
요청 사이즈(RS)가 제3 기준 사이즈(RS3)보다 크면, S580 단계가 수행된다. S580 단계에서, 메모리 할당기(MA)는 제4 랭크(RANK4)에 속한 슬랩, 즉 제4 슬랩 클래스(SC4)의 슬랩을 쓰기 데이터에 할당할 수 있다. 예를 들어, 메모리 할당기(MA)는 제4 슬랩 클래스(SC4)에서 요청 카운트(RC)에 해당하는 수의 슬랩들을 할당할 수 있다.
즉, 메모리 할당기(MA)는 서로 다른 슬랩 클래스들을 서로 다른 랭크들에 설정할 수 있다. 즉, 서로 다른 슬랩 클래스들이 액세스될 때에, 서로 다른 랭크들이 액세스된다.
키-값 저장 기반의 데이터 구조에서, 값의 사이즈에 따라 액세스 빈도가 달라지는 특징이 있다. 즉, 슬랩 클래스 별로 액세스 빈도가 달라지는 특징이 있다. 본 발명의 실시 예에 따른 메모리 컨트롤러(MC)는 서로 다른 슬랩 클래스들을 서로 다른 랭크들로 분리한다. 따라서, 본 발명의 실시 예에 따른 메모리 컨트롤러(MC)에서, 랭크 별로 액세스 빈도가 달라지며, 액세스 빈도가 낮은 랭크는 절전 모드로 진입할 수 있다. 따라서, 객체 캐시 서버 장치(OCS)의 소비 전력이 감소된다.
도 22는 본 발명의 실시 예에 따른 메모리 할당기(MA)를 보여주는 블록도이다. 도 15, 도 16, 도 20 및 도 23을 참조하면, 메모리 할당기(MA)는 요청 생성기(RG), 무효화 체크 회로(ICC), 무효화 레지스터(IR), 어드레스 체크 회로(ACC), 그리고 이전 인덱스 레지스터(PR)를 포함한다.
요청 생성기(RG)는 디코더(DC2)로부터 요청 사이즈(RS) 및 요청 카운트(RC)를 수신할 수 있다. 예를 들어, 요청 사이즈(RS)는 필요한 슬랩의 사이즈에 대한 정보를 포함할 수 있다. 요청 카운트(RC)는 필요한 슬랩들의 수에 대한 정보를 포함할 수 있다.
요청 사이즈(RS) 및 요청 카운트(RC)에 따라, 요청 생성기(RG)는 목표 랭크 정보(TR)를 출력할 수 있다. 예를 들어, 요청 생성기(RG)는 요청 사이즈(RS)에 대응하는 슬랩이 속한 슬랩 클래스가 설정된 랭크를 선택하고, 선택된 랭크를 가리키는 목표 랭크 정보(TR)를 출력할 수 있다. 요청 생성기(RG)는 요청 카운트(RC)가 가리키는 값에 해당하는 횟수만큼 목표 랭크 정보(TR)를 출력할 수 있다.
무효화 체크 회로(ICC)는 요청 생성기(RG)로부터 목표 랭크 정보(TR)를 수신한다. 무효화 체크 회로(ICC)는 무효화 레지스터(IR)를 참조하여, 목표 랭크와 연관된 정보가 무효화 레지스터(IR)에 저장되어 있는지 판별할 수 있다.
무효화 레지스터(IR)는 무효화 어드레스(IA)에 대한 정보를 저장할 수 있다. 예를 들어, 무효화 레지스터(IR)는 메모리 시스템(100)의 각 랭크 별로, 이전에 무효화(또는 해제(release))된 적어도 하나의 슬랩의 어드레스를 저장할 수 있다.
목표 랭크와 연관된 무효화 어드레스(IA)가 무효화 레지스터(IR)에 저장되어 있는 경우, 무효화 체크 회로(ICC)는 무효화 어드레스(IA) 및 목표 랭크 정보(TR)를 어드레스 체크 회로(ACC)로 출력할 수 있다. 그리고, 무효화 체크 회로(ICC)는 출력된 무효화 어드레스(IA)를 무효화 레지스터(IR)로부터 삭제할 수 있다. 목표 랭크와 연관된 무효화 어드레스(IA)가 무효화 레지스터(IR)에 저장되어 있지 않은 경우, 무효화 체크 회로(ICC)는 목표 랭크 정보(TR)를 어드레스 체크 회로(ACC)로 출력할 수 있다.
어드레스 체크 회로(ACC)는 무효화 체크 회로(ICC)로부터 목표 랭크 정보(TR) 및 무효화 어드레스(IA) 또는 목표 랭크 정보(TR)를 수신할 수 있다. 어드레스 체크 회로(ACC)는 물리 회로(PHY)로부터 어드레스 테이블(AT)을 수신할 수 있다. 예를 들어, 무효화 레지스터(IR)에 목표 랭크와 연관된 무효화 어드레스(IA)가 저장된 경우, 어드레스 체크 회로(ACC)는 무효화 어드레스(IA) 및 목표 랭크 정보(TR)를 수신할 수 있다. 무효화 레지스터(IR)에 목표 랭크와 연관된 무효화 어드레스(IA)가 저장되지 않은 경우, 어드레스 체크 회로(ACC)는 목표 랭크 정보(IA)를 수신할 수 있다.
무효화 어드레스(IA) 및 목표 랭크 정보(TR)가 수신되는 경우, 어드레스 체크 회로(ACC)는 어드레스 테이블(AT)을 이용하여, 무효화 어드레스(IA)가 가리키는 슬랩이 무효한 데이터를 저장하는 슬랩인지 유효한 데이터를 저장하는 슬랩인지 체크할 수 있다. 무효화 어드레스(IA)가 가리키는 슬랩이 무효한 데이터를 저장하는 경우, 어드레스 체크 회로(ACC)는 무효화 어드레스(IA)를 할당된 어드레스(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)가 저장하는 무효화 어드레스(IA)의 예를 보여주는 테이블이다. 도 23을 참조하면, 제1 내지 제4 랭크들(RANK1~RANK4) 각각에 대해 2 개의 무효화 어드레스들이 저장될 수 있다.
도 24는 이전 인덱스 레지스터(PR)가 저장하는 이전 인덱스(PI)의 예를 보여주는 테이블이다. 도 24를 참조하면, 제1 내지 제4 랭크들(RANK1~RANK4) 각각에 대해 바로 이전에 할당된 이전 인덱스 또는 이전 어드레스가 저장될 수 있다.
도 25는 어드레스 테이블(AT)의 예를 보여주는 테이블이다. 예시적으로, 제1 랭크(RANK1) 및 제2 랭크(RANK2)에 대응하는 어드레스 테이블(AT)이 도 25에 도시되어 있다.
도 25를 참조하면, 제1 랭크(RANK1)에 설정된 제1 슬랩 클래스(SC1)의 각 슬랩에 하나의 비트가 할당된다. 각 슬랩이 유효한 데이터를 저장하는 경우, 대응하는 비트는 '0'으로 설정될 수 있다. 각 슬랩이 무효한 데이터를 저장하는 경우, 대응하는 비트는 '1'로 설정될 수 있다.
각 랭크의 어드레스 테이블은 인덱스 및 세그먼트에 기반하여 관리될 수 있다. 하나의 인덱스에 복수의 세그먼트들이 대응한다. 세그먼트들의 수는 제1 내지 제4 랭크들(RANK1~RA4K2)에서 동일할 수 있다. 예를 들어, 세그먼트들의 수는 각 랭크의 메모리 장치들의 입출력 라인들의 합에 대응할 수 있다. 즉, 각 인덱스에 대응하는 세그먼트들은 메모리 컨트롤러(MC)가 한 번의 읽기를 통해 선택된 랭크로부터 읽을 수 있는 사이즈, 즉 입출력 대역폭에 대응할 수 있다.
예를 들어, 제1 랭크(RANK1)의 슬랩들은 제1 내지 제16 인덱스들(IDX1~IDX16) 및 제1 내지 제16 세그먼트들(S1~S16)에 기반하여 관리될 수 있다. 제2 랭크(RANK2)의 슬랩들은 제1 내지 제4 인덱스들(IDX1~IDX4) 및 제1 내지 제16 세그먼트들(S1~S16)에 기반하여 관리될 수 있다
각 랭크에 속한 슬랩들의 사이즈는 동일하므로, 슬랩들은 각 랭크의 저장 공간을 균등하게 분할하여 차지할 수 있다. 각 랭크에 속한 슬랩의 인덱스의 값 및 세그먼트의 값으로부터 각 랭크의 어드레스(ADDR)가 계산될 수 있다.
도 26은 메모리 할당기(MA)가 무효화 어드레스(IA), 이전 인덱스(PI) 및 어드레스 테이블(AT)을 이용하여 슬랩을 할당하는 방법을 보여주는 순서도이다. 도 15, 도 16, 도 20 및 도 26을 참조하면, S610 단계에서, 요청 생성기(RG)는 요청 사이즈(RS) 및 요청 카운트(RC)를 수신할 수 있다. 간결한 설명을 위하여, 요청 카운트(RC)는 1인 것으로 가정된다.
S620 단계에서, 요청 생성기(RG)는 요청 사이즈(RS)에 따라 목표 랭크를 선택한다. 요청 생성기(RG)는 선택된 목표 랭크를 가리키는 목표 랭크 정보(TR)를 출력할 수 있다.
S630 단계에서, 무효화 체크 회로(ICC)는 무효화 레지스터(IR)를 참조하여, 목표 랭크와 연관된 무효화 어드레스(IA)가 무효화 레지스터(IR)에 저장되어 있는지 판별한다.
S640 단계에서, 무효화 어드레스(IA)가 무효화 레지스터(IR)에 저장되어 있으면, S645 단계에서 무효화 어드레스(IA)에 대응하는 슬랩이 사용 가능한지 판별된다. 예를 들어, 어드레스 체크 회로(ACC)는 어드레스 테이블(AT)을 참조하여 무효화 어드레스(IA)에 대응하는 슬랩이 유효한 데이터를 저장하는지 판별할 수 있다. 무효화 어드레스(IA)에 대응하는 슬랩이 유효한 데이터를 저장하지 않으면, 무효화 어드레스(IA)가 가리키는 슬랩은 사용 가능한 것으로 판별된다. 이후에 무효화 어드레스(IA)가 가리키는 슬랩이 선택되며, S690 단계가 수행된다. 무효화 어드레스(IA)가 가리키는 슬랩이 유효한 데이터를 저장하면, 무효화 어드레스(IA)가 가리키는 슬랩은 사용 가능하지 않은 것으로 판별된다. 이후에 S650 단계가 수행된다.
무효화 어드레스(IA)가 저장되어 있지 않거나 또는 무효화 어드레스(IA)가 잘못된 경우, S650 단계가 수행된다. S650 단계에서, 어드레스 체크 회로(ACC)는 이전 인덱스 레지스터(PR)를 참조하여 이전 인덱스(PI)가 존재하는지 판별한다. 목표 랭크와 연관된 이전 인덱스(PI)가 이전 인덱스 레지스터(PR)에 저장되어 있으면, S670 단계에서, 어드레스 체크 회로(ACC)는 어드레스 테이블(AT)에서 이전 인덱스(PI)로부터 무효 데이터를 저장하는 슬랩을 검색한다. 그리고, 어드레스 체크 회로(ACC)는 검색된 슬랩을 선택할 수 있다. 목표 랭크와 연관된 이전 인덱스(PI)가 이전 인덱스 레지스터(PR)에 저장되어 있지 않으면, S670 단계에서, 어드레스 체크 회로(ACC)는 어드레스 테이블(AT)에서 첫 번째 인덱스로부터 무효한 데이터를 저장하는 슬랩을 검색한다. 어드레스 체크 회로(ACC)는 검색된 슬랩을 선택할 수 있다.
이후에. S690 단계에서, 어드레스 체크 회로(ACC)는 선택된 슬랩의 어드레스를 할당할 수 있다.
상술된 바와 같이, 이전에 무효화된 슬랩을 가리키는 무효화 어드레스(IA)가 존재하는 경우, 어드레스 테이블(AT)의 검색이 수행되지 않는다. 따라서, 슬랩의 선택 속도가 향상된다.
또한, 각 랭크에 데이터가 기입되기 시작한 경우, 도 26에 도시된 바와 같이, 각 랭크의 후반부의 인덱스들에 무효한 슬랩들이 집중되어 있다. 이 경우, 이전 인덱스(PI)를 참조하여 어드레스 테이블(AT)이 검색되면, 슬랩의 선택 속도가 향상된다.
도 27은 메모리 할당기(MA)의 다른 예를 보여준다. 슬랩 방식의 메모리 할당에서 슬랩의 크기는 저장하기 위한 값(VALUE)의 크기와 같거나 더 크므로, 사용되지 않은 조각(fragmentation)이 발생할 수 있다. 제1 메모리 모듈(SMOD)의 용량 효율을 높이기 위하여, 메모리 할당이 로그 구조(log-structured) 방식으로 수행될 수 있다. 도 27을 참조하면, 메모리 할당기(MA)는 다음(next) 메모리 할당 요청, 예를 들어 요청 사이즈(RS)에 대해 할당 주소(ADDR)를 반환할 수 있도록 헤드(HEAD)를 관리한다. 메모리 관리자(MA)는 메모리 할당 요청에 따라 헤드(HEAD)를 반환하고, 헤드의 위치를 요청된 메모리 크기만큼 이동한다. 예시적으로, '0x1234'의 헤드(HEAD)가 반환되고, 덧셈기(ADD)에 의해 헤드(HEAD)가 요청 사이즈(RS) 만큼 이동, 예를 들어 증가될 수 있다.
도 28은 로그 구조 방식의 메모리 할당기(MA)에서 멀티 헤드가 사용되는 예를 보여준다. 도 28을 참조하면, 메모리 할당기(MA)는 메모리 할당 요청, 즉 요청 사이즈(RS)의 종류에 따라, 여러 개의 헤드들(HEAD1, HEAD2) 중 하나를 선택할 수 있다. 메모리 활당 요청의 종류에 따라, 예를 들어 요청 사이즈(RS)에 따라 다른 헤드를 사용함으로써, 값(VALUE)들을 메모리 요청의 특성에 맞게 분류하여 저장할 수 있다. 예를 들어, 객체 캐시에서, 값(value)의 크기에 따라 서로 다른 접근 패턴이 나타난다. 작은 사이즈의 값은 빈번한 접근 패턴을 가지며, 상대적으로 큰 사이즈의 값은 낮은 빈도의 접근 패턴을 갖는다. 멀티 헤드들(HEAD1, HEAD2)을 사용하여 값의 크기에 따라 서로 다른 제2 메모리 모듈들(SMOD) 또는 제2 메모리 모듈(SMOD) 내의 서로 다른 메모리 장치들에 값이 저장될 수 있다. 예를 들어, 큰 사이즈의 값이 저장되는 제2 메모리 모듈(SMOD) 또는 메모리 장치는 작은 사이즈의 값이 저장되는 제2 메모리 모듈(SMOD) 또는 메모리 장치보다 낮은 접근 빈도를 가질 수 있다. 따라서, 제2 메모리 모듈(SMOD) 또는 메모리 장치에 저장되는 값의 사이즈에 따라, 절전 모드로 진입하는 정책이 조절될 수 있다.
예시적으로, 제1 선택기(SEL1)는 요청 사이즈(RS)에 따라 제1 헤드(HEAD1) 및 제2 헤드(HEAD2) 중 하나를 선택할 수 있다. 제1 헤드(HEAD1)가 선택되면, 제1 헤드(HEAD1), 예를 들어 '0x4567'이 제2 선택기(SEL2)로 출력된다. 제1 헤드(HEAD1)는 제1 덧셈기(ADD1)에 의해 요청 사이즈(RS)만큼 이동, 예를 들어 증가될 수 있다. 제2 헤드(HEAD2)가 선택되면, 제2 헤드(HEAD2), 예를 들어 '0x1234)가 제2 선택기(SEL2)로 출력된다. 제2 헤드(HEAD2)는 제2 덧셈기(ADD2)에 의해 요청 사이즈(RS)만큼 이동, 예를 들어 증가될 수 있다. 제2 선택기(SEL2)는 요청 사이즈(RS)에 따라 제1 헤드(HEAD1) 및 제2 헤드(HEAD2) 중 하나를 출력할 수 있다.
도 29는 상술된 로그 구조 방식의 메모리 할당기를 사용하는 경우, 메모리에 값과 그와 연관된 메타 데이터가 저장된 예를 보여준다. 도 29를 참조하면, 메모리 할당기(MA)는 제2 메모리 모듈(SMOD)의 저장 공간에서 값의 사이즈와 메타 데이터의 사이즈를 합한 사이즈를 할당하고, 헤드의 위치를 조정한다. 값 액세스 회로(VAC, 도 27 참조)는 메타 데이터와 함께 값을 저장한다.
도 29에서, 제1 값(Value1) 및 그에 대응하는 제1 메타 데이터(M1), 제2 값(Value2) 및 그에 대응하는 제2 메타 데이터(M2), 그리고 제3 값(Value3) 및 그에 대응하는 제3 메타 데이터(M3)가 저장된 예가 도시되어 있다. 각 메타 데이터는 유효성 정보, 값 또는 값 및 메타 데이터를 합한 사이즈의 정보, 또는 해시 테이블 정보를 포함할 수 있다.
예시적으로, 이전에 저장된 값에 대해 쓰기가 요청된 경우, 즉 업데이트가 요청된 경우, 값 액세스 회로(VAC)는 이전에 저장된 값 및 그와 연관된 메타데이터의 유효성(valid)을 함께 업데이트할 수 있다.
예시적으로, 가비지 컬렉션이 수행되는 경우, 가비지 컬렉션이 수행될 영역이 스캔될 수 있다. 스캔은 메타 데이터를 읽고, 메타 데이터의 유효성을 판단하는 동작을 포함할 수 있다. 메타 데이터가 유효한 경우, 유효한 메타 데이터 및 그와 연관된 값에 대해 새로운 저장 공간이 할당되고, 할당된 저장 공간에 유효한 메타 데이터 및 그와 연관된 값이 복사될 수 있다. 메타 데이터에 포함된 크기 정보에 기반하여, 다음에 저장된 값의 메타 데이터가 스캔될 수 있다.
도 30은 도 16의 데이터 플레인 회로(DPC2)의 응용 예를 보여주는 블록도이다. 도 16 및 도 30을 참조하면, 데이터 플레인 회로(DPC2')는 인터페이스 회로(IIC2), 디코더(DC2), 해시 계산기(HC), 메모리 할당기(MA), 해시 테이블 관리자(HTM), 물리 회로(PHY), 값 액세스 회로(VAC), 그리고 가비지 컬렉션 회로(GCC)를 포함한다. 도 16의 데이터 플레인 회로(DPC2)와 비교하면, 데이터 플레인 회로(DPC2')는 가비지 컬렉션 회로(GCC)를 더 포함한다.
가비지 컬렉션 회로(GCC)는 저장 회로(SC2)에 저장된 제2 처리 테이블(PT2)을 참조하여 가비지 컬렉션을 수행할 수 있다. 가비지 컬렉션은 어드레스 테이블(AT) 상에서 분산되어 있는 유효 슬랩들을 모으는 동작을 포함할 수 있다. 예를 들어, 가비지 컬렉션 회로(GCC)는 어드레스 테이블(AT)을 참조하여, 유효 슬랩의 데이터를 복사함으로써 유효 슬랩들을 모을 수 있다. 제2 처리 테이블(PT2)은 가비지 컬렉션을 수행하는 시점 또는 조건, 가비지 컬렉션을 수행하는 방법 등과 같은 가비지 컬렉션 정책을 포함할 수 있다. 제2 처리 테이블(PT2)은 제1 메모리 모듈(MODk) 내의 제어 플레인(CP2)에 의해 제어 및 갱신되며, 인터페이스 회로들(IC1~ICm, 도 2 참조) 또는 대역외 인터페이스(OOB, 도 8 참조)를 통해 갱신될 수 있다.
가비지 컬렉션 회로(GCC)는 로그 구조 방식의 메모리 할당기(MA)를 사용하는 경우, 값이 저장된 메모리 영역을 스캔하여 유효한(valid) 데이터만을 새로운 영역에 복사하고, 해당 영역을 다시 메모리 할당기에 의해 할당하도록 함으로써 구현될 수 있다. 하나의 구현 방식으로, 값이 메모리에 저장될 때, 해당 값의 유효성(valid) 여부와 크기가 메타데이터에 포함될 수 있다. 메모리 영역을 스캔할 때, 해당 메모리 영역의 메타데이터에 기반하여 유효성 여부가 검사되고, 유효한 값이 새로운 영역에 복사될 수 있다.
도 31은 도 30의 데이터 플레인 회로(DPC2')의 응용 예를 보여주는 블록도이다. 도 30 및 도 31을 참조하면, 데이터 플레인 회로(DPC2'')는 인터페이스 회로(IIC2), 디코더(DC2), 해시 계산기(HC), 메모리 할당기(MA), 해시 테이블 관리자(HTM), 물리 회로(PHY), 값 액세스 회로(VAC), 가비지 컬렉션 회로(GCC), 그리고 데이터 처리 회로(DPS)를 포함한다. 도 27의 데이터 플레인 회로(DPC2')와 비교하면, 데이터 플레인 회로(DPC2'')는 데이터 처리 회로(DPS) 및 데이터 전처리 회로(DPPS)를 더 포함한다.
데이터 잔처리 회로(DPPS)는 해시 테이블 관리자(HTM)로부터 값(VALUE) 및 어드레스(ADDR)를 수신하고, 수신된 값(VALUE)에 대해 제3 처리 테이블(PT3)에 저장된 정책에 따라 압축, 암호화 등과 같은 데이터 전처리를 수행할 수 있다. 데이터 전처리 회로(DPPS)는 전처리된 값(VALUE) 및 어드레스(ADDR)를 값 액세스 회로(VAC)로 전달할 수 있다. 데이터 처리 회로(DPS)는 값 액세스 회로(VAC)로부터 수신되는 값(VALUE)에 대해 제3 처리 테이블(PT3)에 저장된 정책에 따라 압축 해제, 복호화 등과 같은 데이터 처리를 수행할 수 있다. 값(VALUE)이 이미지 데이터인 경우, 데이터 처리 회로(DPS)는 다운사이징(downsizing)과 같은 데이터 처리를 더 수행할 수 있다. 데이터 처리 회로(DPS)는 처리된 값을 인터페이스 회로(IIC2)로 전달할 수 있다.
도 32는 도 31의 데이터 플레인 회로(DPC2'')의 응용 예를 보여주는 블록도이다. 도 31 및 도 32를 참조하면, 데이터 플레인 회로(DPC2''')는 인터페이스 회로(IIC2), 디코더(DC2), 해시 계산기(HC), 메모리 할당기(MA), 해시 테이블 관리자(HTM), 물리 회로(PHY), 값 액세스 회로(VAC), 가비지 컬렉션 회로(GCC), 데이터 처리 회로(DPS), 그리고 트래픽 관리자(TM)를 포함한다. 도 31의 데이터 플레인 회로(DPC2'')와 비교하면, 데이터 플레인 회로(DPC2''')는 트래픽 관리자(TM)를 더 포함한다.
예시적으로, 하나의 키-값 기반 요청은 둘 이상의 데이터 청크들(DC)로 수신될 수 있다. 이 경우, 첫 번째 데이터 청크는 데이터 청크들(DC)의 수에 대한 정보를 포함할 수 있다. 트래픽 관리자(TM)는 데이터 청크들(DC)의 수에 대한 정보를 검출할 수 있다. 검출된 수에 따라, 트래픽 관리자(TM)는 둘 이상의 데이터 청크들(DC)을 하나의 키-값 기반 요청으로 처리하도록 디코더(DC2), 해시 계산기(HC), 그리고 해시 테이블 관리자(HD)를 제어할 수 있다.
예를 들어, 트래픽 관리자(TM)의 제어에 다라, 디코더(DC2)는 둘 이상의 데이터 청크들(DC)에 기반하여 요청 사이즈(RS) 및 요청 카운트(RC)를 생성할 수 있다. 디코더(DC2)는 둘 이상의 데이터 청크들(DC)로부터 키(KEY)를 한 번만 검출하도록 제어될 수 있다. 해시 계산기(HC)는 둘 이상의 데이터 청크들에서 해시 동작을 한 번만 수행하도록 제어될 수 있다. 해시 테이블 관리자(HTM)는 둘 이상의 데이터 청크들에서 해시 테이블의 참조를 한 번만 수행하도록 제어될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
OCS; 객체 캐시 서버 IC1~ICm; 인터페이스 회로들
OC; 오프로드 회로 SWC; 스위치 회로
DPC; 데이터 플레인 회로 SC; 저장 회로
CPC; 제어 플레인 회로 PPl; 정책 풀
ST; 스위치 테이블 CP; 제어 플레인
MOD1~MODn; 제1 메모리 모듈들 MC; 메모리 컨트롤러
DPC2; 데이터 플레인 회로 SC2; 저장 회로
CPC2; 제어 플레인 회로 PT; 처리 테이블
CP2; 제어 플레인 SMOD; 제2 메모리 모듈

Claims (20)

  1. 복수의 인터페이스 회로들;
    서로 독립적으로 동작하는 복수의 메모리 모듈들; 그리고
    상기 복수의 인터페이스 회로들 및 상기 복수의 메모리 모듈들 사이에 연결되는 스위치 회로를 포함하고,
    상기 복수의 인터페이스 회로들은:
    네트워크와 연결되고, 그리고
    복수의 네트워크 패킷들을 데이터 청크로 변환하는 포맷 변환을 수행하도록 구성되고,
    상기 네트워크 패킷들은 상기 네트워크를 통해 통신되는 패킷들이고, 그리고 상기 데이터 청크는 내부 포맷에 부합하고,
    상기 스위치 회로는:
    상기 복수의 인터페이스 회로들로부터 전달되는 데이터 청크의 특성(attribute)에 따라 상기 복수의 메모리 모듈들 중 적어도 하나의 메모리 모듈을 선택하고, 그리고
    상기 선택된 적어도 하나의 메모리 모듈로 상기 데이터 청크를 전달하도록 구성되고,
    상기 선택된 적어도 하나의 메모리 모듈은:
    상기 데이터 청크의 적어도 일부에 대해 해시 동작을 수행하여 상기 데이터 청크로부터 해시 데이터를 생성하고, 그리고
    상기 해시 데이터가 가리키는 메모리 영역의 상기 데이터 청크와 연관돤 읽기 또는 쓰기를 수행하도록 구성되는 서버 장치.
  2. 제1 항에 있어서,
    상기 데이터 청크가 키(key) 및 값(value)을 포함할 때, 상기 데이터 청크의 키가 제1 정보를 포함할 때, 그리고 상기 키 및 상기 값과 연관된 커맨드가 쓰기 커맨드일 때, 상기 스위치 회로는 상기 복수의 메모리 모듈들 중 둘 이상의 메모리 모듈들을 선택하도록 구성되는 서버 장치.
  3. 제2 항에 있어서,
    상기 데이터 청크가 키(key)를 포함할 때, 상기 데이터 청크의 키가 상기 제1 정보를 포함할 때, 그리고 상기 키와 연관된 커맨드가 읽기 커맨드일 때, 상기 스위치 회로는 상기 둘 이상의 메모리 모듈들 중 하나의 메모리 모듈을 선택하도록 구성되는 서버 장치.
  4. 제1 항에 있어서,
    상기 복수의 메모리 모듈들 중 상기 스위치 회로에 등록된 특정한 메모리 모듈이 선택될 때, 상기 스위치 회로는 상기 특정한 메모리 모듈 대신에 다른 메모리 모듈을 선택하도록 구성되는 서버 장치.
  5. 제1 항에 있어서,
    상기 데이터 청크는 키(key)를 포함할 때, 상기 데이터 청크의 키가 제1 정보를 포함할 때, 그리고 데이터 청크 특성들을 메모리 모듈들과 매핑하는 매핑 정보를 저장하는 스위치 테이블이 상기 제1 정보를 상기 복수의 메모리 모듈들 중 제1 메모리 모듈과 매핑할 때, 상기 스위치 회로는 상기 복수의 메모리 모듈들 중 상기 제1 메모리 모듈을 선택하도록 구성되는 서버 장치.
  6. 제1 항에 있어서,
    상기 스위치 회로는,
    상기 데이터 청크의 특성에 대응하는 스위치 정책을 포함하는 스위치 테이블을 저장하는 저장 회로; 그리고
    상기 저장 회로에 저장된 상기 스위치 테이블을 참조하여, 상기 데이터 청크의 특성에 대응하는 상기 적어도 하나의 메모리 모듈을 선택하도록 구성되는 데이터 플레인 회로를 포함하는 서버 장치.
  7. 제6 항에 있어서,
    상기 데이터 플레인 회로에서 예외 상황이 발생할 때, 상기 데이터 플레인 회로의 요청에 응답하여 상기 예외 상황을 처리하도록 구성되는 제어 플레인 회로를 더 포함하는 서버 장치.
  8. 제7 항에 있어서,
    상기 스위치 정책이 상기 데이터 청크에 대한 정보를 갖지 않을 때, 상기 제어 플레인은 상기 데이터 청크에 대한 새로운 스위치 정책을 생성하고 그리고 상기 새로운 스위치 정책을 상기 스위치 정책에 포함시키도록 구성되는 서버 장치.
  9. 제7 항에 있어서,
    상기 제어 플레인 회로에 의해 구동되는 제어 플레인은 상기 복수의 인터페이스 회로들 중 적어도 하나 또는 대역외(OOB, Out-Of-Band) 인터페이스를 통해 갱신되는 서버 장치.
  10. 제6 항에 있어서,
    상기 스위치 테이블은 상기 복수의 인터페이스 회로들 중 적어도 하나 또는 대역외(OOB, Out-Of-Band) 인터페이스를 통해 갱신되는 서버 장치.
  11. 제6 항에 있어서,
    상기 복수의 메모리 모듈들의 부하들을 모니터하고, 모니터 결과에 따라 상기 스위치 테이블을 갱신함으로써 상기 복수의 메모리 모듈들의 부하 밸런싱(load balancing)을 수행하는 관리 회로를 더 포함하는 서버 장치.
  12. 제11 항에 있어서,
    상기 관리 회로는 상기 서버 장치의 부하가 문턱값 이상일 때, 상기 데이터 청크를 상기 복수의 인터페이스 회로들을 통해 외부 장치로 포워드(forward) 하도록 구성되는 서버 장치.
  13. 제11 항에 있어서,
    상기 관리 회로는 상기 서버 장치의 부하가 문턱값 이상일 때, 상기 데이터 청크를 대역외(OOB, Out-Of-Band) 인터페이스를 통해 외부 장치로 포워드(forward) 하도록 구성되는 서버 장치.
  14. 제1 항에 있어서,
    상기 복수의 인터페이스 회로들의 각각은 대응하는 상기 네트워크를 통해 수신되는 상기 네트워크 패킷들 중에서 TCP/IP 패킷으로부터 페이로드를 추출하도록 구성되는 TCP/IP 오프로드 회로를 포함하는 서버 장치.
  15. 제1 항에 있어서,
    상기 데이터 청크는 적어도 하나의 패킷을 포함하고,
    상기 적어도 하나의 패킷은 헤더 및 페이로드를 포함하고,
    상기 스위치 회로는 상기 적어도 하나의 패킷의 상기 페이로드에 기반하여 상기 적어도 하나의 메모리 모듈을 선택하도록 구성되는 서버 장치.
  16. 제1 항에 있어서,
    상기 복수의 메모리 모듈들은 제1 메모리 모듈들이고,
    상기 제1 메모리 모듈들의 각각은
    복수의 제2 메모리 모듈들; 그리고
    상기 복수의 제2 메모리 모듈들을 제어하도록 구성되는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    상기 데이터 청크의 제1 특성에 대응하는 메모리 할당 정책을 포함하는 제1 처리 테이블을 저장하는 저장 회로; 그리고
    상기 저장 회로에 저장된 상기 제1 처리 테이블 및 상기 데이터 청크의 상기 제1 특성에 기반하여, 상기 데이터 청크가 기입될 저장 공간을 상기 복수의 메모리 모듈들의 저장 공간으로부터 할당하고, 그리고 상기 할당된 저장 공간에 상기 데이터 청크를 기입하도록 구성되는 데이터 플레인 회로를 포함하는 서버 장치.
  17. 제16 항에 있어서,
    상기 처리 테이블은 상기 복수의 인터페이스 회로들 중 적어도 하나 또는 대역외(OOB, Out-Of-Band) 채널을 통해 갱신되는 서버 장치.
  18. 제16 항에 있어서,
    상기 저장 회로는 가비지 컬렉션의 수행 정책을 포함하는 제2 처리 테이블 및 상기 데이터 청크의 처리 정책을 포함하는 제3 처리 테이블을 더 저장하도록 구성되고,
    상기 데이터 플레인 회로는 상기 제2 처리 테이블을 참조하여 상기 복수의 메모리 모듈들에서 유효한 데이터가 저장된 저장 공간들을 수집하는 상기 가비지 컬렉션을 수행하고, 그리고 상기 제3 처리 테이블을 참조하여 상기 데이터 청크에 대해 압축, 압축 해제, 암호화, 복호화, 그리고 이미지 데이터의 다운사이징 중 적어도 하나를 수행하도록 구성되는 서버 장치.
  19. 복수의 인터페이스 회로들;
    서로 독립적으로 동작하는 복수의 메모리 모듈들; 그리고
    상기 복수의 인터페이스 회로들 및 상기 복수의 메모리 모듈들의 사이에 연결되는 스위치 회로를 포함하고,
    복수의 인터페이스 회로들은:
    네트워크와 연결되고; 그리고
    상기 네트워크로부터 수신되는 네트워크 패킷들로부터 키(key)들을 검출하도록 구성되고, 그리고
    상기 스위치 회로는:
    상기 복수의 인터페이스 회로들로부터 전달되는 키에 기반하여 상기 복수의 메모리 모듈들 중 적어도 하나의 메모리 모듈을 선택하고; 그리고
    상기 선택된 메모리 모듈로 상기 키를 전달하도록 구성되는 스위치 회로를 포함하고,
    상기 선택된 메모리 모듈은 상기 키에 대해 해시 동작을 수행하여 상기 키로부터 해시 데이터를 생성하고, 그리고 상기 해시 데이터가 가리키는 메모리 영역에서 상기 키와 연관된 값(value)의 읽기 또는 쓰기를 수행하도록 구성되는 서버 장치.
  20. 복수의 인터페이스 회로들, 스위치 회로 및 복수의 제1 메모리 모듈들을 포함하고, 각 제1 메모리 모듈은 메모리 컨트롤러 및 상기 메모리 컨트롤러에 대응하는 복수의 제2 메모리 모듈들을 포함하는 서버 장치의 동작 방법에 있어서:
    상기 복수의 인터페이스 회로들 중 하나에서, 네트워크 패킷을 수신하는 단계;
    상기 복수의 인터페이스 회로들 중 상기 하나에서, 상기 네트워크 패킷을 내부 패킷으로 변환하는 단계;
    상기 스위치 회로에서, 상기 내부 패킷으로부터 특성을 추출하는 단계;
    상기 스위치 회로에서, 상기 특성에 기반하여 상기 복수의 제1 메모리 모듈들 중 적어도 하나의 제1 메모리 모듈을 선택하는 단계;
    상기 스위치 회로에 의해, 상기 내부 패킷을 상기 선택된 적어도 하나의 제1 메모리 모듈로 전송하는 단계;
    상기 선택된 적어도 하나의 제1 메모리 모듈의 각각의 메모리 컨트롤러에서, 상기 내부 패킷의 적어도 일부에 대해 해시 동작을 수행하여 해시 데이터를 생성하는 단계;
    상기 선택된 적어도 하나의 제1 메모리 모듈의 각각의 메모리 컨트롤러에서, 상기 해시 데이터에 기반하여 상기 복수의 제2 메모리 모듈들 중 하나의 제2 메모리 모듈을 선택하는 단계; 그리고
    상기 선택된 하나의 제2 메모리 모듈에서, 상기 내부 패킷을 저장하는 단계를 포함하는 동작 방법.
KR1020150124259A 2015-09-02 2015-09-02 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치 KR102416004B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150124259A KR102416004B1 (ko) 2015-09-02 2015-09-02 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치
CN201610797865.4A CN106487704B (zh) 2015-09-02 2016-08-31 包括接口电路、存储器模块以及切换电路的服务器设备
US15/254,400 US10440112B2 (en) 2015-09-02 2016-09-01 Server device including interface circuits, memory modules and switch circuit connecting interface circuits and memory modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150124259A KR102416004B1 (ko) 2015-09-02 2015-09-02 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치

Publications (2)

Publication Number Publication Date
KR20170027921A KR20170027921A (ko) 2017-03-13
KR102416004B1 true KR102416004B1 (ko) 2022-07-04

Family

ID=58104397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150124259A KR102416004B1 (ko) 2015-09-02 2015-09-02 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치

Country Status (3)

Country Link
US (1) US10440112B2 (ko)
KR (1) KR102416004B1 (ko)
CN (1) CN106487704B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
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
US11392317B2 (en) 2017-05-31 2022-07-19 Fmad Engineering Kabushiki Gaisha High speed data packet flow processing
US10990326B2 (en) 2017-05-31 2021-04-27 Fmad Engineering Kabushiki Gaisha High-speed replay of captured data packets
US11003663B2 (en) * 2017-10-10 2021-05-11 Paypal, Inc. Configuration-aware micro-database caches
US11456970B1 (en) 2019-05-13 2022-09-27 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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150124812A1 (en) 2013-11-05 2015-05-07 International Business Machines Corporation Dynamic Multipath Forwarding in Software Defined Data Center Networks
US20150160862A1 (en) 2013-12-09 2015-06-11 Xilinx, Inc. Memory arrangement for implementation of high-throughput key-value stores
US9519486B1 (en) 2012-11-21 2016-12-13 Xilinx, Inc. Method of and device for processing data using a pipeline of processing blocks

Family Cites Families (20)

* Cited by examiner, † Cited by third party
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
US8868487B2 (en) * 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
US20130159452A1 (en) 2011-12-06 2013-06-20 Manuel Alejandro Saldana De Fuentes Memory Server Architecture
US9037556B2 (en) 2012-12-03 2015-05-19 Vmware, Inc. Distributed, transactional key-value store
JP6025149B2 (ja) * 2013-11-06 2016-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを管理するシステムおよび方法
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519486B1 (en) 2012-11-21 2016-12-13 Xilinx, Inc. Method of and device for processing data using a pipeline of processing blocks
US20150124812A1 (en) 2013-11-05 2015-05-07 International Business Machines Corporation Dynamic Multipath Forwarding in Software Defined Data Center Networks
US20150160862A1 (en) 2013-12-09 2015-06-11 Xilinx, Inc. Memory arrangement for implementation of high-throughput key-value stores

Also Published As

Publication number Publication date
CN106487704B (zh) 2021-07-27
KR20170027921A (ko) 2017-03-13
US10440112B2 (en) 2019-10-08
CN106487704A (zh) 2017-03-08
US20170063992A1 (en) 2017-03-02

Similar Documents

Publication Publication Date Title
KR102416004B1 (ko) 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치
US11750370B2 (en) Programmable blockchain solid state drive and switch
US10261902B2 (en) Parallel processing of a series of data units for writing
CN110008149B (zh) 融合式存储器件及其操作方法
US20200167082A1 (en) Methods to configure and access scalable object stores using kv-ssds and hybrid backend storage tiers of kv-ssds, nvme-ssds and other flash devices
KR102219845B1 (ko) 어드레스를 압축하기 위한 방법 및 장치
US20150127880A1 (en) Efficient implementations for mapreduce systems
US20150304212A1 (en) Method and apparatus for matching flow table, and switch
CN104462225A (zh) 一种数据读取的方法、装置及***
US20160085680A1 (en) Mobile Memory Cache Read Optimization
US10552089B2 (en) Data processing for managing local and distributed storage systems by scheduling information corresponding to data write requests
US10067719B1 (en) Methods and systems for storing and accessing data in a distributed data storage system
TW201445921A (zh) 用於在網路交換機中利用集中式記憶體池的表搜索的裝置和方法
KR102062478B1 (ko) 가상 컴퓨터의 성능을 향상시키는 방법, 단말기, 기기 및 컴퓨터 판독 가능 저장 매체
US11379127B2 (en) Method and system for enhancing a distributed storage system by decoupling computation and network tasks
KR20190054448A (ko) 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치
TWI680404B (zh) 數據虛擬化存儲方法和裝置
JP2019016042A (ja) データ取得プログラム、装置、及び方法
CN109413163A (zh) 一种服务访问的方法及装置
US20240126847A1 (en) Authentication method and apparatus, and storage system
CN105208096A (zh) 分布式缓存***和方法
CN110545336B (zh) Ip地址替换方法、装置、计算机设备和存储介质
EP3805929B1 (en) Computing system performing image backup and image backup method
US7698424B1 (en) Techniques for presenting multiple data storage arrays to iSCSI clients as a single aggregated network array
KR101793963B1 (ko) 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant