KR20170066681A - 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리 - Google Patents

이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리 Download PDF

Info

Publication number
KR20170066681A
KR20170066681A KR1020177014865A KR20177014865A KR20170066681A KR 20170066681 A KR20170066681 A KR 20170066681A KR 1020177014865 A KR1020177014865 A KR 1020177014865A KR 20177014865 A KR20177014865 A KR 20177014865A KR 20170066681 A KR20170066681 A KR 20170066681A
Authority
KR
South Korea
Prior art keywords
instruction
processor
core
page
cache
Prior art date
Application number
KR1020177014865A
Other languages
English (en)
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 KR20170066681A publication Critical patent/KR20170066681A/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/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/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세서는 메모리의 제1 페이지에 저장되는 제1 명령어로부터 변환되는 제1 변환된 명령어를 실행하기 위한 프로세서 코어를 포함한다. 프로세서는 메모리에서의 물리적 맵(PhysMap)으로부터 판독되는 제1 변환 표시자를 저장하기 위한 변환 표시자 에이전트(XTBA)를 또한 포함한다. 실시예에서, 제1 변환 표시자는 제1 페이지가 제1 명령어가 변환된 후에 수정되었는지를 표시한다. 다른 실시예들은 청구된 것처럼 기술된다.

Description

이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리{HANDLING OF BINARY TRANSLATED SELF MODIFYING CODE AND CROSS MODIFYING CODE}
본 발명의 분야는 이진 변환된 자가 수정 코드 및 교차 수정 코드를 처리하는 것이다.
프로세서 코어는 특정 코딩 언어로 작성된 코드를 실행하기 위해 설계될 수 있다. 프로그램이 특정 코어에 의해 실행되게 하기 위해, 프로그램 코드는 특정 코어와 호환되지 않는 제1 코딩 언어에서 특정 코어와 호환 가능한 제2 코딩 언어로 변환될 필요가 있는데, 이것은 이진 변환(binary translation)으로 알려져 있다.
자가 수정 코드(self modifying code: SMC)는 실행 동안 수정되는 코드를 지칭하는데, 예를 들어 SMC의 하나 이상의 명령어들은 실행 시에 SMC의 다른 명령어들을 수정한다. 교차 수정 코드(cross modifying code: XMC)는 제1 프로세서 코어상에서 실행 가능하고 그리고 실행될 때 제2 프로세서 코어상에서 실행 가능한 제2 코드에 대한 수정들을 야기하는 제1 코드를 지칭한다. SMC 또는 XMC는 실행 전에 부분적으로 변환되거나 전체가 변환될 수 있다. 몇 개의 명령어들에 대한 이들의 실행 전의 변환은 다음 명령어로의 진행 전에 하는 각각의 명령어의 변환 및 실행과 비교하여, 변환된 코드에 이형(anomaly)들을 도입할 수 있다. 변환된 코드에서의 이형들은 출력에서의 실수들을 낳을 수 있다.
도 1은 본 발명의 실시예에 따른 복수의 프로세서 코어를 포함하는 프로세서의 블록도이다.
도 2는 본 발명의 실시예들에 따라 코드를 저장하는 메모리의 일부분의 블록도들을 포함한다.
도 3은 본 발명의 실시예에 따른 변환 표시자 에이전트(XTBA)의 블록도이다.
도 4는 본 발명의 실시예에 따른 프로세서와 연관되는 캐시 메모리들의 블록도이다.
도 5는 본 발명의 실시예에 따라서 자가 수정 코드(SMC)를 처리하는 방법의 흐름도이다.
도 6은 본 발명의 실시예에 따라서 교차 수정 코드(XMC)를 처리하는 방법의 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 프로세서 코어의 블록도이다.
도 8은 본 발명의 실시예에 따른 프로세서의 블록도이다.
도 9는 본 발명의 또 다른 실시예에 따른 멀티도메인 프로세서의 블록도이다.
도 10은 다중 코어들을 포함하는 프로세서의 실시예의 블록도이다.
도 11은 본 발명의 실시예에 따른 시스템의 블록도이다.
다양한 실시예들에서, 방법들 및 장치는 SMC 또는 XMC를 포함하는 변환된 코드를 실행하기 위해 제공된다. 일 실시예에서, 프로세서는 메모리의 페이지에 저장되는 제1 명령어로부터 변환되는 변환된 제1 명령어를 실행하기 위한 코어를 포함한다. 코어는 또한 변환 표시 에이전트(translation indication agent: XTBA), 예를 들어 제1 명령어의 변환이 완료된 후에 페이지의 내용들이 수정되었는지를 표시하게 될 제1 변환 표시자를 저장하기 위한 전용 캐시 메모리를 포함한다.
이제, 도 1을 참조하면, 본 발명의 실시예에 따른 복수의 코어를 포함하는 프로세서(100)의 블록도가 도시되어 있다. 실시예에서, 프로세서(100)는 코어들(102, 120, 130, 및 140)을 포함할 수 있다. 코어(102)는, 캐시 메모리에 저장될 수 있거나 또는 시스템 메모리(160)(예를 들어, DRAM)로부터 검색될 수 있는 명령어들을 실행하기 위한 실행 유닛(104), 하나 이상의 변환 표시자들을 저장하기 위한 XTBA(106), 제1 레벨 데이터 캐시(D$)(108), 제2(중앙) 레벨 데이터 캐시(MLC)(110), 및 제3(최종) 데이터 레벨 캐시(LLC)(112)를 포함할 수 있다. 각각의 코어들(120, 130, 및 140)은 대응하는 XTBA 및 대응하는 제1 레벨 캐시, 제2 레벨 캐시, 및 제3 레벨 캐시를 가질 수 있다.
각각의 코어(102, 120, 130, 140)는 복수의 변환 표시자를 저장하게 될 물리적 맵 캐시(PM$)(150)에 결합될 수 있다. PM$(150)는 변환 표시자들의 물리적 맵(PhysMap)(170)으로부터 복사된 엔트리들의 일부분을 포함할 수 있는데, PhysMap(170)에서의 각각의 변환 표시자는 메모리(160)에서의 복수의 페이지(180) 중 대응하는 페이지와 연관된다. 예를 들어, 페이지 A와 연관되고 PhysMap(170)에 저장되는 변환 표시자는 페이지 A에 저장되는 제1 명령어가 제1 변환된 명령어로, 예를 들어 제1 코딩 언어로부터 제2 코딩 언어로 변환되었는지를 표시할 수 있다. 제1 변환된 명령어는 시스템 메모리(160)의 또 다른 페이지에 저장될 수 있다.
동작 시에, XTBA(106)는 페이지 A에 대응하고 또한 제1 변환된 명령어와 연관되는 제1 변환 표시자를 저장할 수 있다. 제1 변환 표시자는, 예를 들어 제1 변환된 명령어의 태그 정보에 기초하여, 예를 들어 PM$(150)로부터, 또는 PhysMap(170)로부터 검색되었을 수 있다. 예에서, XTBA(106)에서의 제1 변환 표시자는 1의 값을 가질 수 있고, 제1 명령어의 변환이 일어난 것을 표시한다.
페이지 A가 제1 명령어의 제1 변환된 명령어로의 변환에 후속하여 수정된다면, 변환 표시자의 값은 페이지 A가 제1 명령어의 변환에 후속하여 수정된 것을 표시하기 위해 1로부터 0으로 갱신될 수 있다. 페이지 A가 변환에 후속적으로 수정된다면, 변환된 제1 명령어는 실효(stale)된 것으로 여겨질 수 있는데, 예를 들어 제1 변환된 명령어는 이것이 더 이상 유효한 명령어가 아닌 것처럼 취급된다. 제1 명령어가 페이지 A가 수정될 때 변경되지 않았던 것이 가능한 반면, 이 실시예에서 변환 표시자 맵의 단위 크기(granularity)는 페이지당 하나의 변환 표시자이다. 그러므로, 페이지 A에 대한 수정은 제1 명령어가 수정되었던 것처럼 간주된다. 제1 변환된 명령어를 실효된 것으로 식별한 것에 응답하여, 코어는 제1 변환된 명령어의 실행을 중단(abort)할 수 있다.
제1 변환된 명령어의 실행 동안, XTBA(106)는 페이지 A와 연관되고 PhysMap(170)에 저장되는 변환 표시자의 값을 모니터링하기 위해 구성된다. PhysMap(170)에서의 제1 변환 표시자가, 예를 들어 변환된 제1 명령어의 실행의 시작과 실행의 완료("커밋") 사이의 임의의 시간에 페이지 A 내의 주소에 대한 STORE 명령어의 실행의 결과로서 1의 값으로부터 0의 값으로 갱신된다면, 제1 변환된 명령어의 실행은 중단될 수 있다.
XTBA(106)는 PhysMap(170)에 대한 갱신들의 스누핑(snooping)을 가능하게 하기 위해 물리적으로 태깅될 수 있다. PhysMap(170)에 대한 갱신은 시스템(100)에서의 모든 XTBA들에 대한 스누프들의 발생을 낳을 수 있다. 발생된 스누프들은 각각의 XTBA들에게 제1 변환된 명령어가 실효된 것과 제1 변환된 명령어의 실행이 제1 변환된 명령어를 실행하고 있는 각각의 코어에서 정지될 것을 경보하기 위해 작용할 수 있다.
코어(102)에서의 각각의 데이터 캐시들(108, 110, 및 112)의 각각의 캐시 라인은 데이터, 예를 들어 메모리(160)의 하나 이상의 페이지들에서 검색되는 피연산자들을 저장하게 될 것이다. (그리고 코어들(120, 130, 및 140)의 데이터 캐시들에 대해서도 유사하게 그렇게 된다). 실시예에서, 각각의 캐시 라인은, 제각기 각각의 캐시 메모리들(108, 110, 및 112)에서 부가된 열(114, 116, 및 118)로 묘사되는, 캐시 라인의 태그 부분에 부가되는 변환 표시자를 포함할 수 있다. 캐시 라인 내의 변환 표시자는 PhysMap(170)으로부터 또는 PM$(150)로부터 복사될 수 있다. 주어진 캐시 라인의 변환 표시자는 캐시 라인에서의 데이터가 그로부터 로딩된 메모리(160)에서의 특정 페이지와 연관될 수 있다.
동작 시에, 피연산자는 메모리(160)의 페이지 A로부터 검색될 수 있고 또한 코어(102) 내의 캐시 메모리(108)의 제1 캐시 라인에 저장될 수 있다. 소스 페이지 A가 변환된 코드를 포함하고 또한 페이지 A가 후속하여 변경되지 않았기 때문에, 페이지 A와 연관되는 변환 표시자는 변환을 표시하는 값(예를 들어, 1의 값)을 갖는다. 코어(102)에 의해 실행될 변환된 명령어가 제1 캐시 라인에서의 피연산자에 대해 실행되게 될 STORE를 포함한다면, 캐시 라인에서의 변환 표시자 값은 코어(102)에게 STORE의 실행이 충돌, 예를 들어 변환된 명령어의 소스 페이지의 수정을 낳을 것임을 표시한다. 결과적으로, 고장(fault)이 발생될 수 있고 STORE가 실행되는 것을 정지시키는 실행 제어가 핸들러에게 전달될 수 있다. 페이지 A에 저장되는 코드로부터 유래하는 모든 변환된 명령어는 무효화될 수 있다. 핸들러를 통한 피연산자에 대한 STORE의 실행 후에, 후속하는 프로그램 명령어들은 재변환되거나 다른 식으로 취급될 수 있다.
도 2를 이제 참조하면, 본 발명의 실시예들에 따라 코드 및 데이터를 저장하는 메모리의 메모리 부분의 2개의 실시예의 블록도들이 도시된다. 메모리 부분은 도 1의 시스템 메모리(160)에 포함될 수 있다.
일 실시예에서, 메모리 부분(210)은 데이터 페이지들 C 및 D(212), 코드 페이지 A(214), 코드 페이지 B(216), 변환된 명령어 A1을 저장하기 위한 라인(220), 변환된 명령어 B1을 저장하기 위한 라인(222), 및 변환 표시자 물리적 맵(PhysMap)(226)을 포함한다. 페이지 A(214)는 변환된 명령어 A1을 포함하고 라인(220)에 저장되는 변환된 코드에 변환되는 제1 자가 수정 코드(SMC)를 포함할 수 있다. 페이지 B(216)는 변환된 명령어 B1에 변환되고 라인(222)에 저장될 수 있는 제2 SMC를 포함할 수 있다. PhysMap(226)은 데이터 페이지들 C 및 D(212)와 코드 페이지들 A(214) 및 B(216)를 포함하는 페이지들의 변환 표시자 값들을 저장하게 된다. 데이터 페이지들(212) 각각은 데이터 페이지들(212)의 내용들의 어떤 변환도 일어나지 않았다는 것을 표시하는 변환 표시자 값들을 가지며, 코드 페이지들(214 및 216) 각각은 페이지들(214 및 216)에서의 명령어들이 변환된 것을 표시하는 대응 변환 표시자 값들을 갖는다. 한 예에서, 1의 변환 표시자 값은 명령어의 변환과 연관되고, 0의 값은 변환 안 된 것과 연관된다. 다른 실시예들은 명령어의 변환 또는 변환 안 됨을 표시하기 위해 상이한 값들을 이용할 수 있다.
동작 시에, 라인(220)에서의 변환된 명령어 A1은 피연산자에 대해 실행되게 될 STORE 명령어(예를 들어, 마이크로 op(μop))를 포함할 수 있는데, 예를 들어 레지스터 내용들을 페이지 A(214)의 주소에 저장할 수 있다. STORE 명령어의 실행이 페이지 A(214)의 내용들을 변화시키기 때문에, STORE를 실행하기 위한 코어는 피연산자와 연관되는 변환 표시자에 기초하여 STORE의 실행 전에 고장을 발생할 수 있고, 변환된 명령어 A1을 갱신하거나 무효로 하기 위해 핸들러에게 실행 제어가 전달될 수 있다. 즉, 캐시 라인의 태그 부분에서의 변환 표시자는 코어에게 페이지 A 내의 코드가 변환된 것을 표시할 수 있기 때문에, STORE를 실행하는 것은 변환된 명령어의 소스 페이지를 변화시킬 것이다. 고장은 코드 페이지 A(214)와 연관되는 변환 표시자의 (예를 들어, PhysMap(170)에의 WRITE를 통한) PhysMap(170)에서의 갱신, 예를 들어 변환된 명령어 A1이 실효되고 및 재변환이 STORE가 실행된 후 일어나는 것을 표시하기 위해 1의 값으로부터 0의 값으로의 갱신을 트리거링할 수 있다.
또 다른 실시예에서, 메모리 부분(230)은 데이터 페이지들(C 및 D)(232), 코드 페이지 A(234) 및 코드 페이지 B(236), 변환된 코드 라인들(238 및 240), 및 변환 표시자 물리적 맵 PhysMap(236)을 포함한다. 라인들(238 및 240)은 제각기 변환된 명령어들 A1 및 B1을 저장할 수 있는데, 이것들은 제각기 코드 페이지 A(234) 및 페이지 B(236)에서의 교차 수정 코드(XMC)로부터 변환되었을 수 있다. PhysMap(236)은, 각각이 페이지들(234 및 236)에서의 코드가 변환된 것을 표시하기 위한 연관된 변환 표시자를 구비한, 코드 페이지들 A(234) 및 B(236)의 변환 표시자 값들을 포함하는 메모리(230)의 페이지들의 변환 표시자 값들을 저장하게 된다. 데이터 페이지들(232)은 각각이 데이터 페이지들(232)의 내용들의 어떤 변환도 없음을 표시하기 위해 0의 연관된 변환 표시자 값들을 갖는다.
동작 시에, 제1 코어(코어 0)는 변환된 명령어 A1을 실행할 수 있고, 제2 코어(코어 1)는 변환된 명령어 B1을 실행할 수 있다. 변환된 명령어 A1은 코어 0에 의한 실행 시에 코드 페이지 B(236)의 내용들을 수정할 코드 페이지 B(236)에 대한 STORE 명령어를 포함할 수 있다. 변환된 명령어 A1의 실행 동안, 코어 0은 (코드 페이지 B에 저장되는 코드가 변환된 것임을 표시하기 위한) 코드 페이지 B(236)와 연관되는 1의 T-값에 기초하여 충돌을 검출할 수 있는데, 이것은 코어 0이 고장을 발생하도록 야기할 수 있다. 제어는 (예를 들어, WRITE의 실행을 통해) PhysMap(236)을 갱신하기 위해, 페이지 B와 연관되는 변환 표시자를 갱신하기 위해, 및 또한 STORE 명령어의 피연산자를 포함하는 캐시 라인에서의 캐시 라인 변환 표시자를 갱신하기 위해 핸들러에게 전달될 수 있다.
PhysMap(236)에 대한 갱신은 스누프들이 변환된 명령어 B1을 실행하고 있는 코어 1에서의 XTBA를 포함하여, 시스템에서의 모든 XTBA들에게 발생되도록 야기할 수 있다. 변환된 명령어 B1이 실행되고 있기 때문에, 코어 1의 XTBA는 코드 페이지 B와 연관되는 변환 표시자 값을 저장할 수 있다. 코어 1의 XTBA에서의 변환 표시자 값의 제1 값으로부터 제2 값으로의 갱신은 코어 1에게 변환된 명령어 B1이 실효된 것을 표시하여, 변환된 명령어 B1의 실행이 중단되도록 야기할 수 있다.
또 다른 실시예(도시 생략)에서, 입/출력(I/O) 유닛은 DMA(Direct Memory Access)를 통해 코드 페이지 A(234)를 수정할 수 있다. 코드 페이지 A의 수정은, 페이지 A에서의 코드가 페이지 A에서의 명령어의 변환에 후속하여 수정된 것임을 표시하는, 페이지 A(234)와 연관되는 연관된 변환 표시자 값을 갱신하도록 PhysMap(236)에 대한 WRITE를 트리거링할 수 있다. 연관된 변환 표시자의 갱신된 값은 시스템의 모든 XTBA들에 대한 스누프들을 발생하여, 변환된 명령어 A1의 실행과 연관되는 하나 이상의 고장들을 낳을 수 있다. 결과적으로, 변환된 명령어 A1의 실행은 변환된 명령어 A1를 실행하는 각각의 코어에서 중단될 수 있다.
도 3을 이제 참조하면, 본 발명의 실시예에 따라서 변환 표시자 에이전트(XTBA)(300)를 묘사하는 블록도가 도시된다. XTBA(300)는 저장 비트(302)를 포함하는 복수의 저장 비트를 포함할 수 있다. 각각의 저장 비트는 현재 실행되는 명령어 또는 최근에 실행된 명령어와 연관되는 변환 표시자 값을 저장하도록 구성되고, 각각의 변환 표시자 값은 또한 현재 실행되는 명령어가 그로부터 변환된 메모리의 대응 페이지와 연관된다. XTBA(300)의 저장 비트는, 예를 들어 도 1의 PM$(150)와 같은 변환 표시자 캐시로부터 로드될 수 있거나, 또는 도 1의 PhysMap(170)과 같은 메모리의 페이지들과 연관되는 변환 표시자들의 물리적 맵으로부터 로드될 수 있다.
실시예에서, XTBA(300)는 실행 시에 변환된 명령어의 상태를 모니터링하기 위해 작용할 수 있다. 예를 들어, 변환된 명령어 A1의 실행의 시작 시에, XTBA(300)에서의 (대응하는 변환되지 않은 명령어를 포함하는) 페이지 A와 연관되는 변환 표시자는 변환된 명령어 A1가 유효하다는 것을 표시한다. XTBA(300)는 페이지 A와 연관되고 또한 PhysMap에 저장되는 변환 표시자의 값을 모니터링할 수 있다. 페이지 A와 연관되는 변환 표시자의 값이 변환된 명령어 A1의 실행 동안 변화하면, 변환된 명령어 A1의 실행은 중단될 수 있고, 실행을 완료하기 위해 핸들러에게 보내질 수 있다.
덧붙여, 핸들러는 도 1의 프로세서(100)에서의 각각의 다른 XTBA들에 대한 것과 같이, 시스템의 모든 다른 XTBA들에 대한 스누프들을 발생할 수 있다. 시스템에서의 각각의 다른 XTBA들에 대한 스누프들은 지금 실효된 변환된 명령어에 대응하는 제각기 변환 표시자의 갱신들을 낳을 수 있다. 스누프들은 다른 코어들에서의 변환된 명령어의 실행 중단을 낳을 수 있고, 각각의 코어는 실행을 완료하기 위해 변환된 명령어를 제각기 핸들러에게 보낼 수 있다.
도 4를 이제 참조하면, 도 1의 프로세서(110)와 같은 프로세서와 연관되는 데이터 캐시들의 세트(400)를 묘사하는 블록도가 도시된다. 데이터 캐시들이 세트(400)는 제1 레벨 데이터 캐시(410), 제2 레벨 데이터 캐시(420), 및 제3 레벨 데이터 캐시(430)를 포함한다.
각각의 데이터 캐시는 복수의 캐시 라인을 포함할 수 있다. 각각의 캐시 라인은 데이터 저장 장치 부분들(412, 422, 및 432)과 같은 데이터 저장 장치 부분들을 포함할 수 있는데, 각각의 데이터 저장 장치 부분들은 피연산자, 및 태그 부분들(414, 424, 및 434)과 같은 태그 부분을 저장한다. 각각의 태그 부분은 변환 표시자들(416, 426, 및 436)과 같은 대응하는 저장된 변환 표시자를 포함할 수 있다. 태그 부분에서의 각각의 변환 표시자는 피연산자가 그로부터 복사되었고 데이터 저장 장치 부분에 위치된 메모리에서의 소스 페이지의 변환 표시자에 대응할 수 있다.
일 실시예에서, STORE 명령어는 STORE가 변환된 코드를 포함하는 소스 페이지에게 지향된다는 것을 표시하는 값을 자신의 변환 표시자가 갖는 캐시 라인의 피연산자에 대해 실행되게 된다. 그러므로, STORE 명령어의 실행은 소스 페이지의 내용들을 수정할 것이다. STORE 명령어를 실행하기 위한 프로세서는 캐시 라인에서 변환 표시자 값을 판독함으로써 충돌을 검출할 수 있고, 임박한 충돌을 해결하기 위해 STORE 명령어를 핸들러에게 보내기 위해 변환 표시자를 재설정할 수 있다. 그러므로, 캐시 라인에 저장되는 변환 표시자는 충돌의 표시자의 역할을 할 수 있는데, 예를 들어 변환된 명령어들을 포함하는 소스 코드 페이지의 수정의 역할을 할 수 있다.
STORE 명령어와 연관되는 임박한 충돌의 검출은 제1 값으로부터 제2 값으로의 PhysMap에서의 대응 변환 표시자의 갱신의 발생을 야기할 수 있다. PhysMap의 갱신은 시스템의 모든 XTBA들에 대한 스누프들의 발생을 야기할 수 있다. 각각의 스누프는 변환된 명령어가 실효된 것을 표시하기 위해, 변환된 명령어를 실행하는 코어의 XTBA에서 변환된 명령어의 연관된 변환 표시자를 갱신한다. 스누프들은 또한 소스 코드 페이지와 연관되는 캐시 라인들, 예를 들어 그 내용들이 소스 코드 페이지로부터 로드된 캐시 라인들의 변환 표시자 값들에 대한 갱신들을 낳을 수 있다.
예를 들어, 실시예에서, 프로세서에서의 제1 변환된 명령어의 실행의 개시 시에, 이 프로세서의 XTBA는 소스 코드 페이지의 변환 표시자를 모니터링하게 된다. 소스 코드 페이지의 수정을 표시하는 변환 표시자가 갱신되었다는 표시 시에, XTBA 엔트리는 갱신되어, 지금 실효된 대응하는 명령어의 실행을 멈추는 고장을 야기한다. 덧붙여, 갱신된 변환 표시자의 표시에 응답하여 스누프들이 각각의 캐시들에게 발생될 수 있고, 이는 그 저장된 데이터가 소스 페이지로부터 로드되는 캐시 라인들에서의 각각의 변환 표시자에 대한 갱신들을 낳는다. 특정 캐시 라인에서의 갱신된 변환 표시자 값은 제1 변환된 명령어가 특정 캐시 라인에 대해 실행되지 않을 것이지만, 대신에 실행을 완료하기 위해 핸들러에게 전달될 것임을 표시할 수 있다.
도 5를 이제 참조하면, 자가 수정 코드의 실행으로부터 생기는 충돌에 응답하기 위한 방법 500이 도시된다. 실시예에서, 방법 500은 도 1의 프로세서(102)와 같은 코어에 의해 실행될 수 있다.
블록(510)에서 시작하여, 메모리의 페이지 A에 저장된 코드는, 예를 들어 제1 코딩 언어로부터 제2 코딩 언어로의 이진 변환에 의해 변환된다. 블록(520)으로 계속하면, 코어 0은 페이지 A에 대한 STORE를 포함하여, 변환된 명령어 A1을 실행한다. 블록(530)으로 이동하면, 코어 0은, 예를 들어 페이지 A에 대한 STORE를 실행함으로써 페이지 A의 명령어의 변환 후에 페이지 A에 저장되는 데이터를 수정하기 위한 의도를 표시하는 변환 표시자 값으로부터 충돌을 검출한다. 블록(535)으로 계속하면, 코어 0은 충돌의 검출에 응답하여 고장을 발생한다. 블록(540)으로 계속하면, 코어 0은 대응하는 변환 표시자들의 물리적 맵(PhysMap)을 갱신하고 또한 코어 0과 연관되는 캐시 라인들에서 변환 표시자들의 캐시 라인 갱신을 실행하는 제어를 핸들러에게 전달한다. 블록(550)으로 계속하면, PhysMap의 갱신은 코어 0의 XTBA에 의해 검출되어, 현재 실행되는 변환된 명령어에 대응하는 각각의 XTBA에서 저장된 변환 표시자 값을 갱신하는 스누프가 시스템에서의 각각의 XTBA에게 발생되도록 야기한다. 변환된 명령어의 갱신된 값은 현재 실행되는 명령어가 실효된 것을 표시한다. 다른 코어들과 연관되는 캐시 메모리들의 페이지 A로부터 복사되는 피연산자들을 포함하는 캐시 라인 엔트리들의 변환 표시자 값들도 갱신된다. 방법 500은 블록(560)에서 종료한다.
도 5의 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이것들의 조합들에 의해 실행될 수 있다. 도 5의 실시예에서 높은 수준으로 보여지기는 하였지만, 본 발명의 범위가 그렇게만 제한되지는 않는다는 것을 이해해야 한다.
도 6을 이제 참조하면, 교차 수정 코드의 실행으로부터 생기는 충돌에 응답하기 위한 방법 600이 도시된다. 블록(602)에서 시작하면, DRAM과 같은 메모리의 페이지 A에 저장되는 코드가 코드 A1에 (이진 변환으로) 변환된다. 이 변환은 도 1에 도시된 시스템과 같은 시스템에서 코어에 의해 성취될 수 있거나, 또는 별개의 이진 변환 프로세서에 의해 변환될 수 있다. 블록(604)로 계속하면, 메모리의 페이지 B에 저장되는 코드는 코드 B1에 변환된다. 블록(606)으로 진행하면, 코어 0은 메모리의 페이지 B에 대한 STORE를 포함하여, 변환된 명령어 A1의 실행을 시작한다. 블록(608)으로 이동하면, 코어 0은, 변환 표시자 값으로부터, 변환된 코드를 포함하는 페이지 B에 데이터를 저장하려는 시도로 인한 충돌을 검출한다. 블록(610)으로 진행하면, 코어 0은 충돌의 검출에 응답하여 고장을 발생한다. 블록(612)로 계속하면, 코어 0은 변환 표시자들의 물리적 맵(예를 들어, 도 1의 PhysMap(170))을 갱신하게 되고 및 캐시 라인 변환 표시자 값들을 또한 갱신하게 되는 제어를 핸들러에게 전달한다.
블록(614)으로 진행하면, PhysMap의 갱신은 시스템에서의 모든 XTBA들에 대한 스누프들을 발생한다. 블록(616)으로 이동하면, 코어 1에서의 XTBA는 스누프 히트를 수신하고, 이것은 코어 1에서의 고장을 발생한다. 블록(618)으로 진행하면, 코어 1은 연관된 XTBA에서의 대응하는 갱신된 변환 표시자 값에 응답하여 변환된 명령어 B1의 실행을 중단한다. 방법은 블록(620)에서 종료한다.
도 6의 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이것들의 조합들에 의해 실행될 수 있다. 도 6의 실시예에서 높은 수준으로 보여지기는 하였지만, 본 발명의 범위가 그렇게만 제한되지는 않는다는 것을 이해해야 한다.
실시예들은 많은 상이한 시스템들에서 구현될 수 있다. 예를 들어, 실시예들은 멀티코어 프로세서와 같은 프로세서에서 실현될 수 있다. 도 7을 이제 참조하면, 본 발명의 일 실시예에 따른 프로세서 코어의 블록도가 도시되어 있다. 도 7에 도시된 바와 같이, 코어(700)는 멀티코어 프로세서의 하나의 코어일 수 있고, 다단의 파이프라이닝된 비순차적 프로세서로서 도시된다. 프로세서 코어(700)는 본 발명의 실시예에 따라 데이터 오류 정정과 연계하여 이용되는 다양한 특징들을 예시하기 위해 도 7에서 비교적 단순화된 뷰로 도시된다.
도 7에 도시된 바와 같이, 코어(700)는, 실행될 명령어들을 페치하고 또한 프로세서에서의 이후의 사용을 위해 이들을 준비하는데 사용될 수 있는 프론트 엔드 유닛들(710)을 포함한다. 예를 들어, 프론트 엔드 유닛들(710)은 페치 유닛(701), 명령어 캐시(703), 및 명령어 디코더(705)를 포함할 수 있다. 일부 구현들에서, 프론트 엔드 유닛들(710)은, 마이크로코드 스토리지 뿐만 아니라 마이크로 연산 스토리지와 함께, 트레이스 캐시(trace cache)를 더 포함할 수 있다. 페치 유닛(701)은, 예를 들어 메모리 또는 명령어 캐시(703)로부터 매크로 명령어들을 페치할 수 있으며, 또한 이들을 프리미티브들(primitives), 즉 프로세서에 의한 실행을 위한 마이크로 연산들이 되도록 디코딩하기 위해 이들을 명령어 디코더(705)에게 피드할 수 있다.
마이크로 명령어들을 수신하고 이들을 실행을 위해 준비시키는데 사용될 수 있는 OOO(out-of-order) 엔진(715)이 프론트 엔드 유닛들(710)과 실행 유닛들(720) 사이에 결합된다. 더 구체적으로는, OOO 엔진(715)은, 마이크로 명령어 흐름을 리오더링하고 실행에 필요한 다양한 리소스들을 할당할 뿐만 아니라, 엔진의 리네이밍 로직을 이용함으로써 하는 것과 같이 레지스터 파일(730) 및 확장 레지스터 파일(735)과 같은 다양한 레지스터 파일들 내의 스토리지 로케이션들상으로 논리적 레지스터들의 리네이밍을 제공하기 위한 다양한 버퍼들을 포함할 수 있다. 레지스터 파일(730)은 정수 및 부동 소수점 연산들을 위한 별개의 레지스터 파일들을 포함할 수 있다. 확장 레지스터 파일(735)은 레지스터마다 벡터 크기의 유닛들, 예를 들어 256 또는 512 비트의 스토리지를 제공할 수 있다.
다양한 리소스들은, 그 외의 특수 하드웨어 중에서도, 예를 들어, 다양한 정수, 부동 소수점, 및 SIMD(single instruction multiple data) 로직 유닛들을 포함하는 실행 유닛들(720)에 존재할 수 있다. 예를 들어, 이런 실행 유닛들은 하나 이상의 산술 논리 유닛들(ALU들)(722)을 포함할 수 있다. 물론 곱셈 누산 유닛들(multiply-accumulate units) 및 그 외의 등등과 같은 그 외의 실행 유닛들이 추가로 존재할 수 있다.
일부 실시예들에서, 실행 유닛들(720) 중 하나 이상은 본 명세서에서 기술된 바와 같이 변환 표시자 값들을 캐싱하기 위한 XTBA(724)를 포함할 수 있다. 각각의 실행 유닛들(720)은 복수의 엔트리를 저장할 수 있는 하나 이상의 데이터 캐시들(도시 생략)을 포함할 수 있고, 각각의 엔트리는 본 명세서에서 기술된 바와 같이, 변환 표시자를 포함할 수 있는 메타데이터를 포함할 수 있다.
실행 유닛들(720)의 결과들은 리타이어먼트 로직에게 제공될 수 있는데, 이것은 프로세서의 메모리 서브시스템(760) 내에 구현될 수 있다. 실행 유닛들과 프론트 엔드 로직을 포함하는 다양한 프로세서 구조들이 예를 들어 메모리 서브시스템(760)에 결합될 수 있다. 이 메모리 서브시스템은 프로세서 구조들과 메모리 계층 구조의 추가적 부분들, 예를 들어 온 또는 오프 칩 캐시 및 시스템 메모리 간의 인터페이스를 제공할 수 있다. 알 수 있는 바와 같이 서브시스템은 메모리 오더 버퍼(MOB)(740)를 포함하는 다양한 구성요소들을 갖는다. 보다 상세하게는, MOB(740)는 실행되는 명령어들과 연관되는 정보를 수신하기 위한 다양한 어레이들 및 로직을 포함할 수 있다. 이 정보는 이후 MOB(740)에 의해 조사되어 명령어들이 유효하게 리타이어될 수 있고 또한 결과 데이터가 프로세서의 아키텍처 상태에 커밋(commit)될 수 있는 지를, 또는 명령어들의 적합한 리타이어먼트를 방해하는 하나 이상의 예외들이 발생했는지를 결정하게 된다. 물론, MOB(740)은 리타이어먼트와 연관되는 그 외의 동작들을 취급할 수 있다.
도 7에 도시된 바와 같이, MOB(740)는, 일 실시예에서 저 레벨 캐시(예를 들어, L1 캐시)일 수 있는 캐시(750)에 결합된다. 메모리 서브시스템(760)은 시스템 메모리와의 통신을 제공하기 위한 통합 메모리 컨트롤러(770)를 포함할 수 있다(도 7에서는 설명 용이성을 위해 도시 생략). 메모리 서브시스템(760)은 메모리 요청들을 개시하고 메모리로부터의 데이터 반환을 취급하기 위해 다양한 동작들을 취급하는 메모리 실행 유닛(MEU)(775)을 추가로 포함할 수 있다. 또한, 보여지지는 않았지만, 버퍼들, 스케줄러들 및 그 외의 등등과 같은 다른 구조들이 MEU(775)에 존재할 수 있다는 것을 이해할 것이다.
메모리 서브시스템(760)으로부터, 데이터 통신은 상위 레벨 캐시들, 시스템 메모리 및 그 외의 등등으로 일어날 수 있다. 도 7의 실시예에서는 이러한 높은 수준으로 도시되지만, 본 발명의 범위는 이와 관련하여 제한되지 않는다는 것을 이해해야 한다. 예를 들어, 도 7의 구현이 소위 x86 ISA(instruction set architecture)와 같은 비순차적 기계에 관한 것이지만, 본 발명의 범위는 이와 관련하여 제한되지는 않는다. 즉, 다른 실시예들은 순차적 프로세서, ARM 기반 프로세서와 같은 RISC(reduced instruction set computing) 프로세서, 또는 에뮬레이션 엔진 및 연관된 로직 회로를 통해 상이한 ISA의 명령어들 및 동작들을 에뮬레이팅할 수 있는 또 다른 유형의 ISA의 프로세서로 구현될 수 있다.
즉, 다른 실시예들에서, 프로세서 아키텍처는 프로세서가 소스 ISA라고 불리는 제1 ISA의 명령어들을 실행할 수 있도록 하는 에뮬레이션 특징들을 포함할 수 있는데, 여기서 이 아키텍처는 타깃 ISA라고 불리는 제2 ISA에 따른 것이다. 일반적으로, OS 및 애플리케이션 프로그램들 양쪽을 포함하는 소프트웨어가 소스 ISA에게 컴파일링되고, 하드웨어는 특별한 성능 및/또는 에너지 효율성 특징들을 가진 주어진 하드웨어 구현을 위해 특정적으로 설계된 타깃 ISA를 구현한다.
이제, 도 8을 참조하면, 본 발명의 실시예에 따른 프로세서의 블록도가 도시되어 있다. 도 8에 도시된 바와 같이, 프로세서(800)는 복수의 코어(810a-810n)를 코어 도메인(810)에 포함하는 멀티코어 프로세서일 수 있다. 코어들(810a-810n) 중 하나 이상은 본 명세서에서 기술된 바와 같은 XTBA(도시 생략), 및 각각의 캐시 라인이 본 명세서에서 기술된 바와 같은 변환 표시자를 포함할 수 있는 메타데이터를 포함할 수 있는 데이터 캐시를 포함할 수 있다. 추가로 도 8에 도시된 것처럼, 하나 이상의 그래픽 처리 유닛들(GPU들)(8120-812n)은 그래픽 도메인(812)에 존재할 수 있다. 이러한 독립적 그래픽 엔진들의 각각은 또한 독립적 전압 및/또는 주파수에서 동작하도록 구성될 수 있거나, 또는 단일 도메인으로서 함께 제어될 수 있다. 이들 다양한 컴퓨팅 소자들은 상호 접속부(815)을 통해 다양한 구성 요소들을 포함하는 시스템 에이전트 또는 언코어(uncore)(820)에 결합될 수 있다. 보여진 바와 같이, 언코어(820)는 최종 레벨 캐시일 수 있는 공유 캐시(830)를 포함할 수 있다. 공유 캐시(830)는 복수의 엔트리를 포함할 수 있고, 각각의 캐시 엔트리는 본 명세서에서 기술된 바와 같은, 캐시 엔트리에 저장되는 데이터와 연관되는 변환 표시자를 포함할 수 있는 메타데이터 및 데이터 캐시를 포함할 수 있다. 캐시들 중 하나 이상은 복수의 엔트리를 저장할 수 있고, 각각의 엔트리는 본 명세서에서 기술된 바와 같은 변환 표시자를 포함할 수 있는 메타데이터를 포함할 수 있다. 언코어는 또한 본 명세서에서 기술된 바와 같은 물리적 맵 캐시(PM$)를 포함할 수 있다.
도 8을 더 참조하면, 프로세서(800)는 예를 들어 메모리 버스를 통해 시스템 메모리(860)와 통신할 수 있다. 덧붙여, 인터페이스들(850)에 의해, 주변 장치들, 대량 저장 장치 및 등등과 같은 다양한 오프 칩 구성 요소들에 대한 접속이 이루어질 수 있다. 도 8의 실시예에서 이 특정 구현으로 도시되기는 하였지만, 본 발명의 범위는 이와 관련하여 제한되지는 않는다.
이제 도 9를 참조하면, 본 발명의 또 다른 실시예에 따른 멀티도메인 프로세서의 블록도가 도시되어 있다. 도 9의 실시예에 도시된 바와 같이, 프로세서(900)는 다중 도메인을 포함한다. 특정하게는, 코어 도메인(910)은 복수의 코어(9100 -910n)를 포함할 수 있고, 그래픽 도메인(920)은 하나 이상의 그래픽 엔진들을 포함할 수 있고, 시스템 에이전트 도메인(950)이 추가로 존재할 수 있다. 다양한 실시예들에서, 시스템 에이전트 도메인(950)은 전력 제어 이벤트들 및 전력 관리를 취급하기 위해 항상 파워 온 된 채로 남아 있어서 도메인들(910 및 920)이 동적으로 저 전력 상태들에 진입하고 그로부터 퇴장하기 위해 제어될 수 있도록 할 수 있다.
단지 3개의 도메인으로 도시되어 있기는 하지만, 본 발명의 범위는 이와 관련하여 제한되지는 않고, 다른 실시예들에서는 부가 도메인들이 존재할 수 있다는 점을 유의하라. 예를 들어, 각각이 적어도 하나의 코어를 포함하는 다중 코어 도메인이 존재할 수 있다.
일반적으로, 코어들(910) 중 하나 이상은 다양한 실행 유닛들과 부가적 처리 요소들에 더하여 본 명세서에서 기술된 바와 같은 대응하는 XTBA, 및 저 레벨 캐시들을 추가로 포함할 수 있다. 저 레벨 캐시는 복수의 엔트리를 포함할 수 있고, 각각의 캐시 엔트리는 본 명세서에서 기술된 바와 같은 변환 표시자를 포함할 수 있다. 다음으로, 다양한 코어들은 서로에게 및 최종 레벨 캐시(LLC)의 복수의 유닛(9400-940n)으로 형성되는 공유 캐시 메모리에 결합될 수 있다. 다양한 실시예들에서, LLC(940)는 코어들 및 그래픽 엔진뿐만 아니라 다양한 미디어 처리 회로 중에서 공유될 수 있다. 알 수 있는 바와 같이, 링 상호 접속부(930)가 따라서 코어들을 함께 결합하며, 또한 코어들, 그래픽 도메인(920) 및 시스템 에이전트 회로(950) 간의 상호 접속을 제공한다.
도 9의 실시예에서, 시스템 에이전트 도메인(950)은 연관된 디스플레이의 제어 및 그에 대한 인터페이스를 제공할 수 있는 디스플레이 컨트롤러(952)를 포함할 수 있다. 추가로 알 수 있는 바와 같이, 시스템 에이전트 도메인(950)은 전력 제어 유닛(955)을 포함할 수 있다. 시스템 에이전트 도메인(950)은 시스템 메모리 내의 변환 표시자 값들의 물리적 맵(PhysMap)에 저장되는 변환 표시자 값들의 일부를 저장하기 위한 물리적 맵 캐시(PM$)(956)를 또한 포함할 수 있다.
추가로 도 9에서 알 수 있는 것처럼, 프로세서(900)는 (DRAM과 같은) 시스템 메모리에 대한 인터페이스를 제공할 수 있는 통합 메모리 컨트롤러(IMC)(970)를 추가로 포함할 수 있다. 다중 인터페이스(9800-980n)는 프로세서와 다른 회로 사이의 상호 접속을 가능하게 하기 위해 존재할 수 있다. 예를 들어, 일 실시예에서, 적어도 하나의 DMI(direct media interface) 인터페이스 뿐만 아니라, 하나 이상의 PCIeTM(Peripheral Component Interconnect Express: PCI ExpressTM) 인터페이스들이 제공될 수 있다. 추가로, 부가적 프로세서들 또는 다른 회로들과 같은 다른 에이전트들 간의 통신들을 제공하기 위해, Intel® QPI(Quick Path Interconnect) 프로토콜에 따른 하나 이상의 인터페이스들이 또한 제공될 수 있다. 도 9의 실시예에서는 이러한 높은 수준으로 도시되어 있지만, 본 발명의 범위는 이와 관련하여 제한되지는 않는다는 것을 이해해야 한다.
도 10을 참조하면, 다중 코어를 포함하는 프로세서의 실시예가 도해된다. 프로세서(1000)는 마이크로프로세서, 임베디드 프로세서(embedded processor), DSP(digital signal processor), 네트워크 프로세서, 핸드헬드 프로세서, 애플리케이션 프로세서, 보조 프로세서, SoC(system on a chip), 또는 코드를 실행하기 위한 그 외의 장치와 같은 임의의 프로세서 또는 처리 장치를 포함한다. 일 실시예에서, 프로세서(1000)는 비대칭 코어들 또는 대칭 코어들(예시된 실시예)을 포함할 수 있는 적어도 2개의 코어 - 코어들(1001 및 1002) - 를 포함한다. 그러나, 프로세서(1000)는 대칭 또는 비대칭일 수 있는 임의 수의 처리 요소들을 포함할 수 있다.
일 실시예에서, 처리 요소는 소프트웨어 스레드를 지원하기 위한 하드웨어 또는 로직을 지칭한다. 하드웨어 처리 요소들의 예들은 다음을 포함한다: 스레드 유닛, 스레드 슬롯, 스레드 프로세스 유닛, 문맥(context), 문맥 유닛, 논리적 프로세서(logical processor), 하드웨어 스레드, 코어 및/또는, 실행 상태 또는 아키텍처 상태(architectural state)와 같은 프로세서의 상태를 보유할 수 있는 임의의 다른 요소. 다시 말하면, 일 실시예에서, 처리 요소는 소프트웨어 스레드, 운영 체제, 애플리케이션, 또는 그 외의 코드와 같은 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 지칭한다. 물리적 프로세서는 전형적으로 코어들 또는 하드웨어 스레드들과 같은 임의 수의 그 외의 처리 요소들을 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 독립적 아키텍처 상태를 유지할 수 있는 집적 회로상에 자리 잡은 로직을 종종 지칭하는데, 여기서 각각의 독립적으로 유지되는 아키텍처 상태는 적어도 몇몇 전용 실행 리소스들과 연관된다. 코어들과는 대조적으로, 하드웨어 스레드는 전형적으로 독립적 아키텍처 상태를 유지할 수 있는 집적 회로상에 자리 잡은 임의의 로직을 지칭하는데, 여기서 독립적으로 유지되는 아키텍처 상태들은 실행 리소스들에 대한 접근을 공유한다. 알 수 있는 바와 같이, 소정 리소스들이 공유되고 그 외의 리소스들이 아키텍처 상태에 전용되는 경우, 하드웨어 스레드와 코어의 명명법에 따른 의미 범위가 겹치게 된다. 그렇지만 종종, 코어 및 하드웨어 스레드는 운영 체제에 의해 개별적 논리적 프로세서들로서 보여지며, 이 경우에 운영 체제는 각각의 논리적 프로세서상에서의 연산들을 개별적으로 스케줄링할 수 있다.
물리적 프로세서(1000)는, 도 10에 도해된 바와 같이, 2개의 코어 - 코어들(1001 및 1002) - 를 포함한다. 여기서, 코어들(1001 및 1002)은 대칭 코어들, 즉 동일 구성들, 기능 유닛들, 및/또는 로직을 갖는 코어들이라고 간주된다. 또 다른 실시예에서, 코어(1001)는 비순차적 프로세서 코어를 포함하는 반면, 코어(1002)는 순차적 프로세서 코어를 포함한다. 그러나, 코어들(1001 및 1002)은 원시 코어, 소프트웨어 관리되는 코어, 원시 명령 세트 아키텍쳐(ISA)를 실행하도록 적응된 코어, 변환된 ISA를 실행하도록 적응된 코어, 공동 설계된(co-designed) 코어, 또는 다른 알려진 코어와 같은 임의 유형의 코어로부터 개별적으로 선택될 수 있다. 하지만 논의를 진전시키기 위해, 코어(1001)에 예시되는 기능 유닛들이 하기에서 더 상세하게 설명될 것이고, 코어(1002)의 유닛들도 유사한 방식으로 동작할 것이다.
묘사된 바와 같이, 코어(1001)는 2개의 하드웨어 스레드(1001a 및 1001b)를 포함하는데, 이들은 하드웨어 스레드 슬롯들(1001a 및 1001b)이라고 또한 지칭될 수 있다. 그러므로, 운영체제와 같은 소프트웨어 엔티티들은, 일 실시예에서, 프로세서(1000)를 네 개의 별개의 프로세서, 즉 병행적으로 네 개의 소프트웨어 스레드를 실행할 수 있는 네 개의 논리적 프로세서 또는 처리 요소로서 잠재적으로 볼 수 있다. 앞서 언급한 바와 같이, 제1 스레드는 아키텍처 상태 레지스터들(1001a)과 연관되어 있고, 제2 스레드는 아키텍처 상태 레지스터들(1001b)과 연관되어 있으며, 제3 스레드는 아키텍처 상태 레지스터들(1002a)과 연관되어 있을 수 있고, 제4 스레드는 아키텍처 상태 레지스터들(1002b)과 연관되어 있을 수 있다. 여기서, 아키텍처 상태 레지스터들(1001a, 1001b, 1002a, 및 1002b) 각각은, 앞서 기술한 바와 같이, 처리 요소들, 스레드 슬롯들, 또는 스레드 유닛들이라고 지칭할 수 있다. 예시된 바와 같이, 아키텍처 상태 레지스터들(1001a)은 아키텍처 상태 레지스터들(1001b)에 복제되고, 따라서 개별적 아키텍처 상태들/문맥들은 논리적 프로세서(1001a) 및 논리적 프로세서(1001b)에 대해 저장될 수 있다. 코어(1001)에서, 할당기 및 리네이머 블록(allocator and renamer block)(1030)에서의 리네이밍 로직 및 명령어 포인터들과 같은 그 외의 더 작은 리소스들이 또한 스레드들(1001a 및 1001b)에 대해 복제될 수 있다. 리오더/리타이어먼트 유닛(1035) 내의 리오더 버퍼들(re-order buffers), ITLB(1020), 로드/저장 버퍼들, 및 큐들과 같은 몇몇 리소스들이 구획화(partitioning)를 통해 공유될 수 있다. 범용 내부 레지스터들, 페이지 테이블 베이스 레지스터(들), 저 레벨 데이터 캐시 및 데이터 TLB(1015), 실행 유닛(들)(1040), 및 비순차적 유닛(1035)의 부분들과 같은 그 외의 리소스들이 잠재적으로는 완전히 공유된다.
프로세서(1000)는 완전히 공유되거나, 구획화를 통해 공유되거나, 또는 처리 요소들에 의해/처리 요소들에게 전용될 수 있는 그 외의 리소스들을 종종 포함한다. 도 10에서, 프로세서의 예시적 논리적 유닛들/리소스들을 구비한 순전히 예시적인 프로세서의 실시예가 예시되어 있다. 프로세서는 이들 기능적 유닛들 중 임의의 것을 포함하거나 생략할 수 있을 뿐만 아니라 묘사되지 않은 임의의 그 외의 알려진 기능 유닛들, 로직, 또는 펌웨어를 포함할 수 있다는 것에 유의한다. 예를 들어, 각각의 코어는 본 명세서에서 기술된 바와 같은 XTBA를 포함할 수 있다. 도해된 바와 같이, 코어(1001)는 단순화된 대표적 OOO 프로세서 코어를 포함한다. 그러나 순차적 프로세서가 상이한 실시예들에서 이용될 수 있다. OOO 코어는 실행될/취해질 브랜치들을 예측하는 브랜치 타깃 버퍼(branch target buffer)(1020) 및 명령어들에 대한 주소 변환 엔트리들(address translation entries)을 저장하는 I-TLB(1020)를 포함한다.
코어(1001)는 페치 유닛(1020)에 결합되어 페치된 요소들을 디코딩하기 위한 디코딩 모듈(1025)을 추가로 포함한다. 페치 로직은, 일 실시예에서, 제각기 스레드 슬롯들(1001a, 1001b)과 연관되는 개별 시퀀서들을 포함한다. 보통, 코어(1001)는 프로세서(1000)상에서 실행 가능한 명령어들을 정의하고/지정하는 제1 ISA와 연관된다. 종종 제1 ISA의 일부인 기계 코드 명령어들은, 수행될 명령어 또는 동작을 참조하고/지정하는 명령어의 일부분(opcode라고 지칭됨)을 포함한다. 디코딩 로직(1025)은 이들의 opcode들로부터 이들 명령어들을 인식하고 또한 제1 ISA에 의해 정의된 대로의 처리를 위해 디코딩된 명령어들을 파이프라인 내로 물려주는 회로를 포함한다. 예를 들어, 일 실시예에서, 디코더들(1025)은 트랜잭션 명령어(transactional instruction)와 같은 특정 명령어를 인식하도록 설계되거나 적응된 로직을 포함한다. 디코더들(1025)에 의한 인식의 결과로서, 아키텍처 또는 코어(1001)는 적합한 명령어와 연관되는 태스크들을 실행하기 위해 특정의 미리 정의된 행위들을 취한다. 본 명세서에서 설명되는 태스크들, 블록들, 동작들, 및 방법들 중 임의의 것은 단일 또는 다중 명령어에 응답하여 실행될 수 있고; 이들 중 몇몇은 신(new) 또는 구(old) 명령어들일 수 있다는 점에 주목하는 것이 중요하다.
하나의 예에서, 할당기 및 리네이머 블록(1030)은 명령어 처리 결과들을 저장하기 위한 레지스터 파일들과 같은 리소스들을 보유(reserve)하는 할당기를 포함한다. 그렇지만, 스레드들(1001a 및 1001b)은 잠재적으로 비순차적 실행을 할 수 있고, 이 경우 할당기 및 리네이머 블록(1030)은 또한 명령어 결과들을 추적하기 위한 리오더 버퍼들과 같은 그 외의 리소스들을 보유한다. 유닛(1030)은 또한 프로그램/명령어 참조 레지스터들을 프로세서(1000) 내부의 그 외의 레지스터들에게 리네이밍하는 레지스터 리네이머를 포함할 수 있다. 리오더/리타이어먼트 유닛(1035)은 비순차적 실행을 지원하고 또한 비순차적으로 실행되는 명령어들의 이후의 순차적 리타이어먼트를 지원하기 위해 상기에 언급된 리오더 버퍼들, 로드 버퍼들, 및 저장 버퍼들과 같은 구성 요소들을 포함한다.
스케줄러 및 실행 유닛(들) 블록(1040)은, 일 실시예에서, 실행 유닛들상에서 명령어들/연산을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들어, 부동 소수점 명령어는 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트상에서 스케줄링된다. 실행 유닛들과 연관되는 레지스터 파일들은 또한 정보 명령어 처리 결과들을 저장하기 위해 포함된다. 예시적 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 그 외의 알려진 실행 유닛들을 포함한다.
하위 레벨 데이터 캐시 및 D-TLB(data translation buffer)(1051)가 실행 유닛(들)(1040, 1041)에 결합되어 있다. 데이터 캐시는 메모리 일관성 상태들에 잠재적으로 유지되는, 데이터 피연산자들과 같은 최근에 사용된/연산 처리된 요소들을 저장하게 된다. D-TLB(1051)는 최근의 가상/선형 대 물리적 주소 변환들을 저장하게 된다. 특정 예로서, 프로세서는 물리적 메모리를 복수의 가상 페이지로 분할하기 위한 페이지 테이블 구조를 포함할 수 있다. 각각의 데이터 캐시는 복수의 엔트리를 저장할 수 있고 각각의 엔트리는 본 명세서에서 기술된 바와 같은 변환 표시자를 포함할 수 있는 메타데이터를 포함할 수 있다.
여기서, 코어들(1001 및 1002)은 최근에 페치된 요소들을 캐싱하게 되는 상위 레벨 또는 심화 (further-out) 캐시(1010)에 대한 접근을 공유한다. 각각의 심화 캐시(1010)는 복수의 엔트리를 저장할 수 있고 각각의 엔트리는 본 명세서에서 기술된 바와 같은 변환 표시자를 포함할 수 있는 메타데이터를 포함할 수 있다. 상위 레벨 또는 심화라는 표현은 실행 유닛(들)으로부터 증가하거나 또는 더 멀리 떨어진 캐시 레벨을 지칭한다는 것을 유의한다. 일 실시예에서, 상위 레벨 캐시(1010)는 제2 또는 제3 레벨 데이터 캐시와 같은 최종 레벨 데이터 캐시 - 프로세서(1000)상의 메모리 계층 구조에서의 최종 캐시- 이다. 그러나, 상위 레벨 캐시(1010)는 명령어 캐시를 포함하거나 이것을 포함할 수 있으므로, 그렇게만 제한되지는 않는다. 트레이스 캐시(trace cache) - 일종의 명령어 캐시 - 는 최근에 디코딩된 트레이스들을 저장하기 위해 디코더(1025) 후에 대신에 결합될 수 있다.
묘사된 구성에서, 프로세서(1000)는 또한 버스 인터페이스 모듈(1005)을 포함한다. 역사적으로, 컨트롤러(1070)는 프로세서(1000) 외부의 컴퓨팅 시스템에 포함되었다. 이 시나리오에서, 버스 인터페이스(1005)는 시스템 메모리(1075), 칩셋(메모리(1075)에 접속되는 메모리 컨트롤러 허브 및 주변 장치들을 접속하는 I/O 컨트롤러 허브를 종종 포함함), 메모리 컨트롤러 허브, 본 명세서에서 설명된 물리적 맵 캐시(PM$), 노스브리지, 또는 다른 집적 회로와 같은, 프로세서(1000)의 외부에 있는 장치들과 통신하기 위한 것이다. 그리고 이 시나리오에서, 버스(1005)는 멀티 드롭 버스, 포인트 투 포인트 상호 접속부, 직렬 상호 접속부, 병렬 버스, 일관성(예컨대, 캐시 일관성(cache coherent)) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 알려진 상호 접속부를 포함할 수 있다.
메모리(1075)는 프로세서(1000)에 전용되어 있거나 또는 시스템 내의 다른 장치들과 공유될 수 있다. 메모리(1075) 유형들의 흔한 예로서는, DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 그 외의 알려진 스토리지 장치들이 포함된다. 장치(1080)가 그래픽 가속기, 메모리 컨트롤러 허브에 결합되는 프로세서 또는 카드, I/O 컨트롤러 허브에 결합되는 데이터 스토리지, 무선 송수신기, 플래시 장치, 오디오 컨트롤러, 네트워크 컨트롤러, 또는 기타 알려진 장치를 포함할 수 있다는 것을 유의하라.
그러나, 묘사된 실시예에서, 컨트롤러(1070)는 프로세서(1000)의 일부로서 예시되어 있다는 점에 유의한다. 최근에, 더 많은 로직 및 장치들이 SOC와 같은 단일 다이상에 집적됨에 따라, 이들 장치들 각각은 프로세서(1000)상에 통합될 수 있다. 예를 들어, 일 실시예에서, 메모리 컨트롤러 허브(1070)는 프로세서(1000)와 동일한 패키지 및/또는 다이상에 있다. 여기서, 코어의 부분(온 코어 부분)은 메모리(1075) 또는 그래픽 장치(1080)와 같은 그 외의 장치들과 인터페이싱하기 위한 하나 이상의 컨트롤러(들)(1070)를 포함한다. 그러한 장치들과 인터페이싱하기 위한 상호 접속부 및 컨트롤러들을 포함하는 구성은 종종 온 코어(또는 언코어(un-core) 구성)이라고 지칭된다. 예로서, 버스 인터페이스(1005)는, 메모리(1075)와 인터페이싱하기 위한 메모리 컨트롤러 및 그래픽 프로세서(1080)와 인터페이싱하기 위한 그래픽 컨트롤러를 구비한 링 상호접속부를 포함한다. 하지만, SOC 환경에서, 네트워크 인터페이스, 보조 프로세서들, 메모리(1075), 그래픽 프로세서(1080), 및 임의의 다른 알려진 컴퓨터 장치들/인터페이스와 같은 더욱 많은 장치들이 높은 기능성과 저 전력 소비를 가진 소형 폼 팩터를 제공하기 위해 단일 다이 또는 집적 회로상에 집적될 수 있다.
실시예들은 많은 상이한 시스템 유형들에서 구현될 수 있다. 이제 도 11을 참조하면, 본 발명의 실시예에 따른 시스템의 블록도가 도시된다. 도 11에 도시된 바와 같이, 멀티프로세서 시스템(1100)은 포인트 투 포인트 상호 접속 시스템이고, 포인트 투 포인트 상호 접속부(1150)를 통해 결합되는 제1 프로세서(1170) 및 제2 프로세서(1180)를 포함한다. 도 11에 도시된 바와 같이, 각각의 프로세서들(1170 및 1180)은 제1 및 제2 프로세서 코어들(즉, 프로세서 코어들(1174a 및 1174b)과 프로세서 코어들(1184a 및 1184b))을 포함하는 멀티코어프로세서들일 수 있는데, 잠재적으로 더 많은 코어들이 프로세서들에 존재할 수 있다. 프로세서들 중 하나 이상은 본 명세서에서 기술된 바와 같은 XTBA 및 제각기 캐시를 포함할 수 있다. 캐시들 중 하나 이상은 복수의 엔트리를 저장할 수 있고 각각의 엔트리는 본 명세서에서 기술된 바와 같은 변환 표시자를 포함할 수 있는 메타데이터를 포함할 수 있다.
도 11을 더 참조하면, 제1 프로세서(1170)는 메모리 컨트롤러 허브(MCH)(1172) 및 포인트 투 포인트(P-P) 인터페이스들(1176 및 1178)을 더 포함한다. 유사하게, 제2 프로세서(1180)는 MCH(1182) 및 P-P 인터페이스들(1186 및 1188)을 포함할 수 있다. 도 11에 도시된 바와 같이, MCH들(1172 및 1182)은 프로세서들을 제각기 메모리들, 즉 메모리(1132)와 메모리(1134)에 연결하는데, 이것들은 제각기 프로세서들에게 국지적으로 소속되는 시스템 메모리(예를 들어, DRAM)의 부분들일 수 있다. 제1 프로세서(1170) 및 제2 프로세서(1180)는 제각기 P-P 상호 접속부들(1152 및 1154)을 통해 칩셋(1190)에 결합될 수 있다. 도 11에 도시된 바와 같이, 칩셋(1190)은 P-P 인터페이스들(1194 및 1198)을 포함한다. 각각의 프로세서는 본 명세서에서 기술된 바와 같은 물리적 맵 캐시(PM$)(도시 생략)에 대한 접근을 가질 수 있다.
더욱이, 칩셋(1190)은 P-P 상호 접속부(1139)에 의해 칩셋(1190)을 고성능 그래픽 엔진(1138)과 결합하기 위한 인터페이스(1192)를 포함한다. 다음으로, 칩셋(1190)은 인터페이스(1196)를 통해 제1 버스(1116)에 결합될 수 있다. 도 11에 도시된 바와 같이, 다양한 입력/출력(I/O) 장치들(1114)이 제1 버스(1116)를 제2 버스(1120)에 결합하는 버스 브리지(1118)와 함께 제1 버스(1116)에 결합될 수 있다. 예를 들어, 키보드/마우스(1122), 통신 장치들(1126) 및 일 실시예에서 코드(1130)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 스토리지 장치와 같은 데이터 스토리지 유닛(1128)을 포함하는 다양한 장치들이 제2 버스(1120)에 결합될 수 있다. 또한, 오디오 I/O(1124)가 제2 버스(1120)에 결합될 수 있다. 실시예들은 스마트 셀룰러 폰, UltrabookTM, 태블릿 컴퓨터, 넷북, 또는 기타 등등과 같은 모바일 장치들을 포함하는 다른 유형의 시스템들에 통합될 수 있다.
실시예들은 코드로 구현될 수 있으며 또한 명령어들을 실행하도록 시스템을 프로그래밍하는데 사용될 수 있는 명령어들이 그 상에 저장되는 비 일시적 스토리지 매체상에 저장될 수 있다. 스토리지 매체는 플로피 디스크들, 광학 디스크들, SSD들(solid state drives), CD-ROM들(compact disk read-only memories), CD-RW들(compact disk rewritables), 및 광자기 디스크들(magneto-optical disks)을 포함하는 임의의 유형의 디스크, ROM들(read-only memories), DRAM들(dynamic random access memories) 및 SRAM들(static random access memories)과 같은 RAM들(random access memories), EPROM들(erasable programmable read-only memories), 플래시 메모리들, EEPROM(electrically erasable programmable read-only memories)과 같은 반도체 장치들, 자성 또는 광 카드들, 또는 전자적 명령어들을 저장하는데 적절한 임의의 다른 유형의 매체를 포함할 수 있지만, 이것들에만 국한되는 것은 아니다.
실시예들은 복수의 상이한 유형의 시스템에 이용될 수 있다. 예를 들어, 일 실시예에서, 통신 장치는 본 명세서에서 기술된 다양한 방법들 및 기술들을 실행하도록 배치될 수 있다. 물론, 본 발명의 범위는 통신 장치에 제한되지 않으며, 대신에 다른 실시예들은 명령어들을 처리하는 다른 유형의 장치들, 또는 컴퓨팅 장치상에서 실행되는 것에 응답하여 장치로 하여금 본 명세서에서 기술되는 방법들 및 기술들 중 하나 이상을 수행하도록 야기하는 명령어들을 포함하는 하나 이상의 기계 판독가능 매체를 지향할 수 있다.
본 발명이 한정된 수의 실시예들에 의하여 설명되기는 하였지만, 통상의 기술자는 이것들로부터 수많은 변경들과 변형들을 인식할 수 있을 것이다. 첨부된 청구항들은 본 발명의 진정한 사상과 범위에 속하는 모든 이러한 변경들과 변형들을 포괄한다.

Claims (1)

  1. 제1항에 의한 방법 및 장치.
KR1020177014865A 2012-12-27 2012-12-27 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리 KR20170066681A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/071880 WO2014105030A1 (en) 2012-12-27 2012-12-27 Handling of binary translated self modifying code and cross modifying code

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020157011970A Division KR101744081B1 (ko) 2012-12-27 2012-12-27 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리

Publications (1)

Publication Number Publication Date
KR20170066681A true KR20170066681A (ko) 2017-06-14

Family

ID=51018889

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157011970A KR101744081B1 (ko) 2012-12-27 2012-12-27 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리
KR1020177014865A KR20170066681A (ko) 2012-12-27 2012-12-27 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020157011970A KR101744081B1 (ko) 2012-12-27 2012-12-27 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리

Country Status (4)

Country Link
US (1) US9116729B2 (ko)
KR (2) KR101744081B1 (ko)
CN (1) CN104813278B (ko)
WO (1) WO2014105030A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102111886B1 (ko) * 2019-08-12 2020-05-15 한국과학기술원 Arm 아키텍쳐 상의 동적 프로그램 수정 탐지 기술

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959493B2 (en) * 2011-06-27 2015-02-17 International Business Machines Corporation Using range validation in assembly language programming
US9223553B2 (en) * 2013-09-26 2015-12-29 Intel Corporation Methods and apparatus to validate translated guest code in a dynamic binary translator
US9367477B2 (en) 2014-09-24 2016-06-14 Intel Corporation Instruction and logic for support of code modification in translation lookaside buffers
US10635465B2 (en) 2015-03-28 2020-04-28 Intel Corporation Apparatuses and methods to prevent execution of a modified instruction
CN106933539B (zh) * 2016-04-20 2019-03-15 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法
US10437315B2 (en) 2017-06-22 2019-10-08 Intel Corporation System, apparatus and method for dynamically controlling error protection features of a processor
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
CN111045958B (zh) * 2018-10-11 2022-09-16 展讯通信(上海)有限公司 加速引擎及处理器
CN109683959B (zh) * 2018-12-24 2020-12-01 安谋科技(中国)有限公司 处理器的指令执行方法及其处理器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6704925B1 (en) * 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
US6363336B1 (en) 1999-10-13 2002-03-26 Transmeta Corporation Fine grain translation discrimination
US6594734B1 (en) * 1999-12-20 2003-07-15 Intel Corporation Method and apparatus for self modifying code detection using a translation lookaside buffer
US6748584B1 (en) 1999-12-29 2004-06-08 Veritas Operating Corporation Method for determining the degree to which changed code has been exercised
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US20030093775A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Processing of self-modifying code under emulation
US7107580B2 (en) * 2003-01-07 2006-09-12 Intel Corporation Binary translation of self-modifying code
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
WO2006045029A1 (en) * 2004-10-19 2006-04-27 Platform Solutions, Inc. Processing of self-modifying code in multi-address-space and multi-processor systems
US7774746B2 (en) 2006-04-19 2010-08-10 Apple, Inc. Generating a format translator
GB0813833D0 (en) * 2008-07-29 2008-09-03 Transitive Ltd Apparatus and method for handling page protection faults in a computing system
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US20120023307A1 (en) 2010-07-23 2012-01-26 Robert Paul Morris Methods, systems, and computer program products for excluding an addressable entity from a translation of source code
JP5792577B2 (ja) * 2010-11-10 2015-10-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 動的バイナリ・トランスレータに関するメモリ管理のための装置、方法、およびコンピュータ・プログラム
CN102087609B (zh) * 2011-02-23 2013-06-05 中国人民解放军国防科学技术大学 多处理器平台下的动态二进制翻译方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102111886B1 (ko) * 2019-08-12 2020-05-15 한국과학기술원 Arm 아키텍쳐 상의 동적 프로그램 수정 탐지 기술

Also Published As

Publication number Publication date
CN104813278A (zh) 2015-07-29
CN104813278B (zh) 2019-01-01
US9116729B2 (en) 2015-08-25
US20140189659A1 (en) 2014-07-03
KR20150067327A (ko) 2015-06-17
KR101744081B1 (ko) 2017-06-07
WO2014105030A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
KR101744081B1 (ko) 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리
CN108292221B (zh) 事务结束加上持续性提交指令、处理器、方法和系统
CN106575218B (zh) 持久性存储屏障处理器、方法、系统和指令
US10409612B2 (en) Apparatus and method for transactional memory and lock elision including an abort instruction to abort speculative execution
KR102496402B1 (ko) 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어
US9069690B2 (en) Concurrent page table walker control for TLB miss handling
US20150032998A1 (en) Method, apparatus, and system for transactional speculation control instructions
US9329865B2 (en) Context control and parameter passing within microcode based instruction routines
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
KR20170001568A (ko) 영구 커밋 프로세서들, 방법들, 시스템들 및 명령어들
US20160378160A1 (en) Hardware apparatuses and methods to perform transactional power management
KR102298403B1 (ko) 제어 전송 인스트럭션으로의 리턴
US11048516B2 (en) Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
US9904586B2 (en) Interfacing with block-based storage in a processor
US20190205061A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US8990512B2 (en) Method and apparatus for error correction in a cache
US9389897B1 (en) Exiting multiple threads of a simulation environment in a computer
US8996923B2 (en) Apparatus and method to obtain information regarding suppressed faults
WO2013147895A2 (en) Dynamic physical register use threshold adjustment and cross thread stall in multi-threaded processors

Legal Events

Date Code Title Description
A107 Divisional application of patent
E601 Decision to refuse application