KR101885030B1 - 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 - Google Patents

하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 Download PDF

Info

Publication number
KR101885030B1
KR101885030B1 KR1020170051677A KR20170051677A KR101885030B1 KR 101885030 B1 KR101885030 B1 KR 101885030B1 KR 1020170051677 A KR1020170051677 A KR 1020170051677A KR 20170051677 A KR20170051677 A KR 20170051677A KR 101885030 B1 KR101885030 B1 KR 101885030B1
Authority
KR
South Korea
Prior art keywords
processing
transaction
htm
stm
memory area
Prior art date
Application number
KR1020170051677A
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 KR1020170051677A priority Critical patent/KR101885030B1/ko
Priority to PCT/KR2017/014991 priority patent/WO2018194237A1/ko
Application granted granted Critical
Publication of KR101885030B1 publication Critical patent/KR101885030B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 시스템이 개시된다. 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법은, 워크로드로부터 트랜잭션이 시작되면, 상기 트랜잭션에 대해, HTM(Hardware Transactional Memory)에 의한 HTM 처리를 수행하는 단계, 및 상기 트랜잭션에 대해, STM(Software Transactional Memory)에 의한 STM 처리를 수행하는 단계를 포함한다.

Description

하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치{TRANSACTION PROCESSING METHOD IN HYBRID TRANSACTIONAL MEMORY SYSTEM AND TRANSACTION PROCESSING APPARATUS}
본 발명은 멀티 코어 환경의 인메모리(In-Memory) 데이터베이스 상에서 효율적인 메모리 관리를 위한 하이브리드 트랜잭셔널 메모리 시스템(HYBRID TRANSACTIONAL MEMORY SYSTEM)에 관한 것으로, 유동적인 블룸 필터 데이터 구조 및 효율적인 메모리 관리자 사용을 통해 트랜잭션 간의 충돌을 효율적으로 감지하고 대용량 트랜잭션의 처리 성능을 향상시킬 수 있는 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치에 관한 것이다.
트랜잭션널 메모리(transactional memory: TM)는 처리 방식에 따라, 소프트웨어 트랜잭셔널 메모리(Software Transectional Memory: STM), 하드웨어 트랜잭셔널 메모리(Hardware Transactional Memory: HTM), 그리고 STM과 HTM을 결합한 하이브리드 트랜잭셔널 메모리(Hybrid Transactional Memory; HyTM)로 분류된다.
STM은, 컴파일러와 API를 이용하여 트랜잭션을 처리하며 트랜잭션의 충돌 감지를 효율적으로 수행할 수 있지만, 스레드(thread)의 읽기(read) 및 쓰기(write)를 수행한 메모리의 주소를 기록하는 오버헤드가 크다는 단점을 가질 수 있다.
이에 따라, 기존 하드웨어 아키텍처의 캐시 및 버스 프로토콜을 변경하여 TM의 주요 기능을 하드웨어로 제공하는 HTM이 제안되고 있으나, HTM은 캐시 크기의 한계 등 하드웨어 상의 제약사항 및 OS와의 충돌(context switching) 때문에 트랜잭션 간의 충돌 발생에 대한 대처가 어렵다는 문제점을 가질 수 있다.
이러한 문제점을 해결하기 위해, HTM 및 STM을 동시에 제공하여 HTM이 지니고 있는 단점을 STM으로 극복하려는 하이브리드 TM(Hybrid TM) 기법에 관한 연구가 제안되고 있다.
하지만, 기존의 하이브리드 TM 기법에서는 HTM과 STM을 동시에 수행하는 경우에, 블룸 필터(Bloom filter)의 데이터 구조가 고정적인 크기를 지니고 있기 때문에 대량의 트랜잭션을 처리 시 부정 오류(false positive)의 발생 확률이 높아지고 성능이 저하될 우려가 있다.
또한, 기존의 하이브리드 TM 기법에서는 락(lock) 기반의 메모리 관리자를 통해 공유 메모리에 하나의 메모리 풀을 사용하여 'malloc'의 호출 시 메모리를 할당하고 있으나, 멀티 코어 환경에서는 여러 스레드에서 하나의 메모리 풀에 접근하기 때문에 락 비용이 발생할 수 있다. 즉, 동시에 접근하는 스레드가 많아질수록 락을 기다리는 시간이 커지며, 각 스레드는 메모리를 얻기 위해 대기해야 하는 문제점이 존재할 수 있다.
또한, 기존의 하이브리드 TM 기법에서는 STM 및 HTM 환경에서 트랜잭션이 동시에 동작할 경우, 도 1에 도시한 것과 같은 동시성 제어 문제가 발생할 수 있다.
도 1은 종래의 일실시예에 따른 하이브리드 TM 기법에 있어서, 트랜잭션 처리 시의 동시성 제어 문제를 나타내는 도면이다.
도 1을 참조하면, 종래의 일실시예에 따른 하이브리드 TM 기법에 따르면, x 및 y의 값을 모두 '0'으로 초기화 한 상태에서 STM과 HTM을 동시에 수행 시, STM(도 1의 'SW_WRITEBACK')에서 x의 값이 1로 변화되는 경우에도(line 2), HTM(도 1의 'HW_POST_BEGIN')에서는 x의 값이 변화되지 않은 상태에서 처리되어 항상 잘못된 값이 도출되는 오류가 생길 수 있다.
또한, 종래의 일실시예에 따른 하이브리드 TM 기법에 따르면, HTM으로 처리되는 트랜잭션은 STM으로 처리되는 경우 보다 항상 빠른 결과를 도출하게 되므로, HTM의 비일관성으로 인한 트랜잭션 처리 효율의 문제점을 야기할 수 있다.
본 발명의 실시예는 멀티 코어 환경의 인메모리(In-Memory) 데이터베이스 상에서 HTM 및 STM 기술을 활용하여 유동적인 블룸 필터 데이터 구조를 기반으로 트랜잭션의 HTM 처리와 STM 처리를 시간적으로 동시에 수행 함으로써, 대규모 DB 트랜잭션의 처리 효율을 높이는 것을 목적으로 한다.
또한, 본 발명의 실시예는 트랜잭션의 HTM 처리와 STM 처리를 동시 제어하면서도, 단위 시간 동안 HTM 처리에 우선순위를 두어 처리함으로써, STM 처리 결과를 이용하여 HTM 처리 결과를 보완하여 하이브리드 트랜잭셔널 메모리(Hybrid TM)에서 트랜잭션의 처리 성능을 보다 높이는 것을 목적으로 한다.
또한, 본 발명의 실시예는 HTM 상에서 처리되는 트랜잭션에 대해 우선 순위를 높게 책정하여 STM의 간섭을 받지 않고 처리 가능하게 하고, 스냅샷 기반의 시퀀스 락(seqlock)을 유지하여, HTM 처리되는 트랜잭션과 STM 처리되는 트랜잭션 간에 효율적으로 동시성 제어를 수행하는 것을 목적으로 한다.
또한, 본 발명의 실시예는 유동적인 블룸 필터 데이터 구조를 사용하여 트랜잭션 간의 충돌을 효율적으로 감지하는 것을 목적으로 한다.
또한, 본 발명의 실시예는 데이터 사이즈 별로 최적화된 메모리 관리 도구를 통해, 멀티 코어 인메모리 환경에서의 효율적인 트랜잭션 처리를 제공하는 것을 목적으로 한다.
본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법은, 워크로드로부터 트랜잭션이 시작되면, 상기 트랜잭션에 대해, HTM(Hardware Transactional Memory)에 의한 HTM 처리를 수행하는 단계, 및 상기 트랜잭션에 대해, STM(Software Transactional Memory)에 의한 STM 처리를 수행하는 단계를 포함한다.
또한, 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치는, 워크로드로부터 트랜잭션이 시작되면, 상기 트랜잭션에 대해, HTM(Hardware Transactional Memory)에 의한 HTM 처리를 수행하고, 상기 트랜잭션에 대해, STM(Software Transactional Memory)에 의한 STM 처리를 수행하는 트랜잭션 처리부를 포함한다.
본 발명의 일실시예에 따르면, 멀티 코어 환경의 인메모리(In-Memory) 데이터베이스 상에서 HTM 및 STM 기술을 활용하여 유동적인 블룸 필터 데이터 구조를 기반으로 트랜잭션의 HTM 처리와 STM 처리를 시간적으로 동시에 수행 함으로써, 대규모 DB 트랜잭션의 처리 효율을 높일 수 있다.
또한, 본 발명의 일실시예에 따르면, 트랜잭션의 HTM 처리와 STM 처리를 동시 제어하면서도, 단위 시간 동안 HTM 처리에 우선순위를 두어 처리함으로써, STM 처리 결과를 이용하여 HTM 처리 결과를 보완하여 하이브리드 트랜잭셔널 메모리(Hybrid TM)에서 트랜잭션의 처리 성능을 보다 높일 수 있다.
또한, 본 발명의 일실시예에 따르면, HTM 상에서 처리되는 트랜잭션에 대해 우선 순위를 높게 책정하여 STM의 간섭을 받지 않고 처리 가능하게 하고, 스냅샷 기반의 시퀀스 락(seqlock)을 유지하여, HTM 처리되는 트랜잭션과 STM 처리되는 트랜잭션 간에 효율적으로 동시성 제어를 수행할 수 있다.
또한, 본 발명의 일실시예에 따르면, 유동적인 블룸 필터 데이터 구조를 사용하여 트랜잭션 간의 충돌을 효율적으로 감지할 수 있다.
또한, 본 발명의 일실시예에 따르면, 데이터 사이즈 별로 최적화된 메모리 관리 도구를 통해, 멀티 코어 인메모리 환경에서의 효율적인 트랜잭션 처리를 제공할 수 있다.
도 1은 종래의 일실시예에 따른 하이브리드 TM 기법에 있어서, 트랜잭션 처리 시의 동시성 제어 문제를 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치의 구성을 도시한 블록도이다.
도 3은 본 발명의 일실시예에 있어서, 하이브리드 트랜잭셔널 메모리 시스템에서 트랜잭션을 처리하는 전체적인 흐름을 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 트랜잭션 처리 시 동시성 제어를 수행하는 과정을 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 블룸 필터의 구조를 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 블룸 필터를 기반으로 동시성 제어를 수행하는 흐름을 도시한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 메모리 할당부를 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, 로컬 캐시(Local cache)의 프리 리스트(free list)의 구조를 도시한 도면이다.
도 9는 본 발명의 일실시예에 있어서, 일정 크기 미만의 스몰 오브젝트에 대한 메모리 할당(Small Object allocation) 알고리즘의 일례를 도시한 도면이다.
도 10은 본 발명의 일실시예에 있어서, 중앙 힙(Central heap)의 프리 리스트(free list)의 구조를 도시한 도면이다.
도 11은 본 발명의 일실시예에 있어서, 스팬(span)을 이용한 오브젝트 관리를 설명하기 위한 도면이다.
도 12는 본 발명의 일실시예에 있어서, 스팬 메모리 할당(Span allocation) 알고리즘의 일례를 도시한 도면이다.
도 13은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법의 순서를 도시한 흐름도이다.
이하, 첨부된 도면들을 참조하여 본 발명의 일실시예에 따른 응용프로그램 업데이트 장치 및 방법에 대해 상세히 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치의 구성을 도시한 블록도이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치(200)는, 트랜잭션 처리부(210), 메모리 할당부(220) 및 동시성 제어부(230)를 포함하여 구성될 수 있다.
트랜잭션 처리부(210)는 워크로드(Workload)로부터 트랜잭션이 시작되면, 상기 트랜잭션에 대해, HTM(Hardware Transactional Memory)에 의한 HTM 처리를 수행하고, 상기 트랜잭션에 대해, STM(Software Transactional Memory)에 의한 STM 처리를 수행한다.
일례로, 본 발명의 트랜잭션 처리 장치(200)는 어플리케이션 형태로 구현될 수 있다. 트랜잭션 처리부(210)는 트랜잭션의 처리 개시에 관한 명령이 어플리케이션 상에서 워크로드(Workload)에 의해 입력되면, 트랜잭션의 HTM 처리 및 STM 처리를 동시에 수행할 수 있다.
이를 통해, 트랜잭션 처리부(210)는 멀티 코어 환경의 인메모리(In-Memory) 데이터베이스 상에서 HTM 및 STM 기술을 활용하여 유동적인 블룸 필터 데이터 구조를 기반으로 트랜잭션의 HTM 처리와 STM 처리를 시간적으로 동시에 수행 함으로써, 대규모 DB 트랜잭션의 처리 효율을 높일 수 있다.
다른 일례로, 트랜잭션 처리부(210)는 트랜잭션의 HTM 처리가 어려운 트랙잭션에 대해 선택적으로 STM 처리 또는 락(lock) 처리를 수행할 수 있다. 이를 통해, 트랜잭션 처리부(210)는 트랜잭션의 길이와 상관없이 어떠한 트랜잭션이든 빠르게 처리할 수 있다.
구체적으로, 트랜잭션 처리부(210)는 HTM 처리부(211), STM 처리부(212) 및 락 처리부(213)로 구성될 수 있다.
메모리 할당부(220)는 상기 HTM 내에 메모리 영역을 할당하고, 상기 STM 내에, 상기 메모리 영역과 상이한 가상메모리 영역을 할당한다.
일례로, 메모리 할당부(220)는 상기 HTM 내에, 상기 HTM 처리를 수행하기 위한 메모리 영역을 할당하고, 트랜잭션 처리부(210) 내 HTM 처리부(211)는, 정해진 횟수(재시도 횟수)에 걸쳐 상기 HTM 처리의 수행을 시도하여, 상기 메모리 영역에서, 상기 HTM 처리를 수행할 수 있다.
이때, 트랜잭션 처리부(210) 내 STM 처리부(212)는 상기 횟수 이내에서, 상기 HTM 처리가 수행되지 않는 경우, 상기 가상메모리 영역 상에서, 상기 STM 처리를 수행할 수 있다.
일례로, 트랜잭션 처리부(210)는 상기 HTM 처리와 상기 STM 처리가 수행되지 않는 경우, 싱글 글로벌 락(single global lock)을 통해, 상기 트랜잭션을 처리할 수 있다.
즉, 트랜잭션 처리부(210) 내 락 처리부(213)는 각각 정해진 재시도 횟수(임계치) 내에 트랜잭션의 HTM 처리 및 STM 처리가 어려운 트랙잭션에 대해, 싱글 글로벌 락을 통한 트랜잭션 처리를 수행할 수 있다. 참고로, 글로벌 락(전역 잠금)은 모든 노드에 예컨대 일관적인 파일 시스템 보기가 제공되도록 하는 역할을 할 수 있다.
메모리 할당부(220)는 트랜잭션 처리부(210)에서의 트랜잭션 처리 성능 향상을 위해 트랜잭션과 연관되는 오브젝트 사이즈에 맞춰 메모리 할당과 해제를 수행 함으로써, 메모리를 효율적으로 관리할 수 있다.
일례로, 메모리 할당부(220)는 상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 할당된 상기 메모리 영역 또는 상기 가상메모리 영역을 결정할 수 있다.
예를 들어, 메모리 할당부(220)는 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 메모리 영역을 할당하고, 상기 트랜잭션이 HTM 처리되지 않는 경우, 상기 메모리 영역의 할당을 해제하고, 상기 오브젝트의 크기를 고려하여 STM 처리를 위한 가상 메모리를 할당할 수 있다.
메모리 할당부(220)는 상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 스레드(thread) 별 로컬 캐시(local cache) 또는 중앙 캐시(central cache) 내에서 상기 메모리 영역 또는 상기 가상메모리 영역의 할당 및 해제를 수행할 수 있다.
구체적으로, 메모리 할당부(220)는 상기 오브젝트가 일정 크기 이상이면, 중앙 캐시에서 상기 메모리 영역 또는 상기 가상메모리 영역을 할당하고, 상기 오브젝트가 일정 크기 미만이면, 스레드 각각으로 로컬 캐시를 생성하고, 상기 로컬 캐시에서 상기 메모리 영역 또는 상기 가상메모리 영역을 할당하고, 일정 주기로 가비지 콜렉션(Garbage Collection)을 수행하여, 상기 로컬 캐시에서 상기 메모리 영역 또는 상기 가상메모리 영역이 할당된 오브젝트에 대해, 상기 중앙 캐시 내의 상기 메모리 영역 또는 상기 가상메모리 영역을 재할당할 수 있다.
예를 들어, 메모리 할당부(220)는 일정 크기 미만의 스몰 오브젝트(Small Object, SO)인 경우, 중앙 캐시에서 HTM 처리를 위한 메모리 영역 또는 STM 처리를 위한 가상메모리 영역의 할당과 해제를 수행할 수 있다.
또한, 메모리 할당부(220)는 일정 크기 이상의 라지 오브젝트(Large Object, LO)인 경우, 스레드(thread) 별 로컬 캐시(local cache)에서 HTM 처리를 위한 메모리 영역 또는 STM 처리를 위한 가상메모리 영역의 할당과 해제를 수행할 수 있다.
즉, 메모리 할당부(220)는 사이즈가 큰 라지 오브젝트(LO)인 경우, 공유 메모리에 존재하는 메모리 풀을 이용하여, 메모리 영역 또는 가상메모리 영역의 할당과 해제를 수행하고, 사이즈가 작은 스몰 오브젝트(SO)인 경우, 스레드 별로 스레드가 사용할 로컬 캐시를 만들어서 메모리 영역 또는 가상메모리 영역의 할당과 해제를 수행할 수 있다.
이때, 로컬 캐시의 영역은 작게 할당되어 각 스레드에서 지역적으로 동작할 수 있으므로, 효과적으로 트랜잭션의 동시성 제어가 수행될 수 있다.
또한, 데이터의 오브젝트들은 필요한 경우 로컬 영역에서 중앙 영역으로 이동할 수 있다. 즉, 메모리 할당부(220)는 주기적으로 GC(Garbage Collection)를 수행하여 로컬 영역에서 중앙 영역으로 메모리가 이동되도록 할 수 있다.
이와 같이, 본 발명의 일실시예에 따르면, 데이터 사이즈 별로 최적화된 메모리 관리 도구를 통해, 멀티 코어 인메모리 환경에서의 효율적인 트랜잭션 처리를 제공할 수 있다.
동시성 제어부(230)는 블룸 필터(Bloom filter)를 기반으로, 상기 HTM 처리와, 상기 STM 처리 간에, 동시성 제어(Concurrency Manager)를 수행한다.
일례로, 동시성 제어부(230)는 유동적인 블룸 필터 데이터 구조를 사용하여 트랜잭션 간의 충돌을 효율적으로 감지할 수 있다.
또한, 동시성 제어부(230)는 유동적인 데이터 구조를 가지는 블룸 필터(Bloom filter)를 사용하여 트랜잭션의 HTM 처리와 STM 처리가 시간적으로 동시에 수행되도록 제어 함으로써, 멀티 코어 환경의 인메모리(In-Memory) 데이터베이스 상에서 대규모 DB 트랜잭션의 처리 효율을 높일 수 있다.
다른 일례로, 동시성 제어부(230)는 트랜잭션의 HTM 처리와 STM 처리를 동시 제어하면서도, 단위 시간 동안 HTM 처리와 STM 처리에 부여되는 처리 우선순위를 서로 상이하게 함으로써, 상기 HTM 처리와 상기 STM 처리와의 충돌을 용이하게 회피할 수 있다.
구체적으로, 동시성 제어부(230)는 상기 HTM 처리에 대해, 상기 STM 처리 보다 높은 처리 우선순위를 부여하여, 상기 STM 처리와 무관하게, 상기 HTM 처리가 우선하여 수행되도록 할 수 있다. 이때, 트랜잭션 처리부(210)는 상기 처리 우선순위가 높은 처리를 수행 시, 상기 처리 우선순위가 낮은 처리에 대해 유지된, 시퀀스 락을 이용하지 않도록 할 수 있다.
이를 통해, 본 발명에 의하면, HTM 상에서 처리되는 트랜잭션에 대해 우선 순위를 높게 책정하여 STM의 간섭을 받지 않고 처리 가능하게 할 수 있고, 스냅샷 기반의 시퀀스 락(seqlock)을 유지하여, HTM 처리되는 트랜잭션과 STM 처리되는 트랜잭션 간에 효율적으로 동시성 제어를 수행할 수 있다.
또한, 동시성 제어부(230)는 상기 HTM 처리 및 상기 STM 처리 중에서, 처리 우선순위가 낮은 처리가 수행 완료되는 시점에, 처리 우선순위가 높은 처리에 대해 검증(validation)하고, 트랜잭션 처리부(210)는 상기 검증이 실패하면, 상기 처리 우선순위가 낮은 처리를 재수행할 수 있다.
트랜잭션 처리부(210)는 상기 검증하는 동안, 상기 처리 우선순위가 낮은 처리에 대해, 스냅샷 기반의 시퀀스 락(seqlock)을 유지하고, 상기 검증이 성공하면, 상기 시퀀스 락을 증가시킨 후, 상기 트랜잭션을 종료할 수 있다.
이와 같이, 본 발명에 의하면, 트랜잭션의 HTM 처리와 STM 처리를 동시 제어하면서도, 단위 시간 동안 HTM 처리에 우선순위를 두어 처리함으로써, STM 처리 결과를 이용하여 HTM 처리 결과를 보완하여 하이브리드 트랜잭셔널 메모리(Hybrid TM)에서 트랜잭션의 처리 성능을 보다 높일 수 있다.
도 3은 본 발명의 일실시예에 있어서, 하이브리드 트랜잭셔널 메모리 시스템에서 트랜잭션을 처리하는 전체적인 흐름을 도시한 도면이다.
본 발명에서 고안하는 하이브리드 트랜잭셔널 메모리 기법은 'LiteHTM', 'NorecSTM', 'Single Lock'의 환경에서 될 수 있으며, 이를 효율적으로 수행하기 위해 동시성 제어부(Concurrency Manager) 및 메모리 할당부(Memory Allocator)를 이용할 수 있다.
도 3을 참조하면, 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치(300)는, HTM 처리부(310), STM 처리부(320), 싱글 락 처리부(330) 및 메모리 할당부(340)를 포함하여 구성될 수 있다.
HTM 처리부(310)는 트랜잭션의 HTM 처리를 관리하는 모듈로서, 기본적인 HTM 처리 환경을 제공한다.
일례로, HTM 처리부(310)는 'LiteHTM(RTM)'로 작동될 수 있으며, HTM 실행부(HTM executor)(311) 및 제1 동시성 제어부(312)를 포함하여 구성될 수 있다.
HTM 처리부(310)는 일정 재시도 횟수에 따라 트랜잭션을 처리하며, 재시도 횟수 이내에 혹은 예기치 못한 원인에 의해 트랜잭션이 중단(abort)되는 경우, 대비 경로로서 STM 처리부(320)에서 트랜잭션을 처리할 수 있다.
또한, HTM 처리부(310)는 STM 처리부(320)와 동시에 트랜잭션을 처리할 때 동작하는 HTM 처리 알고리즘을 포함할 수 있다.
STM 처리부(320)는 트랜잭션을 STM으로 처리하기 위한 모듈로서, STM에서 가장 좋은 성능을 보이는 일례로 'NOrec STM'으로 작동될 수 있다.
STM 처리부(320)는 STM 실행부(STM executor)(321) 및 제2 동시성 제어부(322)를 포함하여 구성될 수 있다.
제1 동시성 제어부(312) 및 제2 동시성 제어부(322)는 각각, 블룸 필터(bloom filter) 기반의 충돌 탐지 알고리즘을 사용하여, HTM 및 STM 환경에서 동작하는 트랜잭션에 대한 충돌 문제를 제어하는 역할을 할 수 있다.
이를 위해, 제1 동시성 제어부(312) 및 제2 동시성 제어부(322)는 각각 블룸 필터의 성능(즉, low storage overhead 및 low false positive)을 극대화 하기 위해 워크로드 마다 최적의 블룸 필터 값을 설정할 수 있다.
싱글 락 처리부(330)는 상기 HTM 처리와 상기 STM 처리가 수행되지 않는 경우, 싱글 글로벌 락(single global lock)을 통해, 상기 트랜잭션을 처리하는 역할을 한다.
메모리 할당부(340)는 상기 HTM 처리를 위한 메모리 영역 또는 상기 STM 처리를 위한 가상메모리 영역을 할당하는 역할을 하며, 멀티 코어 환경에서의 최적화된 메모리 할당과 해제를 관리할 수 있다.
도 3에 도시된 것처럼, HTM 처리부(310)는 워크로드로부터 트랜잭션이 시작되면, HTM 실행부(311)를 통해 실행을 준비하고(단계 ①), 메모리 할당부(340)를 통해 필요한 메모리 영역을 할당 받을 수 있다(단계 ②).
제1 동시성 제어부(312) 및 제2 동시성 제어부(322)는 HTM 환경에서 트랜잭션이 처리되는 중에 STM 환경에서 동작되는 트랜잭션이 존재할 경우, HTM 처리와 STM 처리 간에 동시성 제어를 수행할 수 있다(단계 ③).
HTM 처리부(310)는 HTM 환경에서 일정 재시도 횟수 이내에 트랜잭션의 HTM 처리를 시도할 수 있다(단계 ④).
HTM 처리부(310)는 HTM 환경에서 일정 재시도 횟수 이내에 트랜잭션의 HTM 처리가 불가능하거나, 혹은 예기치 못한 원인이 발생하여 HTM 환경에서 처리할 수 없는 경우, 대비 경로(fallback path)인 STM 처리부(320)로 트랜잭션을 이동하여 STM 처리부(320)에서 트랜잭션의 STM 처리가 수행될 수 있다(단계 ⑤).
STM 처리부(320)는 메모리 할당부(340)를 통해 가용 메모리(가상메모리 영역)을 할당 받고(단계 ⑥), 일정 재시도 횟수 만큼 STM 환경에서 트랜잭션을 처리할 수 있다(단계 ⑦).
이때, STM 환경에서도 처리할 수 없는 트랜잭션인 경우, 싱글 락 처리부(330)는 싱글 글로벌 락을 통해 트랜잭션 처리를 재수행할 수 있다(단계 ⑧).
대부분의 트랜잭션 처리는 HTM 실행부(311) 및 STM 처리부(320)에서 이루어지며, 하이브리드 트랜잭션 메모리로 처리할 수 없는 트랜잭션에 한하여 싱글 락(single lock)으로 처리될 수 있다.
도 4는 본 발명의 일실시예에 있어서, 트랜잭션 처리 시 동시성 제어를 수행하는 과정을 도시한 도면이다.
본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치는, HTM 상에서 처리되는 트랜잭션에 대해, STM 상에서 처리되는 트랜잭션 보다 우선 순위를 높게 책정하여 처리할 수 있다.
다시 말해, 트랜잭션 처리 장치는 HTM 상에서 트랜잭션을 처리할 경우 STM의 간섭을 받지 않고 처리할 수 있으며, STM 상에서 처리되는 트랜잭션은 블룸 필터 및 검증(validation) 과정을 거쳐 일관성을 유지할 수 있다.
도 4를 참조하면, 트랜잭션 처리 장치 내 'NorecSTM'(이하, STM 처리부)은, 스냅샷 기반의 seqlock을 유지하여 동시성 제어를 수행할 수 있다. 즉, STM 처리부는 데이터에 대한 '쓰기(Write)'를 수행할 경우, 해당 데이터에 대한 seqlock을 통해 '쓰기'를 제어하고, '읽기(Read)'의 경우에는 seqlock을 사용하지 않고 '읽기'를 제어할 수 있다.
또한, STM 처리부는, '읽기'/'쓰기'에 대한 검증(validation)을 위해 블룸 필터 기반으로 동시성 제어 기술을 적용할 수 있다.
STM 처리부는 트랜잭션 '쓰기'를 수행할 경우, HTM 처리부(LiteHTM)와의 동시성 제어를 위해 사용되는 데이터 구조로서 부정 오류('false negative')를 방지할 수 있다.
STM 처리부는 트랜잭션의 수행이 완료되는 시점에 HTM 처리부를 통해 수행된 트랜잭션과의 검증(validation)을 수행할 수 있다.
STM 처리부는 상기 검증 결과 거짓(false)이 반환되면, 트랜잭션을 재수행하고, 참(true)이 반환되면 시퀀스 락(seqlock)을 '1'만큼 증가시키고 트랜잭션 종료(commit)를 요청할 수 있다.
본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치는, 블룸 필터를 기반으로 HTM 및 STM의 동시성 제어를 관리할 수 있다.
여기서, 블룸 필터(Bloom filter)는 1970년 Burton Howard Bloom에 의해 고안된 기법으로서, 원소가 집합에 속하는지 여부를 검사하는데 사용되는 확률적 자료 구조를 지칭할 수 있다.
구체적으로, 블룸 필터에서는 어떤 원소가 집합에 속하는 것으로 판단되더라도, 실제로는 원소가 집합에 속하지 않는 '긍정 오류(false positive)'가 발생할 수는 있으나, 원소가 집합에 속하지 않는 것으로 판단되었는데, 실제로는 원소가 집합에 속하는 '부정 오류(false negative)'가 발생하는 것은 불가능하다.
본 발명의 트랜잭션 처리 장치는, 이러한 블룸 필터를 이용하여, HTM 및 STM의 동시성 제어를 관리할 수 있다. 즉, 블룸 필터의 집합에 원소를 추가하는 것은 가능하지만, 집합에서 원소를 삭제하는 것은 불가능하며, 집합 내 원소의 숫자가 증가할수록 긍정 오류 발생 확률도 증가할 수 있다.
도 5는 본 발명의 일실시예에 있어서, 블룸 필터의 구조를 도시한 도면이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치는, 블룸 필터 기반으로 동시성 제어를 수행할 수 있다.
블룸 필터는 m비트 크기의 비트 배열 구조를 가질 수 있다. 또한, 블룸 필터에서는 k개의 서로 다른 해쉬 함수를 사용하며, 각 해쉬 함수는 입력된 원소에 대해 0에서 m-1 중 하나를 반환할 수 있다(수학식 1 참조).
Figure 112017039425836-pat00001
블룸 필터는 집합에 원소를 추가하는 명령어 및 원소가 속하는지를 검사하는 명령어를 지원할 수 있다. 한편, 원소를 삭제하는 명령어는 존재하지 않는다.
블룸 필터는 원소를 추가하는 경우, 추가하려는 원소에 대해 k개의 해쉬 값을 계산한 다음, 각 해쉬 값에 대응하는 비트를 1로 설정할 수 있다(수학식 2).
Figure 112017039425836-pat00002
또한, 블룸 필터는 원소를 검사하는 경우, 원소 x에 대해 k개의 모든 해쉬 결과를 V에 대한 배열 인덱스로 사용하여, 해당 배열 값이 모두 1이면 해당 집합의 원소로 가정하여 'true'를 반환할 수 있다. 이때, 블룸 필터는 단 하나라도 원소 배열 값이 1이 아니면, 집합에 포함된 원소가 아니라고 판단하여 'false'를 반환할 수 있다(수학식 3 참조).
Figure 112017039425836-pat00003
본 발명의 트랜잭션 처리 장치는, 수학식 4를 적용하여 블룸 필터의 긍정 오류(false positive)가 발생되는 확률을 줄임으로써 트랜잭션 처리 효율을 증대할 수 있다. 수학식 4에서 'k'는 해쉬 hash function의 개수이고, 'n'은 집합의 크기, 'm'은 블룸 필터의 bit 사이즈를 지칭할 수 있다.
Figure 112017039425836-pat00004
도 6은 본 발명의 일실시예에 있어서, 블룸 필터를 기반으로 동시성 제어를 수행하는 흐름을 도시한 도면이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치는, 트랜잭션을 HTM 처리 또는 STM 처리하고(단계(610)), STM 혹은 HTM에서 처리되는 트랜잭션을 모두 블룸 필터에 기록한다(단계(620)).
이후, 트랜잭션 처리 장치는 블룸 필터가 트랜잭션 데이터를 가지는지 확인한다(단계(630)). 본 단계(630)에서는, 블룸 필터를 통해 비교 연산을 수행하여, 다음 트랜잭션의 연산(operation)이 기 수행된 트랜잭션을 검사하도록 할 수 있다.
단계(630)에서의 확인 결과, 블룸 필터에 트랜잭션 데이터의 원소가 존재하지 않는다면(즉, 해당 트랜잭션이 기 수행된 것이 아니면), 스레드 대기 혹은 검증을 수행하지 않고 데이터를 기록한다(단계 640).
또는, 단계(630)에서의 확인 결과, 블룸 필터에 데이터 원소가 존재한다고 판단되면(즉, 해당 트랜잭션이 기 수행된 것이면), 'true'를 반환하고(단계 650), 스레드 대기 혹은 검증의 추가 작업을 통해 데이터를 기록하고, 트랜잭션을 실행한다(단계 660).
도 7은 본 발명의 일실시예에 있어서, 메모리 할당부를 도시한 도면이다.
도 7을 참조하면, 메모리 할당부(이하, 메모리 관리자)는, 트랜잭션과 연관된 오브젝트의 크기에 따라 스레드 캐시(thread cache)(710) 및 중앙 캐시(central cache)(720)에서 메모리 할당 및 해제를 수행할 수 있다. 여기서, 중앙 캐시(720)는 중앙 프리 리스트(Central Free list)(721)를 포함할 수 있다.
일례로, 메모리 관리자는, 사이즈가 큰 라지 오브젝트(LO)인 경우 중앙 캐시(공유 메모리)(720)에 존재하는 메모리 풀에서 관리하고, 사이즈가 작은 스몰 오브젝트(SO)는 스레드 별로 스레드가 사용할 로컬 캐시(710)를 만들어서 할당할 수 있다.
예를 들어, 메모리 관리자는 사이즈가 '32kb' 이상인 오브젝트를 라지 오브젝트(LO), 사이즈가 '32kb' 미만인 오브젝트를 스몰 오브젝트(SO)로 구분할 수 있다.
로컬 캐시(710)의 영역은 작게 할당되어 각 스레드에서 지역적으로 동작하기 때문에, 효과적으로 트랜잭션의 동시성 제어가 수행될 수 있다.
데이터의 오브젝트들은 필요한 경우 로컬 영역에서 중앙 영역으로 이동하며, 메모리 관리자는, 주기적으로 GC(Garbage Collection)를 수행하여 로컬 영역에서 중앙 영역으로 메모리를 이동할 수 있다.
메모리 관리자는 LO page-level allocator(페이지는 4K로 정렬된 메모리 구역)를 사용하여 로컬 영역에 할당하지 않고 중앙 페이지 힙(central page heap)(730)에 메모리 영역을 직접 할당할 수 있다.
메모리 관리자는 라지 오브젝트(LO)를 페이지의 수만큼 할당하고, 페이지 순으로 정렬할 수 있다. 이때, 메모리 관리자는 연속된 페이지들을 각각 같은 크기를 가진 일련의 작은 오브젝트들로 나눌 수 있다. 예를 들어, 메모리 관리자는 하나의 페이지(4K)를 각각, 128바이트 크기의 32개의 오브젝트로 나눌 수 있다.
도 8은 본 발명의 일실시예에 있어서, 로컬 캐시(Local cache)의 프리 리스트(free list)의 구조를 도시한 도면이다.
도 8을 참조하면, 각각의 스몰 오브젝트 크기들은 대략적으로 170개의 할당 가능한 size-class 중 하나에 매핑될 수 있다. 예를 들면, 961에서 1024바이트의 범위에 있는 모든 할당들은 1024로 처리될 수 있다. size-class들은 8바이트, 16바이트, 32바이트 등으로 간격을 두어 작은 크기들을 구분할 수 있으며, 최대 간격은 256바이트이다. 로컬 캐시는 하나의 리스트를 포함하며, 각 리스트는 각 size class 별로 사용할 수 있는 프리 오브젝트(free object)들의 리스트를 가질 수 있다.
도 9는 본 발명의 일실시예에 있어서, 일정 크기 미만의 스몰 오브젝트에 대한 메모리 할당(Small Object allocation) 알고리즘의 일례를 도시한 도면이다.
도 9를 참조하면, 메모리 관리자는 오브젝트의 크기에 대응하는 size-class에 매핑하고, 현재 스레드의 스레드 캐시 안에서 대응하는 프리 리스트(free list)를 살펴본다.
이때, 스몰 오브젝트(SO)의 프리 리스트가 비어있지 않으면, 메모리 관리자는 프리 리스트의 처음 오브젝트를 제거하고 해당 오브젝트를 반환하며 이러한 과정에서 어떠한 락(lock)도 획득하지 않는다. 이는 2.8 GHz Xeon에서 락(lock)/언락(unlock)의 명령을 수행하는 데에 대략 100nanosec가 걸리므로 메모리 할당의 속도에 대해 좋은 성능을 나타낼 수 있다.
또는, 스몰 오브젝트(SO)의 프리 리스트가 비어있을 경우, 메모리 관리자는 size-class에 해당하는 중앙 힙 프리 리스트(central heap free list)에서 오브젝트 셋을 가져올 수 있다. 이때, 중앙 힙 프리 리스트는 모든 스레드에 공유될 수 있다. 또한, 메모리 관리자는 해당 오브젝트 셋을 스레드-로컬 프리 리스트(thread-local free list)에 배치하며, 새로 가져온 오브젝트 중 하나를 응용프로그램으로 반환할 수 있다.
또한, 라지 오브젝트(LO)의 프리 리스트(free list)가 비어있을 경우, 메모리 관리자는 중앙 페이지 할당자로부터 연속된 페이지들을 할당하고, 오브젝트 묶음을 size-class에 맞게 나눈 후, 중앙 힙 프리 리스트에 새 오브젝트들을 배치하여, 스레드-로컬 프리 리스트로 오브젝트들 중 일부를 이동하여 처리할 수 있다.
메모리 관리자는 도 9에 도시된 스몰 오브젝트 메모리 할당 알고리즘에서와 같이, 메모리 할당을 요청하는 사이즈를 측정하여 SO 및 LO를 구분 함으로써 적절한 함수를 호출할 수 있다.
도 10은 본 발명의 일실시예에 있어서, 중앙 힙(Central heap)의 프리 리스트(free list)의 구조를 도시한 도면이다.
도 10을 참조하면, 사이즈가 32KB 이상인 라지 오브젝트(LO)는 4K의 페이지 사이즈에 맞추어 올림 처리된 후 중앙 힙(central heap)에 의해 관리될 수 있다.
여기서, 중앙 힙은 프리 리스트들의 배열로 이루어지며, 일례로, 256개의 연속된 페이지로 구조를 이루고, 256페이지 이상의 길이를 가지는 페이지는 나머지의 프리 리스트로 처리될 수 있다.
메모리 관리자는 n번째 프리 리스트를 참조하여 페이지를 할당할 수 있다. 만약 프리 리스트가 비어있다면, 다음 프리 리스트를 살펴보는 것이 필요하며, 마지막 프리 리스트까지 살펴볼 수 있다. 만약 실패하면, 시스템 메모리에서 가져오고, n페이지의 할당이 n의 길이보다 긴 일련의 페이지들을 충족하면, 나머지는 페이지 힙의 적합한 프리 리스트로 반환될 수 있다.
도 11은 본 발명의 일실시예에 있어서, 스팬(span)을 이용한 오브젝트 관리를 설명하기 위한 도면이다.
도 11을 참조하면, 본 발명에서 메모리 관리자에 의한 힙 관리는 페이지의 묶음으로 구성될 수 있다. 일련의 연속된 페이지는 스팬(span)으로 표현되며, 스팬은 메모리 할당/해제가 가능하다.
메모리 해제를 수행할 경우, 스팬(span)은 페이지 힙 연결 리스트의 엔트리 중 하나일 수 있다. 메모리 할당 시, 응용프로그램에 건네진 라지 오브젝트이거나 연속된 작은 페이지로 나누어진 일련의 페이지가 스팬일 수 있다.
라지 오브젝트로 나뉘었을 경우, 오브젝트들의 size-class가 스팬에 기록될 수 있다. 중앙 배열은 어떤 페이지가 속한 스팬을 찾고, 쓰일 페이지 넘버의 인덱스를 가질 수 있다.
도 11을 예로 들면, 스팬 'a'는 2페이지를 차지하며, 스팬 'b'는 1페이지를 차지하고, 스팬 'c'는 5페이지, 스팬 'd'는 3페이지를 차지할 수 있다.
32비트 주소 공간은 220인 4K 페이지에 적합하므로, 중앙 배열은 4MB의 적합한 공간을 가질 수 있다. 64비트 머신에서는 span 포인터에 일치하는 페이지 숫자를 매핑하는 배열 대신, 3-level radix tree를 사용할 수 있다.
도 12는 본 발명의 일실시예에 있어서, 스팬 메모리 할당(Span allocation) 알고리즘의 일례를 도시한 도면이다.
도 12에는 스팬(span)의 데이터 구조와, 메모리 할당/해제 알고리즘이 도시되어 있다. 스팬의 데이터 구조는 링크드 리스트(linked list)의 데이터 구조로 이루어질 수 있다.
오브젝트의 할당이 해제되었을 경우, 메모리 관리자는 해당 페이지 숫자를 계산하고, 일치하는 스팬 오브젝트를 찾기 위해 중앙 힙을 탐색할 수 있다.
메모리 관리자는 스팬 오브젝트가 작다면, 해당 오브젝트를 현재 스레드의 스레드 캐시 내의 적합한 프리 리스트에 넣을 수 있으며, 이때 현재 스레드 캐시가 예측한 크기(예컨대, 기본값 2MB)를 초과하면, 가비지 컬렉션을 실행하여 사용되지 않은 오브젝트를 스레드 캐시에서 중앙 프리 리스트들로 이동시킬 수 있다.
또는, 메모리 관리자는 스팬 오브젝트가 큰 경우, 오브젝트가 차지하는 페이지의 범위를 알려주고, 예를 들어 페이지의 범위가 [p, q]라고 가정하면, 페이지의 p-1과 q+1을 span에서 조회할 때, 인접한 스팬(span)들 중에서 하나 이상이 프리 상태라면 [p, q] span으로 묶을 수 있다. 이렇게 묶여진 span은 페이지 힙의 적합한 free list로 삽입될 수 있다.
이하, 도 13에서는 본 발명의 실시예들에 따른 트랜잭션 처리 장치(200)의 작업 흐름을 상세히 설명한다.
도 13은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법의 순서를 도시한 흐름도이다.
본 실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법은 상술한 트랜잭션 처리 장치(200)에 의해 수행될 수 있다.
도 13을 참조하면, 단계(1310)에서, 트랜잭션 처리 장치(200)는 워크로드로부터 트랜잭션이 시작되는지 확인한다. 상기 단계(1310)에서의 확인 결과, 트랜잭션이 시작되는 경우, 단계(1320)에서, 트랜잭션 처리 장치(200)는 상기 트랜잭션에 대해, HTM에 의한 HTM 처리를 수행하고, 단계(1330)에서, 트랜잭션 처리 장치(200)는 상기 트랜잭션에 대해, STM에 의한 STM 처리를 수행한다. 단계(1340)에서, 트랜잭션 처리 장치(200)는 블룸 필터를 기반으로, 상기 HTM 처리와, 상기 STM 처리 간에, 동시성 제어를 수행한다.
일례로, 본 발명의 트랜잭션 처리 장치(200)는 어플리케이션 형태로 구현될 수 있으며, 트랜잭션의 처리 개시에 관한 명령이 어플리케이션 상에서 워크로드(Workload)에 의해 입력되면, 트랜잭션의 HTM 처리 및 STM 처리를 동시에 수행할 수 있다.
구체적으로, 트랜잭션 처리 장치(200)는 상기 HTM 내에, 상기 HTM 처리를 수행하기 위한 메모리 영역을 할당하고, 상기 메모리 영역에서, 상기 HTM 처리를 수행할 수 있다. 또한, 트랜잭션 처리 장치(200)는 상기 STM 내에, 상기 메모리 영역과 상이한 가상메모리 영역을 할당하고, 상기 가상메모리 영역 상에서, 상기 STM 처리를 수행할 수 있다.
이때, 트랜잭션 처리 장치(200)는 상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 스레드(thread) 별 로컬 캐시(local cache) 또는 중앙 캐시(central cache) 내에서 상기 메모리 영역 또는 상기 가상메모리 영역의 할당 및 해제를 수행할 수 있다.
즉, 트랜잭션 처리 장치(200)는 트랜잭션과 연관되는 오브젝트 사이즈에 맞춰 메모리 할당과 해제를 수행 함으로써, 메모리를 효율적으로 관리하고 트랜잭션 처리 성능 향상을 도모할 수 있다.
트랜잭션 처리 장치(200)는 멀티 코어 환경의 인메모리(In-Memory) 데이터베이스 상에서 HTM 및 STM 기술을 활용하여 유동적인 블룸 필터 데이터 구조를 기반으로 트랜잭션의 HTM 처리와 STM 처리를 시간적으로 동시에 수행 함으로써, 대규모 DB 트랜잭션의 처리 효율을 높일 수 있다.
또한, 트랜잭션 처리 장치(200)는 트랜잭션의 HTM 처리와 STM 처리를 동시 제어하면서도, 단위 시간 동안 HTM 처리와 STM 처리에 부여되는 처리 우선순위를 서로 상이하게 함으로써, 상기 HTM 처리와 상기 STM 처리와의 충돌을 용이하게 회피할 수 있다.
이와 같이, 본 발명에 의하면, 트랜잭션의 HTM 처리와 STM 처리를 동시 제어하면서도, 단위 시간 동안 HTM 처리에 우선순위를 두어 처리함으로써, STM 처리 결과를 이용하여 HTM 처리 결과를 보완하여 하이브리드 트랜잭셔널 메모리(Hybrid TM)에서 트랜잭션의 처리 성능을 보다 높일 수 있다.
본 발명의 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
200: 트랜잭션 처리 장치
210: 트랜잭션 처리부 211: HTM 처리부
212: STM 처리부 213: 락 처리부
220: 메모리 할당부 230: 동시성 제어부

Claims (16)

  1. 워크로드로부터 트랜잭션이 시작되면,
    상기 트랜잭션에 대해, HTM(Hardware Transactional Memory)에 의한 HTM 처리를 수행하는 단계;
    상기 트랜잭션에 대해, STM(Software Transactional Memory)에 의한 STM 처리를 수행하는 단계;
    상기 HTM 처리 및 상기 STM 처리 중에서, 처리 우선순위가 낮은 처리가 수행 완료되는 시점에, 처리 우선순위가 높은 처리에 대해 검증(validation)하는 단계; 및
    상기 검증이 실패하면, 상기 처리 우선순위가 낮은 처리를 재수행하는 단계
    를 포함하는 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법.
  2. 제1항에 있어서,
    상기 HTM 내에 메모리 영역을 할당하는 단계; 및
    상기 STM 내에 상기 메모리 영역과 상이한 가상메모리 영역을 할당하는 단계
    를 더 포함하고,
    상기 HTM 처리를 수행하는 단계는,
    정해진 횟수에 걸쳐 상기 HTM 처리의 수행을 시도하여, 상기 메모리 영역에서, 상기 HTM 처리를 수행하는 단계
    를 포함하고,
    상기 STM 처리를 수행하는 단계는,
    상기 횟수 이내에서, 상기 HTM 처리가 수행되지 않아, 상기 STM 내에 상기 가상메모리 영역이 할당됨에 따라,
    상기 가상메모리 영역 상에서, 상기 STM 처리를 수행하는 단계
    를 포함하는 트랜잭션 처리 방법.
  3. 제2항에 있어서,
    상기 HTM 내에 메모리 영역을 할당하는 단계는,
    상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 할당된 상기 메모리 영역을 결정하는 단계
    를 포함하고,
    상기 가상메모리 영역을 할당하는 단계는,
    상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 할당된 상기 가상메모리 영역을 결정하는 단계
    를 포함하는 트랜잭션 처리 방법.
  4. 제2항에 있어서,
    상기 HTM 내에 메모리 영역을 할당하는 단계는,
    상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 스레드(thread) 별 로컬 캐시(local cache) 또는 중앙 캐시(central cache) 내에서 상기 메모리 영역의 할당을 수행하는 단계
    를 포함하고,
    상기 가상메모리 영역을 할당하는 단계는,
    상기 트랜잭션과 연관되는 오브젝트의 크기를 고려하여, 스레드 별 로컬 캐시 또는 중앙 캐시 내에서 상기 가상메모리 영역의 할당을 수행하는 단계
    를 포함하는 트랜잭션 처리 방법.
  5. 제4항에 있어서,
    상기 메모리 영역의 할당을 수행하는 단계는,
    상기 오브젝트가 일정 크기 이상이면, 중앙 캐시에서 상기 메모리 영역을 할당하는 단계;
    상기 오브젝트가 일정 크기 미만이면, 스레드 각각으로 로컬 캐시를 생성하고, 상기 로컬 캐시에서 상기 메모리 영역을 할당하는 단계; 및
    일정 주기로 가비지 콜렉션(Garbage Collection)을 수행하여, 상기 로컬 캐시에서 상기 메모리 영역이 할당된 오브젝트에 대해, 상기 중앙 캐시 내의 상기 메모리 영역을 재할당하는 단계
    를 포함하고,
    상기 가상메모리 영역의 할당을 수행하는 단계는,
    상기 오브젝트가 일정 크기 이상이면, 중앙 캐시에서 상기 가상메모리 영역을 할당하는 단계;
    상기 오브젝트가 일정 크기 미만이면, 스레드 각각으로 로컬 캐시를 생성하고, 상기 로컬 캐시에서 상기 가상메모리 영역을 할당하는 단계; 및
    일정 주기로 가비지 콜렉션을 수행하여, 상기 로컬 캐시에서 상기 가상메모리 영역이 할당된 오브젝트에 대해, 상기 중앙 캐시 내의 상기 가상메모리 영역을 재할당하는 단계
    를 포함하는 트랜잭션 처리 방법.
  6. 제1항에 있어서,
    상기 HTM 처리와 상기 STM 처리가 수행되지 않는 경우,
    싱글 글로벌 락(single global lock)을 통해, 상기 트랜잭션을 처리하는 단계
    를 더 포함하는 트랜잭션 처리 방법.
  7. 제1항에 있어서,
    블룸 필터(Bloom filter)를 기반으로, 상기 HTM 처리와, 상기 STM 처리 간에, 동시성 제어를 수행하는 단계
    를 더 포함하는 트랜잭션 처리 방법.
  8. 제1항에 있어서,
    상기 HTM 처리에 대해, 상기 STM 처리 보다 높은 처리 우선순위를 부여하여, 상기 STM 처리와 무관하게, 상기 HTM 처리가 우선하여 수행되도록 하는 단계
    를 더 포함하는 트랜잭션 처리 방법.
  9. 삭제
  10. 제1항에 있어서,
    상기 검증하는 동안, 상기 처리 우선순위가 낮은 처리에 대해, 스냅샷 기반의 시퀀스 락(seqlock)을 유지하는 단계; 및
    상기 검증이 성공하면, 상기 시퀀스 락을 증가시킨 후, 상기 트랜잭션을 종료하는 단계
    를 더 포함하는 트랜잭션 처리 방법.
  11. 제10항에 있어서,
    상기 처리 우선순위가 높은 처리를 수행 시, 상기 처리 우선순위가 낮은 처리에 대해 유지된, 시퀀스 락을 이용하지 않도록 하는 단계
    를 더 포함하는 트랜잭션 처리 방법.
  12. 워크로드로부터 트랜잭션이 시작되면,
    상기 트랜잭션에 대해, HTM에 의한 HTM 처리를 수행하고, 상기 트랜잭션에 대해, STM에 의한 STM 처리를 수행하는 트랜잭션 처리부; 및
    상기 HTM 처리 및 상기 STM 처리 중에서, 처리 우선순위가 낮은 처리가 수행 완료되는 시점에, 처리 우선순위가 높은 처리에 대해 검증하는 동시성 제어부
    를 포함하고,
    상기 트랜잭션 처리부는,
    상기 검증이 실패하면, 상기 처리 우선순위가 낮은 처리를 재수행하는
    하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 장치.
  13. 제12항에 있어서,
    상기 트랜잭션 처리 장치는,
    상기 HTM 내에 메모리 영역을 할당하고, 상기 STM 내에, 상기 메모리 영역과 상이한 가상메모리 영역을 할당하는 메모리 할당부
    를 더 포함하고,
    상기 트랜잭션 처리부는,
    정해진 횟수에 걸쳐 상기 HTM 처리의 수행을 시도하여, 상기 메모리 영역에서 상기 HTM 처리를 수행하되, 상기 횟수 이내에서, 상기 HTM 처리가 수행되지 않는 경우, 상기 가상메모리 영역 상에서, 상기 STM 처리를 수행하는
    트랜잭션 처리 장치.
  14. 제12항에 있어서,
    상기 HTM 처리와 상기 STM 처리가 수행되지 않는 경우,
    상기 트랜잭션 처리부는,
    싱글 글로벌 락을 통해, 상기 트랜잭션을 처리하는
    트랜잭션 처리 장치.
  15. 제12항에 있어서,
    상기 동시성 제어부는,
    블룸 필터를 기반으로, 상기 HTM 처리와, 상기 STM 처리 간에, 동시성 제어를 수행하는
    트랜잭션 처리 장치.
  16. 제12항에 있어서,
    상기 동시성 제어부는,
    상기 HTM 처리에 대해, 상기 STM 처리 보다 높은 우선순위를 부여하여, 상기 STM 처리와 무관하게, 상기 HTM 처리가 우선하여 수행되도록 하는
    트랜잭션 처리 장치.
KR1020170051677A 2017-04-21 2017-04-21 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 KR101885030B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170051677A KR101885030B1 (ko) 2017-04-21 2017-04-21 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
PCT/KR2017/014991 WO2018194237A1 (ko) 2017-04-21 2017-12-19 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170051677A KR101885030B1 (ko) 2017-04-21 2017-04-21 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치

Publications (1)

Publication Number Publication Date
KR101885030B1 true KR101885030B1 (ko) 2018-08-02

Family

ID=63251785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170051677A KR101885030B1 (ko) 2017-04-21 2017-04-21 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치

Country Status (2)

Country Link
KR (1) KR101885030B1 (ko)
WO (1) WO2018194237A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102150597B1 (ko) * 2019-07-23 2020-09-01 전북대학교산학협력단 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템
KR102184841B1 (ko) * 2019-06-27 2020-11-30 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148930B (zh) * 2020-09-28 2023-01-06 上海交通大学 基于rtm的图数据库系统事务处理的方法、系统及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070288902A1 (en) * 2006-06-09 2007-12-13 Sun Microsystems, Inc. Replay debugging
US7395382B1 (en) * 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
KR20080076981A (ko) * 2005-12-30 2008-08-20 인텔 코오퍼레이션 무한 트랜잭션 메모리 시스템
KR20160113207A (ko) * 2014-03-26 2016-09-28 인텔 코포레이션 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기
KR20160113205A (ko) * 2014-03-26 2016-09-28 인텔 코포레이션 트랜잭션 메모리 프로그램을 위한 소프트웨어 재생기

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395382B1 (en) * 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
KR20080076981A (ko) * 2005-12-30 2008-08-20 인텔 코오퍼레이션 무한 트랜잭션 메모리 시스템
US20070288902A1 (en) * 2006-06-09 2007-12-13 Sun Microsystems, Inc. Replay debugging
KR20160113207A (ko) * 2014-03-26 2016-09-28 인텔 코포레이션 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기
KR20160113205A (ko) * 2014-03-26 2016-09-28 인텔 코포레이션 트랜잭션 메모리 프로그램을 위한 소프트웨어 재생기

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Mark Moir 외. ‘Hybrid Transactional Memory’. Proceedings of the 12th international conference on Architectural support for programming languages and operating systems, 2006.10., pp.1-11. *
윤민. ‘멀티코어 환경의 인메모리 데이터베이스 상에서의 충돌 예측 및 재시도 정책 기반 하드웨어 트랜잭셔널 메모리 기법’. 전북대학교 컴퓨터공학과 박사 학위 논문, 2017.02.22., pp.1-148. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102184841B1 (ko) * 2019-06-27 2020-11-30 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치
KR102150597B1 (ko) * 2019-07-23 2020-09-01 전북대학교산학협력단 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템

Also Published As

Publication number Publication date
WO2018194237A1 (ko) 2018-10-25

Similar Documents

Publication Publication Date Title
KR101367450B1 (ko) 멀티 스레드 어플리케이션을 위한 해시 테이블의 동시 리해싱의 수행
JP4511653B2 (ja) マルチスレッド仮想マシン内におけるメモリ・アロケーションの方法及び装置
EP2972885B1 (en) Memory object reference count management with improved scalability
US9081702B2 (en) Working set swapping using a sequentially ordered swap file
US7512745B2 (en) Method for garbage collection in heterogeneous multiprocessor systems
US9298377B2 (en) Techniques for reducing read I/O latency in virtual machines
US8166255B2 (en) Reservation required transactions
US20080209154A1 (en) Page oriented memory management
WO2008082684A2 (en) System and method for optimistic creation of thread local objects in a virtual machine environment
KR101885030B1 (ko) 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
US10423467B2 (en) Data processing apparatus and method for performing lock-protected processing operations for multiple threads
JP3611295B2 (ja) コンピュータシステム、メモリ管理方法及び記憶媒体
US8291426B2 (en) Memory allocators corresponding to processor resources
JP5435741B2 (ja) 競合管理を容易にするための型固定性の使用
EP1014264B1 (en) A system and method for facilitating safepoint synchronization in a multithreaded computer system
CN114116194A (zh) 一种内存的分配方法及系统
CN114518961A (zh) 一种实时操作系统动态内存的管理方法及装置
US20090193220A1 (en) Memory management device applied to shared-memory multiprocessor
US20210103584A1 (en) Hash-based data structure
US20080034022A1 (en) System and method for updating references when incrementally compacting a heap
CN111352860B (zh) 一种Linux Bcache中的垃圾回收方法及系统
CN116954921A (zh) 基于乐观批处理的无锁数据结构内存回收方法
CN118708302A (zh) 事务请求的处理方法、设备及存储介质
CN118819749A (zh) 任务窃取方法、装置、芯片及计算机设备
JPS6122824B2 (ko)

Legal Events

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