KR101533224B1 - 호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원 - Google Patents

호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원 Download PDF

Info

Publication number
KR101533224B1
KR101533224B1 KR1020107028671A KR20107028671A KR101533224B1 KR 101533224 B1 KR101533224 B1 KR 101533224B1 KR 1020107028671 A KR1020107028671 A KR 1020107028671A KR 20107028671 A KR20107028671 A KR 20107028671A KR 101533224 B1 KR101533224 B1 KR 101533224B1
Authority
KR
South Korea
Prior art keywords
memory
data
stop
memory access
instruction
Prior art date
Application number
KR1020107028671A
Other languages
English (en)
Other versions
KR20110019750A (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 KR20110019750A publication Critical patent/KR20110019750A/ko
Application granted granted Critical
Publication of KR101533224B1 publication Critical patent/KR101533224B1/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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)

Abstract

데이터 처리장치(12)에는, 메모리 중지를 트리거하는 메모리 관리부(24)가 구비되어 있다. 메모리 중지가 일어나는 경우, 상기 메모리 중지의 특징이 있는 데이터는 폴트 상태 레지스터(28)(메모리 중지 레지스터)에 기록된다. 상기 메모리 중지의 특징이 있는 데이터는, 메모리 중지를 일으킨 상기 메모리 액세스와 연관된 레지스터 번호를 식별하는 데이터를 포함한다. 이 레지스터 식별 데이터를 사용하여 상기 메모리 중지에 이끌어진 상기 프로그램 명령어를 판독시키지 않고 상기 메모리 액세스 명령어의 동작을 에뮬레이트한다. 이것은, 가상 데이터 처리장치(2)에 대해 가상화를 지원할 때 유용하다.

Description

호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원{DEVICE EMULATION SUPPORT WITHIN A HOST DATA PROCESSING APPARATUS}
본 발명은, 데이터 처리 시스템에 관한 것이다. 보다 구체적으로, 본 발명은, 데이터 처리장치의 가상화를 지원하는 데이터 처리 시스템에 관한 것이다.
데이터 처리 시스템의 가상화를 지원하는 호스트 데이터 처리 시스템을 제공하는 것이 알려져 있다. 호스트 데이터 처리 시스템과 가상 데이터 처리 시스템간의 차이의 규모는, 상당히 변화할 수 있다. 일부의 예들에서, 가상 데이터 처리 시스템은, 기본 프로세서 구조가 상기 호스트 데이터 처리장치와 같은 데이터 처리장치의 약간 다른 버전 또는 구현이어도 된다. 다른 예에서, 가상 데이터 처리장치는, 호스트 데이터 처리장치와 완전히 달라도 된다, 예를 들면, RISC 또는 CISC 호스트 데이터 처리장치에 의해 에뮬레이트된 스택 기반 자바(Java) 가상 머신이어도 된다.
이러한 가상화 분야내에서는, 게스트 운영체계 또는 프로그램에 대해 실제 하드웨어 디바이스라고 착각하게 하는 가상 디바이스를 지원할 필요가 많다. 이들 가상 디바이스는, 실제로 하이퍼바이저(hypervisor) 소프트웨어에 의해 제공된다. 디바이스들(실제 및 가상 양쪽)을 지원하는 편리한 방식은 디바이스들이 메모리 매핑되고, 그 디바이스들에의 액세스는 그 메모리 매핑된 어드레스에 로딩 또는 기억되는 형태를 취한다. 가상 데이터 처리장치의 가상 디바이스들을 지원하는 경우, 이들 메모리 매핑된 어드레스에서의 가상 디바이스들에의 액세스를 상기 하이퍼바이저 소프트웨어로 보내어 처리를 행하는 것이 필요하다. 공지된 기술은, 상기 메모리 매핑된 가상 디바이스를 포함하는 대응한 메모리 영역을 "무효" 또는 "액세스 금지(No access)"로 설정하여 이들 메모리 위치로의 액세스들을 트래핑(traping)하고 상기 하이퍼바이저 프로그램에 보내지는 결과적인 예외적인 것을 처리하는 기술이다.
이러한 방법이 갖는 문제점은, 상기 가상 디바이스를 액세스하려고 했던 명령어를 복호화하여 그 액세스를 에뮬레이트 할 필요가 있다. 상기 예외적인 것을 일반적으로 트리거하는 메모리 관리부(MMU)는, 통상, 상기 어드레스를 제공하기도 하고(또는 그 어드레스의 제공을 트리거하기도 하고), 상기 예외적인 것이 실시되는 액세스와 연관된 정보를 판독/기록도 할 것이다. 실제의 환경 내에서, 이것은, 통상, 상기 메모리 액세스와 연관된 예외적인 것을 효율적으로 처리하는데 충분하다.
본 발명의 일 국면에서 본 호스트 데이터 처리장치에 가상 데이터 처리장치의 가상화를 지원하는 방법은,
상기 가상 데이터 처리장치에 의해 메모리 액세스 동작을 포함하는 처리를 에뮬레이트하기 위한 프로그램 명령어들로 이루어진 스트림을 상기 호스트 데이터 처리장치가 실행하는 단계;
상기 가상 데이터 처리장치의 메모리 매핑된 디바이스에 대응한 메모리 어드레스에 관해 메모리 액세스 동작을 수행하도록 하는 상기 호스트 데이터 처리장치에 의한 메모리 액세스 명령어의 중지된 실행(aborted execution)을 검출회로로 검출하는 단계;
상기 메모리 액세스 동작의 특징이 있고, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함하는 메모리 중지 데이터를 메모리 중지 회로로 메모리 중지(abort) 레지스터에 기록하는 단계; 및
상기 호스트 데이터 처리장치에 의해 메모리 중지 처리 프로그램의 실행으로 메모리 중지 예외를 트리거하여;
(i) 상기 메모리 중지 레지스터로부터 상기 메모리 중지 데이터를 판독하고;
(ii) 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 상기 데이터를 포함한 상기 메모리 중지 데이터를 사용하여 상기 메모리 액세스 동작을 에뮬레이트하고;
(iii) 상기 프로그램 명령어들로 이루어진 스트림의 실행으로 복귀하는 단계를 포함하고,
상기 메모리 중지 데이터는 상기 메모리 중지 데이터가 상기 메모리 중지 예외를 트리거한 상기 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 포함하고, 상기 호스트 데이터 처리장치가 상기 메모리 중지 처리 프로그램 명령어를 실행하여 상기 유효성 데이터로부터, 상기 메모리 중지의 특징이 있는 상기 메모리 중지 데이터가 상기 메모리 중지 예외에 대해 유효하지 않은 것으로 판정하는 경우, 상기 호스트 데이터 처리장치는 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 메모리 액세스 동작을 에뮬레이트하기 위하여 상기 메모리 액세스 명령어로부터 하나 이상의 파라미터를 판정한다.
본 기술에 의해 안 것은, 가상 데이터 처리장치의 가상화를 지원하는 경우, 상기 중지를 일으키는 상기 메모리 액세스에 관한 추가의 정보가 상기 메모리 액세스를 에뮬레이트할 수 있도록 필요하고, 이 추가의 정보의 취득이 느린 것이 단점이다는 것이다. 특히, 공지된 메카니즘으로는, 상기 메모리 중지를 일으키는 명령어를 식별하고 복호화하여 어느 CPU 레지스터가 상기 에뮬레이션을 진행할 수 있도록 로딩되거나 기억되고 있는지를 식별할 필요가 있다. 이러한 식별은, 일반적으로 다수회의 단계를 소모한다. 우선, 상기 명령어 자체의 정확한 위치를 찾아내야 한다; 상기 중지가 일어날 때 제공된 상기 명령어의 어드레스는, 게스트 운영체계 어드레스 공간에서의 가상 어드레스인 경우가 많고, 이 가상 어드레스는 하이퍼바이저 어드레스 공간에서의 가상 어드레스로 (보통 2개 또는 3개의 변환단계를 거쳐) 변환되고나서 판독될 수 있어야 한다. 상기 중지 명령어의 어드레스가 판정되었으면, 그 명령어는 판독될 수 있다. 별도의 데이터와 명령어 캐쉬를 갖는 시스템(Harvard) 상에서, 보통, 이것에 의해 데이터 미스(miss)의 원인이 되고, 상기 데이터 미스를 만족시키기 위해 다수의 싸이클을 필요로 할 것이다. 그리고, 그 명령어를 복호화할 필요가 있다. 다수의 데이터 처리장치에서는 다양한 서로 다른 방식으로 상기 명령어가 메모리를 액세스할 수 있고, 소스/목적지 레지스터를 식별하도록 수신된 명령어를 복호화하는 것과 연관된 상당한 정도의 복잡성과, 에뮬레이션이 진행될 수 있는 상기 메모리 액세스의 다른 특징들일 수 있다.
본 기술에 의하면 하드웨어 효율 방식에 있어서 이들의 문제점을 인식 및 극복한다. 대다수의 경우에, 가상 디바이스에의 액세스의 에뮬레이션에 필요한 정보는, 메모리 액세스 동작으로 액세스된 보다 많은 레지스터들 중 하나의 식별 정보이고(그들이 소스 레지스터인가 목적지 레지스터인가의 여부), 본 기술은 상기 메모리 중지 회로에 확대되어 이 데이터를 메모리 중지용 레지스터에 기록한다. 실제로, 본 레지스터 식별 데이터는, 메모리 액세스 명령어의 통상의 동작에 필요한대로 이미 통상적으로 존재하고, 필요한 추가의 메카니즘은 이 정보를 가상 데이터 처리장치의 상기 메모리 매핑 디바이스에의 액세스 발생시에 기억되는 메모리 중지 레지스터에 집결시킨다. 그리고, 중지 처리 프로그램 명령어는, 이 레지스터 식별정보를 상기 메모리 중지 레지스터로부터 직접 판독하고 이를 사용하여 메모리 액세스 동작을 비교적 고속으로 또 상기 레지스터(들)를 식별할 수 있도록 상기 메모리 액세스를 일으켰던 상기 명령어의 판독을 필요로 하지 않고 에뮬레이트한다. 이렇게 본 기술은, 가상 데이터 처리장치의 가상화를 위한 하드웨어 지원과, 이 하드웨어 지원을 이용하여 가상 디바이스들을 보다 효율적으로 가상화하기 위한 기술을 제공한다.
상기 메모리 중지 데이터는, 상기 메모리 중지 데이터가 상기 메모리 중지를 트리거한 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 추가로 포함할 수 있다. 그 메모리 중지 데이터가 유효하지 않은 경우, 메모리 중지 처리 프로그램 명령어는 이를 상기 유효성 데이터로부터 판정하여, 상기 메모리로부터 상기 메모리 중지를 일으켰던 메모리 액세스 명령어를 판독하고 그 판독된 명령어로부터 메모리 액세스 명령어 파라미터를 직접 판정하는 것으로 복귀할 수 있다. 이렇게, 하드웨어 설계자는, 어느 명령어가 신드롬 데이터를 제공할만큼 충분히 단순한지와, 보다 복잡하고 하드웨어적으로 하드웨어 오버헤드의 지원을 추가할만한 가치가 없는 것들을 선택할 수 있다.
상기 메모리 중지 데이터는, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 넘어서는 추가의 정보를 포함할 수 있다는 것을 알 것이다. 상기 하나 이상의 레지스터를 나타내는 데이터는, 가장 일반적인 경우의 가상 디바이스 액세스를 쉽게 지원할 수 있고 그 메모리 중지 레지스터 내에 기억된 데이터의 확장은 지원된 액세스들의 형태를 확장할 것이다. 상기 메모리 중지 데이터는, 메모리 액세스 동작이 실시되는 데이터 워드의 사이즈를 나타내는 데이터, 동작이 판독동작 또는 기록동작인지의 여부에 관한 데이터, 소스 레지스터 또는 목적지 레지스터를 나타내는 데이터, 그 데이터 워드를 상기 메모리 액세스의 일부로서 부호 확장시키는지의 여부를 나타내는 데이터, 및 상기 메모리 액세스 명령어의 명령어 사이즈를 나타내는 데이터로 이루어지도록 확장될 수 있다.
삭제
일부의 메모리 액세스 명령어는, 액세스되는 메모리 어드레스를 나타내는 어드레스 값을 기억하는 기준 레지스터를 이용하고, 그 명령어는 상기 메모리 액세스 명령어의 실행과 연관된 그 값(예를 들면, 프리(pre) 인덱싱 또는 포스트(post) 인덱싱)에 관해 수행되는 갱신을 지정한다. 상기 유효성 데이터는, 상기 명령어들과 관련하여 사용되어, 상기 메모리 액세스의 특징이 있는 데이터가 기준 레지스터를 갱신하는 상기 명령어들에 대해 유효하지 않은 것을 나타낼 수 있고, 이들의 경우에 상기 명령어 자체는, 메모리로부터 판독되고 복호화되어, 수행되는 상기 갱신의 성질을 판정할 수 있다.
상기 메모리 액세스의 특징이 있는 데이터가 유효하지 않은 것을 나타내는데 상기 유효성 데이터를 사용할 수 있는 또 다른 클래스의 명령어는, ARM 프로세서에서 제공한 명령어들 등의 로드/스토어(load/store)의 다수의 명령어이다. 예상되는 것은, 이들 명령어의 형태들이 디바이스들을 액세스하는데 드물게 사용되고, 그와 같이 신드롬 레지스터에 명령어들을 제공하는데 필요한 상당한 하드웨어 오버헤드가 정당화되기에 충분한 이점을 얻지 못할 것이다. 상기 유효 데이터는, 이러한 형태의 메모리 액세스의 특징이 있는 데이터가 유효하게 제공되지 않은 것을 나타내는데 사용될 수 있다.
다른 실시예에서는, 갱신 레지스터를 제공할 수 있고, 메모리 중지를 일으키는 메모리 액세스 명령어의 실행과 연관하여 기준 레지스터 내에 기억된 어드레스 값에 관해 수행되는 갱신의 특징이 있는 갱신 데이터를 갱신 레지스터에 기록할 수 있다. 이러한 갱신 레지스터는, 메모리 중지 처리 프로그램 명령어에 의해 판독되고, 상기 가상 디바이스에의 액세스의 에뮬레이션의 일부로서 기준 레지스터 내에 기억된 어드레스 값에 관해 필요한 갱신을 수행하는데 사용될 수 있다.
서로 다른 다양한 방식으로 가상화를 지원할 수 있지만, 본 기술은, 실행되고, 상기 메모리 중지를 일으킬 수 있는 메모리 액세스 명령어들을 포함하는 프로그램 명령어들로 이루어진 스트림이, 하이퍼바이저 프로그램의 제어하에 호스트 데이터 처리장치에서 에뮬레이트 하는 상기 가상 데이터 처리장치에 의해 게스트 운영체계의 실행으로 그 게스트 운영체계의 제어하에 있는 실시예들에 아주 적합하다. 층을 이룬 이러한 가상화 형태는, 본 분야의 것들과 유사하고, 본 기술이 해결하려고 하는 느린 가상 디바이스 에뮬레이션의 문제가 되는 타입을 갖는다.
가상 데이터 처리장치의 메모리 매핑된 디바이스로의 메모리 액세스를 검출하는 기능을 하는 검출회로는, 페이지 테이블 데이터를 사용하여 메모리 내의 메모리 어드레스에의 액세스를 제어하는 메모리 관리부의 형태를 나타낼 수 있다. 이러한 메모리 관리부는, 다른 이유로 제공되는 것이 일반적이고, 가상 메모리 매핑 디바이스에의 메모리 액세스를 트래핑(trapping)하는데 재사용될 수 있다. 상기 메모리 매핑 디바이스에서 사용한 페이지 테이블 데이터는, 메모리 액세스 명령어가 가상 메모리 매핑 디바이스에의 메모리 액세스 동작을 수행하려고 하는 경우 중지를 트리거하는 값들로 프로그래밍될 수 있다.
본 발명의 다른 국면에서 본 가상 데이터 처리장치의 가상화를 지원하는 데이터를 처리하기 위한 장치는,
상기 가상 데이터 처리장치의 메모리 매핑된 디바이스에 대응한 메모리 어드레스에 관해 메모리 액세스 동작을 수행하려고 하는 메모리 액세스 명령어의 중지된 실행에 응답하여 메모리 중지를 트리거하는 검출회로; 및
상기 메모리 중지에 응답하여, 상기 메모리 액세스 동작의 특징이 있고, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함하는 메모리 중지 데이터를 메모리 중지 레지스터에 기록하는 메모리 중지회로를 구비하고,
상기 메모리 중지 데이터는 상기 메모리 중지 데이터가 상기 메모리 중지 예외를 트리거한 상기 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 포함하고, 상기 메모리 중지는 상기 장치에서 실행한 메모리 중지 처리 프로그램 명령어에 의해 처리되어 데이터를 처리하며, 또 상기 메모리 중지 처리 프로그램 명령어가 상기 유효성 데이터로부터, 상기 메모리 중지의 특징이 있는 상기 데이터가 상기 메모리 중지 예외에 대해 유효하지 않은 것을 판정하는 경우, 상기 메모리 중지 처리 프로그램 명령어는, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 메모리 액세스 명령어로부터 하나 이상의 파라미터를 판정하여 상기 메모리 액세스 동작을 에뮬레이트한다.
본 발명의 또 다른 국면에서 본 가상 데이터 처리장치의 가상화를 지원하는 데이터를 처리하기 위한 장치는,
상기 가상 데이터 처리장치의 메모리 매핑된 디바이스에 대응한 메모리 어드레스에 관해 메모리 액세스 동작을 수행하려고 하는 메모리 액세스 명령어의 중지된 실행에 응답하여 메모리 중지를 트리거하는 검출수단; 및
상기 메모리 중지에 응답하여, 상기 메모리 액세스 동작의 특징이 있고, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함하는 메모리 중지 데이터를 메모리 중지 레지스터에 기록하는 메모리 중지수단을 구비하고,
상기 메모리 중지 데이터는 상기 메모리 중지 데이터가 상기 메모리 중지 예외를 트리거한 상기 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 포함하고, 상기 메모리 중지는 상기 장치에서 실행한 메모리 중지 처리 프로그램 명령어에 의해 처리되어 데이터를 처리하며, 또 상기 메모리 중지 처리 프로그램 명령어가 상기 유효성 데이터로부터, 상기 메모리 중지의 특징이 있는 상기 데이터가 상기 메모리 중지 예외에 대해 유효하지 않은 것을 판정하는 경우, 상기 메모리 중지 처리 프로그램 명령어는, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 메모리 액세스 명령어로부터 하나 이상의 파라미터를 판정하여 상기 메모리 액세스 동작을 에뮬레이트한다.
이하, 본 발명의 실시예들을 첨부도면들을 참조하여 예시만으로 설명하겠다:
도 1은 가상 메모리 매핑된 디바이스들을 포함한 가상 데이터 처리장치를 개략적으로 나타낸 것이고,
도 2는 가상화 지원 하드웨어 메카니즘을 포함한 호스트 데이터 처리장치를 개략적으로 나타낸 것이고,
도 3은 메모리 중지를 일으키는 메모리 액세스 동작의 특징이 있는 데이터를 제공하는데 사용될 수 있는 메모리 중지 레지스터와 갱신 레지스터의 예시 내용을 개략적으로 나타낸 것이며,
도 4는 메모리 액세스 동작의 가상 메모리 매핑된 디바이스에 대한 에뮬레이션을 지원하는 기술을 개략적으로 나타낸 흐름도다.
도 1은 메모리(6) 내에 기억된 프로그램 명령어들로 이루어진 스트림을 실행하는 가상 코어(4)를 구비한 것으로 생각될 수 있는 가상 데이터 처리장치(2)를 나타낸 것이다. 이 메모리(6)내의 명령어들은, 가상 데이터 처리장치(2) 고유의 명령어이고, 게스트 운영체계의 제어하에 실행(또한, 그 실행이 에뮬레이트됨)될 것이다. 가상 데이터 처리장치(2)는, 가상 데이터 처리장치(2)에 부착된 디바이스들에 인터페이스를 제공하는데 일반적으로 사용되는 가상 메모리 매핑 디바이스(8,10)를 구비한다. 그 가상 메모리 매핑 디바이스들은, 입/출력 포트, DMA엔진등의 디바이스 등일 수 있다.
가상화 분야에서는 연관된 메모리 어드레스에의 메모리 액세스를 트래핑한 후 이들 메모리 액세스를 에뮬레이트함으로써 상기 메모리 매핑 디바이스(8,10)를 지원하는 것이 알려져 있다. 이러한 동작은, 통상, 에뮬레이션을 정확하게 수행할 수 있는 메모리 액세스 프로그램 명령어로부터 충분한 정보를 식별하기 위해서, 상기 데이터 처리장치(2)에서 실행중이었던 메모리 액세스 프로그램 명령어를 판독하는 것이 요구된다. 이러한 프로그램 명령어의 판독 및 복호화는, 상기 가상화 동작의 속도를 대폭 감속시키는 느리고 비효율적인 처리일 수 있다.
도 2는, 도 1과 관련하여 설명한 메모리 액세스를 일으키는 게스트 운영체계(16)와 게스트 프로그램 명령어들의 실행을 자신이 에뮬레이트(또는 적어도 지원을 하는) 하이퍼바이저 프로그램(14)을 실행하는 호스트 데이터 처리장치(12)를 개략적으로 나타낸 것이다. 호스트 데이터 처리장치(12)의 구조는, 가상 데이터 처리장치(2)와 유사하거나(이 경우에 신속하고 효율적으로 가상화 지원을 함) 또는 이와는 달리 가상 데이터 처리장치(2)는 매우 다른 구조이어도 된다(이 경우에 가상화 지원은 더 광범위하고, 보다 느리게 되고 덜 효율적으로 됨).
호스트 데이터 처리장치(12)는, 프로그램 명령어를 실행하는 프로세서 코어(18)를 구비한다. (단일화되거나 Harvard일 수 있는) 캐쉬 메모리(20)는, 종래의 방식으로 메인 메모리(22) 내에 국소적 복사본의 데이터와 명령어들을 기억하도록 구성된다. 메모리 관리부(24)는, 페이지 테이블 데이터(26)에 응답하여 프로세서 코어(18)에서 행한 메모리 액세스 동작을 감시하여 메모리 중지를 일으키는 임의의 것을 식별한다. 상기 페이지 테이블 데이터(26)는, 데이터 처리장치(2)가 에뮬레이션을 행하고 있을 때 가상 데이터 처리장치(2)의 메모리 어드레스 공간 내에 가상 메모리 매핑 디바이스(8,10)에 대응한 "무효" 또는 "액세스 금지" 메모리 어드레스 영역으로서 나타내도록 프로그래밍된다. 이렇게 하여, 상기 메모리 관리부(24)는, 검출회로로서 작용하여, 상기 가상 데이터 처리장치에서 행한 처리를 에뮬레이트하는 상기 프로세서 코어(18)에 의한 프로그램 명령어들로 이루어진 스트림을 실행하는 동안에 생기는 가상 데이터 처리장치의 메모리 매핑 디바이스에 대응한 메모리 어드레스에의 메모리 액세스 동작을 검출한다. 메모리 관리부(24)에서 생성된 메모리 중지 신호는, 폴트(fault) 상태 레지스터(메모리 중지 레지스터)(28)에 공급되고, 이 폴트 상태 레지스터는 이 중지 신호에 응답하여 상기 프로세서 코어(18)에서 상기 폴트 상태 레지스터(28)에 공급된 중지 정보를 기억한다. 이 중지 정보는, 메모리 중지를 일으켰던 상기 메모리 액세스 동작의 특징이 있는 서로 다른 다양한 정보로 이루어진다. 또한, 메모리 중지에 의해, 상기 폴트 상태 레지스터(28)를 판독하고나서 수행되는 상기 가상 메모리 매핑 디바이스에 대한 상기 메모리 액세스 동작을 에뮬레이트하는데 도움이 되는 메모리 중지 처리 프로그램 명령어의 역할을 하는 인터럽트 서비스 루틴의 처리를 트리거한다. 상기 폴트 상태 레지스터(28)에 기록된 메모리 중지 데이터는, 상기 중지를 일으키는 메모리 액세스와 연관된 코어 레지스터 번호(들)(예를 들면, ARM 구조 코어의 하나 이상의 R0 내지 R15)를 포함한다. 메모리 액세스는, 판독동작 또는 기록동작일 수 있고, 이에 따라서 상기 레지스터 번호는 목적지 레지스터 번호나 소스 레지스터 번호이어도 된다.
도 3은 폴트 상태 레지스터(28)에 기록되는 메모리 중지 데이터를 개략적으로 나타낸다. 이 메모리 중지 데이터는, 중지 형태를 식별하는 데이터, 메모리 액세스가 판독동작이었는지 기록동작이었는지를 나타내는 플래그(flag), 상기 메모리 중지 처리 프로그램 명령어에 의해 상기 메모리 중지 데이터가 유효하다고 생각되는지의 여부를 나타내는 플래그, 상기 메모리 액세스와 연관된 레지스터의 레지스터 번호를 식별하는 데이터, 중지되는 메모리 액세스 명령어의 명령어 사이즈를 식별하는 데이터, 및 데이터가 부호 확장되었는지의 여부를 식별하는 데이터로 이루어진다. 서로 다른 형태의 메모리 중지 데이터는, 추가로 또는 상기와는 달리 구성되는 것을 알 것이다. 또한, 도 3에는, 일부의 실시예에서 옵션으로 설치되어도 되는 갱신 레지스터(30)가 도시되어 있다.
본 분야의 것들로 알 수 있듯이, 일부의 메모리 액세스 명령어는, 기준 레지스터를 사용하여 메모리 액세스의 메모리 어드레스를 얻는 어드레스 값을 기억한다. 또한, 상기 기준 레지스터 내에 기억된 값은, 메모리 액세스 동작의 일부로서 갱신되어도 된다. 일례로서, ARM 구조 내에서는, 해당 메모리 액세스 프로그램 명령어의 실행 전 또는 후에 메모리 어드레스 값을 증분하는 프리(pre) 인덱싱 및 포스트(post) 인덱싱의 메모리 액세스 명령어들을 지원한다. 이러한 메모리 액세스 명령어를 중지하고 에뮬레이트될 때, 기준 레지스터 값에 관한 부작용이 상기 에뮬레이션에 의해 재생된다는 것도 중요하다. 기준 레지스터 값을 갱신하는 상기 부작용이 가상 메모리 매핑 디바이스를 액세스하는 명령어들내에서 일반적이지 않지만, 그들은 그럼에도 불구하고 일어남에 따라서, 지원될 필요가 있다. 일 방식은 폴트 상태 레지스터(28)내에 유효 플래그가 공급될 수 있는 것이고, 이것이 메모리 중지 데이터가 유효한 것을 나타내도록 설정되지 않은 경우, 메모리 중지를 일으켰던 프로그램 명령어를 판독할 수 있고 기준 레지스터를 갱신하는 부작용을 그 프로그램 명령어의 복호화로부터 판정할 수 있다. 상기 폴트 상태 레지스터(28)내의 유효 플래그는, 상기 기준 레지스터 값에 관한 부작용이 존재한 명령어들에 대해 프로세서 코어(18)에 의해 설정되지 않을 것이고, 이때 상기 명령어에 관해 중지를 트리거하였다. 유효 플래그가 설정되지 않은 다른 예의 명령어는, 로드/스토어 다중 명령어다. 그 유효 플래그는, 메모리 중지 데이터가 유효한 것에 대한 명령어에 대해 설정될 것이다. 대안으로서, 기준 레지스터 값에 관해 수행되는데 필요한 임의의 갱신을 식별하는 데이터가 메모리 중지의 발생시에 기록되도록 갱신 레지스터(30)를 구성하여도 된다. 이러한 갱신 데이터는, 상기 기준 레지스터에 기억되는 새로운 값을 나타내는 데이터뿐만 아니라 기준 어드레스 값도 기억하는 상기 기준 레지스터의 식별(예를 들면, 레지스터 번호)이나 이에 인가되는 변화를 포함할 수 있다. 갱신 레지스터(30)의 설치가 선택적이고, 상기 유효 플래그를 사용함으로써 드문 경우만 무효이면서 메모리 중지 레지스터(FSR 28)내에 유효 데이터를 사용하여 처리되는 가상화 지원동안 일어나는 대다수의 메모리 중지를 허용할 것이다는 것을 알 것이다.
특별한 각 구현으로 어느 명령어가 메모리 중지 데이터를 제공하는지와 유효 플래그를 0으로 설정하는지를 결정할 수 있는 방법에 의해, 그 특별한 구현에 대한 적절한 세트의 명령어들을 선택할 수 있고, 소프트웨어도 자동으로 조절될 것이다(즉, 하드웨어가 상기 데이터를 제공하지 않을 때 명령어를 검색만 할 것이다). 이는, 데이터를 상기 구조에 제공해야하는 명령어들의 부분집합을 지정하고 그들의 경우에 있어서 상기 데이터를 제공하는데 모든 구현을 필요로 하는 대안과 비교하여 상당한 이점이다.
도 4는 상기 기술들을 개략적으로 나타내는 흐름도다. 단계 32 및 34에서, 프로세서 코어(18)는, 프로그램 명령어들로 이루어진 스트림을 실행하여, 하이퍼바이저 프로그램(14)에서 자체 에뮬레이트 하는(또는 지원하는) 게스트 운영체계 프로그램(16)의 제어하에 가상 데이터 처리장치(2) 상에서 실행하는 프로그램을 에뮬레이트한다. 메모리 중지가 일어날 때, 단계 36으로 처리가 진행된다. 단계 36에서, 상기 메모리 중지 데이터는 프로세서 코어(18)에 의해 폴트 상태 레지스터(28)에 기록된다. 단계 38에서는, 상기 가상 메모리 매핑 디바이스에 대한 메모리 액세스를 에뮬레이트하는 상기 메모리 중지 처리 프로그램 명령어의 역할을 하는 인터럽트 서비스 루틴의 실행을 시작한다. 단계 40에서는, 폴트 상태 레지스터(28)내에 기억된 메모리 중지 데이터내에 유효 플래그가 설정되는지의 여부를 판정한다. 그 유효 플래그가 설정되지 않은 경우, 상기 메모리 중지를 일으킨 명령어의 어드레스를 판정하는 단계 41로 처리가 진행된 후, 이전에 설명된 것처럼 다수의 레벨의 어드레스 변환 및 가능한 캐쉬 미스를 통해 상기 메모리 중지를 일으킨 명령어를 메인 메모리(22)로부터 판독하는 단계 42로 처리가 진행된다. 그리고, 단계 43에서는 메모리로부터 판독한 명령어를 복호화하고 단계 44에서는, 단계 42에서의 프로그램 명령어의 판독으로부터 얻어진 데이터를 사용하여 상기 가상 메모리 매핑 디바이스에 대한 디바이스 액세스를 에뮬레이트한다.
상기 유효 플래그가 폴트 상태 레지스터(28)내에 기억된 메모리 중지 데이터가 유효한 것을 나타내는 경우, 단계 40은 폴트 상태 레지스터(28)로부터 메모리 중지 데이터를 판독하는 단계 46으로 진행되고, 상기 단계 44에서는 그 메모리 중지 데이터를 사용하여 상기 가상 메모리 매핑 디바이스에 대한 메모리 액세스를 에뮬레이트한다. 상기 메모리 중지 데이터는, 소스/목적지 레지스터 번호, 데이터 액세스 사이즈, 명령어 사이즈, 부호 확장정보, 판독/기록정보 및 갱신 레지스터(30)내에 기억되고 별도로 상기 메모리 중지 처리 프로그램 명령어의 실행의 일부로서 판독되어도 되는 선택적으로 갱신된 어드레스 정보뿐만 아니라 중지 형태로 이루어진 도 3에 나타낸 것과 등의 데이터를 포함한다. 상기 가상 메모리 매핑 디바이스에 대한 메모리 액세스의 에뮬레이션 완료는, 통상, 상기 메모리 중지가 일어난 상기 프로그램 스트림의 실행으로 복귀하여 종료될 것이다.

Claims (21)

  1. 호스트 데이터 처리장치에 가상 데이터 처리장치의 가상화를 지원하는 방법으로서,
    상기 가상 데이터 처리장치에 의해 메모리 액세스 동작을 포함하는 처리를 에뮬레이트하기 위한 프로그램 명령어들로 이루어진 스트림을 상기 호스트 데이터 처리장치가 실행하는 단계;
    상기 가상 데이터 처리장치의 메모리 매핑된 디바이스에 대응한 메모리 어드레스에 관해 메모리 액세스 동작을 수행하도록 하는 상기 호스트 데이터 처리장치에 의한 메모리 액세스 명령어의 중지된 실행(aborted execution)을 검출회로로 검출하는 단계;
    상기 메모리 액세스 동작의 특징이 있고, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함하는 메모리 중지 데이터를 메모리 중지 회로로 메모리 중지(abort) 레지스터에 기록하는 단계; 및
    상기 호스트 데이터 처리장치에 의해 메모리 중지 처리(handling) 프로그램의 실행으로 메모리 중지 예외를 트리거하여;
    (i) 상기 메모리 중지 레지스터로부터 상기 메모리 중지 데이터를 판독하고;
    (ii) 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함한 상기 메모리 중지 데이터를 사용하여 상기 메모리 액세스 동작을 에뮬레이트하고;
    (iii) 상기 프로그램 명령어들로 이루어진 스트림의 실행으로 복귀하는 단계를 포함하고,
    상기 메모리 중지 데이터는 상기 메모리 중지 데이터가 상기 메모리 중지 예외를 트리거한 상기 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 포함하고, 상기 호스트 데이터 처리장치가 상기 메모리 중지 처리 프로그램 명령어를 실행하여 상기 유효성 데이터로부터, 상기 메모리 중지의 특징이 있는 상기 메모리 중지 데이터가 상기 메모리 중지 예외에 대해 유효하지 않은 것으로 판정하는 경우, 상기 호스트 데이터 처리장치는 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 메모리 액세스 동작을 에뮬레이트하기 위하여 상기 메모리 액세스 명령어로부터 하나 이상의 파라미터를 판정하는, 가상화 지원방법.
  2. 제 1 항에 있어서,
    상기 메모리 중지 데이터는,
    상기 메모리 액세스 동작이 실시되는 데이터 워드의 사이즈를 나타내는 데이터;
    상기 메모리 액세스 동작이 판독동작 또는 기록동작인지에 관한 데이터;
    상기 메모리 액세스 동작에 대한 하나 이상의 소스 레지스터를 나타내는 데이터;
    상기 메모리 액세스 동작에 대한 하나 이상의 목적지 레지스터를 나타내는 데이터; 및
    상기 메모리 액세스 동작이 실시되는 데이터 워드가 부호 확장되는지를 나타내는 데이터; 및
    상기 메모리 액세스 명령어의 명령어 사이즈를 나타내는 데이터의 하나 이상으로 이루어진, 가상화 지원방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 호스트 데이터 처리장치가 상기 메모리 액세스 명령어를 실행하여 상기 메모리 어드레스를 나타내는 어드레스 값과, 상기 호스트 데이터 처리장치에 의한 상기 메모리 액세스 명령어의 상기 실행과 연관된 상기 어드레스 값에 관해 수행되는 갱신을 기억하는 기준 레지스터를 특정하는 경우, 상기 호스트 데이터 처리장치는 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 기준 레지스터 내의 상기 어드레스 값에 관한 상기 갱신을 수행하기 위한 하나 이상의 파라미터를 상기 메모리 액세스 명령어로부터 판정하는, 가상화 지원방법.
  4. 제 3 항에 있어서,
    상기 유효성 데이터는, 상기 메모리 중지의 특징이 있는 상기 메모리 중지 데이터가 상기 기준 레지스터에 기억된 상기 어드레스 값을 갱신하는 메모리 액세스 명령어에 대해 유효하지 않은 것을 나타내는, 가상화 지원방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 호스트 데이터 처리장치가 상기 메모리 액세스 명령어를 실행하여 상기 메모리 어드레스를 나타내는 어드레스 값과, 상기 호스트 데이터 처리장치에 의한 상기 메모리 액세스 명령어의 상기 실행과 연관된 상기 어드레스 값에 관해 수행되는 갱신을 기억하는 기준 레지스터를 특정하는 경우, 상기 가상화를 지원하는 방법은, 상기 어드레스 값에 관해 수행되는 상기 갱신의 특징이 있는 갱신 데이터를 상기 메모리 중지 회로로 갱신 레지스터에 기록하는 것을 더 포함하는, 가상화 지원방법.
  6. 제 5 항에 있어서,
    상기 호스트 데이터 처리장치가 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 상기 기준 레지스터 내의 상기 어드레스 값에 관해 상기 갱신을 수행하기 위한 하나 이상의 파라미터인 상기 갱신 데이터를 상기 갱신 레지스터로부터 판독하는, 가상화 지원방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 프로그램 명령어들로 이루어진 스트림이, 하이퍼바이저(hypervisor) 프로그램의 제어하에 상기 호스트 데이터 처리장치에 의해 에뮬레이트되는 상기 가상 데이터 처리장치에 의해 게스트 운영체계의 제어하에 실행되는, 가상화 지원방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 검출회로는, 페이지 테이블 데이터를 사용하여 상기 메모리 내의 메모리 어드레스들에 대한 액세스를 제어하는 메모리 관리부인, 가상화 지원방법.
  9. 제 8 항에 있어서,
    상기 페이지 테이블 데이터는, 상기 호스트 데이터 처리장치가 상기 메모리 액세스 명령어를 실행하여 상기 메모리 액세스 동작을 수행하도록 하는 경우 중지를 트리거하는 값으로 상기 메모리 매핑된 디바이스에 대응한 상기 메모리 어드레스를 표시하는, 가상화 지원방법.
  10. 가상 데이터 처리장치의 가상화를 지원하는 데이터를 처리하기 위한 장치로서,
    상기 가상 데이터 처리장치의 메모리 매핑된 디바이스에 대응한 메모리 어드레스에 관해 메모리 액세스 동작을 수행하도록 하는 상기 데이터를 처리하기 위한 장치에 의한 메모리 액세스 명령어의 중지된 실행에 응답하여 메모리 중지를 트리거하는 검출회로; 및
    상기 메모리 중지에 응답하여, 상기 메모리 액세스 동작의 특징이 있고, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함하는 메모리 중지 데이터를 메모리 중지 레지스터에 기록하는 메모리 중지회로를 구비하고,
    상기 메모리 중지 데이터는 상기 메모리 중지 데이터가 상기 메모리 중지 예외를 트리거한 상기 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 포함하고, 상기 메모리 중지는 상기 데이터를 처리하기 위한 장치에서 실행된 메모리 중지 처리 프로그램 명령어에 의해 처리되고, 상기 데이터를 처리하기 위한 장치가 상기 메모리 중지 처리 프로그램 명령어를 실행하여 상기 유효성 데이터로부터, 상기 메모리 중지의 특징이 있는 상기 메모리 중지 데이터가 상기 메모리 중지 예외에 대해 유효하지 않은 것으로 판정하는 경우, 상기 데이터를 처리하기 위한 장치는 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 메모리 액세스 동작을 에뮬레이트하기 위하여 상기 메모리 액세스 명령어로부터 하나 이상의 파라미터를 판정하는, 데이터 처리장치.
  11. 제 10 항에 있어서,
    상기 메모리 중지 데이터는,
    상기 메모리 액세스 동작이 실시되는 데이터 워드의 사이즈를 나타내는 데이터;
    상기 메모리 액세스 동작이 판독동작 또는 기록동작인지에 관한 데이터;
    상기 메모리 액세스 동작에 대한 하나 이상의 소스 레지스터를 나타내는 데이터;
    상기 메모리 액세스 동작에 대한 하나 이상의 레지스터를 나타내는 데이터; 및
    상기 메모리 액세스 동작이 실시되는 데이터 워드가 부호 확장되는지를 나타내는 데이터; 및
    상기 메모리 액세스 명령어의 명령어 사이즈를 나타내는 데이터의 하나 이상으로 이루어진, 데이터 처리장치.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 데이터를 처리하기 위한 장치가 상기 메모리 액세스 명령어를 실행하여 상기 메모리 어드레스를 나타내는 어드레스 값과, 상기 데이터를 처리하기 위한 장치에 의한 상기 메모리 액세스 명령어의 상기 실행과 연관된 상기 어드레스 값에 관해 수행되는 갱신을 기억하는 기준 레지스터를 특정하는 경우, 상기 데이터를 처리하기 위한 장치는 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 기준 레지스터 내의 상기 어드레스 값에 관해 상기 갱신을 수행하기 위한 하나 이상의 파라미터를 상기 메모리 액세스 명령어로부터 판정하는, 데이터 처리장치.
  13. 제 12 항에 있어서,
    상기 유효성 데이터는, 상기 메모리 중지의 특징이 있는 상기 메모리 중지 데이터가 상기 기준 레지스터에 기억된 상기 어드레스 값을 갱신하는 메모리 액세스 명령어에 대해 유효하지 않은 것을 나타내는, 데이터 처리장치.
  14. 제 10 항 또는 제 11 항에 있어서,
    상기 데이터를 처리하기 위한 장치가 상기 메모리 액세스 명령어를 실행하여 상기 메모리 어드레스를 나타내는 어드레스 값과, 상기 데이터를 처리하기 위한 장치에 의한 상기 메모리 액세스 명령어의 상기 실행과 연관된 상기 어드레스 값에 관해 수행되는 갱신을 기억하는 기준 레지스터를 특정하는 경우, 상기 메모리 중지 회로는, 상기 메모리 중지에 응답하여, 상기 어드레스 값에 관해 수행되는 상기 갱신의 특징이 있는 갱신 데이터를 갱신 레지스터에 기록하는, 데이터 처리장치.
  15. 제 14 항에 있어서,
    상기 데이터를 처리하기 위한 장치가 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 상기 기준 레지스터 내의 상기 어드레스 값에 관해 상기 갱신을 수행하기 위한 하나 이상의 파라미터인 상기 갱신 데이터를 상기 갱신 레지스터로부터 판독하는, 데이터 처리장치.
  16. 제 10 항 또는 제 11 항에 있어서,
    상기 프로그램 명령어들로 이루어진 스트림이, 하이퍼바이저(hypervisor) 프로그램의 제어하에 상기 데이터를 처리하기 위한 장치에 의해 에뮬레이트되는 상기 가상 데이터 처리장치에 의해 게스트 운영체계의 제어하에 실행되는, 데이터 처리장치.
  17. 제 10 항 또는 제 11 항에 있어서,
    상기 검출회로는, 페이지 테이블 데이터를 사용하여 상기 메모리 내의 메모리 어드레스들에 대한 액세스를 제어하는 메모리 관리부인, 데이터 처리장치.
  18. 제 17 항에 있어서,
    상기 페이지 테이블 데이터는, 상기 데이터를 처리하기 위한 장치가 상기 메모리 액세스 명령어를 실행하여 상기 메모리 액세스 동작을 수행하도록 하는 경우 중지를 트리거하는 값으로 상기 메모리 매핑된 디바이스에 대응한 상기 메모리 어드레스를 표시하는, 데이터 처리장치.
  19. 가상 데이터 처리장치의 가상화를 지원하는 데이터를 처리하기 위한 장치로서,
    상기 가상 데이터 처리장치의 메모리 매핑된 디바이스에 대응한 메모리 어드레스에 관해 메모리 액세스 동작을 수행하도록 하는 상기 데이터를 처리하기 위한 장치에 의한 메모리 액세스 명령어의 중지된 실행에 응답하여 메모리 중지를 트리거하는 검출수단; 및
    상기 메모리 중지에 응답하여, 상기 메모리 액세스 동작의 특징이 있고, 상기 메모리 액세스 동작으로 액세스된 하나 이상의 레지스터를 나타내는 데이터를 포함하는 메모리 중지 데이터를 메모리 중지 레지스터에 기록하는 메모리 중지수단을 구비하고,
    상기 메모리 중지 데이터는 상기 메모리 중지 데이터가 상기 메모리 중지 예외를 트리거한 상기 메모리 액세스 명령어에 대해 유효한지의 여부를 나타내는 유효성 데이터를 포함하고, 상기 메모리 중지는 상기 데이터를 처리하기 위한 장치에서 실행된 메모리 중지 처리 프로그램 명령어에 의해 처리되고, 상기 데이터를 처리하기 위한 장치가 상기 메모리 중지 처리 프로그램 명령어를 실행하여 상기 유효성 데이터로부터, 상기 메모리 중지의 특징이 있는 상기 메모리 중지 데이터가 상기 메모리 중지 예외에 대해 유효하지 않은 것으로 판정하는 경우, 상기 데이터를 처리하기 위한 장치는 상기 메모리 중지 처리 프로그램 명령어를 실행하여, 명령어 메모리로부터 상기 메모리 액세스 명령어를 판독하고, 상기 메모리 액세스 동작을 에뮬레이트하기 위하여 상기 메모리 액세스 명령어로부터 하나 이상의 파라미터를 판정하는, 데이터 처리장치.
  20. 삭제
  21. 삭제
KR1020107028671A 2008-05-23 2009-03-23 호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원 KR101533224B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0809492.2 2008-05-23
GB0809492A GB2460280A (en) 2008-05-23 2008-05-23 Using a memory-abort register in the emulation of memory access operations
PCT/GB2009/000771 WO2009141574A1 (en) 2008-05-23 2009-03-23 Device emulation support within a host data processing apparatus

Publications (2)

Publication Number Publication Date
KR20110019750A KR20110019750A (ko) 2011-02-28
KR101533224B1 true KR101533224B1 (ko) 2015-07-02

Family

ID=39616061

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107028671A KR101533224B1 (ko) 2008-05-23 2009-03-23 호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원

Country Status (11)

Country Link
US (1) US8180980B2 (ko)
EP (1) EP2281237B1 (ko)
JP (1) JP5318197B2 (ko)
KR (1) KR101533224B1 (ko)
CN (1) CN102037448B (ko)
AT (1) ATE523842T1 (ko)
GB (1) GB2460280A (ko)
IL (1) IL206725A (ko)
MY (1) MY152358A (ko)
TW (1) TWI437428B (ko)
WO (1) WO2009141574A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180067581A (ko) * 2015-10-14 2018-06-20 에이알엠 리미티드 예외 처리

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301849B2 (en) * 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US9268598B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
US9619345B2 (en) 2012-09-13 2017-04-11 International Business Machines Corporation Apparatus for determining failure context in hardware transactional memories
EP3279796B1 (en) * 2016-08-02 2020-07-15 NXP USA, Inc. Resource access management component and method therefor
TWI666901B (zh) * 2018-03-27 2019-07-21 緯穎科技服務股份有限公司 資料傳輸方法與使用此方法的主機系統

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US20060168485A1 (en) * 2005-01-26 2006-07-27 Via Technologies, Inc Updating instruction fault status register
US20060259292A1 (en) * 2005-05-12 2006-11-16 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7356456B1 (en) * 2004-11-12 2008-04-08 Paravirtual Corporation Computer storage exception handing apparatus and method for virtual hardware system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS593642A (ja) * 1982-06-30 1984-01-10 Fujitsu Ltd 制御レジスタ処理方式
US5907708A (en) * 1996-06-03 1999-05-25 Sun Microsystems, Inc. System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
US5968119A (en) 1996-12-09 1999-10-19 Wall Data Incorporated Method of accessing information of an SNA host computer from a client computer using a specific terminal emulation
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US20020004897A1 (en) 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US6732241B2 (en) * 2001-09-07 2004-05-04 Hewlett-Packard Development Company, L.P. Technique for migrating data between storage devices for reduced power consumption
US6952754B2 (en) 2003-01-03 2005-10-04 Intel Corporation Predecode apparatus, systems, and methods
US7146474B2 (en) * 2003-03-12 2006-12-05 International Business Machines Corporation System, method and computer program product to automatically select target volumes for a fast copy to optimize performance and availability
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US9354927B2 (en) * 2006-12-21 2016-05-31 Vmware, Inc. Securing virtual machine data
US7711927B2 (en) 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US7886115B2 (en) * 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7356456B1 (en) * 2004-11-12 2008-04-08 Paravirtual Corporation Computer storage exception handing apparatus and method for virtual hardware system
US20060168485A1 (en) * 2005-01-26 2006-07-27 Via Technologies, Inc Updating instruction fault status register
US20060259292A1 (en) * 2005-05-12 2006-11-16 Microsoft Corporation Virtual operating system device communication relying on memory access violations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180067581A (ko) * 2015-10-14 2018-06-20 에이알엠 리미티드 예외 처리
KR102613643B1 (ko) * 2015-10-14 2023-12-14 에이알엠 리미티드 예외 처리

Also Published As

Publication number Publication date
IL206725A0 (en) 2010-12-30
TW200949535A (en) 2009-12-01
JP5318197B2 (ja) 2013-10-16
GB0809492D0 (en) 2008-07-02
CN102037448A (zh) 2011-04-27
KR20110019750A (ko) 2011-02-28
TWI437428B (zh) 2014-05-11
WO2009141574A1 (en) 2009-11-26
CN102037448B (zh) 2014-04-02
JP2011523741A (ja) 2011-08-18
US8180980B2 (en) 2012-05-15
EP2281237B1 (en) 2011-09-07
US20100094613A1 (en) 2010-04-15
IL206725A (en) 2014-04-30
MY152358A (en) 2014-09-15
GB2460280A (en) 2009-11-25
EP2281237A1 (en) 2011-02-09
ATE523842T1 (de) 2011-09-15

Similar Documents

Publication Publication Date Title
US7783867B2 (en) Controlling instruction execution in a processing environment
US9632776B2 (en) Preload instruction control
KR101533224B1 (ko) 호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
US8438340B2 (en) Executing atomic store disjoint instructions
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
RU2287178C2 (ru) Обработка необработанной операции в системах с множеством наборов команд
US7685381B2 (en) Employing a data structure of readily accessible units of memory to facilitate memory access
CN108139906B (zh) 一种处理数据的方法及装置
US11397541B2 (en) Controlling guard tag checking in memory accesses
US10496461B2 (en) Apparatus and method for hardware initiation of emulated instructions
US11216280B2 (en) Exception interception
JP2009181373A (ja) ネットワーク受信履歴の保存・再生方法及び情報処理装置
US11755243B2 (en) Apparatus and method for triggering action
JP2980327B2 (ja) 命令処理装置
CN116795493A (zh) 一种处理指令的方法、处理系统和计算机可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180529

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 5