KR102353930B1 - 분리된 메모리 기기 - Google Patents

분리된 메모리 기기 Download PDF

Info

Publication number
KR102353930B1
KR102353930B1 KR1020167010527A KR20167010527A KR102353930B1 KR 102353930 B1 KR102353930 B1 KR 102353930B1 KR 1020167010527 A KR1020167010527 A KR 1020167010527A KR 20167010527 A KR20167010527 A KR 20167010527A KR 102353930 B1 KR102353930 B1 KR 102353930B1
Authority
KR
South Korea
Prior art keywords
memory
leaf
latency
switches
management processor
Prior art date
Application number
KR1020167010527A
Other languages
English (en)
Other versions
KR20160119050A (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 삼성전자주식회사
Publication of KR20160119050A publication Critical patent/KR20160119050A/ko
Application granted granted Critical
Publication of KR102353930B1 publication Critical patent/KR102353930B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 리프 메모리(Leaf Memory) 모듈들 중 하나 이상의, 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치, 및 호스트 링크(Host Link)를 통해, 하나 이상의 외부 프로세서들을 복수의 리프 메모리 모듈로 임의로 연결하는 저 레이턴시(Low-latency) 메모리 스위치를 포함하는 분리된 메모리 기기를 제공한다.

Description

분리된 메모리 기기 {DISAGGREGATED MEMORY APPLIANCE}
대형의 데이터 센터(Data Center) 구성들을 이용하면, CPU, 메모리, 및 퍼시스턴트 메모리(Persistent Memory) 자원들이 시스템들에 의해 효율적으로 이용되도록 이 자원들을 효과적으로 공급(Provision)하는 것은 어렵다. 예로서, 메모리는 종종 과도하게 공급(Over-provision)되고, 이는 많은 양의 메모리가 여러 서버에서 "좌초되어(Stranded)" 이용되지 않게 한다. 대형의 풀(Pool)들의 자원들(예컨대, 동적 메모리(Dynamic Memory))이 효율적으로 이용되고 좌초되는 자원이 없도록, 이 자원들을 여러 프로세서 또는 인스턴스(Instance)에 공유시키고 동적으로 할당시키는 해법들이 필요하다.
나아가, 많은 컴퓨터 어플리케이션(Application; 예컨대, 데이터 센터 어플리케이션)들은 많은 양의 DRAM 메모리를 요구한다. 불행히도, 서버 시스템들에 메모리를 더 추가하는 것이 점점 더 어려워지고 있다. 다른 요인들 중에서도, 버스 속도(Bus Speed)들을 증가시키는 것은 신호 처리(Signaling)의 문제들에 기인하여 시스템의 모듈들의 개수가 시간 흐름에 따라 사실상 줄어들게 만든다. 한편, 서버들을 이용하는 어플리케이션들은 시스템의 능력(Ability)을 앞질러서 점점 증가하는 양의 DRAM 메모리를 요구하고 있다. 예로서, 메모리 데이터베이스(Database)들에서, 효율적인 동작을 위해 테라바이트(Terabyte, TB) 단위의 DRAM이 필요하다.
해결될 필요가 있는 두 가지의 주요 이슈들은: 1) 버스에 대한 부담을 주지 않고 매우 많은 개수의 DRAM들을 메모리 버스에 어떻게 연결할 것인지, 2) 서버 내부의 가용 체적 공간(Available Volumetric Space) 내에 이 DRAM들을 물리적으로 어떻게 설치할 것인지 또는 서버 인클로저(Enclosure) 외부의 메모리가 낮은 레이턴시(Low Latency)를 갖게 하기 위한 방법들을 어떻게 가능하게 할 것인지와 관련된다.
낮은 레이턴시 및 높은 상호 연결 대역폭(High Interconnect Bandwidth)을 유지하면서도, 시스템 내의 DRAM들의 양을 증가시킨 서버 시스템들을 가능하게 하는 새로운 방법들이 필요하다. 여기에서 설명되는 방법들 및 시스템들은 이러한 필요들 중 하나 이상을 다룰 수 있다.
일 실시 예는 분리된 메모리 기기(Disaggregated Memory Appliance)를 제공한다. 분리된 메모리 기기는, 하나 이상의 리프 메모리(Leaf Memory) 모듈들의 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치, 및 호스트 링크(Host Link)를 통해 하나 이상의 외부 프로세서들을 복수의 리프 메모리 모듈로 임의로 연결하는 저 레이턴시(Low-latency) 메모리 스위치를 포함한다.
본 발명의 특징들 및 유용성, 및/또는 그 외 다른 특징들 및 유용성은 첨부되는 도면들과 함께하는 이하 실시 예들의 설명으로부터 명확해지고 더 잘 이해될 것이다.
도 1은 예시적인 데이터 센터 랙(Rack) 구성을 보여주는 도면이다.
도 2는 계산 티어(Compute Tier)가 동적 메모리 티어와 같은 공유(Shared) 메모리 기기로 어떻게 연결되는지를 개념적으로 보여주는 도면이다.
도 3은 메모리 기기의 실시 예를 더 상세히 보여주는 도면이다.
도 4는 리프 메모리 스위치(Leaf Memory Switch)들 중 적어도 하나를 더 상세히 보여주는 도면이다.
도 5는 저 레이턴시 메모리 스위치를 더 상세히 보여주는 도면이다.
이하, 본 발명의 실시 예들에 대한 언급이 자세하게 이루어질 것이다. 첨부되는 도면들에 나타낸 예시들에서, 동일한 참조 번호는 전반적으로 동일한 구성 요소를 나타낸다. 본 발명을 설명하기 위해, 도면들을 참조하여, 이하 실시 예들이 설명된다.
본 발명의 장점들 및 특징들, 및 이를 달성하기 위한 방법들은 실시 예들의 이하 자세한 설명 및 첨부되는 도면들을 참조하여 더 잘 이해될 수 있다. 그러나, 본 발명은 많은 다른 형태들로 구현될 수 있고, 여기에서 언급되는 실시 예들로 한정되는 것으로 해석되어서는 안 된다. 오히려, 이 실시 예들은 본 개시가 완전하고 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자들에게 본 발명을 충분히 전달하기 위해 제공된다. 본 발명은 단지 첨부되는 청구항들에 의해서만 정의될 것이다. 도면들에서, 층들 및 영역들의 두께는 명확함(Clarity)을 위해 과장된다.
본 발명을 설명하는 문맥(특히, 청구항들의 문맥)에서, "하나", "이", "그", "상기", 및 이와 유사한 지시어를 사용하는 것은, 다르게 지시되거나 문맥에 의해 분명히 모순되지 않는 한, 단수 및 복수 모두를 커버(Cover)하는 것으로 이해되어야 한다. "포함한다", "갖는다", 및 "내포한다"는 용어들은, 다르게 언급되지 않는 한, 개방형(Open-ended)의 용어(즉, "포함하지만, 한정되지는 않는다"는 의미)로서 이해되어야 한다.
여기에서 이용되는 "구성 요소" 또는 "모듈(Module)"이라는 용어는, FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같이, 특정 태스크(Task)들을 수행하는 소프트웨어 또는 하드웨어 구성 요소를 의미하되, 여기에 한정되지는 않는다. 구성 요소 또는 모듈은 어드레스 기반으로 다루어질 수 있는 스토리지 매체(Addressable Storage Medium) 내에 존재하도록 유익하게 구성될 수 있고, 하나 이상의 프로세서들 상에서 실행되도록 구성될 수 있다. 따라서, 구성 요소 또는 모듈은, 예로서, 소프트웨어 구성 요소들, 객체 지향(Object-oriented) 소프트웨어 구성 요소들, 클래스(Class) 구성 요소들, 태스크 구성 요소들, 프로세스들, 함수(Function)들, 속성(Attribute)들, 프로시저(Procedure)들, 서브루틴(Subroutine)들, 프로그램 코드(Program Code)의 세그먼트(Segment)들, 드라이버(Driver)들, 펌웨어(Firmware), 마이크로코드(Microcode), 회로, 데이터, 데이터베이스, 데이터 구조(Data Structure)들, 테이블(Table)들, 어레이(Array)들, 및 변수(Variable)들과 같은 구성 요소들을 포함할 수 있다. 이 구성 요소들에 대해 제공되는 기능, 및 구성 요소들 또는 모듈들은 더 적은 수의 구성 요소들로 조합될 수 있고, 또는 구성 요소들 또는 모듈들은 추가의 구성 요소들 및 구성 요소들 또는 모듈들로 더 분리될 수 있다.
다르게 정의되지 않는 한, 여기에서 이용되는 모든 기술적인 및 과학적인 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 갖는 자에 의해 공통으로 이해되는 바에 따라 동일한 의미를 갖는다. 모든 예시들 각각 또는 여기에서 제공되는 예시적인 용어들은 단지 본 발명을 더 잘 설명하기 위한 것이고, 다르게 특정되지 않는 한 본 발명의 범위(Scope)에 대한 한정은 아니다. 나아가, 다르게 정의되지 않는 한, 일반적으로 이용되는 사전들에 정의된 모든 용어들은 과장되어 해석되지 않을 수 있다.
본 발명의 실시 예들은 분리된 메모리 기기(Disaggregated Memory Appliance)를 제공한다. 분리된 메모리 기기는 낮은 레이턴시(Low Latency) 및 높은 상호 연결 대역폭(High Interconnect Bandwidth)을 유지하면서도, 시스템 내의 DRAM의 양을 증가시킨 서버 시스템들을 가능하게 한다. 분리된 메모리 기기는 데이터 센터 및/또는 다른 환경들에서 이용될 수 있다.
본 발명의 실시 예의 방법들 및 시스템들은 i) DDR4와 같은 제한된 용량의 표준(Capacity-limiting Standards)의 물리 공간을 수용하기에 충분히 적은 수로 DIMM들을 관리하는 "리프" 메모리(Leaf Memory) 시스템들의 집합(Aggregation), ii) 복수의 리프 메모리 시스템을 복수의 호스트(Host)로 임의로 연결하는 아주 낮은 레이턴시의 스위치 링크(Switched Link)를 이용하는 것(몇몇 경우, 이 링크는 메모리 아키텍처(Memory Architecture)에 구애받지 않을(Agnostic) 수 있음), iii) 링크 프로토콜(Link Protocol)에서 메모리 아키텍처 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 것, iv) 메모리의 관리, 유지보수(Maintenance), 구성 및 공급(Provision)을 위한 호스트들로부터의 요청들을 받아들이기 위해 관리 프로세서를 이용하는 것, v) 메모리 시스템 데이터 및 메타데이터의 낮은 레이턴시(Low-latency)의 라우팅을 가능하게 하기 위해, 종점(Endpoint)들이 타겟 라우팅 데이터(Target Routing Data)를 이용하도록, 메모리 공급 과정 동안 제공되는 웜홀 라우팅(Wormhole Routing)을 이용하는 것 중 하나 이상을 포함할 수 있다. 또한, 이 방법 및 시스템은 이상의 것들을 이용하기 위한 장치들, 버퍼들, 스위치(들) 및 방법론들을 포함할 수 있다.
예로서, 다양한 실시 예들에서, 위 방법 및 시스템은 i) 하나 이상의 스위칭 계층(Switching Layer)들, ii) 저 레이턴시 라우팅 프로토콜, iii) 부팅, MMU, 단위 상호작용(Atomic Transaction)들, 간단한 계산 오프로드(Compute Offload)를 위한 간단한 계산 컴플들, iv) 여러 메모리 상자들을 링크하기 위한 선택적인 구조(Optional Fabric), v) RAS 특징들, vi) 동적 메모리 할당, vii) 메모리의 동적 할당을 위한 프로토콜들 중 하나 이상을 포함할 수 있다.
분리(Disaggregation)는 공유 풀(Shared Pool)로부터 다양한 어플리케이션(Application)들 및 OS 인스턴스(Instance)들에게 자원들을 동적으로 할당하는 것을 돕기 위한 하나의 방법이다. 이 개념은 도 1에 나타나 있다.
도 1은 예시적인 데이터 센터 랙(Data Center Rack) 구성을 보여주는 도면이다. 단일의 서버 시스템에서 보통 발견되는 데이터 센터 랙(100)의 자원들은 티어(Tier)들로 나뉘고, 별개의 인클로저(Enclosure)들로 물리적으로 분리된다(또는, 심지어, 데이터 센터 내에서 별개의 랙들 또는 줄(Row)들로 분리된다). 세 개의 주요 티어들은 계산 티어(102), 동적 메모리 티어(104)(예컨대, DRAM), 퍼시스턴트 메모리(Persistent Memory) 티어(106)(예컨대, 플래시)이다. 네 번째 티어는 하드 디스크 드라이브 티어(108)를 포함할 수 있다.
계산 티어(102)는 복수의 프로세서 또는 CPU(호스트들로도 언급됨)를 포함한다. 동적 메모리 티어(104) 및 퍼시스턴트 메모리 티어(106) 각각은 계산 티어의 프로세서들(또는 VM, OS 인스턴스, 스레드(Thread) 등)에게 부분적으로 할당될 수 있는 메모리 자원의 커다란 풀들을 갖는다. 이 메모리 자원들은 부팅 시간에 할당될 수 있고 상대적으로 정적으로 유지될 수 있고, 또는 프로세서들에 의해 실행되고 있는 어플리케이션들의 요구에 맞게 계속하여 조정될 수 있다. (XaaS 비즈니스 모델들과 같은) 몇몇 경우, 메모리 자원들은 특정 CPU/VM/OS 인스턴드 상에서 실행되는 각 잡(Job)에게 재할당될 수 있다.
도 2는 계산 티어가 동적 메모리 티어와 같은 공유(Shared) 메모리 기기로 어떻게 연결되는지를 개념적으로 보여주는 도면이다. 계산 티어(102)의 프로세서들 중 하나(200)(예컨대, CPU 또는 SOC)가 버퍼(204)를 통해 동적 메모리 티어(104)의 메모리 기기들(202) 중 하나로 연결된 것이 나타나 있다. 버퍼(204)는 링크(206)를 통해 프로세서(200)에 부착될 수 있다. 일 실시 예에서, 링크(206)는 DDRx, PCIe, SAS, SATA, QPI 등과 같은 기존의 고속 링크를 포함할 수 있고, 또는 새로운 전용 링크(Dedicated Link)일 수 있다. 버퍼(204)가 메모리 기기("원거리" 메모리)는 물론 로컬("근거리") 메모리 모두에 대해 완전한 메모리 컨트롤러로서 동작하도록, 버퍼(204)는 그것에 직접 부착되는 메모리(예컨대, DDR4)를 가질 수 있다. 버퍼(204)는 그 자체로 필수는 아닐 수 있고, 프로세서(200) 상의 하나 이상의 기능 블록들로서 포함될 수 있다.
로컬로 직접 부착되는 메모리를 (선택적으로) 갖는 것에 더하여, 버퍼는 낮은 레이턴시의 고속 "호스트" 링크(208)를 통해 메모리 기기(202)로 연결될 수 있다. 메모리 기기(202)는 일반적으로 별개의 인클로저이기 때문에, 많은 실시 예들의 이 호스트 링크(208)는 하나의 인클로저로부터 나와 다른 것으로의 라우팅을 위해 케이블 기반일 것이다. 그러나, 이 호스트 링크(208)는 (대형 서버 시스템 또는 블레이드 기반의 아키텍처의 경우와 같이) 크로스바(Crossbar) 기반일 수 있다. 메모리 요청들 및 데이터를 프로세서(200)로부터 적절한 메모리 자원들에게 라우팅하기 위해, 메모리 기기(202)는 그 자체로 많은 양의 메모리(212)와 함께, 저 레이턴시 메모리 스위치(210)와 같은 하나 이상의 스위칭 계층들을 포함한다.
도 3은 메모리 기기의 실시 예를 더 상세히 보여주는 도면이다. 메모리 기기는 많은 양의 메모리(212)를 포함한다. 많은 실시 예에서, 많은 양의 메모리(212)는 메모리 기기(202)의 인클로저에 수용되는 (DDR4 DIMM들과 같은) 표준 메모리 모듈들(223)의 집합으로서 구성된다. 메모리 모듈들(223)은 여기에서 리프 메모리 모듈들(223)이라고 언급될 수도 있다.
일 실시 예에 따르면, 메모리 기기(202)는 복수의 스위칭 계층을 포함한다. 제 1 스위칭 계층은 호스트 링크(208)로 연결되는 저 레이턴시 메모리 스위치(210)를 포함할 수 있는데, 저 레이턴시 메모리 스위치(210)는 호스트 링크(208)를 통해 하나 이상의 외부 프로세서들로부터 트래픽(Traffic)/요청들을 수신한다. 제 2 스위칭 계층은 저 레이턴시 메모리 스위치(210)를 복수의 리프 메모리 스위치(220)로 연결하는 복수의 리프 링크(Leaf Link)(214)를 포함할 수 있다. 제 3 스위칭 계층은 복수의 리프 메모리 스위치(220)를 포함할 수 있다. 복수의 리프 메모리 스위치(220)는 하나 이상의 리프 메모리 모듈들(223)(예컨대, DDR4의 경우, 보통 한 개 내지 세 개의 모듈들)의 하나 이상의 메모리 채널들로 연결되고, 이 메모리 채널들을 관리한다. 스위칭 계층들이 존재함으로 인해, 저 레이턴시 메모리 스위치(210)는 외부 프로세서들 중 하나 이상을 리프 메모리 모듈들(223)로 임의로 연결할 수 있다.
일 실시 예에서, 저 레이턴시 메모리 스위치(210)는 많은 상이한 CPU들 또는 많은 상이한 서버들로부터 유입되는 많은 호스트 링크(208)로부터의 트래픽/요청들을 관리할 수 있다. 저 레이턴시 메모리 스위치(210)는 유입되는 트래픽/요청들과 관련되는 주소를 검사하고, 이 트래픽/요청을 트래픽/요청 패킷(Packet)의 형태로 적절한 리프 링크에게 라우팅할 수 있다. 저 레이턴시 메모리 스위치(210)로부터 트래픽/요청 패킷을 수신한 리프 링크는 어드레스 필드(Address Field)를 검사하고, 적절한 메모리 채널에 대응하는 메모리 스위치(220)에게 그 패킷을 라우팅한다. 일 실시 예에서, 저 레이턴시 메모리 스위치(210)는 다른 메모리 기기들로의 메시 인터페이스(Mesh Interface)(209)를 더 포함할 수 있다.
리프 링크들(214)의 아키텍처는 그 자체로 아주 낮은 레이턴시의 스위칭을 가능하게 한다. 일 실시 예에서, 예로서, 낮은 레이턴시의 스위칭은 웜홀 스위칭을 포함한다. 잘 알려진 것처럼, 웜홀 스위칭 또는 웜홀 라우팅은 알려진 고정 링크(Fixed Link)들에 기반하는 컴퓨터 네트워킹에서의 간단한 흐름 제어를 위한 시스템이다. 이는 플릿-버퍼 흐름 제어(Flit-Buffer Flow Control)로 불리는 흐름 제어 방법들의 부분집합(Subset)이다. 웜홀 스위칭은 커다란 네트워크 패킷들을 작은 조각들로 분해하는데, 이 조각들은 플릿(Flit; Flow control digit)들로 불린다. 헤더 플릿(Header Flit)으로 불리는 첫 번째 플릿은 패킷의 경로(즉, 목적지 주소)에 관한 정보를 보유하고, 뒤를 잇는 모든 플릿들에 대하여 패킷에 관한 라우팅 행위(Routing Behavior)를 설정한다. 0개 또는 그 이상의 본체 플릿(Body Flit)들이 헤드 플릿(Head Flit)의 뒤로 이어지는데, 본체 플릿은 데이터의 실제 페이로드(Payload)를 포함한다. 테일 플릿(Tail Flit)으로 불리는 최종 플릿(Final Flit)은 두 개의 노드들 사이의 연결을 막기 위한 갈무리 기능을 수행한다. 웜홀 기법은 패킷을 목적지로 향하게 하는 경로를 지시하지는 않는다. 그러나, 웜홀 기법은 패킷이 라우터로부터 출발하여 나아갈 때 경로를 결정하고, 패킷 수준보다는 플릿 수준에 대해서 버퍼들 및 채널 대역폭을 할당한다.
따라서, 메모리 데이터 플릿들 및 메타데이터의 낮은 레이턴시의 스위칭에 영향을 미치기 위해, 일 실시 예는 종점들이 메모리 데이터 플릿들의 타겟 라우팅 데이터를 이용하도록, 메모리 공급 과정 동안 제공되는 웜홀 스위칭을 이용한다. 좀 더 구체적으로, 호스트 프로세서들 및 메모리 모듈들(223) 사이의 고정 링크들의 종점들은 간결한 어드레스를, 저 레이턴시 메모리 스위치(210) 및 리프(220)가 헤더 플릿을 수신할 수 있게 하는 플릿의 헤더로 인코딩하고, 그 어드레스를 디코딩하고, 어드레스를 다시 인코딩하고, 데이터 플릿들이 스위치에 도달하기 전에 플릿들의 페이로드를 라우팅한다. 라우팅 로직(Routing Logic)은 그 뒤, 원래 플릿을 위하여 스위치를 통한 경로가 설정되자마자, 다른 소스(Source)로부터의 다른 플릿을 디코딩할 수 있다. 도 2에서는 버퍼(204)가 호스트 종점을 나타내는 한편, 도 3에서는 메모리 스위치들(220)이 메모리 모듈 종점들을 나타낸다.
본 발명의 실시 예의 스위칭 네트워크는 웜홀 스위칭을 채용한다. 웜홀 스위칭에서, i) 패킷들이 플릿들로 전송되고, 2) 헤더 플릿이 패킷에 대한 모든 라우팅 정보를 포함하고, 3) 주어진 패킷에 대한 플릿들이 스위칭 네트워크를 통해 파이프라인(Pipeline) 방식으로 전송되고, 4) 차단된(Blocked) 헤더 플릿이 뒤이어지는 모든 데이터 플릿들을 중간(Intermediary) 스위칭 노드들에서 지연시키고, 5) 단지 하나의 플릿만이 어떤 주어진 스위치에 저장될 필요가 있다.
더 나아간 실시 예에서, 메모리 기기(202)는 여러 기능들을 가능하게 하기 위해, 선택적으로 계산 복합체(Compute Complex)(216)(예컨대, 프로세서 및 지원 로직(Supporting Logic) 및/또는 MMU)를 포함할 수 있다. 이것들은 다음을 포함할 수 있다:
i) 메모리 기기의 부팅 및 초기의 구성
ii) 여러 서버 또는 CPU "호스트들"에 대한 메모리 할당을 조직하는 것
iii) "오프로딩(Off-loading)"을 계산하는 것. 이것은 호스트와 기기 사이의 메모리 트래픽을 감소시킬 수 있다.
(1) 간단한 단위 연산들(예컨대, 읽기-수정-쓰기(Read-Modify-Write))
(2) 하둡(Hadoop)을 위한 어플리케이션 특유의 최적화(예컨대, 맵 리듀스(Map Reduce)) 등
iv) RAS 특징들, 예컨대:
(1) 메모리 스페어링(Memory Sparing)
(2) 메모리 RAID
(3) 대체 작동(Failover)
(4) 오류 및 예외 처리(Exception Handling)
(5) 열 예외 처리(Thermal Exception Handling)
(6) 스로틀링(Throttling)
(7) 핫 스왑(Hot Swap)
(8) 국지 전원 모드(Local Power Mode) 관리
여기에서 설명되는 링크 아키텍처는 프로세서들과 메모리 서브시스템들 사이에서 메모리 데이터 플릿들의 아주 낮은 레이턴시의 움직임을 가능하게 하기 위해, 웜홀 스위칭을 이용할 수 있다. 스위치들은 플릿을 수신하고, 물리 어드레스에 기초하여, 그 플릿이 언제 움직여 나아갈지 및 그 플릿을 움직이기 위해 어떤 상호 연결(Interconnect)이 이용될지를 결정한다.
웜홀 라우팅(Wormhole Routing)의 설정은 여러 기능들을 가능하게 하기 위해 잠재적으로 포함되는 계산 복합체(216)의 도움에 의해 달성될 수 있다. 이것들은 다음을 포함할 수 있다:
i) 호스트들 및 DRAM 어레이들로부터 상호 연결의 토폴로지(Topology)를 측정하는 것
ii) 플릿 헤더들을 생성하기 위해 요구되는 어드레스 정보를 링크 종점들로 전달하는 것
iii) RAS 특징들, 예컨대:
(1) 오류 및 예외 처리
(2) 스로틀링
(3) 기타
이더넷(Ethernet) 또는 다른 네트워크 포트와 같은 포트(218)는 계산 복합체(216)와 다른 시스템들(호스트 서버들을 포함) 사이의 통신을 가능하게 한다. 이것은 메모리 할당을 구성하고 관리하기 위한 통신 포트에 관한 하나의 선택지이다. 다만, 메모리 할당은 메모리 기기(202)로의 호스트 링크들(208)을 통해서도 관리될 수 있다.
또한, 메모리 기기(202)는 여러 메모리 기기 사이의 구조를 생성하기 위해 추가의 또는 특수한 링크들을 포함할 수 있다. 이것은 대체 동작 또는 미러링(Mirroring)과 같은 높은 이용 가능성(High Availability) 특징들을 위해 중요할 수 있고, 메모리 용량을 더 큰 크기로 확장하기 위해서도 이용될 수 있다.
도 4는 리프 메모리 스위치들(220) 중 적어도 하나를 더 상세히 보여주는 도면이다. 리프 메모리 스위치(220)는 리프 링크(Leaf Link) PHY(502)를 포함한다. 리프 메모리 스위치(220)는 도 3에 나타낸 리프 링크들(214)을 관리하기 위한 리프 링크 계층(Leaf Link Layer) 컨트롤러(504)를 선택적으로 포함한다. 리프 링크들(214)에 의한 저 레이턴시 메모리 스위치(210)로부터의 트래픽은 리플릿(Leaflet) 컨트롤러(504)의 리프 링크 PHY(502)를 통해, 초 저 레이턴시(Very Low Latency) 스위치(510)로 라우팅될 수 있다. 초 저 레이턴시 스위치(510)는 하나 이상의 DDR 채널들 중에서 어떤 것이 해당 트래픽을 위한 올바른 목적지/소스인지를 판별한다. 각 DDR 채널은 단순/간단한 메모리 컨트롤러들(508A 또는 508B), 및 PHY들(506A 또는 506B)(예컨대, DDRx)의 쌍을 포함한다. 제한된 메모리 트래픽 케이스들이 다루어지는 점에 기인하여, 단순한 메모리 컨트롤러들(508A, 508B)은 프로세서들에서 보통 발견되는 컨트롤러들에 비해 대체로 단순화될 수 있다.
본 발명의 실시 예들에 따르면, 리프 메모리 스위치(220)는 관리 프로세서(512)를 더 포함할 수 있다. 관리 프로세서(512)는 단순한 메모리 컨트롤러들(508A, 508B)의 제어 및 데이터로 접근한다. 관리 프로세서(512)는 메모리 기기 내의 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급을 위한 외부 프로세서들로부터의 요청에 응답한다. 관리 프로세서(512)와의 통신은 관리 포트(미도시)를 통해 저 레이턴시 메모리 스위치(210)에서 이루어질 수 있다. 관리 프로세서(512)는 메모리 기기(202)의 물리적인 메모리를 관리하기 위해, 구성 및 할당 데이터베이스(514)를 생성하고 유지한다.
관리 프로세서(512)는 메모리로의 접근 또는 메모리의 공급을 위해, 데이터 센터 자원 관리 서비스로부터의 정책 및 데이터 센터 인증 서비스로부터의 인증에 기초하여, (예컨대, 이더넷을 통해) 호스트 프로세서들로부터의 요청들을 수용하고 처리한다.
관리 프로세서(512)는 메모리를 위한 요청들을 충족시키기 위해, 메모리 및 리프 메모리 스위치들(220)을 구성한다. 관리 프로세서(512)는 접근을 승인하고 물리적/논리적 접근 방법들 및 메모리 속성들을 제공함으로써 요청들에 응답한다. 또는, 관리 프로세서(512)는 정책, 인증 또는 자원 한정(Constraint)들에 기초하여 접근을 거부함으로써 요청들에 응답한다. 관리 프로세서(512)는 필요에 따라 스스로 자원들을 공급할 수 있다.
호스트 프로세서들에 의한 메모리 기기(202)로의 다음 접근은 링크, 스위치 및 메모리 제어 하드웨어의 구성을 통해 구현되는 정책에 의해 통제될 수 있다. 관리 프로세서(512)는 스스로 공급되는 자원들로 접근하는 것을 제외하고, 이 구성 너머의 데이터 이동에 관여하지 않는다.
관리 프로세서(512)의 이용에 의해 제공되는 이점들은 다음을 포함할 수 있다:
i) 여러 호스트 프로세서들에 대해 벌크(Bulk) 메모리의 공급 및 구성을 가능하게 함
ii) 공급 가능한 메모리가 좌초되는(Stranded) 자원들을 방지하여, 고객들이 최적의 계산, 메모리, 및 퍼시스턴스(Persistence) 조합들을 동적으로 공급할 수 있게 함
iii) 각각의 개별적인 기술 로드맵(Roadmap)에 대해 타당한 독립적인 CPU, 메모리, 및 퍼시스턴스 교체 주기를 가능하게 함
iv) 서버/프로세서/코어 당 상당히 큰 메모리 용량을 가능하게 함
v) 많이 확장 가능한(Scalable) 해법 - 더 많은 용량 또는 더 큰 대역폭을 위해 메모리 서브시스템 박스들을 더 추가하는 것을 가능하게 함
DRAM 기술들이 널리 이용되고 표준화되는 동안, 장치 특성들은 시간 흐름에 따라 발달하였고, 장치 인터페이스들 및 그 인터페이스들을 관리하는 컨트롤러들에 대한 조정을 요구한다. 예로서, DDR과 같은 동기식(Synchronous) 인터페이스는 인터페이스를 통한 더 높은 대역폭을 가능하게 하기 위해, 클록(Clock) 속도를 증가시키도록 수정될 수 있다. 결과적으로, 이는 DRAM이 하나의 상태에서 다음의 상태로 옮겨가는 데에 요구될 수 있는 클록들의 개수의 조정을 요구한다. 나아가, 다른 메모리 기술들은 DRAM을 대체하거나 보충하는 것으로 여겨질 수 있고, DRAM들에 존재하는 것과 동일하거나 유사한 스케일링 한정(Scaling Constraint)들에 의해 구속될 수 있다. 이러한 메모리 기술들은 동기식인 대신 상호작용할(Transactional) 수 있고, 또는 바이트 단위의 어드레스 기반으로 다루어지기(Byte-addressable) 보다는 블록 지향 방식(Block-oriented)일 수 있다. 나아가, 대규모 배치(Large-scale Deployment)들은 이 기술들의 발달에 걸쳐 이어지는 수명을 가질 수 있고, 또는 주어진 배치에서 이 기술들 중 여럿의 사용을 요구할 수 있다. 따라서, 대규모 배치에서 메모리의 주어진 분리(Disaggregation)는 이 기술들 각각 내에서 다양한 기술들 및 다양한 성능을 지원할 가능성이 크다.
본 발명의 더 나아간 실시 예들은 공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 태그(Tag)들을 이용하여 메모리 기술 특유의 시맨틱을 캡슐화하는 저 레이턴시 메모리 스위치(210) 및 리프 메모리 스위치들(220) 모두에 의해 이용되는 낮은 레이턴시의 라우팅 프로토콜을 제공한다. 낮은 레이턴시의 라우팅 프로토콜은 기술 시맨틱의 데이터베이스(514)에서의 본질 및 시맨틱(블록/바이트, 동기식/상호작용 등), 및 장치 파라미터들(CAS 레이턴시, 소거 블록 크기, 페이지 쓰기 레이턴시 등)을 캡슐화함으로써, 넓은 범위의 메모리 기술들을 지원한다. 데이터베이스(514)는 관리 프로세서(512)에 의해 덧붙여지고, 공급 과정 동안 호스트 프로세서들로 전달된다. 주어진 메모리 기기에 의해 지원되는 각 메모리 기술은 메모리 기기 내의 각 기술 설정에 고유한 태그(기기 고유 태그)를 붙인다. 기기 고유 태그는 각 기술의 시맨틱 및 파라미터들을 식별한다.
관리 프로세서(512)는 첨부된 메모리 기술들을 설명하는 데이터에 대하여 단순한 메모리 컨트롤러들(508A, 508B)에게 질의(Query)함으로써 장치 시맨틱 및 파라미터들을 발견할 수 있고, 데이터베이스(514)를 덧붙이기 위해 그러한 데이터를 이용한다.
메모리를 요구하는 호스트 프로세서는 메모리로의 고유한 또는 공유되는 접근을 얻기 위해 관리 프로세서(512)와 협의할 수 있고, 요구하는 기술을 명시할 수 있다. 관리 프로세서(512)는 호스트들의 사양(Specification)들에 맞는 메모리 공급을 승인하여 응답할 수 있고, 또는 그 공급은 호스트의 요구들에 대한 최선의 매치(Best-effort Match)로서 식별될 수 있다. 또는, 관리 프로세서(512)는 데이터베이스(514)를 가용 기술들의 목록으로서 호스트에게 노출할 수 있고, 호스트는 요구하는 기술과 관련되는 태그에 의해 기술을 요구할 수 있다. 어떤 경우에는, 위에서 설명된 것과 같이, 호스트로 공급되는 기술을 식별하기 위해 관리 프로세서(512)가 태그를 제공할 것이다.
공급된 메모리로의 호스트의 다음 접근에 따라, 기술 태그는 단순한 메모리 컨트롤러들(508A, 508B)로 보내지는 주어진 패킷의 컨텍스트(Context)를 식별하기 위해 호스트에 의해 이용될 것이다. 예로서, 메모리의 블록을 삭제하기 위한 커맨드(Command)는 호스트에 의해 단순한 메모리 컨트롤러들(508A, 508B) 중 하나로 보내질 수 있다. 이 커맨드는 단순한 메모리 컨트롤러들(508A, 508B)에서 이용 가능한 플래시 기술에 대하여 고유한 것일 수 있으나, 다른 기술에 대한 커맨드와 유사한 형태를 가질 수 있다. 따라서, 호스트는 태그를 어두(Prefix)로서 커맨드에게 보내어, 그것에게 컨텍스트를 부여할 수 있다. 이러한 컨텍스트는 특정한 단순한 메모리 컨트롤러(508A, 508B)로의 접근에 의해 암시될 수 있는 한편, 커맨드 패킷에서 태그를 이용하는 것은 단순한 메모리 컨트롤러들(508A, 508B)에 의해 모니터링, 디버그(Debug) 및 패킷 검증을 위한 요인을 가능하게 한다.
따라서, 낮은 레이턴시의 라우팅 프로토콜을 이용함에 따라, 메모리 기기(202)는 메모리 아키텍처에 구애받지 않을 수 있다.
도 5는 저 레이턴시 메모리 스위치를 더 상세히 보여주는 도면이다. 위에서 설명된 것과 같이, 저 레이턴시 메모리 스위치(210)는 많은 상이한 프로세서들/서버들로부터 유입되는 많은 호스트 링크(208)로부터의 트래픽/요청들을 관리할 수 있다. 메모리 기기로의 호스트 링크들(208)은 다음 방식들에 의해 CPU 프로세서들/서버들로 연결될 수 있다:
a) 기존의 DDR 채널을 통하는 경우
i) 버퍼/링크 변환기(Translator) 및 기기로의 케이블을 이용하는 모듈 기반 연장기(Module-based Extender)
ii) 기기 링크로 변환되는 전용 DDR 채널(또는 여러 채널)을 이용하는 마더보드(Motherboard) 상의 버퍼
iii) PCIe 카드 또는 버퍼로의 전용 PCIe 포트
iv) 버퍼 전용의 SAS 폿
v) SATA
vi) 그 외
b) 링크 신호 처리(Signaling) 해법들은 여러 유형 중 어떠한 것으로도 될 수 있음
i) 광학적
ii) 전기적
iii) 그 외
c) 링크 프로토콜은 다음과 같을 수 있음:
i) 직렬화된 메모리 프로토콜(예컨대, 직렬화된 DDR4)
ii) 패킷으로 나뉨
iii) 웜홀 라우팅 프로토콜
iv) 그 외
메모리 스위치들은 메모리 컨트롤러 기능의 가변하는 수준들(아무것도 하지 않는 것을 포함)을 가질 수 있다.
웜홀 스위칭이 이용되는 실시 예에서, 도 5에 나타낸 제 0 큐(Queue) 내지 제 (M-1) 큐는 제 0 플릿 버퍼 내지 제 (M-1) 플릿 버퍼를 대신할 것이다.
분리된 메모리 기기가 개시되었다. 본 발명이 도시된 실시 예들에 따라 설명되었고, 실시 예들에 변형이 있을 수 있고, 어떤 변형이든 본 발명의 기술 사상 및 범위 내에 있을 것이다. 예로서, 본 발명의 실시 예는 하드웨어, 소프트웨어, 프로그램 명령어(Program Instruction)들을 포함하는 컴퓨터로 읽을 수 있는 매체, 또는 그것들의 조합을 이용하여 구현될 수 있다. 본 발명에 따라 기록되는 소프트웨어는 메모리, 하드디스크, 또는 CD/DVD-ROM과 같은 컴퓨터로 읽을 수 있는 저장 매체에 몇몇 형태로 저장될 수 있고, 프로세서에 의해 실행될 수 있다. 따라서, 첨부되는 청구항들의 기술 사상 및 범위를 벗어나지 않고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 많은 수정이 이루어질 수 있다.

Claims (32)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 메모리 기기에 있어서,
    호스트 링크(Host Link)에 연결되는 저 레이턴시(Low-latency) 메모리 스위치;
    상기 저 레이턴시 메모리 스위치를 복수의 리프 메모리(Leaf Memory) 스위치로 연결하는 복수의 리프 링크(Leaf Link); 및
    상기 메모리 기기 내에서의 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급(Provision)을 위해, 하나 이상의 외부 프로세서들로부터의 요청들에 응답하는 관리 프로세서를 포함하되,
    상기 저 레이턴시 메모리 스위치는 상기 호스트 링크를 통해 상기 하나 이상의 외부 프로세서들로부터 트래픽(Traffic) 및 요청들을 수신하고,
    상기 복수의 리프 메모리 스위치는 상기 리프 메모리 모듈들 중 하나 이상의, 하나 이상의 메모리 채널들로 연결되고 상기 하나 이상의 메모리 채널들을 관리하고, 그리고
    상기 관리 프로세서는 스스로 공급되는 자원들로 접근하는 것을 제외하고 데이터 이동에 관여하지 않는 메모리 기기.
  6. 제 5 항에 있어서,
    상기 관리 프로세서는 상기 복수의 리프 메모리 스위치의 적어도 일부분에 구현되는 메모리 기기.
  7. 제 5 항에 있어서,
    공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 태그(Tag)들을 이용하여 상기 메모리 기술의 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 상기 저 레이턴시 메모리 스위치 및 상기 복수의 리프 메모리 스위치 모두에 의해 이용되는 저 레이턴시 라우팅 프로토콜(Routing Protocol)을 더 포함하는 메모리 기기.
  8. 제 5 항에 있어서,
    상기 메모리 기기는 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 메모리 기기.
  9. 메모리 기기에 있어서,
    각각이 하나 이상의 리프 메모리(Leaf Memory) 모듈들의 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치;
    호스트 링크(Host Link)를 통해, 하나 이상의 외부 프로세서들을 상기 복수의 리프 메모리 스위치로 연결하는 저 레이턴시(Low-latency) 메모리 스위치; 및
    상기 메모리 기기 내의 상기 하나 이상의 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급(Provision)을 위한 상기 하나 이상의 외부 프로세서들로부터의 요청들에 응답하는 관리 프로세서를 포함하되,
    상기 관리 프로세서는 스스로 공급되는 자원들로 접근하는 것을 제외하고 데이터 이동에 관여하지 않는 메모리 기기.
  10. 제 9 항에 있어서,
    상기 저 레이턴시 메모리 스위치를 상기 복수의 리프 메모리 스위치로 연결하는 복수의 리프 링크를 더 포함하는 메모리 기기.
  11. 제 10 항에 있어서,
    상기 관리 프로세서는 상기 하나 이상의 리프 메모리 모듈들로의 접근 또는 상기 하나 이상의 리프 메모리 모듈들의 공급을 위해, 데이터 센터 자원 관리 서비스로부터의 정책에 기초하여, 상기 하나 이상의 외부 프로세서들로부터의 요청들을 수용하고 처리하고,
    상기 관리 프로세서는 메모리를 위한 요청들을 충족시키기 위해, 상기 하나 이상의 리프 메모리 모듈들 및 상기 복수의 리프 메모리 스위치를 구성하는 메모리 기기.
  12. 제 11 항에 있어서,
    상기 관리 프로세서는 상기 하나 이상의 리프 메모리 모듈들을 관리하기 위해, 구성 및 할당 데이터베이스를 생성하고 유지하는 메모리 기기.
  13. 제 11 항에 있어서,
    상기 관리 프로세서는 상기 복수의 리프 메모리 스위치의 적어도 일부분에 구현되는 메모리 기기.
  14. 제 13 항에 있어서,
    상기 복수의 리프 메모리 스위치 중 적어도 하나는:
    리프 링크 계층(Leaf Link Layer) 컨트롤러로 연결되는 리프 링크 PHY;
    상기 리프 링크 계층 컨트롤러로 연결되는 저 레이턴시 스위치; 및
    상기 저 레이턴시 스위치에 연결되는, 상기 하나 이상의 메모리 채널들 각각을 위한, 단순 메모리 컨트롤러 및 PHY의 쌍을 포함하고,
    상기 관리 프로세서는 상기 저 레이턴시 스위치 및 상기 단순 메모리 컨트롤러로 연결되는 메모리 기기.
  15. 제 9 항에 있어서,
    상기 메모리 기기는 저 레이턴시 라우팅 프로토콜(Routing Protocol)을 이용하고,
    상기 저 레이턴시 라우팅 프로토콜은 공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 태그(Tag)들을 이용하여 상기 메모리 기술의 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 상기 저 레이턴시 메모리 스위치 및 상기 복수의 리프 메모리 스위치 모두에 의해 이용되는 메모리 기기.
  16. 제 9 항에 있어서,
    상기 메모리 기기는 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 메모리 기기.
  17. 분리된(Disaggregated) 메모리 기기를 제공하기 위한 방법에 있어서,
    저 레이턴시(Low-latency) 메모리 스위치가 하나 이상의 외부 프로세서들로부터 요청들 및 트래픽을 수신하기 위해 통하는 호스트 링크에 상기 저 레이턴시 메모리 스위치를 연결하는 단계;
    하나 이상의 리프 메모리(Leaf Memory) 모듈들의 하나 이상의 메모리 채널들에 연결되고 상기 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치에 상기 저 레이턴시 메모리 스위치를 연결하기 위해, 복수의 리프 링크(Leaf Link)를 이용하는 단계; 및
    관리 프로세서에 의해, 상기 분리된 메모리 기기 내의 상기 하나 이상의 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급(Provision)을 위한 상기 하나 이상의 외부 프로세서들로부터의 요청들에 응답하는 단계를 포함하되,
    상기 관리 프로세서는 스스로 공급되는 자원들로 접근하는 것을 제외하고 데이터 이동에 관여하지 않는 방법.
  18. 제 17 항에 있어서,
    상기 관리 프로세서에 의해, 데이터 센터 자원 관리 서비스로부터의 정책에 기초하여, 상기 하나 이상의 리프 메모리 모듈들로의 접근 또는 상기 하나 이상의 리프 메모리 모듈들의 공급을 위한 상기 요청들을 수용하고 처리하는 단계; 및
    상기 관리 프로세서에 의해, 메모리를 위한 요청들을 충족시키기 위해, 상기 하나 이상의 리프 메모리 모듈들 및 상기 복수의 리프 메모리 스위치를 구성하는 단계를 더 포함하는 방법.
  19. 제 18 항에 있어서,
    상기 관리 프로세서에 의해, 상기 하나 이상의 리프 메모리 모듈들을 관리하기 위해, 구성 및 할당 데이터베이스를 생성하고 유지하는 단계를 더 포함하는 방법.
  20. 제 18 항에 있어서,
    상기 복수의 리프 메모리 스위치의 적어도 일부분에 상기 관리 프로세서를 구현하는 단계를 더 포함하는 방법.
  21. 제 20 항에 있어서,
    상기 복수의 리프 메모리 스위치 중 적어도 하나는:
    리프 링크 계층(Leaf Link Layer) 컨트롤러로 연결되는 리프 링크 PHY;
    상기 리프 링크 계층 컨트롤러로 연결되는 저 레이턴시 스위치; 및
    상기 저 레이턴시 스위치에 연결되는, 상기 하나 이상의 메모리 채널들 각각을 위한, 단순 메모리 컨트롤러 및 PHY의 쌍을 포함하고,
    상기 관리 프로세서는 상기 저 레이턴시 스위치 및 상기 단순 메모리 컨트롤러로 연결되는 방법.
  22. 제 17 항에 있어서,
    공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 태그(Tag)들을 이용하여 상기 메모리 기술의 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 상기 저 레이턴시 메모리 스위치 및 상기 복수의 리프 메모리 스위치 모두에 의해, 저 레이턴시 라우팅 프로토콜(Routing Protocol)을 이용하는 단계를 더 포함하는 방법.
  23. 제 17 항에 있어서,
    상기 분리된 메모리 기기에 의해, 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 단계를 더 포함하는 방법.
  24. 메모리 기기에 있어서,
    각각이 하나 이상의 리프 메모리(Leaf Memory) 모듈들의 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치;
    호스트 링크(Host Link)를 통해, 하나 이상의 외부 프로세서들을 상기 복수의 리프 메모리 스위치로 연결하는 저 레이턴시(Low-latency) 메모리 스위치;
    공급(Provision), 모니터링 및 동작 동안 상기 메모리 기기에서 이용되는 메모리 기술의 유형들을 고유하게 식별하는 태그(Tag)들을 이용하여 메모리 기술 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 상기 저 레이턴시 메모리 스위치 및 상기 복수의 리프 메모리 스위치 모두에 의해 이용되는 저 레이턴시 라우팅 프로토콜(Routing Protocol); 및
    상기 메모리 기기 내의 상기 하나 이상의 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급(Provision)을 위한 상기 하나 이상의 외부 프로세서들로부터의 요청들에 응답하는 관리 프로세서를 포함하되,
    상기 관리 프로세서는 스스로 공급되는 자원들로 접근하는 것을 제외하고 데이터 이동에 관여하지 않는 메모리 기기.
  25. 제 24 항에 있어서,
    상기 저 레이턴시 메모리 스위치를 상기 복수의 리프 메모리 스위치로 연결하는 복수의 리프 링크를 더 포함하는 메모리 기기.
  26. 제 25 항에 있어서,
    관리 프로세서를 더 포함하되,
    상기 관리 프로세서는 메모리를 위한 요청들을 충족시키기 위해, 상기 하나 이상의 리프 메모리 모듈들 및 상기 복수의 리프 메모리 스위치를 구성하는 메모리 기기.
  27. 제 26 항에 있어서,
    상기 관리 프로세서는 상기 복수의 리프 메모리 스위치의 적어도 일부분에 구현되는 메모리 기기.
  28. 제 24 항에 있어서,
    상기 메모리 기기는 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 메모리 기기.
  29. 분리된(Disaggregated) 메모리 기기를 제공하기 위한 방법에 있어서,
    저 레이턴시(Low-latency) 메모리 스위치가 하나 이상의 외부 프로세서들로부터 요청들 및 트래픽을 수신하기 위해 통하는 호스트 링크에 상기 저 레이턴시 메모리 스위치를 연결하는 단계;
    하나 이상의 리프 메모리(Leaf Memory) 모듈들의 하나 이상의 메모리 채널들에 연결되고 상기 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치에 상기 저 레이턴시 메모리 스위치를 연결하기 위해, 복수의 리프 링크(Leaf Link)를 이용하는 단계;
    공급(Provision), 모니터링 및 동작 동안 상기 분리된 메모리 기기에서 이용되는 메모리 기술의 유형들을 고유하게 식별하는 태그(Tag)들을 이용하여 메모리 기술 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 저 레이턴시 라우팅 프로토콜(Routing Protocol)을 상기 저 레이턴시 메모리 스위치 및 상기 복수의 리프 메모리 스위치 모두에 의해 이용하는 단계; 및
    관리 프로세서에 의해, 상기 분리된 메모리 기기 내에서의 상기 하나 이상의 리프 메모리 모듈들의 접근, 관리, 유지보수, 구성 및 공급을 위한 상기 하나 이상의 외부 프로세서들로부터의 상기 요청들을 수용하고 처리하는 단계를 포함하되,
    상기 관리 프로세서는 스스로 공급되는 자원들로 접근하는 것을 제외하고 데이터 이동에 관여하지 않는 방법.
  30. 제 29 항에 있어서,
    상기 관리 프로세서에 의해, 메모리를 위한 요청들을 충족시키기 위해, 상기 하나 이상의 리프 메모리 모듈들 및 상기 복수의 리프 메모리 스위치를 구성하는 단계를 더 포함하는 방법.
  31. 제 30 항에 있어서,
    상기 관리 프로세서는 상기 복수의 리프 메모리 스위치의 적어도 일부분에 구현되는 방법.
  32. 제 29 항에 있어서,
    상기 분리된 메모리 기기에 의해, 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 단계를 더 포함하는 방법.
KR1020167010527A 2013-12-12 2014-12-09 분리된 메모리 기기 KR102353930B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361915101P 2013-12-12 2013-12-12
US61/915,101 2013-12-12
PCT/US2014/069318 WO2015089054A1 (en) 2013-12-12 2014-12-09 Disaggregated memory appliance

Publications (2)

Publication Number Publication Date
KR20160119050A KR20160119050A (ko) 2016-10-12
KR102353930B1 true KR102353930B1 (ko) 2022-01-20

Family

ID=53371756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167010527A KR102353930B1 (ko) 2013-12-12 2014-12-09 분리된 메모리 기기

Country Status (2)

Country Link
KR (1) KR102353930B1 (ko)
WO (1) WO2015089054A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040006584A1 (en) * 2000-08-08 2004-01-08 Ivo Vandeweerd Array of parallel programmable processing engines and deterministic method of operating the same
US20050050255A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Multiple processor system and method including multiple memory hub modules

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6031842A (en) * 1996-09-11 2000-02-29 Mcdata Corporation Low latency shared memory switch architecture
US6560680B2 (en) * 1998-01-21 2003-05-06 Micron Technology, Inc. System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory
US6904465B2 (en) * 2001-04-26 2005-06-07 Hewlett-Packard Development Company, L.P. Low latency inter-reference ordering in a multiple processor system employing a multiple-level inter-node switch
US7433363B2 (en) * 2004-08-23 2008-10-07 The United States Of America As Represented By The Secretary Of The Navy Low latency switch architecture for high-performance packet-switched networks
US8509078B2 (en) * 2009-02-12 2013-08-13 Microsoft Corporation Bufferless routing in on-chip interconnection networks
US8954698B2 (en) * 2012-04-13 2015-02-10 International Business Machines Corporation Switching optically connected memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040006584A1 (en) * 2000-08-08 2004-01-08 Ivo Vandeweerd Array of parallel programmable processing engines and deterministic method of operating the same
US20050050255A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Multiple processor system and method including multiple memory hub modules

Also Published As

Publication number Publication date
KR20160119050A (ko) 2016-10-12
WO2015089054A1 (en) 2015-06-18

Similar Documents

Publication Publication Date Title
US10254987B2 (en) Disaggregated memory appliance having a management processor that accepts request from a plurality of hosts for management, configuration and provisioning of memory
US11714763B2 (en) Configuration interface to offload capabilities to a network interface
US20200356294A1 (en) Technologies for providing shared memory for accelerator sleds
US10567166B2 (en) Technologies for dividing memory across socket partitions
US20160124872A1 (en) Disaggregated memory appliance
US10091295B1 (en) Converged infrastructure implemented with distributed compute elements
US11016832B2 (en) Cloud-based scale-up system composition
US20180024775A1 (en) Technologies for storage block virtualization for non-volatile memory over fabrics
US9977618B2 (en) Pooling of memory resources across multiple nodes
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
Jun et al. Scalable multi-access flash store for big data analytics
US10346342B1 (en) Uniform memory access architecture
WO2017133483A1 (zh) 存储系统
US9185823B2 (en) Hybrid memory blade
EP3716085B1 (en) Technologies for flexible i/o endpoint acceleration
EP3716088B1 (en) Technologies for flexible protocol acceleration
US20110082949A1 (en) Presenting multi-function devices behind a switch hierarchy as a single function device
CN110275840B (zh) 在存储器接口上的分布式过程执行和文件系统
US20230051825A1 (en) System supporting virtualization of sr-iov capable devices
EP4002139B1 (en) Memory expander, host device using memory expander, and operation method of server system including memory expander
KR102353930B1 (ko) 분리된 메모리 기기
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
US9489136B2 (en) Interrupt driven memory signaling
Cohen et al. Applying Amdahl's Other Law to the data center
US20240264759A1 (en) Method and apparatus to perform memory reconfiguration without a system reboot

Legal Events

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