KR101993555B1 - Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 - Google Patents
Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 Download PDFInfo
- Publication number
- KR101993555B1 KR101993555B1 KR1020180025580A KR20180025580A KR101993555B1 KR 101993555 B1 KR101993555 B1 KR 101993555B1 KR 1020180025580 A KR1020180025580 A KR 1020180025580A KR 20180025580 A KR20180025580 A KR 20180025580A KR 101993555 B1 KR101993555 B1 KR 101993555B1
- Authority
- KR
- South Korea
- Prior art keywords
- cuckoo
- bucket
- data
- pass
- key
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
RCC와 쿠쿠 해시 테이블을 이용한 LRFU 기반의 캐시 교체 방법 및 시스템에 관한 것이다. 일 실시예에 따른 캐시 교체 방법은, 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계; 상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계; 및 상기 구성된 쿠쿠 패스의 길이가 미리 정해진 최대의 쿠쿠 패스의 길이를 초과하였을 경우, 상기 쿠쿠 해시 테이블의 캐시를 교체하는 단계를 포함할 수 있다.
Description
아래의 설명은 메모리 캐싱 시스템의 적중률(hit-ratio)과 캐시 교체 알고리즘의 비용에 관한 것이다.
메모리 캐싱 시스템은 데이터베이스나 하드디스크와 같은 느린 속도로 데이터에 접근하는 대신 RAM과 같은 메모리에 저장하여 더 빠르게 데이터를 가져올 수 있도록 하는 시스템이다. 속도가 더 빠른 대신에 많은 비용이 요구되기 때문에 상대적으로 적은 용량을 사용한다. 따라서 전체 데이터에서 어떤 데이터를 저장하고 있는지가 성능을 좌우한다. 빠른 탐색 연산이 필요하므로 데이터를 저장하는 자료구조는 해시 테이블(hash table)을 이용한다. 메모리의 용량이 가득차면 새로운 데이터를 넣기 위해서 기존 데이터를 내보내야 하는데 그때 캐시 교체 알고리즘이 사용된다. 주로 가장 최근에 접근하지 않은 데이터를 내보내는 방식인 LRU (Least Recently Used)가 이용되고, 가장 적게 접근한 데이터를 내보내는 방식인 LFU (Least Frequently Used)도 있다. 또한, LFU는 해시 테이블에 있는 아이템에 대해서만 몇 번 접근하는지 세는데, P-LFU (Perfect Least Frequently Used)는 해시 테이블에 접근하거나 접근했었던 모든 아이템을 세어서 가장 적게 접근한 데이터를 내보내는 방식이다.
캐싱 시스템은 데이터를 저장하기 위하여 해시 테이블을 사용하는데, 그 기법 중 하나가 쿠쿠 해싱이다. 쿠쿠 해싱은 기존의 해싱 기법과 달리 최악의 경우에 상수 시간 내에 해시 테이블에 데이터가 있는지 없는지 판단할 수 있다. 기존의 쿠쿠 해싱 기법의 문제점을 보완한 많은 발전된 기법이 나왔는데, 그 중에 버킷화 쿠쿠 해싱(bucketized cuckoo hashing) 기법이 기본이 된다. 테이블 이용률(load factor)을 높였고, 이용률이 높아짐에 따라 입력 연산의 평균 시간을 단축시켰다. 또한, 데이터를 입력할 때, 쿠쿠 패스(cuckoo path)를 이용하는데, 데이터를 입력할 공간이 없어서 밀어낼 데이터의 위치를 저장해놓은 후, 빈 공간을 찾으면 쿠쿠 패스에 기록한 순서대로 데이터를 밀어낸 후, 빈 공간에 데이터를 저장한다.
RCC(Recyclable Counter with Confinement)는 네트워크 트래픽(network traffic)을 측정하기 위해서 만든 카운터이다. 네트워크 트래픽이 많아짐에 따라 수많은 트래픽을 제한된 자원으로 빠른 시간 내에 정확하게 측정하기 위해서 만들어졌다. 카운터 A와 카운터 B로 나뉘어져 있는데, 카운터 A는 모든 데이터를 랜덤하게 저장하여 확률적으로 그 데이터를 카운트한다. 일정 이상 값이 되면 초기화되고 그 값을 카운터 B에 저장한다. 트래픽을 세는 것이 아니라 캐싱 시스템에 몇 번 접근했는지 카운트하기 위하여 사용할 것이다.
참고자료: KR10-2014-0097924, KR10-2012-0035070
메모리 캐싱 시스템의 적중률을 높여 전체 시스템의 속도를 향상시키고, 메모리 캐싱 시스템을 유지하는 데 필요한 연산 비용을 감소시키기 위하여 RCC와 쿠쿠 해시 테이블을 이용한 LRFU 기반의 캐시 교체 방법 및 시스템을 제공할 수 있다.
캐시 교체 방법은, 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계; 상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계; 및 상기 구성된 쿠쿠 패스의 길이가 미리 정해진 쿠쿠 패스의 길이를 초과하였을 경우, 상기 쿠쿠 해시 테이블의 캐시를 교체하는 단계를 포함할 수 있다.
상기 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계는, 키를 상기 쿠쿠 해시 테이블에 입력하였을 때의 점수에 기초하여 상기 키를 접근하는 연산을 수행함에 따라 점수를 1 증가시키고, 상기 점수를 1 증가시키기 이전의 카운터 값에는 패널티를 부여하여 쿠쿠 패스를 구성하는 단계를 포함할 수 있다.
상기 구성된 쿠쿠 패스의 길이가 미리 정해진 최대의 쿠쿠 패스의 길이를 초과하였을 경우, 상기 쿠쿠 해시 테이블의 캐시를 교체하는 단계는, 상기 데이터에 사용된 쿠쿠 패스의 데이터 중에서 가장 낮은 점수를 가진 데이터를 밀어내고 빈 자리를 생성하고, 상기 빈 자리에 상기 데이터를 입력하는 단계를 포함할 수 있다.
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계는, 상기 데이터에 대한 입력 연산을 수행함에 있어서, 서로 다른 값을 가지는 해시 함수 중 제1 해시 함수를 이용하여 두 개의 버킷 중 어느 하나의 버킷에 접근하고, 상기 접근된 버킷에 빈 슬롯 여부의 존재 여부를 판단하는 단계; 상기 접근된 버킷에 빈 슬롯이 존재하면 상기 접근된 버킷의 빈 슬롯에 키, RCC의 카운터값 및 현재 시간 데이터를 저장하는 단계; 상기 접근된 버킷에 빈 슬롯이 존재하지 않으면, 제2 해시 함수를 이용하여 다른 하나의 버킷에 접근하는 단계; 상기 접근된 다른 다른 하나의 버킷에 빈 슬롯이 존재하면, 상기 접근된 다른 하나의 버킷의 빈 슬롯에 키, RCC의 카운터값 및 현재 시간 데이터를 저장하는 단계; 및 상기 제2 해시 함수를 이용하여 접근된 다른 하나의 버킷에 빈 슬롯이 존재하지 않으면 쿠쿠 패스를 생성하는 단계를 포함할 수 있다.
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계는, 상기 쿠쿠 패스를 이용하여 빈 슬롯을 탐색하거나, 가장 낮은 점수를 가지는 값을 밀어낸 후, 상기 빈 슬롯 또는 상기 가장 낮은 점수를 가지는 값에 대응하는 슬롯에 키, RCC의 카운터 값 및 시간 데이터를 저장하는 단계를 포함할 수 있다.
상기 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계는, 입력받은 버킷이 아닌 다른 버킷에 빈 슬롯이 존재하면, 상기 존재하는 빈 슬롯에 기초하여 쿠쿠 패스를 구성하고, 상기 다른 버킷에 빈 슬롯이 존재하지 않을 경우, 버킷 중 가장 점수가 낮은 슬롯을 탐색하고, 상기 탐색된 가장 낮은 점수의 슬롯의 점수를 갱신하여 상기 가장 낮은 점수의 슬롯에 대하여 쿠쿠 패스에 추가하는 단계를 포함할 수 있다.
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계는, 상기 데이터에 대한 탐색 연산을 수행함에 있어서, 상기 두 개의 버킷 중 어느 하나의 버킷에 접근하고, 상기 접근된 어느 하나의 버킷에 키가 존재하는지 여부를 확인하고, 상기 어느 하나의 버킷에 키가 존재할 경우, 상기 존재하는 키에 대응하는 어느 하나의 버킷의 슬롯을 반환하는 단계; 상기 어느 하나의 버킷에 키가 존재하지 않을 경우, 상기 두 개의 버킷 중 다른 하나의 버킷에 접근하고, 상기 접근된 다른 하나의 버킷에 키가 존재하는지 여부를 확인하고, 상기 다른 하나의 버킷에 키가 존재할 경우, 상기 존재하는 키에 대응하는 다른 하나의 버킷의 슬롯을 반환하는 단계; 및 상기 다른 하나의 버킷에 키가 존재하지 않을 경우, 널값을 반환하는 단계를 포함할 수 있다.
RCC 이외에 다른 캐시 교체 알고리즘을 위한 자료구조를 유지할 필요가 없으므로 메모리를 적게 소모한다. 데이터의 개수가 많을 때는 캐시 교체 알고리즘을 유지하기 위하여 많은 계산이 필요한데 본 발명은 데이터가 사용될 때마다 상기 데이터에 대해서만 점수를 갱신시켜주면 된다. LRU와 P-LFU의 장점을 함께 가질 수 있다. 사용하는 데이터에 따라 적중률이 증가할 수 있다.
메모리 캐싱 시스템의 적중률을 높여 전체 시스템의 속도를 향상시킬 수 있다. 쿠쿠 해시 테이블을 이용하므로 빠른 탐색 연산도 가능하고, 캐시 교체를 위한 연산이 줄어들므로 보다 빠른 처리 속도를 기대할 수 있다.
도 1은 일 실시예에 따른 캐시 교체 시스템에서 데이터의 입력할 때의 과정을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 캐시 교체 시스템에서 쿠쿠 패스를 구성하는 방법을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 캐시 교체 시스템에서 데이터를 탐색할 때의 과정을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 캐시 교체 시스템의 구성을 설명하기 위한 블록도이다.
도 5는 일 실시예에 따른 캐시 교체 시스템에서 캐시 교체 방법을 설명하기 위한 흐름도이다.
도 2는 일 실시예에 따른 캐시 교체 시스템에서 쿠쿠 패스를 구성하는 방법을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 캐시 교체 시스템에서 데이터를 탐색할 때의 과정을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 캐시 교체 시스템의 구성을 설명하기 위한 블록도이다.
도 5는 일 실시예에 따른 캐시 교체 시스템에서 캐시 교체 방법을 설명하기 위한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 일 실시예에 따른 캐시 교체 시스템에서 데이터의 입력할 때의 과정을 설명하기 위한 도면이다.
실시예에서는 RCC와 쿠쿠 해시 테이블을 이용하여 캐시를 교체하는 방법을 설명하기로 한다. 이에 따라, 기존의 캐시 교체 알고리즘을 위한 자료구조를 유지하지 않는다. 해시 테이블에는 데이터를 입력하거나 참조할 때, 그리고 쿠쿠 패스를 구성할 때마다 기존의 LRFU에서 사용하는 식 1을 이용하여 점수를 기록할 수 있다.
식 1:
는 i(i는 자연수)번째 접근하였을 때의 점수이다. RCC(K)는 해당 키(K)에 대한 RCC에서 기록한 카운터 값이다. 은 처음 키를 해시 테이블에 입력하였을 때의 점수이다. 이후에 키를 접근하는 연산이 수행되었으면 점수를 1 증가시키고, 이전의 카운터 값에는 경과 시간에 대한 패털티를 부여한다. 쿠쿠 패스를 구성할 때에는 이전의 카운터 값에 대한 패널티만을 부여한다. 이때, 와 는 미리 정해놓은 상수를 의미한다.
캐시 교체는 쿠쿠 해시 테이블에 데이터를 입력할 때, 미리 정해진 최대의 쿠쿠 패스의 길이를 초과하였을 때 발생할 수 있다. 데이터의 입력에 사용된 쿠쿠 패스 데이터 중에서 기 설정된 기준 이하의 점수를 가진 데이터(예를 들면, 가장 낮은 점수를 가진 데이터)를 밀어내고 빈자리를 탐색하고, 탐색된 빈자리에 데이터를 입력할 수 있다.
도 1을 참고하면, 데이터의 입력할 때의 과정을 설명하기 위한 도면이다. 쿠쿠 해싱은 하나의 키에 대하여 두 개의 버킷에 접근할 수 있다. 버킷에 접근하는 방법은, 서로 다른 값을 가지는 해시 함수를 이용하는 것이다. 첫 번째 해시 함수(h 1)을 이용하여 첫 번째 버킷(H 1)에 접근할 수 있다. 첫 번째 버킷에 빈 슬롯이 존재하면 키, RCC의 카운터 값과 현재 시간 데이터를 저장할 수 있다. 이때, 첫 번째 버킷에 빈 슬롯이 존재하지 않을 경우, 두 번째 해시 함수(h 2)를 이용하여 두 번째 버킷(H 2)에 접근할 수 있다. 마찬가지로, 두 번째 버킷에 빈 슬롯이 존재할 경우, 키, RCC의 카운터 값 및 현재 시간 데이터를 저장할 수 있다. 이때, 두 번째 버킷에 빈 슬롯이 존재하지 않을 경우, 쿠쿠 패스를 생성할 수 있다. 이에 따라, 생성된 쿠쿠 패스를 이용하여 빈 슬롯을 탐색하거나, 가장 낮은 점수를 가지는 값을 밀어낸 후, 키, RCC의 카운터 값 및 시간 데이터를 저장할 수 있다.
도 2를 참고하면, 쿠쿠 패스를 구성하는 방법을 설명하기 위한 도면이다. 우선적으로, 입력받은 버킷이 아닌 입력받은 버킷 이외의 다른 버킷을 탐색한다. 다른 버킷을 탐색하여 획득함에 따라 다른 버킷에 빈 슬롯이 존재하는지 여부를 판단할 수 있다. 이때, 다른 버킷에 빈 슬롯이 존재할 경우, 쿠쿠 패스를 모두 채울 수 있다. 다른 버킷에 빈 슬롯이 존재하지 않을 경우, 버킷 중 가장 점수가 낮은 슬롯을 추출할 수 있고, 추출된 가장 점수가 낮은 슬롯의 점수를 갱신한 후에 쿠쿠 패스에 추가할 수 있다. 이때, 쿠쿠 패스의 진행 정보를 판단하기 위하여 인덱스도 함께 증가시킬 수 있다. 이러한 쿠쿠 패스를 구성하는 과정을 미리 정해놓은 최대의 쿠쿠 패스의 길이만큼 반복할 수 있다. 쿠쿠 패스의 최대 길이가 초과된 경우, 쿠쿠 패스 중 가장 낮은 점수를 가지고 있는 슬롯의 데이터를 밀어낼 수 있다.
도 3을 참고하면, 데이터를 탐색할 때의 과정을 설명하기 위한 도면이다. 쿠쿠 해싱의 탐색 연산은 각 슬롯을 접근할 때에 점수를 갱신하는 방식으로 수행될 수 있다. 쿠쿠 해싱의 탐색 연산은 첫 번째 버킷에 접근한 후, 키가 존재하는지 여부를 확인할 수 있다. 이때, 키가 존재하면 키에 대응하는 첫 번째 버킷의 슬롯을 반환하고, 키가 존재하지 않을 경우, 두 번째 버킷에 접근할 수 있다. 두 번째 버킷에 키가 존재하면, 키에 대응하는 두 번째 버킷의 슬롯을 반환할 수 있다. 모든 슬롯에 키가 존재하지 않을 경우, 널(Null)을 반환할 수 있다.
일 실시예에 따른 캐시 교체 시스템은 RCC 이외에 다른 캐시 교체 알고리즘을 위한 자료구조를 유지할 필요가 없으므로 메모리를 적게 소모한다. 데이터의 개수가 많을 때는 캐시 교체 알고리즘을 유지하기 위하여 많은 계산이 필요한데 본 발명은 데이터가 사용될 때마다 상기 데이터에 대해서만 점수를 갱신시켜주면 된다. 또한, 일 실시예에 따른 캐시 교체 시스템은 LRU와 P-LFU의 장점을 함께 가질 수 있다. 또한, 사용하는 데이터에 따라 적중률이 증가할 수 있다.
일 실시예에 따른 캐시 교체 시스템은 Redis나 Memcached 등과 같은 메모리 캐싱 시스템에 적용할 수 있다. 쿠쿠 해시 테이블을 이용하므로 빠른 탐색 연산도 가능하고, 캐시 교체 알고리즘을 위한 연산도 줄어들므로 기존의 시스템보다 빠른 속도를 기대할 수 있다.
도 4는 일 실시예에 따른 캐시 교체 시스템의 구성을 설명하기 위한 블록도이고, 도 5는 일 실시예에 따른 캐시 교체 시스템에서 캐시 교체 방법을 설명하기 위한 흐름도이다.
캐시 교체 시스템(100)은 구성부(410), 연산부(420) 및 교체부(430)를 포함할 수 있다. 이러한 구성요소들은 캐시 교체 시스템(100)에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 구성요소들은 도 5의 캐시 교체 방법이 포함하는 단계들(510 내지 530)을 수행하도록 캐시 교체 시스템(100)을 제어할 수 있다. 이때, 구성요소들은 메모리가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
프로세서는 캐시 교체 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리에 로딩할 수 있다. 예를 들면, 캐시 교체 시스템(100)에서 프로그램이 실행되면, 프로세서는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리에 로딩하도록 서버를 제어할 수 있다. 이때, 프로세서 및 프로세서가 포함하는 구성부(410), 연산부(420) 및 교체부(430) 각각은 메모리에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(510 내지 530)을 실행하기 위한 프로세서의 서로 다른 기능적 표현들일 수 있다.
단계(510)에서 구성부(410)는 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패시를 구성할 수 있다. 구성부(410)는 키를 쿠쿠 해시 테이블에 입력하였을 때의 점수에 기초하여 상기 키를 접근하는 연산을 수행함에 따라 점수를 1 증가시키고, 점수를 1 증가시키기 이전의 카운터 값에는 패널티를 부여하여 쿠쿠 패스를 구성할 수 있다. 구성부(410)는 입력받은 버킷이 아닌 다른 버킷에 빈 슬롯이 존재할 경우, 빈 슬롯에 기초하여 쿠쿠 패스를 구성하고, 다른 버킷에 빈 슬롯이 존재하지 않을 경우, 버킷 중 가장 점수가 낮은 슬롯을 탐색하고, 탐색된 가장 낮은 점수의 슬롯의 점수를 갱신하여 가장 낮은 점수의 슬롯에 대하여 쿠쿠 패스에 추가할 수 있다.
단계(520)에서 연산부(420)는 구성된 쿠쿠 해시 테이블에서 데이터에 대한 연산을 수행할 수 있다. 이때, 연산은 삽입 연산, 삭제 연산 및 참조 연산을 포함할 수 있다. 연산부(420)는 서로 다른 값을 가지는 해시 함수 중 제1 해시 함수를 이용하여 두 개의 버킷 중 어느 하나의 버킷에 접근하고, 접근된 버킷에 빈 슬롯 여부의 존재 여부를 판단할 수 있다. 연산부(420)는 접근된 버킷에 빈 슬롯이 존재하면 접근된 버킷의 빈 슬롯에 키, RCC의 카운터값 및 현재 시간 데이터를 저장할 수 있다. 연산부(420)는 접근된 버킷에 빈 슬롯이 존재하지 않으면, 제2 해시 함수를 이용하여 다른 하나의 버킷에 접근할 수 있다. 연산부(420)는 접근된 다른 다른 하나의 버킷에 빈 슬롯이 존재하면, 접근된 다른 하나의 버킷의 빈 슬롯에 키, RCC의 카운터값 및 현재 시간 데이터를 저장할 수 있다. 연산부(420)는 제2 해시 함수를 이용하여 접근된 다른 하나의 버킷에 빈 슬롯이 존재하지 않으면 쿠쿠 패스를 생성할 수 있다. 이때, 제1 해시 함수는 첫 번째 해시 함수, 제2 해시 함수는 두 번째 해시 함수를 의미할 수 있다. 연산부(420)는 쿠쿠 패스를 이용하여 빈 슬롯을 탐색하거나, 가장 낮은 점수를 가지는 값을 밀어낸 후, 빈 슬롯 또는 상기 가장 낮은 점수를 가지는 값에 대응하는 슬롯에 키, RCC의 카운터 값 및 시간 데이터를 저장할 수 있다. 연산부(420)는 두 개의 버킷 중 어느 하나의 버킷에 접근하고, 접근된 어느 하나의 버킷에 키가 존재하는지 여부를 확인할 수 있다. 연산부(420)는 어느 하나의 버킷에 키가 존재할 경우, 존재하는 키에 대응하는 어느 하나의 버킷의 슬롯을 반환할 수 있다. 연산부(420)는 어느 하나의 버킷에 키가 존재하지 않을 경우, 두 개의 버킷 중 다른 하나의 버킷에 접근하고, 접근된 다른 하나의 버킷에 키가 존재하는지 여부를 확인할 수 있다. 연산부(420)는 다른 하나의 버킷에 키가 존재할 경우, 존재하는 키에 대응하는 다른 하나의 버킷의 슬롯을 반환할 수 있다. 연산부(420)는 다른 하나의 버킷에 키가 존재하지 않을 경우, 널값을 반환할 수 있다.
단계(530)에서 교체부(430)는 구성된 쿠쿠 패스의 길이가 미리 정해진 최대의 쿠쿠 패스의 길이를 초과하였을 경우, 쿠쿠 해시 테이블의 캐시를 교체할 수 있다. 교체부(430)는 데이터에 사용된 쿠쿠 패스의 데이터 중에서 가장 낮은 점수를 가진 데이터를 데이터를 밀어내고 빈 자리를 생성하고, 빈 자리에 입력된 데이터를 입력할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (7)
- 캐시 교체 방법에 있어서,
쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계;
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계; 및
상기 구성된 쿠쿠 패스의 길이가 미리 정해진 쿠쿠 패스의 길이를 초과하였을 경우, 상기 쿠쿠 해시 테이블의 캐시를 교체하는 단계
를 포함하고,
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계는,
상기 데이터에 대한 입력 연산을 수행함에 있어서, 서로 다른 값을 가지는 해시 함수 중 제1 해시 함수를 이용하여 두 개의 버킷 중 어느 하나의 버킷에 접근하고, 상기 접근된 버킷에 빈 슬롯 여부의 존재 여부를 판단하는 단계;
상기 접근된 버킷에 빈 슬롯이 존재하면 상기 접근된 버킷의 빈 슬롯에 키, RCC의 카운터값 및 현재 시간 데이터를 저장하는 단계;
상기 접근된 버킷에 빈 슬롯이 존재하지 않으면, 제2 해시 함수를 이용하여 다른 하나의 버킷에 접근하는 단계;
상기 접근된 다른 하나의 버킷에 빈 슬롯이 존재하면, 상기 접근된 다른 하나의 버킷의 빈 슬롯에 키, RCC의 카운터값 및 현재 시간 데이터를 저장하는 단계; 및
상기 제2 해시 함수를 이용하여 접근된 다른 하나의 버킷에 빈 슬롯이 존재하지 않으면 쿠쿠 패스를 생성하는 단계
를 포함하는 캐시 교체 방법. - 제1항에 있어서,
상기 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계는,
키를 상기 쿠쿠 해시 테이블에 입력하였을 때의 점수에 기초하여 상기 키를 접근하는 연산을 수행함에 따라 점수를 1 증가시키고, 상기 점수를 1 증가시키기 이전의 카운터 값에는 패널티를 부여하여 쿠쿠 패스를 구성하는 단계
를 포함하는 캐시 교체 방법. - 제1항에 있어서,
상기 구성된 쿠쿠 패스의 길이가 미리 정해진 최대의 쿠쿠 패스의 길이를 초과하였을 경우, 상기 쿠쿠 해시 테이블의 캐시를 교체하는 단계는,
상기 데이터의 입력에 사용된 쿠쿠 패스의 데이터 중에서 가장 낮은 점수를 가진 데이터를 밀어내어 빈 자리를 생성하고, 상기 빈 자리에 상기 데이터를 입력하는 단계
를 포함하는 캐시 교체 방법. - 삭제
- 제1항에 있어서,
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계는,
상기 쿠쿠 패스를 이용하여 빈 슬롯을 탐색하거나, 가장 낮은 점수를 가지는 값을 밀어낸 후, 상기 빈 슬롯 또는 상기 가장 낮은 점수를 가지는 값에 대응하는 슬롯에 키, RCC의 카운터 값 및 시간 데이터를 저장하는 단계를 포함하는 캐시 교체 방법. - 제1항에 있어서,
상기 쿠쿠 해시 테이블에 데이터를 연산하기 위한 쿠쿠 패스를 구성하는 단계는,
입력받은 버킷이 아닌 다른 버킷에 빈 슬롯이 존재하면, 상기 존재하는 빈 슬롯에 기초하여 쿠쿠 패스를 구성하고, 상기 다른 버킷에 빈 슬롯이 존재하지 않을 경우, 버킷 중 가장 점수가 낮은 슬롯을 탐색하고, 상기 탐색된 가장 낮은 점수의 슬롯의 점수를 갱신하여 상기 가장 낮은 점수의 슬롯에 대하여 쿠쿠 패스에 추가하는 단계
를 포함하는 캐시 교체 방법. - 제1항에 있어서,
상기 쿠쿠 해시 테이블에서 상기 데이터에 대한 연산을 수행하는 단계는,
상기 데이터에 대한 탐색을 수행함에 있어서, 두 개의 버킷 중 어느 하나의 버킷에 접근하고, 상기 접근된 어느 하나의 버킷에 키가 존재하는지 여부를 확인하고, 상기 어느 하나의 버킷에 키가 존재할 경우, 상기 존재하는 키에 대응하는 어느 하나의 버킷의 슬롯을 반환하는 단계;
상기 어느 하나의 버킷에 키가 존재하지 않을 경우, 상기 두 개의 버킷 중 다른 하나의 버킷에 접근하고, 상기 접근된 다른 하나의 버킷에 키가 존재하는지 여부를 확인하고, 상기 다른 하나의 버킷에 키가 존재할 경우, 상기 존재하는 키에 대응하는 다른 하나의 버킷의 슬롯을 반환하는 단계; 및
상기 다른 하나의 버킷에 키가 존재하지 않을 경우, 널값을 반환하는 단계
를 포함하는 캐시 교체 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180025580A KR101993555B1 (ko) | 2018-03-05 | 2018-03-05 | Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180025580A KR101993555B1 (ko) | 2018-03-05 | 2018-03-05 | Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101993555B1 true KR101993555B1 (ko) | 2019-09-27 |
Family
ID=68096880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180025580A KR101993555B1 (ko) | 2018-03-05 | 2018-03-05 | Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101993555B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150045073A (ko) * | 2013-10-18 | 2015-04-28 | ㈜윈웨이시스템 | 데이터 운용 방법 및 이를 지원하는 시스템 |
KR101718454B1 (ko) * | 2016-04-18 | 2017-03-21 | (주)케이사인 | 캐시를 이용한 사용자 접근 제어 시스템 및 방법 |
-
2018
- 2018-03-05 KR KR1020180025580A patent/KR101993555B1/ko active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150045073A (ko) * | 2013-10-18 | 2015-04-28 | ㈜윈웨이시스템 | 데이터 운용 방법 및 이를 지원하는 시스템 |
KR101718454B1 (ko) * | 2016-04-18 | 2017-03-21 | (주)케이사인 | 캐시를 이용한 사용자 접근 제어 시스템 및 방법 |
Non-Patent Citations (1)
Title |
---|
X Li 외 3인,‘Algorithmic Improvements for Fast Concurrent Cuckoo Hashing’, EuroSys '14 Proceedings of the Ninth European Conference on Computer Systems Article No. 27, Apr 2014* * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10885005B2 (en) | Disk optimized paging for column oriented databases | |
US20200249849A1 (en) | Method and apparatus for managing storage system | |
US10255287B2 (en) | Method and apparatus for on-disk deduplication metadata for a deduplication file system | |
US11301427B2 (en) | Inline and post-process data deduplication for a file system | |
US10303686B2 (en) | Query plan optimization by persisting a hint table | |
US8904377B2 (en) | Reconfiguration of computer system to allow application installation | |
US20180239642A1 (en) | Resource Configuration System, Resource Configuration Method and Resource Configuration Program | |
US10572383B2 (en) | Caching a block of data in a multi-tenant cache storage device based on space usage boundary estimates | |
US9442694B1 (en) | Method for storing a dataset | |
JP6533623B2 (ja) | 管理計算機、性能監視方法及び計算機システム | |
JP6479186B2 (ja) | 計算機システム及びデータベース管理方法 | |
US11030169B1 (en) | Data re-sharding | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
US11475151B2 (en) | Security policy management for database | |
Villalba et al. | Constant-time sliding window framework with reduced memory footprint and efficient bulk evictions | |
US10628069B2 (en) | Management apparatus for managing and reduplication of volumes of a storage system with respect to OS type | |
JP6823626B2 (ja) | データベース管理システム及び方法 | |
US9476723B1 (en) | Hierarchical processing and caching of path solutions | |
KR20190095489A (ko) | 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법 | |
KR101993555B1 (ko) | Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템 | |
KR102085132B1 (ko) | 버킷 내부에서 해시 함수의 분류를 이용한 효율적인 쿠쿠 해시 방법 | |
JP6189266B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
US10803089B1 (en) | Grid based pathfinding | |
US20220019435A1 (en) | Instruction cache behavior and branch prediction | |
CN105518664B (zh) | 管理数据库节点 |