KR101970390B1 - 2진 변환 기반 프로세서들에 의한 록 생략 - Google Patents

2진 변환 기반 프로세서들에 의한 록 생략 Download PDF

Info

Publication number
KR101970390B1
KR101970390B1 KR1020167023070A KR20167023070A KR101970390B1 KR 101970390 B1 KR101970390 B1 KR 101970390B1 KR 1020167023070 A KR1020167023070 A KR 1020167023070A KR 20167023070 A KR20167023070 A KR 20167023070A KR 101970390 B1 KR101970390 B1 KR 101970390B1
Authority
KR
South Korea
Prior art keywords
code
lock
critical section
dbt
region
Prior art date
Application number
KR1020167023070A
Other languages
English (en)
Other versions
KR20160113651A (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 KR20160113651A publication Critical patent/KR20160113651A/ko
Application granted granted Critical
Publication of KR101970390B1 publication Critical patent/KR101970390B1/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/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)

Abstract

일반적으로, 이 개시내용은 2진 변환 기반 프로세서들에 의한 록 생략 기회들의 검출 및 활용을 위한 시스템들, 디바이스들, 방법들, 및 컴퓨터 판독가능 매체들을 제공한다. 디바이스는 제1 명령어 세트 아키텍처(ISA)로부터의 코드의 영역을 제2 ISA에서의 변환된 코드로 변환하고 코드의 영역의 임계 섹션과 연관된 록을 검출하고 생략하는 동적 2진 변환(DBT) 모듈을 포함할 수 있다. 디바이스는 또한, 임계 섹션에서 변환된 코드를 추론적으로 실행하는 프로세서를 포함할 수 있다. 디바이스는 추론적 실행 동안에 록 및/또는 임계 섹션과 연관된 메모리 액세스 충돌을 검출하고, 검출에 응답하여 추론적 실행을 롤백하고, 검출의 부재 시에 추론적 실행을 커미트하는 트랜잭션 지원 프로세서를 더 포함할 수 있다.

Description

2진 변환 기반 프로세서들에 의한 록 생략{LOCK ELISION WITH BINARY TRANSLATION BASED PROCESSORS}
본 개시내용은 록 생략(lock elision)에 관한 것으로, 더욱 상세하게는, 2진 변환 기반 프로세서들에 의한 록 생략 기회들의 검출 및 활용에 관한 것이다.
컴퓨팅 시스템들은 연산 스루풋(computational throughput)을 증가시키기 위하여 소정의 작업부하가 분산될 수도 있는 다수의 프로세서들 또는 프로세싱 코어들을 종종 가진다. 다수의 스레드(thread)들 또는 프로세스들은 프로세서 코어들의 각각 상에서 병렬로 실행될 수도 있고, 메모리의 공통 영역들을 공유할 수도 있다. 록(lock)들은 2개 이상의 프로세서들에 의한 충돌하는 액세스로부터 메모리의 이 임계 섹션(critical section)들의 동기화 및 보호를 위하여 전형적으로 이용된다. 그러나, 이러한 록들의 이용은 일반적으로, 멀티프로세서 시스템에 걸친 메모리 액세스 직렬화와, 록 이용가능성을 체크하고 대기하는 다수의 스레드들과 연관된 간섭성 트래픽으로 인한 성능 열화로 귀착된다.
록들은 상대적으로 높은 실행시간 코스트(runtime cost)를 초래할 수도 있지만, 다수의 스레드들은 임계 섹션들의 상이한(분리된) 영역들로부터 데이터를 액세스할 수도 있거나 액세스는 판독-기입 충돌들을 수반하지 않을 수도 있으므로, 록들은 정확한 프로그램 실행을 위하여 종종 필요하지 않다. 일부의 프로세서들은 소프트웨어 개발자들이 록 변수가 하드웨어에 의해 생략될 수도 있다는 것을 표시하기 위하여 코드에 주석(annotation)들을 포함할 수 있게 하는 트랜잭션 시맨틱들(transactional semantics)을 이용한다. 그러나, 이 접근법은 고가이거나 비실용적일 수도 있는 그 능력을 지원하기 위하여 소프트웨어가 수정될 것을 요구하고, 그렇지 않을 경우에는, 레거시 코드(legacy code)에 이득을 전혀 제공하지 않는다. 또한, 프로그래머들은 정적으로 알려지지 않았던 실행시간에서의 동적 충돌로 실제적으로 귀착될 수 있는 록 생략 기회들을 표시하기 위하여 이 주석들을 불가피하게 이용할 수도 있다. 이러한 부정확하게 생략된 록들은 성능을 추가로 열화시킬 수도 있다.
청구된 요지의 실시예들의 특징들 및 장점들은 다음의 상세한 설명이 진행됨에 따라, 그리고 유사한 번호들이 유사한 부분들을 도시하는 도면들을 참조할 시에 분명해질 것이며:
도 1은 본 개시내용과 부합하는 일 예시적인 실시예의 상부 레벨 시스템 도면을 예시하고;
도 2는 본 개시내용과 부합하는 일 예시적인 실시예의 블록도를 예시하고;
도 3은 본 개시내용과 부합하는 또 다른 예시적인 실시예의 변환 영역을 예시하고;
도 4는 본 개시내용과 부합하는 또 다른 예시적인 실시예의 블록도를 예시하고;
도 5는 본 개시내용과 부합하는 또 다른 예시적인 실시예의 블록도를 예시하고;
도 6은 본 개시내용과 부합하는 일 예시적인 실시예의 동작들의 플로우차트를 예시하고; 그리고
도 7은 본 개시내용과 부합하는 또 다른 예시적인 실시예의 플랫폼의 상부 레벨 시스템 도면을 예시한다.
다음의 상세한 설명은 예시적인 실시예들에 대해 참조를 행하면서 진행될 것이지만, 그 많은 대안들, 수정들, 및 변동들은 본 기술분야의 통상의 기술자들에게 명백할 것이다.
일반적으로, 이 개시내용은 2진 변환 기반 프로세서들에 의한 록 생략 기회들의 검출 및 활용을 위한 시스템들, 디바이스들, 방법들, 및 컴퓨터 판독가능 매체들을 제공한다. 록들은 다수의 프로세서들 또는 프로세서 코어들 상에서 실행될 수도 있는 멀티-스레드형(multi-threaded) 애플리케이션에 의한 충돌하는 액세스로부터, 코드, 메모리, 또는 다른 자원들의 임계 섹션들의 동기화 및 보호를 가능하게 한다. 본 개시내용에서 설명된 바와 같은 록 생략은 하드웨어, 소프트웨어, 또는 그 일부의 조합이 전통적인 하드웨어 록 생략(Hardware Lock Elision)(HLE) 시스템들에서 요구된 바와 같이, 애플리케이션 소프트웨어에 대한 사용자-가시적(user-visible) 시맨틱 수정들을 요구하지 않으면서 동기화 오버헤드(synchronization overhead)들을 회피하기 위한 능력을 제공할 수도 있다. 이러한 의미에서, 본 개시내용의 록 생략은 자동적인 것으로 고려될 수도 있다.
이하에서 더욱 상세하게 설명되는 바와 같이, 록 생략 프로세스의 부분은 예를 들어, x86 아키텍처와 같은 공개(public) 명령어 세트 아키텍처(instruction set architecture)(ISA)로부터, 프로세서들 또는 코어들에 의해 실행되는 네이티브(native) ISA로의 애플리케이션 소프트웨어의 동적 2진 변환(dynamic binary translation)(DBT) 동안에 수행될 수도 있다. 명령어 재순서화(re-ordering)를 포함하는 다른 최적화들이 또한 수행될 수도 있을 때, 록들은 DBT 동안에 검출되고 생략될 수도 있다. 록 생략 프로세스는 프로세서에 의해 제공된 원자성(atomicity) 또는 트랜잭션 지원(transactional support)에 의해 추가로 가능하게 될 수도 있어서, 변환된 섹션들의 추론적(speculative) 실행과, 실행된 섹션의 롤백(roll back)을 트리거링할 수도 있는 충돌들 또는 오류들의 검출을 허용할 수도 있다. 일부의 실시예들에서, 록 생략 프로세스(또는 최적화)는 록들의 제거가 성능을 열화시키는 것으로 결정될 경우에 동적으로 늦추어질 수도 있다. 본원에서 이용된 바와 같은 용어 "최적화"는 절대적인 상태가 아니라, 예를 들어, 코드 실행의 효율에 있어서 상대적인 개선을 지칭한다.
도 1은 본 개시내용과 부합하는 일 예시적인 실시예의 상부 레벨 시스템 도면(100)을 예시한다. 록 생략을 갖는 DBT 모듈(104)은 이하에서 더욱 상세하게 설명되는 바와 같이, 트랜잭션 지원에 의해 멀티프로세서 시스템(106)과 애플리케이션 소프트웨어(102) 사이에서 인터페이스하도록 구성될 수도 있다. 애플리케이션 소프트웨어(102)는 코드의 임계 섹션들을 보호하기 위한 록들 또는 다른 동기화 메커니즘들을 포함할 수도 있다. DBT 모듈(104)은 멀티프로세서 시스템(106)에 의해 제공된 하드웨어 지원과 관련하여 이 임계 코드 섹션(critical code section)들과 연관된 록 생략 기회들을 동적으로 검출하고 활용하도록 구성될 수도 있다.
도 2는 본 개시내용과 부합하는 일 예시적인 실시예의 블록도(200)를 예시한다. 애플리케이션 소프트웨어 또는 코드(102)는 기본 입력-출력 시스템(Basic Input-Output System)(BIOS)(202), 오퍼레이팅 시스템(operating system)(OS)(204), 디바이스 드라이버(device driver)들, 및 시스템 상에서 실행되는, 더 높은 레벨의 애플리케이션들 또는 다른 사용자 제공된 코드를 포함하는 임의의 다른 소프트웨어(206)를 포함할 수도 있다. 애플리케이션 소프트웨어(102)는 멀티-스레드형 구성요소들을 전형적으로 포함할 수도 있다. 애플리케이션 소프트웨어(102)는 예를 들어, x86 아키텍처 또는 그 변형과 같은 공개 ISA로서 제공될 수도 있거나, 공개 ISA로 컴파일링될 수도 있거나, 또는 이와 다르게 공개 ISA를 준수할 수도 있다.
DBT 모듈(104)은 록 생략 모듈(208)을 포함하도록 도시되어 있다. DBT 모듈(104)은 코드를 공개 ISA로부터, 프로세서(106)에 의해 실행되는 네이티브 ISA로 변환하도록 구성될 수도 있다. 네이티브 ISA는 일반적으로, 공개 ISA와의 유사성을 거의 또는 전혀 지니지 않을 수도 있다. 공개 ISA가 기존의 소프트웨어의 많은 모음에 대한 액세스를 가능하게 하는 레거시 코드에 대한 지원을 제공하지만, 네이티브 ISA는 예를 들어, 증가된 프로세서 성능 또는 개선된 전력 소비와 같은 타겟화된 목표들을 위하여 설계될 수도 있다. 프로세서들은 새로운 기술을 이용하기 위하여 규칙적으로 업데이트될 수도 있고, 기존의 소프트웨어를 실행하기 위한 능력을 유지하면서 그 네이티브 ISA를 변경할 수도 있다. DBT 프로세스 동안, 록들 및 연관된 임계 섹션들이 검출될 수도 있고, 록 생략을 위한 기회들이 활용될 수도 있다.
멀티프로세서 시스템(106)은 네이티브 ISA에서 코드를 실행하도록 구성될 수도 있는 임의의 수의 프로세서들 또는 프로세싱 코어들을 포함할 수도 있다. 멀티프로세서 시스템(106)은 또한, 네이티브 코드에서 트랜잭션 시맨틱 지원(예컨대, 원자성)을 제공하도록 구성된 트랜잭션 지원 프로세서(210)(또는 다른 적당한 하드웨어)를 포함할 수도 있다. 코드의 트랜잭션 또는 원자적 영역(transactional or atomic region of code)은 프로세서의 현재의 아키텍처 상태(캐시 메모리, 레지스터들 등의 내용들)가 확인되고 내부 하드웨어 버퍼 내에 저장되는 체크포인트(checkpoint)와 함께 시작될 수도 있다. 다음으로, 코드의 원자적 영역은 추론적으로 실행되고, 오류 또는 충돌이 발생할 경우, 프로세서 상태는 이전에 저장된 체크포인트로 롤백되어, 추론적 실행의 임의의 효과들이 무효로 될 수도 있다. 이와 다르게, 추론적 실행이 커미트(commit)되고 새로운 체크포인트가 이전의 것 대신에 추후에 확립될 수도 있어서, 코드 실행의 순방향 진행이 달성된다.
멀티프로세서 시스템(106)은 또한, 코드 및/또는 데이터를 저장하거나 임의의 다른 목적을 위한 메모리(212)를 포함할 수도 있다. 메모리는 다음 중의 임의의 것 또는 전부를 포함할 수도 있다: 주 메모리, 캐시 메모리, 레지스터들, 메모리 맵핑된 I/O, 상태 코드 레지스터들, 및 임의의 다른 상태 정보를 위한 저장장치. 임의의 적당한 캐시 메모리 간섭성 프로토콜들을 이용하면, 트랜잭션 지원 프로세서(210)는 시스템(106)의 프로세서들 또는 코어들 중의 임의의 것에 의해, 판독 및 기입 액세스들을 포함하는 메모리(212)에 대한 액세스들을 모니터링하도록 구성될 수도 있다.
도 3은 본 개시내용과 부합하는 또 다른 예시적인 실시예의 변환 영역(300)을 예시한다. 예를 들어, DBT 모듈(104)에 의해 생성된 바와 같은 변환된 코드의 영역은 변환 경계(302)에 의해 경계가 정해질 수도 있다. 코드의 임계 섹션(306)은 DBT 모듈(104)에 의해 검출되는 스핀 록(spin lock)(304)에 의해 보호될 수도 있다. 스핀 록은 하나의 스레드가 임계 섹션에 대한 록을 취득하고 또 다른 스레드들이 록을 취득하는 것을 대기하면서 루핑(looping)(또는 스핀)하는 상대적으로 간단한 록킹 메커니즘의 예이다. 록을 소유하는 스레드가 임계 섹션과 함께 종결될 때, 그것은 스핀 언록(spin unlock)(308)에서와 같이 록을 해제한다. 스핀 록이 예시적인 실시예와 관련하여 본원에서 논의되지만, 이 개시내용의 방법들 및 시스템들은 물론 임의의 타입의 록 동작으로 일반화될 수도 있다는 것이 인식될 것이다.
스핀 록에 대한 예시적인 DBT는 이하에서 설명된다. 이 경우에 있어서의 "오리지널" 또는 사전-변환(pre-translation) 코드는 x86 어셈블리 언어로 도시되어 있고, 여기서, 코드의 임계 섹션은 스핀 록 동작 및 스핀 언록 동작에 의해 경계가 정해진다.
Figure 112016082032635-pct00001
이 예에서, 메모리에 대한 원자적 판독-및-기입(atomic read-and-write) 동작을 수행하는 교환 명령(xchg)은, 판독이 프로세서가 이제 록을 유지한다는 것을 표시하는 '0'을 반환할 때까지, 메모리 어드레스 LOCK을 계속적으로 폴링(polling)할 것이다. 모든 다른 프로세서들은 록 소유자가 spin_unlock 호출에서 LOCK으로 '0'을 다시 기입할 때까지, spin_lock을 호출할 때에 '1'로 설정된 LOCK 변수를 볼 것이다. 많은 다른 프로세서들이 변수를 판독하는 것을 시도하는 동안에 많은 프로세서들이 록 변수에 '1'을 기입하는 것으로 인해 록 변수가 경합될 경우에, 이 절차는 상대적으로 많은 양의 간섭성 트래픽을 생성할 수도 있다.
DBT 모듈은 이하에서 도시된 바와 같이 이 코드를 프로세서의 네이티브 ISA로 변환한다. 명령어들은 부하(load)(LD)들 및 저장(store)(ST)들과 같은 기본적인 동작들로 분해된다. FENCE 및 COMMIT 동작들은 동기화 및 트랜잭션 시맨틱들을 달성하기 위하여 추가된다. FENCE 동작은 이전의 메모리 동작들이 다른 프로세서들에 대해 전체적으로 가시적으로 되도록 강제함으로써, 및/또는 프로세서의 실행 파이프라인에서 메모리 동작들의 추론적 재순서화를 차단함으로써, 메모리 순서화 특성들을 제공한다. 저장 버퍼 또는 기입 큐(queue)들은, 다른 프로세서들이 저장 동작들을 FENCE 전에 발생한 것으로서 관측할 것이라는 것을 보장하기 위하여, FENCE 동작이 퇴거(retirement)에 도달할 때에 소모될 수도 있다. COMMIT 동작은 프로세서로 하여금, 현재의 (정확한 것으로 확인된) 캐시 메모리 및 레지스터 상태를 체크포인트로 정하게 하여, 실행이 다음의 추론적으로 최적화된 코드 간격을 진행할 수도 있다. COMMIT 동작은, 추론적 실행이 순방향 진행을 행하는(즉, 임의적으로 큰 원자적 영역을 구축하는 것을 회피함) 것과, 추론적 코드 실행이 오류 등의 경우에 롤백될 수도 있는, 프로세서에 의해 이용가능한 항상 정확한 상태 정보가 있다는 것을 보장한다.
Figure 112016082032635-pct00002
그러나, 저장 명령어들(ST r1,[LOCK] 및 ST r0,[LOCK])은 임계 섹션에서의 동작들이 거의 충돌하지 않는 경우들에도 프로세서들 사이에서 경합되므로, 성능 페널티(performance penalty)가 변환된 코드에서 여전히 존재한다.
이에 따라, DBT는 예를 들어, 이하에서 도시된 바와 같이 네이티브 코드를 최적화되도록 추가로 구성될 수도 있다.
Figure 112016082032635-pct00003
제1 부하, LD r0,[LOCK]은 록 변수가 프로세서의 트랜잭션 메모리 하드웨어(또는 메모리 재순서화 하드웨어)에게 가시적으로 되게 한다. 원자적 영역은 또 다른 프로세서가 [LOCK]에 기입하는 것을 시도할 경우에 중단된다. 제1 저장, ST r1,[LOCK]은, 제2 저장, ST r0,[LOCK]이 동일한 값을 메모리 내의 [LOCK]에 다시 기입할 것을 가정하여 제거될 수도 있다. 제2 부하, LD r2,[LOCK]은 또한, "데드(dead)" 저장이 실행된 이후에 록이 변경되지 않았다는 가정 하에서 삭제될 수도 있다. 제2 저장, ST r0,[LOCK]은, 다른 저장이 임계 섹션에서 록 변수를 수정하지 않았다는 것을 보장하기 위하여, 프로세서의 트랜잭션 또는 메모리 재순서화 하드웨어를 이용하는 체크 동작, STCHK [LOCK]에 의해 대체된다.
이 예에서, 변환이 변환 탈출 가지에 도달할 경우, 프로세서의 하드웨어 지원(예컨대, 모듈(210))에 의해 보장되는 바와 같이, 다음 사항이 알려진다.
1. 다른 프로세서가 이 변환의 실행 동안에 록 변수를 수정하지 않았다.
2. 록 변수의 수정이 이 프로세서 상에서의 변환에서 발생하지 않았다.
3. 이 임계 섹션에서의 메모리 동작들과, 록들에 의해 보호된 임계 섹션 내에서 동작할 수도 있거나 동작하지 않을 수도 있는 임의의 다른 프로세서들 상에서의 메모리 동작들 사이에 판독-기입 충돌들이 없었다.
이 조건들이 주어지면, 록은 성공적으로 생략되었을 것이다. 임계 섹션에 대하여 원자성 위반이 검출되거나 저장 체크(STCHK)가 록 변수에 대한 수정들로 인해 실패할 경우에는, 오류가 생성된다. 그 경우에는, 코드 실행이 최후에 성공적으로 커미트된 체크포인트 상태로 롤백되고, DBT는 예를 들어, 실패 이전으로 전진하기 위하여, 록을 생략하지 않으면서, 더욱 보수적인 방식으로 그 포인트로부터의 실행을 진행할 수도 있다.
일부의 실시예들에서, DBT는 오류들의 카운트(count)를 추적할 수도 있고, 그 특정 록에 대해 문턱에 도달될 경우에 록 생략 없이 코드의 부분을 재변환할 수도 있고, 이에 따라, 정적 록 생략 구현에서는 가능하지 않은 적응을 제공하고, 여기서, 유사한 메커니즘들은 공개 ISA를 통해 명시적으로 제공(그 안에 포함됨)된다.
도 4는 본 개시내용과 부합하는 또 다른 예시적인 실시예의 블록도(400)를 예시한다. DBT 모듈(104)의 실시예는 다수의 서브-모듈들을 포함하도록 더욱 상세하게 도시되어 있다. 모듈들의 예시적인 순서화가 예시되지만, 다양한 실시예들이 임의의 적당한 순서화를 채용할 수도 있고, 일부의 모듈들은 임의적일 수도 있고, (도시되지 않은) 다른 추가적인 모듈들이 채용될 수도 있다는 것이 인식될 것이다. DBT는 그 효과에 있어서 오리지널 프로그램에서의 공개 ISA 명령어들의 영역에 대응하는 (모듈(412)에 의해 생성된) 네이티브 코드로의 변환들을 실행함으로써 동작하도록 구성될 수도 있다. 변환된 영역은 예를 들어, 모듈(404)에 의해 검출된 바와 같은 록킹된 임계 섹션일 수도 있다. 변환들은 모듈(402)에서 코드를 프로파일링(profiling)한 후에 DBT에 의해 생성될 수도 있다. DBT는 모든 변환된 코드를 검사하고 코드를 최적화하도록 구성될 수도 있다. 최적화 모듈(406)은 예를 들어, 발견적(heuristics) 및 실행시간 거동에 기초하여 최적화들을 수행하도록 구성될 수도 있다. 변환은 추론적으로 실행되고, 실행 효과들은 커미트 동작(commit operation)에 의해 지속적으로 되거나, 오추론(misspeculation), 외부 이벤트들, 또는 DBT에 의해 수행된 무효한 최적화들의 발견의 경우에 롤백된다. 각각의 커미트 동작은 하나 이상의 동등한 공개 ISA 명령어들에 의해 프로세서의 상태를 진전시킨다. 시스템은 또한, DBT(예컨대, 모듈(408))에서 메모리 동작들을 정적으로 재스케줄링(재순서화)하기 위한 메커니즘을 지원하도록 구성될 수도 있고, 그 공개 ISA 메모리 순서화를 확인하는 것은 실행 시에 동적으로 위반되지 않는다.
정위치(in place)의 록으로 실행하는 것이 더욱 효율적인 경우들이 있을 수도 있으므로, 록 생략 판단 모듈(410)은 예를 들어, 모듈(414)의 성능 모니터링에 기초하여 록이 생략되어야 하는지 여부를 결정하도록 구성될 수도 있다. 록을 생략하기 위한 판단은 또한, 다음의 조건들이 충족된다는 결정에 기초할 수도 있다.
1. DBT는 단일 변환에서 록 동작 및 대응하는 언록 동작의 양자를 찾는다. 변환은 록 변수의 어드레스가 실행 시에 록 및 언록에 대해 동일하다는 것을 위반할 것이다.
2. 언록 동작은 임계 섹션을 사후-지배(post-dominate)한다. 즉, 변환 내의 모든 비-오류 제어 흐름 경로들은 언록 동작을 포함하는 블록에 이를 것이다.
3. 록, 임계 섹션, 및 언록은 모두 프로세서의 트랜잭션 하드웨어에 의해 지원된 단일의 원자적 영역에 적합하다.
도 5는 본 개시내용과 부합하는 또 다른 예시적인 실시예의 블록도(500)를 예시한다. 트랜잭션 지원 프로세서(210)의 실시예는, 그 실행 동안에 최적화된 네이티브 ISA 코드 영역들과 상호동작하는 다수의 모듈들을 포함하도록 더욱 상세하게 도시되어 있다. 모듈들의 예시적인 순서화가 예시되지만, 다양한 실시예들이 임의의 적당한 순서화를 채용할 수도 있고, 일부의 모듈들은 임의적일 수도 있고, (도시되지 않은) 다른 추가적인 모듈들이 채용될 수도 있다는 것이 인식될 것이다. 충돌 검출 모듈(502)은 추론적 실행의 과정 동안에 야기될 수도 있는 충돌들을 검출하도록 구성될 수도 있다. 예를 들어, 변환 내에서의 메모리 판독 및 기입 동작들은 추론적 실행을 수행하는 프로세서의 캐시 메모리의 라인(영역)과 연관된 저장들에 대한 추론적 속성 비트(또는 부하들에 대한 관측 비트)를 설정할 수도 있다. 속성 비트는, 캐시에 기입된 데이터가 정확한 것으로 아직 알려져 있지 않거나, 데이터가 원래의 메모리 순서에서 벗어나서 캐시로부터 판독되었다는 것을 표시한다. 속성 비트는 외부 엔티티(entity)(예컨대, 또 다른 스레드 또는 또 다른 프로세서)가 그 캐시 라인의 소유권을 요청해야 할 경우에 (예컨대, 모듈(506)에 의해) 롤백이 발생할 것을 강제하도록 구성될 수도 있다. 추론적 실행이 성공적으로 커미트 동작에 도달할 경우, 캐시와 연관된 속성 비트들은 소거될 수도 있다(예컨대, 모듈(508)). 다시 말해서, 캐시에서의 데이터 및 이들에 대한 메모리 액세스들의 순서가 확인되었다. 그러나, 캐시 메모리 일관성 프로토콜들에 의해 정의된 바와 같이, 오직 하나의 기입기(writer)가 캐시 라인에 대한 배타적인 액세스를 얻도록 보장되는 한, 다수의 프로세서들 상에서 실행되는 다수의 동시 판독기(reader)들은 롤백 없이 허용될 수도 있다. 그러나, 오추론이 발생하고 프로세서가 최후에 성공적으로 커미트된 상태로의 롤백을 수행할 경우, 데이터 캐시는 설정된 추론적 속성 비트를 갖는 모든 캐시 라인들을 폐기할 수도 있다. 이것은 최후의 유효한 비-추론적 상태를 자동으로 복원할 것이다.
명령어 재순서화 검증 모듈(504)은 실행 동안에, DBT에 의해 정적으로 수행되었을 수도 있는 명령어 재순서화를 동적으로 검증하도록 구성될 수도 있다. 무효한 재순서화의 경우, 롤백이 강제될 수도 있고(모듈(506), 재변환은 위반되는 명령어 재순서화를 변경하거나 제거하기 위하여 DBT에 의해 수행될 수도 있다.
도 6은 본 개시내용과 부합하는 또 다른 예시적인 실시예의 동작들(600)의 플로우차트를 예시한다. 동작들은 록 생략을 위한 방법을 제공한다. 동작(610)에서, 제1 명령어 ISA로부터의 코드의 영역에 대해 제2 ISA에서의 변환된 코드로의 DBT가 수행된다. 제1 ISA는 공개 ISA일 수도 있는 반면, 제2 ISA는 프로세서에 대해 네이티브이다. 동작(620)에서, DBT 동안에는, 코드의 영역의 임계 섹션과 연관된 록이 검출된다. 동작(630)에서, 록은 변환된 코드로부터 생략된다. 동작(640)에서, 임계 섹션에서의 변환된 코드는 추론적으로 실행된다. 동작(650)에서는, 트랜잭션 오류(transaction fault)의 검출에 응답하여, 추론적 실행이 롤백된다. 동작(660)에서는, 트랜잭션 오류의 부재 시에, 추론적 실행이 커미트된다.
도 7은 본 개시내용과 부합하는 일 예시적인 실시예의 상부 레벨 시스템 도면(700)을 예시한다. 시스템(700)은 예를 들어, 스마트폰, 스마트 태블릿, 개인 정보 단말(personal digital assistant)(PDA), 이동 인터넷 디바이스(mobile Internet device)(MID), 전환가능 태블릿, 노트북 또는 랩톱 컴퓨터, 데스크톱 컴퓨터, 서버, 스마트 텔레비전, 또는 고정식 또는 이동식이든 간에 임의의 다른 디바이스와 같은 하드웨어 플랫폼(710) 또는 컴퓨팅 디바이스일 수도 있다. 디바이스는 예를 들어, 터치 스크린, 액정 디스플레이(liquid crystal display)(LCD), 또는 임의의 다른 적당한 디스플레이 타입과 같은 디스플레이(770)를 통해 다양한 인터페이스들을 사용자에게 일반적으로 제시할 수도 있다.
시스템(700)은 프로세서(720)를 포함하도록 도시되어 있다. 일부의 실시예들에서, 프로세서(720)는 임의의 수의 프로세서 코어들로서 구현될 수도 있다. 프로세서(또는 프로세서 코어들)는 예를 들어, 마이크로-프로세서, 내장된 프로세서, 디지털 신호 프로세서(digital signal processor)(DSP), 네트워크 프로세서, 필드 프로그래밍가능 게이트 어레이, 또는 코드를 실행하도록 구성된 다른 디바이스와 같은 임의의 타입의 프로세서일 수도 있다. 프로세서(720)는 단일-스레드형 코어, 또는 그것이 코어 당 하나를 초과하는 하드웨어 스레드 컨텍스트(또는 "논리적 프로세서")를 포함할 수도 있다는 점에서 멀티스레드형 코어일 수도 있다. 시스템(700)은 또한, 프로세서(720)에 결합된 메모리(730)를 포함하도록 도시되어 있다. 메모리(730)는 본 기술분야의 통상의 기술자들에게 알려져 있거나, 또는 이와 다르게 이용가능할 수도 있는 바와 같은 (메모리 계층구조 및/또는 메모리 캐시들의 다양한 계층들을 포함하는) 폭넓은 다양한 메모리들 중의 임의의 것일 수도 있다. 시스템(700)은 또한, 프로세서(720)와, 시스템(700)의 다른 엘리먼트들 또는 시스템(700)의 외부의 다른 엘리먼트들(도시되지 않음) 사이의 데이터 통신을 가능하게 하거나 관리하도록 구성될 수도 있는 입력/출력(input/output)(I/O) 시스템 또는 제어기(740)를 포함하도록 도시되어 있다. 시스템(700)은 또한, 시스템(700)과 임의의 외부 엔티티들 사이의 무선 통신을 가능하게 하도록 구성된 무선 통신 인터페이스(750)를 포함할 수도 있다. 무선 통신들은 이동 전화 통신 표준들을 포함하는 임의의 기존의, 또는 아직 개발되지 않은 통신 표준들을 준수할 수도 있거나, 또는 이와 다르게 이러한 통신 표준들과 호환가능할 수도 있다.
시스템(700)은 프로세서(들)(720)의 네이티브 코드 ISA로의 DBT를 수행하면서, 이전에 설명된 바와 같이, 애플리케이션(102)에서의 록 생략 기회들을 검출하고 활용하도록 구성된 DBT 모듈(104)을 더 포함할 수도 있다.
일부의 실시예들에서, 시스템(700)의 다양한 구성요소들은 시스템-온-어-칩(system-on-a-chip)(SoC) 아키텍처로 조합될 수도 있다는 것이 인식될 것이다. 일부의 실시예들에서, 구성요소들은 하드웨어 구성요소들, 펌웨어 구성요소들, 소프트웨어 구성요소들, 또는 하드웨어, 펌웨어, 또는 소프트웨어의 임의의 적당한 조합일 수도 있다.
본원에서 설명된 방법들의 실시예들은, 하나 이상의 프로세서들에 의해 실행될 때, 방법들을 수행하는 명령어들을 개별적으로 또는 조합하여 저장한 하나 이상의 저장 매체들을 포함하는 시스템에서 구현될 수도 있다. 여기서, 프로세서는 예를 들어, 시스템 CPU(예컨대, 코어 프로세서) 및/또는 프로그래밍가능 회로부를 포함할 수도 있다. 이에 따라, 본원에서 설명된 방법들에 따른 동작들은 몇몇 상이한 물리적 로케이션들에서의 프로세싱 구조들과 같은 복수의 물리적 디바이스들에 걸쳐 분산될 수도 있는 것으로 의도된다. 또한, 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 방법의 동작들은 개별적으로 또는 하위조합(subcombination)으로 수행될 수도 있는 것으로 의도된다. 이에 따라, 플로우차트들의 각각의 플로우차트의 동작들의 전부가 수행될 필요는 없고, 본 개시내용은 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 이러한 동작들의 모든 하위조합들이 가능하게 되는 것으로 의도한 것이다.
저장 매체는 임의의 타입의 유형의 매체(tangible medium), 예를 들어, 플로피 디스크들, 광학 디스크들, 컴팩트 디스크 판독-전용 메모리(compact disk read-only memory)(CD-ROM)들, 컴팩트 디스크 재기입가능(compact disk rewritable)(CD-RW)들, 디지털 다기능 디스크(digital versatile disk)(DVD)들 및 자기-광학 디스크들을 포함하는 임의의 타입의 디스크, 반도체 디바이스들, 예컨대, 판독-전용 메모리(ROM)들, 랜덤 액세스 메모리(RAM)들, 예를 들어, 동적 및 정적 RAM들, 소거가능 프로그래밍가능 판독-전용 메모리(erasable programmable read-only memory)(EPROM)들, 전기적 소거가능 프로그래밍가능 판독-전용 메모리(electrically erasable programmable read-only memory)(EEPROM)들, 플래시 메모리들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하기 위한 임의의 타입의 매체들을 포함할 수 있다.
본원에서의 임의의 실시예에서 이용된 바와 같은 "회로부"는 예를 들어, 단독으로 또는 임의의 조합으로, 하드와이어드 회로부(hardwired circuitry), 프로그래밍가능 회로부, 상태 머신 회로부, 및/또는 프로그래밍가능 회로부에 의해 실행된 명령어들을 저장하는 펌웨어를 포함할 수도 있다. 앱(app)은 호스트 프로세서 또는 다른 프로그래밍가능 회로부와 같은 프로그래밍가능 회로부 상에서 실행될 수도 있는 코드 또는 명령어들로서 구체화될 수도 있다. 본원에서의 임의의 실시예에서 이용된 바와 같은 모듈은 회로부로서 구체화될 수도 있다. 회로부는 집적 회로 칩과 같은 집적 회로로서 구체화될 수도 있다.
이에 따라, 본 개시내용은 2진 변환 기반 프로세서들에 의한 록 생략 기회들의 검출 및 활용을 위한 시스템들, 디바이스들, 방법들, 및 컴퓨터 판독가능 매체들을 제공한다. 다음의 예들은 추가의 실시예들에 속한다.
디바이스는 제1 명령어 세트 아키텍처(ISA)로부터의 코드의 영역을 제2 ISA에서의 변환된 코드로 변환하고 코드의 영역의 임계 섹션과 연관된 록을 검출하고 생략하기 위한 동적 2진 변환(DBT) 모듈을 포함할 수도 있다. 이 예의 디바이스는 또한, 임계 섹션에서 변환된 코드를 추론적으로 실행하기 위한 프로세서를 포함할 수도 있다. 이 예의 디바이스는 추론적 실행 동안에 임계 섹션과 연관된 메모리 액세스 충돌을 검출하고; 검출에 응답하여 추론적 실행을 롤백하고; 그리고 검출의 부재 시에 추론적 실행을 커미트하기 위한 트랜잭션 지원 프로세서를 더 포함할 수도 있다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, 메모리 액세스 충돌은 록과 연관된다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, 프로세서는 추가로, 검출된 메모리 액세스 충돌에 응답하여 롤백이 수행된 후에 록 하에서 임계 섹션에서의 변환된 코드를 재실행하기 위한 것이다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, DBT 모듈은 추가로, 코드의 영역의 명령어들을 정적으로 재순서화하기 위한 것이고, 트랜잭션 지원 프로세서는 추가로, 실행 동안에 재순서화를 동적으로 검증하기 위한 것이다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, DBT 모듈은 추가로, 록과 연관된 검출된 메모리 액세스 충돌들의 수를 모니터링하고, 그리고, 충돌들의 수가 문턱 값을 초과할 경우, 새로운 DBT를 수행하기 위한 것이고, 새로운 DBT는 록 생략을 포함하지 않는다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, 메모리 액세스 충돌은 멀티프로세싱 시스템의 2개 이상의 프로세서들 사이의 메모리 판독 및/또는 기입 충돌을 포함한다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, DBT 모듈은 추가로, 실행 성능 측정들에 기초하여 변환된 코드를 동적으로 최적화하기 위한 것이다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, DBT 모듈은 추가로, 명령어를 변환된 코드 내로 삽입하기 위한 것이고, 명령어는 생략된 록에 선행하는 메모리 동작의 효과들이 멀티프로세싱 시스템의 프로세서들에게 전체적으로 가시적으로 되게 한다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, 디바이스는 스마트폰, 랩톱 컴퓨팅 디바이스, 스마트 TV, 또는 스마트 태블릿이다.
또 다른 예시적인 디바이스는 상기한 구성요소들을 포함하고, 사용자 인터페이스를 더 포함하고, 사용자 인터페이스는 터치 스크린이다.
또 다른 양태에 따르면, 방법이 제공된다. 방법은 제1 명령어 세트 아키텍처(ISA)로부터의 코드의 영역의 제2 ISA에서의 변환된 코드로의 동적 2진 변환(DBT)을 수행하는 단계를 포함할 수도 있다. 이 예의 방법은 또한, DBT 동안에, 코드의 영역의 임계 섹션과 연관된 록을 검출하는 단계를 포함할 수도 있다. 이 예의 방법은 변환된 코드로부터 록을 생략하는 단계를 더 포함할 수도 있다. 이 예의 방법은 임계 섹션에서 변환된 코드를 추론적으로 실행하는 단계를 더 포함할 수도 있다. 이 예의 방법은 트랜잭션 오류의 검출에 응답하여 추론적 실행을 롤백하는 단계를 더 포함할 수도 있다. 이 예의 방법은 트랜잭션 오류의 부재 시에 추론적 실행을 커미트하는 단계를 더 포함할 수도 있다.
또 다른 예시적인 방법은 상기한 동작들을 포함하고, 트랜잭션 오류에 응답하여 롤백을 수행한 후에, 록 하에서 임계 섹션에서의 변환된 코드를 재실행하는 단계를 더 포함한다.
또 다른 예시적인 방법은 상기한 동작들을 포함하고, DBT 동안에 코드의 영역의 명령어들을 정적으로 재순서화하는 단계, 및 실행 동안에 재순서화를 동적으로 검증하는 단계를 더 포함한다.
또 다른 예시적인 방법은 상기한 동작들을 포함하고, 록과 연관된 트랜잭션 오류들의 수를 모니터링하는 단계, 및 트랜잭션 오류들의 수가 문턱 값을 초과할 경우, 새로운 DBT를 수행하는 단계를 더 포함하고, 새로운 DBT는 록 생략을 포함하지 않는다.
또 다른 예시적인 방법은 상기한 동작들을 포함하고, 트랜잭션 오류는 록 및/또는 임계 섹션과 연관된 메모리에 대한 액세스 충돌에 의해 생성된다.
또 다른 예시적인 방법은 상기한 동작들을 포함하고, DBT는 실행 성능 측정들에 기초하여 변환된 코드를 동적으로 최적화하는 단계를 더 포함한다.
또 다른 예시적인 방법은 상기한 동작들을 포함하고, DBT는 명령어를 변환된 코드 내로 삽입하는 단계를 더 포함하고, 명령어는 생략된 록에 선행하는 메모리 동작의 효과들이 멀티프로세싱 시스템의 프로세서들에게 전체적으로 가시적으로 되게 한다.
또 다른 양태에 따르면, 시스템이 제공된다. 시스템은 제1 명령어 세트 아키텍처(ISA)로부터의 코드의 영역의 제2 ISA에서의 변환된 코드로의 동적 2진 변환(DBT)을 수행하기 위한 수단을 포함할 수도 있다. 이 예의 시스템은 또한, DBT 동안에, 코드의 영역의 임계 섹션과 연관된 록을 검출하기 위한 수단을 포함할 수도 있다. 이 예의 시스템은 변환된 코드로부터 록을 생략하기 위한 수단을 더 포함할 수도 있다. 이 예의 시스템은 임계 섹션에서 변환된 코드를 추론적으로 실행하기 위한 수단을 더 포함할 수도 있다. 이 예의 시스템은 트랜잭션 오류의 검출에 응답하여 추론적 실행을 롤백하기 위한 수단을 더 포함할 수도 있다. 이 예의 시스템은 트랜잭션 오류의 부재 시에 추론적 실행을 커미트하기 위한 수단을 더 포함할 수도 있다.
또 다른 예시적인 시스템은 상기한 구성요소들을 포함하고, 트랜잭션 오류에 응답하여 롤백을 수행한 후에, 록 하에서 임계 섹션에서의 변환된 코드를 재실행하기 위한 수단을 더 포함한다.
또 다른 예시적인 시스템은 상기한 구성요소들을 포함하고, DBT 동안에 코드의 영역의 명령어들을 정적으로 재순서화하기 위한 수단, 및 실행 동안에 재순서화를 동적으로 검증하기 위한 수단을 더 포함한다.
또 다른 예시적인 시스템은 상기한 구성요소들을 포함하고, 록과 연관된 트랜잭션 오류들의 수를 모니터링하기 위한 수단, 및 트랜잭션 오류들의 수가 문턱 값을 초과할 경우, 새로운 DBT를 수행하기 위한 수단을 더 포함하고, 새로운 DBT는 록 생략을 포함하지 않는다.
또 다른 예시적인 시스템은 상기한 구성요소들을 포함하고, 트랜잭션 오류는 록 및/또는 임계 섹션과 연관된 메모리에 대한 액세스 충돌에 의해 생성된다.
또 다른 예시적인 시스템은 상기한 구성요소들을 포함하고, DBT는 실행 성능 측정들에 기초하여 변환된 코드를 동적으로 최적화하기 위한 수단을 더 포함한다.
또 다른 예시적인 시스템은 상기한 구성요소들을 포함하고, DBT는 명령어를 변환된 코드 내로 삽입하기 위한 수단을 더 포함하고, 명령어는 생략된 록에 선행하는 메모리 동작의 효과들이 멀티프로세싱 시스템의 프로세서들에게 전체적으로 가시적으로 되게 한다.
또 다른 양태에 따르면, 프로세서에 의해 실행될 때, 프로세서로 하여금, 상기 예들 중의 임의의 것에서 설명된 바와 같은 방법의 동작들을 수행하게 하는 명령어들을 저장한 적어도 하나의 컴퓨터-판독가능 저장 매체가 제공된다.
또 다른 양태에 따르면, 상기 예들 중의 임의의 것에서 설명된 바와 같은 방법을 수행하기 위한 수단을 포함하는 장치가 제공된다.
본원에서 채용되었던 용어들 및 표현들은 예시가 아니라, 설명의 용어들로서 이용되고, 이러한 용어들 및 표현들의 이용에 있어서, 도시되고 설명된 특징들의 임의의 등가물들(또는 그 부분들)을 제외하는 의도가 없고, 다양한 수정들은 청구항들의 범위 내에서 가능하다는 것이 인식된다. 따라서, 청구항들은 모든 이러한 등가물들을 커버하도록 의도된다. 다양한 특징들, 양태들, 및 실시예들은 본원에서 설명되었다. 본 기술분야의 통상의 기술자들에 의해 이해되는 바와 같이, 특징들, 양태들, 및 실시예들은 서로와의 조합뿐만 아니라, 변동 및 수정도 허용한다. 그러므로, 본 개시내용은 이러한 조합들, 변동들, 및 수정들을 망라하는 것으로 고려된다.

Claims (23)

  1. 록 생략(lock elision)을 위한 디바이스로서,
    제1 명령어 세트 아키텍처(instruction set architecture; ISA) 내 공개(public) 코드의 영역 내에 포함되는 코드의 임계 섹션과 연관된 록을 검출하는 록 검출 회로부;
    상기 록 및 대응하는 언록 동작이 단일 변환 내에 존재하고;
    상기 언록 동작이 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션을 사후-지배(post-dominte)하고;
    상기 록, 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션, 및 상기 언록 동작이 원자적(atomic) 영역에 적합한 것,
    을 검출하는 것에 응답하여, 상기 공개 코드의 영역의 상기 임계 섹션의 변환 및 실행에 앞서 상기 공개 코드 내에 포함된 상기 코드의 임계 섹션과 연관된 상기 록을 생략하는 록 생략 회로부; 및
    상기 제1 ISA 내 상기 공개 코드의 영역을 제2 ISA 내 네이티브 코드로 변환하고 - 상기 네이티브 코드는 상기 공개 코드의 영역의 상기 변환된 임계 섹션을 포함하는 네이티브 코드의 임계 섹션을 포함함 -, 상기 공개 코드의 영역의 명령어들을 정적으로 재순서화하는 2진 코드 변환 회로부,
    를 포함하는 동적 2진 변환(dynamic binary translation; DBT) 회로부;
    상기 네이티브 코드의 임계 섹션을 추론적으로(speculatively) 실행하는 프로세서; 및
    트랜잭션 지원 프로세서(transactional support processor)
    를 포함하고, 상기 트랜잭션 지원 프로세서는,
    상기 공개 코드의 영역의 상기 명령어 재순서화를 동적으로 검증(validate)하고, 상기 명령어 재순서화가 무효하다는 판정에 응답하여 상기 재순서화의 롤백(roll back)을 개시하고;
    상기 추론적으로 실행된 네이티브 코드의 임계 섹션과 연관된 트랜잭션 오류(transaction fault)를 검출하고;
    상기 검출된 트랜잭션 오류에 응답하여 상기 추론적 실행의 롤백을 개시하고;
    상기 검출된 트랜잭션 오류의 부재 시에 상기 추론적 실행을 커미트(commit)하는, 디바이스.
  2. 제1항에 있어서, 상기 프로세서는 추가로, 상기 트랜잭션 오류에 응답하여 상기 롤백이 개시된 후에, 상기 록 하에서 상기 네이티브 코드의 임계 섹션을 재실행하는, 디바이스.
  3. 삭제
  4. 제1항에 있어서, 상기 DBT 회로부는 추가로, 상기 록과 연관된 검출된 트랜잭션 오류들의 수를 모니터링하고, 상기 트랜잭션 오류들의 수가 문턱 값을 초과할 경우, 상기 록 생략을 포함하지 않는 새로운 DBT를 수행하는, 디바이스.
  5. 제1항에 있어서, 상기 트랜잭션 오류는 멀티프로세싱 시스템의 2개 이상의 프로세서들 사이의 메모리 판독 또는 기입 충돌을 포함하는, 디바이스.
  6. 제1항에 있어서, 상기 DBT 회로부는 추가로, 실행 성능 측정들에 기초하여 상기 네이티브 코드를 동적으로 최적화하는, 디바이스.
  7. 제1항에 있어서, 상기 DBT 회로부는 추가로, 명령어를 상기 네이티브 코드 내로 삽입하고, 상기 명령어는 상기 생략된 록에 선행하는 메모리 동작의 효과들이 멀티프로세싱 시스템의 프로세서들에게 전체적으로 가시적으로(visible) 되게 하는, 디바이스.
  8. 제1항에 있어서, 상기 디바이스는 스마트폰, 랩톱 컴퓨팅 디바이스, 스마트 TV, 또는 스마트 태블릿인, 디바이스.
  9. 제1항에 있어서, 사용자 인터페이스를 더 포함하고, 상기 사용자 인터페이스는 터치 스크린인, 디바이스.
  10. 하드웨어 플랫폼 또는 컴퓨팅 디바이스에 구현된 록 생략을 위한 방법으로서,
    공개 코드의 영역의 임계 섹션과 연관된 록을 검출하는 단계;
    상기 록 동작 및 대응하는 언록 동작이 단일 변환 내에 존재하고;
    상기 언록 동작이 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션을 사후-지배하고;
    상기 록, 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션, 및 상기 언록 동작이 원자적 영역에 적합한 것,
    을 검출하는 것에 응답하여, 상기 공개 코드의 영역의 상기 임계 섹션과 연관된 상기 록을 생략하는 단계;
    제1 명령어 세트 아키텍처(ISA)로부터 제2 ISA 내 네이티브 코드로의 상기 공개 코드의 영역의 동적 2진 변환(DBT)을 수행하는 단계 - 상기 네이티브 코드는 상기 공개 코드의 영역의 상기 변환된 임계 섹션을 포함하는 네이티브 코드의 임계 섹션을 포함함 -;
    상기 공개 코드의 영역의 명령어들을 정적으로 재순서화하는 단계;
    상기 네이티브 코드의 상기 임계 섹션을 추론적으로 실행하는 단계;
    상기 공개 코드의 영역의 상기 명령어 재순서화를 동적으로 검증하고, 상기 명령어 재순서화가 무효하다는 판정에 응답하여 상기 재순서화의 롤백을 개시하는 단계;
    트랜잭션 오류(transaction fault)의 검출에 응답하여 상기 추론적 실행의 롤백을 개시하고, 그렇지 않은 경우에는 상기 추론적 실행을 커미트하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서, 상기 트랜잭션 오류를 검출하는 것에 응답하여 상기 롤백을 개시한 후에, 상기 록 동작 하에서 상기 네이티브 코드의 상기 임계 섹션을 재실행하는 단계를 더 포함하는, 하드웨어 플랫폼 또는 컴퓨팅 디바이스에 구현된 방법.
  12. 삭제
  13. 제10항에 있어서, 상기 록과 연관된 트랜잭션 오류들의 수를 모니터링하는 단계, 및 상기 트랜잭션 오류들의 수가 문턱 값을 초과할 경우, 상기 록 생략을 포함하지 않는 새로운 DBT를 수행하는 단계를 더 포함하는, 하드웨어 플랫폼 또는 컴퓨팅 디바이스에 구현된 방법.
  14. 제10항에 있어서, 상기 트랜잭션 오류는 상기 네이티브 코드의 상기 임계 섹션과 연관된 메모리에 대한 액세스 충돌에 의해 발생하는, 하드웨어 플랫폼 또는 컴퓨팅 디바이스에 구현된 방법.
  15. 제10항에 있어서, 상기 DBT는 실행 성능 측정들에 기초하여 상기 네이티브 코드를 동적으로 최적화하는 단계를 포함하는, 하드웨어 플랫폼 또는 컴퓨팅 디바이스에 구현된 방법.
  16. 제10항에 있어서, 상기 DBT는 명령어를 상기 네이티브 코드 내로 삽입하는 단계를 포함하고, 상기 명령어는 상기 생략된 록에 선행하는 메모리 동작의 효과들이 멀티프로세싱 시스템의 프로세서들에게 전체적으로 가시적으로 되게 하는, 하드웨어 플랫폼 또는 컴퓨팅 디바이스에 구현된 방법.
  17. 프로세서에 의해 실행될 때, 록 생략을 위한 동작들을 수행하는 명령어들을 저장한 비일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 동작들은,
    공개 코드의 영역의 임계 섹션과 연관된 록을 검출하는 동작;
    상기 록 및 대응하는 언록 동작이 단일 변환 내에 존재하는 것;
    상기 언록 동작이 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션을 사후-지배하는 것;
    상기 록, 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션, 및 상기 언록 동작이 원자적 영역에 적합한 것,
    을 검출하는 것에 응답하여, 상기 공개 코드의 영역 내에 포함된 상기 코드의 임계 섹션과 연관된 상기 록을 생략하는 동작;
    제1 명령어 세트 아키텍처(ISA)로부터 제2 ISA 내 네이티브 코드로의 상기 공개 코드의 영역의 동적 2진 변환(DBT)을 수행하는 동작 - 상기 네이티브 코드는 상기 공개 코드의 영역의 상기 변환된 임계 섹션을 포함하는 네이티브 코드의 임계 섹션을 포함함 -;
    상기 공개 코드의 영역의 명령어들을 정적으로 재순서화하는 동작;
    상기 네이티브 코드의 임계 섹션을 추론적으로 실행하는 동작;
    상기 공개 코드의 영역의 상기 명령어 재순서화를 동적으로 검증하고, 상기 명령어 재순서화가 무효하다는 판정에 응답하여 상기 재순서화의 롤백을 개시하는 동작;
    트랜잭션 오류의 검출에 응답하여 상기 추론적 실행의 롤백을 개시하고, 그렇지 않은 경우에는 상기 추론적 실행을 커미트하는 동작
    을 포함하는, 비일시적인 컴퓨터-판독가능 저장 매체.
  18. 제17항에 있어서, 상기 트랜잭션 오류를 검출하는 것에 응답하여 상기 롤백을 개시한 후에, 상기 록 동작 하에서 상기 네이티브 코드의 상기 임계 섹션을 재실행하는 것을 더 포함하는, 비일시적인 컴퓨터-판독가능 저장 매체.
  19. 삭제
  20. 제17항에 있어서, 상기 록과 연관된 트랜잭션 오류들의 수를 모니터링하는 동작, 및 상기 트랜잭션 오류들의 수가 문턱 값을 초과할 경우, 상기 록 생략을 포함하지 않는 새로운 DBT를 수행하는 동작을 더 포함하는, 비일시적인 컴퓨터-판독가능 저장 매체.
  21. 제17항에 있어서, 상기 트랜잭션 오류는 상기 공개 코드의 영역의 상기 임계 섹션과 연관된 메모리에 대한 액세스 충돌에 의해 발생하는, 비일시적인 컴퓨터-판독가능 저장 매체.
  22. 제17항에 있어서, 상기 DBT는 실행 성능 측정들에 기초하여 상기 네이티브 코드를 동적으로 최적화하는 것을 포함하는, 비일시적인 컴퓨터-판독가능 저장 매체.
  23. 제17항에 있어서, 상기 DBT는 명령어를 상기 네이티브 코드 내로 삽입하는 것을 포함하고, 상기 명령어는 상기 생략된 록에 선행하는 메모리 동작의 효과들이 멀티프로세싱 시스템의 프로세서들에게 전체적으로 가시적으로 되게 하는, 비일시적인 컴퓨터-판독가능 저장 매체.
KR1020167023070A 2014-03-27 2015-03-10 2진 변환 기반 프로세서들에 의한 록 생략 KR101970390B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/227,014 US20150277914A1 (en) 2014-03-27 2014-03-27 Lock elision with binary translation based processors
US14/227,014 2014-03-27
PCT/US2015/019562 WO2015148099A1 (en) 2014-03-27 2015-03-10 Lock elision with binary translation based processors

Publications (2)

Publication Number Publication Date
KR20160113651A KR20160113651A (ko) 2016-09-30
KR101970390B1 true KR101970390B1 (ko) 2019-04-18

Family

ID=54190472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023070A KR101970390B1 (ko) 2014-03-27 2015-03-10 2진 변환 기반 프로세서들에 의한 록 생략

Country Status (6)

Country Link
US (1) US20150277914A1 (ko)
EP (1) EP3123307A4 (ko)
JP (1) JP2017509083A (ko)
KR (1) KR101970390B1 (ko)
CN (1) CN106030522B (ko)
WO (1) WO2015148099A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507938B2 (en) * 2014-12-23 2016-11-29 Mcafee, Inc. Real-time code and data protection via CPU transactional memory support
US20160283247A1 (en) * 2015-03-25 2016-09-29 Intel Corporation Apparatuses and methods to selectively execute a commit instruction
US10162616B2 (en) * 2015-06-26 2018-12-25 Intel Corporation System for binary translation version protection
CN106897123B (zh) * 2015-12-21 2021-07-16 阿里巴巴集团控股有限公司 数据库操作方法及装置
US10169106B2 (en) 2016-06-30 2019-01-01 International Business Machines Corporation Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity
US10073687B2 (en) * 2016-08-25 2018-09-11 American Megatrends, Inc. System and method for cross-building and maximizing performance of non-native applications using host resources
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities
TWI650648B (zh) 2018-02-09 2019-02-11 慧榮科技股份有限公司 系統晶片及存取系統晶片中記憶體的方法
DE102018122920A1 (de) * 2018-09-19 2020-03-19 Endress+Hauser Conducta Gmbh+Co. Kg Verfahren zur Installation eines Programms auf einem eingebetteten System, ein eingebettetes System für ein derartiges Verfahren sowie ein Verfahren zur Erstellung einer Zusatzinformation
CN111241010B (zh) * 2020-01-17 2022-08-02 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN117407003B (zh) * 2023-12-05 2024-03-19 飞腾信息技术有限公司 代码翻译处理方法、装置、处理器及计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070186215A1 (en) * 2001-10-19 2007-08-09 Ravi Rajwar Concurrent Execution of Critical Sections by Eliding Ownership of Locks

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7930694B2 (en) * 2004-09-08 2011-04-19 Oracle America, Inc. Method and apparatus for critical section prediction for intelligent lock elision
JP2009508187A (ja) * 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
US7844946B2 (en) * 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
US8190859B2 (en) * 2006-11-13 2012-05-29 Intel Corporation Critical section detection and prediction mechanism for hardware lock elision
CN101470627B (zh) * 2007-12-29 2011-06-08 北京天融信网络安全技术有限公司 一种mips平台下并行多核配置锁的实现方法
US8201169B2 (en) * 2009-06-15 2012-06-12 Vmware, Inc. Virtual machine fault tolerance
US8402227B2 (en) * 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US8479176B2 (en) * 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
WO2013115818A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for transactional speculation control instructions
US20140059333A1 (en) * 2012-02-02 2014-02-27 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
US9223550B1 (en) * 2013-10-17 2015-12-29 Google Inc. Portable handling of primitives for concurrent execution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070186215A1 (en) * 2001-10-19 2007-08-09 Ravi Rajwar Concurrent Execution of Critical Sections by Eliding Ownership of Locks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Hong, Ding-Yong, et al. "Efficient and retargetable dynamic binary translation on multicores." IEEE Transactions on Parallel and Distributed Systems 25.3, 2014.3*

Also Published As

Publication number Publication date
CN106030522B (zh) 2019-07-23
CN106030522A (zh) 2016-10-12
EP3123307A4 (en) 2017-10-04
WO2015148099A1 (en) 2015-10-01
KR20160113651A (ko) 2016-09-30
JP2017509083A (ja) 2017-03-30
EP3123307A1 (en) 2017-02-01
US20150277914A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
KR101970390B1 (ko) 2진 변환 기반 프로세서들에 의한 록 생략
US8533699B2 (en) System and method for optimizing a code section by forcing a code section to be executed atomically
US8417897B2 (en) System and method for providing locale-based optimizations in a transactional memory
JP6304845B2 (ja) 装置、方法、システム、プログラム、およびコンピュータ可読記憶媒体
US9146844B2 (en) Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US8365016B2 (en) Performing mode switching in an unbounded transactional memory (UTM) system
US8539465B2 (en) Accelerating unbounded memory transactions using nested cache resident transactions
US7890725B2 (en) Bufferless transactional memory with runahead execution
US20110209155A1 (en) Speculative thread execution with hardware transactional memory
Duan et al. WeeFence: Toward making fences free in TSO
CN109690476A (zh) 处理针对向量指令的元素间地址危害
KR20210028653A (ko) 트랜잭션 비교-및-폐기 명령
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
US10346196B2 (en) Techniques for enhancing progress for hardware transactional memory
US20130103930A1 (en) Data processing device and method, and processor unit of same
US9535608B1 (en) Memory access request for a memory protocol
US9251074B2 (en) Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data
US11789869B2 (en) Contention tracking for latency reduction of exclusive operations
US11809319B2 (en) Contention tracking for processor cache management

Legal Events

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