KR100954623B1 - 무한 트랜잭션 메모리 시스템 - Google Patents

무한 트랜잭션 메모리 시스템 Download PDF

Info

Publication number
KR100954623B1
KR100954623B1 KR1020087015791A KR20087015791A KR100954623B1 KR 100954623 B1 KR100954623 B1 KR 100954623B1 KR 1020087015791 A KR1020087015791 A KR 1020087015791A KR 20087015791 A KR20087015791 A KR 20087015791A KR 100954623 B1 KR100954623 B1 KR 100954623B1
Authority
KR
South Korea
Prior art keywords
memory
instruction
hardware
flag
processor
Prior art date
Application number
KR1020087015791A
Other languages
English (en)
Other versions
KR20080076981A (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 KR20080076981A publication Critical patent/KR20080076981A/ko
Application granted granted Critical
Publication of KR100954623B1 publication Critical patent/KR100954623B1/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)

Abstract

무한 트랜잭션 메모리 시스템을 제공하기 위한 방법 및 장치가 개시된다. 일 실시예에서, 선행된 HTM(hardware transactional memory) 액세스 동작이 실패하면 STM(software transactional memory) 액세스에 대응하는 동작이 실행될 수 있다.
트랜잭션, 코어, 스레드, 명령어, 오버플로우, 메모리, 프로세서

Description

무한 트랜잭션 메모리 시스템{UNBOUNDED TRANSACTIONAL MEMORY SYSTEMS}
본 발명은 일반적으로 전자 분야에 관한 것이다. 특히 본 발명의 실시예는 무한 트랜잭션 메모리 시스템(unbounded transactional memory systems)에 관한 것이다.
소정 컴퓨터 시스템은 성능을 개선하기 위하여 동시에 다수의 스레드(thread)를 실행할 수 있다. 통상 스레드가 공유 자원을 액세스하기 전에 스레드는 공유 자원의 로크(lock)를 얻을 수 있다. 공유 자원이 메모리에 저장된 데이터 구조인 상황에서, 동일 자원을 액세스하려고 하는 모든 스레드는 록킹(locking) 메커니즘에 의해 상호 배타적으로 제공된다는 사실에 비추어 그들 동작 실행을 직렬화할 수 있다. 이것은 시스템 성능에 해로울 수 있으며, 예를 들면 데드록 버그(deadlock bugs)로 인해 프로그램 장애를 일으킬 수 있다.
록킹 메커니즘을 이용한 결과인 성능 히트(performance hits)를 감소시키기 위하여, 소정 컴퓨터 시스템은 트랜잭션 메모리(transactional memory)를 사용할 수 있다. 트랜잭션 메모리는 통상적으로, 액세스가 충돌(conflict)하지 않는 한, 예를 들면 액세스가 공유 자원의 상이한 부분으로 향하는 한, 다수의 스레드가 로크를 획득하지 않고서도 (메모리에 저장된 데이터 구조와 같은) 공유 자원을 동시 에 액세스할 수 있게 하는 동기화 모델을 말한다.
트랜잭션 메모리는 테이블 룩업(table lookup) 메커니즘을 통해 구현될 수 있다. 특히 스레드는 공유 자원을 액세스하기 위하여 먼저 메모리에 저장된 테이블을 검사하여, 다른 스레드가 공유 자원의 동일 부분을 액세스중인지의 여부를 결정할 수 있다. 메모리에 저장된 테이블을 액세스하게 되면 성능을 감소시키는 오버헤드(overhead)를 발생시킬 수 있다.
도 1, 도 6, 및 도 7은 본 명세서에 기술된 다양한 실시예를 구현하는 데 이용될 수 있는 컴퓨팅 시스템의 실시예의 블록도.
도 2는 본 발명의 실시예에 따른 프로세서 코어 부분의 블록도.
도 3 내지 도 5는 본 발명의 다양한 실시예에 따른 방법의 블록도.
첨부도면을 참조한 상세한 설명을 기술할 것이다. 도면에서 최좌측 디지트는 참조번호가 처음 나타나는 도면을 식별한다. 상이한 도면에서 사용되는 동일한 참조번호는 유사하거나 혹은 동일 항목을 가리킨다.
후속되는 설명에서, 다수의 특정한 상세사항은 다양한 실시예를 완전히 이해할 수 있도록 설명된다. 그러나 소정 실시예는 특정 상세사항 없이 실행될 수 있다. 다른 경우, 잘 알려진 방법, 절차, 컴포넌트 및 회로가 특정 실시예를 모호하게 만들지 않도록 상세하게 기술되지 않았다.
본 명세서에 기술된 소정 실시예는 도 1 내지 도 7의 컴퓨팅 시스템을 참조 하여 기술한 실시예와 같이, HTM(Hardware transactional memory)과 STM(software transactional memory) 기법의 조합을 이용하는 무한 트랜잭션 메모리 시스템을 위한 효율적인 메커니즘을 제공할 수 있다. 더 구체적으로, 도 1은 본 발명의 실시예에 따른, 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 하나 이상의 프로세서(102-1 내지 102-N)(본원에서는 "프로세서들(102)" 또는 더 일반적으로는 "프로세서(102)"로서 언급됨)를 포함할 수 있다. 프로세서들(102)은 상호연결부(interconnection) 또는 버스(104)를 통해 통신할 수 있다. 각 프로세서는 다양한 컴포넌트를 포함할 수 있는데, 그들 중 일부가 명료성을 위해 오직 프로세서(102-1)를 참조하여 기술된다. 따라서 나머지 프로세서(102-2 내지 102-N)의 각각은 프로세서(102-1)를 참조하여 기술한 동일 또는 유사한 컴포넌트를 포함할 수 있다. 또한 본 명세서에서 기술한 실시예는 다중프로세서 컴퓨팅 시스템으로 제한되지 않고, 단일 프로세서 컴퓨팅 시스템에 적용될 수 있다.
실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본원에서는 "코어들(106)" 또는 더 일반적으로는 "코어(106)"로 언급됨), 캐시(108) 및/또는 라우터(110)를 포함할 수 있다. 프로세서 코어들(106)은 단일 집적 회로(IC) 칩 상에 구현될 수 있다. 또한 칩은 (캐시(108)와 같은) 하나 이상의 공유 및/또는 사설 캐시, (버스(112)와 같은) 버스 또는 상호연결부, (도 6 및 도 7을 참조하여 기술한 바와 같은) 메모리 컨트롤러 또는 다른 컴포넌트를 포함할 수 있다.
일 실시예에서, 라우터(110)는 시스템(100) 및/또는 프로세서(102-1)의 다양 한 컴포넌트들 간의 통신에 사용될 수 있다. 또한 프로세서(102-1)는 둘 이상의 라우터(110)를 포함할 수 있다. 더욱이 다수의 라우터(110)는 프로세서(102-1)의 내부 또는 외부의 다양한 컴포넌트들 간에 데이터 라우팅이 가능하도록 통신할 수 있다.
부가적으로, 캐시(108)는 프로세서(102-1)의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어들을 포함함)를 저장할 수 있다. 예를 들면 캐시(108)는 프로세서(102-1)의 컴포넌트가 더욱 신속한 액세스를 할 수 있도록 메모리(114)에 저장된 데이터를 국부적으로 캐시(cache)할 수 있다. 도 1에 도시된 바와 같이, 메모리(114)는 상호연결부(104)를 통해 프로세서(102-1)와 통신할 수 있다. 실시예에서, (공유될 수 있는) 캐시(108)는 레벨 2(L2) 캐시, 최종 레벨 캐시(last level cache; LLC) 또는 다른 유형의 캐시 중 하나 이상을 포함할 수 있다. 또한 코어들(106) 또는 프로세서들(102) 각각은 레벨 1(L1) 캐시를 포함할 수 있다. 프로세서(102-1)의 다양한 컴포넌트는 버스(예를 들면, 버스(112)) 및/또는 메모리 컨트롤러 또는 허브를 통해 직접 캐시(108)와 통신할 수 있다. 또한, 프로세서(102-1)는 둘 이상의 캐시를 포함할 수 있다. 도 2를 참조하여 더 기술되는 바와 같이, 메모리(114)는 또한 가상 및 물리 주소 간의 매핑(mapping)에 관한 정보를 저장하는 페이지 테이블(page table)(116)을 포함할 수 있다.
도 2는 본 발명의 실시예에 따른, 프로세서 코어(106)의 일부분들의 블록도를 도시한다. (프로세서 코어(106)와 같은) 하나 이상의 프로세서 코어는 도 1을 참조하여 기술한 바와 같이 단일 집적 회로 칩(또는 다이) 상에 구현될 수 있다. 또한 칩은 하나 이상의 공유 및/또는 사설 캐시(예를 들면, 도 1의 캐시(108)), 상호연결부(예를 들면, 도 1의 상호연결부(104 및/또는 112)), 메모리 컨트롤러 또는 다른 컴포넌트를 포함할 수 있다.
도 2에 도시된 바와 같이, 프로세서 코어(106)는 코어(106)의 실행을 위한 명령어들을 인출(fetch)하기 위한 인출부(fetch unit)(202)를 포함할 수 있다. 명령어는 도 6 및 도 7을 참조하여 기술한 메모리 장치 및/또는 메모리(114)와 같은 임의 저장 장치로부터 인출될 수 있다. 또한 코어(106)는 인출한 명령어를 디코딩하기 위한 디코드부(decode unit)(204)를 포함할 수 있다. 예를 들면 디코드부(204)는 인출한 명령어를 다수의 uops(micro-operations)로 디코딩할 수 있다.
부가적으로, 코어(106)는 스케줄부(206)를 포함할 수 있다. 스케줄부(206)는 명령어가 디스패치(dispatch)할 준비가 될 때까지, 예를 들면 디코딩된 명령어의 모든 소스값이 사용가능해질 때까지, (예를 들면 디코드부(204)로부터 수신한) 디코딩된 명령어를 저장하는 것과 관련된 다양한 동작을 수행할 수 있다. 일 실시예에서, 스케줄부(206)는 실행을 위해 실행부(208)로 디코딩된 명령어를 스케줄링 및/또는 발행(또는 디스패치)할 수 있다. 실행부(208)는 (예를 들면 디코드부(204)에 의해) 디코딩되고 (예를 들면 스케줄부(schedule unit)(206)에 의해) 디스패치된 후에 디스패치된 명령어를 실행할 수 있다. 실시예에서, 실행부(208)는 메모리 실행부, 정수 실행부, 부동소수점 실행부 또는 다른 실행부와 같은 둘 이상의 실행부를 포함할 수 있다. 또한 실행부(208)는 명령어를 비순차적으로(out-of-order) 실행할 수 있다. 따라서 프로세서 코어(106)는 일 실시예에서 비순차적 프 로세서 코어일 수 있다. 또한 코어(106)는 방출부(retirement unit)(210)를 포함할 수 있다. 방출부(210)는 명령어들이 커밋(commit)된 후에 실행된 명령어를 방출할 수 있다. 실시예에서, 실행된 명령어의 방출로 인해, 프로세서 상태가 명령어 실행으로부터 커밋되고, 명령어에 의해 사용되는 물리 레지스터는 할당해제(de-allocate)되는 등의 결과가 야기될 수 있다.
도 2에 도시된 바와 같이, 코어(106)는 (예를 들면 인출부(202)에 의해) 인출된 명령어의 트레이스(trace) 및/또는 마이크로코드(microcode)를 저장하기 위한 트레이스 캐시 또는 마이크로코드 판독전용 메모리(uROM)(212)를 추가적으로 포함할 수 있다. uROM(212)에 저장된 마이크로코드는 코어(106)의 다양한 하드웨어 컴포넌트를 구성하는 데 사용될 수 있다. 실시예에서, 도 6 및 도 7을 참조하여 기술된 컴퓨터 판독가능 매체 또는 다른 저장 장치와 같이, uROM(212)에 저장된 마이크로코드는 프로세서 코어(106)와 통신하는 다른 컴포넌트로부터 로드(load)될 수 있다.
또한 프로세서 코어(106)는 페이지 테이블(116)의 일부분들을 저장(또는 캐시)하기 위해 DTLB(data translation look-a-side buffer)(214)를 포함할 수 있다. 일 실시예에서, DTLB(214)는 CAM(content addressable memory)일 수 있다. 또한 프로세서 코어(106)는 하나 이상의 버스(예를 들면, 버스(104 및/또는 112))를 통해 프로세서 코어(106)의 컴포넌트들과 (도 1을 참조하여 기술한 컴포넌트들과 같은) 다른 컴포넌트들 간의 통신을 허용하기 위하여 버스부(216)를 포함할 수 있다. 페이지 테이블(116)과 DTLB(214)는 하나 이상의 엔트리(entry)를 포함할 수 있다. 일 실시예에서, DTLB(214)는 각 엔트리를 위해 (예를 들면 메모리 주소를 가상적으로 식별할 수 있는) 가상 주소(218), (예를 들면 메모리(114) 또는 가상 주소(218)에 대응하는 다른 메모리에서 물리 주소를 식별할 수 있는) 물리 주소(220), (예를 들면 DTLB(214) 내 대응 엔트리 또는 페이지의 소유자, 소유권 상태 및/또는 소유자 액세스 유형(예를 들면 판독 또는 기록 액세스)을 식별하기 위해 하나 이상의 비트를 포함하는) 소유권 플래그(ownership flag)(222), 및/또는 (예를 들면 대응 엔트리(또는 페이지)가 추론적으로(speculatively) 액세스되고 있다는 것을 가리키기 위해 스레드 또는 메모리 트랜잭션에 의해 이용될 수 있는) 추론 플래그(speculation flag)(224)와 같은 정보를 저장할 수 있다. 실시예에서, 페이지 테이블(116)은 또한 각 엔트리를 위한 필드(218-224)를 포함할 수 있다.
일 실시예에서, 페이지 테이블(116)은 각 엔트리를 위해 가상 주소 태그(226), 물리 주소 태그(228) 및/또는 물리 주소 데이터(230)와 같은 정보를 저장할 수 있다. 도 3 내지 도 5를 참조하여 본 명세서에 더 기술되는 바와 같이, 태그(226, 228)는 (예를 들면 물리 주소 데이터(230)를 얻기 위하여) 페이지 테이블(116)을 검색하는 데 이용될 수 있다.
실시예에서, 페이지 테이블 기본(base) 포인터(232)는 페이지 테이블(116)의 기본을 가리킬 수 있다. 또한 페이지 테이블 한계(limit) 포인터(234)는 페이지 테이블(116)의 상부(또는 마지막 엔트리)를 가리킬 수 있다. 포인터(232, 234)는 하드웨어 레지스터에 저장될 수 있거나, 혹은 (메모리(114)와 같은) 메모리에 변수로서 저장될 수 있다. 또한 코어(106)는 예를 들면 트랜잭션 메모리 요청의 하나 이상의 명령어에 대응하는 디스크립터(descriptor)를 저장하기 위해, 트랜잭션 디스크립터 레지스터(236)를 포함할 수 있다. 도 1 및 도 2를 참조하여 기술한 컴포넌트와 관련된 동작에 관한 보다 상세한 사항은 도 3 내지 도 5에 의해 예시되는 방법을 참조하여 설명될 것이다.
더 구체적으로, 도 3은 HTM 및/또는 STM 트랜잭션에 대응한 하나 이상의 명령어를 실행하기 위한 방법(300)의 실시예를 도시하는 블록도이다. 실시예에서, 도 1 및 2, 도 6 및 도 7을 참조하여 기술한 다양한 컴포넌트는 도 3을 참조하여 기술한 하나 이상의 동작을 수행하는 데 활용될 수 있다.
도 1 내지 도 3을 참조하면, 동작(302)에서, 코어(106)에 의해 실행중인 스레드는 HTM 트랜잭션을 시작할 수 있다. 스레드는 코어(106)에 의해 실행되는 하나 이상의 명령어를 포함할 수 있다(304). 따라서 스레드는 (하나 이상의 로드 또는 저장 동작과 같은) HTM 액세스 요청에 대응하는 하나 이상의 명령어를 포함할 수 있다. 동작(306)에서, (예를 들면 상이한 프로세서 코어상에서 실행중인, 동일 스레드 또는 다른 스레드에 대응하는 명령어일 수 있는) 다른 명령어와 충돌이 있는 경우에, 동작(308)에서 하드웨어 트랜잭션을 중지한다. 예를 들면 충돌중인 명령어는 동작(302)의 HTM 트랜잭션이 액세스중인(혹은 추론 플래그(224)에 저장된 값에 의해 지시되는 바와 같이 액세스 중으로 표시된) DTLB(214)에서 엔트리를 위한 스누프(snoop)를 송신할 수 있다.
동작(306)에서 충돌이 발생하지 않은 경우, 동작(310)에서 코어(106)는 동작(302)의 HTM에 대응하는 하드웨어 트랜잭션이 (예를 들어, 방출부(210)에 의해) 커밋되었는지의 여부를 결정할 수 있다. 하드웨어 트랜잭션이 커밋되었다면, 코어(106)는 메모리(114), 페이지 테이블(116) 및/또는 DTLB(214)에서 대응하는 데이터를 갱신할 수 있다. 반면에, 동작(310)에서 하드웨어 트랜잭션(또는 그의 명령어들 중 하나)가 커밋되지 못했다면, 코어(106)는 하드웨어 오버플로우(hardware overflow)로 인하여, 예를 들면 캐시 오버플로우, 예외 조건, 인터럽트, 예외, 페이지 결함, 입력/출력 명령어 또는 다른 하드웨어 오버플로우 조건으로 인하여, 커밋이 실패했는지의 여부를 결정할 수 있다(314). 하드웨어 오버플로우가 발생되지 않으면(314), 코어(106)는 예를 들면 동작(302)의 HTM 트랜잭션에 대응하는 나머지 명령어를 실행하기 위해 동작(304)을 계속할 수 있다. 하드웨어 오버플로(314)의 경우, 코어(106)는 동작(320)에서 STM 트랜잭션을 시작할 수 있다. 실시예에서, 동작(302)의 HTM과 동작(320)의 STM은 메모리(114)로의 동일한 액세스(예를 들면 하나 이상의 판독 또는 기록 동작)를 하게 할 수 있다. 따라서 일 실시예에서, 일단 동작(302)의 HTM이 동작(314)에서 하드웨어 오버플로우로 인하여 커밋에 실패하면, 동일한 메모리 동작(들)이 동작(320)의 STM에 의해 수행될 수 있다. 동작(322)에서, 코어(106)는 STM에 대응하는 하나 이상의 명령어를 수행할 수 있다. 따라서 스레드는 (하나 이상의 로드 또는 저장 동작과 같은) STM 액세스 요청에 대응하는 하나 이상의 명령어를 포함할 수 있다. 동작(324)에서, 코어(106)는 STM 트랜잭션이 성공적으로 커밋되었는지의 여부를 결정할 수 있다. STM 트랜잭션이 여전히 커밋된다면(324), 코어(106)는 동작(320)의 STM 트랜잭션에 대응하는 나머지 명령어를 계속 실행할 수 있다. 소프트웨어 트랜잭션이 커밋된다면(324), 동 작(312)에서 코어(106)는 메모리(114), 페이지 테이블(116) 및/또는 DTLB(214)에서 대응하는 데이터를 갱신할 수 있다. 실시예에서, 동작(312)은 예를 들면 (동작(310 및/또는 324)에서) 커밋된 후에 추론적 갱신이 원자적으로(atomically) 명백해지도록, 원자적으로 수행될 수 있다.
일 실시예에서 도 4 및 도 5를 참조하여 더 기술하는 바와 같이, 코어(106)는 추론적으로 방법(300)을 참조하여 기술된 명령어를 실행할 수 있다. 예를 들면 동작(302 및/또는 320)에서, 코어(106)는 DTLB(214) 및/또는 페이지 테이블(116)의 대응하는 엔트리가 추론적으로 액세스된다는 것을 나타내기 위해 추론 플래그(224)에 값을 저장할 수 있다. (동작(308)에서) 일단 HTM이 중지되거나, 혹은 HTM 또는 STM 트랜잭션이 동작(312)에서 성공적으로 커밋되면, 코어(106)는 대응하는 엔트리가 더 이상 추론적으로 액세스되지 않는다는 것을 나타내기 위해 추론 플래그(224)를 갱신할 수 있다. 실시예에서, 동작(306)의 충돌은 (예를 들면 추론 플래그(224)를 통해) 추론적으로 액세스된 것으로서 동작(302)의 HTM 트랜잭션에 의해 표시된 엔트리에 대한 스누프 액세스에 의해 발생될 수 있다. 적어도 하나의 명령어 집합 아키텍처에 따라서, 스누프는 소유권(또는 "RFO") 명령어에 대한 요청에 의해 발생될 수 있다. 따라서 프로세서 코어(106)는 예를 들면 다른 프로세서 코어의 다른 DTLB에서의 대응하는 엔트리를 무효화시키기 위해 DTLB 엔트리(214)의 배타적 소유권(exclusive ownership)을 가질 수 있다.
또한 실시예에서, 다중 코어 프로세서(예를 들면 프로세서(102-1))에서 DTLB(214A)의 일관성(coherence)을 유지하기 위하여 DTLB 슛-다운(shoot-downs)을 사용할 수 있다. DTLB 슛-다운은 일반적으로 하나의 스레드가 페이지 테이블(116)로 변경(들)을 행하는 상황을 말하며, 결과적으로 그들 각 DTLB(214)로부터 대응하는 엔트리를 제거하기 위해 신호가 다른 코어(106)로 송신된다. 일 실시예에서, 페이지 테이블(116)의 필드(226-230)는 캐시 일관성 프로토콜(cache coherent protocol)에 부가적으로 이용될 수 있다. 예를 들면 DTLB(214)(및 페이지 테이블(116))는 포인터(232, 234)에 의해 식별되는 부분과 같은 (예를 들면 메모리(114)에서와 같은) 물리 메모리의 식별가능한 부분에 저장될 수 있다. 코어(106)(또는 코어(106)에 제공되는 스누프 필터)는 버스(104/112) 상의 스누프를 검출할 때, 페이지 테이블(116)의 필드(226-230)를 참조함으로써, 스누프가 캐시 또는 DTLB(214)를 위한 것인지의 여부를 알 수 있다. 실시예에서, 프로세서 코어(106)가 DTLB(214) 엔트리의 소유권을 가지기를 원할 때, 대응하는 물리 주소를 위한 스누프를 송신할 수 있고, 이 물리 주소는 물리 주소 태그(226)를 사용하여 페이지 테이블(116)에서 조사되고, 선택적으로 물리 주소 데이터 필드(230)에 저장된 데이터가 제공될 수 있다.
도 4는 HTM 트랜잭션에 대응하는 하나 이상의 명령어를 실행하기 위한 방법(400)의 실시예를 도시하는 블록도이다. 일 실시예에서, 도 4는 도 3의 방법(300)을 참조하여 기술된 동작들 중 일부에 관한 보다 상세한 사항을 도시한다. 또한 도 1, 도 2, 도 6 및 도 7을 참조하여 기술한 다양한 컴포넌트를 사용하여, 도 4를 참조하여 기술한 하나 이상의 동작을 수행할 수 있다.
도 1 내지 도 4를 참조하면, 각각 동작(302 내지 304)을 참조하여 기술한 바 와 같이, 동작(402 내지 404)에서 코어(106)는 HTM 트랜잭션을 시작할 수 있고, HTM 트랜잭션에 대응하는 하나 이상의 명령어를 실행할 수 있다. 동작(306)을 참조하여 기술한 바와 같이, 동작(406)에서, 예를 들면 다른 명령어에 의해 추론적으로 액세스되는 DTLB 엔트리를 위한 소유권 요청이 있는지의 여부를 결정할 수 있다. 소유권 요청(406)이 있는 경우, 동작(402)의 HTM 트랜잭션이 중지될 수 있다. 일 실시예에서 HTM 트랜잭션의 중지 후에, 제어는 동일한 HTM 트랜잭션을 재시도하는지 혹은 다른 동작을 취할 것인지의 여부를 결정하기 위해 사용자 레벨 중지 핸들러(user-level abort handler)로 이전(transfer)될 수 있다.
동작(406)에서 수신한 소유권 요청이 없다면, 코어(106)는 동작(410)에서 HTM 트랜잭션에 대응하는 하나 이상의 명령어를 계속 실행한다. 동작(412)에서, (HTM 트랜잭션의 명령어에 의해 액세스되는 가상 또는 물리 주소에 대응하는 엔트리가, 예를 들면 그 엔트리의 이전 퇴거(eviction)로 인하여, DTLB(214)에 없을 때와 같은) DTLB 미스(miss)가 있는 경우, 동작(414)에서 대응하는 데이터(예를 들면 페이지 테이블(116)의 일부분)는 페이지 테이블(116)로부터 DTLB(214)로 복사될 수 있다. 복사된 정보는 대응하는 가상 주소(218), 물리 주소(220), 소유권 플래그(222) 및/또는 추론 플래그(224)를 포함할 수 있다.
동작(416)에서, 코어(106)는 동작(414)에서 페이지 테이블(116)로부터 복사된 엔트리의 소유권 플래그(222)가 대응하는 엔트리의 유효한 소유권을 가리키는지의 여부를 결정할 수 있다. 소유권 플래그(222)가 유효 값(예를 들면 실시예에서 널이 아닌 값(non-null value))을 가리킨다면, 코어(106)는 동작(408)에서 하드웨 어 트랜잭션을 중지한다. 도 2를 참조하여 기술한 바와 같이, 소유권 플래그(222)는 또한 소유자 액세스 유형 정보(예를 들면 판독 또는 기록 액세스)를 포함할 수 있다. 실시예에서, 소유권 플래그(222)의 하나 이상의 비트가 소유자가 판독 액세스를 수행하고 있음을 나타내는 경우, 방법(400)은 (부분적으로, DTLB(214)의 동일 엔트리로부터 판독한 두 명령어가 충돌을 일으키지 않을 수 있으므로) 동작(402)에서 계속될 수 있다. 또한 소유권 플래그(222)가 비-유효(non-valid) 값(예를 들면 실시예에서 널 값)을 가리키는 경우, 코어(106)는 동작(402)의 HTM 트랜잭션에 대응하는 나머지 명령어를 계속 실행한다.
동작(418)에서, 코어(106)는 동작(402)의 HTM에 대응하는 하드웨어 트랜잭션이 (예를 들면 방출부(210)에 의해) 커밋되었는지의 여부를 결정할 수 있다. 하드웨어 트랜잭션이 커밋된 경우, 코어(106)는 메모리(114), 페이지 테이블(116) 및/또는 DTLB(214)에서 대응하는 데이터를 갱신할 수 있다(420). 달리, 하드웨어 트랜잭션(또는 그의 명령어들 중 하나)이 동작(418)에서 커밋되는데 실패한 경우, 코어(106)는 이 커밋 실패가 하드웨어 오버플로우(422), 예를 들면 캐시 오버플로우, 예외 조건, 인터럽트, 예외, 페이지 결함, 입력/출력 명령어 또는 다른 하드웨어 오버플로우 조건으로 인한 것인지를 결정할 수 있다. 하드웨어 오버플로우가 발생하지 않은 경우(422), 코어(106)는 예를 들면 동작(402)의 HTM 트랜잭션에 대응하는 나머지 명령어를 실행하기 위하여, 동작(404)을 계속할 수 있다. 하드웨어 오버플로우의 경우(422), 도 5를 참조하여 더 기술하는 바와 같이, 코어(106)는 STM 트랜잭션을 시작할 수 있다.
도 5는 STM 트랜잭션에 대응하는 하나 이상의 명령어를 실행하기 위한 방법(500)의 실시예를 도시하는 블록도이다. 일 실시예에서, 도 4는 도 3의 방법(300)을 참조하여 기술한 동작들 중 일부에 관해 보다 상세한 사항을 기술한다. 또한 도 1, 도 2, 도 6 및 도 7을 참조하여 기술한 다양한 컴포넌트는 도 5를 참조하여 기술한 하나 이상의 동작을 수행하는 데 이용될 수 있다.
도 1 내지 도 5를 참조하면, 동작(320 내지 322)을 각각 참조하여 기술한 바와 같이, 동작(502 내지 504)에서 코어(106)는 STM 트랜잭션을 시작하고, 이 STM 트랜잭션에 대응하는 하나 이상의 명령어를 실행할 수 있다. 동작(506)에서 코어(106)는 (예를 들면 동작(504)에서의 명령어 실행으로 인해) DTLB(214)의 임의의 액세스된 엔트리들의 소유권 플래그(222)를 갱신할 수 있다. 도 2를 참조하여 기술한 바와 같이, 소유권 플래그(222)는 대응하는 엔트리의 소유자 또는 소유권 상태를 식별하기 위해 하나 이상의 비트를 포함할 수 있다. 일 실시예에서, 동작(502)에서 코어(106)는 STM 트랜잭션에 대응하는 값(예를 들면 트랜잭션 식별자)을 트랜잭션 디스크립터 레지스터(236)에 저장할 수 있다. 후속하여, 동작(506)에서, 코어(106)는 트랜잭션 디스크립터 레지스터(236)에 저장된 값을 대응하는 엔트리의 소유권 플래그(222)로 복사할 수 있다.
동작(508)에서, 코어(106)는 STM 트랜잭션이 성공적으로 커밋되었는 지의 여부를 결정할 수 있다. STM 트랜잭션이 여전히 커밋된 경우(508), 코어(106)는 동작(502)의 STM 트랜잭션에 대응하는 나머지 명령어를 계속 실행할 수 있다. 소프트웨어 트랜잭션이 커밋된 경우(508), 동작(510)에서 코어(106)는 메모리(114), 페 이지 테이블(116) 및/또는 DTLB(214)에서 대응하는 데이터를 갱신할 수 있다. 실시예에서, 동작(510)은 예를 들면 (동작 508에서) 커밋된 후에, 추론적 갱신이 원자적으로 명백해지도록 원자적으로 수행될 수 있다.
도 3을 참조하여 기술한 바와 같이, (예를 들면, 동작(302 또는 402)의) HTM과 (예를 들면, 동작(320 또는 502)의) STM은 메모리(114)로의 동일한 액세스(예를 들면 하나 이상의 판독 또는 기록 동작)를 하게 할 수 있다. 또한 일 실시예에서, 도 3 내지 도 5를 참조하여 기술한 동작을 구현하기 위해, 컴파일러는 다음의 동기화 유사 코드(synchronized pseudo code) 블록의 두 사본(copies)을 생성할 수 있다.
Figure 112008046561767-pct00001
유사 코드의 두 컴파일 사본은 다음과 같을 수 있다.
Figure 112008046561767-pct00002
전술한 유사 코드 및 도 1 내지 도 5를 참조하면, COPY #1이 HTM으로서의 실행에 실패한다면, 제2 유사 코드(COPY #2)가 (도 3 내지 도 5를 참조하여 기술한 바와 같이) STM으로서 실행될 수 있다. 따라서 HTM 코드는 HTM 트랜잭션으로서 원자적 영역(atomic region)을 실행할 수 있다. 일 실시예에서, HTM 코드는 트랜잭션 일관성을 보장하기 위한 캐시 일관성 메커니즘에 의존할 수 있고, 도 3 내지 도 5를 참조하여 기술한 바와 같이 페이지 테이블(116) 엔트리들의 임의 소유권을 가질 수 없을 수도 있다. HTM 트랜잭션이 하드웨어 오버플로우(422)로 인해 커밋에 실패한다면, STM 코드(COPY #2)는 STM 트랜잭션으로서 실행될 수 있다.
전술한 샘플 STM 코드(COPY #2)에 도시된 바와 같이, 프로그램은 먼저, STM 트랜잭션(502)에 대응하는 디스크립터(또는 식별자)를 레지스터(236)로 로드할 수 있다. 적어도 한 명령어 집합 아키텍처에 따라서, 프로그램(COPY #2)은 그 후 로드 및 저장 명령어를 위해 명령어 "DLoad"와 "DStore"를 각각 사용할 수 있다. 일 실시예에서, "DLoad" 명령어는, 예를 들면 레지스터(236)의 값을 대응하는 소유권 플래그(222)의 일부분으로 복사함으로써, 대응하는 DTLB(214) 엔트리의 배타적 소유권을 얻을 수 있다. 실시예에서, "DStore" 명령어는, 예를 들면 레지스터(236)의 값을 대응하는 소유권 플래그(222)의 일부분으로 복사함으로써, 대응하는 DTLB(214) 엔트리의 배타적 소유권을 얻을 수 있다. "STM_commit()" 명령어는 STM 코드(508)의 성공적인 커밋을 테스트할 수 있다.
적어도 하나의 명령어 집합 아키텍처에 따라서, "DRelease" 명령어는 (예를 들면 플래그를 널로 설정함으로써) 예를 들면 대응한 소유권 플래그(222)를 갱신함으로써 DTLB(214)의 하나 이상의 엔트리(또는 페이지)의 소유권을 포기하는 데 사용될 수 있다. 일 실시예에서, (예를 들면 STM 코드를 참조하여 언급한) 모든 저장은 (예를 들면 캐시(108)에서와 같이) 스레드-사설 메모리 위치(thread-private memory location)로 행해지는 반면에, STM 트랜잭션에 대응하는 하나 이상의 명령어는 실행중이다(322). 코드가 STM 트랜잭션의 끝(end)에 도달하고, 성공적으로 커밋할 수 있을 때(324), 갱신은 동작(312, 420 및/또는 510)을 참조하여 기술한 바와 같이 대응하는 위치로 복사된다. 따라서 이들 동작은 스레드가 액세스한 모든 페이지의 소유권을 해제(release)하기 위한 "DRelease" 명령어를 사용할 수 있다.
도 6은 컴퓨팅 시스템(600)의 실시예의 블록도를 도시한다. 컴퓨팅 시스 템(600)은 상호연결부(또는 버스)(604)와 통신하는 하나 이상의 중앙 처리 장치(들)(CPUs) 또는 프로세서들(602)을 포함할 수 있다. 실시예에서, 프로세서(602)는 도 1의 프로세서(102)와 동일하거나 혹은 유사할 수 있다. 또한 상호연결부(604)는 도 1 및 도 2를 참조하여 기술한 상호연결부(104 및/또는 112)와 동일하거나 혹은 유사할 수 있다. 프로세서(602)는 범용 프로세서, 네트워크 프로세서(예를 들면 컴퓨터 네트워크를 통해 통신하는 데이터를 처리하는 프로세서), 또는 RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer) 프로세서를 포함한 또 다른 프로세서와 같은 임의 유형의 프로세서를 포함할 수 있다. 또한 프로세서(602)는 예를 들면 도 1을 참조하여 기술한 바와 같은 하나 이상의 프로세서 코어(106)를 포함한 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 가진 프로세서(602)는 동일한 IC(Integrated circuit) 다이 상에 상이한 유형의 프로세서 코어를 집적시킬 수 있다. 또한 다중 코어 설계를 가진 프로세서(602)는 대칭 또는 비대칭 다중프로세서로서 구현될 수 있다.
도 6에 도시된 바와 같이, 칩셋(chipset)(606)은 상호연결부(604)와 통신할 수 있다. 칩셋(606)은 MCH(memory control hub)(608)를 포함할 수 있다. MCH(608)는 메모리(114)와 통신하는 메모리 컨트롤러(610)를 포함할 수 있다. 메모리(114)는 예를 들면 프로세서(602), 혹은 컴퓨팅 시스템(600)과 통신하는 임의 다른 장치에 의해 실행되는 명령어들의 시퀀스들을 포함한 데이터를 저장할 수 있다. 도 6에 도시된 바와 같이, 메모리(114)는 도 1 내지 도 5를 참조하여 기술한 바와 같은 페이지 테이블(116)을 포함할 수 있다. 본 발명의 일 실시예에서, 메모리(114)는 RAM(random access memory), DRAM(dynamic RAM), SDRAM(synchronous DRAM), SRAM(static RAM) 또는 다른 휘발성 메모리 장치와 같은 하나 이상의 휘발성 저장소(또는 메모리) 장치를 포함할 수 있다. 또한, 하드 디스크와 같은 비휘발성 메모리가 이용될 수 있다. 다수의 프로세서 및/또는 다수의 시스템 메모리와 같은 부가적인 장치가 상호연결부(604)를 통해 통신할 수 있다.
MCH(608)는 그래픽 가속기(616)와 통신하는 그래픽 인터페이스(614)를 더 포함할 수 있다. 일 실시예에서, 그래픽 인터페이스(614)는 AGP(accelerated graphics port)를 통해 그래픽 가속기(616)와 통신할 수 있다. 본 발명의 실시예에서, (평면 디스플레이(flat panel display)와 같은) 디스플레이는, 예를 들면 비디오 메모리 또는 시스템 메모리와 같이 저장 장치에 저장된 이미지의 디지털 표현을, 디스플레이에 의해 번역 및 표시되는 디스플레이 신호로 변환하는(translate) 신호 변환기(signal converter)를 통해, 그래픽 인터페이스(614)와 통신할 수 있다. 다양한 실시예에서, 디스플레이 장치에 의해 생성된 디스플레이 신호는 디스플레이에 의해 번역되고 후속하여 디스플레이 상에 표시되기 전에 다양한 제어 장치를 통과할 수 있다.
또한 허브(hub) 인터페이스(618)는 MCH(608)와 ICH(input/output(I/O) control hub)(620) 간에 통신을 가능하게 할 수 있다. ICH(620)는 컴퓨팅 시스템(600)과 통신하는 I/O 장치에 대해 인터페이스를 제공할 수 있다. ICH(620)는 PCI(peripheral component interconnect) 브리지 또는 USB(universal serial bus) 컨트롤러와 같은 주변 브리지(또는 컨트롤러)(624)를 통해 버스(622)와 통신할 수 있다. 브리지(624)는 프로세서(602)와 주변 장치 간의 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들(topologies)이 이용될 수 있다. 또한 다수의 버스가 예를 들면 다수의 브리지 또는 컨트롤러를 통해 ICH(620)와 통신할 수 있다. 더욱이 ICH(620)와 통신하는 다른 주변 장치는 본 발명의 다양한 실시예에서 IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들) 또는 디지털 데이터 지원 인터페이스(예를 들면 디지털 비디오 인터페이스(DVI))를 포함할 수 있다.
버스(622)는 오디오 장치(626), 하나 이상의 디스크 드라이브(들)(628) 및 네트워크 어댑터(630)와 통신할 수 있다. 네트워크 어댑터(630)는 컴퓨터 네트워크(631)와 통신할 수 있으므로, 예를 들어 시스템(600)의 다양한 컴포넌트가 네트워크(631)를 통해 데이터를 송신 및/또는 수신할 수 있게 한다. 다른 장치가 버스(622)를 통해 통신할 수 있다. 또한 (네트워크 어댑터(630)와 같은) 다양한 컴포넌트가 본 발명의 소정 실시예에서 MCH(608)와 통신할 수 있다. 또한 프로세서(602)와 MCH(608)는 단일 칩을 형성하도록 결합될 수 있다. 더욱이 그래픽 가속기(616)는 본 발명의 다른 실시예에서 MCH(608) 내에 포함될 수 있다.
실시예에서, 컴퓨팅 시스템(600)은 휘발성 및/또는 비휘발성 메모리(또는 저장소)를 포함할 수 있다. 예를 들면 비휘발성 메모리는 ROM(read-only memory), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디 스크드라이브(예를 들면, 참조번호 628), 플로피 디스크, CD-ROM(콤팩트 디스크 ROM), DVD(digital versatile disk), 플래시 메모리, 자기광학 디스크, 또는 (예를 들면 명령어를 포함한) 전자 데이터를 저장하기 위한 다른 유형의 비휘발성 머신-판독가능 매체 중의 하나 이상을 포함할 수 있다.
도 7은 본 발명의 실시예에 따른, PTP(point to point) 구성으로 배치된 컴퓨팅 시스템(700)을 도시한다. 특히 도 7은 프로세서들, 메모리 및 입력/출력 장치들이 다수의 PTP 인터페이스에 의해 상호연결되는 시스템을 도시한다. 도 1 내지 도 6을 참조하여 기술한 동작은 시스템(700)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
도 7에 도시된 바와 같이, 시스템(700)은 여러 프로세서를 포함할 수 있는데, 명료성을 위해 이들 중 단지 두 프로세서(702, 704)만을 도시하였다. 프로세서(702, 704)의 각각은 메모리(710, 712)와 통신할 수 있도록 로컬 MCH(706, 708)를 포함할 수 있다. 메모리(710 및/또는 712)는 도 1, 도 2, 및 도 6의 메모리(114)를 참조하여 기술한 바와 같이 다양한 데이터를 저장할 수 있다.
실시예에서, 프로세서(702, 704)는 도 6을 참조하여 기술한 프로세서(602) 중의 하나일 수 있다. 프로세서(702, 704)는 각각 PTP 인터페이스 회로(716, 718)를 사용하여 PTP 인터페이스(714)를 통해 데이터를 교환할 수 있다. 또한 프로세서(702, 704)의 각각은 PTP 인터페이스 회로(726, 728, 730, 732)를 사용하여 개별 PTP 인터페이스(722, 724)를 통해 칩셋(720)과 데이터를 교환할 수 있다. 칩셋(720)은 또한 예를 들면 PTP 인터페이스 회로(737)를 사용하여 고성능 그래픽 인 터페이스(736)를 통해 고성능 그래픽 회로(734)와 데이터를 교환할 수 있다.
본 발명의 적어도 하나의 실시예가 프로세서(702, 704) 내에 제공될 수 있다. 예를 들면 도 1 또는 도 2의 하나 이상의 코어(106)는 프로세서(702, 704) 내에 위치될 수 있다. 그러나 본 발명의 다른 실시예가 도 7의 시스템(700)내 다른 회로, 논리 유닛, 또는 장치에 존재할 수 있다. 또한 본 발명의 다른 실시예가 도 7에 도시된 몇몇 회로, 논리 유닛, 또는 장치에 걸쳐 분산될 수 있다.
칩셋(720)은 PTP 인터페이스 회로(741)를 사용하여 버스(740)와 통신할 수 있다. 버스(740)는 버스 브리지(742) 및 I/O 장치(743)와 같이 그와 통신하는 하나 이상의 장치를 가질 수 있다. 버스 브리지(742)는 버스(744)를 통해 키보드/마우스(745), (모뎀, 네트워크 인터페이스 장치(예를 들면 도 6의 네트워크 어댑터(630), 또는 컴퓨터 네트워크(631)와 통신할 수 있는 다른 통신 장치와 같은) 통신 장치(746), 오디오 I/O 장치 및/또는 데이터 저장 장치(748)와 같은 다른 장치와 통신할 수 있다. 데이터 저장 장치(748)는 프로세서(702 및/또는 704)에 의해 실행될 수 있는 코드(749)를 저장할 수 있다.
본 발명의 다양한 실시예에서, 예를 들면 도 1 내지 도 7을 참조하여 본 명세서에 기술한 동작은 하드웨어(예를 들면 논리 회로), 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있고, 이들은 예를 들면, 본 명세서에 기술된 프로세스를 수행하도록 컴퓨터를 프로그램하는 데 사용되는 명령어들(또는 소프트웨어 절차들)을 저장한 머신 판독가능 또는 컴퓨터 판독가능 매체를 포함한, 컴퓨터 프로그램 제품으로서 제공될 수 있다. 머신 판독가능 매체는 도 1 내지 도 7에 대해 기술한 바와 같은 저장 장치를 포함할 수 있다.
또한 이러한 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 여기서 프로그램은 통신 링크(예를 들면 버스, 모뎀 또는 네트워크 연결)를 통해 반송파 또는 다른 전달 매체로 구현된 데이터 신호에 의해 원격 컴퓨터(예를 들면 서버)로부터 요청 컴퓨터(예를 들면 클라이언트)로 전송될 수 있다. 따라서 여기서 반송파는 머신 판독가능 매체를 포함하는 것으로 간주될 수 있다.
명세서에서 "일 실시예" 또는 "실시예"는 그 실시예와 함께 기술된 특정 특징, 구조 또는 특성이 적어도 구현(implementation)에 포함될 수 있다는 것을 의미한다. 명세서의 다양한 위치에서 구문 "일 실시예에서"라는 언급은 동일한 실시예를 언급할 수도 있고, 혹은 그렇지 않을 수도 있다.
또한 명세서 및 청구범위에서, 용어 "결합된(coupled)" 또는 "연결된(connected)" 및 그들의 파생어가 사용될 수 있다. 본 발명의 소정 실시예에서, 용어 "연결된"은 둘 이상의 요소가 서로 직접적으로 물리 또는 전기 접촉한다는 것을 나타내는 데 사용될 수 있다. 용어 "결합된"은 둘 이상의 요소가 직접적으로 물리 또는 전기 접촉을 한다는 것을 의미할 수 있다. 그러나 용어 "결합된"은 둘 이상의 요소가 서로 직접 접촉하지 않을 수 있지만 여전히 서로 협동하거나 또는 상호작용할 수 있다는 것을 의미할 수 있다.
따라서 본 발명의 실시예가 구조적 특징들 및/또는 방법론적 작용들(acts)에 특정적인 언어로 기술되었지만, 청구된 주제는 기술된 특정 특징들 또는 작용들로 제한되지 않을 수 있다는 것을 이해해야 한다. 오히려 특정 특징들 및 작용들은 청구된 주제를 구현하는 샘플 형태로서 개시된다.

Claims (30)

  1. 프로세서로서,
    스레드(thread)에 대응하는 선행된 하드웨어 트랜잭션 메모리 액세스(transactional memory access)가 수행에 실패한 후에, 상기 스레드에 대응하는 소프트웨어 트랜잭션 메모리 액세스가 수행되게 하는 논리부(logic); 및
    추론 플래그(speculation flag)에 대응하는 엔트리가 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리의 개시에 응답하여 추론적으로 액세스된다는 것을 나타내기 위해, 상기 추론 플래그를 저장하는 메모리
    를 포함하며,
    상기 추론 플래그는, 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리 중 하나의 커밋(commitment)에 응답하여, 상기 추론 플래그에 대응하는 엔트리가 추론적으로 액세스되지 않는다는 것을 나타내기 위해, 갱신되는 프로세서.
  2. 제1항에 있어서,
    상기 논리부는 상기 소프트웨어 트랜잭션 메모리 액세스 및 상기 하드웨어 트랜잭션 메모리 액세스 중의 적어도 하나가 추론적으로(speculatively) 실행될 수 있게 하는 프로세서.
  3. 제1항에 있어서,
    상기 프로세서는 상이한 명령어와의 충돌(conflict)이 발생될 때에 상기 하드웨어 트랜잭션 메모리 액세스를 중지(abort)하는 프로세서.
  4. 제3항에 있어서,
    상기 상이한 명령어는 상기 소프트웨어 트랜잭션 메모리 액세스에 대응하는 명령어인 프로세서.
  5. 제3항에 있어서,
    상기 상이한 명령어를 실행하기 위해 적어도 하나의 프로세서 코어를 더 포함하는 프로세서.
  6. 제1항에 있어서,
    상기 하드웨어 트랜잭션 메모리 액세스에 대응하는 제1 명령어와 상기 소프트웨어 트랜잭션 메모리 액세스에 대응하는 제2 명령어 중의 적어도 하나에 대응하는 정보를 저장하기 위한 메모리를 더 포함하며, 상기 프로세서는 상기 제1 및 제2 명령어들 중의 적어도 하나가 커밋(commit)할 때에 상기 저장된 정보를 갱신하는 프로세서.
  7. 제1항에 있어서,
    데이터를 저장하기 위한 메모리를 더 포함하며, 상기 하드웨어 트랜잭션 메모리 액세스 및 상기 소프트웨어 트랜잭션 메모리 액세스는 상기 메모리에 저장된 상기 데이터에 대해 동일 동작을 수행하는 프로세서.
  8. 제1항에 있어서,
    상기 메모리는 상기 하드웨어 트랜잭션 메모리 액세스와 상기 소프트웨어 트랜잭션 메모리 액세스 중 적어도 하나에 대응하는 정보를 저장하기 위한 것이며, 상기 저장된 정보는 가상 주소, 물리 주소 및 소유권 플래그(ownership flag)를 포함하는 프로세서.
  9. 제1항에 있어서,
    상기 메모리는 CAM(content addressable memory)을 포함하는 프로세서.
  10. 제1항에 있어서,
    상기 메모리는 DTLB(data translation look-a-side buffer)를 포함하는 프로세서.
  11. 제1항에 있어서,
    페이지 테이블(page table)을 저장하기 위한 메모리를 더 포함하고, 상기 페이지 테이블은 가상 주소 태그, 물리 주소 태그 및 물리 주소 데이터 중의 하나 이상을 포함한 데이터를 저장하는 프로세서.
  12. 제11항에 있어서,
    상기 페이지 테이블의 마지막 엔트리(entry)를 가리키는 페이지 테이블 한계 포인터(page table limit pointer)를 저장하기 위한 레지스터를 더 포함하는 프로세서.
  13. 제1항에 있어서,
    상기 소프트웨어 트랜잭션 메모리 액세스에 대응하는 디스크립터(descriptor)를 저장하기 위한 레지스터를 더 포함하는 프로세서.
  14. 제1항에 있어서,
    다수의 코어(core)를 더 포함하는 프로세서.
  15. 제1항에 있어서,
    상기 하드웨어 트랜잭션 메모리 액세스는 하드웨어 오버플로우(overflow)로 인해 수행에 실패하는 프로세서.
  16. 하드웨어 트랜잭션 메모리 액세스에 대응하는, 스레드의 제1 명령어를 실행하는 단계;
    상기 제1 명령어가 커밋에 실패할 때, 소프트웨어 트랜잭션 메모리 액세스에 대응하는, 상기 스레드의 제2 명령어를 실행하는 단계; 및
    추론 플래그에 대응하는 엔트리가 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리의 개시에 응답하여 추론적으로 액세스된다는 것을 나타내기 위해, 상기 추론 플래그를 저장하는 단계
    를 포함하며,
    상기 추론 플래그는, 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리 중 하나의 커밋에 응답하여, 상기 추론 플래그에 대응하는 엔트리가 추론적으로 액세스되지 않는다는 것을 나타내기 위해 갱신되는 방법.
  17. 제16항에 있어서,
    상기 제1 명령어 및 상기 제2 명령어 중의 적어도 하나를 추론적으로 실행하는 단계를 더 포함하는 방법.
  18. 제16항에 있어서,
    상기 제1 명령어 및 상기 제2 명령어는 메모리에 저장된 데이터에 대해 동일 동작을 수행하는 방법.
  19. 제16항에 있어서,
    상이한 명령어와의 충돌이 발생될 때, 상기 제1 명령어를 중지하는 단계를 더 포함하는 방법.
  20. 제16항에 있어서,
    상기 제2 명령어에 대응하는 소유권 정보를 DTLB에 저장하는 단계를 더 포함하는 방법.
  21. 제16항에 있어서,
    상기 제1 명령어는 하드웨어 오버플로우로 인해 커밋에 실패하는 방법.
  22. 하드웨어 트랜잭션 메모리 동작에 대응하는 제1 명령어 및 소프트웨어 트랜잭션 메모리 동작에 대응하는 제2 명령어를 저장하기 위한 메모리;
    상기 하드웨어 트랜잭션 메모리 동작의 수행이 캐시 메모리내 오버플로우 조건을 발생시킬 경우에, 상기 제2 명령어를 인출(fetch)하기 위한 프로세서; 및
    추론 플래그에 대응하는 엔트리가 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리의 개시에 응답하여 추론적으로 액세스된다는 것을 나타내기 위해, 상기 추론 플래그를 저장하는 저장 유닛
    을 포함하며,
    상기 추론 플래그는, 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리 중 하나의 커밋에 응답하여, 상기 추론 플래그에 대응하는 엔트리가 추론적으로 액세스 되지 않는다는 것을 나타내기 위해 갱신되는 시스템.
  23. 제22항에 있어서,
    상기 메모리는 가상 주소와 물리 주소 간의 매핑(mapping)에 대응하는 정보를 저장하기 위한 페이지 테이블을 포함하는 시스템.
  24. 제23항에 있어서,
    상기 페이지 테이블은 가상 주소 태그, 물리 주소 태그 및 물리 주소 데이터 중의 하나 이상을 포함한 데이터를 저장하는 시스템.
  25. 제23항에 있어서,
    상기 페이지 테이블의 일부분을 저장하기 위해 CAM을 더 포함하는 시스템.
  26. 제22항에 있어서,
    오디오 장치를 더 포함하는 시스템.
  27. 프로세서상에 실행될 때,
    하드웨어 트랜잭션 메모리 액세스에 대응하는, 스레드의 제1 명령어를 실행하고,
    상기 제1 명령어가 커밋에 실패될 때, 소프트웨어 트랜잭션 메모리 액세스에 대응하는, 상기 스레드의 제2 명령어를 실행하고,
    추론 플래그에 대응하는 엔트리가 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리의 개시에 응답하여 추론적으로 액세스된다는 것을 나타내기 위해, 상기 추론 플래그를 저장하도록
    상기 프로세서를 구성하는 하나 이상의 명령어를 포함하는 컴퓨터 판독가능 매체로서,
    상기 추론 플래그는, 상기 소프트웨어 트랜잭션 메모리 또는 상기 하드웨어 트랜잭션 메모리 중 하나의 커밋에 응답하여, 상기 추론 플래그에 대응하는 엔트리가 추론적으로 액세스 되지 않는다는 것을 나타내기 위해 갱신되는 컴퓨터 판독가능 매체.
  28. 제27항에 있어서,
    상기 제1 명령어 및 상기 제2 명령어 중의 적어도 하나를 추론적으로 실행하도록 상기 프로세서를 구성하는 하나 이상의 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  29. 제27항에 있어서,
    소유권 정보가 유효한 소유권 플래그(valid ownership flag)를 포함한 경우에, 상기 제1 명령어를 중지하도록 상기 프로세서를 구성하는 하나 이상의 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  30. 제27항에 있어서,
    상기 제1 명령어가 하드웨어 오버플로우로 인하여 커밋에 실패하는 경우에, 상기 제2 명령어를 인출하도록 상기 프로세서를 구성하는 하나 이상의 명령어를 더 포함하는 컴퓨터 판독가능 매체.
KR1020087015791A 2005-12-30 2006-12-14 무한 트랜잭션 메모리 시스템 KR100954623B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/323,724 2005-12-30
US11/323,724 US8683143B2 (en) 2005-12-30 2005-12-30 Unbounded transactional memory systems

Publications (2)

Publication Number Publication Date
KR20080076981A KR20080076981A (ko) 2008-08-20
KR100954623B1 true KR100954623B1 (ko) 2010-04-27

Family

ID=37964014

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087015791A KR100954623B1 (ko) 2005-12-30 2006-12-14 무한 트랜잭션 메모리 시스템

Country Status (7)

Country Link
US (1) US8683143B2 (ko)
JP (1) JP2009521767A (ko)
KR (1) KR100954623B1 (ko)
CN (2) CN101322103B (ko)
DE (2) DE112006004285A5 (ko)
GB (1) GB2447575B (ko)
WO (1) WO2007078883A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123683A (ko) * 2015-07-22 2017-11-08 후아웨이 테크놀러지 컴퍼니 리미티드 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
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
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8132158B2 (en) * 2006-12-28 2012-03-06 Cheng Wang Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US8006227B2 (en) * 2007-06-01 2011-08-23 Microsoft Corporation Efficiently locating transactional code blocks in a transactional memory system
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US8341133B2 (en) * 2008-06-27 2012-12-25 Microsoft Corporation Compressed transactional locks in object headers
US8776063B2 (en) * 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8250331B2 (en) * 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
DE112009005006T5 (de) * 2009-06-26 2013-01-10 Intel Corporation Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8161247B2 (en) 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US20110016290A1 (en) * 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8095824B2 (en) * 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9477515B2 (en) 2009-12-15 2016-10-25 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8521995B2 (en) * 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8924692B2 (en) * 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US10387324B2 (en) * 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
JP2014085839A (ja) 2012-10-24 2014-05-12 International Business Maschines Corporation 並列実行機構及びその動作方法
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US10169103B2 (en) 2014-02-27 2019-01-01 International Business Machines Corporation Managing speculative memory access requests in the presence of transactional storage accesses
US9697040B2 (en) * 2014-03-26 2017-07-04 Intel Corporation Software replayer for transactional memory programs
CN104951240B (zh) * 2014-03-26 2018-08-24 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
GB2529148B (en) * 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US11029995B2 (en) 2015-05-14 2021-06-08 Oracle International Corporation Hardware transactional memory-assisted flat combining
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
US9977619B2 (en) * 2015-11-06 2018-05-22 Vivante Corporation Transfer descriptor for memory access commands
CN107025130B (zh) 2016-01-29 2021-09-03 华为技术有限公司 处理节点、计算机系统及事务冲突检测方法
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
CN109845113B (zh) * 2016-08-01 2023-05-09 Tsv链接公司 多通道高速缓存存储器和系统存储器设备
US11086632B2 (en) * 2017-02-10 2021-08-10 Alibaba Group Holding Limited Method and apparatus for providing accelerated access to a memory system
KR101885030B1 (ko) * 2017-04-21 2018-08-02 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
US10621103B2 (en) 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations
KR102007117B1 (ko) * 2018-01-19 2019-08-02 전북대학교산학협력단 트랜잭션 처리 방법 및 트랜잭션 처리 시스템
KR102150597B1 (ko) * 2019-07-23 2020-09-01 전북대학교산학협력단 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5765208A (en) 1995-09-29 1998-06-09 Motorola, Inc. Method of speculatively executing store instructions prior to performing snoop operations
US5835961A (en) * 1996-05-03 1998-11-10 Digital Equipment Corporation System for non-current page table structure access
US6038645A (en) 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US20020108025A1 (en) 1998-10-21 2002-08-08 Nicholas Shaylor Memory management unit for java environment computers
US6681293B1 (en) 2000-08-25 2004-01-20 Silicon Graphics, Inc. Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries
US6895527B1 (en) * 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
US6640285B1 (en) 2000-10-26 2003-10-28 Emc Corporation Method and apparatus for improving the efficiency of cache memories using stored activity measures
US6877088B2 (en) 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
US7685583B2 (en) 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
US7263585B2 (en) * 2002-09-19 2007-08-28 Ip-First, Llc Store-induced instruction coherency mechanism
US7216202B1 (en) * 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7139892B2 (en) * 2003-05-02 2006-11-21 Microsoft Corporation Implementation of memory access control using optimizations
US7587615B2 (en) * 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US7676603B2 (en) 2004-04-20 2010-03-09 Intel Corporation Write combining protocol between processors and chipsets
GB0415850D0 (en) * 2004-07-15 2004-08-18 Imagination Tech Ltd Memory management system
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US20060184840A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Using timebase register for system checkstop in clock running environment in a distributed nodal environment
CA2605558A1 (en) 2005-04-20 2006-11-23 Videoegg, Inc. Browser enabled video manipulation
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7480771B2 (en) * 2005-08-17 2009-01-20 Sun Microsystems, Inc. Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged
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
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US9009116B2 (en) 2006-03-28 2015-04-14 Oracle America, Inc. Systems and methods for synchronizing data in a cache and database
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7502897B2 (en) 2006-06-28 2009-03-10 Intel Corporation Object based conflict detection in a software transactional memory
US7542977B2 (en) 2006-06-29 2009-06-02 Intel Corporation Transactional memory with automatic object versioning
US8185698B2 (en) 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
2002.10., In proc. of 10th SASPLOS, pp.18-29, Jose F. Martinez외 "Spectulative synchromization: Applying thread-level speculation to explicitly parallel applications."
2005.07., M. Moir, "Hybrid Transactional Memory". Sun Microsystems Technical Report.*

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123683A (ko) * 2015-07-22 2017-11-08 후아웨이 테크놀러지 컴퍼니 리미티드 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜
KR102009259B1 (ko) * 2015-07-22 2019-08-09 후아웨이 테크놀러지 컴퍼니 리미티드 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜
US11614959B2 (en) 2015-07-22 2023-03-28 Huawei Technologies Co., Ltd. Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock

Also Published As

Publication number Publication date
DE112006004285A5 (de) 2016-03-10
JP2009521767A (ja) 2009-06-04
DE112006003597T5 (de) 2008-11-13
CN102968292B (zh) 2015-09-02
CN101322103B (zh) 2013-01-02
GB2447575A (en) 2008-09-17
CN102968292A (zh) 2013-03-13
GB2447575B (en) 2009-05-13
GB0809450D0 (en) 2008-07-02
US20070156994A1 (en) 2007-07-05
KR20080076981A (ko) 2008-08-20
CN101322103A (zh) 2008-12-10
US8683143B2 (en) 2014-03-25
WO2007078883A1 (en) 2007-07-12

Similar Documents

Publication Publication Date Title
KR100954623B1 (ko) 무한 트랜잭션 메모리 시스템
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
US7496716B2 (en) Methods and apparatus to implement parallel transactions
US9195600B2 (en) Mechanisms to accelerate transactions using buffered stores
US8140773B2 (en) Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
JP5118652B2 (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
US8200909B2 (en) Hardware acceleration of a write-buffering software transactional memory
US8769212B2 (en) Memory model for hardware attributes within a transactional memory system
US20080005504A1 (en) Global overflow method for virtualized transactional memory
US7363435B1 (en) System and method for coherence prediction
KR20230054447A (ko) 경합 시 원자 메모리 동작을 실행하는 방법
BRPI0805218A2 (pt) esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior

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
GRNT Written decision to grant
FPAY Annual fee payment
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 10