KR20140111998A - 공동 설계 프로세서에서 격리된 실행 환경의 생성 - Google Patents

공동 설계 프로세서에서 격리된 실행 환경의 생성 Download PDF

Info

Publication number
KR20140111998A
KR20140111998A KR1020140029253A KR20140029253A KR20140111998A KR 20140111998 A KR20140111998 A KR 20140111998A KR 1020140029253 A KR1020140029253 A KR 1020140029253A KR 20140029253 A KR20140029253 A KR 20140029253A KR 20140111998 A KR20140111998 A KR 20140111998A
Authority
KR
South Korea
Prior art keywords
processor
code segment
binary
core
container
Prior art date
Application number
KR1020140029253A
Other languages
English (en)
Other versions
KR101673435B1 (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 KR20140111998A publication Critical patent/KR20140111998A/ko
Application granted granted Critical
Publication of KR101673435B1 publication Critical patent/KR101673435B1/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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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
    • 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
    • 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/45533Hypervisors; Virtual machine monitors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

일 실시예에서, 프로세서는 제1 코드 세그먼트의 바이너리 변환을 생성하고 변환 캐시에 바이너리 변환을 저장하기 위한 코드를 포함하는 바이너리 변환(BT) 컨테이너, BT 컨테이너를 관리하고 제1 코드 세그먼트를 식별하기 위한 호스트 엔티티 로직, 및 소프트웨어 스택으로부터 BT 컨테이너를 격리하기 위한 보호 로직을 포함한다. 이 방식으로, BT 컨테이너는 소프트웨어 스택에 대해 투명하도록 구성된다. 다른 실시예들은 기술되고 청구된다.

Description

공동 설계 프로세서에서 격리된 실행 환경의 생성{CREATING AN ISOLATED EXECUTION ENVIRONMENT IN A CO-DESIGNED PROCESSOR}
현대의 마이크로프로세서들은 대부분의 컴퓨터 시스템의 핵심이다. 일반적으로, 이 프로세서들은 명령들을 수신하고 이 명령들에 응답하여 동작을 수행함으로써 작동한다. 애플리케이션 프로그램 및 운영 체제(OS) 활동을 위하여, 명령들은 프로세서에서 수신될 수 있고 프로세서는 이어서 이 명령들을 하나 이상의 더 작은 동작으로 디코딩하는데, 이는 종종 마이크로 명령(uops)이라고 하며, 프로세서 하드웨어 상에서의 실행에 적합하다. 일부 프로세서들은 특정 명령 세트 아키텍처(ISA) 명령들을 직접 수행하는 하드웨어 기능이 부족하다. 명령들이 하드웨어 상에서 직접 실행될 수 있는 uops로 디코딩되는 것은 이런 이유이다. uops로 디코딩하는 것은 프로세서를 병렬로 그리고 비순차적으로 스케줄링하고 실행할 수 있게 하여, 성능을 개선하는데 도움을 준다. 그러나 많은 경우에 이 메커니즘은 불충분할 수 있다.
도 1은 본 발명의 일 실시예에 따른 시스템의 일부의 블록도이다.
도 2는 본 발명의 다른 실시예에 따른 공동 설계 프로세서의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 바이너리 변환을 수행하기 위한 방법의 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 변환된 코드로의 낮은 오버헤드 전송을 수행하기 위한 방법의 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 프로세서 및 메모리를 포함하는 공동 설계 환경의 블록도이다.
도 6은 본 발명의 일 실시예에 따른 시스템의 블록도이다.
다양한 실시예들에서, 공동 설계 프로세서 아키텍처 프레임워크는 펌웨어 계층(layer) 위의 소프트웨어 스택으로부터 숨겨진 바이너리 변환 소프트웨어를 유지하기 위해 제공된다. 이 소프트웨어 스택은 가상 머신 모니터(VMM), 운영 체제(OS) 및 프로세서의 하나 이상의 코어에서 실행하는 애플리케이션들을 포함한다. 이러한 방식으로, 실시예들은 펌웨어 위의 소프트웨어 스택의 임의의 계층에 대한 변형을 방지할 수 있다. 이와 같이, 이 스택은 동적 바이너리 최적화 및 명령 세트 아키텍처(ISA) 에뮬레이션 시스템의 혜택을 누릴 수 있다. 이 아키텍처 프레임워크는 VMM, OS 및 애플리케이션으로부터 BT 소프트웨어를 투명하게 실행하기 위해 제공되지만, 상이한 형태의 공동 설계 프로세서의 소프트웨어 구성요소를 실행하고 다른 형태의 사용을 가능하게 하기 위해서도 사용될 수 있다. 예를 들면 이 프레임워크는 숨겨진 환경(예컨대, VMM/OS 계층으로부터 숨겨진)에서 실행될 임의의 소프트웨어(예를 들면 바이러스 스캐닝 소프트웨어)를 실행하기 위해 사용될 수 있다. 이 숨겨진 환경은 VMM, OS 및 애플리케이션에 대해서 격리되고, 독립되고 보호된 실행 환경이다.
바이너리 변환을 통한 하드웨어/소프트웨어 공동 설계 프로세서는 숨겨진 바이너리 변환(BT) 소프트웨어를 통한 동적 바이너리 최적화 및 변환을 가능하게 한다. 이는 전력 효율적인 방식으로 향상된 성능을 제공할 수 있고 또한 바이너리 변환을 통한 새로운 ISA 확장을 가능하게 한다. 공동 설계 프로세서에서 표준 ISA는 소스 ISA라고 하며, 예를 들면, x86 ISA가 있다. OS와 애플리케이션 프로그램 모두를 포함하는 종래의 소프트웨어는 소스 ISA로 컴파일된다. 결과적으로, 공동 설계 프로세서의 하드웨어는 특별한 성능 및/또는 전력 효율 피처(feature)를 갖는 특정 하드웨어 구현을 위하여 설계되는 타겟 ISA를 구현한다. 타겟 ISA는 uops와 동일한 레벨에 있으며 uops의 세트와 동일할 수 있다.
공동 설계 프로세서에 속하는 에뮬레이션 소프트웨어는 애플리케이션/OS 소스 ISA 소프트웨어를 번역하거나 이들을 타겟 명령들의 최적화 시퀀스로 변환함으로써 이들의 실행을 지시한다. 이러한 변환은 성능 향상 및/또는 에너지 효율의 향상을 보장한다.
에뮬레이션 프로세서는 일반적으로 다음과 같이 진행된다. 코드(소스 ISA 명령들)를 처음 접할 때 그것에 대해서 번역이 사용된다. 그 다음, 자주 실행되는 코드 영역들(핫스팟들)이 동적 프로파일링 또는 몇몇의 다른 수단을 통해 발견됨에 따라, 그들은 타겟 ISA로 변환된다. 최적화는 종종 변환 프로세스의 일부로서 이루어진다; 매우 많이 사용되는 코드는 나중에 더욱 최적화될 수 있다. 코드의 변환된 영역들은 변환 캐시에 보관되어 재사용될 수 있다. 변환 캐시는 에뮬레이션 소프트웨어에 의해서 관리되며 모든 애플리케이션/OS 소프트웨어에서 숨겨진 메모리의 섹션에 보관된다. 애플리케이션/OS 소프트웨어는 종래의(가시적인) 메모리에 보관된다.
공동 설계 VM을 이용하는 이전의 프로세서 구현은 풀 에뮬레이션(full emulation)을 이용하며, 에뮬레이션 소프트웨어는 모든 애플리케이션/OS 소프트웨어를 에뮬레이트한다. 풀 에뮬레이션의 한 가지 단점은 모든 코드가 실행될 수 있기 전에 먼저 번역되고/되거나 변환되어야 한다는 것이며, 이는 소프트웨어의 영역을 처음 접할 때 성능이 낮아질 수 있다.
실시예들은 격리되고 숨겨진 가상 머신 실행 환경을 생성하기 위해서 하드웨어와 프로세서 펌웨어 기반 메커니즘 모두를 사용할 수 있으며, 이는 본 명세서에서 바이너리 변환(BT) 컨테이너로 지칭된다. 이 컨테이너는 부분 변환 또는 풀 ISA 에뮬레이션 모델을 구현하는 BT 소프트웨어를 실행하기 위해서 사용될 수 있다. 일 실시예에서, BT 컨테이너는 기본적으로 프로세서 펌웨어에 의해 직접 제어되는 가상 머신 환경의 특별(일부 실시예에서는 단순화) 버전이다. 다양한 실시예들에서, 컨테이너는 VMM, 운영 체제 및 애플리케이션들을 포함하는 소프트웨어 스택으로부터 숨겨지고 투명하도록 설계된다.
작동하는 동안, BT 컨테이너는 다수의 구성요소 및 메커니즘과 상호작용한다. 우선, 프로세서는 BT 컨테이너를 관리하는 호스트 엔티티를 포함한다. 다른 실시예들에서, 이 엔티티는 프로세서 하드웨어 확장과 펌웨어(예를 들면, 마이크로코드 계층 또는 프로세서 추상화 계층)의 조합에 의해서 구현될 수 있다. 본 명세서에서 설명되는 바와 같이, 호스트 엔티티는 BT 컨테이너 내부에서 실행되는 소프트웨어에 노출되는 ISA 및 BT 컨테이너의 진입 및 진출을 제어한다.
BT 컨테이너 환경은 BT 소프트웨어에 대한 프로세서 상태 및 BT 소프트웨어에 대한 데이터 및 코드를 보관하는 프라이빗 메모리 공간을 포함한다. BT 소프트웨어는 이 BT 컨테이너 내에서 실행되고 최적화 및 ISA 호환성 동작을 수행하기 위한 하나 이상의 바이너리 변환 알고리즘을 구현한다.
다양한 실시예들은 소프트웨어(VMM, OS 및 애플리케이션) 및 하드웨어 공격자로부터 BT 컨테이너 메모리를 보호하기 위해 사용되는 하드웨어 기반 메커니즘을 제공할 수 있다. 일 실시예에서 이 보호 메커니즘은 메모리 범위 레지스터 기반 보호, 메모리 암호화 하드웨어 등으로 구현될 수 있다. 다른 구현들에서, 제공되는 보호의 레벨은 사용되는 피처들 및 원하는 보안 목적에 기초할 수 있다.
BT 하드웨어 유닛은 공동 설계 프로세서를 위한 하드웨어 지원을 구현하기 위해서 제공된다. 일 실시예에서, 이 유닛은 BT 컨테이너를 호출하는 이벤트들을 감지하는 하드웨어 지원을 포함하며, 다른 것들 중에서도 프로세서 간 인터럽트(IPI) 이벤트, 전력 관리 이벤트, 신뢰도 이용 가능도 보수 가능도(RAS) 이벤트와 같은 다른 이벤트들 중에서 핫스팟 감지, 자기 수정 코드 감지를 포함한다. 보다 일반적으로, 이 이벤트들은 BT 소프트웨어로부터 즉각적인 주의를 수신할 수 있다. 예를 들면, 한 이벤트는 다수의 프로세서에서 실행되는 BT 소프트웨어 사이에 동기화하도록 정의된 프라이빗 IPI 메커니즘일 수 있다.
BT 컨테이너로의/로부터의 컨트롤 전송 컨테이너 내에서의 다양한 동작을 가능하게 하기 위해서, BT ISA 확장들이 제공될 수 있다. 일 실시예에서, 이 ISA 확장들은 BT 컨테이너 내에서 실행되는 BT 소프트웨어 전용으로 이용할 수 있다. 예시의 목적으로, 이 ISA 확장들은 BT 소프트웨어가 BT 하드웨어 유닛을 액세스하고 프로그래밍할 수 있게 하고, 컨테이너 정책들을 구성하고 바이너리 변환을 위한 오리지널 코드 메모리 공간을 액세스하기 위해서 호스트 엔티티와 통신한다.
일 실시예에서, 변환된 코드를 저장하기 위해 변환 캐시 메모리가 제공될 수 있다. 변환된 코드 실행으로의 전환은 일 실시예에서 BT 하드웨어 유닛에 의해 제공되는 변환 엔트리 메커니즘에 의해 통제된다. 프라이빗 프로세서 상태 및 프라이빗 메모리 공간을 포함하는 BT 컨테이너 환경은 다른 소프트웨어(VMM, 운영 체제 및 애플리케이션들)로부터 격리되고 숨겨질 수 있다.
BT 컨테이너 리소스들은 시스템 부팅 동안에 호스트 엔티티에 의해서 할당되고 생성될 수 있다. 하드웨어 보호 메커니즘이 호스트 엔티티에 의해서 프로그래밍 되고 관리될 수 있는 것은 이 시점이다.
OS 및 VMM으로부터 투명하게 되기 위해서, BT 컨테이너의 BT 소프트웨어의 호출 및 종료는 호스트 엔티티에 의해 직접 제어된다. 일 실시예에서, 호출 및 종료 동작들은 하드웨어와 마이크로코드의 조합으로 구현된다. 다른 실시예에서, 프로세서 펌웨어는 이 동작들을 수행하기 위해서 사용될 수 있다.
하나의 제어 전송 동작으로서, BT 하드웨어 유닛이 핫스팟과 같은 BT 호출 이벤트를 감지하면, 프로세서는 게스트 소프트웨어 스택의 실행을 중지하고 호스트 엔티티에 이벤트를 통지한다. 그 다음, 호스트 엔티티는 (BT 컨테이너 내의 BT 상태 저장소에 저장될 수 있는) 프로세서 컨텍스트의 현재 상태를 임시 상태 저장 영역에 저장하고, BT 컨테이너 컨텍스트로 스위칭 하고, 정의된 엔트리 명령 포인터(IP)로부터 BT 소프트웨어의 실행을 개시한다. 일단 BT 소프트웨어가 제어를 획득하면, BT 소프트웨어는 (BT 컨테이너에 노출된 BT ISA 확장일 수 있는) 특별 종료 명령으로 자발적 종료가 발생하거나, 외부 인터럽트, 내부 타이머 인터럽트와 같은 특정 하드웨어 이벤트에 따라 호스트 엔티티에 의해서 비자발적 종료가 집행될 때까지 실행된다. 이러한 내부 타이머 인터럽트는 기본적으로 타임 아웃 이벤트이며, 이는 VMM 및 OS로부터 숨겨져 있고, BT 소프트웨어가 레이턴시(latency)가 긴 동작을 타임-슬라이스(time-slice)할 수 있게 한다.
투명성은 소프트웨어 스택에 의해서 포워드 진행 요구사항을 충족하기 위해서 이 스택에 노출된 BT 소프트웨어 레이턴시를 잘 제어하고 관리함으로써 달성될 수 있다. 예를 들면, BT 소프트웨어가 식별된 핫스팟에 대한 변환 작업을 완료하기 위해 1 밀리세컨드(ms) 이상이 소요되는 경우, 호스트 엔티티는 소프트웨어에 노출된 레이턴시를 완화하고 제어하기 위해 BT 소프트웨어를 위한 메커니즘을 제공할 수 있다. 일 실시예에서, 이 메커니즘은: 1) 외부 인터럽트 시에 OS 인터럽트 핸들러에 노출된 레이턴시를 최소화하기 위한 BT 소프트웨어(비자발적 종료)의 선점; 2) BT 소프트웨어에 대한 타임 퀀텀 관리(타임 슬라이스 스케줄링)가 기초 프로그램 실행의 최소 포워드 진행 요구사항을 충족시키게 하는 하나 이상의 내부 타이머의 사용; 및 3) BT 소프트웨어 레이턴시를 숨기기 위해 장시간의 BT 작업을 하나 이상의 유휴(idle) 코어로 스케줄링하는 것을 포함한다. 이 메커니즘은 호스트 엔티티에 의해서 사전 구성되거나 BT 소프트웨어에 노출된 BT ISA 확장을 통해서 동적으로 구성될 수 있다.
BT 소프트웨어를 실행시키기 위한 격리된 컨테이너를 갖는 것은 또한 호스트 엔티티가 BT 컨테이너에 노출된 ISA 피처들뿐만 아니라 BT 컨테이너 내부에서 실행하는 BT 소프트웨어에 주어진 프로세서 리소스 액세스 권한 및 메모리와 같은 특권들을 제어할 수 있게 한다. 예를 들면, ISA 피처들의 서브세트(예를 들면, 부동 소수점이 없는 ISA 명령들)가 주어진 바이너리 변환 작업을 수행하기에 충분하다면, 호스트 엔티티는 BT 소프트웨어에 노출된 ISA 피처들을 제한하고 제어할 수 있다. 이러한 제어는 컨테이너 환경의 단순화 및 네이티브와 BT 컨테이너 실행 사이의 컨텍스트 스위치 타임의 감소에 기여할 수 있다.
하이퍼바이저 또는 VMM을 실행하기 위해 제공되는 수퍼바이저 모드와는 달리, BT 컨테이너에는 동작하기에 적절한 최소 특권들 및 우선권이 주어지고, 따라서, ISA 피처들의 일부가 BT 소프트웨어를 통해 구현되더라도, 운영 체제에 대한 레이턴시 노출들과 같은 보안 위험과 시스템 영향을 상당히 감소시킨다. 일 실시예에서, 호스트 엔티티는 BT 실행에 소비되는 시간 및 시스템 ISA 피처들과 같은 BT 소프트웨어의 ISA 피처들과 특권들을 제한 및 제어할 수 있고, BT 컨테이너를 합법적인 목적을 위해 동작시키는데 필요한 시간 양, 명령어들, 자원들, 정보에만 액세스하도록 제한할 수 있다.
예를 들면, BT 소프트웨어는, 노출이 바이너리 변환 태스크를 수행하기에 충분한 경우 사용자 레벨(예컨대, 링 3) ISA 액세스로만 노출될 수 있다. 그러한 액세스 노출은, 부분 변환 모델에서 수행될 에뮬레이션이 사용자-레벨 애플리케이션들을 목적들로 하는 경우에 적절할 수 있다. 또한, BT 컨테이너 메모리의 외부에 대한 메모리 참조들은 애플리케이션 소프트웨어의 명령어 페이지들에만 제한될 수 있다. 또한, BT 소프트웨어가 바이너리 변환 태스크를 수행하는데 판독 허가가 충분한 경우, 판독 허가만이 BT 소프트웨어에 주어진다. BT 소프트웨어에 의한 게스트 프로세서 상태 액세스는, 바이너리 변환 태스크를 위해 충분한 게스트 프로세서 상태들의 서브세트로 제한될 수 있다. 다른 방식으로 기술하면, BT 소프트웨어에 의해 사용되지 않는 프로세서 자원들에 대한 액세스가 존재하지 않도록, 변환에 요구되는 게스트 상태만이 BT 소프트웨어에 대해 이용가능하다. 일 실시예에서, 바이너리 변환이 애플리케이션(즉 사용자) 소프트웨어 코드만을 위해 수행되는 경우, 호스트 엔티티는 BT 소프트웨어가 게스트 커널(예컨대, 링 0) 메모리에 액세스하는 것을 방지할 수도 있다. 이러한 제어는 BT 소프트웨어가 동작하기에 충분한 최소의 가능한 특권들 및 피처들로 실행될 수 있게 하고, 이는 강건성을 증가시키고, 시스템 영향, 변경, 테스팅 요건들의 더 간단한 범위를 갖는 HW/SW 공동 설계 프로세서의 보안 위험을 감소시키고, 더 나은 시스템 보안을 가능하게 할 수 있다.
본원 발명의 실시예를 이용하여, 부분 변환 모델이 프로세서의 하나 이상의 코어들 상에서 실현될 수 있다. 이러한 방식으로, ISA가 와트당 더 높은 성능을 제공하고 다양한 BT의 용도를 가능하게 하도록 가상화될 수 있다. 이러한 하나의 예는, 비-벡터 폭 또는 레서(lesser) 벡터 폭 하드웨어를 위해 기록된 코드를 갖는 벡터 코어에서 벡터 와이드 연산들을 수행하기 위한 BT 메커니즘을 이용하는 것이다. 이러한 방식으로, 오리지널 소프트웨어가 더 좁은(narrower) 이전 세대의 벡터 레지스터들 또는 비-벡터 레지스터들에서 사용하기 위해 기록되었더라도, BT 메커니즘은 더 넓은 벡터 레지스터들을 이용하도록 소프트웨어를 변환할 수 있다. 특정 예에서, 인텔® ISA의 SSE(streaming SIMD extensions) 명령어들을 이용하는 소프트웨어는 인텔® ISA AVX(advanced vector extension) 명령어들을 대신 이용하도록 변환된다. 또한, ISA 호환성은, 피처를 수행하기 위한 추가적인 전용 하드웨어를 포함하는 것이 아니라, 본원에 기술된 BT 메커니즘들을 통해 ISA 피처 확장들을 제공함으로써, 더 작은 코어 사이즈로 실현될 수 있다. 예를 들면, 더 작은 코어는 AVX 지원을 갖지 않을 수 있고 SSE 지원만을 가질 수 있다. BT는 AVX 명령어들을 사용하는 소프트웨어를 변환하여 SSE 명령어들을 대신 사용할 수 있다. 이는 ISA 호환성을 제공하고, 더 작은 코어의 ISA 갭을 채운다.
이러한 HW 및 SW 공동 설계 프레임워크는 본원에 기술된 바와 같이 BT를 위해 사용될 수 있지만, 기존의 OS/VMM에 대한 변경 없이 다른 사용 모델들이 성능, 전력 관리 및 ISA 확장들/에뮬레이션들과 같은 값들과 프로세서 피처들을 증가시키는 것을 가능하게 하도록 사용될 수 있다.
일부 실시예들에서, 시스템 관리 모드(SMM)와 같은 플랫폼 펌웨어 컴포넌트들은, 서버 RAS(reliability/availability/serviceability) 피처들과 공존하도록 BT 소프트웨어 및 BT 컨테이너의 신뢰성 있는 경계 내부에 위치할 수 있다는 것에 유의해야 한다. 그러나, 다른 실시예들에서, 그러한 컴포넌트들은 HW 기반 메모리 암호화 및 무결성 체크와 같은 소정의 HW 확장들에 대한 신뢰성 있는 경계 외부에 위치하여, HW 및 SW 공동 설계 프로세서의 소프트웨어 컴포넌트들에 대한 HW 공격들과 SMM 코드에 대한 탄력성을 증가시킬 수 있다.
다시 도 1을 참조하면, 본원 발명의 실시예에 따른 시스템의 일부분의 블록도가 도시되어 있다. 도 1에 도시된 바와 같이, 시스템(100)의 일부분은 공동-설계 프로세서(110) 및 소프트웨어 스택(190)과 프로세서의 상호작용을 포함한다. 많은 상이한 타입들의 프로세서 설계가 공동-설계 프로세서에 대한 베이스라인으로서 사용될 수 있지만, 일 실시예에서 프로세서(110)는 복수의 프로세서 코어들을 포함하는 멀티 코어 프로세서일 수 있으며, 복수의 프로세서 코어들은 하나 이상의 저전력 코어들 및 하나 이상의 고전력 코어들과 같은 비동종 코어들의 집합이나 동종 코어들의 세트일 수 있다. 또한, 그래픽 프로세서들 및 다른 특수 프로세싱 유닛들과 같은 추가적인 프로세싱 유닛들이 존재할 수도 있다는 것이 이해되어야 한다. 일 실시예에서, 프로세서(110)는 인텔® 64 ISA와 같은 특정 타입의 ISA를 위해 구성될 수 있다. 물론, 다른 인텔 ISA, 예컨대 인텔® 32 ISA와 같은 다른 프로세서 ISA 들 또는 ARM 기반 ISA와 같은 다른 타입의 ISA가 대신 존재할 수 있다. 즉, 프로세서는 다수의 ISA들로 구성될 수 있다.
도 1에 도시된 실시예에서, 다양한 코어들 및 다른 실행 로직이 일반적으로 프로세서 하드웨어(120)에 존재할 수 있다. 본원 발명의 실시예에 따라 바이너리 변환을 실행하기 위한 목적으로, 하드웨어(120)는 호스트 엔티티 로직(122), 보호 로직(124), 및 BT 하드웨어 유닛(126)을 포함한다. 다양한 실시예들에서, 이러한 상이한 로직 유닛들은, 프로그램가능한 로직 상에서 실행하도록 구성된 프로세서 마이크로코드와 같은 프로세서 펌웨어 확장들 및/또는 하드웨어의 집합들로서 형성될 수 있다.
일반적으로, 호스트 엔티티 로직(122)은 소프트웨어 스택(190)에 투명한 방식으로 BT 컨테이너를 관리하기 위한 제어 로직을 포함할 수 있다. 보호 로직(124)은 차례로, 범위 값 예컨대 제1 값 및 제2 값을 저장하는 범위 레지스터와 같은 레지스터 기반 보호 메커니즘을 포함하여 BT 컨테이너와 그 안의 소프트웨어에 전용인 메모리의 범위를 나타낼 수 있으며, 이는 따라서 소프트웨어 스택으로부터 숨겨진 채 제어된다. 다른 실시예들에서, 다수의 레지스터들이, BT 컨테이너에 대한 보호 영역의 시작에 대응하는 기본 값과 보호 영역의 종료를 나타내는 종료 값을 저장하기 위한 베이스 레지스터를 포함하여, 이러한 보호 로직 내에 존재할 수 있다. 일 실시예에서, BT 하드웨어 유닛(126)은, BT 컨테이너(130) 내에서 바이너리 변환 실행과 네이티브 코드 실행 사이에 제어 전달을 가능하게 하는 스티어링 로직(steering logic)을 포함할 수 있다. 그러한 실시예에서, 스티어링 로직은, 네이티브 코드 세그먼트 및 대응하는 바이너리 변환을 연관시키기 위한 복수의 엔티티들 각자를 포함하는 하나 이상의 맵핑 테이블들을 포함하거나 하나 이상의 맵핑 테이블들과 연관될 수 있다. 예를 들면, 각 엔트리는, 예컨대, 변환 캐시(140) 내에 저장된 바이너리 변환에 대한 대응하는 엔트리 포인트와 네이티브 코드 세그먼트에 대한 엔트리 포인트를 포함할 수 있다.
또한 도 1에 도시된 바와 같이, 프로세서 하드웨어(120)는 BT 컨테이너(130)와 인터페이싱한다. 이 컨테이너는 고립되고 숨겨진 가상 머신 실행 환경이며 따라서 이 환경은 소프트웨어 스택(190)에 대해 투명하다. 이러한 숨겨진 환경은, 소프트웨어 스택(190)에 투명한 방식으로 프로세서 펌웨어 및/또는 마이크로코드를 사용하여 하드웨어(120)에 의해 제어될 수 있다. 도시된 실시예에서, 컨테이너(130)는 상태 저장소(132)와 프라이빗 메모리(134)를 포함한다. 일반적으로, 상태 저장소(132)는 BT 동작들 동안 사용하기 위한 프로세서 상태를 저장할 수 있다. 더 구체적으로, 이 상태 저장소는, 상태 및 구성 레지스터들, 범용 레지스터들 등을 포함하여, 모든 프로세서 상태 정보의 사본을 저장할 수 있다. 일부 실시예들에서, 이 상태 저장소는 멀티-스레드될 수 있다. 또한, BT 컨테이너(130)는, BT 소프트웨어가 저장될 수 있는 프라이빗 메모리(134)를 포함한다. 일부 실시예들에서, 이러한 프라이빗 메모리는, 시스템 메모리 내의 저장소 및 프로세서의 하나 이상의 레벨들의 캐시 메모리 내의 임시 저장소를 포함하는 멀티 레벨 계층일 수 있다.
일반적으로, BT 소프트웨어는 다양한 컴포넌트들을 포함할 수 있으며, 컴포넌트들 중 몇 개가 도 1에 도시되어 있다. 특히, BT 소프트웨어는 바이너리 변환들을 수행하는데 사용되는 변환기(135)를 포함하여 다양한 ISA 확장들의 에뮬레이션 및/또는 최적화를 가능하게 할 수 있다. 또한, 런타임 계층(136)은 변환된 코드를 실행하기 위한 런타임 동안 사용된다. 또한, 시스템 계층(138)은, BT 컨테이너(130) 및 그 아래의 프로세서 하드웨어(120) 사이의 인터페이스로서 동작하도록 구성될 수 있다.
BT 소프트웨어에 의해 생성되는 바이너리 변환들은 변환 캐시(140) 내에 저장된다. 다양한 실시예들에서, BT 하드웨어 유닛(126) 및/또는 BT 소프트웨어는, 실행될 네이티브 코드에 대한 대응 바이너리 변환의 존재를 식별하고, 따라서 BT 컨테이너(130) 내의 상태 저장소(132)로부터 획득된 프로세서 상태를 사용하여 바이너리 변환의 실행을 위해 프로세서가 적절하게 구성될 수 있도록 구성될 수 있다.
또한 도 1을 참조하면, 소프트웨어 스택(190)이 존재하고 프로세서(110)에서 실행된다. 일반적으로, 소프트웨어 스택(190)은 VMM 계층(192), OS 계층(194) 및 애플리케이션 계층(195)을 포함한다. 도 1에 도시된 예에서, 복수의 애플리케이션들(196a-196n)은 애플리케이션 계층(195) 내에 존재할 수 있다. 일반적으로, 이러한 애플리케이션들은, 사용자가 요청한 작업들을 수행하는데 사용되는 사용자-레벨 애플리케이션들일 수 있다.
일반적으로, 소프트웨어 스택(190)의 다양한 소프트웨어는 프로세서(120) 상에서 고유하게 실행될 수 있다. 그러나, 핫 코드와 같은 코드의 적어도 소정 부분 또는 프로세서(110)의 네이티브 ISA에 의해 지원되지 않는 명령어들을 포함하는 코드와 같은 다른 코드는 바이너리 변환으로부터 도움을 받을 수 있다. 그러한 코드는, 예컨대 호스트 엔티티 로직(122)을 통해 검출될 수 있으며, 이는 차례로 BT 컨테이너(130)를 트리거하여 바이너리 변환을 수행하고 변환 캐시(140) 내에 동일한 것을 설치할 수 있다. 이와 같이, 변환되었던 네이티브 코드 부분에 대한 엔트리 포인트를 접할 때, 프로세서 하드웨어(120)의 적어도 일부분(예컨대, 싱글 코어, 코어의 실행 또는 기타)은, 상태 저장소(132)에 존재하는 프로세서 상태를 사용하여 변환 캐시(140) 내의 변환된 코드의 실행을 가능하게 하도록 구성될 수 있다. 도 1의 실시예에서 하이 레벨에 도시되었지만, 본원 발명의 범위는 그러한 것에 제한되지 않는다는 것을 이해해야 한다.
이제 도 2를 참조하면, 본원 발명의 다른 실시예에 따라 공동-설계 프로세서의 블록도가 도시된다. 도 2에 도시된 바와 같이, 프로세서(200)는 멀티 코어 프로세서이다. 더 구체적으로, 프로세서(200)는, 상이한 타입들의 프로세싱 유닛들을 포함하는 비대칭 멀티프로세서일 수 있다. 도 2에 도시된 실시예에서, 프로세서(200)는, 제1 복수의 코어들(2100-210n, 일반적으로 코어들(210))을 포함하며, 이는 라지 코어들(large cores)로서 구성될 수 있다. "라지 코어들"에 대해서는, 이러한 코어들은 주어진 ISA를 완전히 지원하도록 구성될 수 있다는 것을 의미한다. 예를 들면, 이 코어들은 AVX(advanced vector extensions) 명령어들에 대한 것과 같은 벡터 지원을 포함하는 주어진 인텔® ISA를 지원할 수 있다. 따라서, 라지 코어들 내의 하나 이상의 실행 유닛들의 데이터 경로는, 주어진 벡터 폭 예컨대, 128 비트, 256 비트, 512 비트 또는 다른 벡터 폭일 수 있다. 비교적 넓은 벡터 데이터 경로를 고려하면, 라지 코어들이 실행 동안에, 적어도 벡터 명령어들의 실행 동안에 비교적 높은 양의 전력을 소모할 수 있다.
많은 애플리케이션들이 그러한 벡터 명령어들의 장점을 이용할 수 있지만, 다른 타입들의 애플리케이션들은 이 명령어들을 활용하지 않을 수 있고 따라서 라지 코어들(210)의 더 큰 전력 소비로부터 도움을 받지 못할 수 있다. 이를 위해, 프로세서(200)는 복수의 스몰 코어들(small cores)(2120-212n; 일반적으로 코어들(212))을 더 포함한다. "스몰 코어들"이라는 용어는, 이러한 코어들은 라지 코어들과는 비동종의 설계일 수 있으며, 더 적은 전력 소모를 가질 수 있다. 예를 들면, 이 스몰 코어들은 상이한 ISA 또는 라지 코어들의 ISA의 부분 집합만을 지원할 수 있다. 예를 들면, 스몰 코어들(212)은 AVX 명령어들과 같은 벡터 명령어들에 대한 지원을 제공하지 않을 수 있다. 이러한 방식으로, 스몰 코어들의 하나 이상의 실행 유닛들의 데이터 경로는, 라지 코어들(210)의 실행 유닛들의 데이터 경로보다 더 작은 폭일 수 있다.
각종 타입의 코어들 외에도, 추가적인 프로세싱 유닛들이 프로세서(200) 내에 존재할 수 있다. 도 2에 도시된 실시예에서, 복수의 그래픽 엔진들(2140-214n)이 제공될 수 있다. 이들 그래픽들 엔진들은 그래픽 프로세싱을 수행하는 데 사용될 수 있는 GPU(graphics processing units)일 수 있다. 그러나 추가의/다른 프로세싱이 이들 그래픽 엔진에서 또한 수행될 수 있다고 이해된다. 예를 들어, GPGPU(general purpose graphics processing unit) 모델에서 범용 명령어가 수행될 수 있다. 또 다른 프로세싱 유닛이 프로세서(200) 내에 존재할 수 있다(도 2에서는 설명의 용이를 위해 생략).
도 2를 계속 참조하면, 각종 코어들 및 다른 프로세싱 유닛들이 공유된 캐시 메모리(215)에 결합되는데, 이는 실시예에서 LLC(last level cache)일 수 있다. 몇몇 실시예에서, 이 캐시 메모리는 각각의 코어들/그래픽 엔진들과 연관된 하나 이상의 뱅크들을 갖는 분산 캐시 메모리일 수 있다.
동적 바이너리 동작에 영향을 주기 위해, 프로세서(200)는 바이너리 변환을 제어 및 수행하기 위한 각종 하드웨어를 더 포함할 수 있다. 도 2에 도시된 실시예에서, 프로세서(200)는 바이너리 변환 컨테이너(225)에 결합된 바이너리 변환 제어 로직(220)을 포함한다. 그 다음, 바이너리 변환 컨테이너(225)는 변환 캐시(228)에 결합된다.
일반적으로, BT 제어 로직(220)은 BT 컨테이너(225) 내에서 실행하는 BT 소프트웨어로의 호출(invocation) 및 그로부터의 종료(exit)를 직접 제어하도록 구성될 수 있다. 예를 들어, BT 제어 로직(220)은 예를 들어, 최적화 또는 다른 에뮬레이션 피처들에 도움이 되기 위해 바이너리 변환이 적합한 코드 세그먼트들을 식별하도록 구성될 수 있다. 따라서 BT 제어 로직(220)은 BT 컨테이너(225) 내의 BT 소프트웨어에게, 주어진 코드 세그먼트에 대한 바이너리 변환을 생성하고, BT 소프트웨어가 변환 캐시(228) 내에 도출된 바이너리 변환을 저장하도록 명령할 수 있다. 또한, BT 제어 로직(220)은 바이너리 변환이 이용가능한 코드 세그먼트로의 엔트리 포인트를 접했을(encountered) 경우 바이너리 변환으로 컨트롤 전환이 가능하도록 스티어링 로직(또는 기타 프로세서 로직)을 프로그래밍할 수 있다. 실시예에서, 이 프로그래밍은 네이티브 코드 세그먼트들 및 인스트루먼트 코드 세그먼트들(instrumented code segments)을 연관시키는 맵핑 테이블에 엔트리를 기록하는 것을 포함할 수 있다.
동적 바이너리 변환은 코드 최적와 및 ISA 에뮬레이션과 같은 각종 시추에이션에 수행될 수 있다. 하나의 특정 시츄에이션은 코어가 지원하지 않는 하나 이상의 명령어를 갖는 코드를 실행하기 위한 것이다. 예를 들면, 일 실시예에서 상술한 바와 같이, 스몰 코어(212)들이 벡터 명령어에 대한 지원을 제공하지 않을 수 있다. 그러나, 제한된 개수의 벡터 명령어가 코드 세그먼트에서 나타날 경우에는 라지 코어에 비하여 스몰 코어의 전력 소모 장점을 감안하여, 이 코드 세그먼트를 스몰 코어에서 실행하도록 하는 것이 바람직할 수 있다. 따라서 BT 제어 로직(220)은 그 BT 소프트웨어로 하여금 예를 들면, 적은 개수의 벡터 명령어를 갖는 코드 세그먼트의 바이너리 변환을 생성하게 하여 주어진 스몰 코어(212)에서 실행을 위한 이들 벡터 명령어의 에뮬레이션을 가능하게 할 수 있다.
도 2를 또 다시 참조하면, 프로세서(200)는 PCU(power control unit)(232)을 통해 프로세서에 대한 전력 제어와 같은 포괄적인 관리 기능들을 제공할 수 있는 시스템 에이전트 회로(230)를 포함하는 추가의 회로들을 더 포함할 수 있다. 또한, 집적 메모리 컨트롤러(234)는 DRAM(dynamic random access memory)과 같은 시스템 메모리에 인터페이스를 제공한다. 시스템 에이전트(230)는 또한 하나 이상의 인터페이스(236)를 포함하여 멀티프로세서 시스템의 다른 프로세서들, 주변기기 컨트롤러 및 기타 시스템 컴포넌트들과 같은 시스템의 다른 에이전트에 인터페이싱하게 할 수 있다. 도 2의 실시예에서 하이 레벨로 도시되었지만, 본 발명의 범위는 이에 제한되는 것은 아님을 이해해야 한다.
도 3을 참조하면, 본 발명의 실시예에 따른 방법의 흐름도가 도시된다. 일반적으로 도 3의 방법(300)은 프로세서의 각종 로직의 조합에 의해 수행되어 변환된 코드를 생성하고 바이너리 변환된 코드가 생성된 대응 네이티브 코드에 대한 실행 중에 콜(call)이 만들어진 경우 이 변환된 코드로 컨트롤 전환을 가능하게 하도록 프로세서를 구성할 수 있다.
도 3에서는, 하나 이상의 크리티컬(critical) 코드 세그먼트를 식별하기 위해 코드 실행을 프로파일링 함으로써 방법(300)이 시작된다(블록 310). 본원에 설명된 예시에서, 핫 스팟 코드, 자기 수정 코드, 에뮬레이팅 될 코드(예를 들면, 실행될 수 있는 곳인 주어진 코어에 의해 지원되지 않는 ISA 명령어의 경우) 등을 식별하기 위해 이 코드의 프로파일링이 수행될 수 있다.
도 3을 계속 참조하면, 실행을 진행하여 프로파일링이 수행된 후에, 식별된 코드 세그먼트(예를 들면, 핫 스팟 코드, 자기 수정 모드, 또는 에뮬레이팅 될 코드들)에 관한 정보는 바이너리 변환 에이전트(블록 320)에 제공될 수 있다. 예를 들어, 이 바이너리 변환 에이전트는 본원에 설명된 바이너리 변환 엔진일 수 있다. 컨트롤은 그 다음에 코드 세그먼트로부터 인스트루먼트 코드 세그먼트가 생성되어 인스트루먼테이션 캐시(instrumentation cache)에 저장될 수 있는 블록(330)으로 넘어간다. 예시로서, 이 인스트루먼트 코드의 생성은 주어진 코어 또는 프로세서의 다른 프로세싱 유닛에 의해 지원되지 않는 하나 이상의 명령어를 에뮬레이팅하기 위한 하나 이상의 에뮬레이션 루틴을 포함할 수 있다. 이 방식으로, 인스트루먼트 코드는 에뮬레이팅된 코드가 더욱 저비용으로(예를 들면, 더 낮은 파워 소모 코어 상에서 등) 실행되는 것을 가능케 하는 에뮬레이선 기능을 제공한다. 일 실시예에서, 변환 생성 중에 애플리케이션 코드 및 OS의 포워드 프로그래스 예상를 보장하기 위해 타임 체크가 만들어질 수 있다. 이러한 이벤트가 발생하면, 컨트롤은 네이티브 코드 실행으로 되돌아간다. 다음으로 핫스팟 이벤트는 프로세서를 변환 생성 태스크로 되돌린다.
도 3을 계속 참조하면, 컨트롤은 다음에 프로세서의 스티어링 로직이 이 인스트루먼트 코드 세그먼트를 가리키도록 프로그래밍될 수 있는 블록(340)으로 패스한다. 즉, BT 하드웨어 유닛과 같은 것의 스티어링 로직은 네이티브 코드 세그먼트(즉 식별된 크리티컬 코드 세그먼트)와 네이티브 코드 세그먼트를 위하여 실행될 인스트루먼트 코드 세그먼트 사이의 관련성(correspondence)을 식별하기 위해 엔트리로 업데이트될 하나 이상의 맵핑 테이블을 포함할 수 있다. 이 프로그래밍은 따라서 로직으로 하여금 지금 변환되는 네이티브 코드로에 대한 엔트리 포인트를 접했을 때 네이티브 코드로부터 인스트루먼트 코드로 실행의 스티어링 또는 전환을 수행하도록 할 수 있다. 도 3의 실시예에서는 하이 레벨로 도시되었지만, 본 발명의 범위는 이에 제한되는 것은 아님이 이해된다.
이제 도 4를 참조하면, 본 발명의 실시예에 따라 변환된 코드에의 낮은 오버헤드 전환을 수행하기 위한 방법의 흐름도가 도시된다. 도 4의 방법(400)은 BT 제어 로직 및 기타 프로세서 로직을 비롯한 프로세서의 각종 로직에 의해 실행될 수 있다. 보이듯이, 방법(400)은 제1 코드 세그먼트로의 엔트리 포인트를 접했는지를 판정함으로써 마름모꼴(410)에서 시작할 수 있다. 실시예에서 이 엔트리 포인트는 바이너리 전환이 영향을 받은 코드 세그먼트의 제1 명령어에 대한 콜일 수 있다. 이러한 콜이 수신되지 않았다면, 통상의 코드 실행은 블록(420)에서 진행할 수 있다. 아니면 이러한 코드에 대한 콜이 수신될 경우, 컨트롤은 스티어링 로직이 컨트롤을 인스트루먼트 코드 세그먼트로 전환할 수 있게 하는 블록(430)으로 패스한다. 일 실시예에서, 이 컨트롤 전환의 가능은 네이티브 코드 세그먼트 엔트리 포인트를 변환된 코드 세그먼트 엔트리 포인트와 연관시키는 맵핑 테이블에의 액세스에 의해 영향을 받을 수 있다.
바이너리 변환의 실행을 가능하게 하기 위해, 컨트롤은 프로세서에 저장된 네이티브 컨텍스트와 바이너리 변환 컨텍스트 사이에서 스와프가 일어나는 블록(440)으로 패스한다. 실시예에서, 스와프는 프로세서의 상태를 프로세서 상태 저장소에 저장하는 것과 BT 컨테이너 내의 BT 상태 저장소로부터 구성 및 상태 레지스터, 범용 레지스터 등을 비롯한 프로세서의 각종 레지스터들로 BT 프로세서 상태를 로드하는 것(loading)을 포함할 수 있다. 컨트롤은 다음으로 지원되지 않는 피처를 에뮬레이트하도록 인스트루먼트 코드 세그먼트가 실행될 수 있는 블록(450)에 패스한다.
마름모꼴(460)에서 결정된 대로, 예외 또는 외부 인터럽트가 실행 중에 일어날 수 있다는 것이 가능하다. 이러한 이벤트가 일어나지 않으면, 인스트루먼트 코드 세그먼트는 실행을 완료할 수 있다(블록 480에서). 따라서, 블록(420)에서는, 계속되는 네이티브 코드의 실행이 일어날 수 있다.
반면 이러한 이벤트가 일어나면, 컨트롤은 블록(470)으로 패스한다. 블록(470)에서 네이티브 상태로 하여금 프로세서로 재로딩되게 하도록 다른 컨텍스트 스위치가 일어날 수 있다. 그러면 컨트롤은 네이티브 코드가 인터럽트 또는 예외를 핸들링하도록 실행할 수 있는 블록(480)으로 패스한다. 그 후 바이너리 변환에 대해 추가의 작업이 완료될 예정이라면, 컨트롤은 바이너리 변환의 실행을 계속하기 위해 위에서 논의된 블록(430)으로 다시 패스한다. 도 4의 실시예에서는 하이 레벨로 도시되었지만, 본 발명의 범위는 이에 제한되는 것은 아님이 이해된다.
본 발명의 실시예에 따라 공동-설계된 가상 머신으로서 구현되는 프로세서의 컴포넌트들을 도시하기 위해, 참조부호가 도 5에 만들어진다. 도 5에 도시된 바와 같이, 공동-설계 환경(600)이 프로세서(605) 및 일 실시예에서 DRAM(dynamic random access memory)와 같은 시스템 메모리일 수 있는 메모리(620)를 포함한다. 보이는 바와 같이, 프로세서(605)는 주어진 마이크로-아키텍처를 가질 수 있고 예를 들면 포인트-투-포인트 인터커넥트, 버스 또는 기타 이런 방식에 의해 메모리(620)에 결합될 수 있다. 메모리(620)의 가시적 부분, 즉 제1 부분(630)에서, 하나 이상의 운영 체제(635) 및 애플리케이션 프로그램(638)이 저장될 수 있다. 이 부분은 사용자-레벨 코드(즉, 애플리케이션 프로그램(638))에 가시적이고 OS(OS(635)와 프로그램(638) 모두)에 가시적일 수 있어서 "가시적"이라고 불린다. 이들 프로그램에서 실행될 명령어의 타입에 따라, 예를 들어, 이러한 명령어를 핸들링하기 위해 프로세서에 존재하는 명령어 디코더를 사용함으로써, 통신은 프로세서(605)와 직접 이루어질 수 있다.
대안적으로, 변환된 코드를 사용하여 최적화될 수 있는 각종 코드 세그먼트들에 대해 또는 마이크로-아키텍처 지원이 제공되지 않은 시퀀스들에 대해, 실시예들은 변환된 코드를 프로세서(605)에 제공하기 위해 메모리의 숨겨진 부분, 즉 제2 부분(640)을 사용할 수 있다. 특히, 보이는 바와 같이, OS(635)와 애플리케이션 프로그램(638) 모두는 BT 엔진(645)과 통신할 수 있고, 이는 인터프리테이션, 변환 및 최적화 메커니즘을 비롯한 런타임 실행 유닛을 포함할 수 있다. 숨겨진 메모리(640)는 가시적이거나 OS 또는 애플리케이션 프로그램들에 액세스가능하지 않음을 유의하라. BT 엔진(645)은 따라서 코드 및 어드레스 정보를 변환 캐시(648)에 제공할 수 있는데, 이는 실행을 위해 프로세서(605)에 제공될 수 있는 변환된 코드를 포함할 수 있다. 일 실시예에서, 변환 캐시(648)에 저장된 코드는 암호화될 수 있다. 이 변환된 코드는 프로세서의 기저의 마이크로-아키텍처를 위해 기입되고 최적화될 수 있다(예를 들면, 타겟 ISA 코드).
보이는 바와 같이, 공동-설계 프로세서일 수 있는 프로세서(605)는, OS 또는 애플리케이션 프로그램들로부터 명령어를 직접 수신할 수 있는 명령어 페치(606)와 같은 프론트 엔트 유닛들을 포함한다. 이들 명령어들은, 예를 들면 애플리케이션 프로그램의 사용자-레벨 명령어들에 대응하는 매크로-명령어일 수 있는데, 명령어를 디코딩하기 위해 동작하고 예를 들면, 프로세서(605)의 마이크로코드 저장소에 존재하는 대응 uops에 액세하도록 디코더(607)를 사용하여 디코딩될 수 있다. 다음으로, 디코더(607)는 각종 ALU(arithmetic logic units), 특수용 하드웨어 및 다른 타입의 컴퓨테이션 유닛들을 포함할 수 있는 하나 이상의 실행 유닛(608)에 uops를 제공할 수 있다. 이들 명령어들로부터의 결과들은, 장애나 예외가 일어나지 않으면, 명령어들을 회수(retire)시켜 결과를 프로그램 순서에 따라 프로세서의 아키텍처적 상태에 저장하도록 동작하는 회수 유닛(609)에 제공될 수 있다. 동작중의 머신으로서 설명되었지만, 실시예들은 동작하지 않는 머신을 사용하여 동일하게 구현될 수 있다.
실시예들은 많은 다양한 시스템 타입들에서 구현될 수 있다. 이제 도 6을 참조하면, 본 발명의 실시예에 따른 시스템의 블로도가 도시된다. 도 6에 도시된 바와 같이, 멀티프로세서 시스템(770)은 포인트-투-포인트 인터커넥트 시스템이며, 포인트-투-포인트 인터커넥트(750)를 통해 결합된 제1 프로세서(700) 및 제2 프로세서(780)를 포함한다. 도 6에 도시된 바와 같이, 잠재적으로 더욱 많은 코어들이 프로세서들에 존재할 수 있지만, 프로세서들(770 및 780)의 각각은, 제1 및 제2 프로세서 코어들(즉, 프로세서 코어들(774A 및 774b) 및 프로세서 코어들(784A 및 784b))을 포함하는, 멀티 코어 프로세서들일 수 있다. 프로세서들 각각은 여기에 설명된 대로, BT 컨테이너를 생성하고 관리하는 로직을 포함할 수 있다.
계속 도 6을 참조하면, 제1 프로세서(770)는 메모리 컨트롤러 허브(MCH; 772) 및 P-P(point-to-point) 인터페이스들(776 및 778)을 포함한다. 마찬가지로, 제2 프로세서(780)는 MCH(782) 및 P-P 인터페이스들(786 및 788)을 포함한다. 도 6에 도시된 바와 같이, MCH들(772 및 782)은, 각각의 프로세서들에 국부적으로 부착된 시스템 메모리(예컨대, DRAM)의 일부가 될 수 있는, 각각의 메모리들, 즉 메모리(732) 및 메모리(734)에 프로세서를 결합시킨다. 제 1 프로세서(770) 및 제 2 프로세서(780)는 각각, P-P 인터커넥트들(752 및 754)를 통해 칩셋(790)에 결합될 수 있다. 도 6에 도시된 바와 같이, 칩셋(790)은 P-P 인터페이스들(794 및 798)을 포함한다.
또한, 칩셋(790)은 P-P 인터커넥트(739)에 의해 칩셋(790)을 고성능 그래픽 엔진(738)과 결합시키기 위해 인터페이스(792)를 포함한다. 차례로, 칩셋(790)은 인터페이스(796)를 통해 제1 버스(716)에 결합될 수 있다. 도 6에 도시된 바와 같이, 다양한 입력/출력(I/O) 디바이스들(714)은, 제1 버스(716)를 제2 버스(720)에 결합시키는 버스 브리지(718)와 함께 제1 버스(716)에 결합될 수 있다. 다양한 디바이스들은, 예컨대 키보드/마우스(722), 통신 디바이스(726) 및 일 실시예에서 코드(730)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장소(728)를 포함하는 제2 버스(720)에 결합될 수 있다. 또한 오디오 I/O(724)는 제2 버스(720)에 결합될 수 있다. 실시예들은 스마트 핸드폰, 태블릿 컴퓨터, 넷북, 등등과 같은 모바일 디바이스들을 포함하는 다른 타입의 시스템들에 통합될 수 있다.
다음의 예들은 추가 실시예들과 관련되어 있다.
하나의 예에서, 프로세서는 제1 명령어 세트 아키텍처(ISA)의 명령어들을 실행하기 위한 제 1 코어, 제2 ISA의 명령어들을 실행하기 위한 제2 코어를 포함하고, 제2 코어는 제1 코어에 비대칭하고, 바이너리 변환 컨테이너는 프로세서에 의해 소프트웨어 스택에 투명하게(transparently) 제어되고, 바이너리 변환 컨테이너는, 코드 세그먼트를 수신하고, 코드 세그먼트의 바이너리 변환을 생성하고, 변환 캐시에 바이너리 변환을 저장하기 위한 바이너리 변환 엔진을 포함하고, 바이너리 변환은 제2 ISA에서 사용할 수 없는 제1 ISA의 명령어를 에뮬레이팅하는 적어도 하나의 에뮬레이션 루틴을 포함하고, 여기에서 제2 코어는 바이너리 변환을 실행한다.
예시에서, 적어도 하나의 에뮬레이션 루틴은 제2 코어로 하여금, 제1 벡터 피연산자 상의 동작을 수행하기 위한 명령어들을 실행할 수 있게 하고, 여기에서 제2 코어의 데이터 경로의 폭은 제1 벡터 피연산자의 폭보다 작다.
예시에서, 프로세서는 코드 세그먼트를 포함하는 애플리케이션을 프로파일링하고, 바이너리 변환 엔진으로 하여금 프로파일링에 응답하여 바이너리 변환을 생성하게 한다.
예시에서, 프로세서는 바이너리 변환 코드 세그먼트와 네이티브 코드 세그먼트를 각각 연결하기 위한 복수의 엔트리들을 포함하는 맵핑 테이블을 포함한다.
예시에서, 매핑 테이블이 코드 세그먼트를 바이너리 변환과 연결하는 엔트리를 포함할 경우, 코드 세그먼트로의 엔트리 포인트를 접할 때, 프로세서는 매핑 테이블에 액세스하고 코드 세그먼트 대신 바이너리 변환을 실행할 것이다.
예시에서, 바이너리 변환 엔진은 바이너리 변환으로 하여금 코드 세그먼트 대신 실행되게 하는 스티어링 로직을 포함한다.
예시에서, 제2 코어는 제1 코어보다 낮은 전력 소비 레벨을 갖는다.
상기 프로세서는 다양한 수단을 사용하여 구현될 수 있음에 유의한다.
예시에서, 프로세서는 사용자 장비 터치 지원 디바이스에 통합된 시스템 온 칩(SoC: system on a chip)을 포함한다.
다른 예시에서, 시스템은 디스플레이 및 메모리를 포함하고, 상기 예시 중 하나 이상의 프로세서를 포함한다.
다른 예시에서, 머신 판독가능 매체는 거기에 저장된 명령어들을 가지고, 이 명령어들은 머신에 의해 수행되는 경우, 머신으로 하여금, 프로세서의 바이너리 변환 에이전트에서의 제1 코드 세그먼트에 대해 바이너리 변환을 수행하는 명령어를 수신하는 단계, 제1 명령어를 지원하지 않는 프로세서의 코어 상에서 실행될 때 제1 명령어 세트 아키텍처(ISA)의 제1 명령어를 에뮬레이팅하는 제1 루틴을 포함하는 제1 코드 세그먼트에 대한 인스트루먼트 코드 세그먼트를 생성하는 단계, 인스트루먼테이션 캐시 메모리에 인스트루먼트 코드 세그먼트를 저장하는 단계, 및 제1 코드 세그먼트로의 엔트리 포인트를 접할 때 코어로 하여금 제1 코드 세그먼트 대신 인스트루먼트 코드 세그먼트를 실행할 수 있도록 프로세서를 프로그래밍하는 단계를 포함하는 방법을 수행하게 한다.
예시에서, 바이너리 변환 에이전트는 프로세서 상에서 실행하는 소프트웨어 스택에 대해 투명하다 .
예시에서, 맵핑 테이블에 엔트리를 저장하는 명령어들은 인스트루먼테이션 캐시 메모리에서 인스트루먼트 코드 세그먼트의 위치에 엔트리 포인트를 연결한다.
예시에서, 맵핑 테이블에 엔트리를 저장하는 명령어들은 코어로 하여금 제2 코드 세그먼트 대신 제2 인스트루먼트 코드 세그먼트를 실행하도록 하고, 제2 코드 세그먼트는 핫스팟을 포함한다.
예시에서, 머신 판독가능 매체는 코어로 하여금 제3 코드 세그먼트 대신 제3 인스트루먼트 코드 세그먼트를 실행하도록 하기 위해 매핑 테이블에 엔트리를 저장하는 명령어들을 더 포함하고, 제3 코드 세그먼트는 자기 수정 코드를 포함한다.
다른 예시에서, 프로세서는 제1 코드 세그먼트의 바이너리 변환을 생성하고 변환 캐시에 바이너리 변환을 저장하기 위한 코드를 포함하는 바이너리 변환(BT) 컨테이너, BT 컨테이너를 관리하고 제1 코드 세그먼트를 식별하기 위한 호스트 엔티티 로직, 및 소프트웨어 스택으로부터 BT 컨테이너를 격리하기 위한 보호 로직 - 소프트웨어 스택은 가상 머신 모니터(VMM: virtual machine monitor) 계층, 운영 체제(OS) 계층, 및 애플리케이션 계층을 포함하고 BT 컨테이너는 소프트웨어 스택에 대해 투명함 - 을 포함한다.
예시에서, 보호 로직은 BT 컨테이너의 위치를 식별하는 범위 값을 저장하기 위한 적어도 하나의 레지스터를 포함한다.
예시에서, 호스트 엔티티 로직은 프로세서의 상태로 하여금 제1 상태 저장소에 저장되게 하고, BT 컨테이너의 BT 상태 저장소에 저장된 BT 상태를 BT 호출에 대한 엔트리 상의 프로세서로 로딩한다.
예시에서, 호스트 엔티티 로직은 BT 상태로 하여금 BT 컨테이너의 BT 상태 저장소에 저장되게 하고, 제1 타임 퀀텀(time quantum)에 대한 바이너리 변환의 실행 후에 제1 상태 저장소로부터의 프로세서 상태를 소프트웨어 스택의 애플리케이션의 실행을 가능하도록 로딩한다.
예시에서, 호스트 엔티티 로직은 BT 상태로 하여금 유휴 코어(idle core) 상의 바이너리 변환의 실행이 가능하도록 프로세서의 유휴 코어의 상태 저장소로 로딩되게 하고, 소프트웨어 스택의 애플리케이션은 프로세서의 제2 코어 상에서 실행된다.
예시에서, 호스트 엔티티 로직은 BT 컨테이너가 OS 계층 및 소프트웨어 스택의 VMM 계층으로 액세스하는 것을 막는다.
예시에서, 호스트 엔티티 로직은 BT 컨테이너가 소프트웨어 스택의 애플리케이션 계층으로 기록 액세스하는 것을 막는다.
예시에서, 호스트 엔티티 로직은 BT 컨테이너가 프로세서의 상태의 제1 서브세트에 액세스하는 것을 가능하게 하고, BT 컨테이너가 프로세서 상태의 제2 서브세트에 액세스하는 것을 막는다.
다른 예시에서, 방법은, 프로세서의 바이너리 변환 에이전트에서의 제1 코드 세그먼트에 대해 바이너리 변환을 수행하는 명령어를 수신하는 단계, 제1 명령어를 지원하지 않는 프로세서의 코어 상에서 실행될 때 제1 명령어 세트 아키텍처(ISA)의 제1 명령어를 에뮬레이팅하는 제1 루틴을 포함하는 제1 코드 세그먼트에 대한 인스트루먼트 코드 세그먼트를 생성하는 단계, 인스트루먼테이션 캐시 메모리에 인스트루먼트 코드 세그먼트를 저장하는 단계, 및 제1 코드 세그먼트로의 엔트리 포인트를 접할 때 코어로 하여금 제1 코드 세그먼트 대신 인스트루먼트 코드 세그먼트를 실행할 수 있도록 프로세서를 프로그래밍하는 단계를 포함한다.
예시에서, 바이너리 변환 에이전트는 프로세서 상에서 실행하는 소프트웨어 스택에 대해 투명하다 .
예시에서, 방법은, 인스트루먼테이션 캐시 메모리에서 인스트루먼트 코드 세그먼트의 위치에 엔트리 포인트를 연결하기 위한, 맵핑 테이블에 엔트리를 저장하는 단계를 포함한다.
예시에서, 방법은, 코어로 하여금 제2 코드 세그먼트 대신 제2 인스트루먼트 코드 세그먼트를 실행하도록 하고, 제2 코드 세그먼트는 핫스팟을 포함하기 위한, 맵핑 테이블에 엔트리를 저장하는 단계를 더 포함한다.
예시에서, 방법은 코어로 하여금 제3 코드 세그먼트 대신 제3 인스트루먼트 코드 세그먼트를 실행하도록 하기 위한, 매핑 테이블에 엔트리를 저장하는 단계를 포함하고, 제3 코드 세그먼트는 자기 수정 코드를 포함한다.
다른 예시에서, 프로세서는 제1 코드 세그먼트의 바이너리 변환을 생성하고 변환 캐시에 바이너리 변환을 저장하기 위한 코드를 포함하는 바이너리 변환(BT) 컨테이너 수단들, BT 컨테이너 수단들을 관리하고 제1 코드 세그먼트를 식별하기 위한 호스트 엔티티 수단들, 및 소프트웨어 스택으로부터 BT 컨테이너 수단들을 격리하기 위한 보호 수단들 - 소프트웨어 스택은 가상 머신 모니터(VMM: virtual machine monitor) 계층, 운영 체제(OS) 계층, 및 애플리케이션 계층을 포함하고 BT 컨테이너는 소프트웨어 스택에 대해 투명함 - 을 포함한다.
예시에서, 보호 수단들은 BT 컨테이너 수단들의 위치를 식별하는 범위 값을 저장하기 위한 적어도 하나의 레지스터를 포함한다.
예시에서, 호스트 엔티티 수단들은 프로세서의 상태로 하여금 제1 상태 저장소에 저장되게 하고, BT 컨테이너 수단들의 BT 상태 저장소에 저장된 BT 상태를 BT 호출로의 엔트리 상의 프로세서로 로딩한다.
예시에서, 호스트 엔티티 수단들은 BT 상태로 하여금 BT 컨테이너 수단들의 BT 상태 저장소에 저장되게 하고, 제1 타임 퀀텀에 대한 바이너리 변환의 실행 후에 제1 상태 저장소로부터의 프로세서 상태를 소프트웨어 스택의 애플리케이션의 실행을 가능하도록 로딩한다.
예시에서, 호스트 엔티티 수단은 BT 상태를 프로세서의 유휴(idle) 코어의 상태 저장소로 로드되게 하여, 유휴 코어상의 바이너리 변환의 실행을 가능하게 하며, 소프트웨어 스택의 애플리케이션은 프로세서의 제2 코어를 실행한다.
예시에서, 호스트 엔티티 수단은, BT 컨테이너가 소프트웨어 스택의 OS 계층 및 VMM 계층으로 액세스하는 것을 방지한다.
예시에서, 호스트 엔티티 수단은, BT 컨테이너가 소프트웨어 스택의 애플리케이션 계층으로 기록 액세스(write access)하는 것을 방지한다.
예시에서, 호스트 엔티티 수단은, BT 컨테이너가 프로세서의 상태의 제1 서브세트로 액세스하는 것을 가능하게 하고, BT 컨테이너가 프로세서 상태의 제2 서브세트로 액세스하는 것을 방지한다.
다른 예시에서, 명령어들을 포함하는 컴퓨터 판독가능 매체는 위 예시들 중 임의의 방법을 수행한다.
다른 예시에서, 장치는 위 예시들 중 어느 하나의 방법을 수행하기 위한 수단을 포함한다.
예시에서, 통신 디바이스는 위 예시들 중 어느 하나의 방법을 수행하도록 구성된다.
예시에서, 적어도 하나의 머신 판독가능 매체는, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 위 예시들 중 어느 하나에 따른 방법을 수행하게 하는 복수의 명령어들을 포함한다.
위 예시들의 다양한 조합들이 가능하다는 것을 이해해야 한다.
실시예들은 많은 다른 형태의 시스템들에서 사용될 수 있다. 예를 들어, 일 실시예에서, 통신 디바이스는 본 명세서에서 설명된 다양한 방법들 및 기술들을 수행하도록 구성될 수 있다. 물론, 본 발명의 범위는 통신 디바이스에 한정되지 않고, 대신에 다른 실시예들이, 명령어를 프로세싱하기 위한 다른 형태의 장치들, 또는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 디바이스로 하여금 본 명세서에서 설명된 하나 이상의 방법들 및 기술들을 수행하게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능 매체를 도출해 낼 수 있다.
실시예들은 코드 내에서 구현될 수 있고, 명령어들을 수행하기 위해 시스템을 프로그램하는데 사용될 수 있는 명령어들이 저장된 저장소 매체에 저장될 수 있다. 저장소 매체는, 플로피 디스크, 광학 디스크, 광학 디스크, SSD(solid state drive), CD-ROM(compact disk read-only memory), CD-RW(compact disk rewritables) 및 자기-광학 디스크들을 포함하는 임의의 형태의 디스크, ROM(read-only memory)과 같은 반도체 디바이스, DRAM(dynamic random access memory)과 같은 RAM(random access memroy), SRAM(static random access memory), EPROM(erasable programmable read-only memory), 플래시 메모리, EEPROM(electrically erasable programmable read-only memory), 자기 또는 광학 카드, 또는 전자 명령어들을 저장하기 위하여 적당한 임의의 형태의 매체를 포함할 수 있으나, 이들에 한정되는 것은 아니다.
본 발명은 제한된 수의 실시예들에 관하여 설명되었지만, 본 기술 분야의 당업자는 그것들로부터 많은 변경들 및 변형들을 이해할 것이다. 첨부된 청구항들은 본 발명의 진정한 사상 및 범주에 포함되는 그러한 모든 변경들 및 변형들을 커버하는 것으로 의도된다.

Claims (24)

  1. 프로세서로서,
    제1 명령어 세트 아키텍처(ISA: instruction set architecture)의 명령어들을 실행하는 제1 코어;
    제2 ISA의 명령어들을 실행하는 제2 코어 - 상기 제2 코어는 상기 제1 코어에 비대칭임 -; 및
    상기 프로세서에 의해 소프트웨어 스택에 대해 투명하게(transparently) 제어되는 바이너리 변환 컨테이너(binary translation container)
    를 포함하고,
    상기 바이너리 변환 컨테이너는, 코드 세그먼트를 수신하고 상기 코드 세그먼트의 바이너리 변환을 생성하며 상기 바이너리 변환을 변환 캐시에 저장하는 바이너리 변환 엔진을 포함하고, 상기 바이너리 변환은, 상기 제2 ISA에서 사용가능하지 않은 상기 제1 ISA의 명령어를 에뮬레이팅하는 적어도 하나의 에뮬레이션 루틴을 포함하며, 상기 제2 코어는 상기 바이너리 변환을 실행하는 프로세서.
  2. 제1항에 있어서,
    상기 적어도 하나의 에뮬레이션 루틴은, 제1 벡터 피연산자(vector operand)에 대한 연산을 수행하기 위한 명령어를 상기 제2 코어가 실행할 수 있게 하며, 상기 제2 코어의 데이터 경로의 폭은 상기 제1 벡터 피연산자의 폭보다 작은 프로세서.
  3. 제1항에 있어서,
    상기 프로세서는 상기 코드 세그먼트를 포함하는 애플리케이션을 프로파일링하고, 상기 프로파일링에 응답하여 상기 바이너리 변환 엔진이 상기 바이너리 변환을 생성하게 하는 프로세서.
  4. 제1항에 있어서,
    상기 프로세서는, 바이너리 변환 코드 세그먼트와 네이티브 코드 세그먼트를 각각 연관시키는 복수의 엔트리를 포함하는 맵핑 테이블을 포함하는 프로세서.
  5. 제4항에 있어서,
    상기 프로세서는, 상기 맵핑 테이블이 상기 바이너리 변환과 상기 코드 세그먼트를 연관시키는 엔트리를 포함하는 경우, 상기 코드 세그먼트에 대한 엔트리 포인트에 직면할(encountered) 때에 상기 맵핑 테이블에 액세스하고, 상기 코드 세그먼트 대신에 상기 바이너리 변환을 실행하는 프로세서.
  6. 제1항에 있어서,
    상기 바이너리 변환 엔진은, 상기 코드 세그먼트 대신에 상기 바이너리 변환이 실행되게 하는 스티어링 로직을 포함하는 프로세서.
  7. 제1항에 있어서,
    상기 제2 코어는 상기 제1 코어보다 더 낮은 전력 소비 레벨을 갖는 프로세서.
  8. 프로세서의 바이너리 변환 에이전트에서 제1 코드 세그먼트에 대한 바이너리 변환을 수행하기 위한 명령어를 수신하는 단계;
    제1 명령어 세트 아키텍처(ISA)의 제1 명령어를 지원하지 않는 상기 프로세서의 코어 상에서 실행될 때, 상기 제1 명령어를 에뮬레이팅하는 제1 루틴을 포함하는 상기 제1 코드 세그먼트에 대한 인스트루먼트 코드 세그먼트(instrumented code segment)를 생성하는 단계;
    상기 인스트루먼트 코드 세그먼트를 인스트루먼테이션 캐시 메모리에 저장하는 단계; 및
    상기 제1 코드 세그먼트에 대한 엔트리 포인트에 직면할 때에, 상기 코어가 상기 제1 코드 세그먼트 대신에 상기 인스트루먼트 코드 세그먼트를 실행할 수 있도록 상기 프로세서를 프로그래밍하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 바이너리 변환 에이전트는 상기 프로세서 상에서 실행되는 소프트웨어 스택에 대해 투명한 방법.
  10. 제8항에 있어서,
    상기 인스트루먼테이션 캐시 메모리에서의 상기 인스트루먼트 코드 세그먼트의 위치에 대해 상기 엔트리 포인트를 연관시키기 위해 엔트리를 맵핑 테이블에 저장하는 단계를 더 포함하는 방법.
  11. 제8항에 있어서,
    상기 코어가 제2 코드 세그먼트 대신에 제2 인스트루먼트 코드 세그먼트를 실행하게 하기 위해 엔트리를 맵핑 테이블에 저장하는 단계를 더 포함하며, 상기 제2 코드 세그먼트는 핫 스팟(hot spot)을 포함하는 방법.
  12. 제8항에 있어서,
    상기 코어가 제3 코드 세그먼트 대신에 제3 인스트루먼트 코드 세그먼트를 실행하게 하기 위해 엔트리를 맵핑 테이블에 저장하는 단계를 더 포함하며, 상기 제3 코드 세그먼트는 자기-수정 코드(self-modifying code)를 포함하는 방법.
  13. 프로세서로서,
    제1 코드 세그먼트의 바이너리 변환을 생성하며 상기 바이너리 변환을 변환 캐시에 저장하기 위한 코드를 포함하는 바이너리 변환(BT) 컨테이너 수단;
    상기 BT 컨테이너 수단을 관리하며, 상기 제1 코드 세그먼트를 식별하기 위한 호스트 엔티티 수단; 및
    소프트웨어 스택으로부터 상기 BT 컨테이너 수단을 격리하기 위한 보호 수단 - 상기 소프트웨어 스택은 가상 머신 모니터(VMM) 계층, 운영 체제(OS) 계층 및 애플리케이션 계층을 포함하며, 상기 BT 컨테이너 수단은 상기 소프트웨어 스택에 대해 투명함 -
    을 포함하는 프로세서.
  14. 제13항에 있어서,
    상기 보호 수단은, 상기 BT 컨테이너 수단의 위치를 식별하기 위한 범위 값을 저장하는 적어도 하나의 레지스터를 포함하는 프로세서.
  15. 제13항에 있어서,
    상기 호스트 엔티티 수단은, BT 호출로의 진입 시에(on an entry to a BT invocation), 상기 프로세서의 상태가 제1 상태 저장소에 저장되게 하며, 상기 BT 컨테이너 수단의 BT 상태 저장소에 저장된 BT 상태를 상기 프로세서로 로딩하는 프로세서.
  16. 제15항에 있어서,
    상기 호스트 엔티티 수단은, 상기 BT 상태가 상기 BT 컨테이너 수단의 상기 BT 상태 저장소에 저장되게 하며, 제1 타임 퀀텀(time quantum) 동안 상기 바이너리 변환의 실행 후에 상기 제1 상태 저장소로부터 상기 프로세서의 상태를 로딩하여, 상기 소프트웨어 스택의 애플리케이션의 실행을 가능하게 하는 프로세서.
  17. 제15항에 있어서,
    상기 호스트 엔티티 수단은, 상기 BT 상태가 상기 프로세서의 유휴 코어의 상태 저장소로 로딩되게 하여, 상기 유휴 코어 상에서의 상기 바이너리 변환의 실행을 가능하게 하며, 상기 소프트웨어 스택의 애플리케이션은 상기 프로세서의 제2 코어 상에서 실행되는 프로세서.
  18. 제13항에 있어서,
    상기 호스트 엔티티 수단은, 상기 BT 컨테이너 수단이 상기 소프트웨어 스택의 상기 OS 계층 및 상기 VMM 계층에 액세스하는 것을 방지하는 프로세서.
  19. 제13항에 있어서,
    상기 호스트 엔티티 수단은, 상기 BT 컨테이너 수단이 상기 소프트웨어 스택의 상기 애플리케이션 계층에 기록 액세스(write access)하는 것을 방지하는 프로세서.
  20. 제13항에 있어서,
    상기 호스트 엔티티 수단은, 상기 BT 컨테이너 수단이 상기 프로세서의 상태의 제1 서브세트에 액세스할 수 있게 하며, 상기 BT 컨테이너 수단이 상기 프로세서의 상태의 제2 서브세트에 액세스하는 것을 방지하는 프로세서.
  21. 제8항 내지 제12항 중 어느 한 항의 방법을 수행하도록 구성된 통신 디바이스.
  22. 적어도 하나의 머신 판독가능 매체로서,
    컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금 제8항 내지 제12항 중 어느 한 항에 따른 방법을 수행하게 하는 복수의 명령어들을 포함하는 적어도 하나의 머신 판독가능 매체.
  23. 제8항 내지 제12항 중 어느 한 항의 방법을 수행하도록 구성된, 명령어들을 프로세싱하기 위한 장치.
  24. 제8항 내지 제12항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는 장치.
KR1020140029253A 2013-03-12 2014-03-12 공동 설계 프로세서에서 격리된 실행 환경의 생성 KR101673435B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/795,720 2013-03-12
US13/795,720 US9405551B2 (en) 2013-03-12 2013-03-12 Creating an isolated execution environment in a co-designed processor

Publications (2)

Publication Number Publication Date
KR20140111998A true KR20140111998A (ko) 2014-09-22
KR101673435B1 KR101673435B1 (ko) 2016-11-07

Family

ID=50554836

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029253A KR101673435B1 (ko) 2013-03-12 2014-03-12 공동 설계 프로세서에서 격리된 실행 환경의 생성

Country Status (6)

Country Link
US (1) US9405551B2 (ko)
JP (1) JP5936640B2 (ko)
KR (1) KR101673435B1 (ko)
CN (1) CN104050010A (ko)
DE (1) DE102014003540A1 (ko)
GB (2) GB2540640B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US9417855B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
US9454487B2 (en) * 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US9563432B2 (en) * 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9652612B2 (en) * 2015-03-25 2017-05-16 International Business Machines Corporation Security within a software-defined infrastructure
WO2016162721A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation on shared object level
GB2554201B (en) * 2015-04-10 2022-05-11 Google Llc Binary translation into native client
CN106325819B (zh) 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和系统
US10713146B2 (en) * 2015-06-26 2020-07-14 AVAST Software s.r.o. Dynamic binary translation and instrumentation with postponed attachment to running native threads
US9524183B1 (en) * 2015-07-22 2016-12-20 Bluedata Software, Inc. Employing application containers in a large scale processing environment
GB2542646B (en) * 2016-03-18 2017-11-15 Imagination Tech Ltd Non-linear cache logic
US11650902B2 (en) * 2017-11-08 2023-05-16 Intel Corporation Methods and apparatus to perform instruction-level graphics processing unit (GPU) profiling based on binary instrumentation
US11281767B2 (en) * 2018-03-23 2022-03-22 International Business Machines Corporation Secure system state extraction software extensibility via plugin sandboxing
US11188361B1 (en) 2020-06-26 2021-11-30 Red Hat, Inc. Cross-architecture software distribution using a virtual instruction set architecture
US20220308867A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Apparatus and method for managing unsupported instruction set architecture (isa) features in a virtualized environment
CN113342436B (zh) * 2021-06-10 2023-03-17 网易(杭州)网络有限公司 一种游戏翻译方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070116712A (ko) * 2006-06-06 2007-12-11 각코호진 와세다다이가쿠 헤테로지니어스 멀티프로세서용 글로벌 컴파일러
JP2011134315A (ja) * 2009-12-23 2011-07-07 Intel Corp 部分的なエミュレーション環境におけるソース命令セットアーキテクチャ(isa)コードから、変換済みコードへの遷移
US20110320766A1 (en) * 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1325288C (en) 1989-02-03 1993-12-14 Ricky C. Hetherington Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
JPH0581070A (ja) 1990-12-10 1993-04-02 Omron Corp プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法
US5345576A (en) 1991-12-31 1994-09-06 Intel Corporation Microprocessor simultaneously issues an access to an external cache over an external cache bus and to an internal cache, cancels the external cache access on an internal cache hit, and reissues the access over a main memory bus on an external cache miss
JP3516963B2 (ja) 1993-03-12 2004-04-05 株式会社東芝 メモリアクセス制御装置
US5513337A (en) 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US5524208A (en) 1994-06-09 1996-06-04 Dell Usa, L.P. Method and apparatus for performing cache snoop testing using DMA cycles in a computer system
US5826089A (en) 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6631514B1 (en) 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
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
US6820255B2 (en) * 1999-02-17 2004-11-16 Elbrus International Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
US6615340B1 (en) 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US20020156977A1 (en) 2001-04-23 2002-10-24 Derrick John E. Virtual caching of regenerable data
US20040015874A1 (en) * 2001-05-14 2004-01-22 David Ungar Method and apparatus for finding resource allocation errors in virtual machine compilers
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7269825B1 (en) 2002-12-27 2007-09-11 Unisys Corporation Method and system for relative address translation
JP4713820B2 (ja) * 2003-05-28 2011-06-29 パナソニック株式会社 プログラム実行制御装置、プログラム実行制御方法
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
JP4563669B2 (ja) * 2003-11-25 2010-10-13 三菱電機株式会社 命令模擬装置
JP2006039879A (ja) * 2004-07-26 2006-02-09 Aplix Corp クラスファイル実行方法およびJava(R)実行環境プログラム
WO2009076324A2 (en) * 2007-12-10 2009-06-18 Strandera Corporation Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US8255882B2 (en) * 2004-12-30 2012-08-28 Intel Corporation Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
WO2007101969A1 (en) 2006-03-06 2007-09-13 Arm Limited Accessing a cache in a data processing apparatus
JP4208895B2 (ja) 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US8505002B2 (en) * 2006-09-29 2013-08-06 Arm Limited Translation of SIMD instructions in a data processing system
CN101295265A (zh) 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
EP2159706B1 (en) 2007-06-19 2014-09-10 Fujitsu Limited Operation processing apparatus and operation processing method
JP4687729B2 (ja) 2008-03-04 2011-05-25 日本電気株式会社 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US8700943B2 (en) * 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
CN101923492B (zh) 2010-08-11 2013-05-01 上海交通大学 面向嵌入式异构多核上执行动态分配指令的方法
US8683243B2 (en) * 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
US9417855B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070116712A (ko) * 2006-06-06 2007-12-11 각코호진 와세다다이가쿠 헤테로지니어스 멀티프로세서용 글로벌 컴파일러
JP2011134315A (ja) * 2009-12-23 2011-07-07 Intel Corp 部分的なエミュレーション環境におけるソース命令セットアーキテクチャ(isa)コードから、変換済みコードへの遷移
US20110320766A1 (en) * 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type

Also Published As

Publication number Publication date
GB2540640B (en) 2017-12-06
CN104050010A (zh) 2014-09-17
DE102014003540A1 (de) 2014-09-18
GB2514221A (en) 2014-11-19
JP5936640B2 (ja) 2016-06-22
GB2540640A (en) 2017-01-25
JP2014174998A (ja) 2014-09-22
GB201404228D0 (en) 2014-04-23
GB2514221B (en) 2017-02-01
US9405551B2 (en) 2016-08-02
GB201520824D0 (en) 2016-01-06
US20140281376A1 (en) 2014-09-18
KR101673435B1 (ko) 2016-11-07

Similar Documents

Publication Publication Date Title
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
Fisher-Ogden Hardware support for efficient virtualization
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
TWI407366B (zh) 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US7434003B2 (en) Efficient operating system operation on a hypervisor
US8099541B2 (en) Minivisor entry point in virtual machine monitor address space
RU2265880C2 (ru) Новый режим процессора для ограничения функционирования гостевого программного обеспечения, выполняющегося на виртуальной машине, поддерживаемой монитором виртуальной машины
KR101773229B1 (ko) 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법
Varanasi Implementing Hardware-supported Virtualization in OKL4 on ARM
US9891936B2 (en) Method and apparatus for page-level monitoring
KR102187912B1 (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US10019275B2 (en) Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels
US9405937B2 (en) Method and apparatus for securing a dynamic binary translation system
EP2962240A1 (en) Performing security operations using binary translation
TW201339971A (zh) 虛擬機器控制結構陰影化技術
KR101640769B1 (ko) 가상화 시스템 및 그것의 명령어 실행 방법
Penneman et al. Formal virtualization requirements for the ARM architecture
US10565141B1 (en) Systems and methods for hiding operating system kernel data in system management mode memory to thwart user mode side-channel attacks
Lin et al. Hardware-assisted reliability enhancement for embedded multi-core virtualization design
Grinberg et al. Architectural virtualization extensions: A systems perspective
Kegel et al. Virtualizing io through io memory management unit (iommu)
KR20210130197A (ko) 하이퍼바이저에 대한 조건부 산출 명령
Ezzeddine et al. Ubiquitous computing platform via hardware assisted ISA virtualization

Legal Events

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