KR102597201B1 - 트랜잭션 네스팅 심도 시험 명령 - Google Patents

트랜잭션 네스팅 심도 시험 명령 Download PDF

Info

Publication number
KR102597201B1
KR102597201B1 KR1020207010274A KR20207010274A KR102597201B1 KR 102597201 B1 KR102597201 B1 KR 102597201B1 KR 1020207010274 A KR1020207010274 A KR 1020207010274A KR 20207010274 A KR20207010274 A KR 20207010274A KR 102597201 B1 KR102597201 B1 KR 102597201B1
Authority
KR
South Korea
Prior art keywords
transaction
state
nesting depth
instruction
instructions
Prior art date
Application number
KR1020207010274A
Other languages
English (en)
Other versions
KR20200061360A (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 KR20200061360A publication Critical patent/KR20200061360A/ko
Application granted granted Critical
Publication of KR102597201B1 publication Critical patent/KR102597201B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Advance Control (AREA)

Abstract

트랜잭션 메모리 지원을 제공하는 시스템에서는, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 따라 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하도록 처리 회로소자(4)를 기동하는 트랜잭션 네스팅 심도 시험 명령을 제공하고, 그 복수의 상태들은 트랜잭션 네스팅 심도가 1일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 1보다 크거나 미만일 때 선택된 적어도 하나의 추가의 상태를 포함한다. 지원된 ISA는, 단일의 트랜잭션 네스팅 심도 시험 명령과 단일의 조건적 분기 명령에 응답하여 수행되는 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기와 상기 적어도 하나의 상태 값의 설정을 가능하게 한다.

Description

트랜잭션 네스팅 심도 시험 명령
본 기술은, 데이터 처리분야에 관한 것이다. 보다 구체적으로, 본 기술은 트랜잭션 메모리에 관한 것이다.
데이터 처리 시스템은, 데이터 처리의 다수의 스레드들을 실행하여도 된다. 종종, 그 스레드들은 공유자원에 액세스할 필요가 있을 수도 있고, 데이터 처리 연산들의 특성은, 스레드가 그 공유자원과 상호작용하기 시작하면, 그 동안에 또 하나의 스레드가 자원에 액세스하지 않고, 일 세트의 연산들이 그 자원을 사용하여 원자적으로 완료하는 것이 필요할 수도 있다는 것일 수도 있다.
스레드끼리의 이러한 충돌을 핸들링하는 기술의 하나는, 적어도 하나의 타겟 자원에 대한 배타적 액세스를 제어하기 위해 락(lock)들을 사용하는 것일 수도 있다. 예를 들면, 하나의 스레드가 특별한 어드레스 구역에서의 데이터에 액세스하기 시작할 때, 그 스레드는 그 락의 소유권을 주장하기 위해 락 변수를 설정하여도 되고, 그 후, 락 소유 스레드가 락의 소유권이 있지만, 그 박 변수를 확인하는 그 밖의 스레드들은 그 락이 이미 주장되어 있어서 해당 어드레스 구역과 상호작용하는 코드의 섹션에 들어가지 않을 수도 있다고 판정할 수도 있다. 이와 같은 락 기반 해결방법은, 충돌이 일어날 수 없다는 것을 보증하는 락의 소유권을 갖지 않으면, 또 하나의 스레드와의 충돌이 일어날 수도 있기 때문에 공유자원에 액세스하는 코드의 섹션에 들어갈 수 없다고 각 스레드가 디폴트로 상정한다는 점에서 비관적(pessimistic)으로 보일 수 있다. 그렇지만, 락 식별자는 다수의 자원들(예: 다양한 어드레스들)에의 배타적 액세스를 제어하기도 하는 경우도 많이 있어서, 하나의 스레드가 락 변수에 의해 보호된 일 세트의 자원들내의 특정한 자원들에 액세스중이면, 또 하나의 스레드가 확실히 동일한 자원에 액세스한다는 것이 보증되지 않는다. 따라서, 스레드끼리의 충돌들이 드문 경우에는, 락 기반 해결방법에 의해, 공유자원을 사용하는 특정한 코드의 섹션에 들어가기 전에 락들이 해제되기를 불필요하게 기다리고 있을 수도 있기 때문에 성능이 손실될 수도 있다.
공유자원에 액세스하는 스레드끼리의 충돌들을 핸들링하는 보다 낙관적(optimistic) 해결방법은, 트랜잭션 메모리 지원을 이용하는 방법일 수 있다. 데이터 처리 시스템은, 처리 회로소자에 의해 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 회로소자를 가질 수도 있다. 트랜잭션은, 트랜잭션의 시작을 표시하는 트랜잭션 시작 명령과 트랜잭션의 종료를 표시하는 트랜잭션 종료 명령과의 사이에서 실행되는 스레드의 그 명령들일 수도 있다. 그 트랜잭션 시작 명령과 종료 명령과의 사이에서, 상기 처리 회로소자는, 추론적으로 중재 명령들을 실행하고, 그 추론적으로 실행된 명령들의 결과들의 커밋먼트(commitment)를 트랜잭션 종료 명령에 도달될 때까지 방지할 수도 있다. 트랜잭션 시작 명령의 실행 후(하지만 트랜잭션 종료 명령에 도달되기 전) 포기(abort) 이벤트가 발생하여 트랜잭션이 포기되어 그 추론적 결과들이 폐기될 수도 있다. 트랜잭션을 포기하는 이유는 다수가 있을 수도 있지만, 하나의 이유는 또 하나의 스레드에 의해 이루어진 메모리 액세스와의 검출된 충돌일 수도 있다. 따라서, 이러한 해결방법에 의해, 각 스레드는 그 밖의 스레드들과의 충돌이 일어나지 않을 것이라고 상정하는 코드의 중요한 섹션을 낙관적으로 처리하기 시작할 수도 있고, 그 후, 중요한 섹션의 종료에 어떠한 충돌도 검출되지 않고 도달되면, 트랜잭션의 결과들은 커밋(commit)될 수 있다. 충돌이 드문 경우에는, 트랜잭션 메모리 지원을 사용하면, 보다 많은 스레드들이 동시에 그들의 코드의 중요한 섹션들을 처리하게 함으로써 성능을 향상시킬 수 있다.
적어도 일부 예들에서 제공하는 장치는,
명령들을 디코딩하는 명령 디코더; 및
명령 디코더에 의해 디코딩된 명령들에 응답하여 데이터 처리를 수행하는 처리 회로소자를 구비하고, 처리 회로소자는 처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하고, 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성되고;
명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 처리 회로소자는 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하도록 구성되고, 복수의 상태들은 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때 선택된 추가의 상태를 포함하고, 트랜잭션 네스팅 심도가 소정수미만일 때, 처리 회로소자는 적어도 하나의 상태를 추가의 상태 또는 제2 상태로 설정하도록 구성되고;
명령 디코더는, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하게 처리 회로소자를 제어하기 위해, 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 명령 디코더를 사용 가능하게 하는 적어도 일 타입의 조건적 분기 명령을 포함하는 명령 세트 아키텍처를 지원하도록 구성된다.
적어도 일부 예들에서 제공하는 데이터 처리방법은,
명령 디코더를 사용하여 명령들을 디코딩하는 단계;
처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하는 처리 회로소자를 사용하여, 명령 디코더에 의해 디코딩된 명령들에 응답하여 데이터 처리를 수행하는 단계-상기 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-;
단일의 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하는 단계-상기 복수의 상태들은 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때 선택된 추가의 상태를 포함하고, 트랜잭션 네스팅 심도가 소정수미만일 때, 적어도 하나의 상태를 추가의 상태 또는 제2 상태로 설정한다-; 및
단일의 트랜잭션 네스팅 심도 시험 명령에 후속하는 단일의 조건적 분기 명령의 디코딩에 응답하여, 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하는 단계를 포함한다.
적어도 일부 예들에서는,
데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 처리 프로그램 로직-상기 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 프로그램 로직은, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-을 포함하는,
명령들의 실행을 위한 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하는 컴퓨터 프로그램을 제공하고;
트랜잭션 네스팅 심도 시험 명령에 응답하여, 처리 프로그램 로직은, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하도록 구성되고, 복수의 상태들은 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때 선택된 추가의 상태를 포함하고, 트랜잭션 네스팅 심도가 소정수미만일 때, 처리 프로그램 로직은 적어도 하나의 상태를 추가의 상태 또는 제2 상태로 설정하도록 구성되고;
처리 프로그램 로직은, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하도록, 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 처리 프로그램 로직을 사용 가능하게 하는 적어도 일 타입의 조건적 분기 명령을 포함하는 명령 세트 아키텍처를 지원하도록 구성된다.
기억매체는, 상기 컴퓨터 프로그램을 기억할 수도 있다. 기억매체는 비일시적 기억매체이어도 된다.
본 기술의 또 다른 측면들, 특징들 및 이점들은, 첨부도면과 함께 읽혀질 이하의 예들의 설명으로부터 명백해질 것이다:
도 1은 트랜잭션 메모리 지원 회로소자를 갖는 데이터 처리장치의 일례를 개략적으로 도시한 것이고;
도 2는 트랜잭션 메모리 자원들을 사용하여 트랜잭션의 처리의 일례를 도시한 것이고;
도 3은 트랜잭션들의 네스트(nested) 세트의 일례를 도시한 것이고;
도 4는 트랜잭션 네스팅 심도 시험 명령의 제1 예를 도시한 것이고;
도 5는 트랜잭션 네스팅 심도와 1을 비교한 결과에 대응하게 적어도 하나의 상태 값을 설정하는 일례를 도시한 것이고;
도 6은 트랜잭션 네스팅 심도 시험 명령의 제2 예를 도시한 것이고;
도 7은 트랜잭션 네스팅 심도 시험 명령을 처리하는 방법을 설명하는 흐름도이고;
도 8은 사용될 수도 있는 시뮬레이터의 예를 도시한 것이다.
데이터 처리장치는, 처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 갖는 처리 회로소자를 가질 수도 있다. 상기 트랜잭션은, 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행되는 그 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지할 수도 있고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기할 수도 있다.
종종, 실행되는 프로그램 코드는 트랜잭션들의 네스트 세트를 포함할 수도 있고, 여기서 내부 트랜잭션에 대한 트랜잭션 시작 명령은, 외부 트랜잭션에 대한 트랜잭션 시작 명령 후이지만 외부 트랜잭션의 트랜잭션 종료 명령에 도달되기 전과 외부 트랜잭션이 포기되기 전에 실행된다. 일부 하드웨어 구현이 네스트 트랜잭션들의 세트의 각 트랜잭션의 추론적 결과들을 별도로 추적하고, 상태를 네스트 트랜잭션들 중 어느 하나의 시작으로 리와인딩(rewinding) 가능하게 하는 것이 가능하지만, 실제로 이것은 상태 복원 데이터의 다수의 세트들이나 추론적 결과들의 다수의 세트들을 기억하기 위해 트랜잭션 메모리 지원 회로소자내의 상당한 자원들을 필요로 할 수도 있다. 실제로, 이렇게 추가된 자원은 정당화되지 않을 수도 있어, 종종 처리 회로소자는 (적어도 일부 목적들을 위해) 외부 트랜잭션들의 트랜잭션 시작 및 종료 명령의 한계내에 있는 연산들 모두를 단순히 단일의 트랜잭션으로서 취급하는, 네스트 세트의 임의의 내부 트랜잭션들을 효과적으로 무시할 수도 있다. 예를 들면, 트랜잭션들의 네스트 세트동안에 포기 이벤트가 임의의 포인트에서 일어나면, 이것은 상태를 외부 트랜잭션의 트랜잭션 시작 명령으로 역으로의 복원을 기동하여도 된다. 내부 트랜잭션들의 트랜잭션 종료 명령들은 무시되어도 되고, 추론적으로 실행된 명령들 결과들의 커밋을 기동하는 외부 트랜잭션의 트랜잭션 종료 명령이어도 된다. 상기 하드웨어가 실제로 주어진 스레드의 트랜잭션들의 네스트 세트내에서 별도로 각기 개개의 트랜잭션의 상태를 추적하지 않는 경우에도, 소프트웨어가 그러한 네스트 트랜잭션들을 명시하는 것, 예를 들면 분기가 제1 트랜잭션 시작 명령 너머에 있는 프로그램의 일부로 분기할 수도 있고 트랜잭션 기반 메카니즘들을 사용하여 분기 진입 포인트에 후속하는 연산들의 원자성을 보장하기를 원하는 경우들을, 핸들링하는데에 유용할 수도 있다.
종종, 처리 회로소자상에서 실행된 소프트웨어는, 현재의 실행 포인트가 시작되지만 커밋되지 않고 포기되지 않은 트랜잭션 내에 있는지를, 또는 이러한 트랜잭션 내에서 현재의 트랜잭션이 네스트 세트의 외부 트랜잭션이나 내부 트랜잭션인지를 알 필요가 있을 수도 있다. 예를 들면, 트랜잭션들의 스케쥴링에 관한 결정이나, 또는 포기 이벤트들에 대한 응답 방법에 관한 결정은, 현재의 처리가 내부 또는 외부 트랜잭션에 있는지의 여부에 따라 이루어질 수도 있다. 또한, 네스팅의 레벨은, 분기를 하였던 선행하는 트랜잭션 시작 트랜잭션들에 관련된 포인트를 식별하는 간접 방식일 수도 있다. 트랜잭션 네스팅의 현재의 레벨을 추적하면서 지원하기 위해서, 상기 처리 회로소자는 트랜잭션 네스팅 심도를 가리키는 트랜잭션 네스팅 심도값을 유지할 수도 있다. 그 트랜잭션 네스팅 심도는, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드에 대한 다수의 실행된 트랜잭션 시작 명령을 나타낼 수도 있다. 예를 들면, 트랜잭션 네스팅 심도가 0일 때 이것은 트랜잭션들이 시작되지 않았다는 것을 가리킬 수도 있고, 트랜잭션 네스팅 심도가 1일 때는 이것은 현재의 실행 포인트가 외부 트랜잭션내에 있다는 것을 가리킬 수도 있고, 트랜잭션 네스팅 심도가 2이상일 때는 이것은 현재의 트랜잭션이 트랜잭션들의 네스트 세트의 내부 트랜잭션이라는 것을 가리킬 수도 있다.
트랜잭션 네스팅 심도의 정보를 소프트웨어에 노출시키는 해결방법의 하나는, 현재의 트랜잭션 네스팅 심도와 0을 비교하고 트랜잭션 네스팅 심도가 현재 0인지 아닌지를 가리키는 부울리언 값으로 복귀시키는 심도 시험 명령을 제공하는 것일 수도 있다. 그렇지만, 이러한 타입의 명령은, 처리가 네스트 세트의 내부 또는 외부 트랜잭션내에 있는지 여부의 표시를 나타낼 수 없을 것이다. 다른 해결방법은, 트랜잭션 네스팅 심도를 판독하고, 스레드내에서 현재의 실행 포인트에 대한 정확한 트랜잭션 네스팅 심도를 가리키기 위해 소프트웨어 액세스 가능한 레지스터내에 값을 배치하는 명령을 제공하는 것일 수도 있다. 이에 따라 소프트웨어가 내부 또는 외부 트랜잭션이 처리중인지를 판정할 수도 있지만, 이것은 트랜잭션 네스팅 심도와 기준값을 비교한 후, 해당 비교 연산의 출력에 근거하여 조건적 분기를 수행하는 추가의 명령을 필요로 할 수도 있다, 즉 2개의 추가의 명령은, 트랜잭션 네스팅 심도에 근거하여 상기 레지스터를 설정하는 명령과 아울러, 조건적 분기를 기동하는데 필요할 것이다.
후술한 기술은, 명령 디코더에 의해 디코딩되었을 때, 상기 처리 회로소자를 기동하여, 적어도 하나의 상태 값을 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로 설정하는 트랜잭션 네스팅 심도 시험 명령을 제공하고, 이때, 상기 복수의 상태들은, 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 크거나 소정수미만일 때 선택된 적어도 하나의 추가의 상태를 포함한다. 명령 디코더는, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하게 처리 회로소자를 제어하기 위해, 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 명령 디코더를 사용 가능하게 하는 적어도 일 타입의 조건적 분기 명령을 포함하는 명령 세트 아키텍처(ISA)를 지원한다.
따라서, 상기 트랜잭션 심도가 제로보다 큰 소정수인지 아닌지의 여부는, 단일의 트랜잭션 네스팅 심도 시험 명령과 단일의 조건적 분기 명령을 통해 해결될 수 있어, 네스팅 심도에 관해 조건적인 연산의 수행을 제어하기 위한 명령들의 수를 감소시킴으로서 성능을 향상시킬 수 있다. 이것은, 현재의 트랜잭션이 예를 들면, 네스트 세트의 내부 또는 외부 트랜잭션인지를 해결하는데 유용할 수 있다.
트랜잭션 네스팅 심도 시험 명령의 일부의 버전들은, 소정수가 2이상이도록 제공될 수 있다. 이것은, 특정한 네스팅 심도가 현재 효과적인지를 판정하는 보다 빠른 방식을 제공할 수 있다.
그렇지만, 많은 경우에 있어서, 소정수가 1인 것이 특히 유용할 수도 있다. 따라서, 상기 트랜잭션 네스팅 심도 시험 명령은, 적어도 하나의 상태 값을, 트랜잭션 네스팅 심도가 1일 때는 제1 상태로 설정하고, 트랜잭션 네스팅 심도가 0 또는 2이상일 때는 적어도 하나의 추가의 상태로 설정하여도 된다. 이것은 특히 유용할 수 있는데, 그 이유는 일부의 연산들이 외부 트랙션에 있을 경우 요구될 수도 있지만, 내부 트랜잭션에 있거나 전혀 트랜잭션에 있지 않을 경우 요구되지 않을 수도 있기 때문이다.
일부의 형태의 상기 트랜잭션 네스팅 심도 시험 명령은, 적어도 하나의 상태 값에 대한 2개의 다른 상태, 즉 트랜잭션 네스팅 심도가 소정수일 때 사용된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 크거나 소정수미만일 때 사용된 제2 상태 중 하나의 상태를 야기할 수 있다(이 경우에, 적어도 하나의 추가의 상태가 제2 상태만을 포함할 수도 있다). 이것은, 상기 데이터 처리 시스템이 현재 네스팅 심도의 특정한 레벨에 있는지 없는지(예를 들면, 소정수가 1일 때, 상기 처리가 현재 외부 트랜잭션에 있는지)의 시험을 가능하게 할 것이다.
그렇지만, 실제로는, 3개이상의 상이한 경우를 구별하는데 유용할 수도 있어서, 적어도 하나의 상태 값은, 트랜잭션 네스팅 심도가 소정수일 때의 제1 상태와, 트랜잭션 네스팅 심도가 소정수미만일 때의 제2 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때의 제3 상태 중 하나의 상태로 설정된다. 이에 따라, 이후의 조건적 연산들은 주목 3개의 경우를 구별(예: 소정수가 1일 때, 각각, 전혀 트랜잭션에 없고, 내부 트랜잭션에 있으며, 외부 트랜잭션에 있는지를 구별)할 수 있다.
명령 디코더에서 지원하는 ISA는, 타겟 상태가 제1 상태, 제2 상태 또는 제3 상태인지에 상관없이 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 복수의 상태들 중 타겟 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하게 처리 회로소자를 제어하는 것을 명령 디코더가 (총괄적으로) 가능하게 하는 하나 이상의 타입의 조건적 분기 명령을 포함하여도 된다. 이러한 해결방법에 의해, 소정수가 1일 때, 처리가 조금이라도 트랜잭션에 있는지(제2 상태), 처리가 외부 트랜잭션에 있는지(제1 상태) 및 처리가 내부 트랜잭션에 있는지(제3 상태)의 3개의 모든 질문은 단일의 트랜잭션 네스팅 심도 시험 명령과 단일의 조건적 분기 명령으로 모두 해결될 수 있다.
트랜잭션 네스팅 심도 시험 명령을 구현할 수 있는 방식은 다수가 있다.
일례에서, 상기 장치는, 이전에 실행된 명령의 처리 결과의 적어도 하나의 특성을 나타내는 적어도 하나의 조건 상태 값을 기억하는 조건상태 기억소자를 가질 수도 있다. 명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 처리 회로소자는, 트랜잭션 네스팅 심도와 소정수를 비교한 결과에 대응하도록 적어도 하나의 조건 상태 값을 설정하여도 된다.
조건 상태 기억소자는, 조건 상태 의존 타입의 조건적 분기 명령에 의해, 조건 상태 기억소자에 기억된 적어도 하나의 값이 조건적 분기 명령에서 지정한 시험 조건을 충족하는지에 따라 분기 타겟 어드레스로 분기할지를 선택하는데 사용되어도 된다. 예를 들면, 적어도 하나의 조건 상태 값은, 일부의 상기 결과의 특성에 의존하여, 상기 처리 로직에서 시행한 일부 타입들의 프로그램 명령에 응답하여 설정되는 조건 코드 값들을 포함하여도 된다. 예를 들면, 적어도 하나의 조건 상태 값은, 프로그램 명령의 결과가 제로인지 여부를 가리키는 제1 플래그와, 그 결과가 네가티브인지 여부를 가리키는 제2 플래그와, 처리 결과의 최상위 비트로부터의 캐리 아웃이, 이 결과가 제공된 비트들의 수에 맞지 않을 것이기 때문에 생성되었는지 여부를 가리키는 제3 플래그와, 및/또는, 2의 보수 산술연산에서 포지티브 값으로부터 네가티브 값으로의 순환이 있었는지 여부를 가리키는 제4 플래그를 포함할 수 있다. 그 밖의 결과들의 특성들도 상기 조건 플래그들을 사용하여 표현될 수 있다는 것을 알 것이다. 조건적 분기 명령은, 상기 시험 조건이 충족되는 조건 코드들에 의해 만족되는 특별한 세트의 기준들을 표현하는 조건 코드를 지정할 수도 있다.
따라서, 일부 예들에서, 트랜잭션 네스팅 심도 시험 명령은, 그 밖의 명령들에서 사용하며, 시험 조건을 지정하는 일반적 조건 상태 의존 조건적 분기 명령들을 사용하여 시험할 수 있는, 동일한 조건 상태 플래그들에 기록하여도 되고, 이때 그 시험 조건은 상기 분기를 기동하기 위한 것인 특별한 트랜잭션 네스팅 심도에 따라 선택되어 있다. 이것은, 보다 효율적으로 수행되기 위해 상기 처리가 현재, 트랜잭션이나 외부 또는 내부 트랜잭션 내에 있는지의 여부에 따라 조건적으로 수행되는 연산들을 필요로 하는 코드의 선택 처리를 가능하게 한다.
적어도 하나의 조건 상태 값을 설정하는 것은, 단지 트랜잭션 네스팅 심도 시험 명령의 결과만이 아닐 수도 있다. 예를 들면, 일부 변형에서, 적어도 하나의 조건 상태 값을 설정하는 것과 아울러, 트랜잭션 네스팅 심도 시험 명령의 디코딩도, 처리 회로소자를 기동하여, 트랜잭션 네스팅 심도를 표현하는 트랜잭션 네스팅 심도 값을 명령들의 오퍼랜드들을 기억하는 범용 레지스터에 기록할 수 있다. 범용 레지스터는, 트랜잭션 네스팅 심도 시험 명령의 인코딩에 의해 지정될 수도 있다. 따라서, 그 후, (내부 트랜잭션들의 상이한 레벨을 구별하는 것을 포함하는) 정밀한 트랜잭션 네스팅 심도에 대한 지식을 필요로 하는 보다 복잡한 연산들은, 추가의 연산들을 수행하기 위해서 상기 범용 레지스터에 기록된 트랜잭션 네스팅 심도 값을 시험할 수 있다.
또 하나의 예에서, 트랜잭션 네스팅 심도 시험 명령은, 트랜잭션 네스팅 심도 시험 명령에서 지정한 범용 레지스터에 적어도 하나의 상태 값을 기록하여도 된다.
예를 들면, 범용 레지스터에 기록된 적어도 하나의 상태 값은, 모든 비트들이 0인 제1 인코딩; 제1 소정 비트가 1이고 제2 소정 비트가 0인 제2 인코딩; 및 제1 소정 비트가 0이고 제2 소정 비트가1인 제3 인코딩 중, 하나를 가질 수도 있다. 제1 상태는, 이 3개의 인코딩 중 어느 하나에 의해 표현될 수 있다. 적어도 하나의 추가의 상태가 트랜잭션 네스팅 심도가 소정수보다 크거나 소정수 미만일 때의 경우들을 표현하는 제2 상태만을 포함하면, 제2 상태는 제1 상태에 사용되지 않는 나머지 2개의 인코딩 중 한쪽에 해당할 수도 있다. 적어도 하나의 추가의 상태가 트랜잭션 네스팅 심도가 각각 소정수 미만이거나 소정수보다 클 때의 경우들을 표현하는 별도의 제2 상태와 제3 상태를 포함하는 구현에 있어서, 제2 및 제3 상태는, 제1 상태에 사용되지 않는 나머지 2개의 인코딩을 (어떤 방법으로든) 취할 수도 있다.
이와 같은 인코딩에서는, 상이한 타입의 조건적 분기 명령을 사용하여, 적어도 하나의 상태 값이 제1, 제2 및 제3의 인코딩 중 특별한 인코딩을 갖는지를 판정할 수도 있다(이때, 적절한 타입의 조건적 분기 명령은 사용된 상태들과 인코딩들간의 매핑에 따라 프로그래머나 컴파일러에 의해 선택되고, 해당 특별한 상태는 주목하는 타겟 상태이다).
예를 들면, ISA는, 타겟 레지스터를 지정하는, 제로와의 비교(compare-with-zero) 타입의 조건적 분기 명령을 포함하여도 된다. 이 제로와의 비교 타입의 조건적 분기 명령의 디코딩에 응답하여, 처리 회로소자는, 0인 타겟 레지스터의 모든 비트들에 관해 조건적인 조건적 분기를 수행할 수도 있다. 따라서, 이것은, 단일의 트랜잭션 네스팅 심도 시험 명령에 후속하는 단일의 조건적 분기 명령만을 사용하여, 보다 앞선 트랜잭션 네스팅 심도 시험 명령이 적어도 하나의 상태 값을 상술한 제1 인코딩으로 설정하는지의 여부를 시험하는 것을 가능하게 한다.
ISA는, 타겟 레지스터의 소정 비트를 지정하는 비트 시험(bit-test) 타입의 조건적 분기 명령을 포함할 수도 있다. 비트 시험 타입의 조건적 분기 명령의 디코딩에 응답하여, 처리 회로소자는, 1인 타겟 레지스터의 소정 비트에 관해 조건적이거나, 0인 타겟 레지스터의 소정 비트에 관해 조건적인, 조건적 분기를 수행할 수도 있다. 일부 구현에 있어서, 조건적 분기 명령의 비트 시험 논 제로(bit-test-non-zero) 및 비트 시험 제로(bit-test-zero)의 변형들은, ISA에서, 각각 소정 비트가 1 또는 0인지를 시험 가능하게 하도록 구성될 수 있다. 비트 시험 타입의 조건적 분기 명령은, 단일의 트랜잭션 네스팅 심도 시험 명령에 후속하는 단일의 조건적 분기 명령을 사용하여, 보다 앞선 트랜잭션 네스팅 심도 시험 명령이 적어도 하나의 상태 값을 상술한 제2 또는 제3 인코딩으로 설정하는지의 여부를 시험하는데 사용될 수 있다.
트랜잭션 메모리 지원 회로소자는, 트랜잭션 메모리 메카니즘들을 사용하여 트랜잭션들의 실행을 지원하기 위한 다수의 자원들을 포함하여도 된다. 예를 들면, 트랜잭션 메모리 지원 회로소자는, 트랜잭션을 포기시에 복원되는 트랜잭션 시작 명령에 응답하여 캡처된 트랜잭션 복원 상태를 기억하기 위한 복원 상태 기억 회로소자를 구비하여도 된다. 일부의 경우에, 외부 트랜잭션의 트랜잭션 시작 명령은 트랜잭션 복원 상태의 캡처를 기동하여도 되고, 내부 트랜잭션들을 위한 트랜잭션 복원 상태의 캡처는 (트랜잭션 네스팅 심도가 트랜잭션 시작 명령에 접할 때 0보다 클 때) 억제되어도 된다.
또한, 트랜잭션 메모리 지원 회로소자는, 적어도 하나의 스레드의 적어도 하나의 트랜잭션을 위해 적어도 일부 추론적으로 실행된 명령들의 결과들을 기억하기 위해 추론적 결과 기억 회로소자를 구비할 수 있다. 일부 경우에, 특정한 타입들의 명령들만은 그들의 결과들이 추론적 결과 기억 회로소자에 기억되어 있어도 되고, 예를 들면, 메모리에 기록하기 위한 스토어 명령들은 그들의 스토어 데이터가 트랜잭션이 커밋될 수 있을 때까지 상기 추론적 결과 기억 회로소자에 추론적으로 보유되어도 되는 반면에, 레지스터들에 작용하는 일반적인 산술 명령들은, 보다 앞선 실행 포인트로 상태가 되돌려질 때 복원 상태는 나중에 그 결과들을 폐기시킬 수 있으므로 그 레지스터들에 간단히 기록할 수 있었다.
또한, 트랜잭션 메모리 지원 회로소자는, 제1 스레드의 트랜잭션내에서 만들어진 주어진 어드레스에의 데이터 액세스와 또 하나의 스레드에 의해 만들어진 동일 어드레스에의 데이터 액세스간의 충돌을 검출하기 위한 충돌 검출 회로소자를 가질 수도 있다. 포기 이벤트는, 그 충돌의 검출에 응답하여 충돌 검출 회로소자에 의해 기동될 수 있다. 포기 이벤트들의 그 밖의 이유는, 트랜잭션의 처리동안에 일어나는 인터럽트들 또는 예외들, 트랜잭션의 추가의 추론적 결과들을 조절하기 위한 트랜잭션 메모리 지원 회로소자내의 기억 용량의 부족, 또는, 접해지는 트랜잭션에서 액세스되면 안되는 특정한 명령들을 포함할 수 있다. 또한, 트랜잭션 메모리 지원 회로소자는, 트랜잭션내에서 명령들에 의해 액세스된 어드레스들을 추적하기 위한 어드레스 추적 회로소자를 가질 수도 있고, 상기 충돌 검출 회로소자는 그 추적된 어드레스들을 사용하여 그 밖의 스레드들과의 충돌들을 식별할 수도 있다.
본 장치는, 트랜잭션 네스팅 심도를 표현하는 트랜잭션 네스팅 심도 값을 기억하는 트랜잭션 네스팅 심도 기억소자를 가질 수도 있다. 예컨대, 내부 레지스터가 제공되어도 된다. 트랜잭션 네스팅 심도를 기억하는 레지스터는, 소프트웨어 액세스 가능할 필요는 없음에 따라서, 트랜잭션 네스팅 심도 시험 명령은 소프트웨어 아키텍처에 트랜잭션 네스팅 심도를 노출시키도록 이동될 수도 있다.
일부 경우에, 상기 기억된 트랜잭션 네스팅 심도 값은, 현재의 트랜잭션 네스팅 심도에 정확히 해당할 수 있다. 예를 들면, 카운터는, 0에서 시작하고 트랜잭션 시작 명령의 실행시에 증분되고, 트랜잭션 종료 명령의 실행시에 감분되며, 트랜잭션의 처리가 포기될 때는 0으로 리셋트되도록 유지될 수 있다. 그렇지만, 트랜잭션 심도를 표현하는 그 밖의 방식들도 있을 수도 있다. 예를 들면, 상기 카운터가 0이외의 값에서 시작하면, 비록 상기 처리가 현재 트랜잭션내에 있지 않을 때 트랜잭션 네스팅 심도가 0일 수도 있지만, 상기 기억된 트랜잭션 심도 값은, 논 제로일 수도 있다(예를 들면, 그 기억된 트랜잭션 심도 값과 실제의 트랜잭션 심도간에 오프셋이 있을 수 있다).
그러므로, 트랜잭션 네스팅 심도 시험 명령이 트랜잭션 네스팅 심도와 소정수와의 비교 결과에 대응하도록 상기 조건 상태 기억소자를 설정하는 구현에 대해서, 상기 기억된 트랜잭션 네스팅 심도 값과 0 자체보다 큰 소정수간에 실제의 비교가 있는 것이 요구되지 않는다. 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 실행된 트랜잭션 시작 명령의 실제의 수를 가리키는 개념상 트랜잭션 네스팅 심도 값을 소정수와 비교하였다면, 생성될 결과와 동등한 결과를 생성할 수 있는 임의의 비교 연산이 수행될 수 있다. 예를 들면, 실제로 상기 기억된 트랜잭션 네스팅 심도 값이 실제의 트랜잭션 네스팅 심도로부터 상쇄되면, 그 비교는, 상기 기억된 값과, 대응한 양만큼 소정수로부터 상쇄되는 수를 실제로 비교할 수도 있다. 또한, 일부 경우에, 트랜잭션 네스팅 심도가 일부의 방식으로 상기 기억된 값내에 인코딩되면, 다시 상기 비교는, 트랜잭션 네스팅 심도 코드를 디코딩하고, 트랜잭션 네스팅 심도가 0, 1이상에 해당하는지에 따라 상기 상태 기억소자에 기록되는 대응한 상태 값들을 식별하기 위해 보다 복잡한 연산일 수도 있다. 따라서, 동일한 결과를 달성하는 방식은 많이 있을 수도 있다. 명령 세트 아키텍처의 관점에서, 상기 결과는, 트랜잭션 네스팅 심도를 명백히 가리키는 값을 0보다 큰 소정수와 비교할 때의 경우와 같지만, 이 결과는 실제로는 이러한 방식으로 생성되는지와는 상관없다.
대응한 컴퓨터 프로그램은, 호스트 데이터 처리장치를 제어하여, 명령들의 실행을 위한 명령 실행 환경을 제공할 수도 있고, 이때의 처리 프로그램 로직은, 상술한 것과 같은 트랜잭션 네스팅 심도 시험 명령과 ISA를 지원한다. 이와 같은 컴퓨터 프로그램은, 트랜잭션 네스팅 심도 시험 명령이 트랜잭션 메모리 기능성과 향상된 네스팅 심도의 시험으로부터 이익을 얻기 위해 트랜잭션 메모리 지원 회로소자나 명령 디코더 지원을 자체가 갖지 않는 포괄적 호스트 데이터 처리장치를 허용할 수도 있긴 하지만, 이 특징들을 제공하는 실제의 하드웨어는 존재하지 않을 수도 있다. 대신에, 상기 컴퓨터 프로그램은, 이 기능성을 에뮬레이트 하는 프로그램 로직, 이를테면 명령들의 세트들이나 데이터 구조체들을 제공하여, 그 포괄적 호스트 데이터 처리장치가 상기와 같은 하드웨어 특징들을 제공하는 장치상에서 실행하도록 구성된 코드를 실행하는 것을 가능하게 한다.
도 1은 하드웨어 트랜잭션 메모리(HTM) 지원을 하는 데이터 처리장치(2)의 일례를 도시한 것이다. 이 장치는, 데이터 처리 연산들을 실시하는 명령들을 실행하기 위한 처리 로직(4)을 갖는다. 예를 들면, 처리 로직(4)은, 여러 가지 타입의 처리 연산들을 실행하는 실행 유닛들, 이를테면 덧셈, 곱셈, AND, OR 등등과 같은 산술연산 또는 논리연산을 실시하는 산술/논리 유닛(ALU); 부동소수점 오퍼랜드들에 관해 연산들을 수행하는 부동소수점 유닛; 또는, 다수의 데이터 요소들로 이루어진 벡터 오퍼랜드들에 관해 벡터처리를 실시하는 벡터처리 유닛을 구비할 수도 있다. 일 세트의 아키텍처 레지스터들(6)은, 처리 로직(4)에 의해 실행된 명령들에 대한 오퍼랜드들을 기억하고 그 실행된 명령들의 결과들을 기억하도록 구성된다. 아키텍처 레지스터들(6)은, 이전에 실행된 명령의 결과의 특성을 가리키는 적어도 하나의 상태 값(예컨대, 조건 플래그)을 기억하는 상태 레지스터(7)를 구비한다. 명령 디코더(8)는, 관련된 연산들을 수행하기 위해 처리 로직(4)이나 데이터 처리장치(2)의 그 밖의 소자들을 제어하기 위한 제어신호들을 생성하게 명령 캐시(10)로부터 페치된 명령들을 디코딩한다. 로드/스토어 유닛(12)도, 데이터 캐시(14)나 메인 메모리(16)로부터 아키텍처 레지스터들(6)에 데이터 값을 로딩하는 (명령 디코더 8에 의해 디코딩된 로드 명령들에 응답하여) 로드 연산들과, 아키텍처 레지스터들(6)로부터 데이터 캐시(14) 또는 메모리(16)에 데이터 값을 기억하는 (명령 디코더 8에 의해 디코딩된 스토어 명령들에 응답하여) 스토어 연산을 수행하도록 구성된다.
또한, 상기 장치(2)는, 하드웨어 트랜잭션 메모리(HTM)를 지원하는 여러가지의 자원들을 제공하는 트랜잭션 메모리 지원 회로소자(20)를 갖는다. 트랜잭션 메모리 지원 회로소자(20)에서의 HTM 자원들은, 예를 들면, 트랜잭션들의 추론적 결과들을 기억하는 추론적 결과 스토리지(22)와, 트랜잭션에 의해 액세스된 어드레스들을 추적하는 어드레스 추적 회로소자(24)와, 트랜잭션에 의해 이루어진 데이터 액세스들과 그 밖의 스레드들에 의해 이루어진 데이터 액세스들간의 충돌들을 검출하여 충돌이 검출될 때 트랜잭션이 포기될 수 있도록 하는 충돌 검출 회로소자(26)와, 트랜잭션의 시작에서 아키텍처 레지스터들(6)로부터 아키텍처 상태 데이터의 스냅샷을 기억하여 트랜잭션이 포기될 때 그 트랜잭션의 추론적 결과들을 겹치기 위해 이 상태가 복원될 수 있도록 하는 복원상태 기억 회로소자(28)를 구비할 수도 있다. HTM자원들(20)도, 처리 로직(4)내에서 인 플라이트(in flight)인 임의의 트랜잭션들의 현재의 트랜잭션 네스팅 심도를 표현하는 네스팅 심도 값을 기억하는 네스팅 심도 레지스터(30)를 구비한다.
도 2는 트랜잭션 메모리 지원 회로소자(20)와 처리 로직(4)을 사용하여 주어진 스레드내에서 트랜잭션을 실행하는 일례를 도시한 것이다. 트랜잭션은, 트랜잭션 시작 명령(tstart)과 트랜잭션 종료 명령(tcommit)에 의해 결부되어 있는 프로그램 코드의 섹션이다. 도 2에 도시된 것처럼, 트랜잭션 시작 명령에 응답하여, 아키텍처 레지스터들(6)에서의 현재의 아키텍처 상태가 캡처되어 복원상태 기억 회로소자(28)에 기억된다. 처리 로직(4)은, 해당 시작 명령에 후속하는 이후의 명령들의 추론적 실행을 수행하기 시작하고, 이 명령들이 실행됨에 따라, 그 명령들에 의해 액세스된 어드레스들은 어드레스 추적 회로소자(24)에 의해 추적되고, 충돌 검출 회로소자(26)는 그 밖의 스레드들에 응답하여 로드/스토어 유닛(12)을 사용하여 추적된 어드레스들과 액세스가 이루어진 어드레스들간의 충돌들을 검출한다. 트랜잭션내에서 명령들의 적어도 일부의 추론적 결과들은, 추론적 결과 기억 회로소자(22)내에 기억된다. 예를 들면, 스토어 명령 STR에 응답하여 상기 캐시나 메모리에 기억된 값은, 트랜잭션이 진행중인 동안에 추론적 결과 기억 회로소자(22)에 보유되어도 된다. 트랜잭션 종료 명령(tcommit)이 그 동안에 일어나는 포기 이벤트 없이 도달되면, 트랜잭션 종료 명령에 응답하여, 추론적 결과들은 커밋된다. 트랜잭션을 커밋하면, 해당 스레드를 위해 추론적 결과 기억 회로소자(22)에 기억된 임의의 결과들은 데이터 캐시(14)나 메모리(16)에 기록되어도 되고, 복원상태(28)는, 더 이상 트랜잭션 시작 명령에 접하였기 이전의 포인트로 아키텍처 상태를 되돌릴 필요가 없을 때 겹쳐써지도록 폐기 또는 허가될 수 있다.
한편, 포기 이벤트가 일어나면, 예를 들면, 또 하나의 스레드가 이미 트랜잭션에 의해 액세스된 어드레스에 액세스할 때 충돌 검출 회로소자(26)에 의해 충돌이 검출되는 경우, 트랜잭션의 포기가 기동되고 복원상태 스토리지(28)로부터의 복원상태가 아키텍처 레지스터들(6)에 복원된다. 그 밖의 포기 이벤트의 요인은, 예를 들면, 트랜잭션내에서 실행되면 안되는 명령의 실행, 주어진 트랜잭션에서 필요로 하는 추론적 결과들이나 어드레스들을 핸들링하는 상기 추론적 결과 기억 회로소자(22) 또는 어드레스 추적 회로소자(24)내의 불충분한 자원, 또는 트랜잭션동안에 수신되는 인터럽트를 포함할 수 있다.
도 3은 트랜잭션들의 네스트 세트의 일례를 도시한 것이다. 우선, 임의의 이전의 트랜잭션들이 커밋 또는 포기되어 있고, 그 후 이후의 시작 명령이 아직 실행되어 있지 않은 코드를 처리할 때, 네스팅 심도 값(30)으로 표현된 네스팅 심도는 0이다. 제1 트랜잭션 시작 명령에 응답하여, 현재의 아키텍처 상태가 캡처되어 복원상태 스토리지(28)에 기억되고, 네스팅 심도가 1까지 증분된다. 이후의 명령들은, 트랜잭션들의 네스트 세트의 이 외부 트랜잭션내에서 처리된다. 또 하나의 트랜잭션 시작 명령에 접한 후 외부 트랜잭션의 트랜잭션 종료 명령에 도달하면, 복원상태는 복원상태 스토리지(28)내에 자원을 보존하도록 캡처되지만, 네스팅 심도 레지스터(30)는 네스팅 심도 2를 나타내도록 증분된다. 마찬가지로, 이후의 트랜잭션 시작 명령은, 네스팅 심도에 대한 추가의 증분을 기동하여 도 3에 도시된 것과 같은 3의 네스팅 심도 값을 부여할 수도 있다. 네스팅 심도가 논 제로일 때 실행된 트랜잭션 시작 명령에 대응하는(그리고 트랙잭션내의 명령들의 네스팅 심도가 2이상인) 트랜잭션들은, 네스팅 심도가 0이었을 때 트랜잭션 시작 명령이 실행되었고 트랜잭션내의 명령들의 네스팅 심도가 1에 해당할 외부 트랜잭션과는 반대로, 내부 트랜잭션들이라고 생각된다.
포기 이벤트가 외부 트랜잭션의 트랜잭션 시작 명령에 후속하는 임의의 포인트에서 일어나면, 복원상태 스토리지(28)에 기억된 상태는 아키텍처 레지스터(6)에 복원되고, 이것이 의미하는 것은 처리가 효과적으로 외부 트랜잭션의 원래의 트랜잭션 시작 명령으로 되돌려진다는 것이다. 따라서, 내부 트랜잭션들의 트랜잭션 시작 명령들에 대응한 상태를 복원시키는 것이 가능하지 않을 수도 있다. 네스팅 심도는 포기 이벤트에 응답하여 0으로 리셋트된다.
어떠한 포기 이벤트가 없을 경우, 내부 트랜잭션들의 트랜잭션 종료 명령들은 무시되고 외부 트랜잭션들의 트랜잭션 시작 명령 이후에 수행된 처리의 임의의 추론적 결과들은 외부 트랜잭션에 대응한 트랜잭션 종료 명령에 도달될 때 커밋된다. 즉, 트랜잭션 종료 명령이 실행되고 네스팅 심도의 2이상일 때, 결과들의 커밋먼트가 일어나지 않는다. 그 결과들은, 네스팅 심도가 1일 때 트랜잭션 종료 명령이 실행되는 경우 커밋된다. 각 트랜잭션 종료 명령에 응답하여, 네스팅 심도는 감분되고, 네스팅 심도가 0으로 복귀할 때, 이것이 의미하는 것은, 미처리된 모든 트랜잭션들이 완료되어 있고 처리가 지금 임의의 트랜잭션 외에 있다는 것이다. 트랜잭션들 핸들링에 대한 이 해결방법이 의미하는 것은, 추론적 결과 기억 자원, 어드레스 추적 자원이나 복원상태 기억 자원의 일 세트를 네스트 트랜잭션들의 수에 상관없이 특별한 스레드에 할당하는데만 필요하여, 그 밖의 스레드들이 트랜잭션들을 실행하기 위한 보다 많은 자원을 절약한다는 것이다.
그렇지만, 종종, 소프트웨어는, 현재의 처리가 트랜잭션내에 있는지 없는지와, 있을 경우, 현재의 처리가 내부 트랜잭션이나 외부 트랜잭션 내에 있는지를 알 필요가 있을 수도 있다.
도 4는 이 질문들을 해결하기 위한 트랜잭션 심도 시험(ttest) 명령의 제1 예를 도시한 것이다. 트랜잭션 심도 시험 명령에 응답하여, 명령 디코더(8)는, 처리 로직(4)을 제어하여, 현재의 트랜잭션 네스팅 심도와 0보다 큰 소정의 값을 비교한 결과와 같은 연산을 수행한다. 본 예에서는, 소정수가 1이다. 상태 레지스터(7)에서 조건 플래그들은, 그 비교 결과에 의존한 값으로 설정된다. 선택사항으로, 일부 변형의 트랜잭션 심도 시험 명령도, 부가의 범용 레지스터 Rx를 지정하여도 되고, 그럴 경우, 현재의 트랜잭션 네스팅 심도를 표현하는 네스팅 심도 값은 그 지정된 레지스터에 기록되어도 된다.
도 5는 상기 비교에 따라 상태 레지스터(7)에서의 상태 플래그들을 설정하는 일례를 도시한 것이다. 상태 플래그들은:
· 명령의 결과가 포지티브일 때 0으로, 그 결과가 네가티브일 때는 1로 설정되는 네가티브 플래그 N;
· 결과가 제로일 때 1로 결과가 논제로일 때 0으로 설정되는 제로 플래그 Z;
· 결과 값이 이용가능한 비트들의 수내에 들어 맞지 않아서 생성된 최상위 비트의 캐리 아웃일 때 1로 설정되고, 그렇지 않은 경우는 0으로 설정되는, 캐리 플래그 C; 및
· 2의 보수 이진값을 사용하여 표현 가능한 최대(most) 포지티브 값으로부터 2의 보수 형식으로 표현 가능한 최대 네가티브 값으로 또는 이와는 반대로 오버플로우가 있을 때 1로 설정되는 오버플로우 플래그 V를, 포함한다.
도 5의 표에 도시된 것처럼, (트랜잭션에 없는) 네스팅 심도가 0일 때, ttest 명령에 응답하여, 상태 플래그들은, Z 및 C 플래그가 0으로 설정되고 N 및 V 플래그가 어떠한 값(0 또는 1)도 취할 수 있는 제1 상태로 설정된다. (외부 트랜잭션에서) 트랜잭션 네스팅 심도가 1일 때, 상태 플래그들은 Z 및 C 플래그 양쪽이 1로 설정되고 N 및 V 플래그가 또 어떠한 값도 취할 수 있는 제2 상태로 설정된다. (내부 트랜잭션 내에서) 트랜잭션 네스팅 심도가 1보다 클 때, 상태 플래그들은, Z 플래그가 0으로 설정되고, C플래그가 1로 설정되고 또 N 및 V 플래그는 어떠한 값도 취할 수 있는 제3 상태로 설정된다. 이에 따라 이후의 조건적 분기 명령이나 그 밖의 조건적 명령이 플래그들의 상태에 근거하여 조건적 연산들을 수행할 수 있다. 조건적 명령은, 상태 레지스터(7)에서의 플래그들에 적용되는 특정한 시험 조건을 식별하는 조건 코드를 지정할 수도 있다. 다음의 표는, 해당 시험 조건을 충족시키기 위해서 충족될 플래그들의 대응한 값들과 상이한 조건 코드들을 나타낸 것이다:
Figure 112020036781911-pct00001
이러한 해결방법에 의해 다음의 질문들 중 어느 하나가 다음과 같이 2개의 명령의 시퀀스를 사용하여 답변될 수 있다:
Figure 112020036781911-pct00002
도 4는 네스팅 심도와 소정값 1을 비교기(50)에 의해 비교하는 예를 도시한 것이다. 네스팅 심도로부터 1을 감산하고 그 결과에 근거하여 상기 플래그들을 설정함으로써 동일한 결과가 얻어질 수 있다. 또한, 일부 경우에, 네스팅 심도값은, 도 3에 나타낸 것처럼 실제의 네스팅 심도에 정확히 대응한 형태로 표현되지 않을 수도 있고, 이 경우에, 처리 로직(4)은 네스팅 심도 레지스터(30)에서 사용된 네스팅 심도의 표현을 해석하고, 마치 네스팅 심도의 명시적 표시가 1과 비교되었던 것처럼 동일한 결과들을 생성하기 위한, 일부의 회로소자를 구비하여도 된다. 또한, 일부 변형에서는 1과 비교하는 대신에, 트랜잭션 시험 명령이 2이상과 비교될 수 있다.
도 6은, 본 예에서는 네스팅 심도 레지스터(30)에 의해 나타낸 현재의 트랜잭션 네스팅 심도에 따라 선택된 상태로 적어도 하나의 상태 값이 기록되어야 하는 범용 레지스터 Rx를 지정하는, 트랜잭션 네스팅 심도 시험 명령의 제2 예를 도시한 것이다. 도 6의 표에 도시된 것처럼, 그 지정된 레지스터 Rx의 2개의 비트는, 네스팅 심도가 0, 1 또는 1보다 큰지에 따라 인코딩 0b00, 0b01 또는 0b10으로 설정되어도 된다. 상기 지정된 레지스터의 나머지 모든 비트들은, 0으로 설정되어도 된다. 도 6은 0, 1 및 >1의 트랜잭션 네스팅 심도와 상기 3개의 인코딩간의 하나의 특별한 매핑을 도시한 것이지만, 그 밖의 구현들은, 사용된 매핑들을 전환할 수 있다(예컨대, 또 하나의 구현은, 0b00을 사용하여 네스팅 심도가 1 또는 1보다 클 때의 경우들...중 하나를 표현할 수 있다). 그렇지만, 도 6의 표에 도시된 해결방법은, (네스팅 심도가 2이상인지에 상관없이, 인코딩이 0b10이도록 2로 포화된) 네스팅 심도의 2진값에 대응한다.
도 6의 하부에 도시된 것처럼, 상이한 타입의 조건적 분기 명령은, 명령 디코더(8)와 처리 회로소자(4)에서 구현된 ISA에 의해 지원될 수도 있다. 이 형태들의 조건적 분기 명령은, 주목하는 타겟 상태가 도 6의 표에 도시된 3개의 상태 중 어느 하나인지의 여부에 상관없이, 네스팅 심도가 단일의 ttest 명령과 단일의 조건적 분기 명령만으로 특별한 타겟 상태와 일치하는지를 시험하는 것을 가능하게 한다. 조건적 분기 명령이 독립적이고 상기 ttest 명령의 결과를 겹쳐쓰지 않는 하나 이상의 중재 명령들이, ttest 명령과 조건적 분기 명령과의 사이에서 실행될 수 있다는 것을 알 것이다- 이 경우에, 그 중재 명령들은 트랜잭션 네스팅 심도 비교 및 분기에 영향을 미치지 않으므로, 그 상태 값과 조건적 분기의 설정은, 그럼에도 불구하고 2개의 명령에 의해 효과적으로 제어된다.
주목하는 타겟 상태가 0b00(예컨대, 도 6의 예에서 네스팅 심도 0))에 대응하는 경우, 제로와의 비교 타입의 조건적 분기 명령(CBZ)은, 소스 레지스터 Rn과, 분기 타겟 어드레스를 가리키는 라벨을 지정하도록 사용되어도 된다. CBZ 명령에 응답하여, 상기 디코더(8)는, 처리 로직(4)을 제어하여, 소스 레지스터 Rn에서의 모든 비트들이 0일 경우 라벨로 나타낸 분기 타겟 어드레스에 분기한다. 따라서, 이전의 ttest 명령의 목적지 레지스터 Rx를 소스 레지스터 Rn으로서 지정하는 CBZ 명령을 실행함으로써, 2개의 명령으로만 Ob00 상태에 의존한 조건적 분기가 이루어질 수 있다.
주목하는 타겟 상태가 0b01 또는 0b10에 대응한 경우, 오퍼랜드들로서, 소스 레지스터 Rt, 그 소스 레지스터내의 특정한 비트 위치를 식별하는 즉시값#imm, 및 분기 타겟 어드레스를 가리키는 라벨을 지정하는, 비트 시험 타입의 조건적 분기 명령(TBZ 또는 TBNZ)이 사용되어도 된다. 그 밖의 예들에서, 그 비트 위치는, 즉시값 대신에 추가의 소스 레지스터에 의해 나타내어질 수 있다. 그 TBZ 명령에 응답하여, 상기 디코더(8)는, 처리로직(4)을 제어하여, 그 지정된 비트 위치에서의 비트가 0일 경우 상기 라벨에 의해 나타낸 분기 타겟 어드레스에 분기한다. TBNZ 명령에 응답하여, 상기 디코더(8)는, 그 지정된 비트 위치에서의 비트가 1일 경우 상기 라벨에 의해 나타낸 분기 타겟 어드레스에 분기한다. 어느 하나의 형태를 사용하여 Ob01 상태와 0b10 상태 모두를 시험할 수 있으므로 TBZ/TBNZ 명령의 양쪽의 형태를 제공하는 것이 필수적이지 않고, 이를 달라지게 함으로써 비트 위치는 시험될 비트 위치로서 (#imm에 의해) 지정된다. 또, 소스 레지스터 Rt가 이전의 ttest 명령의 목적지 레지스터 Rx에 대응하는 TBZ 또는 TBNZ 명령을 실행함으로써, 2개의 명령으로 Ob01 또는 0b10 상태에 의존한 조건적 분기가 이루어질 수 있다.
도 7은 트랜잭션 심도 시험 명령의 실행을 제어하는 흐름도를 도시한 것이다. 단계 100에서는, 단일의 트랜잭션 네스팅 심도 시험 명령이 실행된다. 트랜잭션 네스팅 심도 시험 명령에 응답하여 명령 디코더(8)에 의해 생성된 제어신호들에 응답하여, 단계 102에서는, 처리 회로소자는, 트랜잭션 네스팅 심도에 따라 적어도 하나의 상태값을, 적어도 트랜잭션 네스팅 심도가 소정값(예컨대, 1)와 같을 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정값보다 크거나 미만일 때의 적어도 하나의 추가의 상태를 포함하는 복수의 상태들 중 하나로 설정한다. 단계 104에서는, 단일의 조건적 분기 명령은, 단일의 ttest 명령에 응답하여 설정된 적어도 하나의 상태 값에 따라, 실행된다.
도 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)는, 이 특징들을 에뮬레이트 할 수 있다.
다음의 항들에서는 추가의 구성예를 정리한다:
(1) 장치로서,
명령들을 디코딩하는 명령 디코더;
명령 디코더에 의해 디코딩된 명령들에 응답하여 데이터 처리를 수행하는 처리 회로소자-상기 처리 회로소자는 처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하고, 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-; 및
이전에 실행된 명령의 처리 결과의 적어도 하나의 특성을 나타내는 적어도 하나의 상태 값을 기억하는 상태 기억소자를 구비하고;
명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 처리 회로소자는, 트랜잭션 네스팅 심도와 제로보다 큰 소정수와의 비교 결과에 대응하게 상기 적어도 하나의 상태 값을 설정하도록 구성되고, 여기서 상기 트랜잭션 네스팅 심도는, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는, 장치.
(2) 데이터 처리방법으로서,
처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하는 처리 회로소자를 사용하여, 디코딩된 명령들에 응답하여 데이터 처리를 수행하는 단계-상기 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-;
이전에 실행된 명령의 처리 결과의 적어도 하나의 특성을 나타내는 적어도 하나의 상태 값을 기억하는 단계; 및
트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 트랜잭션 네스팅 심도와 제로보다 큰 소정수와의 비교 결과에 대응하게 상기 적어도 하나의 상태 값을 설정하는 단계-상기 트랜잭션 네스팅 심도는, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타낸다-를 포함하는, 데이터 처리방법.
(3) 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 처리 프로그램 로직-상기 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 프로그램 로직은, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-; 및
이전에 실행된 명령의 처리 결과의 적어도 하나의 특성을 나타내는 적어도 하나의 상태 값을 기억하는 상태 데이터 구조체를 포함하는,
명령들의 실행을 위한 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하는 컴퓨터 프로그램으로서,
트랜잭션 네스팅 심도 시험 명령에 응답하여, 처리 프로그램 로직은, 트랜잭션 네스팅 심도와 제로보다 큰 소정수와의 비교 결과에 대응하게 상기 적어도 하나의 상태 값을 설정하도록 구성되고, 여기서 상기 트랜잭션 네스팅 심도는, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는, 컴퓨터 프로그램.
(4) 항(3)의 컴퓨터 프로그램을 기억하는 기억매체.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 예시적 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 그 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다.

Claims (22)

  1. 장치로서,
    명령들을 디코딩하는 명령 디코더; 및
    명령 디코더에 의해 디코딩된 명령들에 응답하여 데이터 처리를 수행하는 처리 회로소자를 구비하고, 처리 회로소자는 처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하고, 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성되고;
    명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 처리 회로소자는 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하도록 구성되고, 복수의 상태들은 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때 선택된 추가의 상태를 포함하고, 트랜잭션 네스팅 심도가 소정수미만일 때, 처리 회로소자는 적어도 하나의 상태를 추가의 상태 또는 제2 상태로 설정하도록 구성되고;
    명령 디코더는, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하게 처리 회로소자를 제어하기 위해, 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 명령 디코더를 사용 가능하게 하는 적어도 일 타입의 조건적 분기 명령을 포함하는 명령 세트 아키텍처를 지원하도록 구성되는, 장치.
  2. 제 1 항에 있어서,
    상기 소정수는 1인, 장치.
  3. 제 1 항에 있어서,
    상기 추가의 상태는,
    상기 트랜잭션 네스팅 심도가 상기 소정수미만일 때 선택된 제2 상태; 및
    상기 트랜잭션 네스팅 심도가 상기 소정수보다 클 때 선택된 제3 상태를 포함하는, 장치.
  4. 제 3 항에 있어서,
    상기 명령 세트 아키텍처는, 타겟 상태가 제1 상태, 제2 상태 또는 제3 상태인지에 상관없이 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 복수의 상태들 중 타겟 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하게 처리 회로소자를 제어하는 것을 명령 디코더가 가능하게 하는 하나 이상의 타입의 조건적 분기 명령을 포함하는, 장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    이전에 실행된 명령의 처리 결과의 적어도 하나의 특성을 나타내는 적어도 하나의 조건 상태 값을 기억하는 조건상태 기억소자를 구비하고;
    상기 명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 상기 처리 회로소자는, 트랜잭션 네스팅 심도와 소정수를 비교한 결과에 대응하게 상기 적어도 하나의 조건 상태 값을 설정하도록 구성되는, 장치.
  6. 제 5 항에 있어서,
    시험 조건을 지정하는 상기 명령 디코더에 의해 조건 상태 의존 조건적 분기 명령의 디코딩에 응답하여, 상기 처리 회로소자는, 상기 조건 상태 기억소자에 기억된 상기 적어도 하나의 조건 상태 값이 시험 조건을 충족시키는지에 관해 조건적인 조건적 분기를 수행하도록 구성되는, 장치.
  7. 제 5 항에 있어서,
    명령들의 오퍼랜드들을 기억하는 복수의 범용 레지스터들을 구비하고;
    상기 명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 상기 처리 회로소자는, 상기 트랜잭션 네스팅 심도를 표현하는 트랜잭션 네스팅 심도 값을, 상기 트랜잭션 네스팅 심도 시험 명령에서 지정한 범용 레지스터에 기록하도록 구성되는, 장치.
  8. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    명령들의 오퍼랜드들을 기억하는 복수의 범용 레지스터들을 구비하고;
    상기 명령 디코더에 의한 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 상기 처리 회로소자는, 트랜잭션 네스팅 심도 시험 명령에서 지정한 범용 레지스터에 적어도 하나의 상태 값을 기록하도록 구성되는, 장치.
  9. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    제1 상태에서, 적어도 하나의 상태 값은,
    모든 비트들이 0인 제1 인코딩;
    제1 소정 비트가 1이고 제2 소정 비트가 0인 제2 인코딩; 및
    제1 소정 비트가 0이고 제2 소정 비트가1인 제3 인코딩 중,
    하나를 갖는, 장치.
  10. 제 3 항 또는 제 4 항에 있어서,
    상기 제1 상태, 상기 제2 상태 및 상기 제3 상태 중 제1 상태에서, 적어도 하나의 상태 값은, 모든 비트들이 0인 제1 인코딩을 갖고;
    상기 제1 상태, 상기 제2 상태 및 상기 제3 상태 중 제2 상태에서, 적어도 하나의 상태 값은, 제1 소정 비트가 1이고 제2 소정 비트가 0인 제2 인코딩을 갖고;
    상기 제1 상태, 상기 제2 상태 및 상기 제3 상태 중 제3 상태에서, 적어도 하나의 상태 값은, 제1 소정 비트가 0이고 제2 소정 비트가 1인 제3 인코딩을 갖는, 장치.
  11. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    타겟 레지스터를 지정하는, 제로와의 비교(compare-with-zero) 타입의 조건적 분기 명령을 디코딩하는 상기 명령 디코더에 응답하여, 상기 처리 회로소자는, 0인 타겟 레지스터의 모든 비트들에 관해 조건적인 조건적 분기를 수행하도록 구성되는, 장치.
  12. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    타겟 레지스터의 소정 비트를 지정하는 비트 시험(bit-test) 타입의 조건적 분기 명령을 디코딩하는 상기 명령 디코더에 응답하여, 상기 처리 회로소자는, 1인 타겟 레지스터의 소정 비트에 관해 조건적이거나, 0인 타겟 레지스터의 소정 비트에 관해 조건적인, 조건적 분기를 수행하도록 구성되는, 장치.
  13. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 트랜잭션 네스팅 심도를 표현하는 트랜잭션 네스팅 심도 값을 기억하는 트랜잭션 네스팅 심도 기억소자를 구비하는, 장치.
  14. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는, 트랜잭션을 포기시에 복원되는 트랜잭션 시작 명령에 응답하여 캡처된 트랜잭션 복원 상태를 기억하기 위한 복원 상태 기억 회로소자를 구비하는, 장치.
  15. 제 14 항에 있어서,
    상기 처리 회로소자는,
    트랜잭션 네스팅 심도가 제로일 때 트랜잭션 시작 명령에 응답하여 트랜잭션 복원상태를 캡처하고,
    트랜잭션 네스팅 심도가 제로보다 클 때 트랜잭션 시작 명령에 응답하여 트랜잭션 복원상태의 캡처를 억제하도록 구성되는, 장치.
  16. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는, 적어도 하나의 스레드의 적어도 하나의 트랜잭션을 위해 추론적으로 실행된 명령들의 상기 결과들을 기억하는 추론적 결과 기억 회로소자를 구비하는, 장치.
  17. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는, 제1 스레드의 트랜잭션내에서 만들어진 주어진 어드레스에의 데이터 액세스와 또 하나의 스레드에 의해 만들어진 동일 어드레스에의 데이터 액세스간의 충돌을 검출하는 충돌 검출 회로소자를 구비하는, 장치.
  18. 제 17 항에 있어서,
    상기 충돌 검출 회로소자는, 충돌의 검출에 응답하여 상기 포기 이벤트를 기동하도록 구성되는, 장치.
  19. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 트랜잭션 메모리 지원 회로소자는, 트랜잭션내에서 명령들에 의해 액세스된 어드레스들을 추적하는 어드레스 추적 회로소자를 구비하는, 장치.
  20. 데이터 처리방법으로서,
    명령 디코더를 사용하여 명령들을 디코딩하는 단계;
    처리 회로소자에 의한 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 트랜잭션 메모리 지원 회로소자를 구비하는 처리 회로소자를 사용하여, 명령 디코더에 의해 디코딩된 명령들에 응답하여 데이터 처리를 수행하는 단계-상기 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 회로소자는, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-;
    단일의 트랜잭션 네스팅 심도 시험 명령의 디코딩에 응답하여, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하는 단계-상기 복수의 상태들은 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때 선택된 추가의 상태를 포함하고, 트랜잭션 네스팅 심도가 소정수미만일 때, 적어도 하나의 상태를 추가의 상태 또는 제2 상태로 설정한다-; 및
    단일의 트랜잭션 네스팅 심도 시험 명령에 후속하는 단일의 조건적 분기 명령의 디코딩에 응답하여, 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하는 단계를 포함하는, 데이터 처리방법.
  21. 데이터 처리의 스레드내에서 트랜잭션의 실행을 지원하는 처리 프로그램 로직-상기 트랜잭션은 트랜잭션 시작 명령과 트랜잭션 종료 명령과의 사이에서 추론적으로 실행된 스레드의 명령들을 포함하여, 처리 프로그램 로직은, 트랜잭션 종료 명령에 도달될 때까지 트랜잭션의 추론적으로 실행된 명령들의 결과들의 커밋먼트를 방지하고, 트랜잭션 종료 명령에 도달되기 전에 포기 이벤트가 일어날 때 트랜잭션의 처리를 포기하도록 구성된다-을 포함하는,
    명령들의 실행을 위한 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하는, 기억매체에 기억된, 컴퓨터 프로그램으로서,
    트랜잭션 네스팅 심도 시험 명령에 응답하여, 처리 프로그램 로직은, 대응한 트랜잭션이 포기되지 않고 커밋되지 않은 채로 있는 주어진 스레드의 다수의 실행된 트랜잭션 시작 명령들을 나타내는 트랜잭션 네스팅 심도에 의존하여 선택된 복수의 상태들 중 하나로, 적어도 하나의 상태 값을 설정하도록 구성되고, 복수의 상태들은 트랜잭션 네스팅 심도가 제로보다 큰 소정수일 때 선택된 제1 상태와, 트랜잭션 네스팅 심도가 소정수보다 클 때 선택된 추가의 상태를 포함하고, 트랜잭션 네스팅 심도가 소정수미만일 때, 처리 프로그램 로직은 적어도 하나의 상태를 추가의 상태 또는 제2 상태로 설정하도록 구성되고;
    처리 프로그램 로직은, 트랜잭션 네스팅 심도에 의존한 적어도 하나의 상태 값을 설정하고 제1 상태에 있는 적어도 하나의 상태 값에 관해 조건적인 조건적 분기를 수행하도록, 단일의 트랜잭션 네스팅 심도 시험 명령 후 단일의 조건적 분기 명령에 응답하여, 처리 프로그램 로직을 사용 가능하게 하는 적어도 일 타입의 조건적 분기 명령을 포함하는 명령 세트 아키텍처를 지원하도록 구성되는, 컴퓨터 프로그램.
  22. 청구항 21의 컴퓨터 프로그램을 기억하는 기억매체.
KR1020207010274A 2017-09-29 2018-08-21 트랜잭션 네스팅 심도 시험 명령 KR102597201B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17386030.5 2017-09-29
EP17386030.5A EP3462308B1 (en) 2017-09-29 2017-09-29 Transaction nesting depth testing instruction
PCT/EP2018/072560 WO2019063203A1 (en) 2017-09-29 2018-08-21 DETECTION DETECTION INSTRUCTIONS

Publications (2)

Publication Number Publication Date
KR20200061360A KR20200061360A (ko) 2020-06-02
KR102597201B1 true KR102597201B1 (ko) 2023-11-02

Family

ID=60117617

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207010274A KR102597201B1 (ko) 2017-09-29 2018-08-21 트랜잭션 네스팅 심도 시험 명령

Country Status (8)

Country Link
US (1) US11775297B2 (ko)
EP (1) EP3462308B1 (ko)
JP (1) JP7256177B2 (ko)
KR (1) KR102597201B1 (ko)
CN (1) CN111108473B (ko)
IL (1) IL273130B2 (ko)
TW (1) TWI784049B (ko)
WO (1) WO2019063203A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140047205A1 (en) * 2012-08-10 2014-02-13 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5125092A (en) * 1989-01-09 1992-06-23 International Business Machines Corporation Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes
US20070106883A1 (en) * 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20090182983A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Compare and Branch Facility and Instruction Therefore
CN102144218A (zh) * 2008-07-28 2011-08-03 超威半导体公司 可虚拟化的先进同步设备
US9268596B2 (en) * 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US8966324B2 (en) * 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
WO2015055083A1 (en) 2013-10-14 2015-04-23 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
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
GB2533414B (en) 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
IN2015DE01753A (ko) 2015-06-11 2015-08-28 Pradeep Varma

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140047205A1 (en) * 2012-08-10 2014-02-13 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics

Also Published As

Publication number Publication date
KR20200061360A (ko) 2020-06-02
WO2019063203A1 (en) 2019-04-04
TWI784049B (zh) 2022-11-21
US20200257551A1 (en) 2020-08-13
IL273130B1 (en) 2023-12-01
CN111108473A (zh) 2020-05-05
TW201933092A (zh) 2019-08-16
US11775297B2 (en) 2023-10-03
CN111108473B (zh) 2023-10-27
IL273130B2 (en) 2024-04-01
JP2020535513A (ja) 2020-12-03
EP3462308B1 (en) 2022-03-02
IL273130A (en) 2020-04-30
JP7256177B2 (ja) 2023-04-11
EP3462308A1 (en) 2019-04-03

Similar Documents

Publication Publication Date Title
US11663034B2 (en) Permitting unaborted processing of transaction after exception mask update instruction
US11422808B2 (en) Transactional compare-and-discard instruction
KR102597201B1 (ko) 트랜잭션 네스팅 심도 시험 명령
JP7481328B2 (ja) トランザクショナル・メモリのための装置及びデータ処理方法
US11347539B2 (en) Checking lock variables for transactions in a system with transactional memory support
US10853223B2 (en) Simulation of transactions

Legal Events

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