KR102573085B1 - 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법 - Google Patents

전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법 Download PDF

Info

Publication number
KR102573085B1
KR102573085B1 KR1020230060648A KR20230060648A KR102573085B1 KR 102573085 B1 KR102573085 B1 KR 102573085B1 KR 1020230060648 A KR1020230060648 A KR 1020230060648A KR 20230060648 A KR20230060648 A KR 20230060648A KR 102573085 B1 KR102573085 B1 KR 102573085B1
Authority
KR
South Korea
Prior art keywords
information
memory
data
access
host processor
Prior art date
Application number
KR1020230060648A
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 KR1020230060648A priority Critical patent/KR102573085B1/ko
Application granted granted Critical
Publication of KR102573085B1 publication Critical patent/KR102573085B1/ko

Links

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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 개시의 한 측면으로서, 전자 장치가 개시된다. 상기 장치는, 호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하고, 상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하도록 더 구성될 수 있다.

Description

전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법{ELECTRONIC DEVICE, COMPUTING SYSTEM INCLUDING SAME, AND MEMORY ACCESS MONITORING METHOD THEREOF}
본 개시는 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법에 관한 것이다.
기존의 운영체제(OS)의 메모리 관리자는 DIMM(dual in-line memory module) 슬롯에 적재되는 메모리를 기준으로 관리하였고, 메모리가 부족한 경우에는 디스크 스왑이 발생하는 비교적 간단한 구조를 가졌다. 리눅스 등 운영체제 커널의 메모리 매니저(MM)는 주로 4 KB 크기의 페이지 단위로 메모리를 추적 관리하여 최근 접근 빈도 등의 정보를 수집하였다.
최근, 예를 들어, CXL 인터페이스와 같은 새로운 인터페이스를 통해 새로운 메모리 계층이 추가되었다. CXL에서는 스위치 사용, 리타이머 사용, 각기 다른 동작 특성을 갖는 미디어(DRAM, NVRAM, Flash 등) 및 미디어 컨트롤러가 혼재될 수 있기 때문에, 다양한 용량, 지연 및 대역폭 특성을 가지게 된다. 여러 계층에 걸쳐서 다수의 장치에 탑재된 대용량 메모리를 관리하면서, 빠른 접근이 필요한 데이터(hot data)는 더 빠른 장치로 프로모션하고, 빠른 접근이 필요하지 않은 데이터(cold data)는 더 느린 장치로 디모션하는 등 세밀한 관리가 필요하였다.
페이지 단위의 관리를 위한 자료구조의 크기, 대용량 메모리 모니터링을 위한 CPU 자원 소모 등의 문제로 인하여, 기존 시스템처럼 단일 특성을 가지는 수백 GB 정도의 메모리를 관리하기 위한 커널 MM 구조로는 관리에 한계가 있다. 예를 들어, 4 TB 메모리를 4 KB단위로 관리하려면, 그에 필요한 자료구조만 1 G개가 필요한데, 이 자료구조에 저장하는 데이터 양에 따라서 수십 내지 수백 GB를 차지하게 된다. 또한, 전체 페이지 접근 정보를 순회하면서 다양한 정보를 수집하고 갱신하려면 그에 필요한 CPU 사이클 역시 매우 커진다. 따라서, 전 영역을 대상으로 하기 보다는 좁은 관심 영역에만 집중하거나 주기적으로 샘플링된 일부 페이지만 검사하고, 다양한 정보를 수집하여 활용하기보다는 검사 주기 내에 접근이 있었는지 여부 등의 간단하고 제한적인 메트릭만을 사용할 수밖에 없다.
또한, CPU에 직접 연결된 DRAM에 대해서도 간단한 추적 방법을 사용할 수밖에 없는 상황에서, CXL에 의해서 확장된 메모리의 접근 추적을 위해서 비싼 CPU 및 CPU에 직접 연결된 DRAM 자원을 사용하는 것은 매우 비현실적이라는 한계가 있다.
본 개시는 메모리 장치에서 자체적으로 CPU의 접근을 모니터링하는 장치와 그 구조를 제공하는 것을 기술적 과제로 한다.
본 개시는 호스트의 접근에 관한 모니터링 결과를 가공하여 CPU에 전달함으로써 CPU의 부담을 줄이면서 운영체제나 하이퍼바이저의 판단을 돕기 위한 솔루션을 제공하는 것을 기술적 과제로 한다.
본 개시는 여러 계층에 걸쳐서 다수의 장치에 탑재된 대용량 메모리를 관리할 수 있는 솔루션을 제공하는 것을 기술적 과제로 한다.
본 개시는 빠른 접근이 필요한 데이터를 더 빠른 장치로 프로모션하고, 빠른 접근이 필요하지 않은 데이터를 더 느린 장치로 디모션하게 함으로써 효율적인 메모리 관리를 가능하게 하는 것을 기술적 과제로 한다.
본 개시는 메모리 장치 내부에서 메모리 접근을 효과적으로 모니터링하고 트래킹함으로써 CPU 부담을 최소화하면서도 정확한 티어링 정보를 제공함으로써, 전체 시스템 성능을 향상시키고, 메모리 자원을 사용하는 효율을 높여 총 소요 비용(TCO)을 절감하는 것을 기술적 과제로 한다.
본 개시는 장치, 시스템, 방법 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 한 측면으로서, 메모리 접근을 모니터링하기 위한 전자 장치가 개시된다. 상기 장치는, 호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하고, 상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하도록 더 구성될 수 있다.
본 개시의 다른 일 측면에 따르면, 컴퓨팅 시스템이 개시된다. 상기 컴퓨팅 시스템은, 호스트 프로세서; 및 전자 장치를 포함하고, 상기 전자 장치는, 상기 호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하고, 상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하도록 더 구성될 수 있다.
본 개시의 다른 일 측면에 따르면, 호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러를 포함한 전자 장치의 메모리 접근 모니터링 방법이 개시된다. 상기 방법은, 상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하는 단계; 및 상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하는 단계를 포함할 수 있다.
본 개시의 다양한 실시예들에 의하면, 자체적으로 메모리에 대한 호스트 프로세서의 접근을 모니터링할 수 있는 장치와 그 구조를 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 호스트 프로세서의 접근에 관한 모니터링 결과를 가공하여 호스트 프로세서에 전달함으로써 호스트 프로세서의 부담을 줄이면서 운영체제나 하이퍼바이저의 판단을 돕기 위한 솔루션을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 여러 계층에 걸쳐서 다수의 장치에 탑재된 대용량 메모리를 관리할 수 있는 솔루션을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 빠른 접근이 필요한 데이터를 더 빠른 장치로 프로모션하게 하고 빠른 접근이 필요하지 않은 데이터를 더 느린 장치로 디모션하게 함으로써 효율적인 메모리 관리를 가능하게 한다.
본 개시는 전자 장치가 호스트 프로세서에 의한 메모리 접근을 효과적으로 모니터링하고 트래킹함으로써 호스트 프로세서의 부담을 최소화하면서도 정확한 티어링 정보를 제공함으로써, 전체 시스템 성능을 향상시키고, 메모리 자원을 사용하는 효율을 높여 총 소요 비용(TCO)을 절감할 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템을 개념적으로 도시한 예시도이다.
도 2는 본 개시의 일 실시예에 따른 컴퓨팅 시스템과 관련된 다양한 메모리의 특성을 도시한 예시도이다
도 3은 본 개시의 일 실시예에 따른 전자 장치의 블록도이다.
도 4는 본 개시의 일 실시예에 따라 컨트롤러의 구성에 의해 메모리 접근 모니터링 프로세스가 처리되는 과정을 나타낸 도면이다.
도 5는 본 개시의 일 실시예에 따른 복수의 데이터 단위에 대한 자료구조를 도시한 도면이다.
도 6은 본 개시의 일 실시예에 따라 복수의 데이터 단위의 자료구조가 갱신되는 것을 나타낸 도면이다.
도 7은 본 개시의 일 실시예에 따라 컨트롤러가 메모리 접근 모니터링 프로세스를 처리하는 동작에 관한 순서도이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 명세서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 명세서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 명세서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 명세서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 명세서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템(100)을 개념적으로 도시한 예시도이다. 또한, 도 2는 본 개시의 일 실시예에 따른 컴퓨팅 시스템(100)과 관련된 다양한 메모리의 특성을 도시한 예시도이다.
본 개시에 따른 컴퓨팅 시스템(100)은 데이터센터에서 사용될 수 있는 스토리지 서버 또는 다른 종류의 서버일 수 있다. 도 1에 도시된 바와 같이, 컴퓨팅 시스템(100)은 호스트 프로세서(110)(예: x86 CPU, ARM, RISC-V) 및 전자 장치(200)를 포함할 수 있다. 호스트 프로세서(110)는 호스트 캐시 메모리(112)를 포함할 수 있다.
호스트 프로세서(110)는 하나 또는 그 이상의 프로세서의 집합을 의미할 수 있다. 호스트 프로세서(110)는 소프트웨어(예: 명령, 프로그램 등)를 구동하여 호스트 프로세서(110)와 연결된 장치 또는 단말(예: 전자 장치(200))의 적어도 하나의 구성요소를 제어할 수 있다. 또한, 호스트 프로세서(110)는 다양한 연산, 처리, 데이터 생성 또는 가공 등의 동작을 수행할 수 있다. 또한, 호스트 프로세서(110)는 데이터 등을 각종 메모리로부터 로드하거나 메모리에 저장할 수 있다.
컴퓨팅 시스템(100)은 다양한 메모리를 포함할 수 있다. 컴퓨팅 시스템에는 호스트 DRAM(120), CXL DRAM(130), CXL SCM(140), 및 스토리지(150)이 포함될 수 있다. 호스트 프로세서(110)는 호스트 DRAM(120), CXL DRAM(130), CXL SCM(140), 및 스토리지(150)에 접근 가능하다. CXL DRAM(130)은 CXL 인터페이스를 사용하는 휘발성 메모리인 DRAM을 지칭하고, 높은 대역폭과 저지연성을 제공하여 대용량 메모리에 대한 접근 시간을 줄여주며, 메모리 처리량을 증가시켜 성능 향상을 도모하는 장치이다. CXL SCM(140)은 CXL 인터페이스를 사용하는 스토리지 클래스 메모리(storage class memory)로서 Flash Memory, PCRAM, MRAM, ReRAM 등의 비휘발성 메모리를 사용한 메모리 장치를 지칭할 수 있다. CXL SCM(140)은 CXL DRAM(130)에 비해 용량이 크지만 지연성능이 떨어지기 때문에 CXL DRAM(130)보다 낮은 티어로 사용될 수 있다.
일 실시예에 의하면, 호스트 DRAM(120)의 지연시간은 약 100 ns 수준이며 최대 설치 가능한 용량은 수 TB 수준이다. CXL DRAM(130)의 지연시간은 약 300 ns 수준이며 최대 설치 가능한 용량은 수십 TB 수준이다. CXL SCM(140)의 지연시간은 약 1 us 수준이며 최대 설치 가능한 용량은 수백 TB 수준이다. 스토리지(150)의 지연시간은 약 50 us 수준이며 최대 설치 가능한 용량은 수 PB 수준이다. 호스트 DRAM(120)에서 스토리지(150)로 갈수록 지연시간이 길어지고, 최대 설치 가능한 용량은 늘어나는 경향이 있다.
본 개시에 따른 호스트 프로세서(110)는 다양한 메모리에 저장된 데이터를 모니터링할 수 있다. 모니터링 결과에 따라, 호스트 프로세서(110)는 접근 가능성이 높은 데이터(핫 데이터)를 더 빠른 메모리로 프로모션할 수 있다. 예를 들어, 호스트 프로세서(110)는 CXL DRAM(130)에 저장된 특정 데이터를 호스트 DRAM(120)으로 프로모션할 수 있다. 또한, 모니터링 결과에 따라, 호스트 프로세서(110)는 접근 가능성이 낮은 데이터(콜드 데이터)를 더 느린 메모리로 디모션할 수 있다. 예를 들어, 호스트 프로세서(110)는 CXL DRAM(130)에 저장된 특정 데이터를 CXL SCM(140)으로 디모션할 수 있다.
본 개시에 따르면, 호스트 프로세서(110)에 의해 실행되는 모니터링 프로세스 중 일부가 CXL DRAM(130) 및 CXL SCM(140)과 관계된 전자 장치(200)에 의해 실행될 수 있다(분산 모니터링). 전자 장치(200)는 자체적으로 CXL DRAM(130) 및 CXL SCM(140)에 저장된 데이터에 대한 모니터링을 실행하고, 모니터링 결과를 적절히 가공한 후에 호스트 프로세서(110)에 전달할 수 있다. 이러한 특징적 구성에 의해, 호스트 프로세서(110)의 모니터링에 따른 리소스 부담을 줄이면서, 운영체제나 하이퍼바이저의 판단을 도울 수 있다.
도 3은 본 개시의 일 실시예에 따른 전자 장치(200)의 블록도이다.
도 3에 도시된 바와 같이, 전자 장치(200)는 컨트롤러(300)를 포함할 수 있다. 컨트롤러(300)는 모니터링부(310), 자료구조 관리부(330) 및 호스트 보고부(340)를 포함할 수 있다. 또한, 본 개시에 따른 전자 장치(200)는 스눕 필터(320), 메모리 컨트롤러(350), 캐시 메모리(360) 및 통신 포트(370)를 더 포함할 수 있다.
호스트 프로세서(110)는 전자 장치(200)와 통신 인터페이스(380)를 이용하여 통신할 수 있다. 통신 인터페이스(380)는 직렬 인터페이스(serial interface)일 수 있고, 예를 들어, PCIe 혹은 CXL(compute express link) 프로토콜을 이용한 인터페이스일 수 있다. 통신 인터페이스(380)는 바이트 어드레서블 프로토콜(또는 바이트 어드레싱 프로토콜)일 수 있다. 호스트 프로세서(110)는 전자 장치(200)에 대하여 바이트 단위로 주소를 지정하여 데이터를 읽고 쓸 수 있다.
본 개시에 따른 전자 장치(200)는 호스트 프로세서(110)로부터 데이터 접근과 관련된 명령 또는 요청을 수신할 수 있다. 해당 명령은 데이터 읽기 또는 쓰기에 대한 명령일 수 있으며, 통신 포트(370)를 통해 전달될 수 있다. 통신 포트(370)는 PCIe 엔드 포인트이거나 CXL 엔드 포인트(CXL End Point)일 수 있다. 전자 장치(200)는 메모리(390)에 저장된 복수의 데이터 단위에 대하여 호스트 프로세서(110)의 접근 가능성을 판단할 수 있다. 본 개시에서 '메모리(390)'는 호스트 프로세서(110)가 전자 장치(200)를 통해 인식할 수 있는 메모리 용량에 관계된 모든 장치를 지칭할 수 있다. 일 실시예에 의하면, 메모리(390)는 휘발성 메모리인 DRAM과 비휘발성 메모리인 Flash Memory, PCRAM, MRAM, ReRAM 등을 포함할 수 있으며, 도 1에 도시된 CXL DRAM(130) 및 CXL SCM(140)를 포함할 수 있다.
또한, 본 개시에서 '데이터 단위'라는 용어는 소정의 크기를 갖는 데이터 단위를 지칭할 수 있다. 일 예로서, 데이터 단위는 페이지(page)를 지칭할 수 있다. 또한, 4 KB의 페이지, 8 KB의 페이지, 32 KB의 페이지, 256 KB의 페이지, 2 MB의 페이지, 16 MB의 페이지가 각각 하나의 데이터 단위로 간주될 수 있다.
컨트롤러(300)는 복수의 데이터 단위 각각에 대하여 호스트 프로세서(110)의 접근 가능성을 판단할 수 있다. 예를 들어, 컨트롤러(300)는 어느 한 데이터 단위가 호스트 프로세서(110)의 접근 가능성이 높다고 판단하고, 다른 특정 데이터 단위가 호스트 프로세서(110)의 접근 가능성이 낮다고 판단할 수 있다. 다른 예로서, 컨트롤러(300)는 메모리(390)에 저장된 복수의 메모리 영역에 대하여 호스트 프로세서(110)의 접근 가능성을 판단할 수 있다. 예를 들어, 컨트롤러(300)는 특정 메모리 영역이 호스트 프로세서(110)의 접근 가능성이 높다고 판단하고, 다른 특정 메모리 영역이 호스트 프로세서(110)의 접근 가능성이 낮다고 판단할 수 있다.
본 개시에 따른 컨트롤러(300)는 호스트 프로세서(110)의 접근 가능성을 판단하기 위해 다양한 정보를 이용할 수 있다. 일 실시예에 의하면, 컨트롤러(300)는 호스트 프로세서(110)의 접근 정보를 이용할 수 있다. 접근 정보는 메모리(390)에 대한 호스트 프로세서(110)의 접근을 지시하는 정보일 수 있다. 컨트롤러(300)는 호스트 프로세서(110)로부터 메모리 접근 명령을 샘플링하여 접근 정보를 수집할 수 있다.
일 실시예에 의하면, 컨트롤러(300)는 호스트 프로세서(110)의 접근 가능성을 판단하기 위해 호스트 캐싱 정보를 이용할 수 있다. 호스트 캐싱 정보는 메모리(390)에 저장된 데이터가 호스트 캐시 메모리(112)에 캐싱되어 있는 상태를 지시하는 정보일 수 있다. 컨트롤러(300)는 호스트 캐싱 정보를 저장하는 스눕 필터(320)로부터 호스트 캐싱 정보를 수집할 수 있다.
일 실시예에 의하면, 컨트롤러(300)는 호스트 프로세서(110)의 접근 가능성을 판단하기 위해 장치 캐싱 정보를 이용할 수 있다. 장치 캐싱 정보는 메모리(390)에 저장된 데이터가 전자 장치(200)의 캐시 메모리(360)에 캐싱되어 있는 상태를 지시하는 정보일 수 있다. 캐시 메모리(360)는 접근한 적이 있거나 접근이 예상되는 데이터를 저장하도록 구성될 수 있다.
본 개시에 따른 컨트롤러(300)는 상기 다양한 정보를 이용하여 메모리(390)에 저장된 복수의 데이터 단위 각각에 대한 호스트 프로세서(110)의 접근 가능성을 지시하는 티어링 정보를 산출(또는 결정, 생성)할 수 있다. 티어링 정보의 산출을 위해, 컨트롤러(300)는 접근 정보, 호스트 캐싱 정보 및 장치 캐싱 정보 중 어느 하나 또는 둘 이상의 조합을 이용할 수 있다. 티어링 정보는 메모리(390)에 저장된 복수의 데이터 단위 각각에 부여될 수 있는 정보일 수 있다. 티어링 정보는 메모리(390)의 전체 어드레스 공간 또는 전체 어드레스 공간에 포함된 전체 데이터 단위에 대해 점수, 레벨, 히스토그램, 또는 그 밖에 다른 지표에 따른 값으로 나타낸 것일 수 있다.
다양한 실시예에 의하면, 컨트롤러(300)는 티어링 정보를 주기적 또는 비주기적으로 갱신할 수 있다. 일 실시예에 의하면, 컨트롤러(300)는 주기적 또는 비주기적으로 접근 정보, 호스트 캐싱 정보 및 장치 캐싱 정보 중 적어도 어느 하나를 수집하고, 수집된 정보를 기초로 복수의 데이터 단위 각각에 대한 티어링 정보를 갱신할 수 있다. 또한, 컨트롤러(300)는 주기적 또는 비주기적으로 복수의 데이터 단위에 대한 티어링 정보를 조정할 수 있다. 일 실시예에 의하면, 컨트롤러(300)는 주기적 또는 비주기적으로 복수의 데이터 단위에 대한 티어링 정보를 일괄 하향 조정할 수 있다.
컨트롤러(300)는 티어링 정보를 호스트 프로세서(110)로 전달할 수 있다. 호스트 프로세서(110)는 컨트롤러(300)에 접근 가능성이 높은 데이터 단위에 대한 정보를 요청할 수 있고, 컨트롤러(300)는 이러한 요청에 응답하여 호스트 프로세서(110)로 티어링 정보를 전달할 수 있다. 호스트 프로세서(110)는 티어링 정보에 기초하여 특정 데이터 단위를 다른 장치로 가져올 수 있다. 예를 들어, 호스트 프로세서(110)는 접근 가능성이 높은 데이터 단위를 호스트 DRAM(120) 또는 호스트 캐시 메모리(112)로 가져올 수 있다.
메모리 컨트롤러(350)는 캐시 메모리(360)와 연결될 수 있다. 메모리 컨트롤러(350)는 메모리(390)에 접근하여 데이터 읽기 또는 쓰기가 가능하도록 구성될 수 있다.
도 3에 도시된 모니터링부(310), 스눕 필터(320), 자료구조 관리부(330), 호스트 보고부(340) 및 메모리 컨트롤러(350)는 각각 하드웨어 장치 혹은 소프트웨어 코드로 구현될 수 있다. 일 실시예에 의하면, 스눕 필터(320)는 하드웨어 장치로 구현되고, 그 외 구성은 소프트웨어 코드로 구현될 수 있다. 또한, 도 3은 컨트롤러(300)의 구성들을 예시적으로 나타낸 것이며, 본 개시는 이에 한정되지 않는다. 예를 들어, 도 3에 도시된 구성들 중 일부 구성이 생략되거나 특정 구성의 기능이 다른 구성에 포함되도록 구현될 수 있다. 또한, 도 3에서는 컨트롤러(300)가 모니터링부(310), 자료구조 관리부(330) 및 호스트 보고부(340)를 포함하는 것으로 도시되었으나, 본 개시는 이에 한정되지 않는다. 예를 들어, 컨트롤러(300)는 스눕 필터(320), 메모리 컨트롤러(350), 캐시 메모리(360) 및 통신 포트(370) 중 적어도 일부를 더 포함하도록 구성될 수 있다.
도 4는 본 개시의 일 실시예에 따라 컨트롤러(300)의 구성에 의해 메모리 접근 모니터링 프로세스가 처리되는 과정을 나타낸 도면이다.
본 개시에 따른 모니터링부(310)는 접근 정보, 호스트 캐싱 정보 및 장치 캐싱 정보 중 적어도 하나를 포함한 티어링 정보의 산출에 근거가 되는 모니터링 정보를 수집할 수 있다. 또한, 모니터링부(310)는 다양한 모니터링 소스(400)로부터 모니터링 정보를 수집할 수 있다. 모니터링부(310)는 메모리 접근 명령으로부터 접근 정보를 수집할 수 있다. 컨트롤러(300)는 CXL 프로토콜을 이용하여 통신하는 호스트 프로세서(110)로부터 CXL 프로토콜에 따른 메모리 접근 명령을 수신할 수 있다. 메모리 접근 명령은 CXL 상의 '.cache/.mem command'일 수 있다. 컨트롤러(300)는 메모리 접근 명령을 기설정된 시간 간격(예: 1 ms)에 따라 샘플링하여 넓은 어드레스 범위에 대한 접근 정보를 수집할 수 있다. 이를 위해, 모니터링부(310)는 메모리 접근 명령을 샘플링하는 회로를 포함할 수 있다.
모니터링부(310)는 스눕 필터(320)로부터 호스트 캐싱 정보를 수집할 수 있다. 스눕 필터(320)는 메모리(390)에 저장된 데이터가 호스트 캐시 메모리(112)에 캐싱되어 있는 상태를 지시하는 호스트 캐싱 정보를 저장할 수 있다. 호스트 캐싱 정보는 메모리(390)의 특정 어드레스에 저장된 데이터가 호스트 캐시 메모리(112)에 등록되는 시점 및 호스트 캐시 메모리(112)로부터 제거되는 시점을 포함할 수 있다.
모니터링부(310)는 캐시 메모리(360)로부터 장치 캐싱 정보를 수집할 수 있다. 캐시 메모리(360)는 접근한 적이 있거나 접근이 예상되는 데이터를 저장하도록 구성된다. 캐시 메모리(360)를 이용하여 메모리(390)에 저장된 데이터에 대한 접근을 더 빠르게 할 수 있다. 모니터링부(310)에 의해 수집된 장치 캐싱 정보는 메모리(390)에 저장된 데이터가 캐시 메모리(360)에 캐싱되어 있는 상태를 지시할 수 있다. 일 실시예에 의하면, 장치 캐싱 정보는 캐시 히트 정보, 캐시 미스 정보 및 캐시 선인출(cache prefetch)를 위한 접근 패턴 정보를 포함할 수 있다.
일 실시예에 의하면, 메모리 접근 명령은 메모리(390)의 전 영역에 대해서 발생할 수 있는 반면, 호스트 캐싱 정보는 호스트 캐시 메모리(112)의 사이즈만큼만 정보가 등록될 수 있다. 이 때문에, 호스트 캐싱 정보에 대해서는, 모니터링 범위가 접근 정보에 대한 모니터링 범위보다 좁은 반면 더 자세한 정보를 추적하는 것이 가능하다. 다시 말해, 호스트 캐싱 정보를 이용하는 것이 접근 정보를 이용하는 것보다 정보의 집중도 측면에서 유리한 점이 있다.
본 개시에 따른 자료구조 관리부(330)는 메모리(390)에 저장된 복수의 데이터 단위 각각에 대한 티어링 정보를 관리할 수 있다. 일 실시예에 의하면, 자료구조 관리부(330)는 복수의 데이터 단위 각각에 대한 티어링 정보를 생성하고, 갱신하고, 조정하고, 가공할 수 있다. 자료구조 관리부(330)는 모니터링부(310)에 의해 수집된 접근 정보, 호스트 캐싱 정보 및 장치 캐싱 정보 중 적어도 일부에 기초하여 티어링 정보를 산출할 수 있다. 예를 들어, 자료구조 관리부(330)는 접근 정보에 기초하여 티어링 정보를 산출할 수도 있고, 접근 정보 및 호스트 캐싱 정보에 기초하여 티어링 정보를 산출할 수도 있고, 접근 정보 및 장치 캐싱 정보에 기초하여 티어링 정보를 산출할 수도 있고, 접근 정보, 호스트 캐싱 정보 및 장치 캐싱 정보에 기초하여 티어링 정보를 산출할 수도 있으며, 다른 조합도 가능하다.
자료구조 관리부(330)는 접근 정보에 기초하여 메모리(390)의 특정 어드레스에 대한 접근 빈도를 산출할 수 있다. 일 예로서, 자료구조 관리부(330)는 메모리(390)의 특정 어드레스에 대한 접근 정보를 일정 시간 간격으로 누적하여 소정의 데이터 단위(예: 페이지)의 접근 빈도(F)를 산출할 수 있다. 예를 들어, 접근 빈도(F)는 50 회/ms와 같은 값을 가질 수 있다. 또한, 자료구조 관리부(330)는 접근 빈도(F)에 기초하여 복수의 데이터 단위 중 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출할 수 있다. 접근 빈도(F)가 높은 데이터 또는 접근 빈도(F)가 시간이 갈수록 높아지는 추세에 있는 데이터 단위는 그렇지 않은 데이터 단위에 비해 호스트 프로세서(110)의 접근 가능성이 상대적으로 높은 데이터를 의미할 수 있다.
다른 예로서, 자료구조 관리부(330)는 메모리(390)의 특정 어드레스에 대한 접근 정보를 분석하여 소정의 데이터 단위에 대한 쓰기 비율(W)을 산출할 수 있다. 예를 들어, 특정 데이터 단위에 대한 읽기와 쓰기 비율(W)이 70:30이라면 쓰기 비율(W)은 30일 수 있다. 자료구조 관리부(330)는 쓰기 비율(W)에 기초하여 복수의 데이터 단위 중 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출할 수 있다. 쓰기 비율(W)이 높은 데이터 또는 쓰기 비율(W) 시간이 갈수록 높아지는 추세에 있는 데이터는 그렇지 않은 데이터에 비해 데이터 쓰기에 유리한 미디어에서의 활용성이 상대적으로 높은 데이터를 의미할 수 있다.
자료구조 관리부(330)는 호스트 캐싱 정보에 기초하여 메모리(390)의 특정 어드레스에 저장된 데이터가 호스트 캐시 메모리(112)에 존재하는 지속 시간 및 호스트 캐시 메모리(112)로부터 제거된 후 다시 등록될 때가지의 재등록 시간 중 적어도 하나를 산출할 수 있다. 자료구조 관리부(330)는 이러한 지속 시간 및 재등록 시간 중 적어도 하나에 기초하여 호스트 프로세서(110)가 특정 데이터 단위를 필요로 하는 정도를 지시하는 접근 강도(I)를 산출할 수 있다. 또한, 자료구조 관리부(330)는 접근 강도(I)에 기초하여 복수의 데이터 단위 중 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출할 수 있다. 접근 강도(I)가 높은 데이터 또는 접근 강도(I)가 시간이 갈수록 높아지는 추세에 있는 데이터는 그렇지 않은 데이터에 비해 호스트 프로세서(110)의 접근 가능성이 상대적으로 높은 데이터를 의미할 수 있다. 예를 들어, 호스트 캐시 메모리(112)에 등록되었으나 짧은 시간만 쓰인 다음 곧바로 제거되고 다시 요청되는 주기가 긴 데이터 단위에 비해, 한번 호스트 캐시 메모리(112)에 등록되면 오랫동안 쓰이고 제거되더라도 곧바로 다시 등록 요청되는 데이터 단위가 호스트 프로세서(110)의 접근 가능성이 상대적으로 높은 데이터일 수 있다.
일 실시예에 의하면, 자료구조 관리부(330)는 지속 시간이 길수록 데이터 단위의 접근 강도(I)를 높게 산출하고, 재등록 시간이 길수록 데이터 단위의 접근 강도(I)를 낮게 산출할 수 있다. 그러나, 호스트 프로세서(110)의 유휴(idle) 등에 의해 지속 시간이 지나치게 길어질 수 있다. 이에 따라, 일 실시예에 따른 자료구조 관리부(330)는 지속 시간에 따라 부여되는 접근 강도(I)의 최대 점수를 제한할 수 있다. 또한, 재등록 시간이 지속 시간에 비해 매우 클 수 있으므로, 일정 값 이상이 되었을 때 대부분 0에 수렴될 수 있다. 이를 방지하기 위해, 일 실시예에 따른 자료구조 관리부(330)는 재등록 시간에 대해 log 등의 스케일링 함수를 적용할 수 있다. 예를 들어, 접근 강도(I)는 다음의 식 또는 그 변형으로 나타낼 수 있다.
I = Min[Cache Hold Time / Log(Cache-to-Cache Time) , 100]
자료구조 관리부(330)는 장치 캐싱 정보에 기초하여 메모리(390)의 특정 어드레스에 대한 접근 그룹(G) 및 지역성 이익(locality benefit, L) 중 적어도 하나를 산출할 수 있다. 일 실시예에 의하면, 자료구조 관리부(330)는 장치 캐싱 정보에 기초하여 접근 패턴, 워킹 세트 등을 추정하고 이를 그룹화하여 접근 그룹(G) 및 지역성 이익(L)을 얻을 수 있다. 또한, 자료구조 관리부(330)는 접근 그룹(G) 및 지역성 이익(L) 중 적어도 하나에 기초하여 복수의 데이터 단위 중 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출할 수 있다. 이러한 특징적 구성에 의해, 캐시 메모리(360)에서 접근 패턴이 일정하고 지역성이 높아서 인접한 데이터 단위와 함께 접근될 가능성이 높은 데이터 단위를 함께 그리고 미리 더 빠른 장치로 프로모션할 수 있다. 그 결과, 데이터 단위의 교체를 위한 오버헤드를 줄이면서 더 높은 성능 및 더 높은 서비스 품질(QoS)을 얻을 수 있다.
자료구조 관리부(330)는 인접한 데이터 단위가 일정 시간 주기 안에 높은 히트율(hit ratio)을 보이는 것으로 추정되는 데이터 단위들이 있을 경우에 추가 점수가 부여되도록 접근 그룹(G)을 산출할 수 있다. 예를 들어, 1 내지 3번 페이지가 하나의 주기 내에 높은 캐시 히트율(예: 80% 이상)을 나타낸 경우, 해당 페이지들의 그룹은 함께 접근될 가능성이 높다고 판단될 수 있다. 이에, 자료구조 관리부(330)는 해당 페이지들의 접근 그룹(G)에 모두 +3점을 부여할 수 있다. 여기서, 3개의 페이지가 연관되어 있어 3점을 부여하였으나, 조정이 필요할 수 있다. 지역성 이익(L)은 캐시 히트율에 따라 부여되는 점수일 수 있다. 예를 들어, 캐시 히트율이 80%라면, 자료구조 관리부(330)는 지역성 이익(L)을 80으로 산출할 수 있다.
모니터링부(310)에는 서로 다른 모니터링 정보의 수집을 위해 별도의 하드웨어 장치 혹은 소프트웨어 장치가 각각 혹은 별도로 구현될 수 있다. 모니터링부(310)는 주기적으로 혹은 비주기적으로 정보를 수집할 수 있다. 예를 들어, 모니터링부(310)는 메모리(390)의 특정 어드레스에 저장된 데이터가 호스트 캐시 메모리(112)에 등록되는 이벤트가 발생하거나 호스트 캐시 메모리(112)로부터 제거되는 이벤트가 발생할 경우, 해당 호스트 캐싱 정보를 스눕 필터(320)로부터 수집할 수 있다.
자료구조 관리부(320)는 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L)을 산출하기 위한 다양한 알고리즘을 실행할 수 있다. 예를 들어, 접근 빈도(F)와 관련하여, 자료구조 관리부(320)는 이전 접근 정보를 포함하는 이동 평균을 구하거나, 시간적 변화량을 구하거나, 함께 접근되었을 것으로 예상되는 인접한 데이터 단위들을 찾아서 클러스터링하는 등의 처리를 실행할 수 있다. 또한, 자료구조 관리부(320)는 수집된 정보의 종류에 따라서 각기 다른 알고리즘을 적용하거나, 정교한 프로세싱을 위해 하나의 메트릭 또는 정보만 사용하는 것이 아니라 여러 메트릭 또는 정보를 함께 사용될 수도 있다.
본 개시에 따른 자료구조 관리부(320)는 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L) 중 적어도 하나에 기초하여 특정 데이터 단위에 대한 데이터 온도(T)를 추정할 수 있다. 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L)에 해당하는 가중치(weight) 값은 WF, WW, WI, WG, WL 로 각각 정의될 수 있다. 이러한 가중치 값들은 사전에 정의된 값이거나, 컴퓨팅 시스템(100)의 요구사항 및 응용 프로그램에 맞게 조정된 값이 호스트 프로세서(110)의 운영체제 혹은 호스트 응용 프로그램으로부터 전달된 것일 수 있다. 일 실시예에 의하면, 자료구조 관리부(320)는 아래 수학식에 의해 데이터 온도(T)를 산출할 수 있다.
T = ,
(혹은, T = F * WF + W * WW + I * WI + G * WG + L * WL)
본 개시에 따른 티어링 정보는 데이터 온도(T), 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L) 중 적어도 하나와 관계된 것일 수 있다. 일 실시예에 의하면, 티어링 정보는 데이터 온도(T)에 대응되는 값일 수 있다. 다른, 실시예에 의하면, 티어링 정보는 접근 빈도(F)에 대응되는 값일 수도 있고, 접근 빈도(F) 및 접근 강도(I)에 대응되는 값일 수도 있다.
일 실시예에 의하면, 자료구조 관리부(330)는 모니터링 소스(400)의 서로 다른 구성으로부터 수집되는 모니터링 정보를 이용하여 소정의 데이터 단위에 대한 자료구조를 생성 또는 갱신할 수 있다. 이를 위해, 자료구조 관리부(330)는 잠금(lock) 등의 메커니즘을 활용함으로써, 알고리즘에 의해 갱신, 분할 또는 합병되는 대상 데이터 단위와 겹치는 경우에 있어서도 데이터의 일관성을 유지할 수 있다. 컴퓨팅 시스템(100)의 요구사항에 따라서는 수집 가능한 모든 정보가 다 필요하지 않거나, 더 세밀한 정보가 필요할 수도 있다. 이를 위해, 호스트 프로세서(110)의 운영체제나 하이퍼바이저는 전자 장치(200)가 수집하는 정보를 일부 온/오프하거나, 수집을 위한 시간 간격, 수집의 범위 등을 설정할 수 있다.
호스트 보고부(340)는 티어링 정보를 호스트 프로세서(110)로 전달할 수 있다. 호스트 프로세서(110)는 컨트롤러(300)에 접근 가능성이 높은 데이터 단위에 대한 정보를 요청할 수 있고, 호스트 보고부(340)는 이러한 요청에 응답하여 호스트 프로세서(110)로 해당 데이터 단위에 대한 정보를 전달할 수 있다. 호스트 프로세서(110)는 전달된 정보에 기초하여 특정 데이터 단위를 다른 장치로 가져올 수 있다.
일 실시예에 의하면, 호스트 보고부(340)는 데이터 단위에 대한 티어링 정보를 호스트 프로세서(110)로 전달할 수 있다. 호스트 보고부(340)는 데이터 온도(T)에 대응하는 정보를 전달하거나, 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L) 중 일부 또는 전부를 전달할 수 있다. 대안적으로, 호스트 보고부(340)는 호스트 프로세서(110)로부터 접근 가능성이 낮은 데이터 단위에 대한 정보 요청을 수신하고, 이에 응답하여 접근 가능성이 가장 높은 적어도 하나의 데이터 단위에 대한 정보를 호스트 프로세서(110)로 전달할 수 있다. 전달된 정보는 해당 데이터 단위의 프로모션에 이용될 수 있다. 다른 예로서, 호스트 보고부(340)는 호스트 프로세서(110)로부터 접근 가능성이 낮은 데이터 단위에 대한 정보 요청을 수신하고, 이에 응답하여 접근 가능성이 가장 낮은 적어도 하나의 데이터 단위에 대한 정보를 호스트 프로세서(110)로 전달할 수 있다. 전달된 정보는 해당 데이터 단위의 디모션에 이용될 수 있다. 호스트 보고부(340)는 호스트 프로세서(110)로부터 다양한 요청을 받을 수 있고, 해당 요청에 대응하는 정보를 가공한 뒤 호스트 프로세서(110)에 전달하는 것도 가능하다.
도 5는 본 개시의 일 실시예에 따른 복수의 데이터 단위에 대한 자료구조를 도시한 도면이고, 도 6은 본 개시의 일 실시예에 따라 복수의 데이터 단위의 자료구조가 갱신되는 것을 나타낸 도면이다.
본 개시에 따른 컨트롤러(300)는 전자 장치(200)의 내부에서 수집되는 방대한 정보를 유지하고, 호스트 프로세서(110)의 요청이나 내부적인 알고리즘에 의한 처리를 용이하게 하기 위한 자료구조를 필요로 할 수 있다. 호스트 프로세서(110)의 운영체제 또는 하이퍼바이저는 예를 들어 페이지 단위로 메모리를 할당하고 관리하며, 일반적으로 4 KB 크기의 페이지를 최소 데이터 단위로 가진다. 접근 정보 역시 페이지 단위로 추적 및 관리될 수 있으므로, 데이터 단위에 대한 모니터링 자료구조는 페이지 크기, 인접 페이지 링크 등의 물리적 구성 정보, 티어링 정보와 관계된 정보(예를 들어, 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G), 지역성 이익(L) 및 시간에 따른 해당 정보의 변화 등), 및 이러한 정보를 기초로 생성한 정보(예를 들어, 데이터 온도(T) 및 시간에 따른 해당 정보의 변화 등)를 포함할 수 있다. 모든 모니터링 정보를 4 KB 페이지 단위로 유지하기 위해서는 매우 많은 용량이 필요할 수 있으나, 상대적으로 중요성이 낮은 정보를 모두 유지하는 것은 비효율적이므로 최적화가 필요할 수 있다.
메모리(390)에 저장된 복수의 데이터 단위는 티어링 정보에 대응되는 복수의 레벨로 분류 및 관리될 수 있다. 도 5에 도시된 바와 같이, 복수의 데이터 단위는 제1 내지 제6 레벨(510, 520, 530, 540, 550, 560)로 분류 및 관리될 수 있다. 제1 레벨(510)에 가까울수록 호스트 프로세서(110)의 접근 가능성이 높은 데이터(즉, 핫 데이터)를 의미할 수 있고, 제6 레벨(560)로 갈수록 호스트 프로세서(110)의 접근 가능성이 낮은 데이터(즉, 콜드 데이터)를 의미할 수 있다. 예를 들어, 제1 레벨(510)에 포함된 데이터 단위(512)는 더 빠른 장치로 보내질 수 있는 프로모션 후보가 될 수 있고, 제6 레벨(560)에 데이터 단위(562)는 더 느린 장치로 보내질 수 있는 디모션 후보가 될 수 있다.
본 개시에 의하면, 어느 한 레벨에 포함될 수 있는 데이터 단위의 수가 다른 레벨에 포함될 수 있는 데이터 단위의 수와 다를 수 있다. 일 실시예에 의하면, 전체 레벨 중 특정 레벨의 데이터 단위의 수가 제한될 수 있다. 예를 들어, 제6 레벨을 제외한 제1 내지 제5 레벨에 포함될 수 있는 데이터 단위의 수가 제한될 수 있다. 일 실시예에 의하면, 제1 레벨에 가까울수록 해당 레벨에 포함될 수 있는(즉, 제한될 수 있는) 데이터 단위의 수가 점점 감소할 수 있다. 예를 들어, 제1 레벨 내지 제5 레벨에 포함될 수 있는 데이터 단위의 수는 각각 2개, 3개, 4개, 6개, 8개로 설정될 수 있다. 예를 들어, 제6 레벨에 포함될 수 있는 데이터 단위의 수에는 제한이 없을 수 있다.
본 개시에 의하면, 어느 한 레벨에 포함된 데이터 단위의 크기가 다른 레벨에 포함된 데이터 단위의 크기와 다를 수 있다. 일 실시예에 의하면, 제1 레벨에 가까울수록 해당 레벨에 포함된 데이터 단위의 크기가 점점 감소할 수 있다. 예를 들어, 제1 레벨 내지 제6 레벨에 포함된 데이터 단위(512, 522, 532, 542, 552, 562)의 크기는 각각 4 KB, 8 KB, 32 KB, 256 KB, 2 MB, 16 MB로 설정될 수 있다.
본 개시에 의하면, 자료구조 관리부(330)는 처음에 복수의 데이터 단위를 가장 큰 사이즈 단위이자 가장 콜드한 레벨로 관리하다가 티어링 정보가 갱신되기 시작하면서 작은 단위로 분할할 수 있다. 예를 들어, 처음에 컴퓨팅 시스템(100)이 부팅되면, 자료구조 관리부(330)는 모든 데이터 단위에 대한 티어링 정보를 제6 레벨로 부여할 수 있다. 이후, 모니터링부(310)에 의해 티어링 정보의 산출의 근거가 되는 정보(예: 접근 정보)가 수집되면, 자료구조 관리부(330)가 모든 데이터 단위 중 적어도 일부의 데이터 단위에 대한 티어링 정보가 프로모션되도록 갱신할 수 있다. 예를 들어, 자료구조 관리부(330)는 제6 레벨에 있던 하나의 16 MB 크기의 데이터 단위를 8개의 2 MB 크기의 데이터 단위로 분할하며 제5 레벨로 갱신할 수 있다(콜드에서 핫으로 전환). 또한, 자료구조 관리부(330)는 모니터링부(310)에 의해 티어링 정보의 산출의 근거가 되는 정보(예: 접근 정보)에 관계되지 않는 데이터 단위에 대한 티어링 정보가 디모션되도록 갱신할 수 있다. 예를 들어, 자료구조 관리부(330)는 접근 정보로 인한 업데이트가 자주 일어나지 않았던 제5 레벨에 있던 서로 인접한 8개의 2 MB 크기의 데이터 단위를 하나의 16 MB 크기의 데이터 단위로 병합하며 제6 레벨로 갱신할 수 있다(핫에서 콜드로 전환). 이와 같이, 데이터 단위에 대한 프로모션과 디모션, 콜드에서 핫으로의 전환과 핫에서 콜드로의 전환, 분할과 병합을 처리함으로써, 메모리 사용량과 성능 사이에서 균형점을 찾을 수 있다.
메모리(390)는 호스트 캐시 메모리(112)나 호스트 DRAM(120)에 비해 느리면서도 대용량을 제공할 수 있다. 메모리(390)에 저장된 대부분의 데이터 단위는 콜드 상태로 존재하고, 일부 핫 영역에 호스트 프로세서(110)에 의한 접근이 집중될 수 있다. 이 때문에, 자료구조 관리부(330)는 상술한 관리 알고리즘을 이용하여 일정 이상의 값에 대응되는 티어링 정보를 가지는 데이터 단위들을 프로모션하면서 더 작은 크기로 분할하고, 그 중에서 특정 데이터 단위들을 더 빠른 장치로 프로모션될 후보로서 선정할 수 있다.
일 실시예에 의하면, 자료구조 관리부(330)는 데이터 단위가 제1 레벨에 가까울수록(즉, 핫한 상태일수록) 더 자세한 정보를 기록하고, 제6 레벨에 가까울수록(즉, 콜드한 상태일수록) 기본적인 정보만 기록할 수 있다. 이러한 방식을 통해, 저장 용량의 증가를 최소화하면서 모니터링 정확도를 향상시킬 수 있다.
일 실시예에 의하면, 자료구조 관리부(330)는 복수의 데이터 단위에 대한 티어링 정보를 주기적으로 조정할 수 있다. 호스트 프로세서(110)에 의한 접근이 없는 데이터 단위에 대한 정보는 트리거가 없으므로 갱신되지 않기 때문에 점점 콜드해지는 상태를 반영할 수 없을 수 있다. 이에 따라, 자료구조 관리부(330)는 주기적으로 자료구조를 순회하면서 접근이 없었던 데이터 단위의 티어링 정보의 레벨을 낮출 수 있다. 또한, 자료구조 관리부(330)는 관리 알고리즘을 이용하여 일정 미만의 값에 대응되는 티어링 정보를 가지는 데이터 단위들을 디모션하면서 더 큰 크기로 병합하고, 그 중에서 특정 데이터 단위들을 더 느린 장치로 디모션될 후보로서 선정할 수 있다.
일 실시예에 따르면, 자료구조 관리부(330)는 시간에 따라 티어링 정보와 관련된 값을 조정할 수 있다. 예를 들어, 자료구조 관리부(330)는 일정 시간 간격마다 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G), 지역성 이익(L)를 아래와 같은 수학식으로 조정한다. 여기서, 조정 인자(degrading factor, D)는 1보다 작은 값일 수 있다. 이러한 조정에 의해, 데이터 온도(T)도 조정될 수 있다.
Pnew = P * DP ,
이러한 조정 인자는 사전에 정의된 값이거나 컴퓨팅 시스템(100)의 요구사항 및 응용 프로그램에 맞게 조정된 값을 호스트 프로세서(110)의 운영체제 혹은 호스트 응용 프로그램으로부터 받을 수 있다. 일 실시예에 의하면, 데이터 온도(T)에 따라서 데이터 단위의 크기를 조정할 수 있듯이, 콜드 상태에 가까운 데이터 단위일수록 조정 인자를 적용하는 주기가 길어도 영향이 적을 수 있다. 이에 따라, 자료구조 관리부(330)는 티어링 정보의 레벨 별로 주기를 다르게 적용할 수 있으며, 이러한 특징적 구성에 의해 전체 데이터 단위의 자료구조를 순회하는데 필요한 성능 비용을 절감할 수 있다. 예를 들어, 가장 핫한 상태인 제1 레벨에 대해서는 짧은 주기(예: 10 us)를 적용하고, 콜드한 상태인 제5 레벨에 대해서는 긴 주기(예: 10 ms)를 적용할 수 있다. 또한, 가장 콜드한 상태인 제6 레벨에 대해서는 조정 프로세싱을 실행하지 않을 수 있다.
자료구조 관리부(330)는 복수의 데이터 단위의 티어링 정보를 갱신하면서 일부 데이터 단위에 대해 분할 및 병합을 실행한다. 이러한 분할 및 병합을 실행하다 보면, 해당 레벨에 유지할 수 있는 데이터 단위의 개수 제한에 걸릴 수 있다. 자료구조 관리부(330)는 이러한 제한을 회피하기 위해, 제1 레벨 또는 제2 레벨과 같은 상위 레벨의 데이터 단위를 확보하기 위한 알고리즘을 실행할 수 있다. 예를 들어, 병합이 필요한 시점 혹은 주기적으로 특정 레벨의 병합 가능한 기존의 데이터 단위 중에서 데이터 온도(T)가 낮은 페이지를 병합하여 다음 레벨로 내리는 동작을 수행함으로써 상위 레벨의 공간을 확보할 수 있다. 이러한 알고리즘을 이용하여, 제6 레벨과 같은 가장 콜드한 상태 이외의 상태를 갖는 데이터 단위의 개수를 레벨별로 적절한 개수로 제한할 수 있다. 그 결과, 전체 자료구조의 크기를 4 KB로 관리하는 것에 비해 약 1/1,000 혹은 그 이하로 줄일 수 있다.
도 6은 제1 레벨(610)과 제2 레벨(620)에 포함된 데이터 단위가 시간의 흐름에 따라 갱신되는 것을 예시적으로 나타낸 도면이며, 데이터 단위에 기재된 숫자는 티어링 정보 또는 티어링 정보에 관계된 정보(예: 데이터 온도(T))일 수 있다. 시점(t1)에서 시점(t2)로는 모든 데이터 단위(612a, 612b, 622, 624, 626)에 대한 티어링 정보가 조정되는 것을 도시한 것이다. 도 6에서는 모든 데이터 단위에 대한 티어링 정보가 동일한 값만큼(-3) 차감되었으나, 이는 예시일 뿐, 동일한 비율로 티어링 정보가 감소될 수도 있다.
또한, 시점(t2)에서 시점(t3)로는 모니터링 정보(예: 접근 빈도(F))가 획득되는 것에 의해 데이터 단위에 대한 티어링 정보가 갱신되는 것을 도시한 것이다. 예를 들어, 데이터 단위(612a) 및 데이터 단위(612b)에는 호스트 프로세서(110)에 의한 접근이 발생하지 않아 점수가 그대로 유지될 수 있다. 또한, 제1 레벨에 포함된 데이터 단위의 개수 제한에 의해, 데이터 단위(612a) 및 데이터 단위(612b)는 데이터 단위(612)로 병합되면서 제2 레벨로 전환될 수 있다. 이와 반대로, 데이터 단위(624)에는 호스트 프로세서(110)에 의한 접근이 발생하여 점수가 상승할 수 있다. 이러한 상승에 의해, 데이터 단위(624)는 데이터 단위(624a) 및 데이터 단위(624b)로 분할되면서 제1 레벨로 전환될 수 있다.
도 7은 본 개시의 일 실시예에 따라 컨트롤러(300)가 메모리 접근 모니터링 프로세스를 처리하는 동작에 관한 순서도(700)이다.
컨트롤러(300)는 접근 정보, 호스트 캐싱 정보 및 장치 캐싱 정보 중 적어도 하나를 포함한 모니터링 정보를 수집할 수 있다(S710). 일 실시예에 의하면, 모니터링부(310)는 메모리(390)에 대한 상기 호스트 프로세서(110)의 접근을 지시하는 접근 정보를 수집할 수 있다. 예를 들어, 모니터링부(310)는 호스트 프로세서(110)로부터 수신된 CXL 프로토콜에 따른 메모리 접근 명령을 샘플링하여 접근 정보를 수집할 수 있다. 일 실시예에 의하면, 모니터링부(310)는 메모리(390)에 저장된 데이터가 호스트 캐시 메모리(112)에 캐싱되어 있는 상태를 지시하는 호스트 캐싱 정보를 수집할 수 있다. 예를 들어, 모니터링부(310)는 스눕 필터(320)로부터 호스트 캐싱 정보를 수집할 수 있다. 일 실시예에 의하면, 모니터링부(310)는 메모리(390)에 저장된 데이터가 캐시 메모리(360)에 캐싱되어 있는 상태를 지시하는 장치 캐싱 정보를 수집할 수 있다.
다음으로, 컨트롤러(300)는 메모리(390)의 복수의 데이터 단위 각각에 대한 티어링 정보를 산출할 수 있다(S720). 일 실시예에 의하면, 자료구조 관리부는 접근 정보에 기초하여 메모리(390)의 특정 어드레스에 대한 접근 빈도(F) 및 쓰기 비율(W)을 산출할 수 있다. 자료구조 관리부는 호스트 캐싱 정보에 기초하여 메모리(390)의 특정 어드레스에 대한 접근 강도(I)를 산출할 수 있다. 자료구조 관리부는 장치 캐싱 정보에 기초하여 메모리(390)의 특정 어드레스에 대한 접근 그룹(G) 및 지역성 이익(L)을 산출할 수 있다. 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L) 중 적어도 하나에 기초하여, 자료구조 관리부는 특정 데이터 단위에 대한 데이터 온도(T)를 산출할 수 있다. 또한, 자료구조 관리부는 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G), 지역성 이익(L) 및 데이터 온도(T)에 기초하여 특정 데이터 단위에 대한 티어링 정보를 산출할 수 있다.
다음으로, 컨트롤러(300)는 주기적 또는 비주기적으로 복수의 데이터 단위 각각에 대한 티어링 정보를 갱신할 수 있다(S730). 일 실시예에 의하면, 자료구조 관리부는 주기적 또는 비주기적으로 모니터링 정보를 수집하고, 수집된 모니터링 정보에 기초하여 복수의 데이터 단위 각각에 대한 티어링 정보를 갱신할 수 있다. 티어링 정보를 갱신함에 있어서, 자료구조 관리부는 소정의 데이터 단위에 대한 프로모션과 디모션, 콜드에서 핫으로의 전환과 핫에서 콜드로의 전환, 분할과 병합을 처리할 수 있다.
다음으로, 컨트롤러(300)는 티어링 정보에 기초하여 호스트 프로세서(110)에 의한 접근 가능성이 높은 데이터 단위에 대한 정보를 보고할 수 있다(S740). 일 실시예에 의하면, 호스트 보고부(340)는 호스트 프로세서(110)로부터 접근 가능성이 높은 데이터 단위에 대한 요청을 받고, 이에 응답하여 접근 가능성이 가장 높은 적어도 하나의 데이터 단위에 대한 정보를 호스트 프로세서(110)로 전달할 수 있다. 다른 실시예에 의하면, 일 실시예에 의하면, 호스트 보고부(340)는 호스트 프로세서(110)로부터 접근 가능성이 낮은 데이터 단위에 대한 요청을 받고, 이에 응답하여 접근 가능성이 가장 낮은 적어도 하나의 데이터 단위에 대한 정보를 호스트 프로세서(110)로 전달할 수 있다. 호스트 보고부(340)는 데이터 온도(T)에 대응하는 정보를 전달하거나, 접근 빈도(F), 쓰기 비율(W), 접근 강도(I), 접근 그룹(G) 및 지역성 이익(L) 중 일부 또는 전부를 전달하거나, 접근 가능성이 가장 높은 소정의 데이터 단위에 대한 정보를 전달하거나, 상기 정보의 조합을 전달할 수 있다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 호스트 프로세서(110), 전자 장치(200) 내지 이를 포함하는 컴퓨팅 시스템(100)일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (19)

  1. 메모리 접근을 모니터링하기 위한 전자 장치로서,
    호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러
    를 포함하고,
    상기 컨트롤러는,
    상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하고, 상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하고,
    상기 복수의 데이터 단위 중 제1 크기를 갖는 하나 이상의 제1 데이터 단위에 대하여 상기 티어링 정보를 제1 레벨로 부여하고,
    상기 복수의 데이터 단위 중 제2 크기를 갖는 하나 이상의 제2 데이터 단위에 대하여 상기 티어링 정보를 제2 레벨로 부여하도록 더 구성되고,
    상기 제1 레벨은 상기 제2 레벨보다 상기 호스트 프로세서의 접근 가능성이 높은 것을 지시하고,
    상기 제1 데이터 단위의 수는 상기 제2 데이터 단위의 수보다 적고,
    상기 제1 크기는 상기 제2 크기보다 작은, 전자 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는,
    상기 호스트 프로세서와 CXL 프로토콜을 이용하여 통신하고,
    상기 호스트 프로세서로부터 수신된 상기 CXL 프로토콜에 따른 메모리 접근 명령을 샘플링하여 상기 접근 정보를 수집하도록 더 구성된, 전자 장치.
  3. 제1항에 있어서,
    상기 컨트롤러는,
    상기 접근 정보에 기초하여 상기 메모리의 특정 어드레스에 대한 접근 빈도를 산출하고, 상기 접근 빈도에 기초하여 상기 복수의 데이터 단위 중 상기 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출하도록 더 구성된, 전자 장치.
  4. 제1항에 있어서,
    상기 컨트롤러는,
    상기 메모리에 저장된 데이터가 상기 호스트 프로세서의 캐시 메모리에 캐싱되어 있는 상태를 지시하는 호스트 캐싱 정보를 더 수집하고, 상기 호스트 캐싱 정보 및 상기 접근 정보에 기초하여 상기 티어링 정보를 산출하도록 더 구성된, 전자 장치.
  5. 제4항에 있어서,
    상기 호스트 캐싱 정보를 저장하는 스눕 필터(snoop filter)를 더 포함하고,
    상기 컨트롤러는 상기 스눕 필터로부터 상기 호스트 캐싱 정보를 수집하도록 더 구성된, 전자 장치.
  6. 제4항에 있어서,
    상기 호스트 캐싱 정보는 상기 메모리의 특정 어드레스에 저장된 데이터가 상기 호스트 프로세서의 캐시 메모리에 등록되는 시점 및 상기 호스트 프로세서의 캐시 메모리로부터 제거되는 시점을 포함하고,
    상기 컨트롤러는,
    상기 호스트 캐싱 정보에 기초하여, 상기 특정 어드레스에 저장된 데이터가 상기 호스트 프로세서의 캐시 메모리에 존재하는 지속 시간 및 상기 호스트 프로세서의 캐시 메모리로부터 제거된 후 다시 등록될 때가지의 재등록 시간 중 적어도 하나를 산출하고,
    상기 지속 시간 및 상기 재등록 시간 중 적어도 하나에 기초하여, 상기 복수의 데이터 단위 중 상기 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출하도록 더 구성된, 전자 장치.
  7. 제1항에 있어서,
    접근한 적이 있거나 접근이 예상되는 데이터를 저장하도록 구성된 캐시 메모리를 더 포함하고,
    상기 컨트롤러는,
    상기 메모리에 저장된 데이터가 상기 캐시 메모리에 캐싱되어 있는 상태를 지시하는 장치 캐싱 정보를 더 수집하고, 상기 장치 캐싱 정보 및 상기 접근 정보에 기초하여 상기 티어링 정보를 산출하도록 더 구성된, 전자 장치.
  8. 제7항에 있어서,
    상기 장치 캐싱 정보는 캐시 히트 정보, 캐시 미스 정보 및 캐시 선인출(cache prefetch)를 위한 접근 패턴 정보를 포함하고,
    상기 컨트롤러는,
    상기 장치 캐싱 정보에 기초하여, 상기 메모리의 특정 어드레스에 대한 접근 그룹 및 지역성 이익(locality benefit) 중 적어도 하나를 산출하고,
    상기 접근 그룹 및 상기 지역성 이익 중 적어도 하나에 기초하여, 상기 복수의 데이터 단위 중 상기 특정 어드레스에 대응하는 데이터 단위의 티어링 정보를 산출하도록 더 구성된, 전자 장치.
  9. 제1항에 있어서,
    상기 복수의 데이터 단위 각각은 페이지로 구성되고,
    상기 컨트롤러는 주기적 또는 비주기적으로 상기 티어링 정보를 갱신하도록 더 구성된, 전자 장치.
  10. 제1항에 있어서,
    상기 컨트롤러는,
    제1 시간 간격으로 상기 접근 정보를 수집하고 상기 수집된 접근 정보에 기초하여 상기 접근 정보에 대응하는 데이터 단위에 대한 상기 티어링 정보를 갱신하고,
    제2 시간 간격으로 상기 복수의 데이터 단위에 대한 상기 티어링 정보를 조정하도록 더 구성된, 전자 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제1항에 있어서,
    상기 컨트롤러는,
    상기 제1 크기를 갖는 복수의 제1 데이터 단위에 대하여 상기 티어링 정보를 상기 제2 레벨로 갱신하면서 하나의 제2 데이터 단위로 병합하고,
    상기 제2 크기를 갖는 하나의 제2 데이터 단위에 대하여 상기 티어링 정보를 상기 제1 레벨로 갱신하면서 복수의 제1 데이터 단위로 분할하도록 더 구성된, 전자 장치.
  15. 제1항에 있어서,
    상기 컨트롤러는,
    상기 호스트 프로세서로부터 접근 가능성이 높은 데이터 단위에 대한 정보 요청을 수신하고,
    상기 요청에 응답하여, 상기 티어링 정보에 기초하여 상기 메모리에 저장된 상기 복수의 데이터 단위 중 접근 가능성이 가장 높은 적어도 하나의 데이터 단위에 대한 정보를 상기 호스트 프로세서에 전달하도록 더 구성된, 전자 장치.
  16. 제1항에 있어서,
    상기 컨트롤러는,
    상기 호스트 프로세서로부터 접근 가능성이 낮은 데이터 단위에 대한 정보 요청을 수신하고,
    상기 요청에 응답하여, 상기 티어링 정보에 기초하여 상기 메모리에 저장된 상기 복수의 데이터 단위 중 접근 가능성이 가장 낮은 적어도 하나의 데이터 단위에 대한 정보를 상기 호스트 프로세서에 전달하도록 더 구성된, 전자 장치.
  17. 제1항에 있어서,
    상기 컨트롤러는,
    상기 접근 정보를 포함하여 상기 티어링 정보의 산출에 근거가 되는 모니터링 정보를 수집하도록 구성된 모니터링부;
    상기 메모리에 저장된 상기 복수의 데이터 단위 각각에 대한 티어링 정보를 관리하도록 구성된 자료구조 관리부; 및
    상기 티어링 정보에 기초하여 상기 호스트 프로세서로부터 수신한 접근 가능성에 관한 정보 요청을 처리하도록 구성된 호스트 리포트부
    를 포함하는, 전자 장치.
  18. 컴퓨팅 시스템에 있어서,
    호스트 프로세서; 및
    전자 장치를 포함하고,
    상기 전자 장치는,
    상기 호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러
    를 포함하고,
    상기 컨트롤러는,
    상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하고, 상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하고,
    상기 복수의 데이터 단위 중 제1 크기를 갖는 하나 이상의 제1 데이터 단위에 대하여 상기 티어링 정보를 제1 레벨로 부여하고,
    상기 복수의 데이터 단위 중 제2 크기를 갖는 하나 이상의 제2 데이터 단위에 대하여 상기 티어링 정보를 제2 레벨로 부여하도록 더 구성되고,
    상기 제1 레벨은 상기 제2 레벨보다 상기 호스트 프로세서의 접근 가능성이 높은 것을 지시하고,
    상기 제1 데이터 단위의 수는 상기 제2 데이터 단위의 수보다 적고,
    상기 제1 크기는 상기 제2 크기보다 작은, 컴퓨팅 시스템.
  19. 호스트 프로세서 및 메모리와 연결되도록 구성된 컨트롤러를 포함한 전자 장치의 메모리 접근 모니터링 방법에 있어서,
    상기 메모리에 대한 상기 호스트 프로세서의 접근을 지시하는 접근 정보를 수집하는 단계; 및
    상기 접근 정보에 기초하여 상기 메모리에 저장된 복수의 데이터 단위 각각에 대한 상기 호스트 프로세서의 접근 가능성을 지시하는 티어링 정보를 산출하는 단계
    를 포함하고,
    상기 티어링 정보를 산출하는 단계는, 상기 복수의 데이터 단위 중 제1 크기를 갖는 하나 이상의 제1 데이터 단위에 대하여 상기 티어링 정보를 제1 레벨로 부여하고, 상기 복수의 데이터 단위 중 제2 크기를 갖는 하나 이상의 제2 데이터 단위에 대하여 상기 티어링 정보를 제2 레벨로 부여하는 단계를 포함하고,
    상기 제1 레벨은 상기 제2 레벨보다 상기 호스트 프로세서의 접근 가능성이 높은 것을 지시하고,
    상기 제1 데이터 단위의 수는 상기 제2 데이터 단위의 수보다 적고,
    상기 제1 크기는 상기 제2 크기보다 작은, 메모리 접근 모니터링 방법.
KR1020230060648A 2023-05-10 2023-05-10 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법 KR102573085B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230060648A KR102573085B1 (ko) 2023-05-10 2023-05-10 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230060648A KR102573085B1 (ko) 2023-05-10 2023-05-10 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법

Publications (1)

Publication Number Publication Date
KR102573085B1 true KR102573085B1 (ko) 2023-09-01

Family

ID=87974943

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230060648A KR102573085B1 (ko) 2023-05-10 2023-05-10 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법

Country Status (1)

Country Link
KR (1) KR102573085B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5447523B2 (ja) * 2009-08-12 2014-03-19 日本電気株式会社 データ処理装置、データ記録方法、データ記録プログラム
KR20210000271A (ko) * 2019-06-24 2021-01-04 삼성전자주식회사 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치
KR20210132453A (ko) * 2020-04-27 2021-11-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20230018215A (ko) * 2021-07-29 2023-02-07 삼성전자주식회사 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법
KR20230031123A (ko) * 2021-08-26 2023-03-07 에스케이하이닉스 주식회사 메모리 모듈, 메모리 모듈을 포함하는 메모리 시스템 및 그 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5447523B2 (ja) * 2009-08-12 2014-03-19 日本電気株式会社 データ処理装置、データ記録方法、データ記録プログラム
KR20210000271A (ko) * 2019-06-24 2021-01-04 삼성전자주식회사 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치
KR20210132453A (ko) * 2020-04-27 2021-11-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20230018215A (ko) * 2021-07-29 2023-02-07 삼성전자주식회사 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법
KR20230031123A (ko) * 2021-08-26 2023-03-07 에스케이하이닉스 주식회사 메모리 모듈, 메모리 모듈을 포함하는 메모리 시스템 및 그 동작 방법

Similar Documents

Publication Publication Date Title
US9128847B2 (en) Cache control apparatus and cache control method
EP3210121B1 (en) Cache optimization technique for large working data sets
US9361236B2 (en) Handling write requests for a data array
US9811465B2 (en) Computer system and cache control method
US20160239412A1 (en) Storage apparatus and information processing system including storage apparatus
US8656137B2 (en) Computer system with processor local coherency for virtualized input/output
US20120137059A1 (en) Content locality-based caching in a data storage system
WO2012116369A2 (en) Apparatus, system, and method for managing contents of a cache
US20090307434A1 (en) Method for memory interleave support with a ceiling mask
US9372810B2 (en) Collaborative caching
CN102870100A (zh) 数据缓存装置、数据存储系统及方法
CN102150147A (zh) 存储器服务器
US11169927B2 (en) Efficient cache management
KR20120120186A (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
US9727247B2 (en) Storage device and method, and storage medium
US10705977B2 (en) Method of dirty cache line eviction
KR20190063378A (ko) 이종 가상화 클라우드 캐시 환경에서의 동적 캐시분할 관리자
KR102573085B1 (ko) 전자 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 메모리 접근 모니터링 방법
US9401870B2 (en) Information processing system and method for controlling information processing system
CN104252423A (zh) 基于多内核处理器的一致性处理方法和装置
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
CN112445794A (zh) 一种大数据系统的缓存方法
US20170109278A1 (en) Method for caching and information processing apparatus
US11698865B1 (en) Active data placement on cache eviction
US20230297512A1 (en) Information processing system and memory system

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant