KR20240069323A - 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법 - Google Patents

이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20240069323A
KR20240069323A KR1020220150725A KR20220150725A KR20240069323A KR 20240069323 A KR20240069323 A KR 20240069323A KR 1020220150725 A KR1020220150725 A KR 1020220150725A KR 20220150725 A KR20220150725 A KR 20220150725A KR 20240069323 A KR20240069323 A KR 20240069323A
Authority
KR
South Korea
Prior art keywords
cache
memory device
data
memory
source
Prior art date
Application number
KR1020220150725A
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 KR1020220150725A priority Critical patent/KR20240069323A/ko
Priority to US18/311,896 priority patent/US20240160574A1/en
Publication of KR20240069323A publication Critical patent/KR20240069323A/ko

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0614Improving the reliability of 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/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

일 실시예에 의한 컴퓨터 시스템은 프로세서, 제 1 메모리 장치 제 1 메모리 장치와 액세스 레이턴시가 상이한 제 2 메모리 장치, 복수의 캐시 엔트리로 구성되고, 제 1 메모리 장치 또는 제 2 메모리 장치로부터 제공되는 캐싱 데이터를 캐시 엔트리에 저장하는 캐시 메모리 및, 캐싱 데이터를 제공한 출처를 관리하고, 프로세서의 요청 데이터가 캐시 메모리에 존재하지 않음에 따라 요청 데이터를 제 1 메모리 장치 또는 제 2 메모리 장치로부터 리드한 출처별 캐시 미스율과 출처별 캐시 점유율에 기초하여 축출 대상 캐시 엔트리를 결정하도록 구성되는 캐시 컨트롤러를 포함하도록 구성될 수 있다.

Description

이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법{Computer System Including Main Memory Device Having Heterogeneous Memories and Operating Method thereof}
본 기술은 컴퓨터 시스템에 관한 것으로, 보다 구체적으로는 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법에 관한 것이다.
컴퓨터 시스템은 다양한 형태의 메모리 장치를 포함할 수 있다. 메모리 장치는 데이터를 저장하기 위한 메모리와 메모리의 동작을 제어하는 메모리 컨트롤러를 포함한다. 메모리는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 휘발성 메모리와, EEPROM(Electrically Erasable Programmable ROM), FRAM(Ferroelectric RAM), PCRAM(Phase change Random Access Memory), MRAM(Magnetic RAM), Flash Memory 등과 같은 비휘발성 메모리로 분류된다. 최근에는 휘발성 및 비휘발성 메모리를 포함하는 이종 메모리들이 탑재된 메인 메모리 장치가 개발되고 있다.
컴퓨터 시스템은 프로세서와 메인 메모리 장치 간의 속도 차이에 따른 병목 현상을 줄이기 위해 캐시 메모리를 이용한다. 휘발성 메모리와 비휘발성 메모리는 동작 속도에 차이가 있으므로, 메인 메모리 장치를 구성하는 이종 메모리들의 동작 속도를 고려하여 캐시 메모리에 캐싱할 데이터를 결정할 필요가 있다.
본 기술의 실시예는 캐싱 데이터의 출처별 점유율과 미스 횟수에 따라 캐시 메모리에 유지되거나 축출될 데이터를 관리할 수 있는 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법을 제공할 수 있다.
본 기술의 일 실시예에 의한 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템은 프로세서; 제 1 메모리 장치; 상기 제 1 메모리 장치와 액세스 레이턴시가 상이한 제 2 메모리 장치; 복수의 캐시 엔트리로 구성되고, 상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치로부터 제공되는 캐싱 데이터를 캐시 엔트리에 저장하는 캐시 메모리; 및 상기 캐싱 데이터를 제공한 출처를 관리하고, 상기 프로세서의 요청 데이터가 상기 캐시 메모리에 존재하지 않음에 따라 상기 요청 데이터를 상기 제 1 메모리 장치 또는 제 2 메모리 장치로부터 리드한 출처별 캐시 미스율과 출처별 캐시 점유율에 기초하여 축출 대상 캐시 엔트리를 결정하도록 구성되는 캐시 컨트롤러;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템은 제 1 메모리 장치 및 상기 제 2 메모리 장치와 이종인 제 2 메모리 장치를 포함하는 메인 메모리 장치; 복수의 캐시 엔트리를 포함하고, 상기 메인 메모리 장치로부터 제공되는 캐싱 데이터와 상기 캐싱 데이터의 출처를 적어도 하나의 캐시 엔트리에 저장하고, 데이터 액세스 요청에 대응하는 요청 데이터를 출력하는 캐시 메모리; 및 상기 캐시 메모리에 존재하지 않는 상기 요청 데이터가 상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치에서 리드되는 횟수를 상기 요청 데이터가 리드된 출처별로 카운트한 미스 횟수와, 상기 캐싱 데이터의 출처에 따른 캐시 점유율을 비교하여, 상기 캐시 점유율 대비 상기 미스 횟수가 작은 출처의 상기 메인 메모리 장치로부터 제공된 상기 캐싱 데이터를 상기 캐시 메모리로부터 축출하는 캐시 컨트롤러;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템의 동작 방법은 캐시 메모리를 제어하는 캐시 컨트롤러를 포함하는 컴퓨터 시스템의 동작 방법으로서, 캐시 컨트롤러가, 제 1 메모리 장치 또는 상기 제 1 메모리 장치와 이종인 제 2 메모리 장치로부터 제공되는 캐싱 데이터와 상기 캐싱 데이터의 출처를 복수의 캐시 엔트리 중 적어도 하나에 저장하는 단계; 프로세서의 요청 데이터가 상기 캐시 메모리에 존재하지 않음에 따라 상기 요청 데이터를 상기 제 1 메모리 장치 또는 제 2 메모리 장치로부터 리드하는 단계; 및 상기 리드한 데이터를 캐싱할 빈 캐시 엔트리가 존재하지 않는 경우, 상기 요청 데이터가 리드된 출처별 캐시 미스율과, 상기 캐싱 데이터의 출처별 캐시 점유율에 기초하여 축출 대상 캐시 엔트리를 결정하는 단계;를 포함하도록 구성될 수 있다.
본 기술에 의하면 이종 메모리로 구성된 메인 메모리 장치로부터 캐시 메모리에 캐싱될 데이터를 효율적으로 선택할 수 있다.
도 1은 일 실시예에 의한 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템의 구성도이다.
도 2는 일 실시예에 의한 캐시 엔트리를 설명하기 위한 도면이다.
도 3은 일 실시예에 의한 캐시 컨트롤러의 구성도이다.
도 4는 일 실시예에 의한 컴퓨터 시스템의 동작 방법을 설명하기 위한 흐름도이다.
도 5는 일 실시예에 의한 컴퓨터 시스템의 동작 방법을 설명하기 위한 흐름도이다.
이하, 첨부된 도면을 참조하여 본 기술의 실시예를 보다 구체적으로 설명한다.
도 1은 일 실시예에 의한 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템의 구성도이다.
도 1을 참조하면, 일 실시예에 의한 컴퓨터 시스템(10)은 시스템 버스를 통해 전기적으로 연결되는 프로세서(100), 캐시 컨트롤러(110), 캐시 메모리(120), 메모리 컨트롤러(130) 및 메인 메모리 장치(140)를 포함할 수 있다. 도시하지 않았지만 프로세서(100)의 내부에도 별도의 캐시 메모리가 구비될 수 있다.
프로세서(100)는 상업적으로 이용할 수 있는 다양한 프로세서일 수 있으며, 듀얼 마이크로프로세서, 멀티-코어 프로세서, 그리고 기타 멀티-프로세스 아키텍처가 프로세서(100)로 채택될 수 있다.
프로세서(100)는 캐시 컨트롤러(110)를 통해 캐시 메모리(120)에 액세스하거나, 메모리 컨트롤러(130)를 통해 메인 메모리 장치(140)에 액세스할 수 있다. 예를 들어, 프로세서(100)는 클럭 신호 발생기(미도시)로부터 출력된 클럭 신호에 응답하여 메인 메모리 장치(140)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다.
메인 메모리 장치(140)는 제 1 메모리 장치(141) 및 제 2 메모리 장치(143)를 포함할 수 있다. 제 1 메모리 장치(141) 및 제 2 메모리 장치(143)는 구조가 다르고 액세스 레이턴시가 다른 이종 메모리일 수 있다. 예를 들어 제 1 메모리 장치(141)는 휘발성 메모리(Volatile Memory, VM)를 포함할 수 있고 제 2 메모리 장치(143)는 비휘발성 메모리(Non-Volatile Memory, NVM)를 포함할 수 있다. 예시적으로, 휘발성 메모리는 DRAM(dynamic random access memory)이고, 비휘발성 메모리는 PCRAM(phase change RAM)일 수 있으나, 이에 한정되는 것은 아니다.
메모리 컨트롤러(130)는 프로세서(100)로부터 수신된 명령에 대응하는 동작을 수행하도록 메인 메모리 장치(140)를 제어할 수 있다. 메인 메모리 장치(140)는 메모리 컨트롤러(130)로부터 제공된 명령에 따라 메모리 셀 어레이(도시하지 않음)에 데이터를 쓰거나 또는, 메모리 셀 어레이로부터 데이터를 읽는 동작을 수행할 수 있다. 일 실시예에서, 메모리 컨트롤러(130)는 프로세서(100)의 액세싱이 빈번한 데이터(예컨대, 핫 데이터)는 제 1 메모리 장치(141)에 저장하고, 액세싱이 빈번하지 않은 데이터(예컨대, 콜드 데이터)는 제 2 메모리 장치(143)에 저장할 수 있다.
캐시 메모리(120)는 속도가 빠른 장치와 느린 장치 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리를 지칭한다. 즉, 캐시 메모리(120)는 고속 동작하는 프로세서(100)와 상대적으로 저속 동작하는 메인 메모리 장치(140) 사이의 데이터 병목 현상을 완화하는 역할을 한다. 캐시 메모리(120)는 메인 메모리 장치(140)에 저장된 데이터 중 프로세서(100)가 자주 액세스하는 데이터를 캐싱할 수 있다.
도시하지 않았지만, 캐시 메모리(120)는 동작 속도 및 프로세서(100)와의 물리적인 거리에 따라 복수 레벨로 구성될 수 있다. 일반적으로, 제 1 레벨(L1) 캐시는 프로세서(100) 내에 내장되어 데이터 참조 및 사용을 위해 가장 먼저 사용될 수 있다. L1 캐시는 캐시들 중 가장 속도가 빠른 반면, 저장 용량은 작을 수 있다. L1 캐시에 데이터가 존재하지 않으면(예컨대, 캐시 미스), 프로세서(100)는 제 2 레벨(L2) 캐시를 액세스할 수 있다. L2 캐시는 L1 캐시보다 상대적으로 속도는 느린 반면, 저장 용량은 클 수 있다. L2 캐시에도 데이터가 존재하지 않으면, 프로세서(100)는 그 하위 레벨 캐시를 액세스할 수 있다. 마지막 레벨 캐시(Last Level Cache; LLC)에도 데이터가 존재하지 않으면, 프로세서(100)는 메인 메모리 장치(140)를 액세스한다.
캐시 메모리(120)가 복수 레벨로 구성되는 경우, LLC는 메인 메모리 장치(140)로부터 제공되는 데이터를 캐싱할 수 있고, LLC의 상위 레벨 캐시들은 자신의 하위 레벨 캐시로부터 제공되는 데이터를 캐싱할 수 있으나, 이에 한정되는 것은 아니다.
캐시 컨트롤러(110)는 캐시 메모리(120)의 전반적인 동작을 제어한다. 즉, 메인 메모리 장치(140)에 저장되어 있는 데이터 중에서 어떠한 데이터를 캐시 메모리(120)에 저장할 것인지, 캐시 메모리(120)가 가득 차서 데이터 교체가 필요한 경우 어떠한 데이터를 교체할 것인지, 프로세서(100)로부터 요청되는 데이터가 캐시 메모리(120)에 존재하는지를 판단하기 위한 내부 알고리즘 및 이를 처리 하기 위한 하드웨어를 포함한다. 이를 위하여, 캐시 컨트롤러(210)는 캐싱된 데이터와 메인 메모리 장치(140)에 저장된 데이터와의 연관 관계를 나타내는 매핑 테이블(mapping table) 등을 사용할 수 있다.
일 실시예에서, 캐시 컨트롤러(110)는 메인 메모리 장치(140)로부터 캐시 메모리(120)에 캐싱되는 데이터의 출처가 제 1 메모리 장치(141)인지 제 2 메모리 장치(143)인지 관리할 수 있다.
도 2는 일 실시예에 의한 캐시 엔트리를 설명하기 위한 도면이다.
도 2를 참조하면, 일 실시예에 의한 캐시 메모리(120)는 복수의 캐시 엔트리(Entry 0, Entry 1, Entry 2, …)로 구분될 수 있다. 각 캐시 엔트리(Entry 0, Entry 1, Entry 2, …)는 유효성 비트(Valid), 태그 비트(Tag), 데이터 블록(Data) 및 플래그 비트(Flag)를 포함할 수 있다.
유효성 비트(Valid)는 해당 캐시 엔트리의 데이터 블록에 유효한 블록이 저장되어 있는지의 여부를 판별하기 위해 참조될 수 있다.
태그 비트(Tag)는 해당 엔트리에 저장된 데이터의 실제 어드레스 즉, 메인 메모리 장치(140) 내 물리 어드레스에 대응하는 정보를 나타낼 수 있다.
데이터 블록(Data)에는 메인 메모리 장치(140)로부터 전송되는 데이터가 캐싱될 수 있다.
플래그 비트(Flag)는 데이터 블록(Data)에 저장된 데이터의 출처 즉, 캐싱 데이터가 제 1 메모리 장치(141)로부터 제공되었는지 또는 제 2 메모리 장치(143)로부터 제공되었는지 구분할 수 있는 정보를 나타낼 수 있다.
프로세서(100)의 데이터 요청은 액세스 어드레스를 포함할 수 있고, 캐시 컨트롤러(110)는 액세스 어드레스와 태그 비트(Tag)를 비교하여 요청 데이터가 캐시 메모리(120)에 존재하는지 판단할 수 있다.
요청 데이터가 캐시 메모리(120)에 존재하는 캐시 히트의 경우, 요청 데이터가 캐시 메모리(120)로부터 프로세서(100)로 제공된다.
요청 데이터가 캐시 메모리(120)에 존재하지 않는 캐시 미스의 경우, 캐시 컨트롤러(110)는 요청 데이터가 저장된 메인 메모리 장치(140)의 종류에 따라 미스 횟수를 카운트하고 데이터 요청을 메모리 컨트롤러(130)에 전송할 수 있다. 메모리 컨트롤러(130)는 데이터 요청에 포함된 액세스 어드레스에 따라 제 1 메모리 장치(141) 또는 제 2 메모리 장치(143)로부터 데이터를 리드하여 캐시 메모리(120)에 제공한다.
캐시 컨트롤러(110)는 캐시 메모리(120) 내에 비어 있는 캐시 엔트리가 존재하는 경우, 제 1 메모리 장치(141) 또는 제 2 메모리 장치(143)로부터 제공된 데이터를 비어 있는 캐시 엔트리 중 적어도 하나에 캐싱하고, 캐싱 데이터의 출처에 따라 플래그 비트(Flag)를 설정할 수 있다. 캐시 컨트롤러(110)는 캐시 메모리(120) 내에 비어 있는 캐시 엔트리가 존재하지 않는 경우 희생 캐시 엔트리를 결정하여, 희생 캐시 엔트리에 요청 데이터를 저장하고 플래그(Flag)를 설정하는 캐시 교체 동작을 수행할 수 있다.
희생 캐시 엔트리를 결정하기 위하여, 캐시 컨트롤러(110)는 캐시 미스에 의해 요청 데이터를 제 1 메모리 장치(141) 또는 제 2 메모리 장치(13)에서 리드한 횟수인 출처별 캐시 미스율과, 캐싱 데이터의 출처별 캐시 점유율을 참조할 수 있다.
캐시 미스에 의해 프로세서(100)의 요청 데이터를 메인 메모리 장치(140)로부터 리드하는 경우 캐시 컨트롤러(110)는 캐시 미스인 데이터를 제 1 메모리 장치(141)로부터 리드한 제 1 미스 횟수 및, 캐시 미스인 데이터를 제 2 메모리 장치(143)로부터 리드한 제 2 미스 횟수에 기초하여 출처별 캐시 미스율을 산출할 수 있다.
예를 들어, 캐시 미스인 요청 데이터를 제 1 메모리 장치(141)로부터 리드한 횟수인 제 1 미스 횟수가 10회이고, 제 2 메모리 장치(143)로부터 리드한 횟수인 제 2 미스 횟수가 20회인 경우를 가정한다. 이 때, 출처가 제 1 메모리 장치(141)인 요청 데이터의 캐시 미스율은 제 2 미스 횟수를 기준으로 10/20=1/2로 계산될 수 있다. 다른 실시예에서, 출처가 제 1 메모리 장치(141)인 요청 데이터의 캐시 미스율은 전체 미스 횟수(제 1 미스 횟수+제 2 미스 횟수=30)를 기준으로 10/30=1/3로 계산될 수 있다.
각 캐시 엔트리(Entry 0, Entry 1, Entry 2, …)마다 캐싱 데이터의 출처를 나타내는 플래그 비트(Flag)를 부여되므로, 캐시 컨트롤러(110)는 캐시 메모리(120)에 저장된 캐싱 데이터의 출처별 캐시 점유율을 산출할 수 있다. 예를 들어, 7개의 캐시 엔트리에 데이터가 캐싱되어 있고, 이 중 5개의 캐시 엔트리에는 제 1 메모리 장치(141)로부터 제공된 데이터가, 2개의 캐시 엔트리에는 제 2 메모리 장치(143)로부터 제공된 데이터가 캐싱된 상황을 가정한다. 이 때, 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 점유율은 출처가 제 2 메모리 장치(143)인 캐싱 데이터의 개수를 기준으로 5/2=2.5로 계산될 수 있다. 다른 실시예에서, 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 점유율은 전체 캐시 엔트리의 개수(n+1)를 기준으로 5/(n+1)로 계산될 수 있다.
캐시 컨트롤러(100)는 출처가 제 1 메모리 장치(141)인 요청 데이터의 캐시 미스율(예를 들어, 1/2)이 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 캐시 점유율보다 작은 경우(5/2), 출처가 제 1 메모리 장치(141)인 데이터의 캐시 점유율 대비 캐시 미스가 적게 발생하고 있는 것으로, 다른 관점에서는 출처가 제 2 메모리 장치(143)인 데이터의 캐시 미스가 많이 발생하고 있는 것으로 판단할 수 있다. 이에 따라, 출처가 제 1 메모리 장치(141)인 캐싱 데이터를 캐시 메모리(120)로부터 축출할 것으로 결정할 수 있다. 그리고, 출처가 제 1 메모리 장치(141)인 캐시 엔트리 중 적어도 하나의 캐시 엔트리를 희생 엔트리로 선택할 수 있다. 희생 엔트리를 선택하기 위하여 예를 들어 LRU(Least Recently Used) 방식을 이용할 수 있으나, 이에 한정되지 않으며, 랜덤 방식, FIFO(First In First Out) 방식, LFU(Least Frequency Used) 방식 등 다양한 방식이 이용될 수 있다.
한편, 제 1 메모리 장치(141)에 저장된 데이터에 대한 캐시 미스율이 제 1 메모리 장치(141)에 저장된 데이터에 대한 캐시 점유율보다 큰 경우에는 제 1 메모리 장치(141)에 저장된 데이터에 대한 미스율이 높은 것으로 판단하여, 출처가 제 2 메모리 장치(143)인 캐싱 데이터를 캐시 메모리(120)로부터 축출할 수 있다.
제 1 메모리 장치(141)에 대한 캐시 미스율과 캐시 점유율이 동일한 경우에는, 캐싱 데이터의 출처를 고려하지 않고 희생 엔트리를 결정할 수 있다.
도 3은 일 실시예에 의한 캐시 컨트롤러의 구성도이다.
도 3을 참조하면, 일 실시예에 의한 캐시 컨트롤러(110)는 히트/미스 판단 회로(111), 미스 횟수 관리 회로(113), 점유율 관리 회로(115), 희생 엔트리 결정 회로(117) 및 캐싱 처리 회로(119)를 포함할 수 있다.
히트/미스 판단 회로(111)는 프로세서(100)의 데이터 요청에 포함된 액세스 어드레스와 캐시 엔트리의 태그 비트를 비교하여 요청 데이터가 캐시 메모리(120)에 존재하는지 판단할 수 있다. 히트/미스 판단 회로(111)는 요청 데이터가 캐시 메모리(120)에 존재하면 캐시 히트 신호를 출력할 수 있다. 요청 데이터가 캐시 메모리(120)에 존재하지 않으면 캐시 미스 신호를 출력하고, 메모리 컨트롤러(130)로 데이터 요청을 전송할 수 있다.
캐시 미스인 경우 미스 횟수 관리 회로(113)는 요청 데이터가 저장된 메인 메모리 장치(140)의 종류에 따라 미스 횟수를 카운트하고, 출처별 캐시 미스율을 계산할 수 있다. 출처별 캐시 미스율은 캐시 미스에 의해 요청 데이터를 제 2 메모리 장치(143)에서 리드한 횟수에 대한 제 1 메모리 장치(141)에서 리드한 횟수 또는 그 역수, 또는 전체 캐시 미스 횟수에 대한 요청 데이터를 제 1 또는 제 2 메모리 장치(141, 143)에서 리드한 횟수 등으로 결정될 수 있다.
점유율 관리 회로(115)는 캐시 메모리(120)에 저장된 캐싱 데이터의 출처별 캐시 점유율을 산출할 수 있다. 출처별 캐시 점유율은 출처가 제 2 메모리 장치(143)인 캐싱 데이터에 대한 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 비율 또는 그 역수, 또는 전체 캐싱 데이터에 대한 출처가 제 1 또는 제 2 메모리 장치(141, 143)인 캐싱 데이터의 비율로 결정될 수 있다.
희생 엔트리 결정 회로(117)는 캐시 미스에 따라 메인 메모리 장치(140)에서 리드한 데이터를 저장할 빈 캐시 엔트리가 존재하지 않는 경우 축출할 캐시 엔트리를 결정하도록 구성될 수 있다. 희생 캐시 엔트리를 결정하기 위하여, 희생 엔트리 결정 회로(117)는 출처별 캐시 미스율과, 출처별 캐시 점유율을 참조할 수 있다.
일 실시예에서, 희생 엔트리 결정 회로(117)는 출처가 제 1 메모리 장치(141)인 요청 데이터의 캐시 미스율이 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 캐시 점유율보다 작은 경우, 출처가 제 1 메모리 장치(141)인 데이터의 캐시 점유율 대비 캐시 미스가 적게 발생하고 있는 것으로, 다른 관점에서는 출처가 제 2 메모리 장치(143)인 데이터의 캐시 미스가 많이 발생하고 있는 것으로 판단할 수 있다. 이에 따라, 희생 엔트리 결정 회로(117)는 출처가 제 1 메모리 장치(141)인 캐싱 데이터를 캐시 메모리(120)로부터 축출할 것으로 결정할 수 있다. 그리고, 출처가 제 1 메모리 장치(141)인 캐시 엔트리 중 적어도 하나의 캐시 엔트리를 희생 엔트리로 선택할 수 있다. 희생 엔트리를 선택하기 위하여 예를 들어 LRU(Least Recently Used) 방식을 이용할 수 있으나, 이에 한정되지 않으며, 랜덤 방식, FIFO(First In First Out) 방식, LFU(Least Frequency Used) 방식 등 다양한 방식이 이용될 수 있다.
캐싱 처리 회로(119)는 캐시 메모리(120) 내의 빈 캐시 엔트리 또는 희생 캐시 엔트리에 메인 메모리 장치(141)로부터 제공되는 데이터를 캐싱하고, 캐싱 데이터의 출처에 따라 플래그 비트(Flag)를 설정할 수 있다.
도 4는 일 실시예에 의한 컴퓨터 시스템의 동작 방법을 설명하기 위한 흐름도이다.
캐시 컨트롤러(110)는 대기 중에, 프로세서(100)로부터 데이터 액세스 요청이 수신되는지 확인할 수 있다(S101). 데이터 액세스 요청이 수신되지 않은 경우 대기 상태를 유지할 수 있다(S101:N).
데이터 액세스 요청이 수신되는 경우(S101:Y), 캐시 컨트롤러(110)는 프로세서(100)의 데이터 액세스 요청에 대응하는 데이터가 캐시 메모리(120)에 존재하는지, 즉 캐시 히트인지 확인할 수 있다(S103). 예를 들어, 캐시 컨트롤러(110)는 데이터 액세스 요청에 포함된 액세스 어드레스와 캐시 엔트리의 태그 비트를 비교하여 요청 데이터가 캐시 메모리(120)에 존재하는지 판단할 수 있다.
요청 데이터가 캐시 메모리(120)에 존재하는 캐시 히트 인 경우(S103:Y), 캐시 컨트롤러(110)는 캐시 메모리(120)에서 요청 데이터를 리드하여 프로세서(100)로 제공할 수 있다(S117).
요청 데이터가 캐시 메모리(120)에 존재하지 않는 캐시 미스인 경우(S103:N), 캐시 컨트롤러(110)는 요청 데이터가 저장된 메인 메모리 장치(140)의 종류에 따라 미스 횟수를 카운트할 수 있다(S105). 그리고, 캐시 컨트롤러(110)는 캐시 미스에 따라 메인 메모리 장치(140)로부터 리드되는 데이터를 캐싱할 수 있는 비어 있는 캐시 엔트리가 존재하는지 확인할 수 있다(S107).
빈 캐시 엔트리가 존재하지 않는 경우(S107:N), 캐시 컨트롤러(110)는 요청 데이터를 저장하기 위한 희생 캐시 엔트리를 결정할 수 있다(S109). 희생 캐시 엔트리를 결정하기 위하여, 캐시 컨트롤러(110)는 출처별 캐시 미스율과, 출처별 캐시 점유율을 참조할 수 있으며, 구체적인 설명은 도 5를 참조하여 후술할 것이다.
희생 캐시 엔트리가 결정된 후, 또는 빈 캐시 엔트리가 존재하는 경우(S107:Y), 캐시 컨트롤러(110)는 메인 메모리 장치(141)로부터 요청 데이터를 수신하고(S111), 수신된 요청 데이터를 희생 캐시 엔트리 또는 빈 캐시 엔트리에 캐싱하는 한편, 캐싱 데이터의 출처에 따라 플래그 비트(Flag)를 설정할 수 있다(S113).
새로운 데이터가 캐시 엔트리에 저장됨에 따라, 캐시 컨트롤러(110)는 출처별 캐시 점유율을 갱신한다(S115). 그리고, 요청 데이터를 프로세서(100)로 전송한 후(S117) 대기할 수 있다.
도 5는 일 실시예에 의한 컴퓨터 시스템의 동작 방법을 설명하기 위한 흐름도이다.
도 5는 도 4에 도시한 희생 캐시 엔트리 결정 과정(S109)의 일 예를 나타낸다.
도 5를 참조하면, 캐시 컨트롤러(110)는 출처별 캐시 미스율을 계산할 수 있다(S201). 출처별 캐시 미스율은 캐시 미스에 의해 요청 데이터를 제 2 메모리 장치(143)에서 리드한 횟수에 대한 제 1 메모리 장치(141)에서 리드한 횟수 또는 그 역수, 또는 전체 캐시 미스 횟수에 대한 요청 데이터를 제 1 또는 제 2 메모리 장치(141, 143)에서 리드한 횟수 등으로 결정될 수 있다.
캐시 컨트롤러(110)는 캐시 메모리(120)에 저장된 캐싱 데이터의 출처별 캐시 점유율을 산출할 수 있다(S203). 출처별 캐시 점유율은 출처가 제 2 메모리 장치(143)인 캐싱 데이터에 대한 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 비율 또는 그 역수, 또는 전체 캐싱 데이터에 대한 출처가 제 1 또는 제 2 메모리 장치(141, 143)인 캐싱 데이터의 비율로 결정될 수 있다.
캐시 컨트롤러(110)는 출처별 캐시 미스율과, 출처별 캐시 점유율을 참조하여 축출 대상 캐시 엔트리의 출처를 결정할 수 있다(S205). 일 실시예에서, 캐시 컨트롤러(110)는 요청 데이터 또는 캐싱 데이터의 출처별로, 캐시 미스율과 캐시 점유율을 비교하여 축출 대상 캐시 엔트리의 출처를 결정할 수 있다.
예를 들어, 출처가 제 1 메모리 장치(141)인 요청 데이터의 캐시 미스율이 출처가 제 1 메모리 장치(141)인 캐싱 데이터의 캐시 점유율보다 작은 경우, 출처가 제 1 메모리 장치(141)인 데이터의 캐시 점유율에 비해 캐시 미스가 적게 발생하여 출처가 제 2 메모리 장치(143)인 데이터의 캐시 미스가 많이 발생하고 있는 것으로 판단할 수 있다. 따라서, 캐시 컨트롤러(110)는 출처가 제 1 메모리 장치(141)인 캐싱 데이터를 캐시 메모리(120)로부터 축출할 것으로 결정할 수 있다.
축출 대상 캐시 엔트리의 출처가 결정되면, 캐시 컨트롤러(110)는 결정된 출처를 갖는 캐시 엔트리 중 적어도 하나의 캐시 엔트리를 희생 엔트리로 선택할 수 있다(S207). 희생 엔트리를 선택하기 위하여 예를 들어 LRU(Least Recently Used) 방식을 이용할 수 있으나, 이에 한정되지 않으며, 랜덤 방식, FIFO(First In First Out) 방식, LFU(Least Frequency Used) 방식 등 다양한 방식이 이용될 수 있다. 예를 들어, 제 1 메모리 장치(141)로부터 캐시 메모리(120)에 캐싱된 데이터 중 가장 오랫동안 접근되지 않은 캐시 엔트리를 희생 캐시 엔트리로 선택할 수 있다.
따라서, 캐시 미스가 빈번한 메인 메모리 장치로부터의 데이터의 캐시 점유율을 높여 캐시 적중률을 증가시킬 수 있고 시스템 성능이 향상될 수 있다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10 : 컴퓨터 시스템
100 : 프로세서
110 : 캐시 컨트롤러
120 : 캐시 메모리
130 : 메모리 컨트롤러
140 : 메인 메모리

Claims (11)

  1. 프로세서;
    제 1 메모리 장치;
    상기 제 1 메모리 장치와 액세스 레이턴시가 상이한 제 2 메모리 장치;
    복수의 캐시 엔트리로 구성되고, 상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치로부터 제공되는 캐싱 데이터를 캐시 엔트리에 저장하는 캐시 메모리; 및
    상기 캐싱 데이터를 제공한 출처를 관리하고, 상기 프로세서의 요청 데이터가 상기 캐시 메모리에 존재하지 않음에 따라 상기 요청 데이터를 상기 제 1 메모리 장치 또는 제 2 메모리 장치로부터 리드한 출처별 캐시 미스율과 출처별 캐시 점유율에 기초하여 축출 대상 캐시 엔트리를 결정하도록 구성되는 캐시 컨트롤러;
    를 포함하도록 구성되는 컴퓨터 시스템.
  2. 제 1 항에 있어서,
    상기 캐시 컨트롤러는,
    상기 요청 데이터를 상기 제 1 메모리 장치로부터 리드한 제 1 미스 횟수와 상기 요청 데이터를 상기 제 2 메모리 장치로부터 리드한 제 2 미스 횟수에 기초하여 상기 출처별 캐시 미스율을 결정하도록 구성되는 컴퓨터 시스템.
  3. 제 1 항에 있어서,
    상기 캐시 컨트롤러는
    상기 제 1 메모리 장치에 저장된 데이터에 대한 캐시 미스율이 상기 제 1 메모리 장치에 저장된 데이터에 대한 캐시 점유율보다 작은 경우, 출처가 상기 제 1 메모리 장치인 캐시 엔트리 중 적어도 하나를 상기 캐시 메모리로부터 축출하도록 구성되는 컴퓨터 시스템.
  4. 제 1 항에 있어서,
    상기 캐시 컨트롤러는,
    상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치에 저장된 데이터에 대한 캐시 미스율과 캐시 점유율이 동일한 경우, 출처와 무관한 적어도 하나의 캐시 엔트리를 상기 캐시 메모리로부터 축출하도록 구성되는 컴퓨터 시스템.
  5. 제 1 메모리 장치 및 상기 제 2 메모리 장치와 이종인 제 2 메모리 장치를 포함하는 메인 메모리 장치;
    복수의 캐시 엔트리를 포함하고, 상기 메인 메모리 장치로부터 제공되는 캐싱 데이터와 상기 캐싱 데이터의 출처를 적어도 하나의 캐시 엔트리에 저장하고, 데이터 액세스 요청에 대응하는 요청 데이터를 출력하는 캐시 메모리; 및
    상기 캐시 메모리에 존재하지 않는 상기 요청 데이터가 상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치에서 리드되는 횟수를 상기 요청 데이터가 리드된 출처별로 카운트한 미스 횟수와, 상기 캐싱 데이터의 출처에 따른 캐시 점유율을 비교하여, 상기 캐시 점유율 대비 상기 미스 횟수가 작은 출처의 상기 메인 메모리 장치로부터 제공된 상기 캐싱 데이터를 상기 캐시 메모리로부터 축출하는 캐시 컨트롤러;
    를 포함하도록 구성되는 컴퓨터 시스템.
  6. 제 5 항에 있어서,
    상기 캐시 메모리는 복수 레벨로 구성되는 컴퓨터 시스템.
  7. 제 5 항에 있어서,
    상기 제 1 메모리 장치와 상기 제 2 메모리 장치는 액세스 레이턴시가 상이한 컴퓨터 시스템.
  8. 캐시 메모리를 제어하는 캐시 컨트롤러를 포함하는 컴퓨터 시스템의 동작 방법으로서,
    캐시 컨트롤러가, 제 1 메모리 장치 또는 상기 제 1 메모리 장치와 이종인 제 2 메모리 장치로부터 제공되는 캐싱 데이터와 상기 캐싱 데이터의 출처를 복수의 캐시 엔트리 중 적어도 하나에 저장하는 단계;
    프로세서의 요청 데이터가 상기 캐시 메모리에 존재하지 않음에 따라 상기 요청 데이터를 상기 제 1 메모리 장치 또는 제 2 메모리 장치로부터 리드하는 단계; 및
    상기 리드한 데이터를 캐싱할 빈 캐시 엔트리가 존재하지 않는 경우, 상기 요청 데이터가 리드된 출처별 캐시 미스율과, 상기 캐싱 데이터의 출처별 캐시 점유율에 기초하여 축출 대상 캐시 엔트리를 결정하는 단계;
    를 포함하도록 구성되는 컴퓨터 시스템의 동작 방법.
  9. 제 8 항에 있어서,
    상기 축출 대상 캐시 엔트리를 결정하는 단계는,
    상기 요청 데이터를 상기 제 1 메모리 장치로부터 리드한 제 1 미스 횟수와 상기 요청 데이터를 상기 제 2 메모리 장치로부터 리드한 제 2 미스 횟수에 기초하여 상기 출처별 캐시 미스율을 결정하는 단계를 포함하도록 구성되는 컴퓨터 시스템의 동작 방법.
  10. 제 8 항에 있어서,
    상기 축출 대상 캐시 엔트리를 결정하는 단계는,
    상기 제 1 메모리 장치에 저장된 데이터에 대한 캐시 미스율이 상기 제 1 메모리 장치에 저장된 데이터에 대한 캐시 점유율보다 작은 경우, 출처가 상기 제 1 메모리 장치인 캐시 엔트리 중 적어도 하나를 상기 캐시 메모리로부터 축출하는 단계를 포함하도록 구성되는 컴퓨터 시스템의 동작 방법.
  11. 제 8 항에 있어서,
    상기 축출 대상 캐시 엔트리를 결정하는 단계는,
    상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치에 저장된 데이터에 대한 캐시 미스율과 캐시 점유율이 동일한 경우, 출처와 무관한 적어도 하나의 캐시 엔트리를 상기 캐시 메모리로부터 축출하는 단계를 포함하도록 구성되는 컴퓨터 시스템의 동작 방법.
KR1020220150725A 2022-11-11 2022-11-11 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법 KR20240069323A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220150725A KR20240069323A (ko) 2022-11-11 2022-11-11 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법
US18/311,896 US20240160574A1 (en) 2022-11-11 2023-05-04 Computer system including a main memory device with heterogeneous memories and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220150725A KR20240069323A (ko) 2022-11-11 2022-11-11 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20240069323A true KR20240069323A (ko) 2024-05-20

Family

ID=91028025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220150725A KR20240069323A (ko) 2022-11-11 2022-11-11 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법

Country Status (2)

Country Link
US (1) US20240160574A1 (ko)
KR (1) KR20240069323A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8417891B2 (en) * 2008-12-15 2013-04-09 Intel Corporation Shared cache memories for multi-core processors

Also Published As

Publication number Publication date
US20240160574A1 (en) 2024-05-16

Similar Documents

Publication Publication Date Title
US7757045B2 (en) Synchronizing recency information in an inclusive cache hierarchy
US10019369B2 (en) Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US20170235681A1 (en) Memory system and control method of the same
US8473689B2 (en) Predictive sequential prefetching for data caching
US8612692B2 (en) Variable write back timing to nonvolatile semiconductor memory
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US10725923B1 (en) Cache access detection and prediction
US7577793B2 (en) Patrol snooping for higher level cache eviction candidate identification
EP0470734A1 (en) Cache memory management system
CN111344684A (zh) 多层缓存安置机制
US10929308B2 (en) Performing maintenance operations
US20030061450A1 (en) List based method and apparatus for selective and rapid cache flushes
WO2005015408A1 (en) A method of data caching
US20100217937A1 (en) Data processing apparatus and method
US10120806B2 (en) Multi-level system memory with near memory scrubbing based on predicted far memory idle time
US20170168957A1 (en) Aware Cache Replacement Policy
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US6959363B2 (en) Cache memory operation
EP4078387A1 (en) Cache management based on access type priority
WO2010032433A1 (ja) バッファメモリ装置、メモリシステム及びデータ読出方法
US10831673B2 (en) Memory address translation
US20190243778A1 (en) Memory address translation
KR20240069323A (ko) 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US7143239B2 (en) Cache structure and methodology