KR20160113207A - 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기 - Google Patents

하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기 Download PDF

Info

Publication number
KR20160113207A
KR20160113207A KR1020167023088A KR20167023088A KR20160113207A KR 20160113207 A KR20160113207 A KR 20160113207A KR 1020167023088 A KR1020167023088 A KR 1020167023088A KR 20167023088 A KR20167023088 A KR 20167023088A KR 20160113207 A KR20160113207 A KR 20160113207A
Authority
KR
South Korea
Prior art keywords
transaction
hardware
software
mode
lock
Prior art date
Application number
KR1020167023088A
Other languages
English (en)
Other versions
KR101834262B1 (ko
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 인텔 코포레이션
Publication of KR20160113207A publication Critical patent/KR20160113207A/ko
Application granted granted Critical
Publication of KR101834262B1 publication Critical patent/KR101834262B1/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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

트랜잭션 메모리 시스템의 실시예에서, 장치는, 프로세서와, 제1 소프트웨어 트랜잭션 모드의 적어도 하나의 제1 소프트웨어 트랜잭션과 제2 소프트웨어 트랜잭션 모드의 제2 소프트웨어 트랜잭션, 및 제1 하드웨어 트랜잭션 모드의 적어도 하나의 하드웨어 트랜잭션과 제2 하드웨어 트랜잭션 모드의 적어도 하나의 제2 하드웨어 트랜잭션의 동시 실행을 가능케 하는 실행 로직을 포함한다. 한 예에서, 실행 로직은 프로세서 내에서 구현될 수 있다. 다른 실시예들도 설명되고 청구된다.

Description

하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기{ENABLING MAXIMUM CONCURRENCY IN A HYBRID TRANSACTIONAL MEMORY SYSTEM}
병렬 프로그래밍 컴퓨팅 환경에서, 동일한 메모리 위치로의 액세스를 공유하는 것은, 적절한 관리 및 동기화를 요구하고, 비교적 수행하기 어려울 수 있다. 전통적으로, 공유된 메모리에 액세스하는 쓰레드(thread)들간의 동기화는 공유된 데이터를 동시 액세스로부터 보호하기 위해 잠금(lock)을 이용하여 실현되었다. 그러나, 잠금들은 종종 공유된 데이터에 대한 그들의 직렬화에 있어서 과도하게 보수적이고, 이것은 런타임(runtime)시에 항상 필요한 것은 아닐 수도 있지만, 종종 코드가 기입되는 때를 판정하기 어렵거나 불가능하다.
쓰레드들이, 트랜잭션이라 불리는 중요한 섹션(critical section)들을, 병렬로 추론적으로 실행하는 것(speculatively execute)을 허용하기 위해 대안적 솔루션으로서 트랜잭션 메모리(transactional memory)가 제안되었다. 런타임시에 충돌이 발생하면, 쓰레드들은 그들은 트랜잭션을 중단 또는 롤백하고 다시 한번 트랜잭션들을 실행하여 충돌을 해결한다. 트랜잭션 메모리 시스템에서, 쓰레드들은, 트랜잭션들이 후속해서 커밋(commit)될 때까지 공유된 메모리 위치의 내용을 변경하지 않고 트랜잭션들을 추론적으로 실행할 수 있다. 2개의 트랜잭션들 사이에서 충돌이 검출된다면, 트랜잭션들 중 하나는 중단되어, 다른 트랜잭션이 커밋할 수 있게 하고, 이 때 커밋된 트랜잭션은 공유된 메모리 위치들의 내용을 변경할 수 있다.
도 1은 실시예에 따른 시스템의 블록도이다.
도 2은 실시예에 따른 트랜잭션의 실행의 고수준 흐름도이다.
도 3은 실시예에 따른 하드웨어 트랜잭션과 소프트웨어 트랜잭션 사이의 가능한 타이밍을 도시한다.
도 4는 본 발명의 실시예에 따른 하이브리드 트랜잭션 메모리 시스템 흐름의 블록도이다.
도 5는 실시예에 따른 제1 하드웨어 트랜잭션의 실행의 흐름도이다.
도 6은 실시예에 따른 제1 하드웨어 트랜잭션의 페이즈(phase)의 상세사항을 나타낸다.
도 7은 실시예에 따른 제2 트랜잭션의 실행의 흐름도이다.
도 8은 실시예에 따른 기본 블룸 필터-기반의 하드웨어 트랜잭션(basic Bloom filter-based hardware transaction)의 상세사항을 나타낸다.
도 9는 실시예에 따른 최적화된 블룸 필터-기반의 하드웨어 트랜잭션의 상세사항을 나타낸다.
도 10은 실시예에 따른 추론적 소프트웨어 트랜잭션(speculative software transaction)의 실행의 흐름도이다.
도 11은 실시예에 따른 소프트웨어 트랜잭션 실행의 상세사항을 나타낸다.
도 12는 실시예에 따른 취소불능 소프트웨어 트랜잭션(irrevocable software transaction)의 실행의 흐름도이다.
도 13은 실시예에 따른 취소불능 소프트웨어 트랜잭션의 상세사항을 나타낸다.
도 14는 또 다른 실시예에 따른 시스템의 블록도이다.
트랜잭션 메모리 시스템을 구현하는 다양한 실시예에서, 액세스된 메모리 위치에 관한 정보를 이용하여 하나 이상의 소프트웨어 트랜잭션과 동시에 실행되는 하나 이상의 하드웨어 트랜잭션들 사이에서 충돌이 판정될 수 있다. 소정 구현에서 이 정보는 트랜잭션을 실행하는 쓰레드와 연관된 필터 세트(filter set)에 의해 유지될 수 있다. 더 구체적으로는, 실시예는, 이들 필터 세트를, 액세스된 메모리 위치에 관한 정보가 저장될 수 있는 소위 블룸 필터로서 구현할 수 있다.
일반적으로, 블룸 필터는, 각각이 하나 이상의 메모리 위치와 연관된 값을 제공하는 복수의 필드를 포함하는 비트 벡터(bit vector)로서 구현될 수 있다. 동작시, 액세스된 메모리 위치 주소(또는 그 일부)는 하나 이상의 해시 값(hash value)으로 해싱된다. 해시 결과는 비트 벡터의 대응하는 엔트리들을 채우는데 이용된다. 더 구체적으로는, 액세스 및 해시 계산시에, 비트 벡터의 표시된 필드들은 논리 1 또는 활성값에 설정되어 대응하는 주소가 액세스되었다는 것을 나타낼 수 있다. 유사하게, 논리 제로 또는 비활성 값을 갖는 임의의 필드는, 메모리의 하나 이상의 주어진 주소가 액세스되지 않았다는 것을 나타낸다.
충돌 검출은 적어도 부분적으로 복수의 블룸 필터 값을 이용하여 수행될 수 있다. 더 구체적으로는, 제1 쓰레드에 대한 블룸 필터는, 자신의 내용을, 동시 실행중인 트랜잭션을 갖는 제2 쓰레드에 대한 블룸 필터의 내용과 비교할 수 있다. 교차 비교(intersection comparison)가 액세스 메모리 위치들이 하나 이상의 위치에서 교차한다는 것을 나타낸다면, 충돌이 검출되고 트랜잭션들 중 하나 이상을 롤백 또는 중단하는 다양한 동작들이 발생할 수 있다. 대신에 교차 비교가 액세스된 메모리 위치들이 교차하지 않는다는 것을 나타낸다면, 트랜잭션들 중 하나 또는 양쪽 모두는 충돌 검출없이 커밋(commit)을 진행할 수 있다.
실시예는 소프트웨어 트랜잭션과 동시에 실행되는 하드웨어 트랜잭션들 사이의 충돌을 판정하는데 이용될 수 있다. 블룸 필터가 각각의 쓰레드에 대해 제공되는 실시예를 이용하여, 소프트웨어 트랜잭션에 의해 소프트웨어 전역 잠금(software global lock)이 유지되는 동안 실행을 완결하는 하드웨어 트랜잭션은 충돌이 발견된 경우에만 중단되도록 강제될 수 있다. 블룸 필터는 때때로 긍정 오류(false positive)를 허용할 수 있어서, 불요 중단(spurious abort)이 여전히 발생할 수 있다. 그럼에도 불구하고, 블룸 필터의 이용은 하드웨어 트랜잭션의 커밋 레이트(commit rate)를 개선시킬 수 있다.
실시예는, 주어진 소프트웨어 트랜잭션에 의해 취득되는 단일의 전역 잠금을 이용하여 소프트웨어 트랜잭션과 하드웨어 트랜잭션 양쪽 모두를 제공하는 하이브리드 트랜잭션 메모리(HTM; hybrid transactional memory)에서 이용될 수 있다. 하드웨어 트랜잭션 메모리는, 최상의 노력(best effort)을 이용하여 트랜잭션을 커밋까지 완료하는 프로세서 하드웨어에서만 구현될 수 있다. 소프트웨어 트랜잭션 메모리는 멀티쓰레드 프로그램에서 공유된 메모리를 동기화하기 위해 완전히 소프트웨어에서 구현된다.
하드웨어 트랜잭션의 끝에서, 하드웨어 트랜잭션은 단일 전역 잠금을 참조한다. 잠금이 자유롭다면(free), 하드웨어 트랜잭션은 성공적으로 커밋할 수 있다. 단일 전역 잠금이 자유롭지 않은 경우, 각각의 트랜잭션의 판독 및 기입 세트를 나타내는 쓰레드당 블룸 필터를 이용하여 충돌 검출이 수행될 수 있다. 이런 방식으로, 소프트웨어 트랜잭션에 의해 단일 전역 잠금이 취해지더라도 비-충돌 하드웨어 트랜잭션들이 커밋할 수 있다.
따라서, 실시예들은 하이브리드 트랜잭션 메모리 시스템에서 실현된 동시실행량의 증가를 가능케한다. 소프트웨어 트랜잭션과 하드웨어 트랜잭션 사이의 충돌을 검출하기 위하여, 각각의 쓰레드는 블룸 필터와 연관된다. 쓰레드 내의 트랜잭션의 실행 동안에, 각각의 판독 및 기입은 블룸 필터에 메모리 위치를 추가하도록 주석부기(annotate)된다. 실시예에서, 이 주석부기는 라이브러리 호출에 의해 이루어질 수 있다. 그러나, 다른 실시예는 판독 및 기입 메모리 액세스에서 이러한 주석부기를 인라인(in-line)할 수 있다. 대안으로서, 컴파일러는 블룸 필터 삽입을 핸들링하는 명령어를 삽입할 수 있다.
하드웨어 트랜잭션(즉, 트랜잭션의 중요 섹션)의 완료시에, 트랜잭션은 커밋 이전에 전역 잠금을 참조하고, 잠금이 자유롭다면, 트랜잭션은 성공적으로 커밋할 수 있다. 그러나, 잠금이 취해진다면, 하드웨어 트랜잭션과 (전역 잠금을 소유하는) 소프트웨어 트랜잭션의 블룸 필터 콘텐츠는 교차 동작에서 비교되어 충돌이 있는지를 판정한다. 블룸 필터는 긍정 오류를 허용하지만, 부정 오류(false negative)는 허용하지 않는다. 따라서, 트랜잭션이 실제의 충돌을 갖지 않음에도 충돌이 검출될 수 있지만, 트랜잭션이 동일한 메모리 위치를 액세스한다면 교차 비교는 제로 충돌을 보고하지 않을 것이다. 따라서, 하드웨어 트랜잭션은 블룸 필터가 충돌을 보고하지 않는 한 잠금이 취해지더라도 성공적으로 커밋할 수 있다.
하나의 특정한 하이브리드 트랜잭션 메모리 시스템에서, 단일의 소프트웨어 트랜잭션은 하나 이상의 하드웨어 트랜잭션과 함께 동시에 실행될 수 있다. 소프트웨어 트랜잭션의 시작에서, 이것은 단일 전역 잠금을 취득하여 배타성을 보장한다. 각각의 하드웨어 트랜잭션은 중요 섹션의 끝에서 이 잠금을 판독하여 커밋을 시도할 수 있는지 또는 블룸 필터를 참조할 것인지를 판정한다. 실시예에서, 단일 전역 잠금은 소유자 쓰레드의 식별자를 저장할 수 있으므로, 하드웨어 트랜잭션에게 충돌을 체크할 블룸 필터를 표시한다.
실시예에서, 블룸 필터는 소프트웨어 블룸 필터로서 구현될 수 있다. 이들 필터를 이용하여, 각각의 트랜잭션(하드웨어 또는 소프트웨어)은 판독되거나 기입된 각각의 메모리 위치를 그 위치를 판독/기입할 때 그 자신의 블룸 필터에 추가한다. 하드웨어 트랜잭션의 끝에서, 블룸 필터는 있다면 단일 전역 잠금을 현재 보유하고 있는 소프트웨어 트랜잭션과의 충돌을 식별하는데 이용된다.
하드웨어 트랜잭션은 대부분 하드웨어에서 실행되지만, 판독 및 기입 액세스들을 주석부기하여 이들 판독/기입된 위치들이 쓰레드당 소프트웨어 블룸 필터 내에 들어가도록 한다는 점에 유의한다. 커밋시에, 하드웨어 트랜잭션들은 전역 잠금을 체크하고, 잠금이 자유롭다면 이들은 커밋할 수 있고, 그렇지 않다면, 이들은 그들 자신의 블룸 필터와 소프트웨어 블룸 필터 사이의 세트 교차를 계산한다. 충돌이 없다면, 하드웨어 트랜잭션은 성공적으로 커밋할 수 있다. (어떠한 충돌이나 필터 교차도 없다는 확정 이후) 커밋시에 하드웨어 트랜잭션에 의해 수행된 업데이트는, (모든 업데이트가 한 번에 가시적이 되도록) 업데이트된 값들을 메모리에 기입함으로써 다른 쓰레드들에게 가시적이게 된다. 트랜잭션이 중단되면, 모든 업데이트는 그들의 초기 상태로 복구된다.
중단된 하드웨어 트랜잭션은 복수회 재시도된다. (구성가능한 파라미터인) N회의 재시도 후에, 하드웨어 트랜잭션은 소프트웨어 트랜잭션으로 천이하고 단일 전역 잠금의 취득을 추구한다. 이 천이는 소프트웨어 트랜잭션이 중단되지 않는 실시예에서 전방 진행(forward progress)을 보장한다.
이 실시예에서, 임의의 주어진 시간에서 단 하나의 소프트웨어 트랜잭션이 실행될 수 있다. 소프트웨어 트랜잭션은 그 쓰레드가 단일 전역 잠금을 소유할 때 실행될 수 있다. 이것은, 잠금 위치에서 그 쓰레드 식별자(ID)를 기입함으로써 잠금을 취득하고 그 중요 섹션의 실행을 시작한다. 소프트웨어 트랜잭션에 의해 수행되는 모든 업데이트는 제 위치에 있다(달리 말하면, 소프트웨어 트랜잭션은 메모리를 직접 업데이트한다). 게다가, 소프트웨어 트랜잭션은 또한, 그 판독/기입된 위치들을 그 쓰레드의 블룸 필터에 저장하여 임의의 동시적 하드웨어 트랜잭션들이 충돌을 체크하는 것을 허용한다. 한 실시예에서 소프트웨어 트랜잭션은 결코 중단될 수 없다.
하이브리드 트랜잭션 메모리 접근법은, 핸들링된 트랜잭션에 대한 전방 진행을 보장하면서 더 빠른 트랜잭션 실행 및 하드웨어 트랜잭션 메모리와 연관된 감소된 오버헤드를 실현하는데 이용될 수 있다. 하이브리드 트랜잭션 메모리 접근법에 따르면, 각각의 트랜잭션은 초기에 하드웨어에서 핸들링되고, 전방 진행이 하드웨어에서 달성될 수 없다면 후속해서 소프트웨어에서 핸들링된다. 다양한 실시예에서, 소프트웨어 트랜잭션과 하나 이상의 하드웨어 트랜잭션의 동시 실행을 가능케 하기 위해 전역 잠금이 이용되는 하이브리드 트랜잭션 메모리 시스템이 제공된다.
도 1은 장치(100)의 블록도이다. 도 1에 도시된 바와 같이, 장치(100)는, 프로세서 요소(102), 메모리 요소(104), 및 트랜잭션 관리 모듈(106)을 포함한 복수의 요소를 포함한다. 그러나, 실시예는, 도시된 요소들의 유형, 개수, 또는 배열로 제한되지 않는다.
다양한 실시예에서, 프로세서 요소(102)는, 임의의 프로세서 또는 태스크-레벨 병렬성을 구현할 수 있는 로직 디바이스를 이용하여 구현될 수 있다. 일부 실시예에서, 프로세서 요소(102)는 멀티-코어 프로세서일 수 있다. 또 다른 예시적 실시예에서, 프로세서 요소(102)는 태스크를 병렬로 수행하도록 배열된 복수의 프로세서일 수 있다. 메모리 요소(104)는, 휘발성 및 비휘발성 메모리를 포함한, 데이터를 저장할 수 있는 임의의 머신-판독가능한 또는 컴퓨터-판독가능한 매체를 이용하여 구현될 수 있다. 일부 실시예에서, 메모리 요소(104)는 프로세서 요소(102)를 위한 캐쉬(cache)를 포함할 수 있다. 다양한 실시예에서, 메모리 요소(104)는, 추가적으로 또는 대안으로서, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 다이내믹 RAM(DRAM), Double-Data-Rate DRAM(DDRAM), 싱크로너스 DRAM(SDRAM), 스터틱 RAM(SRAM), 프로그래머블 ROM (PROM), 소거가능한 프로그래머블 ROM(EPROM), 전기적으로 소거가능한 프로그래머블 ROM (EEPROM), 플래시 메모리, 강유전성 폴리머 메모리 등의 폴리머 메모리, 오보닉 메모리(ovonic memory), 상 변화 또는 강유전체 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 자기 또는 광학 카드, 또는 정보를 저장하기에 적합한 기타 임의 유형의 매체 등의, 다른 유형의 데이터 스토리지 매체를 포함할 수 있다. 메모리 요소(104)의 일부 또는 모두는 프로세서 요소(102)와 동일한 집적 회로에 포함되거나 대안으로서 메모리 요소(104)의 일부 또는 모두는, 프로세서 요소(102)의 집적 회로 외부에 있는, 집적 회로나 기타의 매체, 예를 들어, 하드 디스크 드라이브에 배치될 수 있다.
일부 실시예에서, 트랜잭션 관리 모듈(106)은, 트랜잭션 메모리 패러다임에 따라 트랜잭션의 수행을 관리하는 회로, 로직, 기타의 하드웨어 및/또는 명령어를 포함할 수 있다. 다양한 실시예에서, 트랜잭션 관리 모듈(106)은, 하드웨어 트랜잭션과 소프트웨어 트랜잭션 양쪽 모두의 수행을 야기할 수 있다. 하드웨어 트랜잭션은 프로세서 요소(102) 내의 로직 디바이스 회로에 의해 직접 실행되는 트랜잭션일 수 있다. 소프트웨어 트랜잭션은 프로세서 요소(102) 상에서 실행중인 프로그래밍 로직에 의해 간접 실행되는 트랜잭션일 수 있다.
도 1에 더 도시된 바와 같이, 장치(100)와 트랜시버(144)를 포함하는 시스템(140)이 제공된다. 트랜시버(144)는 다양한 적절한 무선 통신 기술을 이용하여 신호를 송수신할 수 있는 하나 이상의 무선장치(radio)를 포함할 수 있다. 이러한 기술은 하나 이상의 무선 네트워크를 통한 통신을 수반할 수 있다. 예시적인 무선 네트워크는, WLAN(wireless local area network), WPAN(wireless personal area network), WMAN(wireless metropolitan area network), 셀룰러 네트워크, 및 위성 네트워크를 포함한다(그러나, 이들로 제한되지 않는다).
일부 실시예에서, 프로세서 요소(102)는 하나 이상의 쓰레드(108)를 호스팅할 수 있다. 각각의 쓰레드(108)는 프로세서(102) 상에서 실행중인 애플리케이션 또는 프로그램에 대응할 수 있고, 임의의 특정한 애플리케이션 또는 프로그램은 하나보다 많은 연관된 쓰레드(108)를 가질 수 있다. 애플리케이션 또는 프로그램은 하나 이상의 트랜잭션(110)의 수행을 요청하기 위해 특정한 쓰레드(108)를 이용할 수 있다. 트랜잭션(110)은 다양한 계산이나 기타의 태스크의 실행이 프로세서 요소(102)에 의해 수행되게 할 수 있다.
다양한 실시예에서, 쓰레드(108)가 트랜잭션의 실행을 요청하면, 트랜잭션 관리 모듈(106)은 하이브리드 트랜잭션 메모리 알고리즘에 따라 트랜잭션을 관리한다. 일부 실시예에서, 하이브리드 트랜잭션 메모리 알고리즘은 트랜잭션의 실행 및 커밋에 대한 시도가 이루어지는 복수의 실행 페이즈 또는 모드를 구현할 수 있다. 다양한 실시예에서, 하이브리드 트랜잭션 메모리 알고리즘은 하드웨어 페이즈와 소프트웨어 페이즈를 포함할 수 있다. 일부 실시예에서, 트랜잭션 관리 모듈(106)은 하드웨어 페이즈가 성공하지 못한 이후에만 트랜잭션에 대해 소프트웨어 페이즈를 이용할 수 있다.
일부 실시예에서, 트랜잭션 관리 모듈(106)은, 소프트웨어 트랜잭션과 하나 이상의 하드웨어 트랜잭션의 동시 실행을 가능케 하기 위하여 전역 잠금(112)을 이용할 수 있다. 다양한 실시예에서, 트랜잭션 관리 모듈(106)은, 소프트웨어 트랜잭션이 실행되고 있을 때 전역 잠금(112)이 세트 또는 활성이 되게 할 수 있고, 어떠한 소프트웨어 트랜잭션도 실행되고 있지 않을 때 클리어 또는 비활성이 되게 할 수 있다. 일부 실시예에서, 전역 잠금(112)은 스핀 잠금(spin lock)일 수 있다. 다른 실시예에서, 잠금 캐쉬 라인 상의 경쟁을 감소시키기 위하여 전역 잠금(112)에 대해 MCS(Mellor-Crummey-Scott) 잠금이 이용될 수 있다. 다양한 이러한 실시예에서, "MCS_취득" 및 "MCS_해제" 방법은 하드웨어 트랜잭션을 활용하여 비교-및-스왑(CAS; compare-and-swap) 명령어의 성능을 가속하는데 이용될 수 있다. 역시 또한, 일부 실시예에서, 이 전역 잠금은 여기서 설명된 바와 같이 필터 메커니즘을 이용하여 구현될 수 있다.
일부 실시예에서, 트랜잭션 관리 모듈(106)은, 트랜잭션의 결말에서 전역 잠금(112)이 비활성이고 트랜잭션 실행 동안에 어떠한 다른 충돌도 발생하지 않았다면 하드웨어 트랜잭션이 커밋할 수 있게 할 수 있다. 대신에 하드웨어 트랜잭션이 커밋을 추구할 때 전역 잠금(112)이 활성이거나 취해진다면, 트랜잭션 관리 모듈(116)은, 트랜잭션을 개시하는 쓰레드와 연관된 블룸 필터에 저장된 정보를 참조함으로써 하드웨어 트랜잭션과 보류중인 소프트웨어 트랜잭션 사이에 충돌이 존재하는지를 판정할 수 있다.
다양한 실시예에서, 트랜잭션 관리 모듈(106)은 실행 로직(114)을 포함할 수 있다. 일부 실시예에서, 실행 로직(114)은 트랜잭션(110)을 실행하는 회로, 기타의 하드웨어 및/또는 명령어일 수 있다. 다양한 실시예에서, 쓰레드(108)가 새로운 트랜잭션의 실행을 요청할 때마다, 실행 로직(114)은 트랜잭션의 하나 이상의 실행을 수행할 수 있다. 일부 실시예에서, 실행 로직(114)은 초기에 트랜잭션을 한번 이상 하드웨어 트랜잭션으로서 실행할 수 있고, 후속해서, 하드웨어에서 실행될 때 커밋할 수 없다면 트랜잭션을 소프트웨어 트랜잭션으로서 실행한다. 따라서, 일부 실시예에서, 소프트웨어 트랜잭션 모드는, 트랜잭션이 커밋하고 전방 진행이 달성되는 것을 보장하기 위해 최상위 우선순위를 할당받는 폴백 실행 페이즈(fallback execution phase)일 수 있다. 일부 실시예에서, 실행 로직(114)은 또한, 하드웨어 트랜잭션의 결말에서 전역 잠금(112)을 체크할 수 있다.
일부 실시예에서, 트랜잭션 관리 모듈(106)은 추적 로직(116)을 포함할 수 있다. 다양한 실시예에서, 추적 로직(116)은, 전역 잠금(112), 재시도 카운터(118) 및 재시도 임계치(120)를 관리하는 회로, 기타의 하드웨어 및/또는 명령어를 포함할 수 있다. 일부 실시예에서, 추적 로직(116)은 실행 로직(114)으로부터의 명령어에 기초하여 전역 잠금(112)을 설정할 수 있다. 예를 들어, 실행 로직(114)은, 실행 로직(114)이 소프트웨어 페이즈에서 트랜잭션의 실행을 개시할 때 전역 잠금(112)을 설정하도록 추적 로직(116)에게 명령할 수 있다. 다양한 실시예에서, 재시도 카운터(118)는 하드웨어 트랜잭션 모드에서 트랜잭션을 수행하기 위해 이루어진 진행중인 총 시도 횟수를 포함할 수 있다. 일부 실시예에서, 재시도 임계치(120)는 시도 횟수를 포함할 수 있고, 이 시도 횟수 이후에 실행 로직(114)은 하드웨어 트랜잭션의 실행으로부터 소프트웨어 트랜잭션으로서의 실행으로 진행해야 한다. 다양한 실시예에서, 새로운 트랜잭션이 수신되면, 추적 로직(116)은 (트랜잭션에 대응하는) 재시도 카운터(118)를 제로로 리셋할 수 있다. 일부 실시예에서, 트랜잭션의 각각의 비성공적 실행 이후에, 추적 로직(116)은 재시도 카운터(118)를 증분시킬 수 있다.
도 1에 더 도시된 바와 같이, 메모리 요소(104)는 쓰레드당 판독 세트 스토리지(126)와 쓰레드당 기입 세트 스토리지(128)를 포함한다. 실시예에서, 스토리지는 트랜잭션 동안에 판독 또는 기입된 값들에 관한 정보를 저장할 수 있다. 추가로, 각각의 쓰레드는 이것을 대응하는 블룸 필터(134 및 136)와 연관시킬 수 있고, 각각은 주어진 판독 세트 스토리지 또는 기입 세트 스토리지(및 쓰레드)와 연관된다. 여기서 더 설명되는 바와 같이, 트랜잭션의 실행 동안에, 각각의 판독 및 기입은 대응하는 블룸 필터 내에 주석부기되어 주어진 메모리 액세스가 트랜잭션 동안에 액세스되었는지를 나타낼 수 있다. 이 정보는 동시 실행되는 트랜잭션들간에 적어도 잠재적 충돌이 있는지를 판정하기 위해 나중에 이용될 수 있다.
다양한 실시예에서, 트랜잭션 관리 모듈(106)은 완결 로직(finalization logic; 128)을 포함할 수 있다. 일부 실시예에서, 완결 로직(128)은, 트랜잭션들이 실행 로직(114)에 의해 실행된 후에 트랜잭션들을 커밋할지 또는 중단할지를 판정하는 회로, 기타의 하드웨어 및/또는 명령어를 포함할 수 있다. 다양한 실시예에서, 완결 로직(128)은, 트랜잭션이 또 다른 트랜잭션과 충돌하거나 잠재적으로 충돌할 때 임의의 특정한 트랜잭션이 중단되어야 하는지를 판정할 수 있다. 일부 실시예에서, 완결 로직(128)은, 전역 잠금(112)을 체크함으로써 트랜잭션이 동시적 소프트웨어 트랜잭션과 잠재적으로 충돌할 수 있는지를 판정할 수 있다. 다양한 실시예에서, 전역 잠금(112)이 설정되고 트랜잭션이 하드웨어 트랜잭션이라면, 완결 로직(128)은 교차 로직(124)을 참조하여 하드웨어 트랜잭션과 소프트웨어 트랜잭션 사이에 적어도 잠재적 충돌이 존재하는지를 판정할 수 있다. 이 목적을 위해, 교차 로직(124)은 트랜잭션을 개시하는 쓰레드들의 각각의 블룸 필터들(134 및 136)에 액세스하여 필터 세트들이 교차하는지를 판정할 수 있다. 만일 그렇다면, 적어도 잠재적 충돌이 존재하므로, 교차 로직(124)은 활성 교차(active intersection)를 완결 로직(128)에 보고할 수 있다. 대신에 필터 세트들이 교차를 나타내지 않는다면, 이 비활성 교차가 완결 로직(128)에 보고된다.
이어서, 완결 로직(128)은 교차가 발견된다면 하드웨어 트랜잭션이 중단되게 할 수 있고, 그렇지 않다면, (어떠한 다른 충돌도 검출되지 않는다고 가정하여) 하드웨어 트랜잭션이 커밋할 수 있게 한다.
일부 실시예에서, 전역 잠금(112)이 설정되고 트랜잭션이 소프트웨어 트랜잭션이라면, 완결 로직(128)은 트랜잭션을 커밋하고 추적 로직(116)이 전역 잠금(112)을 해제하도록 명령할 수 있다. 다양한 실시예에서, 전역 잠금(112)이 설정되어 있지 않다면, 완결 로직(128)은, 교차 로직(124)과 상호작용하여 필터 세트들이 잠재적 충돌을 나타내는지를 판정할 필요없이, 하드웨어 트랜잭션을 커밋하고 추적 로직(116)이 재시도 카운터(118)를 클리어하도록 명령할 수 있다.
일부 실시예에서, 트랜잭션 관리 모듈(106)은 중단 핸들러 로직(130)을 포함할 수 있다. 다양한 실시예에서, 중단 핸들러 로직(130)은 완결 로직(128)에 의해 표시된 트랜잭션을 중단을 핸들링할 회로, 기타의 하드웨어 및/또는 명령어를 포함할 수 있다. 일부 실시예에서, 중단 핸들러 로직(130)은, 중단된 트랜잭션의 다음 시도된 수행이 하드웨어 트랜잭션으로서 또는 소프트웨어 트랜잭션으로서 발생해야 하는지를 판정할 수 있다. 다양한 실시예에서, 중단 핸들러 로직(130)은, 트랜잭션이 또 다른 트랜잭션과의 충돌이나 잠재적 충돌로 인해 또는 다른 이유로 인해 중단될 것인지를 판정할 수 있다. 트랜잭션이, 잘못된 명령어, 용량 초과, 또는 불규칙한 메모리 액세스 패턴에 기인한 캐쉬 연관성 오버플로우 등의 또 다른 이유로 중단되었다면, 중단 핸들러 로직(130)은 실행 로직(114)이 바로 소프트웨어 페이즈로 진행해야 한다고 판정할 수 있다. 트랜잭션이 또 다른 트랜잭션과의 충돌이나 잠재적 충돌로 인해 중단되었다면, 중단 핸들러 로직(130)은, 트랜잭션이, 예를 들어, 재시도 횟수에 기초하여, 현재의 페이즈에서 또는 다음 페이즈에서 재시도되어야 한다고 판정할 수 있다.
다양한 실시예에서, 중단된 트랜잭션의 다음 시도된 수행이 하드웨어 트랜잭션으로서 또는 소프트웨어 트랜잭션으로서 핸들링되어야 하는지를 판정하기 위하여, 중단 핸들러 로직(130)은 재시도 카운터(118)를 재시도 임계치(120)와 비교할 수 있다. 일부 실시예에서, 재시도 카운터(118)가 재시도 임계치(120)보다 작다면, 중단 핸들러 로직(130)은 트랜잭션을 하드웨어 트랜잭션으로서 재시도하도록 실행 로직(114)에게 명령할 수 있다. 그렇지 않다면, 중단 핸들러 로직(130)은 트랜잭션을 소프트웨어 트랜잭션으로서 재시도하도록 실행 로직(114)에게 명령할 수 있다. 다양한 실시예에서, 추적 로직(116)은 재시도된 트랜잭션의 성공적 및/및 비성공적 커밋의 횟수에 기초하여 재시도 임계치(120)에 대한 값을 적응적으로 판정할 수 있다. 도 1 실시예에서는 이러한 고수준에서 도시되어 있지만, 본 발명의 범위는 이 점에서 제한되지 않으며, 하이브리드 트랜잭션 메모리 시스템은 많은 상이한 형태와 수 많은 변형을 취할 수 있다는 것을 이해해야 한다.
이제 도 2를 참조하면, 도 2에는 실시예에 따른 트랜잭션의 실행의 고수준 흐름도가 도시되어 있다. 도 2에서 볼 수 있는 바와 같이, 방법(200)에 따르면, 모든 트랜잭션은 하드웨어에서 하드웨어 트랜잭션으로서의 실행을 개시한다(블록 210). 각각의 판독 또는 기입에 관한 실행(블록 215) 동안에, 트랜잭션은 판독되거나 기입된 각각의 위치를 대응하는 쓰레드에 대한 소프트웨어 블룸 필터에 기록한다. 하드웨어 트랜잭션이 그 중요한 섹션의 실행을 마친 후에(블록 220), 이것은, 있다면, 소프트웨어 트랜잭션과의 충돌을 체크함으로써 커밋을 시도한다. 하드웨어 트랜잭션은 먼저 전역 잠금을 취할 것인지를 체크한다(다이아몬드(225)). 이 잠금이 자유롭다면, 하드웨어 트랜잭션은 성공적으로 커밋할 수 있다(다이아몬드(240)에서 판정되는, 어떠한 중단도 발생하지 않았다고 가정할 경우). 잠금이 취해진다면, 잠금의 값은, 잠금을 유지하고 있는, 즉, 그에 따라, 소프트웨어 트랜잭션을 실행하고 있는 쓰레드의 인덱스 또는 식별자를 나타낸다.
이 경우에, 하드웨어 트랜잭션은 다이아몬드(230)로 가서 소프트웨어 트랜잭션을 실행하고 있는 쓰레드의 블룸 필터에 액세스해 어떠한 충돌이 있는지를 판정한다. 더 구체적으로는, 다이아몬드(230)에서, 2개의 필터들 사이에서 교차 동작이 수행되어 2개의 블룸 필터들의 임의의 엔트리 또는 필드들이 교차하는지(예를 들어, 양쪽이 활성 또는 논리 1의 값을 갖는지)를 판정할 수 있다. 만일 그렇다면, 하드웨어 트랜잭션은 중단되고, 제어는 다이아몬드(270)로 가서 주어진 하드웨어 트랜잭션의 재시도 횟수가 구성가능한 수 N에 도달했는지를 판정한다. 트랜잭션의 중단시, 쓰레드와 연관된 버퍼나 기타의 스토리지 내의 임의의 업데이트된 값들을 플러시 아웃(flush out)하는 것을 포함한 다양한 단계들이 취해질 수 있다는 점에 유의한다.
대신에, 블룸 필터들간에 어떠한 교차도 없다고 판정된다면, 제어는 다이아몬드(240)로 가서 예를 들어 또 다른 이유로 인해 트랜잭션이 중단되었는지를 판정한다. 그렇지 않다면, 제어는 트랜잭션이 커밋되는 블록(250)으로 간다. 커밋의 경우, 하드웨어 트랜잭션은, 메모리를, 하드웨어 트랜잭션 실행 동안에 주어진 쓰레드에게만 보이는 버퍼 내의 이전에 저장된 임의의 업데이트된 값들로 업데이트할 수 있다.
트랜잭션의 중단 여부에 관한 판정이 도 2 실시예의 특정한 위치의 다이아몬드(240)에서 도시되어 있지만, 하드웨어 트랜잭션은, 트랜잭션 동안의 중단에 대한 다른 유형의 충돌이나 다른 이유를 검출할 수 있는 충돌 검출 로직에 의해, 그 실행 동안의 임의의 시간에서 중단되는 것이 가능하다는 것을 역시 이해해야 한다. 그러나, 설명의 용이성을 위해 다이아몬드(240)가 도 2에 도시된 위치에 표시되어 있다는 것을 이해해야 한다.
여전히 도 2를 참조하여, 다이아몬드(270)에서 재시도 횟수가 임계 횟수 N에 도달하지 않았다고 판정된다면, 제어는 블록(280)으로 가서 재시도 횟수가 증가된 다음, 제어는 블록(210)으로 다시 돌아가서 하드웨어 트랜잭션을 다시 시작한다. 그렇지 않고, 재시도 횟수가 재시도 임계 N에 도달했다면, 제어는 대신에 다이아몬드(270)로부터 블록(260)으로 가고, 실행은 소프트웨어 트랜잭션 모드로 전환될 수 있다. 더 구체적으로는, 단일의 소프트웨어 트랜잭션만이 허용되는 이 구현에서, 트랜잭션은 그에 따라 소프트웨어 트랜잭션 모드에서 실행되어 완료될 수 있어서, 블록(250)에서 트랜잭션이 커밋하는 것을 허용한다.
블룸 필터는 소프트웨어 트랜잭션과 하드웨어 트랜잭션 사이의 충돌 검출을 보장한다. 하드웨어 트랜잭션간의 충돌 검출과 해결은 하드웨어 트랜잭션 메모리 시스템에 의해 보장된다. 단일 전역 잠금은, 임의의 시간에 단 하나의 소프트웨어 트랜잭션 실행을 보장하므로, 한 실시예에서, 소프트웨어 트랜잭션에 대해 어떠한 추가적인 충돌 검출 메커니즘도 제공되지 않는다.
도 3은 실시예에 따른 하드웨어 트랜잭션과 소프트웨어 트랜잭션 사이의 가능한 타이밍을 도시한다. 사례(310)에서, 소프트웨어 트랜잭션이 먼저 변수 X를 업데이트하고 나중에 하드웨어 트랜잭션이 동일한 변수 X를 상이한 값으로 업데이트한다. 하드웨어 트랜잭션이 커밋을 시도하면, 필터 세트 교차가 수행되어 이중 액세스를 식별하므로 충돌이 제기되어 하드웨어 트랜잭션이 중단된다. 유사한 동작이 사례(320)에서 발생한다. 그러나 사례들(330 및 340)에서, 하드웨어 트랜잭션이 커밋하는 시점에서, 소프트웨어 쓰레드는 이미 커밋했고 단일 전역 잠금을 해제했다. 따라서, 하드웨어 쓰레드가 이 잠금을 체크할 때, 하드웨어 쓰레드는 이것이 해제되어 있으므로 트랜잭션은 성공적으로 커밋할 수 있다.
사례들(330 및 340)에서, 하드웨어 트랜잭션이 커밋을 시도할 때 잠금이 자유롭고, 이것은 어떠한 동시 실행중인 소프트웨어 트랜잭션도 없다는 것을 의미한다. 중첩되는 소프트웨어 트랜잭션이 있더라도, 이 시점에서는 이미 커밋되어 하드웨어 트랜잭션 이전에 직렬화되어 있다. 소프트웨어 트랜잭션이 하드웨어 트랜잭션 이후에 직렬화된 임의의 충돌하는 동작을 수행한다면, 하드웨어 트랜잭션은 충돌시에 (하드웨어 충돌 검출 메커니즘 때문에) 중단될 것이다. 따라서 잠금이 자유로울 때 하드웨어 트랜잭션이 커밋할 수 있게 하는 것이 올바른 거동을 제공한다.
대신에 (사례들(310 및 320)에서와 같이)) 하드웨어 트랜잭션이 커밋을 시도할 때 잠금이 취해지면, 동시적 소프트웨어 트랜잭션이 실행중에 있다. 하드웨어 트랜잭션을 커밋하는 것은, 소프트웨어 트랜잭션에 의해 실행되는 가능한 미래의 충동 동작 때문에, 이 소프트웨어 트랜잭션 이전에 직렬화된다. 그러나, 소프트웨어 트랜잭션은 하나 이상의 메모리 위치에서의 충돌 동작들을 하드웨어 트랜잭션이 이 위치들의 추적을 시작하기 이전에 수행했을 수 있으므로, 소프트웨어 트랜잭션 이전에 하드웨어 트랜잭션을 직렬화하는 것은 올바르지 않은 거동일 수 있다. 따라서, 실시예들은 이 사례를 판정하기 위해 블룸 필터들을 이용한다.
소프트웨어 블룸 필터는, 소프트웨어 트랜잭션이 미래에 액세스할 모든 위치를 포함하는 것은 아니라, 트랜잭션이 이미 액세스한 위치만을 포함한다는 점에 유의한다. 그럼에도 불구하고, 미래의 액세스는 커밋된 하드웨어 트랜잭션 이후에 정확히 직렬화될 것이다. 따라서, 블룸 필터가 교차하지 않는다면, 하드웨어 트랜잭션은 소프트웨어 트랜잭션 이전에 정확히 직렬화될 수 있고 커밋하는 것이 허용될 수 있다. 블룸 필터가 충돌을 식별하면, 충돌 동작들은 소프트웨어 트랜잭션에서 먼저 발생한 다음 하드웨어 트랜잭션에서 발생했고, 그렇지 않다면 하드웨어 트랜잭션이 중단될 것이다. 이 경우에, 하드웨어 트랜잭션은 소프트웨어 트랜잭션 이전에 직렬화될 수 없고 중단될 것이다. 따라서, 실시예들은 이들 충돌을 정확히 식별하고 하드웨어 트랜잭션을 중단한다. 한 실시예에서, 블룸 필터가 충돌을 (구분불가능한 긍정 오류로서) 부정확하게 보고하여 하드웨어 트랜잭션이 이들 경우에 중단하게 되는 것이 가능하다는 점에 유의한다. 그러나, 블룸 필터는 부정 오류를 야기하지 않기 때문에, 모든 충돌이 식별되고 방지된다.
실시예에서, 효율적인 블룸 필터 구현은 O(1) 시간에서 삽입 및 세트 교차를 허용하여, 오버헤드를 최소화한다. 게다가, 하드웨어 트랜잭션은 커밋 이전에 전역 잠금과 소프트웨어 블룸 필터만을 판독하여, 하드웨어 트랜잭션이 이들 위치들을 수정하는 소프트웨어 트랜잭션 때문에 중단될 수 있을 때 윈도우를 감소시킨다. 실시예에서, 잠금과 블룸 필터를 판독하는 것은 2개의 추가 캐쉬 라인만을 트랜잭션의 판독 세트에 추가할 수 있다. 일부 실시예에서, 이것은, 블룸 필터의 소정 비트가 잠금이 취해져 있는지를 표시하는데 이용되고 블룸 필터의 나머지는 블룸 필터로서 이용되도록 최적화될 수 있다. 이러한 구현에서, 잠금 위치는 양쪽 목적을 위해 서비스할 수 있어서, 하드웨어 트랜잭션의 판독 세트 크기를 단 하나의 추가 위치로 감소시킨다. 트랜잭션 자신의 블룸 필터들은 기입 세트에 추가의 캐쉬 라인을 추가하지만, 소정 구현에서, 이것은 블룸 필터 크기에 따라, 단 하나의 캐쉬 라인 정도로 낮을 수 있다.
한 실시예를 이용하여, 그들 자신으로부터 끊어진 메모리 액세스(disjoint memory access)에 액세스하는 많은 작은 하드웨어 트랜잭션들 및 동시 실행중인 큰 소프트웨어 트랜잭션은 커밋할 수 있다. 하나의 이러한 예로서, 개방 어드레싱 해시-테이블을 나타내는 어레이를 고려해 보자. 쓰레드는 이 해시 테이블에서 룩업(x) 동작과 삽입(x) 동작을 수행할 수 있다. 일단 점유의 임계치가 달성되고 나면, 쓰레드는, 새로운 어레이를 할당하고 구 어레이로부터 새로운 어레이로 요소들을 재해싱(re-hashing)함으로써 해시 테이블의 크기를 2배로 하려고 판정한다. 룩업 및 삽입 동작은 짧은 트랜잭션이고 대부분의 시간을 하드웨어에서 계속할 수 있다. 대신에 재해싱은 소프트웨어 트랜잭션으로서 실행될 수 있다(그리고, 재해싱을 수행하는 쓰레드는 단일 전역 잠금을 취득한다). 이 경우에 소프트웨어 트랜잭션 및 동시적 하드웨어 트랜잭션 사이의 정확한 충돌 검출에 의해, 하드웨어 트랜잭션으로서 실행되는 룩업 동작은 새로운 어레이로의 재해싱이 발생하고 있는 동안 구 어레이로부터의 데이터를 이용하여 커밋할 수 있다. 게다가, 구 어레이의 끝에서 (즉, 아직 재해싱되지 않은 부분에서) 발생하는 하드웨어 트랜잭션으로서 실행되는 삽입 동작도 역시 재해싱 동안에 커밋할 수 있다. 따라서, 실시예는, 작은 하드웨어 트랜잭션이 오랫동안 실행중인 소프트웨어 트랜잭션과 동시에 커밋하는 것을 허용함으로써 처리량을 향상시킨다.
전술된 바와 같은 블룸 필터 충돌 검출 기술을 제공하는 것이 병렬성을 향상시키지만, 상기 실시예들에서 단일 전역 잠금의 이용하여 여전히 비효율성이 존재할 수 있다. 다른 실시예들에서, 복수의 하드웨어 트랜잭션과 복수의 소프트웨어 트랜잭션이 병렬로 실행되고 커밋할 수 있게 하는 트랜잭션 메모리 시스템이 제공될 수 있다. 일반적으로, 캐쉬-기반의 하드웨어 트랜잭션 메모리 시스템은 하드웨어 컴포넌트에 이용될 수 있고 무효화-기반의 소프트웨어 트랜잭션 메모리 시스템은 소프트웨어 컴포넌트에 대해 이용될 수 있다. 이들 실시예는, 전방 진행을 여전히 보장하면서, 복수의 하드웨어 트랜잭션이 복수의 소프트웨어 트랜잭션과 동시에 실행되는 것을 허용하는 하이브리드 트랜잭션 메모리 시스템을 제공한다.
이제 도 4를 참조하면, 본 발명의 실시예에 따른 하이브리드 트랜잭션 메모리 시스템의 블록도가 도시되어 있다. 도 4에 도시된 바와 같이, HTM 시스템(400)은 복수의 하드웨어 트랜잭션 모드와 복수의 소프트웨어 트랜잭션 모드를 제공한다. 도 4에 도시된 구현에서, 트랜잭션은, 여기서는 라이트 하드웨어(LiteHW) 트랜잭션 모드라 부르는, 제1 하드웨어 트랜잭션 모드(410)에서 시작한다. 오버플로우 또는 지원되지 않는 명령어가 발생한다면, 트랜잭션은 또 다른 유형의 트랜잭션 모드로 즉각 업그레이드된다. 대신에, 트랜잭션이 다른 이유로 인해(예를 들어, 충돌로 인해) 중단된다면, 트랜잭션은, 여기서는 블룸 필터 하드웨어(BFHW) 모드라 불리는, 제2 하드웨어 트랜잭션 모드(420)로 업그레이드되기 이전에 다수회 재시도한다. 유사한 재시도가 발생한 다음, 트랜잭션은, 커밋하지 않는다면, 여기서는 추론적 소프트웨어(SpecSW) 모드라 불리는, 제1 소프트웨어 트랜잭션 모드(430)로 업그레이드된다. 다시 이 모드에서, 트랜잭션은 트랜잭션이, 여기서는 취소불능 소프트웨어(IrrevocSW) 모드라 불리는, 제2 소프트웨어 트랜잭션 모드(440)로 업그레이드되기 이전에 다수회 재시도될 수 있다. 도 4에서는 특정한 모드와 상호작용이 도시되어 있지만, 실시예는 이 점에서 제한되지 않는다는 것을 이해해야 한다.
대부분은 트랜잭션들이, TM-지원되는 캐쉬 공간 내에 들어맞을 수 있고, 지원되지 않는 명령어를 포함하지 않는 짧은 액세스 메모리라면, 이들은 소프트웨어 트랜잭션과 동기화할 필요없이 바로 하드웨어에서 계속될 수 있다.
트랜잭션의 가장 가벼운 유형은 제1 하드웨어 트랜잭션 모드(LiteHW)이다. 이 트랜잭션 유형은 판독 및 기입에 대한 어떠한 주석부기없이 실행되고 커밋을 시도할 때 실행중인 어떠한 소프트웨어 트랜잭션도 없다면 성공적으로 커밋할 수 있다. 이 유형의 트랜잭션은 단순하고 빠르지만, 소프트웨어 트랜잭션과의 동시실행을 거의 허용하지 않는다.
제2 하드웨어 트랜잭션 모드인 BFHW는, 소프트웨어 블룸 필터를 이용하여 하드웨어 트랜잭션에 의해 판독 및 기입된 위치들을 기록해, 동시에 실행되는 소프트웨어 트랜잭션과의 충돌 검출을 가능케한다. 이 트랜잭션 유형은 LiteHW 트랜잭션에 비해 부가의 오버헤드를 추가하지만, 동시에 실행중인 소프트웨어 트랜잭션의 존재에도 커밋할 수 있다. 하드웨어 트랜잭션은 빠르지만, 지원되지 않는 명령어 또는 오버플로우 때문에 최상-노력 HTM에서 실패할 수 있으므로, 소프트웨어 폴백이 제공된다.
이어서, 제1 소프트웨어 트랜잭션 모드인 SpecSW는, 트랜잭션이 다른 소프트웨어 및 하드웨어 트랜잭션과의 충돌 검출을 위해 판독 및 기입된 위치들을 블룸 필터에 기록하고 커밋 페이즈 동안에 연기된 업데이트를 위해 모든 기입을 해시 테이블에 저장하는 추론적 소프트웨어 트랜잭션을 수행한다. 무효화는 운행중인 충돌하는 트랜잭션을 중단하기 위해 커밋-이후에(post-commitment) 발생하고 불투명성(opacity)을 보장하기 위해 트랜잭션당 잠금들(per transaction locks)이 이용된다. 이 제1 소프트웨어 트랜잭션 모드에서, 각각의 판독은 유효성확인되어 좀비 트랜잭션(중단될 트랜잭션)이 비일관적 상태에 도달하지 못하게 한다.
마지막으로, 제2 소프트웨어 트랜잭션 모드인 IrrevocSW는 제 위치에서(메모리에 직접) 모든 업데이트를 수행하고 중단될 수 없다. 이러한 특성으로 인해, 주어진 시간에 단 하나의 IrrevocSW 트랜잭션만이 실행될 수 있다. 그러나, 복수의 SpecSW 및 BFHW 트랜잭션이 IrrevocSW 트랜잭션과 동시에 실행될 수 있다.
복수의 소프트웨어 트랜잭션들 사이의 충돌 검출은 앞서 논의된 블룸 필터를 이용하여 실현된다. 소프트웨어 트랜잭션과 하드웨어 트랜잭션 사이의 충돌 검출은 또한, 블룸 필터를 이용하지만, 탈출 동작을 갖지 않는 최상-노력 HTM은 충돌 검출시에 일반적으로 하드웨어 트랜잭션을 중단시키게 된다. 이러한 거동은 하드웨어 트랜잭션의 강한 격리에 기인한 것이다: 하드웨어에 의해 추적되는 임의의 메모리 위치는 충돌을 야기함으로써, 소프트웨어 트랜잭션이 그 위치로의 충돌하는 액세스를 수행할 때 하드웨어 트랜잭션을 중단시킬 것이다. 게다가, 하드웨어 업데이트는 하드웨어 트랜잭션이 커밋될 때까지 다른 쓰레드들에게 보이지 않는다.
실시예들은 하드웨어 트랜잭션과 소프트웨어 트랜잭션 사이의 충돌 검출을 하드웨어 트랜잭션아 커밋된 이후까지 연기한다. 그 다음, 하드웨어 트랜잭션은, 모든 운행중인 충돌하는 소프트웨어 트랜잭션을 무효화시키는 커밋 후 페이즈(post commit phase)를 수행한다. 하드웨어 트랜잭션은 이미 커밋했기 때문에, 다른 쓰레드와 블룸 필터 정보를 공유하는 것은 하드웨어 트랜잭션을 중단시킬 수 없다.
각각의 트랜잭션은, 소프트웨어이든 하드웨어이든, 복수의 페이즈를 겪는다. 이들 페이즈들 각각에서의 거동은 트랜잭션의 유형에 의존한다. 제1 페이즈는 트랜잭션이 개시되는 시작 페이즈이다. 하드웨어 트랜잭션은 시작 하드웨어 트랜잭션 명령어를 호출하는 반면, 소프트웨어 트랜잭션은 시작 주소에 대한 정보를 기록하고 적어도 하나의 소프트웨어 트랜잭션의 존재를 나타내는 플래그(예를 들어, sw_exists 플래그) 등의 표시자를 통해 그 존재를 다른 쓰레드에게 통보한다.
실행 페이즈 동안에, 판독 및 기입 동작은 주석부기되고, 거동은 실행중인 트랜잭션의 유형에 의해 결정된다. 모든 트랜잭션 유형은, LiteHW 트랜잭션을 제외하고는, 액세스된 위치를 블룸 필터에 기록한다.
중단 페이즈 동안에, 하드웨어 중단은 하드웨어에 의해 자동으로 처리된다. 소프트웨어 트랜잭션의 경우, 소프트웨어는 트랜잭션 실행 동안에 기록된 정보를 클리어하고 시작 페이즈 동안에 저장된 주소로부터 재시작한다.
커밋 페이즈 동안에, 충돌 검출이 수행되고 트랜잭션이 커밋할 수 있다면 메모리 업데이트가 이루어진다. 그 구현은 트랜잭션 유형에 의존한다.
커밋 후 페이즈 동안에, 트랜잭션은 무효화를 수행할 수 있다. 이 페이즈는 트랜잭션이 이미 커밋되고 메모리를 그 기입 세트 위치로 업데이트한 이후에 실행된다는 점에 유의한다. 이 페이즈는 이제 막 커밋된 트랜잭션과 충돌하는 모든 운행중인 소프트웨어 트랜잭션이 중단될 것을 보장한다.
앞서 간략하게 설명된 바와 같이, 제1 하드웨어 모드인 LiteHW는 가장 간단하고 빠른 유형인데, 그 이유는 이 모드는 무시할만한 추가적인 소프트웨어 오버헤드를 도입하고 완전히 하드웨어에서 실행되기 때문이다. LiteHW 트랜잭션은 소프트웨어 트랜잭션이 없을시에만 커밋할 수 있다. 도 5는 실시예에 따른 이러한 트랜잭션의 실행의 흐름도이다. 방법(500)은, 예를 들어, 사용자-레벨 하드웨어 트랜잭션 시작 명령어를 통해, 하드웨어 트랜잭션의 실행을 시작한다(블록(510)). 그 다음, 트랜잭션 몸체가 실행된다(블록(520)). 이 중요한 섹션은 판독이나 기입 중 어느 것도 기입하지 않고 수행된다. (블록(530)에서) 트랜잭션이 커밋을 시도할 때, (예를 들어, sw_exists 플래그를 체크함으로써(소프트웨어 트랜잭션이 실행중이면 sw_exists !=0)) 트랜잭션은 현재 실행중인 임의의 소프트웨어 트랜잭션이 존재하는지를 알아보기 위해 체크한다(다이아몬드(540)). 동시에 실행중인 소프트웨어 트랜잭션이 있다면, 제어는 다이아몬드(550)로 가서 재시도 임계치(M)에 도달했는지를 판정한다. 그렇지 않다면, 제어는 블록(555)으로 가서, 재시도 카운트가 증가된다. 그 다음, 제어는 다시 위의 블록(510)으로 간다. 대신에 트랜잭션이 임계 횟수만큼 재시도되었다면, 제어는 블록(558)으로 가서, 트랜잭션은 제2 하드웨어 트랜잭션 모드인 BFHW 모드로 전환된다.
블록(540)에서 실행중인 소프트웨어 트랜잭션이 없다고(sw_exists = 0) 판정된다면, 트랜잭션은, 다이아몬드(560)에서 트랜잭션이 중단되지 않았다고 가정하면, 성공적으로 커밋할 수 있다. LiteHW는 하드웨어 트랜잭션이기 때문에, 그 커밋은 즉각 수행될 수 있다(블록(565)). 트랜잭션은 하드웨어 충돌 검출 메커니즘에 의해 그 실행 동안에 어떤 시점에서 중단된다면, 중단 핸들러는 하드웨어에 의해 설정된 중단 상태를 체크하여 이 트랜잭션을 동일한 모드에서 (최대 M회) 재시도할지, 또는 (예를 들어, 중단이 오버플로우에 의해 야기된 경우) SpecSW로 전환할지(블록(570)) 또는 (예를 들어, 트랜잭션이 입력/출력 명령어 등의 지원되지 않는 명령어에 의해 야기된 경우) IrrevocSW로 전환할지(블록(580))를 판정한다.
도 6은 LiteHW 트랜잭션(501)의 페이즈의 더 많은 상세사항을 도시한다. 시작 페이즈 동안에, 트랜잭션은 시작 하드웨어 트랜잭션 명령어(예를 들어, txbegin 명령어)를 실행한다. 실행 동안에, (액세스와 함께 블룸 필터를 업데이트하는 라이브러리-기반의 핸들러 등의 핸들러인) OnRead 및 OnWrite 핸들러가 비워진다. OnAbort 핸들러는 재시도 횟수를 증가시키고 트랜잭션을 LiteHW 트랜잭션으로서 재시도할지 또는 상이한 모드로 전환할지를, 재시도 횟수와 중단 이유에 기초하여, 판정한다. 마지막으로, 역시 하드웨어에서 실행되는, 커밋 페이즈는 sw_exists 플래그를 체크하고 하드웨어 트랜잭션 종료 명령어(예를 들어, txend 명령어)를 호출한다. 이 트랜잭션 유형은 커밋 후 페이즈를 갖지 않는다.
도 7은 실시예에 따른 BFHW 트랜잭션의 실행의 흐름도이다. 방법(600)은, 예를 들어, 사용자-레벨 하드웨어 트랜잭션 시작 명령어를 통해, 하드웨어 트랜잭션의 실행을 시작한다(블록 610). 그 다음, 트랜잭션 몸체가 실행된다(블록 620). 그 실행 동안에, 트랜잭션은 판독 또는 기입된 메모리 위치들을 그 판독 및 기입 블룸 필터에 기록한다. 트랜잭션이 커밋을 시도할 때(다이아몬드(630)), 커밋 잠금이 취해져 있는지를 체크한다(다이아몬드(640)). 잠금이 자유롭고, (다이아몬드(660)에서 판정되는) 어떠한 중단도 발생하지 않았다고 가정하면, 트랜잭션은 그 자신의 하드웨어 트랜잭션 잠금을 취득하고(블록(670)) 커밋한다(블록(675)).
트랜잭션 잠금이 취해진다면, 소프트웨어 트랜잭션은 현재 커밋중에 있다. 실시예에서, 이 경우에 할 수 있는 가장 간단한 일은 중단하는 것인데, 그 이유는 하드웨어 트랜잭션은 커밋중인 소프트웨어 트랜잭션과의 충돌하는 메모리 업데이트를 가질 수도 있기 때문이다. 이 경우가 이하의 도 8에 상세히 도시되어 있다.
그러나, 하드웨어 트랜잭션은, 커밋중인 소프트웨어 트랜잭션과 어떠한 충돌도 갖지 않는다면, 소프트웨어 트랜잭션이 커밋하고 있는 동안 커밋할 수 있다. 이것은 블룸 필터 비교를 이용하여 판정될 수 있다. 이 하드웨어 트랜잭션 모드의 최적화된 거동은, 커밋 잠금이 취해진 것을 안 경우 커밋중인 소프트웨어 트랜잭션의 블룸 필터를 체크하는 것이다. 블룸 필터가 충돌을 나타낸다면, 하드웨어 트랜잭션은 중단하고, 그렇지 않다면 (상기와 같이 그 자신의 트랜잭션 잠금을 취득한 후에) 커밋할 수 있다. 이 경우가 도 9에 도시되어 있다.
LiteHW와 유사하게, OnAbort 핸들러는 복수의 소프트웨어 모드들 중 하나로 격상할지(예를 들어, 블록들(658 및 690)) 또는 재시도 횟수가 임계 횟수에 도달했는지(다이아몬드(650))를 판정한다. 그렇지 않다면, 블록(655)에서 재시도 횟수가 증가되고 블록(610)에서 트랜잭션은 다시 시작된다.
기입된 트랜잭션 메모리는 완전히 하드웨어에서 커밋된다. 먼저, 트랜잭션은 커밋 잠금과 (커밋 잠금이 취해진 경우)(다이아몬드(650)에서) 소프트웨어 블룸 필터를 체크함으로써 커밋할 수 있는지를 판정한다. 어떠한 충돌도 없다면(잠금이 자유롭거나 하드웨어 트랜잭션의 블룸 필터가 소프트웨어 트랜잭션의 블룸 필터와 교차하지 않음), 하드웨어 트랜잭션은 (도 8 및 도 9의 tlock으로 도시된) 그 자신의 트랜잭션 잠금을 취득한다(블록 675). 이 잠금은 이것을 소유하는 하드웨어 트랜잭션에 의해서만 취득되므로, 그 트랜잭션이 이것을 취득하려고 할 때에는 항상 자유로울 것이다. 그러나, 이것은, 이하에서 더 상세히 설명되는 바와 같이, 커밋 페이즈를 시작하는 소프트웨어 트랜잭션과의 경쟁을 방지하는데 이용된다.
트랜잭션이 중단되면, 트랜잭션의 잠금은, 그 추론적 기입 세트의 일부이기 때문에, 자동으로 해제된다는 점에 유의한다. 게다가, 잠금에 기입되는 값은, 하드웨어 트랜잭션이 메모리에 대한 그 변경을 커밋할 때에만 다른 쓰레드에게 보일 수 있게 된다. 잠금이 취해진 이후로서 변경이 메모리에 커밋되기 이전에 또 다른 쓰레드가 이 위치를 체크한다면, 하드웨어 트랜잭션은 중단되어, 경쟁이 가능하지 않도록 보장한다.
여전히 도 7을 참조하면, 블록(675)에서의 커밋 이후에, 이 제2 하드웨어 트랜잭션 모드에 대한 커밋 후 페이즈가 소프트웨어에서 실행되고, 하드웨어 트랜잭션이 그 메모리에 대한 변경을 커밋한 이후에 발생한다. 알 수 있는 바와 같이, 커밋 후 동작은 충돌하는 소프트웨어 트랜잭션을 무효화하는 것을 포함한다(블록 680). 이 때, 하드웨어 트랜잭션은 이미 커밋되었지만, 이와 충돌하는 모든 소프트웨어 트랜잭션이 중단될 것을 보장한다는 점에 유의한다. 이것은, 하드웨어 트랜잭션의 블룸 필터를 모든 운행중인 소프트웨어 트랜잭션의 블룸 필터에 대비하여 체크함으로써 달성된다. 충돌이 검출된다면, 소프트웨어 트랜잭션은 중단된다. 무효화 프로세스를 마친 후에, 하드웨어 트랜잭션은 그 잠금을 리셋한다.
도 8은, 시작 페이즈, 실행 페이즈, 커밋 페이즈, 및 커밋 후 페이즈를 포함하는 기본적인 블룸 필터-기반의 하드웨어 트랜잭션(601)의 추가 상세사항을 도시한다. 알 수 있는 바와 같이, 실행 동안에, 판독 및 기입이 대응하는 판독 및 기입 블룸 필터에 추가된다. 그러나, 다른 실시예에서는 판독 및 기입 세트 모두에 대해 단일의 블룸 필터가 이용될 수 있다는 것을 이해해야 한다. 그 다음, 커밋 잠금이 취해졌는지가 판정되고, 만일 그렇다면 이 기본적인 구현에서 트랜잭션은 중단된다. 그렇지 않다면, 트랜잭션 잠금이 취해지고 트랜잭션 기입이 커밋된다. 그 다음, 커밋 후 페이즈에서, 블룸 필터 교차가 수행되어 모든 충돌하는 소프트웨어 트랜잭션을 중단시키고 그 후 트랜잭션 잠금이 해제된다.
도 9는, 시작 페이즈, 실행 페이즈, 커밋 페이즈, 및 커밋 후 페이즈를 포함하는 최적화된 블룸 필터-기반의 하드웨어 트랜잭션(602)의 추가 상세사항을 도시한다. 이 경우에, 커밋 잠금이 취해져 있다면, 충돌이 존재하는지를 판정하기 위해 블룸 필터 교차를 이용하여 충돌이 검출될 수 있고, 충돌이 없다면, 하드웨어 쓰레드는 커밋할 수 있고, 충돌이 존재한다면 트랜잭션은 중단된다. 그 외의 동작은 도 8의 것과 유사하게 발생한다.
도 10은 실시예에 따른 추론적 소프트웨어 트랜잭션의 실행의 흐름도이다. 방법(700)은 소프트웨어 트랜잭션의 실행을 시작한다(블록 710). 그 다음, 트랜잭션 몸체가 실행된다(블록 720). 알 수 있는 바와 같이, 실행 동안에 판독 및 기입 위치들이 블룸 필터에 기록된다. 커밋시에(블록 730), 트랜잭션은 커밋 잠금을 취득하고(블록 740) (블록 760에서) (하드웨어, 소프트웨어, 펌웨어 또는 기타의 로직이나 이들의 조합으로 구현될 수 있는) 경쟁 관리자를 참조하여 커밋할지 또는 중단할지(그에 따라 충돌하는 운행중인 소프트웨어 트랜잭션이 계속 실행될 수 있도록)를 판정한다. 경쟁 관리자가 트랜잭션을 중단하기로 판정하면, 트랜잭션은 커밋 잠금을 해제하고 다이아몬드(790)에서 판정된 재시도 횟수에 따라 SpecSW 트랜잭션으로서 재시도한다. 이 임계치 아래이면, 블록(792)에서 재시도 카운터가 증가되고 트랜잭션은 추론적 소프트웨어 트랜잭션 모드에서 재실행된다(블록 710). 임계치 위이면, 블록(795)에서 트랜잭션은 취소불능 소프트웨어 트랜잭션 모드로 전환된다.
그렇지 않고, 트랜잭션이 커밋할 수 있자면, (블록 765에서) 취소불능 잠금을 취득하고, (블록 770에서) 그 메모리에 대한 변경을 커밋하며, (블록 775에서) 운행중인 충돌하는 소프트웨어 트랜잭션을 무효화하고, (블록 780에서) 잠금을 해제한다.
SpecSW 트랜잭션 실행의 추가 상세사항이 도 11에 도시되어 있다. 알 수 있는 바와 같이, 추론적 소프트웨어 트랜잭션(701)은 소프트웨어에서 모든 페이즈를 수행한다. 도 11의 실시예에서, 주 실행 동안에, 판독은 유효성확인되고 판독 블룸 필터에 추가되는 반면, 기입은 기입 블룸 필터에 추가된다. 연기된 업데이트는 임의의 업데이트된 값들을 해시 테이블 또는 기타의 임시 스토리지에 기입함으로써 수행될 수 있다는 점에 유의한다. 커밋 페이즈 동안에, 트랜잭션이 커밋하는 것이 허용된다고 가정하면, 이것은 취소불능 잠금을 획득하고 메모리를 업데이트한다. 그렇지 않다면, 이것은 잠금을 해제하고 트랜잭션을 재시작한다. 그 다음, 커밋 후 페이즈에서, 트랜잭션은 무효화를 수행하여, 임의의 충돌하는 소프트웨어 트랜잭션을, 잠금을 해제하기 이전에 무효화한다.
마지막으로, SpecSW 트랜잭션은 BFHW가 커밋중일 때에도 올바른 실행을 제공한다는 점에 유의한다. BFHW가 커밋 준비되어 있을 때 SpecSW 트랜잭션이 이미 커밋 프로세스를 시작했다면, BFHW 트랜잭션은 커밋 잠금이 취해져 있다는 것을 목격하고 충돌확인을 위해 소프트웨어 블룸 필터에 대조하여 그 블룸 필터를 체크할 것이다. 충돌이 없다면, 하드웨어 트랜잭션은 커밋할 수 있고, 그렇지 않다면 BFHW는 중단될 것이다.
그러나, SpecSW 트랜잭션이 커밋 페이즈를 시작하기 이전에 BFHW가 커밋 잠금을 체크한다면, 2가지 상황중 하나가 발생할 수 있다: BFHW 하드웨어 트랜잭션이 커밋하기 이전에 커밋 잠금이 변경된다(이것은 하드웨어 트랜잭션을 중단시켜, 임의의 잠재적 충돌을 제거한다); 또는 BFHW 하드웨어 트랜잭션이 커밋한 이후에 커밋 잠금이 변경된다. 추론적 소프트웨어 트랜잭션은 하드웨어 트랜잭션과의 충돌을 체크하지 않으므로, 새로이 커밋된 하드웨어 트랜잭션과의 충돌을 놓칠 수 있고 그 메모리에 대한 변경을 커밋하는 것을 시작할 수 있다. 이 상황을 피하기 위해, 모든 SpecSW 트랜잭션은, 커밋 잠금을 취득한 후에 모든 하드웨어 트랜잭션의 잠금을 체크하고 이들이 자유롭게 될때까지 기다린다. SpecSW 트랜잭션이 트랜잭션 잠금이 자유로울 때 여전히 유효하다면, 임의의 커밋된 하드웨어 트랜잭션과의 어떠한 충돌도 갖지 않는다.
이제 도 12를 참조하면, 취소불능 소프트웨어 트랜잭션 IrrevocSW의 실행의 흐름도가 도시되어 있다. 도 12에서 볼 수 있는 바와 같이, 방법(800)은 트랜잭션의 시작 페이즈에서 시작한다(블록 810). 그 다음, 트랜잭션은 취소불능 잠금과 커밋 잠금 양쪽 모두를 취득한다(블록 820). 그 다음, 블록(830)에서 주 트랜잭션 몸체가 수행될 수 있다. 취소불능 소프트웨어 트랜잭션의 경우, 모든 업데이트는 제 위치에서(메모리에 직접) 수행되므로 트랜잭션은, 실행을 시작하자마자 취소불능 및 커밋 잠금들 모두를 취득하여 직렬화를 보장한다는 점에 유의한다. 그 다음, 트랜잭션이 커밋된다(블록 840). 그 후, 블룸 필터 세트 교차에 기초하여 충돌하는 소프트웨어 트랜잭션이 무효화된다(블록 850). 마지막으로, 양쪽 잠금이 해제된다(블록 860).
도 13은 실시예에 따른 취소불능 소프트웨어 트랜잭션(801)의 추가 상세사항을 나타낸다. 실행의 시작시에, 양쪽 잠금이 취득되고 소프트웨어 플래그가 세트된다는 점에 유의한다. 주 몸체에서 직접적인 업데이트가 이용되더라도, 판독 및 기입이 대응하는 블룸 필터에 추가되어, 충돌하는 소프트웨어 트랜잭션의 나중의 무효화를 가능케한다. 실시예에서, 취소불능 트랜잭션은 중단될 수 있으므로, 커밋 페이즈는 본질적으로 무동작(NOP; no operation)이다. 커밋 후 페이즈는 추론적 소프트웨어 트랜잭션의 커밋 후 페이즈와 유사하다; 현재의 트랜잭션은 이미 커밋되어 있고, 그에 따라 운행중인 소프트웨어 트랜잭션을 무효화한다.
실시예에서, 경쟁 관리자는, 추론적 소프트웨어 트랜잭션들에 의해, 그들의 커밋 페이즈에 도달할 때 커밋할 수 있는지를 판정하는데 이용된다. 경쟁 관리자는, 커밋중인 트랜잭션이 커밋하는 것이 허용되는 경우 중단될 모든 운행중인 트랜잭션을 고려하고, 다양한 인자에 기초하여 중단할 트랜잭션 또는 트랜잭션들 중 어느 것이 전방 진행을 행하는 것을 허용할지에 관해 결정을 내린다. 실시예에서, 이 결정은, 특히, 우선순위, 커밋중이고 충돌하는 트랜잭션들의 판독 및 기입 세트 크기, 및 각각의 쓰레드의 트랜잭션 진행(그때까지의 커밋의 수)에 기초할 수 있다.
커밋 이후에 수행된 무효화는, 커밋 페이즈 동안에 새로운 트랜잭션이, 무효화 프로세스에 의해 놓히지 않고, 시작할 수 있다는 것을 보장한다. 어떤 트랜잭션이 너무 늦게 시작한 이유로 무효화 프로세스에 의해 놓치게 되면, 이것은 커밋중인 트랜잭션의 무효화 프로세스 이후에 시작할 수 있다. 따라서, 이것은 커밋중인 트랜잭션이 그 기입을 커밋한 이후에 시작했으므로, 새로이 시작된 트랜잭션의 모든 판독은 커밋중인 트랜잭션 이후에 직렬화되어 일관적이게 된다. 이하의 표 1은 실시예에 따른 무효화 프로세스의 의사코드 표현이다.
Figure pct00001
유효성확인은 판독을 수행하는 트랜잭션에 대한 기입 세트의 일부가 아닌 모든 판독에 대해 수행된다. 판독이 기입 세트의 일부이면, 트랜잭션에 대한 업데이트된 값들을 저장하고 있는 해시 테이블로부터 값이 반환되고, 어떠한 유효성확인도 수행될 필요가 없다.
실시예에서, 유효성확인 다음과 같이 수행될 수 있다. 먼저, 쓰레드는 그 블룸 필터 내에 새로운 판독 위치를 삽입한 다음, 그 위치를 판독한다. 순서는, 커밋중인 트랜잭션의 무효화 프로세스가 잠재적 충돌을 놓치지 않도록 보장한다. 판독 위치의 값을 판독한 후에, 또 다른 트랜잭션이 그 커밋 페이즈 도중에 있어서 메모리 위치를 업데이트할 수 있으므로 반환하기에는 아직 안전하지 않다. 현재의 판독이 방금 업데이트된 위치에 대한 것이면, 이 판독을 반환하는 것은, 현재의 트랜잭션의 다른 모든 판독이 커밋중인 트랜잭션이 메모리를 업데이트한 이후의 것이므로, 부정확한 프로그램 거동을 생성할 수 있다.
이러한 상황을 피하기 위해, 모든 이전에 미기입된 판독에 대해 유효성확인 코드가 실행될 수 있다. 이 코드는, 취소불능 잠금이 취해져 있는지 알기 위해 체크하고, 만일 그렇다면, (취소불능 잠금의 식별자에 의해 표시된) 소프트웨어 트랜잭션의 블룸 필터를 판독하여 임의의 충돌이 있는지를 판정한다. 도중에 잠금이 변한다면, 충돌은 유효성확인 코드에 의해 주목되지 못할 수 있다. 그러나, 유효성확인의 끝에서, 트랜잭션은 자신이 다른 소프트웨어 트랜잭션에 의해 무효화되었는지를 알기 위해 체크한다. 도중에 잠금이 해제되었다면 이것은 커밋중인 트랜잭션이 무효화를 끝내야 한다는 것을 의미한다. 유효성확인이 통과되고 트랜잭션이 커밋중인 트랜잭션에 의해 무효화되지 않았다면, 판독은 안전하다.
이제 표 2를 참조하면, 실시예에 따른 유효성확인 프로세스의 의사코드가 도시되어 있다.
Figure pct00002
취소불능 트랜잭션은 그 실행을 시작할 때 커밋 잠금과 취소불능 잠금 양쪽 모두를 취득한다. 추론적 트랜잭션은 먼저 커밋 잠금을 취득하고 커밋할 수 있는지에 관해 경쟁 관리자를 참조한다. 경쟁 관리자가 트랜잭션이 커밋하는 것을 허용한다면, 메모리로의 그 업데이트를 기입하기 직전에, 취소불능 잠금이 취득된다.
커밋중인 트랜잭션은 그 커밋 페이즈의 시작으로부터 취소불능 잠금을 취득할 수 있어, 커밋 잠금을 불필요하게 만든다. 그러나, 추론적 트랜잭션은 그 유효성확인 코드를 취득중인 취소불능 잠금에 기초한다. 커밋 잠금이 존재하지 않았고 취소불능 잠금이 커밋 페이즈의 시작시에 취득되었다면, 경쟁 관리자를 참조하기 이전에, 다음과 같은 상황이 발생할 수 있다. 판독을 수행하고 유효성확인 코드를 실행하여, 그 판독이 커밋중인 소프트웨어 트랜잭션과 충돌하고 있다는 것에 주목하고 있는 SpecSW 트랜잭션을 고려해보자. 따라서, 이것은 재시작을 결정한다. 커밋중인 트랜잭션은 경쟁 관리자를 참조하지만, (예를 들어, 높은 우선순위를 갖는 운행중인 트랜잭션 때문에) 커밋하는 것이 허용되지 않는다. 따라서, 커밋중인 트랜잭션도 역시 중단된다. 그러나, 다른 트랜잭션은 이미 중단되었다. 게다가, 경쟁 관리자가 그 중단 결정을 유효성확인 동안에 중단하기로 이제 막 결정된 트랜잭션에 기초하게 하는 레이스(race)가 발생하여, 2개의 트랜잭션은 진척없이 서로 중단시킬 수 있다.
이러한 상황을 피하기 위해 커밋 잠금이 이용될 수 있다. 따라서 커밋중인 트랜잭션은, 커밋하도록 허용이 주어진 이후에만 취소불능 잠금으로 업그레이드되는 커밋 잠금을 취득한다. 유효성확인 코드는, 취소불능 잠금을 보유하고 있는 또 다른 트랜잭션과의 충돌 때문에만 트랜잭션을 중단한다. 따라서, 트랜잭션은 오직 커밋하는 것이 확실한 트랜잭션과의 충돌 때문에 유효성확인에 의해 중단될 것이다.
하드웨어는 동시적 하드웨어 트랜잭션에 관한 정확성을 보장하는데 이용된다. 하드웨어 트랜잭션은 강하게 격리되어 있으므로, 메모리에 대한 변경은 트랜잭션이 커밋하는 경우에만 원자적으로(atomically) 다른 쓰레드에게 보일 수 있게 된다. 게다가, 충돌 검출이 하드웨어로 구현되므로, 충돌시에 트랜잭션들 중 하나가 중단될 것이다. 따라서, 복수의 LiteHW 트랜잭션과 복수의 BFHW 트랜잭션 사이에서 올바른 상호작용을 보장하기 위한 추가적인 소프트웨어 컴포넌트가 없다.
동시적 소프트웨어 트랜잭션들간의 충돌 검출은 무효화 방법을 이용하여 보장된다. 모든 커밋중인 트랜잭션들은 다른 운행중인 소프트웨어 트랜잭션과의 충돌을 체크하고 충돌이 있다면 그들을 중단시킨다. 커밋중인 트랜잭션은 커밋 잠금을 보유하기 때문에 어떠한 소프트웨어 트랜잭션도 무효화 프로세스 동안에 커밋할 수 없다. 취소불능 트랜잭션은 활성으로 되자마자 커밋 잠금을 취득하므로 어떠한 다른 소프트웨어 트랜잭션도 그 실행 동안에 취소불능 또는 커밋될 수 없다. 취소불능 트랜잭션이 커밋하면, 이것은 또한 운행중인 충돌하는 트랜잭션을 무효화하여, 직렬화가능한 정확성이 침해되지 않도록 보장한다.
하드웨어-소프트웨어 정확성에 관해, 한 실시예에서, LiteHW 트랜잭션은 소프트웨어 트랜잭션과 동시에 실행될 수 있지만, 소프트웨어 트랜잭션이 현재 실행중이라면 커밋할 수 없다. 이것은, LiteHW 트랜잭션은 액세스된 메모리 위치의 기록을 유지하지 않으므로, LiteHW 트랜잭션과 소프트웨어 트랜잭션 사이의 충돌 검출이 수행될 수 없기 때문이다.
대조적으로, BFHW 트랜잭션들은 그들이 액세스하는 메모리 위치를 추적하므로, 충돌 검출을 수행할 수 있다. 게다가, BFHW 트랜잭션은 소프트웨어 트랜잭션이 실행중일 때에도 커밋할 수 있다. 커밋중인 소프트웨어 트랜잭션이 BFHW 트랜잭션과의 충돌을 갖는다면, 후자는 하드웨어에 의해 자동으로 중단될 것이다. 커밋중인 BFHW 트랜잭션이 운행중인 소프트웨어 트랜잭션과의 충돌을 갖는다면, 소프트웨어 트랜잭션은 BFHW 커밋 후 페이즈(무효화 페이즈) 동안에 중단된다. 게다가, 하드웨어 트랜잭션의 끝에서 하드웨어 트랜잭션의 블룸 필터를 소프트웨어 트랜잭션의 블룸 필터와 비교하는 것으로 충분하다. 이런 방식으로, 하드웨어 트랜잭션의 모든 판독 및 기입에 대한 충돌 검출을 피할 수 있다.
실시예들은 또한 메모리의 일관성(consistency)을 가능케한다. 동시적 하드웨어 트랜잭션의 경우, 하드웨어 트랜잭션이 커밋할 때까지 업데이트가 보이게 되지 않으므로 하드웨어에 의해 자동으로 불투명성(opacity)이 유지되어, 일관성을 보장한다.
하드웨어 트랜잭션은 직접 업데이트를 이용하여 취소불능 트랜잭션이 실행중인 동안 또는 추론적 트랜잭션이 라이트백(writeback)을 수행중인 동안 메모리 위치를 판독함으로써 비일관적 상태로 들어갈 수 있다. 그러나, 하드웨어 트랜잭션에서 발생하는 폴트(fault)와 루프(loop)는 다른 쓰레드에 주목할만한 영향을 미치지 않고 트랜잭션이 중단 및 재시작되게 할 것이다.
전술된 바와 같이, 각각의 새로운 판독에 대한 유효성확인 코드를 이용하여 소프트웨어 트랜잭션들 간의 불투명성이 보장되어, 소프트웨어 트랜잭션은 또 다른 소프트웨어 트랜잭션에 의해 야기된 업데이트로 인한 비일관적 상태에 들어가지 못하게 된다.
소프트웨어 트랜잭션은 이제 막 커밋된 하드웨어 트랜잭션에 의해 수정된 메모리 위치를 판독함으로써 비일관적 상태에 들어갈 수 있다. 실시예에서, 소프트웨어 트랜잭션은 커밋하는 것이 허용되지 않고 하드웨어 트랜잭션의 커밋 후 페이즈에 의해 무효화된다. 그러나, 소프트웨어 트랜잭션은, 비일관적 데이터를 판독한 결과로서, 자신이 무효화되었다는 것을 주목하기 이전에 잘못된 상태(illegal state)에 들어갈 수 있다.
이러한 상황을 방지하기 위해, 실시예는 SpecSW 트랜잭션에 소프트웨어 샌드박싱(sandboxing)을 제공할 수 있다. 대안으로서, 하드웨어 커밋 후 카운터(hardware post-commit counter)를 이용하여 소프트웨어 트랜잭션에 대한 불투명성이 제공될 수 있다. 이 경우에, 카운터는, BFHW 모드에서 이제 막 커밋하고 현재 커밋 후 페이즈에 있는 하드웨어 트랜잭션의 수를 카운팅한다. BFHW 트랜잭션은 하드웨어 트랜잭션을 커밋하기 이전에 스토어 동작(store operation)을 이용하여 이 카운터를 증가시킨다. 원자성(atomicity)이 침범되면, 하드웨어 트랜잭션은 중단되어, 변경의 흔적을 남겨놓지 않는다. 커밋 후 페이즈가 완료된 후에, BFHW 트랜잭션은, 예를 들어, 인출 및 교체(fetch and substitute) 명령어를 이용하여, 커밋 후 카운터를 감소시킨다. 이 카운터를 이용하여, BFHW 트랜잭션의 존재시에 SpecSW 트랜잭션에 대한 불투명성이 실현될 수 있다. 결국, SpecSW 트랜잭션은 이 카운터를 판독하고 새로운 값을 그들의 판독 세트에 추가하기 이전에 제로에 도달할 때까지 기다릴 수 있다. 이것은, SpecSW 트랜잭션에 의해 판독된 모든 새로운 값들이 하드웨어 트랜잭션의 커밋 후 페이즈의 외부에서 판독되어 일관적이도록 보장한다(그렇지 않다면, SpecSW 트랜잭션은 BFHW 트랜잭션의 커밋 후 페이즈 동안에 INVALID로서 마킹될 것이다.). 게다가, BFHW 트랜잭션은 이 커밋 후 카운터를 이용하여 SpecSW의 일관성을 보장하고, (한 실시예에서는, 트랜잭션당 잠금을 미사용으로 하는) SpecSW 트랜잭션과의 커밋 페이즈 동안의 상호 배타성을 보장할 수 있다.
커밋 잠금은 소프트웨어 트랜잭션의 커밋 페이즈와 커밋 후 페이즈를 직렬화한다는 점에 유의한다. 그러나, 하드웨어 트랜잭션들은 동시 커밋중인 소프트웨어 및 하드웨어 트랜잭션에 관해 직렬화되지 않는다; 따라서, 이들은 동시에 커밋할 수 있고 무효화를 수행할 수 있어서, 시스템을 더욱 확장성있고 실용적이게 한다.
이제 도 14를 참조하면, 또 다른 실시예에 따른 장치의 블록도가 도시되어 있다. 도 14에 도시된 바와 같이, 장치(100')는, 도 1에 관하여 앞서 논의된 장치(100)와 유사한 회로, 컴포넌트 및 로직을 포함한다. 사실상, 많은 시스템 구현에서, 하이브리드 트랜잭션 메모리 시스템은, (예를 들어, 도 2에서 앞서 논의된) 단일 전역 잠금을 구현하는 실시예에 따르든, 또는 (예를 들어, 도 4에서 논의된) 복수의 잠금 및 복수의 소프트웨어 모드 트랜잭션 모드를 구현하는 시스템이든, 동일한 하드웨어에서 실행될 수 있다.
논의의 용이화를 위해, 도 14의 실시예에서 도 1의 것과 동일한 컴포넌트, 회로, 및 로직은 논의되지 않을 것이다. 대신에, 논의는, 복수의 하드웨어 트랜잭션 모드와 복수의 소프트웨어 트랜잭션 모드를 갖는 하이브리드 트랜잭션 메모리 트랜잭션의 실행을 가능케 하는 장치(100')에서의 차이점에 집중할 것이다. 알 수 있는 바와 같이, 단일 전역 잠금 대신에, 커밋 잠금(112)과 취소불능 잠금(113)이 제공되어 상이한 소프트웨어 트랜잭션들이 이들 잠금들을 트랜잭션 모드에 따라 트랜잭션 내의 상이한 시간에서 취득할 수 있게 한다(물론, 다른 실시예에서는 추가적 또는 상이한 잠금이 존재할 수 있다는 것을 이해해야 한다). 또한, 복수의 재시도 카운터(118)가 제공될 있고, 여기서, 각각의 재시도 카운터는 주어진 트랜잭션 모드의 재시도 횟수와 연관된다. 유사하게, 복수의 재시도 임계치(120)도 역시 제공된다.
여전히 도 14를 참조하면, 트랜잭션 관리 모듈(106)은, 전술된 바와 같이 커밋 후 무효화를 수행하도록 구성된 무효화 로직(125)을 더 포함한다. 전반적으로, 장치(100') 및 시스템(140')의 나머지 부분들은 도 1의 것들과 동일하다. 도 4 내지 도 13과 연계하여 논의된 바와 같은 하이브리드 트랜잭션 메모리 시스템에서 수행되는 추가적인 기능과 동작을 감안하면, 다양한 로직 컴포넌트들의 구현에 있어서 약간의 차이점이 존재할 수 있다는 점에 유의한다. 또한, 도 14에서는 이와 같은 고수준에서 도시되어 있지만, 많은 변형과 대안들이 가능하다는 것을 이해해야 한다.
이하의 예들은 추가 실시예에 관한 것이다.
예 1에서, 장치는, 프로세서; 트랜잭션 메모리 시스템에서, 제1 소프트웨어 트랜잭션 모드의 적어도 하나의 제1 소프트웨어 트랜잭션과 제2 소프트웨어 트랜잭션 모드의 제2 소프트웨어 트랜잭션, 및 제1 하드웨어 트랜잭션 모드의 적어도 하나의 하드웨어 트랜잭션과 제2 하드웨어 트랜잭션 모드의 적어도 하나의 제2 하드웨어 트랜잭션의 동시 실행을 가능케 하는 실행 로직; 적어도 하나의 소프트웨어 트랜잭션이 상기 제1 소프트웨어 트랜잭션 모드 또는 상기 제2 소프트웨어 트랜잭션 모드에서 실행되고 있다는 것을 나타내는 플래그를 활성화하는 추적 로직; 상기 제2 하드웨어 트랜잭션 모드의 제1 하드웨어 트랜잭션의 결말에서, 상기 제2 하드웨어 트랜잭션 모드의 상기 제1 하드웨어 트랜잭션의 필터 세트가 실행되고 있는 상기 적어도 하나의 소프트웨어 트랜잭션의 필터 세트와 충돌하는지를 판정하는 교차 로직; 및 충돌이 없다면 상기 제1 하드웨어 트랜잭션을 커밋하고, 충돌이 있다면 상기 제1 하드웨어 트랜잭션을 중단하는 완결 로직을 포함한다. 일부 구현에서, 상기 실행 로직, 상기 추적 로직, 상기 교차 로직, 및 완결 로직 중 하나 이상은 프로세서에서 구현될 수 있다는 점에 유의한다. 또한, 상기 프로세서는 다양한 수단을 이용하여 구현될 수 있다는 점에도 유의한다. 예에서, 상기 프로세서는 사용자 장비 터치-가능형 디바이스에 포함된 SoC(system on chip)를 포함한다. 또 다른 예에서, 시스템은 디스플레이와 메모리를 포함하고, 상기 예들 중 하나 이상의 프로세서를 포함한다.
예 2에서, 상기 제2 하드웨어 트랜잭션 모드에서, 상기 제1 하드웨어 트랜잭션은, 선택사항으로서, 상기 제1 하드웨어 트랜잭션의 각각의 메모리 액세스에 대해 상기 제1 하드웨어 트랜잭션의 필터 세트를 업데이트한다.
예 3에서, 상기 제1 소프트웨어 트랜잭션 모드에서, 제1 소프트웨어 트랜잭션은, 선택사항으로서, 상기 제1 소프트웨어 트랜잭션의 결말에서, 제1 잠금과 제2 잠금을 획득하고, 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리를 해시 테이블에 저장된 기입 데이터로 업데이트한다.
예 4에서, 상기 제1 소프트웨어 트랜잭션 모드에서, 상기 제1 소프트웨어 트랜잭션의 커밋 이후에, 상기 제1 소프트웨어 트랜잭션은, 선택사항으로서, 상기 제1 소프트웨어 트랜잭션 모드의 또 다른 소프트웨어 트랜잭션을 무효화한다.
예 5에서, 상기 제2 하드웨어 트랜잭션 모드에서, 제2 하드웨어 트랜잭션은, 선택사항으로서, 상기 제2 하드웨어 트랜잭션의 커밋 이전에 커밋 잠금과 트랜잭션 잠금을 획득한다.
예 6에서, 예 4의 상기 제1 소프트웨어 트랜잭션은, 선택사항으로서, 상기 제1 소프트웨어 트랜잭션의 필터 세트와 또 다른 소프트웨어 트랜잭션의 필터 세트 사이에서 교차가 발생하면 상기 또 다른 소프트웨어 트랜잭션을 무효화한다.
예 7에서, 예 3의 상기 제1 소프트웨어 트랜잭션 모드에서, 상기 제1 소프트웨어 트랜잭션은, 선택사항으로서, 실행 동안에 판독 데이터를 유효성확인한다.
예 8에서, 상기 예들 중 어느 하나의 제2 소프트웨어 트랜잭션 모드에서: 제2 소프트웨어 트랜잭션의 시작시에, 상기 제2 소프트웨어 트랜잭션은, 제1 잠금과 제2 잠금을 획득하고; 상기 제2 소프트웨어 트랜잭션 모드에서의 상기 제2 소프트웨어 트랜잭션의 실행 동안에, 상기 제2 소프트웨어 트랜잭션은 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리를 직접 업데이트한다.
예 9에서, 방법은 : 트랜잭션 메모리 시스템 내의 프로세서에 의해, 제1 쓰레드의 소프트웨어 트랜잭션과 제2 쓰레드의 하드웨어 트랜잭션을 동시에 실행하는 단계; 상기 소프트웨어 트랜잭션의 실행을 나타내는 전역 잠금을 활성화하는 단계; 및 상기 하드웨어 트랜잭션의 결말에서, 상기 전역 잠금의 상태를 판정하고 상기 전역 잠금이 활성이면, 상기 제1 쓰레드의 필터 세트가 상기 제2 쓰레드의 필터 세트를 교차하는지를 판정하고, 그렇지 않다면, 상기 하드웨어 트랜잭션을 커밋하는 단계를 포함한다.
예 10에서, 예 9의 방법은, 선택사항으로서, 상기 소프트웨어 트랜잭션을 커밋하고 상기 소프트웨어 트랜잭션의 결말에서 상기 전역 잠금을 비활성화하는 단계를 더 포함한다.
예 11에서, 예 9 또는 예 10의 방법은, 선택사항으로서, 상기 하드웨어 트랜잭션 결말에서 상기 전역 잠금이 비활성일 때 상기 필터 세트들이 교차하는지를 판정하지 않고 상기 하드웨어 트랜잭션을 커밋하는 단계를 더 포함한다.
예 12에서, 예 9-11 중 하나의 방법은, 선택사항으로서, 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리에 대한 액세스의 주소를 상기 하드웨어 트랜잭션에 의해 상기 제1 쓰레드의 필터 세트 내에 삽입하는 단계; 및상기 액세스의 주소를 해싱하는 것에 기초하여 상기 제1 쓰레드의 필터 세트의 하나 이상의 필드를 하나 이상의 해시 값으로 업데이트하는 단계를 더 포함한다.
예 13에서, 예 9-12 중 하나의 방법은, 선택사항으로서, 상기 제1 쓰레드의 필터 세트를 상기 제1 쓰레드의 기입 세트에 저장하는 단계를 더 포함하고, 상기 필터 세트는 블룸 필터를 포함한다.
예 14에서, 예 13의 방법은, 선택사항으로서, 상기 전역 잠금을 상기 제1 쓰레드의 필터 세트에 추가하는 단계 및 상기 필터 세트들이 교차하는지의 판정에 기초하여 상기 전역 잠금의 상태를 판정하는 단계를 더 포함한다.
예 15에서, 예 9-14 중 어느 하나의 방법은, 선택사항으로서, 상기 소프트웨어 트랜잭션에서 해시 테이블을 제1 크기로부터 제2 크기로 동시에 재해싱하는 단계; 및 상기 하드웨어 트랜잭션에서 상기 해시 테이블을 액세스하고, 상기 동시 재해싱 동안에 상기 하드웨어 트랜잭션이 커밋할 수 있게 하는 단계를 더 포함한다.
또 다른 예에서, 명령어들을 포함하는 컴퓨터 판독가능한 매체는 상기 예들 중 임의의 것의 방법들을 수행한다. 역시 또 다른 예에서, 장치는 상기 예들 중 임의의 것의 방법들을 수행하기 위한 수단을 포함한다.
예 16에서, 적어도 하나의 컴퓨터-판독가능한 매체는 명령어들을 포함하고, 상기 명령어들은 실행될 때, 시스템이, 트랜잭션 메모리 시스템의 제2 하드웨어 트랜잭션 모드에서 제2 하드웨어 트랜잭션을 수행하고; 상기 제2 하드웨어 트랜잭션의 결말에서 상기 제2 하드웨어 트랜잭션을 커밋하며; 상기 제2 하드웨어 트랜잭션의 커밋 이후에, 상기 제2 하드웨어 트랜잭션과 동시에 실행되는 상기 적어도 하나의 소프트웨어 트랜잭션을, 상기 제2 하드웨어 트랜잭션과 적어도 하나의 소프트웨어 트랜잭션 사이에 충돌이 존재한다면 무효화할 수 있게 한다.
예 17에서, 예 16의 적어도 하나의 컴퓨터-판독가능한 매체는 선택사항으로서 명령어들을 더 포함하고, 상기 명령어들은 실행될 때, 상기 시스템이, 상기 제2 하드웨어 트랜잭션의 커밋에 앞서, 커밋 잠금이 취득되었는지를 판정하고, 취득되었다면, 상기 제2 하드웨어 트랜잭션과 상기 커밋 잠금을 취득한 제1 소프트웨어 트랜잭션 사이에 충돌이 존재하는지를 판정할 수 있게 한다.
예 18에서, 예 17의 적어도 하나의 컴퓨터-판독가능한 매체는 선택사항으로서 명령어들을 더 포함하고, 상기 명령어들은 실행될 때, 상기 시스템이, 상기 제2 하드웨어 트랜잭션과 상기 제1 소프트웨어 트랜잭션 사이에 충돌이 존재한다면, 상기 제2 하드웨어 트랜잭션을 중단할 수 있게 하고, 상기 제2 하드웨어 트랜잭션의 필터 세트가 상기 제1 소프트웨어 트랜잭션의 필터 세트와 교차한다면 충돌이 존재하는 것으로 판정된다.
예 19에서, 예 17의 적어도 하나의 컴퓨터-판독가능한 매체는 선택사항으로서 명령어들을 더 포함하고, 상기 명령어들은 실행될 때, 상기 시스템이, 상기 제1 소프트웨어 트랜잭션이 상기 커밋 잠금을 취득한 후에, 하나 이상의 하드웨어 트랜잭션에 의해 하나 이상의 트랜잭션 잠금이 취득되었는지를 판정하고, 취득되었다면, 상기 하나 이상의 트랜잭션 잠금이 해제될 때까지 상기 제1 소프트웨어 트랜잭션의 커밋을 지연시킬 수 있게 한다.
예 20에서, 예 17의 적어도 하나의 컴퓨터-판독가능한 매체는 선택사항으로서 명령어들을 더 포함하고, 상기 명령어들은 실행될 때, 상기 시스템이, 상기 트랜잭션 메모리 시스템의 제1 하드웨어 트랜잭션 모드에서 제1 하드웨어 트랜잭션을 수행하고; 상기 제1 하드웨어 트랜잭션의 결말에서, 적어도 하나의 소프트웨어 트랜잭션이 동시에 실행중인지를 판정하며; 동시에 실행중이라면, 상기 제1 하드웨어 트랜잭션을 중단하고, 동시에 실행중이 아니라면, 상기 제1 하드웨어 트랜잭션을 커밋할 수 있게 한다.
예 21에서, 예 17의 적어도 하나의 컴퓨터-판독가능한 매체는 선택사항으로서 명령어들을 더 포함하고, 상기 명령어들은 실행될 때, 상기 시스템이, 상기 제1 소프트웨어 트랜잭션의 실행 동안에 상기 제1 소프트웨어 트랜잭션에 의해 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리로의 판독 동작을 유효성확인하고; 상기 판독 동작이 유효성확인되면, 상기 판독 동작의 위치를 상기 제1 소프트웨어 트랜잭션의 필터 세트에 추가할 수 있게 한다.
예 22에서, 예 17의 적어도 하나의 컴퓨터-판독가능한 매체는 선택사항으로서 명령어들을 더 포함하고, 상기 명령어들은 실행될 때, 상기 시스템이, 제2 소프트웨어 트랜잭션의 실행의 시작시에 제1 잠금과 커밋 잠금을 취득하는 것을 포함하여, 제2 소프트웨어 트랜잭션 모드에서 상기 제2 소프트웨어 트랜잭션을 수행하고, 상기 제2 소프트웨어 트랜잭션 실행 동안에 하나 이상의 메모리 위치를 직접 업데이트하며; 상기 제2 소프트웨어 트랜잭션의 결말에서, 상기 제2 소프트웨어 트랜잭션을 커밋하고, 상기 제1 소프트웨어 트랜잭션 모드의 하나 이상의 동시에 실행중인 소프트웨어 트랜잭션을 무효화한 후, 상기 제1 잠금과 상기 커밋 잠금을 해제할 수 있게 한다.
예 23에서, 시스템은 적어도 하나의 하드웨어 트랜잭션과 적어도 하나의 소프트웨어 트랜잭션을 동시에 수행하는 하이브리드 트랜잭션 메모리 로직을 포함하는 프로세서를 포함한다. 상기 하이브리드 트랜잭션 메모리 로직은, 제1 트랜잭션이 커밋되거나 상기 제1 트랜잭션이 제1 하드웨어 트랜잭션 모드에서 제1 임계 횟수만큼 재시도될 때까지 상기 제1 트랜잭션을 상기 제1 하드웨어 트랜잭션 모드에서 실행한 후, 상기 제1 트랜잭션이 커밋되지 않으면, 상기 제1 트랜잭션을 제1 소프트웨어 트랜잭션 모드에서 실행한다. 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 하드웨어 모드에서 실행된 상기 제1 트랜잭션과 연관된 필터 세트가 상기 제1 소프트웨어 트랜잭션 모드에서 실행된 제2 트랜잭션과 연관된 필터 세트와 충돌하는지를 판정하는 교차 로직을 포함하고, 상기 충돌에 응답하여, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 하드웨어 트랜잭션 모드에서 상기 제1 트랜잭션이 커밋되는 것을 방지한다. 상기 시스템은 상기 프로세서에 결합된 트랜잭션 메모리를 더 포함한다.
예 24에서, 상기 하이브리드 트랜잭션 메모리 로직은, 선택사항으로서, 상기 제1 트랜잭션이 커밋되거나 상기 제1 트랜잭션이 제2 임계 횟수만큼 상기 제1 소프트웨어 트랜잭션 모드에서 재시도될 때까지 상기 제1 트랜잭션을 상기 제1 소프트웨어 트랜잭션 모드에서 실행하고, 상기 제2 임계 횟수 이후에, 상기 제1 트랜잭션을, 상기 제1 트랜잭션이 상기 트랜잭션 메모리를 직접 업데이트하는 제2 소프트웨어 트랜잭션 모드에 실행할 수 있다.
예 25에서, 상기 하이브리드 트랜잭션 메모리 로직은, 선택사항으로서, 상기 제1 트랜잭션을 상기 제1 하드웨어 트랜잭션 모드에서의 실행에 앞서 제2 하드웨어 트랜잭션 모드에서 실행할 수 있고, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 하드웨어 트랜잭션 모드에서의 상기 제1 트랜잭션의 실행에 앞서, 제3 임계 횟수 동안 상기 제1 트랜잭션을 상기 제2 하드웨어 트랜잭션 모드에서 실행한다.
예 26에서, 상기 하이브리드 트랜잭션 메모리 로직은, 선택사항으로서, 상기 제1 트랜잭션이 상기 제1 소프트웨어 트랜잭션 모드에서의 실행 동안에 판독 데이터를 유효성확인하고, 상기 제1 소프트웨어 트랜잭션 모드에서 실행된 상기 제1 트랜잭션과 연관된 필터 세트를 상기 판독 데이터와 연관된 주소에 기초하여 업데이트하며, 해시 테이블을 기입 데이터로 업데이트하게 할 수 있다.
예 27에서, 예 26의 하이브리드 트랜잭션 메모리 로직은, 선택사항으로서, 제2 소프트웨어 트랜잭션 모드의 제2 트랜잭션으로 하여금, 상기 제2 트랜잭션의 시작시에 제1 잠금과 제2 잠금을 획득하게 하고, 그 후 상기 제2 트랜잭션의 실행 동안에 상기 트랜잭션 메모리를 직접 업데이트하게 하며; 상기 제1 소프트웨어 트랜잭션 모드의 상기 제1 트랜잭션으로 하여금, 상기 제1 트랜잭션의 커밋시에 상기 제1 잠금과 상기 제2 잠금을 획득하게 하고, 그 후 상기 트랜잭션 메모리를 상기 해시 테이블로부터의 기입 데이터로 업데이트하게 하며, 상기 제1 소프트웨어 트랜잭션 모드에서 동시에 실행중인 적어도 하나의 다른 소프트웨어 트랜잭션을 무효화하게 할 수 있다.
예 28에서, 트랜잭션 메모리 트랜잭션을 수행하기 위한 시스템은, 트랜잭션 메모리 시스템의 제2 하드웨어 트랜잭션 모드에서 제2 하드웨어 트랜잭션을 수행하기 위한 수단; 상기 제2 하드웨어 트랜잭션의 결말에서 상기 제2 하드웨어 트랜잭션을 커밋하기 위한 수단; 상기 제2 하드웨어 트랜잭션의 커밋 이후에, 상기 제2 하드웨어 트랜잭션과 동시에 실행되는 상기 적어도 하나의 소프트웨어 트랜잭션을, 상기 제2 하드웨어 트랜잭션과 적어도 하나의 소프트웨어 트랜잭션 사이에 충돌이 존재한다면 무효화하기 위한 수단을 포함한다.
예 29에서, 예 28의 시스템은, 선택사항으로서, 상기 제2 하드웨어 트랜잭션의 커밋에 앞서, 커밋 잠금이 취득되었는지를 판정하고, 취득되었다면, 상기 제2 하드웨어 트랜잭션과 상기 커밋 잠금을 취득한 제1 소프트웨어 트랜잭션 사이에 충돌이 존재하는지를 판정하기 위한 수단을 더 포함한다.
예 30에서, 예 28의 시스템은, 선택사항으로서, 상기 제2 하드웨어 트랜잭션과 상기 제1 소프트웨어 트랜잭션 사이에 충돌이 존재한다면, 상기 제2 하드웨어 트랜잭션을 중단하기 위한 수단을 더 포함하고, 상기 제2 하드웨어 트랜잭션의 필터 세트가 상기 제1 소프트웨어 트랜잭션의 필터 세트와 교차한다면 충돌이 존재하는 것으로 판정된다.
예 31에서, 예 28의 시스템은, 선택사항으로서, 상기 제1 소프트웨어 트랜잭션이 상기 커밋 잠금을 취득한 후에, 하나 이상의 하드웨어 트랜잭션에 의해 하나 이상의 트랜잭션 잠금이 취득되었는지를 판정하고, 취득되었다면, 상기 하나 이상의 트랜잭션 잠금이 해제될 때까지 상기 제1 소프트웨어 트랜잭션의 커밋을 지연시키기 위한 수단을 더 포함한다.
예 32에서, 예 28의 시스템은, 선택사항으로서, 상기 트랜잭션 메모리 시스템의 제1 하드웨어 트랜잭션 모드에서 제1 하드웨어 트랜잭션을 수행하기 위한 수단; 상기 제1 하드웨어 트랜잭션의 결말에서, 적어도 하나의 소프트웨어 트랜잭션이 동시에 실행중인지를 판정하기 위한 수단; 동시에 실행중이라면, 상기 제1 하드웨어 트랜잭션을 중단하고, 동시에 실행중이 아니라면, 상기 제1 하드웨어 트랜잭션을 커밋하기 위한 수단을 더 포함한다.
예 33에서, 예 28의 시스템은, 선택사항으로서, 상기 제1 소프트웨어 트랜잭션의 실행 동안에 상기 제1 소프트웨어 트랜잭션에 의해 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리로의 판독 동작을 유효성확인하기 위한 수단; 및 상기 판독 동작이 유효성확인되면, 상기 판독 동작의 위치를 상기 제1 소프트웨어 트랜잭션의 필터 세트에 추가하기 위한 수단을 더 포함한다.
예 34에서, 예 28의 시스템은, 선택사항으로서, 제2 소프트웨어 트랜잭션의 실행의 시작시에 제1 잠금과 커밋 잠금을 취득하는 것을 포함한, 제2 소프트웨어 트랜잭션 모드에서 상기 제2 소프트웨어 트랜잭션을 수행하고, 상기 제2 소프트웨어 트랜잭션 실행 동안에 하나 이상의 메모리 위치를 직접 업데이트하기 위한 수단; 및 상기 제2 소프트웨어 트랜잭션의 결말에서, 상기 제2 소프트웨어 트랜잭션을 커밋하고, 상기 제1 소프트웨어 트랜잭션 모드의 하나 이상의 동시에 실행중인 소프트웨어 트랜잭션을 무효화한 후, 상기 제1 잠금과 상기 커밋 잠금을 해제하기 위한 수단을 더 포함한다.
상기 예들의 다양한 조합들이 가능하다는 것을 이해해야 한다.
실시예들은 많은 상이한 유형의 시스템들에서 이용될 수 있다. 예를 들어, 한 실시예에서, 통신 디바이스는 여기서 설명된 다양한 방법 및 기술을 수행하도록 준비될 수 있다. 물론, 본 발명의 범위는 통신 디바이스로 제한되지 않으며, 대신에 다른 실시예들은 명령어를 처리하기 위한 다른 유형의 장치, 또는 컴퓨팅 디바이스에서 실행되는 것에 응답하여 디바이스가 본 명세서에서 설명된 하나 이상의 방법 및 기술을 실행하게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능한 매체에 관련될 수 있다.
실시예들은 코드로 구현될 수 있고 명령어를 수행하도록 시스템을 프로그램하는데 이용될 수 있는 명령어들을 저장하고 있는 비일시적 저장 매체 상에 저장될 수 있다. 저장 매체는, 플로피 디스크, 광 디스크, 고체 상태 드라이브(SSD), 콤팩트 디스크 판독 전용 메모리(CD-ROM), 재기록가능한 콤팩트 디스크(CD-RW), 및 광자기 디스크를 포함한 임의 유형의 디스크, 판독-전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), EPROM(erasable programmable read-only memory), 플래시 메모리, EEPROM(electrically erasable programmable read-only memory) 등의 반도체 디바이스, 자기 또는 광 카드, 또는 전자적 명령어를 저장하기에 적합한 기타 임의의 타입의 매체를 포함할 수 있지만, 이것으로 제한되지 않는다.
본 발명이 제한된 개수의 실시예에 관하여 설명되었지만, 본 기술분야의 통상의 기술자라면 이로부터의 수 많은 수정과 변형을 이해할 것이다. 첨부된 청구항들은 본 발명의 진정한 사상과 범위 내에 드는 이러한 모든 수정 및 변형을 포괄하고자 한다.

Claims (24)

  1. 장치로서,
    프로세서;
    트랜잭션 메모리 시스템(transactional memory system)에서, 제1 소프트웨어 트랜잭션 모드(software transaction mode)의 적어도 하나의 제1 소프트웨어 트랜잭션과 제2 소프트웨어 트랜잭션 모드의 제2 소프트웨어 트랜잭션, 및 제1 하드웨어 트랜잭션 모드(hardware transaction mode)의 적어도 하나의 하드웨어 트랜잭션과 제2 하드웨어 트랜잭션 모드의 적어도 하나의 제2 하드웨어 트랜잭션의 동시 실행을 가능케 하는 실행 로직;
    적어도 하나의 소프트웨어 트랜잭션이 상기 제1 소프트웨어 트랜잭션 모드 또는 상기 제2 소프트웨어 트랜잭션 모드에서 실행되고 있다는 것을 나타내는 플래그(flag)를 활성화하는 추적 로직;
    상기 제2 하드웨어 트랜잭션 모드의 제1 하드웨어 트랜잭션의 결말(conclusion)에서, 상기 제2 하드웨어 트랜잭션 모드의 상기 제1 하드웨어 트랜잭션의 필터 세트가 실행되고 있는 상기 적어도 하나의 소프트웨어 트랜잭션의 필터 세트와 충돌하는지를 판정하는 교차 로직(intersection logic); 및
    충돌이 없다면 상기 제1 하드웨어 트랜잭션을 커밋(commit)하고, 충돌이 있다면 상기 제1 하드웨어 트랜잭션을 중단하는 완결 로직(finalization logic)
    을 포함하는 장치.
  2. 제1항에 있어서, 상기 제2 하드웨어 트랜잭션 모드에서, 상기 제1 하드웨어 트랜잭션은 상기 제1 하드웨어 트랜잭션의 각각의 메모리 액세스에 대해 상기 제1 하드웨어 트랜잭션의 필터 세트를 업데이트하는, 장치.
  3. 제1항에 있어서, 상기 제1 소프트웨어 트랜잭션 모드에서, 제1 소프트웨어 트랜잭션은, 상기 제1 소프트웨어 트랜잭션의 결말에서, 제1 잠금과 제2 잠금을 획득하고, 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리를 해시 테이블(hash table)에 저장된 기입 데이터로 업데이트하는, 장치.
  4. 제3항에 있어서, 상기 제1 소프트웨어 트랜잭션 모드에서, 상기 제1 소프트웨어 트랜잭션의 커밋 이후에, 상기 제1 소프트웨어 트랜잭션은 상기 제1 소프트웨어 트랜잭션 모드의 또 다른 소프트웨어 트랜잭션을 무효화하는, 장치.
  5. 제4항에 있어서, 상기 제2 하드웨어 트랜잭션 모드에서, 제2 하드웨어 트랜잭션은 상기 제2 하드웨어 트랜잭션의 커밋 이전에 커밋 잠금(commit lock)과 트랜잭션 잠금(transaction lock)을 획득하는, 장치.
  6. 제4항에 있어서, 상기 제1 소프트웨어 트랜잭션은, 상기 제1 소프트웨어 트랜잭션의 필터 세트와 상기 또 다른 소프트웨어 트랜잭션의 필터 세트 사이에서 교차(intersection)가 발생하면 상기 또 다른 소프트웨어 트랜잭션을 무효화하는, 장치.
  7. 방법으로서,
    트랜잭션 메모리 시스템 내의 프로세서에 의해, 제1 쓰레드(thread)의 소프트웨어 트랜잭션과 제2 쓰레드의 하드웨어 트랜잭션을 동시에 실행하는 단계;
    상기 소프트웨어 트랜잭션의 실행을 나타내는 전역 잠금(global lock)을 활성화하는 단계; 및
    상기 하드웨어 트랜잭션의 결말에서, 상기 전역 잠금의 상태를 판정하고 상기 전역 잠금이 활성이면, 상기 제1 쓰레드의 필터 세트가 상기 제2 쓰레드의 필터 세트를 교차하는지를 판정하고, 그렇지 않다면, 상기 하드웨어 트랜잭션을 커밋하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서, 상기 소프트웨어 트랜잭션을 커밋하고 상기 소프트웨어 트랜잭션의 결말에서 상기 전역 잠금을 비활성화하는 단계를 더 포함하는 방법.
  9. 제7항에 있어서, 상기 하드웨어 트랜잭션 결말에서 상기 전역 잠금이 비활성일 때 상기 필터 세트들이 교차하는지를 판정하지 않고 상기 하드웨어 트랜잭션을 커밋하는 단계를 더 포함하는 방법.
  10. 제7항에 있어서,
    상기 트랜잭션 메모리 시스템의 트랜잭션 메모리에 대한 액세스의 주소를 상기 하드웨어 트랜잭션에 의해 상기 제1 쓰레드의 필터 세트 내에 삽입하는 단계; 및
    상기 액세스의 주소를 해싱하는 것에 기초하여 상기 제1 쓰레드의 필터 세트의 하나 이상의 필드를 하나 이상의 해시 값으로 업데이트하는 단계
    를 더 포함하는 방법.
  11. 제7항에 있어서,
    상기 소프트웨어 트랜잭션에서 해시 테이블을 제1 크기로부터 제2 크기로 동시에 재해싱하는 단계; 및
    상기 하드웨어 트랜잭션에서 상기 해시 테이블을 액세스하고, 상기 동시 재해싱 동안에 상기 하드웨어 트랜잭션이 커밋할 수 있게 하는 단계
    를 더 포함하는 방법.
  12. 방법으로서,
    트랜잭션 메모리 시스템의 제2 하드웨어 트랜잭션 모드에서 제2 하드웨어 트랜잭션을 수행하는 단계;
    상기 제2 하드웨어 트랜잭션의 결말에서 상기 제2 하드웨어 트랜잭션을 커밋하는 단계; 및
    상기 제2 하드웨어 트랜잭션의 커밋 이후에, 상기 제2 하드웨어 트랜잭션과 동시에 실행되는 적어도 하나의 소프트웨어 트랜잭션을, 상기 제2 하드웨어 트랜잭션과 상기 적어도 하나의 소프트웨어 트랜잭션 사이에 충돌이 존재한다면 무효화하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서, 상기 제2 하드웨어 트랜잭션의 커밋에 앞서, 커밋 잠금이 취득되었는지를 판정하고, 취득되었다면, 상기 제2 하드웨어 트랜잭션과 상기 커밋 잠금을 취득한 제1 소프트웨어 트랜잭션 사이에 충돌이 존재하는지를 판정하는 단계를 더 포함하는 방법.
  14. 제12항에 있어서, 상기 제2 하드웨어 트랜잭션과 상기 제1 소프트웨어 트랜잭션 사이에 충돌이 존재한다면, 상기 제2 하드웨어 트랜잭션을 중단하는 단계를 더 포함하고, 상기 제2 하드웨어 트랜잭션의 필터 세트가 상기 제1 소프트웨어 트랜잭션의 필터 세트와 교차한다면 충돌이 존재하는 것으로 판정되는, 방법.
  15. 제12항에 있어서, 상기 제1 소프트웨어 트랜잭션이 상기 커밋 잠금을 취득한 후에, 하나 이상의 하드웨어 트랜잭션에 의해 하나 이상의 트랜잭션 잠금이 취득되었는지를 판정하고, 취득되었다면, 상기 하나 이상의 트랜잭션 잠금이 해제될 때까지 상기 제1 소프트웨어 트랜잭션의 커밋을 지연시키는 단계를 더 포함하는 방법.
  16. 제12항에 있어서,
    상기 트랜잭션 메모리 시스템의 제1 하드웨어 트랜잭션 모드에서 제1 하드웨어 트랜잭션을 수행하는 단계;
    상기 제1 하드웨어 트랜잭션의 결말에서, 적어도 하나의 소프트웨어 트랜잭션이 동시에 실행중인지를 판정하는 단계; 및
    동시에 실행중이라면, 상기 제1 하드웨어 트랜잭션을 중단하고, 동시에 실행중이 아니라면, 상기 제1 하드웨어 트랜잭션을 커밋하는 단계
    를 더 포함하는 방법.
  17. 제12항에 있어서,
    상기 제1 소프트웨어 트랜잭션의 실행 동안에 상기 제1 소프트웨어 트랜잭션에 의해 상기 트랜잭션 메모리 시스템의 트랜잭션 메모리로의 판독 동작을 유효성확인하는 단계; 및
    상기 판독 동작이 유효성확인되면, 상기 판독 동작의 위치를 상기 제1 소프트웨어 트랜잭션의 필터 세트에 추가하는 단계
    를 더 포함하는 방법.
  18. 제12항에 있어서,
    제2 소프트웨어 트랜잭션의 실행의 시작시에 제1 잠금과 커밋 잠금을 취득하는 것을 포함하여, 제2 소프트웨어 트랜잭션 모드에서 상기 제2 소프트웨어 트랜잭션을 수행하고, 상기 제2 소프트웨어 트랜잭션 실행 동안에 하나 이상의 메모리 위치를 직접 업데이트하는 단계; 및
    상기 제2 소프트웨어 트랜잭션의 결말에서, 상기 제2 소프트웨어 트랜잭션을 커밋하고, 상기 제1 소프트웨어 트랜잭션 모드의 하나 이상의 동시에 실행중인 소프트웨어 트랜잭션을 무효화한 후, 상기 제1 잠금과 상기 커밋 잠금을 해제하는 단계
    를 더 포함하는 방법.
  19. 컴퓨팅 디바이스에서 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금 제12항 내지 제18항 중 어느 한 항에 따른 방법을 실행하게 하는 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능한 매체.
  20. 시스템으로서,
    적어도 하나의 하드웨어 트랜잭션과 적어도 하나의 소프트웨어 트랜잭션을 동시에 수행하는 하이브리드 트랜잭션 메모리 로직을 포함하는 프로세서 - 상기 하이브리드 트랜잭션 메모리 로직은, 제1 트랜잭션이 커밋되거나 상기 제1 트랜잭션이 제1 하드웨어 트랜잭션 모드에서 제1 임계 횟수(a first threshold number of times)만큼 재시도될 때까지 상기 제1 트랜잭션을 상기 제1 하드웨어 트랜잭션 모드에서 실행한 후, 상기 제1 트랜잭션이 커밋되지 않으면, 상기 제1 트랜잭션을 제1 소프트웨어 트랜잭션 모드에서 실행하며, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 하드웨어 모드에서 실행된 상기 제1 트랜잭션과 연관된 필터 세트가 상기 제1 소프트웨어 트랜잭션 모드에서 실행된 제2 트랜잭션과 연관된 필터 세트와 충돌하는지를 판정하는 교차 로직을 포함하고, 상기 충돌에 응답하여, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 하드웨어 트랜잭션 모드에서 상기 제1 트랜잭션이 커밋되는 것을 방지함 - ; 및
    상기 프로세서에 결합된 트랜잭션 메모리
    를 포함하는 시스템.
  21. 제20항에 있어서, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 트랜잭션이 커밋되거나 상기 제1 트랜잭션이 제2 임계 횟수만큼 상기 제1 소프트웨어 트랜잭션 모드에서 재시도될 때까지 상기 제1 트랜잭션을 상기 제1 소프트웨어 트랜잭션 모드에서 실행하고, 상기 제2 임계 횟수 이후에, 상기 제1 트랜잭션을, 상기 제1 트랜잭션이 상기 트랜잭션 메모리를 직접 업데이트하는 제2 소프트웨어 트랜잭션 모드에서 실행하는, 시스템.
  22. 제20항에 있어서, 상기 하이브리드 트랜잭션 메모리 로직은 상기 제1 트랜잭션을 상기 제1 하드웨어 트랜잭션 모드에서의 실행에 앞서 제2 하드웨어 트랜잭션 모드에서 실행하고, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 하드웨어 트랜잭션 모드에서의 상기 제1 트랜잭션의 실행에 앞서, 제3 임계 횟수 동안 상기 제1 트랜잭션을 상기 제2 하드웨어 트랜잭션 모드에서 실행하는, 시스템.
  23. 제20항에 있어서, 상기 하이브리드 트랜잭션 메모리 로직은, 상기 제1 트랜잭션이 상기 제1 소프트웨어 트랜잭션 모드에서의 실행 동안에 판독 데이터를 유효성확인하게 하고, 상기 제1 소프트웨어 트랜잭션 모드에서 실행된 상기 제1 트랜잭션과 연관된 필터 세트를 상기 판독 데이터와 연관된 주소에 기초하여 업데이트하게 하며, 해시 테이블을 기입 데이터로 업데이트하게 하는, 시스템.
  24. 제23항에 있어서, 상기 하이브리드 트랜잭션 메모리 로직은,
    제2 소프트웨어 트랜잭션 모드의 제2 트랜잭션으로 하여금, 상기 제2 트랜잭션의 시작시에 제1 잠금과 제2 잠금을 획득하게 하고, 그 후 상기 제2 트랜잭션의 실행 동안에 상기 트랜잭션 메모리를 직접 업데이트하게 하며;
    상기 제1 소프트웨어 트랜잭션 모드의 상기 제1 트랜잭션으로 하여금, 상기 제1 트랜잭션의 커밋시에 상기 제1 잠금과 상기 제2 잠금을 획득하고, 그 후 상기 트랜잭션 메모리를 상기 해시 테이블로부터의 기입 데이터로 업데이트하게 하며, 상기 제1 소프트웨어 트랜잭션 모드에서 동시에 실행중인 적어도 하나의 다른 소프트웨어 트랜잭션을 무효화하게 하는, 시스템.
KR1020167023088A 2014-03-26 2015-03-25 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기 KR101834262B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/225,804 US9971627B2 (en) 2014-03-26 2014-03-26 Enabling maximum concurrency in a hybrid transactional memory system
US14/225,804 2014-03-26
PCT/US2015/022394 WO2015148608A1 (en) 2014-03-26 2015-03-25 Enabling maximum concurrency in a hybrid transactional memory system

Publications (2)

Publication Number Publication Date
KR20160113207A true KR20160113207A (ko) 2016-09-28
KR101834262B1 KR101834262B1 (ko) 2018-04-13

Family

ID=54190495

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023088A KR101834262B1 (ko) 2014-03-26 2015-03-25 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기

Country Status (6)

Country Link
US (1) US9971627B2 (ko)
EP (1) EP3123306A4 (ko)
JP (1) JP6304845B2 (ko)
KR (1) KR101834262B1 (ko)
CN (1) CN106062707A (ko)
WO (1) WO2015148608A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101885030B1 (ko) * 2017-04-21 2018-08-02 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
KR20190088641A (ko) * 2018-01-19 2019-07-29 전북대학교산학협력단 트랜잭션 처리 방법 및 트랜잭션 처리 시스템
KR20190096837A (ko) * 2018-02-09 2019-08-20 한양대학교 산학협력단 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치
KR102150597B1 (ko) * 2019-07-23 2020-09-01 전북대학교산학협력단 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
US9037491B1 (en) 2013-11-26 2015-05-19 Square, Inc. Card reader emulation for cardless transactions
US9633070B2 (en) * 2014-03-31 2017-04-25 International Business Machines Corporation Increase database performance by reducing required communications and information transfers
US9720837B2 (en) * 2014-06-27 2017-08-01 International Business Machines Corporation Allowing non-cacheable loads within a transaction
US10521277B2 (en) * 2014-07-14 2019-12-31 Oracle International Corporation Systems and methods for safely subscribing to locks using hardware extensions
US11809917B2 (en) 2014-07-14 2023-11-07 Oracle International Corporation Systems and methods for safely subscribing to locks using hardware extensions
US10515354B1 (en) 2014-12-05 2019-12-24 Square, Inc. Discounted card not present rates following failed card present attempts
US10114638B2 (en) * 2014-12-15 2018-10-30 Cisco Technology, Inc. Command message generation and execution using a machine code-instruction
US20160179662A1 (en) * 2014-12-23 2016-06-23 David Pardo Keppel Instruction and logic for page table walk change-bits
US10032031B1 (en) 2015-08-27 2018-07-24 Amazon Technologies, Inc. Detecting unknown software vulnerabilities and system compromises
US10019572B1 (en) * 2015-08-27 2018-07-10 Amazon Technologies, Inc. Detecting malicious activities by imported software packages
US9772874B2 (en) * 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
US10163107B1 (en) * 2016-03-31 2018-12-25 Square, Inc. Technical fallback infrastructure
US10176241B2 (en) * 2016-04-26 2019-01-08 Servicenow, Inc. Identification and reconciliation of network resource information
US11868818B2 (en) 2016-09-22 2024-01-09 Advanced Micro Devices, Inc. Lock address contention predictor
US11269640B2 (en) * 2017-02-13 2022-03-08 Qualcomm Incorporated Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US11593773B1 (en) 2017-03-31 2023-02-28 Block, Inc. Payment transaction authentication system and method
US10755281B1 (en) 2017-03-31 2020-08-25 Square, Inc. Payment transaction authentication system and method
CN107066237B (zh) * 2017-04-17 2020-04-03 东软集团股份有限公司 一种数据处理方法及装置
US12020235B2 (en) 2017-04-28 2024-06-25 Block, Inc. Multi-source transaction processing
GB2567433B (en) * 2017-10-10 2020-02-26 Advanced Risc Mach Ltd Checking lock variables for transactions in a system with transactional memory support
US10754776B2 (en) 2018-07-30 2020-08-25 International Business Machines Corporation Cache balance when using hardware transactional memory
US20200293365A1 (en) * 2019-03-15 2020-09-17 Intel Corporation Transactional page fault handling
US11995350B2 (en) * 2020-12-23 2024-05-28 Red Hat, Inc. Prefetching container data in a data storage system
US20220222081A1 (en) * 2021-01-14 2022-07-14 Oracle International Corporation Vectorized sorted-set intersection using conflict-detection instructions optimized for small unpadded ordered sets

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701503A (en) 1994-01-04 1997-12-23 Intel Corporation Method and apparatus for transferring information between a processor and a memory system
US5581729A (en) 1995-03-31 1996-12-03 Sun Microsystems, Inc. Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US5822755A (en) 1996-01-25 1998-10-13 International Business Machines Corporation Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache
US6240413B1 (en) 1997-12-22 2001-05-29 Sun Microsystems, Inc. Fine-grained consistency mechanism for optimistic concurrency control using lock groups
US7555603B1 (en) 1998-12-16 2009-06-30 Intel Corporation Transaction manager and cache for processing agent
DE60237433D1 (de) 2001-02-24 2010-10-07 Ibm Neuartiger massivparalleler supercomputer
US6862646B2 (en) 2001-12-28 2005-03-01 Thomas J. Bonola Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
US7685365B2 (en) 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8180971B2 (en) 2005-12-09 2012-05-15 University Of Rochester System and method for hardware acceleration of a software transactional memory
US7809903B2 (en) 2005-12-15 2010-10-05 Intel Corporation Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
US7870545B2 (en) 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
US20070198979A1 (en) 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions
US8924653B2 (en) 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US20080189487A1 (en) 2007-02-06 2008-08-07 Arm Limited Control of cache transactions
US7516365B2 (en) * 2007-07-27 2009-04-07 Sun Microsystems, Inc. System and method for split hardware transactions
US8661204B2 (en) 2007-08-15 2014-02-25 University Of Rochester, Office Of Technology Transfer Mechanism to support flexible decoupled transactional memory
US7793052B2 (en) 2007-12-31 2010-09-07 Oracle America, Inc. System and method for implementing hybrid single-compare-single-store operations
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US20090183159A1 (en) * 2008-01-11 2009-07-16 Michael Maged M Managing concurrent transactions using bloom filters
US8051248B2 (en) 2008-05-05 2011-11-01 Globalfoundries Inc. Transient transactional cache
US9367363B2 (en) * 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8103838B2 (en) * 2009-01-08 2012-01-24 Oracle America, Inc. System and method for transactional locking using reader-lists
US8266604B2 (en) 2009-01-26 2012-09-11 Microsoft Corporation Transactional memory compatibility management
US8484438B2 (en) * 2009-06-29 2013-07-09 Oracle America, Inc. Hierarchical bloom filters for facilitating concurrency control
US8516202B2 (en) * 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8521995B2 (en) 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8788766B2 (en) * 2010-02-18 2014-07-22 Oracle America, Inc. Software-accessible hardware support for determining set membership
US8352688B2 (en) 2010-11-15 2013-01-08 Advanced Micro Devices, Inc. Preventing unintended loss of transactional data in hardware transactional memory systems
US9274962B2 (en) 2010-12-07 2016-03-01 Intel Corporation Apparatus, method, and system for instantaneous cache state recovery from speculative abort/commit
US8612694B2 (en) 2011-03-07 2013-12-17 Advanced Micro Devices, Inc. Protecting large objects within an advanced synchronization facility
JP2013051388A (ja) 2011-08-01 2013-03-14 Hitachi Cable Ltd 窒化物系化合物半導体結晶及びその製造方法並びにiii族窒化物半導体デバイス用基板
EP2795466A4 (en) 2011-12-21 2015-09-23 Intel Corp METHODS AND SYSTEMS FOR IDENTIFYING AND REPRODUCING SIMULTANEOUS ACCESS VIOLATIONS IN MULTIFUNCTION PROGRAMS
US9015419B2 (en) 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101885030B1 (ko) * 2017-04-21 2018-08-02 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
WO2018194237A1 (ko) * 2017-04-21 2018-10-25 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
KR20190088641A (ko) * 2018-01-19 2019-07-29 전북대학교산학협력단 트랜잭션 처리 방법 및 트랜잭션 처리 시스템
KR20190096837A (ko) * 2018-02-09 2019-08-20 한양대학교 산학협력단 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치
KR102150597B1 (ko) * 2019-07-23 2020-09-01 전북대학교산학협력단 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템

Also Published As

Publication number Publication date
WO2015148608A1 (en) 2015-10-01
US9971627B2 (en) 2018-05-15
JP6304845B2 (ja) 2018-04-04
CN106062707A (zh) 2016-10-26
KR101834262B1 (ko) 2018-04-13
EP3123306A4 (en) 2017-11-22
EP3123306A1 (en) 2017-02-01
US20150277967A1 (en) 2015-10-01
JP2017509970A (ja) 2017-04-06

Similar Documents

Publication Publication Date Title
KR101834262B1 (ko) 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기
US8464261B2 (en) System and method for executing a transaction using parallel co-transactions
US10268502B2 (en) Methods and apparatus to perform atomic transactions in nonvolatile memory under hardware transactional memory
US8365016B2 (en) Performing mode switching in an unbounded transactional memory (UTM) system
US9547524B2 (en) Methods and systems for enhancing hardware transactions using hardware transactions in software slow-path
JP5507706B2 (ja) バッファリングストアを利用してトランザクションを高速化するための機構
US8402227B2 (en) System and method for committing results of a software transaction using a hardware transaction
US8190859B2 (en) Critical section detection and prediction mechanism for hardware lock elision
US8352688B2 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
US20180322158A1 (en) Changing concurrency control modes
US8103838B2 (en) System and method for transactional locking using reader-lists
KR101970390B1 (ko) 2진 변환 기반 프로세서들에 의한 록 생략
EP2889769B1 (en) Processor with transactional capability and logging circuitry to report transactional operations
KR20170123683A (ko) 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
KR102594618B1 (ko) 락 어드레스 경합 예측자

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right