KR20230111055A - 분할운용 컴퓨팅 시스템 및 방법 - Google Patents

분할운용 컴퓨팅 시스템 및 방법 Download PDF

Info

Publication number
KR20230111055A
KR20230111055A KR1020220006805A KR20220006805A KR20230111055A KR 20230111055 A KR20230111055 A KR 20230111055A KR 1020220006805 A KR1020220006805 A KR 1020220006805A KR 20220006805 A KR20220006805 A KR 20220006805A KR 20230111055 A KR20230111055 A KR 20230111055A
Authority
KR
South Korea
Prior art keywords
memory
remote
controller
disaggregation
bus
Prior art date
Application number
KR1020220006805A
Other languages
English (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 한국전자통신연구원
Priority to KR1020220006805A priority Critical patent/KR20230111055A/ko
Priority to US17/940,502 priority patent/US20230229360A1/en
Publication of KR20230111055A publication Critical patent/KR20230111055A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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

Abstract

분할운용 컴퓨팅 시스템이 개시된다.
본 개시의 일 실시 예에 따른 분할운용 컴퓨팅 시스템은, 로컬 프로세서, 로컬 메모리 버스, 로컬 메모리, 및 로컬 분할운용 제어기(Disaggregation Controller)를 포함하는 로컬 컴퓨팅 장치와, 원격 프로세서, 원격 메모리 버스, 원격 메모리, 및 원격 분할운용 제어기(Disaggregation Controller)를 포함하는 원격 컴퓨팅 장치와, 상기 로컬 컴퓨팅 장치 및 상기 원격 컴퓨팅 장치를 연결하는 분할운용 네트워크를 포함하고, 상기 로컬 분할운용 제어기 및 원격 분할운용 제어기는, 상기 원격 메모리의 접근에 대한 응답 지연을 확인하고, 상기 응답 지연을 기반으로 상기 원격 메모리의 접근을 제어할 수 있다.

Description

분할운용 컴퓨팅 시스템 및 방법 {DISAGGREGATION COMPUTING SYSTEM AND METHOD}
본 개시는 클라우드 컴퓨팅과 이종(Heterogeneous) 컴퓨팅 기술에 관한 것이며, 보다 구체적으로는 처리 장치(Processing Unit or Processor)가 원격지의 메모리에 접속 및 관리하는 기술에 대한 것이다.
네트워킹 기술의 발전에 따라, 컴퓨팅 자원을 공유하는 클라우드 시스템이 제공되고 있다. 클라우드 시스템은 다양한 물리적인 인프라스트럭처를 다수의 사용자가 공유할 수 있도록 구성될 수 있는데, 물리적인 인프라스트럭처는 다양한 종류의 프로세서, 가속기, 메모리, 스토리지, 네트워킹 등을 구비한 하나 이상의 컴퓨팅 시스템을 포함할 수 있다.
응용 프로그램에서 요구하는 작업 부하를 구현 또는 실행하기 위해서는 물리적인 인프라스트럭처를 사용해야 한다. 그런데, 물리적인 인프라스트럭처는 클라우드 시스템 내에서 공유되어야 하므로, 클라우드 시스템은 논리 서버 또는 가상 머신(virtual machine, VM)을 통해 응용 프로그램에서 요구하는 작업 부하를 구현 또는 실행하기 위한 물리적인 인프라스트럭처를 관리하고 있다.
나아가, 인메모리 데이터베이스(In-memory database), 데이터 캐싱(data caching), 생물 정보학(bioinformatics) 및 그래프 처리(graph processing)와 같은 데이터 집약적(data intensive)인 작업량의 급증으로 인해 클라우드 시스템에서 요구되는 메모리 용량이 증가하고 있고 이종의 프로세서, 가속기가 메모리를 공유하는 작업이 증가하고 있다.
이러한 추세에 맞추어, 단일 가상머신(Virtual Machine, VM)에 1TB 이상의 메모리를 사용할 수 있는 대용량 유형의 클라우드 시스템이 제공되고 있다.
본 개시의 기술적 과제는 네트워크로 연결된 이종의 컴퓨팅 장치에 부착된 각 메모리를 서로 인식하여 데이터를 공유하고 원격 메모리를 분할운용(Memory Disaggregation)할 수 있는 방법 및 장치를 제공하는데 있다.
본 개시의 다른 기술적 과제는 네트워크로 연결된, 특히 광 네트워크로 원거리 연결되어 클러스터링(Clustering)된 다양한 컴퓨팅 장치의 메모리를 분할운용(Memory Disaggregation)할 수 있는 방법 및 장치를 제공하는데 있다.
본 개시의 다른 기술적 과제는 메모리가 분할운용(Memory Disaggregation)되는 컴퓨팅 자원의 응답 지연에 적응적으로 메모리의 접근을 제어할 수 있는 방법 및 장치를 제공하는데 있다.
본 개시의 다른 기술적 과제는 메모리가 분할운용(Memory Disaggregation)되는 컴퓨팅 자원의 지연 관리와 접속 주소를 효율적으로 관리할 수 있는 방법 및 장치를 제공하는 것이다.
본 개시에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 개시의 일 양상에 따르면 분할운용 컴퓨팅 시스템이 제공될 수 있다.
상기 시스템은, 로컬 프로세서, 로컬 메모리 버스, 로컬 메모리, 및 로컬 분할운용 제어기(Disaggregation Controller)를 포함하는 로컬 컴퓨팅 장치와, 원격 프로세서, 원격 메모리 버스, 원격 메모리, 및 원격 분할운용 제어기(Disaggregation Controller)를 포함하는 원격 컴퓨팅 장치와, 상기 로컬 컴퓨팅 장치 및 상기 원격 컴퓨팅 장치를 연결하는 분할운용 네트워크를 포함하고, 상기 로컬 분할운용 제어기 및 원격 분할운용 제어기는, 상기 원격 메모리의 접근에 대한 응답 지연을 확인하고, 상기 응답 지연을 기반으로 상기 원격 메모리의 접근을 제어할 수 있다.
본 개시에 대하여 위에서 간략하게 요약된 특징들은 후술하는 본 개시의 상세한 설명의 예시적인 양상일 뿐이며, 본 개시의 범위를 제한하는 것은 아니다.
본 개시에 따르면, 네트워크로 연결된, 특히 광 네트워크로 원거리 연결되어 클러스터링(Clustering)된 컴퓨팅 장치의 메모리를 분할운용(Memory Disaggregation)할 수 있는 방법 및 장치가 제공될 수 있다.
본 개시에 따르면, 분할운용(Memory Disaggregation)되는 컴퓨팅 자원의 응답 지연에 적응적으로 메모리의 접근을 제어할 수 있는 방법 및 장치가 제공될 수 있다.
본 개시에 따르면, 분할운용(Memory Disaggregation)되는 컴퓨팅 자원의 지연 관리와 접속 주소를 효율적으로 관리할 수 있는 방법 및 장치가 제공될 수 있다.
본 개시에 따르면, 원격 분할 메모리를 사용하기 위한 물리적 위치 한계를 극복하고 메모리에 접근을 제어할 수 있는 방법 및 장치가 제공될 수 있다.
본 개시에 따르면, 처리장치, 가속기와 프로세서의 처리 용량의 확장과 성능 확보 가능한 원격 분할운용(Disaggregation)의 인터페이스를 실현하고, 원격지 분할 메모리를 직접 접근하여 사용되는 프로그램의 분할 메모리의 네트워크 지연을 관리할 수 있는 방법 및 장치가 제공될 수 있다.
본 개시에 따르면, 원격지의 컴퓨팅 자원 규모의 제한 없이 효율적으로 프로그램 작업과 협업 수행이 가능하도록 분할 메모리를 관리할 수 있는 방법 및 장치가 제공될 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 종래의 컴퓨팅 시스템을 도시하는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템의 구성을 예시하는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 가상 메모리 버스의 구성을 예시하는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 컴퓨팅 자원 네트워크 인터페이스(CRNI)의 구성을 예시하는 블록도이다.
도 5는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에서 사용되는 논리적 메모리 접속 구조를 예시하는 도면이다.
도 6은 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 제어기의 관리 동작을 예시하는 도면이다.
도 7a 및 도 7b는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에서 매핑 테이블을 사용한 지연 관리 동작을 예시하는 도면이다.
도 8은 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 제어기의 원격 메모리의 쓰기 지연 정보를 관리하는 동작을 예시하는 흐름도이다.
도 9는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 제어기의 원격 메모리의 읽기 지연 정보를 관리하는 동작을 예시하는 흐름도이다.
이하에서는 첨부한 도면을 참고로 하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 개시의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 개시에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 개시에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 개시에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위한 것일 뿐, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 개시의 범위에 포함된다.
본 개시에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들은 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시 예도 본 개시의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 개시의 범위에 포함된다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예들에 대해서 설명한다.
도 1은 종래의 컴퓨팅 시스템을 도시하는 블록도이다.
도 1을 참조하면, 컴퓨팅 시스템(110)은, 중앙처리장치(CPU)와 같은 메인 프로세서(111)를 포함할 수 있다.
메인 프로세서(111)와 같은 데이터 처리장치(Processing Unit)는 컴퓨팅 시스템의 운영체제(OS)와 응용 소프트웨어가 구동되면 데이터 처리와 계산과정에서 칩 내외부의 메모리(Memory)를 사용한다. DRAM 등과 같은 메모리(116)를 사용하기 위해서, 메인 프로세서(111)는 메인 프로세서(111)에 연결된 버스(113), 메모리 제어기(115), 등을 통해 메모리(116)에 접근할 수 있다.
또한, 주변장치로 분류되는 저장 장치(storage)(118-1), 네트워크 인터페이스 카드(NIC, Network Interface Card)(118-2), 그래픽 카드(GPU)(118-3) 등의 응답속도가 빠르지 않기 때문에, 메인 프로세서(111)가 직접 접근하지 않고, PCIe 기술과 DMA(Direct Memory Access) 제어기(Controller)를 활용하여 캐시나 메모리의 데이터를 주변장치(118-1, 118-2, 118-3)와 송수신하며, 이는 메인 프로세서(111)의 데이터 읽고 쓰기 응답 대기상태 발생을 줄여 성능이 저하되지 않도록 하고 있다.
기본 컴퓨팅 시스템에서 인공지능(AI)과 기계학습(ML)과 같은 서비스를 위한 데이터 처리와 계산은 그래픽 카드인 GPU(118-3)가 메인 프로세서(111)와 함께 활용되어 컴퓨팅에 참여하고 있다. 하지만, 메인 프로세서(111)와 GPU(118-3) 사이의 데이터 공유는 주변장치(118-1, 118-2, 118-3) 연결에 적용된 주변장치 입출력(Peripheral IO) 인터페이스와 프로토콜이 사용되는데, 대표적인 것이 PCIe를 통해 각 주변 장치에 접근하고 다시 특정 주변장치(118-1, 118-2, 118-3)의 데이터 처리에 적합한 인터페이스로 변환한다. 메인 프로세서(111)와 메모리(116)의 데이터 읽고 쓰기에 사용되는 광대역 버스(Byte Address Bus)(113)의 성능과 비교하여 PCIe는 낮은 대역폭과 응답속도를 가지고 있고, DMA 제어기(112)를 통해 주변장치와 메모리가 연결되는 추가적 시간, 주변장치(118-1, 118-2, 118-3)의 데이터 처리 시간이 추가되면서 PCIe를 통한 연결은 데이터 병목과 응답 지연을 야기한다. 그래서 전체적인 데이터 처리와 계산 성능을 저하시킨다.
나아가, 빅데이터 처리, 인공지능(AI)과 기계학습(ML)과 관련된 GPU의 활용과 컴퓨팅 데이터 처리와 계산의 규모는 점점 커지고, 이종의 많은 컴퓨팅 자원을 함께 연결하여 활용하기 위한 요구가 시도되고 있다.
도 2는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템의 구성을 예시하는 블록도이고, 도 3은 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 가상 메모리 버스의 구성을 예시하는 블록도이다.
우선, 도 2를 참조하면, 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템은, 로컬 컴퓨팅 장치(210)와, 원격 컴퓨팅 장치(220, 230, 240)를 포함할 수 있다.
로컬 컴퓨팅 장치(210)는, 로컬 프로세서(211), DMA(212), 로컬 메모리 버스(213), 메모리 제어기(215), 메모리(216), 로컬 분할운용 제어기(Disaggregation Controller, 이하 'DC'라 함)(217), 및 분할 네트워크 인터페이스(218-1, 218-2, 218-n)를 포함할 수 있다.
로컬 컴퓨팅 장치(210)에는 적어도 하나의 원격 컴퓨팅 장치(220, 230, 240)가 연결될 수 있다. 적어도 하나의 원격 컴퓨팅 장치(220, 230, 240)는 GPU, Accelerator, 또는 적어도 하나의 프로세서를 포함하는 단말 장치, 복수의 메모리를 포함하는 저장매체 중, 적어도 하나를 포함할 수 있다. 본 개시의 일 실시예에 따른 적어도 하나의 원격 컴퓨팅 장치(220, 230, 240)는 다양한 종류로 이루어질 수 있지만, 공통적으로, 분할 네트워크 인터페이스(221, 231, 241), 원격 분할운용 제어기(Disaggregation Controller, 이하 'DC'라 함)(222, 232, 242), 원격 버스(223, 233, 243)를 포함할 수 있다. 그리고, 적어도 하나의 원격 컴퓨팅 장치(220, 230, 240)는 각각의 종류에 맞는 원격 메모리(224, 234, 244)를 포함할 수 있다.
로컬 컴퓨팅 장치(210)와, 원격지에 존재하는 적어도 하나의 원격 컴퓨팅 장치(220, 230, 240) 또는 장치에 구비된 프로세서들이 하나의 칩에 구성된 것처럼 협력 계산을 수행하기 위해서는 메모리 분할운용(Disaggregation)기술이 필요하다. 이를 위해, 로컬 컴퓨팅 장치(210)의 로컬 DC(217)와, 원격 컴퓨팅 장치(220, 230, 240)의 원격 DC(222, 232, 242)는 동일한 종류의 처리장치, 서로 다른 종류의 처리장치, 또는 프로세서와 분산된 캐시, 메모리가 하나의 메모리 버스에 연결되어 있는 것처럼 운영될 수 있는 기능을 제공한다. 이를 위해, 로컬 컴퓨팅 장치(210)의 로컬 DC(217)와, 원격 컴퓨팅 장치(220, 230, 240)의 원격 DC(222, 232, 242) 사이의 구성부(270)는, 분할운용 가상 버스(Disaggregation Virtual Bus) 또는 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)로서 구비될 수 있다. 분할운용 가상 메모리 버스(270)는, 로컬 DC(217)와, 원격 DC(222, 232, 242) 사이의 분할운용을 위한 네트워크를 경유하고, 바이트(Byte) 주소(Address) 기반으로 프로토콜이나 프레임을 운영하여 투명하게 접근이 가능하고, 각각의 처리장치와 각각의 메모리 또는 메모리 제어기와 직접 연결할 수 버스 인터페이스를 구비할 수 있다.
본 개시의 일 실시예에서는 버스 인터페이스(213, 223, 233, 243)는 분할운용 네트워크의 요청, 응답 신호의 생성과 종단의 기준이 되는 버스 인터페이스이고, 이는 컴퓨팅 자원 네트워크 인터페이스(CRNI, Computing Resource Network Interface)로 지칭할 수 있다. CRNI는 버스의 읽고 쓰기 요청과 응답이 생성 종단되는 버스 마스터, 버스 슬레이브의 프로토콜 신호들이 연결되는 개념적 확장가능 버스(Scalable Bus)의 양 끝 관리 지점이 CRNI일 수 있다.
CRNI 구간 내에 존재하는 분할운용 가상 버스(Disaggregation Virtual Bus) 또는 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)는 분할운용 제어기에 의해 실현되고, 기본적으로 메모리 버스의 주소 기반 데이터 읽고 쓰기에 대한 요청(Request)와 응답(Response) 동작과 연계되어 동작하여야 하며, 이 기능을 담당하는 요청기(Requester)와 응답기(Responder)가 로컬 DC(217)와, 원격 DC(222, 232, 242)에 각각 구비될 수 있다.
요청기(Requester)는 주소기반(Byte-addressable) 메모리 버스(Bus)(213)의 주소와 데이터, 읽기와 쓰기와 관련된 제어 신호를 기반으로 하여, 주소, 데이터와 읽기, 쓰기, 요청과 관련된 제어 정보를 분할운용 네트워크(Disaggregation Network)에 적합한 요청 프로토콜 신호 또는 프레임으로 변환하여 원격 컴퓨팅 장치의 응답기에 전달할 수 있다.
각각의 요청기와 응답기는 네트워크 인터페이스 관리지점 측면에서 버스 프로토콜이 적합한 요청 응답 프로토콜 신호 또는 프레임으로 변환되어서 송수신 동작을 수행하는 분할운용 가상 버스(Disaggregation Virtual Bus) 또는 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)(400) 구간의 관리지점이 존재하고, 본 개시의 일 실시예에서는 MDNI(Memory Disaggregation Network Interface)로 분할운용 네트워크 상에서 지정하여 관리할 수 있다.
원격 컴퓨팅 장치의 응답기(Responder)는 로컬 컴퓨팅 장치의 요청기로부터 전달받은 분할운용 네트워크(Disaggregation Network)의 요청 프로토콜 신호 또는 프레임을 기반으로 주소기반(Byte-addressable) 메모리 버스의 주소, 데이터, 제어신호로 변환하여 메모리 버스를 통해 응답기가 있는 원격 컴퓨팅 장치의 메모리 제어기(Memory Controller)를 경유하여 메모리에 데이터 읽기, 쓰기를 수행하여 그 결과 데이터와 제어 정보를 분할운용 네트워크(Disaggregation Network)의 응답 프로토콜 신호 또는 프레임으로 변환하여 요청기에 응답한다.
도 4는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 컴퓨팅 자원 네트워크 인터페이스(CRNI)의 구성을 예시하는 블록도이다.
여러 개의 이종의 칩(Chip)으로 구성될 수 있는 컴퓨팅 시스템에서 CPU, GPU, Memory등의 각 컴퓨팅 자원 칩들이 물리적으로는 분리되거나, 원격지에 존재할 수 있으나, 컴퓨팅 장치 입장에서는 물리적으로는 분리되거나, 원격지에 분산된 컴퓨팅 자원의 캐시와 메모리가 직접 버스로 연결된 것처럼 운용하여야 한다. 따라서, 개념적으로는 하나의 칩에 부착되어 구성된 것처럼 제어 및 관리할 필요가 있다. 전술한 바를 고려하여, 도 4에서는, 컴퓨팅 자원 네트워크 인터페이스(CRNI)에서, 기본적인 버스 프로토콜의 기능적인 개념도를 예시하고 있다.
도 4의 컴퓨팅 자원 네트워크 인터페이스(CRNI)에서, 로컬 메모리 버스(420)는, 전술한 도 2의 로컬 메모리 버스(213)에 대응되고, 원격 메모리 버스(440)는, 전술한 도 2의 원격 메모리 버스(223, 233, 243)에 대응된다.
일 예로, 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)(430)의 구조를 구비하지 않고, 종래의 네트워크 연결에 사용되는 구조를 구비하는 경우, 로컬 메모리 버스(420)와 원격 메모리 버스(223, 233, 243)는 서로 독립적으로 운영되어 버스가 아닌 기존 네트워크 프로토콜을 사용하고 OS에서도 메모리 접근이 아닌 DMA 제어기를 활용하는 또 다른 관리 프로그램이 요구된다. 이에 반하여, 본 개시의 일 실시예와 같이, 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)(430)와 연결된 버스 마스터(Bus Master)(410)는 CPU와 GPU와 같은 처리장치(Processing Unit) 또는 프로세서와 제어기(Controller)의 버스 인터페이스에 존재하는 기능으로서 요청을 수행하고 버스 슬레이브(Bus Slave)(450)가 연결된 레지스터, 캐시, 메모리의 읽기와 쓰기 요청, 명령을 버스 프로토콜에 적합하게 주소, 데이터, 제어신호 버스에 전달하고 응답을 기다린다.
버스 슬레이브(Bus Slave)(450)는 주로 레지스터, 캐시, 메모리와 연결 기능을 제공하는 메모리 제어기와 연결되거나 레지스터, 캐시, 메모리와 직접 연결될 수 있다. 따라서, 버스 슬레이브(Bus Slave)(450)는 버스 마스터(Bus Master)(410)의 요청에 대한 응답을 제공할 수 있다. 일 예로, 버스 슬레이브(Bus Slave)(450)는 버스에 전달된 주소, 데이터, 제어신호와 관련해서 데이터 쓰기 요청인 경우, 메모리, 레지스터, 캐시의 해당 주소에 데이터를 쓰고, 쓰기 완료 상태를 버스 마스터(Bus Master)(410)에 제공할 수 있다. 다른 예로서, 버스 슬레이브(Bus Slave)(450)는 읽기 요청에 대해, 메모리, 레지스터, 캐시의 해당 주소에 존재하는 데이터를 읽어 버스를 통해 읽기 상태와 함께 버스 마스터(Bus Master)(410)에 데이터를 응답 신호와 함께 전할 수 있다.
이하, 본 개시의 일 실시예에서 CPU와 GPU와 같은 처리장치(Processing Unit), 프로세서(Processor), 제어기(Controller)등 일반적으로 데이터의 처리와 계산 등 컴퓨팅 처리를 수행하는 것을 주 기능으로 하고, 데이터 계산 과정 중에 메모리의 데이터를 읽고 쓰기 위한 요청과 그에 대한 응답을 수신하는 행위를 수행하는 하나의 칩으로 구성된 장치를 처리장치(Processing Unit)로 지칭할 수 있다. 또한, 레지스터, 캐시, 메모리와 같이 임의의 데이터가 바이트(Byte) 단위로 읽고 쓰기가 가능한 기억 및 저장 장치를 메모리로 지칭할 수 있다.
버스 슬레이브(Bus Slave)(450)는 처리장치 내에 메모리 또는 메모리 제어기가 존재하고 내부 메모리 또는 부착된 메모리와 연결되어 또 다른 처리장치와 메모리 내의 데이터를 공유하는 경우, 버스 슬레이브(450)는 처리장치 내에도 존재하여 다른 처리장치가 자신과 연결된 메모리에 접근을 허용하고 응답할 수 있다.
버스 마스터(410)와 버스 슬레이브(450) 사이의 통신은 처리장치와 메모리 사이의 통신으로 신뢰도가 높아야 한다. 로컬 CRNI와, 원격 CRNI 사이에는 투명하게 요청 주소, 데이터, 제어정보가 전달 교환되어야 한다. 그리고, 각 버스 프로토콜 채널뿐만 아니라 읽고 쓰기 채널을 독립적으로 운용하여 충분한 대역폭을 제공하고, 지연과 응답 시간의 변화를 최소화하는 것이 좋다.
이를 고려하여, 버스에서 통신에 사용되는 버스 프로토콜은 크게 읽기(Read)와 쓰기(Write) 채널로 구분되고 클럭(CLK)과 연동되어 동작된다. 각 읽기(Read)와 쓰기(Write) 채널은 각각 주소 채널과 데이터 채널로 구분될 수 있다. 각 주소 채널은 Offset 주소를 단계로 구분할 수 있는 주소 신호와 관련 정보 및 제어 정보 (IDs, 길이, 사이즈, 타입, 캐시, 보호, 서비스등급(QoS), VALID 등) 신호로 구성되고, 각 데이터 채널은 데이터 신호, 데이터 정보 및 제어 (IDs, each byte valid, last data, VALID 등) 신호로 구성될 수 있다.
처리장치와 연결된 모든 바이트 주소 기반 버스(Byte-Addressable Bus)(420, 440), 확장가능 버스(400), 분할운용 가상 버스(430))는 통신의 신뢰도가 중요하고, 요청된 주소에 데이터 읽기와 쓰기가 정상적으로 수행되었는 지는 확인할 수 있도록 신뢰도 높은 응답 정보 또는 응답 신호가 중요하다.
읽기에 대한 응답 신호는 슬레이브에서 마스터로 전달되는 읽기 데이터 신호와 함께 읽기 데이터 채널에 포함될 수 있다. 쓰기 응답 신호는 쓰기 데이터 신호가 마스터에서 슬레이브로 전달되기 때문에 메모리에 쓰기 동작을 수행하는 슬레이브가 마스터에게 전달하는 응답신호로 구성된 별도의 쓰기 응답 채널로 구성될 수 있고, 또는 데이터 채널에서 슬레이브가 마스터에게 전달하는 별도의 응답 신호(429, 449)로 구성될 수도 있다.
각 채널에는 버스 준비(READY)신호(421, 423, 425, 427, 441, 443, 445, 447)가 존재하여 마스터 수신부 또는 슬레이브 수신부는 도 4와 같이 수신할 준비가 되어 있음을 알리는 각 버스 준비(READY) 신호를 채널의 송신부로 전달하여 송신부가 읽기 쓰기를 수행할 수 있도록 한다.
버스 마스터(410)와 연결된 버스(420)와 버스 슬레이브(450)에 연결된 버스(440)는 각각 내부 클럭에 의존하는 버스 속도와 버스 규모, 대역폭은 서로 다를 수 있고, 이 다른 속도와 구조는 확장형 메모리 버스(400)에서 분할운용 가상 버스(430)의 입구와 출구 쪽에서 각각에 대한 버스 슬레이브(431)와 버스 마스터(432)의 속도와 구조에 적응적으로 설정될 수 있다.
분할운용 가상 버스는 원격에 존재하는 모든 형태의 처리장치와 연결된 모든 형태의 메모리의 읽기와 쓰기 요청을 분할운용 프로토콜과 프레임에 적합하게 구성하여 처리할 수 있다. 일 예로, 분할운용 가상 버스는 주소, 데이터, 제어신호로 전달하고 이에 대응하는 읽기와 쓰기 응답을 처리할 수 있다.
본 개시의 일 실시예에서, 분할운용 가상 버스(430)와 MDNI 관리지점을 적용함으로써 적용된 확장 가능한 메모리 버스(400) 구조는 OS가 구동되는 모든 처리장치의 관점에서 원격지 접근을 위해 항상 DMA(Direct Memory Access) 제어기에 의존하지 않고, 확장 가능한 버스(400)를 통해 메모리에 직접 접근하는 방식으로 운영할 수 있다.
일 예로, 원격 컴퓨팅 장치에 구비된 컴퓨팅 자원은 메모리 접근과 관련하여, 제1원격 컴퓨팅 장치의 CPU가 원격지에 배치된 각 컴퓨팅 자원의 모든 메모리에 접근 가능한 경우, 제1원격 컴퓨팅 장치에 구비된 운영체계(OS)의 메모리 관리 유닛(Memory Management Unit)과 처리장치는 도 5와 같이 논리적 메모리 접속 구조로 관리될 수 있다. 그리고, 로컬 메모리 제어기(501)을 경유하여 로컬 메모리(502)에 접근하는 것처럼, 분할운용되는 메모리 제어기(511, 521, 531)을 경유하여 각 원격지 메모리인 분할 메모리(Disaggregated Memory, 512, 522, 532)에 접근할 수 있다.
본 개시의 일 실시예에서, 분할운용으로 인하여 온-칩(on-chip), 온-보드(on-board)에 메모리가 배치된 것이 아닌 메모리의 경우와 관련해서 전기신호 또는 광신호를 전달하는 케이블로 연결된 원격지에서 접속 가능한 모든 종류의 메모리를 분할 메모리(Disaggregated Memory)로 통칭한다.
도 5에서는, 원격 컴퓨팅 장치가 개념적으로는 하나의 칩으로 구성된 것처럼 제어, 관리되기 위해서 필요한 기본적인 버스 프로토콜의 기능적인 관점의 개념을 예시하고 있다.
도 4의 확장 가능 버스(400)를 하나의 논리적 버스로서 나타낼 수 있는데. 이를 도 5의 확장 가능 버스(500)와 같이 예시할 수 있다. 도 5에서, 처리장치는 버스 프로토콜(540)을 기반으로 로컬 메모리와 분할 메모리의 접속을 위한 주소(예, 바이트 주소)를 할당할 수 있다. 일 예로, 처리장치는 서로 다른 오프셋(OFFSET)을 통해 제1원격 컴퓨팅 장치에 구비된 주변의 메모리가 개념적으로는 하나의 칩에 연결되어 구성된 것처럼 로컬 메모리와 분할 메모리의 접속을 위한 주소(예, 바이트 주소)를 할당할 수 있다. 이를 기반으로, 분할 메모리를 사용하는 처리장치는 모든 분할 메모리에 읽고 쓰기를 직접 접근하여 수행할 수 있다. 처리장치가 모든 메모리들을 제어, 관리할 수 있지만, 응답 속도를 고려할 필요가 있다.
캐시, 메모리 등의 다양한 메모리에서의 읽기 쓰기 응답 속도는 처리장치 또는 프로세서의 운용 성능을 결정하는 매우 중요한 요소이다.
제1원격 컴퓨팅 장치의 CPU와 연결된 메모리를 운영하는 운영체제(OS: operating system)와 메모리 관리 유닛은 기존에 실제 가지고 있던 물리적 로컬 메모리(502)만을 사용하는 경우, 처리장치에서 실행되는 프로세스가 많고 각 프로세스가 필요로 하는 메모리 용량이 물리적 메모리 용량보다 더 많은 메모리를 요구할 수 있다. 이 경우, 가상 메모리(virtual memory) 기술을 사용하고 가상 메모리와 실제 물리 메모리 주소를 매핑하는 매핑 테이블을 운용하더라도 프로세스 사이의 경쟁이 불가피하고 메모리를 공정하게 분배하기 위해 추가적인 매핑 테이블 처리를 수행하면서 또 다른 부하를 발생시키는 문제가 발생될 수 있다.
본 개시의 일 실시예에서, 확장 가능한 메모리 버스에 연결된 분할 메모리를 사용하게 되면 실제 CPU, GPU와 같은 처리장치 내의 프로세스가 사용할 수 있는 물리적 메모리의 용량 자체를 늘일 수 있다. 따라서, 가상 메모리와 실제 물리적 메모리의 매핑 테이블에서 중복되거나 경쟁하는 물리 메모리 량을 현저하게 줄일 수 있다. 결국, 이와 같은 구성 및 동작을 통해, 공정 분배 부하를 줄일 수 있고 컴퓨팅 자원들을 함께 활용하는 전체 계산 능력을 향상시킬 수 있다.
나아가, 처리장치는 기존의 고정 응답 속도를 가지는 로컬 메모리의 메모리 관리 유닛과 다른 분할 메모리 관리 유닛(Disaggregated Memory Management Unit) (660)을 통해서 성능을 유지할 필요가 있다. 따라서, 분할운용 제어기(511, 521, 531)로 인가된 버스 프로토콜 신호에서 분할 메모리의 읽고 쓰기가 완료되는 응답속도가 매우 중요한 요인이며, 각각의 분할 메모리에 대한 응답 지연의 관리가 필요하다.
또한 도2와 도5에 도시된 분할 메모리는 처리장치와 OS가 구동되는 시점에 로컬 메모리처럼 초기에 분할 메모리로 지정되어 메모리 자원으로 인식될 수도 있고, 처리장치와 OS가 동작 중일 때에도 OS 또는 분할된 컴퓨팅 자원의 할당과 사용을 주관하는 관리 평면에서, 추가적인 메모리 자원이 필요하다고 판단되어 분할 네트워크에 연결된 분할 메모리를 해당 처리장치의 메모리 자원으로 추가할 수도 있다. 하지만 지정 또는 추가된 분할 메모리가 충분히 빠른 시간안에 요청에 대한 응답이 가능한 지를 판단하고 직접 접근이 가능한 지를 결정하기 위해서, 해당 분할 메모리에 대한 응답 지연 관리가 필요하다.
응답 지연 정보는 주소를 기준으로 구분되는 가상 메모리와 물리적 메모리의 매핑 테이블에 로컬 메모리와는 별도로 각 분할 메모리 별로 주소 기반으로 관리되고 기록하고 메모리 접근을 제어하는 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)(660)이 요구된다. 분할 메모리 관리 유닛은, 각 분할 메모리에 대한 응답 지연 상태를 관리할 수 있으며, 응답 지연 상태를 기준으로 각 처리장치의 여러 프로세스들이 직접 분할 메모리에 접근하는 방식으로 할 것인지 또는 DMA 제어기를 활용하여 로컬 메모리와 분할 메모리 사이에 데이터 교환을 수행하는 방식으로 할 것인지를 결정할 수 있다.
도 6은 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 제어기의 관리 동작을 예시하는 도면이다.
도 6을 참조하면, 분할운용 제어기(600)는 원격 컴퓨터 장치의 자원(CR-2~CR-N)에 대한 컴퓨팅 자원 ID, 주소 ID, 주소의 Offset value, 주소 Mask 또는 지연 관리 기준과 같은 사용자 정보 전달 신호 등을 설정할 수 있다. 사용자 정보 전달 신호 등은 사용자 정보 전달 인터페이스(650)를 통해 설정할 수 있다.
버스 마스터에서 입력되는 버스 신호에서 분할 메모리 ID를 관리하고, 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)(660)의 관련 테이블(700, 도 7a 참조)을 운용할 수 있도록 분할운용 지연 제어기의 지연 정보(662)를 제공할 수 있다. 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)(660)은 기존의 가상 메모리(virtual memory) 기술을 기반으로, 매핑 테이블에 분할 메모리 관리 정보를 추가하고, 분할 메모리 ID를 적용한 물리적 메모리 주소와 매핑하여 운용 및 관리할 수 있다.
전술한 바에 기초하여, 버스 마스터 A를 구비하는 처리장치 또는 프로세서에 대응하는 분할운용 제어기(600)는 요청기(Requester)를 포함할 수 있는데. 이 요청기는, 특정 원격지 분할 메모리 접근을 위해 물리적 메모리 주소의 일부를 버스 신호에 적용하여 분할 메모리 ID와 주소를 구분할 수 있다.
버스 슬레이브 B의 버스 신호는 분할운용 제어기(600)의 응답기(Responder)와 연결되어 각 원격지에서 MDNI를 통해 전달받거나, 설정된 분할 메모리 ID와 주소를 활용하여, 원격지 버스에서 사용되는 물리적 메모리 주소를 확인(구분 또는 도출)할 수 있다. 따라서, 분할운용 제어기(600)는, 자신의 버스 메모리 주소를 확인할 수 있고, 읽고 쓰기 프로토콜을 적용하여, 해당 물리적 메모리 주소에 데이터를 처리할 수 있다.
도 6에 예시되는 타이밍 다이아그램은 본 개시의일 실시예에 따른 분할운용 지연 제어기(610)가 지연 관리 기능을 수행하기 위해서, 버스 신호를 모니터링하고 타임 스템프를 기록하여 지연을 관리하는 동작을 예시한다.
각 종단의 처리장치에 버스 마스터와 버스 슬레이브 함께 존재하여 서로의 메모리에 접근이 가능한 형상으로 도시한 것이고, 추가로 분할운용 가상 메모리 버스(430) 내에서 도 2의 분할운용 제어기(217, 222, 232, 242)의 상세 기능 블록인 응답 지연 제어기를 도시한 것이다.
즉, 응답 지연 제어기(610)는 원격지에 존재하는 원격 컴퓨팅 장치의 자원에서 확장 가능 버스(500) 또는 분할운용 가상 버스(Disaggregation Virtual Bus)(300)에 인가되는 버스 신호들(540, 620)중에서 필요한 쓰기 또는 읽기 신호들을 분기하여 감시하는 분할운용 지연 제어기(610)이며, 분할운용 지연 제어기(610)는 해당 감시 대상 버스 신호들을 버스 프로토콜에 따라 처리하는 분할운용 요청기와 분할운용 응답기를 포함하는 각 분할운용 제어기 (Disaggregation Controller)(217, 222, 232, 242)에 존재한다.
분할운용 제어기는 버스 신호와 버스 프로토콜에 따라 버스 마스터의 요청 신호를 분할운용 네트워크(Disaggregation Network)에 적합한 요청으로 변환하여 송신하고, 수신된 응답 프로토콜 신호 또는 프레임을 수신하여 적합한 응답을 버스 응답(620) 신호로 변환하여 버스 마스터에 전달할 수 있다. 이때, 분할운용 제어기는 지연을 측정하여 응답 지연 제어기(610)를 통해 기록 및 관리할 수 있다.
도 6에서 버스 마스터(A)가 쓰기 또는 읽기 요청을 수행하면 분할운용 제어기(600)의 요청기(Requester)(621)내의 버스 슬레이브(bus slave)로 쓰기 또는 읽기 신호가 전달된다. 동시에 분할운용 지연 제어기(610)는 필요한 쓰기 또는 읽기 신호들을 분기하여 감시할 수 있다.
도 7a 및 도 7b는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에서 매핑 테이블을 사용한 지연 관리 동작을 예시하는 도면이다.
본 개시의 일 실시예에 따른 분할 메모리의 적용은 처리장치의 각 프로세스가 사용할 수 있는 물리적 메모리 용량을 추가로 늘리고 각 처리 장치에 부착된 메모리 사이에 데이터를 공유할 수 있는 기술이다. 본 개시의 일 실시예에 따르면, 물리적으로 원격지에 존재하는 분할 메모리를 처리장치 또는 프로세서가 활용하는 경우, 도 7a 및 도 7b에서와 같이 처리장치의 각 프로세스(Process)에 대한 가상 메모리 주소 테이블(710, 711)을 기반으로 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)(660)은 물리적 분할 메모리 주소(740)를 각각 매핑 테이블(720, 730)에 매핑할 수 있다. 그리고, 각 처리장치의 프로세스는 매핑 테이블(720, 730)을 기반으로, 분할 메모리를 사용할 수 있다. 하지만 분할 메모리는 도 2에서 예시되는 바와 같이, 기본적으로 분할운용 네트워크를 통해 연결되므로 응답 지연이 발생될 수 있으며 이에 대한 관리가 요구된다.
따라서, 본 개시의 일 실시예에서는, 지연의 측정 관리에서 분할운용 쓰기 지연(Disaggregation Write Delay)값 또는 분할운용 읽기 지연(Disaggregation Read Delay)값과 같은 측정 지연 값을, 읽기 또는 쓰기 지연 관리 기준(Delay Management Criteria)(650)값과 비교할 수 있으며, 분할운용 지연 제어기는 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)에 지연 비교 정보를 공유(662)하여 특정 분할 메모리 ID로 구분되고 관리되는 각각의 분할 메모리 주소 테이블에 지연 플래그(Delay Flag)(745)를 기록하여 관리할 수 있다.
분할운용 지연 제어기는 측정 지연 값이 관리 기준 값과 비교할 수 있으며, 측정 지연 값이 관리 기준 값에 비하여 상대적으로 작을 경우, 분할운용 지연 제어기는 프로세스의 직접 접속(DAP, Direct Access of Process)이 가능한 경우에 DAP 지연 플래그를 기록할 수 있다. 한편, 측정 지연 값이 관리 기준 값과 비교하여 작지 않을 경우, 분할운용 지연 제어기는 각 프로세스가 DMA 제어기를 활용하여 메모리 데이터를 분할운용 메모리에 쓰기 읽기를 수행하는 경우 DMA 지연 플래그를 기록할 수 있다.
각 처리장치의 프로세스는 분할 메모리를 사용할 때, 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)이 관리하는 분할 메모리 매핑 테이블을 통해 물리적 분할 메모리 주소를 알 수 있다.
본 개시의 일 실시예 따른 분할 메모리 매핑 테이블(720, 730)에는 동일 보드 내의 메모리와 같은 형태로 직접 접근이 가능한 지 알리는 접근 플래그(Access Flags)(721, 731)가 구비될 수 있다. 여기서, 접근 플래그는 지연 플래그(745)에 종속적으로 갱신될 수 있다. 접근 플래그의 상태는 처리장치(또는 버스 마스터)와 공유(661)되어 직접 접근(DA)(722, 732) 플래그를 통해 처리장치의 프로세스는 DMA 제어기를 사용하지 않고, 도 6과 같이 동일 보드 내의 버스를 통해 직접 분할 메모리에 읽기 또는 쓰기를 수행할 수 있다.
DA 플래그가 활성화되지 않는 경우, 처리장치(또는 버스 마스터)는, DMA 제어기를 활용하여 접근하여야 하고 일반적인 주변장치 또는 블록 디바이스처럼 인식하여 운용되거나, 별도의 운용 소프트웨어를 통해 지연을 고려해서 사용될 수도 있다.
한편, 도 7a에서 분할 메모리의 물리 메모리 A와 B의 지연 값이 가변적으로 증가하여 읽기 쓰기 지연 관리 기준(Delay Management Criteria)(650)값의 경계 값을 이상 또는 초과하는 경우, 지연 플래그(742, 743)가 더 이상 DAP 플래그를 유지하지 못할 수 있다. 이 경우, 도 7b와 같이 지연 플래그(742, 743)가 DMA 플래그로 변할 수 있으며, 매핑 테이블이 해당 접근 플래그(722, 732)에도 변화가 생길 수 있다.
도 7b에서 물리적 분할 메모리 A(Physical Mem A)와 B(Physical Mem B)에 대한 지연 플래그(742, 743)가 모두 DMA 플래그로 바뀔 때, 처리장치의 프로세스 B의 매핑 테이블의 접근 플래그(732)처럼 물리적 분할 메모리 A의 DA 플래그가 비활성화되어 사라질 수 있다. 이 경우, 가상 메모리 주소 BC를 사용하는 프로세스는 매핑 테이블을 통해 더 이상 분할 메모리(Physical Mem A)를 직접 접근하여 사용되지 않음을 확인할 수 있다. 이에 따라, 분할 메모리(Physical Mem A)를 접근하기 위해서는 DMA 제어기를 사용하게 된다.
한편, 필요에 따라서 처리장치의 프로세스 A의 매핑 테이블의 접근 플래그(722)처럼 직접 접근이 가능한 물리적 분할 메모리가 여전히 필요한 경우에는 매칭 테이블에서 기존의 응답 지연이 증가된 분할운용 메모리 B(Physical Mem B)를 대신할 분할 메모리가 존재하거나 대체가 가능한 경우, 직접 접근 가능 플래그(741)가 유지될 수 있다. 이때, 매핑 안된 분할운용 메모리 C(Physical Mem C)로 매핑 테이블을 갱신 또는 교체할 수 있으며, 처리장치의 프로세스 A의 성능을 유지할 수 있다.
도 8은 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 제어기의 원격 메모리의 쓰기 지연 정보를 관리하는 동작을 예시하는 흐름도이다.
도 8에서는, 본 발명의 일 실시 예에 따른 분할운용 지연 제어기(610)가 특정 원격지 분할 메모리 ID(740)에 해당하는 주소의 메모리 데이터 쓰기 과정에서의 지연 시간을 기록하는 동작을 예시한다.
본 발명의 일 실시 예에 따른 처리 장치의 버스 마스터(A)가 특정 원격지 분할 메모리 ID(740)에 해당하는 주소의 메모리 데이터 쓰기 과정에서, 처리 장치의 버스 마스터(A)의 쓰기 동작이 개시되면, 버스 마스터(A)는 요청기의 버스 슬레이브에 연결된 버스를 통해서 버스 프로토콜에 적합한 주소, 데이터, 제어 정보에 대한 송수신이 시작되며, 제어 정보 신호를 감시하는 분할 운용 지연 제어기(610)는 쓰기 주소의 유효함(Write Address Valid) 알리는 Addr_W_VALID 신호가 켜짐(ON or Enable) 신호로 바뀌면 원격지 분할 운용 메모리 ID에 대한 쓰기 시작 타임(Start Time of Write, STW)(631)의 스탬프를 기록하거나 카운터를 동작시켜 지연 측정을 시작한다(S801, S802, S803).
이후, 주소, 데이터, 정보 신호가 버스를 거쳐 요청기(621)내의 슬레이브에 전달되고, 요청기는 분할 운용 네트워크(Disaggregation Network)에 쓰기 동작과 관련된 주소, 데이터, 제어 정보 신호를 포함한 요청 프레임 또는 프로토콜을 사용하여 원격 응답기에 전송한다(S804).
원격 응답기의 버스 마스터는 적절한 버스 프로토콜을 통해 원격 메모리 슬레이브(B)에 전달되어 쓰기 데이터가 원격지의 메모리에 쓰기가 완료되고, 원격 응답기가 송신하는 응답 프레임 또는 프로토콜에 의해서 요청기(Requester)(621)가 원격지 메모리 응답 상태를 인지하며, 요청기는 인지된 응답 상태를 기반으로 버스 프로토콜에 따라 응답신호를 버스 마스터(A)로 전달할 수 있다(S805).
응답의 유효함 (Write Response Valid)을 알리는 RESP_W_VALID 신호가 켜짐(ON or Enable)이면, 분할운용 지연 제어기(610)는, 쓰기 종료 타임(End Time of Write, ETW)(632)의 스탬프를 기록하거나 카운터를 종료하여 지연 측정을 마무리하고, 해당 원격지 분할운용 메모리 ID에 대한 분할운용 쓰기 지연(Disaggregation Write Delay)(630) 시간을 기록한다(S806). 이러한 과정을 통해 처리 장치의 버스 마스터(A)의 쓰기 동작이 종료된다(S807).
도 9는 본 개시의 일 실시예에 따른 분할운용 컴퓨팅 시스템에 구비되는 분할운용 제어기의 원격지 메모리 읽기 지연 정보를 관리하는 동작을 예시하는 흐름도이다.
도 9에서는, 본 발명의 일 실시 예에 따른 분할운용 지연 제어기(610)가 특정 원격지 분할 메모리 ID(740)에 해당하는 주소의 메모리 데이터 읽기 과정에서의 지연 시간을 기록하는 동작을 예시한다.
처리 장치의 버스 마스터(A)가, 특정 원격지 분할 메모리 ID(740)에 해당하는 주소의 메모리 데이터 읽기 과정에서, 처리 장치의 버스 마스터(A)의 읽기 동작이 개시되면, 버스 마스터(A)는 요청기의 버스 슬레이브에 연결된 버스를 통해서 버스 프로토콜에 적합한 주소, 제어 정보에 대한 송수신이 시작되며, 제어 정보 신호를 감시하는 분할 운용 지연 제어기(610)는 읽기 주소의 유효함(Read Address Valid) 알리는 Addr_R_VALID 신호가 켜짐(ON or Enable) 신호로 바뀌면, 원격지 분할 운용 메모리 ID에 대한 읽기 시작 타임(Start Time of Read, STR)(641)의 스탬프를 기록하거나 카운터를 동작시켜 지연 측정을 시작한다(S901, S902, S903).
이후, 주소, 데이터, 정보 신호가 버스를 거쳐 요청기(621) 내의 슬레이브에 전달되고, 요청기는 분할 운용 네트워크(Disaggregation Network)에 읽기 동작과 관련된 주소, 제어 정보 신호를 포함한 요청 프레임 또는 프로토콜을 사용하여 원격 응답기에 전달한다(S904).
원격 응답기의 버스 마스터는 적절한 버스 프로토콜을 통해 원격 메모리 슬레이브(B)를 통해서 원격지의 메모리로 읽기가 완료되고, 원격 응답기가 송신하는 읽기 데이터를 포함한 응답 프레임 또는 프로토콜에 의해서 요청기(Requester)(621)가 원격지 메모리 응답 상태를 인지하고, 요청기는 인지된 응답 상태를 기반으로 버스 프로토콜에 따라 데이터와 해당 응답신호를 버스 마스터(A)로 전달할 수 있다(S904, S905).
마지막 읽기 데이터 (Last Read Data)임을 알리는 Data_R_LAST 신호가 켜짐(ON or Enable)이면, 분할 운용 지연 제어기(610)는, 읽기 종료 타임(End Time of Reade, ETW)(642)의 스탬프를 기록하거나 카운터를 종료하여 지연 측정을 마무리하고, 해당 원격지 분할 메모리 ID에 대한 분할운용 읽기 지연(Disaggregation Read Delay)(640) 시간을 기록한다(S906). 지연 측정값은 클럭을 이용한 카운터 값이나 타임 스탬프 값의 차를 계산하여 도출할 수 있다. 이러한 과정을 통해 처리 장치의 버스 마스터(A)의 읽기 동작이 종료된다(S907).
본 개시의 일 실시예에서, 프로세서는 중앙 처리 장치(CPU) 또는 메모리 및/또는 스토리지에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. 메모리 및 스토리지는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(Read Only Memory) 및 RAM(Random Access Memory)을 포함할 수 있다.
따라서, 본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리 및/또는 스토리지)에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되며, 그 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
본 개시의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 개시에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.

Claims (12)

  1. 컴퓨팅 시스템에 있어서,
    로컬 프로세서, 로컬 메모리 버스, 로컬 메모리, 및 로컬 분할운용 제어기(Disaggregation Controller)를 포함하는 로컬 컴퓨팅 장치와,
    원격 프로세서, 원격 메모리 버스, 원격 메모리, 및 원격 분할운용 제어기(Disaggregation Controller)를 포함하는 원격 컴퓨팅 장치와,
    상기 로컬 컴퓨팅 장치 및 상기 원격 컴퓨팅 장치를 연결하는 분할운용 네트워크를 포함하고,
    상기 로컬 분할운용 제어기 및 원격 분할운용 제어기는,
    상기 원격 메모리의 접근에 대한 응답 지연을 확인하고,
    상기 응답 지연을 기반으로 상기 원격 메모리의 접근을 제어하는 분할운용 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 로컬 분할운용 제어기(Disaggregation Controller), 상기 원격 분할운용 제어기(Disaggregation Controller), 및 상기 분할운용 네트워크를 포함하는 분할운용 가상 버스(Disaggregation Virtual Bus) 또는 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)를 구성하여 관리하는 분할운용 컴퓨팅 시스템.
  3. 제2항에 있어서,
    상기 분할운용 가상 버스(Disaggregation Virtual Bus) 또는 분할운용 가상 메모리 버스(Disaggregation Virtual Memory bus)는,
    처리장치(Processing Unit) 또는 프로세서에서 요청을 전송하는 버스 마스터와,
    메모리의 읽기 요청 또는 쓰기 요청을 상기 로컬 메모리 버스 또는 상기 원격 메모리 버스로 전달하고 응답을 대기하는 버스 슬레이브를 포함하는 분할운용 컴퓨팅 시스템.
  4. 제2항에 있어서,
    상기 로컬 분할운용 제어기(Disaggregation Controller), 및 상기 원격 분할운용 제어기(Disaggregation Controller)는,
    데이터 읽기 동작 또는 쓰기 동작에 대한 요청(Request)을 처리하는 요청기(Requester)와,
    데이터 읽기 동작 또는 쓰기 동작에 대한 응답(Response)을 처리하는 응답기(Responder)를 포함하는 분할운용 컴퓨팅 시스템.
  5. 제3항에 있어서,
    상기 버스 마스터와, 상기 버스 슬레이브 사이의 통신에 사용되는 채널은,
    읽기(Read) 채널 및 쓰기(Write) 채널을 포함하고,
    상기 읽기(Read) 채널 및 쓰기(Write) 채널은,
    각각 주소 채널과 데이터 채널을 포함하며,
    상기 주소 채널은,
    분할운용 메모리 ID로 상기 원격 메모리를 구분하거나 오프셋(Offset) 주소를 구분하는 주소 신호와, 주소 제어 정보를 포함하고,
    상기 데이터 채널은,
    데이터 신호와, 데이터 제어 정보를 포함하는 분할운용 컴퓨팅 시스템.
  6. 제2항에 있어서,
    상기 로컬 분할운용 제어기(Disaggregation Controller), 및 상기 원격 분할운용 제어기(Disaggregation Controller)는,
    적어도 하나의 상기 원격 메모리를 주소 기반으로 관리하고 메모리 접근을 제어하는 분할 메모리 관리 유닛(Disaggregated Memory Management Unit)을 포함하는, 분할운용 컴퓨팅 시스템.
  7. 제6항에 있어서,
    상기 분할 메모리 관리 유닛은,
    상기 원격 메모리의 물리 주소와 가상 주소를 매핑하되, 분할 메모리를 주소 기반으로 관리하는 매핑 테이블을 생성 및 관리하는, 분할운용 컴퓨팅 시스템.
  8. 제7항에 있어서,
    상기 분할 메모리 관리 유닛은,
    분할 메모리 단위에 대한 읽기 지연 정보 또는 쓰기 지연 정보를 관리하고, 상기 읽기 지연 정보 또는 쓰기 지연 정보에 따른 상기 분할 메모리 단위에 대한 직접 접근 여부 결정하는 플래그를 관리하는, 분할운용 컴퓨팅 시스템.
  9. 제7항에 있어서,
    상기 로컬 분할운용 제어기(Disaggregation Controller), 및 상기 원격 분할운용 제어기(Disaggregation Controller)는,
    분할 메모리 단위에 대한 읽기 지연 정보 또는 쓰기 지연 정보를 기반으로, 상기 분할 메모리에 대한 직접 접근 여부를 결정하는, 분할운용 컴퓨팅 시스템.
  10. 제2항에 있어서,
    상기 로컬 분할운용 제어기(Disaggregation Controller), 및 상기 원격 분할운용 제어기(Disaggregation Controller)는,
    적어도 하나의 상기 원격 메모리에 대한 지연을 측정하고 기록하는 분할운용 지연 제어기를 포함하는, 분할운용 컴퓨팅 시스템.
  11. 제10항에 있어서,
    상기 분할운용 지연 제어기는,
    분할 메모리 단위에 대한 읽기 지연 또는 쓰기 지연을 측정하고 측정된 지연 값을 관리하는, 분할운용 컴퓨팅 시스템.
  12. 제10항에 있어서,
    상기 분할운용 지연 제어기는,
    버스 프로토콜의 제어 정보를 감시하여 분할 메모리 단위에 대한 읽기 또는 쓰기 요청 신호와 시간을 인지하고, 해당 분할 메모리 단위에 대한 응답 신호와 시간을 인지하여 상기 해당 분할 메모리의 지연을 측정하고 측정된 지연 값을 관리하는, 분할운용 컴퓨팅 시스템.
KR1020220006805A 2022-01-17 2022-01-17 분할운용 컴퓨팅 시스템 및 방법 KR20230111055A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220006805A KR20230111055A (ko) 2022-01-17 2022-01-17 분할운용 컴퓨팅 시스템 및 방법
US17/940,502 US20230229360A1 (en) 2022-01-17 2022-09-08 Disaggregation computing system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220006805A KR20230111055A (ko) 2022-01-17 2022-01-17 분할운용 컴퓨팅 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20230111055A true KR20230111055A (ko) 2023-07-25

Family

ID=87161841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220006805A KR20230111055A (ko) 2022-01-17 2022-01-17 분할운용 컴퓨팅 시스템 및 방법

Country Status (2)

Country Link
US (1) US20230229360A1 (ko)
KR (1) KR20230111055A (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316377B2 (en) * 2007-09-06 2012-11-20 Hewlett-Packard Development Company, L.P. Sharing legacy devices in a multi-host environment
WO2010002411A1 (en) * 2008-07-03 2010-01-07 Hewlett-Packard Development Company, L.P. Memory server
EP2992438B1 (en) * 2013-04-30 2019-08-28 Hewlett-Packard Enterprise Development LP Memory network
KR102586768B1 (ko) * 2018-03-27 2023-10-16 에스케이하이닉스 주식회사 컴퓨팅 시스템 및 그것의 동작방법
US20190324811A1 (en) * 2019-07-02 2019-10-24 Intel Corporation Technologies for providing latency-aware consensus management in a disaggregated architecture
US11327665B2 (en) * 2019-09-20 2022-05-10 International Business Machines Corporation Managing data on volumes
US11620192B2 (en) * 2020-07-10 2023-04-04 Vmware, Inc. Hardware-assisted memory disaggregation with recovery from network failures using non-volatile memory
US20210117334A1 (en) * 2020-12-23 2021-04-22 Intel Corporation Memory controller to manage quality of service enforcement and migration between local and pooled memory
KR20220146835A (ko) * 2021-04-26 2022-11-02 한국전자통신연구원 컴퓨팅 자원 분할 운용 방법 및 장치
US11507285B1 (en) * 2021-05-12 2022-11-22 TORmem Inc. Systems and methods for providing high-performance access to shared computer memory via different interconnect fabrics
CN116360680A (zh) * 2021-12-28 2023-06-30 三星电子株式会社 用于在存储系统中执行复制恢复操作的方法和系统

Also Published As

Publication number Publication date
US20230229360A1 (en) 2023-07-20

Similar Documents

Publication Publication Date Title
US11841814B2 (en) System with cache-coherent memory and server-linking switch
CN112099941B (zh) 实现硬件加速处理的方法、设备和系统
CN105900076B (zh) 用于处理多个交易的数据处理系统及方法
US11269774B2 (en) Delayed snoop for improved multi-process false sharing parallel thread performance
JP2021190125A (ja) メモリリソースを管理するためのシステム及び方法
JP6262360B2 (ja) 計算機システム
US20220206969A1 (en) Data forwarding chip and server
US20130054896A1 (en) System memory controller having a cache
US10331581B2 (en) Virtual channel and resource assignment
US20220114098A1 (en) System, apparatus and methods for performing shared memory operations
US20230051825A1 (en) System supporting virtualization of sr-iov capable devices
US11922072B2 (en) System supporting virtualization of SR-IOV capable devices
US9158692B2 (en) Cache injection directing technique
KR20220048460A (ko) 가상화 및 계층 메모리가 있는 가속기를 위한 시스템, 방법, 및 장치
US9411763B2 (en) Allocation of flow control credits for high performance devices
KR20230111055A (ko) 분할운용 컴퓨팅 시스템 및 방법
CN109101439B (zh) 一种报文处理的方法及装置
US20230305720A1 (en) Reservation of memory in multiple tiers of memory
US20240012684A1 (en) Memory disaggregation method, computing system implementing the method
US20230222067A1 (en) Apparatus and method for cache-coherence
CN117725011A (zh) 主机桥接设备
KR20230107086A (ko) 캐시-일관성을 위한 장치 및 방법
KR20230107085A (ko) 캐시-일관성을 위한 장치 및 방법
KR20230086548A (ko) 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법
US9195410B2 (en) Storage system and access arbitration method

Legal Events

Date Code Title Description
E902 Notification of reason for refusal