KR102599689B1 - 예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가 - Google Patents

예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가 Download PDF

Info

Publication number
KR102599689B1
KR102599689B1 KR1020207010275A KR20207010275A KR102599689B1 KR 102599689 B1 KR102599689 B1 KR 102599689B1 KR 1020207010275 A KR1020207010275 A KR 1020207010275A KR 20207010275 A KR20207010275 A KR 20207010275A KR 102599689 B1 KR102599689 B1 KR 102599689B1
Authority
KR
South Korea
Prior art keywords
transaction
exception
processing
circuitry
response
Prior art date
Application number
KR1020207010275A
Other languages
English (en)
Other versions
KR20200061361A (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 KR20200061361A publication Critical patent/KR20200061361A/ko
Application granted granted Critical
Publication of KR102599689B1 publication Critical patent/KR102599689B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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/3009Thread control 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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 처리장치는, 트랜잭션 메모리를 사용하여 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 갖는 처리 회로소자를 갖는다. 예외 마스크 정보를 갱신하여 트랜잭션의 처리의 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 하는 예외 마스크 갱신 명령에 응답하여, 처리 회로소자(4)는, 예외 마스크 갱신 명령에 후속하는 트랜잭션의 하나 이상의 이후의 명령의 비중지 처리를 허가한다.

Description

예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가
본 기술은 데이터 처리의 분야에 관한 것이다. 보다 구체적으로는, 본 기술은 트랜잭션 메모리에 관한 것이다.
데이터 처리 시스템은, 데이터 처리의 다수의 스레드들을 실행할 수도 있다. 종종, 그 스레드들은 공유자원에 액세스할 필요가 있을 수도 있고, 데이터 처리 연산들의 특성은, 스레드가 공유자원과 상호작용하기 시작하면, 그러는 동안에 일 세트의 연산들이 상기 자원에 액세스하는 또 하나의 스레드 없이 자원을 사용하여 원자적으로 완료하는 것이 필요할 수도 있는 특성이다.
스레드끼리의 이 충돌을 핸들링하는 일 기술은, 락(lock)들을 사용하여, 적어도 하나의 타겟 자원에의 배타적 액세스를 제어하는 기술이어도 된다. 예를 들면, 하나의 스레드가 특별한 어드레스 구역에서의 데이터에 액세스하기 시작할 때, 그 스레드는 락의 소유권을 주장하기 위해 락 변수를 설정할 수도 있고, 그 후, 락 소유 스레드가 그 락의 소유권을 갖지만, 락 변수를 확인하는 그 밖의 스레드들은 락이 이미 주장되었다고 판정할 수도 있어서, 해당 어드레스 구역과 상호작용하는 코드의 섹션에 들어가지 않을 수도 있다. 이러한 락 기반 해결방법은, 디폴트에 의해 각 스레드가, 충돌이 일어날 수 없는 것을 보장하는 상기 락의 소유권을 갖지 않으면, 또 하나의 스레드와의 충돌이 일어날 수도 있기 때문에 상기 공유자원에 액세스흐는 코드의 섹션에 들어갈 수 없다고 가정한다는 점에서 비관적인 것으로서 보일 수 있다. 그렇지만, 락 식별자는 다수의 자원들(예컨대, 다양한 어드레스들)에의 배타적 액세스를 제어할 수 있는 경우가 많으므로, 락 변수로 보호한 자원들의 세트내에서 하나의 스레드가 특정한 자원들에 액세스중이면, 또 하나의 스레드가 동일 자원에 확실히 액세스할 것이라고 보장되지 않는다. 따라서, 락 기반 해결방법은, 스레드끼리의 충돌들이 드문 경우들에 있어서, 성능이 손실될 수도 있는데, 그 이유는 스레드들이 공유자원을 사용하는 코드의 중요한 섹션에 들어가기 전에 불필요하게 락들이 해제되기를 기다릴 수도 있기 때문이다.
공유자원에 액세스하는 스레드끼리의 충돌들을 핸들링하는 보다 낙관적인 해결방법은, 트랜잭션 메모리 지원을 사용하는 방법일 수 있다. 데이터 처리 시스템은, 처리 회로소자에 의한 데이터 처리의 스레드내에 트랜잭션의 실행을 지원하는 회로소자를 가질 수도 있다. 트랜잭션은, 그 트랜잭션의 시작을 표시하는 트랜잭션 시작 명령과 트랜잭션의 종료를 표시하는 트랜잭션 종료 명령과의 사이에서 실행되는 스레드의 그 명령들일 수도 있다. 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서, 상기 처리 회로소자는, 중재 명령들을 추론적으로 실행하고, 트랜잭션 종료 명령에 도달될 때까지 그 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지할 수도 있다. 트랜잭션 시작 명령의 실행 후(하지만 트랜잭션 종료 명령에 도달달되기 전) 중지(abort) 이벤트의 발생에 의해, 트랜잭션이 중지되고 추론적 결과들이 폐기될 수도 있다. 트랜잭션을 중지하는 이유는 많이 있을 수도 있지만, 하나의 이유는 또 하나의 스레드에 의해 이루어진 메모리 액세스와의 검출된 충돌일 수도 있다. 따라서, 이 해결방법으로, 각 스레드는 그 밖의 스레드들과의 충돌들이 발생하지 않는다고 가정하는 코드의 중요한 섹션을 낙관적으로 처리하기 시작할 수도 있고, 그 후 그 중요한 섹션의 종료가 어떠한 충돌도 검출되지 않고 도달되면 그 트랜잭션의 결과들이 커밋(commit)될 수 있다. 충돌이 드문 경우에, 트랜잭션 메모리 지원을 사용하면, 보다 많은 스레드들이 동시에 코드의 그들의 중요한 섹션들을 처리하게 함으로써 성능을 향상시킬 수 있다.
적어도 일부의 예들에서 제공하는 장치는: 명령들에 응답하여 데이터 처리를 수행하는 처리 회로소자로서, 처리 회로소자에 의해 데이터 처리의 스레드내에서, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하는 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하며, 상기 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 상기 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 중지 이벤트가 트랜잭션 종료 명령이 도달되기 전에 일어날 때 그 트랜잭션의 처리를 중지시키도록 구성되는, 상기 처리 회로소자; 및 예외들의 하나 이상의 서브세트들이 사용 가능(enable) 또는 사용 불가(disable)인지를 지정하는 예외 마스크 정보에 따라 예외를 마스킹할지를 판정하는 예외 핸들링 회로소자를 구비하고; 트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 상기 처리 회로소자는, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령 후 트랜잭션의 하나 이상의 이후의 명령들의 비중지(unaborted) 처리를 허가하도록 구성되고, 상기 처리 회로소자는, 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 상기 중지 이벤트를 기동하도록 구성되고, 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 상기 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 상기 처리 회로소자는 중지 상태정보를 소정의 값으로 설정하도록 구성되고, 트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 처리 회로소자는 상기 중지 상태정보를 상기 소정의 값이외의 값으로 설정하도록 구성된다.
적어도 일부의 예들에서 제공하는 데이터 처리방법은: 처리 회로소자에 의해 데이터 처리의 스레드내에서, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하는 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하는 처리 회로소자를 사용하여, 명령들에 응답하여 데이터 처리를 수행하는 단계로서, 상기 처리 회로소자가, 트랜잭션 종료 명령에 도달될 때까지 상기 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 중지 이벤트가 트랜잭션 종료 명령이 도달되기 전에 일어날 때 그 트랜잭션의 처리를 중지시키도록 구성되는, 상기 수행하는 단계; 예외에 응답하여, 예외들의 하나 이상의 서브세트들이 사용 가능 또는 사용 불가인지를 지정하는 예외 마스크 정보에 따라 예외를 마스킹할지를 판정하는 단계; 트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령 후 트랜잭션의 하나 이상의 이후의 명령들의 비중지 처리를 허가하는 단계; 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 상기 중지 이벤트를 기동하는 단계; 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 상기 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 중지 상태정보를 소정의 값으로 설정하는 단계; 및 트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 중지 상태정보를 상기 소정의 값이외의 값으로 설정하는 단계를 포함한다.
적어도 일부의 예들에서 제공하는, 명령들의 실행을 위한 명령 실행 환경을 제공하기 위해 호스트 데이터 처리장치를 제어하기 위한 컴퓨터 프로그램은, 데이터 처리의 스레드내에서, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하는 트랜잭션의 실행을 지원하는 처리 프로그램 로직으로서, 트랜잭션 종료 명령에 도달될 때까지 상기 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 중지 이벤트가 트랜잭션 종료 명령이 도달되기 전에 일어날 때 그 트랜잭션의 처리를 중지시키도록 구성되는, 상기 처리 프로그램 로직; 및 예외들의 하나 이상의 서브세트들이 사용 가능 또는 사용 불가인지를 지정하는 예외 마스크 정보에 따라 예외를 마스킹할지를 판정하는 예외 핸들링 프로그램 로직을 포함하고; 트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 상기 처리 프로그램 로직은, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령 후 트랜잭션의 하나 이상의 이후의 명령들의 비중지 처리를 허가하도록 구성되고, 상기 처리 프로그램 로직은, 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 상기 중지 이벤트를 기동하도록 구성되고, 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 상기 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 상기 처리 프로그램 로직은 중지 상태정보를 소정의 값으로 설정하도록 구성되고, 트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 처리 프로그램 로직은 상기 중지 상태정보를 상기 소정의 값이외의 값으로 설정하도록 구성된다.
상술한 컴퓨터 프로그램을 기억하는 기억매체가 제공되어도 된다. 이 기억매체는 비일시적 컴퓨터 프로그램 기억매체이어도 된다.
본 기술의 추가의 측면들, 특징들 및 이점들은, 아래의 첨부도면과 함께 읽혀질 이하의 예들의 설명으로부터 명백해질 것이다:
도 1은 트랜잭션 메모리 지원 회로소자를 구비하는 장치의 일례를 개략적으로 도시한 것이고;
도 2는 트랜잭션의 처리의 일례를 도시한 것이고;
도 3은 예외 마스크 정보의 2개의 예를 도시한 것이고;
도 4는 트랜잭션내에서 예외 마스크 갱신 명령을 실행할 때 트랜잭션을 중지하는 비교 예를 도시한 것이고;
도 5는 트랜잭션의 중간에 이전에 사용 불가였던 예외의 처리를 사용 가능하게 예외 마스크 갱신이 허용되면 생길 수도 있는 문제를 도시한 것이고;
도 6은 마스크 갱신에 의해 사용 가능하였던 예외가 트랜잭션의 중지를 기동하면 트랜잭션내에서 예외 마스크 갱신을 사용 가능하게 하고 상태정보를 보고함으로써 그 문제를 해결하는 기술을 도시한 것이고;
도 7은 트랜잭션들의 처리방법을 도시하는 흐름도이며;
도 8은 사용될 수도 있는 시뮬레이터 예를 도시한 것이다.
데이터 처리장치는, 처리 회로소자에 의해 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 갖는 처리 회로소자를 가질 수도 있다. 이 트랜잭션은, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행되는 상기 스레드의 명령들을 포함하고, 이를 위해 상기 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지할 수도 있고, 중지 이벤트가 트랜잭션 종료 명령에 도달하기 전에 일어날 때 그 트랜잭션의 처리를 중지시킬 수도 있다.
상기 장치는, 명령들의 처리동안에 일어날 수도 있는 예외 조건들의 핸들링을 제어하는 예외 핸들링 회로소자를 가질 수도 있다. 예외 조건은, 다른 처리가 수행될 수 있도록, 처리 회로소자에 의해 수행중인 처리가 중단되는 것을 요구하는 어떠한 이벤트이어도 된다. 예를 들면, 예외들은, 소프트웨어 기동 예외들, 이를테면 무효의 비매핑되거나 액세스 불가 메모리 어드레스에 소프트웨어에 의해 액세스하려는 시도에 의해 생긴 메모리 장애, 미정의 명령의 실행, 또는 소프트웨어에 의해 수행된 시행중인 보안 보호를 위반하는 연산을 포함할 수 있다. 또한, 예외들은, 디바이스상의 버튼을 누르는 유저, 상기 장치에 요청을 보내는 외부장치, 신호를 보내는 주변장치 등의 외부 이벤트들, 또는 처리 회로소자 자체에서 실행중인 명령들에 의해 직접 생기지 않는 일부 다른 이벤트에 의해, 기동된 하드웨어 인터럽트들을 포함할 수 있다. 예외 핸들링 회로소자는, 예외들의 하나 이상의 서브세트들이 사용 가능 또는 사용 불가인지를 지정할 수도 있는 예외 마스크 정보에 근거하여 특정한 예외들을 마스크 아웃 가능할 수도 있다.
전형적으로, 예외 마스크 정보를 갱신하는 명령들은, 트랜잭션 내에서, 트랜잭션의 처리중에, 예외 마스크 정보를 갱신하는 명령에 접하면, 이것이 트랜잭션을 중지하도록 중지 이벤트로 이어지게 금지될 것이다. 이것은, 전형적으로, 트랜잭션의 시작에서 예외 마스크 상태와 그 트랜잭션에 나중의 예외 마스크 상태 사이의 불일치로 인해 생길 수 있는 지속 락(livelock) 상황을 피하기 위해 행해진다.
그렇지만, 발명자들에 의해 인식한 것은, 트랜잭션 동안에 예외 마스크 갱신 명령을 억제하는 것이 필요하지 않다는 것이다. 트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 상기 처리 회로소자는, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령에 후속하는 트랜잭션의 하나 이상의 이후의 명령들의 비중지 처리를 허가할 수도 있다. 따라서, 중지를 기동하거나, 또는 예외 마스크 갱신 명령에 접할 때 예외 마스크 정보의 갱신을 억제할 필요가 없다. 이는, 예외 마스크 갱신 명령들을 포함하는 처리의 스레드들에 트랜잭션 메모리 메카니즘들이 사용될 보다 큰 기회를 제공하고, 그렇지 않은 경우 가능하지 않을 것이다. 이것은, 하나의 파티(party)에 의해 기록된 하나의 소프트웨어를, 또 하나의 파티에 의해 기록된 하나의 소프트웨어라고 하거나 기타의 소프트웨어에 의해 기록된 제1 파티의 소프트웨어내에서 실행될 특정한 기능들이라고 하는 경우가 많기 때문에 유용하고, 그래서 실행중인 코드 전부가 예외 마스크 갱신 명령을 갖는지를 프로그래머나 컴파일러가 아는 것이 어려울 수 있고, 그래서, 이러한 코드는, 상술한 기술이 없을 때, 예외 마스크 갱신 명령의 존재에 의해 생긴 중지로 인해 실패할 수도 있는 트랜잭션을 실행하려는 반복된 시도가 있을 수도 있고, 그것은 락 기반 메카니즘으로 재분류하는 등의 논-트랜잭션 해결방법이 취해지는 것을 충분한 수의 중지들이 검출되는데 시간이 좀 걸릴 수도 있기 때문에, 성능을 저하시킬 수 있다. 그에 반해서, 예외 마스크 갱신을 지나 트랜잭션을 계속 처리하는 능력으로, 상기 코드에 대한 성능을 향상시킬 수 있다.
트랜잭션 메모리 지원 회로소자는, 트랜잭션 시작 명령에 응답하여 캡처된 트랜잭션 복원상태 데이터를 기억하는 복원상태 기억 회로소자를 가질 수도 있다. 상기 처리 회로소자는, 중지 이벤트에 응답하여 트랜잭션 복원상태 데이터를 복원할 수도 있다. 트랜잭션 복원상태 데이터는, 예외 마스크 정보를 포함하여도 된다. 따라서, 트랜잭션을 처리하는 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 하는 트랜잭션의 몸체 내에 예외 마스크 갱신 명령이 있는 경우들에 있어서, 트랜잭션이 중지되면, 이에 따라 예외 마스크 정보의 이전의 값이 복원되므로 예외들의 상기 적어도 하나의 서브세트가 다시 사용 불가능해지게 될 수도 있다.
이것은, 상기 처리 회로소자가 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 중지 이벤트를 기동하도록 배치될 수도 있기 때문에 문제의 원인이 될 수도 있다. 예외가 일어날 때, 예외를 취한 후 수행된 이후의 처리는, 트랜잭션내에서 수행된 연산들의 일부가 아니고 해당 트랜잭션의 추론적 결과들 세트내에서 기록되지 않아야 하는 결과들을 생성할 것이다. 마찬가지로, 상기 예외에 의해 액세스된 어드레스들과 그 밖의 스레드들에 의해 액세스된 어드레스들간의 충돌들은, 트랜잭션 자체에 관해 마찬가지로 플래그(flag)될 필요가 없다. 트랜잭션 처리와 예외 처리를 구별하고 트랜잭션을 나중에 재개하기 위해 충분한 하드웨어 자원들을 제공하는 것은, 너무 복잡해서 추가된 비용을 정당화할 수도 없어서, 트랜잭션의 처리중에 사용 가능 예외가 일어날 때 단지 트랜잭션을 중지시키는 것만이 보다 단순할 수도 있다.
그렇지만, 예외로 인해 트랜잭션을 중지시켰다면, 그 예외를 서비스하는 것은, 트랜잭션의 복원상태 데이터가 복원되어 있을 때까지 연기될 수도 있다. 이것은, 마치 트랜잭션이 결코 일어나지 않았던 것처럼, 트랜잭션이 중지중일 경우 상기 예외가 아키텍처 상태를 보아야 하기 때문이다. 따라서, 예외 마스크 갱신 명령이 트랜잭션을 중지시키지 않고 트랜잭션 동안에 허용되어, 트랜잭션 동안에 예외들의 이전에 사용 불가였던 서브세트가 사용 가능해지고 나서 그 새롭게 사용 가능하였던 예외들 중 하나가 일어나므로 트랜잭션이 중지되게 되는 것이 가능한 경우, 이전에 캡처된 복원상태의 복원은 해당 예외들의 서브세트를 예외가 취해지기 전에 사용 불가능하게 할 수도 있다. 그 후, 예외는 진행중인 채로 있을 수도 있고, 그 후, 소프트웨어는 트랜잭션을 재시작하려고 시도할 수도 있다. 트랜잭션을 실행하려는 다음 시도시에, 예외 마스크 갱신 명령에 다시 접할 때, 그것은 서브세트 예외들을 재사용 가능하게 하고 나서, 여전히 진행중인 예외는 다시 중지를 기동할 수도 있고, 이에 따라 예외를 해결하지 않고 또한 트랜잭션을 성공적으로 완료하지 않고 동일한 트랜잭션을 실행하려는 다수의 시도들의 긴 루프가 될 수 있어, 지속 락 상황이 될 수 있다. 실제로, 이것은, 반드시 프로세서를 무기한으로 지체시키지 않을 수도 있는데, 그 이유는 통상 소프트웨어가, 트랜잭션을 재시작하려는 시도들을 정지시키고 논-트랜잭션 방법을 상용하여 중지의 수가 역치보다 커지면 동등한 연산들을 실행하기 위한 메카니즘들을 가질 것이기 때문이다. 그렇지만, 이것을 결정하는데 시간이 좀 걸릴 수도 있고, 그 동안에 다수회 트랜잭션을 처리하려는 시도에서 쓸데 없는 처리가 많이 존재할 수도 있고, 그 연산들 전의 긴 지연은 최종적으로 논-트랜잭션 방법을 사용하여 실행된다. 이러한 이유의 하나는, 트랜잭션 메모리에 대한 전형적인 해결방법들이 트랜잭션내에서 예외 마스크 갱신 명령들이 사용 불가였거나 그 트랜잭션 중에 중지를 기동하기 때문이다.
그에 반해서, 상술한 해결방법에서는, 예외 마스크 갱신들을 허용하고, 트랜잭션을 중지시키지 않고 예외 마스크 갱신 명령을 지나 계속되게 트랜잭션의 처리를 허가한다. 예외 마스크 갱신 명령 후 트랜잭션이 중지될 수 있지만(예컨대, 예외 또는 충돌이 일어나면), 이것은, 적어도, 트랜잭션의 처리를 계속되게 하고 (중지가 생기지 않으면) 트랜잭션의 종료에 도달하여 트랜잭션의 중간에 예외 마스크 정보의 상태를 변경시키는데도 불구하고 결과들을 커밋할 기회를 제공한다.
트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 그 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 상기 처리 회로소자는, 중지 상태정보를 소정의 값으로 설정할 수도 있다. 그에 반해서, 트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 처리 회로소자는, 중지 상태 값을 상기 소정의 값이외의 값으로 설정할 수도 있다. 따라서, 트랜잭션이 중지될 때 중지 상태 정보를 확인함으로써, 소프트웨어는, 트랜잭션의 중간에 사용 가능하였던 예외의 결과로서 트랜잭션이 중지되었을 때의 경우들과 상기 중지에 대한 그 밖의 잠재적 이유들을 구별할 수 있다. 그 후, 상기 소프트웨어는, 예를 들면, 중지 상태 정보가 소정의 값을 가질 때 상기 코드가, 트랜잭션 모드에서 다시 실행하려고 시도하지 않아야 한다고 판정할 수 있다. 예를 들면, 대신에, 상기 소프트웨어는, 예를 들면 락 기반 메카니즘을 사용하여 다수의 스레드들에 의해 공유자원에 동시 액세스를 회피할 수도 있는, 논-트랜잭션 모드내에서 동등한 기능들(예컨대, 동등한 논-트랜잭션 연산들을 제공하는 코드내에서의 경로에 분기하는 것)을 실행할 수도 있다. 따라서, 중지 상태 정보를 제공함으로써, 이것은 지속 락 상황의 위험을 저감시켜, 상당한 수행 병목현상의 위험 없이 트랜잭션의 중간에 예외 마스크 상태 정보가 변경하는 것을 사용 가능하게 하므로, 예외들이 사용 가능 또는 사용 불가인지 여부의 상태를 변경해야 할 수도 있는 코드에 대한 트랜잭션 메모리 기반 메카니즘들을 사용할 보다 큰 기회를 제공한다.
중지 상태 정보는, 상이한 방식으로 표현될 수 있다. 일부 예들에서, 중지 상태 정보는, 사용 가능 예외가 트랜잭션의 중지를 기동시키고 사용 가능 예외가 사용 불가였을 때 제1 값으로 설정되고 그 트랜잭션이 시작되었던 상태 레지스터내의 플래그일 수 있고, 그 밖의 타입들의 중지에 대한 제2 값으로 설정될 수 있다. 이와는 달리, 중지 상태 정보는, 트랜잭션의 중지에 대한 상이한 이유들을 표현하는 그 비트들의 상이한 인코딩으로 다수의 비트들을 갖는 일반적 중지 이유 코드일 수 있다. 중지 상태 코드의 가능한 값들 중 하나는, 중지가 트랜잭션의 중지시에 사용 가능했지만 트랜잭션의 시작에서 사용 불가였던 예외에 기인하였던 것을 나타내는데 할당된 전용 값일 수 있다. 이 경우에, 트랜잭션의 중간에 사용 가능하였던 예외로 인해 트랜잭션이 중지되면, 이것은, 그 예외가 트랜잭션의 처리의 시작에서 이미 사용 가능하였을 때의 경우와 비교하여 중지 상태 코드의 상이한 상태에 의해 반영된다.
예외 마스크 정보를 표현하는 방식은 많이 있다. 일부의 경우에, 예외 마스크 정보는, 따로따로 하나 이상의 상이한 타입들의 예외에 대해서, 각 타입의 예외가 사용 가능 또는 사용 불가인지를 지정할 수 있다. 예를 들면, 예외 마스크 정보에서의 하나의 플래그는 디버그 관련 예외들이 사용 가능 또는 사용 불가인지의 여부를 나타낼 수 있거나, 또 하나의 플래그는 메모리 장애 예외들이 사용 가능 또는 사용 불가인지의 여부를 나타낼 수 있거나 하는 등이 있다. 이러한 타입의 예외 마스크 정보에서는, 예외 마스크 갱신 명령이, 특별한 타입의 예외(또는 2개이상의 타입의 예외)용 사용 가능/사용 불가 플래그를 변경하여 그 플래그를 사용 불가 상태로부터 사용 가능 상태로 변경하는 명령이어도 된다.
또는, 예외 마스크 정보는, 예외 우선순위 역치를 지정할 수도 있다. 예외 핸들링 회로소자는, 예외의 우선순위 레벨과 예외 우선순위 역치와의 비교에 따라 예외를 마스킹할지를 판정할 수도 있다. 따라서, 현재 사용 불가인 예외들의 서브세트는, 예외 우선순위 역치보다 낮은 우선순위 레벨을 갖는 예외들일 수 있다(선택사항으로, 예외 우선순위 역치와 우선순위가 동일한 예외들도 사용 불가일 수 있다). 수치에 의해 상이한 방식으로 예외 우선순위 레벨들을 표현할 수 있다는 것을 알 것이다. 예를 들면, 최저 수치(예컨대, 우선순위 제로)는, 아주 중요한 종류의 예외를 나타낼 수 있어, 우선순위 레벨 0 예외들의 우선순위가 예를 들면 우선순위 레벨 3보다 높다고 생각된다. 또는, 그 밖의 해결방법들은, 우선순위 숫자의 최고의 수치를 사용하여 가장 중요한 우선순위를 표현할 수도 있다(예컨대, 이때의 우선순위 레벨 15는 우선순위 레벨 12보다 높은 우선순위 예외를 표현한다). 따라서, 본 출원에서 우선순위 레벨이란, 해당 중요한 레벨을 표현하는데 사용된 실제의 수치와 상관없는, 예외의 상대적 중요성을 말한다. 예외 마스크 정보가 예외 우선순위 역치를 지정하는 예들에 있어서, 상술한 예외 마스크 갱신 명령은, 상기 역치의 예외 우선순위를 갱신하여 지금 예외들의 보다 큰 서브세트가 사용 가능하도록 보다 낮은(덜 중요한) 우선순위 레벨을 나타내는 명령이어도 된다.
위의 예들에서는 이전에 사용 불가였던 예외를 사용 가능하게 하는 예외 마스크 갱신 명령을 설명하였지만, 예외 마스크 정보를 갱신하여 이전에 사용 가능하였던 예외를 사용 불가능하게 하는 그 밖의 타입들의 예외 마스크 갱신 명령은, 트랜잭션을 중지시키지 않고 트랜잭션내에서도 허용될 수도 있다.
트랜잭션 메모리 지원 회로소자는, 트랜잭션 메모리 메카니즘들을 사용하여 트랜잭션들의 실행을 지원하기 위한 다수의 자원들을 포함할 수 있다. 예를 들면, 트랜잭션 메모리 지원 회로소자는, 트랜잭션을 중지시에 복원될 트랜잭션 시작 명령에 응답하여 캡처된 트랜잭션 복원상태를 기억하기 위한 복원상태 기억 회로소자를 구비할 수도 있다. 일부의 경우에, 외부 트랜잭션의 트랜잭션 시작 명령은 트랜잭션 복원상태의 캡처를 기동할 수도 있고, 내부 트랜잭션들용 트랜잭션 복원상태의 캡처는 (트랜잭션 네스팅 심도가 트랜잭션 시작 명령에 접하는 때에 0보다 클 경우) 억제될 수도 있다.
트랜잭션 메모리 지원 회로소자는, 적어도 하나의 스레드의 적어도 하나의 트랜잭션에 대한 적어도 일부의 추론적으로 실행된 명령들의 결과들을 기억하는 추론적 결과 기억 회로소자도 구비할 수 있다. 일부의 경우에, 특정한 타입만의 명령들의 결과들은 추론적 결과들 기억 회로소자에 기억되어 있어도 되고, 예를 들면, 메모리에 기록하기 위한 스토어(store) 명령들의 기억 데이터는, 트랜잭션이 커밋 가능할 때까지 추론적 결과 스토리지에 추론적으로 보유되어 있어도 되는 반면에, 레지스터들에 작용하는 일반 산술 명령들은, 앞선 실행점으로 상태를 되돌릴 때 복원상태가 그 결과들을 나중에 폐기시킬 수 있으므로 그 레지스터들에 간단히 기록할 수 있다.
트랜잭션 메모리 지원 회로소자는, 제1 스레드의 트랜잭션내에서 이루어진 주어진 어드레스에의 데이터 액세스와 또 하나의 스레드에 의해 이루어진 동일 어드레스에의 데이터 액세스와의 사이의 충돌을 검출하는 충돌 검출 회로소자도 가져도 된다. 중지 이벤트는, 그 충돌의 검출에 응답하여 충돌 검출 회로소자에 의해 기동될 수 있다. 중지 이벤트들에 대한 그 밖의 이유들은, 트랜잭션의 처리중에 일어나는 인터럽트들이나 예외들, 트랜잭션의 추가의 추론적 결과들을 수용하기 위한 트랜잭션 메모리 지원 회로소자내의 스토리지의 용량 부족, 또는 접하는 중인 트랜잭션에서 액세스되지 않으면 안되는 특정한 명령들도 포함할 수 있다. 트랜잭션 메모리 지원 회로소자는 트랜잭션내에서 명령들이 액세스한 어드레스들을 추적하는 어드레스 추적 회로소자도 가져도 되고, 충돌 검출 회로소자는 그 추적된 어드레스들을 사용하여 그 밖의 스레드들과의 충돌들을 식별하여도 된다.
대응한 컴퓨터 프로그램은, 명령들의 실행을 위한 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어할 수도 있고, 여기서, 처리 프로그램 로직은 상술한 것과 같은 예외 마스크 갱신 명령 후 명령들의 비중지 처리를 사용 가능하게 한다. 이러한 컴퓨터 프로그램에 의해, 자신이 트랜잭션 메모리 지원 회로소자를 갖지 않는 일반 호스트 데이터 처리장치는, 비록 이 특징들을 제공하는 하드웨어가 실제로 존재하지 않을 수도 있을지라도, 트랜잭션 메모리 기능성과 개선된 네스팅 심도의 시험으로부터 이익을 얻을 수 있다. 대신에, 컴퓨터 프로그램은, 프로그램 로직, 이를테면 이러한 기능성을 에뮬레이트하는 명령들의 세트들이나 데이터 구조들을 제공하여, 그 일반 호스트 데이터 처리장치가 상기와 같은 하드웨어 특징들을 제공하는 장치상에서 실행하도록 구성된 코드를 실행하는 것을 가능하게 한다.
도 1은 하드웨어 트랜잭션 메모리(HTM) 지원을 하는 데이터 처리장치(2)의 일례를 도시한 것이다. 이 장치는, 명령들을 실행하여 데이터 처리 연산들을 실시하는 처리 로직(4)을 갖는다. 예를 들면, 처리 로직(4)은, 각종 처리 연산들을 실행하는 실행 유닛들, 이를테면 덧셈, 곱셈, AND, OR 등등의 산술연산 또는 논리연산을 실시하는 산술/논리 유닛(ALU); 부동소수점 오퍼랜드들에 간한 연산들을 수행하는 부동소수점 유닛; 또는 다수의 데이터 요소들로 이루어진 벡터 오퍼랜드들에 관해 벡터 처리를 실시하는 벡터 처리 유닛을 포함할 수도 있다. 일 세트의 아키텍처 레지스터들(6)은, 처리 로직(4)에 의해 실행된 명령들에 대한 오퍼랜드들을 기억하고 그 실행된 명령들의 결과들을 기억하도록 구성된다. 명령 디코더(8)는, 처리 로직(4) 또는 데이터 처리장치(2)의 그 밖의 요소들을 제어하여 관련 연산들을 수행하기 위한 제어신호들을 생성하기 위해서, 명령 캐시(10)로부터 페치된 명령들을 디코딩한다. 로드/스토어 유닛(12)도, 데이터 캐시(14)나 메인 메모리(16)로부터 아키텍처 레지스터들(6)에 데이터 값을 로딩하는 (명령 디코더 8에 의해 디코딩된 로드 명령들에 응답하여) 로드 연산들과, 아키텍처 레지스터들(6)로부터 데이터 캐시(14) 또는 메모리(16)에 데이터 값을 기억하는 (명령 디코더 8에 의해 디코딩된 스토어 명령들에 응답하여) 스토어 연산들을 수행하도록 구성된다.
또한, 상기 장치(2)는, 하드웨어 트랜잭션 메모리(HTM)를 지원하는 여러가지의 자원들을 제공하는 트랜잭션 메모리 지원 회로소자(20)를 갖는다. 트랜잭션 메모리 지원 회로소자(20)에서의 HTM 자원들은, 예를 들면, 트랜잭션들의 추론적 결과들을 기억하는 추론적 결과 스토리지(22)와, 트랜잭션에 의해 액세스된 어드레스들을 추적하는 어드레스 추적 회로소자(24)와, 트랜잭션에 의해 이루어진 데이터 액세스들과 그 밖의 스레드들에 의해 이루어진 데이터 액세스들간의 충돌들을 검출하여 충돌이 검출될 때 트랜잭션이 중지될 수 있도록 하는 충돌 검출 회로소자(26)와, 트랜잭션의 시작에서 아키텍처 레지스터들(6)로부터 아키텍처 상태 데이터의 스냅샷을 기억하여 트랜잭션이 중지될 때 그 트랜잭션의 추론적 결과들을 겹쳐 쓰기 위해 이 상태가 복원될 수 있도록 하는 복원상태 기억 회로소자(28)를 구비할 수도 있다.
또한, 상기 장치(2)는, 처리 로직(4)이 그것의 현재의 처리를 중단하고 일부의 그 밖의 연산들로 전환하기를 요구하는 이벤트들을 표현하는 예외들(32)의 핸들링을 제어하는 예외 핸들링 회로소자(30)를 갖는다. 메모리(16)에 기억된 예외 핸들러 코드는 특정한 타입들의 예외들에 응답하여 수행될 연산들을 정의할 수도 있고, 예외 핸들링 회로소자(30)는 상이한 타입들의 예외에 대한 대응한 예외 핸들러들의 어드레스들을 나타내는 예외 벡터 테이블을 유지할 수도 있다. 아키텍처 상태(6)는, 일어날 수도 있는 예외들(32)의 서브세트들에 예외 핸들링 회로소자(30)가 작용해야 하는지를 판정하기 위한 예외 마스크 정보를 제공하는, 예외 마스크 레지스터(34)와 예외 우선순위 마스크 레지스터(36)를 포함할 수도 있다.
도 2는 트랜잭션 메모리 지원 회로소자(20)와 처리 로직(4)을 사용하여 주어진 스레드내에서 트랜잭션을 실행하는 일례를 도시한 것이다. 트랜잭션은, 트랜잭션 시작 명령(tstart)과 트랜잭션 종료 명령(tcommit)에 의해 결부되어 있는 프로그램 코드의 섹션이다. 도 2에 도시된 것처럼, 트랜잭션 시작 명령에 응답하여, 아키텍처 레지스터들(6)에서의 현재의 아키텍처 상태가 캡처되어 복원상태 기억 회로소자(28)에 기억된다. 처리 로직(4)은, 해당 tstart 명령에 후속하는 이후의 명령들의 추론적 실행을 수행하기 시작하고, 이 명령들이 실행됨에 따라, 그 명령들에 의해 액세스된 어드레스들은 어드레스 추적 회로소자(24)에 의해 추적되고, 충돌 검출 회로소자(26)는 그 밖의 스레드들에 응답하여 로드/스토어 유닛(12)을 사용하여 상기 추적된 어드레스들과 액세스가 이루어진 어드레스들간의 충돌들을 검출한다. 트랜잭션내에서 명령들의 적어도 일부의 추론적 결과들은, 추론적 결과 기억 회로소자(22)내에 기억된다. 예를 들면, 스토어 명령 STR에 응답하여 상기 캐시나 메모리에 기억된 값은, 트랜잭션이 진행중인 동안에 추론적 결과 기억 회로소자(22)에 보유되어도 된다. 트랜잭션 종료 명령(tcommit)에 그 동안에 일어나는 중지 이벤트 없이 도달되면, 트랜잭션 종료 명령에 응답하여, 추론적 결과들은 커밋된다. 트랜잭션을 커밋하면, 해당 스레드를 위해 추론적 결과 기억 회로소자(22)에 기억된 임의의 결과들은 데이터 캐시(14)나 메모리(16)에 기록되어도 되고, 복원상태(28)는, 더 이상 트랜잭션 시작 명령에 접하였기 이전의 포인트로 아키텍처 상태를 되돌릴 필요가 없을 때 겹쳐써지도록 폐기 또는 허가될 수 있다.
한편, 중지 이벤트가 일어나면, 예를 들면, 또 하나의 스레드가 이미 트랜잭션에 의해 액세스된 어드레스에 액세스할 때 충돌 검출 회로소자(26)에 의해 충돌이 검출되는 경우, 트랜잭션의 중지가 기동되고 복원상태 스토리지(28)로부터의 복원상태가 아키텍처 레지스터들(6)에 복원된다. 그 밖의 중지 이벤트의 요인은, 예를 들면, 트랜잭션내에서 실행되면 안되는 명령의 실행, 주어진 트랜잭션에서 필요로 하는 추론적 결과들이나 어드레스들을 핸들링하는 상기 추론적 결과 기억 회로소자(22) 또는 어드레스 추적 회로소자(24)내의 불충분한 자원, 또는 트랜잭션 동안에 수신되는 인터럽트를 포함할 수 있다.
도 3은 예외 마스크 레지스터(34)와 예외 우선순위 마스크 레지스터(36)의 콘텐츠의 일례를 도시한 것이다. 예외 마스크 레지스터는, 특정한 타입의 예외(32)에 각각 해당하는 일련의 플래그들(38)을 포함하고, 해당 예외가 사용 가능 또는 사용 불가인지를 지정한다. 도 3에 도시된 매핑에 있어서, 플래그 값 1은 예외의 사용 가능(마스킹되지 않음)을 나타내고, 플래그 값 0은 예외 타입의 사용 불가(마스킹됨)를 나타내지만, 대향하는 매핑도 사용될 수 있다는 것을 알 것이다. 예외 타입이 사용 불가일 때, 해당 예외가 일어나는 경우도, 처리 로직(4)이 인터럽트되지 않게 된다. 그렇지만, 사용 불가였던 예외에 대한 예외 신호의 어서션(assertion)은 진행중인채로 있어도 되어서, 해당 예외가 여전히 진행중인 채로 있는 상태에서 그 예외가 나중에 마스킹되지 않으면(사용 불가이면), 그때에 상기 예외의 신호를 프로세서(4)에 보내도 된다.
마찬가지로, 예외 우선순위 마스크 레지스터(36)는, 역치 우선순위 레벨을 정의할 수도 있다. 우선순위 레벨이 해당 역치이하인 예외는 사용 불가(마스킹됨)라고 할 수도 있고 우선순위 레벨이 그 역치보다 큰 예외는 사용 가능(마스킹되지 않음)해질 수도 있다. 레지스터들(34, 36)에 있는 마스크 정보는 테이큰(taken) 예외의 신호를 처리 로직(4)에 보낼지를 판정하는데만 사용된 정보가 아닐 수도 있다는 것을 알 것이다. 예를 들면, 우선순위 레벨은, 다수의 사용 가능이었던 예외들이 일어날 때 고 우선순위 예외의 신호가 저 우선순위 예외의 신호보다 빨리 보내지도록 사용되어도 된다. 마찬가지로, 예외의 신호를 처리 로직(4)에 보내는 것은, 현재 실행중인 코드의 우선순위 레벨과 인입(incoming) 예외와 관련된 우선순위 레벨과의 비교에 좌우될 수도 있다.
도 4는 비교를 위해, 트랜잭션 동안에 예외 마스크 레지스터들(34, 36)로의 변경들을 핸들링하는 전형적인 해결방법을 도시한 것이다. 예외 마스크 갱신 명령은, 예외 마스크 레지스터(34) 또는 예외 우선순위 마스크 레지스터(36)에 있는 값들을 변경할 수도 있다. 전형적으로, 이러한 명령에 의해, 예외 마스크 레지스터들(34, 36)에 대한 갱신을 포함하는 트랜잭션을 성공적으로 완료하는 것이 불가능도록 트랜잭션이 중지될 수도 있다. 이것은 예외 마스크 갱신 명령이 예외들의 서브세트를 사용 가능 또는 사용 불가로 하고 있는지의 여부에 상관없이 수행되어도 된다. 하지만, 도 5에 도시된 것처럼, 보다 중요한 문제는, 언제 예외 마스크 갱신 명령이 트랜잭션의 시작에서 사용 불가였던 사용 가능해지고 있는 명령들의 서브세트를 추가하게 될지다.
도 5는 예외 마스크 갱신들을 트랜잭션동안에 허용하고 예외 마스크 갱신 후 그 트랜잭션에 대해 진행시키면 일어날 수 있는 지속 락 문제를 도시한 것이다. 도 5는 예외들 A의 특정한 서브세트의 사용 불가일 때에 트랜잭션 시작 명령, tstart가 실행되는 일례를 도시한 것이다. 상기 예외들 A의 서브세트는, 대응한 예외 마스크 플래그(38)가 사용 불가인 특별한 타입의 예외일 수 있거나, 레지스터(36)에서 우선순위 레벨이 현재의 우선순위 역치이하인 예외들의 서브세트일 수 있다. 그 후, 트랜잭션의 명령들의 추론적 처리는 시작되고, 예외들 A의 서브세트가 사용 가능해지도록 예외 마스크 레지스터들(34, 36)의 한쪽 또는 양쪽에 대해 갱신을 기동하는 예외 마스크 갱신 명령(50)에 도달된다. 이어서, 그 서브세트내의 예외 A가 일어나서 트랜잭션이 중지하게 된다. 이때, 레지스터들(34, 36)과 관련된 예외 마스크 정보를 복원하는 것을 포함하는, 상기 복원 스토리지(28)에 기억된 복원 상태는, 아키텍처 레지스터들(6)에 대해 복원된다. 이때, 트랜잭션 시작 명령일 때에 예외들 A의 서브세트가 사용 불가였으므로, 상태의 복원으로 예외 A가 다시 사용 불가능하게 된다. 트랜잭션이 중지된 후 예외를 두는 것이 통상적이지만, 상태 복원으로 예외 A의 서브세트가 사용 불가능하게 되므로, 그 예외는 마스킹되어서 취해지지 않을 것이다. 그럼에도 불구하고, 대응한 예외 신호(32)는 진행중인 채로 있다.
그 후, 이 트랜잭션을 포함하는 소프트웨어는, 트랜잭션의 일정을 변경하려고 시도하고 다시 도 5의 우측 부분에 도시된 것처럼 트랜잭션 시작 명령부터 시작할 수도 있다. 또, 복원 상태는 캡처되고 트랜잭션의 처리는 시작하지만, 예외 A는 진행중인 채로 있다. 따라서, 예외 마스크 갱신 명령에 다시 도달될 때, 예외 A는 사용 가능하고 마스킹되지 않으며, 트랜잭션은 그 예외가 여전히 진행중이기 때문에 다시 중지할 것이다. 이는, 다시 이 복원 상태의 복원과, 상기 중지시의 진행중인 상태와 복원상태 스토리지(28)에 의해 나타낸 상태간의 차이 때문에 예외 A의 사용 불가를 기동시킨다. 따라서, 이것은, 트랜잭션을 실행하려고 첫번째 시도에서 일어났던 동일한 조건이다. 소프트웨어는 트랜잭션을 다시 반복하려고 노력할 수도 있고, 이것은 지속 락 루프로 이어질 수 있고, 이때의 소프트웨어는, 예외 A의 서브세트가 사용 가능해지는 시점에서 진행중인 해당 서브세트의 예외가 존재하고 이것이 트랜잭션을 즉시 중지시키기 때문에 계속 실패하는 트랜잭션을 반복적으로 실행하려고 계속 노력하고 있다. 이러한 지속 락 루프는, 예외가 디어서트되거나, 소프트웨어가 트랜잭션을 실행할 때 충분히 시도하였다고 판정하여 실행의 비트랜잭션 모드로 전환할 때까지, 계속될 수도 있다. 이러한 지속 락 루프는 성능에 해로울 수 있고, 이것의 이유는 전형적으로는 도 4에서의 해결방법이 취해졌기 때문이고, 여기서 임의의 예외 마스크 갱신 명령은 그 트랜잭션을 중지시킬 것이다.
그에 반해서, 도 6은 상이한 해결방법을 도시한 것이다. 본 예에서는, 예외 마스크 갱신 명령(50)이 트랜잭션 동안에 허용되고, 예외 마스크 갱신 명령(50)에 후속하는 트랜잭션의 명령들의 비중지된 실행이 허가된다. 예외 마스크 갱신 명령 후 트랜잭션을 중지시키는 그 밖의 이유들, 이를테면 충돌 검출 회로소자(26)에 의해 검출된 충돌, 추론적 결과 스토리지(22)나 어드레스 추적 스토리지(24)내의 자원 부족, 또는 예외의 발생의 이유들이 존재할 수도 있지만, 중지를 필요로 하는 다른 이벤트가 일어나지 않으면, 트랜잭션은, 적어도 예외들의 서브세트를 위해 사용 불가 상태로부터 사용 가능 상태로 마스크 정보를 전환하는 예외 마스크 갱신 명령(50)이 포함되는 경우에도, 트랜잭션 종료 명령 tcommit에 도달 가능하다. 이것은, 실행의 트랜잭션 모드를 이전에 사용 가능하지 않았을 추가의 코드 시퀀스들에 이용 가능하게 하여, 락 기반 코드와 같은 보다 많은 비관적 모델들 대신에 상기 트랜잭션 모드를 사용함으로써 수행 절약의 기회를 증가시킨다. 현재 사용 가능하지만 트랜잭션을 시작할 때에 사용 불가였던 예외로 인해 트랜잭션을 중지시키는 것에 대한 지속 락 상황의 위험을 저감시키기 위해서, 트랜잭션 중지 상태 레지스터(52)내의 중지 상태값은, 그 중지의 원인을 나타내기 위해 소정의 값으로 설정된다. 도 6은 중지 상태 정보를 나타내기 위해 2개의 다른 해결방법을 도시한 것이다. 일례에서, 중지 상태 레지스터(52)의 플래그(54)는, 트랜잭션의 시작에서 이전에 사용 불가였던 예외에 의해 중지가 기동되었을 때 제1 값(예컨대, 이진수의 1)으로 설정되어도 된다. 또 하나의 해결방법에 있어서, 중지 상태 레지스터(52)는, 트랜잭션의 시작에서 이전에 사용 불가였던 현재 사용 가능한 예외에 의해 상기 중지가 기동되었던 것을 나타내는 일부의 특별한 비트 패턴[x y z]을 가질 수도 있는 상태 코드를 기억할 수도 있다(이때 그 밖의 모든 중지 이유들은 그 상태 코드의 상이한 비트 패턴을 사용함). 중지 상태 정보가 어떻게 표현되는지에 상관 없이, 이것은, 소프트웨어가 상기 중지의 원인을 판정하는 것을 가능하게 하는 아키텍처 지원을 제공한다. 소프트웨어는, 그 중지 상태 정보(52)를 판독하고 그 중지의 이유가 예외의 사용 가능에 의해 중지하게 되는 이유였다고 판정할 수 있고, 이것은 트랜잭션을 반복하면 다시 일어날 가능성이 높다. 따라서, 소프트웨어는, 트랜잭션을 재시도하지 않는다고 판정하고 예를 들면 그 대신에 락 기반 실행을 사용할 수 있다. 따라서, 이것은, 예외 마스크 갱신들을 포함하는 코드용 트랜잭션 모드들을 사용할 기회들을 증가시키면서 상기 지속 락이 일어날 가능성을 감소시킨다.
도 7은 트랜잭션 모드에서 명령들의 처리를 도시하는 흐름도다. 단계100에서는, 명령 디코더(8)에 의해 트랜잭션 시작 명령이 접한다. 명령 디코더(8)는, 단계 102에서 처리 로직(4)을 제어하여 현재의 아키텍처 상태를 (레지스터들 34, 36에 있는 예외 마스크 정보를 포함하는) 레지스터들(6)로부터 캡처하고 그 캡처된 상태를 복원 상태 스토리지(28)내에 기억시키는 제어신호들을 생성한다. 일부의 구현에 있어서, 이 복원상태 캡처는, 진행중인 다른 트랜잭션이 없을 때 실행되는 가장 첫번째 트랜잭션 시작 명령에 대해서만 수행되어도 된다. 트랜잭션들의 네스팅이 일어나면, 두번째 트랜잭션 시작 명령에 접한 후 이전의 트랜잭션의 종료에 도달할 때, 복원상태 캡처는, 그들의 추가의 네스트 트랜잭션(nested transaction)들이 복잡성을 감소하도록 억제될 수 있다.
단계 104에서는, 트랜잭션 시작 명령 후 명령들의 추론적 실행을 시작한다. 어드레스 추적 회로소자(24)는 트랜잭션의 명령들에 의해 액세스된 어드레스들을 기록하기 시작하고, 충돌 검출 회로소자(26)는 그 어드레스들과 그 밖의 스레드들에 의해 액세스된 어드레스들간의 충돌들을 확인한다.
단계 106에서는, 명령 디코더(8)는, 트랜잭션의 시작에서 사용 불가였던 예외들의 서브세트를 사용 가능하게 하는 예외 마스크 갱신 명령에 접하여 있는지를 확인하고, 접하여 있을 경우 단계 108에서는 처리 로직(4)을 제어하여 레지스터들(34, 36)의 한쪽 또는 양쪽에 있는 예외 마스크 정보를 갱신하고 나서, 트랜잭션의 미중지된 추론적 실행을 계속한다. 따라서, 예외 마스크 갱신은, 트랜잭션의 중지를 기동하지 않는다. 예외 마스크 갱신이 접하지 않는 경우는, 단계 110에서는 임의의 중지 이벤트가 일어났는지를 확인한다. 중지 이벤트는, 예를 들면, (예외 마스크 레지스터 34 또는 예외 우선순위 마스크 레지스터 36에 의해 현재 마스킹되지 않은) 사용 가능 예외의 발생, 충돌 검출 회로소자(26)에 의해 검출된 충돌, 트랜잭션내에서 실행되면 안되는 명령의 실행, 또는 현재의 트랜잭션에 대한 정보의 추가의 스토리지를 수용하기 위해 HTM 추적 구조 22, 24 중 한쪽에서 불충분한 용량의 존재일 수 있다.
중지 이벤트가 일어나는 경우, 단계 112에서는, 트랜잭션을 중지시키고, 복원상태를 복원상태 스토리지(28)로부터 아키텍처 레지스터(36)에 복원한다. 단계 114에서, 처리 로직(4) 또는 예외 핸들링 회로소자(30)는, 중지 이벤트가 트랜잭션의 시작에서 사용 불가였던 사용 가능 예외에 의해 생겼는지를 판정한다. 이는, 새롭게 복원된 예외 마스크 레지스터(34) 및 예외 우선순위 마스크 레지스터(36)를, 중지로 이어진 예외의 특성들과 비교함으로써, 판정될 수 있다. 중지 이벤트가 트랜잭션의 시작에서 사용 불가였던 사용 가능 예외에 의해 생겼을 경우, 단계 116에서는, 중지 상태 레지스터(52)를 소정의 값으로 설정한다. 그렇지 않은 경우, 중지 상태 레지스터(52)는, 그 중지의 이유를 표현하는 상이한 값으로 설정된다. 이것은, 그 이유들에 관해 소프트웨어에 알려, 그 소프트웨어가, 중지 상태 정보에 따라, 트랜잭션을 다시 실행하려고 하는 반복된 시도에, 또는, 다른 락 기반 코드에, 조건적 분기를 취할 수 있도록 하는 것이다. 따라서, 트랜잭션 동안에 마스킹되지 않았던 사용 가능 예외에 의해 기동된 중지들을 식별하는 특정한 상태값을 포함하는 중지 상태 정보는, 그 중지된 트랜잭션에 대응한 연산들의 일정을 변경하는 방법에 관해 보다 좋은 결정을 하는 것을 가능하게 한다.
단계 110에서 중지 이벤트가 일어나지 않는 경우, 트랜잭션 처리가 계속된다. 단계 120에서는, 명령 디코더(8)에 의해 트랜잭션 종료 명령(tcommit)에 접하여 있는지를 판정하고, 접하여 있을 경우 단계 122에서 처리 로직(4)을 기동하여 트랜잭션의 임의의 추론적 결과들을 커밋하고 그 트랜잭션과 관련되는 복원상태 스토리지(28)내에 복원상태의 겹쳐쓰기를 폐기하거나 허가하도록 제어신호들을 생성한다. 추론적 결과들의 커밋팅(commiting)은, 예를 들면, 스토어 명령들의 결과들을 추론적 결과 스토리지(22)로부터 데이터 캐시(14)나 메모리(16)에 기록하는 것을 포함할 수도 있다. 일부의 경우에, 추론적 결과들의 커밋팅은, 트랜잭션 종료 명령 전부에 대해 수행되지 않아도 된다. 예를 들면, 네스트 트랜잭션들에 의해, 네스트 세트의 외부 트랜잭션의 최종 트랜잭션 종료 명령만이 추론적 결과들의 커밋팅을 기동할 수 있고, 임의의 내부 트랜잭션의 트랜잭션 종료 명령이 무시될 수 있다. 또한, 일부의 경우에, 트랜잭션 종료 명령에 도달할 때, 추론적 결과들이 실제로 커밋될 수 있는지를 확인하기 위해 그 밖의 기준들이 존재할 수도 있다.
단계 120에서 트랜잭션 종료 명령에 아직 도달되지 않은 경우, 상기 방법은, 단계 106으로 복귀하여 단계 106, 110 및 120에서 확인된 이벤트들 중 적어도 하나가 일어날 때까지 순환된다.
도 8은 사용할 수도 있는 시뮬레이터 구현을 도시한 것이다. 상술한 실시예들은 관련된 기술들을 지원하는 특정한 처리 하드웨어를 동작시키는 장치 및 방법들의 관점에서 본 발명을 구현하지만, 컴퓨터 프로그램의 이용을 통해 구현되는 여기서 설명된 실시예들에 따라 명령 실행 환경을 제공하는 것도 가능하다. 이러한 컴퓨터 프로그램들은, 하드웨어 아키텍처의 소프트웨어 기반 구현을 제공하는 한, 시뮬레이터라고 하는 경우가 많다. 각종의 시뮬레이터 컴퓨터 프로그램들은, 에뮬레이터들, 가상 머신들, 모델들, 및 동적 이진 변환기를 비롯한 이진 변환기들을 포함한다. 전형적으로, 시뮬레이터 구현은, 시뮬레이터 프로그램(210)을 지원하는 호스트 운영체계(220)를 선택적으로 동작시키는 호스트 프로세서(230)상에서 동작할 수도 있다. 일부의 구성들에는, 하드웨어와 상기 제공된 명령 실행 환경간의 시뮬레이션의 다수의 층들, 및/또는 동일한 호스트 프로세서상에 제공된 다수의 별개의 명령 실행 환경들이 존재할 수도 있다. 역사적으로, 강력한 프로세서들은 합리적 속도로 실행하는 시뮬레이터 구현을 제공하는데 필요하지만, 이러한 해결방법은, 특정한 상황에서, 이를테면, 호환성 또는 재사용 목적을 위해 또 하나의 프로세서 고유의 코드를 실행하기를 바라는 경우에 정당화될 수도 있다. 예를 들면, 시뮬레이터 구현은, 호스트 프로세서 하드웨어에서 지원하지 않는 추가의 기능성을 명령 실행 환경에 제공하여도 되거나, 전형적으로 상이한 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공하여도 된다. 시뮬레이션의 개요는, "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53-63에 제시되어 있다.
시뮬레이션된 실시예에서, 특별한 하드웨어 구성들 또는 특징들을 참조하여 실시예들을 이전에 설명한 결과로, 동등한 기능성이 적절한 소프트웨어 구성들 또는 특징들에 의해 제공되어도 된다. 예를 들면, 특별한 회로소자는, 시뮬레이션된 실시예에서 컴퓨터 프로그램 로직으로서 구현되어도 된다. 마찬가지로, 메모리 하드웨어, 이를테면 레지스터나 해시는, 시뮬레이션된 실시예에서 소프트웨어 데이터 구조체로서 구현되어도 된다. 이전에 설명된 실시예들에서 참조한 하드웨어 요소들 중 하나 이상이 호스트 하드웨어(예를 들면, 호스트 프로세서 230)상에 존재하는 구성들에 있어서, 일부의 시뮬레이션된 실시예들은, 적절한 경우, 호스트 하드웨어를 이용하여도 된다.
시뮬레이터 프로그램(210)은, (비일시적 매체일 수도 있는) 컴퓨터 판독 가능한 기억매체에 기억되어도 되고, 이 시뮬레이터 프로그램(210)에 의해 모형이 만들어지는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 같은 (애플리케이션들, 운영체계들, 및 하이퍼바이저를 포함할 수도 있는) 타겟 코드(200)에 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 타겟 코드(200)의 프로그램 명령들은, 시뮬레이터 프로그램(210)을 사용하여 상술한 방식으로 트랜잭션내의 예외 마스크 갱신 명령들을 핸들링하기 위해 그 명령 실행 환경내에서 실행되어도 되어, 상술한 장치(2)의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(230)는, 이 특징들을 에뮬레이트 할 수 있다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 예시적 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 그 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다.

Claims (15)

  1. 명령들에 응답하여 데이터 처리를 수행하는 처리 회로소자로서, 처리 회로소자에 의해 데이터 처리의 스레드내에서, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하는 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하며, 상기 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 상기 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 중지 이벤트가 트랜잭션 종료 명령이 도달되기 전에 일어날 때 그 트랜잭션의 처리를 중지시키도록 구성되는, 상기 처리 회로소자; 및
    예외들의 하나 이상의 서브세트들이 사용 가능 또는 사용 불가인지를 지정하는 예외 마스크 정보에 따라 예외를 마스킹할지를 판정하는 예외 핸들링 회로소자를 구비하고;
    트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 상기 처리 회로소자는, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령 후 트랜잭션의 하나 이상의 이후의 명령들의 비중지 처리를 허가하도록 구성되고,
    상기 처리 회로소자는, 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 상기 중지 이벤트를 기동하도록 구성되고,
    트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 상기 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 상기 처리 회로소자는 중지 상태정보를 소정의 값으로 설정하도록 구성되고,
    트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 처리 회로소자는 상기 중지 상태정보를 상기 소정의 값이외의 값으로 설정하도록 구성되는, 장치.
  2. 제 1 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는, 트랜잭션 시작 명령에 응답하여 캡처된 트랜잭션 복원상태 데이터를 기억하는 복원상태 기억 회로소자를 구비하는, 장치.
  3. 제 2 항에 있어서,
    상기 처리 회로소자는, 상기 중지 이벤트에 응답하여 트랜잭션 복원상태 데이터를 복원하도록 구성되는, 장치.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 트랜잭션 복원상태 데이터는, 상기 예외 마스크 정보를 포함하는, 장치.
  5. 삭제
  6. 제 3 항에 있어서,
    상기 트랜잭션 복원상태 데이터는, 상기 예외 마스크 정보를 포함하고;
    트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 처리 회로소자는, 상기 중지 이벤트를 기동하고, 트랜잭션 복원상태 데이터가 복원되어 있을 때까지 예외를 서비스하는 것을 연기하도록 구성되는, 장치.
  7. 삭제
  8. 삭제
  9. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 예외 마스크 정보는, 따로따로 복수의 타입들의 예외에 대해서, 각 타입의 예외가 사용 가능 또는 사용 불가인지를 지정하는, 장치.
  10. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 예외 마스크 정보는 예외 우선순위 역치를 지정하고, 상기 예외 핸들링 회로소자는, 예외의 우선순위 레벨과 예외 우선순위 역치와의 비교에 따라 예외를 마스킹할지를 판정하도록 구성되는, 장치.
  11. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는,
    추론적으로 실행된 명령들의 상기 결과들을 기억하는 추론적 결과 기억 회로소자; 및
    트랜잭션내에서 명령들에 의해 액세스된 어드레스들을 추적하는 어드레스 추적 회로소자 중,
    적어도 하나를 구비하는, 장치.
  12. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는, 제1 스레드의 트랜잭션내에서 이루어진 주어진 어드레스에의 데이터 액세스와 또 하나의 스레드에 의해 이루어진 동일 어드레스에의 데이터 액세스와의 사이의 충돌을 검출하는 충돌 검출 회로소자를 구비하는, 장치.
  13. 제 12 항에 있어서,
    상기 충돌 검출 회로소자는, 충돌의 검출에 응답하여 상기 중지 이벤트를 기동하도록 구성되는, 장치.
  14. 처리 회로소자에 의해 데이터 처리의 스레드내에서, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하는 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하는 처리 회로소자를 사용하여, 명령들에 응답하여 데이터 처리를 수행하는 단계로서, 상기 처리 회로소자가, 트랜잭션 종료 명령에 도달될 때까지 상기 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 중지 이벤트가 트랜잭션 종료 명령이 도달되기 전에 일어날 때 그 트랜잭션의 처리를 중지시키도록 구성되는, 상기 수행하는 단계;
    예외에 응답하여, 예외들의 하나 이상의 서브세트들이 사용 가능 또는 사용 불가인지를 지정하는 예외 마스크 정보에 따라 예외를 마스킹할지를 판정하는 단계;
    트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령 후 트랜잭션의 하나 이상의 이후의 명령들의 비중지 처리를 허가하는 단계;
    트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 상기 중지 이벤트를 기동하는 단계;
    트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 상기 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 중지 상태정보를 소정의 값으로 설정하는 단계; 및
    트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 중지 상태정보를 상기 소정의 값이외의 값으로 설정하는 단계를 포함하는, 데이터 처리방법.
  15. 명령들의 실행을 위한 명령 실행 환경을 제공하기 위해 호스트 데이터 처리장치를 제어하기 위한, 기억매체에 기억된, 컴퓨터 프로그램으로서,
    데이터 처리의 스레드내에서, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하는 트랜잭션의 실행을 지원하는 처리 프로그램 로직으로서, 트랜잭션 종료 명령에 도달될 때까지 상기 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 중지 이벤트가 트랜잭션 종료 명령이 도달되기 전에 일어날 때 그 트랜잭션의 처리를 중지시키도록 구성되는, 상기 처리 프로그램 로직; 및
    예외들의 하나 이상의 서브세트들이 사용 가능 또는 사용 불가인지를 지정하는 예외 마스크 정보에 따라 예외를 마스킹할지를 판정하는 예외 핸들링 프로그램 로직을 포함하고;
    트랜잭션의 처리 시작에서 사용 불가였던 예외들의 적어도 하나의 서브세트를 사용 가능하게 예외 마스크 정보를 갱신하는 트랜잭션내에서 실행된 예외 마스크 갱신 명령에 응답하여, 상기 처리 프로그램 로직은, 예외 마스크 정보를 갱신하고, 상기 예외 마스크 갱신 명령 후 트랜잭션의 하나 이상의 이후의 명령들의 비중지 처리를 허가하도록 구성되고,
    상기 처리 프로그램 로직은, 트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여 상기 중지 이벤트를 기동하도록 구성되고,
    트랜잭션의 처리중에 사용 가능 예외의 발생에 응답하여, 상기 사용 가능 예외가 트랜잭션의 처리의 시작에서 사용 불가였을 때, 상기 처리 프로그램 로직은 중지 상태정보를 소정의 값으로 설정하도록 구성되고,
    트랜잭션에 대해 일어나는 중지 이벤트에 응답하여, 중지 이벤트가 사용 가능 예외의 발생이외의 이벤트에 의해 기동되거나, 트랜잭션의 처리의 시작에서 사용 가능하였던 사용 가능 예외의 발생에 의해 기동될 때, 상기 처리 프로그램 로직은 상기 중지 상태정보를 상기 소정의 값이외의 값으로 설정하도록 구성되는, 컴퓨터 프로그램.
KR1020207010275A 2017-09-29 2018-08-21 예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가 KR102599689B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17386031.3A EP3462312B1 (en) 2017-09-29 2017-09-29 Permitting unaborted processing of transaction after exception mask update instruction
EP17386031.3 2017-09-29
PCT/EP2018/072495 WO2019063200A1 (en) 2017-09-29 2018-08-21 NON-INTERRUPTED TRANSACTION PROCESSING AUTHORIZATION AFTER EXCEPTION MASK UPDATE INSTRUCTION

Publications (2)

Publication Number Publication Date
KR20200061361A KR20200061361A (ko) 2020-06-02
KR102599689B1 true KR102599689B1 (ko) 2023-11-08

Family

ID=60143663

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207010275A KR102599689B1 (ko) 2017-09-29 2018-08-21 예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가

Country Status (8)

Country Link
US (1) US11663034B2 (ko)
EP (1) EP3462312B1 (ko)
JP (1) JP7136888B2 (ko)
KR (1) KR102599689B1 (ko)
CN (1) CN111133418B (ko)
IL (1) IL273129B2 (ko)
TW (1) TWI786181B (ko)
WO (1) WO2019063200A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194584B1 (en) * 2019-07-19 2021-12-07 Marvell Asia Pte, Ltd. Managing out-of-order retirement of instructions
EP4338625A1 (en) 2021-05-10 2024-03-20 Japan Tobacco, Inc. Power supply unit for aerosol generation device
WO2022239513A1 (ja) 2021-05-10 2022-11-17 日本たばこ産業株式会社 エアロゾル発生装置の電源ユニット
JPWO2022239515A1 (ko) 2021-05-10 2022-11-17
EP4338618A1 (en) 2021-05-10 2024-03-20 Japan Tobacco, Inc. Power supply unit for aerosol production device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132337A1 (en) * 2012-02-02 2016-05-12 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
US20170177338A1 (en) * 2015-12-18 2017-06-22 International Business Machines Corporation Management of asynchronous interrupts in a transactional memory multiprocessor environment

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1105069A (en) * 1976-04-15 1981-07-14 John W. Daughton Control system for electrostatographic machines
JPS63238630A (ja) * 1987-03-26 1988-10-04 Toshiba Corp マイクロプロセツサの割込み制御装置
US6024486A (en) * 1996-06-05 2000-02-15 Compaq Computer Corporation Data error detection and correction
US6173248B1 (en) * 1998-02-09 2001-01-09 Hewlett-Packard Company Method and apparatus for handling masked exceptions in an instruction interpreter
FR2775370B1 (fr) * 1998-02-20 2001-10-19 Sgs Thomson Microelectronics Procede de gestion d'interruptions dans un microprocesseur
JP3600095B2 (ja) * 1999-12-07 2004-12-08 松下電器産業株式会社 割り込み管理装置及び割り込み管理方法
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP4971676B2 (ja) * 2006-04-28 2012-07-11 ルネサスエレクトロニクス株式会社 割り込み制御回路及び割り込み制御方法
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US8914620B2 (en) * 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
JP5214537B2 (ja) * 2009-05-25 2013-06-19 株式会社東芝 マルチプロセッサシステム
US8225139B2 (en) * 2009-06-29 2012-07-17 Oracle America, Inc. Facilitating transactional execution through feedback about misspeculation
US9477515B2 (en) * 2009-12-15 2016-10-25 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8438568B2 (en) * 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
US9256369B2 (en) * 2012-04-18 2016-02-09 Samsung Electronics Co., Ltd. Programmable memory controller
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9442737B2 (en) * 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9740549B2 (en) * 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
GB2499277B (en) 2012-08-30 2014-04-02 Imagination Tech Ltd Global register protection in a multi-threaded processor
US9081607B2 (en) * 2012-10-24 2015-07-14 International Business Machines Corporation Conditional transaction abort and precise abort handling
KR20150123922A (ko) 2013-03-07 2015-11-04 미쓰비시덴키 가부시키가이샤 엔지니어링 툴
US9824039B2 (en) * 2013-09-09 2017-11-21 International Business Machines Corporation Signal interrupts in a transactional memory system
US9348522B2 (en) * 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9207967B2 (en) * 2014-01-07 2015-12-08 Red Hat, Inc. Using nonspeculative operations for lock elision
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
US9817693B2 (en) 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
JP6438353B2 (ja) 2015-05-27 2018-12-12 ルネサスエレクトロニクス株式会社 半導体装置及び診断テスト方法
US9952895B2 (en) * 2015-06-27 2018-04-24 Vmware, Inc. Implementing pseudo non-masking interrupts behavior using a priority interrupt controller

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132337A1 (en) * 2012-02-02 2016-05-12 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
US20170177338A1 (en) * 2015-12-18 2017-06-22 International Business Machines Corporation Management of asynchronous interrupts in a transactional memory multiprocessor environment

Also Published As

Publication number Publication date
JP7136888B2 (ja) 2022-09-13
US11663034B2 (en) 2023-05-30
IL273129A (en) 2020-04-30
IL273129B2 (en) 2024-04-01
JP2020535512A (ja) 2020-12-03
CN111133418B (zh) 2023-12-22
WO2019063200A1 (en) 2019-04-04
IL273129B1 (en) 2023-12-01
US20200278882A1 (en) 2020-09-03
EP3462312A1 (en) 2019-04-03
KR20200061361A (ko) 2020-06-02
TWI786181B (zh) 2022-12-11
TW201915761A (zh) 2019-04-16
CN111133418A (zh) 2020-05-08
EP3462312B1 (en) 2022-08-17

Similar Documents

Publication Publication Date Title
KR102599689B1 (ko) 예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가
US8332619B2 (en) Primitives to enhance thread-level speculation
JP2011529603A (ja) バーチャル化可能な高度な同期機構
JP7281491B2 (ja) トランザクショナル比較及び破棄命令
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
US10853223B2 (en) Simulation of transactions
CN111164572B (zh) 数据处理装置和方法
KR102597201B1 (ko) 트랜잭션 네스팅 심도 시험 명령
US20230315510A1 (en) A technique for handling transactions in a system employing transactional memory

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