KR20160119050A - Disaggregated memory appliance - Google Patents

Disaggregated memory appliance Download PDF

Info

Publication number
KR20160119050A
KR20160119050A KR1020167010527A KR20167010527A KR20160119050A KR 20160119050 A KR20160119050 A KR 20160119050A KR 1020167010527 A KR1020167010527 A KR 1020167010527A KR 20167010527 A KR20167010527 A KR 20167010527A KR 20160119050 A KR20160119050 A KR 20160119050A
Authority
KR
South Korea
Prior art keywords
memory
leaf
low latency
switches
switch
Prior art date
Application number
KR1020167010527A
Other languages
Korean (ko)
Other versions
KR102353930B1 (en
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/en
Application granted granted Critical
Publication of KR102353930B1 publication Critical patent/KR102353930B1/en

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) 메모리 스위치를 포함하는 분리된 메모리 기기를 제공한다.The present invention relates to a method and system for managing one or more leaf memory modules, a plurality of leaf memory switches for managing one or more memory channels, and, via a host link, And a low-latency memory switch that connects the memory devices.

Figure P1020167010527
Figure P1020167010527

Description

분리된 메모리 기기 {DISAGGREGATED MEMORY APPLIANCE}Disposed memory device {DISAGGREGATED MEMORY APPLIANCE}

대형의 데이터 센터(Data Center) 구성들을 이용하면, CPU, 메모리, 및 퍼시스턴트 메모리(Persistent Memory) 자원들이 시스템들에 의해 효율적으로 이용되도록 이 자원들을 효과적으로 공급(Provision)하는 것은 어렵다. 예로서, 메모리는 종종 과도하게 공급(Over-provision)되고, 이는 많은 양의 메모리가 여러 서버에서 "좌초되어(Stranded)" 이용되지 않게 한다. 대형의 풀(Pool)들의 자원들(예컨대, 동적 메모리(Dynamic Memory))이 효율적으로 이용되고 좌초되는 자원이 없도록, 이 자원들을 여러 프로세서 또는 인스턴스(Instance)에 공유시키고 동적으로 할당시키는 해법들이 필요하다.With large data center configurations, it is difficult to effectively provision these resources so that CPU, memory, and persistent memory resources are efficiently used by the systems. By way of example, memory is often over-provisioned, which prevents a large amount of memory from being "stranded" across multiple servers. There is a need for solutions that share and dynamically allocate these resources to multiple processors or instances so that resources of large Pools (e.g., Dynamic Memory) are efficiently utilized and no resources are stranded Do.

나아가, 많은 컴퓨터 어플리케이션(Application; 예컨대, 데이터 센터 어플리케이션)들은 많은 양의 DRAM 메모리를 요구한다. 불행히도, 서버 시스템들에 메모리를 더 추가하는 것이 점점 더 어려워지고 있다. 다른 요인들 중에서도, 버스 속도(Bus Speed)들을 증가시키는 것은 신호 처리(Signaling)의 문제들에 기인하여 시스템의 모듈들의 개수가 시간 흐름에 따라 사실상 줄어들게 만든다. 한편, 서버들을 이용하는 어플리케이션들은 시스템의 능력(Ability)을 앞질러서 점점 증가하는 양의 DRAM 메모리를 요구하고 있다. 예로서, 메모리 데이터베이스(Database)들에서, 효율적인 동작을 위해 테라바이트(Terabyte, TB) 단위의 DRAM이 필요하다.Furthermore, many computer applications (e.g., data center applications) require large amounts of DRAM memory. Unfortunately, it is becoming increasingly difficult to add more memory to server systems. Among other factors, increasing bus speeds causes the number of modules in the system to substantially decrease over time due to problems with signaling. On the other hand, applications using servers are increasingly ahead of the system's ability and require an increasing amount of DRAM memory. As an example, in memory databases, a Terabyte (TB) DRAM is required for efficient operation.

해결될 필요가 있는 두 가지의 주요 이슈들은: 1) 버스에 대한 부담을 주지 않고 매우 많은 개수의 DRAM들을 메모리 버스에 어떻게 연결할 것인지, 2) 서버 내부의 가용 체적 공간(Available Volumetric Space) 내에 이 DRAM들을 물리적으로 어떻게 설치할 것인지 또는 서버 인클로저(Enclosure) 외부의 메모리가 낮은 레이턴시(Low Latency)를 갖게 하기 위한 방법들을 어떻게 가능하게 할 것인지와 관련된다.The two major issues that need to be addressed are: 1) how to connect a very large number of DRAMs to the memory bus without burdening the bus, 2) how to connect the DRAMs to the available volumetric space within the server, How to physically install them, or how to make ways for memory outside the server enclosure to have low latency.

낮은 레이턴시 및 높은 상호 연결 대역폭(High Interconnect Bandwidth)을 유지하면서도, 시스템 내의 DRAM들의 양을 증가시킨 서버 시스템들을 가능하게 하는 새로운 방법들이 필요하다. 여기에서 설명되는 방법들 및 시스템들은 이러한 필요들 중 하나 이상을 다룰 수 있다.New methods are needed to enable server systems that increase the amount of DRAMs in the system while maintaining low latency and high interconnect bandwidth. The methods and systems described herein may address one or more of these needs.

일 실시 예는 분리된 메모리 기기(Disaggregated Memory Appliance)를 제공한다. 분리된 메모리 기기는, 하나 이상의 리프 메모리(Leaf Memory) 모듈들의 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치, 및 호스트 링크(Host Link)를 통해 하나 이상의 외부 프로세서들을 복수의 리프 메모리 모듈로 임의로 연결하는 저 레이턴시(Low-latency) 메모리 스위치를 포함한다.One embodiment provides a Disaggregated Memory Appliance. A separate memory device includes a plurality of leaf memory switches for managing one or more memory channels of one or more leaf memory modules and a plurality of leaf memory modules via a host link, And a low-latency memory switch that connects to the memory.

본 발명의 특징들 및 유용성, 및/또는 그 외 다른 특징들 및 유용성은 첨부되는 도면들과 함께하는 이하 실시 예들의 설명으로부터 명확해지고 더 잘 이해될 것이다.
도 1은 예시적인 데이터 센터 랙(Rack) 구성을 보여주는 도면이다.
도 2는 계산 티어(Compute Tier)가 동적 메모리 티어와 같은 공유(Shared) 메모리 기기로 어떻게 연결되는지를 개념적으로 보여주는 도면이다.
도 3은 메모리 기기의 실시 예를 더 상세히 보여주는 도면이다.
도 4는 리프 메모리 스위치(Leaf Memory Switch)들 중 적어도 하나를 더 상세히 보여주는 도면이다.
도 5는 저 레이턴시 메모리 스위치를 더 상세히 보여주는 도면이다.
The features and utility of the present invention, and / or other features and utilities, will be apparent from and elucidated with reference to the embodiments described hereinafter with reference to the accompanying drawings.
1 is a diagram illustrating an exemplary data center rack configuration.
Figure 2 is a conceptual illustration of how a computation tier is connected to a shared memory device, such as a dynamic memory tier.
Figure 3 is a more detailed illustration of an embodiment of a memory device.
4 is a diagram showing at least one of the Leaf Memory Switches in more detail.
Figure 5 is a more detailed view of a low latency memory switch.

이하, 본 발명의 실시 예들에 대한 언급이 자세하게 이루어질 것이다. 첨부되는 도면들에 나타낸 예시들에서, 동일한 참조 번호는 전반적으로 동일한 구성 요소를 나타낸다. 본 발명을 설명하기 위해, 도면들을 참조하여, 이하 실시 예들이 설명된다.Hereinafter, the embodiments of the present invention will be described in detail. In the examples shown in the accompanying drawings, like reference numerals refer to like elements throughout. In order to explain the present invention, the following embodiments will be described with reference to the drawings.

본 발명의 장점들 및 특징들, 및 이를 달성하기 위한 방법들은 실시 예들의 이하 자세한 설명 및 첨부되는 도면들을 참조하여 더 잘 이해될 수 있다. 그러나, 본 발명은 많은 다른 형태들로 구현될 수 있고, 여기에서 언급되는 실시 예들로 한정되는 것으로 해석되어서는 안 된다. 오히려, 이 실시 예들은 본 개시가 완전하고 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자들에게 본 발명을 충분히 전달하기 위해 제공된다. 본 발명은 단지 첨부되는 청구항들에 의해서만 정의될 것이다. 도면들에서, 층들 및 영역들의 두께는 명확함(Clarity)을 위해 과장된다.The advantages and features of the present invention and methods for achieving this can be better understood with reference to the following detailed description of the embodiments and the accompanying drawings. However, the present invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the invention to those skilled in the art to which the invention pertains. The invention will only be defined by the appended claims. In the figures, the thicknesses of the layers and regions are exaggerated for clarity.

본 발명을 설명하는 문맥(특히, 청구항들의 문맥)에서, "하나", "이", "그", "상기", 및 이와 유사한 지시어를 사용하는 것은, 다르게 지시되거나 문맥에 의해 분명히 모순되지 않는 한, 단수 및 복수 모두를 커버(Cover)하는 것으로 이해되어야 한다. "포함한다", "갖는다", 및 "내포한다"는 용어들은, 다르게 언급되지 않는 한, 개방형(Open-ended)의 용어(즉, "포함하지만, 한정되지는 않는다"는 의미)로서 이해되어야 한다.It is to be understood that, in the context of describing the invention (particularly in the context of the claims), the use of "a", "this", " It should be understood that one, singular and plural are all covered. The terms "comprises", "having", and "includes" are to be understood as open-ended terms (ie, "including, but not limited to") unless otherwise stated do.

여기에서 이용되는 "구성 요소" 또는 "모듈(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)들과 같은 구성 요소들을 포함할 수 있다. 이 구성 요소들에 대해 제공되는 기능, 및 구성 요소들 또는 모듈들은 더 적은 수의 구성 요소들로 조합될 수 있고, 또는 구성 요소들 또는 모듈들은 추가의 구성 요소들 및 구성 요소들 또는 모듈들로 더 분리될 수 있다.The term " component "or " module ", as used herein, refers to software or hardware components that perform particular tasks, such as Field Programmable Gate Array (FPGA) , But is not limited to this. The component or module may advantageously be configured to reside within an addressable storage medium and configured to execute on one or more processors. Thus, a component or module may be implemented as a software component, an object-oriented software component, a class component, a task component, a process, a function, And may be implemented as a set of attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, May include components such as circuitry, data, databases, data structures, tables, arrays, and variables. The functionality and components or modules provided for these components may be combined into fewer components, or the components or modules may be combined with additional components and components or modules Can be further separated.

다르게 정의되지 않는 한, 여기에서 이용되는 모든 기술적인 및 과학적인 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 갖는 자에 의해 공통으로 이해되는 바에 따라 동일한 의미를 갖는다. 모든 예시들 각각 또는 여기에서 제공되는 예시적인 용어들은 단지 본 발명을 더 잘 설명하기 위한 것이고, 다르게 특정되지 않는 한 본 발명의 범위(Scope)에 대한 한정은 아니다. 나아가, 다르게 정의되지 않는 한, 일반적으로 이용되는 사전들에 정의된 모든 용어들은 과장되어 해석되지 않을 수 있다.Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Each of all examples or exemplary language provided herein is for the purpose of better illustrating the present invention and is not intended to limit the scope of the present invention unless otherwise specified. Further, unless defined otherwise, all terms defined in commonly used dictionaries may be exaggeratedly interpreted.

본 발명의 실시 예들은 분리된 메모리 기기(Disaggregated Memory Appliance)를 제공한다. 분리된 메모리 기기는 낮은 레이턴시(Low Latency) 및 높은 상호 연결 대역폭(High Interconnect Bandwidth)을 유지하면서도, 시스템 내의 DRAM의 양을 증가시킨 서버 시스템들을 가능하게 한다. 분리된 메모리 기기는 데이터 센터 및/또는 다른 환경들에서 이용될 수 있다.Embodiments of the present invention provide a Disaggregated Memory Appliance. Separate memory devices enable server systems that increase the amount of DRAM in the system while maintaining low latency and high interconnect bandwidth. A separate memory device may be used in the data center and / or other environments.

본 발명의 실시 예의 방법들 및 시스템들은 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)을 이용하는 것 중 하나 이상을 포함할 수 있다. 또한, 이 방법 및 시스템은 이상의 것들을 이용하기 위한 장치들, 버퍼들, 스위치(들) 및 방법론들을 포함할 수 있다.The methods and systems of embodiments of the present invention may be implemented as a set of "leaf " memory systems that manage i) DIMMs in a sufficiently small number to accommodate a physical space of a Capacity-limiting Standards such as DDR4. (Ii) using a very low latency switch link (optionally linking a plurality of leaf memory systems to a plurality of hosts) (in some cases, this link is a memory architecture Iii) encapsulating semantics specific to the memory architecture in the Link Protocol, iv) managing, maintaining, configuring, and provisioning memory (which may be agnostic); Use a management processor to accept requests from the hosts for the Provisioning, v) the low latency of the memory system data and metadata (Wormhole Routing) provided during the memory provisioning process so that the endpoints use the Target Routing Data to enable routing of the target routing data . In addition, the method and system may include apparatus, buffers, switch (s), and methodologies for using the above.

예로서, 다양한 실시 예들에서, 위 방법 및 시스템은 i) 하나 이상의 스위칭 계층(Switching Layer)들, ii) 저 레이턴시 라우팅 프로토콜, iii) 부팅, MMU, 단위 상호작용(Atomic Transaction)들, 간단한 계산 오프로드(Compute Offload)를 위한 간단한 계산 컴플들, iv) 여러 메모리 상자들을 링크하기 위한 선택적인 구조(Optional Fabric), v) RAS 특징들, vi) 동적 메모리 할당, vii) 메모리의 동적 할당을 위한 프로토콜들 중 하나 이상을 포함할 수 있다.By way of example, in various embodiments, the above method and system may be implemented in a system comprising: i) one or more switching layers, ii) a low latency routing protocol, iii) boot, MMU, Atomic Transactions, Simple computational complexes for computed offload, iv) Optional Fabric for linking several memory boxes, v) RAS features, vi) Dynamic memory allocation, vii) Protocol for dynamic allocation of memory Or < / RTI >

분리(Disaggregation)는 공유 풀(Shared Pool)로부터 다양한 어플리케이션(Application)들 및 OS 인스턴스(Instance)들에게 자원들을 동적으로 할당하는 것을 돕기 위한 하나의 방법이다. 이 개념은 도 1에 나타나 있다.Disaggregation is one way to help dynamically allocate resources to various applications and OS instances from a shared pool. This concept is shown in Fig.

도 1은 예시적인 데이터 센터 랙(Data Center Rack) 구성을 보여주는 도면이다. 단일의 서버 시스템에서 보통 발견되는 데이터 센터 랙(100)의 자원들은 티어(Tier)들로 나뉘고, 별개의 인클로저(Enclosure)들로 물리적으로 분리된다(또는, 심지어, 데이터 센터 내에서 별개의 랙들 또는 줄(Row)들로 분리된다). 세 개의 주요 티어들은 완전한 티어(102), 동적 메모리 티어(104)(예컨대, DRAM), 퍼시스턴트 메모리(Persistent Memory) 티어(106)(예컨대, 플래시)이다. 네 번째 티어는 하드 디스크 드라이브 티어(108)를 포함할 수 있다.1 is a diagram illustrating an exemplary Data Center Rack configuration. The resources of the data center rack 100, typically found in a single server system, are divided into tiers and physically separated into separate enclosures (or even separate racks in the data center, Separated by rows). The three main tiers are a full tier 102, a dynamic memory tier 104 (e.g., DRAM), and a Persistent Memory tier 106 (e.g., flash). The fourth tier may include a hard disk drive tier 108.

계산 티어(102)는 복수의 프로세서 또는 CPU(호스트들로도 언급됨)를 포함한다. 동적 메모리 티어(104) 및 퍼시스턴트 메모리 티어(106) 각각은 계산 티어의 프로세서들(또는 VM, OS 인스턴스, 스레드(Thread) 등)에게 부분적으로 할당될 수 있는 메모리 자원의 커다란 풀들을 갖는다. 이 메모리 자원들은 부팅 시간에 할당될 수 있고 상대적으로 정적으로 유지될 수 있고, 또는 프로세서들에 의해 실행되고 있는 어플리케이션들의 요구에 맞게 계속하여 조정될 수 있다. (XaaS 비즈니스 모델들과 같은) 몇몇 경우, 메모리 자원들은 특정 CPU/VM/OS 인스턴드 상에서 실행되는 각 잡(Job)에게 재할당될 수 있다.The computing tier 102 includes a plurality of processors or CPUs (also referred to as hosts). Each of the dynamic memory tier 104 and the persistent memory tier 106 has large pools of memory resources that can be partially allocated to processors (or VMs, OS instances, threads, etc.) of the computing tier. These memory resources can be allocated at boot time and remain relatively static, or can be continuously adjusted to meet the needs of applications being executed by the processors. In some cases (such as XaaS business models), memory resources may be reassigned to each job running on a particular CPU / VM / OS instance.

도 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) 상의 하나 이상의 기능 블록들로서 포함될 수 있다.Figure 2 is a conceptual illustration of how a computational tier is connected to a shared memory device, such as a dynamic memory tier. It is shown that one of the processors 200 of the computing tier 102 (e.g., CPU or SOC) is connected to one of the memory devices 202 of the dynamic memory tier 104 via the buffer 204. The buffer 204 may be attached to the processor 200 via link 206. In one embodiment, the link 206 may include a conventional high speed link such as DDRx, PCIe, SAS, SATA, QPI, or the like, or may be a new dedicated link. The buffer 204 may have a memory (e.g., DDR4) attached directly thereto such that the buffer 204 operates as a complete memory controller for both local ("near") memory as well as memory device have. The buffer 204 may not be required by itself and may be included as one or more functional blocks on the processor 200.

로컬로 직접 부착되는 메모리를 (선택적으로) 갖는 것에 더하여, 버퍼는 낮은 레이턴시의 고속 "호스트" 링크(208)를 통해 메모리 기기(202)로 연결될 수 있다. 메모리 기기(202)는 일반적으로 별개의 인클로저이기 때문에, 많은 실시 예들의 이 호스트 링크(208)는 하나의 인클로저로부터 나와 다른 것으로의 라우팅을 위해 케이블 기반일 것이다. 그러나, 이 호스트 링크(208)는 (대형 서버 시스템 또는 블레이드 기반의 아키텍처의 경우와 같이) 크로스바(Crossbar) 기반일 수 있다. 메모리 요청들 및 데이터를 프로세서(200)로부터 적절한 메모리 자원들에게 라우팅하기 위해, 메모리 기기(202)는 그 자체로 많은 양의 메모리(212)와 함께, 저 레이턴시 메모리 스위치(210)와 같은 하나 이상의 스위칭 계층들을 포함한다.In addition to having (optionally) a memory directly attached locally, the buffer may be connected to the memory device 202 via a high-speed "host" Since the memory device 202 is typically a separate enclosure, this host link 208 of many embodiments may be cable-based for routing from one enclosure to another. However, the host link 208 may be crossbar based (such as in a large server system or blade-based architecture). The memory device 202 may itself be coupled to a large amount of memory 212 in order to route memory requests and data from the processor 200 to the appropriate memory resources, Switching layers.

도 3은 메모리 기기의 실시 예를 더 상세히 보여주는 도면이다. 메모리 기기는 많은 양의 메모리(212)를 포함한다. 많은 실시 예에서, 많은 양의 메모리(212)는 메모리 기기(202)의 인클로저에 수용되는 (DDR4 DIMM들과 같은) 표준 메모리 모듈들(223)의 집합으로서 구성된다. 메모리 모듈들(223)은 여기에서 리프 메모리 모듈들(223)이라고 언급될 수도 있다.Figure 3 is a more detailed illustration of an embodiment of a memory device. The memory device includes a large amount of memory 212. In many embodiments, a large amount of memory 212 is configured as a collection of standard memory modules 223 (such as DDR4 DIMMs) housed in an enclosure of memory device 202. The memory modules 223 may be referred to herein as leaf memory modules 223.

일 실시 예에 따르면, 메모리 기기(202)는 복수의 스위칭 계층을 포함한다. 제 1 스위칭 계층은 호스트 링크(208)로 연결되는 저 레이턴시 메모리 스위치(210)를 포함할 수 있는데, 저 레이턴시 메모리 스위치(210)는 호스트 링크(208)를 통해 하나 이상의 외부 프로세서들로부터 트래픽(Traffic)/요청들을 수신한다. 제 2 스위칭 계층은 저 레이턴시 메모리 스위치(210)를 복수의 리프 메모리 스위치(220)로 연결하는 복수의 리프 링크(Leaf Link)(214)를 포함할 수 있다. 제 3 스위칭 계층은 복수의 리프 메모리 스위치(220)를 포함할 수 있다. 복수의 리프 메모리 스위치(220)는 하나 이상의 리프 메모리 모듈들(223)(예컨대, DDR4의 경우, 보통 한 개 내지 세 개의 모듈들)의 하나 이상의 메모리 채널들로 연결되고, 이 메모리 채널들을 관리한다. 스위칭 계층들이 존재함으로 인해, 저 레이턴시 메모리 스위치(210)는 외부 프로세서들 중 하나 이상을 리프 메모리 모듈들(223)로 임의로 연결할 수 있다.According to one embodiment, the memory device 202 includes a plurality of switching layers. The first switching layer may include a low latency memory switch 210 coupled to a host link 208 that may receive traffic from one or more external processors via the host link 208 ) / Requests. The second switching layer may include a plurality of leaf links 214 connecting the low latency memory switch 210 to the plurality of leaf memory switches 220. The third switching layer may include a plurality of leaf memory switches 220. The plurality of leaf memory switches 220 are connected to one or more memory channels of one or more leaf memory modules 223 (e.g., usually one to three modules in the case of DDR4) and manage these memory channels . Due to the presence of switching layers, the low latency memory switch 210 may optionally couple one or more of the external processors to the leaf memory modules 223.

일 실시 예에서, 저 레이턴시 메모리 스위치(210)는 많은 상이한 CPU들 또는 많은 상이한 서버들로부터 유입되는 많은 호스트 링크(208)로부터의 트래픽/요청들을 관리할 수 있다. 저 레이턴시 메모리 스위치(210)는 유입되는 트래픽/요청들과 관련되는 주소를 검사하고, 이 트래픽/요청을 트래픽/요청 패킷(Packet)의 형태로 적절한 리프 링크에게 라우팅할 수 있다. 저 레이턴시 메모리 스위치(210)로부터 트래픽/요청 패킷을 수신한 리프 링크는 어드레스 필드(Address Field)를 검사하고, 적절한 메모리 채널에 대응하는 메모리 스위치(220)에게 그 패킷을 라우팅한다. 일 실시 예에서, 저 레이턴시 메모리 스위치(210)는 다른 메모리 기기들로의 메시 인터페이스(Mesh Interface)(209)를 더 포함할 수 있다.In one embodiment, the low latency memory switch 210 is capable of managing traffic / requests from a large number of different CPUs or a large number of host links 208 from many different servers. The low latency memory switch 210 may examine the address associated with the incoming traffic / requests and route the traffic / request to the appropriate leaf link in the form of a traffic / request packet. The leaf link receiving the traffic / request packet from the low latency memory switch 210 examines the address field and routes the packet to the memory switch 220 corresponding to the appropriate memory channel. In one embodiment, the low latency memory switch 210 may further include a mesh interface 209 to other memory devices.

리프 링크들(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)은 두 개의 노드들 사이의 연결을 막기 위한 갈무리 기능을 수행한다. 웜홀 기법은 패킷을 목적지로 향하게 하는 경로를 지시하지는 않는다. 그러나, 웜홀 기법은 패킷이 라우터로부터 출발하여 나아갈 때 경로를 결정하고, 패킷 수준보다는 플릿 수준에 대해서 버퍼들 및 채널 대역폭을 할당한다.The architecture of the leaf links 214 allows for very low latency switching in and of itself. In one embodiment, by way of example, low latency switching includes wormhole switching. As is well known, wormhole switching or wormhole routing is a system for simple flow control in computer networking based on known fixed links. This is a subset of flow control methods called Flit-Buffer Flow Control. Wormhole switching breaks up large network packets into smaller pieces, called flit (flow control digits). The first flit, called the Header Flit, holds information about the path (ie, the destination address) of the packet and sets the Routing Behavior for the packet for all subsequent flits. Zero or more Body Flits lead to the back of the Head Flit, which contains the actual payload of the data. The final flit, called the tail flit, performs a culling function to prevent the connection between the two nodes. The wormhole technique does not indicate a path that directs a packet to a destination. However, the wormhole method determines the path when the packet starts from the router, and allocates buffers and channel bandwidth for the fleet level rather than the packet level.

따라서, 메모리 데이터 플릿들 및 메타데이터의 낮은 레이턴시의 스위칭에 영향을 미치기 위해, 일 실시 예는 종점들이 메모리 데이터 플릿들의 타겟 라우팅 데이터를 이용하도록, 메모리 공급 과정 동안 제공되는 웜홀 스위칭을 이용한다. 좀 더 구체적으로, 호스트 프로세서들 및 메모리 모듈들(223) 사이의 고정 링크들의 종점들은 간결한 어드레스를, 저 레이턴시 메모리 스위치(210) 및 리프(220)가 헤더 플릿을 수신할 수 있게 하는 플릿의 헤더로 인코딩하고, 그 어드레스를 디코딩하고, 어드레스를 다시 인코딩하고, 데이터 플릿들이 스위치에 도달하기 전에 플릿들의 페이로드를 라우팅한다. 라우팅 로직(Routing Logic)은 그 뒤, 원래 플릿을 위하여 스위치를 통한 경로가 설정되자마자, 다른 소스(Source)로부터의 다른 플릿을 디코딩할 수 있다. 도 2에서는 버퍼(204)가 호스트 종점을 나타내는 한편, 도 3에서는 메모리 스위치들(220)이 메모리 모듈 종점들을 나타낸다.Thus, to affect the switching of low latency of memory data fleets and metadata, one embodiment utilizes wormhole switching provided during the memory provisioning process, so that endpoints use the target routing data of the memory data fleets. More specifically, the endpoints of the fixed links between the host processors and the memory modules 223 include a concise address, a low latency memory switch 210, and a header of the fleet that allows the leaf 220 to receive the header flit. Decodes the address, re-encodes the address, and routes the payloads of the flits before the data flits reach the switch. The Routing Logic can then decode the other frit from the other Source as soon as the path through the switch is established for the original frit. In FIG. 2, buffer 204 represents the host endpoint, while in FIG. 3 memory switches 220 represent memory module endpoints.

본 발명의 실시 예의 스위칭 네트워크는 웜홀 스위칭을 채용한다. 웜홀 스위칭에서, i) 패킷들이 플릿들로 전송되고, 2) 헤더 플릿이 패킷에 대한 모든 라우팅 정보를 포함하고, 3) 주어진 패킷에 대한 플릿들이 스위칭 네트워크를 통해 파이프라인(Pipeline) 방식으로 전송되고, 4) 차단된(Blocked) 헤더 플릿이 뒤이어지는 모든 데이터 플릿들을 중간(Intermediary) 스위칭 노드들에서 지연시키고, 5) 단지 하나의 플릿만이 어떤 주어진 스위치에 저장될 필요가 있다.The switching network of an embodiment of the present invention employs wormhole switching. In wormhole switching, i) packets are sent to the flits, 2) the header flit contains all routing information for the packet, and 3) the flits for a given packet are transmitted in a pipeline manner over the switching network , 4) delaying all data frites followed by blocked header flits at intermediate switching nodes, and 5) only one flit needs to be stored in any given switch.

더 나아간 실시 예에서, 메모리 기기(202)는 여러 기능들을 가능하게 하기 위해, 선택적으로 계산 복합체(Compute Complex)(216)(예컨대, 프로세서 및 지원 로직(Supporting Logic) 및/또는 MMU)를 포함할 수 있다. 이것들은 다음을 포함할 수 있다:In a further embodiment, the memory device 202 may optionally include a computing complex 216 (e.g., a processor and supporting logic and / or an MMU) to enable various functions . These may include the following:

i) 메모리 기기의 부팅 및 초기의 구성i) Booting and initial configuration of the memory device

ii) 여러 서버 또는 CPU "호스트들"에 대한 메모리 할당을 조직하는 것ii) organizing memory allocations for multiple servers or CPU "hosts"

iii) "오프로딩(Off-loading)"을 계산하는 것. 이것은 호스트와 기기 사이의 메모리 트래픽을 감소시킬 수 있다.iii) calculating "off-loading". This can reduce memory traffic between the host and the device.

(1) 간단한 단위 연산들(예컨대, 읽기-수정-쓰기(Read-Modify-Write)) (1) Simple unit operations (e.g., Read-Modify-Write)

(2) 하둡(Hadoop)을 위한 어플리케이션 특유의 최적화(예컨대, 맵 리듀스(Map Reduce)) 등 (2) application-specific optimizations for Hadoop (eg, Map Reduce), etc.

iv) RAS 특징들, 예컨대:iv) RAS features, such as:

(1) 메모리 스페어링(Memory Sparing) (1) Memory Sparing

(2) 메모리 RAID (2) Memory RAID

(3) 대체 작동(Failover) (3) Failover

(4) 오류 및 예외 처리(Exception Handling) (4) Handling Errors and Exceptions (Exception Handling)

(5) 열 예외 처리(Thermal Exception Handling) (5) Thermal Exception Handling

(6) 스로틀링(Throttling) (6) Throttling

(7) 핫 스왑(Hot Swap) (7) Hot Swap

(8) 국지 전원 모드(Local Power Mode) 관리 (8) Local power mode management

여기에서 설명되는 링크 아키텍처는 프로세서들과 메모리 서브시스템들 사이에서 메모리 데이터 플릿들의 아주 낮은 레이턴시의 움직임을 가능하게 하기 위해, 웜홀 스위칭을 이용할 수 있다. 스위치들은 플릿을 수신하고, 물리 어드레스에 기초하여, 그 플릿이 언제 움직여 나아갈지 및 그 플릿을 움직이기 위해 어떤 상호 연결(Interconnect)이 이용될지를 결정한다.The link architecture described herein may utilize wormhole switching to enable very low latency movement of memory data frit between processors and memory subsystems. The switches receive the flit and determine, based on the physical address, when the flit will move and what interconnect will be used to move the flit.

웜홀 라우팅(Wormhole Routing)의 설정은 여러 기능들을 가능하게 하기 위해 잠재적으로 포함되는 계산 복합체(216)의 도움에 의해 달성될 수 있다. 이것들은 다음을 포함할 수 있다:The setting of Wormhole Routing can be accomplished with the help of a computational complex 216 that is potentially included to enable various functions. These may include the following:

i) 호스트들 및 DRAM 어레이들로부터 상호 연결의 토폴로지(Topology)를 측정하는 것i) measuring the topology of interconnects from hosts and DRAM arrays;

ii) 플릿 헤더들을 생성하기 위해 요구되는 어드레스 정보를 링크 종점들로 전달하는 것ii) passing address information required to generate fleet headers to link end points

iii) RAS 특징들, 예컨대:iii) RAS features, such as:

(1) 오류 및 예외 처리 (1) Handling Errors and Exceptions

(2) 스로틀링 (2) Throttling

(3) 기타 (3) Other

이더넷(Ethernet) 또는 다른 네트워크 포트와 같은 포트(218)는 계산 복합체(216)와 다른 시스템들(호스트 서버들을 포함) 사이의 통신을 가능하게 한다. 이것은 메모리 할당을 구성하고 관리하기 위한 통신 포트에 관한 하나의 선택지이다. 다만, 메모리 할당은 메모리 기기(202)로의 호스트 링크들(208)을 통해서도 관리될 수 있다.A port 218, such as an Ethernet or other network port, enables communication between the computing complex 216 and other systems (including host servers). This is an option for a communications port to configure and manage memory allocations. However, the memory allocation can also be managed through the host links 208 to the memory device 202.

또한, 메모리 기기(202)는 여러 메모리 기기 사이의 구조를 생성하기 위해 추가의 또는 특수한 링크들을 포함할 수 있다. 이것은 대체 동작 또는 미러링(Mirroring)과 같은 높은 이용 가능성(High Availability) 특징들을 위해 중요할 수 있고, 메모리 용량을 더 큰 크기로 확장하기 위해서도 이용될 수 있다.In addition, the memory device 202 may include additional or specialized links to create a structure between the various memory devices. This may be important for high availability features such as alternate operations or mirroring, and may also be used to extend memory capacity to a larger size.

도 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)은 프로세서들에서 보통 발견되는 컨트롤러들에 비해 대체로 단순화될 수 있다.4 is a diagram illustrating at least one of the leaf memory switches 220 in greater detail. The leaf memory switch 220 includes a Leaf Link PHY 502. The leaf memory switch 220 optionally includes a Leaf Link Layer controller 504 for managing the leaf links 214 shown in FIG. The traffic from the low latency memory switch 210 by the leaf links 214 is passed through the leaf link PHY 502 of the Leaflet controller 504 to the Very Low Latency switch 510 Lt; / RTI > The ultra-low latency switch 510 determines which of the one or more DDR channels is the correct destination / source for the traffic. Each DDR channel includes simple / simple memory controllers 508A or 508B, and a pair of PHYs 506A or 506B (e.g., DDRx). Due to the limited memory traffic cases being addressed, the simple memory controllers 508A, 508B can be substantially simplified compared to the controllers usually found in processors.

본 발명의 실시 예들에 따르면, 리프 메모리 스위치(220)는 관리 프로세서(512)를 더 포함할 수 있다. 관리 프로세서(512)는 단순한 메모리 컨트롤러들(508A, 508B)의 제어 및 데이터로 접근한다. 관리 프로세서(512)는 메모리 기기 내의 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급을 위한 외부 프로세서들로부터의 요청에 응답한다. 관리 프로세서(512)와의 통신은 관리 포트(미도시)를 통해 저 레이턴시 메모리 스위치(210)에서 이루어질 수 있다. 관리 프로세서(512)는 메모리 기기(202)의 물리적인 메모리를 관리하기 위해, 구성 및 할당 데이터베이스(514)를 생성하고 유지한다.According to embodiments of the present invention, the leaf memory switch 220 may further include a management processor 512. The management processor 512 accesses the control and data of the simple memory controllers 508A and 508B. Management processor 512 responds to requests from external processors for management, maintenance, configuration, and provisioning of leaf memory modules in memory devices. Communication with the management processor 512 may be made in the low latency memory switch 210 via a management port (not shown). The management processor 512 creates and maintains a configuration and allocation database 514 to manage the physical memory of the memory device 202.

관리 프로세서(512)는 메모리로의 접근 또는 메모리의 공급을 위해, 데이터 센터 자원 관리 서비스로부터의 정책 및 데이터 센터 인증 서비스로부터의 인증에 기초하여, (예컨대, 이더넷을 통해) 호스트 프로세서들로부터의 요청들을 수용하고 처리한다.The management processor 512 may be configured to send requests (e.g., via Ethernet) from the host processors, based on policies from the data center resource management service and authentication from the data center authentication service, And accepts and processes them.

관리 프로세서(512)는 메모리를 위한 요청들을 충족시키기 위해, 메모리 및 리프 메모리 스위치들(220)을 구성한다. 관리 프로세서(512)는 접근을 승인하고 물리적/논리적 접근 방법들 및 메모리 속성들을 제공함으로써 요청들에 응답한다. 또는, 관리 프로세서(512)는 정책, 인증 또는 자원 한정(Constraint)들에 기초하여 접근을 거부함으로써 요청들에 응답한다. 관리 프로세서(512)는 필요에 따라 스스로 자원들을 공급할 수 있다.Management processor 512 configures memory and leaf memory switches 220 to satisfy requests for memory. Management processor 512 responds to requests by accepting access and providing physical / logical access methods and memory attributes. Alternatively, the management processor 512 responds to requests by denying access based on policy, authentication, or resource constraints. The management processor 512 may supply resources by itself as needed.

호스트 프로세서들에 의한 메모리 기기(202)로의 다음 접근은 링크, 스위치 및 메모리 제어 하드웨어의 구성을 통해 구현되는 정책에 의해 통제될 수 있다. 관리 프로세서(512)는 스스로 공급되는 자원들로 접근하는 것을 제외하고, 이 구성 너머의 데이터 이동에 관여하지 않는다.The next access by the host processors to the memory device 202 may be controlled by a policy implemented through the configuration of the link, switch and memory control hardware. Management processor 512 does not participate in data movement beyond this configuration, except to access resources that are self-provisioning.

관리 프로세서(512)의 이용에 의해 제공되는 이점들은 다음을 포함할 수 있다:Advantages provided by use of the management processor 512 may include:

i) 여러 호스트 프로세서들에 대해 벌크(Bulk) 메모리의 공급 및 구성을 가능하게 함i) Enables the provision and configuration of bulk memory for multiple host processors.

ii) 공급 가능한 메모리가 좌초되는(Stranded) 자원들을 방지하여, 고객들이 최적의 계산, 메모리, 및 퍼시스턴스(Persistence) 조합들을 동적으로 공급할 수 있게 함ii) Allows customers to dynamically provision optimal computation, memory, and persistence combinations by avoiding stranded resources from available memory.

iii) 각각의 개별적인 기술 로드맵(Roadmap)에 대해 타당한 독립적인 CPU, 메모리, 및 퍼시스턴스 교체 주기를 가능하게 함iii) Allows independent independent CPU, memory, and persistence replacement cycles for each individual technology roadmap

iv) 서버/프로세서/코어 당 상당히 큰 메모리 용량을 가능하게 함iv) Allows considerable memory capacity per server / processor / core

v) 많이 확장 가능한(Scalable) 해법 - 더 많은 용량 또는 더 큰 대역폭을 위해 메모리 서브시스템 박스들을 더 추가하는 것을 가능하게 함v) Scalable solution - Enables the addition of more memory subsystem boxes for greater capacity or greater bandwidth

DRAM 기술들이 널리 이용되고 표준화되는 동안, 장치 특성들은 시간 흐름에 따라 발달하였고, 장치 인터페이스들 및 그 인터페이스들을 관리하는 컨트롤러들에 대한 조정을 요구한다. 예로서, DDR과 같은 동기식(Synchronous) 인터페이스는 인터페이스를 통한 더 높은 대역폭을 가능하게 하기 위해, 클록(Clock) 속도를 증가시키도록 수정될 수 있다. 결과적으로, 이는 DRAM이 하나의 상태에서 다음의 상태로 옮겨가는 데에 요구될 수 있는 클록들의 개수의 조정을 요구한다. 나아가, 다른 메모리 기술들은 DRAM을 대체하거나 보충하는 것으로 여겨질 수 있고, DRAM들에 존재하는 것과 동일하거나 유사한 스케일링 한정(Scaling Constraint)들에 의해 구속될 수 있다. 이러한 메모리 기술들은 동기식인 대신 상호작용할(Transactional) 수 있고, 또는 바이트 단위의 어드레스 기반으로 다루어지기(Byte-addressable) 보다는 블록 지향 방식(Block-oriented)일 수 있다. 나아가, 대규모 배치(Large-scale Deployment)들은 이 기술들의 발달에 걸쳐 이어지는 수명을 가질 수 있고, 또는 주어진 배치에서 이 기술들 중 여럿의 사용을 요구할 수 있다. 따라서, 대규모 배치에서 메모리의 주어진 분리(Disaggregation)는 이 기술들 각각 내에서 다양한 기술들 및 다양한 성능을 지원할 가능성이 크다.While DRAM technologies are widely used and standardized, device characteristics have evolved over time and require coordination for device interfaces and controllers that manage those interfaces. As an example, a synchronous interface such as DDR may be modified to increase the clock speed to enable higher bandwidth through the interface. As a result, this requires adjustment of the number of clocks that can be required to move the DRAM from one state to the next. Further, other memory technologies may be regarded as replacing or replenishing the DRAM and may be constrained by the same or similar scaling constraints that exist in the DRAMs. These memory technologies may be transactional instead of synchronous, or they may be block-oriented rather than byte-addressable. Furthermore, large-scale deployments can have a life span that extends over the development of these technologies, or may require multiple uses of these techniques in a given deployment. Thus, a given disaggregation of memory in large scale deployments is likely to support various technologies and diverse capabilities within each of these technologies.

본 발명의 더 나아간 실시 예들은 공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 태그(Tag)들을 이용하여 메모리 기술 특유의 시맨틱을 캡슐화하는 10으로의 저 레이턴시 메모리 스위치 및 리프 메모리 스위치들(220) 모두에 의해 이용되는 낮은 레이턴시의 라우팅 프로토콜을 제공한다. 낮은 레이턴시의 라우팅 프로토콜은 기술 시맨틱의 데이터베이스(514)에서의 본질 및 시맨틱(블록/바이트, 동기식/상호작용 등), 및 장치 파라미터들(CAS 레이턴시, 소거 블록 크기, 페이지 쓰기 레이턴시 등)을 캡슐화함으로써, 넓은 범위의 메모리 기술들을 지원한다. 데이터베이스(514)는 관리 프로세서(512)에 의해 덧붙여지고, 공급 과정 동안 호스트 프로세서들로 전달된다. 주어진 메모리 기기에 의해 지원되는 각 메모리 기술은 메모리 기기 내의 각 기술 설정에 고유한 태그(기기 고유 태그)를 붙인다. 기기 고유 태그는 각 기술의 시맨틱 및 파라미터들을 식별한다.Further embodiments of the present invention include a low latency memory switch 10 and a leaf memory switch 220 that encapsulate the semantic specific to the memory technology using tags that uniquely identify the memory technology during provisioning, Lt; / RTI > routing protocol used by all of them. The low latency routing protocol encapsulates the nature of semantic and semantic (block / byte, synchronous / interaction, etc.) and device parameters (CAS latency, erase block size, page write latency, etc.) , And a wide range of memory technologies. The database 514 is padded by the management processor 512 and delivered to the host processors during the provisioning process. Each memory technology supported by a given memory device attaches a unique tag (device unique tag) to each technology setting in the memory device. The device unique tag identifies the semantics and parameters of each technology.

관리 프로세서(512)는 첨부된 메모리 기술들을 설명하는 데이터에 대하여 단순한 메모리 컨트롤러들(508A, 508B)에게 질의(Query)함으로써 장치 시맨틱 및 파라미터들을 발견할 수 있고, 데이터베이스(514)를 덧붙이기 위해 그러한 데이터를 이용한다.The management processor 512 may discover device semantics and parameters by querying the simple memory controllers 508A and 508B for data describing the attached memory technologies and may use such data to append the database 514 Data is used.

메모리를 요구하는 호스트 프로세서는 메모리로의 고유한 또는 공유되는 접근을 얻기 위해 관리 프로세서(512)와 협의할 수 있고, 요구하는 기술을 명시할 수 있다. 관리 프로세서(512)는 호스트들의 사양(Specification)들에 맞는 메모리 공급을 승인하여 응답할 수 있고, 또는 그 공급은 호스트의 요구들에 대한 최선의 매치(Best-effort Match)로서 식별될 수 있다. 또는, 관리 프로세서(512)는 데이터베이스(514)를 가용 기술들의 목록으로서 호스트에게 노출할 수 있고, 호스트는 요구하는 기술과 관련되는 태그에 의해 기술을 요구할 수 있다. 어떤 경우에는, 위에서 설명된 것과 같이, 호스트로 공급되는 기술을 식별하기 위해 관리 프로세서(512)가 태그를 제공할 것이다.The host processor requesting the memory may consult the management processor 512 to obtain a unique or shared access to the memory and may specify the required technology. The management processor 512 may acknowledge and respond to a memory supply that conforms to the specifications of the hosts, or the supply may be identified as a best-effort match to the host's needs. Alternatively, the management processor 512 may expose the database 514 as a list of available technologies to the host, and the host may request the technology by a tag associated with the required technology. In some cases, as described above, the management processor 512 will provide the tag to identify the technology being delivered to the host.

공급된 메모리로의 호스트의 다음 접근에 따라, 기술 태그는 단순한 메모리 컨트롤러들(508A, 508B)로 보내지는 주어진 패킷의 컨텍스트(Context)를 식별하기 위해 호스트에 의해 이용될 것이다. 예로서, 메모리의 블록을 삭제하기 위한 커맨드(Command)는 호스트에 의해 단순한 메모리 컨트롤러들(508A, 508B) 중 하나로 보내질 수 있다. 이 커맨드는 단순한 메모리 컨트롤러들(508A, 508B)에서 이용 가능한 플래시 기술에 대하여 고유한 것일 수 있으나, 다른 기술에 대한 커맨드와 유사한 형태를 가질 수 있다. 따라서, 호스트는 태그를 어두(Prefix)로서 커맨드에게 보내어, 그것에게 컨텍스트를 부여할 수 있다. 이러한 컨텍스트는 특정한 단순한 메모리 컨트롤러(508A, 508B)로의 접근에 의해 암시될 수 있는 한편, 커맨드 패킷에서 태그를 이용하는 것은 단순한 메모리 컨트롤러들(508A, 508B)에 의해 모니터링, 디버그(Debug) 및 패킷 검증을 위한 요인을 가능하게 한다.Following the host's next access to the supplied memory, the description tag will be used by the host to identify the context of the given packet sent to the simple memory controllers 508A, 508B. As an example, a command for deleting a block of memory may be sent by the host to one of the simple memory controllers 508A, 508B. This command may be unique to the flash technology available in the simple memory controllers 508A, 508B, but may have a similar form to commands for other techniques. Therefore, the host can send the tag as a prefix to the command and give it a context. While this context may be implied by accessing a particular simple memory controller 508A, 508B, using tags in the command packet may be monitored, debugged, and packet verified by simple memory controllers 508A, 508B It enables the factor for.

따라서, 낮은 레이턴시의 라우팅 프로토콜을 이용함에 따라, 메모리 기기(202)는 메모리 아키텍처에 구애받지 않을 수 있다.Thus, by utilizing a low latency routing protocol, the memory device 202 may be independent of the memory architecture.

도 5는 저 레이턴시 메모리 스위치를 더 상세히 보여주는 도면이다. 위에서 설명된 것과 같이, 저 레이턴시 메모리 스위치(210)는 많은 상이한 프로세서들/서버들로부터 유입되는 많은 호스트 링크(208)로부터의 트래픽/요청들을 관리할 수 있다. 메모리 기기로의 호스트 링크들(208)은 다음 방식들에 의해 CPU 프로세서들/서버들로 연결될 수 있다:Figure 5 is a more detailed view of a low latency memory switch. As described above, the low latency memory switch 210 is able to manage traffic / requests from a large number of host links 208 that are coming from many different processors / servers. The host links 208 to the memory device may be connected to CPU processors / servers in the following ways:

a) 기존의 DDR 채널을 통하는 경우a) through an existing DDR channel

i) 버퍼/링크 변환기(Translator) 및 기기로의 케이블을 이용하는 모듈 기반 연장기(Module-based Extender) i) a module-based extender using a buffer / link translator and a cable to the device,

ii) 기기 링크로 변환되는 전용 DDR 채널(또는 여러 채널)을 이용하는 마더보드(Motherboard) 상의 버퍼 ii) a buffer on the motherboard that uses a dedicated DDR channel (or multiple channels) that translates to a device link;

iii) PCIe 카드 또는 버퍼로의 전용 PCIe 포트 iii) Dedicated PCIe port to PCIe card or buffer

iv) 버퍼 전용의 SAS 폿 iv) Buffer-only SAS pots

v) SATA v) SATA

vi) 그 외 vi) Others

b) 링크 신호 처리(Signaling) 해법들은 여러 유형 중 어떠한 것으로도 될 수 있음b) Link signaling solutions can be any of several types

i) 광학적 i) Optical

ii) 전기적 ii) Electrical

iii) 그 외 iii) Others

c) 링크 프로토콜은 다음과 같을 수 있음:c) The link protocol may be as follows:

i) 직렬화된 메모리 프로토콜(예컨대, 직렬화된 DDR4) i) a serialized memory protocol (e.g., serialized DDR4)

ii) 패킷으로 나뉨 ii) Packed

iii) 웜홀 라우팅 프로토콜 iii) Wormhole Routing Protocol

iv) 그 외 iv) Others

메모리 스위치들은 메모리 컨트롤러 기능의 가변하는 수준들(아무것도 하지 않는 것을 포함)을 가질 수 있다.Memory switches may have varying levels of memory controller functionality (including not doing anything).

웜홀 스위칭이 이용되는 실시 예에서, 도 5에 나타낸 제 0 큐(Queue) 내지 제 (M-1) 큐는 제 0 플릿 버퍼 내지 제 (M-1) 플릿 버퍼를 대신할 것이다.In the embodiment in which wormhole switching is used, the 0 < st > Queue to the (M-1) -th queue shown in Fig. 5 will replace the 0th flit buffer to the (M-1) flit buffer.

분리된 메모리 기기가 개시되었다. 본 발명이 도시된 실시 예들에 따라 설명되었고, 실시 예들에 변형이 있을 수 있고, 어떤 변형이든 본 발명의 기술 사상 및 범위 내에 있을 것이다. 예로서, 본 발명의 실시 예는 하드웨어, 소프트웨어, 프로그램 명령어(Program Instruction)들을 포함하는 컴퓨터로 읽을 수 있는 매체, 또는 그것들의 조합을 이용하여 구현될 수 있다. 본 발명에 따라 기록되는 소프트웨어는 메모리, 하드디스크, 또는 CD/DVD-ROM과 같은 컴퓨터로 읽을 수 있는 저장 매체에 몇몇 형태로 저장될 수 있고, 프로세서에 의해 실행될 수 있다. 따라서, 첨부되는 청구항들의 기술 사상 및 범위를 벗어나지 않고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 많은 수정이 이루어질 수 있다.A separate memory device has been initiated. The invention has been described in accordance with the illustrated embodiments, and variations may be made in the embodiments, and any variations will fall within the spirit and scope of the invention. By way of example, embodiments of the invention may be implemented using hardware, software, computer-readable media including program instructions, or a combination thereof. The software recorded in accordance with the present invention may be stored in some form in a computer-readable storage medium such as a memory, a hard disk, or a CD / DVD-ROM, and may be executed by a processor. Accordingly, many modifications may be made by those of ordinary skill in the art without departing from the spirit and scope of the appended claims.

Claims (8)

리프 메모리(Leaf Memory) 모듈들 중 하나 이상의, 하나 이상의 메모리 채널들을 관리하는 복수의 리프 메모리 스위치; 및
호스트 링크(Host Link)를 통해, 하나 이상의 외부 프로세서들을 상기 복수의 리프 메모리 모듈로 임의로 연결하는 저 레이턴시(Low-latency) 메모리 스위치를 포함하는 메모리 기기.
A plurality of leaf memory switches for managing one or more memory channels of one or more of the leaf memory modules; And
And a low-latency memory switch that optionally connects, via a host link, one or more external processors to the plurality of leaf memory modules.
제 1 항에 있어서,
상기 리프 메모리 스위치들의 적어도 일부는: 상기 메모리 기기 내에서의 상기 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급(Provision)을 위해, 상기 외부 프로세서들로부터의 요청들에 응답하는 관리 프로세서를 더 포함하는 메모리 기기.
The method according to claim 1,
At least some of the leaf memory switches further comprise a management processor responsive to requests from the external processors for management, maintenance, configuration, and provisioning of the leaf memory modules within the memory device Lt; / RTI >
제 1 항에 있어서,
공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 태그(Tag)들을 이용하여 상기 메모리 기술의 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 상기 저 레이턴시 메모리 스위치 및 상기 리프 메모리 스위치들 모두에 의해 이용되는 저 레이턴시 라우팅 프로토콜(Routing Protocol)을 더 포함하는 메모리 기기.
The method according to claim 1,
Latency memory switch and all of the leaf memory switches that encapsulate the specific semantics of the memory technology using tags that uniquely identify the memory technology during the supply, And a low latency routing protocol used.
제 1 항에 있어서,
상기 메모리 기기는 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 메모리 기기.
The method according to claim 1,
In order to enable low latency switching of memory data flits and metadata, the memory device may be configured to perform Wormhole Switching (Wormhole Switching) using target routing data provided during the memory supply process, ).
호스트 링크(Host Link)에 연결되는 저 레이턴시(Low-latency) 메모리 스위치; 및
상기 저 레이턴시 메모리 스위치를 복수의 리프 메모리(Leaf Memory) 스위치로 연결하는 복수의 리프 링크(Leaf Link)를 포함하되,
상기 저 레이턴시 메모리 스위치는 상기 호스트 링크를 통해 하나 이상의 외부 프로세서들로부터 트래픽(Traffic)/요청들을 수신하고,
상기 복수의 메모리 스위치는 리프 메모리 모듈들 중 하나 이상의, 하나 이상의 메모리 채널들로 연결되고 상기 하나 이상의 메모리 채널들을 관리하는 메모리 기기.
A low-latency memory switch coupled to a host link; And
And a plurality of leaf links connecting the low latency memory switch to a plurality of leaf memory switches,
The low latency memory switch receives traffic / requests from one or more external processors via the host link,
Wherein the plurality of memory switches are connected to one or more of the leaf memory modules, one or more memory channels, and manage the one or more memory channels.
제 5 항에 있어서,
상기 리프 메모리 스위치들의 적어도 일부는: 상기 메모리 기기 내에서의 상기 리프 메모리 모듈들의 관리, 유지보수, 구성 및 공급(Provision)을 위해, 상기 외부 프로세서들로부터의 요청들에 응답하는 관리 프로세서를 더 포함하는 메모리 기기.
6. The method of claim 5,
At least some of the leaf memory switches further comprise a management processor responsive to requests from the external processors for management, maintenance, configuration, and provisioning of the leaf memory modules within the memory device Lt; / RTI >
제 5 항에 있어서,
공급, 모니터링 및 동작 동안 메모리 기술을 고유하게 식별하는 택스를 이용하여 상기 메모리 기술의 특유의 시맨틱(Semantics)을 캡슐화(Encapsulation)하는 상기 저 레이턴시 메모리 스위치 모두에 의해 이용되는 저 레이턴시 라우팅 프로토콜(Routing Protocol)을 더 포함하는 메모리 기기.
6. The method of claim 5,
A low latency routing protocol used by all of the low latency memory switches that encapsulate the specific semantics of the memory technology using a tax uniquely identifying the memory technology during the supply, ). ≪ / RTI >
제 5 항에 있어서,
상기 메모리 기기는 메모리 데이터 플릿(Flit)들 및 메타데이터의 저 레이턴시 스위칭을 가능하게 하기 위해, 종점(Endpoint)들이 메모리 공급 과정 동안 제공되는 타겟 라우팅 데이터(Target Routing Data)를 이용하는 웜홀 스위칭(Wormhole Switching)을 이용하는 메모리 기기.
6. The method of claim 5,
In order to enable low latency switching of memory data flits and metadata, the memory device may be configured to perform Wormhole Switching (Wormhole Switching) using target routing data provided during the memory supply process, ).
KR1020167010527A 2013-12-12 2014-12-09 Disaggregated memory appliance KR102353930B1 (en)

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 true KR20160119050A (en) 2016-10-12
KR102353930B1 KR102353930B1 (en) 2022-01-20

Family

ID=53371756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167010527A KR102353930B1 (en) 2013-12-12 2014-12-09 Disaggregated memory appliance

Country Status (2)

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

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
KR102353930B1 (en) 2022-01-20
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
US11748278B2 (en) Multi-protocol support for transactions
US11714763B2 (en) Configuration interface to offload capabilities to a network interface
US10567166B2 (en) Technologies for dividing memory across socket partitions
US10091295B1 (en) Converged infrastructure implemented with distributed compute elements
US20160124872A1 (en) Disaggregated memory appliance
US20180150240A1 (en) Technologies for offloading i/o intensive operations to a data storage sled
EP3608792B1 (en) Managed switching between one or more hosts and solid state drives (ssds) based on the nvme protocol to provide host storage services
US10334334B2 (en) Storage sled and techniques for a data center
US9977618B2 (en) Pooling of memory resources across multiple nodes
US10514745B2 (en) Techniques to predict memory bandwidth demand for a memory device
US9330055B2 (en) Modular architecture for extreme-scale distributed processing applications
EP3716085B1 (en) Technologies for flexible i/o endpoint acceleration
US11606429B2 (en) Direct response to IO request in storage system having an intermediary target apparatus
US20110082949A1 (en) Presenting multi-function devices behind a switch hierarchy as a single function device
US20190102107A1 (en) Techniques for batch operations to storage devices
EP3716088B1 (en) Technologies for flexible protocol acceleration
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
US11201788B2 (en) Distributed computing system and resource allocation method
KR102353930B1 (en) Disaggregated memory appliance
US9489136B2 (en) Interrupt driven memory signaling
US20240103898A1 (en) Input-output processing in software-defined storage systems
Fang et al. Future Enterprise Computing

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