KR101109984B1 - 에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체 - Google Patents
에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체 Download PDFInfo
- 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
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 40
- 238000012360 testing method Methods 0.000 claims description 121
- 238000012545 processing Methods 0.000 claims description 107
- 238000000034 method Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 230000003362 replicative effect Effects 0.000 claims 1
- 230000007704 transition Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000014616 translation Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- QWXYZCJEXYQNEI-OSZHWHEXSA-N intermediate I Chemical compound COC(=O)[C@@]1(C=O)[C@H]2CC=[N+](C\C2=C\C)CCc2c1[nH]c1ccccc21 QWXYZCJEXYQNEI-OSZHWHEXSA-N 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction 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
본 발명은 일반적으로 처리 환경(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)
- 처리 환경(processing environment)에서 인스트럭션을 실행하는 방법에 있어서,상기 방법은 인스트럭션 스트림을 처리하는 단계를 포함하고,상기 처리하는 단계는,상기 인스트럭션 스트림의 인스트럭션 루틴(routine)을 실행하는 단계와,상기 인스트럭션 루틴의 실행에 응답하여, 프로세싱이 상기 인스트럭션 스트림의 또 다른 인스트럭션 루틴으로 진행할 지 또는 상기 인스트럭션 스트림의 메인라인 프로세싱을 벗어나 테스트 세트로 이행할지를 결정하기 위해 테스트를 실행하는 단계와,프로세싱이 상기 테스트 세트로 이행한다는 결정에 응답하여, 인스트럭션 포인터를 상기 인스트럭션 스트림의 실행될 인스트럭션으로부터 버퍼 내의 타겟 인스트럭션으로 리다이렉팅(redirecting)할 지 여부를 결정하기 위해 상기 테스트 세트를 실행하는 단계를 포함하고,상기 테스트 세트를 실행하는 단계는,상기 실행될 인스트럭션이 상기 인스트럭션 스트림의 하나 이상의 다른 인스트럭션과는 다르게 취급되어야 하는 지를 판정하는 단계와,상기 실행될 인스트럭션이 다르게 취급되어야 한다는 것을 나타내는 판정에 응답하여, 상기 실행될 인스트럭션을 참조해서 메모리에 위치한 버퍼 내의 타겟 인스트럭션을 제공하는 단계와,상기 버퍼 내의 상기 타겟 인스트럭션이 수정되어야 하는지 여부를 판정하는 단계와,상기 타겟 인스트럭션이 수정되어야 한다는 것을 나타내는 판정에 응답하여 상기 타겟 인스트럭션을 수정하는 단계와,상기 인스트럭션 포인터를 상기 실행될 인스트럭션으로부터 상기 버퍼의 상기 타겟 인스트럭션으로 리다이렉팅하는 단계 -상기 버퍼의 상기 타겟 인스트럭션은 실행되어야 함- 를 포함하는처리 환경에서 인스트럭션을 실행하는 방법.
- 제 1 항에 있어서,상기 버퍼 내의 타겟 인스트럭션을 제공하는 단계는 상기 실행될 인스트럭션을 메모리 내에서 논리적으로는 연속적이나 물리적으로는 불연속적인 위치로부터 상기 버퍼 내의 물리적으로 연속적인 위치로 복제하는 단계를 포함하는처리 환경에서 인스트럭션을 실행하는 방법.
- 제 1 항에 있어서,상기 실행될 인스트럭션은 페이지 경계를 가로지르는 인스트럭션을 포함하고, 상기 버퍼 내의 타겟 인스트럭션을 제공하는 단계는 메모리의 일 페이지로부터의 상기 실행될 인스트럭션의 제 1 부분과 메모리의 다른 페이지로부터의 상기 실행될 인스트럭션의 제 2 부분을 상기 버퍼로 복제하는 단계를 포함하는처리 환경에서 인스트럭션을 실행하는 방법.
- 제 1 항에 있어서,상기 실행될 인스트럭션은 실행 인스트럭션(an execute instruction)을 포함하고, 상기 버퍼 내의 상기 타겟 인스트럭션은 상기 실행 인스트럭션의 타겟 인스트럭션이며, 상기 수정하는 단계는 상기 버퍼의 상기 타겟 인스트럭션의 레지스터를 수정하는 단계를 포함하는처리 환경에서 인스트럭션을 실행하는 방법.
- 제 1 항 내지 제 4 항 중 어느 한 항의 방법의 모든 단계를 수행하는 수단을 포함하는 시스템.
- 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체에 있어서,상기 컴퓨터 프로그램은 컴퓨터 시스템 상에서 실행되는 경우 청구항 제 1 항 내지 제 4 중 어느 한 항의 방법의 모든 단계를 수행하는 인스트럭션을 포함하는컴퓨터 판독가능 매체.
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)
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)
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)
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 |
-
2007
- 2007-02-01 US US11/670,187 patent/US7882336B2/en active Active
-
2008
- 2008-01-21 EP EP08701609.3A patent/EP2115574B1/en active Active
- 2008-01-21 WO PCT/EP2008/050652 patent/WO2008092769A1/en active Application Filing
- 2008-01-21 JP JP2009547636A patent/JP5235900B2/ja active Active
- 2008-01-21 KR KR1020097010895A patent/KR101109984B1/ko active IP Right Grant
- 2008-01-21 CN CN200880002611.2A patent/CN101583926B/zh active Active
- 2008-01-31 TW TW097103822A patent/TWI417786B/zh active
Patent Citations (2)
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 |
---|---|
TW200847013A (en) | 2008-12-01 |
EP2115574B1 (en) | 2016-09-28 |
EP2115574A1 (en) | 2009-11-11 |
TWI417786B (zh) | 2013-12-01 |
JP5235900B2 (ja) | 2013-07-10 |
CN101583926B (zh) | 2012-08-22 |
KR20090095573A (ko) | 2009-09-09 |
US20080189527A1 (en) | 2008-08-07 |
US7882336B2 (en) | 2011-02-01 |
WO2008092769A1 (en) | 2008-08-07 |
CN101583926A (zh) | 2009-11-18 |
JP2010518470A (ja) | 2010-05-27 |
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 | |
US20110113180A1 (en) | Virtual system and method of analyzing operation of virtual system | |
KR20070121701A (ko) | 서브루틴 복귀 메카니즘 선택 | |
EP4189566A1 (en) | Malware analysis through virtual machine forking | |
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 |