KR101109984B1 - 에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체 - Google Patents

에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR101109984B1
KR101109984B1 KR1020097010895A KR20097010895A KR101109984B1 KR 101109984 B1 KR101109984 B1 KR 101109984B1 KR 1020097010895 A KR1020097010895 A KR 1020097010895A KR 20097010895 A KR20097010895 A KR 20097010895A KR 101109984 B1 KR101109984 B1 KR 101109984B1
Authority
KR
South Korea
Prior art keywords
instruction
processing
buffer
executed
test set
Prior art date
Application number
KR1020097010895A
Other languages
English (en)
Other versions
KR20090095573A (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 KR20090095573A publication Critical patent/KR20090095573A/ko
Application granted granted Critical
Publication of KR101109984B1 publication Critical patent/KR101109984B1/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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

인스트럭션 실행은 특별한 상황을 갖는 인스트럭션을 취급하기 위해 버퍼를 이용함으로써 용이해진다. 이러한 인스트럭션이 실행되어야 하는 경우, 인스트럭션의 포인터는 버퍼를 지목한다. 인스트럭션은 버퍼로부터 실행되고 포인터는 버퍼 이외의 위치를 지목하도록 복원된다.

Description

에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체{EMPLOYING A BUFFER TO FACILITATE INSTRUCTION EXECUTION}
본 발명은 일반적으로 처리 환경(processing environment)내에서 인스트럭션을 처리하는 것에 관한 것으로, 특히 인스트럭션 실행을 용이하게 하기 위해 버퍼를 채용하는 것에 관한 것이다.
전형적으로, 인스트럭션 스트림의 실행 동안, 하나의 인스트럭션이 실행되고, 다수의 테스트가 수행되며, 그런 다음, 다음 인스트럭션이 수행된다. 그러나, 소정의 인스트럭션은 특별한 취급을 필요로 한다. 예를 들어, 실행 인스트럭션은 실행에 앞서 수정될 수 있는 타겟 인스트럭션을 지정한다. 이 수정은 관리되어야 한다. 더 나아가, 메모리 경계(예를 들어, 페이지 경계)를 가로지르는 인스트럭션은 이 인스트럭션의 물리적으로 불연속적인 부분이 통용될 것을 요구한다. 또 다시, 이 상황은 관리되어야 한다.
이들 상황의 취급은 중요하다. 그러나, 메인라인 프로세싱(mainline processing) 동안의 이들 상황의 취급은 시스템 성능을 저하시킨다.
전술한 내용에 기초하면, 메인라인 프로세싱에 무관한 특별한 상황을 취급할 수 있는 기능이 필요하다. 특히, 인스트럭션 실행을 용이하게 하는 기능이 필요하다. 일 예에서, 특별한 상황이 메인라인 프로세싱에 무관하게 처리되도록 버퍼가 사용되어 인스트럭션 실행을 용이하게 한다. 특별한 상황을 갖는 인스트럭션이 관찰되는 경우, 인스트럭션의 포인터는 적어도 그 인스트럭션의 사본을 갖는 임시 버퍼를 지목한다. 인스트럭션은 임시 버퍼로부터 실행되고 포인터는 메모리 내의 적절한 위치를 지목하도록 복원된다(recovered).
청구항 1항에 기재된 방법을 통해 종래 기술의 단점은 극복되고 추가적인 장점이 제공된다.
대응하는 컴퓨터 프로그램 및 시스템이 또한 본 명세서에서 기술되고 청구된다.
추가적인 특징 및 장점은 본 발명의 기술을 통해 실현된다. 본 발명의 또 다른 실시예 및 양상들이 본 명세서에서 자세히 기술되고 청구된 본 발명의 일부분으로서 간주된다.
본 발명의 하나 이상의 양상이 특히 주목되고 명세서 끝에 있는 청구항에서 예로서 별개로 청구된다. 본 발명에 대한 전술한 및 다른 목적, 특징 및 장점은 첨부한 도면과 연계하여 후속하여 상세한 설명으로부터 분명해진다.
도 1은 본 발명의 하나 이상의 양상을 합체하여 사용하는 처리 환경에 대한 하나의 실시예를 나타내는 도면,
도 2는 본 발명의 일 양상에 따라, 도 1의 처리 환경의 시스템 아키텍쳐에 대한 일 실시예를 나타내는 도면,
도 3은 본 발명의 일 양상에 따라, 도 2의 시스템 아키텍쳐의 에뮬레이터에 대한 일 실시예를 보다 자세히 나타내는 도면,
도 4(a)는 본 발명의 일 양상에 따라, 도 3의 에뮬레이터의 중앙 처리 장치(CUP) 구현의 일 실시예에 대해 보다 자세히 나타내는 도면,
도 4(b)는 본 발명의 일 양상에 따라, 도 4(a)의 CPU 구현의 인터프리터(interpreter) 코드의 일 실시예에 대해 보다 자세히 나타내는 도면,
도 5는 본 발명의 일 양상에 따라, 인스트럭션 실행의 흐름에 대한 일 실시예를 나타내는 도면,
도 6은 본 발명의 일 양상에 따라, 인스트럭션 스트림을 실행하는 것과 연관된 로직의 일 실시예를 나타내는 도면,
도 7은 본 발명의 일 양상에 따라, 도 6의 테스트 세트를 처리하는 것과 연관된 로직의 일 실시예를 나타내는 도면,
도 8은 본 발명의 하나 이상의 양상을 구현하는 컴퓨터 프로그램 제품의 일 실시예를 나타내는 도면.
본 발명의 일 양상에 따라, 처리 환경 내에서 인스트럭션 실행을 제어하는 기능이 제공된다. 하나의 예로서, 메인라인 인스트럭션 스트림 내의 인스트럭션은 단일 테스트를 통과한 것에 응답하여 계속적으로 처리된다. 그러나, 테스트가 실패하는 경우, 메인라인 스트림 내에서의 인스트럭션이 아닌, 소정의 테스트가 실행된다.
단일 테스트는 본 명세서에서 EOR(end-of-range)로 지칭되고, 소정의 값으로 선택적으로 설정되는 변수에 대해 인스트럭션 카운터를 비교하는 것을 포함한다. 그 값이 만족되지 않은 경우, 메인라인 인스트럭션 스트림 내에서 인스트럭션 실행은 다음 인스트럭션으로 계속 진행한다. 그러나, 그 값에 도달하거나 또는 초과하는 경우, 실행은 사전결정된 테스트 세트를 거치게 되고, 그런 다음 실행된다.
일 실시예에서, 테스트 세트의 처리 동안, 인스트럭션 실행을 용이하게 하기 위해 버퍼가 채용될 수 있다. 예를 들어, 소정의 인스트럭션(예를 들어, 실행 인스트럭션, 페이지 경계를 가로지는 인스트럭션)은 처리되는 경우 특별한 취급을 요구한다. 이러한 취급을 용이하게 하기 위해, 버퍼가 사용되는데, 필요한 경우 또는 요구되는 경우, 인스트럭션에 수정이 가해지도록 하기 위해 타겟 인스트럭션은 복제된다.
본 발명의 하나 이상의 양상을 합체하여 사용하는 처리 환경의 일 실시예가 도 1을 참조하여 기술된다. 이 예에서, 처리 환경(100)은 네이티브 아키텍쳐로 지칭될 수 있지만 게스트 아키텍쳐로 지칭될 수 있는 또 다른 아키텍쳐를 에뮬레이 트(emulate)하는 하나의 아키텍쳐에 기반을 둔다. 예를 들어, 네이티브 아키텍쳐는 뉴욕 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 Power4 또는 PowerPC 아키텍쳐, 또는 인텔 코포레이션사에 의해 공급되는 Intel이며, 게스트 아키텍쳐는 뉴욕 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 또한 공급되는 z/Architecture이다. z/Architecture의 양상은 2005년 9월의 IBM 공개 번호 SA22-7832-04의 "z/Architecture Principles of Operation"에 개시되어 있으며, 이는 본 명세서에서 그 전체가 참조로서 인용된다.
처리 환경(100)은 예를 들어 하나 이상의 버스(108)를 통해 서로 결합되어 있는 네이티브 프로세서(102)(예를 들어, 중앙 처리 장치(CPU)), 메모리(104)(예를 들어, 주 메모리) 및 하나 이상의 입/출력(I/O) 장치(106)를 포함한다. 예를 들어, 프로세서(102)는 뉴욕 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 pSeries 서버의 일부이고, pSeries, Power PC 및 z/Architecture는 뉴욕 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록상표이다. Intel은 인텔 코포레이션의 등록상표이다. 본 명세서에서 사용되는 명칭은 인터내셔널 비즈니스 머신즈 코포레이션 또는 다른 회사의 등록된 상표, 상표 또는 제품명일 수 있다.
네이티브 중앙 처리 장치(102)는 환경 내에서의 처리 동안 사용되는 하나 이 상의 범용 레지스터 및/또는 하나 이상의 전용 레지스터와 같은 하나 이상의 네이티브 레지스터(110)를 포함한다. 이들 레지스터는 임의의 특정 시점에서의 환경의 상태를 나타내는 정보를 포함한다.
에뮬레이션을 제공하기 위해, 처리 환경은 에뮬레이터, 게스트 운영 시스템 및 하나 이상의 게스트 애플리케이션을 포함하도록 설계된다. 이와 같이 설계된 특징들은 도 2를 참조하여 보다 더 설명된다.
도 2를 참조하면, 처리 환경(100)의 시스템 아키텍쳐(200)의 일 실시예가 기술된다. 시스템 아키텍쳐(200)는 예를 들어 환경의 설계된 양상들을 정의하는 다수의 구현 층(implementation layer)을 포함한다. 이 특정 예에서, 층들은, 예를 들어, 하나 이상의 인터페이스 및/또는 제어기를 통해 메모리(204) 및 입/출력 장치 및/또는 네트워크(206)에 결합된 하드웨어(202)와, 호스트 운영 시스템(208)과, 에뮬레이터(210)와, 게스트 운영 시스템(212)과, 하나 이상의 게스트 애플리케이션(214)을 포함한다. 하나의 층은 하나 이상의 인터페이스를 통해 적어도 하나의 다른 층에 결합된다. 예를 들어, 게스트 애플리케이션(214)은 적어도 하나의 인터페이스를 통해 게스트 운영 시스템(212)에 결합된다. 다른 인터페이스들이 사용되어 다른 층들을 결합할 수 있다. 또한, 아키텍쳐는 다른 층 및/또는 인터페이스를 포함할 수도 있다. 도 2에 도시되어 있는 다양한 층들이 이하에서 더 기술된다.
하드웨어(200)는 처리 환경의 네이티브 아키텍쳐이고 예를 들어 Power4, PowerPC, Interl 또는 다른 아티텍쳐에 기초를 두고 있다. 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 AIX, 또는 LINUX와 같은 호스트 운영 시스템(202)이 하드웨어 상에서 실행된다. AIX는 뉴욕 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록된 상표이다.
에뮬레이터(210)는 네이티브 아키텍쳐와는 다른 아키텍쳐를 에뮬레이팅하는데 사용되는 다수의 구성요소를 포함한다. 이 실시예에서, 에뮬레이팅되는 아키텍쳐는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 z/Architecture이지만, 다른 아키텍쳐도 또한 에뮬레이팅될 수 있다. 에뮬레이션은 게스트 운영 시스템(212)(예를 들어, z/OS, 인터내셔널 비즈니스 머신즈 코포레이션의 등록된 상표임)이 네이티브 아키텍쳐 상에서 실행될 수 있도록 해주고 또한 하나 이상의 게스트 애플리케이션(214)(예를 들어, Z 애플리케이션)의 지원을 가능하게 한다. 에뮬레이터(210)와 관련된 보다 자세한 사항은 도 3을 참조하여 설명된다.
도 3을 참조하면, 에뮬레이터(210)는 하나 이상의 서비스 프로세스(320), 입/출력(I/O) 구현(304) 및 중앙 처리 장치(CPU) 구현(306)에 결합된 공유 메모리(300)를 포함하는데, 이들 각각은 이하에서 보다 자세히 기술된다.
공유 메모리(300)는 서비스 프로세스(302), I/O 구현(304) 및 CPU 구현(306)이 사용할 수 있는 호스트 내의 메모리의 일부분을 나타낸다. 공유 메모리(300)는 독립적인 프로세스들(예를 들어, 서비스 프로세스, I/O 구현, CPU 구현)이 공유 메모리에 대해 데이터를 판독하고 저장함으로써 통신하는 저장 영역이다. 일 예로 서, 공유 메모리는 예를 들어 시스템 글로벌 정보, CPU 콘텍스트 및 정보, 에뮬레이팅된 주 저장소, 에뮬레이팅된 주 저장소 키, 및 서브채널(즉, I/O 장치를 나타내는 데이터 구조)을 포함하는 다수의 영역을 포함한다.
서비스 프로세스(302)는 CPU 및 하나 이상의 다른 프로세스를 생성하는데 사용되는 하나 이상의 프로세스를 포함하고, 또한 시작, 종료, 리셋, 초기 프로그램 로드(IPL) 등과 같은 설계된 오퍼레이터 설비를 제공한다. 그것은 또한 에뮬레이팅된 시스템 설비의 변경 또는 디스플레이, 공유 리소스의 획득/방면(freeing), 다른 관리유지 명령 등과 같은 다른 기능을 제공할 수도 있다.
입/출력 구현(304)은 예를 들어 하나 이상의 서브채널 프로세스와 I/O 장치와 통신하기 위해 사용되는 I/O 제어기를 포함한다. 본 발명의 일 양상에 있어서, I/O 제어기는 서브채널 프로세스를 개시하고 또한 복원을 수행하는 것을 담당한다.
중앙 처리 장치(CPU) 구현(306)은 인스트럭션을 실행하고 처리를 관리하는 것을 담당한다. 그것은 도 4(a) 및 도 4(b)를 참조하여 설명되는 다수의 구성요소를 포함한다.
도 4(a)를 참조하면, CPU 구현(306)은 예를 들어 인스트럭션을 획득하고, 번역(translate)하며 실행하는데 사용되는 인터프리터 코드(400)와, 초기 시작 및 칩과의 통신을 원조하는 아키텍쳐형 코-프로세서(co-processor)(예를 들어, SCLP(Service Call Logical Processor) 프로세스)와, 에뮬레이터의 기능의 시간을 조절하는 타이밍 설비(404)를 포함한다. 인터프리터 코드(400)와 관련된 보다 자세한 사항은 도 4(b)를 참조하여 설명된다.
인터프리터 코드(400)는 예를 들어 메모리 액세스 유닛(422), CPU 제어(426), 비동기식 방해 핸들러(asynchronous interruption handler)(428) 및 동기식 방해 핸들러(430)에 결합된 해석 유닛(420)을 포함한다.
해석 유닛(420)은 메모리로부터 하나 이상의 게스트 인스트럭션을 획득하는 것과, 게스트 인스트럭션에 네이티브 인스트럭션을 제공하는 것과, 네이티브 인스트럭션을 실행하는 것을 담당한다. 게스트 인스트럭션은 네이티브 CPU(102)의 아키텍쳐와는 다른 아키텍쳐에서 실행되도록 개발된 소프트웨어 인스트럭션(예를 들어, 머신 인스트럭션)을 포함한다. 예를 들어, 게스트 인스트럭션은 z/Architecture 프로세서 상에서 실행하도록 설계될 수 있지만, 대신 예를 들어 pSeries 서버일 수 있는 네이티브 CPU(102) 상에서 에뮬레이팅된다.
일 예에서, 네이티브 인스트럭션을 제공하는 과정은 게스트 인스트럭션과 연관된 에뮬레이터 내의 코드 세그먼트를 선택하는 것을 포함한다. 예를 들어, 각 게스트 인스트럭션은 하나 이상의 네이티브 인스트럭션의 시퀀스를 포함하는 에뮬레이터 내의 연관된 코드 세그먼트를 가지며, 그 코드 세그먼트는 실행되도록 선택된다.
또 다른 예에서, 네이티브 인스트럭션을 제공하는 과정은 예를 들어 변환 프로세스 동안 주어진 게스트 인스트럭션에 대한 인스트럭션의 네이티브 스트림을 생성하는 것을 포함한다. 이것은 기능을 식별하고 등가의 네이티브 인스트럭션을 생성하는 것을 포함한다.
인스트럭션이 메모리 액세스를 포함하는 경우, 메모리 액세스 루틴(422)이 공유 메모리(300)를 액세스하는데 사용된다. 메모리 액세스 루틴은 메모리를 액세스하는데 사용되거나 또는 필요에 따라 더 변환될 수 있는 절대 어드레스로 로직 어드레스를 변환하기 위해 동적 어드레스 변환(DAT)(432) 또는 액세스 레지스터 변환(ART)(434)과 같은 변환 메카니즘을 사용할 수 있다.
이 실시예에서, 해석 유닛(420) 내의 프로세싱은 스트림라인형(streamline)이어야 한다. 따라서, 대기 상태 또는 하나의 아키텍쳐 레벨에서 다른 아키텍쳐 레벨로 변경되는 경우(예를 들어, z/Architecture에서 ESA(390)으로 변경되는 경우) 등과 같이 보다 복잡한 상황이 발생하는 경우, 제어는 CPU 제어(426)로 전달되고, 이 CPU 제어(426)는 그 이벤트를 취급하고 그런 다음 제어를 해석 유닛(420)으로 반환한다.
또한, 방해가 발생하는 경우, 프로세싱은 해석 유닛(420)으로부터, 방해가 비동기식 방해이면 비동기식 방해 핸들러(428)로 또는 방해가 동기식 방해이면 동기식 방해 핸들러(430)로 이동하게 된다. 방해가 처리된 이후, 프로세싱은 해석 유닛(420)으로 복귀한다.
특히, 해석 유닛은 공유 메모리 내의 소정의 위치를 모니터링하고 위치가 변경된 경우 그것은 방해가 CPU 또는 I/O 중 하나에 의해 발생되었음을 나타낸다. 따라서, 해석 유닛은 적절한 방해 핸들러를 호출한다.
해석 유닛(420)과 관련된 보다 자세한 사항은 도 5를 참조하여 설명된다. 특히, 도 5는 해석 유닛과 연관된 프로세싱 흐름의 일 실시예를 나타낸다. 이 실시예에서, 프로세싱 흐름은 쓰레드형인 것으로 간주되는데, 그 이유는 각 인스트럭션 루틴은 연관된 디코드/디스패치 루틴(즉, 중앙 제어가 없음)을 가지기 때문이다. 일 실시예에서, 이 흐름은 z/Architecture를 에뮬레이팅하는 인스트럭션을 실행하는 것이다.
도 5를 참조하면, 프로세싱 흐름(500)은 두 개의 섹션을 포함하는데, 하나는 본 명세서에서 메인라인(mainline) 프로세싱(502)으로 지칭되고, 다른 하나는 테스트 세트 프로세싱(504)으로 지칭된다. 메인라인 프로세싱은, 프로세싱이 인스트럭션 사이에 중요한 테스트를 수행하지 않으면서 하나의 인스트럭션 루틴에서 다른 인스트럭션 루틴으로 진행하는 스트림라인형 프로세싱이다. 이 실시예에서, 인스트럭션 실행 간에 오직 수행되는 테스트는 메인라인 프로세싱이 계속 진행될 것인지 또는 프로세싱이 테스트 세트를 개시할지 여부를 결정하는 간단한 테스트이다. 추가적인 테스팅이 수행되어야 하거나 또는 다른 동작이 필요한 경우, 프로세싱은 메인라인 프로세싱을 벗어나 테스트 세트 프로세싱(504)으로 진행한다. 테스트 또는 다른 프로세싱이 수행되었으면, 프로세싱은 메인라인 프로세싱을 재개한다. 대부분의 시간에서 프로세싱은 메인라인 프로세싱으로 유지될 것으로 예상된다.
일 실시예에서, 메인라인 프로세싱으로 진입하기 전에, 소정의 초기화가 수행된다. 예를 들어, 실행될 인스트럭션 스트림을 포함하는 특정 파일 또는 메모리 영역을 가리키는 포인터가 해석 유닛(420)(도 4(b))에 입력된다. 이 인스트럭션 스트림은 예를 들어 네이티브 프로세서 상에서 실행될 Z 인스트럭션을 포함한다.
포인터를 인스트럭션 스트림에 제공한 것 외에, 인스트럭션 스트림에 대한 인스트럭션 카운터가 제공되며, 또한 에뮬레이팅되는 처리 환경과 연관된 상태(예를 들어, Z 상태)가 제공된다. 이 상태는 예를 들어 인스트럭션 프로그램 이벤트 기록(I-PER) 모드가 활성화되어 있는지 여부, I-STEP 또는 ADSTOP가 활성화되어 있는지 여부, 현재의 실행 모드 등을 나타내는 다양한 레지스터 및 플래그를 포함한다. 상태는 평가되고 그 평가에 기초하여, 테스트 세트 프로세싱(504)(도 5)의 테스트 세트 중 하나가 선택된다. 예를 들어, I-PER 모드가 활성화되어 있는 경우, PER 테스트 세트가 선택될 수 있다. 포인터는 선택된 테스트 세트로 설정되고 프로세싱은 그 테스트 세트에서 계속된다.
이하에서 설명되는 바와 같이, 하나 이상의 테스트 및/또는 하나 이상의 동작을 수행할 수 있는 선택된 테스트 세트가 수행된다. 테스트 세트에서, 프로세싱이 메인라인 프로세싱을 또 다시 실행하는 경우 다음으로 선택될 테스트 세트에 대한 결정이 이루어진다. 더 나가, 메인라인 프로세싱이 계속될지 여부를 결정하는 단일 테스트 내에 사용되는 변수, 즉 EOR이 설정된다. 이하에서 더 자세히 기술되는 바와 같이, 이 변수는 수행되는 테스팅 및 인스트럭션 스트림의 프로세싱 스테이지에 기초하여 설정된다.
테스트 세트를 수행한 후에, 프로세싱은 테스트 세트에 의해 결정되는 메인라인 프로세싱의 인스트럭션 루틴(506)으로 계속된다. 그 선택된 인스트럭션 루틴이 완료된 경우, 제어는 선택된 인스트럭션 루틴(506)과 연관된 디코드/디스패치 루틴(508)에서 계속된다.
디코드/디스패치 루틴은 다음 조작부호(opcode)에 대한 인스트럭션 스트림을 판독하고 그 인스트럭션으로 진행하거나 또는 테스트 세트를 개시한다. 예를 들어, 디코드/디스패치 루틴에서, 스트림라인형의 메인라인 프로세싱이 계속될 것인지 또는 프로세싱이 일시적으로 테스트 세트 프로세싱을 개시할 것인지를 결정하는 단일 테스트가 수행된다. 즉, 디코드/디스패치 포인트에서, 보다 복잡한 프로세싱이 필요한지 또는 프로세싱이 메인 인라인 스트림내에 유지될 수 있는지를 결정하는 테스트가 이루어진다. 보다 복잡한 프로세싱이 필요한 경우, 인스트럭션을 둘러싸고 있는 상황은 사전결정된 테스트 세트에서 인공적으로 수정되어 인스트럭션 루틴으로 진행하기 전에 그 상황을 간단히 하는데, 그 이유는 인스트럭션 루틴은 상황이 간단한 것으로 가정하기 때문이다. 예를 들어, 인스트럭션 스트림은 물리적으로 연속적인 위치로부터 인스트럭션을 인출할 수 있는 것으로 가정한다. 인스트럭션이 페이지 경계를 가로지르기 때문에, 인스트럭션 스트림이 물리적으로 연속적인 위치로부터 인스트럭션을 인출할 수 없다는 것을, 디코드/디스패치가 나타내는 경우, 프로세싱은 추가적인 프로세싱이 수행되는 테스트 세트로 계속된다.
예를 들어, 인스트럭션 페이지 경계 횡단(510), 복원(511), I-PER 페치(512), I-STEP 및 Adstop(514), 시작 및 종료(516) 및 수집 통계 결정 실행 모드(JIT 모드)(518)를 포함하는 프로세싱에 대해 선택될 수 있는 다양한 테스트 세트가 존재한다. 이들 테스트 세트는 예로서 제공되지만, 추가적인, 보다 적은 또는 상이한 테스트 세트가 이용될 수 있다. 각 테스트 세트는 메인라인 프로세싱으로 복귀하기 전에 수행되어야 할 하나 이상의 동작을 포함할 수 있다. 테스트 세트에 대한 보다 자세한 사항은 이하에서 설명된다.
선택될 수 있는 하나의 테스트 세트는 인스트럭션이 페이지 경계를 가로지르는지 여부를 결정하기 위해 사용되는 인스트럭션 페이지 경계 횡단 테스트 세트(510)이다. 이 테스트 세트는 인스트럭션이 페이지의 끝(또는 메모리의 다른 지정된 유닛)에 인접한 경우 호출된다. 예를 들어, EOR 변수는 예를 들어 페이지의 끝에서 4 바이트를 뺀 값으로 설정된다. 방금 완료된 인스트럭션 루틴과 연관된 디코드/디스패치 루틴에서, EOR 값은 인스트럭션이 페이지의 끝에 인접한지 여부를 결정하기 위해 인스트럭션 카운터에 비교된다. 이 단일 테스트가 만족되는 경우, 이 예에서 테스트 세트(510)가 호출된다.
테스트 세트(510)에서, 인스트럭션이 하나의 페이지를 넘어서 존재하는지 여부를 결정하기 위한 테스트가 수행된다. 예를 들어, 페이지가 4 바이트를 가지고 있고 인스트럭션이 단지 2 바이트인 경우, 인스트럭션은 페이지 상에 존재한다. 따라서, 프로세싱은 인스트럭션을 실행하는 메인라인 프로세싱에서 재개된다. 그러나, 인스트럭션이 6 바이트이고 인스트럭션의 4 바이트만이 하나의 페이지 상에 존재하는 경우, 인스트럭션은 페이지 경계를 가로지는 것으로 결정된다. 인스트럭션의 마지막 2 바이트는 논리적으로는 연속적이지만, 물리적으로 불연속이기 때문에, 마지막 2 바이트를 획득하고 물리적으로 연속적인 것처럼 6 바이트를 제공하기 위한 프로세싱이 수행된다. 6 바이트는 마치 물리적으로 연속적인 것처럼 획득되고 (포인터를 통해) 실행될 적절한 인스트럭션 루틴으로 제공된다.
전술한 바와 같이, 메인라인 프로세싱에서의 각 인스트럭션 내에서 페이지 경계 횡단 테스트를 실행하는 대신, 이 테스트는 단지 원하는 경우 또는 필요에 따라 수행된다. 즉, 인스트럭션이 페이지의 끝에 인접한 것으로 결정된 경우에만 테스트가 수행된다.
또 다른 테스트 세트는 복원 테스트 세트(511)이다. 이 테스트 세트는 인스트럭션에 대해 특별한 취급이 필요한 경우에 호출되며, 이는 이하에서 보다 자세히 기술된다. 일 예에서, 다양한 변수의 값이 저장되고, 이들 변수는 후속하여 변경된다. 복원은 이들 변수를 저장된 값으로 복귀시키는데 사용된다.
또 다른 테스트 세트는 I-PER 페치 테스트 세트(512)이다. PER 모니터링은 인스트럭션을 지정된 저장 영역으로부터 인출하는 것과 같이 소정의 프로그램 이벤트를 모니터링하는 z/Architecture 디버깅 툴이다. 이 테스트 세트는 I-PER 모드가 시작되어야 함을 EOR 값이 나타내는 경우 이용된다. 예를 들어, PER 모니터링이 페이지의 중간에서 시작되어야 하고, EOR 변수와 인스트럭션 카운터의 비교치가 페이지의 중간을 나타내며 PER 모니터링이 시작되어야 하는 경우, 이 테스트 세트는 호출되고 PER과 연관된 프로세싱이 수행된다.
또 다른 테스트 세트는 I-Step 및 Adstop 설정 세트(514)이다. I-Step 및 Adstop은 설계된 z/Architecture에서의 디버깅 툴이다. I-Step인 경우, 프로세서는 단일 인스트럭션을 거치고 그런 다음 정지 상태로 진입하게 되는 모드에 놓이게 된다. 정지 상태 동안, 머신의 상태는 조사된다. 예를 들어, 레지스터는 수동으로 판독되고, 그 이후, 계속적인 I-Step 모드가 발행된다. 호출되는 I-Step 테스트 세트의 경우, EOR 변수는 인스트럭션 카운터와 일치한다. 임의의 종류의 인스트럭션을 실행한 이후, 인스트럭션 카운터는 EOR에서 즉각 종료될 것이며 따라서, EOR은 인공적으로 0으로 설정된다. 따라서, 프로그램 실행은 각 인스트럭션 이후 즉시 테스트 블록으로 진행한다. 그것은 정지 상태로 진행할 것이고, 사용자 상호작용을 기다릴 것이며 그런 다음 계속 진행할 것이다.
Adstop은 인스트럭션 어드레스가 특정 범위 내에 존재하는 경우의 정지이다. 그것은 PER 모드와 유사하다.
또 다른 테스트 세트는 시작 및 종료 테스트 세트이다. 이 테스트 세트는 제어가 CPU 제어로 넘겨지고 다시 넘어오는 경우 사용된다. 프로그램 실행이 하나의 아키텍쳐 모드에서 또 다른 아키텍쳐 모드로 변경되는 경우, 이 흐름은 종료되고 제어는 CPU 제어로 계속된다. 이 테스트 세트를 호출하기 위해, EOR 변수는 예를 들어 0으로 설정된다.
실행에 대해 어떤 모드가 사용될 것인지에 대해 결정하기 위해 수집 통계/결정 실행 모드 테스트 세트(518)가 사용된다. 이 테스트 세트는 사용량 통계를 수집하고 이 통계에 기초하여 실행 모드를 선택한다. 실행 모드의 예는 해석 모드(메인라인 프로세싱(502)으로 복귀)와, 각 실행되는 인스트럭션이 버퍼로 복사되는 기록 모드와, 어드레스가 미리 변환된 경우 사용되는 변환 모드를 포함한다. 이 테스트 세트를 호출하기 위해, EOR 변수는 예를 들어 0으로 설정된다. 이것은 이 테스트 세트가 각 인스트럭션 이후에 처리되도록 해준다.
전술한 테스트 세트에서는, 주된 테스트 또는 동작이 나타나고 있지만, 각 테스트 세트는 다른 동작을 포함할 수 있다. 예를 들어, 주된 테스트 또는 동작 외에, 각 테스트 세트는 또한 예를 들어 인스트럭션 페이지 경계 횡단이 이루어지고 있는지 또는 방해가 있는지 여부를 체크할 수 있다.
인터프리터(420)에 의한 인스트럭션 스트림의 프로세싱과 연관된 보다 자세한 사항은 도 6을 참조하여 설명된다.
처음에, 인스트럭션 스트림에 대한 포인터가 인스트럭션 스트림과 연관된 상태 및 인스트럭션 카운터와 함께 인터프리터(420)에 입력된다(단계 600). 상태는 예를 들어 부동 소수점, 일반, 제어 및/또는 어드레싱 레지스터를 포함하는 레지스터와, 예를 들어 PER 모드 활성, I-Step 활성 등을 나타내는 플래그를 포함한다. 이 상태는 평가된다(단계 602).
평가에 기초하여, 테스트 세트 중 하나가 선택되고 테스트 세트의 프로세싱이 개시된다(단계 604). 이 테스트 세트는 프로세싱이 특정 테스트 세트로 개시된다는 것을 평가가 나타낸다는 점에서 사전결정된다. 테스트 세트에서, 소정의 동작은 테스트 세트에 따라 수행된다. 또한, 테스트 세트는 필요에 따라 호출될 다음 테스트 세트를 결정하고 그 다음 테스트 세트를 지목하는 테스트 세트 포인터를 설정한다. 다음 테스트 세트는 테스트 세트 내에서 수행된 평가(예를 들어, PER 활성화, 페이지 경계 횡단에 인접함, I-Step 활성화 등)에 따라 동일한 테스트 세트 또는 상이한 테스트 세트일 수 있다.
테스트 세트를 실행하는 것에 응답하여, 흐름은 메인라인 프로세싱 내에서 선택된 인스트럭션 루틴으로 진행하며, 그 루틴이 실행된다(단계 606). 일 예에서, 루틴은 하나의 인스트럭션을 포함하지만, 다른 예에서, 루틴은 다수의 인스트럭션을 포함할 수 있다. 인스트럭션 루틴이 완료되는 경우, 프로세싱은 인스트럭션 루틴과 연관된 디코드/디스패치 루틴으로 계속된다(단계 608). 디코드/디스패치에서, 프로세싱이 다음 인스트럭션으로 계속될 것인지 또는 테스트 세트를 실행할 것인지를 결정하는 단일 테스트가 수행된다(단계 610). 이 단일 테스트는 EOR의 값이 만족되는지를 체크한다. 만족되지 않은 경우(질의 단계(612), 프로세싱은 메인라인 실행으로 계속된다(단계 606). 그렇지 않으면, 프로세싱은 사전결정된 테스트 세트를 개시하고(단계 614), 테스트 세트가 처리된다(단계 616). 프로세싱은 테스트 세트에 의해 표시되는 바 대로 처리되어야할 다음 인스트럭션으로 계속된다.
테스트 세트를 처리하는 것과 연관된 추가적인 상세한 설명은 도 7을 참조하여 설명된다. 테스트 세트의 처리 동안, 특별한 취급을 포함하는 인스트럭션이 실행될 수 있다. 이러한 인스트럭션의 취급을 용이하게 하기 위해, 버퍼가 이용되며 이는 이하에서 설명된다.
도 7을 참조하면, 테스트 세트의 프로세싱이 시작되고 인스트럭션이 입력된다(단계 700). 이 인스트럭션이 특별한 취급을 필요로 하는 유형인지 여부를 결정한다(질의 단계(702)). 예를 들어, 인스트럭션이 실행 인스트럭션인지 또는 페이지 경계를 가로지르는 인스트럭션인지를 검사한다. 그 인스트럭션이 특별한 취급을 필요로 하는 인스트럭션인 경우, 버퍼가 이용된다. 이 버퍼는 프로세서의 로컬 메모리 내에 상주하는 임시 버퍼이다. 예를 들어, 인스트럭션이 수행되어야 할 타겟 인스트럭션을 지정하는 Z 인스트럭션인 실행 인스트럭션인 경우, 타겟 인스트럭션은 버퍼 메모리 위치로 로딩된다(단계 704). 타겟 인스트럭션이 버퍼로 복제됨으로써, 인스트럭션과 연관된 적어도 하나의 양상이 수정될 수 있다(단계 706). 예를 들어, 타겟 인스트럭션이 MVC(move character) 인스트럭션이고 인스트럭션 내에서 지정되어 있는 바와 같이 이동되어야 할 바이트의 수가 수정되어야 함을 가정한다. 인스트럭션은 버퍼로 복제되고 수정되어 이동되어야 할 바이트의 수를 나타내도록 수정된다. 예를 들어, 이동되어야 할 바이트의 본래의 수가 4 바이트이면, 이것은 8 바이트와 같은 또 다른 값으로 변경될 수 있다. 따라서, 4 바이트를 이동시키는 것 대신, 타겟 인스트럭션은 8 바이트(또는 임의의 다른 수의 바이트)를 이동시키도록 수정된다.
또 다른 예로서, 인스트럭션이 페이지 경계를 가로지르는 인스트럭션인 것으로 가정한다. 이 경우, 타겟 인스트럭션은 실행되어야 할 인스트럭션이고, 논리적으로 연속적이나 물리적으로는 비-연속적인 인스트럭션의 바이트는 버퍼로 복제되어 이들 바이트가 물리적으로 연속적이도록 한다. 예를 들어, 하나의 페이지 상에 위치한 인스트럭션의 바이트의 제 1 세트는 버퍼로 복제되고 또 다른 페이지 상의 인스트럭션의 나머지 바이트 또한 버퍼로 복제된다(단계 704). 이 예에서, 인스트럭션은 수정될 필요가 없고, 따라서 단계(706)는 무시된다.
버퍼를 초기화하는 것에 후속하여, 처리되는 테스트 세트의 일부로서 다양한 작업이 수행된다. 이들 작업은 예를 들어 인스트럭션 포인터를 버퍼로 리다이렉팅 하는 것과 이후의 사용을 위해 다양한 변수의 값을 저장하는 것을 포함한다(단계 708). 예를 들어, EOR 변수의 현재의 값 및 다음 테스트 세트 표시자의 현재의 값이 저장된다.
그 이후, 이들 변수의 값은 교체된다(단계 710). 예를 들어, EOR은 0으로 설정되고, 다음 테스트 세트 표시자는 복원 테스트 세트를 지목하도록 설정된다.
그런 다음, 버퍼 내의 인스트럭션은 실행된다. 디코드/디스패치에서, 단일 테스트(예를 들어, 변수의 끝(end-of-variable))가 실패하는 경우, 복원 테스트 세트가 선택된다(단계 714). 복원 동안, 단계(708-710)에서의 동작은 취소된다. 예를 들어, 인스트럭션 포인터가 본래의 인스트럭션 스트림으로 리다이렉팅되고, EOR 변수가 그의 저장된 값으로 설정되며, 다음 테스트 세트 표시자는 또한 그의 저장된 값으로 리셋된다. 그런 다음, 프로세싱은 다음 인스트럭션에서 계속된다(단계 716).
질의 단계(702)로 돌아가서, 인스트럭션이 특별한 취급을 필요하는 유형이 아닌 경우, 테스트 세트에 의해 지시되는 바대로, 프로세싱은 테스트 세트의 다음 인스트럭션으로 계속되거나 또는 메인라인 프로세싱으로 복귀한다.
본 발명의 하나 이상의 양상은 예를 들어 컴퓨터 사용가능한 매체를 갖는 제조 물품(예를 들어, 하나 또는 그 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 컴퓨터 사용가능한 매체는 예를 들어 본 발명의 기능을 제공 및 용이하게 하는 컴퓨터 판독가능한 프로그램 코드 수단 또는 로직(예를 들어, 인스트럭션, 코드, 명령 등)을 포함한다. 제조 물품은 컴퓨터 시스템의 일부로서 포함될 수 있고 또는 별도로 판매될 수 있다.
본 발명의 하나 이상의 양상을 구현하는 제조 물품 또는 컴퓨터 프로그램 제품의 일 예는 도 8을 참조하여 설명된다. 컴퓨터 프로그램 제품(800)은 예를 들어 본 발명의 하나 이상의 양상을 제공 및 용이하게 하는 컴퓨터 판독가능한 프로그램 코드 수단 또는 로직(804)을 저장하는 하나 이상의 컴퓨터 사용가능한 매체(802)를 포함한다. 이 매체는 전자적, 자기적, 광학적, 전자기적, 적외선 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 컴퓨터 판독가능한 매체의 예는 반도체 또는 고체 상태 메모리, 자기 테이프, 착탈가능한 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 고형(rigid) 자기 디스크 및 광학 디스크를 포함한다. 광학 디스크의 예는 컴팩트 디스크 판독 전용 메모리(CD-ROM), 컴팩트 디스크 판독/기록 (CD-R/W) 및 DVD를 포함한다.
프로그램 인스트럭션의 시퀀스 또는 하나 이상의 컴퓨터 판독가능 프로그램 코드 수단 또는 로직에 의해 정의되는 하나 이상의 상호관련된 모듈의 논리적 어셈블리는 본 발명의 하나 이상의 양상의 수행을 지시한다.
바람직하게, 인스트럭션 실행을 제어하는 기능이 제공되는데, 단일 EOR 테스트에 의해 결정된 바와 같이 (단일 EOR 테스트 이외의) 테스팅 또는 다른 동작이 필요로 하지 않는다면, 제어는 메인라인 프로세싱 내에서 유지된다. 필요한 경우에만 테스트를 수행함으로써, 성능은 향상되고 코딩은 간단해진다(예를 들어, 각 인스트럭션은 모든 테스트에 대한 코드를 포함할 필요는 없다).
바람직하게, 인터프리터 및 다음 루틴으로 복귀하는 대신, 다음 루틴으로 분기(branching)가 발생한다는 점(테스트 세트는 처리될 필요가 없는 것으로 가정함)에서 프로세싱은 스트림라인형이다.
또 다른 장점으로서, 실행 인스트럭션과 같은 소정의 인스트럭션과 연관된 오버헤드는 버퍼를 사용함으로써 감소된다. 실행 인스트럭션에 있어서, 메모리의 일 페이지에서 메모리의 다른 페이지로의 도약(jumping)과 연관된 오버헤드가 존재한다. 예를 들어, 메모리의 일 페이지 상에 존재하는 실행 인스트럭션이 실행되고, 그런 다음 메모리의 다른 페이지에 존재하는 타겟 인스트럭션이 실행된다. 타겟 인스트럭션이 실행된 이후, 프로세싱은 실행 인스트럭션 이후의 인스트럭션으로 복귀한다. 이러한 전후 분기와 연관된 오버가 존재한다. 그러나, 버퍼를 사용함으로써, 제 1 페이지를 남겨두는 기록이 보존되고, 따라서 프로세싱이 복귀되는 경우, 복원이 수행될 수 있고 추가적인 테스팅 및/또는 동작(예를 들어, 어드레스 변환 등)은 수행될 필요가 없다.
다양한 실시예가 앞에서 기술되었지만, 이들은 단지 예일 뿐이다. 예를 들어, 처리 환경은 Power4, PowerPC 또는 Intel 이외의 아키텍쳐에 기초한 처리 유닛을 포함할 수 있다. 또한, pSeries 서버 이외의 서버가 본 발명의 하나 이상의 양상을 합체하여 사용할 수 있다. 또한, 본 명세서에서 언급한 것 이외의 운영 시스템이 사용될 수 있다. 더 나아가, 처리 환경은 z/Architecture 이외의 환경을 에뮬레이팅할 수 있다. 또한, 다양한 에뮬레이터가 사용될 수 있다. 에뮬레이터는 상업적으로 입수가능하며 다양한 회상에 의해 공급된다. 또한, 처리 환경은 에 뮬레이터 코드를 포함할 필요가 없다. 다수의 다른 유형의 처리 환경이 본 발명의 하나 이상의 양상을 구현 및/또는 사용할 수 있다.
또한, 버퍼는 실행 인스트럭션 및 페이지 경계를 가로지르는 인스트럭션과 같은 소정의 인스트럭션을 처리하는데 사용되었지만, 버퍼가 사용되어야 하는 다른 인스트럭션 및/또는 상황이 존재할 수 있으며, 이들은 본 발명의 범주 내에 포함된다.
더 나아가, 테스트 세트는 예로서 제공되었다. 추가적인, 보다 적은 및/또는 그 밖의 다른 테스트 세트가 이용될 수 있다. 포함된 테스트 세트의 수는 설계에 따라 달라진다. 본 발명에 대한 다수의 변형예가 가능하며 본 발명의 범주에 포함된다.
또한, 하나 이상의 실시예에서, 프로그램 코드를 저장 및/또는 실행하는데 적절한 데이터 처리 시스템이 사용가능하며, 이 시스템은 시스템 버스를 통해 메모리 소자에 직접적으로 또는 간접적으로 결합된 하나 이상의 프로세서를 포함한다. 메모리 소자는 예를 들어 프로그램 코드의 실제 실행 동안 이용되는 로컬 메모리와, 벌크 저장소, 및 실행 동안 코드가 벌크 저장소로부터 검색되어야 하는 횟수를 감소시키기 위해 적어도 일부의 프로그램 코드에 대한 임시 저장소를 제공하는 캐시 메모리를 포함한다.
입/출력, 즉 I/O 장치(예를 들어, 키보드, 디스플레이, 포인팅 장치, DASD, 테이프, CD, DVD, 썸 드라이브 및 다른 메모리 매체 등을 포함하나 여기에 제한되지는 않음)는 시스템에 직접적으로 또는 중간 I/O 제어기를 통해 간접적으로 결합 될 수도 있다. 데이터 처리 시스템이 중간의 사설 또는 공개 네트워크를 통해 다른 데이터 처리 시스템 또는 원격의 프린터 또는 저장 장치에 접속될 수 있도록 하기 위해 네트워크 어댑터가 시스템에 결합될 수 있다. 모뎀, 케이블 모뎀 및 이더넷 카드는 이용가능한 네트워크 어댑터의 유형 중 단지 일부이다.
본 발명의 하나 이상의 양상의 기능은 소프트웨어, 펌웨어, 하드웨어 또는 이들의 몇몇 조합으로 구현될 수 있다. 본 발명의 기능을 수행하기 위해 머신에 의해 실행가능한 인스트럭션의 적어도 하나의 프로그램을 구현하는 머신에 의해 판독가능한 적어도 하나의 프로그램 저장 장치가 제공된다.
본 명세서에서 개시된 흐름도는 단지 예일뿐이다. 본 발명의 사상을 벗어나는 일 없이, 본 명세서에서 개시된 이들 흐름도 또는 단계(또는 동작)에 대해 다수의 변형이 있을 수 있다. 예를 들어, 단계는 다른 순서로 수행될 수 있거나, 또는 단계가 추가, 삭제 또는 수정될 수 있다. 이들 모든 변형은 청구된 본 발명의 일부로서 간주된다.
본 명세서에서는 실시예들이 서술되고 기술되었지만, 당업자에게는 본 발명의 사상을 벗어나는 일 없이 다양한 변형, 부가, 대체 등이 이루어질 수 있다는 것이 자명할 것이며, 따라서 이들은 후속하는 청구항에 정의된 본 발명의 범주 내에 속하는 것으로 간주된다.

Claims (6)

  1. 처리 환경(processing environment)에서 인스트럭션을 실행하는 방법에 있어서,
    상기 방법은 인스트럭션 스트림을 처리하는 단계를 포함하고,
    상기 처리하는 단계는,
    상기 인스트럭션 스트림의 인스트럭션 루틴(routine)을 실행하는 단계와,
    상기 인스트럭션 루틴의 실행에 응답하여, 프로세싱이 상기 인스트럭션 스트림의 또 다른 인스트럭션 루틴으로 진행할 지 또는 상기 인스트럭션 스트림의 메인라인 프로세싱을 벗어나 테스트 세트로 이행할지를 결정하기 위해 테스트를 실행하는 단계와,
    프로세싱이 상기 테스트 세트로 이행한다는 결정에 응답하여, 인스트럭션 포인터를 상기 인스트럭션 스트림의 실행될 인스트럭션으로부터 버퍼 내의 타겟 인스트럭션으로 리다이렉팅(redirecting)할 지 여부를 결정하기 위해 상기 테스트 세트를 실행하는 단계를 포함하고,
    상기 테스트 세트를 실행하는 단계는,
    상기 실행될 인스트럭션이 상기 인스트럭션 스트림의 하나 이상의 다른 인스트럭션과는 다르게 취급되어야 하는 지를 판정하는 단계와,
    상기 실행될 인스트럭션이 다르게 취급되어야 한다는 것을 나타내는 판정에 응답하여, 상기 실행될 인스트럭션을 참조해서 메모리에 위치한 버퍼 내의 타겟 인스트럭션을 제공하는 단계와,
    상기 버퍼 내의 상기 타겟 인스트럭션이 수정되어야 하는지 여부를 판정하는 단계와,
    상기 타겟 인스트럭션이 수정되어야 한다는 것을 나타내는 판정에 응답하여 상기 타겟 인스트럭션을 수정하는 단계와,
    상기 인스트럭션 포인터를 상기 실행될 인스트럭션으로부터 상기 버퍼의 상기 타겟 인스트럭션으로 리다이렉팅하는 단계 -상기 버퍼의 상기 타겟 인스트럭션은 실행되어야 함- 를 포함하는
    처리 환경에서 인스트럭션을 실행하는 방법.
  2. 제 1 항에 있어서,
    상기 버퍼 내의 타겟 인스트럭션을 제공하는 단계는 상기 실행될 인스트럭션을 메모리 내에서 논리적으로는 연속적이나 물리적으로는 불연속적인 위치로부터 상기 버퍼 내의 물리적으로 연속적인 위치로 복제하는 단계를 포함하는
    처리 환경에서 인스트럭션을 실행하는 방법.
  3. 제 1 항에 있어서,
    상기 실행될 인스트럭션은 페이지 경계를 가로지르는 인스트럭션을 포함하고, 상기 버퍼 내의 타겟 인스트럭션을 제공하는 단계는 메모리의 일 페이지로부터의 상기 실행될 인스트럭션의 제 1 부분과 메모리의 다른 페이지로부터의 상기 실행될 인스트럭션의 제 2 부분을 상기 버퍼로 복제하는 단계를 포함하는
    처리 환경에서 인스트럭션을 실행하는 방법.
  4. 제 1 항에 있어서,
    상기 실행될 인스트럭션은 실행 인스트럭션(an execute instruction)을 포함하고, 상기 버퍼 내의 상기 타겟 인스트럭션은 상기 실행 인스트럭션의 타겟 인스트럭션이며, 상기 수정하는 단계는 상기 버퍼의 상기 타겟 인스트럭션의 레지스터를 수정하는 단계를 포함하는
    처리 환경에서 인스트럭션을 실행하는 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항의 방법의 모든 단계를 수행하는 수단을 포함하는 시스템.
  6. 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체에 있어서,
    상기 컴퓨터 프로그램은 컴퓨터 시스템 상에서 실행되는 경우 청구항 제 1 항 내지 제 4 중 어느 한 항의 방법의 모든 단계를 수행하는 인스트럭션을 포함하는
    컴퓨터 판독가능 매체.
KR1020097010895A 2007-02-01 2008-01-21 에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체 KR101109984B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/670,187 2007-02-01
US11/670,187 US7882336B2 (en) 2007-02-01 2007-02-01 Employing a buffer to facilitate instruction execution
PCT/EP2008/050652 WO2008092769A1 (en) 2007-02-01 2008-01-21 Employing a buffer to facilitate instruction execution

Publications (2)

Publication Number Publication Date
KR20090095573A KR20090095573A (ko) 2009-09-09
KR101109984B1 true KR101109984B1 (ko) 2012-02-16

Family

ID=39322844

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097010895A KR101109984B1 (ko) 2007-02-01 2008-01-21 에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체

Country Status (7)

Country Link
US (1) US7882336B2 (ko)
EP (1) EP2115574B1 (ko)
JP (1) JP5235900B2 (ko)
KR (1) KR101109984B1 (ko)
CN (1) CN101583926B (ko)
TW (1) TWI417786B (ko)
WO (1) WO2008092769A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361109B2 (en) * 2010-05-24 2016-06-07 Qualcomm Incorporated System and method to evaluate a data value as an instruction
WO2012161059A1 (en) * 2011-05-20 2012-11-29 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and method for driving the same
EP2881858B1 (de) * 2013-12-09 2016-04-06 dSPACE digital signal processing and control engineering GmbH Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100602157B1 (ko) * 2000-12-27 2006-07-19 인텔 코오퍼레이션 가상 머신 모니터에 의해 지원되는 가상 머신상에서실행되는 게스트 소프트웨어의 동작을 제한하기 위한새로운 프로세서 모드
US20060259736A1 (en) * 2005-05-12 2006-11-16 Carver Brian L Apparatus, system, and method for redirecting an instruction pointer to recovery software instructions

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57189252A (en) * 1981-05-18 1982-11-20 Mitsubishi Electric Corp Program controlling method
US4591982A (en) * 1983-08-29 1986-05-27 International Business Machines Corporation Storage selection override apparatus for a multimicroprocessor implemented data processing system
US5918046A (en) 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5515521A (en) * 1994-02-08 1996-05-07 Meridian Semiconductor, Inc. Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor
US5586278A (en) 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
KR100443759B1 (ko) 1997-06-25 2004-08-09 트랜스메타 코포레이션 개선된 마이크로프로세서
US6249861B1 (en) * 1998-12-03 2001-06-19 Sun Microsystems, Inc. Instruction fetch unit aligner for a non-power of two size VLIW instruction
JP3652956B2 (ja) * 2000-04-25 2005-05-25 北陸日本電気ソフトウェア株式会社 エミュレーション装置
US7840777B2 (en) * 2001-05-04 2010-11-23 Ascenium Corporation Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime
US20030093649A1 (en) 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
GB2393270B (en) * 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
JP3798745B2 (ja) * 2002-11-19 2006-07-19 株式会社東芝 情報再生装置及び情報再生方法
JP4155052B2 (ja) * 2003-02-18 2008-09-24 日本電気株式会社 エミュレータ、エミュレーション方法およびプログラム
US7383540B2 (en) 2003-12-12 2008-06-03 International Business Machines Corporation Altering execution flow of a computer program
US20050193283A1 (en) * 2003-12-30 2005-09-01 Reinhardt Steven K. Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support
US20080168260A1 (en) * 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
US7783867B2 (en) * 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100602157B1 (ko) * 2000-12-27 2006-07-19 인텔 코오퍼레이션 가상 머신 모니터에 의해 지원되는 가상 머신상에서실행되는 게스트 소프트웨어의 동작을 제한하기 위한새로운 프로세서 모드
US20060259736A1 (en) * 2005-05-12 2006-11-16 Carver Brian L Apparatus, system, and method for redirecting an instruction pointer to recovery software instructions

Also Published As

Publication number Publication date
WO2008092769A1 (en) 2008-08-07
US20080189527A1 (en) 2008-08-07
CN101583926A (zh) 2009-11-18
JP2010518470A (ja) 2010-05-27
TW200847013A (en) 2008-12-01
EP2115574B1 (en) 2016-09-28
CN101583926B (zh) 2012-08-22
EP2115574A1 (en) 2009-11-11
JP5235900B2 (ja) 2013-07-10
TWI417786B (zh) 2013-12-01
KR20090095573A (ko) 2009-09-09
US7882336B2 (en) 2011-02-01

Similar Documents

Publication Publication Date Title
US7783867B2 (en) Controlling instruction execution in a processing environment
KR100737666B1 (ko) 가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템
US9766911B2 (en) Support for a non-native application
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
US8875114B2 (en) Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
US20180024855A1 (en) Live migration of virtual machines from/to host computers with graphics processors
US8887139B2 (en) Virtual system and method of analyzing operation of virtual system
KR20070121701A (ko) 서브루틴 복귀 메카니즘 선택
JP2001519953A (ja) マイクロプロセッサの改良
US8438340B2 (en) Executing atomic store disjoint instructions
KR101109984B1 (ko) 에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체
US7685381B2 (en) Employing a data structure of readily accessible units of memory to facilitate memory access
JP2023525025A (ja) 装置の状態情報を収集する技術
JPS6139135A (ja) 仮想計算機システムにおけるインタバル・タイマ割り込み制御装置

Legal Events

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

Payment date: 20141215

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151228

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171227

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 8