KR102184841B1 - 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 - Google Patents
하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 Download PDFInfo
- Publication number
- KR102184841B1 KR102184841B1 KR1020190076825A KR20190076825A KR102184841B1 KR 102184841 B1 KR102184841 B1 KR 102184841B1 KR 1020190076825 A KR1020190076825 A KR 1020190076825A KR 20190076825 A KR20190076825 A KR 20190076825A KR 102184841 B1 KR102184841 B1 KR 102184841B1
- Authority
- KR
- South Korea
- Prior art keywords
- transaction
- log
- memory
- execution
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치가 개시된다. 본 발명의 일실시예에 따른 트랜잭션 복구 방법은, 하이브리드 트랜잭셔널 메모리 시스템으로 트랜잭션이 입력되면, 어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서, 상기 트랜잭션을 실행하는 단계와, 상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리에 보존하는 단계와, 상기 트랜잭션의 실행이 중단되는 경우, 상기 비휘발성 메모리로부터 가져온 데이터 파일을, 상기 비휘발성 메모리 내 상기 로그에 따라 변경하여, 상기 트랜잭션을 복구하는 단계, 및 상기 트랜잭션이 복구된 실행시점부터, 상기 트랜잭션을 재실행하는 단계를 포함한다.
Description
본 발명은 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서 트랜잭션 실행 중 비휘발성 메모리(NVM)에 플러시(flush)한 로그(Log)를 이용하여 시스템 실패 발생 시 트랜잭션의 신속한 복구를 지원하는 트랜잭션 복구 방법 및 트랜잭션 복구 장치에 관한 것이다.
멀티코어 환경에서 각 코어의 처리 성능을 극대화하기 위해, 하나의 작업을 다수의 스레드(Thread)로 나누어 여러 코어가 동시에 작업을 수행하는 병렬 프로그래밍 기법에 대한 연구가 진행되고 있다.
트랜잭셔널 메모리(Transactional Memory, TM) 기법은 이러한 병렬 프로그래밍 기법 중 하나로, 데이터 접근 시 락을 사용하지 않으며, 트랜잭션 간의 동기화를 비교적 간단하게 구현한 연구이다.
TM 기법은 소프트웨어를 통해 트랜잭션 병렬 처리를 지원하는 STM(Software Transactional Memory), 하드웨어를 통해 트랜잭션 병렬 처리를 지원하는 HTM(Hardware Transactional Memory), 그리고 이를 결합한 HyTM(Hybrid Transactional Memory)으로 분류된다.
STM기법은 트랜잭셔널 메모리의 개념을 소프트웨어로 구현한 기술로서, 타임스탬프 만을 기반으로 트랜잭션을 처리하고, 최소한의 락(Lock) 기능을 사용하여 커밋을 수행하므로 기존 STM 보다 좋은 성능을 나타내고 있다.
한편, STM 기법에서 처리 속도가 느린 한계점이 존재함에 따라 하드웨어 내에서 트랜잭셔널 메모리 기법을 적용하여 처리 속도를 높이는 HTM 기법이 제안되었다.
하지만 HTM 기법에서는 STM 기법에 비해 처리 속도가 빠르지만 하드웨어의 캐시(Cache) 용량 한계로 인해 큰 트랜잭션을 처리하지 못하는 한계점이 존재하고, 이를 해결하기 위해, STM 기법과 HTM 기법을 혼합한 HyTM 기법이 제안되었다.
HyTM 기법에서는 병렬 프로그래밍의 효율성 향상을 위해 처리 속도가 빠른 휘발성 메모리(일반적으로, DRAM) 상에서 트랜잭션을 실행하고 있다. 이때문에 전력 차단이나 OS 크래시(crash) 등의 시스템 실패(System failure)가 발생할 경우, 실행 중인 트랜잭션의 데이터가 손실되어 시스템 내구성(durability)을 지원하지 못하는 문제점이 생길 수 있다.
이에 따라, HyTM 기법에서 현재 처리되고 있는 트랜잭션을 DRAM과 근접한 읽기/쓰기 속도를 가진 비휘발성 메모리(Non-Volatile Memory, NVM)에 로깅(Logging)하여, 시스템 실패 시 로그를 통해 트랜잭션을 복구할 수 있는 기술이 요구되고 있다.
본 발명의 실시예는 트랜잭션 실행 중 생성한 로그를 비휘발성 메모리(NVM)에 보존하여, 시스템 실패 시 빠른 복구를 지원 함으로써, 시스템의 병렬성과 내구성(Durability)을 높이는 것을 목적으로 한다.
본 발명의 실시예는 HTM 외에, RH-STM, NOrec-STM 및 Single Global Lock 등 트랜잭션 특성에 맞는 TM을 제공하여, 효율적인 병렬 처리를 보장하는 것을 목적으로 한다.
본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템(HyTM)에서의 트랜잭션 복구 방법은, 하이브리드 트랜잭셔널 메모리 시스템으로 트랜잭션이 입력되면, 어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서, 상기 트랜잭션을 실행하는 단계와, 상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리에 보존하는 단계와, 상기 트랜잭션의 실행이 중단되는 경우, 상기 비휘발성 메모리로부터 가져온 데이터 파일을, 상기 비휘발성 메모리 내 상기 로그에 따라 변경하여, 상기 트랜잭션을 복구하는 단계, 및 상기 트랜잭션이 복구된 실행시점부터, 상기 트랜잭션을 재실행하는 단계를 포함할 수 있다.
또한, 본 발명의 실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템(HyTM)에서의 트랜잭션 복구 장치는, 하이브리드 트랜잭셔널 메모리 시스템으로 트랜잭션이 입력되면, 어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서, 상기 트랜잭션을 실행하는 실행부와, 상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리에 보존하는 생성부, 및 상기 트랜잭션의 실행이 중단되는 경우, 상기 비휘발성 메모리로부터 가져온 데이터 파일을, 상기 비휘발성 메모리 내 상기 로그에 따라 변경하여, 상기 트랜잭션을 복구하는 복구부를 포함하고, 상기 실행부는, 상기 트랜잭션이 복구된 실행시점부터, 상기 트랜잭션을 재실행할 수 있다.
본 발명의 일실시예에 따르면, 현재 처리되고 있는 트랜잭션 특성에 최적한 TM을 제공하여 효율적인 병렬 처리를 보장할 수 있고, TM 별 적합한 로깅 기법에 따라 비휘발성 메모리에 로그를 저장하여 트랜잭션 처리 도중에 전력 차단, OS 크래시와 같은 시스템 실패가 발행하더라도 상기 로그를 이용하여 트랜잭션 복구를 신속하게 실시할 수 있다.
도 1은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 장치의 구성을 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 장치의 전체 구조를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서의 트랜잭션 처리 흐름을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, 트랜잭셔널 메모리를 선정하는 알고리즘을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, HTM에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, RH-STM 에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, NOrec-STM에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, Single Global Lock에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, 비휘발성 메모리에 보존한 로그를 검증하는 과정을 도시한 도면이다.
도 10은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 방법의 순서를 도시한 흐름도이다.
도 2는 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 장치의 전체 구조를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서의 트랜잭션 처리 흐름을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, 트랜잭셔널 메모리를 선정하는 알고리즘을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, HTM에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, RH-STM 에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, NOrec-STM에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, Single Global Lock에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, 비휘발성 메모리에 보존한 로그를 검증하는 과정을 도시한 도면이다.
도 10은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 방법의 순서를 도시한 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명의 일실시예에 따른 트랜잭션 복구 장치는, 하이브리드 트랜잭셔널 메모리(HyTM) 시스템의 내부 또는 외부에 구현될 수 있으나, 본 명세서에서는 설명의 편의를 위해, 하이브리드 트랜잭셔널 메모리(HyTM) 시스템의 내부에 포함되어 구현되는 것을 한정하여 설명한다.
도 1은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 장치의 구성을 도시한 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 장치(100)는, 실행부(110), 생성부(120), 복구부(130), 로딩부(140), 검증부(150), 갱신부(160), 비휘발성 메모리(NVM)(170) 및 휘발성 메모리(180)를 포함하여 구성할 수 있다.
실행부(110)는 하이브리드 트랜잭셔널 메모리 시스템(HyTM)으로 트랜잭션이 입력되면, 어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서, 상기 트랜잭션을 실행하는 기능을 한다.
즉 실행부(110)는 워크로드(work load)에 의해 개시(입력)되는 트랜잭션('T1')을, HTM, RH-STM, NOrec-STM 및 Single Gloabal Lock(SGL) 중 상기 트랜잭션의 특성에 최적한 어느 하나의 TM 상에서 실행할 수 있다.
HyTM이란, HTM으로 처리하지 못하는 트랜잭션을 STM으로 처리하는 TM 기법으로서, 처리 속도가 빠른 HTM과 성능이 뛰어난 STM을 혼용하여, 트랜잭션의 처리 효율을 높일 수 있다. 이하에서 HyTM에서의 트랜잭션 실행 과정을 상세히 설명한다.
우선 실행부(110)는 트랜잭션이 입력되면, 트랜잭셔널 메모리(TM)로서 HTM을 제1 선택하여 상기 트랜잭션을 실행하고, HTM 상에서 실행되는 상기 트랜잭션에 대한 사이즈, 실행 속도 및 충돌 빈도 중 적어도 하나의 특성을 분석할 수 있다. 이 밖에 트랜잭션의 특성의 구체적인 일례는 도 4의 표 1에 나타낸다.
일례로 실행부(110)는 상기 트랜잭션을 HTM 상에서 실행하는 동안, 해당 트랜잭션을 실행하기 위해서는 빠른 처리속도가 요구되는지, 빠른 처리속도로 트랜잭션을 실행하면 충돌 빈도가 높아지는지, HTM 상에서 실행 가능한 사이즈를 초과하는지 등을 파악할 수 있다.
실행부(110)는 처리속도 기준치 미만, 충돌 빈도 임계치 초과, 사이즈 초과 등의 원인에 의해, HTM 상에서 트랜잭션이 정상적으로 실행 종료되지 않으면, 즉 트랜잭션이 커밋(commit)되지 않으면, HTM 상에서 트랜잭션의 실행을 재시도 할 수 있다.
만일 정해진 재시도 횟수(예를 들면, 10회) 이내에, 상기 HTM 상에서 상기 트랜잭션의 실행이 성공적으로 종료되지 않으면, 실행부(110)는 상기 트랜잭션의 특성과 연관되는 폴백 경로를, 폴백 경로 테이블로부터 식별할 수 있다.
상기 폴백 경로 테이블은 이전에 처리한 트랜잭션(T2)의 처리 결과 정보를 바탕으로, 현재 트랜잭션(T1)의 특성에 부합하는 폴백 경로('RH-STM', 'NOrec-STM', 'Single Gloabal Lock')를 미리 선정해 둔 테이블을 지칭할 수 있다.
일례로 실행부(110)는 이전 트랜잭션(T2)이 HTM에서 정상적으로 실행 종료되지 못한 원인에 해당하는 트랜잭션의 특성을, 해당 트랜잭션이 정상적으로 실행 종료한 TM과 연관시킴으로써, HTM으로부터 실행 실패했을 때 분기할 각 STM을 폴백 경로로서 상기 폴백 경로 테이블에 지정해 둘 수 있다.
실행부(110)는 상기 트랜잭셔널 메모리(TM)로서 상기 폴백 경로에 따른, RH-STM, NOrec-STM 및 Single Gloabal Lock(SGL) 중 어느 하나의 트랜잭셔널 메모리를 제2 선택하여, 상기 트랜잭션을 실행할 수 있다.
실행부(110)는 상기 제2 선택에 따라, 상기 HTM으로부터 전환된 트랜잭셔널 메모리(RH-STM, NOrec-STM, SGL) 상에서 상기 트랜잭션을 실행하는 동안, 상기 트랜잭션에 대한 차기의 트랜잭션(T3)을, HTM 상에서 실행할 수 있다. 이를 통해 실행부(110)는 HTM과 STM의 병렬 수행을 통해, 트랜잭션을 효율적으로 병렬 처리할 수 있다.
실시예에 따라, 실행부(110)는 각각의 폴백 경로에서 트랜잭션을 실행하는 동안 변화하는 트랜잭션의 특성에 따라 분기할 최적의 폴백 경로를, 상기 폴백 경로 테이블에 지정해 둘 수 있다.
상기 폴백 경로 테이블에 기초하여, 실행부(110)는 HTM으로 실행되지 않는 트랜잭션을, RH-STM, NOrec-STM 및 Single Gloabal Lock 중 어느 하나로 선택한 TM 상에서 실행하고, 그 동안 트랜잭션의 특성이 변경되면, 변경된 특성에 최적한 다른 폴백 경로(RH-STM, NOrec-STM 및 Single Gloabal Lock)로 분기하여 트랜잭션을 실행할 수 있다. 이와 관련하여 후술하는 도 4에서는 트랜잭셔널 메모리(TM)을 선정하는 알고리즘을 구체적으로 설명한다.
생성부(120)는 상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리(NVM)(170)에 보존하는 기능을 한다.
여기서 실행시점은 트랜잭션의 실행 개시로부터 일정 시간(예, '1분')이 지난 복수의 시점(예, '1분 경과', '2분 경과' 등)으로 정해질 수도 있고, 트랜잭션을 이루는 스레드의 종료 시점, 상기 트랜잭션의 실행 종료 시점, 로그의 검증을 실시하는 시점 등으로 정해질 수 있다.
일례로, 생성부(120)는 상기 실행 중인 트랜잭션 내 스레드의 종료, 또는 상기 트랜잭션이 실행 종료에 관한 실행시점이 도래하면, 상기 트랜잭션이 실행되는 트랜잭셔널 메모리에 선정된 로깅 알고리즘에 따라, 상기 로그를 생성하고, 상기 로그를, 상기 비휘발성 메모리로 이동하여 보존할 수 있다.
예를 들어, 생성부(120)는 도 5의 로깅 및 동시성 제어 알고리즘에 따라, HTM에서 실행되는 트랜잭션과 연관된 로그의 생성 및 동시성 제어를 수행할 수 있다. 또한 생성부(120)는 도 6의 로깅 및 동시성 제어 알고리즘에 따라, RH-STM에서 실행되는 트랜잭션과 연관된 로그의 생성 및 동시성 제어를 수행할 수 있다.
또한 생성부(120)는 도 7의 로깅 및 동시성 제어 알고리즘에 따라, NOrec-STM에서 실행되는 트랜잭션과 연관된 로그의 생성 및 동시성 제어를 수행할 수 있다. 또한 생성부(120)는 도 8의 로깅 및 동시성 제어 알고리즘에 따라, Single Global Lock에서 실행되는 트랜잭션과 연관된 로그의 생성 및 동시성 제어를 수행할 수 있다.
이처럼 생성부(120)는 TM 별 고유한 로깅 기법에 기초하여, 상기 트랜잭션의 실행 중, 데이터 쓰기 명령에 따라 상기 데이터 파일에 수정 또는 추가한 제1 데이터와, 상기 제1 데이터의 주소값을 포함하여, 상기 로그를 생성하고, 상기 생성한 로그를, 상기 트랜잭션과 연관시켜 상기 비휘발성 메모리(170)에 보존할 수 있다.
본 명세서에서 비휘발성 메모리(170)에는 데이터 파일의 원본이 저장되며, 실행부(110)는 휘발성 메모리(180)에 가져온 상기 데이터 파일의 사본을 사용하여, 트랜잭션을 실행하고, 상기 트랜잭션을 실행하는 동안 정해진 실행시점 마다 상기 데이터 파일의 사본에서의 변경 사항을 포함하여, 로그를 생성할 수 있다.
휘발성 메모리(180)는 일례로 도 2에 도시한 것처럼 DRAM(230)으로 구현 가능하며, 상기 데이터 파일의 사본은 DRAM(230) 내 워킹 스냅샷(231)에 유지되고, 상기 로그는 DRAM(230) 내 로그 영역(232)에 일시적으로 저장될 수 있다.
이후 생성부(120)는 휘발성 메모리(180)에서 생성, 저장되어 있는 상기 로그를 비휘발성 메모리(170)에 플러시(flush) 할 수 있다. 이에 따라, DRAM(230) 내 로그 영역(232)에 저장된 상기 로그는, NVM(도 2의 240) 내 로그 구조(242)로 이동하여 영구적으로 보존될 수 있다.
실시예에 따라, 생성부(120)는 휘발성 메모리(180)에서 생성, 저장되는 로그에 대한 검증이 완료되면, 상기 로그를, 비휘발성 메모리(170)로 이동하여 보존할 수 있다.
구체적으로 설명하면, 로딩부(140)는 상기 트랜잭션을 실행하기에 앞서, 비휘발성 메모리(170)에 저장된 데이터 파일을, 휘발성 메모리(180)에 가져온다.
생성부(120)는 상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성 시, 상기 트랜잭션의 실행에 의해 휘발성 메모리(180)에서 변경되는 데이터 파일을, 휘발성 메모리(180) 내 메모리 공간(일례로 도 9의 쉐도우 스냅샷)에 백업할 수 있다.
검증부(150)는 선정된 로그 재생 알고리즘에 따라 상기 로그를 재생하여 복원한 데이터 파일이, 상기 메모리 공간에 백업한 데이터 파일과 일치하는지를 판단하여, 상기 로그를 검증한다.
일례로 도 9를 참조하면 로딩부(140)는 트랜잭션을 실행하기에 앞서, 비휘발성 메모리(170)에 저장된 데이터 파일의 사본을 메모리 풀(Original pool)에 가져올 수 있다. 정해진 실행시점이 도래하면 생성부(120)는 데이터 쓰기 명령을 로그화 하여 로그를 생성하고, 현재까지 처리된 메모리 풀(Original pool)을 복제(copy)해서 쉐도우 풀(Shadow pool)을 생성할 수 있다.
검증부(150)는 현재까지 생성한 로그를 검증하기 위해, 일단 상기 메모리 풀을 초기화 한 후 상기 로그를 리플레이 하여, 메모리 풀의 복원을 실시하고, 상기 로그 리플레이에 의해 복원한 메모리 풀이, 상기 쉐도우 풀과 일치하면, 상기 로그의 검증을 완료할 수 있다.
만일 상기 로그 리플레이에 의해 복원한 메모리 풀이, 상기 쉐도우 풀과 일치하지 않을 경우, 생성부(120)는 상기 로그를 휘발성 메모리(180)에서 삭제하고, 비휘발성 메모리(170)에서 가져온 데이터 파일(원본)과, 상기 쉐도우 풀을 이용해, 데이터의 변경 사항에 관한 로그를 재생성할 수 있다.
생성부(120)는 상기 검증이 완료된 로그를, 휘발성 메모리(180)에서 비휘발성 메모리(170)에 플러시 할 수 있다.
이에 따라 복구부(130)는 트랜잭션의 실행 중 시스템 실패가 발생 시, 비휘발성 메모리(170)에 보존한 로그를 리플레이 함으로써 중단된 트랜잭션을 손쉽게 복구할 수 있다.
실시예에 따라, 생성부(120)는 비휘발성 메모리(170)에 상기 검증된 로그를 보존할 때, 상기 로그 리플레이에 의해 복원된 메모리풀을, 비휘발성 메모리(170)에 유지할 수 있다.
이 경우 복구부(130)는 시스템 실패로 인해 트랜잭션이 실행 중단되더라도, 상기 로그의 리플레이를 반복할 필요 없이, 비휘발성 메모리(170) 내 영구 스냅샷에 유지한 상기 복원한 메모리 풀을 활용하여, 보다 빠른 속도로 트랜잭션의 복구를 실시할 수 있다.
복구부(130)는 전력 차단이나 OS 크래시 발생 등의 시스템 실패로 인해 트랜잭션의 실행이 중단되는 경우, 비휘발성 메모리(170)로부터 가져온 데이터 파일(원본)을, 비휘발성 메모리(170) 내 상기 로그에 따라 변경하여, 상기 트랜잭션을 복구하는 기능을 한다.
일례로 복구부(130)는, 로딩부(140)를 통해, 비휘발성 메모리(170)에 저장된 데이터 파일(원본)을, 휘발성 메모리(180)에 가져오고, 비휘발성 메모리(170)에 보존한 로그를 가져온다.
로딩부(140)는 상기 정해진 실행시점 중 가장 마지막 실행시점에 생성되어 보존된 로그 만을 선별해서 가져올 수도 있고, 모든 로그를 가져올 수도 있다.
이때 상기 로그에는 트랜잭션을 실행하는 동안 데이터 파일에 수정 또는 추가한 제1 데이터와, 상기 제1 데이터의 주소값이 포함될 수 있다.
복구부(130)는 휘발성 메모리(180)에 가져온 데이터 파일(사본)에서 상기 로그 내 주소값에 상응하는 제2 데이터를, 상기 로그 내 제1 데이터로 수정하여, 상기 트랜잭션을 복구할 수 있다.
또는 복구부(130)는 상기 제2 데이터가 존재하지 않는 경우, 상기 제1 데이터를 상기 주소값에 상응하는 데이터로서 상기 데이터 파일에 추가하여, 상기 트랜잭션을 복구할 수 있다.
실행부(110)는 상기 트랜잭션이 복구된 실행시점부터, 상기 트랜잭션을 재실행한다.
이와 같이 본 발명에 따르면, 트랜잭션 처리 중간에 시스템 실패(System fail)가 발생하여 작업 중인 내용들이 모두 사라지더라도, 정해진 실행시점 마다 비휘발성 메모리에 플러시한 로그를 이용하여 트랜잭션을 시스템 실패가 발생하기 이전으로 손쉽게 복구할 수 있다.
따라서 본 발명에 따르면, 시스템 실패가 발생하더라도 트랜잭션을 처음부터 재실행할 필요 없이 복구된 실행시점부터 재실행할 수 있어 시스템 성능을 향상시킬 수 있게 된다.
갱신부(160)는 상기 트랜잭션의 재실행이 종료되면(성공적으로 커밋), 상기 트랜잭션과 관련하여 비휘발성 메모리(170)에 보존한 모든 로그를, 선정된 로그 재생 알고리즘에 따라 재생하여, 비휘발성 메모리(170)에 저장된 데이터 파일을, 갱신하는 기능을 한다.
또한, 갱신부(160)는 비휘발성 메모리(170)에 저장된 데이터 파일의 갱신에 연동하여, CoW(Copy on Write) 기능을 통해, 차기의 트랜잭션 실행을 위해 상기 비휘발성 메모리(170)로부터 휘발성 메모리(180)로 가져온 데이터 파일을 갱신하여, 상기 휘발성 메모리(180)에서 갱신된 데이터 파일을 사용하여, 상기 차기의 트랜잭션이 실행되도록 할 수 있다.
즉 갱신부(160)는 트랜잭션이 커밋할 경우, 또는 정해진 실행시점이 경과하거나 트랜잭션 내 임의의 스레드가 커밋할 경우, 비휘발성 메모리(170)에 플러시한 로그에 기초하여, 비휘발성 메모리(170) 내 데이터 파일의 원본을 갱신 처리할 수 있으며, 이에 연동하여, 트랜잭션의 실행을 위해 휘발성 메모리(180) 내 상기 워킹 스냅샷에 가져온 데이터 파일의 사본도 함께 갱신 처리하여, 데이터 파일의 일관성을 유지할 수 있다.
이와 같이 본 발명에 따르면 트랜잭션 처리 중간에 시스템 실패(System fail)가 발생하여 작업 중인 내용들이 모두 사라지더라도, 정해진 실행시점(체크포인트 시점) 마다 비휘발성 메모리에 플러시한 로그를 이용하여 해당 실행시점까지 트랜잭션을 손쉽게 복구할 수 있고, 트랜잭션을 처음부터가 아닌 복구된 실행시점(체크포인트 시점) 다음부터 재실행할 수 있어 시스템 성능이 향상될 수 있다.
도 2는 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 장치의 전체 구조를 도시한 도면이다.
도 2를 참조하면, 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 장치(200)는, 폴백 코디네이터(210), 트랜잭셔널 메모리(TMs)(220), DRAM(230) 및 NVRAM(240)을 포함하여 구성될 수 있다.
폴백 코디네이터(fall-back coordinator)(210)는 워크로드로부터 개시되는 트랜잭션의 특성에 부합하는 폴백 경로(fall-back path)를 Lite HTM(221)에 제공하는 역할을 한다.
일례로, 폴백 코디네이터(210)는 폴백 경로 핸들러(fall-back path handler)(211) 및 폴백 경로 테이블(fall-back path table)(212)을 세부 구성으로 포함할 수 있다.
상세하게는, 폴백 패스 핸들러(211)는 현재 개시된 트랜잭션에 대해, 크기(길이)와 컨텐션(contention) 정도 및 연속 발생된 쓰기(write) 횟수 중 적어도 하나의 특성을 분석하고, 워크로드(workloads)로부터 개시되는 트랜잭션이, 설정된 재시도 횟수 이내에서 Lite HTM(221)에서 처리되지 않으면, 폴백 경로 테이블(212)에 저장된 이전 트랜잭션의 처리 결과 정보(트랜잭션 정보)를 바탕으로, 현재 개시된 트랜잭션의 특성에 부합하는 최적의 폴백 경로를 선정할 수 있다.
폴백 경로 테이블(212)은 이전에 처리된 트랜잭션의 처리 결과 정보(트랜잭션 정보)를 저장하고, 최적의 폴백 경로를 선정하기 위한 메타 데이터를, 폴백 경로 각각으로 유지할 수 있다.
또한, 폴백 경로 테이블(212)은 각 폴백 경로에서 트랜잭션을 수행하는 동안, 각 트랜잭션 처리 기법의 특성을 고려하여 다른 트랜잭션 처리 기법으로 분기하기 위한 특성을 저장할 수 있다.
폴백 패스 핸들러(211)에서 Lite HTM(221)에서 처리(실행)되지 않는 트랜잭션의 특성에 따라, 폴백 경로 테이블(212)로부터 최적의 폴백 경로를 선택하여, RH-STM(222), Norec-STM(223), 및 Single Global Lock(224) 중 어느 하나의 트랜잭셔널 메모리(TM)로 상기 트랜잭션을 분기하는 과정을, 도 4에서 설명한다.
일례로, 트랜잭셔널 메모리(TMs)(220)는, Lite HTM(221), RH-STM(222), Norec-STM(223), 및 Single Global Lock(224) 중 어느 하나의 TM 및 로거 모듈(225)을 세부 구성으로 포함하여 구성될 수 있다.
로거 모듈(225)은 각 트랜잭셔널 메모리(TM)에서 트랜잭션을 실행 중 데이터 쓰기 명령에 대해, <주소값과 데이터>의 쌍을 포함하는 로그를 생성할 수 있다.
로거 모듈(225)은 각 트랜잭셔널 메모리(TM)의 작업 특성에 따라 서로 다른 로깅 알고리즘을 제공하고, TM 별 로깅 알고리즘에 따라 로그를 생성하여, DRAM(230) 내 로그 영역(232)에 저장할 수 있다.
DRAM(230)은 휘발성 메모리로서, 워킹 스냅샷(Working Snapshot)(231) 및 로그 영역(232)으로 구성될 수 있다.
NVRAM(240)은 비휘발성 메모리로서, 데이터 파일(241) 및 로그 구조(242)로 구성될 수 있다.
데이터 파일(241)은 데이터 원본(Real DataSet)으로서 NVRAM(240)에 유지되며, DRAM(230) 내 워킹 스냅샷(231)에는 데이터 파일(241)의 사본이 로딩되어 실제 트랜잭션을 실행 시 사용될 수 있다.
즉 워킹 스냅샷(231)은 각 트랜잭셔널 메모리에서 트랜잭션을 실행할 때, 비휘발성 메모리인 NVRAM(240)이 지니는 지연 시간을 회피하기 위한 작업 공간을 의미하며, 신속한 트랜잭션 처리를 지원할 수 있다.
로거 모듈(225)은 상기 트랜잭션의 실행 중 DRAM(230)에 생성한 로그를, 정해진 실행시점의 도래 시마다, 상기 트랜잭션 내 스레드의 실행 종료 시마다, 또는 상기 트랜잭션의 실행 종료 시에, NVRAM(240)에 플러시(flush)하여 로그 구조(242)에 저장할 수 있다.
로거 모듈(225)은 상기 트랜잭션이 실행 종료하면, 로그 재생 알고리즘을 통해 로그 구조(242)를 리플레이하여, 상기 데이터 파일(241)을 갱신할 수 있다.
또한 로거 모듈(225)은 운영체제의 CoW(Copy on Write) 기능을 통해, 워킹 스냅샷(231)으로 로딩한 데이터 파일(241)의 사본도 즉시 갱신하여, 데이터의 일관성을 보장할 수 있다.
도 3은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서의 트랜잭션 처리 흐름을 도시한 도면이다.
도 3에는 하이브리드 트랜잭셔널 메모리 시스템에서 트랜잭션의 복구를 위한 처리 흐름(300)이 도시되어 있다.
도 3의 처리 흐름(300)을 참조하면, 워크로드가 시작되면, 우선적으로 LiteHTM에서 트랜잭션 처리를 시작한다(단계 1: run for HTM).
상기 트랜잭션의 처리를 시작하기 전에, LiteHTM은 비휘발성 메모리로부터 데이터 파일(Real DataSet)을 DRAM 상의 워킹 스냅샷(Working Snapshot)으로 로딩하고, 로딩한 상기 데이터 파일의 사본을 이용하여, 트랜잭션을 빠른 속도로 처리할 수 있다.
LiteHTM 에서 트랜잭션을 실행하는 동안, LiteHTM 내 로거(Logger) 모듈은, 데이터 쓰기 명령을 로그화 하여, DRAM 내에 일차적으로 저장할 수 있다.
또한, LiteHTM 내 동시성 매니저(concurrency manager)는, 현재 수행 중인 폴백 경로(Fall-back path)와의 병렬 수행을 위해, 타임스탬프 값 및 Lock의 획득 여부를 검사하여 동시성 제어를 수행한다(단계 2: check concurrency).
즉 동시성 매니저는 현재 LiteHTM, RH-STM, NOrec STM, Single Global Lock 실행되고 있는 트랜잭션의 동시성(concurrency)를 주기적으로 체크하여 현재 충돌이 발생하고 있는지 확인할 수 있다.
다른 작업과의 충돌이나, CPU의 L1 캐시(cache) 보다 큰 데이터 처리 등 실패(abort)가 발생하여 트랜잭션이 실행 종료(commit)되지 않으면, LiteHTM은 정해진 재시도 횟수, 예컨대, 10회 만큼 반복해서 트랜잭션을 실행한다(단계 3: retry until threshold). 이때 HTM의 샌드박싱 프로토콜에 따라 별도의 로그 초기화 과정은 생략될 수 있다.
만약 정해진 재시도 횟수를 넘어서도 LiteHTM에서 트랜잭션이 실행 종료되지 않을 경우, LiteHTM은 폴백 코디네이터(Fall-back Coordinator)로 폴백 경로(Fall-back path)를 요청한다(단계 4: Fallback).
상기 폴백 코디네이터는 현재까지 실행한 트랜잭션의 실패 원인을 저장한 폴백 경로 테이블(Fall-back path table)을 기반으로, 트랜잭션의 특성을 파악하고, 최적의 폴백 경로를 선택한다(단계 5: chosen fallback path).
LiteHTM에서 설정된 재시도 횟수 만큼 재시도를 수행하였어도 트랜잭션이 실패하면, STM으로 처리하기 위해, 폴백 코디네이터는 트랜잭션의 특성을 분석하여 폴백 경로 테이블로부터 상기 트랜잭션의 처리에 알맞은 최적의 STM을 선정할 수 있다.
폴백 코디네이터를 통해 선정한 RH-STM, NOrec STM 및 Single Global Lock 중 어느 하나의 STM에서 트랜잭션을 실행하고, 트랜잭션이 성공적으로 커밋(commit) 될 때까지 재시도를 수행한다(단계 6: retry until commit).
상기 폴백 코디네이터 내 폴백 핸들러는, RH-STM, NOrec-STM, SGL 중 어느 하나로 선택한 TM으로 상기 트랜잭션을 분기하고, 선택한 TM 상에서 상기 트랜잭션을 종료할 때까지 실행할 수 있다.
트랜잭션은 휘발성 메모리인 DRAM에서 실행되며, 트랜잭션을 실행하면서 수정, 변경, 추가되는 데이터는 모두 DRAM 내 워킹 스냅샷에 저장되고, 상기 워킹 스냅샷에 저장되어 있는 데이터는 각 TM 내 로거 모듈에 의해 로그로서 기록될 수 있다.
즉 로거 모듈은, 트랜잭션을 실행 중 데이터 쓰기 명령을 로그화 하여, DRAM 내에 저장할 수 있다(비내구성 커밋). 이때 로거 모듈은 각 TM 별 로깅 알고리즘에 따라, 로그를 생성할 수 있다.
로거 모듈은, DRAM에 저장한 로그를, 정해진 실행시점이 도래하거나 혹은 상기 트랜잭션이 성공적으로 종료(내구성 커밋)하면, 비휘발성 메모리에 플러시(flush)한다(단계 7: update log per each commit)
본 명세서에서는, 커밋(commit)을, DRAM에서 트랜잭션의 처리가 완료되는 비내구성 커밋과, 이후 DRAM에 저장되어 있는 로그가 비휘발성 메모리에 보존되어 트랜잭션 처리 및 로그의 플러시가 모두 완료되는 내구성 커밋으로 구분할 수 있다.
상기 트랜잭션이 종료하기 전에, 전력 차단 또는 OS 크래시로 인해 시스템 실패가 발생하면, 트랜잭션 복구 장치(300)는 상기 비휘발성 메모리에 플러시한 로그를, 로그 재생 알고리즘에 따라 리플레이 함으로써, 트랜잭션을, 시스템 실패가 발생하기 이전의 상태로 복구할 수 있다.
실시예에 따라, 트랜잭션 복구 장치(300)는 트랜잭션의 실행 중 일정 주기로, 예컨대, 정해진 실행시점 마다 비휘발성 메모리(NVM)에 보존한 로그를 재생하여, 트랜잭션이 현재까지 처리한 데이터(작업 내용)를 비휘발성 메모리 내 영구 스냅샷(Persistent Snapshot)에 생성하고, 이후 시스템 실패가 발생 시, 미리 생성해 놓은 상기 영구 스냅샷을 통해 보다 효율적으로 트랜잭션의 복구를 수행할 수 있다.
또한 트랜잭션 복구 장치(300)는 상기 영구 스냅샷의 데이터를 운영체제의 CoW 기능을 통해 자동적으로 DRAM의 워킹 스냅샷에 반영할 수 있다. 이를 통해 차기의 트랜잭션에서 이전에 처리 완료된 데이터를 필요로 할 때 비휘발성 메모리가 아닌 DRAM에서 빠르게 가져올 수 있도록 할 수 있다.
이와 같이, 하이브리드 트랜잭셔널 메모리 시스템에서 트랜잭션을 실행 중 시스템 실패가 발생하더라도, 상기 트랜잭션을 처음부터 다시 실행하는 대신에, 시스템 실패가 발생하기 전까지 처리했던 트랜잭션을 이어서 재실행할 수 있게 되므로, 트랜잭션의 처리 속도를 높일 수 있다.
상기 트랜잭션이 성공적으로 실행 종료하면(commit), 로거 모듈은, 상기 비휘발성 메모리에 플러시한 로그를, 로그 재생 알고리즘에 따라 리플레이하여, 상기 비휘발성 메모리에 저장된 상기 데이터 파일을 갱신 처리할 수 있다.
또한 상기 로그 모듈은 상기 갱신 처리에 연동하여, 운영체제에서 제공하는 CoW 기능을 통해, 상기 워킹 스냅샷으로 로딩한 데이터 파일의 사본도 즉시 갱신하여, 차기의 트랜잭션에 항상 일관성 있는 데이터를 제공할 수 있어, 하이브리드 트랜잭셔널 메모리 시스템의 내구성을 보장할 수 있다.
또한 각 TM에서는 트랜잭션이 성공적으로 커밋되면, 현재 트랜잭션의 특성과 처리했던 경로 정보를 폴백 코디네이터로 전송하여, 차기의 트랜잭션이 LiteHTM에서 처리가 실패하여 STM에서 실행하려고 할 때, 트랜잭션의 특성에 맞는 폴백 경로를 선택할 수 있도록 도움을 줄 수 있다.
도 4는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, 트랜잭셔널 메모리를 선정하는 알고리즘을 도시한 도면이다.
도 4를 참조하면, 트랜잭션 복구 장치는, 기본적으로 LiteHTM을 통해 트랜잭션을 실행하지만, 실패 횟수가 임계치(예, '10회')를 넘어선 경우, RH-STM, NOrec-STM 및 SGL 중에서 현재까지 진행한 트랜잭션의 특성에 최적한 TM을 선택하여 트랜잭션을 실행 함으로써, 트랜잭션의 처리 효율을 높일 수 있다.
우선, 트랜잭션 복구 장치는, 폴백 경로 테이블을 바탕으로 현재 처리 중인 트랜잭션의 특성을 분석할 수 있다. 상기 폴백 경로 테이블은 트랜잭션의 특성을 의미하는 트랜잭션 특성 데이터와 그 값으로 구성될 수 있다.
예를 들어, 폴백 경로 테이블에서 트랜잭션 T1에 대해 남은 재시도 횟수를 의미하는 Life_retires에는 '1'이 저장되고, 최대 연속 write 수를 의미하는 Max_con_write는 '10'이 저장될 수 있다. 표 1에는 트랜잭션의 특성 데이터와 설명이 나타나 있다.
트랜잭션 특성 데이터 | 설명 |
Life_retries | 남은 재시도 횟수 |
Transaction_cycle | 트랜잭션 수행 사이클 |
Max_con_write | 최대 연속 write 수 |
POSTFIX_capacity_abort | POSTFIX HTM에서 발생한 capacity abort |
Local_capacity_abort | 현재 스레드에서 발생한 capacity abort |
Valid_abort | Validation에서 발생한 abort |
HTM의 경우, 하드웨어와 자원을 공유하기 때문에 트랜잭션의 commit을 보장하지 못하고, CPU의 L1 캐시의 크기 보다 큰 트랜잭션을 처리할 수 없다.
따라서 트랜잭션 복구 장치는 트랜잭션을 HTM으로 처리하는 동안, 트랜잭션 수행 사이클(Transaction_cycle)을 분석하여 트랜잭션 크기를 측정하고, 폴백 경로로의 전환 시점을 알기 위해 남은 재시도 횟수(Life_retries)를 분석할 수 있다.
RH-STM의 경우, Single Global Lock 또는 NOrec-STM 보다 처리 속도가 가장 빠르지만, HTM과 함께 실행되어 CPU L1 캐시 크기의 한계로 인해 큰 트랜잭션을 처리할 수 없고, 또한 데이터 쓰기(write)의 발생 시점을 기준으로 Postfix, Prefix HTM이 전환되고 있어 write 수가 적으면 STM에서 처리되어도 충분히 빠르지만 HTM으로 전환하여 write를 수행해야 하므로 HTM 전환 오버헤드가 발생할 수 있다. 즉 RH-STM은 중간 크기의 트랜잭션을 처리하는 데 적합하다는 특성을 가지고 있다.
따라서 트랜잭션 복구 장치는 최대 연속 write 수(Max_con_write)와, capacity abort의 수(POSTFIX_capacity_abort)를 분석할 수 있다.
Single Global Lock의 경우, 단독으로 실행되기 때문에 트랜잭션 성공을 반드시 보장하지만 병렬 처리가 불가능하여 속도가 매우 느리기 때문에 HTM과 다른 STM이 모두 처리될 수 없을 경우에 사용되는 특성을 가지고 있다.
따라서 트랜잭션 복구 장치는 트랜잭션 수행 사이클 값을 의미하는 Transaction_cycle과, 현재 스레드에서 발생한 capacity abort 값인 Local_capacity_abort 를 분석할 수 있다.
NOrec-STM의 경우, 버퍼를 이용하여 트랜잭션을 처리하기 때문에 크기가 큰 트랜잭션을 HTM과 병렬적으로 처리할 수 있지만, 유효성 검사(validation) 단계에서 공유 메모리와 버퍼 사이에 계속된 충돌이 발생할 경우, 반복적으로 abort 됨에 따라 스레드가 계속해서 대기 상태가 되는 특성을 가질 수 있습니다.
따라서 트랜잭션 복구 장치는 유효성 검사 단계에서 발생하는 abort를 의미하는 Valid_abort 값을 분석할 수 있다.
이하에서는 지금까지 분석한 트랜잭션의 특성을 고려하여, 도 4에 도시한 알고리즘(400)에 따라 최적의 트랜잭셔널 메모리(TM)를 선정하는 과정을 설명한다.
i) HTM
HTM에서는 트랜잭션을 하드웨어 상에서 빠르게 수행할 수 있지만 크기가 큰 트랜잭션을 처리하는 데 한계가 있을 수 있다. 이 때문에 트랜잭션 복구 장치는 처음 HTM으로 트랜잭션 수행 시 fallback 경로의 초기값을 설정하기 위해 트랜잭션의 수행 사이클을 측정하고, HTM으로 트랜잭션 처리를 재시도한 횟수를 카운트 하는 등, 트랜잭션의 특성을 분석할 수 있다.
트랜잭션의 특성을 분석한 결과, 재시도한 횟수가 임계치를 초과하고, 수행 사이클이 짧은 트랜잭션의 경우, 병렬 수행의 오버헤드를 최소한으로 낮추기 위해, 도 4의 A로 분기해 Single Global Lock으로 처리될 수 있다.
반면, 수행 사이클이 긴 트랜잭션의 경우에는 도 4의 B로 분기해 NOrec-STM을 통해 처리되어, 트랜잭션 간의 병렬 수행을 지원할 수 있다.
A, B의 조건에 모두 해당하지 않는 경우에는 도 4의 C 로 분기하여 RH-STM을 통해 중간 크기의 트랜잭션을 빠르게 처리할 수 있다.
ii) RH-STM
RH-STM에서는 트랜잭션의 첫 번째 쓰기(write)를 수행할 때, 읽기(read)를 수행하는 prefix HTM을 시도하게 되지만, 쓰기와 읽기가 반복될 경우 prefix HTM은 시작과 동시에 커밋(commit)되어 불필요한 작업이 증가될 수 있고, postfix HTM이 처리할 크기가 증가하여 capacity abort가 발생할 확률이 높아질 수 있다.
이를 고려하여 RH-STM으로 트랜잭션을 처리 중, 연속으로 처리한 쓰기 수가 '1'이면, 도 4의 D로 분기하여, Single Global Lock을 통해 처리할 수 있다.
한편, RH-STM의 postfix HTM이 트랜잭션을 처리하지 못한 경우 변경된 값을 메모리에 직접 반영하기 위해 모든 스레드를 대기 상태로 전환하는데, 이는 성능 저하 요인이 될 수 있다.
따라서, RH-STM의 postfix HTM에서 트랜잭션을 처리 중 capacity abort가 70% 이상 발생한 경우, 도 4의 E 로 분기하여, 트랜잭션 크기와 상관없이 병렬 수행이 가능한 NOrec-STM으로 전환해서 처리할 수 있다.
D, E의 조건에 모두 해당되지 않는 경우, 폴백 경로는 RH-STM을 유지한다(도 4의 F).
iii) Single Global Lock
Single Global Lock에서는 트랜잭션을 단일 스레드로 처리하기 때문에 길이가 큰 트랜잭션을 처리할 경우 대기 시간이 길어질 수 있다.
따라서 Single Global Lock에서 트랜잭션(스레드)을 처리 중, capacity abort가 30% 이상 발생한 경우에는 빠른 처리를 위해, 도 4의 G로 분기하여 RH-STM으로 트랜잭션을 처리함으로써, capacity abort 문제를 해결할 수 있다.
한편, 트랜잭션의 수행 사이클을 측정한 결과 HTM 및 RH-STM으로 처리할 수 없는 크기를 갖는 경우에는, 도 4의 H로 분기하여, NOrec-STM을 이용하여 큰 트랜잭션을 처리할 수 있다.
G, H의 조건에 모두 해당하지 않는 경우, 폴백 경로는 Single Global Lock을 유지한다(도 4의 I).
iv) NOrec-STM
NOrec-STM은 크기가 큰 트랜잭션을 HTM과 병렬적으로 수행할 수 있지만 트랜잭션의 충돌 비율이 높은 경우 유효성 검사(validation) 단계에서 반복적으로 다른 트랜잭션과 충돌이 발생할 수 있다.
이러한 점을 고려하여 NOrec-STM으로 트랜잭션을 처리 중, 유효성 검사 단계에서 충돌이 80% 이상 발생할 경우, 도 4의 J로 분기하여 Single Global Lock으로 안전하게 처리하고, 유효성 검사 단계에서 충돌이 적게 발생하면, 도 4의 K로 분기하여 상대적으로 빠른 RH-STM으로 처리할 수 있다.
J, K의 조건에 모두 해당하지 않는 경우, 폴백 경로는 NOrec-STM을 유지한다(도 4의 L).
도 5는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, HTM에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
LiteHTM에서 실행되는 트랜잭션의 경우, 트랜잭션 블록 내에서 읽기, 쓰기를 진행한 데이터는 CPU 내의 캐시에서만 작업이 진행되는 샌드박싱 프로토콜(Sandboxing Protocol)을 사용한다. 이로 인해 트랜잭션 실행 도중 발생하는 로그는 DRAM이 아닌 캐시에 존재하기 때문에 즉시 비휘발성 메모리에 플러시 할 수 없는 한계점이 존재한다. 따라서 LiteHTM에서 트랜잭션이 실행될 경우, 트랜잭션이 커밋된 후 로그 플러시가 수행될 수 있다.
도 5에는 LiteHTM에서의 로깅 및 동시성 제어 알고리즘이 도시되어 있다.
도 5의 알고리즘 1에 따르면, 로그 엔트리는 트랜잭션 블록 내 write 명령어(14~18 lines)를 진행할 때 생성된다. 각 로그는 데이터 경쟁 문제를 해결하기 위해 로컬에서 작성될 수 있다.
트랜잭션 블록이 모두 수행된 후 TM_END_HTM 단계로 진행된다. 현재 스레드가 트랜잭션 블록을 모두 수행한 시점에서 커밋을 수행하는 STM이 존재한다(20 lines).
커밋을 수행 중인 경우(21 line), LiteHTM을 abort 하여 트랜잭션을 재실행한다(22 line).
만약 STM은 존재하지만 어떤 STM도 커밋을 진행하지 않는 경우 커밋 타임스탬프를 변경하여 STM이 validation을 수행하도록 한다(24 line).
한편 SGL이 있는 경우, Lock을 획득한 트랜잭션의 성공을 보장하기 위하여 자신의 수행을 포기하고 재시작 한다(26~28 lines).
동시성 확인 과정이 종료되면, LiteHTM의 캐시 데이터를 DRAM에 반영하는 xend()를 호출한다(29 line).
읽기 전용 트랜잭션이 아닐 경우, 생성한 로그 엔트리의 플러시를 수행한다(30~31 lines).
마지막으로, 모든 커밋 단계가 완료됨을 알리는 커밋 로그(commit log)를 비휘발성 메모리에 플러시 한다(32 line).
도 6은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, RH-STM 에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 6의 알고리즘 2에 따르면, RH-STM에서 read 명령어(1~9 lines)의 경우, PrefixHTM에서 허용하는 read 횟수 및 현재 read 횟수를 비교하여 PrefixHTM에서 허용하는 read 횟수일 때 PrefixHTM을 통해 read를 수행하고(10~11 lines), 그렇지 않은 경우, PrefixHTM 외부에서 read를 수행한다(17 line).
한편, RH-STM에서 write 명령어는 PostfixHTM에서 수행되기 때문에 로그 엔트리는 PostfixHTM 내에서만 생성될 수 있다.
PrefixHTM으로 read를 수행하는 경우, HTM의 캐시 일관성 프로토콜에 따라 동시성 제어를 수행하기 때문에 추가적인 충돌 감지가 필요하지 않다. 그러나 PrefixHTM 외부에서 read를 수행하는 경우, 해당 트랜잭션의 커밋 타임스탬프가 변경되면 이를 충돌로 감지하여, 해당 트랜잭션을 종료하고 재시작한다(14~15 lines).
write의 경우(19~29 lines), PostfixHTM 내에서만 수행되기 때문에 HTM의 캐시 일관성 프로토콜에 따라 추가적인 충돌 감지가 불필요하다. 로그 엔트리는LiteHTM과 같은 방식으로 트랜잭션 내의 write에서 생성된다(26 line).
커밋 단계에서 PostfixHTM이 실행되면 xend()를 호출하여 현재 실행중인 PostfixHTM을 성공적으로 커밋한 후(58 line), 로그를 비휘발성 메모리에 플러시한다(59~61 lines).
한편, PostfixHTM에서 실패한 경우, PostfixHTM 내에서 SGL을 획득하여 변경을 보장한다(46~47 lines).
아울러 TM_END_RHSTM 단계에서 Lock이 획득된 상태인지를 판별하여, 로그를 비휘발성 메모리에 플러시하고 Lock을 반환한다(62~65 lines).
도 7은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, NOrec-STM에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 7에 도시한 알고리즘 3에 따르면, NOrec-STM에서 read 명령어(10~20 lines)는 트랜잭션 내에 이전 명령어 집합에서 write를 수행한 주소값이 있으면, LocalWriteSet 내에 속한 데이터를 반환한다(12 line).
한편 다른 스레드에서 커밋을 수행한 경우, 커밋 타임스탬프가 변경되고, 자신의 Local_clock 값이 현재 커밋 타임스탬프와 다르면, LocalReadSet의 각 주소에 해당하는 데이터 값이 변경되었는지 확인한다(14 line).
데이터가 변경된 경우, 트랜잭션의 재시작을 통해 시스템 일관성을 보장한다(15 line).
write 명령어(21~24 lines)는 별도의 확인 과정 없이 LocalWriteSet에 <주소, 값>의 쌍을 저장하고, 커밋 단계 전에 LocalReadSet의 데이터 변경이 없는 경우, LocalWriteSet의 정보를 비휘발성 메모리(NVM)에 플러시한 후, 트랜잭션의 커밋을 완료한다.
즉 NOrec-STM에서 write를 수행할 경우, 로컬 데이터셋에 먼저 데이터를 저장한 후, 커밋 단계에서 실제 메인 메모리인 NVM에 쓰기한 데이터를 반영할 수 있다.
도 8은 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, Single Global Lock에서 실행되는 트랜잭션의 로깅 및 동시성 제어 알고리즘의 일례를 도시한 도면이다.
도 8에 도시한 알고리즘 4에 따르면, Single Global Lock에서는 메인 메모리에 즉시 데이터 변경을 수행할 수 있다.
구체적으로 Single Global Lock에서 read 명령어(6~8 lines)를 수행 시에는 별도의 작업 없이 즉시 데이터 값을 반환하며, write 명령어(9~13 lines)를 수행 시에는 LocalLog에 <주소, 값> 쌍을 저장하여 커밋 단계에서 플러시를 수행한다.
한편 write 명령어를 수행할 때, 비휘발성 메모리에 로그를 즉시 플러시 하면, 비휘발성 메모리의 쓰기 지연 시간에 따른 로깅 오버헤드가 발생할 수 있기 때문에, 생성한 로그 엔트리에 대한 즉각적인 반영 대신 LiteHTM과 같은 방법으로 로그를 커밋 단계에서 플러시 함으로써 로깅 오버헤드를 줄일 수 있다.
도 9는 본 발명의 일실시예에 따른 트랜잭션 복구 장치에서, 비휘발성 메모리에 보존한 로그를 검증하는 과정을 도시한 도면이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 트랜잭션 복구 장치는, 하이브리드 트랜잭셔널 메모리를 이용하여 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여 비휘발성 메모리에 플러시(영구적으로 보존)하고, 상기 비휘발성 메모리에 플러시한 로그를, Bank 마이크로벤치마크와 같은 프로그램을 이용하여 검증하여, 실제로 트랜잭션의 실행 중 시스템 실패가 발생했을 때, 검증이 완료된 로그를 통해 트랜잭션의 복구가 정확하게 수행되도록 할 수 있다.
이하에서는 비휘발성 메모리(NVM)에 로그를 플러시 하고, 상기 로그를 이용해 트랜잭션의 복구를 검증하는 과정을 구체적으로 설명한다.
도 9에 따르면, 트랜잭션 복구 장치는, 트랜잭션을 실행하는 동안, 정해진 실행시점이 도래 시 현재까지 처리된 메모리 풀(Original pool)을 복제(copy)하여 쉐도우 풀(Shadow pool)을 생성하고(단계 1), 현재까지 커밋된 스레드의 로그를 비휘발성 메모리(NVM)에 플러시 한다(단계 2).
예를 들어, 트랜잭션 복구 장치는 트랜잭션을 실행하는 동안 체크포인트 시점 1, 2~n이 도래할 때 마다, 현재까지 처리된 데이터가 유지되는 메모리 풀을 복제하여 쉐도우 풀을 생성한 후, 트랜잭션 처리 중 생성한 로그를 비휘발성 메모리에 플러시 할 수 있다.
이후 트랜잭션 복구 장치는 상기 로그를 검증하기 위해, 메모리풀을 초기화(clear) 하고(단계 3), 상기 비휘발성 메모리에 플러시한 로그를 메모리풀에 리플레이(replay) 한다(단계 4).
트랜잭션 복구 장치는 상기 로그 리플레이에 의해 복원된 메모리풀을, 상기 쉐도우 풀과 비교(Compare)하고, 일치할 경우, 상기 로그를 이용한 트랜잭션의 복구가 정확하게 이루어진 것으로 판단하여, 상기 로그를 검증한다(단계 5).
만일 복원된 메모리풀과 쉐도우 풀이 일치하지 않으면, 트랜잭션 복구 장치는 비휘발성 메모리에 플러시한 상기 로그를 삭제하고, 상기 쉐도우 풀을 이용하여 로그를 다시 생성할 수 있다.
실시예에 따라, 트랜잭션 복구 장치는 상기 로그가 검증될 경우, 로그 리플레이에 의해 복원된 메모리풀을, 상기 로그가 보존되는 비휘발성 메모리 내, 영구 스냅샷에 유지할 수 있다.
이에 따라, 트랜잭션 복구 장치는 실제로 트랜잭션 처리 중 시스템 실패가 발생 시 상기 로그의 리플레이를 반복하지 않고, 상기 영구 스냅샷을 활용하여 빠른 속도로 트랜잭션을 복구할 수 있다.
이하, 도 10에서는 본 발명의 실시예들에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 장치(100)의 작업 흐름을 상세히 설명한다.
도 10은 본 발명의 일실시예에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 방법의 순서를 도시한 흐름도이다.
본 실시예에 따른 하이브리드 트랜잭셔널 메모리(HyTM) 시스템에서의 트랜잭션 복구 방법은, 상술한 트랜잭션 복구 장치(100)에 의해 수행될 수 있다.
도 10을 참조하면, 단계(1010)에서, 트랜잭션 복구 장치(100)는, 하이브리드 트랜잭셔널 메모리 시스템(HyTM)에 입력되는 트랜잭션을, 상기 트랜잭션의 특성에 따라, HTM, RH-STM, NOrec-STM 및 Single Gloabal Lock 중 어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서 실행한다.
트랜잭션 복구 장치(100)는 트랜잭션이 입력되면, 먼저 트랜잭셔널 메모리(TM)로서 HTM을 제1 선택하여 상기 트랜잭션을 실행하고, HTM 상에서 트랜잭션이 커밋되지 않으면 정해진 재시도 횟수 내에서 트랜잭션의 실행을 재시도 할 수 있다.
만일 정해진 재시도 횟수(예를 들면, 10회) 이내에, 트랜잭션이 커밋되지 않으면, 트랜잭션 복구 장치(100)는 상기 트랜잭션의 사이즈, 실행 속도 및 충돌 빈도 중 적어도 하나의 특성과 연관되는 폴백 경로를, 폴백 경로 테이블로부터 식별하고, 상기 폴백 경로에 따른, RH-STM, NOrec-STM 및 Single Gloabal Lock(SGL) 중 어느 하나의 트랜잭셔널 메모리를 제2 선택하여, 상기 트랜잭션을 실행할 수 있다.
단계(1020)에서, 트랜잭션 복구 장치(100)는, 상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리에 보존한다.
트랜잭션 복구 장치(100)는 일정 시간 간격으로 정해진 실행시점이 도래하거나, 상기 실행 중인 트랜잭션 내 스레드의 종료, 또는 상기 트랜잭션이 실행 종료에 관한 실행시점이 도래하면, 데이터 파일에서 변경된 사항에 관한 로그를 TM 별 고유한 로깅 기법에 따라 생성할 수 있다.
트랜잭션 복구 장치(100)는 생성한 로그를 휘발성 메모리에 일시적으로 저장하고, 상기 로그에 대한 검증이 완료되면, 상기 로그를 비휘발성 메모리로 이동하여 보존(flush)할 수 있다.
단계(1030)에서, 트랜잭션 복구 장치(100)는, 상기 트랜잭션의 실행 중, 전력 차단 또는 OS 크래시로 인해 시스템 실패(System fail)가 발생하는지 여부를 판단한다.
상기 단계(1030)에서의 판단 결과, 시스템 실패가 발생하여, 상기 트랜잭션의 실행이 중단되는 경우, 단계(1040, 1050)에서, 트랜잭션 복구 장치(100)는 상기 비휘발성 메모리에 보존한 로그를 이용하여 트랜잭션을 복구하고, 트랜잭션을 복구한 시점부터 이어서 재실행한다.
일례로 트랜잭션 복구 장치(100)는 트랜잭션의 실행 중 시스템 실패가 발생 시, 비휘발성 메모리에 보존한 로그의 리플레이를 통해 상기 트랜잭션을 복구할 수 있다.
즉 트랜잭션 복구 장치(100)는 비휘발성 메모리로부터 가져온 데이터 파일을, 상기 비휘발성 메모리에 보존한 상기 로그에 따라 변경하여, 중단된 상기 트랜잭션을 복구할 수 있다.
이후 트랜잭션 복구 장치(100)는 상기 트랜잭션이 정상적으로 실행 종료(commit)하면, 비휘발성 메모리에 저장한 데이터 파일(원본)을, 상기 로그에 따라 갱신하고, 상기 갱신에 따라 휘발성 메모리에 가져온 데이터 파일(사본)도 갱신하여 일관성을 유지할 수 있다.
이와 같이 본 발명의 일실시예에 따르면, 하이브리드 트랜잭셔널 메모리 시스템을 통해, 현재 처리되고 있는 트랜잭션 특성에 최적한 TM을 제공하여 효율적인 병렬 처리를 보장할 수 있고, TM별로 적합한 로깅 기법에 따라 비휘발성 메모리에 로그를 저장하여 트랜잭션 처리 중간에 시스템 실패가 발행하더라도 로그를 이용한 신속한 트랜잭션 복구를 지원할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100: 트랜잭션 복구 장치
110: 실행부
120: 생성부
130: 복구부
140: 로딩부
150: 검증부
160: 갱신부
170: 비휘발성 메모리
180: 휘발성 메모리
110: 실행부
120: 생성부
130: 복구부
140: 로딩부
150: 검증부
160: 갱신부
170: 비휘발성 메모리
180: 휘발성 메모리
Claims (12)
- 하이브리드 트랜잭셔널 메모리 시스템(HyTM)으로 트랜잭션이 입력되면,
어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서, 상기 트랜잭션을 실행하는 단계;
상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리에 보존하는 단계;
상기 트랜잭션의 실행이 중단되는 경우,
상기 비휘발성 메모리로부터 가져온 데이터 파일을, 상기 비휘발성 메모리 내 상기 로그에 따라 변경하여, 상기 트랜잭션을 복구하는 단계; 및
상기 트랜잭션이 복구된 실행시점부터, 상기 트랜잭션을 재실행하는 단계
를 포함하고,
상기 트랜잭션을 실행하는 단계는,
상기 트랜잭셔널 메모리(TM)로서 HTM을 제1 선택하여, 상기 트랜잭션을 실행하는 단계;
상기 HTM 상에서 실행되는 상기 트랜잭션에 대한 사이즈, 실행 속도 및 충돌 빈도 중 적어도 하나의 특성을 분석하는 단계;
정해진 횟수 이내에, 상기 HTM 상에서 상기 트랜잭션의 실행이 종료되지 않으면, 상기 트랜잭션의 특성과 연관되는 폴백 경로를, 폴백 경로 테이블로부터 식별하는 단계; 및
상기 트랜잭셔널 메모리(TM)로서 상기 폴백 경로에 따른, RH-STM, NOrec-STM 및 Single Gloabal Lock 중 어느 하나의 트랜잭셔널 메모리를 제2 선택하여, 상기 트랜잭션을 실행하는 단계
를 포함하는 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법. - 제1항에 있어서,
상기 비휘발성 메모리에 보존하는 단계는,
상기 실행 중인 트랜잭션 내 스레드의 종료, 또는 상기 트랜잭션이 실행 종료에 관한 실행시점이 도래하면, 상기 트랜잭션이 실행되는 트랜잭셔널 메모리에 선정된 로깅 알고리즘에 따라, 상기 로그를 생성하는 단계; 및
휘발성 메모리에서 생성한 상기 로그를, 상기 비휘발성 메모리로 이동하여 보존하는 단계
를 포함하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 트랜잭션의 실행 전에, 상기 비휘발성 메모리에 저장된 데이터 파일을, 휘발성 메모리에 가져오는 단계;
상기 트랜잭션의 실행에 따라 상기 휘발성 메모리에서 변경되는 데이터 파일을, 상기 로그를 생성 시, 상기 휘발성 메모리 내 메모리 공간에 백업하는 단계;
선정된 로그 재생 알고리즘에 따라 상기 로그를 재생하여 복원한 데이터 파일이, 상기 메모리 공간에 백업한 데이터 파일과 일치하는지를 판단하여, 상기 로그를 검증하는 단계; 및
상기 검증이 완료된 로그를, 상기 휘발성 메모리에서 상기 비휘발성 메모리로 이동하여 보존하는 단계
를 더 포함하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 비휘발성 메모리에 보존하는 단계는,
상기 트랜잭션의 실행 중, 데이터 쓰기 명령에 따라 상기 데이터 파일에 수정 또는 추가한 제1 데이터와, 상기 제1 데이터의 주소값을 포함하여, 상기 로그를 생성하는 단계; 및
상기 생성한 로그를, 상기 트랜잭션과 연관시켜 상기 비휘발성 메모리에 보존하는 단계
를 포함하는 트랜잭션 복구 방법. - 제4항에 있어서,
상기 트랜잭션을 복구하는 단계는,
상기 비휘발성 메모리에 저장된 데이터 파일을, 휘발성 메모리에 가져오는 단계; 및
상기 휘발성 메모리에 가져온 상기 데이터 파일에서, 상기 주소값에 상응하는 제2 데이터를, 상기 제1 데이터로 수정하거나, 또는 상기 제2 데이터가 없을 경우 상기 제1 데이터를 상기 주소값에 상응하는 데이터로서 상기 데이터 파일에 추가하여, 상기 트랜잭션을 복구하는 단계
를 포함하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 트랜잭션의 재실행이 종료되면,
상기 트랜잭션과 관련하여 상기 비휘발성 메모리에 보존한 모든 로그를, 선정된 로그 재생 알고리즘에 따라 재생하여, 상기 비휘발성 메모리에 저장된 데이터 파일을, 갱신하는 단계
를 더 포함하는 트랜잭션 복구 방법. - 제6항에 있어서,
상기 비휘발성 메모리에 저장된 데이터 파일의 갱신에 연동하여, CoW(Copy on Write) 기능을 통해, 차기의 트랜잭션 실행을 위해 상기 비휘발성 메모리로부터 휘발성 메모리로 가져온 데이터 파일을, 갱신하는 단계; 및
상기 휘발성 메모리에서 갱신된 데이터 파일을 사용하여, 상기 차기의 트랜잭션이 실행되도록 하는 단계
를 더 포함하는 트랜잭션 복구 방법. - 삭제
- 제1항에 있어서,
상기 트랜잭션 복구 방법은,
상기 제2 선택에 따라, 상기 HTM에서 전환된 트랜잭셔널 메모리 상에서 상기 트랜잭션을 실행하는 동안,
상기 트랜잭션에 대한 차기의 트랜잭션을, HTM 상에서 실행하여, 상기 트랜잭션과 병렬로 실행되도록 하는 단계
를 더 포함하는 트랜잭션 복구 방법. - 하이브리드 트랜잭셔널 메모리 시스템(HyTM)으로 트랜잭션이 입력되면,
어느 하나로 선택되는 트랜잭셔널 메모리(TM) 상에서, 상기 트랜잭션을 실행하는 실행부;
상기 트랜잭션을 실행하는 동안, 정해진 실행시점 마다 로그를 생성하여, 비휘발성 메모리에 보존하는 생성부; 및
상기 트랜잭션의 실행이 중단되는 경우, 상기 비휘발성 메모리로부터 가져온 데이터 파일을, 상기 비휘발성 메모리 내 상기 로그에 따라 변경하여, 상기 트랜잭션을 복구하고, 상기 실행부를 통해, 상기 트랜잭션이 복구된 실행시점부터 상기 트랜잭션을 재실행하는 복구부
를 포함하고,
상기 실행부는,
상기 트랜잭셔널 메모리(TM)로서 HTM을 제1 선택하여, 상기 트랜잭션을 실행하고, 상기 HTM 상에서 실행되는 상기 트랜잭션에 대한 사이즈, 실행 속도 및 충돌 빈도 중 적어도 하나의 특성을 분석하고,
정해진 횟수 이내에, 상기 HTM 상에서 상기 트랜잭션의 실행이 종료되지 않으면, 상기 트랜잭션의 특성과 연관되는 폴백 경로를, 폴백 경로 테이블로부터 식별하고, 상기 트랜잭셔널 메모리(TM)로서 상기 폴백 경로에 따른, RH-STM, NOrec-STM 및 Single Gloabal Lock 중 어느 하나의 트랜잭셔널 메모리를 제2 선택하여, 상기 트랜잭션을 실행하는
하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 장치. - 제10항에 있어서,
상기 생성부는,
상기 트랜잭션의 실행 중, 데이터 쓰기 명령에 따라 상기 데이터 파일에 수정 또는 추가한 제1 데이터와, 상기 제1 데이터의 주소값을 포함하여, 상기 로그를 생성하고,
상기 생성한 로그를, 상기 트랜잭션과 연관시켜 상기 비휘발성 메모리에 보존하는
트랜잭션 복구 장치. - 제11항에 있어서,
상기 복구부는,
로딩부를 통해, 상기 비휘발성 메모리에 저장된 데이터 파일을, 휘발성 메모리에 가져오고,
상기 휘발성 메모리에 가져온 상기 데이터 파일에서, 상기 주소값에 상응하는 제2 데이터를, 상기 제1 데이터로 수정하거나, 또는 상기 제2 데이터가 없을 경우 상기 제1 데이터를 상기 주소값에 상응하는 데이터로서 상기 데이터 파일에 추가하여, 상기 트랜잭션을 복구하는
트랜잭션 복구 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190076825A KR102184841B1 (ko) | 2019-06-27 | 2019-06-27 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190076825A KR102184841B1 (ko) | 2019-06-27 | 2019-06-27 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102184841B1 true KR102184841B1 (ko) | 2020-11-30 |
Family
ID=73641987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190076825A KR102184841B1 (ko) | 2019-06-27 | 2019-06-27 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102184841B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022271225A1 (en) * | 2021-06-23 | 2022-12-29 | Intel Corporation | Mitigating pooled memory cache miss latency with cache miss faults and transaction aborts |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130106258A (ko) * | 2012-03-19 | 2013-09-27 | 삼성전자주식회사 | 이동식 저장 장치 및 이를 포함하는 시스템 |
KR20140049058A (ko) * | 2011-09-14 | 2014-04-24 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 트랜잭션 메모리 시스템 내구성 부여 |
KR20140138670A (ko) * | 2012-03-16 | 2014-12-04 | 오라클 인터내셔날 코포레이션 | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 |
KR101885030B1 (ko) * | 2017-04-21 | 2018-08-02 | 전북대학교산학협력단 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 |
-
2019
- 2019-06-27 KR KR1020190076825A patent/KR102184841B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140049058A (ko) * | 2011-09-14 | 2014-04-24 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 트랜잭션 메모리 시스템 내구성 부여 |
KR20140138670A (ko) * | 2012-03-16 | 2014-12-04 | 오라클 인터내셔날 코포레이션 | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 |
KR20130106258A (ko) * | 2012-03-19 | 2013-09-27 | 삼성전자주식회사 | 이동식 저장 장치 및 이를 포함하는 시스템 |
KR101885030B1 (ko) * | 2017-04-21 | 2018-08-02 | 전북대학교산학협력단 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022271225A1 (en) * | 2021-06-23 | 2022-12-29 | Intel Corporation | Mitigating pooled memory cache miss latency with cache miss faults and transaction aborts |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740195B2 (en) | Block storage by decoupling ordering from durability | |
JP4581500B2 (ja) | ディザスタリカバリシステム、プログラム及びデータベースのリカバリ方法 | |
EP2979203B1 (en) | Transaction processing using torn write detection | |
US7254686B2 (en) | Switching between mirrored and non-mirrored volumes | |
US8918362B2 (en) | Replication processes in a distributed storage environment | |
JPH0683682A (ja) | アンドゥーログ使用の最大利用のための方法及び装置 | |
JPH06318165A (ja) | 故障後の再起動中でのトランザクション適応システムにおいてデータを利用可能にする方法 | |
US20200142791A1 (en) | Method for the implementation of a high performance, high resiliency and high availability dual controller storage system | |
US11204912B2 (en) | Commit coalescing for micro-journal based transaction logging | |
US20030126163A1 (en) | Method for file deletion and recovery against system failures in database management system | |
KR20170054767A (ko) | 데이터베이스 관리 시스템 및 그의 데이터 변경 및 복구 방법 | |
CN106599096B (zh) | 基于非易失性内存的高性能文件系统设计方法 | |
KR101862094B1 (ko) | 트랜잭션 메모리 프로그램을 위한 소프트웨어 재생기 | |
US20230297510A1 (en) | Write-behind optimization of covering cache | |
KR102184841B1 (ko) | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 | |
KR102049417B1 (ko) | Nvdimm을 이용한 인-메모리 데이터베이스 기반의 데이터 저장 및 복원 방법 | |
KR102150597B1 (ko) | 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템 | |
KR100365891B1 (ko) | 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법 | |
US10733097B2 (en) | Shingled magnetic recording storage system with reduced time to recover | |
CN111581023A (zh) | 银行内存数据处理方法及装置 | |
JP4139642B2 (ja) | データベース管理方法およびシステム | |
JP2000163294A (ja) | データベース管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体 | |
JPH0991183A (ja) | データベースリカバリ装置 | |
JPS63261437A (ja) | 複合サブシステム形オンラインシステム | |
JPS63262737A (ja) | デ−タベ−ス更新記録処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |