KR101394741B1 - 트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성 - Google Patents

트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성 Download PDF

Info

Publication number
KR101394741B1
KR101394741B1 KR1020117007693A KR20117007693A KR101394741B1 KR 101394741 B1 KR101394741 B1 KR 101394741B1 KR 1020117007693 A KR1020117007693 A KR 1020117007693A KR 20117007693 A KR20117007693 A KR 20117007693A KR 101394741 B1 KR101394741 B1 KR 101394741B1
Authority
KR
South Korea
Prior art keywords
memory
data item
monitors
write
read
Prior art date
Application number
KR1020117007693A
Other languages
English (en)
Other versions
KR20120008483A (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 KR20120008483A publication Critical patent/KR20120008483A/ko
Application granted granted Critical
Publication of KR101394741B1 publication Critical patent/KR101394741B1/ko

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Abstract

트랜잭션 실행을 지원하기 위해 하드웨어에서의 메모리 액세스들을 모니터링하기 위한 방법 및 장치가 기술된다. 속성들은, 물리적 저장 구조 입도에서의 검출을 고려하지 않고, 그보다는 적어도 데이터 항목 입도에서의 모니터링을 보장하는, 데이터 항목에 대한 모니터 액세스들이다. 예로서, 속성들은 새로운 캐시 코히어런시 상태들을 인에이블하기 위해 캐시의 상태 비트들에 추가된다. 선택적으로 결정될 수 있는 데이터 항목에 대한 모니터링된 메모리 액세스시에, 데이터 항목과 관련된 코히어런시 상태들이 모니터링된 상태로 업데이트된다. 그 결과, 데이터 항목에 대한 무효화 요청들이, 데이터 항목의 모니터링된 코히어런시 상태 및 요청 유형의 결합을 통해 검출된다.

Description

트랜잭션 메모리(TM) 시스템의 기입 및 판독 모니터링 속성{READ AND WRITE MONITORING ATTRIBUTES IN TRANSACTIONAL MEMORY(TM) SYSTEMS}
본 발명은, 프로세서의 실행 분야에 관한 것으로, 특히, 명령어들의 그룹의 실행에 관한 것이다.
관련 출원의 상호 참조
본 출원은 본 명세서와 함께 출원된 이하의 특허 출원들에 관한 것이다: Gad Sheaffer et al.에 의해 2008년 12월 30일에 출원된 발명의 명칭이 "Extending Cache Coherency Protocols to Support Locally Buffered Data"이고 대리인 사건 번호(attorney docket number)가 P29132인 U.S. 특허 출원 제12/346,543호; Gad Sheaffer et al.에 의해 2008년 12월 30일에 출원된 발명의 명칭이 "Memory Model for Hardware Attributes Within a Transactional Memory System"이고 대리인 사건 번호가 P29131인 U.S. 특허 출원 제12/346,539호; Gad Sheaffer et al.에 의해 2008년 12월 30일에 출원된 발명의 명칭이 "Registering a User-Handler in Hardware for Transactional Memory Event Handling"이고 대리인 사건 번호가 P29129인 U.S. 특허 출원 제12/346,518호; Gad Sheaffer et al.에 의해 2008년 12월 30일에 출원된 발명의 명칭이 "Metaphysical Address Space for Holding Lossy Meta-data in Hardware"이고 대리인 사건 번호가 P29128인 U.S. 특허 출원 제12/346,500호.
반도체 프로세싱 및 로직 설계의 진보는 집적 회로 디바이스들 상에 존재할 수 있는 로직의 양의 증가를 허용해 왔다. 그 결과, 컴퓨터 시스템 구성은, 시스템의 단일 또는 다수의 집적 회로들로부터 개별 집적 회로들 상에 제공되는 다수의 코어 및 다수의 논리 프로세서들로 진화해왔다. 프로세서 또는 집적 회로는 일반적으로 단일 프로세서 다이를 포함하며, 프로세서 다이는 임의의 수의 코어들 또는 논리 프로세서들을 포함할 수 있다.
집적 회로들 상의 코어들 및 논리 프로세서들의 수의 끊임없는 증가는 더 많은 소프트웨어 스레드들이 동시에 실행되는 것을 가능하게 한다. 그러나, 동시에 실행될 수 있는 소프트웨어 스레드들의 수의 증가는 소프트웨어 스레드들 사이에 공유된 데이터를 동기화하는 것과 관련된 문제들을 일으켜 왔다. 다수의 코어 또는 다수의 논리 프로세서 시스템에서 공유된 데이터를 액세스하는 것에 대한 하나의 통상적인 해결책은 공유된 데이터에 대한 다수의 액세스에 걸쳐 상호 배제(mutual exclusion)를 보장하는 락(lock)의 사용을 포함한다. 그러나, 다수의 소프트웨어 스레드를 실행하는 능력의 끊임없는 증가는 잠재적으로 부적절한 경합(false contention) 및 실행의 직렬화를 초래한다.
예를 들어, 공유된 데이터를 홀딩하는 해시 테이블을 고려한다. 락 시스템에 의해, 프로그래머는 전체 해시 테이블을 락킹하여 하나의 스레드가 전체 해시 테이블에 액세스하는 것을 허용할 수 있다. 그러나, 그외의 스레드들의 처리량 및 성능은, 그것들이 해시 테이블의 임의의 엔트리들에 액세스할 수 없기 때문에, 락이 해제될 때까지 잠재적으로 좋지않은 영향을 받는다. 대안으로, 해시 테이블의 각각의 엔트리가 락킹될 수 있다. 어느 경우이든, 이 단순한 예로부터 큰 스케일러블 프로그램을 추정해 보면, 락킹 경합, 직렬화, 미세 동기화(fine-grain synchronization), 및 데드락(deadlock) 회피의 복잡도가 프로그래머들에게 매우 성가신 부담이 된다.
다른 최근의 데이터 동기화 기술은 트랜잭션 메모리(transactional memory)(TM)의 사용을 포함한다. 종종 트랜잭션 실행은 복수의 마이크로 연산, 연산 또는 명령어들의 그룹핑을 실행하는 것을 포함한다. 상기 예시에서, 양 스레드들은 해시 테이블 내에서 실행하며, 그들의 메모리 액세스들은 모니터링/추적된다. 양 스레드들이 동일한 엔트리를 액세스/변경하는 경우, 데이터 유효성을 보장하기 위해 충돌 해소(conflict resolution)가 수행될 수 있다. 트랜잭션 실행의 한가지 유형은 STM(Software Transactional Memory)을 포함하며, 종종 하드웨어의 지원 없이, 메모리 액세스들의 추적, 충돌 해소, 태스크 중단, 및 그외의 트랜잭션 태스크들이 소프트웨어로 수행된다.
강한 아토믹(atomic) STM 시스템들에서, 트랜잭션 메모리 연산들과 비트랜잭션 메모리 연산들 사이의 런타임 충돌이 발행하지 않는 것을 보장하기 위해, 컴파일러는 각각의 비트랜잭션 메모리 연산을 단일 연산 트랜잭션으로 취급한다. 다시 말해서, 트랜잭션 메모리 액세스들 및 비트랜잭션 메모리 액세스들에서 트랜잭션 배리어들이 삽입되어 트랜잭션들을 서로 그리고 비트랜잭션 메모리 액세스들과 분리한다. 그러나, 매 트랜잭션 및 비트랜잭션 메모리 연산시에 트랜잭션 배리어들의 실행은 잠재적으로 고비용이며 복잡하다.
다른 유형의 트랜잭션 실행은 HTM(Hardware Transactional Memory) 시스템을 포함하며, 이 시스템에는 액세스 추적, 충돌 해소 및 그외의 트랜잭션 태스크들을 지원하기 위해 하드웨어가 포함된다. 그러나, 트랜잭션 실행을 위한 하드웨어 지원에서의 이전의 시도들은, 액세스 추적 및 임의의 데이터 입도 레벨(data granularity level)에 대한 충돌 검출 등의 소프트웨어 트랜잭션 장점들을 하드웨어 내에 효과적으로 통합하지 못했다.
본 발명은 예시의 방법으로써 예시되며, 첨로드는 도면들의 그림들에 의해 제한되도록 의도되지 않는다.
도 1은 다수의 소프트웨어 스레드를 동시에 실행할 수 있는 다수의 프로세싱 구성요소를 포함하는 프로세서의 실시예를 도시한다.
도 2는 트랜잭션 실행을 지원하는 프로세서의 구조들의 실시예를 도시한다.
도 3은 메모리 액세스 모니터링을 위한 선택적 연관 모드 또는 메모리 액세스 모니터링을 위한 비선택적 연관 모드에서 동작하는 방법에 대한 흐름도의 실시예를 도시한다.
도 4는 추가의 모니터링된 캐시 코히어런시 상태들(cache coherency states)을 포함하는 캐시 코히어런시 상태들에 대한 상태 천이 다이어그램의 다른 실시예를 도시한다.
도 5는 메모리 액세스들을 모니터링하는 방법에 대한 흐름도의 실시예를 도시한다.
이하의 설명에서, 본 발명의 완전한 이해를 제공하기 위해, 다수의 특정한 세부사항들은, 트랜잭션 실행을 위한 특정한 하드웨어 구조들, 액세스 모니터의 특정한 유형들 및 구현들, 특정한 캐시 구현들, 특정한 유형의 캐시 코히어런시 모델들, 특정한 데이터 입도들, 및 특정한 유형의 메모리 액세스들과 위치들 등과 같은 예들을 설명한다. 그러나, 이 특정한 세부사항들은 본 발명을 실시하는데 이용될 필요가 없다는 것이 본 기술 분야의 당업자에게 명확할 것이다. 그외의 예들에서, 트랜잭션들의 소프트웨어 코딩, 트랜잭션들의 경계, 특정한 대안의 멀티 코어 및 멀티 스레드형 프로세서 아키텍처들, 특정한 컴파일러 방법들/구현들, 및 마이크로프로세서의 특정한 동작적인 세부사항들 등의 공지의 컴포넌트들 또는 방법들은, 본 발명을 불필요하게 불분명하게 하는 것을 피하기 위해 상세하게 설명되어 있지 않다.
본 명세서에 설명된 방법 및 장치는 트랜잭션 실행을 지원하는 메모리 액세스 모니터들을 제공하기 위한 것이다. 특히, 메모리 액세스 모니터들을 제공하는 것은, 주로 메모리 어드레스들에 대한 액세스들을 추적하는 캐시 메모리 구조들과 연관된 모니터들을 참조하여 논의된다. 실제로, 이하, 도 2 및 도 4의 캐시 메모리와 연관된 모니터들에 대한 특정 참조가 이루어진다. 그러나, 메모리 액세스 모니터들을 제공하기 위한 방법들 및 장치는, 데이터 구성요소들에 대한 메모리 액세스들을 추적하는 임의의 구조와 함께 구현될 수 있기 때문에, 이에 한정되는 것은 아니다.
도 1을 참조하면, 다수의 스레드를 동시에 실행할 수 있는 프로세서의 실시예가 도시된다. 프로세서(100)는 하드웨어 트랜잭션 실행을 위한 하드웨어 지원을 포함할 수 있다는 것에 유의한다. 하드웨어 트랜잭션 실행과 함께 또는 개별적으로 중 어느 경우이든, 프로세서(100)는 또한 STM의 하드웨어 가속, STM의 개별 실행, 또는 하이브리드 TM 시스템 등의 그들의 조합을 위한 하드웨어 지원을 제공할 수 있다. 프로세서(100)는 마이크로 프로세서, 임베디드 프로세서, DSP(digital signal processor), 네트워크 프로세서, 또는 코드를 실행하기 위한 다른 다비이스 등의 임의의 프로세서를 포함한다. 프로세서(100)는, 도시된 바와 같이, 복수의 프로세싱 구성요소를 포함한다.
일 실시예에서, 프로세싱 구성요소는 스레드 유닛, 프로세스 유닛, 컨텍스트, 로직 프로세서, 하드웨어 스레드, 코어, 및/또는 실행 상태 또는 아키텍처 상태 등의 프로세서에 대한 상태를 보유할 수 있는 임의의 그외의 구성요소를 지칭한다. 즉, 일 실시예에서, 프로세싱 구성요소는, 소프트웨어 스레드, 운영 체제, 애플리케이션 등의 코드 또는 그외의 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 지칭한다. 물리적 프로세서는 일반적으로 코어 또는 하드웨어 스레드 등의 임의의 수의 다른 프로세싱 구성요소들을 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 종종 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치한 로직을 지칭하며, 독립적으로 유지된 각각의 아키텍처 상태는 적어도 일부의 전용 실행 리소스들과 연관된다. 코어와 반대로, 하드웨어 스레드는 일반적으로 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치한 임의의 로직을 지칭하며, 독립적으로 유지된 아키텍처 상태들은 실행 리소스들에 대한 액세스를 공유한다. 알 수 있는 바와 같이, 특정한 리소스들이 공유되고 그외의 리소스들이 아키텍처 상태에 전용이 되는 경우, 하드웨어 스레드와 코어의 명칭 사이의 라인이 겹친다. 또한, 종종, 코어 및 하드웨어 스레드는 운영 체제에 의해 개별적인 로직 프로세서들로 간주되며, 운영 체제은 각각의 로직 프로세서에 대한 연산들을 개별적으로 스케줄링할 수 있다.
도 1에 도시된 바와 같이, 물리적 프로세서(100)는 고 레벨 캐시(110)에 대한 액세스를 공유하는 2개의 코어들, 코어(101, 102)를 포함한다. 프로세서(100)는 비대칭 코어들, 즉, 상이한 구성들, 기능 유닛들, 및/또는 로직을 갖는 코어들을 포함할 수 있지만, 대칭 코어들이 도시된다. 그 결과, 코어(101)와 동일한 것으로 도시된 코어(102)는 반복적인 설명을 피하기 위해 상세하게 설명되지 않는다. 또한, 코어(101)는 2개의 하드웨어 스레드들(101a, 101b)을 포함하는 한편, 코어(102)는 2개의 하드웨어 스레드들(102a,102b)을 포함한다. 따라서, 운영 체제와 같은 소프트웨어 엔티티들은 잠재적으로 프로세서(100)를 4개의 분리된 프로세서들, 즉, 4개의 소프트웨어 스레드들을 동시에 실행할 수 있는 4개의 로직 프로세서들 또는 프로세싱 구성요소들로서 간주한다.
여기에서, 제1 스레드는 아키텍처 상태 레지스터들(101a)과 연관되고, 제2 스레드는 아키텍처 상태 레지스터들(101b)과 연관되고, 제3 스레드는 아키텍처 상태 레지스터들(102a)과 연관되고, 제4 스레드는 아키텍처 상태 레지스터들(102b)과 연관된다. 도시된 바와 같이, 아키텍처 상태 레지스터들(101a)은 아키텍처 상태 레지스터들(101b)에 복제되므로, 로직 프로세서(101a) 및 로직 프로세서(101b)에 개별 아키텍처 상태들/컨텍스트들이 저장될 수 있다. 명령어 포인터들 및 리네임 할당기 로직(rename allocater logic)(130)의 리네이밍 로직 등의 그외의 더 작은 리소스들도 스레드들(101a, 101b)에 대하여 복제될 수 있다. 리오더/리타이어먼트 유닛(135)의 리오더 버퍼들, ILTB(120), 로드(load)/저장 버퍼들, 및 큐(queue) 등의 일부의 리소스들은 파티셔닝을 통해 공유될 수 있다. 범용의 내부 레지스터들, 페이지 테이블 기반의 레지스터, 저 레벨 데이터 캐시 및 데이터 TLB(115), 실행 유닛(들)(140), 및 비순서 유닛(out-of-order unit)(135)의 일부분들 등의 그외의 리소스들은 잠재적으로 완전히 공유된다.
프로세서(100)는 종종 완전히 공유되거나, 파티셔닝을 통해 공유되거나 또는 프로세싱 구성요소들에 전용이거나 프로세싱 구성요소들에 의해 전용될 수 있는 그외의 리소스들을 포함한다. 도 1에서, 프로세서의 예시적인 기능 유닛들/리소스들을 갖는 순수하게 예시적인 프로세서의 실시예가 도시된다. 프로세서는 이 기능적인 유닛들 중 임의의 유닛을 포함하거나 또는 생략할 수 있을 뿐만 아니라 도시되지 않은 임의의 그외의 공지의 기능 유닛들, 로직, 또는 펌웨어를 포함할 수 있다는 것에 유의한다.
도시된 바와 같이, 프로세서(100)는, 시스템 메모리(175), 칩셋, 노스브리지(northbridge), 또는 그외의 집적 회로와 같은, 프로세서(100) 외부의 디바이스들과 통신하기 위해, 버스 인터페이스 모듈(105)을 포함한다. 메모리(175)는 프로세서(100)에 전용일 수 있거나, 또는 시스템의 그외의 디바이스들과 공유될 수 있다. 고 레벨 또는 퍼더 아웃(further-out) 캐시(110)는, 고 레벨 캐시(110)로부터 최근에 페치(fetch)된 구성요소들을 캐시한다. 고 레벨 또는 퍼더 아웃은, 캐시 레벨이 증가하거나 또는 실행 유닛(들)로부터 떨어져 있다는 것을 지칭한다는 것에 유의한다. 일 실시예에서, 고 레벨 캐시(110)는 제2 레벨 데이터 캐시이다. 그러나, 고 레벨 캐시(110)는, 명령어 캐시와 연관되거나 또는 명령어 캐시를 포함할 수 있기 때문에, 이에 한정되는 것은 아니다. 디코더(125) 이후에, 최근에 디코딩된 트레이스들을 저장하기 위해, 트레이스 캐시, 즉, 한 유형의 명령어 캐시가 대신 결합될 수 있다. 모듈(120)은 또한 실행될/취해질 브랜치들을 예측하기 위한 브랜치 타겟 버퍼 및 명령어들에 대한 어드레스 변환 엔트리들을 저장하기 위한 명령어 변환 버퍼(I-TLB)를 잠재적으로 포함한다.
디코드 모듈(125)은 페치된 구성요소들을 디코딩하기 위해 페치 유닛(120)에 결합된다. 일 실시예에서, 프로세서(100)는 프로세서(100) 상에서 실행가능한 명령어들을 정의하고/특정하는 ISA(Instruction Set Architecture)와 연관된다. 여기에서, 종종 ISA에 의해 인식되는 머신 코드 명령어들은, 수행될 명령어 또는 연산을 참조하고/특정하는 오피코드(opcode)로서 지칭되는 명령어의 일부분을 포함한다.
일례에서, 할당기 및 리네임 블록(130)은 명령어 프로세싱 결과들을 저장하는 레지스터 파일들과 같은, 리소스들을 보존하는 할당기를 포함한다. 그러나, 스레드들(101a, 101b)은 잠재적으로 비순차 실행이 가능하며, 할당기 및 리네임 블록(130)은 또한 명령어 결과들을 추적하는 리오더 버퍼들 등의 그외의 리소스들을 보존한다. 유닛(130)은 또한 프로그램/명령어 레지스터들을 프로세서(100) 내의 다른 레지스트들로 리네임하는 레지스터 리네임기를 포함할 수 있다. 리오더/리타이어먼트 유닛(135)은, 비순차 실행 및 비순차 실행된 명령어들의 추후의 순차 리타이어먼트를 지원하기 위해 전술한 리오더 버퍼들, 로드 버퍼들, 및 저장 버퍼들 등의 컴포넌트들을 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(140)은 실행 유닛들 상의 명령어들/연산을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들어, 부동 소수점(floating point) 명령어는, 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트 상에 스케줄링된다. 실행 유닛들에 연관된 레지스터 파일들은 또한 명령어 프로세싱 결과들의 정보를 저장하기 위해 포함된다. 예시적인 실행 유닛들은 부동 소수점 실행 유닛, 정수(integer) 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 그외의 공지된 실행 유닛들을 포함한다.
저 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(150)는 실행 유닛(들)(140)에 결합된다. 데이터 캐시는, 메모리 코히어런시 상태들에 잠재적으로 보유되는, 데이터 피연산자와 같은, 구성요소들에 대하여 최근에 사용된/연산된 것을 저장한다. D-TLB는 물리적 어드레스 변환들에 대하여 최근의 가상/선형 변환을 저장한다. 특정한 예로서, 프로세서는 물리적 메모리를 복수의 가상 페이지로 나누는 페이지 테이블 구조를 포함할 수 있다.
일 실시예에서, 프로세서(100)는 트랜잭션 실행을 할 수 있다. 코드의 임계(critical) 또는 아토믹 섹션으로서 또한 지칭될 수 있는 트랜잭션은, 아토믹 그룹으로서 실행될 명령어들, 연산들, 또는 마이크로 연산들의 그룹핑을 포함한다. 예를 들어, 명령어들 또는 연산들은 트랜잭션 또는 임계 섹션의 경계를 정하는데 사용될 수 있다. 일 실시예에서, 이하에 더 상세하게 설명되는 바와 같이, 이 명령어들은, 전술된 디코더들 등의 하드웨어 프로세서(100)에 의해 인식될 수 있는 ISA와 같은, 명령어들의 세트의 일부분이다. 종종, 이 명령어들은, 고 레벨 언어로부터 하드웨어 인식가능한 어셈블리 언어로 컴파일되면, 디코드 단계 중에 디코더들이 인식하는 연산 코드들(오피코드들), 또는 명령어들의 다른 부분들을 포함한다.
통상적으로, 트랜잭션의 실행 중에, 메모리에 대한 업데이트들은 트랜잭션이 완료될(committed) 때까지 전역적으로 가시적으로 되지 않는다. 예로서, 위치에 대한 트랜잭션 기입은 로컬 스레드에 대하여 잠재적으로 가시적이며, 또한, 다른 스레드로부터의 판독에 응답하여 기입 데이터는 트랜잭션 기입을 포함하는 트랜잭션이 완료될 때까지 포워딩되지 않는다. 트랜잭션이 여전히 계류(pending)중인 동안, 이하에 상세하게 설명되는 바와 같이, 메모리 내에서 로드되고 기입된 데이터 아이템들/구성요소들이 추적된다. 트랜잭션이 완료 지점에 도달하면, 트랜잭션에 대해 충돌이 검출되지 않은 경우, 트랜잭션이 완료되고 트랜잭션 동안 행해진 업데이트들은 전역적으로 가시적으로 된다.
그러나, 그 계류중에 트랜잭션이 유효하지 않게 되면, 트랜잭션이 중단되고 업데이트들을 전역적으로 가시적으로 만들지 않고 잠재적으로 재시작된다. 그 결과, 트랜잭션의 계류는, 본 명세서에서 사용된 바와 같이, 실행이 개시되었으며 완료되거나 중단되지 않은, 즉, 계류중인 트랜잭션을 지칭한다. 트랜잭션 실행에 대한 예시적인 구현들은 HTM 시스템, STM 시스템 및 그 조합 또는 하이브리드를 포함한다.
STM 시스템은 종종 액세스 추적, 충돌 해소, 또는 소프트웨어에 의한 또는 적어도 부분적으로 소프트웨어에 의한 그외의 트랜잭션 메모리 태스크들을 수행하는 것을 지칭한다. 일 실시예에서, 프로세서(100)는 컴파일러를 실행하여 트랜잭션 실행을 지원하는 프로그램 코드를 컴파일할 수 있다. 여기에서, 컴파일러는 연산들, 호출들, 함수들 및 트랜잭션들의 실행을 가능하게 하는 다른 코드를 삽입할 수 있다.
컴파일러는 종종 소스 텍스트/코드를 타겟 텍스트/코드로 변환하는 프로그램 또는 프로그램들의 세트를 포함한다. 통상적으로, 컴파일러를 이용하는 프로그램/애플리케이션 코드의 컴파일은 고 레벨 프로그래밍 언어 코드를 저 레벨 머신 또는 어셈블리 언어 코드로 변환하기 위해 다수의 단계들 및 패스들(passes)로 행해진다. 그러나, 단순한 컴파일을 위해 단일 패스 컴파일러들이 여전히 이용될 수 있다. 컴파일러는 임의의 공지된 컴파일 기술들을 이용할 수 있으며, 어휘(lexical) 분석, 전처리(preprocessing), 파싱(parsing), 시맨틱 분석(semantic), 코드 생성, 코드 변환, 및 코드 최적화 등의 임의의 공지된 컴파일러 연산들을 수행할 수 있다.
큰 컴파일러들은 종종 다수의 단계들을 포함하지만, 이 단계들 대부분은 종종 2개의 일반적인 단계들 내에 포함된다: (1) 프론트 엔드(front-end), 즉, 일반적으로 신택틱(syntactic) 프로세싱, 시맨틱 프로세싱, 및 일부의 변환/최적화가 발생할 수 있음 및 (2) 백 엔드(back-end), 즉, 일반적으로 분석, 변환, 최적화, 및 코드 생성이 발생함. 일부의 컴파일러들은, 컴파일러의 프론트 엔드와 백 엔드 사이의 서술의 블러링(blurring of delineation)을 예시하는 미들 엔드를 참조한다. 그 결과, 전술된 단계들 또는 패스들 중 임의의 단계 또는 패스에서뿐만 아니라 컴파일러의 임의의 다른 공지된 페이즈들 또는 패스들에서 삽입, 연관, 생성, 또는 컴파일러의 다른 연산에 대한 참조가 발생할 수 있다. 예시적인 일례로서, 컴파일러는, 컴파일의 프론트 엔드 단계에서 호출들/연산들을 삽입한 다음, 트랜잭션 메모리 변환 단계 중에 호출들/연산들을 저 레벨 코드로 변환하는 것과 같이, 잠재적으로 트랜잭션 연산들, 호출들, 기능들 등을 하나 이상의 컴파일 단계에 삽입한다.
그러나, 컴파일러의 동적 또는 정적 특성 및 실행 환경에도 불구하고, 일 실시예에서, 컴파일러는 프로그램 코드를 컴파일하여 트랜잭션 실행을 가능하게 한다. 따라서, 일 실시예에서, 프로그램 코드의 실행에 대한 참조는, (1) 주 프로그램 코드를 컴파일하고, 트랜잭션 구조들을 유지하고, 또는 다른 트랜잭션 관련 연산들을 컴파일하기 위해 동적으로 또는 정적으로 컴파일러 프로그램(들)을 실행하는 것, (2) 트랜잭션 연산들/호출들을 포함하는 주 프로그램 코드를 실행하는 것, (3) 주 프로그램 코드와 연관된 라이브러리들 등의 다른 프로그램 코드를 실행하는 것, 또는 (4) 그 조합을 지칭한다.
일 실시예에서, 프로세서(100)는 HTM 시스템 내의 하드웨어/로직을 이용하는 트랜잭션들을 실행할 수 있다. HTM을 구현할 때, 아키텍처 및 마이크로 아키텍처 모두의 관점에서 다수의 특정한 구현 세부사항들이 존재한다; 이것들 중 대부분은 본 발명을 불필요하게 불분명하게 하는 것을 피하기 위해 본 명세서에 설명되지 않는다. 그러나, 일부의 구조들 및 구현들은 예시의 목적으로 개시된다. 또한, 이 구조들 및 구현들이 요구되는 것은 아니며, 상이한 구현 세부사항들을 갖는 다른 구조들로 증대되거나 및/또는 대체될 수 있다는 것을 이해해야 한다.
구현 설계 선택의 일례로서, HTM은 업데이트 인 플레이스(update-in-place) 방법 또는 기입 버퍼링 방법으로 동작할 수 있다. 업데이트 인 플레이스 HTM에서, 참조된 메모리 어드레스들 내에 보유된 이전 데이터를 변경하기 위해 참조된 메모리 어드레스들에 대하여 트랜잭션 기입들이 수행된다. 그러나, 이 변경된 데이터는 외부의 요청 스레드들에 제공되지 않는, 즉, 데이터가 전역적으로 가시적으로 되지 않지만, 로컬 메모리 오더링 목적을 위해 로컬 판독들에 제공된다. 또한, 이전 데이터는 종종 "로그"되어, 트랜잭션의 중단 시에, 트랜잭션 개시의 실행 전에 스레드의 상태를 획득하기 위해 이전 데이터가 복원될 수 있다.
예시하기 위해, 데이터 캐시(150)가, 캐시(110) 및 시스템 메모리(175)와 같은, 상위 레벨 메모리로부터의 데이터를 보유하기 위한 제1 레벨 데이터 캐시를 포함한다고 가정한다. 따라서, 데이터 캐시(150)에의 트랜잭션 기입에 직면할 때, 라이트-백(write-back) 캐시에 대한 일 실시예에서, 이전 데이터 항목은 이전 데이터 항목을 다시 상위 레벨 캐시(110)에 기입한다. 대안적으로, 이전 데이터는 프로세서(100) 내부의 또는 프로세서 외부의 또 다른 별개의 메모리에 로깅될 수 있다. 이전 데이터를 로깅한 후에, 트랜잭션 기입이 캐시(150)의 데이터 항목을 업데이트하기 위해 수행된다. 따라서, 로컬 스레드(101a)와 같은, 즉, 트랜잭션 기입과 연관된 로컬 스레드는 캐시(150)의 변경된 데이터 항목을 판독할 수 있다. 그러나, 스레드(102b)와 같은 또 다른 스레드는 변경된 데이터를 제공받지 않으나, 오히려, 트랜잭션 기입을 포함하는 트랜잭션이 아직 완료되지 않은 경우, 판독 요청에 응답하여, 로깅된 데이터가 제공된다. 트랜잭션이 완료될 때, 로깅된 데이터는 무효가 되거나 또는 무시된다. 그러나, 트랜잭션이 중단되는 경우, 이전 데이터가 리로딩되거나 또는 유효 데이터로서 전역적으로 식별된다.
대조적으로, 기입-버퍼링 HTM에서, 트랜잭션 기입들은 기입 버퍼에 버퍼링되는 한편, 이전 데이터는 그것의 본래 위치에 머문다. 로컬 스레드, 예를 들면, 스레드(102b)가 트랜잭션형으로 기입된 데이터의 판독을 수행하면, 변경된 데이터가 기입 버퍼로부터 전달된다. 그 결과, 외부 스레드가 데이터의 판독을 요청하는 동시에, 트랜잭션 기입을 포함하는 트랜잭션이 계속 계류 중인 경우, 본래의 위치로부터의 이전 데이터가 제공된다. 또한, 트랜잭션을 완료할 때, 변경된 데이터는 대응하는 메모리 어드레스에 복사되는 한편, 중단될 때, 버퍼링된 데이터는 무시된다.
전술한 바로부터 알 수 있는 바와 같이, 액세스들 및 요청들은 로컬 프로세싱 구성요소들뿐만 아니라 잠재적으로 다른 프로세싱 구성요소들에 의해 데이터 항목들에 행해질 수 있다. 안전 메커니즘이 없으면, 이러한 액세스들 중의 일부는 잠재적으로 무효 데이터 및 실행, 즉, 판독을 무효로 하는 데이터를 기입하는 것, 또는 무효 데이터의 판독을 야기할 수 있다. 그 결과, 프로세서(100)는 잠재적 충돌의 식별을 위한 메모리 액세스들을 추적하거나 또는 모니터링하기 위한 로직을 잠재적으로 포함한다.
일 실시예에서, 프로세서(100)는 메모리 액세스들을 모니터링 및/또는 추적하기 위한 판독 및 기입 모니터들을 포함한다. 제1 예로써, 모니터들은 데이터 구성요소를 보유하기 위한 물리적 메모리 구조들/위치들의 입도에 제한되는 것에 상관없이 데이터 구성요소의 입도에서 데이터 구성요소에 대한 메모리 액세스들을 모니터링하기 위한 것이다. 데이터 항목 또는 데이터 구성요소는 하드웨어, 소프트웨어 또는 그의 조합에 의해 정의되는 바와 같은 임의의 입도 레벨에서 데이터를 포함할 수 있다.
데이터, 데이터 구성요소들, 데이터 항목들 또는 그에 대한 참조들의 비망라 예시들의 리스트는 메모리 어드레스, 메모리 객체, 클래스, 동적 언어 코드의 유형의 필드, 동적 언어 코드의 유형, 변수, 피연산자, 데이터 구조, 및 메모리 어드레스에 대한 간접 참조를 포함한다. 그러나, 데이터의 임의의 알려진 그루핑이 데이터 구성요소 또는 데이터 항목으로서 칭해질 수 있다. 상기 예들중 일부, 예를 들면, 동적 언어 코드의 유형의 필드 및 동적 언어 코드의 유형은 동적 언어 코드의 데이터 구조들을 칭한다. 예시를 위해, Sun Microsystems, Inc 사의 Java™와 같은 동적 언어 코드는 강한 유형의 언어이다. 각각의 변수는 컴파일 시간에 알려진 유형을 갖는다. 그 유형은 두 개의 분류로 나뉘어진다 - 주 유형(불리언 및 수, 예를 들면, 정수, 부동수) 및 참조 유형(클래스들, 인터페이스들 및 어레이들). 참조 유형들의 값들은 객체들에 대한 참조들이다. Java™에서, 필드들로 구성되는 객체는 클래스 인스턴스 또는 어레이일 수 있다. 클래스 A의 객체가 주어지면, 유형 A의 필드 x를 칭하는 데에 표기법 A::x가 일반적으로 이용되고 클래스 A의 객체 a의 필드 x에 대해서는 a.x가 이용된다. 예를 들면, 표현은 a.x = a.y + a.z로서 표현될 수 있다. 여기에서, 필드 y 및 필드 z는 더해지기 위해 로딩되고, 그 결과는 필드 x에 기입된다.
따라서, 데이터 항목들에의 메모리 액세스들을 모니터링하는 것은 임의의 데이터 레벨 입도에서 수행될 수 있다. 예를 들면, 일 실시예에서, 데이터에의 메모리 액세스들은 유형 레벨에서 모니터링될 수 있다. 여기에서 필드 A::x에의 트랜잭션 기입 및 필드 A::y의 비트랜잭션 로드는, 동일한 데이터 항목, 즉, 유형 A에 대한 액세스들로서 모니터링될 수 있다. 다른 실시예에서, 메모리 액세스 모니터링은 필드 레벨 입도에서 수행된다. 여기서, 필드 A::x에 대한 트랜잭션 기입 및 필드 A::y에 대한 비트랜잭션 로드는, 그들이 필드들을 분리하는 참조들이기 때문에, 동일한 데이터 항목에의 액세스들로서 모니터링되지 않는다. 그외의 데이터 구조들 또는 프로그래밍 기법들이 데이터 항목들에의 메모리 액세스들을 추적함에 있어서 고려될 수 있다는 것에 유의한다. 예로써, 클래스 B의 객체들을 가리키는 클래스 A의 객체의 필드들 x 및 y, 즉 A::x 및 A::y는 새롭게 할당된 객체들에 대해 초기화되고, 초기화 후에는 결코 기입되지 않는다. 일 실시예에서, A::x가 가리키는 객체의 필드 B::z에의 트랜잭션 기입은 A::y가 가리키는 객체의 필드 B::z의 비트랜잭션 로드에 관한 동일한 데이터 항목에의 메모리 액세스로서 모니터링되지 않는다. 이들 예들로부터 추정하면, 모니터들이 임의의 데이터 입도 레벨에서 모니터링을 수행할 수 있음을 판정하는 것이 가능하다.
따라서, 일 실시예에서, 모니터들은, 모니터링되기로 판정된 로드들 및 저장들을 추적하기 위한 판독 모니터들 및 기입 모니터들을 포함한다. 예로써, 하드웨어 판독 모니터들 및 기입 모니터들은 데이터 항목들을 유지하기 위한 저장 구조들의 입도에도 불구하고 적어도 데이터 항목들의 입도에서 경계 지어진 데이터 항목들의 모니터링을 수행한다. 일 실시예에서, 데이터 항목에 대한 판독 모니터는 데이터 항목과 연관될 제1 수의 판독 속성들을 포함한다. 마찬가지로, 데이터 항목에 대한 기입 모니터는 데이터 항목과 연관될 제2 수의 기입 속성들을 포함한다. 제1 수의 판독 속성들과 제2 수의 기입 속성들이 동일할 수 있으나, 이들은 그렇게 제한되지는 않으며, 잠재적으로 상이한 수의 속성들을 포함할 수 있다는 것에 유의한다.
판독 또는 기입 속성들은 데이터 항목들과 연관된 상태들 또는 정보를 보유하기 위한 임의의 로직, 펌웨어, 또는 구조를 포함한다. 예를 들면, 데이터 항목에 대한 속성들은 비트 벡터를 포함하며, 여기에서 비트 벡터 내의 각각의 비트는 데이터 항목의 속성, 예를 들면, 트랜잭션형으로 로딩됨, 트랜잭션형으로 기입됨, 비트랜잭션형으로 로딩됨, 비트랜잭션형으로 기입됨, 트랜잭션형으로 로딩되지 않음, 트랜잭션형으로 기입되지 않음, 비트랜잭션형으로 로딩되지 않음, 비트랜잭션형으로 기입되지 않음, 액세스 충돌이 검출됨, 액세스 충돌이 검출되지 않음, 판독 요청, 판독 요청 없음, 기입 요청, 기입 요청 없음, 소유권 요청, 소유권 요청 없음, 또는 데이터 항목과 연관된 임의의 그외의 상태 또는 속성 또는 데이터 항목을 보유하기 위한 메모리 위치를 나타낸다.
또 다른 예로서, 데이터 항목에 대한 속성들은 인코딩된 값을 포함한다. 예를 들면, 네 개의 상태들, (1) 트랜잭션형으로 기입됨; (2) 트랜잭션형으로 판독됨; (3) 트랜잭션형으로 기입되지 않음; 및 (4) 트랜잭션형으로 판독되지 않음과 같은 상태들은 두 개의 속성 비트들, 즉, 00, 01, 11및 10의 네 개의 이진 값을 이용하여 인코딩된다. 이들 네 개의 상태들이 모니터링된 판독 상태, 모니터링된 기입 상태, 모니터링되지 않은 기입 상태, 및 모니터링되지 않은 판독 상태의 예시를 포함할 수 있다는 것에 유의한다.
전술한 바와 같이, 판독 및 기입 속성들은 임의의 공지된 방식으로 데이터 항목들/구성요소들과 연관될 수 있다. 따라서, 예를 들면, 프로세서(100) 내의 범용 저장소는 모니터링될 판독 및 기입된 데이터 항목들에 대응하는 판독 및 기입 속성들을 보유하기 위해 이용될 수 있다. 데이터 항목들과 속성들을 연관시키는 상당량의 방법들은 너무 많아서 그 모두를 상세히 설명할 수 없다.
그러나, 제1 예로써, 속성들은 캐시 라인의 바이트들의 서브세트와 연관된다. 예를 들면, 캐시(150)의 캐시 라인이 64 바이트 길이이고, 8 바이트 세그먼트로 프로세서(100)에 의해 액세스가능하다고 가정한다. 여기에서, 속성들은, 예시적인 예들과 같이, 2, 4, 8, 16, 32, 64 또는 128 바이트의 데이터와 같은, 저장소의 임의의 물리적 입도와 연관될 수 있고, 캐시(150)의 하나의 부분에 대한 물리적 저장소의 각 4 바이트 및 캐시(150)의 또 다른 부분에 대한 각 8 바이트와 연관되는 것과 같이, 캐시(150) 중에서 변할 수 있다.
그러나, 일 실시예에서, 물리적 저장소의 경계들을 개의치 않고 또는 물리적 저장소의 경계들에도 불구하고, 모니터들/속성들은, 프로세서(100)의 물리적 저장소, 즉, 캐시(150) 및 속성 저장소 중 하나 또는 양쪽 모두의 입도에도 불구하고, 데이터 항목의 입도 레벨에서 데이터 항목의 바운딩된(bounded) 모니터링을 수행한다. 예를 들면, 캐시(150)는 4 바이트 세그먼트의 액세스가능한 16 바이트 라인들, 즉 각각의 캐시 라인 내의 4 개의 액세스 가능한 세그먼트를 포함한다고 가정한다. 또한, 판독 및 기입 속성들이 각각의 16 바이트 라인의 각각의 8 바이트 세그먼트와 연관된다고 가정한다. 따라서, 캐시는 4 바이트의 데이터마다 판독 및 기입을 할 수 있는 한편, 속성들은 8 바이트의 데이터마다 모니터링할 수 있다.
예시에 더하여, 모니터링된 로드는 캐시(150)의 두개의 캐시 라인들의 일부분, 즉, 16 바이트의 제1 라인 모두와 제2 라인의 처음 4 바이트를 스패닝하는 20 바이트의 크기를 갖는 데이터 항목의 로드를 야기한다. 따라서, 캐시(150)의 제1 캐시 라인의 16 바이트와 연관된 판독 속성들은 모니터링된 로드가 발생했다는 것을 나타내도록 업데이트된다. 또한, 캐시(150)의 제2 캐시 라인의 처음 8 바이트와 연관된 판독 속성들은 또한 마찬가지로, 심지어는 데이터 항목이 제2 캐시 라인의 4 바이트만을 점유하고 있는 경우에도, 업데이트된다. 본질적으로, 이 실시예에서, 데이터 항목에 대한 모니터링은 적어도 데이터 항목의 입도 레벨에서, 그리고 잠재적으로 전체 데이터 항목이 모니터링되는 것, 즉, 바운딩된 모니터링을 보장하도록 더 큰 입도에서 제공된다. 즉, 여기에서, 속성들은 물리적 저장 입도 제한들에 상관없이 또는 심지어 물리적 저장소의 입도에 기인하여 더 큰 양의 데이터가 포함되는 경우에도 데이터 항목이 모니터링된다는 것을 보장하는 속성 연관에 상관없이 데이터 항목의 모니터링을 바운딩한다. 역으로, 속성들이 캐시(150)에 비해 더 작은 입도를 제공하면, 속성 연관에 기초한 데이터 항목의 추적은 잠재적으로 캐시(150)의 액세스가능한 입도에서보다 더 정확하다.
상기의 예시는 16 바이트 캐시 라인의 8 바이트마다에 대한 모니터들과 같은, 미리 결정된 크기에 대한 속성들/모니터들의 정적 연관을 가정했다. 이들 연관들이 순수하게 예시적인 것이며, 더 작은 또는 더 큰 모니터 연관 입도를 포함하는 것과 같이 과감하게 변할 수 있다는 것에 유의한다. 그러나, 또 다른 실시예에서, 속성들은 데이터 항목의 로드 또는 저장 시에 속성들의 풀(pool)로부터 동적으로 할당된다. 예시를 위해, 상기의 예시는 이러한 문맥에서 재평가된다. 여기에서, 20 바이트 데이터 항목이 모니터링된 로드를 이용하여 로딩되는 경우, 그때에 데이터 항목이 로딩되는 캐시(150)의 20 바이트와 동적으로 연관된다. 여기에서, 데이터 항목의 모니터링은 물리적 저장 구조의 입도로부터 진짜로 분리된다. 양쪽 예에서, 데이터는 기저 저장 구조(underlying storage structure), 즉, 캐시(150)의 입도에도 불구하고 모니터들에 의해 바운딩된다. 그러나, 제1 예에서, 캐시(150)의 일부분들과 모니터들의 연관의 정적 입도가 정확한 모니터링에 의해 데이터가 바운딩되는 것을 보장하도록 고려되어야만 한다. 그러나, 제2 예에서, 모니터들은 데이터 항목의 특정 입도에서 동적으로 연관된다.
일 실시예에서, 프로세서(100) 내의 모니터들은, 제1 모드에서, 모든 메모리 액세스들을 모니터한다. 예를 들면, 트랜잭션이 실행될 때, 모든 트랜잭션 메모리 액세스들이 모니터링된다. 또한, 또 다른 모드에서, 프로세서(100)는 잠재적으로 메모리 액세스들을 선택적으로 모니터링할 수 있다. 메모리 액세스들의 선택적 모니터링은 도 3을 참조하여 이하에 더욱 상세히 설명된다.
일 실시예에서, 메모리 액세스 동작들을 모니터링하기 위한 하드웨어 모니터들은, 트랜잭션의 중단을 요청할 수 있는, 데이터 액세스들의 무효화를 검출하는 등의, 충돌 검출에 이용된다. 하드웨어 모니터들 또는 속성들의 연관이 구현되는 방법과 무관하게, 본원에서 더욱 상세히 설명되는 바와 같이, 모니터들의 액세스 상태들은 잠재적 메모리 액세스 충돌들을 검출하기 위한 충돌 검출 로직, 펌웨어, 소프트웨어, 또는 그의 조합에 의해 이용될 수 있다. 예시를 위해, 캐시(150) 내에 보유된 데이터 항목과 연관된 판독 하드웨어 모니터가, 데이터 항목이 트랜잭션에 의해 이전에 로딩되었고, 후속하여, 데이터 항목을 기입하기 위한 또 다른 스레드에 의한 요청이 캐시(150)에 대한 캐시 제어 로직에 의해 수신된다는 것을 나타낸다고 가정한다. 기입 요청 및 판독 모니터의 현재 상태(즉, 트랜잭션형으로 로딩됨)에 기초하여, 일 실시예에서, 캐시 제어 로직과 함께 포함되거나 또는 그와 결합되는 충돌 로직이 잠재적 충돌을 검출한다. 잠재적 충돌에 응답하여, 임의의 수의 액션들이 하드웨어, 소프트웨어, 또는 그의 조합에서 취해질 수 있다. 도 2를 참조하여 더욱 상세히 설명되는 예시는, 충돌에 응답하여 상태 레지스터의 비트를 설정하거나 또는 플래그를 설정하고, 비트 또는 플래그를 설정하는 것에 응답하여 잠재적 충돌을 다루는 핸들러에 제어를 전달하는 것을 포함한다.
따라서, 상기 예시에서 설명한 바와 같이, 일 실시예에서, 속성들이 데이터 캐시(150)와 같은 캐시 메모리와 연관된 경우, 현존하는 알려진 코히어런시(coherency) 및 통신/스눕(snoop) 프로토콜들은 충돌들을 검출하기 위한 하드웨어 모니터들/속성들과 조합하여 이용될 수 있다. 여기에서, 설계에 기초하여, 캐시 코히어런시 요청들과, 모니터들/속성들의 상태들과의 상이한 조합들은 데이터 항목의 모니터링된 로드를 나타내는 상기 판독 모니터 및 데이터 항목에 대한 기입 요청을 나타내는 스눕과 같은 잠재적 충돌을 야기한다. 역으로, 데이터 항목에 대한 모니터링된 기입을 나타내는 기입 모니터와 데이터 항목에 대한 판독 요청을 나타내는 스눕은 잠재적으로 충돌하는 것으로 간주될 수 있다. 일 실시예에서, 액세스 요청들과 속성 상태들의 그러한 조합을 검출하기 위해, 스눕 로직이 충돌 검출/보고를 위한 모니터들 및/또는 로직과 같은 충돌 검출/보고 로직에 연결된다.
그러나, 일 실시예에서, 충돌들을 검출하는 것은 공통 코히어런스 프로토콜들을 이용하는 것에 제한되지 않는다. 도 1에 예시된 프로세서(100)의 구조를 예로 들 수 있다. 여기에서, 개별 물리적 스레드들은 데이터 캐시(150) 및 상위 레벨 캐시(110) 양쪽 모두에의 액세스를 공유한다. 따라서, 모니터들이 스레드들(101a 및 101b) 사이에서 공유될 공유 캐시인 캐시(150)와 연관되면, 스레드들(101a 및 101b) 사이의 잠재적 충돌들은 스레드들(101a 및 101b)로부터의 액세스들에 응답하여 캐시(150)를 이용하여 생성되는 상호접속 요청들의 부재에 기인하여 충분히 검출되지 못할 수 있다.
결과적으로, 모니터들/속성들은, 일 실시예에서, 프로세싱 구성요소 단위로 복제된다. 이 예시에서, 속성들은 스레드마다 복제될 수 있는데, 즉, 스레드(101a 및 101b)에 대해서 동일한 속성들이 복제된다. 속성 복제는 잠재적으로 어떤 스레드가 속성들의 단일 그룹화의 상태와 연관되는지를 나타내는 상이한 스레드 식별자들과의 속성들의 단일 그룹화의 연관을 포함한다는 것에 유의한다. 이와 대조적으로, 복제는, 각각이 스레드와 연관된 복제된 속성들의 다수의 개별 그룹들을 포함할 수 있다. 예로써, 데이터 항목에 대한 제1 세트의 속성들은 스레드(101a)와 연관되고 데이터 항목에 대한 제2 세트의 속성들은 스레드(101b)와 연관된다.
그 결과, 스레드들(101a 및 101b) 사이의 충돌들을 검출하기 위해 캐시(150)에 대한 액세스를 공유하는 것은, 스레드 단위와 같은 프로세싱 구성요소 단위로 추적하는 액세스를 포함한다. 예시를 위해, 스레드(101a)가 데이터 항목 D와 연관된 모니터를 설정한다고 가정한다. 여기에서, 스레드(101a)와 연관된 복제된 속성들은 적절한 모니터링된 값으로 설정된다. 따라서, 스레드(101b)가 데이터 항목 D에 대한 충돌하는 요청을 행하면, 충돌이 검출된다. 일 실시예에서, 충돌을 검출하는 제어 로직에 연결된 보고 로직은 적절한 조치를 위해 충돌을 보고한다. 예로써, 논리 OR과 같은 논리 연산은, 외부적 이유들(축출(eviction) 또는 외부 스눕)에 기인하고 공유된 캐시 스레드 액세스 충돌들에 기인한 모니터링의 실패와 같은 상이한 충돌 이벤트들을 결합한다.
일 실시예에서, 캐시(150) 내에 보유된 데이터 항목들과 연관된 속성들은 순간적 또는 사적 저장소들을 이용하여 구현된다. 여기에서, 속성들은 캐시(150) 내의, 예를 들면, 캐시(150) 자신의 라인들 내의 어느 곳에서든 유지될 수 있다. 예를 들면, 전술한 HTM의 일례는, 업데이트 인 플레이스 HTM을 포함한다. 여기에서, 트랜잭션 변경된 데이터는 현재 메모리 위치들에 유지되는 반면, 이전 데이터는, 예를 들면, 상위 레벨 메모리에 로깅/백업된다. 그 결과, 일 실시예에서, 캐시(150)가 데이터 항목에 관해 액세스될 때, 속성들은 순간적으로 캐시(150) 내의 데이터 항목으로 저장된다. 여기에서, 데이터 항목은 사적 또는 순간 코히어런시 상태로 보유되고, 이는 트랜잭션 시맨틱들이 지지되는 것을 캐시 제어 로직이 보장하게 한다. 즉, 순간 상태로 보유되는 데이터 항목은 그외의 스레드들에 제공되지 않는다.
그러나, 데이터 항목이 캐시(150)로부터 축출되면, 사적으로 보유된 속성들은 잠재적으로 손실된다. 본질적으로, 속성들은 데이터 항목을 모니터링하도록 생성된 시스템이고, 상위 레벨 메모리에 다시 기입되지 않는다. 속성들이 소실되는, 즉, 축출되거나 또는 그외의 이벤트 시에 손실되는 시나리오에서, 잠재적 충돌은 전술한 바와 같이, 잠재적 액세스 충돌을 검출하기 위한 유사한 방식으로 트리거될 수 있다. 버퍼링된 저장소들 및 버퍼링된 상태와 같은, 순간 저장소들 및 사적 상태들의 버전은 그 명칭이 "Extending the MESI protocol to support locally buffered data"이고, 대리인 문서 번호 P29132로 출원된 관련 출원에서 논의된다.
전술한 예시들에 의해 예시된 바와 같이, 캐시 내의 데이터 항목들과 연관된 하드웨어 속성들은 캐시 밖에서, 캐시 로직 내에서, 캐시의 어레이들 내에서, 캐시의 다른 구조들 내에서, 또는 심지어는 순간적으로 캐시의 데이터 부분들 내에서 보유될 수 있다. 종종, 이들 하드웨어 속성들은 사용자 명령어들의 실행에 의한 직접 조작 없이 하드웨어에 의해 유지된다. 예를 들면, 소프트웨어 프로그램은 데이터 항목에 대한 트랜잭션 기입을 포함한다. 프로세서가 트랜잭션 기입에 직면하고 그것이 모니터링되야할 것이라고 판정할 때, 하드웨어는 그 데이터 항목과 연관된 기입 속성들을 적절히 업데이트 한다. 예를 들면, 순간 저장소는 데이터 항목들 및 연관된 기입 속성들로 캐시(150)를 업데이트하도록 삽입되고 실행된다. 또 다른 예로써, 속성들은 캐시(150)의 코히어런시 상태 비트들에 부가되며, 데이터 항목을 보유하기 위한 캐시(150)의 라인들의 코히어런시 상태는 트랜잭션 기입에 응답하여 업데이트된다.
그러나, 일 실시예에서, 하드웨어 모니터들/속성들의 하드웨어 관리에 더하여, 명령어들은 또한 속성들을 직접적으로 조작하도록 하드웨어에 의해 인식가능하다. 예로써, 이들 명령어들 또는 피연산자들은 속성들에 대한 동작들을 수행하기 위한, 프로세서(100)에 의해 인식가능한 ISA(Instruction Set Architecture)의 일부이다. 예를 들면, ISA는, 프로세서(100)의 디코더들에 의해 검출될 때, 그에 따라, 속성들을 변경하는 오피코드들을 포함한다. 이용될 수 있는 명령어들의 예시들은, 데이터 항목과 연관된 속성들을 상태로 설정하게 하는 설정 명령어, 데이터 항목과 연관된 속성들을 디폴트 상태로 재설정(reset)하게 하는 재설정 명령어, 속성들의 상태를 판독하게 하는 테스트 또는 판독 명령어, 및 트랜잭션에 대한 또는 캐시 내의 모든 속성들을 클리어하게 하는 클리어 명령어를 포함한다.
전술한 예들 중 하나는 속성들을 클리어하게 하는 클리어 명령어를 포함한다. 일 실시예에서, 벌크 클리어 명령어(bulk clear instruction)는 기입 및 판독 모니터들을 대량으로 클리어하는 데에 이용된다. 벌크 클리어 명령어가 잠재적으로 다수의 시나리오들에서 유용하다는 것에 유의한다. 첫째로, 트랜잭션의 중단 또는 완료 시에, 트랜잭션에 대한 판독 및 기입 모니터들은 잠재적으로 클리어/재설정된다. 둘째로, 하나의 도메인으로부터 또 다른 도메인으로의 프로세서(100)의 천이는 판독 및 기입 모니터들을 클리어/재설정하도록 구성가능할 수 있다. 인텔 사의 IA 32 아키텍처 내의 도메인들의 예시들은 판독 도메인, 큰 실제 도메인, 및 가상 도메인을 포함한다. 셋째로, 예외 또는 인터럽트 시에, 판독 및 기입 모니터들을 클리어하는 것이 유용할 수 있다. 결론적으로, 클리어 명령어들에 직면할 때, 모니터, 모니터들의 범위, 지정된 조건을 만족하는 모든 모니터들, 또는 캐시 내의 모든 모니터들 중 어느 하나가 클리어된다.
도 1을 처음으로 참조하여 설명한 바와 같이, 프로세서(100)의 아키텍처는 순수하게 설명하기 위한 예시적인 것이다. 마찬가지로, 상이한 입도 데이터 항목들에서 하드웨어 모니터들/속성들을 연관시키는 임의의 방법이 이용될 수 있기 때문에, 속성들을 데이터 항목들/구성요소들과 연관시키는 것의 특정 예들은 또한 예시적인 것이다. 속성들을 캐시 내의 데이터 항목들과 연관시키는 것의 예시는 도 2를 참조하여 더 설명된다.
도 2를 참조하면, 캐시 메모리에서 속성들을 데이터 항목과 연관시키는 것의 실시예가 예시된다. 프로세서(250)는 트랜잭션 실행을 할 수 있는 임의의 수의 프로세싱 구성요소를 갖는 임의의 유형의 공지된 프로세서를 포함한다. 전술한 바와 같이, 속성들은 물리적 저장 구조의 임의의 물리적 크기와 정적으로 연관될 수 있거나 또는 데이터 항목들에 동적으로 할당될 수 있다. 도 2의 실시예는 캐시(205)의 정적 부분, 즉, 일부분(210-225)과 각각 연관된 속성들, 즉, 속성들(211.r-226.r 및 211.w-226.w)을 예시한다. 예를 들면, 일부분(210-225)은 캐시(205)의 캐시 라인들이다. 캐시(205)는 제1 레벨 캐시 또는 제2 레벨 캐시와 같은 프로세서와 연관된 임의의 캐시를 포함한다.
도시된 바와 같이, 판독 속성(211.r)이 캐시 라인(210)에 연관되고, 기입 속성(211.w)이 캐시 라인(210)에 연관된다. 일 실시예에서, 어레이(235)는 속성들(211.r 및 211.w)을 가진 태그 어레이를 포함한다. 다른 실시예에서, 어레이(235)는, 캐시(205)에 대한 새로운 코히어런시(coherency) 상태들을 본질적으로 생성하기 위해 속성들(211.r 및 211w)이 상태 비트들 내에 포함되어 있는, 코히어런시 상태 어레이와 같은, 상태 어레이를 포함한다. 코히어런시 상태들을 이용하는 예가 도 4와 관련하여 이하에서 더 상세히 설명된다. 또 다른 실시예에서, 어레이(235)는 도시된 바와 같이 캐시 제어 로직(230) 내의 임의의 어레이를 포함하거나, 또는 제어 로직 밖의 그리고 프로세서(250) 내의 임의의 다른 속성들의 구조를 포함할 수 있으며, 임의의 다른 속성들의 구조는 도시되지 않았다.
일 실시예에서, 속성들(211.r-226.r 및 211.w-226.w)은 캐시(205) 내의 캐시 라인들의 경계들과 같은 저장 구조들의 물리적 경계들에도 불구하고, 데이터 구성요소(201)와 같은 데이터 항목들/구성요소들에 대한 메모리 액세스들을 모니터링한다. 사실, 데이터 항목들은 캐시 라인들과 같은 캐시(205)의 경계들과 얼라인하지 않을 수 있다(unaligned). 여기서, 캐시(205)의 물리적 경계들에도 불구하고 데이터 항목들을 모니터링하는 것은, 캐시(205)의 부분들과 속성들을 모니터링하는 것의 연관성에 기초하여, 모니터링을 이용하여 얼라인하지 않은 데이터 항목들을 바운딩(bounding)하는 것을 포함한다. 여기서, 속성들은 라인 기반으로 연관되고, 따라서, 모니터링되는 데이터 항목을 포함하는 임의의 라인들은, 데이터 항목이 적절하게 모니터링되고 있는지를 보증하기 위해, 그들이 다른 데이터를 보유하고 있는 경우에도 모니터링된다.
상이한 데이터 항목들에 대한 다수의 예들이 위에서 논의되었다. 도 2에서, 데이터 항목(201)은 1½ 캐시 라인의 크기로서 도시되었다. 예시적인 예로서, 트랜잭션 로드 동작이 실행되어 데이터 구성요소(201)를 참조하는 메모리 어드레스로부터 로딩하여, 데이터 구성요소(201)를 캐시 라인들(210 및 215)로 로딩하는 것을 가정한다. 프로세서(250)는, 모드에 의해서든 또는 조건들의 집합에 의해서든, 트랜잭션 로드가 모니터링될 것으로 판정한다.
그 결과, 제어 로직(230)은 데이터 항목(201)이 바운딩될 것으로, 즉, 적어도 데이터 항목이 모니터링되고 정확한 충돌 검출을 보증하기 위하여 필요한 것보다 더 많은 데이터가 모니터링된다고 판정한다. 여기서, 제어 로직(230)은 필드들(211r 및 216r)을 업데이트하여, 캐시 라인들(215 및 216)로부터의 모니터링되는 로드가 발생하였음을 나타낸다. 제1 예로서, 필드들(211r 및 216r)은 논리 0과 같은 모니터링되지 않는 논리 값으로부터, 논리 1과 같은 모니터링되는 논리 값으로 업데이트된다. 어레이(235)가 코히어런시 상태 어레이인 실시예에서, 필드들(211 및 216)은 이하에서 설명되는 바와 같이, 모니터링되는 판독 공유 코히어런시 상태와 같은 적절한 코히어런시 상태로 천이된다(transitioned). 따라서, 일례로서, 제어 로직(230) 내의 스누프(snoop) 로직이 캐시 라인(210 또는 205) 중의 하나에 기입하라는 요청을 검출하면, 잠재적인 충돌이 검출된다.
도 2는 위에서 언급한 바와 같이, 캐시의 데이터 부분(205)과는 별개인 속성들에 주로 초점을 맞추고 있지만, 속성들은 데이터 부분(205) 내에 보유될 수 있다. 바로 위의 예를 이용하면, 모니터링되는 로드에 응답하여 속성들(211r 및 216r)을 업데이트하는 대신에, 속성들은 사적으로 캐시 라인(210, 215)에 또는 모두에 저장된다. 캐시 라인들(210 및 215)의 상태가 버퍼링된 또는 사적인 상태로 천이된다. 따라서, 기입 요청 시에, 사적인 보유된 속성 정보를 이용하는 유사한 충돌이 검출된다. 그러나 라인들(210 또는 215)의 축출시에, 속성 정보는 잠재적으로 쇠퇴, 즉, 손실된다. 그 결과, 유사한 충돌 프로세스가 트리거될 수 있다. 도 2를 참조하는 논의는 캐시 라인 당 하나의 집합의 속성들만을 포함한다는 점을 유의한다. 그러나, 도 1의 캐시(150)를 참조하여 위에서 언급된 바와 같이, 속성들은 프로세서(250)의 스레드 당 복제될 수 있다. 일례로서, 속성들은 캐시(205)를 공유하는 스레드 당 복제될 수 있다. 또한, 도시된 짝수 개의 판독 및 기입 속성들 대신에 상이한 수의 판독 및 기입 속성들이 제공될 수 있다.
일 실시예에서, 캐시 제어 로직(230) 내에 포함될 수 있거나 그와 연관될 수 있는 충돌 로직은 속성들과 연관된 충돌들을 검출하기 위한 것이다. 설계 구현에 기초하여, 속성 상태들, 요청들, 통신 프로토콜들, 또는 코히어런시 프로토콜들의 임의의 조합이 이용되어, 충돌이 존재하는지를 결정할 수 있다. 매우 단순화된 기본적인 예들로서, 모니터링되는 판독에 대한 기입이 잠재적으로 충돌일 수 있고, 모니터링되는 기입에 대한 판독 또는 기입이 잠재적으로 충돌일 수 있다.
일 실시예에서, 일단 충돌이 검출되면, 보고 로직은 충돌을 보고한다. 충돌은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합에 의해 처리될 수 있다. 일 실시예에서, 보고 로직은 레지스터(245)와 같은 저장 구성요소를 포함한다. 저장 구성요소는 메모리, 일반적인 레지스터, 또는 모델 특정 레지스터(MSR)와 같은, 정보를 보유하기 위해 프로세서(250) 내에 있는 임의의 구조(들)을 포함할 수 있다. 제1 예로서, 레지스터(245)는 상태 레지스터를 포함한다. 충돌을 검출하는 것에 응답하여, 레지스터(245)의 값이 충돌 값으로 설정되어 충돌이 발생하였음을 나타낼 수 있다. 여기서, 소프트웨어는 레지스터(245)를 조사하여 그 값이 충돌 값으로 설정되었는지를 폴링(poll)할 수 있다. 다른 예로서, 프로세서(250)는 점프 명령어와 같은 명령어에 의해 테스트될, 오버플로우 플래그와 같은 플래그를 포함하는 플래그 레지스터를 포함한다. 예시를 위해, 로드 명령어에 후속하는 조건부 점프 명령어는 트랜잭션의 판독 집합(read set of transaction)의 코히어런시를 테스트하기 위해 사용될 수 있다.
위에서 언급된 바와 같이, 축출 또는 기타 이벤트로 인한 속성 데이터의 손실이 또한 충돌로서 고려된다. 여기서, 레지스터(245)는 속성 데이터의 손실을 나타내기 위하여 유사한 방식으로 이용될 수 있다. 일 실시예에서, 속성 데이터의 손실에 응답하여, 보고 로직은 프로세서(250)의 동작을 소프트웨어 핸들러로 보내어, 속성들의 모니터링을 위한 제한된 저장 능력을 수용한다. 오버플로우 이벤트에 응답하는 트랜잭션 메모리의 가상화의 예가, 출원번호가 11/479,902이고 제목이 "Global Overflow Method for Virtualized Transactional Memory"인 함께 계류중인 출원에서 논의된다. 또한, 충돌들과 같은 트랜잭션 이벤트들을 처리하기 위한 사용자 핸들러를 등록하기 위한 레지스터(245)와 같은 저장 구성요소를 이용하는 예가, 출원 번호가 12/346,518이고 대리인 정리 번호가 P29129이며, 2008년 12월 30일에 Gad Sheaffer 등에 의해 출원된, 제목이 "Registering a User-Handler in Hardware for Transactional Memory Event Handling"인 출원에서 논의된다.
일 실시예에서, 레지스터(245)는 비모니터링(non-monitoring) 모드, 비선택적 모니터링 모드, 및 선택적 모니터링 모드와 같은, 프로세서(250)의 동작 모드를 나타내는 값을 보유한다. 선택적 모니터링 모드 내에서, 레지스터(245) 또는 기타의 레지스터들은 액세스를 모니터링하기 위한 선택 기준을 또한 정의할 수 있다. 레지스터(245)를 상태 레지스터, 사용자 핸들러를 등록하기 위한 레지스터, 동작 모드를 정의하기 위한 레지스터, 및 선택 기준을 정의하기 위한 레지스터로서 사용하는 것에 대한 논의는, 저장 구성요소(245)의 전술한 잠재적인 사용들의 임의의 조합을 구현하기 위하여, 단일 레지스터 또는 레지스터들의 조합을 지칭할 수 있다는 것에 유의한다.
다음으로 도 3을 참조하면, 상이한 모드들에서의 모니터링 방법에 대한 흐름도의 실시예가 예시된다. 도 3 및 도 5의 흐름도들은 실질적으로 직렬 방식으로 예시되었음에 유의한다. 그러나, 이들 도면에 의해 예시된 방법들은 적어도 부분적으로 병렬로 수행되거나 임의의 순서로 발생할 수 있기 때문에, 제한적이지 않다.
흐름(305)에서, 데이터 구성요소를 참조하는 메모리 액세스가 모니터링되는지가 판정된다. 일 실시예에서, 모니터링하지 않음, 비선택적 모니터링, 및 선택적 모니터링과 같은, 모니터링의 다수의 모드들이 제공된다. 일례로서, 소프트웨어가 모니터링 모드를 설정할 수 있다. 예를 들어, 사용자 명령이 도 2의 레지스터(245)와 같은 레지스터를 어드레스하여, 모니터링의 모드를 나타낼 수 있다. 여기서, 소프트웨어는 어떤 판독들 및 기입들이 모니터링될지를 결정한다. 일례로서, 이 결정은 정적으로 또는 런타임 시의 컴파일러, 애플리케이션 코드, 운영 체제 코드, 하이퍼바이저(hypervisor) 코드, 또는 트랜잭션 런타임 코드와 같은 소프트웨어 코드에 의해 이루어진다.
일 실시예에서, 모니터링의 선택적 모드 동안에, 임의의 방식으로 정의될 수 있는 특정 기준 내에 들어가는 판독들 및 기입들을 제외한 판독들 및 기입들이 모니터링된다. 모니터링되지 않을 메모리 어드레스들에의 메모리 액세스들에 대한 선택 기준의 비한정적인 예시적인 리스트는, 일정 범위의 내에 또는 밖에 있거나 또는 마스크와 정합하는 가상 어드레스들, 일정 범위의 내에 또는 밖에 있어나 또는 마스크와 정합하는 물리적 어드레스들, 특정 메모리 유형들에 속하는 어드레스들, 입력/출력(I/O) 공간 내의 어드레스, 다른 보호 영역의 동작들을 대신하여 하나의 보호 영역에서 실행되는 어드레스들, 특정 오피코드들 또는 프리픽스들, 및 부동 소수점 또는 벡터 연산들과 같은 특정 데이터 유형에 의해 식별된 명령어들에 의해 액세스되는 어드레스에 대한 메모리 액세스들을 포함한다. 또한, 모니터링 속성들은, 사용자에 의해 식별되고 프로세서(250)의 하드웨어에 의해 인지될 수 있는 명백하게 트랜잭션 로드 및 명백하게 트랜잭션 저장 등을 위해서만 특정하게 인지된 명령어들에 응답하여 설정될 수 있다.
모니터링이 플로우(350)에서 적용될 것이라고 판정되면, 모니터링이 플로우(315)에서 데이터 구성요소와 연관된 모니터의 업데이트를 통하여 적용되거나, 또는 모니터링이 플로우(310)에서 수행되지 않고 액세스가 정상적으로 수행된다. 속성들과 같은, 데이터 구성요소와 연관된 모니터를 업데이트하는 것은, 본 명세서에서 논의된 바와 같이 액세스를 적절히 모니터하기 위하여 속성들을 변경하는 임의의 방법을 포함한다. 모니터링되는 및 모니터링되지 않는 판독/기입들에 기초하여 모니터를 상이한 코히어런시 상태들로 업데이트하는 것의 예가 이하에서 논의된다.
다음으로 도 4를 참조하면, 모니터링되는 코히어런시 상태들을 포함하는 코히어런시 상태들 간의 천이의 방법에 대한 상태 천이도의 실시예가 도시된다. 도 4의 상태 천이도는 부분 상태도이고, 도면을 단순화하기 위하여, 모니터링 속성들의 클리어링과 같은 일부 상태 천이들은 도시하지 않는다. 또한, 상태들 및 상태들 간의 천이들은 단순히 예시적인 것이다. 일례로서, 다수의 단계 상태 천이들이 도 4에 도시된 일부의 직접 천이들 대신에 상태들 간에 발생할 수 있다.
도시된 캐시 코히어런시 상태들의 리스트는 (1) 변경된 (M 420) 상태, 즉, 어드레스가 기입되었고 그와 연관된 속성이 없음; (2) 변경된 판독 (MR 430) 상태, 즉, 어드레스가 판독되었고 그와 연관된 판독 속성을 가짐(예컨대, 어드레스에 대한 이전의 판독의 경우, 그 후 트랜잭션이 어드레스를 기입함); (3) 변경된 기입 (MW 425) 상태, 즉 어드레스가 기입되었고 그와 연관된 기입 속성을 가짐; (4) 변경된 판독 (MRW 435) 상태, 즉, 어드레스가 판독되었고, 그 후 기입되었고, 그와 연관된 판독 및 기입 속성들 모두를 가짐; (5) 배타적 (E 440) 상태, 즉, 어드레스가 판독되었고 그와 연관된 속성을 갖지 않음; (6) 배타적 판독 (ER 445) 상태, 즉 어드레스가 판독되었고, 그와 연관된 판독 속성을 가짐; (7) 공유 (S 410) 상태, 즉, 어드레스가 판독되었고, 그와 연관된 속성을 갖지 않음; (8) 공유 판독 (SR 415) 상태, 즉, 어드레스가 판독되었고 그와 연관된 판독 속성을 가짐, 를 포함한다.
일 실시예에서, 이들 상태들은, 속성들이 캐시의 상태 비트들 내에 포함됨으로써, 이러한 새로 모니터링되는 코히어런시 상태들을 생성하는 도 2의 예에 따라서 구현될 수 있다. 일례로서, 라인(들)이 공유 상태(410)에 보유되고 모니터링되는 판독이 발생하는 경우, 라인(들), 라인(들)의 코히어런시를 포함하는 데이터 항목의 메모리 어드레스를 참조하는 것은 SR 415 상태로 천이된다. 그 결과, 일 실시예에서, 라인(들)에 기입하기 위한 외부 요청은 SR 415인 코히어런시 상태로 인해 잠재적인 충돌을 낳게 된다. 그외의 잠재적인 충돌들은, 데이터 항목의 적어도 일부를 포함하는 캐시 라인이 MW 코히어런시 상태 425에 보유되는 경우에 데이터 항목에 대한 외부의 판독 요청 등의 그외의 메모리 액세스 요청 유형들과 조합되는 코히어런시 상태들에 기초하여 존재할 수 있다.
도 5로 넘어가면, 메모리 액세스를 수행하기 위한 흐름도의 실시예가 도시된다. 흐름(505)에서, 데이터 항목과 연관된 메모리 어드레스를 참조하는 메모리 액세스에 직면하게 된다. 메모리 액세스에 직면하는 것은 실행의 임의의 단계에서 메모리 액세스를 검출하는 임의의 방법을 포함한다. 동작에 직면하는 상이한 단계들의 예는 메모리 액세스를 위한 오피코드를 인식하고, 명령어 캐시로부터 메모리 액세스 동작을 검색하고, 로드/저장 유닛 등의 실행 유닛 상의 실행을 위한 메모리 액세스를 스케줄링하고, 메모리 액세스를 중단하기 위한 디코더를 포함한다.
흐름(510)에서, 프로세서가 동작의 선택적 모드를 동작시키는지가 판정된다. 전술한 바와 같이, 일 실시예에서, 소프트웨어는 프로세서의 모드를 설정한다. 여기서, 소프트웨어는, 실행 시에, 레지스터와 같은 저장 구성요소를 업데이트하여, 동작의 모드를 나타낸다. 일례로서, 트랜잭션의 실행이 시작되면, 소프트웨어는 모드를 비선택적으로 설정하고, 즉, 모든 메모리 액세스들이 모니터링된다. 트랜잭션이 종료되면, 모드는 선택적 모니터링 또는 모니터링하지 않음으로 토글된다. 그러나, 다른 실시에에서, 프로세서의 하드웨어가 동작의 모드를 판정한다.
모드가 선택적이라고 판정되면, 흐름(515)에서, 특정 메모리 액세스가 모니터링되는지가 판정된다. 참조된 메모리 어드레스가 특정 범위의 어드레스들에 속하는지의 여부 또는 데이터 항목이 특정 유형인지의 여부와 같이, 임의의 수의 선택 기준이 이러한 판정에 적용된다. 또한, 그 기준은 메모리 액세스가, 분명한 트랜잭션 메모리 액세스로서 식별되는 것과 같이, 모니터링될 소프트웨어에 의해 식별되는지의 여부를 단순히 포함할 수 있다. 메모리 액세스가 모니터링되지 않는다면, 흐름(525)에서 정상으로서 수행된다. 그러나, 메모리 액세스가 모니터링된다면, 흐름(520)에서 데이터 항목과 연관된 액세스 모니터(들)는 그에 따라 업데이트된다. 여기서, 액세스는 흐름(525)에서 모니터가 흐름(520)에서 업데이트되기 전에, 업데이트되는 동안, 또는 업데이트된 후에 수행될 수 있다.
따라서, 상기에서 알 수 있는 바와 같이, 속성들과 같은 모니터들은 물리적 저장 구조 입도(granularity)에 제한되지 않고, 적어도 데이터 항목/구성요소의 입도에서 메모리 액세스들의 모니터링을 제공한다. 그 결과, 하드웨어 속성들은 하드웨어 내의 연관된 데이터 항목들과 메모리 어드레스에 대한 액세스들의 모니터링을 제공하면서, 소프트웨어의 데이터 구조 레벨에서 충돌들을 모니터하고 검출하는 능력을 유지한다. 또한, 속성들은 속성 정보가 쇠퇴할 때 소프트웨어 내로의 오버플로우를 지원하는 것을 통해 대규모 트랜잭션들에 대한 필터로서 잠재적으로 동작한다. 추가로, 일 실시예에서, 사용자 메커니즘이 포함되어, 속성들에 대한 직접적인 동작들을 수행하기 위하여 속성들에 대한 액세스를 허용할 수 있다.
여기에서 사용된 모듈은 임의의 하드웨어, 소프트웨어, 펌웨어, 또는 그 조합을 포함한다. 별개의 것으로 도시되는 모듈 경계들은 종종 공통적으로 변하고 잠재적으로 겹친다. 예를 들어, 제1 및 제2 모듈은, 일부의 독립적인 하드웨어, 소프트웨어, 또는 펌웨어를 잠재적으로 보유하면서, 하드웨어, 소프트웨어, 펌웨어, 또는 그 조합을 공유할 수 있다. 일 실시예에서, 로직이라는 용어의 사용은 트랜지스터, 레지스터와 같은 하드웨어, 또는 프로그램가능한 논리 디바이스와 같은 그외의 하드웨어를 포함한다. 그러나, 다른 실시예에서, 로직은 또한 펌웨어 또는 마이크로 코드와 같은 하드웨어와 통합된 소프트웨어 또는 코드를 포함한다.
여기에서 사용된 값은 숫자, 상태, 논리 상태, 또는 이진 논리 상태의 임의의 공지된 표현을 포함한다. 종종, 논리 레벨, 논리 값, 또는 논리 값의 사용은 이진 논리 상태를 단순하게 나타내는 1들 및 0들로서 지칭될 수도 있다. 예를 들어, 1은 높은 논리 레벨을 지칭하고 0은 낮은 논리 레벨을 지칭한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일 논리 값 또는 다수의 논리 값을 보유 가능할 수 있다. 그러나, 컴퓨터 시스템에서의 값들에 대한 그외의 표현들이 사용되어 왔다. 예를 들어, 십진법 수 10은 이진 값의 1010 및 16진법의 문자 A로서 표현될 수도 있다. 따라서, 값은 컴퓨터 시스템에서 보유될 수 있는 정보의 임의의 표현을 포함한다.
게다가, 상태들은 값들 또는 값들의 부분에 의해 표현될 수 있다. 일례로서, 논리 1과 같은 제1 값은 디폴트 또는 초기 상태를 나타낼 수 있고, 논리 0과 같은 제2 값은 디폴트가 아닌 상태를 나타낼 수 있다. 또한, 일 실시예에서, 재설정 및 설정이라는 용어들은 각각 디폴트 및 업데이트된 값 또는 상태를 지칭한다. 예를 들어, 디폴트 값은 높은 논리 값, 즉, 재설정을 잠재적으로 포함하는 한편, 업데이트된 값은 낮은 논리 값, 즉, 설정을 잠재적으로 포함한다. 임의의 수를 상태들을 나타내기 위하여 값들의 임의의 조합이 사용될 수 있다는 것을 유의한다.
위에서 설명된 방법들, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들은 프로세싱 구성요소에 의해 실행될 수 있는, 머신-액세스가능한 또는 머신 판독가능한 매체 상에 저장된 명령어들 또는 코드를 통해 구현될 수 있다. 머신-액세스가능한/판독가능한 매체는 컴퓨터 또는 전자 시스템 등의 머신에 의해 판독가능한 형태로 정보를 제공(즉, 저장 및/또는 송신)하는 임의의 메커니즘을 포함한다. 예를 들어, 머신-액세스가능한 매체는 정적 RAM(SRAM) 또는 동적 RAM(DRAM) 등의 RAM(random access memory); ROM; 자기 또는 광 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스, 광 저장 디바이스, 음향 저장 디바이스 또는 전파되는 신호(예를 들어, 반송파, 적외선, 디지털 신호) 형태의 저장 디바이스 등을 포함한다. 예를 들어, 머신은 전파되는 신호 상에서 송신될 정보를 보유할 수 있는 매체로부터 반송파 등의 전파되는 신호를 수신하는 것을 통하여 저장 디바이스를 액세스할 수 있다.
본 명세서 전체에 걸쳐 "일 실시예" 또는 "실시예"에 대한 언급은, 그 실시예와 연관하여 설명된 특정한 피쳐, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 다양한 곳에서 "일 실시예에서" 또는 "실시예에서"라는 문구가 나타나는 것이 반드시 모두 동일한 실시예를 지칭하는 것일 필요는 없다. 또한, 특정한 피쳐들, 구조들, 또는 특성들은 하나의 또는 그 이상의 실시예들에서 임의의 적절한 방식으로 조합될 수 있다.
앞서 말한 명세서에서, 상세한 설명은 특정 예시적인 실시예들과 관련하여 주어졌다. 그러나, 첨부된 청구항들에서 설명된 바와 같은 본 발명의 더 넓은 사항 및 범주로부터 벗어나지 않고, 그에 대한 다양한 변형 및 변경들이 행해질 수 있다는 것은 명백할 것이다. 명세서 및 도면들은 따라서 제한적인 의미라기보다는 예시적인 의미로서 간주되어야 한다. 또한, 실시예 및 기타 예시적인 언어의 앞선 사용들은 반드시 동일한 실시예 또는 동일한 예를 지칭할 필요는 없고, 상이하고 구별되는 실시예들 및 잠재적으로 동일한 실시예를 지칭할 수도 있다.

Claims (43)

  1. 트랜잭션 메모리 액세스 동작을 실행하여 데이터 항목과 관련되는 메모리 어드레스를 참조하도록 구성된 실행 로직;
    상기 실행 로직에 연결되는 메모리 - 상기 메모리는 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여 상기 메모리의 복수의 라인들의 경계들과 얼라인되지 않은(unaligned) 데이터 항목을 보유하도록 구성됨 - ; 및
    상기 메모리의 상기 복수의 메모리 라인에 대응하는 복수의 판독 모니터 및 복수의 기입 모니터 - 상기 복수의 판독 모니터 및 기입 모니터는 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여 상기 메모리의 입도(granularity)와 무관하게 상기 데이터 항목의 입도 레벨에서 상기 데이터 항목의 바운딩된(bounded) 액세스 모니터링을 수행하도록 구성됨 -
    을 포함하는 장치.
  2. 제1항에 있어서,
    상기 복수의 판독 모니터 및 상기 복수의 기입 모니터의 속성들은 상기 실행 로직이 사용자 레벨 명령어들을 실행하는 것에 응답하여 판독가능 및 변경가능한 장치.
  3. 제1항에 있어서,
    상기 메모리는 데이터 캐시를 포함하는 장치.
  4. 삭제
  5. 제3항에 있어서,
    상기 트랜잭션 메모리 액세스 동작은 트랜잭션 로드를 포함하고, 상기 실행 로직이 상기 트랜잭션 로드를 실행하는 것에 응답하여 상기 메모리의 입도와 무관하게 상기 데이터 항목의 입도 레벨에서 상기 데이터 항목의 바운딩된 액세스 모니터링을 수행하도록 상기 데이터 캐시와 관련된 모니터들은, 상기 실행 로직이 상기 트랜잭션 로드를 실행하는 것에 응답하여 모니터링된 판독 상태로 업데이트될, 상기 데이터 항목의 적어도 일부분을 보유하는 복수의 캐시 라인 중 다수의 캐시 라인에 대응하는, 상기 복수의 판독 모니터 중 다수의 판독 모니터를 포함하는 장치.
  6. 제5항에 있어서,
    상기 트랜잭션 메모리 액세스 동작은 트랜잭션 저장을 포함하고, 상기 실행 로직이 상기 트랜잭션 저장을 실행하는 것에 응답하여 상기 메모리의 입도와 무관하게 상기 데이터 항목의 입도 레벨에서 상기 데이터 항목의 바운딩된 액세스 모니터링을 수행하도록 상기 데이터 캐시와 관련된 모니터들은, 상기 실행 로직이 트랜잭션 기입을 실행하는 것에 응답하여 모니터링된 기입 상태로 업데이트될, 상기 데이터 항목의 적어도 일부분을 보유하는 상기 복수의 캐시 라인 중 상기 다수의 캐시 라인에 대응하는, 상기 복수의 기입 모니터들 중 다수의 기입 모니터를 포함하는 장치.
  7. 제6항에 있어서,
    제어 로직은, 상기 제어 로직이 상기 캐시 라인에 대응하는 상기 다수의 판독 모니터 중 하나의 판독 모니터가 상기 모니터링된 판독 상태로 업데이트될 때 상기 다수의 캐시 라인 중 하나의 캐시 라인으로의 외부 기입 요청을 검출하는 것에 응답하여 트랜잭션 충돌을 검출하는 장치.
  8. 제6항에 있어서,
    제어 로직은, 상기 제어 로직이 상기 캐시 라인에 대응하는 상기 다수의 기입 모니터 중 하나의 기입 모니터가 상기 모니터링된 기입 상태로 업데이트될 때 상기 다수의 캐시 라인 중 하나의 캐시 라인으로부터의 외부 판독 요청을 검출하는 것에 응답하여 트랜잭션 충돌을 검출하는 장치.
  9. 제6항에 있어서,
    상기 다수의 판독 모니터 및 상기 다수의 기입 모니터는 상기 실행 로직이 사용자 레벨 클리어 동작을 실행하는 것에 응답하여 모니터링되지 않은 상태로 재설정(reset)되는 장치.
  10. 제6항에 있어서,
    상기 다수는 1보다 큰 정수를 포함하는 장치.
  11. 제1항에 있어서,
    상기 복수의 판독 모니터 및 상기 복수의 기입 모니터는 상기 데이터 항목의 크기에 기초하여 동적으로 상기 메모리와 관련되는 장치.
  12. 제11항에 있어서,
    상기 데이터 항목의 크기에 기초하여 동적으로 상기 메모리와 관련되는 상기 복수의 판독 모니터 및 상기 복수의 기입 모니터는, 상기 데이터 항목의 크기가 상기 메모리의 라인보다 크고, 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여, 상기 복수의 판독 모니터 및 상기 복수의 기입 모니터의 풀(pool)로부터, 상기 데이터 항목의 적어도 일부분을 보유하는 상기 메모리의 복수의 라인에 판독 모니터 및 기입 모니터를 동적으로 할당하는 로직을 포함하는 장치.
  13. 제12항에 있어서,
    상기 메모리와 관련되며, 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여 상기 메모리의 입도와 무관하게 상기 데이터 항목의 입도 레벨에서 상기 데이터 항목의 바운딩된 액세스 모니터링을 수행하는 상기 복수의 판독 모니터 및 상기 복수의 기입 모니터는, 상기 실행 로직이 트랜잭션 로드 동작을 실행하는 것에 응답하여 판독 모니터링된 상태로 설정되는 상기 복수의 라인에 할당된 상기 판독 모니터 및 상기 실행 로직이 트랜잭션 저장 동작을 실행하는 것에 응답하여 기입 모니터링된 상태로 설정되는 상기 복수의 라인에 할당된 상기 기입 모니터를 포함하는 장치.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 데이터 항목을 참조하는 메모리 액세스 동작이 모니터링되는지를 판정하는 단계;
    캐시의 다수의 라인에서 상기 데이터 항목을 캐싱하는 단계; 및
    상기 메모리 액세스 동작이 모니터링된다는 판정에 응답하여,
    캐시의 상기 라인들의 경계들과 얼라인되지 않은 데이터 항목과 관련되는 하드웨어 속성들을 동적으로 할당하고,
    상기 메모리 액세스 동작의 유형과 관련된 액세스 상태를 나타내도록 상기 하드웨어 속성들을 업데이트하는 단계
    를 포함하는 방법.
  35. 제34항에 있어서,
    데이터 항목을 참조하는 메모리 액세스 동작이 모니터링되는지를 판정하는 단계는 상기 메모리 액세스 동작을 실행하는 프로세서의 동작 모드에 기초하는 방법.
  36. 제34항에 있어서,
    데이터 항목을 참조하는 메모리 액세스 동작이 모니터링되는지를 판정하는 단계는 상기 메모리 액세스 동작의 사용자 레벨 소프트웨어에 의한 모니터링될 동작으로서의 식별에 기초하는 방법.
  37. 삭제
  38. 삭제
  39. 제34항에 있어서,
    상기 메모리 액세스 동작의 유형과 관련된 상기 액세스 상태는 상기 메모리 액세스 동작의 유형이 판독 유형을 포함하는 것에 응답하는 모니터링된 판독 상태 및 상기 메모리 액세스 동작의 유형이 기입 유형을 포함하는 것에 응답하는 모니터링된 기입 상태를 포함하는 방법.
  40. 제34항에 있어서,
    외부 액세스의 유형 및 상기 메모리 액세스 동작의 유형과 관련된 상기 액세스 상태에 기초하여 상기 메모리 액세스 동작의 실행에 후속한 외부 액세스 요청에 응답하여 충돌을 검출하는 단계;
    상기 충돌을 검출하는 것에 응답하여 프로세서 내의 상태 레지스터를 이용하여 상기 충돌을 소프트웨어에 보고하는 단계; 및
    상기 프로세서 내의 상태 레지스터를 이용하여 상기 충돌을 소프트웨어에 보고하는 것에 응답하여 상기 충돌을 처리하기 위해 소프트웨어 핸들러를 실행하는 단계
    를 더 포함하는 방법.
  41. 데이터 항목과 관련되는 메모리 어드레스를 참조하는 트랜잭션 메모리 액세스 동작을 실행하도록 구성된 실행 로직;
    상기 실행 로직에 연결되며, 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여 상기 데이터 항목을 보유하도록 구성된 메모리; 및
    상기 데이터 항목의 크기에 기초하여 상기 메모리와 동적으로 관련되는 복수의 판독 모니터 및 복수의 기입 모니터 - 상기 복수의 판독 모니터 및 기입 모니터는 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여 상기 메모리의 입도와 무관하게 상기 데이터 항목의 입도 레벨에서 상기 데이터 항목의 바운딩된 액세스 모니터링을 수행하도록 구성됨 -
    을 포함하는 장치.
  42. 제41항에 있어서,
    상기 데이터 항목의 크기에 기초하여 상기 메모리와 동적으로 관련되는 상기 복수의 판독 모니터 및 상기 복수의 기입 모니터는, 상기 데이터 항목의 크기가 상기 메모리의 라인보다 크고, 상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여, 상기 복수의 판독 모니터 및 상기 복수의 기입 모니터의 풀로부터, 상기 데이터 항목의 적어도 일부분을 보유하는 상기 메모리의 복수의 라인에 판독 모니터 및 기입 모니터를 동적으로 할당하는 로직을 포함하는 장치.
  43. 제42항에 있어서,
    상기 실행 로직이 상기 트랜잭션 메모리 액세스 동작을 실행하는 것에 응답하여 상기 메모리의 입도와 무관하게 상기 데이터 항목의 입도 레벨에서 상기 데이터 항목의 바운딩된 액세스 모니터링을 수행하는 상기 메모리와 관련된 상기 복수의 판독 모니터 및 상기 복수의 기입 모니터는, 상기 실행 로직이 트랜잭션 로드 동작을 실행하는 것에 응답하여 판독 모니터링된 상태로 설정되는 상기 복수의 라인에 할당된 판독 모니터 및 상기 실행 로직이 트랜잭션 저장 동작을 실행하는 것에 응답하여 기입 모니터링된 상태로 설정되는 상기 복수의 라인에 할당된 기입 모니터를 포함하는 장치.
KR1020117007693A 2008-12-30 2009-12-15 트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성 KR101394741B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/346,530 2008-12-30
US12/346,530 US8627017B2 (en) 2008-12-30 2008-12-30 Read and write monitoring attributes in transactional memory (TM) systems
PCT/US2009/068004 WO2010077850A2 (en) 2008-12-30 2009-12-15 Read and write monitoring attributes in transactional memory (tm) systems

Publications (2)

Publication Number Publication Date
KR20120008483A KR20120008483A (ko) 2012-01-30
KR101394741B1 true KR101394741B1 (ko) 2014-05-15

Family

ID=42286302

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117007693A KR101394741B1 (ko) 2008-12-30 2009-12-15 트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성

Country Status (6)

Country Link
US (2) US8627017B2 (ko)
JP (3) JP5462883B2 (ko)
KR (1) KR101394741B1 (ko)
CN (1) CN101814018B (ko)
TW (1) TWI448897B (ko)
WO (1) WO2010077850A2 (ko)

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) * 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
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
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
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
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US8504777B2 (en) * 2010-09-21 2013-08-06 Freescale Semiconductor, Inc. Data processor for processing decorated instructions with cache bypass
US8504774B2 (en) * 2010-10-13 2013-08-06 Microsoft Corporation Dynamic cache configuration using separate read and write caches
CN102486719B (zh) * 2010-12-06 2015-04-15 普天信息技术研究院有限公司 智能存储卡及其事务写的方法
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US8615640B2 (en) * 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
GB2491350B (en) 2011-05-27 2020-02-12 Advanced Risc Mach Ltd Store-exclusive instruction conflict resolution
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
WO2013115820A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for transactional speculation control instructions
US20140059333A1 (en) * 2012-02-02 2014-02-27 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
US8799588B2 (en) * 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
EP2831721B1 (en) 2012-03-30 2020-08-26 Intel Corporation Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
CN105786665B (zh) * 2012-06-29 2019-11-05 英特尔公司 用于测试事务性执行状态的系统
US9430166B2 (en) * 2012-08-10 2016-08-30 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics
US20140129784A1 (en) * 2012-11-07 2014-05-08 Mellanox Technologies, Ltd. Methods and systems for polling memory outside a processor thread
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
JP6060276B2 (ja) * 2012-12-21 2017-01-11 華為技術有限公司Huawei Technologies Co.,Ltd. 監視レコード管理方法及びデバイス
US9251073B2 (en) 2012-12-31 2016-02-02 Intel Corporation Update mask for handling interaction between fills and updates
US9026698B2 (en) * 2013-03-15 2015-05-05 Intel Corporation Apparatus, system and method for providing access to a device function
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
US11221967B2 (en) * 2013-03-28 2022-01-11 Hewlett Packard Enterprise Development Lp Split mode addressing a persistent memory
WO2014209312A1 (en) * 2013-06-27 2014-12-31 Intel Corporation Tracking mode of a processing device in instruction tracing systems
US9535744B2 (en) 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9329890B2 (en) 2013-09-26 2016-05-03 Globalfoundries Inc. Managing high-coherence-miss cache lines in multi-processor computing environments
US9292444B2 (en) 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US9298623B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Identifying high-conflict cache lines in transactional memory computing environments
US9086974B2 (en) 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments
US9298626B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Managing high-conflict cache lines in transactional memory computing environments
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
JP6197585B2 (ja) * 2013-11-01 2017-09-20 富士通株式会社 情報処理装置、及び、情報処理装置の制御方法
US9442775B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
CN109240945B (zh) 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
US9971627B2 (en) 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
US9262343B2 (en) 2014-03-26 2016-02-16 International Business Machines Corporation Transactional processing based upon run-time conditions
US9256553B2 (en) 2014-03-26 2016-02-09 International Business Machines Corporation Transactional processing based upon run-time storage values
US20150278123A1 (en) * 2014-03-28 2015-10-01 Alex Nayshtut Low-overhead detection of unauthorized memory modification using transactional memory
US9778949B2 (en) 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US9600442B2 (en) 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US9507938B2 (en) * 2014-12-23 2016-11-29 Mcafee, Inc. Real-time code and data protection via CPU transactional memory support
US10540524B2 (en) 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support
GB2536871A (en) 2015-03-04 2016-10-05 Advanced Risc Mach Ltd An apparatus and method to generate trace data in response to transactional execution
US9652168B2 (en) * 2015-04-10 2017-05-16 International Business Machines Corporation Adaptive concurrency control using hardware transactional memory and locking mechanism
CN111858256A (zh) * 2015-12-25 2020-10-30 北京忆芯科技有限公司 命令队列监控电路、数据交换方法及其设备
US10547680B2 (en) * 2015-12-29 2020-01-28 Intel Corporation Systems, methods, and apparatuses for range protection
US10095622B2 (en) 2015-12-29 2018-10-09 Intel Corporation System, method, and apparatuses for remote monitoring
US11163682B2 (en) 2015-12-29 2021-11-02 Intel Corporation Systems, methods, and apparatuses for distributed consistency memory
CN106991073B (zh) * 2016-01-20 2020-06-05 中科寒武纪科技股份有限公司 用于向量运算的数据读写调度器及保留站
CN105718357B (zh) * 2016-01-22 2018-12-28 烽火通信科技股份有限公司 一种内存监视的方法
KR102114256B1 (ko) * 2016-02-19 2020-05-22 후아웨이 테크놀러지 컴퍼니 리미티드 플래시 메모리 디바이스 액세스 방법 및 장치
EP3436920A4 (en) 2016-03-31 2019-12-18 INTEL Corporation TISSUE ELASTICITY SUPPORT FOR ATOMIC WRITING OF MANY STORAGE OPERATIONS ON REMOTE NODES
US20180004681A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Systems, Apparatuses, and Methods for Platform Security
JP2020508534A (ja) * 2017-02-20 2020-03-19 インテンシベイト インコーポレイテッドIntensivate Inc. スーパースレッドプロセッサ、処理システム、および方法
WO2018192645A1 (en) * 2017-04-19 2018-10-25 Huawei Technologies Co., Ltd. Updating metadata in hardware transactional memory user aborts
CN108062224B (zh) * 2017-12-29 2021-04-23 北京奇虎科技有限公司 基于文件句柄的数据读写方法、装置及计算设备
WO2019226672A1 (en) 2018-05-21 2019-11-28 C.D.L. Electric Company, Inc. Grade crossing gate mechanism
US10795828B2 (en) 2018-08-10 2020-10-06 Micron Technology, Inc. Data validity tracking in a non-volatile memory
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
US11714676B2 (en) * 2020-01-03 2023-08-01 International Business Machines Corporation Software-directed value profiling with hardware-based guarded storage facility
US11753782B2 (en) 2021-10-11 2023-09-12 C.D.L. Electric Company, Inc. Quick-replacement gear for grade crossing gate mechanism
KR102579320B1 (ko) * 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126647A1 (en) * 2006-11-29 2008-05-29 Cisco Technology, Inc. Interlocking input/outputs on a virtual logic unit number

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) * 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6526481B1 (en) * 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6272602B1 (en) 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6549996B1 (en) * 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
US7162612B2 (en) * 2000-08-16 2007-01-09 Ip-First, Llc Mechanism in a microprocessor for executing native instructions directly from memory
US6490668B2 (en) 2000-12-15 2002-12-03 Hewlett-Packard Company System and method for dynamically moving checksums to different memory locations
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US6499085B2 (en) * 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
US20030005219A1 (en) 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US7032125B2 (en) 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
FR2859307A1 (fr) * 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US20050091459A1 (en) * 2003-10-23 2005-04-28 Nhon Quach Flexible mechanism for enforcing coherency among caching structures
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
ES2304251T3 (es) * 2004-04-14 2008-10-01 Telecom Italia S.P.A. Procedimiento y sistema para la gestion de la distribucion de contenidos en redes de comunicacion.
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7243200B2 (en) * 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
JP4431022B2 (ja) 2004-10-18 2010-03-10 株式会社日立製作所 コンピュータシステム及びその制御方法
US7337280B2 (en) * 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
KR100704037B1 (ko) 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US20060236039A1 (en) * 2005-04-19 2006-10-19 International Business Machines Corporation Method and apparatus for synchronizing shared data between components in a group
US7568070B2 (en) * 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions
US7533215B2 (en) 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
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
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US8924653B2 (en) * 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7669040B2 (en) * 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
US8060482B2 (en) * 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US7937535B2 (en) * 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8751859B2 (en) 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US20080307169A1 (en) * 2007-06-06 2008-12-11 Duane Arlyn Averill Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US9495290B2 (en) * 2007-06-25 2016-11-15 Sonics, Inc. Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering
US8195832B2 (en) * 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US20100122073A1 (en) 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126647A1 (en) * 2006-11-29 2008-05-29 Cisco Technology, Inc. Interlocking input/outputs on a virtual logic unit number

Also Published As

Publication number Publication date
JP6342970B2 (ja) 2018-06-13
JP2012513067A (ja) 2012-06-07
JP5462883B2 (ja) 2014-04-02
JP2017073146A (ja) 2017-04-13
KR20120008483A (ko) 2012-01-30
US8688917B2 (en) 2014-04-01
US20120117334A1 (en) 2012-05-10
WO2010077850A3 (en) 2010-08-26
JP2014112406A (ja) 2014-06-19
CN101814018A (zh) 2010-08-25
WO2010077850A2 (en) 2010-07-08
TWI448897B (zh) 2014-08-11
TW201037525A (en) 2010-10-16
JP6040176B2 (ja) 2016-12-07
CN101814018B (zh) 2013-11-06
US8627017B2 (en) 2014-01-07
US20100169579A1 (en) 2010-07-01

Similar Documents

Publication Publication Date Title
KR101394741B1 (ko) 트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성
JP5944417B2 (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
US8769212B2 (en) Memory model for hardware attributes within a transactional memory system
US10387324B2 (en) 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
US8719828B2 (en) Method, apparatus, and system for adaptive thread scheduling in transactional memory systems
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US9274855B2 (en) Optimization for safe elimination of weak atomicity overhead

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170504

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