KR102572143B1 - 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 - Google Patents
메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 Download PDFInfo
- Publication number
- KR102572143B1 KR102572143B1 KR1020220055540A KR20220055540A KR102572143B1 KR 102572143 B1 KR102572143 B1 KR 102572143B1 KR 1020220055540 A KR1020220055540 A KR 1020220055540A KR 20220055540 A KR20220055540 A KR 20220055540A KR 102572143 B1 KR102572143 B1 KR 102572143B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- subsystem
- processor
- data
- memory subsystem
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 525
- 238000000034 method Methods 0.000 title claims description 36
- 230000004044 response Effects 0.000 claims description 21
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
Abstract
본 발명에 의하면, 메모리 자원 공유 시스템에 있어서, 제1 메모리, 제1 메모리의 자원을 파악 및 분배하고, 제1 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 서브시스템, 및 제1 메모리 서브시스템에 연결된 제1 프로세서로 구성된 제1 프로세서 유닛과, 제2 메모리, 제2 메모리의 자원을 파악 및 분배하고, 제2 메모리의 데이터 전송을 제어하도록 구성된 제2 메모리 서브시스템, 및 제2 메모리 서브시스템에 연결된 제2 프로세서로 구성된 제2 프로세서 유닛을 포함하고, 제1 메모리 서브시스템과 제2 메모리 서브시스템은 메모리 버스를 통해 연결되어 통신가능한 것인, 메모리 자원 공유 시스템을 제공할 수 있다.
Description
본 발명은 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템에 관한 것이다. 보다 구체적으로, 본 발명은 이종 프로세서간 메모리 자원을 공유할 수 있는 메모리 클라우드를 구성하기 위한 메모리 제어 연동 방법 및 이를 위한 메모리 자원 공유 시스템의 네트워크 구성에 관한 것이다.
종래의 반도체 기술 분야 또한 CPU, GPU의 실효 대역폭을 극대화하기 위한 개별 메모리 구성기술을 개발하였으나, 현재 대용량 멀티 캐스팅등을 위한 연산에 최적화된 메모리 클러스터 구성에 대한 기술이 부재하다는 문제가 존재한다.
또한, DNN(Deep Neural Network, 심층 신경망) 등과 같이 대용량 연산 데이터를 필요로 하는 경우 개별 디램(DRAM)의 용량을 증가시키거나, 듀얼 인라인 메모리 모듈(DIMM, dual in-line memory module)을 확장하는 기존 방법을 적용할 수 있지만, 비용, 제한적인 확장성, 메모리 공급업체 의존도 등을 고려하면 최선의 대안은 아니므로 컴퓨팅 메모리 네트워크 구조 시스템의 근간을 바꾸어야 하는 새로운 기술 적용이 필요하다.
최근 딥러닝 응용 기술의 연산 집약적인 문제와 높은 메모리 대역폭 요구로 인해 전력수급이 원할하고 연산 능력이 높은 서버 및 PC와 같은 장치에서 활용이 가능한 기술로 인식되고 시장이 형성되고 있으며, 또한 딥러닝 경량화 기술 및 모델 압축 기술이 고도화되고 ASIC(Application Specific Integrated Circuit) 반도체의 기술이 초미세 공정으로 진입하면서 인공지능 응용을 활용하기 위한 확장 연동 가능한 메모리 네트워크 구성의 최적화 기술이 요구된다.
또한, AI의 막대한 데이터와 연산량으로 인하여 종래 기술의 경우, 서버에서는 전력 소모로 인한 탄소 배출량 감소에 대한 요구가 거세지고 있어 고연산 효율을 가지는 프로세서 및 메모리 네트워크 구성의 신규 기술의 개발이 필요한 실정이다.
또한, 인공지능(AI) 기술의 중심은 소프트웨어(SW) 기술이라고 하지만, 복잡한 AI SW를 구현하기 위해서는 높은 성능의 하드웨어(HW)가 필수적이며, 이에 따라 메모리 반도체에 연산 기능을 더해 인공지능과 빅 데이터 처리 분야에서 데이터 이동 정체 문제를 풀어낼 수 있는 차세대 메모리 공유 솔루션이 요구된다.
본 발명은 이종(heterogeneous) 프로세서간 메모리 자원을 공유할 수 있는 메모리 클라우드를 구성하기 위한 메모리 제어 연동 방법 및 이를 위한 메모리 자원 공유 시스템을 제공하는 것을 목적으로 한다.
또한, 본 발명은 이종 시스템의 확장 및 연동에 최적화된 다양한 종류의 메모리를 공유하고 통합 운용할 수 있는 메모리 자원 공유 방법 및 시스템을 제공하는 것을 목적으로 한다.
또한, 본 발명은 이종 프로세서 및 물리적으로 다른 칩에 연결되어 있는 메모리에 서로 접근가능하게 함으로써, 메모리 네트워크의 융합 및 연동이 가능한 이종 융합 메모리 클러스터를 구성할 수 있는 컴퓨팅 시스템용 브리지 제어 방법 및 시스템을 제공하는 것을 목적으로 한다.
또한, 본 발명은 프로세서 투 프로세서(Processor to Processor)뿐만 아니라 프로세서 간 연결된 메모리 브리지 IC를 통한 메모리 네트워크를 구성함으로써, 프로세서의 개수 및 메모리 용량을 독립적으로 확장가능하고(scalable), 메모리 접근시 지연시간을 수 ms 이하로 최소화하여 초고속 데이터 전송이 가능한 메모리 클라우드 네트워크를 구성하는 것을 목적으로 한다.
본 발명의 해결 과제들은 이상에서 언급한 내용들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 있어서, 메모리 자원 공유 시스템에 있어서, 제1 메모리, 제1 메모리의 자원을 파악 및 분배하고, 제1 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 서브시스템, 및 제1 메모리 서브시스템에 연결된 제1 프로세서로 구성된 제1 프로세서 유닛과, 제2 메모리, 제2 메모리의 자원을 파악 및 분배하고, 제2 메모리의 데이터 전송을 제어하도록 구성된 제2 메모리 서브시스템, 및 제2 메모리 서브시스템에 연결된 제2 프로세서로 구성된 제2 프로세서 유닛을 포함하고, 제1 메모리 서브시스템과 제2 메모리 서브시스템은 메모리 버스를 통해 연결되어 통신가능한 것인, 메모리 자원 공유 시스템을 제공할 수 있다.
여기서, 상기 제1 프로세서의 메모리 자원 요청에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리의 자원의 용량이 부족하다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제2 메모리 서브시스템에 상기 제2 메모리의 자원에 대한 액세스 허가 요청 메시지를 전송하도록 구성될 수 있다.
또한, 상기 제2 메모리 서브시스템이 상기 액세스 허가 요청 메시지에 응답하여 상기 제2 메모리의 자원의 용량에 여유가 있다고 판단하는 경우, 상기 제2 메모리 서브시스템은 상기 제1 메모리 서브시스템에 상기 제2 메모리의 자원에 대한 액세스 허가 메시지를 전송하도록 구성될 수 있다.
또한, 상기 제1 프로세서의 데이터 읽기 명령에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리에 상기 데이터 읽기 명령에 대응되는 데이터가 존재하지 않는다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제2 메모리 서브시스템에 상기 제2 메모리의 데이터에 대한 액세스 허가 요청 메시지를 전송하도록 구성될 수 있다.
또한, 상기 제2 메모리 서브시스템이 상기 액세스 허가 요청 메시지에 응답하여 상기 제2 메모리에 상기 데이터 읽기 명령에 대응되는 데이터가 존재한다고 판단하는 경우, 상기 제2 메모리 서브시스템은 상기 제1 메모리 서브시스템에 상기 제2 메모리의 데이터에 대한 액세스 허가 메시지를 전송하도록 구성될 수 있다.
또한, 상기 제1 프로세서의 데이터 쓰기 명령에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리에 상기 데이터 쓰기 명령의 실행이 불가능하다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제2 메모리 서브시스템에 상기 제2 메모리에 대한 액세스 허가 요청 메시지를 전송하도록 구성될 수 있다.
또한, 상기 제2 메모리 서브시스템이 상기 액세스 허가 요청 메시지에 응답하여 상기 제2 메모리에 상기 데이터 쓰기 명령의 실행이 가능하다고 판단하는 경우, 상기 제2 메모리 서브시스템은 상기 제2 메모리에 상기 데이터 쓰기 명령을 실행하도록 구성될 수 있다.
또한, 제5 메모리; 및 상기 제5 메모리의 자원을 파악 및 분배하고, 상기 제5 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 브리지 서브시스템을 포함하는 제1 메모리 브리지 IC를 더 포함하고, 상기 제1 메모리 브리지 서브시스템은 상기 제1 메모리 서브시스템 및 상기 제2 메모리 서브시스템과 상기 메모리 버스를 통해 연결되어 통신가능하도록 구성될 수 있다.
또한, 제6 메모리; 및 상기 제6 메모리의 자원을 파악 및 분배하고, 상기 제6 메모리의 데이터 전송을 제어하도록 구성된 제2 메모리 브리지 서브시스템을 포함하는 제2 메모리 브리지 IC를 더 포함하고, 상기 제2 메모리 브리지 서브시스템은 상기 제1 메모리 브리지 서브시스템과 상기 메모리 버스를 통해 연결되어 통신가능하도록 구성될 수 있다.
또한, 제3 메모리; 상기 제3 메모리의 자원을 파악 및 분배하고, 상기 제3 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 서브시스템; 및 상기 제3 메모리 서브시스템에 연결된 제3 프로세서로 구성된 제3 프로세서 유닛을 더 포함하고, 상기 제3 메모리 서브시스템은 제1 메모리 브리지 서브시스템과 상기 메모리 버스를 통해 연결되어 통신가능하도록 구성되는 것이고, 상기 제1 메모리 서브시스템과 상기 제3 메모리 서브시스템이 상기 메모리 버스를 통해 연결되지 않는 경우, 상기 제1 프로세서의 메모리 자원 요청에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리의 자원의 용량이 부족하다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제1 메모리 브리지 서브시스템을 통해 상기 제3 메모리 서브시스템에 상기 제3 메모리의 자원에 대한 액세스 허가 요청 메시지를 전송가능하도록 구성될 수 있다.
본 발명에 의하면, 이종(heterogeneous) 프로세서간 메모리 자원을 공유할 수 있는 메모리 클라우드를 구성하기 위한 메모리 제어 연동 방법 및 이를 위한 메모리 자원 공유 시스템을 제공할 수 있다.
또한, 본 발명에 의하면, 이종 시스템의 확장 및 연동에 최적화된 다양한 종류의 메모리를 공유하고 통합 운용할 수 있는 메모리 자원 공유 방법 및 시스템을 제공할 수 있다.
또한, 본 발명에 의하면, 이종 프로세서 및 물리적으로 다른 칩에 연결되어 있는 메모리에 서로 접근가능하게 함으로써, 메모리 네트워크의 융합 및 연동이 가능한 이종 융합 메모리 클러스터를 구성할 수 있는 컴퓨팅 시스템용 브리지 제어 방법 및 시스템을 제공할 수 있다.
또한, 본 발명에 의하면, 프로세서 투 프로세서(Processor to Processor)뿐만 아니라 프로세서 간 연결된 메모리 브리지 IC를 통한 메모리 네트워크를 구성함으로써, 프로세서의 개수 및 메모리 용량을 독립적으로 확장가능하고(scalable), 메모리 접근시 지연시간을 수 ms 이하로 최소화하여 초고속 데이터 전송이 가능한 메모리 클라우드 네트워크를 구성할 수 있다.
본 발명의 효과들은 이상에서 언급한 내용들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1a는 종래의 단일 메모리 제어 기술의 문제점을 설명하기 위한 개념도이며, 도 1b는 본 발명의 일 실시예에 따른 메모리 클라우드를 위한 메모리 자원 공유 방법 및 시스템의 목적을 설명하기 위한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 자원 공유 프로세스를 설명하기 위한 블록도이다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 데이터 읽기 프로세스를 설명하기 위한 블록도 및 흐름도이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 데이터 쓰기 프로세스를 설명하기 위한 블록도 및 흐름도이다.
도 5는 본 발명의 일 실시예에 따라 복수의 프로세서 유닛과 메모리 브리지 IC로 구성되는 메모리 자원 공유 시스템의 구성을 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 자원 공유 프로세스를 설명하기 위한 블록도이다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 데이터 읽기 프로세스를 설명하기 위한 블록도 및 흐름도이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 데이터 쓰기 프로세스를 설명하기 위한 블록도 및 흐름도이다.
도 5는 본 발명의 일 실시예에 따라 복수의 프로세서 유닛과 메모리 브리지 IC로 구성되는 메모리 자원 공유 시스템의 구성을 설명하기 위한 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
본 명세서에서 사용되는 "포함한다(comprises)", "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시예를 상세하게 설명한다. 본 발명의 구성 및 그에 따른 작용 효과는 이하의 상세한 설명을 통해 명확하게 이해될 것이다.
도 1a는 종래의 단일 메모리 제어 기술의 문제점을 설명하기 위한 개념도이다.
도 1a를 참고하면, 서로 상이한 제조사에서 제조하거나 규격, 기능 및 용도가 상이한 이종 프로세서들(11, 21, 31)은 각 프로세서에 적합한 메모리 제어를 위한 메모리 서브시스템(12, 22, 32)을 통해 각 프로세서에 연결된 메모리(13, 23, 33)를 제어하고 각각의 메모리 자원을 사용하게 된다. 이때, 서로 상이한 메모리 서브시스템(12, 22, 32)을 통해 제어되는 메모리들 간에 메모리 네트워크의 융합이나 연동이 불가능하기 때문에 각각의 프로세서는 해당 메모리 서브시스템을 통해 연결된 단일 메모리만 제어 및 사용이 가능하다는 문제점이 있다. 이와 같은 종래 구조에서는, 서로 동일 종류 또는 상이한 종류의 프로세서 간에 메모리 자원을 공유하는 것이 불가능하고, 물리적으로 다른 칩에 연결되어 있는 메모리에 서로 접근하는 것도 불가능하다.
도 1b는 본 발명의 일 실시예에 따른 메모리 클라우드를 위한 메모리 자원 공유 방법 및 시스템의 목적을 설명하기 위한 개념도이다.
종래의 서로 다른 메모리 자원 간에 데이터를 전송하기 위해서는 좌측 도면에서와 같이 메모리로부터 메모리 서브시스템, 네트워크온칩(NoC), 캐쉬(cache), 프로세서, OS(운영체제), 드라이버, 이더넷 통신망 등의 여러 단계의 프로세스를 거쳐 데이터의 이동이 이루어지기 때문에, 데이터 전송을 위한 시간이 많이 소요된다.
그러나, 본 발명에서 제안하는 메모리 클라우드(memory cloud)를 위한 메모리 자원 공유 시스템의 경우 우측 도면에서와 같이 서로 다른 메모리 자원을 담당하는 메모리 서브시스템 사이에 데이터를 전송할 수 있는 메모리 버스를 통해 별도의 데이터 전송 채널을 구성함으로써, 메모리로부터 프로세서 레벨을 거쳐 이더넷 통신망 레벨까지 데이터가 전달될 필요 없이 하위 레벨에서 메모리 서브시스템 사이에 데이터 전송이 가능하기 때문에 시간적인 측면 및 효율성 측면에서 최적화된 메모리 자원 융합 및 연동 솔루션을 제공할 수 있다. 여기서, 메모리 클라우드는 서로 동일하거나 상이한 종류의 복수의 프로세서와 연결되어 있는 각각의 메모리 자원을 공유하여 빠르게 접근 가능하도록 구현한 새로운 시스템을 의미하며, 다수의 메모리 사용 주체로서 복수의 이종 프로세서, 예컨대 CPU, GPU, NPU 등에게 공용의 메모리 자원을 공유가능하도록 제공할 수 있는 시스템을 지칭한다. 본 발명에 따른 메모리 자원 공유 시스템의 구체적인 동작에 대해서는 이하에서 설명될 것이다.
도 2는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 자원 공유 프로세스를 설명하기 위한 블록도이다.
도 2를 참조하면, 제1 프로세서 유닛(100)은 제1 프로세서(110), 제1 메모리 서브시스템(120), 제1 메모리(130)를 포함할 수 있고, 제2 프로세서 유닛(200)은 제2 프로세서(210), 제2 메모리 서브시스템(220), 제2 메모리(230)를 포함할 수 있으며, 제1 프로세서 유닛(100) 및 제2 프로세서 유닛(200)은 각각 하나의 개별 IC(집적 회로)로 구성될 수 있다.
여기서, 제1 프로세서 유닛(100)과 제2 프로세서 유닛(200)은 이종의 시스템으로 구성될 수 있으며, 예컨대 제1 프로세서(110)와 제2 프로세서(210)은 서로 다른 제조사에 의해 제조된 다른 유형의 프로세서이거나, CPU(central processing unit), GPU(graphic processing unit), NPU(neural processing unit) 등 서로 다른 용도 또는 유형의 프로세싱 유닛일 수 있으며, 각각 제1 메모리 서브시스템(120) 및 제2 메모리 서브시스템(220)에 연결될 수 있다.
또한, 메모리 서브시스템은 메모리에 데이터를 읽기(read)하고 쓰기(write)하는 주체로부터 메모리 접근 요청을 받고, 안정적으로 메모리 구동 명령어, 데이터를 메모리로 전송하며, 메모리 데이터를 읽기, 쓰기 및 보존하기 위한 메모리 컨트롤러, 물리계층(PHY), 입출력(IO) 등으로 구성된 메모리 시스템의 구동 보조 시스템을 의미한다. 제1 메모리 서브시스템(120) 및 제2 메모리 서브시스템(220)은 각각 제1 메모리(130) 또는 제2 메모리(230)의 자원을 파악 및 분배하고, 제1 메모리(130) 또는 제2 메모리(230)의 데이터 전송을 제어하도록 구성될 수 있으며, 제1 메모리 서브시스템(120)과 제2 메모리 서브시스템(220)은 메모리 버스를 통해 연결되어 통신가능하며, 다양한 메모리 프로토콜을 지원하도록 구성될 수 있다.
여기서, 제1 메모리(130) 또는 제2 메모리(230)는 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있고, 휘발성 메모리인 경우 빠른 처리 속도가 요구되는 랜덤 액세스 메모리(RAM)를 포함할 수 있으며, 예컨대 DRAM, MRAM, STT-MRAM, PRAM, RRAM 등 랜덤 액세스가 가능한 다양한 메모리 등을 포함할 수도 있다. 또한, 예컨대 제1 메모리(130)와 제2 메모리(230)는 각각 DDR3, DDR4, DDR5 등 DDRx나 LPDDR3, LPDDR4, LPDDR5 등 LPDDRx 등 서로 다른 규격과 프로토콜을 갖는 메모리 종류 중 하나 이상을 포함할 수 있다.
도 2를 참조하면, 메모리 자원 공유 프로세스의 일 예시로서 제1 메모리 자원의 용량이 부족한 경우 자체 메모리가 아닌 공유된 제2 메모리 자원을 활용하는 프로세스가 도시되며, 먼저 제1 프로세서(110)가 제1 메모리 서브시스템(120)에 메모리 자원을 요청할 수 있다.(S201)
제1 메모리 서브시스템(120)은 제1 메모리(130)의 메모리 자원을 파악하고 자원 분배(할당) 가능하며(S202), 제1 메모리(130)는 메모리 자원의 상황을 제1 메모리 서브시스템(120)에 보고하고, 이때 제1 메모리(130)의 용량(공간)이 부족한 상태인지 또는 메모리 할당이 가능한 여유있는 상태인지 여부를 판단할 수 있다.(S203)
이때, 제1 메모리 서브시스템(120)은 제1 프로세서(110)에 제1 메모리(130)의 용량이 부족한 상태이거나 메모리 할당 가능한 상태인지 등 메모리 자원 상황을 공유하고(S204), 제1 메모리(130)의 자원의 용량이 부족하다고 판단하는 경우, 제1 메모리 서브시스템(120)은 메모리 버스를 통해 제2 프로세서 유닛(200)의 제2 메모리 서브시스템(220)에 제2 메모리(230)의 자원에 대한 액세스 허가 요청 메시지를 전송할 수 있다.(S205)
제2 메모리 서브시스템(220)은 액세스 허가 요청 메시지에 응답하여 제2 메모리(230)의 메모리 자원을 파악하고 분배가능하며(S206), 이때 제2 메모리(230)의 용량(공간)이 부족한 상태이거나 메모리 할당이 가능한 여유있는 상태인지 여부를 판단할 수 있다.(S207)
제2 메모리 서브시스템(220)은 제2 프로세서(210)에 제2 메모리(230)의 용량이 부족한 상태이거나 메모리 할당 가능한 상태인지 등 메모리 자원 상황을 공유하고(S208), 제2 메모리(230)의 자원의 용량에 여유가 있다고 판단하는 경우, 제1 메모리 서브시스템(120)에 제2 메모리(230)의 자원에 대한 액세스 허가 메시지를 전송할 수 있다.(S209)
이와 같은 프로세스를 통해 제1 프로세서(110)는 제1 메모리(130)의 자원 용량이 부족한 경우 제2 메모리(230)의 자원을 할당받아 액세스(사용)할 수 있으며, 특히 프로세서보다 하위 레벨에서 제1 메모리 서브시스템(120)과 제2 메모리 서브시스템(130) 간에 데이터 전송을 통해 메모리 공유 및 데이터 전송이 가능하기 때문에 서로 상이한 종류나 위치에 존재하는 메모리 자원 간에 메모리 접근 시에 지연시간을 수 ms 이하로 최소화함으로써 초고속 데이터 전송이 가능하다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 데이터 읽기 프로세스를 설명하기 위한 블록도 및 흐름도이다.
도 3a를 참조하면, 메모리 자원 시스템의 메모리 데이터 사용 중 읽기(read) 프로세스의 일 예시로서 제1 프로세서(110)에서 제2 메모리(230)의 데이터 읽기가 필요한 경우 프로세스가 도시되며, 먼저 제1 프로세서(110)가 제1 메모리 서브시스템(120)에 데이터 읽기 명령과 관련된 명령어 및 데이터 주소를 전달할 수 있다.(S301)
제1 메모리 서브시스템(120)은 데이터 읽기 명령에 응답하여 읽기 명령어 및 데이터 주소를 확인하고(S302), 제1 메모리(130)는 메모리 데이터의 상황을 제1 메모리 서브시스템(120)에 보고하고, 이때 제1 메모리(130)에 해당 데이터가 존재하는지 여부를 판단할 수 있다.(S303)
이때, 제1 메모리 서브시스템(120)은 제1 메모리(130)에 데이터 읽기 명령에 대응되는 데이터가 존재하지 않는다고 판단(해당 데이터 부재 판단)하는 경우, 메모리 버스를 통해 제2 프로세서 유닛(200)의 제2 메모리 서브시스템(220)에 제2 메모리(230)의 데이터에 대한 액세스 허가 요청 메시지를 전송할 수 있다.(S304)
제2 메모리 서브시스템(220)은 액세스 허가 요청 메시지에 응답하여 제2 메모리(230)를 통해 읽기 명령어 및 데이터의 출발지 및 도착지를 확인하고(S305), 이때 제2 메모리(230)에 제1 프로세서(110)의 데이터 읽기 명령에 대응되는 데이터가 존재하는지 여부를 판단할 수 있다.(S306)
제2 메모리 서브시스템(220)은 제2 메모리(230)에 데이터 읽기 명령에 대응되는 데이터가 존재한다고 판단하는 경우 메모리 데이터의 전달 상황을 제2 프로세서(210)에 공유하고(S307), 제1 메모리 서브시스템(120)에 제2 메모리(230)의 해당 데이터에 대한 액세스 허가 메시지를 전송할 수 있다.(S308) 또한, 제1 메모리 서브시스템(120)은 제2 메모리(230)를 통해 액세스한 데이터를 비교하고 제1 프로세서(110)에 전달할 수 있다.(S309)
이와 같은 프로세스를 통해 제1 프로세서(110)는 제1 메모리(130)에 필요한 해당 데이터가 존재하지 않는 경우 제2 메모리(230)에 액세스하여 해당 데이터를 읽어올 수 있다.
또한, 도 3b를 참조하면, 먼저 제1 프로세서(110)로부터 데이터 읽기 명령이 제1 메모리 서브시스템(120)으로 요청될 수 있다.(S310)
제1 메모리 서브시스템(120)은 데이터 읽기 명령의 패킷 디코딩을 통해 어드레스 변환 및 명령어를 생성할 수 있으며(S320), 또한 명령어 스케줄링 및 데이터 레이턴시를 체크할 수 있다.(S330)
다음으로, 제1 메모리 서브시스템(120)은 제1 메모리(130)에 액세스하여(S340), 제1 메모리(130)에 데이터 읽기가 가능한지 여부를 판단할 수 있다.(S350)
이때, 제1 메모리 서브시스템(120)에서 제1 메모리(130)에 해당 데이터가 존재하여 데이터 읽기가 가능하다고 판단되면 제1 메모리(130)에 데이터 읽기 명령을 실행할 수 있다.(S360)
한편, 제1 메모리 서브시스템(120)에서 제1 메모리(130)에 해당 데이터가 부재하여 해당 데이터의 읽기가 불가능하다고 판단되면, 제1 메모리 서브시스템(120)은 제2 메모리 서브시스템(220)에 제2 메모리(230)에 대한 데이터 읽기 허가 요청 메시지를 전송할 수 있다.(S370)
이때, 제2 메모리 서브시스템(220)은 제2 메모리(230)에 해당 데이터가 존재하는지 여부를 판단하여 데이터 읽기 가능 여부를 체크하고(S380), 데이터 읽기가 가능한 경우 제2 메모리(230)를 사용하여 제1 프로세서(110)로부터의 해당 데이터의 읽기 명령을 실행할 수 있다.(S390) 만약, 제2 메모리(230)에 데이터 읽기가 불가능한 경우 제2 메모리 서브시스템(220)은 제2 메모리(230)의 메모리 상황을 제1 메모리 서브시스템(120)에 전달할 수 있다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 메모리 자원 공유 시스템의 메모리 데이터 쓰기 프로세스를 설명하기 위한 블록도 및 흐름도이다.
도 4a를 참조하면, 메모리 자원 시스템의 메모리 데이터 사용 중 쓰기(read) 프로세스의 일 예시로서 제1 프로세서(110)에서 제2 메모리(230)에 데이터 쓰기가 필요한 경우 프로세스가 도시되며, 먼저 제1 프로세서(110)가 제1 메모리 서브시스템(120)에 데이터 쓰기 명령과 관련된 명령어 및 연산 데이터 주소를 전달할 수 있다.(S401)
제1 메모리 서브시스템(120)은 데이터 쓰기 명령에 응답하여 쓰기 명령어 및 연산데이터 주소를 확인하고(S402), 제1 메모리(130)는 메모리 데이터의 상황을 제1 메모리 서브시스템(120)에 보고하고, 이때 제1 메모리(130)에 해당 데이터 주소가 연산 데이터를 관리하는지 여부를 판단할 수 있다.(S403)
이때, 제1 메모리 서브시스템(120)은 제1 메모리(130)에 데이터 쓰기 명령에 대응되는 연산 데이터가 존재하지 않는 경우, 메모리 버스를 통해 제2 프로세서 유닛(200)의 제2 메모리 서브시스템(220)에 제2 메모리(230)의 데이터에 대한 액세스 허가 요청 메시지를 전송할 수 있다.(S404)
제2 메모리 서브시스템(220)은 액세스 허가 요청 메시지에 응답하여 제2 메모리(230)를 통해 쓰기 명령어 및 연산 데이터의 출발지 및 도착지를 확인하고(S405), 이때 제2 메모리(230)에 제1 프로세서(110)의 데이터 쓰기 명령에 대응되는 해당 연산 데이터가 존재하는지 여부를 판단할 수 있다.(S406)
제2 메모리 서브시스템(220)은 제2 메모리(230)에 데이터 쓰기 명령에 대응되는 해당 연산 데이터가 존재한다고 판단하는 경우 메모리 데이터의 전달 상황을 제2 프로세서(210)에 공유하고(S407), 제1 메모리 서브시스템(120)에 제2 메모리(230)의 해당 데이터에 대한 액세스 허가 메시지를 전송할 수 있다.(S408) 또한, 제1 메모리 서브시스템(120)은 제2 메모리(230)를 통해 액세스한 데이터를 비교하고 데이터 쓰기 상태를 제1 프로세서(110)에 전달할 수 있다.(S409)
이와 같은 프로세스를 통해 제1 프로세서(110)는 제1 메모리(130)에 쓰기 동작에 필요한 해당 연산 데이터가 존재하지 않는 경우 제2 메모리(230)에 액세스하여 해당 데이터의 쓰기 동작을 수행할 수 있다.
또한, 도 4b를 참조하면, 먼저 제1 프로세서(110)로부터 데이터 쓰기 명령이 제1 메모리 서브시스템(120)으로 요청될 수 있다.(S410)
제1 메모리 서브시스템(120)은 데이터 쓰기 명령의 패킷 디코딩을 통해 어드레스 변환 및 명령어를 생성할 수 있으며(S420), 또한 명령어 스케줄링 및 데이터 레이턴시를 체크할 수 있다.(S430)
다음으로, 제1 메모리 서브시스템(120)은 제1 메모리(130)에 액세스하여(S440), 제1 메모리(130)에 데이터 쓰기가 가능한지 여부를 판단할 수 있다.(S450) 예컨대, 제1 메모리(130)의 메모리 공간이 부족한지 여부를 판단하여 데이터 쓰기가 가능한지 여부를 판단할 수 있다.
이때, 제1 메모리 서브시스템(120)에서 제1 메모리(130)에 데이터 쓰기가 가능하다고 판단되면 제1 메모리(130)에 데이터 쓰기 명령을 실행할 수 있다.(S460)
한편, 제1 메모리 서브시스템(120)에서 제1 메모리(130)에 데이터 쓰기가 불가능하다고 판단되면, 제1 메모리 서브시스템(120)은 제2 메모리 서브시스템(220)에 제2 메모리(230)에 대한 쓰기 허가 요청 메시지를 전송할 수 있다.(S470)
이때, 제2 메모리 서브시스템(220)은 제2 메모리(230)에 데이터 쓰기 가능 여부를 체크하고(S480), 데이터 쓰기가 가능한 경우 제2 메모리(230)에 제1 프로세서(110)로부터의 데이터 쓰기 명령을 실행할 수 있다.(S490) 만약, 제2 메모리(230)에 데이터 쓰기가 불가능한 경우 제2 메모리 서브시스템(220)은 제2 메모리(230)의 메모리 공간 상황을 제1 메모리 서브시스템(120)에 전달할 수 있다.
도 5는 본 발명의 일 실시예에 따라 복수의 프로세서 유닛과 메모리 브리지 IC로 구성되는 메모리 자원 공유 시스템의 구성을 설명하기 위한 블록도이다.
도 5를 참조하면, 도 2 및 도 3에서 도시된 바와 같이 각각 자체 프로세서, 메모리 서브시스템 및 메모리를 포함하는 제1 프로세서 유닛(100)과 제2 프로세서 유닛(200)을 포함하고 있으며, 이와 유사하게 각각 자체 프로세서, 메모리 서브시스템 및 메모리를 포함하는 제3 프로세서 유닛(300)과 제4 프로세서 유닛(400)을 더 포함하고 있다. 이때, 도 2 및 도 3에서와 같이 제1 프로세서 유닛(100)과 제2 프로세서 유닛(200)은 제1 메모리 서브시스템(120) 및 제2 메모리 서브시스템(220) 사이에 메모리 버스를 통해 연결되어 있으나, 제1 메모리 서브시스템(120) 및 제2 메모리 서브시스템(220)는 제3 프로세서 유닛(300)과 제4 프로세서 유닛(400)의 메모리 서브시스템과는 직접 연결되어 있지 않고, 제3 프로세서 유닛(300)과 제4 프로세서 유닛(400)의 각 메모리 서브시스템 사이에는 메모리 버스를 통해 연결되어 있다.
또한, 도 5에 도시된 제1 프로세서 유닛(100), 제2 프로세서 유닛(200), 제3 프로세서 유닛(300), 제4 프로세서 유닛(400)과 제1 메모리 브리지 IC(500) 및 제 제2 메모리 브리지 IC(510)는 각각 하나의 개별 IC(집적 회로)로 구성될 수 있다.
또한, 메모리 자원 공유 시스템은, 제1 메모리 서브시스템(120) 및 제2 메모리 서브시스템(220)과 메모리 버스를 통해 연결되어 통신가능하도록 구성되고, 제3 프로세서 유닛(300)과 제4 프로세서 유닛(400)의 제3 메모리 서브시스템 및 제4 메모리 서브시스템과 각각 메모리 버스를 통해 연결되어 통신가능하도록 구성된 제1 메모리 브리지(bridge) 집적회로(IC)(500)를 더 포함할 수 있으며, 제1 메모리 브리지 IC(500)는 제1 프로세서 유닛(100) 내지 제4 프로세서 유닛(400)과 상이하게 자체 프로세서는 포함하지 않으나 메모리 네트워크 라우터 및 자체 메모리 제어 기능을 내장한 브리지 IC 형태로 구성될 수 있으며, 각 프로세서간 메모리 트래픽 경로를 관리, 중계하는 메모리 네트워크 라우터 역할을 수행하며, 자체적으로 연결된 메모리 자원을 운용할 수 있는 메모리 제어 기술을 수행할 수 있다. 제1 메모리 브리지 IC(500)는 제5 메모리 및 제5 메모리의 자원을 파악 및 분배하고, 제5 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 브리지 서브시스템을 포함하고, 제1 프로세서 유닛(100) 내지 제4 프로세서 유닛(400)의 필요에 따라 메모리 서브시스템과 메모리 브리지 서브시스템 간의 데이터 전달에 따라 제5 메모리의 자원을 공유할 수 있다.
예컨대, 제1 프로세서 유닛(100)의 제1 프로세서(110)의 메모리 자원 요청에 응답하여 제2 프로세서(200)의 제2 메모리(230)의 자원 사용이 불가능한 경우, 제1 메모리 브리지 IC(500)의 제1 메모리 브리지 서브시스템을 통해 제5 메모리의 자원에 대한 액세스 허가 요청 메시지를 전송하거나, 또는 제1 메모리 브리지 서브시스템을 경유하여 제3 프로세서 유닛(300)의 제3 메모리의 자원 사용을 위해 제3 메모리의 자원에 대한 액세스 허가 요청 메시지를 제3 메모리 서브시스템에 전송할 수 있다. 예컨대, 제3 프로세서 유닛(300)의 제3 메모리의 자원 사용이 가능한 경우 제1 프로세서(110)은 제1 메모리 브리지 IC(500)의 메모리 브리지 서브시스템을 통해 연결된 제3 메모리 서브시스템을 통해 제3 메모리의 자원에 액세스가능하다.
또한, 제1 메모리 브리지 IC(500)에 추가적으로 연결된 제2 메모리 브리지 IC(510)를 더 포함할 수 있고, 2 메모리 브리지 IC(510)는 제6 메모리, 및 제6 메모리의 자원을 파악 및 분배하고, 제6 메모리의 데이터 전송을 제어하도록 구성된 제2 메모리 브리지 서브시스템을 포함하고, 제2 메모리 브리지 서브시스템은 제1 메모리 브리지 서브시스템과 메모리 버스를 통해 연결되어 통신가능하도록 구성될 수 있다. 예컨대, 제1 프로세서 유닛(100)의 제1 프로세서(110)의 메모리 자원 요청에 응답하여 제1 메모리 브리지 IC(500)의 제5 메모리 자원의 용량이 부족하여 사용이 불가능한 경우, 제2 메모리 브리지 IC(510)의 제2 메모리 브리지 서브시스템을 통해 제6 메모리의 자원 상황을 판단하고 제6 메모리의 자원의 용량에 여유가 있어 사용이 가능한 경우 제1 프로세서(110)는 제1 메모리 브리지 IC(500)의 메모리 브리지 서브시스템 및 제2 메모리 브리지 IC(510)을 통해 제6 메모리의 자원에 액세스가능하여, 메모리를 확장 및 공유할 수 있다.
본 발명의 명세서에 개시된 실시예들은 예시에 불과한 것으로서, 본 발명은 이에 한정되지 않는 것이다. 본 발명의 범위는 아래의 특허청구범위에 의해 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술도 본 발명의 범위에 포함되는 것으로 해석해야 할 것이다.
100: 제1 프로세서 유닛
110: 제1 프로세서 120: 제1 메모리 서브 시스템
130: 제1 메모리
200: 제2 프로세서 유닛
210: 제2 프로세서 220: 제2 메모리 서브 시스템
230: 제2 메모리
300: 제3 프로세서 유닛
400: 제4 프로세서 유닛
500: 제1 메모리 브리지 IC
510: 제2 메모리 브리지 IC
110: 제1 프로세서 120: 제1 메모리 서브 시스템
130: 제1 메모리
200: 제2 프로세서 유닛
210: 제2 프로세서 220: 제2 메모리 서브 시스템
230: 제2 메모리
300: 제3 프로세서 유닛
400: 제4 프로세서 유닛
500: 제1 메모리 브리지 IC
510: 제2 메모리 브리지 IC
Claims (10)
- 메모리 자원 공유 시스템에 있어서,
제1 메모리;
상기 제1 메모리의 자원을 파악 및 분배하고, 상기 제1 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 서브시스템; 및
상기 제1 메모리 서브시스템에 연결된 제1 프로세서로 구성된 제1 프로세서 유닛과,
제2 메모리;
상기 제2 메모리의 자원을 파악 및 분배하고, 상기 제2 메모리의 데이터 전송을 제어하도록 구성된 제2 메모리 서브시스템; 및
상기 제2 메모리 서브시스템에 연결된 제2 프로세서로 구성된 제2 프로세서 유닛
을 포함하고,
상기 제1 메모리 서브시스템과 상기 제2 메모리 서브시스템은 메모리 버스를 통해 연결되어 통신가능한 것이고,
제5 메모리; 및
상기 제5 메모리의 자원을 파악 및 분배하고, 상기 제5 메모리의 데이터 전송을 제어하도록 구성된 제1 메모리 브리지 서브시스템
을 포함하는 제1 메모리 브리지 IC를 더 포함하고,
상기 제1 메모리 브리지 서브시스템은 상기 제1 메모리 서브시스템 및 상기 제2 메모리 서브시스템과 상기 메모리 버스를 통해 연결되어 통신가능하도록 구성되는 것이고,
제3 메모리;
상기 제3 메모리의 자원을 파악 및 분배하고, 상기 제3 메모리의 데이터 전송을 제어하도록 구성된 제3 메모리 서브시스템; 및
상기 제3 메모리 서브시스템에 연결된 제3 프로세서로 구성된 제3 프로세서 유닛을 더 포함하고, 상기 제3 메모리 서브시스템은 제1 메모리 브리지 서브시스템과 상기 메모리 버스를 통해 연결되어 통신가능하도록 구성되는 것이고,
상기 제1 메모리 서브시스템과 상기 제3 메모리 서브시스템이 상기 메모리 버스를 통해 연결되지 않는 경우, 상기 제1 프로세서의 메모리 자원 요청에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리의 자원의 용량이 부족하다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제1 메모리 브리지 서브시스템을 통해 상기 제3 메모리 서브시스템에 상기 제3 메모리의 자원에 대한 액세스 허가 요청 메시지를 전송가능하도록 구성되는 것이고,
상기 제1 프로세서, 상기 제2 프로세서 및 상기 제3 프로세서는 각각 상기 제1 메모리, 상기 제2 메모리 및 상기 제3 메모리와 서로 물리적으로 다른 칩에 연결된 것인, 메모리 자원 공유 시스템. - 제1항에 있어서, 상기 제1 프로세서의 메모리 자원 요청에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리의 자원의 용량이 부족하다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제2 메모리 서브시스템에 상기 제2 메모리의 자원에 대한 액세스 허가 요청 메시지를 전송하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 제2항에 있어서, 상기 제2 메모리 서브시스템이 상기 액세스 허가 요청 메시지에 응답하여 상기 제2 메모리의 자원의 용량에 여유가 있다고 판단하는 경우, 상기 제2 메모리 서브시스템은 상기 제1 메모리 서브시스템에 상기 제2 메모리의 자원에 대한 액세스 허가 메시지를 전송하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 제1항에 있어서, 상기 제1 프로세서의 데이터 읽기 명령에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리에 상기 데이터 읽기 명령에 대응되는 데이터가 존재하지 않는다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제2 메모리 서브시스템에 상기 제2 메모리의 데이터에 대한 액세스 허가 요청 메시지를 전송하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 제4항에 있어서, 상기 제2 메모리 서브시스템이 상기 액세스 허가 요청 메시지에 응답하여 상기 제2 메모리에 상기 데이터 읽기 명령에 대응되는 데이터가 존재한다고 판단하는 경우, 상기 제2 메모리 서브시스템은 상기 제1 메모리 서브시스템에 상기 제2 메모리의 데이터에 대한 액세스 허가 메시지를 전송하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 제1항에 있어서, 상기 제1 프로세서의 데이터 쓰기 명령에 응답하여 상기 제1 메모리 서브시스템에서 상기 제1 메모리에 상기 데이터 쓰기 명령의 실행이 불가능하다고 판단하는 경우, 상기 제1 메모리 서브시스템은 상기 제2 메모리 서브시스템에 상기 제2 메모리에 대한 액세스 허가 요청 메시지를 전송하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 제6항에 있어서, 상기 제2 메모리 서브시스템이 상기 액세스 허가 요청 메시지에 응답하여 상기 제2 메모리에 상기 데이터 쓰기 명령의 실행이 가능하다고 판단하는 경우, 상기 제2 메모리 서브시스템은 상기 제2 메모리에 상기 데이터 쓰기 명령을 실행하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 삭제
- 제1항에 있어서,
제6 메모리; 및
상기 제6 메모리의 자원을 파악 및 분배하고, 상기 제6 메모리의 데이터 전송을 제어하도록 구성된 제2 메모리 브리지 서브시스템
을 포함하는 제2 메모리 브리지 IC를 더 포함하고,
상기 제2 메모리 브리지 서브시스템은 상기 제1 메모리 브리지 서브시스템과 상기 메모리 버스를 통해 연결되어 통신가능하도록 구성되는 것인, 메모리 자원 공유 시스템.
- 삭제
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220055540A KR102572143B1 (ko) | 2022-05-04 | 2022-05-04 | 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 |
US18/143,177 US20240086313A1 (en) | 2022-05-04 | 2023-05-04 | Method of sharing memory resource for memory cloud and memory resource sharing system using the same |
KR1020230110957A KR102615319B1 (ko) | 2022-05-04 | 2023-08-24 | 대용량 메모리 자원 공유 방법 및 메모리 브리지 ic를 이용한 효율적인 메모리 자원 공유 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220055540A KR102572143B1 (ko) | 2022-05-04 | 2022-05-04 | 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230110957A Division KR102615319B1 (ko) | 2022-05-04 | 2023-08-24 | 대용량 메모리 자원 공유 방법 및 메모리 브리지 ic를 이용한 효율적인 메모리 자원 공유 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102572143B1 true KR102572143B1 (ko) | 2023-08-29 |
Family
ID=87802267
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220055540A KR102572143B1 (ko) | 2022-05-04 | 2022-05-04 | 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 |
KR1020230110957A KR102615319B1 (ko) | 2022-05-04 | 2023-08-24 | 대용량 메모리 자원 공유 방법 및 메모리 브리지 ic를 이용한 효율적인 메모리 자원 공유 시스템 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230110957A KR102615319B1 (ko) | 2022-05-04 | 2023-08-24 | 대용량 메모리 자원 공유 방법 및 메모리 브리지 ic를 이용한 효율적인 메모리 자원 공유 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240086313A1 (ko) |
KR (2) | KR102572143B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170035797A (ko) | 2015-09-11 | 2017-03-31 | 삼성전자주식회사 | 분산 이종 컴퓨터 시스템에서의 최적화된 잡 성능을 위한 동적 자원 재할당 |
KR20200057397A (ko) * | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
KR20210132348A (ko) * | 2020-04-27 | 2021-11-04 | 한국전자통신연구원 | 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678798B1 (en) * | 2000-07-20 | 2004-01-13 | Silicon Graphics, Inc. | System and method for reducing memory latency during read requests |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US10162757B2 (en) * | 2016-12-06 | 2018-12-25 | Advanced Micro Devices, Inc. | Proactive cache coherence |
JP2024509954A (ja) * | 2021-03-12 | 2024-03-05 | 華為技術有限公司 | メモリ共有制御方法及びデバイス、コンピュータデバイス、並びにシステム |
US20230289242A1 (en) * | 2022-03-10 | 2023-09-14 | Nvidia Corporation | Hardware accelerated synchronization with asynchronous transaction support |
US12020035B2 (en) * | 2022-03-10 | 2024-06-25 | Nvidia Corporation | Programmatically controlled data multicasting across multiple compute engines |
-
2022
- 2022-05-04 KR KR1020220055540A patent/KR102572143B1/ko active IP Right Grant
-
2023
- 2023-05-04 US US18/143,177 patent/US20240086313A1/en active Pending
- 2023-08-24 KR KR1020230110957A patent/KR102615319B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170035797A (ko) | 2015-09-11 | 2017-03-31 | 삼성전자주식회사 | 분산 이종 컴퓨터 시스템에서의 최적화된 잡 성능을 위한 동적 자원 재할당 |
KR20200057397A (ko) * | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
KR20210132348A (ko) * | 2020-04-27 | 2021-11-04 | 한국전자통신연구원 | 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법 |
Non-Patent Citations (2)
Title |
---|
한국공개특허 제10-2020-0057397호(2020.05.26.) 1부.* |
한국공개특허 제10-2021-0132348호(2021.11.04.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
KR102615319B1 (ko) | 2023-12-19 |
KR20230155996A (ko) | 2023-11-13 |
US20240086313A1 (en) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11025544B2 (en) | Network interface for data transport in heterogeneous computing environments | |
CN115543204A (zh) | 用于针对加速器板提供共享存储器的技术 | |
US20150261698A1 (en) | Memory system, memory module, memory module access method, and computer system | |
US20130151747A1 (en) | Co-processing acceleration method, apparatus, and system | |
US10346342B1 (en) | Uniform memory access architecture | |
US9946664B2 (en) | Socket interposer having a multi-modal I/O interface | |
JP6514329B2 (ja) | メモリアクセス方法、スイッチ、およびマルチプロセッサシステム | |
US20210120077A1 (en) | Multi-tenant isolated data regions for collaborative platform architectures | |
US20230350825A1 (en) | Communications for field programmable gate array device | |
CN117493237A (zh) | 计算设备、服务器、数据处理方法和存储介质 | |
EP4002139A2 (en) | Memory expander, host device using memory expander, and operation method of server system including memory expander | |
EP2979193B1 (en) | Shared memory system | |
US20190042240A1 (en) | System, Apparatus And Method For Providing A Fabric For An Accelerator | |
KR102572143B1 (ko) | 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템 | |
EP4198728A1 (en) | Method and apparatus to perform workload management in a disaggregated computing system | |
CN112506824B (zh) | 一种芯片和数据交互方法 | |
CN114661654A (zh) | 访问处理装置和方法、处理设备、电子设备和存储介质 | |
Kim et al. | Memory Network: Enabling Technology for Scalable Near-Data Computing | |
US20240069755A1 (en) | Computer system, memory expansion device and method for use in computer system | |
US9489136B2 (en) | Interrupt driven memory signaling | |
KR101846726B1 (ko) | 프로세서간의 통신을 지원하는 시스템 반도체 mmr 칩 | |
KR20240097424A (ko) | 메모리 장치 및 이의 스케줄링 방법 | |
KR20230107086A (ko) | 캐시-일관성을 위한 장치 및 방법 | |
CN116795742A (zh) | 存储设备、信息存储方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
N231 | Notification of change of applicant | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |