KR101402299B1 - 하드웨어 트랜잭션 메모리 시스템에서 트랜잭셔널 데이터의 의도하지 않은 손실의 방지 - Google Patents
하드웨어 트랜잭션 메모리 시스템에서 트랜잭셔널 데이터의 의도하지 않은 손실의 방지 Download PDFInfo
- Publication number
- KR101402299B1 KR101402299B1 KR1020137015478A KR20137015478A KR101402299B1 KR 101402299 B1 KR101402299 B1 KR 101402299B1 KR 1020137015478 A KR1020137015478 A KR 1020137015478A KR 20137015478 A KR20137015478 A KR 20137015478A KR 101402299 B1 KR101402299 B1 KR 101402299B1
- Authority
- KR
- South Korea
- Prior art keywords
- word
- group
- words
- read
- speculatively
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 23
- 238000003860 storage Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 14
- 230000007246 mechanism Effects 0.000 description 27
- 239000000872 buffer Substances 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000006399 behavior Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
하드웨어 트랜잭션 메모리 시스템에서 추론적으로 판독된 데이터에 대한 조기 릴리즈를 구현하기 위한 방법 및 장치가 개시된다. 프로세싱 코어는 액티브 트랜잭션의 판독 세트의 워드들의 그룹의 특정 워드에 대한 조기 릴리즈 표시를 수신하도록 된 하드웨어 트랜잭션 메모리 시스템을 포함한다. 조기 릴리즈 표시는 판독 세트로부터 상기 특정 워드를 제거하기 위한 요청을 포함한다. 조기 릴리즈 요청에 응답하여, 상기 특정 워드를 제외한 상기 그룹의 어떤 워드도 액티브 트랜잭션 동안에 추론적으로 판독되지 않았다 라고 결정한 이후에만, 프로세싱 코어는 워드들의 그룹을 판독 세트로부터 제거한다.
Description
본 발명은 하드웨어 트랜잭션 메모리 시스템에서 추론적 데이터 판독의 조기 릴리즈(early release)를 구현하기 위한 방법 및 장치에 관한 것이다.
하드웨어 트랜잭셔널 메모리(Hardware Transactional Memory : HTM)는 병렬 프로그래밍을 지원하기 위한 컴퓨터 아키텍쳐의 일 매커니즘이다. HTM을 이용하면, 프로그래머는 명령들의 그룹을 하나의 추론적인 영역(single speculative region)의 일부라고 간단하게 선언할 수 있으며 그리고 HTM 하드웨어는 상기 영역 내의 명령들이 하나의 원자적이며 격리된 트랜잭션(single atomic and isolated transaction)으로서 실행됨을 보장할 수 있다. 원자성(atomicity)은, 트랜잭션의 모든 명령들이 시스템의 하나 이상의 다른 프로세싱 코어들 상에서 다른 모든 동시 실행 쓰레드들에 대하여 하나의 원자 블록(single atomic block)으로서 실행되는 것을 의미한다. 격리성(isolation)은, 트랜잭션이 완료될 때까지 시스템의 나머지 부분에게 트랜잭션의 그 어떤 중간 결과도 노출되지 않는 것을 의미한다. HTM 시스템은 트랜잭션들이 충돌하지 않는 한, 이들 트랜잭션들이 병렬로 구동(run)되게 할 수 있다.
실행 쓰레드들 사이에서 데이터 충돌을 검출하기 위하여, HTM은 트랜잭션 실행 시도 동안에 어떤 메모리 영역들이 추론적으로 판독되었는지 및/또는 기입되었는지를 계속 추적(track)할 수 있다. 데이터 충돌을 검출하기 위한 목적으로 프로세스가 추적하는 메모리 영역들은, 트랜잭션의 판독 세트(read set)(판독되었다고 상기 프로세서가 추적한 어드레스) 및 기입 세트(write set)(변경되었다고 상기 프로세서가 추적한 어드레스)라고 지칭될 수 있다. 판독 세트와 기입 세트는 종종 추론적 버퍼에 버퍼링되며, 추론적 버퍼는 캐시, 로드/스토어 큐(load/store queue), 이들 둘다 및/또는 다른 하드웨어 요소로 구현될 수 있는 논리 엔티티이다.
HTM 시스템은 하드웨어로 구현되며 따라서 판독 및 기입 세트들을 추적할 제한된 리소스들을 갖고 있기 때문에, HTM 리소스들을 효율적으로 이용하기 위한 다양한 기법들이 사용되어 왔다. 일 세트의 기법들은 워드 그룹핑(word grouping)인바, 워드 그룹핑에서 HTM은 어드레스가능한 다수의 워드들을 그룹화할 수 있으며 그리고 판독 및/또는 기입 세트에서 이들을 함께 추적할 수 있다. 예를 들면, 액티브 트랜잭션 내의 주어진 워드에 대한 추론적 액세스를 검출하는 것에 응답하여, HTM은 상기 워드가 존재하고 있는 전체 캐시 라인(이는 어드레스가능한 서로 다른 복수의 워드들을 보유함)이 트랜잭션의 판독 혹은 기입 세트 내에 있다고 마킹할 수 있다. 캐시 라인을 마킹하는 것은, 캐시 라인에 관련된 플래그를 세팅함으로써 수행될 수 있다. 따라서, HTM은, 상기 그룹의 오직 하나의 워드만이 액세스되었다 할지라도, 캐시 라인의 모든 워드들을 판독 혹은 기입 세트에 추가한다.
HTM 리소스들을 효율적으로 이용하기 위한 다른 기법은, 조기 릴리즈(early release)이다. 이 기법에서, 프로그래머는 어드레스가능한 워드를 액티브 트랜잭션의 판독 세트로부터 명시적으로(explicitly) 릴리즈하는 것이 허용된다(예를 들면, 명시적 RELEASE 명령을 이용하여). 만일, 주어진 트랜잭션이 트랜잭션 내의 소정 포인트를 넘어서는 소정 판독 값에 의존하지 않는다면, 프로그래머는 상기 값이 판독되었던 메모리 어드레스를 판독 세트로부터 명시적으로 제거할 수 있다. 이러한 기법들을 이용하여, HTM 설계자들은 그들의 시스템들의 용량을 증가시킬 수 있어 왔으며 그리고 프로그래머들이 HTM을 이용하여 더 크고 더 복잡한 원자적 메모리 트랜잭션을 표현 및 실행할 수 있게 하였다.
하드웨어 트랜잭션 메모리 시스템에서 추론적으로 판독된 데이터에 대한 조기 릴리즈를 구현하기 위한 방법 및 장치가 개시된다. 프로세싱 코어는 액티브 트랜잭션의 판독 세트의 워드들의 그룹의 특정 워드에 대한 조기 릴리즈 표시(가령, 조기 릴리즈 명령)를 수신하도록 된 하드웨어 트랜잭션 메모리 시스템을 포함한다. 조기 릴리즈 표시는 판독 세트로부터 상기 특정 워드를 제거하기 위한 요청을 포함한다. 조기 릴리즈 표시에 응답하여, 상기 특정 워드를 제외한 상기 그룹의 어떤 워드도 액티브 트랜잭션 동안에 추론적으로 판독되지 않았다 라고 결정한 이후에만, 프로세싱 코어는 워드들의 그룹을 판독 세트로부터 제거한다.
일부 실시예들에서, 워드들의 그룹은 하드웨어 트랜잭션 메모리 시스템에 의해서 함께 추적될 수 있는바 따라서워드들의 그룹 중 임의의 한 워드가 액티브 트랜잭션 동안에 추론적으로 판독된다면, 상기 그룹의 모든 워드들은 액티브 트랜잭션의 판독 세트에 추가된다. 예를 들면, 일부 실시예들에서, 워드들의 그룹은 프로세싱 코어의 캐시에 있는 하나의 캐시 라인에 대응할 수 있으며 그리고 상기 캐시 라인에 관련된 플래그를 세팅함으로써 판독 세트에 함께 추가될 수 있다. 다른 실시예들에서, 상기 그룹은 Bloom 필터의 인덱스를 이용하여 추적될 수 있으며 그리고 그 Bloom 필터 인덱스에서 플래그를 세팅함으로써 판독 세트에 추가될 수 있다.
도1은 본 발명의 일부 실시예들에 따라 워드 그룹핑 및 조기 릴리즈 기능을 구비한 하드웨어 트랜잭션 메모리를 구현하도록 구성된 시스템을 예시하는 블록도이다.
도2는 본 발명의 일부 실시예들에 따라 코드의 추론적 영역의 요소들을 예시하는 블록도이다.
도3은 본 발명의 일부 실시예들에 따라 의도하지 않은 데이터 릴리즈를 방지하는 방식으로 워드 그룹핑 및 조기 릴리즈 기법을 이용하여 원자적 메모리 트랜잭션을 실행하는 고-레벨 방법을 예시한 순서도이다.
도4a는 본 발명의 일부 실시예들에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘의 올바른 공존(correct coexistence)을 지원하도록 구비된 캐시-기반의 추론적 버퍼의 블록도이다.
도4b는 본 발명의 일부 실시예들에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘의 올바른 공존을 지원하도록 구비된 추론적 버퍼 기반의 블룸 필터(Bloom filter)의 블록도이다.
도5는 본 발명의 일부 실시예들에 따라, 주어진 캐시 라인의 복수의 워드들이 액티브 트랜잭션에 의해서 추론적으로 판독되었다라고 결정하는 것에 응답하여 조기 릴리즈 동작을 배제하는 방법을 예시하는 순서도이다.
도6은 본 발명의 일부 실시예들에 따라, 조기 릴리즈로 워드 그룹핑을 지원하도록 구성된 HTM의 구성요소들에 대한 블록도이다.
도7은 본 명세서에 서술된 다양한 실시예들에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘으로 하드웨어 트랜잭션 메모리를 구현하도록 구성된 컴퓨터 시스템을 예시하는 블록도이다.
도2는 본 발명의 일부 실시예들에 따라 코드의 추론적 영역의 요소들을 예시하는 블록도이다.
도3은 본 발명의 일부 실시예들에 따라 의도하지 않은 데이터 릴리즈를 방지하는 방식으로 워드 그룹핑 및 조기 릴리즈 기법을 이용하여 원자적 메모리 트랜잭션을 실행하는 고-레벨 방법을 예시한 순서도이다.
도4a는 본 발명의 일부 실시예들에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘의 올바른 공존(correct coexistence)을 지원하도록 구비된 캐시-기반의 추론적 버퍼의 블록도이다.
도4b는 본 발명의 일부 실시예들에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘의 올바른 공존을 지원하도록 구비된 추론적 버퍼 기반의 블룸 필터(Bloom filter)의 블록도이다.
도5는 본 발명의 일부 실시예들에 따라, 주어진 캐시 라인의 복수의 워드들이 액티브 트랜잭션에 의해서 추론적으로 판독되었다라고 결정하는 것에 응답하여 조기 릴리즈 동작을 배제하는 방법을 예시하는 순서도이다.
도6은 본 발명의 일부 실시예들에 따라, 조기 릴리즈로 워드 그룹핑을 지원하도록 구성된 HTM의 구성요소들에 대한 블록도이다.
도7은 본 명세서에 서술된 다양한 실시예들에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘으로 하드웨어 트랜잭션 메모리를 구현하도록 구성된 컴퓨터 시스템을 예시하는 블록도이다.
본 명세서는 "일실시예" 혹은 "하나의 실시예" 에 대한 참조들을 포함한다. "일실시예에서" 혹은 "하나의 실시예에서" 라는 문구는 반드시 동일한 실시예를 참조하는 것은 아니다. 특정 피처들, 구조들 혹은 특징들은 본 개시 내용에 부합하는 임의의 적절한 방식으로 결합될 수 있다.
용어(Terminology). 다음의 문단들은 본 명세서(청구범위를 포함)에서 발견될 수 있는 용어들에 대한 정의들 및/또는 맥락을 제공한다.
"포함하는(comprising)." 이 용어는 개방형(open-ended) 이다. 청구항들에서 이용되는 바와 같이, 이 용어는 추가적인 구조 혹은 단계들을 배제하지 않는다. "하나 이상의 프로세서 유닛들을 포함하는 장치에 있어서..." 라는 청구항을 고려하자. 이러한 청구항은 상기 장치가 추가 구성요소들(예컨대, 네트워크 인터페이스 유닛, 그래픽 회로 등등)을 포함하는 것을 배제하지 않는다.
"~하도록 된(configured to)." 다양한 유닛들, 회로들 혹은 다른 구성요소들은 태스크 혹은 태스크들을 수행 "하도록 된다" 라고 서술 혹은 청구될 수 있다. 이러한 문장에서, "~하도록 된" 은, 상기 유닛들/회로들/구성요소들이 동작 동안에 이들 태스크 혹은 태스크들을 수행하는 구조(예컨대, 회로)를 포함한다는 것을 나타냄으로써, 구조를 내포하는데 이용된다. 이와 같이, 상기 유닛들/회로들/구성요소들은, 상기 특정 유닛들/회로들/구성요소들이 현재 동작중이지 않은 때에도(예컨대, 온 상태가 아닌 경우에도) 태스크를 수행하도록 된다라고 간주될 수 있다. "~하도록 된" 이라는 어구와 함께 이용되는 유닛들/회로들/구성요소들은 하드웨어(예를 들면, 회로, 동작을 구현하도록 실행될 수 있는 프로그램 명령들을 저장하는 메모리, 기타 등등)를 포함한다. 유닛들/회로들/구성요소들이 하나 이상의 태스크들을 수행 "하도록 된다" 라고 표기하는 것은, 이들 유닛들/회로들/구성요소들에 대해서 미국 특허법 제112조제6항(35 U.S.C.§ 112, six paragraph)이 적용되지 않도록 명백히 의도된다. 또한, "~하도록 된" 은, 일반적인 구조(generic structure) (예컨대, 일반적인 회로)를 포함할 수 있는데, 상기 일반적인 구조는 당면한 태스크(들)을 수행할 수 있는 방식으로 동작하도록 소프트웨어 및/또는 펌웨어(예를 들면, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해서 조작될 수 있다. 또한, "~하도록 된" 은, 하나 이상의 태스크들을 구현 혹은 수행하도록 된 디바이스들(예를 들면, 집적회로)을 제작하기 위해서 제조 프로세스(예를 들면, 반도체 제조 설비)를 조정하는 것을 포함할 수도 있다.
"제1(first)" , "제2(second)" 기타등등. 본 명세서에서 사용되는 바와 같이, 이들 용어들은 이들 용어들에 후속하는 명사들에 대한 라벨로서 이용되며, 그리고 임의 유형의 순서(예를 들면, 공간적인 순서, 시간적인 순서, 논리적인 순서 등등)를 암시하지 않는다. 예를 들면, 8개의 프로세싱 요소들 혹은 코어들을 갖는 프로세에서, "제1" 프로세싱 요소와 "제2" 프로세싱 요소라는 용어는 8개의 프로세싱 요소들 중 임의의 2개의 프로세싱 요소를 지칭하는데 이용될 수 있다. 달리 말하면, 상기 "제1" 프로세싱 요소 및 "제2" 프로세싱 요소라는 용어는 논리적 프로세싱 요소들 0 및 1에 한정되지 않는다.
"~에 기초하여(based on)." 본 명세서에서 이용되는 바와 같이, 이 용어는 결정(determination)에 영향을 미치는 하나 이상의 인자들을 서술하는데 이용된다. 이 용어는 결정에 영향을 미칠 수도 있는 추가 인자들을 배제하지 않는다. 즉, 결정은 오직 이들 인자들만에 기초할 수도 있으며, 혹은 이들 인자들에 적어도 부분적으로 기초할 수도 있다. "B에 기초하여 A를 결정한다" 라는 문장을 고려하자. 비록, B는 A라는 결정에 영향을 미치는 인자가 될 수도 있지만, 이러한 문장은 A라는 결정이 또한 C에 기초할 수도 있다라는 점을 배제하지 않는다. 다른 경우에는, A는 오직 B에만 기초하여 결정될 수도 있다.
HTM 시스템은 하드웨어로 구현되며 따라서 판독 및 기입 세트들을 추적할 제한된 리소스들을 갖는다. 결과적으로, 이들 리소스들을 효율적으로 이용하기 위해서 다양한 기법들이 이용되어 왔다. 예를 들어, 이러한 기법들은, 그룹들로서 어드레스가능한 워드들을 추적하는 것(즉, 워드 그룹핑), 프로그램이 판독 세트로부터 특정 어드레스를 릴리즈할 수 있게 하는 것(즉, 조기 릴리즈) 및 다른 기법들을 포함한다. 워드 그룹핑에서, 만일 그룹 내의 임의의 워드가 액세스된다면, HTM 은 전체 그룹(예컨대, 캐시 라인)을 판독 혹은 기입 세트 내에 입력할 수 있다. 이에 후속하여, HTM은, 각 워드의 입상도(at the granularity of each word)에서가 아니라 전체 그룹에서의 입상도에서 충돌을 검출할 수 있다. 예를 들면, 각각의 캐시 라인은 추론적으로 액세스된 데이터를 포함하고 있는지를 나타내는 플래그를 포함하거나 혹은 이에 관련될 수 있다. 조기 릴리즈는 프로그래머가 가령, RELEASE 명령을 명시적으로 실행함으로써, 액티브 트랜잭션의 판독 세트로부터 특정 워드를 명시적으로 제거하는 것을 허용할 수 있다(본 명세서에 사용되는 바와 같이, 트랜잭션이 개시되었으나 아직 커미트(commit)되지 않았다면 트랜잭션은 액티브 이다). 전술한 일례에서 종래의 조기 릴리즈 시스템은, 캐시 라인 상의 플래그를 언세팅(unsetting)함으로써, 주어진 워드를 릴리즈할 수 있으며, 이에 의해서 판독 세트로부터의 캐시 라인에 있는 모든 워드들을 제거할 수 있다.
하지만, 종래의 시스템은 워드 그룹핑과 조기 릴리즈 최적화 둘다를 구현하는 경우, 정확도(correctness)를 보장할 수 없다. 예를 들면, 액티브 트랜잭션이 동일한 그룹에 속하게 된 2개의 서로 다르게 어드레스가능한 워드들을 판독 및 의존하는 경우, 종래의 워드 그룹핑 시스템은 상기 2개의 워드들(그리고 이들의 그룹의 다른 모든 워드들)을 트랜잭션의 판독 세트에 배치한다. 하지만, 만일 조기 릴리즈 매커니즘이 이용되어 액티브 트랜잭션의 판독 세트로부터 이들 2개의 워드들 중 하나를 후속으로 제거한다면, 종래의 시스템은 다른 워드를 포함하여, 워드들의 전체 그룹을 릴리즈할 것이다. 하지만, 워드들의 전체 그룹을 이 시점에서 릴리즈하는 것은, 프로그래머가 의도한 바가 아니다. 이와 달리, 프로그래머는 특정 워드만을 릴리즈하기를 의도하였다. 결과적으로, 종래의 HTM은 다른 워드에 관계되며 그리고 부정확한 프로그램 거동이 야기할 수 있는(예컨대, 원자성의 위배:violation of atomicity), 후속 데이터 충돌을 검출하지 못한다. 본 명세서에서 이러한 현상은 의도하지 않은 데이터 릴리즈(unintentional data release)라고 지칭될 수 있다.
일부 실시예들에서, HTM은 워드 그룹핑과 조기 릴리즈 기법들 간의 올바른 공존을 구현하도록 구성될 수 있다. 이러한 HTM은 소정 그룹의 다수의 워드들이 액티브 트랜잭션에 의해서 판독되었는지를 추적할 수 있으며 그리고 상기 그룹의 그 어떤 워드도 트랜잭션에 의해서 액세스되지 않았는다는 결정에 소정 그룹 내의 워드에 대한 임의의 조기 릴리즈를 조건화할 수 있다. 따라서, HTM은 액티브 트랜잭션의 판독 세트로부터 하나 이상의 워드를 의도하지 않게 릴리즈하는 것을 회피할 수 있다.
도1은 본 발명의 실시예들에 따라 워드 그룹핑과 조기 릴리즈 기능을 구비한 하드웨어 트랜잭션 메모리를 구현하도록 구성된 시스템을 예시하는 블록도이다. 예시적인 실시예에 따르면, 시스템(100)은 프로세서(105)와 다른 프로세서들(130)을 포함하는 복수의 프로세서들을 포함한다. 본 명세서에서 이용되는 바와 같이, 프로세서라는 용어는 컴퓨터 프로그램 명령들을 실행하도록 된 프로세싱 코어를 지칭한다. 따라서, 프로세서라는 용어는, 전용 칩 상의 혹은 하나 이상의 다른 프로세싱 코어들(즉, 칩 멀티-프로세서)을 포함하는 칩 상의 물리적 혹은 논리적(예컨대, 대칭형 멀티-쓰레딩) 프로세싱 코어를 지칭할 수 있다. 후자의 경우, 프로세서(105)와 프로세서(130)는 동일한 칩 상에 존재할 수도 있으며 그리고 150과 같은 시스템 버스가 아니라 온-칩 네트워크에 의해서 연결될 수 있다. 실시예들을 설명하기 위하여 "프로세서" 라는 일반적인 용어가 이용되었지만, 프로세서라는 용어 자체는 프로세싱 코어들의 특정 배치 혹은 하나 이상의 칩들 상에 프로세싱 코어들이 분산된 것 만으로 본 발명의 실시예들을 한정하고자 의도된 것이 아니다.
도1에 도시된 바와 같이, 프로세서(105)는 HTM 매커니즘들(110)을 포함하며, HTM 매커니즘들(110)은 격리되고, 원자적인 트랜잭션들로서 추론적인 코드 영역들을 검출 및/또는 실행하도록 된 하나 이상의 하드웨어 유닛들을 포함한다. 이들 HTM 매커니즘들(110)은 워드 그룹핑과 조기 릴리즈 동작들을 수행하는 동안 올바른 프로그램 거동을 유지하도록 프로세서에 의해서 이용되는 다양한 구성요소들을 포함할 수 있다.
예시된 실시예에 도시된 바와 같이, 프로세서(105)는 또한, 마이크로아키텍처의 레지스터 파일(microarchitectural register file)로 구현될 수도 있는 임의 개수의 레지스터들(120), 그리고 하나 이상의 로컬 데이터 캐시들(125)(예컨대, L1 캐시)을 포함한다. 데이터 캐시들(125)은 프로세서(105)에 의한 빠른 액세스를 위하여 공유 메모리(140)로부터 데이터를 캐시할 수 있다. 데이터 캐시(들)(125)이 복수의 캐시들을 포함하는 실시예에서, 이들 캐시들은 캐시 계층(hierarchy)으로서 기능하도록 구성될 수도 있다. 프로세서(105) 및/또는 데이터 캐시(125)는 서로 다른 프로세서들에 의해서 이용되는 별도의 전용 캐시들(separate private caches)의 존재하에서 메모리에 대한 일관성 있는 뷰(consistent view)를 유지하기 위하여 다른 프로세서들(예컨대, 130)과 통신하도록 구성된 캐시 일관성(cache coherence) 매커니즘을 포함할 수 있다. 프로세서(105)가 복수의 프로세싱 코어들을 포함하는 실시예들에서, 하나 이상의 캐시들(125)은 이들 프로세싱 코어들 중 다양한 프로세서들에 의해서 공유될 수 있다.
일부 실시예들에서, 데이터 캐시(125) 및/또는 공유 캐시들(135)은 복수의 블록들(즉, 캐시 라인들)로 구성될 수 있으며, 그 각각은 공유 메모리(140)로부터 순차적으로 어드레스되는 워드들(예컨대, 8-바이트 워드들)의 블록을 저장하는데 이용될 수 있다. 일부 실시예들에서, 서로 다른 명령들은 이들 워드들 중 하나 이상을 어드레스할 수 있다. 예를 들어, 조기 릴리즈 명령은 데이터 캐시(125)의 주어진 워드를 어드레스할 수 있으며 그리고 상기 주어진 워드가 액티브 트랜잭션의 판독 세트로부터 릴리즈될 것이라는 점을 나타낼 수 있다. 다른 실시예들에서, 데이터 캐시(125) 및/또는 공유 캐시들(135)은 버퍼링된 데이터의 오버플로우(overflow)를 처리하기 위한 셋 연관도 및/또는 퇴거 정책들(set associativity and/or eviction policies)에 따라 관리될 수도 있다.
예시된 바와 같이, 프로세서들(105, 130)은 버스(150)를 통해 서로 연결되며, 공유 메모리(140), 그리고 임의 개수의 공유 데이터 캐시들(135)에 연결된다. 본 명세서에서 이용되는 바와 같이, "메모리 계층(memory hierarchy)" 이라는 용어는 시스템의 공유 메모리와 데이터를 저장하기 위하여 소정의 프로세서에 의해서 이용되는 일련의 캐시들(즉, 캐시 계층)을 지칭한다.
일부 실시예들에서, 프로세서(105)와 프로세서(130)는 캐시 일관성 프로토콜(예컨대, MESI, MOESI)의 일부로서의 캐시 일관성 메시지들과 같은 메시지들을 서로 통신하기 위하여 버스(150)를 이용할 수도 있다. 이러한 실시예들에서, 가령, 150 및 130과 같은 복수의 프로세서들은 그들 각각의 캐시들에 캐싱된 공유 메모리 데이터에 대한 일관성 있는 뷰를 유지할 수 있다.
일부 실시예들에서, 프로세서(105)는 HTM 트랜잭션을 지원하도록 추론적인 데이터 버퍼를 구현할 수 있다. 다른 실시예들에서, 이러한 버퍼는 데이터 캐시들(125), Bloom 필터 유닛, 및/또는 다른 매커니즘들을 이용하여 전체적으로 혹은 부분적으로 구현될 수 있다. 예를 들면, 몇몇 실시예에서, HTM 매커니즘(110)은 다양한 필드들을 데이터 캐시(125)의 각각의 라인에 연관시킬 수 있으며 그리고 그 라인의 임의의 워드가 액티브 트랜잭션의 판독 혹은 기입 세트에 있는지를 나타내기 위하여 상기 필드들을 이용할 수 있다.
다른 실시예들에서, HTM 매커니즘(110)은 판독 및/또는 기입 세트들을 추적하기 위하여 Bloom 필터 유닛을 이용할 수 있다. 이러한 실시예들에서, 트랜잭션 내로부터 워드가 추론적으로 액세스되는 경우, HTM 시스템은 상기 워드의 어드레스를 특수-목적 어레이(예컨대, 판독 세트 Bloom 필터)의 인덱스에 매핑하는바, 가령, 인덱스를 도출(derive)하도록 상기 어드레스에 해시 함수(hash function)를 적용함으로써 매핑한다. 다음으로 HTM은 주어진 어드레스에서의 워드가 추론적으로 판독되었다는 점을 나타내도록(기입 세트 Bloom 필터의 경우에는 추론적으로 기입되었다는 점을 나타내도록), 도출된 인덱스에서 플래그를 세팅할 수 있다. 비록, 하나의 어레이와 해시 함수를 이용하는 Bloom 필터 구현예가 서술되지만, 해당 기술분야의 당업자라면, 다른 실시예들에서, Bloom 필터 구현예들은 복수의 해시 함수들 및/또는 어레이들을 이용할 수도 있다는 점을 능히 이해할 수 있을 것이다. 본 명세서를 읽는 사람(reader)은 다음을 유의해야 하는바, 판독 세트를 추적하기 위한 Bloom 필터의 사용은 워드 그룹핑의 일 형태인데, 왜냐하면 서로 다른 워드들의 각각의 어드레스들이 동일한 Bloom 필터 인덱스에 매핑될 수 있기 때문이다.
도2는 본 발명의 실시예들에 따른, 추론적인 코드 영역의 구성요소들을 예시한 블록도이다. 예시된 실시예에 따르면, 추론적인 영역(200)은 트랜잭션 시작 표시(transaction start indication)(205)에서 시작하고, 하나 이상의 명령들의 트랜잭션 보디(210)가 후속되며, 그리고 트랜잭션 커미트 표시(transaction commit indication)(215)에서 종료된다.
일부 실시예들에서, 트랜잭션 시작 표시는 추론적 영역의 시작을 나타내는 특수-목적 명령을 포함할 수도 있다. 예를 들면, 시작 표시(205)는 추론적 영역의 시작을 나타내는 SPECULATE 명령을 포함할 수 있다. 다른 실시예들에서, 시작 표시는 가령, 록 획득(lock acquisition)과 같은 일반-목적 명령에 대응할 수 있는데, 이는 코드의 추론적 영역을 나타낼 수도 있다. 트랜잭션이 시작된 이후지만 아직 커미트(215 참조) 되기 전에, 상기 트랜잭션은 액티브라고 할 수 있다. 다음을 유의해야 하는바, 충돌 및/또는 다른 포기 조건들(abort conditions) 때문에, 액티브 트랜잭션은 최종적으로 성공하기 전에(before eventually succeeding) 복수회 재시도될 수도 있다.
트랜잭션 보디(210)는 하나 이상의 메모리 동작들을 포함할 수도 있는 하나 이상의 프로그램 명령들을 포함할 수 있다. 일부 실시예들에서, 트랜잭션 보디(210)는 트랜잭션의 일부로 지정되는 메모리 동작들의 제 1 서브세트와 트랜잭션의 일부가 아니라고 지정되는 메모리 동작들의 제 2 서브세트를 포함할 수 있다. 이러한 경우, HTM은 트랜잭션의 일부로 지정된 이들 명령들만을 트랜잭셔널하게 실행하도록 구성될 수 있으며 그리고 상기 보디의 다른 명령들에 대해서는 이러한 원자성 혹은 격리성 보장을 제공하지 않도록 구성될 수 있다. 이러한 실행에서, 추론적 명령들을 실행한 결과로서 액세스되는 메모리 어드레스들은, 액티브 트랜잭션의 판독 혹은 기입 세트의 일부로서 추적될 수 있다(적절한 경우).
예시된 실시예에 도시된 바와 같이, 추론적 영역(200)은 시작 표시(205)에 의해서 시작된 추론적 영역의 끝을 나타내는 커미트 표시(예컨대, 215)를 포함할 수 있다. 일부 실시예들에서, 커미트 표시는 특수-목적의 COMMIT 명령을 포함할 수 있다. 다른 실시예들에서, 커미트 표시(215)는 시작 표시(205)에서와 같이, 가령, 이전에 획득된 록(lock)의 릴리즈와 같은 일반-목적 명령에 대응할 수도 있다.
도3은 본 발명의 일부 실시예들에 따라, 의도하지 않은 데이터 릴리즈를 회피하는 방식으로 워드 그룹핑과 조기 릴리즈 기법들을 이용하여 원자적 메모리 트랜잭션을 실행하는 고-레벨 방법을 예시한 순서도이다. 도3의 방법은 가령, 프로세서(105)와 같은 HTM 매커니즘들을 포함하는 프로세서에 의해서 실행될 수 있다.
예시된 실시예에 따르면, 방법(300)은 단계 305에서와 같이 프로세서가 추론적 실행 모드에 진입하는 때에 시작된다. 전술한 바와 같이, 프로세서는, 트랜잭션 코드 영역의 시작을 나타내는 SPECULATE 명령을 실행하는 것에 응답하여 이러한 모드로 진입할 수 있다.
트랜잭션의 일부로서, 프로세서는 공유 메모리로부터 워드를 추론적으로 로드(load)할 수 있다(단계 310). 이러한 워드는 로드 명령에 의해서 직접 로드될 수 있으며 혹은 몇몇 다른 명령을 실행하는 것을 일부로서 간접적으로 로드될 수도 있다. 상기 데이터가 트랜잭션 내로부터 추론적으로 판독되었기 때문에, 프로세서는 추론적으로 로드된 워드(그리고 이것의 전체 그룹)를 트랜잭션의 판독 세트에 추가한다(단계 315). 다른 실시예에서는, 워드 그룹을 판독 세트에 부가하는 것은, 상기 워드가 로드되는 캐시 라인에 플래그를 세팅하는 것을 포함할 수 있다. 이러한 것은, 캐시 라인에 있는(즉, 그룹에 있는) 다른 모든 워드들을 판독 세트에 유효하게 추가한다.
다른 실시예들에서, 단계 315에서 상기 그룹을 판독 세트에 추가하는 것은 상기 워드가 추론적으로 로드되었던 어드레스에 대응하는 인덱스에서 Bloom 필터의 비트를 세팅하는 것을 포함할 수 있다. 예를 들면, 단계 315에서, HTM은 추론적으로 로드된 워드의 어드레스에 해시 함수를 적용함으로써, 인덱스를 도출할 수 있다. 하지만, 단계 315에서 도출된 인덱스에서 비트를 세팅함에 의해서, 상기 시스템은 그 어드레스가 상기 인덱스 값으로 해시된 모든 워드를 판독 세트에 필수적으로(essentially) 추가한다. 따라서, 오직 하나의 이러한 어드레스만이 실제로 추론적으로 판독되었다 하더라도, Bloom 필터에 비트를 세팅하는 것은, HTM에 의해서 추적중인 판독 세트에 워드들의 그룹을 필수적으로 추가한다.
예시된 실시예에 따르면, 이후 프로세서는 RELEASE 명령을 검출하며, RELEASE 명령은 단계 320으로부터의 "예" 화살표로 표시되는 바와 같이, 판독 세트로부터 릴리즈할 워드를 특정한다. 이러한 경우, HTM은 특정된 워드가 속하는 그룹을 결정할 수 있으며(예컨대, 캐시 라인, Bloom 필터 인덱스, 등등) 그리고 상기 그룹에서 2개 이상의 워드들이 추론적으로 판독되었는지를 결정할 수 있다(단계 325). HTM은 다음에 설명되는 바와 같이 이러한 결정을 수행할 수 있다.
만일, 릴리즈할 특정 워드가, 단계 325로부터의 "아니오" 화살표로 표시되는 바와 같이, 상기 그룹에서 추론적으로 판독된 오직 그 워드뿐이라면, HTM은 상기 판독 세트로부터 상기 RELEASE-특정 워드를 제거할 수 있다(단계 330). 다양한 실시예들에서, RELEASE-특정 워드를 제거하는 것은, 추론적으로 판독된 워드에 관련된 및/또는 그것의 그룹에 관련된 플래그를 언세팅하는 것을 포함할 수 있다.
하지만, 단계 325로부터의 "예" 화살표로 표시되는 바와 같이, 특정된 워드의 상기 그룹에서 다수의 워드들이 액티브 트랜잭션에서 추론적으로 판독되었다라고 HTM이 결정한다면, HTM은 특정된 워드를 판독 세트로부터 제거하지 않는다. 다음을 유의해야 하는바, 일부 실시예들에서, 상기 그룹의 다수의 워드들이 추론적으로 판독되었지만, 상기 그룹에서 다음 워드가 판독되기 전에 그 각각의 워드가 트랜잭션 판독 세트로부터 성공적으로 릴리즈되었다면, 단계 325에서의 결정은 "아니오"로 결정될 것이다. 예를 들면, 이러한 실시예들에서, 만일 그룹의 제 1 워드가 판독되고 그리고 릴리즈되며, 그리고 이러한 릴리즈에 후속하여 상기 그룹의 제 2 워드가 판독된다면, 제 2 워드를 릴리즈하기 위한 시도(단계 320)는 단계 325에서 "아니오" 라는 결정을 야기할 것이다.
일단, 판독 세트로부터 워드가 릴리즈되면, 상기 워드는 트랜잭션에 대해 데이터 충돌을 더 이상 야기하지 않는다. 즉, 릴리즈된 워드의 어드레스에 다른 하나의 쓰레드가 기입한다면, 이러한 것은 트랜잭션 포기(transaction abort)를 반드시 트리거링하지는 않을 것이다.
예시된 실시예에 따르면, 트랜잭션이 계속됨에 따라, 포기 조건이 검출되면(단계 335), HTM은 트랜잭션 시도를 포기할 수 있으며(단계 340) 그리고 트랜잭션을 재시도할 수 있다(단계 340에서 단계 310으로의 피드백 루프). 일부 실시예들에서, 트랜잭션을 재시도하는 것은, 명시적인 재시작 명령을 발행하는 것을 포함할 수 있다. 트랜잭션을 포기하는 것은, 판독 및 기입 세트로부터 모든 워드들을 제거하고, 트랜잭션 시도에 의해서 시도되었던 모든 메모리 변경들을 롤링 백 및/또는 드롭하고, 명령 포인터를 트랜잭션 영역의 시작 포인트로 변경하고 및/또는 구현예별로 특정한 단계들을 수행하는 것을 포함할 수 있다. 단계 345의 "예" 화살표로 표시되는 바와 같이, 트랜잭션 영역이 아직 실행되지 않은 명령들을 더 포함한다면, 프로세서는 실행을 계속한다. 단계 345의 "아니오" 화살표로 표시되는 바와 같이, 프로그램 콘트롤이 트랜잭션의 영역의 끝에 도달하는 때, HTM은 트랜잭션의 결과들을 커미트할 수 있다(단계 350). 단계 350에서 결과들을 커미트하는 것은, 트랜잭션의 결과들(예컨대, 기입 세트의 값들)을 메모리에 플러싱(flushing)하는 것을 포함할 수 있으며, 이것은 다른 실시예들에서 다르게 수행될 수 있다(예를 들면, redo versus undo models).
일부 실시예들에 따르면, 다양한 플래그들이 추론적 버퍼링 매커니즘들에 부가될 수 있으며, 따라서 프로세서는 소정 그룹의 다수의 워드들이 추론적으로 판독되었는지의 여부를 추적할 수 있다. 도4a 및 도4b는 이러한 목적을 위한 각각의 플래그들을 포함하는 추론적 버퍼링 매커니즘의 2개의 실시예들을 제공한다.
도4a는 본 발명의 일부 실시예에 따라, 워드 그룹핑과 조기 릴리즈 매커니즘의 올바른 공존을 지원하기 위해 구비되는 캐시-기반의 추론적 버퍼에 대한 블록도이다. 일부 실시예들에서, 도4a의 데이터 캐시(400)는 가령, 도1의 데이터 캐시(125)와 같은 전용 L1 데이터 캐시에 해당할 수 있다.
예시된 실시예에서, 데이터 캐시(400)는 캐시 라인(405)와 같은 다수의 캐시 라인들을 포함한다. 각각의 캐시 라인은 메모리의 주어진 영역으로부터의 일련의 다수의 데이터 워드들을 저장하는데 이용될 수 있다. 예를 들면, 캐시 라인(405)의 데이터(425)는 64 바이트 혹은 128 바이트의 저장 공간을 포함할 수 있다. 따라서, 이것은 메모리로부터의 8개 혹은 16개의 어드레스가능한 8-바이트 워드들을 저장하는데 이용될 수 있다. 예를 들어, 데이터(425)가 64-바이트의 길이라면, 공유 메모리는 64-바이트 블록들(즉, 워드 그룹들)로 분할될 수 있으며 그리고 상기 블록 내의 임의의 워드를 판독하는 것에 응답하여, 시스템은 전체 블록을 데이터 캐시(400)의 라인에(예컨대, 캐시 라인 405의 데이터 425에) 카피할 수 있다. 상기 라인은, 어떤 메모리 블록이 현재 그 캐시라인에 저장되어 있는지를 나타내기 위하여, 태그될 수도 있다(예컨대, 어드레스 태그 410를 이용하여).
도4a에 도시된 바와 같이, 캐시 라인(405)은 또한 다른 프로세서들에 의해서 캐시된 데이터와의 일관성을 유지하는데 이용될 수 있는 다양한 캐시 일관성 필드들(415)을 포함할 수 있으며, 그리고 430 및 435와 같은 추론적 버퍼 필드들을 포함할 수 있다. 예를 들어, 일부 실시예들에서는, SW 필드(430)이 세팅되어, 데이터(425)의 적어도 일부가 액티브 트랜잭션에 의해서 추론적으로 기입되었음을 나타낼 수 있다. 이와 유사하게, SR 필드(435)는 데이터(425)의 적어도 일부가 액티브 트랜잭션에 의해서 추론적으로 판독되었음을 나타내는데 이용될 수 있다. 따라서, HTM은 데이터 충돌을 검출하는 때에, 이들 필드들을 이용할 수 있다.
예시된 실시예에 따르면, 캐시 라인(405)은 또한, UL 필드(440)와 FA 필드(445)를 포함한다. 일부 실시예들에서, 이들 필드들은, 캐시 라인(예컨대, 데이터 425)에서 2개 이상의 워드들이 액티브 트랜잭션의 일부로서 추론적으로 판독되었는지를 판별하도록, HTM에 의해서 이용될 수 있다(도3의 단계 325).
일부 실시예들에서, FA 필드(445)는 액티브 트랜잭션 동안에 처음으로 추론적으로 판독된(first speculative read) 캐시 라인(405)(즉, 데이터 425의)의 워드에 대한 표시를 저장하는데 이용될 수 있다. 다양한 실시예들에서, 이러한 표시는 그 특정 워드의 어드레스, 그 워드에 대응하는 캐시 라인(예를 들면, "블록 내의 5번째(5th) 워드")에 대한 인덱스, 혹은 다른 워드들과 상기 처음으로 추론적으로 판독된(first speculative read) 워드를 특유하게 구별할 수 있는 다른 식별자가 될 수 있다. 예를 들면, 일부 실시예들에서, 만일 캐시 라인(405)이 64-바이트의 폭이라면(즉, 특유하게 어드레스가능한 8개의 8-바이트 워드들을 갖음), FA 필드(445)는 3개의 비트들을 포함할 수 있으며, 이들 3개의 비트들은 8개의 고유 인덱스들을 나타내는데 이용될 수 있다. 따라서, FA 필드의 값은 캐시 라인에 저장된 8개의 워드들 중 어떤 것이 처음으로 추론적으로 판독되는 것이었는지를 식별할 수 있다.
일부 실시예들에서, 판독 세트에 워드를 추가하기 위한 로직은, SR 필드(435)가 이미 세팅되었는지를 판별하고, 만일 그렇지 않다면 트랜잭션의 판독 세트 내에 캐시 라인이 있음을 나타내는 값으로 SR 필드(435)를 세팅하고 그리고 워드를 나타내는 값으로 FA 필드(445)를 세팅하는 것을 포함한다. 일부 실시예들에서는, SR 필드가 클리어되는 때, FA 및/또는 UL 필드들도 클리어될 수 있다.
일부 실시예들에서, UL 필드(440)는 캐시 라인(405)에 있는 다수의 워드들이 액티브 트랜잭션에 의해서 추론적으로 판독되었는지의 여부를 나타내는데 이용될 수 있다. 예를 들어, 판독 세트에 워드를 추가하기 위한 로직은, SR 필드(435)가 이미 세팅되었는지를 판별하는 것과, 만일 그렇다면 FA 필드가 상기 워드를 나타내는지를 판별하는 것을 포함할 수 있다.
만일, 그렇지 않다면, 상기 워드는 판독 세트에 추가될 상기 그룹의 처음 워드가 아니며 그리고 프로세서는 이러한 것을 나타내는 값으로 UL 필드(440)를 세팅할 수 있다. 일부 실시예들에서, UL 필드(440)는 단일 비트를 포함할 수 있으며, 상기 단일 비트는 판독 세트에 다수의 워드들이 있는지를 나타내도록 세팅 혹은 언세팅될 수 있다. 따라서, HTM은, 주어진 캐시 라인의 다수의 워드들(즉, 워드 그룹)이 액티브 트랜잭션에 의해서 추론적으로 판독되었는지의 여부를 추적 및 판별하기 위하여 UL 필드와 FA 필드의 조합을 이용할 수 있다.
도5는 본 발명의 일부 실시예들에 따라, 주어진 캐시 라인의 다수의 워드들이 액티브 트랜잭션에 의해서 추론적으로 판독되었다라고 판별하는 것에 응답하여, 조기 릴리즈 동작을 배제하기 위한 방법을 예시하는 순서도이다. 방법(500)은 본 명세서에서 설명된 바와 같이 조기 릴리즈 및 워드 그룹핑 둘다를 지원하는 프로세서에 의해서 실행될 수 있다.
예시된 실시예에 따르면, 방법(500)은 프로세서가 추론적 실행 모드에 진입하는 때에 시작한다(단계 505). 프로세서는 단계 510에서 트랜잭션의 일부로서, 주어진 워드를 추론적으로 판독한다. 상기 워드를 추론적으로 판독하는 것에 응답하여, 메모리 서브시스템은 상기 워드가 존재하는 블록을 캐시 라인에 카피할 수 있다(상기 블록이 캐시 라인에 이미 존재하고 있지 않다면). 또한, HTM은 캐시 라인을 트랜잭션의 판독 세트에 추가한다(단계 515). 일부 실시예들에서, 캐시 라인을 판독 세트에 추가하는 것은, 캐시 라인의 SR 비트를 세팅하는 것을 포함할 수 있으며, 따라서 캐시 라인에 저장된 전체 블록을 판독 세트에 유효하게 추가할 수 있다.
단계 515에서 캐시 라인을 트랜잭션 판독 세트에 추가한 이후에 혹은 캐시 라인을 트랜잭션 판독 세트에 추가하는 것의 일부로서, HTM은 상기 주어진 워드를 나타내는 값으로 FA 플래그를 세팅할 수 있다(단계 520). 예를 들어, 만일 단계 510에서 판독된 워드가 어드레스 순서에 따라 블록 내에서 세번째 워드라면, 단계 520에서 FA 플래그는 이진값 010으로 세팅될 수 있으며, 이는 0-인덱싱 체계(0-indexing scheme)에 따른 3번째 인덱스를 나타낸다. 다양한 다른 식별 체계들이 이용될 수도 있다.
예시된 실시예에 따르면, 단계 510에서 주어진 워드를 추론적으로 판독하고 그리고 단계 515에서 캐시 라인을 판독 세트에 추가한 이후에, 프로세서는 캐시 라인으로부터 다른 워드를 추론적으로 판독한다(단계 525). 프로세서가 다른 워드를 판독하는 것에 응답하여, HTM은 상기 워드를 포함하고 있는 캐시 라인의 SR 필드가 이미 세팅되었는지를 판별하며, 그리고 이에 응답하여 상기 다른 워드가 추론적으로 판독될 캐시 라인의 첫번째 워드와 동일한 것인지를 판별하도록 캐시 라인의 FA 필드를 판독한다(단계 530). 예를 들어, 만일 FA 필드가 블록 내의 상기 주어진 워드의 인덱스를 나타낸다면, HTM은 상기 다른 워드가 동일한 인덱스를 가졌는지를 판별할 수 있다. 만일, 인덱스들이 서로 다르다면(단계 530), 상기 주어진 워드와 상기 다른 워드는 동일한 것이 아니다.
추론적으로 판독된 다른 워드가 단계 510에서 판독된 워드와 동일하지 않다고 판별하는 것에 응답하여, HTM은 캐시 라인의 UL 플래그를 세팅한다(단계 535). UL 플래그를 세팅하는 것은 캐시 라인의 다수의 워드들이 현재 트랜잭션에서 추론적으로 판독되었음을 나타낸다. UL 플래그를 세팅하는 것은, 워드들의 서브세트만을 목표로 하도록 의도된 조기 릴리즈 명령에 응답하여 캐시 라인의 워드들이 전부 릴리즈된다면, 트랜잭션 데이터의 의도하지 않은 손실이 발생할 수도 있다는 점을 HTM에게 알려줄 수 있다.
단계 540에서, 프로세서는 RELEASE 명령을 검출하는데, RELEASE 명령은 추론적으로 판독된 주어진 워드가 판독 세트로부터 릴리즈될 것임을 나타낸다. 상기 일례의 RELEASE 명령은 조기 릴리즈 매커니즘에 대응한다.
RELEASE 명령에 응답하여, HTM은 상기 주어진 워드의 캐시 라인을 찾아내고(locate) 그리고 캐시 라인의 UL 플래그를 체크하여, 상기 UL 플래그가 세팅되었는지를 판별한다(단계 550). UL 플래그가 세팅되었기 때문에, HTM은 캐시 라인의 다수의 워드들이 추론적으로 판독되었다고 결정하며 그리고 만일 전체 캐시 라인이 릴리즈된다면 의도하지 않은 및/또는 부정확한 거동(behavior)이 발생할 수도 있음을 인지한다. 따라서, 단계 555에서, HTM은 RELEASE 명령에 의해서 표시되는 조기 릴리즈 기능을 금지한다. 조기 릴리즈가 금지되므로, HTM은 캐시 라인의 SR 플래그를 클리어하지 않으며, 캐시 라인의 워드들은 판독 세트에 남아있으며, 그리고 HTM은 이들 워드들에 관련된 데이터 충돌들을 계속 체크한다.
비록, 도5의 일례는 추론적으로 기입될 첫번째 워드를 목표로 하는 RELEASE 명령을 포함하고 있지만, 시스템 거동은 다른 워드를 목표로 하는 RELEASE 명령을 갖는 것과 유사할 수도 있다. 따라서, 일부 실시예들에서, 동일한 캐시 라인에서 적어도 2개의 워드들(즉, 워드 그룹)이 추론적으로 판독되면, 그 캐시 라인의 워드들은 더 이상 조기 릴리즈될 자격이 없다.
다양한 실시예들에서는, 캐시 이외의 매커니즘으로 구현된 추론적 버퍼들에 대해서 조기 릴리즈와 함께 워드 그룹핑이 가능해지도록, 가령, UL 및 FA 필드들(440, 445)과 같은 의도하지 않은 손실 필드들이 조정될 수도 있다. 예를 들면, 도4b는 본 발명의 일부 실시예들에 따라 의도하지 않은 손실 필드들을 구비한 Bloom 필터를 예시한 블록도로서, 이는 워드 그룹핑과 조기 릴리즈의 안전한 공존을 가능케 한다.
전술한 바와 같이, HTM이 판독 세트를 추적할 수 있는 또 다른 워드 그룹핑 방법은, 하드웨어-구현된 Bloom 필터를 이용하는 것이다. 도4b는 본 발명의 일부 실시예들에 따라 워드 그룹핑과 조기 릴리즈 매커니즘의 올바른 공존을 지원하기 위해 구비된 Bloom-필터-기반의 추론적 버퍼를 나타내는 블록도이다.
이러한 일부 실시예들에서, 워드가 추론적으로 판독되는 때, HTM은 예컨대, 상기 워드의 어드레스에 해시 함수를 적용함으로써, 상기 워드에 대한 인덱스를 결정할 수 있다. 이후 HTM은 워드가 추론적으로 판독되었음을 나타내도록, Bloom 필터와 같은 특수-목적 어레이의 인덱스 값에서 플래그를 세팅할 수 있다. 주어진 메모리 어드레스에 또 다른 쓰레드가 액세스하였음을 나타내는 프로브(probe)를 프로세서가 수신하는 경우, 프로세서는 수신된 메모리 어드레스에 해시 함수를 적용하여 인덱스를 결정할 수 있으며 그리고 Bloom 필터의 플래그가 상기 인덱스에서 세팅되었는지의 여부를 체크할 수 있다.
일부 실시예들에서, HTM은 의도하지 않은 손실 필드들(가령, 440 및 445)을 판독 세트 Bloom 필터의 각각의 인덱스에 관련시킬 수 있다. 예를 들어, Bloom 필터(450)의 각각의 필드(가령, 인덱스 460 및 470)는 의도하지 않은 손실 필드들(가령, 462 및 472) 각각에 관련된다. 일부 실시예들에서, 이들 필드들은 Bloom 필터 그 자체의 일부가 될 수 있으며, 별도의 하드웨어 구조에 포함될 수도 있으며 혹은 그렇지 않으면 Bloom 필터의 각각의 인덱스들에 관련될 수 있다.
예시된 실시예에 따르면, 의도하지 않은 손실 필드들(462, 472) 각각은 UL 필드(464, 474)와 FA 필드(466, 476)를 각각 포함한다. 이들 필드들은 데이터 캐시 구현예의 필드들(440, 445)과 유사할 수 있다. 예를 들어, 만일 프로세서가 주어진 어드레스에서 워드를 추론적으로 판독한다면(여기서 상기 어드레스는 인덱스 460로 해싱되며), HTM은 인덱스(460)에서의 값이, 상기 어드레스가 판독 세트에 이미 존재하는지의 여부를 나타내는지를 판별할 수 있다. 만일, 인덱스(460)에서의 값이, 상기 어드레스가 판독 세트에 이미 존재하는 것이 아님을 나타낸다면, HTM은 이러한 값으로 인덱스(460)를 세팅할 수 있으며 그리고 상기 주어진 어드레스를 식별하는 값으로 FA 필드(466)를 세팅할 수 있다. 데이터 캐시 구현예에서와 같이, FA 필드(466)는 어드레스 그 자체, 인덱스(466)로 맵핑되는 어드레스들의 그룹에 대한 옵셋, 혹은 또 다른 식별자를 보유할 수도 있다. 예를 들어, 만일 사용된 해시 함수가 모듈러 함수(modulo function)라면, 주어진 어드레스에 대한 식별자를 도출하는 방법 중 하나는 log2(M) 비트 만큼 상기 어드레스를 쉬프트하는 것이 될 수 있으며, 여기서 M은 Bloom 필터 인덱스들의 개수이다. 다른 한편으로, 만일 인덱스(460)의 값이 상기 어드레스가 판독 세트에 이미 존재함을 나타낸다면, HTM은 상기 어드레스의 식별자와 FA 필드(466)에 저장된 식별자를 비교할 수 있다. 만일, 2개의 값이 동일하지 않다면, 프로세서는 동일한 그룹에서 적어도 2개의 서로 다른 워드들을 판독한 것이며 그리고 이에 응답하여 HTM은 조기 릴리즈로부터 야기될 수 있는 의도하지 않은 손실의 위험을 나타내는 값으로 UL 필드(464)를 세팅할 수 있다. 데이터 캐시 구현예에서와 같이, 만일 UL 필드(464)가 상기 그룹의 다수의 워드들이 추론적으로 판독되었음을 나타낸다면, HTM은 인덱스(460)를 목표로 하는 조기 릴리즈 동작을 금지할 수 있다.
도6은 본 발명의 일부 실시예들에 따라 워드 그룹핑과 조기 릴리즈를 지원하도록 된 HTM의 구성요소들에 대한 블록도이다. 도6의 HTM(110)은 도1의 HTM 매커니즘(110)에 대응할 수 있다.
예시된 실시예에 따르면, HTM(110)은, 워드 그룹핑과 조기 릴리즈 둘다를 지원하는 가령, 605와 같은 추론적 버퍼를 포함할 수 있다. 일부 실시예들에서, 추론적 버퍼(605)는 캐시(예컨대, 데이터 캐시 400)를 이용하여, Bloom 필터(예컨대, Bloom 필터 450)를 이용하여, 및/또는 다른 매커니즘을 이용하여 구현될 수 있다. 일부 실시예들에서, 추론적 버퍼(605)는 공유 메모리의 적어도 하나의 워드 그룹들이 트랜잭션의 판독 세트에 있다는 것을 나타내는데 이용될 수 있는 필드들을 포함할 수 있다(예컨대, SR 필드 435, 인덱스 460, 기타등등). 일부 실시예들에서, 추론적 버퍼(605)는 또한, 주어진 그룹의 다수의 워드들이 액티브 트랜잭션 내에서 추론적으로 판독되었는지의 여부를 나타내는데 이용될 수 있는 필드들을 포함할 수 있다(예컨대, UL 필드들 440, 464, 474, 등등).
예시된 실시예에서, HTM(110)은 또한, 주어진 워드가 추론적으로 판독되는 때에 추론적 버퍼(605)에 적절한 플래그를 결정 및 세팅하도록 된 워드 그룹핑 로직(610)을 포함한다. 예를 들어, 만일 추론적 버퍼(605)가 도4a의 데이터 캐시(400)로 구현된다면, 워드 그룹핑 로직(610)은, 주어진 어드레스에서 워드가 추론적으로 판독되었음에 응답하여 상기 주어진 어드레스에 대응하는 SR, UL, 및 FA 필드들을 판독 및 세팅하도록 구성될 수 있다.
도6의 예시된 실시예에 따르면, HTM(110)은 또한, 조기 릴리즈 로직(615)를 포함할 수 있으며, 이는 워드 그룹핑을 의식한 조기 릴리즈 기능을 구현하도록 구성될 수 있다. 예를 들어, 조기 릴리즈 로직(615)은 본 명세서에 서술된 바와 같이, 액티브 트랜잭션의 판독 세트로부터 릴리즈할 메모리 어드레스를 특정하는 RELEASE 명령을 실행하도록 구성될 수 있다. 또한, 조기 릴리즈 로직(615)은 특정 어드레스의 그룹을 결정하고 그리고 상기 그룹의 다수의 워드들이 액티브 트랜잭션에 의해서 추론적으로 판독되었다고 결정하는 것에 응답하여 이러한 기능을 금지하도록 구성될 수 있다. 예를 들어, 조기 릴리즈 로직(615)은 추론적 버퍼(605) 내의 적절한 UL 필드를 판독함으로써, 그룹 내의 2 이상의 워드가 판독되었는지를 적어도 부분적으로, 결정할 수 있다.
비록, 도6에서는 추론적 버퍼(605), 워드 그룹핑 로직(610), 및 조기 릴리즈 로직(615)이 별개의 구성요소들로 도시되었지만, 다양한 실시예들에서 이들 구성요소들은 결합될 수도 있으며 및/또는 분할될 수도 있다. 일부 실시예들에서, HTM(110)은 캐시 일관성 매커니즘, 중단 로직(abort logic), 커미트 로직(commit logic), 비순차적 실행 지원 로직(out-of-order execution support), 등과 같은 다양한 다른 구성요소들을 더 포함할 수도 있다.
도7은 본 발명의 다양한 실시예들에 따라, 본 명세서에 서술된 바와 같은 워드 그룹핑과 조기 릴리즈 매커니즘을 구비한 하드웨어 트랜잭션 메모리를 구현하도록 된 컴퓨터 시스템을 나타내는 블록도이다. 컴퓨터 시스템(700)은, 퍼스널 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 혹은 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 소비자 디바이스(consumer device), 어플리케이션 서버, 저장 디바이스, 주변 디바이스(스위치, 모뎀, 라우터 등), 혹은 일반적인 임의 유형의 컴퓨팅 디바이스와 같은 다양한 유형들의 디바이스들 중 임의의 것에 대응할 수 있지만, 이에 한정되는 것은 아니다.
컴퓨터 시스템(700)은 하나 이상의 프로세서들(760)을 포함할 수 있으며, 이들 중 임의의 것은 복수의 물리적인 및/또는 논리적인 코어들을 포함할 수 있다. 프로세서(760)는 가령, 매커니즘(770)과 같이 본 명세서에 설명된 바와 같은 워드 그룹핑과 조기 릴리즈 매커니즘을 구비한 HTM을 구현하기 위한 각각의 매커니즘들을 포함할 수 있다. 예를 들면, 일부 실시예들에서, HTM(770)은 데이터 캐시(400) 및/또는 Bloom 필터(450)와 같은, 적절한 추론적 버퍼를 포함할 수 있다.
컴퓨터 시스템(700)은 또한, 하나 이상의 영속적인 저장 디바이스들(750)(예를 들면, 광 저장장치, 자기 저장장치, 하드 드라이브, 테이프 드라이브, 솔리드 스테이트 메모리, 등등)을 포함할 수 있는바, 이들은 데이터를 영속적으로 저장한다.
예시된 실시예에 따르면, 컴퓨터 시스템(700)은, 하나 이상의 공유 메모리들(710)(가령, 캐시, SRAM, DRAM, RDRAM, EDO RAM, DDR 10 RAM, SDRAM, 램버스 RAM, EEPROM 등등 중 하나 이상)을 포함할 수 있는바, 이들은 다수의 프로세서들(760) 사이에서 공유될 수 있다. 하나 이상의 프로세서(760), 저장 디바이스(들)(750), 및 공유 메모리(710)는 배선(740)을 통해 연결될 수 있다. 다양한 실시예들에서, 시스템은 더 적은 구성요소들 혹은 도7에 도시되지 않은 추가 구성요소들(예컨대, 비디오 카드, 오디오 카드, 추가적인 네트워크 인터페이스, 주변 디바이스들, ATM 인터페이스와 같은 네트워크 인터페이스, 이더넷 인터페이스, 프레임 릴레이(Frame Relay) 인터페이스, 모니터, 키보드, 스피커 등)을 포함할 수도 있다.
일부 실시예들에서, 공유 메모리(710)는 프로그램 명령들(720)을 포함할 수 있는데, 프로그램 명령들은 플랫폼 네이티브 바이너리(platform native binary), JavaTM 바이트-코드 등과 같은 임의의 해석형 언어(interpreted language), C/C++, JavaTM 등과 같은 임의의 다른 언어 혹은 이들의 임의의 조합으로 인코딩될 수 있다. 프로그램 명령들(720)은 하나 이상의 멀티-쓰레드 어플리케이션들(722)을 구현하기 위한 프로그램 명령을 포함할 수 있는바, 이는 하나의 원자적 트랜잭션으로서 각각 실행되는 추론적 코드 섹션들을 포함한다. 일부 실시예들에서, 프로그램 명령들(720)은 또한, 운영 시스템(724)을 구현하도록 실행될 수 있는 명령들을 포함할 수 있는데, 이는 어플리케이션(722)을 실행하기 위한 소프트웨어적인 지원을 제공한다(예컨대, 스케줄링, 소프트웨어 신호 처리 등등).
예시된 실시예에 따르면, 공유 메모리(710)는 공유 데이터(730)를 포함하는바, 공유 데이터는 상기 프로세서들(760) 중 복수의 프로세서들에 의해서 액세스될 수도 있다. 본 명세서에 설명된 바와 같이, 프로세서들 중 일부 프로세서들은 공유 데이터(730)의 다양한 구성요소들을 로컬 캐시들에 캐싱할 수 있으며, 그리고 캐시 일관성 프로토콜에 따라 메시지들을 교환함으로써 이들 캐시들의 데이터를 편성(coordinate)할 수 있다.
가령, 멀티쓰레드화된 어플리케이션들(722) 및/또는 운영 시스템(724)을 구현하는데 이용되는 이들 명령들과 같은, 프로그램 명령들(720)은 컴퓨터 판독가능한 저장 매체에 저장될 수 있다. 컴퓨터-판독가능한 저장 매체는, 머신(예컨대, 컴퓨터)에 의해서 판독가능한 형태(가령, 소프트웨어, 프로세싱 어플리케이션)로 정보를 저장하기 위한 임의의 매커니즘을 포함할 수 있다. 컴퓨터-판독가능한 저장 매체는, 자기 저장 매체(가령, 플로피 디스크), 광학 저장 매체(가령, CD-ROM), 자기-광학 저장 매체, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍가능한 메모리(가령, EPROM 및 EEPROM), 플래시 메모리, 혹은 프로그램 명령들을 저정하기에 알맞은 임의의 다른 유형의 매체를 포함하지만, 이에 한정되는 것은 아니다.
일부 실시예들에서, 전술한 바와 같은 컴퓨터-판독가능한 저장 매체는 프로그램에 의해서 판독된 명령들을 저장하는데 이용될 수 있으며, 그리고 하나 이상의 프로세서들(760)을 포함하는 하드웨어를 제작하는데 직접적으로 혹은 간접적으로 이용될 수도 있다. 예를 들면, 명령들은 베릴로그(Verilog) 혹은 VHDL 와 같은 고 레벨 설계 언어(HDL)에서의 하드웨어 기능에 대한 거동-레벨(behavioral-level) 혹은 레지스터-트랜스퍼 레벨(Register Transfer Level: RTL) 서술을 기술하는 하나 이상의 데이터 스트럭처들을 기술할 수도 있다. 이러한 서술(description)은 합성 툴(synthesis tool)에 의해서 판독될 수 있는바, 합성 툴은 상기 서술을 합성하여 네트리스트(netlist)를 생성한다. 네트리스트는 게이트들의 세트(가령, 합성 라이브러리(synthesis library)에 정의된)를 포함할 수 있으며, 이것은 프로세서(500)의 기능을 나타낸다. 다음으로, 네트리스트는 마스크에 적용될 기하학적 형상을 서술하는 데이터 세트를 생성하도록 배치 및 라우팅될 수 있다. 다음으로, 다양한 반도체 제조 단계에서 이러한 마스크들이 이용되어, 프로세서(500)에 대응하는 반도체 회로 혹은 회로들을 생성할 수 있다. 대안적으로는, 데이터베이스는 네트리스트가 될 수도 있으며(합성 라이브러리를 구비한 혹은 구비하지 않은) 또는 적절한 데이터 세트가 될 수도 있다.
비록, 특정 실시예들이 앞서 설명되었지만, 특정 피처에 관하여 오직 하나의 실시예만이 서술되는 경우라 하더라도, 이들 실시예들은 본 발명의 범위를 제한하고자 의도된 것이 아니다. 발명의 상세한 설명에 제공되는 피처들에 대한 일례들은, 달리 언급되지 않는 한, 제한적인 것이 아니라 예시적인 것으로 의도된다. 본 개시 내용으로부터 이득을 얻는 해당 기술분야의 당업자에게 자명한 바와 같이, 전술한 설명들은, 이러한 대안예들, 변형예들 및 등가물들을 커버하도록 의도된 것이다.
본 개시 내용의 범위는 본 명세서에 개시된(명시적으로 혹은 암시적으로 개시된) 임의의 피처 혹은 피처들의 조합, 혹은 이들의 임의의 일반화를 포함한다(본 명세서에 언급된 문제점들의 전부 또는 일부를 완화시키는가에 상관 없이). 따라서, 본 출원(혹은 우선권을 주장하는 출원)의 절차 동안 피처들의 임의의 조합에 대한 새로운 청구항들이 제공될 수 있다. 특히, 첨부된 청구항들에 대해서, 종속 청구항들의 피처들은 독립 청구항들의 피처들과 결합될 수 있으며 그리고 독립 청구항들 각각의 피처들은 첨부된 청구항들에 열거된 특정 조합들만이 아니라 임의의 적절한 방식으로 조합될 수 있다.
Claims (20)
- 장치로서,
원자적인 액티브 메모리 트랜잭션 시도(active atomic memory transaction attempt)의 판독 세트의 2개 이상의 워드들의 그룹의 특정 워드에 대한 조기 릴리즈 표시(early release indication)를 수신하도록 된 하드웨어 트랜잭션 메모리 시스템을 포함하며,
상기 하드웨어 트랜잭션 메모리 시스템은, 상기 조기 릴리즈 표시를 수신하고 그리고 상기 특정 워드를 제외한 상기 그룹의 그 어떤 워드도 상기 원자적인 액티브 메모리 트랜잭션 시도 동안에 추론적으로 판독되지 않았다고 판별하는 것에 응답하여, 상기 판독 세트로부터 워드들의 상기 그룹을 제거하는 것을 특징으로 하는 장치. - 제1항에 있어서,
상기 조기 릴리즈 표시는 상기 특정 워드를 식별하는 명시적 조기 릴리즈 명령(explicit early release instruction)을 포함하는 것을 특징으로 하는 장치. - 제1항에 있어서,
상기 하드웨어 트랜잭션 메모리 시스템은, 프로세싱 코어가 워드들의 상기 그룹 중 임의의 하나의 워드를 추론적으로 판독하는 것에 응답하여, 워드들의 상기 그룹을 상기 원자적인 액티브 메모리 트랜잭션 시도의 판독 세트에 추가하며,
상기 하나의 워드는 상기 원자적인 액티브 메모리 트랜잭션 시도를 실행하는 것의 일부로서 상기 그룹에서 추론적으로 판독된 첫번째 워드인 것을 특징으로 하는 장치. - 제3항에 있어서,
워드들의 상기 그룹은 상기 프로세싱 코어의 캐시에 있는 하나의 캐시 라인에 대응하며; 그리고
워드들의 상기 그룹을 상기 판독 세트에 추가하는 것은, 상기 캐시 라인의 워드들의 상기 그룹이 상기 액티브 트랜잭션의 상기 판독 세트에 존재함을 나타내도록 상기 캐시 라인에 관련된 플래그를 세팅하는 것을 포함하는 장치. - 제3항에 있어서,
워드들의 상기 그룹을 상기 판독 세트에 추가하는 것은, 저장 어레이의 주어진 인덱스에서 플래그를 세팅하는 것을 포함하며,
워드들의 상기 그룹의 각각의 워드에 대하여, 상기 인덱스는 상기 워드가 저장된 공유 메모리의 각각의 어드레스에 소정의 해시 함수를 적용한 결과에 대응하는 것을 특징으로 하는 장치. - 제3항에 있어서,
워드들의 상기 그룹을 상기 원자적인 액티브 메모리 트랜잭션 시도의 판독 세트에 추가하는 것은, 상기 액티브 트랜잭션 내에서 첫번째로 추론적으로 판독되었던 상기 그룹의 상기 하나의 워드에 대한 표시를 기록하는 것을 포함하는 것을 특징으로 하는 장치. - 제6항에 있어서,
상기 하나의 워드에 대한 상기 표시는 워드들의 상기 그룹의 순서(ordering)에서 상기 하나의 워드의 위치를 나타내는 인덱스를 포함하는 것을 특징으로 하는 장치. - 제6항에 있어서,
상기 하나의 워드와 다른 하나의 워드가 동일한 메모리 어드레스에 대응하는지를 판별하고; 그리고
상기 하나의 워드와 상기 다른 하나의 워드가 동일한 메모리 어드레스에 대응하지 않는다고 판별하는 것에 응답하여 상기 그룹에서 다수의 워드들이 추론적으로 판독되었음을 나타내는 표시를 기록함으로써,
상기 하드웨어 트랜잭션 메모리는 또한, 상기 하나의 워드를 판독하는 것에 후속하여 프로세싱 코어가 상기 그룹에서 상기 다른 하나의 워드를 판독하는 것에 응답하도록 된 것을 특징으로 하는 장치. - 제8항에 있어서,
상기 특정 워드를 제외한 상기 그룹의 그 어떤 워드도 상기 원자적인 액티브 메모리 트랜잭션 시도 동안에 추론적으로 판독되지 않았다고 판별하는 것은, 상기 그룹에서 다수의 워드들이 추론적으로 판독되었음을 나타내는 상기 표시에 의존하는 것을 특징으로 하는 장치. - 제1항에 있어서,
상기 조기 릴리즈 표시는 상기 판독 세트로부터 제거될 상기 그룹의 다수의 워드들을 특정하고 그리고
상기 하드웨어 트랜잭션 메모리는 또한, 상기 특정된 다수의 워드들을 제외한 상기 그룹의 그 어떤 워드도 상기 액티브 트랜잭션 동안에 추론적으로 판독되지 않았다는 결정에 적어도 부분적으로 기초하여, 상기 특정된 다수의 워드들을 상기 판독 세트로부터 제거하도록 된 것을 특징으로 하는 장치. - 방법으로서,
원자적인 액티브 메모리 트랜잭션 시도의 판독 세트의 2개 이상의 워드들의 그룹의 특정 워드에 대한 조기 릴리즈 표시를 하드웨어 트랜잭션 메모리 시스템이 수신하는 단계와; 그리고
상기 그룹의 다른 워드가 상기 원자적인 액티브 메모리 트랜잭션 시도 동안에 추론적으로 판독되지 않았다는 것에 응답하여, 상기 하드웨어 트랜잭션 메모리 시스템이 상기 원자적인 액티브 메모리 트랜잭션 시도의 상기 판독 세트로부터 워드들의 상기 그룹을 제거하는 단계
를 포함하는 것을 특징으로 하는 방법. - 제11항에 있어서,
상기 조기 릴리즈 표시는 상기 특정 워드를 식별하는 명시적 조기 릴리즈 명령을 포함하는 것을 특징으로 하는 방법. - 제11항에 있어서,
상기 조기 릴리즈 표시를 수신하는 단계 이전에, 프로세싱 코어가 워드들의 상기 그룹 중 하나의 워드를 추론적으로 판독하는 것에 응답하여 워드들의 상기 그룹을 상기 원자적인 액티브 메모리 트랜잭션 시도의 판독 세트에 추가하는 단계를 더 포함하며,
상기 하나의 워드는 상기 액티브 트랜잭션을 실행하는 것의 일부로서 상기 그룹에서 추론적으로 판독된 첫번째 워드인 것을 특징으로 하는 방법. - 제13항에 있어서,
기입 세트 워드들의 상기 그룹은 캐시의 하나의 캐시 라인에 대응하며, 그리고
워드들의 상기 그룹을 상기 판독 세트에 추가하는 단계는, 상기 캐시 라인의 워드들의 상기 그룹이 상기 액티브 트랜잭션의 상기 판독 세트에 존재함을 나타내도록 상기 캐시 라인에 관련된 플래그를 세팅하는 단계를 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
워드들의 상기 그룹을 상기 판독 세트에 추가하는 단계는, 저장 어레이의 주어진 인덱스에서 플래그를 세팅하는 단계를 포함하며,
워드들의 상기 그룹의 각각의 워드에 대하여, 상기 인덱스는 상기 워드가 저장된 공유 메모리의 각각의 어드레스에 소정의 해시 함수를 적용한 결과에 대응하는 것을 특징으로 하는 방법. - 제13항에 있어서,
워드들의 상기 그룹을 상기 원자적인 액티브 메모리 트랜잭션 시도의 판독 세트에 추가하는 단계는,
상기 액티브 트랜잭션 내에서 첫번째로 추론적으로 판독되었던 상기 그룹의 상기 하나의 워드에 대한 표시를 기록하는 단계를 포함하는 것을 특징으로 하는 방법. - 제16항에 있어서,
상기 하나의 워드에 대한 상기 표시는,
기입 세트 워드들의 상기 그룹의 순서(ordering)에서 상기 하나의 워드의 위치를 나타내는 인덱스를 포함하는 것을 특징으로 하는 방법. - 제16항에 있어서,
상기 하나의 워드가 판독된 후에 상기 그룹에서 다른 하나의 워드가 추론적으로 판독되며 그리고 상기 하나의 워드와 상기 다른 하나의 워드가 동일한 메모리 어드레스에 대응하지 않는다고 판별하는 것에 응답하여, 상기 그룹에서 다수의 워드들이 추론적으로 판독되었음을 나타내는 표시를 기록하는 단계
를 더 포함하는 것을 특징으로 하는 방법. - 컴퓨터 시스템 상에서 실행가능한 프로그램에 의해서 구동되는(operated) 데이터 스트럭처를 포함하는 비-일시적인 컴퓨터 판독가능한 저장 매체로서, 상기 프로그램은 상기 데이터 스트럭처에 의해 기술되는 회로를 포함하는 집적회로를 제작하기 위한 프로세스의 일부를 수행하도록 상기 데이터 스트럭처를 구동하며, 상기 데이터 스트럭처에 의해 기술되는 상기 회로는,
원자적인 액티브 메모리 트랜잭션 시도의 판독 세트의 2개 이상의 워드들의 그룹의 특정 워드에 대한 조기 릴리즈 표시를 수신하도록 된 하드웨어 트랜잭션 메모리 시스템을 포함하며,
상기 하드웨어 트랜잭션 메모리 시스템은, 상기 조기 릴리즈 표시를 수신하고 그리고 상기 특정 워드를 제외한 상기 그룹의 그 어떤 워드도 상기 원자적인 액티브 메모리 트랜잭션 시도 동안에 추론적으로 판독되지 않았다고 판별하는 것에 응답하여, 상기 판독 세트로부터 워드들의 상기 그룹을 제거하는 것을 특징으로 하는 컴퓨터 판독가능한 저장 매체. - 제19항에 있어서,
상기 저장 매체는 HDL, 베릴로그(Verilog) 혹은 GDSⅡ 데이터를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/946,743 US8352688B2 (en) | 2010-11-15 | 2010-11-15 | Preventing unintended loss of transactional data in hardware transactional memory systems |
US12/946,743 | 2010-11-15 | ||
PCT/US2011/059872 WO2012067904A1 (en) | 2010-11-15 | 2011-11-09 | Preventing unintended loss of transactional data in hardware transactional memory systems |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130135269A KR20130135269A (ko) | 2013-12-10 |
KR101402299B1 true KR101402299B1 (ko) | 2014-06-02 |
Family
ID=45002147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137015478A KR101402299B1 (ko) | 2010-11-15 | 2011-11-09 | 하드웨어 트랜잭션 메모리 시스템에서 트랜잭셔널 데이터의 의도하지 않은 손실의 방지 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8352688B2 (ko) |
EP (1) | EP2641171B1 (ko) |
JP (1) | JP5745084B2 (ko) |
KR (1) | KR101402299B1 (ko) |
CN (1) | CN103299281B (ko) |
WO (1) | WO2012067904A1 (ko) |
Families Citing this family (12)
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 |
US9459877B2 (en) * | 2012-12-21 | 2016-10-04 | Advanced Micro Devices, Inc. | Nested speculative regions for a synchronization facility |
US9547594B2 (en) * | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
US20140281270A1 (en) * | 2013-03-15 | 2014-09-18 | Henk G. Neefs | Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy |
US9971627B2 (en) | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
US9778949B2 (en) | 2014-05-05 | 2017-10-03 | Google Inc. | Thread waiting in a multithreaded processor architecture |
US10324768B2 (en) * | 2014-12-17 | 2019-06-18 | Intel Corporation | Lightweight restricted transactional memory for speculative compiler optimization |
WO2017012667A1 (en) * | 2015-07-22 | 2017-01-26 | Huawei Technologies Co., Ltd. | Hardware transactional memory in non volatile memory with log and no lock |
US9690623B2 (en) | 2015-11-06 | 2017-06-27 | International Business Machines Corporation | Regulating hardware speculative processing around a transaction |
WO2018001495A1 (en) | 2016-06-30 | 2018-01-04 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
CN110019112B (zh) * | 2017-08-25 | 2023-10-31 | 阿里巴巴集团控股有限公司 | 数据事务处理方法、装置以及电子设备 |
US10657057B2 (en) * | 2018-04-04 | 2020-05-19 | Nxp B.V. | Secure speculative instruction execution in a data processing system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004075046A2 (en) * | 2003-02-13 | 2004-09-02 | Sun Microsystems Inc. | Selectively unmarking of load-marked cache lines during t speculative thread execution |
US20080115042A1 (en) | 2006-11-13 | 2008-05-15 | Haitham Akkary | Critical section detection and prediction mechanism for hardware lock elision |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395274B2 (en) * | 2002-07-16 | 2008-07-01 | Sun Microsystems, Inc. | Space- and time-adaptive nonblocking algorithms |
US7045764B2 (en) * | 2002-10-17 | 2006-05-16 | Rite-Hite Holding Corporation | Passive detection system for detecting a body near a door |
US7616414B2 (en) * | 2003-04-25 | 2009-11-10 | Broadcom Corporation | ESD protection circuit for high speed signaling including T/R switches |
US7206903B1 (en) * | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7703098B1 (en) * | 2004-07-20 | 2010-04-20 | Sun Microsystems, Inc. | Technique to allow a first transaction to wait on condition that affects its working set |
US7395382B1 (en) * | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
US7685365B2 (en) * | 2004-09-30 | 2010-03-23 | Intel Corporation | Transactional memory execution utilizing virtual memory |
US8180971B2 (en) * | 2005-12-09 | 2012-05-15 | University Of Rochester | System and method for hardware acceleration of a software transactional memory |
US7350027B2 (en) * | 2006-02-10 | 2008-03-25 | International Business Machines Corporation | Architectural support for thread level speculative execution |
US7523228B2 (en) * | 2006-09-18 | 2009-04-21 | International Business Machines Corporation | Method for performing a direct memory access block move in a direct memory access device |
-
2010
- 2010-11-15 US US12/946,743 patent/US8352688B2/en active Active
-
2011
- 2011-11-09 EP EP11785547.8A patent/EP2641171B1/en active Active
- 2011-11-09 CN CN201180064768.XA patent/CN103299281B/zh active Active
- 2011-11-09 JP JP2013539897A patent/JP5745084B2/ja active Active
- 2011-11-09 KR KR1020137015478A patent/KR101402299B1/ko active IP Right Grant
- 2011-11-09 WO PCT/US2011/059872 patent/WO2012067904A1/en active Application Filing
-
2012
- 2012-12-13 US US13/714,132 patent/US8543775B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004075046A2 (en) * | 2003-02-13 | 2004-09-02 | Sun Microsystems Inc. | Selectively unmarking of load-marked cache lines during t speculative thread execution |
WO2004075046A3 (en) | 2003-02-13 | 2006-11-02 | Sun Microsystems Inc | Selectively unmarking of load-marked cache lines during t speculative thread execution |
US20080115042A1 (en) | 2006-11-13 | 2008-05-15 | Haitham Akkary | Critical section detection and prediction mechanism for hardware lock elision |
Also Published As
Publication number | Publication date |
---|---|
US8352688B2 (en) | 2013-01-08 |
KR20130135269A (ko) | 2013-12-10 |
CN103299281A (zh) | 2013-09-11 |
CN103299281B (zh) | 2017-05-24 |
JP5745084B2 (ja) | 2015-07-08 |
WO2012067904A1 (en) | 2012-05-24 |
EP2641171B1 (en) | 2018-01-03 |
EP2641171A1 (en) | 2013-09-25 |
US8543775B2 (en) | 2013-09-24 |
US20120124293A1 (en) | 2012-05-17 |
JP2013543197A (ja) | 2013-11-28 |
US20130103908A1 (en) | 2013-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101402299B1 (ko) | 하드웨어 트랜잭션 메모리 시스템에서 트랜잭셔널 데이터의 의도하지 않은 손실의 방지 | |
JP5507706B2 (ja) | バッファリングストアを利用してトランザクションを高速化するための機構 | |
US8127057B2 (en) | Multi-level buffering of transactional data | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US20180011748A1 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
US8706973B2 (en) | Unbounded transactional memory system and method | |
US7496716B2 (en) | Methods and apparatus to implement parallel transactions | |
TWI638311B (zh) | Data processing method and processor | |
US20080010417A1 (en) | Read/Write Permission Bit Support for Efficient Hardware to Software Handover | |
US20100205408A1 (en) | Speculative Region: Hardware Support for Selective Transactional Memory Access Annotation Using Instruction Prefix | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US9892039B2 (en) | Non-temporal write combining using cache resources | |
US20110208921A1 (en) | Inverted default semantics for in-speculative-region memory accesses | |
US9798577B2 (en) | Transactional storage accesses supporting differing priority levels | |
JP2009527866A (ja) | アウトオブオーダープロセッサにおけるトランザクショナルメモリ | |
WO2009009583A1 (en) | Bufferless transactional memory with runahead execution | |
US10108464B2 (en) | Managing speculative memory access requests in the presence of transactional storage accesses | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
US20150205721A1 (en) | Handling Reads Following Transactional Writes during Transactions in a Computing Device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171121 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180427 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190429 Year of fee payment: 6 |