KR101976320B1 - 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 - Google Patents

라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 Download PDF

Info

Publication number
KR101976320B1
KR101976320B1 KR1020180047991A KR20180047991A KR101976320B1 KR 101976320 B1 KR101976320 B1 KR 101976320B1 KR 1020180047991 A KR1020180047991 A KR 1020180047991A KR 20180047991 A KR20180047991 A KR 20180047991A KR 101976320 B1 KR101976320 B1 KR 101976320B1
Authority
KR
South Korea
Prior art keywords
cache
buffer
data
memory
cache memory
Prior art date
Application number
KR1020180047991A
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 KR1020180047991A priority Critical patent/KR101976320B1/ko
Application granted granted Critical
Publication of KR101976320B1 publication Critical patent/KR101976320B1/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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Abstract

본 실시예에 따른 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법은 메인 메모리로부터 캐시 데이터를 페치하여 캐시 블록 단위로 저장하는 캐시 메모리 모듈, 캐시 메모리 모듈에서 축출되는 캐시 블록들을 임시 저장하는 빅팀 버퍼, 빅팀 버퍼에 누적 저장된 캐시 블록들의 용량이 기지정된 기준 용량 이상이면, 캐시 블록들을 각각 적어도 하나의 캐시 블록을 포함하는 k개의 클러스터로 KM 클러스터링하고, k개의 클러스터 중 다수의 캐시 블록을 포함하는 적어도 하나의 클러스터를 선택하는 KM 클러스터링 엔진 및 KM 클러스터링 엔진에서 선택된 적어도 하나의 클러스터를 각각 클러스터 그룹으로 저장하는 KM 버퍼를 포함한다.

Description

라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법{LAST LEVEL CACHE MEMORY AND DATA MANAGEMENT METHOD THEREOF}
본 발명은 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법에 관한 것으로, 특히 KM 클러스터링을 이용하여 캐시 데이터 재사용성을 높인 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법에 관한 것이다.
최근 대용량 데이터의 실시간 처리에 대한 요구가 증가되고 있으며, 기존에 비해 다양한 데이터 생성 소스가 존재함에 따라 데이터량이 더 많아지고 복잡해지는 경향이 있다.
특히 대용량 서버에서는 복잡한 워크로드의 실행과 빅데이터의 처리로 인해 메모리 액세스의 지역성이 낮아졌으며, 액세스 패턴을 예측하기 힘들어졌다. 이로 인해 프로세서와 메모리 사이의 속도 차이를 줄여주는 역할을 하는 캐시의 역할이 더욱 중요해지고 있다. 그리고 현재는 캐시가 계층 구조를 갖는 멀티 레벨 캐시가 주로 이용되고 있다. 멀티 레벨 캐시는 계층적 액세스 속도를 제공하여, 프로세서와 메모리 사이의 속도 차로 인해 발생할 수 있는 지연 시간을 더욱 완화해 줄 수 있도록 한다.
멀티 레벨 캐시에서 마지막 레벨에 위치하는 라스트 레벨 캐시(Last Level Cache: 이하 LLC)는 캐시 중에서 가장 큰 용량을 가지며, LLC 이후로는 액세스 속도 차가 현저한 주 메모리로 액세스해야 한다는 점 때문에 특히 높은 성능이 요구된다.
그러나 상기한 바와 같이, 액세스 패턴 예측의 어려움과 메모리 액세스의 낮은 지역성으로 인해 LLC가 충분히 효과적으로 사용되지 못하고 있으며, 이로 인해 메모리 액세스 대기 시간이 증가되고 있다.
한국 공개 특허 제10-2013-0143233호 (2013.12.31 공개)
본 발명의 목적은 적중률을 향상시킬 수 있는 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법을 제공하는데 있다.
본 발명의 다른 목적은 메모리의 실행 시간을 줄일 수 있는 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법을 제공하는데 있다.
본 발명의 또 다른 목적은 소비 전력을 줄일 수 있는 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 예에 따른 라스트 레벨 캐시 메모리는 메인 메모리로부터 데이터를 페치하여 캐시 블록 단위로 저장하는 캐시 메모리 모듈; 상기 캐시 메모리 모듈에서 축출되는 캐시 블록들을 임시 저장하는 빅팀 버퍼; 상기 빅팀 버퍼에 누적 저장된 상기 캐시 블록들의 용량이 기지정된 기준 용량 이상이면, 상기 캐시 블록들을 각각 적어도 하나의 캐시 블록을 포함하는 k개의 클러스터로 KM 클러스터링하고, 클러스터링된 k개의 클러스터 중 다수의 캐시 블록을 포함하는 적어도 하나의 클러스터를 선택하는 KM 클러스터링 엔진; 및 상기 KM 클러스터링 엔진에서 선택된 적어도 하나의 클러스터를 각각 클러스터 그룹으로서 인가받아 저장하는 KM 버퍼를 포함한다.
상기 목적을 달성하기 위한 본 발명의 다른 예에 따른 라스트 레벨 캐시 메모리의 데이터 관리 방법은 메인 메모리로부터 페치 또는 프리페치된 데이터를 캐시 블록 단위로 저장하는 캐시 메모리 모듈, 빅팀 버퍼, KM 클러스터링 엔진 및 KM 버퍼를 포함하는 라스트 레벨 캐시 메모리의 데이터 관리 방법에 있어서, 상기 캐시 메모리 모듈에서 축출되는 캐시 블록들을 상기 빅팀 버퍼에 임시 저장하는 단계; 상기 빅팀 버퍼에 누적 저장된 상기 캐시 블록들의 용량이 기지정된 기준 용량 이상이면, 상기 캐시 블록들을 각각 적어도 하나의 캐시 블록을 포함하는 k개의 클러스터로 KM 클러스터링하는 단계; 상기 k개의 클러스터 중 다수의 캐시 블록을 포함하는 적어도 하나의 클러스터를 선택하는 단계; 및 상기 KM 클러스터링 엔진에서 선택된 적어도 하나의 클러스터를 각각 클러스터 그룹으로서 상기 KM 버퍼에 저장하는 단계를 포함한다.
따라서, 본 발명의 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법은 KM 클러스터링 기법을 이용하여 재사용 가능성이 높은 캐시 블록의 지역성을 높임으로써, 적중률을 향상시키고 메모리 실행 시간을 줄일 수 있으며, 전력 소비를 저감할 수 있다.
도1 은 본 발명의 일 실시예에 따른 라스트 레벨 캐시 메모리 시스템의 구조를 나타낸다.
도2 는 대용량 데이터베이스 어플리케이션에서 액세스 요청 횟수와 데이터 블록의 메인 메모리 주소에 따른 액세스 패턴의 일예를 나타낸다.
도3 은 도2 의 액세스 패턴을 KM 클러스터링하여 획득된 클러스터들 각각에 대한 액세스 패턴의 일예를 나타낸다.
도4 는 발명의 일 실시예에 따른 라스트 레벨 캐시 메모리의 데이터 관리 방법을 나타낸다.
도5 는 도4 의 캐시 데이터 검색 단계의 일예를 상세하게 나타낸다.
도6 은 캐시 메모리 모듈에서 페치 파트 블록과 프리페치 파트 블록 변화에 따른 라스트 레벨 캐시의 성능 변화에 대한 시뮬레이션 결과를 나타낸다.
도7 은 캐시 메모리 모듈(CMM)에 대비한 KM 버퍼의 용량에 따른 라스트 레벨 캐시의 성능 변화에 대한 시뮬레이션 결과를 나타낸다.
도8 은 빅팀 버퍼의 크기에 따른 액세스 대기 시간의 변화에 대한 시뮬레이션 결과를 나타낸다.
도9 는 k값의 변화에 따른 액세스 대기 시간의 변화에 대한 시뮬레이션 결과를 나타낸다.
도10 및 도11 은 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리와 다른 라스트 레벨 캐시 메모리의 성능을 비교한 결과를 나타낸다.
도12 는 낸드 플래시 메모리 기반 하이브리드 메모리가 메인 메모리로 이용되는 경우, 쓰기 횟수 비교 결과를 나타낸다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도1 은 본 발명의 일 실시예에 따른 라스트 레벨 캐시 메모리 시스템의 구조를 나타낸다.
도1 에 도시된 바와 같이, 라스트 레벨 캐시 메모리(LLC)는 메모리 버스(Memory Bus)를 통해 메인 메모리(Main Memory: MM)로 액세스하여 캐시할 데이터를 획득하거나, 라스트 레벨 캐시 캐시 메모리(LLC)에서 불필요한 것으로 판단되는 데이터를 폐기하거나 메인 메모리(MM)에 저장한다.
여기서 메인 메모리(MM)는 일반적으로 DRAM(dynamic random access memory)일 수 있으나, 경우에 따라서는 NAND 플래시 메모리(NAND Flash Memory)나 상변화 메모리(Phase-Change Memory, PCM)일 수도 있다. 또한 서로 다른 종류의 메모리가 결합된 하이브리드 메모리(Hybrid Memory)일 수 있다. 일 예로 메인 메모리(MM)는 NAND 플래시 메모리와 함께 NAND 플래시 메모리와 라스트 레벨 캐시 메모리(LLC) 사이의 속도 차이를 완화하기 위해 DRAM을 버퍼 메모리로 이용하는 하이브리드 메모리로 구성될 수 있다.
그리고 본 발명의 실시예에 따른 라스트 레벨 캐시 메모리(LLC)는 캐시 메모리 모듈(Cache Memory Module: CMM)과 빅팀 버퍼(Victim Buffer: VB), KM 클러스터링 엔진(KM clustering engine: KME) 및 KM 버퍼(KMB)를 포함할 수 있다.
캐시 메모리 모듈(CMM)은 라스트 레벨 캐시 메모리(LLC)의 캐시 데이터를 저장한다. 캐시 메모리 모듈(CMM)은 프로세서에 의해 요청된 데이터 및/또는 인접 데이터를 메인 메모리(MM)로부터 페치(fetching) 및/또는 프리페치(prefetching)하여 캐시 데이터로서 저장하고, 저장된 캐시 데이터를 제1 레벨 캐시 메모리(L1 memory) 또는 제2 레벨 캐시 메모리(L2 memory)와 상위 레벨의 캐시 메모리로 전송할 수 있다. 그리고 설정된 알고리즘에 따라 저장된 캐시 데이터 중 사용 가능성이 낮은 캐시 데이터를 선택하여 축출한다. 본 실시예에 따른 캐시 메모리 모듈(CMM)은 축출된 캐시 데이터를 빅팀 버퍼(VB)로 전송한다.
캐시 메모리 모듈(CMM)은 일예로 HeLM(Heterogeneous LLC Management), TAP(Tead-Level Prallelism aware cache management policy), LRU(Least Recently Used), LFU(Least Frequently Used), FIFO(First In First Out) 등의 알고리즘을 이용하여 빅팀 버퍼(VB)로 전송할 캐시 데이터를 선택할 수 있으나, 이에 한정되지 않는다.
본 실시예에서 캐시 메모리 모듈(CMM)은 캐시 데이터의 공간 지역성(spatial locality)을 향상시키기 위해, 캐시 데이터를 기지정된 캐시 블록(cache block, 또는 캐시 라인(cache line)이라고도 함) 단위로 저장하거나 전송할 수 있다.
또한 본 발명의 실시예에서 캐시 메모리 모듈(CMM)은 N(여기서 N은 자연수)개의 캐시 블록(cache block)에 대해 세트(set)로 인덱스가 할당되는 N way 세트 연관 캐시(set-associative cache)인 것으로 가정한다.
뿐만 아니라, 캐시 메모리 모듈(CMM)은 N way 세트의 N개의 캐시 블록 중 페치 데이터를 저장하는 캐시 블록인 페치 파트(Fetching Part) 블록과 프리페치 데이터를 저장하는 캐시 블록인 프리페치 파트(Prefetching Part) 블록을 구분할 수 있는 세트 분할가능 캐시(set divisible cache)일 수 있다. 여기서 N개의 캐시 블록에서 페치 파트 블록과 프리페치 파트 블록의 개수는 조절될 수 있다.
캐시 메모리 모듈(CMM)이 세트 분할가능 캐시인 경우, 페치 파트 블록은 기존의 라스트 레벨 캐시 메모리(LLC)와 같이 프로세서에서 요구되는 데이터를 페치하여 저장하고, 프리페치 파트 블록은 캐시 미스(cache miss)가 발생하면, 캐시 미스가 발생한 블록의 다음 주소에 대응하는 블록을 프리페치하여 저장할 수 있다. 즉 캐시 미스가 발생되면, 요구된 데이터를 페치할 뿐만 아니라, 페치된 데이터 주변 데이터를 함께 프리페치할 수 있다.
캐시 메모리 모듈(CMM) 내에 페치 파트 블록과 프리페치 파트 블록이 모두 포함됨에 따라 라스트 레벨 캐시 메모리(LLC)가 프리페치 버퍼를 별도로 구비하지 않아도 되어, 프리페치 버퍼로부터 캐시 블록을 읽어오는 시간과 전력 소비를 줄일 수 있을 뿐만 아니라, 캐시 데이터의 공간 지역성(spatial locality)을 충분히 활용할 수 있도록 한다.
캐시 메모리 모듈(CMM)은 일예로 고속으로 데이터 읽기/쓰기가 가능한 SRAM(static random access memory)으로 구현될 수 있다.
빅팀 버퍼(VB)는 캐시 메모리 모듈(CMM)에서 축출된 캐시 블록을 임시 저장함으로써, 캐시 블록의 재사용 기회를 제공한다. 캐시 메모리 모듈(CMM)에서 사용 가능성이 낮은 것으로 판단되어 축출된 캐시 블록일지라도, 이는 캐시 메모리 모듈(CMM)의 제한된 메모리 용량에 의존하여 판단된 결과로서, 축출된 캐시 블록이 다시 요청될 가능성이 있다. 이에 빅팀 버퍼(VB)가 캐시 블록의 재사용 기회를 제공함으로써, 라스트 레벨 캐시 메모리(CMM)의 성능을 향상시킨다. 빅팀 버퍼(VB)는 프로세서에서 요구되는 캐시 블록이 검색되면, 검색된 캐시 블록을 캐시 메모리 모듈(CMM)로 전달하고, 해당 캐시 블록을 폐기한다.
여기서 라스트 레벨 캐시 메모리(LLC)가 캐시 메모리 모듈(CMM)의 용량을 증가시키는 대신 빅팀 버퍼(VB)를 이용하는 것은 상대적으로 속도가 느린 메인 메모리(MM)와 캐시 메모리 모듈(CMM) 사이의 속도 차로 인한 지연을 완화하기 위함이다. 즉 빅팀 버퍼(VB)는 캐시 메모리 모듈(CMM)에서 축출된 캐시 블록을 임시로 저장하고, 축출된 캐시 블록들의 누적 용량이 지정된 용량에 도달하면, 폐기하거나 메인 메모리(MM)에 액세스하여 저장함으로써, 캐시 메모리 모듈(CMM)에서 캐시 블록이 축출될 때마다 메인 메모리(MM)에 액세스함으로써 발생하는 지연을 줄일 수 있도록 한다.
빅팀 버퍼(VB)는 캐시 메모리 모듈(CMM)에서 전송되어 저장된 캐시 블록의 크기가 지정된 용량(예를 들면, 빅팀 버퍼(VB)의 최대 용량)에 도달하면, KM 클러스터링 엔진(KME)으로 클러스터링 요청을 전송한다. 그리고 KM 클러스터링 엔진(KME)에 의해 선택된 캐시 블록(kbl)을 KM 버퍼(KMB)로 전송하고, 선택되지 않은 캐시 블록은 지정된 방식에 따라 폐기하거나 메인 메모리(MM)로 전송한다.
일예로 빅팀 버퍼(VB)는 캐시 블록 각각에 설정된 더티 비트(dirty bits)에 따라 해당 캐시 블록을 폐기하거나 메인 메모리(MM)로 전송할 수 있다. 여기서 더티 비트는 메인 메모리(MM)로부터 라스트 레벨 캐시 메모리(LLC)로 전송된 캐시 블록에 변경된 데이터가 존재하는지 여부에 따라 설정될 수 있다.
한편, KM 클러스터링 엔진(KME)은 빅팀 버퍼(VB)로부터 클러스터링 요청이 전송되면, KM 클러스터링(K-means(KM) clustering) 기법에 따라 빅팀 버퍼(VB) 내에 저장된 다수의 캐시 블록을 k(여기서 k는 자연수)개의 클러스터로 클러스터링한다. KM 클러스터링 기법은 비지도 학습(Unsupervised learning) 기법 중 하나로서, 목표값을 특정하지 않고, 입력값의 상관 관계에 기초하여 클러스터링을 수행하므로, 빅팀 버퍼(VB)에 저장된 다양한 캐시 블록들을 용이하게 클러스터링 할 수 있다.
KM 클러스터링 엔진(KME)은 초기에 랜덤하게 k개의 평균값(클러스터의 중심값)을 설정하고, 다수의 캐시 블록 각각의 유사도 평가 지표가 k개의 평균값 중 가장 가까운 평균값에 클러스터링 되도록 한다.
본 실시예에서, KM 클러스터링 엔진(KME)은 일예로 각 캐시 블록의 물리 메모리 주소를 클러스터링을 수행하기 위한 유사도의 평가 지표로 설정할 수 있다. 즉 다수의 캐시 블록 각각에 대한 물리 메모리 주소의 근접성을 기반으로 클러스터링을 수행할 수 있다.
그리고 각 클러스터에 포함된 캐시 블록의 유사도 평가 지표로부터 설정된 평균값까지의 거리의 평균값을 계산하고, 계산된 평균값에 따라 k개의 평균값을 업데이트한다. KM 클러스터링 엔진(KME)은 k개의 평균값이 수렴할 때까지 업데이트를 반복함으로써, 높은 공간 지역성을 갖는 캐시 블록들을 클러스터링 할 수 있다.
이때 KM 클러스터링 엔진(KME)은 캐시 메모리 모듈(CMM)의 실행 시간 동안 캐시 메모리 모듈(CMM)에서 제거되는 캐시 블록의 메모리 주소를 빅팀 버퍼(VB)에 기록하고, 캐시 메모리 모듈(CMM)의 유휴 시간에 클러스터링을 수행할 수도 있다.
그리고 k개의 클러스터 중 각 클러스터에 포함된 캐시 블록의 개수에 기반하여 지정된 개수의 클러스터를 선택한다. 이를 위해, KM 클러스터링 엔진(KME)은 k개의 클러스터를 캐시 블록이 개수가 많은 클러스터부터 순차적으로 정렬하고, 정렬된 K개의 클러스터 중 상위 지정된 개수의 클러스터를 선택할 수 있다. 여기서는 일예로 KM 클러스터링 엔진(KME)이 k개의 클러스터 중 가장 많은 캐시 블록을 포함하는 하나의 클러스터를 선택하는 것으로 가정한다.
KM 클러스터링 기법은 자체 학습 기법으로, 각 클러스터에 포함된 캐시 블록들은 강한 공간 및 시간 지역성을 갖게 되므로, 선택된 클러스터에 포함된 캐시 블록의 재사용 가능성이 다른 클러스터에 포함된 캐시 블록에 비해 상대적으로 높다.
그리고 빅팀 버퍼(VB)는 KM 클러스터링 엔진(KME)에 의해 선택된 클러스터에 포함된 캐시 블록(kbl)들을 KM 버퍼(KMB)로 전송한다.
도1 에서는 KM 클러스터링 엔진(KME)을 별도로 도시하였으나, 이는 설명의 편의를 위한 것으로 KM 클러스터링 엔진(KME)은 빅팀 버퍼(VB) 또는 KM 버퍼(KMB) 중 하나에 포함되어 구성될 수 있다. KM 클러스터링 엔진(KME)은 빅팀 버퍼(VB) 내에 저장된 캐시 블록을 KM 클러스터링하므로, 효율성을 고려하여 빅팀 버퍼(VB) 내에 포함되는 것이 바람직하다.
또한 빅팀 버퍼(VB)는 KM 버퍼(KMB)에 포함되어 구성될 수 있다. 즉 빅팀 버퍼(VB)는 KM 버퍼의 물리적 저장 공간의 일부를 공유하는 형태로 구현될 수 있다.
예를 들어, KM 버퍼(KMB)의 저장 용량이 8MB이고, 빅팀 버퍼(VB)가 64바이트 용량의 캐시 블록 512개를 저장할 수 있도록 설정된 경우, KM 버퍼(KMB)의 전체 용량 중 32KB(512 * 64 byte)가 빅팀 버퍼(VB)에 할당되고, 나머지를 KM 버퍼(KMB)가 사용하도록 구성될 수 있다.
한편, KM 버퍼(KMB)는 빅팀 버퍼(VB)로부터 전송되는 캐시 블록(kbl)들을 저장한다. 이때 KM 버퍼(KMB)는 KM 클러스터링 엔진(KME)에서 선택된 클러스터 단위로 캐시 블록들을 구분하여 저장한다. 여기서 클러스터 단위로 구분된 캐시 블록들을 클러스터 그룹(CG)이라 한다. 즉 KM 버퍼(KMB)는 각각 다수의 캐시 블록을 포함하는 적어도 하나의 클러스터 그룹(CG)을 저장한다.
상기에서 빅팀 버퍼(VB)에 캐시 블록이 가득 찬 경우에, KM 클러스터링 엔진(KME)이 하나의 클러스터를 선택하는 것으로 가정하였으므로, KM 버퍼(KMB)는 빅팀 버퍼(VB)가 가득차면, 빅팀 버퍼(VB)로부터 하나의 클러스터 그룹(CG)을 전송받아 저장한다.
따라서 적어도 하나의 클러스터 그룹(CG) 각각에 포함되는 캐시 블록의 최대 개수는 빅팀 버퍼(VB)에 저장될 수 있는 캐시 블록의 개수 미만이다.
그리고 KM 버퍼(KMB)는 m(여기서 m은 자연수)개의 클러스터 그룹(CG0 ~ CGm-1)을 저장할 수 있으며, m개를 초과하는 클러스터 그룹이 전송되면, 저장된 클러스터 그룹(CG0 ~ CGm-1) 중 가장 먼저 저장된 클러스터 그룹(예를 들면, CG0)을 먼저 제거할 수 있다. 즉 선입 선출(FIFO) 방식에 따라 클러스터 그룹을 제거할 수 있다.
이때 KM 버퍼(KMB) 또한 빅팀 버퍼(VB)와 마찬가지로, 제거되는 클러스터 그룹에 포함된 캐시 블록(kbl) 각각에 설정된 더티 비트(dirty bits)에 따라 해당 캐시 블록을 폐기하거나 메인 메모리(MM)로 전송할 수 있다.
빅팀 버퍼(VB)는 단지 최근 캐시 메모리 모듈(CMM)에서 축출된 모든 캐시 블록을 임시 저장하는데 반해, KM 버퍼(KMB)는 KM 클러스터링 엔진(KME)에서 선별된 클러스터 그룹(CG0 ~ CGm-1)을 다수로 저장함에 따라, 빅팀 버퍼(VB)에 비해 장기간 캐시 블록을 저장할 수 있다. 일예로 KM 클러스터링 엔진(KME)이 빅팀 버퍼(VB)가 가득 찬 경우에, 1개의 클러스터 그룹을 선택하는 것으로 가정하면, m개의 클러스터링 그룹(CG0 ~ CGm-1)을 저장하는 KM 버퍼(KMB)는 빅팀 버퍼(VB)에 비해 대략 m배 더 긴 시간 동안 캐시 블록을 저장할 수 있다.
결과적으로 도1 에 도시된 본 실시예에 따른 라스트 레벨 캐시 메모리(LLC)는 빅팀 버퍼(VB)가 캐시 메모리 모듈(CMM)에서 축출된 캐시 블록을 임시로 저장하여 캐시 블록의 재사용 기회를 제공할 뿐만 아니라, 빅팀 버퍼(VB)에서 축출되는 캐시 블록에 대해 KM 클러스터링을 수행하여 KM 버퍼(KB)에 선택적으로 캐시 블록을 다시 저장함으로써, 재사용 될 수 있는 기회를 추가로 제공할 수 있다. 즉 빅팀 버퍼(VB)와 KM 버퍼(KB)를 통해 캐시 블록의 재사용 기회를 확장함으로써, 라스트 레벨 캐시 메모리(LLC)의 적중률을 향상시키고 대기시간을 줄일 수 있다. 따라서 상대적으로 동작 속도가 느린 메인 메모리(MM)에 액세스하는 횟수를 줄여 전체 메모리의 실행 속도를 크게 높일 수 있으며, 전력 소비를 줄일 수 있다.
도2 는 대용량 데이터베이스 어플리케이션에서 액세스 요청 횟수와 데이터 블록의 메인 메모리 주소에 따른 액세스 패턴의 일예를 나타내고, 도3 은 도2 의 액세스 패턴을 KM 클러스터링하여 획득된 클러스터들 각각에 대한 액세스 패턴의 일예를 나타낸다.
도2 에서 x축은 액세스 요청 횟수를 나타내고, y축은 캐시 블록의 메인 메모리 주소를 나타낸다. 도2 에 도시된 바와 같이, 대용량 데이터베이스 어플리케이션에서 요청되는 액세스 요청 횟수와 캐시 블록의 메인 메모리 주소 사이의 패턴은 매우 복잡하고 랜덤한 형태로서 예측이 어렵다.
그에 비해 도3 에서는 k를 10으로 설정하여 10개의 클러스터 그룹(CG0 ~ CG9)을 생성하였다. 즉 x축은 클러스터 그룹(CG0 ~ CG9)을 나타낸다. 그리고 10개의 클러스터 그룹(CG0 ~ CG9) 각각에는 적어도 하나의 캐시 블록이 포함된다.
도3 을 참조하면, 액세스된 데이터 블록의 메모리 주소의 대부분이 클러스터 그룹 0(CG0), 클러스터 그룹 1(CG1) 및 클러스터 그룹 7(CG7)에 포함되어 있음을 알 수 있다. 그에 반해, 클러스터 그룹 8(CG8) 및 클러스터 그룹 9(CG9)는 거의 액세스 되지 않음을 알 수 있다.
즉 도3 에 도시된 바와 같이, 메인 메모리(MM)의 메모리 주소를 유사도의 평가 지표로 이용하는 KM 클러스터링은 이전 액세스 패턴에 따라, 메인 메모리의 공간적 핫 영역(hot region)을 구분할 수 있도록 한다. 즉 공간적 지역성이 강하고, 재사용 가능성이 높은 영역을 용이하게 도출할 수 있도록 한다.
도4 는 발명의 일 실시예에 따른 라스트 레벨 캐시 메모리의 데이터 관리 방법을 나타낸다.
도1 을 참조하여 도4 의 라스트 레벨 캐시 메모리의 데이터 관리 방법을 설명하면, 우선, 라스트 레벨 캐시 메모리(LLC)는 프로세서 또는 상위 레벨 캐시 메모리(L1 캐시 메모리 또는 L2 캐시 메모리)로부터 데이터 액세스 요청이 인가되는지 판별한다(S10). 프로세서는 필요한 데이터를 상위 레벨 캐시 메모리에서 검색하고, 상위 레벨 캐시 메모리에 해당 데이터의 캐시 블록이 저장되어 있지 않으면, 라스트 레벨 캐시 메모리(LLC)로 데이터에 대한 액세스를 요청한다.
이에 라스트 레벨 캐시 메모리(LLC)는 요청된 데이터에 대한 캐시 블록이 저장되어 있는지 검색하고, 검색된 캐시 블록을 상위 레벨 캐시 메모리를 통해 프로세서로 전송한다(S20). 라스트 레벨 캐시 메모리(LLC)는 캐시 블록이 검색되지 않으면, 메인 메모리(MM)에 액세스하여 해당 데이터를 캐시 블록으로서 페치할 수 있다. 캐시 블록을 검색하는 단계(S20)의 상세한 설명은 후술하도록 한다.
도4 에서는 데이터 액세스 요청 단계(S10)와 캐시 블록 검색 단계(S20)가 라스트 레벨 캐시 메모리의 데이터 관리 방법에서 우선적으로 실행되는 것으로 도시하였으나, 이는 설명의 편의를 위한 것으로 데이터 액세스 요청 단계(S10)와 캐시 블록 검색 단계(S20)는 도4 의 라스트 레벨 캐시 메모리의 데이터 관리 방법에서 임의의 순서로 실행될 수 있다. 즉 다양한 시점에 실행될 수 있다.
한편, 라스트 레벨 캐시 메모리(LLC)는 미리 지정된 알고리즘에 따라 캐시 메모리 모듈(CMM)에 저장된 캐시 블록들 중 사용 가능성이 낮은 캐시 블록을 선택하여 빅팀 버퍼(VB)로 축출한다. 빅팀 버퍼(VB)는 캐시 메모리 모듈(CMM)에서 축출되는 캐시 블록을 임시로 저장한다(S30).
그리고 빅팀 버퍼(VB)는 저장된 캐시 블록의 용량이 미리 지정된 기준 블록 용량 이상인지 판별한다(S40). 일예로 빅팀 버퍼(VB)는 저장된 캐시 블록의 용량이 빔팀 버퍼(VB)에 저장 가능한 최대 용량 이상인지 판별할 수 있다. 그리고 캐시 블록 각각의 크기는 지정되어 있으므로, 빅팀 버퍼(VB)는 저장된 캐시 블록의 개수가 기준 블록 개수 이상인지를 판별할 수도 있다.
빅팀 버퍼(VB)에 저장된 캐시 블록의 용량이 기준 블록 용량 이상이면, KM 클러스터링 엔진(KME)이 빅팀 버퍼(VB)에 저장된 캐시 블록들을 메모리 주소를 기반으로 하여 KM 클러스터링을 수행한다(S50). 그리고 KM 클러스터링의 수행 결과로 획득되는 k개의 클러스터 그룹 중 기설정된 개수의 클러스터 그룹을 선택한다(S60). 여기서 KM 클러스터링 엔진(KME)은 각각 적어도 하나의 캐시 블록이 포함되는 k개의 클러스터 그룹 중 많은 캐시 블록을 포함하는 기설정된 개수의 클러스터 그룹을 선택할 수 있다.
그리고 KM 버퍼(KMB)는 선택된 클러스터 그룹을 빅팀 버퍼(VB)로부터 인가받아 저장한다(S70). 그리고 빅팀 버퍼(VB)는 저장된 모든 캐시 블록을 축출한다. 이때 빅팀 버퍼(VB)는 캐시 블록 각각의 더티 비트에 설정된 비트값에 따라 캐시 블록을 폐기하거나, 메인 메모리(MM)에 액세스 하여 저장할 수 있다.
한편 KM 버퍼(KMB)는 빅팀 버퍼(VB)로부터 인가되는 클러스터 그룹에 의해, KM 버퍼(KMB)의 저장 용량이 초과되는지 판별한다(S80). 만일 저장 용량을 초과하는 것으로 판별되면, KM 버퍼(KMB)는 가장 먼저 저장된 클러스터 그룹부터 순차적으로 축출하여 새로 인가되는 클러스터 그룹을 저장하기 위한 저장 용량을 확보한다(S90).
이때, KM 버퍼(KMB)는 빅팀 버퍼(VB)와 마찬가지로 축출되는 캐시 블록 각각의 더티 비트에 설정된 비트값에 따라 캐시 블록을 폐기하거나, 메인 메모리(MM)에 액세스 하여 저장할 수 있다.
도5 는 도4 의 캐시 데이터 검색 단계의 일예를 상세하게 나타낸다.
라스트 레벨 캐시 메모리(LLC)로 데이터에 대한 액세스 요청이 인가(S10)되면, 라스트 레벨 캐시 메모리(LLC)는 우선 캐시 메모리 모듈(CMM)에 요청된 데이터에 대한 캐시 블록이 저장되어 있는지 탐색한다(S21). 그리고 캐시 메모리 모듈(CMM)에 해당 캐시 블록이 저장되어 캐시 히트가 발생되는지 판별한다(S22). 만일 캐시 히트가 발생되면, 라스트 레벨 캐시 메모리(LLC)는 해당 캐시 블록을 상위 레벨 캐시 메모리로 전송한다.
반면, 해당 캐시 블록이 캐시 메모리 모듈(CMM)에서 탐색되지 않으면, 빅팀 버퍼(VB)를 탐색한다(S23). 그리고 빅팀 버퍼(VB)의 탐색 결과로 캐시 히트가 발생되는지 판별한다(S24). 빅팀 버퍼(VB)는 캐시 메모리 모듈(CMM)에서 가장 최근에 축출된 캐시 블록들을 임시로 저장하고 있다. 따라서 캐시 메모리 모듈(CMM)을 탐색한 이후, 빅팀 버퍼(VB)를 탐색하여 라스트 레벨 캐시 메모리(LLC)의 캐시 히트율을 향상시킨다.
빅팀 버퍼(VB)에서 캐시 히트가 발생되면, 빅팀 버퍼(VB)는 해당 캐시 블록 캐시 메모리 모듈(CMM)로 전송하고, 저장된 캐시 블록은 폐기한다.
그러나 빅팀 버퍼(VB)에서도 캐시 블록이 탐색되지 않으면, KM 버퍼(KMB)를 탐색한다(S25). KM 버퍼(KMB)는 선택된 클러스터 내의 캐시 블록을 빅팀 버퍼(VB)보다 장기간 저장함에 따라 캐시 메모리 모듈(CMM)이나 빅팀 버퍼(VB)에서 탐색되지 않은 캐시 블록을 저장하고 있을 수 있다.
이에 KM 버퍼(KMB)의 탐색 결과로 캐시 히트가 발생되는지 판별한다(S26). KM 버퍼(KMB)에서 캐시 히트가 발생되면, 해당 캐시 블록을 캐시 메모리 모듈(CMM)로 전송한다. 그러나 KM 버퍼(KMB)에서도 캐시 블록이 탐색되지 않으면, 캐시 미스가 발생한 것으로, 메인 메모리(MM)에 액세스하여 해당 데이터를 페치한다(S27).
따라서 본 실시예에 따른 라스트 레벨 캐시 메모리(LLC)의 데이터 관리 방법은 캐시 메모리 모듈(CMM)에서 축출되는 캐시 블록을 빅팀 버퍼(VB)에 임시 저장하여 재사용할 수 있도록 할 뿐만 아니라, KM 버퍼(KMB)를 제공하여 빅팀 버퍼(VB)에서 축출되는 캐시 블록에 대해 추가적인 재사용 기회를 선택적으로 제공한다. 따라서 라스트 레벨 캐시 메모리의 캐시 히트율을 높이고, 대기시간을 줄일 뿐만 아니라, 전력 소비를 줄일 수 있다.
상기한 본 실시예에 따른 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법은 세트 분할가능 캐시인 캐시 메모리 모듈(CMM)에서 페치 파트 블록과 프리 페치 파트 블록의 조합 비율, 캐시 메모리 모듈(CMM)의 용량에 대비한 빅팀 버퍼용량과 KM 버퍼 용량의 비율, KM 클러스터링을 위한 k값 등에 따라 성능에 차이가 발생할 수 있다.
이하에서는 Redis(Remote Dictionary Server)와 같은 인-메모리 데이터베이스 시스템(in-memory database system)응용 프로그램을 메모리 액세스 주소를 추출하기 위한 오픈 소스 가상 머신 중 하나인 QEMU에 설치하여 시뮬레이션 하였으며, 벤치 마크 도구로는 클라우드 또는 서버 성능 평가 분석을 위해 종종 이용되는 YCSB(Yahoo! Cloud Serving Benchmark tool)를 이용하였다. 여기서는 표1 과 같은 5 코어 YCSB 워크로드(workload) A, B, C, D 및 F가 이용되었다.
Figure 112018041207681-pat00001
한편 시뮬레이션을 위한 캐시 메모리 시스템의 조건은 아래의 표2 과 같다.
Figure 112018041207681-pat00002
표1 에서와 같이, L1 명령 캐시 및 L1 데이터 캐시는 각각 32KB의 용량을 갖고 64바이트의 블록 사이즈를 갖는 8 way 세트 연관 캐시이고, L2 통합 캐시는 64바이트 블록 크기를 갖는 8 way 세트 연관 캐시로서 256KB 용량을 갖는다.
표1 에서 L3는 라스트 레벨 캐시(LLC)로서 16MB 용량을 갖는 64바이트의 블록 사이즈를 갖는 8 way 세트 연관 캐시이다.
이하에서는 기존의 라스트 레벨 캐시 메모리와 세트 분할가능 구조의 라스트 레벨 캐시 메모리 및 KM 클러스터링을 수행하는 본 실시예에 따른 라스트 레벨 캐시 메모리의 성능을 비교하여 설명하므로, 표1 에서는 3가지 L3 캐시가 표시되었다.
그리고 메인 메모리(MM)은 8GB의 전체 용량과 4KB의 페이지 크기를 갖는 낸드 플래시 메모리를 기반으로 128MB의 용량을 갖는 DRAM을 버퍼로 이용하는 하이브리드 메모리 인 것으로 가정한다.
도6 은 캐시 메모리 모듈에서 페치 파트 블록과 프리페치 파트 블록 변화에 따른 라스트 레벨 캐시의 성능 변화에 대한 시뮬레이션 결과를 나타낸다.
도 6에서 (8-0)는 캐시 메모리 모듈(CMM)에서 8way 세트 전체가 페치 파트 블록으로 설정되어, 프리페치 파트 블록이 지정되지 않은 경우의 캐시 히트율을 나타낸다. 이 경우, 전체 세트가 페치 파트 블록이므로, 실질적으로 세트 분할가능 캐시로서 동작하지 않고, 기존의 라스트 레벨 캐시(LLC)와 동일하게 동작한다.
라스트 레벨 캐시의 캐시 히트율은 수학식 1에 따라 계산될 수 있다.
Figure 112018041207681-pat00003
그에 비해, (7-1), (6-2), (5-3), (4-4)는 프리페치 파트 블록이 순차적으로 1개씩 더 증가된 경우를 나타낸 것으로서, 캐시 메모리 모듈(CMM)의 8way 세트 중 일부는 페치 파트 블록으로 이용되고 나머지는 프리페치 파트 블록으로 이용되는 세트 분할 가능 캐시 구조를 나타낸다. 따라서 라스트 레벨 캐시 메모리(LLC)가 별도의 프리페치 모듈을 구비하지 않아도 된다.
도6 을 참조하면, 캐시 메모리 모듈(CMM)에 페치 파트 블록과 프리페치 파트 블록이 모두 포함되는 세트 분할 가능 캐시가 프리페치 파트 블록이 포함되지 않은 워크 로드 A 내지 F 모두에서 더 나은 성능을 나타냄을 알 수 있다. 또한 워크 로드 A 내지 F에서 페치 파트 블록과 프리페치의 파트 블록의 최상의 조합은 (6-2)임을 알 수 있다.
도7 은 캐시 메모리 모듈(CMM)에 대비한 KM 버퍼의 용량에 따른 라스트 레벨 캐시의 성능 변화에 대한 시뮬레이션 결과를 나타낸다.
도7 에서 x축은 전체 16MB 용량을 갖는 라스트 레벨 캐시(LLC)에서 캐시 메모리 모듈(CMM)과 KM 버퍼(KMB) 각각에 할당되는 용량 변화를 나타낸 것으로 MB 단위이다. 즉 (4-12)는 캐시 메모리 모듈(CMM)이 4MB이고, KM 버퍼(KMB)가 12MB인 경우를 나타내고, (8-8)은 캐시 메모리 모듈(CMM)이 8MB이고, KM 버퍼(KMB)가 8MB인 경우를 나타내며, (12-4)는 캐시 메모리 모듈(CMM)이 12MB이고, KM 버퍼(KMB)가 4MB인 경우를 나타낸다. 그리고 (16-0)은 캐시 메모리 모듈(CMM)이 16MB이고, KM 버퍼(KMB)가 0MB인 경우, 즉 KM 버퍼가 없는 경우를 나타낸다.
여기서 k는 2로 설정되고, 빅팀 버퍼(VB)는 에 저장되는 캐시 블록의 개수는 512개인 것으로 가정한다.
도7 에서 캐시 히트율은 KM 버퍼(KMB)를 사용할 때 더 향상됨을 알 수 있으며, 특히 캐시 메모리 모듈(CMM)과 KM 버퍼(KMB)의 크기가 동일하게 8MB일 때 최상의 성능을 나타내고 있음을 확인할 수 있다.
도8 은 빅팀 버퍼의 크기에 따른 액세스 대기 시간의 변화에 대한 시뮬레이션 결과를 나타낸다.
도8 은 도7 의 결과에 따라, 캐시 메모리 모듈(CMM)과 KM 버퍼(KMB)의 크기가 동일하게 8MB일 때, 빅팀 버퍼(VB)에 저장되는 캐시 블록의 수가 64개로 정규화된 라스트 레벨 캐시(LLC)에 대비하여 빅팀 버퍼(VB)에 저장되는 캐시 블록의 수가 64, 128, 256, 512, 1024 및 2048로 가변되는 경우 액세스 대기 시간의 변화를 나타낸다. 캐시 블록의 수가 64개일때는 y축과 동일 조건이므로, 동일한 대기 시간을 갖는다. 따라서 대기시간의 비는 1로 나타나는 반면, 빅팀 버퍼(VB)에 저장되는 캐시 블록의 수가 증가할수록 대기시간이 더 짧아지는 것으로 확인되지만, 512개 이상의 캐시 블록이 저장되는 경우에 대기시간이 짧아지는 성능 향상은 명확하지 않다.
도9 는 k값의 변화에 따른 액세스 대기 시간의 변화에 대한 시뮬레이션 결과를 나타낸다.
도 9는 KM 클러스터링에서 y축에 나타난 k=2인 경우를 기준으로, k가 2 ~ 8까지 변경될 때 대기 시간의 변화를 비로서 나타낸다. 그리고 도9에 도시된 바와 같이, 대부분의 워크 로드에서 k가 2일 때 최상의 성능을 발휘하지만, 워크 로드 B의 경우, K가 4일 때 최소의 대기 시간이 측정되었다. 또한 전체적으로 k가 증가할수록 대기 시간이 증가하지만, 워크로드 D의 경우, k가 5인 경우보다 6인 경우에 대기시간이 감소한다. 즉 k는 워크 로드에 따라 다양하게 설정되는 것이 바람직하다는 것을 알 수 있다.
도10 및 도11 은 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리와 다른 라스트 레벨 캐시 메모리의 성능을 비교한 결과를 나타낸다.
도10 및 도11 에서 y축은 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리의 성능을 나타내고, x축은 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리와 세트 분할가능 구조의 라스트 레벨 캐시 메모리 및 기존의 라스트 레벨 캐시 메모리의 성능 비를 나타낸다.
도10 은 대기시간을 비교하여 나타내었으며, 도11 은 소비 전력을 비교하여 나타내었다. 도10 및 도11 로부터, 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리가 대기 시간 및 전력 소비 모두 크게 낮게 나타남을 확인할 수 있다. 즉 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리의 성능이 상대적으로 매우 높음을 알 수 있다.
도12 는 낸드 플래시 메모리 기반 하이브리드 메모리가 메인 메모리로 이용되는 경우, 쓰기 횟수 비교 결과를 나타낸다.
도12 를 참조하면, 세트 분할가능 구조의 라스트 레벨 캐시 메모리의 낸드 플래시 메모리 쓰기 횟수는 기존의 라스트 레벨 캐시와 거의 동일한 반면, 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리는 낸드 플래시 메모리에 대한 쓰기 횟수를 크게 줄일 수 있음을 확인할 수 있다. 표1 에서 워크 로드 C는 100% 읽기 요청으로 구성되므로, 도12 에서는 제외 되었다.
시뮬레이션 결과로부터, 본 실시예에 따른 KM 클러스터링을 수행하는 라스트 레벨 캐시 메모리는 기존의 라스트 레벨 캐시 메모리에 비해 총 실행 시간을 19.4% 줄일 수 있고, 전력 소비를 평균 16.2% 줄일 수 있으며, 플래시 메모리 쓰기 횟수를 8.4%까지 줄일 수 있음이 확인되었다.
본 발명에 따른 방법은 컴퓨터에서 실행 시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등을 포함할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
MM: 메인 메모리
LLC: 라스트 레벨 캐시 메모리
CCM: 캐시 메모리 모듈(세트 분할가능 캐시)
VB: 빅팀 버퍼
KME: KM 클러스터링 엔진
KMB: KM 버퍼

Claims (16)

  1. 메인 메모리로부터 데이터를 페치하여 캐시 블록 단위로 저장하는 캐시 메모리 모듈;
    상기 캐시 메모리 모듈에서 축출되는 캐시 블록들을 임시 저장하는 빅팀 버퍼;
    상기 빅팀 버퍼에 누적 저장된 상기 캐시 블록들의 용량이 기지정된 기준 용량 이상이면, 상기 캐시 블록들을 각각 적어도 하나의 캐시 블록을 포함하는 k개의 클러스터로 KM 클러스터링하고, 클러스터링된 k개의 클러스터 중 다수의 캐시 블록을 포함하는 적어도 하나의 클러스터를 선택하는 KM 클러스터링 엔진; 및
    상기 KM 클러스터링 엔진에서 선택된 적어도 하나의 클러스터를 각각 클러스터 그룹으로서 인가받아 저장하는 KM 버퍼; 를 포함하는 라스트 레벨 캐시 메모리.
  2. 제1 항에 있어서, 상기 KM 클러스터링 엔진은
    상기 캐시 블록 각각의 메모리 주소를 유사도 평가 지표로 이용하여, 상기 k 개의 클러스터로 클러스터링하는 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  3. 제1 항에 있어서, 상기 KM 클러스터링 엔진은
    각각에 포함된 캐시 블록의 개수에 따라 상기 k개의 클러스터를 정렬하고, 정렬된 상기 k개의 클러스터 중 캐시 블록이 많은 기설정된 개수의 클러스터를 선택하는 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  4. 제1 항에 있어서, 상기 캐시 메모리 모듈은
    N(여기서 N은 자연수)개의 캐시 블록(cache block)에 대해 세트(set)로 인덱스가 할당되는 N way 세트 연관 캐시인 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  5. 제4 항에 있어서, 상기 캐시 메모리 모듈은
    상기 N개의 캐시 블록 중 상기 메인 메모리에서 페치한 페치 데이터를 저장하는 페치 파트 블록과 캐시 미스(cache miss)가 발생된 블록의 다음 주소에 대응하는 블록을 프리페치 데이터로 저장하는 캐시 블록인 프리페치 파트 블록의 수가 조절되는 세트 분할가능 캐시(set divisible cache)인 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  6. 제1 항에 있어서, 상기 빅팀 버퍼는
    상기 KM 클러스터링 엔진에서 선택된 상기 클러스터 그룹을 상기 KM 버퍼로 전송한 이후, 저장된 전체 캐시 블록을 각 캐시 블록에 설정된 더티 비트에 따라 폐기하거나 상기 메인 메모리로 전송하는 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  7. 제1 항에 있어서, 상기 KM 버퍼는
    상기 빅팀 버퍼로부터 상기 캐시 블록을 상기 클러스터 그룹 단위로 인가받아 구분하여 저장하고, 저장된 클러스터 그룹들의 전체 용량이 상기 KM 버퍼의 용량을 초과하면, 선입 선출 기법에 따라 먼저 저장된 상기 클러스터 그룹의 캐시 블록부터 폐기하거나 상기 메인 메모리로 전송하는 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  8. 제1 항에 있어서, 상기 KM 클러스터링 엔진은 상기 빅팀 버퍼 내에 포함되며, 상기 빅팀 버퍼는 상기 KM 버퍼의 내부에 포함되어, 상기 KM 버퍼의 메모리 용량 중 일부를 할당받는 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  9. 제1 항에 있어서, 상기 라스트 레벨 캐시 메모리는
    프로세서로부터 데이터 액세스 요청이 수신되면, 상기 캐시 메모리 모듈에 대응하는 데이터가 저장되었는지 탐색하고,
    상기 캐시 메모리 모듈에 상기 데이터가 저장되지 않은 것으로 판단되면, 상기 빅팀 버퍼를 탐색하며,
    상기 빅팀 버퍼에 상기 데이터가 저장되지 않은 것으로 판단되면, 상기 KM 버퍼를 탐색하며,
    상기 KM 버퍼에 상기 데이터가 저장되지 않은 것으로 판단되면, 상기 메인 메모리에 액세스하여,
    탐색된 데이터를 상기 프로세서 또는 상위 레벨 캐시로 전송하는 것을 특징으로 하는 라스트 레벨 캐시 메모리.
  10. 메인 메모리로부터 페치 또는 프리페치된 데이터를 캐시 블록 단위로 저장하는 캐시 메모리 모듈, 빅팀 버퍼, KM 클러스터링 엔진 및 KM 버퍼를 포함하는 라스트 레벨 캐시 메모리의 데이터 관리 방법에 있어서,
    상기 캐시 메모리 모듈에서 축출되는 캐시 블록들을 상기 빅팀 버퍼에 임시 저장하는 단계;
    상기 빅팀 버퍼에 누적 저장된 상기 캐시 블록들의 용량이 기지정된 기준 용량 이상이면, 상기 캐시 블록들을 각각 적어도 하나의 캐시 블록을 포함하는 k개의 클러스터로 KM 클러스터링하는 단계;
    상기 k개의 클러스터 중 다수의 캐시 블록을 포함하는 적어도 하나의 클러스터를 선택하는 단계; 및
    상기 KM 클러스터링 엔진에서 선택된 적어도 하나의 클러스터를 각각 클러스터 그룹으로서 상기 KM 버퍼에 저장하는 단계; 를 포함하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
  11. 제10 항에 있어서, 상기 KM 클러스터링하는 단계는
    상기 캐시 블록 각각의 메모리 주소를 유사도 평가 지표로 이용하여, 상기 k 개의 클러스터로 클러스터링하는 것을 특징으로 하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
  12. 제10 항에 있어서, 상기 클러스터를 선택하는 단계는
    각각에 포함된 캐시 블록의 개수에 따라 상기 k개의 클러스터를 정렬하는 단계; 및
    정렬된 상기 k개의 클러스터 중 캐시 블록이 많은 기설정된 개수의 클러스터를 선택하는 단계; 를 포함하는 것을 특징으로 하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
  13. 제10 항에 있어서, 상기 KM 버퍼에 저장하는 단계는
    상기 KM 클러스터링 엔진에서 선택된 적어도 하나의 클러스터를 각각 클러스터 그룹으로서 인가받는 단계; 및
    상기 빅팀 버퍼에 저장된 캐시 블록들을 각 캐시 블록에 설정된 더티 비트에 따라 폐기하거나 상기 메인 메모리로 전송하는 단계; 를 포함하는 것을 특징으로 하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
  14. 제13 항에 있어서, 상기 KM 버퍼에 저장하는 단계는
    저장된 클러스터 그룹들의 전체 용량이 상기 KM 버퍼의 용량을 초과하는지 판별하는 단계; 및
    상기 KM 버퍼의 용량을 초과하면, 먼저 저장된 상기 클러스터 그룹의 캐시 블록부터 폐기하거나 상기 메인 메모리로 전송하는 단계; 를 더 포함하는 것을 특징으로 하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
  15. 제10 항에 있어서, 상기 라스트 레벨 캐시 메모리의 데이터 관리 방법은
    프로세서로부터 데이터 액세스 요청이 수신되면, 데이터를 탐색하는 단계; 및
    탐색된 데이터를 상기 프로세서 또는 상위 레벨 캐시로 전송하는 단계; 를 더 포함하는 것을 특징으로 하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
  16. 제15 항에 있어서, 상기 데이터를 탐색하는 단계는
    상기 상기 캐시 메모리 모듈에 대응하는 데이터가 저장되었는지 탐색하는 단계;
    상기 캐시 메모리 모듈에 상기 데이터가 저장되지 않으면, 상기 빅팀 버퍼를 탐색하는 단계;
    상기 빅팀 버퍼에 상기 데이터가 저장되지 않으면, 상기 KM 버퍼를 탐색하는 단계; 및
    상기 KM 버퍼에 상기 데이터가 저장되지 않으면, 상기 메인 메모리에 액세스하는 단계; 를 포함하는 것을 특징으로 하는 라스트 레벨 캐시 메모리의 데이터 관리 방법.
KR1020180047991A 2018-04-25 2018-04-25 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 KR101976320B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180047991A KR101976320B1 (ko) 2018-04-25 2018-04-25 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180047991A KR101976320B1 (ko) 2018-04-25 2018-04-25 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법

Publications (1)

Publication Number Publication Date
KR101976320B1 true KR101976320B1 (ko) 2019-05-07

Family

ID=66656006

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180047991A KR101976320B1 (ko) 2018-04-25 2018-04-25 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법

Country Status (1)

Country Link
KR (1) KR101976320B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3910484A1 (en) * 2020-05-07 2021-11-17 NXP USA, Inc. Systems and methods for managing cache replacement

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013218636A (ja) * 2012-04-12 2013-10-24 Nippon Telegr & Teleph Corp <Ntt> クラスタリング処理装置、クラスタリング処理方法、及びプログラム
KR20130143233A (ko) 2012-06-21 2013-12-31 성균관대학교산학협력단 태스크 분류방법 및 이를 이용한 공유 라스트 레벨 캐시의 성능 향상방법
JP2017027324A (ja) * 2015-07-22 2017-02-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013218636A (ja) * 2012-04-12 2013-10-24 Nippon Telegr & Teleph Corp <Ntt> クラスタリング処理装置、クラスタリング処理方法、及びプログラム
KR20130143233A (ko) 2012-06-21 2013-12-31 성균관대학교산학협력단 태스크 분류방법 및 이를 이용한 공유 라스트 레벨 캐시의 성능 향상방법
JP2017027324A (ja) * 2015-07-22 2017-02-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3910484A1 (en) * 2020-05-07 2021-11-17 NXP USA, Inc. Systems and methods for managing cache replacement
US11379380B2 (en) 2020-05-07 2022-07-05 Nxp Usa, Inc. Systems and methods for managing cache replacement

Similar Documents

Publication Publication Date Title
US8176255B2 (en) Allocating space in dedicated cache ways
US10133678B2 (en) Method and apparatus for memory management
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
US8041897B2 (en) Cache management within a data processing apparatus
EP1654660B1 (en) A method of data caching
EP3414665B1 (en) Profiling cache replacement
US8935478B2 (en) Variable cache line size management
KR20190058316A (ko) 예측에 기초하여 효율적으로 캐시 라인을 관리하는 시스템 및 방법
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
CN111344684A (zh) 多层缓存安置机制
US10628318B2 (en) Cache sector usage prediction
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
KR20180122969A (ko) 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법
US8473686B2 (en) Computer cache system with stratified replacement
CN109074313B (zh) 缓存和方法
US11526449B2 (en) Limited propagation of unnecessary memory updates
US20130086325A1 (en) Dynamic cache system and method of formation
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
CN113138851A (zh) 一种缓存管理方法及装置
US7325101B1 (en) Techniques for reducing off-chip cache memory accesses
EP3485381A1 (en) System and method for identifying pendency of a memory access request at a cache entry
US20110283041A1 (en) Cache memory and control method thereof
US8756362B1 (en) Methods and systems for determining a cache address
US7143239B2 (en) Cache structure and methodology

Legal Events

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