KR101884544B1 - 컴퓨팅 시스템에서 아키텍처 모드 구성 - Google Patents

컴퓨팅 시스템에서 아키텍처 모드 구성 Download PDF

Info

Publication number
KR101884544B1
KR101884544B1 KR1020167028754A KR20167028754A KR101884544B1 KR 101884544 B1 KR101884544 B1 KR 101884544B1 KR 1020167028754 A KR1020167028754 A KR 1020167028754A KR 20167028754 A KR20167028754 A KR 20167028754A KR 101884544 B1 KR101884544 B1 KR 101884544B1
Authority
KR
South Korea
Prior art keywords
mode
architecture
computing environment
architectural
power
Prior art date
Application number
KR1020167028754A
Other languages
English (en)
Other versions
KR20160133546A (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 KR20160133546A publication Critical patent/KR20160133546A/ko
Application granted granted Critical
Publication of KR101884544B1 publication Critical patent/KR101884544B1/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
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Supply And Distribution Of Alternating Current (AREA)

Abstract

구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖는지에 대한 결정이 내려진다. 상기 구성 아키텍처 모드 퍼실리티가 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경은 재구성된다. 상기 재구성하는 단계는 상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting) ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다름(different) ―, 및 상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계를 포함한다.

Description

컴퓨팅 시스템에서 아키텍처 모드 구성{ARCHITECTURAL MODE CONFIGURATION IN A COMPUTING SYSTEM}
[0001] 본 발명의 하나 또는 그 이상의 특징들은 일반적으로 컴퓨팅 환경의 구성들(configurations)에 관한 것이고, 구체적으로는 그러한 환경들의 구성들을 변경하는 것(altering)에 관한 것이다.
[0002] 컴퓨팅 환경들의 아키텍처 구성들에 따라 컴퓨팅 환경들은 다양한 능력들(capabilities)과 기능들(functions)을 제공한다. 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 두 아키텍처들에는 ESA/390과 z/Architecture이 있다.
[0003] ESA/390은 z/Architecture의 이전 모델 아키텍처이다. 그렇다 하더라도 z/Architecture가 도입되었을 때, ESA/390에 대한 지원은 계속되었다. 하나의 환경에서 두 개의 아키텍처들을 지원하기 위해서는 특정한 절차들이 뒤따른다. 예를 들어, 파워-업(power-up) 시에, ESA/390이 부팅이 되고, 그 다음에, 원할 경우, z/Architecture로 전환될 수 있다. 이렇게 하면 레거시 소프트웨어가 변경 없이 실행을 계속할 수 있었다. 하나의 환경에서 두 개의 아키텍처 구성들을 지원하기 위해 다른 절차들도 그런 식으로 제공된다.
[0004] 그러나, 가상 메모리 테스팅(virtual memory testing)은 비용이 많이 든다. 한 아키텍처에는 유효기간(sunset)이 있으므로, 예를 들어, 커맨드 라인 인터프리터 환경들(command line interpreter environments)로서 1차적으로 기능하는, DOS 운영체제들과 같은(예를 들어, MS DOS 또는 CMS), 최소 아키텍처 지원을 사용하는 시스템들을 위해, 또는 BIOS의 부분을 실행하기 위해 사용되는(그리고 가상 메모리의 복잡성 없이 실행할 수 있는) 환경들을 위해, 레거시 환경들(legacy environments)을 제공하는 것이 바람직할 수 있다.
[0005] 따라서, 이 기술 분야에서 전술한 문제를 해결할 필요가 있다.
[0006] 컴퓨팅 환경을 재구성하기 위한(reconfiguring) 컴퓨터 프로그램 제품을 제공함으로써 종래 기술의 결점들이 극복되고 장점들이 제공된다. 상기 컴퓨터 프로그램 제품은, 예를 들어, 처리회로에 의해 판독 가능하고 방법을 수행하기 위해 상기 처리회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함한다. 상기 방법은, 예를 들어, 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되었고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖고 있다고, 프로세서에 의해서, 결정하는 단계(determining) ― 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 포함하고 제1 세트의 지원된 특징들(a first set of supported features)을 가짐 ―; 상기 구성 아키텍처 모드 퍼실리티가 상기 컴퓨팅 환경 내에 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경을, 상기 프로세서에 의해서, 재구성하는 단계(reconfiguring)를 포함하되, 상기 재구성하는 단계는: 상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드 ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다르며(different), 제2 명령 세트 아키텍처(a second instruction set architecture)를 포함하고 제2 세트의 지원된 특징들(a second set of supported features)을 가짐 ― 에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting); 및 상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계를 포함한다.
[0007] 본 발명의 제1 특징은 컴퓨팅 환경을 재구성하기 위한 방법을 제공하는 것이며, 상기 방법은: 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되었고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖고 있다고, 프로세서에 의해서, 결정하는 단계(determining) ― 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 포함하고 제1 세트의 지원된 특징들(a first set of supported features)을 가짐 ―; 상기 구성 아키텍처 모드 퍼실리티가 상기 컴퓨팅 환경 내에 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경을, 상기 프로세서에 의해서, 재구성하는 단계(reconfiguring)를 포함하되, 상기 재구성하는 단계는: 상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드 ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다르며(different), 제2 명령 세트 아키텍처(a second instruction set architecture)를 포함하고 제2 세트의 지원된 특징들(a second set of supported features)을 가짐 ― 에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting); 및 상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계를 포함한다.
[0008] 본 발명의 다른 특징은 컴퓨팅 환경을 구성하기 위한 방법을 제공하는 것이며, 상기 방법은: 선택된 아키텍처에서 연산들을 수행하기 위해 컴퓨팅 환경을, 프로세서에 의해서, 구성하는 단계(configuring)를 포함하되, 상기 구성하는 단계는: 저장된 프로그램 상태 워드(a stored program status word)를 사용하여 상기 컴퓨팅 환경의 초기화를 시작하는 단계(commencing) ― 상기 프로그램 상태 워드는 상기 선택된 아키텍처 모드와 다른 아키텍처 모드의 포맷을 가짐 ―; 상기 프로그램 상태 워드가 상기 선택된 아키텍처 모드와 다른 아키텍처 모드의 포맷을 갖는다고 결정하는 단계(determining); 상기 프로그램 상태 워드가 상기 선택된 아키텍처 모드와 다른 아키텍처 모드의 포맷을 갖는다고 결정하는 것에 기초하여, 상기 선택된 아키텍처 모드의 포맷을 갖도록 자동으로 상기 저장된 프로그램 상태워드를 수정하는 단계(modifying) ― 상기 자동으로 수정하는 단계는 상기 선택된 아키텍처 모드로 전환하기 위한 명시적인 요청 없이(absent an explicit request) 수행됨 ―; 및 상기 선택된 아키텍처 모드에서 상기 컴퓨팅 환경을 구성하기 위해 상기 수정된 프로그램 상태워드를 사용하여 상기 컴퓨팅 환경의 초기화를 완료하는 단계(completing)을 포함한다.
[0009] 본 발명의 또 다른 특징은 컴퓨팅 환경을 재구성하기 위한 컴퓨터 시스템을 제공하는 것이며, 상기 컴퓨터 시스템은: 메모리; 상기 메모리와 통신하는 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은: 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되었고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖고 있다고, 프로세서에 의해서, 결정하는 단계(determining) ― 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 포함하고 제1 세트의 지원된 특징들(a first set of supported features)을 가짐 ―; 상기 구성 아키텍처 모드 퍼실리티가 상기 컴퓨팅 환경 내에 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경을, 상기 프로세서에 의해서, 재구성하는 단계(reconfiguring)를 포함하되, 상기 재구성하는 단계는: 상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드 ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다르며(different), 제2 명령 세트 아키텍처(a second instruction set architecture)를 포함하고 그리고 제2 세트의 지원된 특징들(a second set of supported features)을 가짐 ― 에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting); 및 상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계를 포함한다.
[0010] Viewed from a further aspect, the present invention provides a computer program product for reconfiguring a computing environment, the computer program product comprising a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method for performing the steps of the invention. Viewed from a further aspect, the present invention provides a computer program product for configuring a computing environment, the computer program product comprising a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method for performing the steps of the invention.
[0010] 본 발명의 또 다른 특징은 컴퓨팅 환경을 재구성하기 위한 컴퓨터 프로그램 제품을 제공하는 것이며, 상기 컴퓨터 프로그램 제품은 처리회로에 의해 판독 가능하고 본 발명의 상기 단계들을 수행하는 방법을 수행하기 위해 상기 처리회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함한다. 본 발명의 또 다른 특징은 컴퓨팅 환경을 구성하기 위한 컴퓨터 프로그램 제품을 제공하는 것이며, 상기 컴퓨터 프로그램 제품은 처리회로에 의해 판독 가능하고 본 발명의 상기 단계들을 수행하는 방법을 수행하기 위해 상기 처리회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함한다.
[0011] 본 발명의 또 다른 특징은 컴퓨터 판독가능 매체에 저장되고 디지털 컴퓨터의 내부 메모리로 로드 가능한 컴퓨터 프로그램을 제공하는 것이며, 상기 컴퓨터 프로그램은, 상기 프로그램이 컴퓨터 상에서 실행될 때, 본 발명의 상기 단계들을 수행하기 위한 소프트웨어 코드 부분들을 포함한다.
[0012] 하나 또는 그 이상의 실시 예들과 관련되는 방법들 및 시스템들이 또한 여기서 기술되고 청구된다. 더 나아가서, 하나 또는 그 이상의 실시 예들과 관련되는 서비스들이 또한 여기서 기술되고 청구된다.
[0013] 추가의 특징들 및 장점들이 실현된다. 기타 실시 예들 및 특징들이 여기서 상세히 기술되고 청구된 발명의 일부로서 고려된다.
[0014] 이제 다음과 같은 내용의 도면들에 도시되는 바와 같은, 바람직한 실시 예들을 참조하여, 단지 예시로, 본 발명을 기술할 것이다.
도 1a는 본 발명의 바람직한 실시 예에 따라, 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 한 예를 도시한다;
도 1b는 본 발명의 바람직한 실시 예에 따라, 구성 아키텍처 모드 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 가상 컴퓨팅 환경의 한 예를 도시한다;
도 2는 본 발명의 바람직한 실시 예에 따라, 구성 아키텍처 모드 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 3a는 본 발명의 바람직한 실시 예에 따라, 구성 아키텍처 모드 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 또 다른 예를 도시한다;
도 3b는 본 발명의 바람직한 실시 예에 따라, 도 3a의 메모리의 더 상세한 사항을 도시한다;
도 4a는 본 발명의 바람직한 실시 예에 따라, 한 아키텍처에서 컴퓨팅 환경을 파워-온 시키기 위한 로직(the logic)의 한 실시 예를 도시한다;
도 4b는 본 발명의 바람직한 실시 예에 따라, 도 4a의 파워-온 프로세서와 연관된 추가적인 처리의 한 실시 예를 도시한다;
도 5는 본 발명의 바람직한 실시 예에 따라, 프로그램 상태 워드(program status word)의 포맷의 한 예를 도시한다.
도 6a는 본 발명의 바람직한 실시 예에 따라, 도 4a에서 파워-온 된 상기 한 아키텍처 모드와 다른 아키텍처 모드에서 컴퓨팅 환경을 파워-온 시키기 위한 로직의 한 실시 예를 도시한다.
도 6b는 본 발명의 바람직한 실시 예에 따라, 도 6a의 파워-온 프로세스와 연관된 추가적인 처리의 한 실시 예를 도시한다.
도 7은 본 발명의 바람직한 실시 예에 따라, Load Program Status Word 명령의 포맷의 한 예를 도시한다.
도 8a는 본 발명의 바람직한 실시 예에 따라, Signal Processor 명령의 포맷의 한 예를 도시한다.
도 8b는 본 발명의 바람직한 실시 예에 따라, 도 8a의 Signal Processor 명령과 연관된 처리의 한 실시 예를 도시한다.
도 9는 본 발명의 바람직한 실시 예에 따라, 재구성된 구성(a reconfigured configuration)에서 컴퓨팅 환경을 파워-온 시키기 위한 로직(the logic)의 한 실시 예를 도시한다;
도 10은 본 발명의 바람직한 실시 예에 따라, 컴퓨팅 환경을 재구성함에 있어서 일어나는 변경들(changes)을 추가적으로 도시한다;
도 11은 컴퓨팅 환경을 리셋 시키기 위한 로직의 한 실시 예를 도시한다;
도 12는 본 발명의 바람직한 실시 예에 따라, 컴퓨팅 환경을 구성하기 위한 로직의 한 실시 예를 도시한다;
도 13은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 프로그램 제품의 한 실시 예를 도시한다;
도 14는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 호스트 컴퓨터 시스템의 한 실시 예를 도시한다;
도 15는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 시스템의 추가적인 예를 도시한다;
도 16은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 네트워크를 포함하는 컴퓨터 시스템의 다른 예를 도시한다;
도 17은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 시스템의 여러 엘리먼트들의 한 실시 예를 도시한다;
도 18a는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 17의 컴퓨터 시스템의 실행 유닛의 한 실시 예를 도시한다;
도 18b는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 17의 컴퓨터 시스템의 분기 유닛의 한 실시 예를 도시한다;
도 18c는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 17의 컴퓨터 시스템의 로드/저장 유닛의 한 실시 예를 도시한다;
도 19는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 에뮬레이트된 호스트 컴퓨터 시스템의 한 실시 예를 도시한다.
도 20은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 클라우드 컴퓨팅 노드의 한 실시 예를 도시한다.
도 21은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 클라우드 컴퓨팅 환경의 한 실시 예를 도시한다.
도 22는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 추상화 모델 계층들(abstraction model layers)의 한 예를 도시한다.
[0015] 본 발명의 한 특징에 따라서, 한 능력(a capability)이 제공되는데, 이는 다수의 구성들을 지원하도록 구성된 컴퓨팅 환경에 의한 구성의 사용을 제한하여, 제한된 구성의 하나 또는 그 이상의 특징들이 사용될 수 없게 한다. 한 예로서, 프로세서는 하나의 구성 아키텍처 모드(CAM)에서 구성된다. CAM에서, 원래는 복수의 아키텍처들(예를 들어, 레거시 아키텍처 및 강화(enhanced) 아키텍처)을 위해 구성된, 컴퓨팅 환경(예를 들어, 프로세서, 논리적 파티션, 게스트)은 재-구성되어 상기 아키텍처들 중 적어도 하나(예를 들어, 레거시 아키텍처)의 하나 또는 그 이상의 특징들이 더 이상 지원되지 않도록 한다. 그러한 구성에서, 아키텍처의 지원되지 않는 특징들은 이용 가능하지 않다.
[0016] 한 특정 실시 예에서, 구성 z/Architecture 아키텍처 모드 (CZAM) 퍼실리티(a Configuration z/Architecture Architectural Mode (CZAM) facility)가 ESA/390 및 z/Architecture와 같은, 복수의 아키텍처들을 지원하는 컴퓨팅 환경들에 제공되는데, 이는 ESA/390의 특징들을 사용하는 능력을 제거한다. 대신에, z/Architecture (및/또는, ESA/390가 아닌, 다른 실시 예들에서는, 다른 아키텍처들)도 사용된다. CZAM은, 예를 들어, 네이티브 머신(a native machine), 논리적 파티션(a logical partition), 및/또는 가상 게스트(a virtual guest)에도 적용할 수 있다.
[0017] 구성 아키텍처 모드 퍼실리티(the configuration architectural mode facility facility)의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 한 예를 도 1a를 참조하여 기술한다. 도 1a를 참조하면, 한 예에서, 컴퓨팅 환경(100)은, 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션(IBM®)이 공급하는, z/Architecture에 기초한다. z/Architecture는 "z/Architecture - Principles of Operation,"(간행물 번호 SA22-7932-09, 10판, 2012년 9월)라는 제목의 IBM 간행물에 기술되어 있다. 상기 컴퓨팅 환경은 z/Architecture에 기초하지만, 본 발명의 한 바람직한 실시 예에서, ESA/390와 같은, 하나 또는 그 이상의 다른 아키텍처 구성들도 지원한다.
[0018] 한 예로서, 컴퓨팅 환경(100)은 하나 또는 그 이상의 제어 유닛들(108)을 통해서 하나 또는 그 이상의 입력/출력(I/O) 디바이스들(106)에 결합된 중앙 프로세서 복합체(CPC)(102)를 포함한다. 중앙 프로세서 복합체(102)는, 예를 들어, 하나 또는 그 이상의 중앙 프로세서들(중앙처리장치(CPU)들로도 알려짐)(110)에 결합된 프로세서 메모리(104)(메인 메모리, 메인 스토리지, 중앙 스토리지로도 알려짐)와 입력/출력 서브시스템(111)을 포함하고, 이들 각각에 대해서는 아래에서 기술한다.
[0019] 프로세서 메모리(104)는 예를 들어 하나 또는 그 이상의 파티션들(112)(예를 들어, 논리적 파티션들)과 프로세서 펌웨어(113)를 포함하고, 프로세서 펌웨어(113)는 논리적 파티션 하이퍼바이저(114)와 기타 프로세서 펌웨어(115)를 포함한다. 논리적 파티션 하이퍼바이저(114)의 한 예로는, 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는, 프로세서 자원/시스템 매니저(PR/SM)가 있다.
[0020] 논리적 파티션(a logical partition)은 분리된 시스템(a separate system)으로 기능하고 하나 또는 그 이상의 애플리케이션들(120)을 보유하며, 선택적으로(optionally) 그 안에 상주 운영 체제(122)를 보유하는데, 이것은 각 논리적 파티션마다 다를 수 있다. 본 발명의 한 바람직한 실시 예에서, 운영 체제는 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 z/OS 운영 체제, z/VM 운영 체제, z/Linux 운영체제, 또는 TPF 운영 체제이다. 논리적 파티션들(112)은 논리적 파티션 하이퍼바이저(114)에 의해서 관리되고, 이 논리적 파티션 하이퍼바이저(114)는 프로세서들(110)상에서 실행하는 펌웨어에 의해서 구현된다. 여기서 사용되는 바와 같이, 펌웨어는, 예를 들어, 프로세서의 마이크로 코드 및/또는 밀리코드를 포함한다. 펌웨어는, 예를 들어, 더 높은 수준의 머신 코드의 구현에 사용되는 하드웨어-수준 명령들 및/또는 데이터 구조들을 포함한다. 본 발명의 한 바람직한 실시 예에서, 펌웨어는, 예를 들어 통상적으로 마이크로코드로 전달되는 소유권 있는 코드(proprietary code)를 포함하며 이 마이크로코드는 신뢰성 있는 소프트웨어(trusted software) 또는 하부 하드웨어(the underlying hardware)에 특화된 마이크로코드를 포함하고 운영 체제가 시스템 하드웨어에 액세스하는 것을 제어한다.
[0021] 중앙 프로세서들(110)은 논리적 파티션들에 할당되는 물리적인 프로세서 자원들이다. 구체적으로, 각 논리적 파티션(112)은 하나 또는 그 이상의 논리적 프로세서들을 보유하며, 이들 각각은 상기 파티션에 할당되는 물리적인 프로세서(110)의 전부 또는 일부분을 나타낸다. 특정한 파티션(112)의 논리적 프로세서들은 그 파티션에 전용이어서 그 하부 프로세서 자원(110)이 그 파티션을 위해 유보되거나, 또는 다른 파티션과 공유되어서 그 하부 프로세서 자원이 다른 파티션에도 잠재적으로 이용 가능할 수 있다. 한 예에서, 하나 또는 그 이상의 CPU들은 여기에서 기술되는 구성 아키텍처 모드 퍼실리티(130)의 특징들을 포함한다.
[0022] 입력/출력 서브시스템(111)은 입력/출력 디바이스들(106)과 메인 스토리지(104) 사이의 정보의 흐름을 총괄한다(direct). 이것(입력/출력 서브시스템)은 상기 중앙 처리 복합체에 결합되는데(coupled), 상기 중앙 처리 복합체의 일부분이 되거나 또는 그와 분리된 방식으로 결합될 수 있다. 상기 I/O 서브시스템은 상기 중앙 프로세서들로 하여금 상기 입력/출력 디바이스들과 직접 통신해야 하는 태스크를 덜어주고 데이터 처리가 입력/출력 처리와 동시에(concurrently) 진행될 수 있게 해준다. 통신을 제공하기 위해, I/O 서브시스템은 I/O 통신 어댑터들을 채용한다. 통신 어댑터들에는, 예를 들어 채널(channels), I/O 어댑터, PCI 카드, 이더넷 카드, SCSI(Small Computer Storage Interface) 카드 등의 여러 유형이 있다. 여기에 기술된 특정 예에서, I/O 통신 어댑터는 채널이고, 그러므로 I/O 서브시스템은 여기에서 채널 서브시스템으로 불린다. 하지만 이것은 단지 예시일 뿐이다. 다른 유형의 I/O 서브시스템들도 사용될 수 있다.
[0023] I/O 서브시스템은 하나 또는 그 이상의 입력/출력 경로들을 입력/출력 디바이스들(106)로 향하는(to) 또는 부터의(from) 정보의 흐름을 관리하는 데 있어서 통신 링크들로서 사용한다. 이 구체적인 예에서, 통신 어댑터들이 채널들이므로, 이 경로들은 채널 경로(channel paths)라 불린다.
[0024] CAM 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하는 컴퓨팅 환경의 다른 예가 도 1b를 참조하여 기술된다. 이 예에서, 컴퓨팅 환경(150)은 가상 머신 지원을 제공하는 중앙 프로세서 복합체(CPC)(152)를 포함한다. CPC(152)는 하나 또는 그 이상의 제어 유닛들(108)을 통해서 하나 또는 그 이상의 입력/출력(I/O) 디바이스들(106)에 결합된다. 중앙 프로세서 복합체(152)는, 예를 들어, 하나 또는 그 이상의 중앙 프로세서들 (중앙처리장치(CPU)들로도 알려짐)(110)에 결합된 프로세서 메모리(154)(메인 메모리, 메인 스토리지, 중앙 스토리지로도 알려짐)와 입력/출력 서브시스템(111)을 포함한다.
[0025] 프로세서 메모리(154)는, 예를 들어, 하나 또는 그 이상의 가상 머신들(162), 및 프로세서 펌웨어(163)를 포함하고, 이는 호스트 하이퍼바이저(164) 및 기타 프로세서 펌웨어(165)를 포함한다. 호스트 하이퍼바이저(164)의 한 예가, 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션에 의해서 공급되는, z/VM®이다.
[0026] 상기 CPC의 가상 머신 지원은 다수의 가상 머신들(162)을 운영할 능력을 제공하고, 이들 가상 머신들 각각은, Linux®과 같은, 게스트 운영 체제(172)를 호스트할 수 있다. 각각의 가상 머신(162)은 분리된 시스템으로서 기능할 수 있다. 다시 말하면, 각각의 가상 머신(162)은 독립적으로 리셋될 수 있고, 게스트 운영체제를 호스트할 수 있으며, 그리고 다른 프로그램들(120)로 운영할 수 있다. 가상 머신에서 실행하는 운영 체제 및 애플리케이션 프로그램은 완전하고 완벽한 시스템(a full and complete system)에 대해 액세스하는 것처럼 보이지만, 실제로는, 시스템의 일부분만 이용 가능하다. Linux는 미국, 다른 국가들 또는 이 모두들에서 리누스 토발즈 소유의 등록 상표이다.
[0027] 이 특정 예에서, 가상 머신들의 모델은 V=V 모델이며, 이 모델에서 가상 머신의 절대(absolute) 또는 실제(real) 메모리는, 실제 또는 절대 메모리 대신에, 호스트 가상 메모리에 의해서 지원된다(backed). 각 가상 머신은 가상 선형 메모리 공간(a virtual linear memory space)을 갖는다. 물리적 자원들은 호스트(164)가 소유하고, 공유 물리적 자원들은, 필요에 따라, 상기 호스트에 의해서 게스트 운영 체제들에게로 디스패치되어(dispatched) 그들의 처리 요구들을 충족한다. 이 V=V 가상 머신(즉, 페이지 가능 게스트) 모델은 게스트 운영 체제들과 물리적 공유 머신 자원들 사이의 상호작용들이 상기 호스트에 의해서 제어된다고 가정하는데, 그 이유는 대다수의 게스트들이 통상적으로 단순히 파티션하는 일과 구성된 게스트들에 대하여 하드웨어 자원들을 할당하는 일에서 호스트를 배제하기 때문이다. V=V 모델의 하나 또는 그 이상의 특징들은 "z/VM: 게스트 운영 체제들의 실행(Running Guest Operating Systems)"(IBM® Publication No. SC24-5997-02, October 2001)이라고 불리는 IBM® 간행물에 상세히 기술되어 있다.
[0028] 중앙 프로세서들(110)은 가상 머신에 할당될 수 있는 물리적 프로세서 자원들이다. 예를 들어, 가상 머신(162)은 하나 또는 그 이상의 논리적 프로세서들을 포함하는데, 이들 각각은 가상 머신에 동적으로 할당될 수 있는 물리적 프로세서 자원(110)의 전부 또는 일부(all or a share)를 나타낸다. 가상 머신들(162)은 호스트(164)에 의해서 관리된다.
[0029] 한 실시 예에서, 호스트(예를 들어, z/VM®) 및 프로세서(예를 들어, System z) 하드웨어/펌웨어는 제어된 협력 방식으로(in a controlled cooperative manner) 서로 상호작용을 하는데(interact with each other), 이는 V=V 게스트 운영 체제 연산들을 게스트 운영 체제와 호스트 사이에서(from/to) 제어의 전환(transfer of control)을 요구하지 않고 처리하기 위해서이다. 명령들이 페이지 가능 스토리지 모드 게스트(a pageable storage mode guest)를 위해 해석적으로(interpretively) 실행되게 하는 퍼실리티를 통해서 게스트 연산들은 호스트 개입 없이 직접적으로 실행될 수 있다. 이 퍼실리티는 스타트 인터프리티브 엑시큐션(Start Interpretive Execution (SIE))이라 하는 명령을 제공하는데, 이 명령은 호스트가 발행할 수 있으며, 상태 설명(a state description)이라 부르는 제어 블록을 지정하고, 이 상태 설명은 게스트(가상 머신) 상태와, 실행 제어들 및 모드 제어들과 같은, 제어들을 보유한다(hold). 이 명령은 상기 머신을 해석적-실행 모드(an interpretive-execution mode)에 배치하는데, 이 모드에서 게스트 명령들 및 인터럽션들은, 호스트 관심을 요구하는 조건이 발생할 때까지, 직접적으로 처리된다. 그러한 조건이 발생하면, 해석적 실행은 종료되고, 호스트 인터럽션이 제출되거나, 또는 SIE 명령이 발생된 조건(the condition encountered)의 상세 내용을 저장하는 것을 완료한다; 이 후자의 조치를 가로채기(interception)라 부른다. 해석적 실행의 한 예가 "시스템/370 확장 아키텍처/해석적 실행(System/370 Extended Architecture/Interpretive Execution)"(IBM Publication No. SA22-7095-01, September 1985)에 기술되어 있다.
[0030] 특히, 본 발명의 한 바람직한 실시 예에서, 해석적 실행 퍼실리티는 가상 머신들의 실행을 위한 명령을 제공한다. 이 명령은 Start Interpretative Execution (SIE) 명령이라 불리며, 게스트 실행 환경을 설정하는 호스트에 의해서 발행된다. 이 호스트는 실제 머신 직접 관리 제어 프로그램(the control program directly managing the real machine)이고 게스트는 모든 가상 또는 해석된 머신을 참조한다(refer). 이 머신은, SIE 명령을 발행하는, 호스트에 의해서 해석적 실행 모드에 배치된다. 이 모드에서, 머신은 선택된 아키텍처(예를 들어, z/Architecture, ESA/390)의 기능들을 제공한다. 이 기능들은, 예를 들어, 특권 및 문제 프로그램 명령들(privileged and problem program instructions), 주소 변환, 인터럽션 처리, 및 기타 타이밍(timing among other things)의 실행을 포함한다. 이 머신은 그것이 가상 머신의 맥락에서 실행하는 기능들을 해석한다고 한다.
[0031] SIE 명령은, 상태 설명이라 불리는, 오퍼랜드(an operand)를 가지고 있는데, 이는 게스트의 현재 상태와 관련된 정보를 포함한다. SIE 실행이 종료되면, 게스트 PSW를 포함하는, 게스트의 상태를 나타내는 정보는 제어가 호스트로 반환되기 전에 상태 설명에 세이브 된다.
[0032] 해석적 실행 아키텍처는 페이지 가능 스토리지 모드(a pageable storage mode)라 하는 절대 스토리지를 위한 스토리지 모드를 제공한다. 페이지 가능 스토리지 모드에서, 호스트 수준에서의 동적 주소 변환은 게스트 메인 스토리지(guest main storage)를 맵핑하기(map) 위해 사용된다. 호스트 DAT를 사용함으로써 호스트는 페이지 가능 스토리지 모드 게스트들의 실제 스토리지를 호스트 실제 스토리지 내 어디에서나 이용 가능한 프레임들(to usable frames anywhere in host real storage)로 분산하고(scatter) 그리고 게스트 데이터를 보조 스토리지로 페이지 아웃(page out)할 능력이 있다. 이러한 기술은 실제 머신 자원들을 할당하면서 한편 게스트를 위한 절대 스토리지의 인접 범위의 기대 외관(the expected appearance)을 유지할 때 융통성을 제공 한다.
[0033] 가상 머신 환경은 DAT의 애플리케이션을 두 번(twice) 호출할 수 있는데: 첫 째는 게스트 수준에서, 게스트 관리 변환 테이블들(guest managed translation tables)을 통해 게스트 가상 주소를 게스트 실제 주소로 변환하기 위해서이고, 그 다음은 페이지 가능 게스트를 위해, 호스트 수준에서, 대응 호스트 가상 주소를 호스트 실제 주소로 변환하기 위해서이다.
[0034] 특정 경우들에서, 호스트는 머신에 정상적으로 위임된 연산들에 개입해야 한다 (intercede). 이 목적을 위해서, 상태 설명은 특정 조건들(specific conditions)을 "트랩하기(trap)", 또는 가로채기(intercept) 위해 호스트에 의해서 세트 가능한 제어들을 포함한다. 특정 게스트 명령들을 만났을 때(encountered) 가로채기 제어 비트들(interception control bits)은 머신이 제어를 호스트 시뮬레이션에 반환할 것을 요청한다. 중재 제어들(intervention controls)은 PSW 내로의 동작 가능 상태(an enabled state)의 유입(introduction)을 캡처하여서, 호스트가 게스트를 위해 펜딩(pending)을 유지하는 인터럽션을 일으킬 수 있게 한다. 중재 제어들은 해석이 진행되는 동안 다른 실제 프로세서 상에서 호스트에 의해서 비동기로 세트될 수 있다. 머신은 주기적으로 스토리지로부터 제어들을 다시 페치하여, 갱신된 값들이 인식될 수 있게 한다. 이 때문에 게스트 인터럽션들은 너무 일찍(prematurely) 해석을 방해하는 일 없이 펜딩 상태를 유지할 수 있게 된다.
[0035] 본 발명의 한 바람직한 실시 예에서, 상태 설명 내의 모드 제어들이 게스트가 ESA/390 또는 z/Architecture 모드에서 실행되는지 그리고 호스트 스토리지에서 게스트 가상 머신의 게스트 메인 스토리지를 나타내기 위한 복수의 방법들 중 하나를 선택하는지를 명시한다. 본 발명의 한 바람직한 실시 예에 따라, 제어 비트는 제1 또는 제2의 아키텍처 모드(예를 들어, 각각, z/Architecture 및 ESA/390)의 게스트 사이에서 선택하기 위해 상태 제어(a state control) 내에 제공된다. 본 발명의 다른 바람직한 실시 예에 따라, 두 개의 구별되는 명령들이 호스트에 제1 및 제2의 게스트 가상 머신을 생성할 능력을 제공할 수 있는데, 예를 들어, 구별되는 명령들 SIEz 및 SIEe가 게스트 머신들을, 각각, z/Architecture 및 ESA/390 모드에서 시작하기 위해 제공될 수 있다.
[0036] SIE 명령은 제어 프로그램에 의해서 디스패치된 가상 서버를 실행하는데, 상기 서버의 타임 슬라이스(time slice)가 모두 소비될 때까지 또는 상기 서버가 하드웨어가 가상화 할 수 없는 연산 또는 상기 제어 프로그램이 제어를 다시 획득하는 연산을 수행하기를 원할 때까지 실행한다. 그 시점에서, SIE 명령은 종료하고 제어는 상기 제어 프로그램에 반환되고, 상기 제어 프로그램은 상기 명령을 시물레이트 하거나 또는 상기 가상 서버를 비자발적 대기 상태(an involuntary wait state)에 배치한다. 동작이 완료되면, 상기 제어 프로그램은 다시 가상 서버가 실행할 스케줄을 잡고, 사이클은 다시 시작된다. 이 과정에서, CPU의 완전한 능력과 속도가 가상 서버에서 이용 가능하다. 상기 제어 프로그램으로부터의 지원 또는 상기 제어 프로그램에 의한 인증(validation)을 요구하는 이들 특권 명령들(privileged instructions)만이 가로채기 된다(intercepted). 알려진 바와 같이, 이들 SIE 가로채기들은 또한 가상 서버가 실제 디바이스 상에서 수행할 수 있는 연산들에 관해 제한들(limits)을 부과하기 위해 상기 제어 프로그램에 의해서 사용된다.
[0037] SIE에 관한 더 상세한 사항은 "ESA/390 해석적-실행 아키텍처, VM/ESA를 위한 기초(ESA/390 interpretive-execution architecture, foundation for VM/ESA)"(Osisek et al, IBM Systems Journal, Vol. 30, No. 1, January 1991, pp. 34-51)에 기술되어 있다.
[0038] 본 발명의 구성 아키텍처 모드 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도 2를 참조하여 기술한다. 이 예에서, 컴퓨팅 환경(200)은, z/Architecture와 ESA/390을 포함하는, 복수의 아키텍처 모드들에 대하여 구성되는 파티션되지 않은 환경(a non-partitioned environment)을 포함한다. 컴퓨팅 환경(200)은, 예를 들어, 프로세서(중앙처리장치 - CPU)(202)를 포함하며, 이 프로세서는 구성 아키텍처 모드 퍼실리티(204)와 하나 또는 그 이상의 캐시들(206)을 포함한다. 프로세서(202)는 하나 또는 그 이상의 캐시들(210)을 갖는 메모리 부분(208)에 통신할 수 있도록 결합되고(communicatively coupled to), 입력/출력(I/O) 서브시스템(212)에 통신할 수 있도록 결합된다. I/O 서브시스템(212)은 외부 I/O 디바이스들(214)에 통신할 수 있도록 결합되며, 외부 I/O 디바이스들에는, 예를 들면, 데이터 입력 디바이스들, 센서들 및/또는 디스플레이들 같은 출력 디바이스들이 포함될 수 있다.
[0039] 상기 구성 아키텍처 모드 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 본 발명의 다른 바람직한 실시 예를 도 3a를 참조하여 기술한다. 이 예에서, 컴퓨팅 환경(300)은, 예를 들어, 네이티브 중앙처리장치(a native central processing unit) (CPU)(302), 메모리(304), 및, 예를 들어, 하나 또는 그 이상의 버스들(308) 및/또는 기타 연결 수단들을 통해 서로 결합된 하나 또는 그 이상의 입력/출력(I/O) 디바이스들 및/또는 인터페이스들(306)을 포함한다. 예시로서, 컴퓨팅 환경(300)에는 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션에 의해서 공급되는 PowerPC 프로세서 또는 Power Systems 서버; 미국 캘리포니아 팔로 알토 소재 휴렛 팩커드(Hewlett Packard Co.)에 의해서 공급되는 Intel Itanium 프로세서들을 구비한 HP Superdome; 및/또는 인터내셔널 비즈니스 머신즈 코포레이션, 휴렛 팩커드, 인텔, 오라클 또는 기타 회사들에 의해서 공급하는 아키텍처들에 기초하는 기타 머신들이 포함될 수 있다. Intel, 및 Itanium은 미국에서 그리고 다른 나라들에서 인텔 코포레이션 또는 그 자회사들의 상표들 또는 등록된 상표들이다.
[0040] 네이티브 중앙처리장치(302)는, 상기 환경 내에서 처리하는 동안에 사용되는 하나 또는 그 이상의 범용 레지스터들 및/또는 하나 또는 그 이상의 특수용 레지스터들 같은, 하나 또는 그 이상의 네이티브 레지스터들(310)을 포함하고, 그리고 또한, 구성 아키텍처 모드 퍼실리티(311)를 포함한다. 이 레지스터들은 특정 시점에서(at any particular point in time) 상기 환경의 상태(the state of the environment)를 나타내는 정보를 포함한다.
[0041] 또한, 네이티브 중앙처리장치(302)는 메모리(304)에 저장된 명령들 및 코드를 실행한다. 한 구체적인 예에서, 상기 중앙처리장치는 메모리(304)에 저장된 에뮬레이터 코드(312)를 실행한다. 이 코드는 한 아키텍처에서 구성된 상기 컴퓨팅 환경이 하나 또는 그 이상의 다른 아키텍처들을 에뮬레이션 할 수 있게 해준다. 예를 들어, 에뮬레이터 코드(312)는 z/Architecture 이외의 아키텍처들에 기초한 머신들, 예를 들어, PowerPC 프로세서들, Power Systems 서버들, HP Superdome 서버들 또는 기타 등등의 머신들이 z/Architecture (및/또는 ESA/390)를 에뮬레이트하여 그 z/Architecture에 기초하여 개발된 소프트웨어와 명령들을 실행할 수 있게 해준다.
[0042] 에뮬레이터 코드(312)에 관련된 더 세부적인 사항들을 도 3b를 참조하여 기술한다. 메모리(304)에 저장된 게스트 명령들(guest instructions)(350)은 네이티브 CPU(302)의 아키텍처 이외의 아키텍처에서 실행될 수 있도록 개발된 소프트웨어 명령들(예를 들어, 기계어 명령들과 관련되어 있음)을 포함한다. 예를 들면, 게스트 명령들(350)은 z/Architecture 프로세서(202) 상에서 실행하도록 설계되었을 수 있지만, 대신에, 예를 들어, Intel Itanium 프로세서일 수 있는, 네이티브 CPU(302) 상에서 에뮬레이트 된다. 한 예에서, 에뮬레이터 코드(312)는 메모리(304)로부터 하나 또는 그 이상의 게스트 명령들(350)을 획득하고, 그리고 선택적으로, 그 획득된 명령들에 로컬 버퍼링을 제공하기 위해 명령 페칭 루틴(352)을 포함한다. 그것은 획득된 게스트 명령의 유형을 판정하고 그 게스트 명령을 하나 또는 그 이상의 대응하는 네이티브 명령들(356)로 변환하기 위해 명령 변환 루틴(354)을 또한 포함한다. 이 변환은, 예를 들어, 상기 게스트 명령에 의해 수행될 기능(function)을 식별하는 단계와 그 기능을 수행할 네이티브 명령(들)을 선택하는 단계를 포함한다.
[0043] 추가로, 에뮬레이터 코드(312)는 상기 네이티브 명령들이 실행되게 하기 위해 에뮬레이션 제어 루틴(360)을 포함한다. 에뮬레이션 제어 루틴(360)은 네이티브 CPU(302)로 하여금 하나 또는 그 이상의 앞에서 획득된 게스트 명령들을 에뮬레이트하는 네이티브 명령들의 루틴을 실행하게 하고 그러한 실행 마지막에 다음 게스트 명령 또는 게스트 명령들의 그룹을 획득하는 것을 에뮬레이트 하도록 상기 명령 페치 루틴에 제어를 반환할 수 있다. 네이티브 명령들(356)의 실행은 메모리(304)로부터 레지스터 내에 데이터를 로딩하는 것; 레지스터로부터 메모리로 다시 데이터를 저장하는 것; 또는 상기 변환 루틴에 의해 결정되는, 몇몇 유형의 산술 또는 논리 연산을 수행하는 것을 포함할 수 있다.
[0044] 각 루틴은, 예를 들어, 소프트웨어로 구현되며, 이 소프트웨어는 메모리에 저장되고 네이티브 중앙처리장치(302)에 의해 실행된다. 다른 예들에서, 하나 또는 그 이상의 루틴들 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 부분 조합으로 구현된다. 에뮬레이트된 프로세서의 레지스터들은 네이티브 CPU의 레지스터들(310)을 사용하여 또는 메모리(304) 내 위치들(locations)을 사용하여 에뮬레이트될 수 있다. 실시 예들에서, 게스트 명령들(350), 네이티브 명령들(356) 및 에뮬레이터 코드(312)는 동일 메모리 내에 상주할 수도 있고 또는 다른 메모리 디바이스들 사이에 분산될 수도 있다.
[0045] 위에서 기술한 컴퓨팅 환경들은 사용될 수 있는 컴퓨팅 환경들의 예시들일 뿐이다. 다른 파티션되지 않은 환경들, 다른 파티션된 환경들, 및/또는 다른 에뮬레이트된 환경들을 포함하는 (그러나 이에 한정되지는 않음) 다른 환경들이 사용될 수 있으며; 실시 예들은 어느 한 환경에 한정되지 않는다.
[0046] 하나 또는 그 이상의 실시 예들에 따라, 구성 아키텍처 모드(CAM) 퍼실리티는 컴퓨팅 환경의 하나 또는 그 이상의 프로세서들(예를 들어, 중앙처리장치들)에 설치되어 상기 환경의 재구성(reconfiguration)을 제어한다. 예를 들어, CAM이 복수의 아키텍처 모드들을 지원하는 컴퓨팅 환경에 설치될 때, 상기 컴퓨팅 환경은 상기 아키텍처 모드들 중 적어도 한 모드의 하나 또는 그 이상의 특징들의 사용이 제한되도록 재구성된다.
[0047] 구성 아키텍처 모드 퍼실리티의 한 구체적인 예는 구성 z/Architecture 아키텍처 모드(Configuration z/Architecture Architectural Mode: CZAM) 퍼실리티이다. CZAM의 설치는, 예를 들어, 퍼실리티 설치 표시자(예, 비트 138)에 의해 표시되고, 예를 들어, 1로 세트된다. 한 구체적인 예에서, 비트 138이 1로 세트될 때, CZAM 퍼실리티가 설치되고, 설치될 때, 정상 리셋 및 클리어 리셋이 상기 구성을 z/Architecture 아키텍처 모드로 배치한다. 그러므로, 상기 퍼실리티 비트, 예를 들어 z/Architecture 아키텍처 모드가 활성(active)임을 표시하는, 비트 2도, 한 예에서, 1로 세트된다.
[0048] CZAM의 설치에 기초하여, 컴퓨팅 환경(예를 들어, 단일 프로세서, 논리적 파티션, 가상 게스트 등)은 선택된 아키텍처의 하나 또는 그 이상의 특징들, 예를 들어, ESA/390은 더 이상 지원되지 않도록 재구성된다. CZAM의 설치에 따라서 더 이상 지원되지 않는 특징들 및/또는 영향을 받는 처리들은 아래에서 기술된다.
[0049] 여기에 기술된 실시 예들에서, 상기 복수의 아키텍처 모드들은 레거시 아키텍처(예, ESA/390)와 강화 아키텍처(예, z/Architecture)를 포함하고 레거시 아키텍처, ESA/390의 특징들은 더 이상 지원되지 않지만, 다른 실시 예들은 다른 아키텍처들을 포함할 수 있다. ESA/390과 z/Architecture는 단지 예시일 뿐이다.
[0050] CZAM의 설치에 의해 영향을 받는 하나의 프로세스(process)는 파워-온 프로세스이다. 이 처리가 어떻게 영향을 받는지 기술하기 위해, 먼저, 복수의 아키텍처 구성들을 지원하고 CZAM 퍼실리티를 포함하지 않는 환경에 대한 파워-온 처리에 대해 도 4a~4b를 참조하여 기술하고, 그 다음에 복수의 아키텍처 구성들을 위해 구성되고 CZAM 퍼실리티를 포함하는 환경에 대한 파워-온 처리에 대해 도 6a~6b를 참조하여 기술한다. 시스템에 대한 파워-온은, 예를 들어, 시스템을 기동하는 것(starting)과 시스템 내의 부팅 시퀀스(a boot sequence) 또는 연산들을 개시하는 기타 수단들(other means of initiating operations)을 개시하는 것(initiating)을 포함한다. 그것(파워-온)은 물리적인 파워-온, 하드웨어 리셋 및/또는 가상 파워-온(예를 들어, 한 에뮬레이트된 시스템에서, 가상 머신 또는 게스트 환경)에 대응할 수 있다.
[0051] 먼저 도 4a를 참조하면, 컴퓨팅 환경의 프로세서가 파워-온 되고 오퍼레이터 키(an operator key), 예를 들어, 로드-노멀 또는 로드-클리어 키(a load-normal or a load-clear key)가 활성화되는 것에 기초하여, 프로세서는 로드 상태(a load state)로 진입하고(enter) 컴퓨팅 환경을 특정한 아키텍처 모드, 예를 들어, ESA/390 모드로 세트한다(단계 400). 그 다음, 예를 들어, 채널 제어 워드(CCW) 초기 프로그램 로드 (a channel control word (CCW) initial program load (IPL))와 같은, 초기 프로그램 로드(IPL)가 수행된다(단계 402). 초기 프로그램 로딩은 프로그램이 지정된 디바이스로부터 판독될 수 있게 하고 그리고 그 프로그램의 실행을 개시하게 하는 수동 수단을 제공한다. CCW-유형의 IPL은 로드-유닛-주소 제어들(the load-unit-address controls)을 네 자리수(a four digit number)로 세트하여 입력 디바이스를 지정하게 함으로써 그리고 이어서 특정한 CPU에 대하여 로드-클리어 또는 로드-노멀 키를 활성화시킴으로써 수동으로 개시된다.
[0052] 로드-클리어 키를 활성화시키면 상기 구성 상에서 클리어 리셋이 수행되고, 로드-노멀 키를 활성화시키면 이 CPU(상기 키가 활성화되었던 CPU) 상에서 초기 CPU 리셋이 수행되며, CPU 리셋은 상기 구성 내의 다른 모든 CPU들에 전파되고, 그리고 서브시스템 리셋은 상기 구성의 나머지에서 수행된다. 로드-클리어 키 또는 로드-노멀 키를 활성화시키면 아키텍처 모드(예를 들어, ESA/390)가 세트된다.
[0053] 연산을 로드할 때에, 리셋들이 수행된 후, 이 CPU는 로드 상태에 진입한다. 리셋 연산들이 실행 중인 동안에 이 CPU가 반드시 정지 상태(the stopped state)에 진입할 필요는 없다. 로드 표시자(load indicator)는 CPU가 로드 상태에 있는 동안 온(on) 된다.
[0054] 그 다음, 채널-프로그램 판독 연산(a channel-program read operation)이 로드-유닛-주소 제어들에 의해 지정된 I/O 디바이스로부터 개시된다. 상기 채널 프로그램의 실행 효과는 마치 절대 스토리지 위치(absolute storage location) 0에서 시작되는 포맷-0 CCW가 0들인 변경자 비트들(the modifier bits zeros), 0의 데이터 주소(a data address of zero), 24의 바이트 카운트(a byte count of 24), 1들인 체인-커맨드 및 SLI 플래그들(the chain-command and SLI flags ones), 그리고 0들인 모든 기타 플래그들을 갖는 판독 커맨드(read command)를 명시한 것과 같다.
[0055] IPL 입력/출력 연산이 성공적으로 완료되면, IPL 디바이스에 대한 서브시스템 식별 워드(a subsystem identification word)가 선택된 절대 스토리지 위치들(예를 들어, 위치들 184-187)에 저장되고, 0들이 다른 선택된 절대 스토리지 위치들(예를 들어, 위치들 188-191)에 저장되며, 그리고 새로운 프로그램 상태 워드(PSW)가 선택된 절대 스토리지 위치들(예를 들어, 위치들 0-7)로부터 로드된다(단계 404). 상기 프로그램 상태 워드는 컴퓨팅 환경의 연산들을 제어한다.
[0056] 만일 상기 PSW 로딩이 성공적이고 머신 오작동이 검출되지 않으면, 이 CPU는 로드 상태에서 나가고(leave), 로드 표시자는 꺼진다(turned off). 만일 속도 제어(rate control)가 프로세스 포지션(process position)에 세트되면, CPU는 연산 상태(the operating state)로 진입하고, 컴퓨팅 환경의 연산은 상기 새로운 프로그램 상태 워드(PSW)의 제어 하에서 진행된다(단계 406). 그 다음에 부팅된 컴퓨팅 환경이 실행되며(단계 408), 이에 대해서는 도 4b를 참조하여 추가로 기술한다.
[0057] 도 4b를 참조하면, 부팅된 컴퓨팅 환경이 ESA/390 모드에서 개시되고(단계 420), 그러므로 연산들이 ESA/390 모드에서 수행된다(단계 422). 어느 시점에, 아키텍처 모드를 ESA/390에서 z/Architecture로 바꾸라는 요청이 이루어질 수 있다. 구체적으로, 프로그램이 지시 코드(an order code)(예를 들어, Set Architecture(세트 아키텍처)를 지정하는 코드)를 프로세서에 보내고, 그 프로세서는 상기 지시 코드로 신호 처리 프로세서(SIGP) 명령 (a Signal Processor (SIGP) instruction)을 발행하여 ESA/390 모드에서 z/Architecture 모드로 전환한다(단계 424). 예를 들어, CPU 신호발송 및 응답 퍼실리티(CPU signaling and response facility)가 사용될 수 있는데, 이것은 신호 처리 프로세서 명령(아래에 기술함)과, Set Architecture(세트 아키텍처)에 대한 코드를 포함하는, 서버 지시 코드들(server order codes)을 해석하고 그에 따라 조치를 취하는 메커니즘을 포함한다. 상기 퍼실리티는 CPU들 사이에서 통신들을 제공하는데, 이 통신들에는 일 세트의 할당된 지시 코드들을 전송, 수신, 및 디코딩하는 것과, 상기 명시된 연산을 개시하는 것과, 신호발송 CPU에 응답하는 것이 포함된다. Set Architecture(세트 아키텍처)를 사용함으로써, 상기 아키텍처 모드는 원하는 구성, 예를 들어, z/Architecture로 세트된다. 이 처리 과정에 대한 더 상세한 사항은 아래에서 더 기술한다.
[0058] 그 후에, SIGP 연산이 수용되었는지에 대한 결정이 이루어진다(질의 단계 426). 반환 코드(the return code)에 기초하여, 다수의 에러 조건들이 진단될 수 있으며, 이 조건들에는 "무효 파라미터(invalid parameter)" 표시가 포함될 수 있는데, 이는 CPU가 이미 상기 코드에 의해 명시된 아키텍처 모드에 있다는(즉, 상기 세트 아키텍처가 현재 모드 그 자체로의 전환을 나타내든지 또는 한 모드에서 다른 모드로의 전환인지를 나타내든지 간에) 결정이 내려졌을 때 표시된다. 만일 SIGP가 수용되고 상기 세트 아키텍처가 적법 모드 전환 연산(legal mode switch operation)을 나타내면, 상기 SIGP 연산을 수신한 컴퓨팅 환경의 모든 프로세서들은, 예를 들어, 여기에 기술된 Set Architecture(세트 아키텍처) 처리를 이용하여 z/Architecture 모드로 전환한다(단계 428). 그러나, 만일 상기 SIGP 연산이 적법하지 않으면, 에러가 표시된다(단계 430).
[0059] 위에서 기술한 바와 같이, 파워-온 연산은 프로그램 상태워드를 로드한다. 도 5를 참조하여, 프로그램 상태 워드(PSW)의 포맷에 관한 본 발명의 한 바람직한 실시 예에 관해 기술한다. 도 5를 참조하면, 이 예에서, 프로그램 상태 워드의 포맷은, 아래에 표시하는 바와 같이, 비트 31이 EA로 도시된 것을 제외하고는, ESA/390 포맷이다.
[0060] 본 발명의 한 실시 예에서, 프로그램 상태 워드(500)는, 일 예로서, 다음 필드들을 포함한다: PER 마스크(R)(502): 비트 1은 CPU를 프로그램 이벤트 기록(program event recording)(PER)과 연관된 인터럽션들에 대해 동작 가능하게 할지를 제어한다. 상기 비트가 0이면, PER 이벤트는 인터럽션을 일으킬 수 없다. 상기 비트가 1이면, 인터럽션들은 허용되는데, 제어 레지스터 9 내의 PER 이벤트 마스크 비트들에 따라서 결정된다. DAT 모드(T)(504): 비트 5는 스토리지에 액세스하는 데 사용되는 논리적 및 명령 주소들의 묵시적 동적 주소 변환(DAT)(implicit dynamic address translation (DAT) of logical and instruction addresses used to access storage)을 할지를 제어한다. 상기 비트가 0이면, DAT는 오프가 되고(off), 논리적 및 명령 주소들은 실제 주소들로 취급된다. 상기 비트가 1이면, DAT는 온이 되고(on), 상기 동적 주소 변환 메커니즘이 호출된다(invoked).
[0061] I/O 마스크(IO)(506): 비트 6은 CPU를 I/O 인터럽션들에 대해 동작 가능하게 할지를 제어한다. 상기 비트가 0이면, I/O 인터럽션은 발생할 수 없다. 상기 비트가 1이면, I/O 인터럽션들은 제어 레지스터 6 내의 I/O 인터럽션 서브클래스 마스크 비트들에 따라 결정된다. I/O 인터럽션 서브클래스 마스크 비트가 0이면, 그 I/O 인터럽션 서브클래스에 대한 I/O 인터럽션은 발생할 수 없고; I/O 인터럽션 서브클래스 마스크 비트가 1이면, 그 I/O 인터럽션 서브클래스에 대한 I/O 인터럽션이 발생할 수 있다. 외부 마스크(EX)(508): 비트 7은 CPU를 외부 클래스(the external class)에 포함된 조건들에 의한 인터럽션에 대해 동작 가능하게 할지를 제어한다. 상기 비트가 0이면, 외부 인터럽션은 발생할 수 없다. 상기 비트가 1이면, 외부 인터럽션은 제어 레지스터 0 내의 대응 외부 서브클래스 마스크 비트들에 따라 결정된다. 상기 서브클래스 마스크 비트가 0이면, 상기 서브클래스와 연관된 조건들은 인터럽션을 일으킬 수 없다. 상기 서브클래스 마스크 비트가 1이면, 그 서브클래스 내의 인터럽션이 발생할 수 있다.
[0062] PSW 키(KEY)(510): 비트들 9-11은 CPU에 의한 스토리지 참조번호들(storage references)에 대한 액세스 키를 구성한다. 만일 상기 참조번호가 키-제어되는 보호(key-controlled protection)를 받는다면, PSW 키는 정보가 저장될 때 또는 정보가 페칭이 금지되어(against) 보호되는 위치로부터 페치될 때 스토리지 키와 매치하게 된다(matched). 그러나, Move to Primary(1차로 이동), Move to Secondary(2차로 이동), Move with Key(키를 갖고 이동), Move with Source Key(소스 키를 갖고 이동), 및 Move with Destination Key(목적지 키를 갖고 이동)의 각각의 오퍼랜드들 중 하나에 대하여, 그리고 Move with Optional Specifications(선택적인 명세들을 갖고 이동)의 오퍼랜드들 중 어느 하나 또는 둘 모두에 대하여, 오퍼랜드로 명시된 액세스 키가 PSW 키 대신에 사용된다.
[0063] 비트 12(512): 이 비트는 현재 아키텍처 모드를 표시한다. 이것은 ESA/390 PSW 포맷에 대해서는 1로 세트된다. z/Architecture PSW 포맷에 대해서, 이 비트는 0으로 정의된다. z/Architecture 아키텍처 모드에 있을 때, 로드 PSW 확장(load PSW extended (LPSWE)) 명령은 (비트들 64-127에 명령 주소를 갖고 있는 것을 포함하여, 여기에 기술된 포맷과 다른 포맷을 갖는) 참(true) z/Architecture PSW를 로드하기 위해 정의된다. 그러나, ESA/390 로드 PSW(LPSW)도 여전히 지원되고 ESA/390 포맷 PSW를 로드하는 데 사용될 수 있다. LPSW가 실행되고 컴퓨팅 환경이 z/Architecture 모드에 있을 때, 프로세서는 ESA/390 포맷 PSW를 z/Architecture 포맷으로 확장시키고(expand), 비트 12를 인버트시킨다(invert). 이것은 ESA/390 포맷 PSW를 생성하기 위해 운영 체제가 수행하는 z/Architecture PSW 포맷을 붕괴시키는 것(collapse)의 역이다. 다시 말하면, ESA/390과 z/Architecture 모두를 지원하는 컴퓨팅 환경들에서, PSW의 한 카피(copy)가 스토리지에 배치될 때, 운영 체제는 완전한(full) z/Architecture PSW를 ESA/390 PSW의 사이즈와 포맷으로 붕괴시킨다. 따라서, PSW 포맷 종속성(dependencies)을 갖는 다른 소프트웨어는 z/Architecture PSW를 인지할 수 없다(unaware).
[0064] 머신 체크 마스크(M)(514): 비트 13은 CPU를 머신 체크 조건들에 의한 인터럽션에 대해 동작가능 하게 할지를 제어한다. 상기 비트가 0일 때, 머신 체크 인터럽션(a machine check interruption)은 발생할 수 없다. 상기 비트가 1일 때, 시스템 손상 및 명령 처리 손상으로 인한 머신 체크 인터럽션들은 허용되지만, 다른 머신 체크 서브클래스 조건들로 인한 인터럽션들은 제어 레지스터 14 내 서브클래스 마스크 비트들에 따라 결정된다.
[0065] 대기 상태(W)(516): 비트 14가 1일 때, CPU는 대기중이다(waiting). 즉, 어떤 명령들도 CPU에 의해 처리되지는 않지만, 인터럽션들은 발생할 수 있다. 비트 14가 0일 때, 명령 페칭 및 실행이 정상적인 방식으로 일어난다. 대기 표시자(wait indicator)는 상기 비트가 1일 때 1이다.
[0066] 문제 상태(P)(518): 비트 15가 1일 때, CPU는 문제 상태(the problem state)에 있다. 비트 15가 0일 때, CPU는 수퍼바이저 상태(the supervisor state)에 있다. 수퍼바이저 상태에서, 모든 명령들은 유효하다(valid). 문제 상태에서, 문제 프로그램에 의미 있는 정보를 제공하고 시스템 무결성에 영향을 줄 수 없는 명령들만 유효하며, 이러한 명령들을 비특권 명령들(unprivileged instructions)이라 부른다. 문제 상태에서 유효하지 않은 명령들은 특권 명령들(privileged instructions)이라 부른다. 문제 상태에서 CPU가 특권 명령을 실행하려고 시도할 때, 특권 연산 예외가 인지된다. 반특권 명령들(semiprivileged instructions)이라 불리는 다른 그룹의 명령들은 특정한 권한 테스트들(specific authority tests)을 충족하는 경우에만 문제 상태에서 CPU에 의해 실행되고; 그렇지 않을 경우, 위반하는 구체적인 요건에 따라, 특권 연산 예외 또는 기타 프로그램 예외가 인지된다.
[0067] 주소 공간 제어(AS)(520): 비트들 16과 17은, PSW 비트 5와 함께, 변환 모드(the translation mode)를 제어한다.
[0068] 조건 코드(CC)(522): 비트들 18과 19는 조건 코드의 두 비트들이다. 조건 코드는 특정 명령들을 실행해서 얻는 결과에 따라 0, 1, 2, 또는 3으로 세트된다. 일부 다른 연산들과 마찬가지로, 대부분의 산술 및 논리 연산들은 조건 코드를 세트한다. BRANCH ON CONDITION(조건에 따라 분기) 명령은 조건 코드 값들의 모든(any) 선택을 분기를 위한 기준(a criterion for branching)으로 명시할 수 있다.
[0069] 프로그램 마스크(524): 비트들 20-23은 4개의 프로그램 마스크 비트들이다. 각 비트는 다음과 같이 프로그램 예외와 연관된다:
프로그램 마스크 비트 프로그램 예외
20 고정 소수점 오버플로
21 십진 오버플로
22 HFP 지수(exponent) 언더플로
23 HFP 유효숫자
[0070] 상기 마스크 비트가 1일 때, 상기 예외는 인터럽션을 일으킨다. 상기 마스크 비트가 0일 때, 인터럽션은 일어나지 않는다. HFP-유효숫자-마스크 비트의 HFP-지수-언더플로-마스크 비트 세팅(the setting of the HFP-exponent-under- flow-mask bit of the HFP-significance-mask bit)은 또한 대응 예외(the corresponding exception)가 발생할 때 연산이 완료되는 방식을 결정한다.
[0071] 확장 주소지정 모드(EA)(526): 비트 31은, 기본 주소지정 모드 비트인(the basic addressing mode bit), 비트 32와 함께 유효 주소들의 사이즈(the size of effective addresses)와 유효 주소 생성(effective address generation)을 제어한다. 비트 31이 0일 때, 상기 주소지정 모드는 비트 32에 의해 제어된다. 비트들 31과 32가 모두 1일 때, 64-비트 주소지정이 명시된다.
[0072] 기본 주소지정 모드(BA)(528): 비트들 31과 32는 유효 주소들의 사이즈와 유효 주소 생성을 제어한다. 비트들 31과 32가 모두 0일 때, 24-비트 주소지정이 명시된다. 비트 31이 0이고 비트 32가 1일 때, 31-비트 주소지정이 명시된다. 비트들 31과 32가 모두 1일 때, 64-비트 주소지정이 명시된다. 비트 31이 1이고 비트 32가 0인 것은 무효의 조합이며 이는 명세 예외(a specification exception)가 인지되게 한다. 상기 주소지정 모드는 PER 주소들의 사이즈 또는 DAT, ASN, 디스패치 가능 유닛 컨트롤(dispatchable unit control), 연결(linkage), 엔트리(entry), 및 추적 테이블들(trace tables)이나 액세스 목록들(access lists )이나 연결 스택(the linkage stack)에 액세스하는 데 사용되는 주소들의 사이즈를 제어하지 않는다. 상기 PSW의 비트들 31과 32에 의한 상기 주소지정 모드의 제어는 다음과 같이 요약된다:
PSW:31 PSW:32 주소지정 모드
0 0 24-비트
0 1 31-비트
1 1 64-비트
[0073] 명령 주소(530): PSW의 비트들 33-63은 명령 주소이다. 상기 주소는, CPU가 대기 상태(PSW의 비트 14가 1임)에 있지 않는 한, 실행될 다음 명령의 최좌측 바이트의 위치(the location of the leftmost byte)를 지정한다.
[0074] 일 특징에 따라서, 구성 z/Architecture 아키텍처 모드(CZAM) 퍼실리티와 같은, 구성 아키텍처 모드 퍼실리티가 컴퓨팅 환경에서 설치되고 활성화될 때, 파워-온 프로세스는 변경된다. 도 6a를 참조하여 CZAM 파워-온 프로세스에 관한 본 발명의 한 바람직한 실시 예를 기술한다.
[0075] 도 6a를 참조하면, 컴퓨팅 환경의 한 프로세서가 파워-온 되는 것에 기초하여, 상기 컴퓨팅 환경은 상기 구성 아키텍처 모드 퍼실리티에 의해 명시되는 특정 아키텍처 모드, 예를 들어, CZAM이 설치되어 있을 때 z/Architecture 모드(ESAME으로도 불림)로 세트된다(단계 600). 예를 들어, 채널 제어 워드(CCW) 초기 프로그램 로드(IPL) 같은, 초기 프로그램 로드(IPL)가, 위에서 기술된 바와 같이, 수행되고(단계 602), 상기 IPL 입력/출력 연산이 성공적으로 완료될 때, IPL 디바이스에 대한 서브시스템 식별 워드(a subsystem identification word)는 선택된 절대 스토리지 위치들(예를 들어, 위치들 184-187)에 저장되고, 다른 선택된 절대 스토리지 위치들(예를 들어, 위치들 188-191)에는 0들이 저장되며, 그리고 이 실시 예에서, 16-바이트의 새로운 프로그램 상태 워드(PSW)가 선택된 절대 스토리지 위치들(예를 들어, 위치들 0-7)로부터 생성된다(단계 604). 상기 새로운 16-바이트 PSW는, 예를 들어 상기 선택된 스토리지 더블워드의 컨텐츠(예를 들어, 위치들 0-7)로부터 형성된다. 상기 더블 워드의 비트 12는 1이 되어야 한다. 그렇지 않으면 에러가 표시될 수 있다. (상기 에러는 인지되는 명세 예외, 머신 체크 표시 또는 그 외 다른 에러 표시일 수 있다.) 상기 새로 생성된 PSW의 비트들 0-32는 비트 12가 인버트되는 것을 제외하고 상기 선택된 더블워드의 비트들 0-32로 세트된다. 상기 새로 생성된 PSW의 비트들 33-96은 0들로 세트된다. 상기 새로 생성된 PSW의 비트 위치들 97-127은 상기 선택된 더블 워드의 비트들 33-63으로부터 초기화된다.
[0076] 본 발명의 한 바람직한 실시 예에서, 상기 명령에 의해 로드될 PSW 필드들은 로드되기 전에 유효성 검사를 받지 않는다(not checked for validity). 본 발명의 한 바람직한 실시 예에서, 상기 PSW의 비트 12는 유효성 검사를 받는다. 본 발명의 또 다른 바람직한 실시 예에서, 모든 필드들은 유효성 검사를 받는다. 본 발명의 또 다른 바람직한 실시 예에서, 상기 PSW의 로딩 전에 검사를 받지 않은 모든 비트들은 상기 PSW가 초기화된 후에 유효성 검사를 받고, 프로세서는 (예를 들어, 인지되는 명세 예외, 머신 체크 표시 또는 그 외 다른 에러 표시를 제기함으로써) 에러를 표시할 수 있다.
[0077] 컴퓨팅 환경은 연산 상태(operating state)에 들어가고, 상기 컴퓨팅 환경의 작동이 상기 새로운 프로그램 상태 워드(PSW)의 제어 하에 진행된다(단계 606). 그 다음, 상기 부팅된 컴퓨팅 환경이 실행되는데(단계 608), 이에 대해서는 도 6b를 참조하여 추가로 기술한다.
[0078] 도 6b를 참조하면, 상기 부팅된 컴퓨팅 환경이 z/Architecture 모드에서 개시되고(단계 620), 따라서 연산들이 z/Architecture 모드에서 수행된다(단계 622). 모드 전환은 필요하지 않고, z/Architecture 모드에서 직접 처리를 계속한다. 그러므로, 본 발명의 한 바람직한 실시 예에서, 다음의 단계들은 필요하지 않다: ESA/390 모드에서 z/Architecture 모드로 전환하기 위한 신호 프로세서(SIGP) 연산; SIGP 연산이 수용되는 연산인지에 대한 결정; 만일 수용되는 연산이면 z/Architecture로 전환; 또는 만일 SIGP 연산이 수용되지 않으면 에러 표시.
[0079] 상기 컴퓨팅 환경(즉, 구성되어 있는 환경, 예를 들어, 단일 프로세서, 논리적 파티션, VM 게스트)의 모든 프로세서들은, 위에서 표시된 단계들을 수행하는 일 없이, z/Architecture 모드에서 동작한다. 그러므로, 여기에서 기술된 바와 같은, 한 특징에 따라서, ESA/390 모드에서 부팅하거나 파워-온 하는 능력이 ESA/390과 z/Architecture 둘 모두를 위해 구성된(configured) 컴퓨팅 환경에서 제거된다. 구체적으로, 컴퓨팅 환경이 다수 아키텍처들을 지원하도록 구성되었더라도, 구성된 아키텍처들 중 적어도 하나의 특정 특징들을 제한하는 능력이 제공되는데, 상기 특징들 중 하나가 그 아키텍처에서 파워-온 하는 능력이다.
[0080] 하나 또는 그 이상의 바람직한 실시 예들에서, z/Architecture 모드에서 파워-온 하면 (1) 논리적 파티션(게스트-1), 및 (2) 논리적 파티션과 게스트-2 중 하나가, ESA/390 모드에서 부팅할 필요 없이, z/Architecture 모드에서 부팅 및 리셋 되도록 명시하는 메커니즘이 제공된다. 이 특징은 무조건적으로 설치될 수도 있고 구성 전환(configuration switch)의 제어 하에 설치될 수도 있다.
[0081] PSW 초기화에 관련된 부팅 시퀀스가 변경되는데(modified), 예를 들어, IPL의 끝(the end)에, 절대 위치들 0-7에 있는 IPL PSW가 로드된다. 리셋 조건이 ESA/390일 때 정해진 바와 같이, 비트 12는 1이고, 이는 유효 ESA/390 IPL PSW를 만들어서, 프로그램이 계속하여 ESA/390 아키텍처 모드에서 명령들을 실행하게 한다. CZAM이 설치되었더라도, 리셋 조건은 z/Architecture이고, 비트 12는 여전히, 유효 ESA/390 IPL PSW를 만드는, 1이지만, 비트 12는, 위에서 정의된 바와 같이, 16 바이트의 z/Architecture 현재 PSW를 형성하는 동안 인버트된다.
[0082] 파워-온 프로세스에 더해서, 다른 프로세스들, 동작들 및/또는 연산들 또한 구성 아키텍처 모드 퍼실리티의 설치에 의해 변경되거나 영향을 받을 수 있다. 이들 영향을 받는 프로세스들, 동작들, 및/또는 연산들은 ESA/390 모드 및 z/Architecture 모드에 따라 특정된다(specific). 그러나, 유사하거나 및/또는 다른 프로세스들은 다른 유형의 아키텍처들 때문에 영향을 받을 수 있다. 하나 또는 그 이상의 바람직한 실시 예들에서 영향을 받을 수 있는 예시적인 프로세스들, 동작들 및/또는 연산들은, 예를 들어, 다음을 포함한다:
(1) 에러를 생성하지 않고 (또는 그 에러를 무시하고) 자신의 모드로의 (예를 들어, z/Architecture에서 z/Architecture 모드로) 전환을 동작 가능하게 하는 것(enabling a switch). 즉, 프로세서가 SIGP 명령을 발행하여 z/Architecture 모드로 전환할 수 있는데, 만일 이미 그 모드에 있다면, 에러는 생성되지 않을 것이다. 이전에는, 현재 모드에 대응하는 모드로 전환을 시도하면 에러가 생성되었다.
(2) ESA/390 모드로의 전환을 동작 가능하지 않게 하는 것(disabling a switch). CZAM을 설치하고 활성화하는 것에 기초하여, ESA/390으로의 전환하는 것은 동작 가능하지 않게 되는데, 이제 그렇게 하면 에러를 생성한다. ESA/390으로 되돌아가는 전환은 상기 PSW의 비트 12를 검사함에 의해서 금지되고, 만일 비트 12가 z/Architecture 모드(스토리지 내 "1"의 비트 12에 의해서 표시되고, 이는 ESA/390 PSW가 유효한 z/Architecture PSW로 변환될 때 PSW에서 z/Architecture를 표시하기 위해 비트 "0"으로 인버트됨)를 표시하도록 세트되어 있지 않으면, 예외가 취해진다.
(3) 비트 12의 처리를 제한하도록 Load PSW(PSW 로드) 연산을 변경하는 것(modifying). 만일 구성 z/Architecture 아키텍처 모드 퍼실리티가 설치되어 있으면, Load PSW는 만일 그것의 두 번째 오퍼랜드의 비트 12가 1이 아니면 명세 예외를 인지한다. Load PSW는 (인버트되는 비트 12를 예외로 하고) 그것의 두 번째 오퍼랜드의 비트들 0-32 및 그 오퍼랜드의 비트들 33-63을 현재 PSW의 비트들 33-63 및 97-127으로서 각각 로드하고, 현재 PSW의 비트들 33-96을 0들로 세트한다.
[0083] Load PSW 명령에 관한 더 상세한 사항을 도 7을 참조하여 기술한다. 본 발명의 한 바람직한 실시 예에서, Load PSW 명령(700)은 PSW 로드 연산을 표시하기 위해 연산 코드를 포함하는 연산 코드 필드(702); 베이스 필드(B2)(704); 및 변위 필드(D2)(706)를 포함한다. B2 필드에 의해 지정되는 범용 레지스터의 컨텐츠가 D2 필드의 컨텐츠에 더해져서 스토리지 내 제2 오퍼랜드의 주소(제2 오퍼랜드 주소라 불림)를 형성한다.
[0084] Load PSW 명령의 연산에서, 현재 PSW는 제2 오퍼랜드 주소에 의해 지정되는 위치의 더블워드의 컨텐츠로부터 형성된 16-바이트 PSW에 의해 대체된다.
[0085] 더블워드의 비트 12는 1이 되어야 하는데, 그렇지 않으면 모델에 따라서 명세 예외가 인지될 수 있다. 만일 구성 z/Architecture 아키텍처 모드 퍼실리티가 설치되어 있으면, 더블워드의 비트 12가 1이 아닌 경우 명세 예외가 인지된다.
[0086] 더블워드의 비트들 0~32는, 인버트되는 비트 12는 예외로 하고, 현재 PSW의 위치들 0-32에 배치된다. 더블워드의 비트들 33-63은 현재 PSW의 위치들 97-127에 배치된다. 현재 PSW의 비트들 33-96은 0으로 세트된다.
[0087] 직렬화 및 체크포인트 동기화 기능(a serialization and checkpoint synchronization function)이 오퍼랜드가 페치되기 전 또는 후에 수행되고 연산이 완료된 후에 다시 수행된다.
[0088] 오퍼랜드는 더블워드 경계 상에 지정되어야 한다. 그렇지 않으면, 명세 예외가 인지된다. 만일 오퍼랜드의 비트 12가 0이면, 모델에 따라, 명세 예외가 인지될 수 있다.
[0089] 명령에 의해 로드될 PSW 필드들은, 비트 12의 검사는 예외로 하고, 로드되기 전에 유효성에 대해 검사를 받지 않는다. 그러나, 로딩 직후에, 다음 중 어느 하나라도 새로 로드된 PSW에 대해 참이면, 명세 예외가 인지되고, 프로그램 인터럽션이 발생한다:
Figure 112016099894178-pct00001
비트들 0, 2-4, 12, 또는 24-30 중 어느 하나가 1이다.
Figure 112016099894178-pct00002
비트들 31과 32는 둘 모두 0이고, 비트들 97-103은 모두 0이 아니다.
Figure 112016099894178-pct00003
비트들 31과 32는, 각각, 1과 0이다.
[0090] 이 경우들에서, 연산은 완료되고, 합성 명령 길이 코드(the resulting instruction length code)는 0이다.
[0091] 연산은 모든 주소지정 및 보호 예외들에서는(on all addressing and protection exceptions) 중단된다.
[0092] 합성 조건 코드(Resulting Condition Code): 이 코드는 로드된 새로운 PSW에서 명시된 대로 세트된다.
프로그램 예외들:
Figure 112016099894178-pct00004
액세스(페치, 오퍼랜드 2)
Figure 112016099894178-pct00005
특권 연산(Privileged operation)
Figure 112016099894178-pct00006
명세
[0093] 프로그래밍 노트: 제2 오퍼랜드는 ESA/390 PSW의 포맷을 가져야 한다. 만일 이 오퍼랜드의 비트 12가 0이면 LOAD PSW의 실행 동안 또는 후에 명세 예외가 인지될 것이다.
[0094] PSW에 관한 더 상세한 사항은 "z/아키텍처의 발전과 속성(Development and Attributes of z/Architecture)"(Plambeck 외, IBM J. Res. & Dev., Vol. 46, No. 4/5, 2002년 7월/9월)에 기술되어 있다.
[0095] 아키텍처 모드 퍼실리티의 설치로 인해 변경될 수 있는 위의 프로세스들, 연산들 및/또는 동작들에 더하여, 리셋 모드 또한 아래에 설명되는 바와 같이 하나 또는 그 이상의 실시 예들에서 변경될 수 있다.
(4) 리셋 모드를 변경한다(예를 들어, 리셋, 클리어 리셋, 및 기타 리셋을 위한 액션들을 위해). CZAM 퍼실리티가 설치되어 있을 때, CPU 리셋은, 만일 그것이, 예를 들어, 로드-노멀 키의 활성화에 의해 일어나는 경우, 아키텍처 모드를 z/Architecture 모드로 세트한다.
[0096] ESA/390 모드와 z/Architecture 모드의 부분으로서 포함되는 리셋 기능들이 여럿이 있는데, 이들에는, 예를 들어, CPU 리셋, 초기 CPU 리셋, 서브시스템 리셋, 클리어 리셋 및 파워-온 리셋이 포함되며, 이들 각각에 대해 아래에서 기술한다.
[0097] CPU 리셋
CPU 리셋은 CPU 상태에서 장비 체크 표시들(equipment check indications) 및 그에 따른 모든 예측불가능성(any resultant unpredictability)을 클리어하는 수단을 최소한의 정보량을 파괴하면서 제공한다. 구체적으로, 이것은 CPU 상태가 연산의 분석 또는 재개를 위해 보존되어야 할 때 체크 조건들을 클리어하기 위해 사용된다. 만일 구성 z/Architecture 아키텍처 모드(CZAM) 퍼실리티가 설치되어 있지 않으면, CPU 리셋이 로드-노멀 키(연산자 퍼실리티)의 활성화에 의해 일어나는 경우, 그것은 아키텍처 모드를 ESA/390 모드로 세트한다. CZAM 퍼실리티가 설치되어 있을 때, CPU 리셋이 로드-노멀 키의 활성화에 의해 일어나는 경우, 그것은 아키텍처 모드를 z/Architecture 모드로 세트한다. CPU 리셋이 ESA/390 모드를 세트할 때, 그것은 아키텍처 모드를 z/Architecture로 다시 되돌리는 신호 프로세서 세트 아키텍처 지시(Signal Processor Set Architecture order)에 의해 PSW가 복원될 수 있도록 현재 PSW를 세이브한다.
CPU 리셋은 본 발명의 한 바람직한 실시 예에서 다음의 액션들을 일으킨다:
1. 현재 명령 또는, 인터럽션과 같은, 기타 처리 시퀀스의 실행이 종료되고, 모든 프로그램-인터럽션 및 수퍼바이저-콜-인터럽션 조건들이 클리어된다.
2. CPU에 로컬인 모든 펜딩 중인 외부-인터럽션 조건들이 클리어된다. 부동(Floating) 외부-인터럽션 조건들은 클리어되지 않는다.
3. CPU에 로컬인 모든 펜딩 중인 머신-체크-인터럽션 조건들 및 에러 표시들과 모든 체크-정지(check-stop) 상태들은 클리어된다. 부동(Floating) 머신-체크-인터럽션 조건들은 클리어되지 않는다. 구성(the configuration) 내의 모든 CPU들에 보고되고 한 CPU에 펜딩 중인 머신-체크 조건을 그 CPU에 대해 로컬이라고 말한다.
4. 프리페치된 명령들 또는 오퍼랜드들의 모든 사본들(copies)은 클리어된다. 추가로, 현재 체크포인트 인터벌 내의 명령들의 실행 때문에 저장되는 모든 결과들은 클리어된다.
5. ART(Access Register Translation)-룩어사이드 버퍼 및 변환-룩어사이드 버퍼는 엔트리들이 클리어된다.
6. 만일 리셋이 구성 내의 임의의 CPU 상의 로드-노멀 키의 활성화에 의해 일어나면, 다음의 액션들이 발생한다:
a. CZAM 퍼실리티가 설치되어 있지 않을 때, CPU의 아키텍처 모드(및 다른 CPU들에 의해 수행된 초기 CPU 리셋 또는 CPU 리셋들 때문에 구성 내의 다른 모든 CPU들의 아키텍처 모드)는 z/Architecture 모드에서 ESA/390 모드로 변경된다. 만일 CZAM 퍼실리티가 설치되어 있으면, 그 CPU의 아키텍처 모드(및 다른 CPU들에 의해 수행된 초기 CPU 리셋 또는 CPU 리셋들 때문에 그 구성 내의 다른 모든 CPU들의 아키텍처 모드)는 z/Architecture 모드로 세트된다.
b. CZAM 퍼실리티가 설치되어 있지 않을 때, 현재 PSW는 z/Architecture 모드를 복원시키는 신호 프로세서 세트 아키텍처 지시에 의한 후속 사용을 위해 세이브된다.
c. CZAM 퍼실리티가 설치되어 있지 않을 때, 현재 PSW는 16 바이트에서 8 바이트로 변경된다. 8-바이트 PSW의 비트들은 다음과 같이 세트된다: 비트들 0-11과 13-32는 16-바이트 PSW의 동일한 비트들과 같게 세트되고, 비트 12는 1로 세트되고, 비트들 33-63은 16-바이트 PSW의 비트들 97-127과 같게 세트된다.
시스템 리셋-노멀 키의 활성화 또는 신호 프로세서(Signal Processor) CPU-리셋 지시에 의해 일어나는 CPU 리셋과 ESA/390 모드에서 모든 CPU 리셋은 캡처된 z/Architecture-PSW 레지스터(즉, 코드가 0인 상태에서 세트 아키텍처 지시 때문에 또는 로드-노멀 키의 활성화로 인한 CPU 리셋 때문에 CPU가 마지막으로 z/Architecture 모드에서 ESA/390 모드로 갔을 때 세이브된 PSW)에 영향을 주지 않는다.
7. CPU는 액션들 1-6이 완료된 후에 정지된 상태에(in the stopped state) 배치된다. CCW-유형 IPL 시퀀스가 그 CPU 상의 리셋 기능을 따를 때, CPU는 그 리셋 기능의 완료 시점에 로드 상태에 진입하고 리셋 연산의 실행 중에 정지된 상태에 진입할 필요는 없다. 목록-총괄(list-directed) IPL 시퀀스가 그 CPU 상의 리셋 기능을 따를 때, CPU는 운영 상태(the operating state)에 진입하고 리셋 연산의 실행 중에 정지된 상태에 진입할 필요는 없다.
[0098] 레지스터들, 스토리지 컨텐츠, 및 CPU 외부 조건들의 상태(the state of conditions external to the CPU)는 CPU 리셋에 의해 변경되지 않고 그대로 유지된다. 그러나, 만일 한 연산이 리셋이 되는 시점에 컨텐츠를 변경시키는 과정에 있는 경우, 레지스터의 후속 컨텐츠, 위치 또는 상태는 예측 불가능하다. PERFORM LOCKED OPERATION을 실행할 때 CPU에 의해 보유된 락(lock)은 CPU 리셋에 의해 해제되지 않는다.
[0099] CPU 내 리셋 기능이 CPU가 I/O 명령을 실행 중이거나 I/O 인터럽션을 수행 중일 때 개시되면, CPU와 채널 서브시스템 사이의 현재 연산은 완료되거나 완료되지 않을 수 있으며, 그 결과, 연관된 채널-서브시스템 퍼실리티의 상태는 예측 불가능할 수 있다.
[00100] 프로그래밍 노트:
1. 상태, 조건, 또는 필드의 컨텐츠를 변경시킬 수 있는 대부분의 연산들은 CPU가 정지된 상태에 있을 때 일어날 수 없다. 그러나, 일부 신호-프로세서 기능들 및 일부 연산자 기능들(some operator functions)은 이 필드들을 변경시킬 수 있다. CPU 리셋이 발행될 때 필드를 잃을 가능성을 배제하려면, CPU는 정지되어야 하고, 연산자 기능들은 어떤 것도 진행 중에(in progress) 있으면 안된다.
2. 만일 아키텍처 모드가 ESA/390 모드로 변경되고 현재 PSW의 비트 31이 1이면, PSW는 유효하지 않다.
[00101] 초기 CPU 리셋(Initial CPU Reset)
초기 CPU 리셋은 현재 PSW, 캡처된 z/Architecture PSW, CPU 타이머, 클록 비교기, 프리픽스, 중단-이벤트-주소 컨트롤(breaking-event-address control), 부동 소수점 컨트롤, 및 TOD(time-of-day) 프로그램가능 레지스터들의 초기화와 함께 CPU 리셋의 기능들을 제공한다. 만일 CZAM 퍼실리티가 설치되어 있지 않으면, 초기 CPU 리셋은 로드-노멀 키의 활성화에 의해 일어나는 경우 아키텍처 모드를 ESA/390 모드로 세트한다. CZAM 퍼실리티가 설치되어 있을 때, 초기 CPU 리셋은 로드-노멀 키의 활성화에 의해 일어나는 경우 아키텍처 모드를 z/Architecture 모드로 세트한다.
초기 CPU 리셋은 CPU 리셋 기능들을 다음의 클리어 및 초기화 기능들과 결합시킨다:
1. CZAM 퍼실리티가 설치되어 있지 않을 때, 만일 리셋이 로드-노멀 키의 활성화에 의해 일어나면, CPU(및 구성 내의 다른 모든 CPU들)의 아키텍처 모드는 ESA/390 모드로 세트된다. 그렇지 않고, CZAM 퍼실리티가 설치되어 있으면, 그 CPU(및 그 구성 내의 다른 모든 CPU들)의 아키텍처 모드는 z/Architecture 모드로 세트된다.
2. 현재 PSW, 캡처된 z/Architecture-PSW, 프리픽스, CPU 타이머, 클록 비교기, 및 TOD 프로그램가능 레지스터의 컨텐츠는 0으로 세트된다. IPL 시퀀스가 그 CPU 상의 리셋 기능을 따를 때, PSW의 컨텐츠는 반드시 0으로 세트될 필요가 없다.
3. 제어 레지스터들의 컨텐츠는 그들의 초기 z/Architecture 값들로 세트된다. 제어 레지스터들의 모든 64 비트들은 CPU가 ESA/390 또는 z/Architecture 아키텍처 모드에 있든지 상관 없이 세트된다.
4. 부동 소수점 컨트롤의 컨텐츠는 0으로 세트된다.
5. 중단-이벤트-주소 레지스터의 컨텐츠는 0000000000000001 hex로 초기화된다.
[00102] 이들 클리어 및 초기화 기능들은 인증(validation)을 포함한다.
[00103] CPU가 연산의 끝에 ESA/390 아키텍처 모드에 있을 때 현재 PSW를 0으로 세트하면, PSW 비트 12가 그 모드에서 1이 되어야 하므로, PSW가 유효하지 않게 된다. 따라서, 이 경우에 만일 CPU가 먼저 새로운 PSW를 도입하지 않고 리셋 후에 운영 상태에 배치되면, 명세 예외가 인지된다.
[00104] 서브시스템 리셋
서브시스템 리셋은 I/O 시스템 리셋을 호출하기 위한 수단뿐 아니라 부동(floating) 인터럽션 조건들을 클리어하기 위한 수단을 제공한다.
[00105] 클리어 리셋
클리어 리셋은 초기 CPU 리셋과 서브시스템 리셋이 수행되게 하고, 추가로, TOD 클록을 제외한 구성 내의 모든 CPU들 내의 모든 스토리지 위치들과 레지스터들을 클리어하거나 초기화한다. 이러한 클리어링은 프로그램들을 디버깅하고 사용자 프라이버시를 보장하는 데 유용하다. 클리어 리셋은 또한 PERFORM LOCKED OPERATION 명령에 의해 사용되는 모든 락(lock)들을 해제한다. 만일 CZAM 퍼실리티가 설치되어 있지 않으면, 클리어 리셋은 아키텍처 모드를 ESA/390 모드로 세트한다. 만일 CZAM 퍼실리티가 설치되어 있으면, 클리어 리셋은 아키텍처 모드를 z/Architecture 모드로 세트한다. 클리어를 하면 주소 지정할 수 없는 페이지들의 컨텐츠를 보유하기 위해 제어 프로그램에 의해 사용되는 직접 액세스 스토리지 디바이스 같은, 외부 스토리지에는 영향을 주지 않는다.
클리어 리셋은 초기 CPU 리셋 기능을 다음의 액션들을 일으키는 초기화 기능과 결합시킨다:
1. CZAM 퍼실리티가 설치되어 있지 않을 때, 구성 내의 모든 CPU들의 아키텍처 모드는 ESA/390 모드로 세트된다. 만일 CZAM 퍼실리티가 설치되어 있으면, 그 구성 내의 모든 CPU들의 아키텍처 모드는 z/Architecture 모드로 세트된다.
2. 구성 내의 모든 CPU들의 액세스, 범용, 및 부동 소수점 레지스터들은 0으로 세트된다. 범용 레지스터들의 모든 64 비트들은 클리어-리셋 기능이 개시되었을 때 CPU가 ESA/390 또는 z/Architecture 아키텍처 모드에 있었든지 상관 없이 0으로 세트된다.
3. 구성 내의 메인 스토리지의 컨텐츠와 연관된 스토리지 키들은 유효한 체킹-블록 코드와 함께 0으로 세트된다.
4. PERFORM LOCKED OPERATION 명령을 실행할 때 구성 내의 임의의 CPU에 의해 사용되는 락(lock)들은 해제된다.
5. 서브시스템 리셋이 수행된다.
[00106] 레지스터들의 세팅과 스토리지 및 스토리지 키들의 클리어링에는 인증(validation)이 포함된다.
[00107] 프로그래밍 노트:
1. 아키텍처 모드는 시스템-리셋-노멀 키의 활성화에 의해서 또는 신호 프로세서 CPU-리셋이나 초기-CPU-리셋 지시에 의해서 변경되지 않는다. 구성 내의 모든 CPU들은 동일 아키텍처 모드에 있다.
2. CPU-리셋 연산이 변경되지 않은 채 남아있어야 하는(to be left unchaged) 필드들의 컨텐츠에 영향을 주지 않기 위해서는, CPU는 명령들을 실행하고 있으면 안되고 리셋의 시점에서 모든 인터럽션들에 대해서 동작 불가능 하게 되어 있어야 한다. CPU 타이머의 연산 그리고 머신-체크 인터럽션 발생 가능성을 제외하고, 모든 CPU 활동은 CPU를 대기 상태로 배치함으로써 그리고 I/O 및 외부 인터럽션들에 대해 동작 불가능하게 함으로써 정지될 수 있다. CPU 타이머가 업데이트 되거나 또는 머신-체크 인터럽션이 발생하는 시점에 리셋을 일으킬 가능성을 피하려면, CPU는 정지된 상태에 있어야 한다.
3. CPU 리셋, 초기 CPU 리셋, 서브시스템 리셋, 및 클리어 리셋은 TOD 클록의 값과 상태에 영향을 주지 않는다.
4. CPU가 체크-정지 상태에 들어가는 조건들은 모델에 따라 다르며 현재 연산의 완료를 막는 오작동들을 포함한다. 이런 이유로, 만일 CPU가 체크-정지 상태에 있는 동안 CPU 리셋 또는 초기 CPU 리셋이 실행되면, 에러가 일어나는 시점에 액세스된 스토리지 키들과 스토리지 위치를 포함하여 PSW, 레지스터들, 및 스토리지 위치들의 컨텐츠는 예측 불가능한 값들을 가질 수 있고, 어떤 경우에는, 체크-정지 상태가 이 리셋들에 의해 클리어된 이후에도 그 컨텐츠가 여전히 에러일 수 있다. 이러한 상황에서, 클리어 리셋은 그 에러를 클리어하기 위해 필요하다.
[00108] 파워-온 리셋(Power-On Reset)
머신의 컴포넌트를 위한 파워-온 리셋 기능은 그 컴포넌트를 위한 파워-온 시퀀스의 일부로서 수행된다. TOD 클록, 메인 스토리지, 확장된 스토리지, 및 채널 서브시스템을 위한 파워-온 시퀀스들은 CPU 파워-온 시퀀스의 일부로서 포함될 수 있고, 또는 이 유닛들을 위한 파워-온 시퀀스는 따로(separately) 개시될 수도 있다.
CPU 파워-온 리셋(CPU Power-On Reset): 파워-온 리셋은 초기 CPU 리셋이 수행되게 하고 I/O-시스템 리셋은 채널 서브시스템에서 수행되게 할 수도 있고 또는 하지 않을 수도 있다. 범용 레지스터들, 액세스 레지스터들, 및 부동-소수점 레지스터들의 컨텐츠는 유효한 체킹-블록 코드(valid checking-block code)와 함께 0들로 클리어된다. PERFORM LOCKED OPERATION에 의해 사용되는 그리고 CPU와 연관되는 락들(locks)은 이미 파워-온 된 CPU가 보유한 경우가 아닌 한 해제된다. 만일 CZAM 퍼실리티가 설치되어 있지 않고 그리고 리셋이 구성을 설정하는 것과 연관되어 있다면, CPU는 ESA/390 모드에 배치된다. 그렇지 않으면, CPU는 구성 내 이미 존재하는 CPU들의 아키텍처 모드에 배치된다. 만일 CZAM 퍼실리티가 설치되어 있다면, CPU는 z/Architecture 모드에 배치된다.
CPU 리셋, 초기 CPU 리셋, 서브시스템 리셋, 및 클리어 리셋은 연산자 퍼실리티들(the operator facilities)을 이용하여 수동으로 개시될 수 있다. 초기 CPU 리셋은 초기 프로그램 로딩 기능의 일부이다. 파워-온 리셋은 전원을 켜는 것(turning power on)의 일부로서 수행된다.
[00109] CZAM 퍼실리티가 설치되어 있지 않을 때, 만일 리셋이 시스템-리셋-클리어, 로드-노멀, 또는 로드-클리어 키에 의해서, 또는 구성을 설정하는 CPU 파워-온 리셋에 의해서 개시된다면, 아키텍처 모드는 ESA/390 모드로 세트된다. 그렇지 않으면, 아키텍처 모드는 변경되지 않으며, 다만 파워-온 리셋이 모드를 구성 내 이미 존재하는 CPU들의 모드로 세트한다. 만일 CZAM 퍼실리티가 설치되어 있으면, 아키텍처 모드는 z/Architecture 모드로 세트된다.
[00110] 구성 아키텍처 모드 퍼실리티의 설치(installation of a configuration architectural mode facility)로 인해 변경될 수 있는 다른 프로세스들, 연산들 및/또는 동작들을 아래에 기술한다:
(5) 리셋이 수행될 때, ESA/390 모드와 z/Architecture 모드 사이의 변경을 가능하게 하기 위해 취해지는 다른 리셋 관련 액션들을 중단한다(suppress). CZAM 퍼실리티가 설치되어 있지 않을 때, 현재 PSW는 z/Architecture 모드를 복원시키는 신호 프로세서 세트 아키텍처 지시에 의한 후속 사용을 위해 세이브된다. CZAM 퍼실리티가 설치되어 있지 않을 때, 현재 PSW는 16 바이트에서 8 바이트로 변경된다. 한 예에서, 8 바이트 PSW의 비트들은 다음과 같이 세트된다: 비트들 0-11과 13-32는 16-바이트 PSW의 동일 비트들과 같게 세트되고, 비트 12는 1로 세트되며, 비트들 33-63은 16 바이트 PSW의 비트들 97-127과 같게 세트된다. CZAM 퍼실리티가 설치되어 있을 때, PSW는 z/Architecture 모드를 복원시키는 신호 프로세서 세트 아키텍처 지시에 의한 후속 사용을 위해 세이브되지 않고, 현재 PSW도 16 바이트에서 8 바이트로 변경되지 않는다.
(6) CPU SCLP 구성 커맨드(a configure CPU SCLP (Service Call Logical Processor) command ), 및 로드 키 연산들로 CPU를 구성하기 위한 프로세스를 변경한다. ESA/390에서 구성하기보다는, 리셋에 의해 정의되는 모드에서 구성한다. 상기 CPU SCLP 구성 커맨드는 해당 CPU를 이미 구성된 상태에 있는 CPU들의 아키텍처 모드에 배치한다. 구성에 배치되는 최초 CPU는 적어도 CPU 파워 온 리셋과 함께 그곳에 배치되고, 그 리셋의 일부로서, CPU 파워 온 리셋에서 정의된 아키텍처 모드에 배치된다. 모델이 구성된 CPU들의 모드를 세트할 때, 모델은 대안으로서(alternatively) 대기 상태에 있는(in the standby state) CPU들의 모드를 세트할 수 있다.
[00111] 로드-클리어 키 또는 로드-노멀 키를 활성화시키면, 클리어 리셋 또는 초기 CPU 리셋에서, 각각, 정의된 대로 아키텍처 모드를 세트할 수 있다.
[00112] (7) 세트 아키텍처 지시(a Set Architecture order)가 아키텍처 모드를 ESA/390으로 변경하지 않도록 SIGP를 변경한다.
[00113] 신호 프로세서(SIGP) 명령에 관한 본 발명의 한 바람직한 실시 예를 도 8a를 참조하여 기술한다. 한 실시 예에서, 신호 프로세서 명령(800)은 복수의 필드들을 포함하며, 예를 들어, 신호 프로세서 연산을 표시하는 연산 코드를 갖는 연산 코드 필드(opcode, 802), 제1 레지스터 필드(R1)(804), 제2 레지스터 필드(R3)(806), 베이스 필드(B2)(808), 및 변위 필드(D2)(810)를 포함한다. R1은 범용 레지스터를 지정하고, 그 컨텐츠는 제1 오퍼랜드이며; R3은 범용 레지스터를 지정하고, 그 컨텐츠는 제3 오퍼랜드이며; 그리고 R2가 가리키는 레지스터의 컨텐츠는 D2에 있는 변위에 더해져서 제2 오퍼랜드의 주소를 제공한다.
[00114] 연산 시에는, 8-비트 지시 코드와, 만일 호출될 경우, 32-비트 파라미터가 제3 오퍼랜드에 포함된 CPU 주소가 가리키는 CPU에 전송된다. 그 결과는 조건 코드로 표시되고 제1-오퍼랜드 위치의 비트 위치들 32-63에 집합된 상태에 의해 상세사항이 표시될 수 있다.
[00115] 제2 오퍼랜드 주소는 데이터를 주소지정하기 위해 사용되지 않고, 그 대신에 상기 주소의 비트들 56-63은 8-비트 지시 코드를 포함한다. 제2 오퍼랜드 주소의 비트들 0-55는 무시된다. 상기 지시 코드는 주소지정된 CPU에 의해 수행될 기능을 명시한다. 지시 코드들의 할당과 정의는, 예를 들어, 한 예에서 다음을 포함한다:
코드
(십진) (16진) 지시
0 00 미할당
1 01 감지
2 02 외부 호출
3 03 긴급 신호
4 04 시작
5 05 정지
6 06 재시작
7 07 미할당
8 08 미할당
9 09 정지 및 상태 저장
10 0A 미할당
11 0B 초기 CPU 리셋
12 0C CPU 리셋
13 0D 프리픽스 세트
14 0E 주소에 상태 저장
15-17 0F-11 미할당
18 12 아키텍처를 세트함
19 13 조건부 긴급 신호
14 14 미할당
21 15 실행 상태를 감지
22-255 16-FF 미할당
[00116] 범용 레지스터 R3의 비트 위치들 48-63에 포함된 16-비트 2진수는 CPU 주소를 형성한다. 상기 레지스터의 비트들 0-47은 무시된다. 명시된 지시가 세트 아키텍처(Set Architecture) 지시일 때, CPU 주소는 무시되고, 구성 내의 다른 모든 CPU들이 주소지정 되는 것으로 간주된다.
[00117] 비트 위치들 32-63에 32-비트 파라미터를 보유하는 범용 레지스터는 R1 또는 R1+1이며, 어느 쪽이든 기수-번호의 레지스터(the odd-numbered register)이다. 파라미터가 제공되는지 그리고 어떤 목적으로 사용되는지는 지시 코드(the order code)에 달려 있다.
[00118] 방금 기술된 오퍼랜드들은, 한 예에서, 다음 포맷들을 갖는다:
R1에 의해 지정된 범용 레지스터: 비트들 0-31은 사용되지 않고; 비트들 32-63은 상태를 포함한다;
R1 또는 R1+1(어느 쪽이든 기수-번호의 레지스터임)에 의해서 지정된 범용 레지스터: 비트들 0-31은 사용되지 않고; 비트들 32-63은 상기 파라미터를 포함한다;
R3에 의해서 지정된 범용 레지스터: 비트들 0-48은 사용되지 않고; 비트들 49-63은 CPU 주소를 포함한다;
제2 오퍼랜드 주소: 비트들 0-55는 사용되지 않고; 비트들 56-63은 지시 코드를 포함한다.
[00119] 직렬화 기능(a serialization function)이 연산이 시작되기 전에 수행되고 연산이 완료된 후에 다시 수행된다.
[00120] 지시 코드가 수용되고 영이 아닌 상태(nonzero status)가 반환되지 않을 때, 조건 코드 0이 세트된다. 상태 정보가 이 CPU(SIGP를 수행하는 CPU)에 의해 생성되거나 또는 주소지정된 CPU에 의해 반환될 때, 상기 상태는 범용 레지스터 R1의 비트 위치들 32-63에 배치되며, 상기 레지스터의 비트들 0-31은 변경되지 않은 상태로 남아 있고, 조건 코드 1이 세트된다.
[00121] 주소지정된 CPU에 대한 액세스 경로가 비지(busy)이거나 또는 주소지정된 CPU가 작동 가능(operational)이지만 지시 코드에 응답할 수 없는 상태에 있을 때, 조건 코드 2가 세트된다.
[00122] 주소지정된 CPU가 작동 가능하지 않을 때(즉, 설치되지 않았거나, 구성 내에 있지 않거나, 특정 고객-엔지니어 테스트 모드들 중 어느 하나에 있거나, 그것의 전원이 꺼져 있을 때), 조건 코드 3이 세트된다.
[00123] 합성 조건 코드(Resulting Condition Code):
0 지시 코드 수용됨
1 상태 저장됨
2 비지(Busy)
3 작동 가능하지 않음
[00124] 프로그램 예외들:
Figure 112016099894178-pct00007
특권 연산(Privileged operation)
Figure 112016099894178-pct00008
트랜잭션 제한
[00125] 세트 아키텍처 신호 프로세서(Set Architecture Signal Processor) 지시가 신호 프로세서(Signal Processor) 명령의 제2 오퍼랜드 주소의 비트 위치들 56-63에 명시될 때, 그 파라미터 레지스터의 비트 위치들 56-63의 컨텐츠는 구성 내의 모든 CPU들이 세트될 아키텍처 모드를 명시하는 코드로서 사용된다: 코드 0은 ESA/390 모드를 명시하고, 코드들 1과 2는 z/Architecture 모드를 명시한다. 코드 1은, 구성 내의 모든 CPU들 각각에 대해서, 현재 ESA/390 PSW가 z/Architecture PSW로 변환됨을 명시한다. 코드 2는 신호 프로세서(Signal Processor)를 실행하는 CPU의 PSW는 z/Architecture PSW로 변환되고 그리고, 구성 내의 모든 기타 CPU들 각각의, PSW는 그 CPU에 대해 캡처된 z/Architecture-PSW 레지스터의 값(the value of the captured z/Architecture-PSW register)으로 세트된다는 것을 명시한다. 캡처된-z/Architecture-PSW 레지스터가 리셋에 의해 모두 0들로 세트되지 않았을 때, 상기 PSW를 캡처된-z/Architecture-PSW 레지스터의 값으로 세트하면, CPU가 z/Architecture 모드에 마지막으로 있었을 때 존재했던 PSW는 복원될 것이다.
[00126] 파라미터 레지스터의 비트들 0-55는 무시된다. 신호 프로세서(Signal Processor) 명령의 CPU-주소 레지스터의 컨텐츠는 무시되고; 구성 내의 모든 기타 CPU들은 주소지정되는 것으로 간주된다.
[00127] CZAM 퍼실리티가 설치되어 있지 않을 때, 상기 지시는 코드가 0, 1, 또는 2인 경우에만 수용되고, CPU는 그 코드에 의해 명시된 모드에 이미 있지 않으며, 모든 기타 CPU들의 각각은 정지된 상태 또는 체크-정지 상태(the stopped or the check-stop state)에 있으며, 기타 어떤 조건도 상기 지시를 수용하는 것을 배제하지 않는다.
[00128] CZAM 퍼실리티가 설치되어 있을 때, 코드 0은 ESA/390 모드로의 복귀가 허용되지 않기 때문에 수용되지 않지만, CPU는 이미 z/Architecture 아키텍처 모드에 있으므로, 코드들 1과 2를 명시하면, 무효-파라미터와 조건 코드 1을 표시하는 것을 완료할 수 있다. 세트 아키텍처(Set Architecture) 지시에 의해 정상적으로 검증된(verified) 기타 전제 조건들도 체크될 수도 있고 체크되지 않을 수도 있다.
[00129] 만일 수용되면, 상기 지시는 신호 프로세서(Signal Processor)의 실행 동안에 모든 CPU들에 의해 완료된다. 이 실시 예에서 어떤 경우에도 서로 다른 CPU들이 서로 다른 아키텍처 모드들에 있을 수 없다.
[00130] 세트 아키텍처(Set Architecture) 지시는, 한 예에서, 다음과 같이 완료된다:
Figure 112016099894178-pct00009
만일 파라미터 레지스터 내 코드가 0, 1, 또는 2가 아니거나, 또는 만일 CPU가 그 코드에 의해 명시된 아키텍처 모드에 이미 있으면, 상기 지시는 수용되지 않는다. 그 대신에, 신호 프로세서(Signal Processor) 명령의 R1 필드에 의해서 지정된 범용 레지스터의 비트 55(무효 파라미터)는 1로 세트되고, 그리고 조건 코드 1이 세트된다.
Figure 112016099894178-pct00010
만일 구성 내의 모든 기타 CPU들이 정지된 또는 체크-정지 상태에 있는 것이 참(true)이 아니면, 상기 지시는 수용되지 않는다. 그 대신에, 신호 프로세서(Signal Processor) 명령의 R1 필드에 의해서 지정된 범용 레지스터의 비트 54(부정확 상태)는 1로 세트되고, 그리고 조건 코드 1이 세트된다.
Figure 112016099894178-pct00011
구성 내의 모든 CPU들의 아키텍처 모드는 코드에 의해 명시된 대로 세트된다(예를 들어, 연산들을 제어하기 위한 PSW의 비트 12는 명시된 아키텍처 모드로 세트되고, 그리고/또는 컴퓨팅 환경 내의 다른 표시(another indication)도 세트되어 명시된 아키텍처 모드를 표시한다).
Figure 112016099894178-pct00012
만일 상기 지시가 아키텍처 모드를 ESA/390에서 z/Architecture로 변경시키고 그리고 코드가 1이면, 구성 내의 각 CPU에 대한, 8-바이트 현재 PSW( the eight-byte current PSW)는 16-바이트 PSW로 변경되고, 16-바이트 PSW의 비트들은 다음과 같이 세트된다: 비트들 0-11과 13-32는 8-바이트 PSW의 동일 비트들과 같게 세트되고, 비트 12와 비트들 33-96은 0들로 세트되고, 비트들 97-127은 8-바이트 PSW의 비트들 33-63과 같게 세트된다. 또한, z/Architecture 프리픽스의 비트 51이 되는, ESA/390 프리픽스의 비트 19는 0으로 세트된다.
[00131] 만일 코드가 2이면, 신호 프로세서(Signal Processor)를 실행하는 CPU의 PSW와 모든 CPU들의 프리픽스 값들은 코드-1 경우에서와 같이 세트된다. 구성 내의 모든 기타 CPU들 각각에 대한, PSW는 캡처된-z/Architecture-PSW 레지스터의 값으로 세트된다. 그러나, 캡처된-z/Architecture-PSW 레지스터는, 만일 CPU가, 아키텍처-모드 전환 시점에 또는 그 후에, CPU 리셋 이외의 리셋을 수행했다면, 모두 0들로 세트된다.
Figure 112016099894178-pct00013
만일 상기 지시가 아키텍처 모드를 z/Architecture에서 ESA/390으로 변경시키면, 구성 내의 각 CPU에 대한, (1)신호 프로세서(Signal Processor)를 실행하는 CPU의 경우에는 업데이트된, 현재 PSW는 캡처된-z/Architecture-PSW 레지스터에 세이브되고, 그리고 (2) 16-바이트 현재 PSW는 8-바이트 PSW의 비트들을 다음과 같이 세트함으로써 8-바이트 PSW로 변경된다: 비트들 0-11과 13-32는 16-바이트 PSW의 동일 비트들과 같게 세트되고, 비트 12는 1로 세트되며, 그리고 비트들 33~63은 16-바이트 PSW의 비트들 97-127과 같게 세트된다. ESA/390 프리픽스의 비트 19가 되는, z/Architecture 프리픽스의 비트 51은 변경되지 않는다.
Figure 112016099894178-pct00014
구성 내의 모든 CPU들의 ALB들과 TLB들의 컨텐츠는 클리어된다.
Figure 112016099894178-pct00015
직렬화 및 체크포인트-동기화 기능이 구성 내의 모든 CPU들 상에서 수행된다.
[00132] 만일 상기 지시가 아키텍처 모드를 z/Architecture에서 ESA/390으로 변경시키고 신호 프로세서(Signal Processor) 명령이 명령-페칭 PER 이벤트의 발생을 일으키면, 상기 명령의 주소의 최우측 31 비트들만 ESA/390 PER-주소 필드에 저장된다.
[00133] 본 발명의 한 바람직한 실시 예에서, CZAM에는, 다음의 전제조건이 있다: 모든 기타 CPU들의 각각은 정지된 또는 체크-정지 상태에 있고, 다른 어떠한 조건도 상기 지시를 수용하는 것을 배제하지 않는다. CZAM 퍼실리티가 설치되어 있을 때, 코드 0은 ESA/390 모드로 복귀가 허용되지 않기 때문에 수용되지 않고, CPU는 이미 z/Architecture 아키텍처 모드에 있으므로, 코드들 1과 2를 명시하면, 무효 파라미터와 조건 코드 1을 표시하는 것을 완료할 수 있다. 세트 아키텍처(Set Architecture) 지시에 의해 정상적으로 검증된 기타 전제 조건들은 체크될 수도 있고 체크되지 않을 수도 있다. 본 발명의 또 다른 바람직한 실시 예에서, 코드 1과 2를 갖는 SIGP는 추가 표시 없이 성공적인 완료를 표시한다.
[00134] 세트 아키텍처(Set Architecture) 지시 코드에 대한 SIGP 명령을 실행하는 것과 연관된 처리에 관하여 본 발명의 한 바람직한 실시 예를 도 8b를 참조하여 기술한다. 도 8b를 참조하면, 컴퓨팅 환경의 프로세서가 SIGP 명령을 실행하고 세트 아키텍처(Set Architecture) 연산을 표시하는 지시 코드(an order code)를 획득한다(단계 850). 한 예에서, 상기 지시 코드는 SIGP 명령의 제2-오퍼랜드 주소에 포함되어 있다.
[00135] 추가로, 전환되도록 요청된 아키텍처 모드가, 예를 들어 SIGP 명령에 의해 명시되는 파라미터 레지스터로부터, 획득된다(단계 852). 이어서, CZAM과 같은, 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 설치되어 있는지에 대한 결정이 이루어진다(질의 854). 한 예에서, 이것은 퍼실리티 표시자(a facility indicator)에 의해서 결정된다.
[00136] 만일 CZAM이 설치되어 있지 않으면, CPU가 요청 받은 아키텍처 모드에 이미 있는지에 대한 추가 결정이 이루어진다(질의 856). 만일 CPU가 요청 받은 아키텍처 모드에 이미 있다면, 상태가, 예를 들어 SIGP 명령에 의해 지정되는 레지스터에, 제공되고(단계 858), 상기 상태는 에러로서 취급된다(단계 860). 그러나, 만일 CPU가 요청된 모드에 있지 않으면(질의 856), 구성된 컴퓨팅 환경의 다른 CPU들이 정지된 상태에 있는지 등과 같은 상기 명령에 의해 명시된 다른 조건들이 충족되는지에 대한 결정이 이루어진다(질의 862). 만일 상기 조건들이 충족되지 않으면, 처리는 단계 858에서 계속된다. 그렇지 않으면, 상기 지시는 수용되고(단계 864), 아키텍처 모드는 변경된다. 따라서, PSW는, 위에 기술된 바와 같이, 세트되고(단계 866), 상기 명령의 이 상황에 대한 처리는 종료된다(단계 868).
[00137] 질의 854로 돌아가서, 만일 CZAM이 설치되어 있으면, CPU가 요청된 모드에 있는지에 대한 결정이 이루어진다(질의 870). 만일 CPU가 요청된 모드에 이미 있으면, 한 예에서, CPU가 요청된 아키텍처 모드(예를 들어, z/Architecture)에 이미 있다는 상태가 제공된다(단계 872). 그러나 이 실시 예에서, 이 상태는 수용 가능하고 에러로서 취급되지 않는다(단계 874). 다른 실시 예에서, 이것은 무시되거나 또는 에러가-아닌 코드(a non-error code)라는 조건 코드가 제공될 수 있다. 또 다른 실시 예에서, 상기 상태는 단지 성공적인 완료를 표시한다. CPU가 요청된 아키텍처 모드에 이미 있음에도 에러가 아님을 표시할 다른 가능성들도 존재한다.
[00138] 질의 870으로 돌아가서, 그러나, 만일 CPU가 요청된 모드에 있지 않으면, 상기 지시는 수용되지 않는데(단계 876), 그 이유는 한 아키텍처 모드(예를 들어, ESA/390)로 리턴하는 것은 부적법(illegal)하기 때문이다. 상태가 제공되고(단계 878), 이것은 에러로 간주된다(단계 880).
[00139] 본 발명의 한 바람직한 실시 예에서, CZAM이 선택-불가능 퍼실리티(a non-selectable facility)로서 시스템 내에 있으면, 질의 854는 생략되고 그리고 제어는 단계 852에서 직접 단계 870으로 건너뛸 수 있다. 그러한 실시 예에서, 단계들 854-868은 구현되지 않을 수 있다.
[00140] 본 발명의 다른 바람직한 실시 예에서, 현재 아키텍처 모드로 전환하라는 지시가 수신되면, 상기 지시는 수용되지 않고 에러가 단계 874에서 표시될 수 있다.
[00141] CAM의 설치에 기초하여 변경될 수 있는 다른 동작들, 프로세스들 및/또는 연산들은 다음을 포함한다:
(8) 퍼실리티 비트들에 대한 변경들: 구성 z/Architecture 아키텍처 모드 퍼실리티를 표시하기 위해, 새로운 비트, 예를 들어, 비트 138이 퍼실리티 비트들에 더해지고(added), 상기 z/Architecture 아키텍처 모드가 활성인지를 표시하는, 비트 2는 1로 세트된다(활성임을 표시함).
[00142] 본 발명의 한 바람직한 실시 예에서 CZAM 퍼실리트는 LPAR들 및 게스트-1(제1 수준 게스트들-하이퍼바이저에 의해서 개시되는 게스트들(예를 들어, Start Interpretive Execution (SIE) 명령을 발행함에 의해서)을 위해 설치되지만, 게스트-2(제2 수준 게스트들―다른 게스트에 의해서 시작되는 게스트(예를 들어, SIE 명령을 발행함에 의해서)를 위해 설치되지는 않는다.
[00143] 본 발명의 적어도 하나의 바람직한 실시 예에서, CZAM이 설치되고 z/Architecture 게스트-2가 개시될 때, 상기 게스트는 도 6a의 기술에 따라 z/Architecture모드에서 개시된다. 그러나, CZAM이 설치되고 ESA/390 게스트-2가 개시될 때, 그것은, 도 4a의 기술에 따라, ESA/390 모드에서 개시되는데, 그 이유는, 이 실시 예에서, 그것은 CZAM에 의해서 영향을 받지 않기 때문이다. 따라서, 호스트와 제1 수준 게스트들은 CZAM에 의해서 제어되어, 아키텍처 모드에 대한 선호에 상관없이, 그들은 z/Architecture에서 개시되거나/리셋되지만(예를 들어, ESA/390이 지원되지 않기 때문에, z/Architecture에 어쩔 수 없이 있게 됨), 제2 수준 ESA/390 게스트들은 CZAM에 의해서 영향을 받지 않고 ESA/390에서 계속 개시되거나/리셋된다.
[00144] 여기서 기술되는 바와 같이, 구성 z/Architecture 아키텍처 모드 퍼실리티(a Configuration z/Architecture Architectural Mode facility)와 같은, 구성 아키텍처 모드 퍼실리티를 설치하는 것에 기초하여, 다수의 아키텍처 모드들을 위해 구성된 컴퓨팅 환경의 특정 프로세스들, 연산들, 및/또는 동작들이 변경된다(changed). 그러한 하나의 프로세스가 파워-온 프로세스(the power-on process)이다. 구성 아키텍처 모드 퍼실리티가 설치되었을 때 파워-온 프로세스와 연관된 처리에 관한 추가적인 특징들이 도 9를 참조하여 기술된다.
[00145] 도 9를 참조하면, 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되고 그리고 한 아키텍처 모드(예를 들어, ESA/390과 같은, 레거시 모드)에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖는지에 관한 결정이 초기에 내려진다(단계 900). 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처를 포함하고, 31 비트 주소 지정, 32 비트 범용 레지스터의 사용, 및 다양한 특징들과 같은, 제1 세트의 지원 특징들을 갖는다. 만일 구성 아키텍처 모드 퍼실리티가 설치되어 있지 않다고 결정되면(질의 902), 도 4a-4b를 참조하여 기술된 바와 같이, 현재 파워-온 시퀀스가 수행된다(단계 904). 만일 그렇지 않으면, 상기 컴퓨팅 환경은 상기 한 아키텍처 모드(예를 들어, 레거시 ESA/390모드)의 사용을 제한하기 위해 재구성된다(단계 906). 상기 재구성은, 예를 들어, 다른 아키텍처 모드(예를 들어, 상기 아키텍처 모드의 나중 또는 강화 버전 ― 예, z/Architecture)에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스를 선택하는 단계를 포함한다(단계908). 상기 다른 아키텍처 모드는 제2 명령 세트 아키텍처를 포함하고, 64 비트 주소 지정, 64 비트 범용 레지스터의 사용, 및 다양한 특징들(예를 들어, 주소 변환, 및/또는 기타 퍼실리티들)과 같은, 제2 세트의 지원 특징들을 갖는다. 예를 들어, 도 6a-6b를 참조하여 기술된 바와 같이, 상기 한 아키텍처 모드의 사용을 제한하는 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위한 파워-온 시퀀스가 실행된다(단계 910). 한 예에서, 이 실행 단계는 PSW를 로드하고 비트 12를 인버트하는 단계를 포함한다. 그 후에, 상기 컴퓨팅 환경은 상기 다른 아키텍처 모드(예를 들어, z/Architecture)에서 실행된다(단계 912).
[00146] 다른 실시 예에서, 도 10을 참조하면, 상기 재구성 단계는 상기 한 아키텍처 모드를 지원하는 하나 또는 그 이상의 연산들(operations)을 동작 가능하지 않게 하는 단계(disabling)를 포함하고, 이는 전환 연산(switch operation)을 동작 가능하지 않게 하는 단계를 포함한다(단계 1000). 예를 들어, 신호 프로세서(SIGP) 명령은, 상기 한 아키텍처 모드(예를 들어, ESA/390)로 돌아가도록 전환하기 위한 요청에 기초하여 에러를 제공하기 위해 변경된다(altered).
[00147] 더 나아가서, 하나 또는 그 이상의 다른 프로세스들, 연산들, 및/또는 동작들이 상기 한 아키텍처 모드 대신에, 상기 다른 아키텍처 모드에서 파워-온을 지원하기 위해 변경되고, 상기 한 아키텍처 모드의 사용이 제한된다(단계 1002). 이들 하나 또는 그 이상의 기타 프로세스들에는, 예를 들어, 구성 CPU SCLP 커맨드(the configure CPU SCLP command) ― 이는 이미 구성된 상태에 있는 CPU들의 아키텍처 모드에 CPU를 배치함 ― (단계 1004); 로드-클리어 키 및 로드-노멀 키(the load-clear key and load-normal key) ― 이는 클리어 리셋 또는 초기 CPU 리셋, 각각에서, 정의된 대로 아키텍처 모드를 세트하는 연산자 퍼실리티들임 ― (단계1006); 신호 프로세서 명령(the Signal Processor instruction) ― 이는, 상태가 제공되고 에러로서 취급되지 않도록, 한 아키텍처 모드로부터 동일 아키텍처 모드로 전환을 수용하기 위해 변경됨 ― (단계 1008); 및 퍼실리티 비트들 ― 이는 구성 아키텍처 모드 퍼실리티를 표시하기 위해 퍼실리티 표시자들에게 더해짐 ― (단계 1010)이 포함된다.
[00148] 구성 아키텍처 모드 퍼실리티의 설치에 의해서 영향을 받는 다른 연산은, 여기서 기술한 바와 같이, 리셋 연산(the reset operation)이다. 리셋에 연관된 처리에 관한 본 발명의 한 바람직한 실시 예가 도 11을 참조하여 기술된다. 초기에, 프로세서는 리셋 연산을 획득하고(예를 들어, 수신한다, 제공된다, 또는 달리 얻는다)(단계 1100), 상기 리셋 연산은, 여기서 기술한 바와 같이, 컴퓨팅 환경을 다른 아키텍처 모드(예를 들어, z/Architecture)로 리셋하기 위해 수행된다(단계 1102). 이는, 예를 들어, 상기 아키텍처를 위해 적합한 포맷에 있는 PSW를 사용하는 것과 PSW 내 비트 12를 0으로 세트하는 것을 포함한다.
[00149] 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting); 및 상기 한 복수의 아키텍처를 위해 구성된 컴퓨팅 환경에 의해서 지원되는 아키텍처의 특정 아키텍처 특징들의 사용을 제한하는 구성 아키텍처 모드 퍼실리티가 여기서 상세하게 기술된다. 한 예에서, 구성 아키텍처 모드 퍼실리티가 설치되고, 다수의 아키텍처 구성들을 지원하는 컴퓨팅 환경이 재-구성되는데, 상기 아키텍처 모드들 중 하나(예를 들어, 레거시 모드)의 특징들이 더 이상 지원되지 않지만, 다른 아키텍처 모드(예를 들어, 강화 아키텍처 모드)는 계속 지원되도록 재-구성 된다. 컴퓨팅 환경이 그렇게 구성되었을 때, 상기 컴퓨팅 환경은 지원되지 않는 아키텍처 모드로 되돌아가도록 재구성되는 것은 금지된다.
[00150] 다른 실시 예에서, 컴퓨팅 환경은, z/Architecture와 같은, 선택된 아키텍처 모드에서 동적으로 구성된다. 이 실시 예에서, CZAM 퍼실리티가 설치 되었는지에 관해 체크가 이루어지지 않을 수도 있고, 및/또는 명시적 SIGP 세트 아키텍처 지시가 수행되지 않을 수도 있다. 이 구성을 수행하기 위한 로직에 관하여 본 발명의 한 바람직한 실시 예가 도 12를 참조하여 기술된다.
[00151] 도 12를 참조하면, 본 발명의 한 바람직한 실시 예에서, 프로세서는 선택된 아키텍처 모드(예를 들어, z/Architecture)에서 연산들을 수행하기 위해 컴퓨팅 환경을 구성한다(단계 1200). 상기 구성하는 단계(configuring)는, 예를 들어, 저장된 프로그램 상태 워드를 사용하여 컴퓨팅 환경의 초기화를 시작하는 단계(commencing)를 포함한다(단계 1202). 한 예에서, 저장된 프로그램 상태워드는 선택된 아키텍처 모드와 다른 아키텍처 모드의 포맷을 갖고 있다. 그래서 저장된 프로그램 상태워드가 선택된 아키텍처 모드와 다른 아키텍처 모드의 포맷을 갖고 있는지에 관한 결정이 내려진다(단계 1204). 상기 결정에 기초하여, 저장된 프로그램 상태워드는 선택된 아키텍처 모드의 포맷을 갖도록 자동으로 수정된다(modified)(단계 1206). 상기 자동으로 수정하는 단계는 선택된 아키텍처 모드로 전환하기 위한 명시적 요청 없이 수행된다. 그 다음 수정된 프로그램 상태 워드를 사용하는 컴퓨팅 환경의 초기화는 완료되고 선택된 아키텍처 모드에서 컴퓨팅 환경을 구성한다(단계 1208).
[00152] 본 발명의 한 바람직한 실시 예에서, CZAM 퍼실리티는, 예를 들어, No-DAT 퍼실리티 및/또는 제어 유틸리티 부팅 퍼실리티를 포함하는 하나 또는 그 이상의 다른 퍼실리티들과 함께 사용될 수 있고, No-DAT 퍼실리티 및/또는 제어 유틸리티 부팅 퍼실리티는 미국에서 공동-출원되어 양도된 출원들, "선택된 아키텍처 퍼실리티들과 연관된 처리의 관리(Managing Processing Associated with Selected Architectural Facilities)"(Gainey, et al, IBM Docket No.: POU920140020US1); 및 "다수의 아키텍처들에서 초기화될 수 있는 제어 유틸리트를 위한 공통 부팅 시퀀스(Common Boot Sequence for Control Utility Able to be Initialized in Multiple Architectures)"(Michael K. Gschwind, IBM Docket No.: POU920140019US1)에 각각, 기술되어 있으며, 이들은 전체로서 참조로서 여기에 포함된다.
[00153] 도 13을 참조하면, 한 예에서, 컴퓨터 프로그램 제품(1300)은, 예를 들어, 하나 또는 그 이상의 비-일시적인(non-transitory) 컴퓨터 판독 가능 스토리지 매체(1302)를 포함하며 이 매체 상에 컴퓨터 판독 가능 프로그램 코드 수단, 로직 및/또는 명령들(1304)을 저장하여 하나 또는 그 이상의 바람직한 실시 예들을 제공 및 가능하게 만든다.
[00154] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함할 수 있으며 이 매체 상에 프로세서가 본 발명의 특징들을 수행하도록 하기 위한 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[00155] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 디바이스에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광학 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 디바이스, 및 전술한 것들의 모든 적절한 조합. 여기에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[00156] 여기에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 각각 컴퓨터 판독 가능 스토리지 매체로부터 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드될 수 있다. 상기 통신망(네트워크)은 구리 전송 케이블, 광학 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 엣지 서버를 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망(네트워크)으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[00157] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 바람직한 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 특징들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[00158] 여기에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 특징들을 기술한다. 순서 예시도들 및/또는 블록도들의 각 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00159] 이 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00160] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00161] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 동작(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.
[00162] 전술한 것에 추가하여, 하나 또는 그 이상의 특징들은 컴퓨터 환경의 관리를 공급하는 서비스 제공자에 의해 제공, 공급, 배치, 관리, 서비스 등이 될 수 있다. 예를 들면, 서비스 제공자는 하나 또는 그 이상의 고객들을 위해 하나 또는 그 이상의 특징들을 수행하는 컴퓨터 코드 및/또는 컴퓨터 인프라스트럭처의 제작, 유지, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는 가입제(subscription) 및/또는 수수료 약정에 따라 고객으로부터 대금을 수령할 수 있으며, 이는 예이다. 또한, 서비스 제공자는 하나 또는 그 이상의 제3자들에게 광고 콘텐츠를 판매하고 대금을 수령할 수 있다.
[00163] 한 특징으로, 하나 또는 그 이상의 실시 예들을 수행하기 위한 애플리케이션이 배치될 수 있다. 한 예로서, 애플리케이션의 배치는 하나 또는 그 이상의 실시 예들을 수행하는 데 실시 가능한 컴퓨터 인프라스트럭처를 제공하는 것을 포함한다.
[00164] 추가 특징으로서, 컴퓨터 판독 가능 코드를 컴퓨팅 시스템으로 통합하는 것을 포함하는 컴퓨팅 인프라스트럭처가 배치될 수 있으며, 그 컴퓨팅 시스템에서 상기 코드는 상기 컴퓨팅 시스템과 결합하여 하나 또는 그 이상의 실시 예들을 수행하는 것이 가능하다.
[00165] 추가 특징으로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템으로 통합시키는 것을 포함하는 컴퓨팅 인프라스트럭처 통합을 위한 프로세스가 제공될 수 있다. 상기 컴퓨터 시스템은 컴퓨터 판독 가능 매체를 포함하고, 상기 컴퓨터 시스템에서 상기 컴퓨터 매체는 하나 또는 그 이상의 실시 예들을 포함한다. 상기 코드는 상기 컴퓨터 시스템과 결합하여 하나 또는 그 이상의 실시 예들을 수행하는 것이 가능하다.
[00166] 위에서 다양한 실시 예들이 기술되었지만, 이들은 단지 예시일 뿐이다. 예를 들면, 다른 아키텍처들로 된 컴퓨팅 환경들이 하나 또는 그 이상의 실시 예들을 포함하고 사용하는 데 사용될 수 있다. 또한, 다른(different) 명령들, 명령 포맷들, 명령 필드들 및/또는 명령 값들이 사용될 수 있다. 또한, 다른 유형의 프로세스들, 연산들 및/또는 동작들이 CAM 설치에 의해서 영향을 받을 수도 있다. 많은 변형 예들이 가능하다.
[00167] 또한, 다른 유형의 컴퓨팅 환경들도 유익을 얻을 수 있고 사용될 수 있다. 예로서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용될 수 있으며, 이 시스템은 시스템 버스를 통해서 메모리 엘리먼트들에 직접적으로 또는 간접적으로 결합된 적어도 두 개의 프로세서를 포함한다. 상기 메모리 엘리먼트들은, 예를 들어 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 대용량 스토리지(bulk storage), 및 코드가 실행 동안에 대용량 스토리지로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장(temporary storage)을 제공하는 캐시 메모리를 포함한다.
[00168] 입력/출력 또는 I/O 디바이스들(키보드, 디스플레이, 포인팅 디바이스, DASD, 테이프, CD, DVD, 썸 드라이브 및 기타 메모리 매체 등을 포함하나 이에 한정되지는 않음)은 직접 또는 중개(intervening) I/O 컨트롤러들을 통해서 상기 시스템에 결합될 수 있다. 네트워크 어댑터 또한 상기 시스템에 결합되어 상기 데이터 처리 시스템이 중개하는 사설 또는 공공 네트워크를 통해서 기타 데이터 처리 시스템 또는 원격 포인터 또는 스토리지 디바이스에 결합되는 것을 가능하게 한다. 모뎀, 케이블 모뎀, 및 이더넷 카드는 이용 가능한 네트워크 어댑터의 단지 일부 예이다.
[00169] 도 14를 참조하면, 하나 또는 그 이상의 바람직한 실시 예들을 구현하기 위한 호스트 컴퓨터 시스템(5000)의 대표적인 컴포넌트들이 도시된다. 대표적인 호스트 컴퓨터(5000)는 컴퓨터 메모리(즉, 중앙 스토리지)(5002)와 통신하는 하나 또는 그 이상의 CPU들(5001)을 포함하고, 또한 스토리지 매체 디바이스들(5011)로 그리고 다른 컴퓨터들 또는 SAN들 등과 통신하기 위한 네트워크들(5010)로 가는 I/O 인터페이스들을 포함한다. CPU(5001)는 아키텍처화된 명령 세트((architected instruction set)와 아키텍처화된 기능(architected functionality)을 갖는 아키텍처에 부합한다. CPU(5001)는 액세스 레지스터 변환(ART)(5012)을 가질 수 있으며, 이것은 프로그램 주소들(가상 주소들)을 메모리의 실제 주소들로 변환하는 동적 주소 변환(DAT)(5003)에 의해 사용될 주소 공간을 선택하기 위한 ART 색인 버퍼(ALB)(5013)를 포함한다. DAT는 통상적으로 컴퓨터 메모리(5002)의 블록에 나중에 액세스할 때 주소 변환의 지연이 필요 없도록 변환들을 캐시하기 위한 변환 색인 버퍼(TLB, translation lookaside buffer)(5007)를 포함한다. 통상적으로, 캐시(5009)는 컴퓨터 메모리(5002)와 프로세서(5001) 사이에서 사용된다. 캐시(5009)는 하나 이상의 CPU가 이용 가능한 큰 캐시(large cache)와 그 큰 캐시와 각 CPU 사이에 있는 더 작고 더 빠른 (더 하위 레벨) 캐시들을 갖는 계층형(hierarchical)일 수 있다. 어떤 구현들에서는, 더 하위 레벨(lower level) 캐시들은 명령 페치와 데이터 액세스를 위한 분리된(separate) 하위 레벨 캐시들을 제공하기 위해 분할된다.
[00170] 한 실시 예에서, 한 명령이 명령 페치 유닛(5004)에 의해 캐시(5009)를 통해서 메모리(5002)로부터 페치된다. 명령은 명령 디코드 유닛(instruction decode unit)(5006)에서 디코드되고 (어떤 바람직한 실시 예들에서는 다른 명령들과 함께) 명령 실행 유닛 또는 유닛들(5008)로 디스패치된다(dispatched). 통상적으로 몇 가지의 실행 유닛들(5008)이 채용되며, 예를 들면 산술 실행 유닛(arithmetic execution unit), 부동 소수점 실행 유닛(floating point execution unit) 및 분기 명령 실행 유닛(branch instruction execution unit)이 있다. 명령은 실행 유닛에 의해 실행되고, 명령이 명시한 레지스터들 또는 메모리로부터 필요한 만큼 오퍼랜드들에 액세스한다. 만일 오퍼랜드가 메모리(5002)로부터 액세스(로드 또는 저장)되면, 로드/저장 유닛(load/store unit)(5005)이 통상적으로 실행되는 명령의 제어에 따라 액세스를 처리한다. 명령들은 하드웨어 회로들에서 또는 내부 마이크로코드(펌웨어)에서 또는 이 둘의 조합에 의해서 실행될 수 있다.
[00171] 전술한 바와 같이, 컴퓨터 시스템은 로컬 (또는 메인) 스토리지에 정보를 포함하고, 또한 주소지정(addressing), 보호(protection), 그리고 참조 및 변경 기록(reference and change recording)을 포함한다. 주소지정의 몇 가지 예로는 주소의 형식(format of addresses), 주소 공간의 개념(concept of address spaces), 주소의 여러 유형(various types of addresses), 및 한 유형의 주소가 또 다른 유형의 주소로 변환되는 방식(manner)이 있다. 메인 스토리지의 일부는 영구적으로 할당된 스토리지 위치들을 포함한다. 메인 스토리지는 시스템에 데이터의 직접 주소지정 가능한 고속 액세스 스토리지(fast-access storage)를 제공한다. 데이터와 프로그램들은 모두 (입력 디바이스들로부터) 메인 스토리지로 로드된 후에 처리될 수 있다.
[00172] 메인 스토리지는 때때로 캐시라고 불리는 하나 또는 그 이상의 더 작고 더 고속의 액세스 버퍼 스토리지들을 포함한다. 캐시는 통상적으로 CPU 또는 I/O 프로세서와 물리적으로 연관된다. 구별되는(distinct) 스토리지 매체의 물리적 구축과 사용의 영향들은, 수행 중인 경우를 제외하고는, 일반적으로 프로그램에 의해 관찰되지 않는다.
[00173] 명령들 용과 데이터 오퍼랜드들 용으로 분리된 캐시들이 유지될 수 있다. 캐시 내의 정보는 캐시 블록(cache block) 또는 캐시 라인(또는 줄여서 라인)이라 불리는 인테그럴 경계(integral boundary) 상의 인접 바이트들에 보존된다. 어떤 모델은 캐시 라인의 사이즈를 바이트로 회신하는 EXTRACT CACHE ATTRIBUTE 명령을 제공할 수 있다. 어떤 모델은 또한 스토리지를 데이터 또는 명령 캐시로의 프리페치(prefetch) 또는 캐시로부터 데이터의 해제를 실현하는 PREFETCH DATA 명령과 PREFETCH DATA RELATIVE LONG 명령을 제공할 수 있다.
[00174] 스토리지는 비트들의 긴 수평의 열(a long horizontal string of bits)로 보여진다. 대부분의 연산들에 있어서, 스토리지에 대한 액세스는 좌측-에서-우측(left-to-right) 순서로 진행된다. 비트들의 문자열(string)은 8비트의 유닛들로 세분된다. 8-비트 단위를 바이트(byte)라 부르고, 이것은 모든 정보 포맷들의 기본적인 빌딩 블록(building block)이다. 스토리지에서 각 바이트 위치는 음이 아닌 고유한 정수로 식별되고, 이것은 그 바이트 위치의 주소, 또는, 간단히 말해서 바이트 주소(byte address)이다. 인접 바이트 위치들은 좌측의 0부터 시작해서 좌측-에서-우측 순서로 진행되는 연속되는 주소들이다. 주소들은 무부호 2진 정수들이며 24, 31, 또는 64비트이다.
[00175] 정보는 스토리지와 CPU 또는 채널 서브시스템 사이에서, 1 바이트 또는 바이트들의 그룹으로, 한 번에 전송된다. 달리 명시되지 않는 한, 예를 들어, z/Architecture에서, 스토리지 내 바이트들의 그룹은 그 그룹의 최 좌측 바이트에 의해 주소지정 된다. 그룹 내 바이트의 수는 수행될 연산에 의해 암시되거나 분명하게 명시된다. CPU 연산에서 사용될 때, 바이트들의 그룹은 필드(field)라 불린다. 각 바이트들의 그룹 내에서, 예를 들어, z/Architecture에서, 비트들은 좌측-에서-우측 순으로 번호가 붙는다. z/Architecture에서, 제일 좌측 비트들은 때때로 "상위(high-order)" 비트들로 불리고 제일 우측 비트들은 "하위(low-order)" 비트들로 불린다. 그러나 비트 번호는 스토리지 주소가 아니다. 바이트만 주소지정 될 수 있다. 스토리지 내 한 바이트의 개별 비트들에서 연산하기 위해서는, 전체 바이트가 액세스된다. 한 바이트 내 비트들은 (예를 들어, z/Architecture에서) 0에서 7까지, 좌측에서 우측으로 번호가 붙는다. 한 주소 내 비트들은 24-비트 주소에서는 8-31 또는 40-63으로, 또는 31-비트 주소에서는 1-31 또는 33-63으로 번호가 붙을 수 있고; 64-비트 주소에서는 0-63으로 번호가 붙는다. 한 예에서, 비트들 8-31과 1-31은 32 비트 넓이인 위치(예를 들어, 레지스터)에 있는 주소들에 적용되고, 비트들 40-63과 33-63은 64 비트 넓이 위치에 있는 주소들에 적용된다. 다른 고정-길이 포맷의 다수 바이트들 내에서, 그 포맷을 이루는 비트들은 0부터 시작해서 연속적으로 번호가 붙는다. 에러 검출의 목적을 위해서, 그리고 바람직하게는 교정을 위해서, 하나 또는 그 이상의 체크 비트들이 각 바이트와 또는 바이트들의 그룹과 함께 전송된다. 이러한 체크 비트들은 머신에 의해 자동적으로 생성되며 프로그램에 의해 직접적으로 제어될 수 없다. 스토리지 용량은 바이트 수로 표시된다. 스토리지-오퍼랜드 필드의 길이가 명령의 연산 코드에 의해 암시될 때, 그 필드는 고정 길이(fixed length)를 가졌다고 말하며, 그 길이는 1, 2, 4, 8, 또는 16 바이트일 수 있다. 어떤 명령들에는 더 큰 필드들이 암시될 수 있다. 스토리지-오퍼랜드 필드의 길이가 암시되지 않고 분명하게 언급될 때, 그 필드는 가변 길이(variable length)를 가졌다고 말한다. 가변-길이 오퍼랜드는 길이가 1 바이트의 증분들 만큼씩 (또는 어떤 명령들에서는, 2 바이트의 배수로 또는 다른 배수들로) 변할 수 있다. 정보가 스토리지에 배치될 때, 비록 스토리지에 대한 물리적 경로의 폭이 저장되는 필드의 길이보다 더 클 수 있을지라도, 단지 그 지정된 필드에 포함된 그 바이트 위치들의 컨텐츠만 대체된다.
[00176] 정보의 특정 유닛들(units)은 스토리지에서 인테그럴 경계(integral boundary) 상에 있어야 한다. 경계(boundary)는 그 스토리지 주소가 그 유닛의 길이의 바이트 배수일 때 정보의 유닛에 대해서 인테그럴(integral)하다고 불린다. 인테그럴 경계 상의 2, 4, 8, 16 및 32 바이트의 필드들에는 특별한 명칭들이 주어진다. 하프워드(halfword)는 2-바이트 경계 상의 2개의 연속 바이트들의 그룹이고 명령들의 기본 빌딩 블록이다. 워드(word)는 4-바이트 경계 상의 4개의 연속 바이트들의 그룹이다. 더블워드(doubleword)는 8-바이트 경계 상의 8개의 연속 바이트들의 그룹이다. 쿼드워드(quadword)는 16-바이트 경계 상의 16개의 연속 바이트들의 그룹이다. 옥토워드(octoword)는 32-바이트 경계 상의 32개의 연속 바이트들의 그룹이다. 스토리지 주소들이 하프워드, 워드, 더블워드, 쿼드워드, 및 옥토워드를 지정할 때, 그 주소의 2진 표시는 1개, 2개, 3개, 4개, 또는 5개의 제일 우측 제로(zero)비트들을 각각 포함한다. 명령들은 2-바이트 인테그럴 경계들 상에 있어야 한다. 대부분의 명령들의 스토리지 오퍼랜드들은 경계-정렬(boundary-alignment) 요건들을 갖지 않는다.
[00177] 명령들과 데이터 오퍼랜드들에 대한 분리된 캐시들을 구현하는 디바이스들 상에서, 만일 프로그램이 어떤 캐시 라인에 저장되고 그 캐시 라인으로부터 명령들이 후속적으로 페치되면, 그 저장이 후속적으로 페치되는 명령들을 변경하는지 여부와 상관 없이, 상당한 지연을 겪게 될 것이다.
[00178] 한 예에서, 실시 예는 소프트웨어로 실시될 수 있다(이 소프트웨어는 때때로 라이센스된 내부 코드, 펌웨어, 마이크로-코드, 밀리-코드, 피코-코드 등으로 불리며, 이들 중 어떤 것이든 하나 또는 그 이상의 바람직한 실시 예들에 부합할 것이다). 도 14를 참조하면, 하나 또는 그 이상의 특징들을 구현하는 소프트웨어 프로그램 코드는 CD-ROM 드라이브, 테이프 드라이브 또는 하드 드라이브와 같은 장기 스토리지(long-term storage) 매체 디바이스들(5011)로부터 호스트 시스템(5000)의 프로세서(5001)에 의해 액세스된다. 소프트웨어 프로그램 코드는 디스켓, 하드 드라이브, 또는 CD-ROM과 같은 데이터 처리 시스템에 사용할 용도로 알려진 여러 가지 매체들 중 어느 하나에 구현될 수 있다. 코드는 그러한 매체상에 배포되거나, 또는 사용자들에게 배포될 수 있는데, 한 컴퓨터 시스템의 컴퓨터 메모리(5002)로부터 또는 네트워크(5010)를 통해서 한 컴퓨터 시스템의 스토리지로부터 다른 컴퓨터 시스템들로, 그러한 다른 시스템들의 사용자에 의해 사용될 용도로 배포될 수 있다.
[00179] 소프트웨어 프로그램 코드는 여러 가지 컴퓨터 컴포넌트들의 기능과 상호작용(interaction) 및 하나 또는 그 이상의 애플리케이션 프로그램들을 제어하는 운영체제를 포함한다. 프로그램 코드는 보통으로 스토리지 매체 디바이스(5011)로부터 상대적으로 더 고속의 컴퓨터 스토리지(5002)―이것은 프로세서(5001)에 의한 처리에 이용 가능함―로 페이지된다. 메모리 내 소프트웨어 프로그램 코드를 물리적 매체상에 구현하는 기술과 방법, 및/또는 네트워크들을 통해서 소프트웨어 코드를 배포하는 기술과 방법은 잘 알려져 있으며 여기에서는 더 논의하지 않을 것이다. 프로그램 코드는, 유형의 매체(전자 메모리 모듈들(RAM), 플래시 메모리, 컴팩트 디스크들(CDs), 디브디들(DVDs), 자기 테이프 등을 포함하나, 이러한 것들로 한정되지 않음)상에 생성되고 저장될 때, 흔히 "컴퓨터 프로그램 제품"으로 불린다. 컴퓨터 프로그램 제품 매체는 통상적으로 처리 회로에 의해 판독 가능하며, 컴퓨터 시스템에서 처리 회로에 의해 실행하기 위해 판독 가능한 것이 바람직하다.
[00180] 도 15는 하나 또는 그 이상의 바람직한 실시 예들이 실시될 수 있는 대표적인 워크스테이션 또는 서버 하드웨어 시스템을 예시한다. 도 15의 시스템(5020)은 선택적인 주변 디바이스들을 포함하여, 개인용 컴퓨터, 워크스테이션 또는 서버 같은 대표적인 베이스 컴퓨터 시스템(5021)을 포함한다. 베이스 컴퓨터 시스템(5021)은 하나 또는 그 이상의 프로세서들(5026)과 버스를 포함하며, 버스는 알려진 기술들에 따라 프로세서(들)(5026)와 시스템(5021)의 다른 컴포넌트들 사이를 연결하여 통신을 가능하게 하기 위해 채용되는 것이다. 버스는 프로세서(5026)를 메모리(5025)와 장기 스토리지(5027)에 연결하며 장기 스토리지는, 예를 들어, 하드 드라이브(예를 들어, 자기 매체, CD, DVD 및 플래시 메모리를 포함함) 또는 테이프 드라이브를 포함할 수 있다. 시스템(5021)은 또한 사용자 인터페이스 어댑터를 포함할 수 있으며, 이 사용자 인터페이스 어댑터는 마이크로프로세서(5026)를 버스를 통해서 키보드(5024), 마우스(5023), 프린터/스캐너(5030) 및/또는 기타 인터페이스 디바이스들과 같은 하나 또는 그 이상의 인터페이스 디바이스들에 연결하며, 상기 기타 인터페이스 디바이스들은 터치 감응식 스크린(touch sensitive screen), 디지털 입력 패드(digitized entry pad) 등과 같은 사용자 인터페이스 디바이스일 수 있다. 버스는 또한 LCD 스크린 또는 모니터와 같은 디스플레이 디바이스(5022)를 디스플레이 어댑터를 통해서 마이크로프로세서(5026)에 연결한다.
[00181] 시스템(5021)은 네트워크(5029)와 통신(5028)이 가능한 네트워크 어댑터를 경유하여 다른 컴퓨터들 또는 컴퓨터들의 네트워크들과 통신할 수 있다. 네트워크 어댑터들의 예로는 통신 채널(communications channels), 토큰 링(token ring), 이더넷(Ethernet) 또는 모뎀(modems)이 있다. 이와는 달리, 시스템(5021)은 CDPD(cellular digital packet data) 카드 같은 무선 인터페이스를 사용하여 통신할 수 있다. 시스템(5021)은 근거리 통신망(LAN) 또는 광역 통신망(WAN)에서 다른 컴퓨터들과 연관될 수 있고, 또는 시스템(5021)은 또 다른 컴퓨터와 클라이언트/서버 배열방식(arrangement)에서 클라이언트가 될 수 있다. 이들 모든 구성들과 적절한 통신 하드웨어 및 소프트웨어는 이 기술분야에서 알려져 있다.
[00182] 도 16은 하나 또는 그 이상의 바람직한 실시 예들이 실시될 수 있는 데이터 처리 네트워크(5040)를 예시한다. 데이터 처리 네트워크(5040)는 무선 네트워크와 유선 네트워크 같은 복수의 개별 네트워크들을 포함할 수 있으며, 이들의 각각은 복수의 개별 워크스테이션들(5041, 5042, 5043, 5044)을 포함할 수 있다. 또한, 이 기술분야에서 통상의 지식을 가진 자들은 인식할 수 있는 바와 같이, 하나 또는 그 이상의 LAN들이 포함될 수 있으며, 여기에서 LAN은 호스트 프로세서에 결합된 복수의 지능형(intelligent) 워크스테이션들을 포함할 수 있다.
[00183] 계속해서 도 16을 참조하면, 네트워크들은 또한 게이트웨이 컴퓨터(클라이언트 서버 5046) 또는 애플리케이션 서버(데이터 저장소를 액세스할 수 있고 또한 워크스테이션 5045로부터 직접 액세스될 수 있는 원격 서버 5048)와 같은 메인프레임 컴퓨터들 또는 서버들을 포함할 수 있다. 게이트웨이 컴퓨터(5046)는 각 개별 네트워크로의 진입점(a point of entry) 역할을 한다. 게이트웨이는 하나의 네트워킹 프로토콜을 또 하나의 네트워킹 프로토콜에 연결할 때 필요하다. 게이트웨이(5046)는 바람직하게는 통신 링크를 통해 또 하나의 네트워크(예를 들면 인터넷 5047)에 결합될 수 있다. 게이트웨이(5046)는 또한 통신 링크를 사용하여 하나 또는 그 이상의 워크스테이션들(5041, 5042, 5043, 5044)에 직접 결합될 수 있다. 게이트웨이 컴퓨터는 인터내셔널 비즈니스 머신즈 코포레이션에서 입수 가능한 IBM eServer System z 서버를 활용하여 구현될 수 있다.
[00184] 도 15와 도 16을 동시에 참조하면, 하나 또는 그 이상의 특징들을 구현할 수 있는 소프트웨어 프로그래밍 코드(5031)가 시스템(5020)의 프로세서(5026)에 의해, CD-ROM 드라이브 또는 하드 드라이브와 같은, 장기 스토리지 매체(5027)로부터 액세스될 수 있다. 소프트웨어 프로그래밍 코드는 디스켓, 하드 드라이브, 또는 CD-ROM과 같은 데이터 처리 시스템과 함께 사용할 용도로 알려진 여러 가지 매체들 중 어느 하나에 구현될 수 있다. 코드는 그러한 매체상에 배포되거나, 또는 사용자들(5050, 5051)로 배포될 수 있는데, 상기 메모리로부터 또는 네트워크를 통해서 한 컴퓨터의 스토리지로부터 다른 컴퓨터 시스템들로, 그러한 다른 시스템들의 사용자에 의해 사용될 용도로 배포될 수 있다.
[00185] 이와는 달리, 프로그래밍 코드는 메모리(5025)에 구현되고, 프로세서 버스를 사용하여 프로세서(5026)에 의해 액세스될 수 있다. 이러한 프로그래밍 코드는 여러 가지 컴퓨터 컴포넌트들의 기능과 상호작용 및 하나 또는 그 이상의 애플리케이션 프로그램들(5032)을 제어하는 운영체제를 포함한다. 프로그램 코드는 보통으로 스토리지 매체(5027)로부터 고속의 메모리(5025)―이것은 프로세서(5026)에 의한 처리에 이용 가능함―로 페이지된다. 메모리 내 소프트웨어 프로그래밍 코드를 물리적 매체상에 구현하는 기술과 방법, 및/또는 네트워크들을 통해서 소프트웨어 코드를 배포하는 기술과 방법은 잘 알려져 있으며 여기에서는 더 논의하지 않을 것이다. 프로그램 코드는, 유형의 매체(전자 메모리 모듈들(RAM), 플래시 메모리, 컴팩트 디스크들(CDs), 디브이디들(DVDs), 자기 테이프 등을 포함하나, 이러한 것들로 한정되지 않음)상에 생성되고 저장될 때, 흔히 "컴퓨터 프로그램 제품"으로 불린다. 컴퓨터 프로그램 제품 매체는 통상적으로 처리 회로에 의해 판독 가능하며, 컴퓨터 시스템에서 처리 회로에 의해 실행하기 위해 판독 가능한 것이 바람직하다.
[00186] 프로세서가 가장 쉽게 이용 가능한 캐시(보통으로 프로세서의 다른 캐시들보다 더 빠르고 더 작음)는 가장 낮은 (L1 또는 레벨 1) 캐시이고 메인 저장소(메인 메모리)는 가장 높은 레벨의 캐시(만일 3개의 레벨이 있다면 L3)이다. 가장 낮은 레벨의 캐시는 흔히 실행될 머신 명령들을 보유하는 명령 캐시(I-캐시)와 데이터 오퍼랜드들을 보유하는 데이터 캐시(D-캐시)로 나뉜다.
[00187] 도 17을 참조하면, 예시적인 프로세서 실시 예가 프로세서(5026)에 대해 도시된다. 프로세서 성능을 향상시키기 위해서 메모리 블록들을 버퍼하기 위해 통상적으로 하나 또는 그 이상의 캐시(5053) 수준들이 채용된다. 캐시(5053)는 사용될 가능성이 있는 메모리 데이터의 캐시 라인들을 보유하는 고속 버퍼이다. 통상적인 캐시 라인들은 64, 128 또는 256 바이트의 메모리 데이터이다. 분리된 캐시들은 흔히 데이터를 캐시하기 위해서보다는 명령들을 캐시하기 위해 채용된다. 이 기술분야에서 잘 알려진 "스누프(snoop)" 알고리즘들에 의해 캐시 일관성(cache coherence)(메모리 내 라인들의 사본들과 캐시들의 동기화(synchronization))이 종종 제공된다. 프로세서 시스템의 메인 메모리 스토리지(5025)는 종종 캐시로 불린다. 4개 레벨의 캐시(5053)를 가진 프로세서 시스템에서, 메인 스토리지(5025)는 때로 레벨 5(L5) 캐시로 불리는데, 왜냐하면 그것은 통상적으로 더 빠르며 컴퓨터 시스템이 이용 가능한 비휘발성 스토리지(DASD, 테이프 등)의 일부분만을 보유하기 때문이다. 메인 스토리지(5025)는 운영체제에 의해 메인 스토리지(5025)의 안팎으로(in and out of) 페이지되는 데이터의 페이지들을 "캐시"한다.
[00188] 프로그램 카운터(명령 카운터)(5061)는 실행될 현재 명령의 주소를 추적한다. z/Architecture 프로세서 내 프로그램 카운터는 64 비트이고 이전의 주소지정 한계(addressing limits)를 지원하기 위해 31 비트 또는 24 비트로 잘려질 수 있다. 프로그램 카운터는 통상적으로 컴퓨터의 PSW(프로그램 상태 워드)에 구현되어, 그것이 컨텍스트 전환(context switching) 동안 지속되도록 한다. 그리하여, 프로그램 카운터 값을 갖는 진행중인 프로그램은, 예를 들어, 운영체제에 의해 인터럽트될 수 있다(프로그램 환경에서 운영체제 환경으로 컨텍스트 전환). 프로그램이 활성이 아닐 때, 프로그램의 PSW는 프로그램 카운터 값을 유지하고, 운영체제가 실행 중일 때 운영체제의 (PSW 내) 프로그램 카운터가 사용된다. 통상적으로, 프로그램 카운터는 현재 명령의 바이트 수와 동일한 양으로 증분된다. 감소된 명령 세트 컴퓨팅(Reduced Instruction Set Computing, RISC) 명령들은 통상적으로 고정 길이이고, 한편 콤플렉스 명령 세트 컴퓨팅(Complex Instruction Set Computing, CISC) 명령들은 통상적으로 가변 길이이다. IBM z/Architecture의 명령들은 2, 4 또는 6 바이트의 길이를 갖는 CISC 명령들이다. IBM Power ISA의 명령들은 4 바이트의 길이를 갖는 RISC 명령들이다. 프로그램 카운터(5061)는, 예를 들어, 분기 명령의 분기 채택 연산(branch taken operation) 또는 컨텍스트 전환 연산에 의해 변경된다. 컨텍스트 전환 연산에서, 현재의 프로그램 카운터 값은 실행되고 있는 프로그램에 관한 상태 정보(예를 들어, 조건 코드들과 같은 것)와 함께 프로그램 상태 워드에 세이브되고(saved), 실행될 새로운 프로그램 모듈의 명령을 가리키는 새로운 프로그램 카운터 값이 로드된다. 프로그램 카운터(5061) 내에 분기 명령의 결과를 로딩함으로써 프로그램이 결정을 내리거나 그 프로그램 내에서 루프를 돌도록 허용하기 위해, 분기 채택 연산(branch taken operation)이 수행된다.
[00189] 통상적으로 프로세서(5026)를 대신하여 명령들을 페치하기 위해 명령 페치 유닛(5055)이 채용된다. 페치 유닛은 "다음 순차의 명령들"이나, 분기 채택 명령들의 타겟 명령들, 또는 컨텍스트 전환에 뒤이은 프로그램의 첫 번째 명령들을 페치한다. 현대 명령 페치 유닛들(modern Instruction fetch units)은 프리페치된(prefetched) 명령들이 사용될 수 있는 가능성에 기초하여 추론적으로 명령들을 프리페치하는 프리페치 기술들을 종종 채용한다. 예를 들어, 페치 유닛은 16 바이트의 명령―이는 그 다음 순차 명령 및 그 이후 순차 명령들의 추가 바이트들을 포함함―을 페치할 수 있다.
[00190] 그런 다음, 페치된 명령들이 프로세서(5026)에 의해 실행된다. 한 실시 예에서, 페치된 명령(들)은 페치 유닛의 디스패치 유닛(5056)으로 보내진다. 디스패치 유닛이 그 명령(들)을 디코드하고, 디코드된 명령(들)에 관한 정보를 적절한 유닛들(5057, 5058, 5060)로 전달한다. 실행 유닛(5057)이 통상적으로 명령 페치 유닛(5055)으로부터 디코드된 산술 명령들(arithmetic instructions)에 관한 정보를 수신할 것이고, 그 명령의 오피코드(opcode)에 따라 오퍼랜드들에 대한 산술 연산들(arithmetic operations)을 수행할 것이다. 오퍼랜드들이 바람직하게는, 메모리(5025), 아키텍처화된 레지스터들(5059)로부터 또는 실행되고 있는 명령의 즉시 필드(immediate field)로부터 실행 유닛(5057)에 제공된다. 저장될 때, 실행의 결과들이 메모리(5025)나, 레지스터들(5059)에 또는 다른 머신 하드웨어(예를 들어, 제어 레지스터들, PSW 레지스터들 및 그와 유사한 것)에 저장된다.
[00191] 가상 주소들은 동적 주소 변환(5062)을 이용하여, 선택적으로, 액세스 레지스터 변환(5063)을 이용하여 실제 주소들로 변환된다.
[00192] 통상적으로 프로세서(5026)는 명령의 기능을 실행하기 위한 하나 또는 그 이상의 유닛들(5057, 5058, 5060)을 갖는다. 도 18a를 참조하면, 실행 유닛(5057)은 인터페이싱 로직(5071)을 거쳐서 아키텍처화된 범용 레지스터들(5059), 디코드/디스패치 유닛(5056), 로드 스토어 유닛(5060), 및 기타(5065) 프로세서 유닛들과 통신할 수 있다(5071). 실행 유닛(5057)은, 산술 논리 유닛(arithmetic logic unit, ALU)(5066)이 연산할 정보를 보유하기 위해 몇몇의 레지스터 회로들(5067, 5068, 5069)을 채용할 수 있다. ALU는 논리곱(AND), 논리합(OR) 및 배타논리합(XOR), 로테이트(rotate) 및 시프트(shift)와 같은 논리 함수뿐만이 아니라 더하기, 빼기, 곱하기 및 나누기와 같은 산술 연산들도 수행한다. 바람직하게는, ALU는 설계에 종속적인 특수 연산들을 지원한다. 다른 회로들은, 예를 들어, 조건 코드들 및 복구 지원 로직을 포함하는 다른 아키텍처화된 퍼실리티들(5072)을 제공할 수 있다. 통상적으로, ALU 동작의 결과는 출력 레지스터 회로(5070)에 보유(hold)되고, 이 출력 레지스터 회로(5070)는 여러 가지 다른 처리 기능들에 그 결과를 전달할 수 있다. 프로세서 유닛들의 배열방식(arrangements)은 다양하며, 본 설명은 본 발명의 한 실시 예에 관한 대표적인 이해를 제공하려는 의도일 뿐이다.
[00193] 예를 들어, ADD 명령은 산술 및 논리 기능을 갖는 실행 유닛(5057)에서 실행될 것이고, 한편 예를 들어 부동 소수점 명령은 특수한 부동 소수점 능력을 갖는 부동 소수점 실행에서 실행될 것이다. 바람직하게는, 실행 유닛은 오퍼랜드들에 관한 오피코드 정의 기능(opcode defined function)을 수행함으로써 명령에 의해 식별된 오퍼랜드들에 관해 연산한다. 예를 들어, ADD 명령은 그 명령의 레지스터 필드들에 의해 식별되는 두 개의 레지스터들(5059)에서 발견되는 오퍼랜드들에 관해 실행 유닛(5057)에 의해 실행될 수 있다.
[00194] 실행 유닛(5057)은 두 개의 오퍼랜드들에 관해 산술 덧셈(arithmetic addition)을 수행하고 그 결과를 제3 오퍼랜드에 저장하며, 여기서, 제3 오퍼랜드는 제3 레지스터 또는 두 개의 소스 레지스터들 중 하나일 수 있다. 바람직하게는, 실행 유닛은 산술 논리 유닛(ALU)(5066)을 이용하며 이 ALU(5066)는 더하기, 빼기, 곱하기, 나누기 중 어느 것이든지 포함하는 여러 가지 대수 함수들(algebraic functions) 뿐만이 아니라 시프트(Shift), 로테이트(Rotate), 논리곱(And), 논리합(Or) 및 배타논리합(XOR)과 같은 여러 가지 논리 함수들을 수행할 수 있다. 일부 ALU들(5066)은 스칼라 연산들을 위해 설계되며 일부는 부동 소수점을 위해 설계된다. 데이터는 아키텍처에 따라 빅 엔디언(Big Endian)(여기서 최하위 바이트(least significant byte)는 가장 높은 바이트 주소에 있음) 또는 리틀 엔디언(Little Endian)(여기서 최하위 바이트는 가장 낮은 바이트 주소에 있음)일 수 있다. IBM z/Architecture는 빅 엔디언이다. 부호화된 필드들(signed fields)은 아키텍처에 따라, 부호(sign) 및 크기(magnitude), 1의 보수 또는 2의 보수일 수 있다. 2의 보수에서 음의 값 또는 양의 값은 단지 ALU 내에서 덧셈만을 필요로 하므로, ALU가 뺄셈 능력을 설계할 필요가 없다는 점에서 2의 보수가 유리하다. 숫자들은 일반적으로 속기(shorthand)로 기술되는데, 12 비트 필드는 예를 들어, 4,096 바이트 블록의 주소를 정의하고 일반적으로 4 Kbyte(Kilobyte) 블록으로 기술된다.
[00195] 도 18b를 참조하면, 분기 명령을 실행하기 위한 분기 명령 정보는 통상적으로 분기 유닛(5058)으로 보내지는데, 이 분기 유닛(5058)은 다른 조건부 연산들(conditional operations)이 완료되기 전에 그 분기의 결과를 예측하도록 분기 이력 테이블(5082)과 같은 분기 예측 알고리즘을 흔히 채용한다. 현재 분기 명령의 타겟은, 그 조건부 연산들이 완료되기 전에 페치되고 추론적으로 실행될 것이다. 조건부 연산들이 완료될 때, 추론적으로 실행된 분기 명령들은 조건부 연산 및 추론된 결과의 조건들에 기초하여 완료되거나 폐기된다. 통상적인 분기 명령은, 만일 그 조건 코드들이 분기 명령의 분기 요건을 충족한다면, 조건 코드들을 테스트하고 타겟 주소로 분기할 수 있고, 타겟 주소는, 예를 들어, 레지스터 필드들 또는 그 명령의 즉시 필드에서 발견되는 수들을 포함하는 몇 개의 수들에 기초하여 계산될 수 있다. 분기 유닛(5058)은 복수의 입력 레지스터 회로들(5075, 5076, 5077) 및 출력 레지스터 회로(5080)를 갖는 ALU(5074)를 채용할 수 있다. 분기 유닛(5058)은, 예를 들어, 범용 레지스터들(5059), 디코드 디스패치 유닛(5056) 또는 기타 회로들(5073)과 통신할 수 있다(5081).
[00196] 명령들의 그룹의 실행은 여러 가지 이유들로 인터럽트될 수 있는데, 이러한 이유들에는, 예를 들어, 운영체제에 의해 개시되는 컨텍스트 전환, 컨텍스트 전환을 초래하는 프로그램 예외 또는 에러, 컨텍스트 전환 또는 (멀티-스레드 환경에서) 복수의 프로그램들의 멀티스레딩 활동을 초래하는 I/O 인터럽션 신호가 포함된다. 바람직하게는 컨텍스트 전환 액션은 현재 실행중인 프로그램에 관한 상태 정보(state information)를 세이브하고, 그런 다음 호출되는 또 다른 프로그램에 관한 상태 정보를 로드한다. 상태 정보는, 예를 들어, 하드웨어 레지스터들 또는 메모리에 저장될 수 있다. 바람직하게는, 상태 정보는 실행될 다음 명령을 가리키는 프로그램 카운터 값, 조건 코드들, 메모리 변환 정보 및 아키텍처화된 레지스터 콘텐츠를 포함한다. 컨텍스트 전환 활동은, 하드웨어 회로들, 애플리케이션 프로그램들, 운영체제 프로그램들 또는 펌웨어 코드(마이크로코드, 피코-코드 또는 라이센스된 내부 코드(LIC)) 단독으로 또는 이것들의 조합으로 실행될 수 있다.
[00197] 프로세서는 명령 정의 방법들(instruction defined methods)에 따라 오퍼랜드들에 액세스한다. 명령은 명령의 일부분의 값을 사용하는 즉시 오퍼랜드(immediate operand)를 제공할 수 있고, 범용 레지스터들 또는 특수 목적용 레지스터들(예를 들어, 부동 소수점 레지스터들)을 분명하게 가리키는 하나 또는 그 이상의 레지스터 필드들을 제공할 수 있다. 명령은 오피코드 필드에 의해 오퍼랜드들로서 식별되는 암시 레지스터들(implied registers)을 이용할 수 있다. 명령은 오퍼랜드들에 대한 메모리 위치들을 이용할 수 있다. 오퍼랜드의 메모리 위치는 레지스터, 즉시 필드(immediate field), 또는 레지스터들과 즉시 필드의 조합에 의해 제공될 수 있고, 전형적인 예로는 z/Architecture 장 변위(long displacement) 퍼실리티가 있고, 여기서 명령은 기준 레지스터(base register), 인덱스 레지스터 및 즉시 필드(변위 필드)를 정의하고 이것들은 함께 더해져서 예를 들어 메모리에서 오퍼랜드의 주소를 제공한다. 만일 다르게 표시되지 않는다면, 여기서의 위치는 통상적으로 메인 메모리(메인 스토리지) 내 위치를 암시한다.
[00198] 도 18c를 참조하면, 프로세서는 로드/저장 유닛(5060)을 사용하여 스토리지에 액세스한다. 로드/저장 유닛(5060)은 메모리(5053)에서 타겟 오퍼랜드의 주소를 획득하고 레지스터(5059) 또는 또 다른 메모리(5053) 위치에 오퍼랜드를 로딩함으로써 로드 연산을 수행할 수 있고, 또는 메모리(5053)에서 타겟 오퍼랜드의 주소를 획득하고 레지스터(5059) 또는 또 다른 메모리(5053) 위치로부터 획득된 데이터를 메모리(5053) 내 타겟 오퍼랜드 위치에 저장함으로써 저장 연산을 수행할 수 있다. 로드/저장 유닛(5060)은 추론적(speculative)일 수 있고, 명령 순서에 비해 순서가 다른(out-of-order) 순서로 메모리에 액세스할 수 있지만, 로드/저장 유닛(5060)은 명령들이 순서대로 실행된 것으로 프로그램들에 대한 외관(appearance)을 유지할 것이다. 로드/저장 유닛(5060)은 범용 레지스터들(5059), 디코드/디스패치 유닛(5056), 캐시/메모리 인터페이스(5053) 또는 기타 엘리먼트들(5083)과 통신(5084)할 수 있고, 스토리지 주소들을 계산하기 위해 그리고 순서대로 연산들을 유지하기 위한 파이프라인 시퀀싱을 제공하기 위해 여러 가지 레지스터 회로들(5086, 5087, 5088, 5089), ALU들(5085) 및 제어 논리(5090)를 포함한다. 일부 연산들은 순서가 바뀔 수 있으나, 이 기술분야에서 잘 알려진 바와 같이, 로드/저장 유닛은, 순서가 바뀐 연산들이 그 프로그램에 순서대로 수행된 것처럼 나타나도록 하는 기능을 제공한다.
[00199] 바람직하게는, 애플리케이션 프로그램이 "보는(sees)" 주소들은 흔히 가상 주소들로 불린다. 가상 주소들은 때로는 "논리적 주소들(logical addresses)" 및 "유효 주소들(effective addresses)"로 불린다. 이들 가상 주소들은 여러 가지 동적 주소 변환(DAT) 기술들 중 하나에 의해 물리적 메모리 위치로 다시 보내진다는 점에서 가상이고, 상기 여러 가지 동적 주소 변환(DAT) 기술들에는, 단순히 오프셋 값으로 가상 주소를 프리픽싱(prefixing)하는 것, 하나 또는 그 이상의 변환 테이블들을 통해 가상 주소를 변환하는 것이 포함될 수 있으나, 이러한 것들로 한정되는 것은 아니며, 바람직하게는, 변환 테이블들은 적어도 세그먼트 테이블 및 페이지 테이블만을 또는 이것들의 조합을 포함하며, 바람직하게는, 세그먼트 테이블은 페이지 테이블을 가리키는 엔트리를 갖는다. z/Architecture에서는, 변환의 계층(hierarchy of translation)이 제공되는데, 이 변환의 계층에는 영역 제1 테이블, 영역 제2 테이블, 영역 제3 테이블, 세그먼트 테이블 및 선택적인 페이지 테이블이 포함된다. 주소 변환의 수행은 흔히 변환 룩어사이드 버퍼(TLB)를 이용하여 향상되는데, 이 변환 룩어사이드 버퍼는 연관된 물리적 메모리 위치에 가상 주소를 맵핑하는 엔트리들을 포함한다. DAT가 변환 테이블들을 사용하여 가상 주소를 변환할 때, 엔트리들이 생성된다. 그런 다음, 후속적으로 가상 주소를 사용할 때 느린 연속적인 변환 테이블 액세스들보다 오히려 빠른 TLB의 엔트리를 이용할 수 있다. TLB 콘텐츠는 LRU(Least Recently used)를 포함하는 여러 가지 대체 알고리즘들에 의해 관리될 수 있다.
[00200] 프로세서가 멀티-프로세서 시스템의 프로세서인 경우, 각각의 프로세서는 I/O, 캐시들, TLB들 및 메모리와 같은 공유 리소스들(shared resources)을 일관성(coherency)을 위해 인터로크(interlock)를 유지하는 역할을 한다. 통상적으로, "스누프(snoop)" 기술들이 캐시 일관성을 유지하는 데 이용될 것이다. 스누프 환경에서, 각각의 캐시 라인은 공유를 용이하게 하기 위해, 공유 상태(shared state), 독점 상태(exclusive state), 변경된 상태(changed state), 무효 상태(invalid state) 중 어느 하나에 있는 것으로 표시될 수 있다.
[00201] I/O 유닛들(5054, 도 17)은 프로세서에 주변기기들에 연결하기 위한 수단을 제공하는데, 예를 들어, 그 주변기기에는 테이프, 디스크, 프린터, 디스플레이, 및 네트워크가 포함된다. I/O 유닛들은 흔히 소프트웨어 드라이버들에 의해 컴퓨터 프로그램에 제공된다. IBM®의 System z 같은 메인프레임들에서, 채널 어댑터들 및 오픈 시스템 어댑터들은 운영체제와 주변 디바이스들 사이의 통신을 가능하게 하는, 메인프레임의 I/O 유닛들이다.
[00202] 또한, 다른 종류의 컴퓨팅 환경들도 하나 또는 그 이상의 특징들로부터 유익을 얻을 수 있다. 한 예로, 환경(environment)은 에뮬레이터(예, 소프트웨어 또는 다른 에뮬레이션 메커니즘들)를 포함할 수 있으며, 이 에뮬레이터에서 특정 아키텍처(예를 들어, 명령 실행, 주소 변환과 같은 아키텍처화된 함수들, 및 아키텍처화된 레지스터들을 포함함) 또는 그것의 서브세트(subset)가 (예를 들어, 프로세서 및 메모리를 갖는 네이티브 컴퓨터 시스템 상에서) 에뮬레이트 된다. 이러한 환경에서, 비록 그 에뮬레이터를 실행하는 컴퓨터가 에뮬레이트될 능력들과는 다른 아키텍처를 가질 수 있지만, 에뮬레이터의 하나 또는 그 이상의 에뮬레이션 기능들은 하나 또는 그 이상의 바람직한 실시 예들을 구현할 수 있다. 한 예로서, 에뮬레이션 모드에서, 에뮬레이트될 특정 명령 또는 연산이 디코드되어, 적절한 에뮬레이션 기능이 개별 명령 또는 연산을 구현하도록 구축된다.
[00203] 에뮬레이션 환경에서, 호스트 컴퓨터는, 예를 들어, 명령들 및 데이터를 저장하는 메모리, 메모리로부터 명령들을 페치하고 그리고 선택적으로 그 페치된 명령을 위한 로컬 버퍼링을 제공하는 명령 페치 유닛, 페치된 명령들을 수신하고 페치된 명령들의 유형을 결정하는 명령 디코드 유닛, 및 명령들을 실행하는 명령 실행 유닛을 포함한다. 실행은 메모리로부터 레지스터 내에 데이터를 로딩하는 것; 레지스터로부터 메모리로 다시 데이터를 저장하는 것; 또는 디코드 유닛에 의해 결정된 바와 같이, 산술 또는 논리 연산의 몇몇 유형을 수행하는 것을 포함할 수 있다. 한 예에서, 각각의 유닛은 소프트웨어에서 구현된다. 예를 들어, 그 유닛들에 의해 수행되고 있는 연산들은 에뮬레이터 소프트웨어 내에서 하나 또는 그 이상의 서브루틴들로서 구현된다.
[00204] 더 구체적으로는, 메인프레임에서, 아키텍처화된 머신 명령들(machine instructions)이 프로그래머들, 대개는 오늘날의 "C" 프로그래머들에 의해, 흔히 컴파일러 애플리케이션(compiler application)을 통해 사용되고 있다. 스토리지 매체에 저장되는 이들 명령들은 처음부터(natively) Power Systems 또는 z/Architecture IBM® 서버에서 또는 이와는 다르게 다른 아키텍처들을 실행하는 머신들에서 실행될 수 있다. 그것들은 기존의 그리고 장래의 IBM® 메인프레임 서버들과, Power Systems 서버들에서 그리고 IBM®의 다른 머신들(예를 들어, System x 서버들) 상에서 에뮬레이트될 수 있다. 그것들은 IBM®, Intel®, AMD 및 기타 회사에 의해 제조된 하드웨어를 사용하는 광범위한 머신들 상의 리눅스를 실행하는 머신들에서 실행될 수 있다. 또한, Power Architecture 또는 z/Architecture 하의 그 하드웨어 상에서의 실행 이외에, Hercules, UMX, 또는 FSI(Fundamental Software, Inc)―여기서 일반적으로 실행은 에뮬레이션 모드에 있음―에 의해 에뮬레이션을 사용하는 머신들 뿐만이 아니라 Linux도 사용될 수 있다. 에뮬레이션 모드에서, 에뮬레이션 소프트웨어는 네이티브 프로세서에 의해 실행되어 에뮬레이트된 프로세서의 아키텍처를 에뮬레이트한다.
[00205] 네이티브 프로세서(native processor)는 통상적으로 에뮬레이트된 프로세서의 에뮬레이션을 수행하기 위해 펌웨어(firmware) 또는 네이티브 운영체제를 포함하는 에뮬레이션 소프트웨어를 실행한다. 에뮬레이션 소프트웨어는 그 에뮬레이트된 프로세서 아키텍처의 명령들을 페치 및 실행하는 역할을 한다. 에뮬레이션 소프트웨어는 명령 경계들(instruction boundaries)을 추적하기 위해 에뮬레이트된 프로그램 카운터를 유지한다. 에뮬레이션 소프트웨어는 한 번에 하나 또는 그 이상의 에뮬레이트된 머신 명령들을 페치하여, 하나 또는 그 이상의 그 에뮬레이트된 머신 명령들을 네이티브 프로세서에 의해 실행하기 위한 네이티브 머신 명령들의 대응 그룹으로 변환시킬 수 있다. 이들 변환된 명령들은 캐시되어 더 빠른 변환이 수행될 수 있도록 할 수 있다. 그럼에도 불구하고, 에뮬레이션 소프트웨어는, 운영체제들 및 에뮬레이트된 프로세서를 위해 작성된 애플리케이션들이 정확하게 연산되도록 보장하기 위해, 그 에뮬레이트된 프로세서 아키텍처의 아키텍처 규칙들을 유지해야 한다. 더 나아가, 에뮬레이션 소프트웨어는 그 에뮬레이트된 프로세서 아키텍처에 의해 식별된 자원들을 제공해야 하며―이 자원들에는 제어 레지스터들, 범용 레지스터들, 부동 소수점 레지스터들, 예를 들어 세그먼트 테이블들 및 페이지 테이블들을 포함하는 동적 주소 변환 함수, 인터럽트 메커니즘들, 컨텍스트 전환 메커니즘들, TOD(Time of Day) 클록들 및 I/O 서브시스템들에 대한 아키텍처화된 인터페이스들이 포함됨―그리하여 운영체제, 또는 에뮬레이트된 프로세서 상에서 실행되도록 지정된 애플리케이션 프로그램이, 에뮬레이션 소프트웨어를 갖는 네이티브 프로세서상에서 실행될 수 있도록 한다.
[00206] 에뮬레이트될 특정 명령이 디코드되고, 서브루틴이 개별 명령의 기능을 수행하기 위해 호출(call)된다. 에뮬레이트된 프로세서의 기능을 에뮬레이트하는 에뮬레이션 소프트웨어 기능은, 예를 들어, "C" 서브루틴 또는 드라이버, 또는 특정 하드웨어를 위해 드라이브를 제공하는 몇몇 다른 방법들로 구현되며, 이는 본 발명의 바람직한 실시 예의 설명을 이해하고 나면 이 기술 분야에서 통상의 지식을 가진 자들이 도출해 낼 수 있을 것이다. 여러 가지 소프트웨어 및 하드웨어 에뮬레이션 특허들은―예를 들어, Beausoleil 외 발명의 미국 특허증(Letters Patent) 제5,551,013호 "하드웨어 에뮬레이션을 위한 멀티프로세서(Multiprocessor for Hardware Emulation)"; Scalzi 외 발명의 미국 특허증 제6,009,261호 "타겟 프로세서 상에서 호환가능하지 않은 명령들을 에뮬레이트하기 위한 저장된 타겟 루틴들의 전처리(Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor)"; Davidian 외 발명의 미국 특허증 제5,574,873호 "게스트 명령들을 에뮬레이트하는 직접 액세스 에뮬레이션 루틴들에 대한 게스트 명령을 디코드하는 것(Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions)"; Gorishek 외 발명의 미국 특허증 제6,308,255호 "시스템에서 논-네이티브 코드를 실행할 수 있도록 하는 코프로세서 지원에 사용되는 대칭형 다중 처리 버스 및 칩셋(Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System)"; Lethin 외 발명의 미국 특허증 제6,463,582호 "아키텍처 에뮬레이션을 위한 동적 최적화 객체 코드 변환 및 동적 최적화 객체 코드 변환 방법(Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method)"; Eric Traut 발명의 미국 특허증 제5,790,825호 "호스트 명령들의 동적 리컴파일레이션을 통해 호스트 컴퓨터 상에서 게스트 명령들을 에뮬레이트하기 위한 방법(Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions)" 등이 포함되나, 이러한 것들로 한정되는 것은 아님, 이들 각각은 여기에서 그 전체가 참조로써 포함됨―이 기술 분야에서 통상의 지식을 가진 자들이 이용할 수 있는 목표 머신에 대한 다른 머신을 위해 아키텍처화된 명령 포맷의 에뮬레이션을 달성하는 알려진 여러 가지 방법들을 예시하고 있다.
[00207] 도 19에서는, 호스트 아키텍처의 호스트 컴퓨터 시스템(5000')을 에뮬레이트하는 에뮬레이트된 호스트 컴퓨터 시스템(5092)의 예가 제공된다. 에뮬레이트된 호스트 컴퓨터 시스템(5092)에서, 호스트 프로세서(CPU)(5091)는 에뮬레이트된 호스트 프로세서(또는 가상 호스트 프로세서)이고 호스트 컴퓨터(5000')의 프로세서(5091)의 네이티브 명령 세트 아키텍처(native instruction set architecture)와는 다른 네이티브 명령 세트 아키텍처를 갖는 에뮬레이션 프로세서(5093)를 포함한다. 에뮬레이트된 호스트 컴퓨터 시스템(5092)은 에뮬레이션 프로세서(5093)가 액세스 가능한 메모리(5094)를 갖는다. 본 발명의 바람직한 실시 예에서, 메모리(5094)는 호스트 컴퓨터 메모리(5096) 부분과 에뮬레이션 루틴들(5097) 부분으로 분할된다. 호스트 컴퓨터 메모리(5096)는 호스트 컴퓨터 아키텍처에 따른 에뮬레이트된 호스트 컴퓨터(5092)의 프로그램들이 이용할 수 있다. 에뮬레이션 프로세서(5093)는 에뮬레이트된 프로세서(5091)의 명령 이외의 아키텍처의 아키텍처화된 명령 세트의 네이티브 명령들, 즉 에뮬레이션 루틴들 메모리(5097)로부터 획득된 네이티브 명령들을 실행하며, 시퀀스 & 액세스/디코드 루틴―이는 액세스되는 호스트 명령의 기능을 에뮬레이트하기 위해 네이티브 명령 실행 루틴을 결정하기 위해 액세스되는 호스트 명령(들)을 디코드할 수 있음―에서 획득된 하나 또는 그 이상의 명령(들)을 채용함으로써 호스트 컴퓨터 메모리(5096) 내 프로그램으로부터 실행하기 위한 호스트 명령을 액세스할 수 있다. 호스트 컴퓨터 시스템(5000') 아키텍처에 대하여 정의된 다른 퍼실리티들이 아키텍처화된 퍼실리티들 루틴들(architected facilities routines)에 의해 에뮬레이트될 수 있는데, 이러한 것들에는, 예를 들어, 범용 레지스터들, 제어 레지스터들(control registers), 동적 주소 변환(dynamic address translation) 및 I/O 서브시스템 지원 및 프로세서 캐시 등과 같은 퍼실리티들이 포함된다. 에뮬레이션 루틴들(emulation routines)은 또한 (범용 레지스터들 및 가상 주소들의 동적 변환 같은) 에뮬레이션 프로세서(5093)에서 이용 가능한 기능들을 이용하여 에뮬레이션 루틴들의 성능을 향상시킬 수 있다. 또한 특수 하드웨어(special hardware) 및 오프-로드 엔진들(off-load engines)이 제공되어 호스트 컴퓨터(5000')의 기능을 에뮬레이팅함에 있어서 프로세서(5093)를 보조할 수 있다.
[00208] 본 발명의 다른 실시 예에서, 하나 또는 그 이상의 특징들은 클라우드 컴퓨팅과 관련이 있다. 본 발명은 클라우드 컴퓨팅에 관해 상세한 설명을 포함하고 있지만, 여기에 언급되는 원리들의 구현은 클라우드 컴퓨팅 환경에 한정되지 않는다는 것을 미리 이해할 필요가 있다. 그보다, 본 발명의 바람직한 실시 예들은 현재 알려지거나 또는 앞으로 개발되는 다른 유형의 컴퓨팅 환경들과 함께 구현될 가능성이 있다.
[00209] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 스토리지, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[00210] 특성들은 다음과 같다:
주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 능력들을 일방적으로 제공(provision)할 수 있다.
광역 네트워크 액세스(Broad network access): 네트워크를 통해서 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 휴대용 컴퓨터, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 능력들을 이용할 수 있다.
리소스 풀링(Resource pooling): 제공자의 컴퓨팅 리소스들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 리소스들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 리소스들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다.
측정 가능한 서비스(Measured service): 클라우드 시스템은 리소스 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 리소스 사용량은 모니터되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[00211] 서비스 모델들(Service Models)은 다음과 같다:
소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 디바이스들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.
플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 스토리지를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 리소스들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.
[00212] 배치 모델들(Deployment Models)은 다음과 같다:
사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[00213] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.
[00214] 이제 도 20을 참조하면, 클라우드 컴퓨팅을 예시하는 개략도가 도시된다. 클라우드 컴퓨팅 노드(6010)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 여기에 기술된 본 발명의 바람직한 실시 예들의 사용 또는 기능의 범위를 한정하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(6010)에는 여기에서 기술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.
[00215] 클라우드 컴퓨팅 노드(6010)에, 컴퓨터 시스템/서버(6012)가 위치하고, 이것은 다른 수많은 범용 또는 특수용 컴퓨팅 시스템 환경들 또는 구성들과 동작 가능하다. 컴퓨터 시스템/서버(6012)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들에는 개인용 컴퓨터 시스템, 서버 컴퓨터 시스템, 씬 클라이언트(thin clients), 씩 클라이언트(thick clients), 포켓용 또는 휴대용 디바이스(handheld or laptop devices), 다중 프로세서 시스템(multiprocessor systems), 마이크로프로세서-기반 시스템(microprocessor-based systems), 셋톱박스(set top boxes), 프로그램가능 소비자 가전(programmable consumer electronics), 네트워크 PC, 미니컴퓨터 시스템, 메인프레임 컴퓨터 시스템, 그리고 상기 시스템들 또는 디바이스들 중 어느 하나를 포함하는 분산 클라우드 컴퓨팅 환경 및 그와 유사한 것들 이 포함되나 이에 한정되지는 않는다.
[00216] 컴퓨터 시스템/서버(6012)는 컴퓨터 시스템에 의해 실행되는 프로그램 모듈들 같은 컴퓨터 시스템 실행 가능한 명령들의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈들에는 특정한 태스크들을 수행하거나 특정한 추상적인 데이터 유형들을 구현하는 루틴들(routines), 프로그램들, 객체들(objects), 컴포넌트들, 로직, 데이터 구조들 등이 포함될 수 있다. 컴퓨터 시스템/서버(6012)는 분산 클라우드 컴퓨팅 환경들에서 실시될 수 있으며, 여기서 태스크들은 통신 네트워크를 통해 연결되는 원격 처리 디바이스들에 의해 수행된다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하여 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[00217] 도 20에 도시된 바와 같이, 클라우드 컴퓨팅 노드(6010) 내 컴퓨터 시스템/서버(6012)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(6012)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 장치들(6016), 시스템 메모리(6028), 및 시스템 메모리(6028)를 프로세서(6016)에 연결하는 것을 포함하여 다양한 시스템 컴포넌트들을 연결하는 버스(6018)를 포함할 수 있으나 이에 한정되지는 않는다.
[00218] 버스(6018)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽 포트(accelerated graphics port), 및 다양한 버스 아키텍처들 중 하나를 사용하는 프로세서 또는 로컬 버스를 포함하여 하나 또는 그 이상의 다양한 유형의 버스 구조들 중 하나를 대표한다. 한정되지 않는 예로서, 그러한 아키텍처들에는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 확장 ISA(EISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함된다.
[00219] 컴퓨터 시스템/서버(6012)는 통상적으로 다양한 컴퓨터 시스템 판독가능 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(6012)에 의해 액세스될 수 있는 이용 가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 탈착 및 비탈착 매체 모두를 포함한다.
[00220] 시스템 메모리(6028)는 랜덤 액세스 메모리(RAM)(6030) 및/또는 캐시 메모리(6032) 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독가능 매체를 포함할 수 있다. 컴퓨터 시스템/서버(6012)는 다른 탈착/비탈착, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 더 포함할 수 있다. 단지 예시로서 말하면, 스토리지 시스템(6034)은 비탈착, 비휘발성 자기 매체(도시되지 않으며 통상적으로 "하드 드라이브"라 부름)에서/로 읽어오고 쓸 수 있다. 도시되지는 않지만, 탈착 가능 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터 읽어오고 그것에 쓰기 위한 자기 디스크 드라이브, 및 CD-ROM, DVD-ROM 또는 기타 광학 매체 같은 탈착 가능 비휘발성 광학 디스크로부터 읽어오고 그것에 쓰기 위한 광학 디스크가 제공될 수 있다. 이러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(6018)에 연결될 수 있다. 아래에 묘사되고 기술되는 바와 같이, 메모리(6028)는 본 발명의 실시 예들의 기능들을 실행하도록 구성된 일 세트(적어도 하나)의 프로그램 모듈들을 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[00221] 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터뿐 아니라, 일 세트(적어도 하나)의 프로그램 모듈들(6042)을 갖는, 프로그램/유틸리티(6040)는, 예로서 메모리(6028)에 저장될 수 있고, 이에 한정되지 않는다. 상기 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 몇몇 조합의 각각은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(6042)은 일반적으로 여기에 기술된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 실행한다.
[00222] 컴퓨터 시스템/서버(6012)는 또한 키보드, 포인팅 디바이스, 디스플레이(6024) 등의 하나 또는 그 이상의 외부 디바이스들(6014); 사용자가 컴퓨터 시스템/서버(6012)와 상호작용할 수 있게 해주는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(6012)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 해주는 기타 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과 통신할 수 있다. 그러한 통신은 입력/출력(I/O) 인터페이스들(6022)을 통해 일어날 수 있다. 또한, 컴퓨터 시스템/서버(6012)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 공공 네트워크(예를 들어, 인터넷) 등의 하나 또는 그 이상의 네트워크들과 네트워크 어댑터(6020)를 통해 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(6020)는 컴퓨터 시스템/서버(6012)의 다른 컴포넌트들과 버스(6018)를 통해 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들도 컴퓨터 시스템/서버(6012)와 함께 사용될 수 있다는 것을 이해해야 한다. 예들은 다음과 같으며, 이에 한정되지 않는다: 마이크로코드, 디바이스 드라이버들, 중복 처리 장치들(redundant processing units), 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들, 및 데이터 아카이브 스토리지 시스템들 등.
[00223] 이제 도 21을 참조하면, 예시적인 클라우드 컴퓨팅 환경(6050)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(6050)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(6010)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(6054A), 데스크탑 컴퓨터(6054B), 휴대용 컴퓨터(6054C), 및/또는 자동차용 컴퓨터 시스템(6054N)과 통신할 수 있다. 노드들(6010)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 디바이스 상에 리소스들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(6050)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 21에 도시된 컴퓨팅 디바이스들(6054A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(6010)과 클라우드 컴퓨팅 환경(6050)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[00224] 이제 도 22를 참조하면, 클라우드 컴퓨팅 환경(6050, 도 21)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 22에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:
하드웨어 및 소프트웨어 계층(6060)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들, 한 예로서 IBM® zSeries® 시스템들; RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들, 한 예로서 IBM pSeries® 시스템들; IBM xSeries® 시스템들; IBM BladeCenter® 시스템들; 스토리지 디바이스들; 네트워크 및 네트워킹 컴포넌트들이 포함된다. 소프트웨어 컴포넌트들의 예들에는 네트워크 애플리케이션 서버 소프트웨어, 한 예로서 IBM WebSphere® 애플리케이션 서버 소프트웨어; 및 데이터베이스 소프트웨어, 한 예로서 IBM DB2® 데이터베이스 소프트웨어가 포함된다. BM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, 및 DB2, z/OS, z/VM, z/Architecture, 및 Processor Resource/Systems Manager는 전세계 여러 국가들에 등록된 인터내셔널 비즈니스 머신즈 코포레이션의 상표들이다. 여기서 사용된 다른 이름들도 인터내셔널 비즈니스 머신즈 코포레이션 또는 다른 회사들의 등록 상표들, 상표들 또는 제품명들일 수 있다.
가상화 계층(6062)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들; 가상 스토리지; 가상 사설 네트워크를 포함하는, 가상 네트워크들; 가상 애플리케이션들 및 운영체제들; 및 가상 클라이언트들.
[00225] 한 예에서, 관리 계층(6064)은 아래에 기술하는 기능들을 제공한다. 리소스 제공(Resource provisioning)은 클라우드 컴퓨팅 환경 내에서 태스크들을 수행하는 데 이용되는 컴퓨팅 리소스들 및 기타 리소스들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)은 리소스들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 리소스들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 리소스들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 리소스들뿐 아니라 클라우드 소비자들과 태스크들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 리소스 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 계획 및 충족(planning and fulfillment)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 리소스들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[00226] 워크로드 계층(6066)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션; 소프트웨어 개발 및 라이프사이클 관리; 가상 교실 교육 전달; 데이터 분석 처리; 및 트랜잭션 처리.
[00227] 본 명세서 내에 사용되는 용어는 단지 특정 실시 예들을 기술할 목적으로 사용된 것이지 한정하려는 의도로 사용된 것은 아니다. 여기에서 사용할 때, 단수 형태는 그 컨텍스트에서 그렇지 않은 것으로 명시되어 있지 않으면, 복수 형태도 또한 포함할 의도로 기술된 것이다. 또한, "포함한다" 및/또는 "포함하는" 이라는 말들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하는 것은 아니라는 것을 이해할 수 있을 것이다.
[00228] 이하의 청구항들에서, 구조들(structures), 재료들(materials), 동작들(acts), 및 모든 수단의 등가물들 또는 단계 플러스 기능 엘리먼트들은 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 동작을 포함할 의도가 있다. 하나 또는 그 이상의 바람직한 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 많은 수정 예들 및 변형 예들이 있을 수 있다는 것을 알 수 있다. 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 가지 수정 예들을 갖는 다양한 바람직한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.

Claims (20)

  1. 컴퓨팅 환경을 재구성하기(reconfiguring) 위한 방법에 있어서, 상기 방법은: 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖는지를, 프로세서에 의해서, 결정하는 단계(determining) ― 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 포함하고 제1 세트의 지원된 특징들(a first set of supported features)을 가짐 ―;
    상기 구성 아키텍처 모드 퍼실리티가 상기 컴퓨팅 환경 내에 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경을, 상기 프로세서에 의해서, 재구성하는 단계(reconfiguring)를 포함하되, 상기 재구성하는 단계는:
    상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting) ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다르며(different), 제2 명령 세트 아키텍처(a second instruction set architecture)를 포함하고 그리고 제2 세트의 지원된 특징들(a second set of supported features)을 가짐 ―; 및
    상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계(executing)를 포함하고,
    상기 다른 파워-온 시퀀스를 실행하는 단계는 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경의 연산들을 제어하기 위해 새로운 프로그램 상태 워드(a new program status word)를 생성하는 단계(creating)를 포함하며,
    상기 새로운 프로그램 상태 워드를 생성하는 단계는 상기 다른 아키텍처 모드에 의해서 표시된 포맷(a format)을 갖기 위해 상기 새로운 프로그램 상태 워드를 형성하는 단계(forming) ― 상기 포맷은 제1크기로부터 제2크기로 어드레스를 확장하는 단계를 포함함 ― 및 상기 다른 아키텍처 모드를 표시하기 위해 상기 새로운 프로그램 상태 워드 내 아키텍처 모드 표시자(an architectural mode indicator)를 인버트하는 단계(inverting)를 포함하는
    방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 구성 아키텍처 모드 퍼실리티가 설치되어 있다고 결정하는 단계는 퍼실리티 표시자(a facility indicator)를 체크하는 단계(checking)를 포함하고, 상기 퍼실리티 표시자는 무조건적으로(unconditionally) 또는 구성 표시자의 제어 하에서 세트되는
    방법.
  5. 제1항에 있어서, 상기 재구성하는 단계는 상기 한 아키텍처 모드를 지원하기 위해서 상기 컴퓨팅 환경 내 하나 또는 그 이상의 연산들(operations)을 동작 가능하지 않게 하는 단계(disabling)를 포함하고, 상기 하나 또는 그 이상의 연산들은 상기 다른 아키텍처 모드로부터 상기 한 아키텍처 모드로 전환하기 위한 전환 연산(a switch operation)을 포함하며, 상기 한 아키텍처 모드로 되돌아가는 전환은 동작 가능하지 않게 되는(disabled)
    방법.
  6. 제5항에 있어서, 상기 동작 가능하지 않게 하는 단계는 상기 한 아키텍처로 되돌아가도록 전환하기 위한(switch back) 요청에 기초하여 에러(an error)를 제공하기 위해 신호 프로세서 명령(a signal processor instruction)의 처리를 변경하는 단계(altering)를 포함하는
    방법.
  7. 제1항에 있어서, 상기 방법은 상기 컴퓨팅 환경의 적어도 하나의 프로세서의 리셋을 수행하는 단계를 더 포함하고, 상기 리셋을 수행하는 단계는:
    상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 리셋하는 단계(resetting)를 포함하고, 상기 리셋하는 단계는 상기 컴퓨팅 환경의 아키텍처 모드를 상기 다른 아키텍처 모드로 세트하는 단계(setting)를 포함하는
    방법.
  8. 제1항에 있어서, 상기 재구성하는 단계는 신호 프로세서 연산의 처리를 변경하는 단계(changing)을 포함하되, 상기 컴퓨팅 환경의 아키텍처 모드를 현재의 아키텍처 모드로 세트하는 신호 프로세서 연산은 상기 컴퓨터 환경이 현재의 아키텍처 모드에 있음을 표시하는 상태를 저장하게 하고, 이 상태는 상기 신호 프로세서 연산의 발행자(an issuer of the signal processor operation)에 의해서 수용 가능한 것으로서 취급되는
    방법.
  9. 제1항에 있어서, 상기 한 아키텍처 모드는 레거시 모드(a legacy mode)이고, 상기 다른 아키텍처 모드는 강화 모드(an enhanced mode)이며, 상기 제1 세트의 지원된 특징들은 31-비트 주소지정(31-bit addressing)과 32-비트 범용 레지스터들의 사용을 포함하고, 상기 제2 세트의 지원된 특징들은 64-비트 주소지정과 64-비트 범용 레지스터들의 사용을 포함하는
    방법.
  10. 제1항에 있어서, 상기 컴퓨팅 환경은 호스트 프로세서, 제1 가상화 수준에서의 제1 게스트 가상 머신(a first guest virtual machine at a first level of virtualization), 및 제2 가상화 수준에서의 제2 게스트 가상 머신을 갖는 가상 게스트 환경이고, 상기 재구성하는 단계는 상기 호스트 프로세서 및 상기 제1 게스트 가상 머신에 대해 수행되지만, 상기 제2 게스트 가상 머신에 대해서는 수행되지 않으며, 상기 제2 게스트 가상 머신은 상기 한 아키텍처 모드에서 초기화되고 처리되는
    방법.
  11. 삭제
  12. 컴퓨팅 환경을 재구성하기 위한 컴퓨터 시스템에서, 상기 컴퓨터 시스템은:
    메모리; 및
    상기 메모리와 통시하는 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은:
    구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖는지를, 프로세서에 의해서, 결정하는 단계(determining) ― 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 포함하고 제1 세트의 지원된 특징들(a first set of supported features)을 가짐 ―;
    상기 구성 아키텍처 모드 퍼실리티가 상기 컴퓨팅 환경 내에 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경을, 상기 프로세서에 의해서, 재구성하는 단계(reconfiguring)를 포함하되, 상기 재구성하는 단계는:
    상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting) ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다르며(different), 제2 명령 세트 아키텍처(a second instruction set architecture)를 포함하고 그리고 제2 세트의 지원된 특징들(a second set of supported features)을 가짐 ―; 및
    상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계(executing)를 포함하고,
    상기 다른 파워-온 시퀀스를 실행하는 단계는 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경의 연산들을 제어하기 위해 새로운 프로그램 상태 워드(a new program status word)를 생성하는 단계(creating)를 포함하며,
    상기 새로운 프로그램 상태 워드를 생성하는 단계는 상기 다른 아키텍처 모드에 의해서 표시된 포맷(a format)을 갖기 위해 상기 새로운 프로그램 상태 워드를 형성하는 단계(forming) ― 상기 포맷은 제1크기로부터 제2크기로 어드레스를 확장하는 단계를 포함함 ― 및 상기 다른 아키텍처 모드를 표시하기 위해 상기 새로운 프로그램 상태 워드 내 아키텍처 모드 표시자(an architectural mode indicator)를 인버트하는 단계(inverting)를 포함하는
    컴퓨터 시스템.
  13. 삭제
  14. 삭제
  15. 제12항에 있어서, 상기 재구성하는 단계는 상기 한 아키텍처 모드를 지원하기 위한 상기 컴퓨팅 환경 내 하나 또는 그 이상의 연산들을 동작 가능하지 않게 하는 단계(disabling)를 포함하고, 상기 하나 또는 그 이상의 연산들은 상기 다른 아키텍처 모드로부터 상기 한 아키텍처 모드로 전환하기 위한 전환 연산을 포함하며, 상기 한 아키텍처 모드로 되돌아가는 전환은 동작 가능하지 않게 되는(disabled)
    컴퓨터 시스템.
  16. 제15항에 있어서, 상기 동작 가능하지 않게 하는 단계는 상기 한 아키텍처로 되돌아가도록 전환하기 위한(switch back) 요청에 기초하여 에러(an error)를 제공하기 위해 신호 프로세서 명령(a signal processor instruction)의 처리를 변경하는 단계(altering)를 포함하는
    컴퓨터 시스템.
  17. 제12항에 있어서, 상기 재구성하는 단계는 신호 프로세서 연산의 처리를 변경하는 단계(changing)을 포함하되, 상기 컴퓨팅 환경의 아키텍처 모드를 현재의 아키텍처 모드로 세트하는 신호 프로세서 연산은 상기 컴퓨터 환경이 현재의 아키텍처 모드에 있음을 표시하는 상태를 저장하게 하고, 이 상태는 상기 신호 프로세서 연산의 발행자(an issuer of the signal processor operation)에 의해서 수용 가능한 것으로서 취급되는
    컴퓨터 시스템.
  18. 컴퓨팅 환경을 재구성하기 위한(reconfiguring) 방법을 수행하는, 컴퓨터 시스템에 의해서 판독 가능한, 프로그램 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체 ― 상기 컴퓨터 판독가능 스토리지 매체는 신호가 아님 ― 에서, 상기 방법은: 구성 아키텍처 모드 퍼실리티(a configuration architectural mode facility)가 복수의 아키텍처 모드를 위해 구성된 컴퓨팅 환경 내에 설치되고 그리고 상기 복수의 아키텍처 모드들 중 한 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온(power-on) 시키기 위해 정의된 파워-온 시퀀스(a defined power-on sequence)를 갖는지를, 프로세서에 의해서, 결정하는 단계(determining) ― 상기 한 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 포함하고 제1 세트의 지원된 특징들(a first set of supported features)을 가짐 ―;
    상기 구성 아키텍처 모드 퍼실리티가 상기 컴퓨팅 환경 내에 설치되었다고 결정하는 것에 기초하여, 상기 한 아키텍처 모드의 사용을 제한하기(restrict) 위해 상기 컴퓨팅 환경을, 상기 프로세서에 의해서, 재구성하는 단계(reconfiguring)를 포함하되, 상기 재구성하는 단계는:
    상기 복수의 아키텍처 모드들 중 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 다른 파워-온 시퀀스(a different power-on sequence)를 선택하는 단계(selecting) ― 상기 다른 아키텍처 모드는 상기 한 아키텍처와는 다르며(different), 제2 명령 세트 아키텍처(a second instruction set architecture)를 포함하고 그리고 제2 세트의 지원된 특징들(a second set of supported features)을 가짐 ―; 및
    상기 한 아키텍처의 사용을 제한하고 상기 한 아키텍처 모드 대신에 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경을 파워-온 시키기 위해 상기 다른 파워-온 시퀀스를 실행하는 단계(executing)를 포함하고,
    상기 다른 파워-온 시퀀스를 실행하는 단계는 상기 다른 아키텍처 모드에서 상기 컴퓨팅 환경의 연산들을 제어하기 위해 새로운 프로그램 상태 워드(a new program status word)를 생성하는 단계(creating)를 포함하며,
    상기 새로운 프로그램 상태 워드를 생성하는 단계는 상기 다른 아키텍처 모드에 의해서 표시된 포맷(a format)을 갖기 위해 상기 새로운 프로그램 상태 워드를 형성하는 단계(forming) ― 상기 포맷은 제1크기로부터 제2크기로 어드레스를 확장하는 단계를 포함함 ― 및 상기 다른 아키텍처 모드를 표시하기 위해 상기 새로운 프로그램 상태 워드 내 아키텍처 모드 표시자(an architectural mode indicator)를 인버트하는 단계(inverting)를 포함하는
    컴퓨터 판독가능 스토리지 매체.
  19. 제18항에 있어서, 상기 재구성하는 단계는 상기 한 아키텍처 모드를 지원하기 위한 상기 컴퓨팅 환경 내 하나 또는 그 이상의 연산들을 동작 가능하지 않게 하는 단계(disabling)를 포함하고, 상기 하나 또는 그 이상의 연산들은 상기 다른 아키텍처 모드로부터 상기 한 아키텍처 모드로 전환하기 위한 전환 연산을 포함하며, 상기 한 아키텍처 모드로 되돌아가는 전환은 동작 가능하지 않게 되는(disabled)
    컴퓨터 판독가능 스토리지 매체.
  20. 제18항에 있어서, 상기 재구성하는 단계는 신호 프로세서 연산의 처리를 변경하는 단계(changing)을 포함하되, 상기 컴퓨팅 환경의 아키텍처 모드를 현재의 아키텍처 모드로 세트하는 신호 프로세서 연산은 상기 컴퓨터 환경이 현재의 아키텍처 모드에 있음을 표시하는 상태를 저장하게 하고, 이 상태는 상기 신호 프로세서 연산의 발행자(an issuer of the signal processor operation)에 의해서 수용 가능한 것으로서 취급되는
    컴퓨터 판독가능 스토리지 매체.
KR1020167028754A 2014-03-18 2015-03-09 컴퓨팅 시스템에서 아키텍처 모드 구성 KR101884544B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/217,840 2014-03-18
US14/217,840 US9582295B2 (en) 2014-03-18 2014-03-18 Architectural mode configuration
US14/554,806 US9594576B2 (en) 2014-03-18 2014-11-26 Architectural mode configuration
US14/554,806 2014-11-26
PCT/EP2015/054850 WO2015139992A1 (en) 2014-03-18 2015-03-09 Architectural mode configuration in a computing system

Publications (2)

Publication Number Publication Date
KR20160133546A KR20160133546A (ko) 2016-11-22
KR101884544B1 true KR101884544B1 (ko) 2018-08-01

Family

ID=54142196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167028754A KR101884544B1 (ko) 2014-03-18 2015-03-09 컴퓨팅 시스템에서 아키텍처 모드 구성

Country Status (22)

Country Link
US (6) US9582295B2 (ko)
EP (1) EP3114561B1 (ko)
JP (1) JP6585612B2 (ko)
KR (1) KR101884544B1 (ko)
CN (1) CN106133683B (ko)
AU (1) AU2015230885B2 (ko)
BR (1) BR112016021602B1 (ko)
CA (1) CA2940911C (ko)
DK (1) DK3114561T3 (ko)
ES (1) ES2717525T3 (ko)
HU (1) HUE043750T2 (ko)
IL (1) IL247856B (ko)
LT (1) LT3114561T (ko)
MX (1) MX2016011921A (ko)
PL (1) PL3114561T3 (ko)
PT (1) PT3114561T (ko)
RU (1) RU2664413C2 (ko)
SG (1) SG11201606095SA (ko)
SI (1) SI3114561T1 (ko)
TW (1) TWI608363B (ko)
WO (1) WO2015139992A1 (ko)
ZA (1) ZA201605470B (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9853863B1 (en) 2014-10-08 2017-12-26 Servicenow, Inc. Collision detection using state management of configuration items
US10073707B2 (en) * 2015-03-23 2018-09-11 n.io Innovations, LLC System and method for configuring a platform instance at runtime
US10642706B2 (en) * 2016-07-20 2020-05-05 International Business Machines Corporation Detection and recovery of lost host enabled facilities
US10514932B2 (en) * 2016-09-26 2019-12-24 Amazon Technologies, Inc. Resource configuration based on dynamic group membership
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10282327B2 (en) 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
US11126474B1 (en) * 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10514913B2 (en) * 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10908998B2 (en) 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
US10592281B1 (en) 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
CN108900086B (zh) * 2018-08-01 2020-01-17 环鸿电子(昆山)有限公司 可程序隔离式电源电路结构及系统
US11086715B2 (en) * 2019-01-18 2021-08-10 Arm Limited Touch instruction
US11574060B2 (en) * 2019-04-24 2023-02-07 International Business Machines Corporation Secure initial program load
TWI719720B (zh) * 2019-11-18 2021-02-21 瑞昱半導體股份有限公司 資料寫入系統與方法
CN112860174B (zh) * 2019-11-27 2024-07-12 瑞昱半导体股份有限公司 数据写入系统与方法
CN214851908U (zh) * 2021-06-16 2021-11-23 深圳市不插电光电科技有限公司 一种能够独立集成化控制的机顶盒彩灯条
US12020059B2 (en) 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003523077A (ja) * 2000-02-07 2003-07-29 ザイリンクス インコーポレイテッド 専用のオンチッププロセッサを用いる複数のfpga構成モードのサポート
US20050223225A1 (en) * 2004-03-31 2005-10-06 Campbell Randolph L Switching between protected mode environments utilizing virtual machine functionality

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59123943A (ja) 1982-12-29 1984-07-17 Fujitsu Ltd Vmアシスト制御方式
JPS60254358A (ja) * 1984-05-31 1985-12-16 Toshiba Corp マルチア−キテクチヤマイクロプロセツサシステム
JPH02135528A (ja) 1988-11-16 1990-05-24 Oki Electric Ind Co Ltd マルチosにおける起動os選択方法
US5212777A (en) 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
JPH06332803A (ja) 1993-05-25 1994-12-02 Hitachi Ltd 仮想計算機システムにおけるtlb制御方法
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6199202B1 (en) 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6772325B1 (en) 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US7058791B1 (en) 2000-08-09 2006-06-06 Advanced Micro Devices, Inc. Establishing a mode indication responsive to two or more indications
US7406682B2 (en) 2001-03-26 2008-07-29 Emc Corporation Translator-compiler for converting legacy management software
US7496498B2 (en) 2003-03-24 2009-02-24 Microsoft Corporation Front-end architecture for a multi-lingual text-to-speech system
US7496915B2 (en) 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7234037B2 (en) 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US7562209B2 (en) 2004-04-07 2009-07-14 Marvell International, Ltd. Supporting different instruction set architectures during run time
US7339837B2 (en) * 2004-05-18 2008-03-04 Infineon Technologies Ag Configurable embedded processor
US7260702B2 (en) 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US7308571B2 (en) 2004-10-06 2007-12-11 Intel Corporation Overriding processor configuration settings
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7562349B2 (en) 2005-04-25 2009-07-14 Sap Ag Version adaptation interface for integration of different virtual machines
US7496495B2 (en) 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
KR100663864B1 (ko) * 2005-06-16 2007-01-03 엘지전자 주식회사 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법
JP2007007074A (ja) 2005-06-29 2007-01-18 Nagaoka Univ Of Technology 温熱治療装置
US7523291B2 (en) 2005-07-26 2009-04-21 International Business Machines Corporation System and method for testing for memory address aliasing errors
RU2294010C1 (ru) 2005-09-05 2007-02-20 Павел Михайлович Шестаков Способ обработки цифровых данных
US7409537B2 (en) 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
JP2007207074A (ja) 2006-02-03 2007-08-16 Ricoh Co Ltd オペレーションシステム、スレッド制御機構、及び情報処理装置
WO2007122640A2 (en) 2006-04-26 2007-11-01 Tata Consultancy Services A system and method for automated re-architectureing of legacy systems using object-oriented language
US8001549B2 (en) 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US8117614B2 (en) 2006-05-19 2012-02-14 International Business Machines Corporation Extract CPU time facility
CN100470476C (zh) * 2006-05-25 2009-03-18 杭州晟元芯片技术有限公司 一种芯片上电后的程序引导方法
US20080093277A1 (en) 2006-06-13 2008-04-24 John Armour Cadence detection in a sequence of video fields
US8028290B2 (en) 2006-08-30 2011-09-27 International Business Machines Corporation Multiple-core processor supporting multiple instruction set architectures
US8479264B2 (en) 2006-09-29 2013-07-02 Micron Technology, Inc. Architecture for virtual security module
WO2008083277A1 (en) 2006-12-31 2008-07-10 San Disk Corporation Portable multi-platform booting systems and architectures
US7783867B2 (en) * 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US8321861B2 (en) 2008-02-20 2012-11-27 Arm Limited Non-native program execution across multiple execution environments
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US20110179254A1 (en) 2010-01-15 2011-07-21 Sun Microsystems, Inc. Limiting speculative instruction fetching in a processor
GB2478726B (en) 2010-03-15 2013-12-25 Advanced Risc Mach Ltd Mapping between registers used by multiple instruction sets
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US8479172B2 (en) 2010-11-23 2013-07-02 International Business Machines Corporation Virtual machine testing
US9645822B2 (en) * 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
DE102011017596A1 (de) 2011-04-27 2012-10-31 Robert Bosch Gmbh Mikrofluidisches System und Verfahren für eine Polymerase Kettenreaktion
US9063747B2 (en) 2011-04-28 2015-06-23 Freescale Semiconductor, Inc. Microprocessor systems and methods for a combined register file and checkpoint repair register
TW201248499A (en) 2011-05-18 2012-12-01 Asustek Comp Inc Method of swapping between operating systems applied to computer system
KR101780052B1 (ko) 2011-08-24 2017-09-19 한국전자통신연구원 정보처리 시스템에서 운영체제 전환방법
CN102955713B (zh) * 2011-08-31 2015-11-25 北京中电华大电子设计有限责任公司 一种802.11n无线网卡芯片仿真固件优化的处理方法
US20140351563A1 (en) 2011-12-16 2014-11-27 Hyperion Core Inc. Advanced processor architecture
US8930950B2 (en) 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US9251027B2 (en) 2012-03-05 2016-02-02 Dell Productes L.P. Information handling system performance optimization system
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9729189B2 (en) 2012-08-30 2017-08-08 University Of Virginia Patent Foundation Ultra low power sensing platform with multimodal radios
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
JP6075013B2 (ja) 2012-10-31 2017-02-08 富士通株式会社 ログ取得プログラム、ログ取得装置及びログ取得方法
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003523077A (ja) * 2000-02-07 2003-07-29 ザイリンクス インコーポレイテッド 専用のオンチッププロセッサを用いる複数のfpga構成モードのサポート
US20050223225A1 (en) * 2004-03-31 2005-10-06 Campbell Randolph L Switching between protected mode environments utilizing virtual machine functionality

Also Published As

Publication number Publication date
EP3114561A1 (en) 2017-01-11
CN106133683A (zh) 2016-11-16
US9594576B2 (en) 2017-03-14
HUE043750T2 (hu) 2019-09-30
PL3114561T3 (pl) 2019-06-28
US11029974B2 (en) 2021-06-08
CA2940911A1 (en) 2015-09-24
US20150268972A1 (en) 2015-09-24
AU2015230885B2 (en) 2018-02-01
US20190339995A1 (en) 2019-11-07
WO2015139992A1 (en) 2015-09-24
BR112016021602A2 (ko) 2017-08-15
US20170124023A1 (en) 2017-05-04
RU2016127224A (ru) 2018-04-18
KR20160133546A (ko) 2016-11-22
US20150269117A1 (en) 2015-09-24
ZA201605470B (en) 2017-09-27
JP6585612B2 (ja) 2019-10-02
CA2940911C (en) 2022-11-29
US10552175B2 (en) 2020-02-04
PT3114561T (pt) 2019-04-22
DK3114561T3 (en) 2019-04-15
LT3114561T (lt) 2019-04-10
JP2017513114A (ja) 2017-05-25
US10545772B2 (en) 2020-01-28
US20190339994A1 (en) 2019-11-07
CN106133683B (zh) 2019-06-04
MX2016011921A (es) 2016-12-09
TW201602806A (zh) 2016-01-16
ES2717525T3 (es) 2019-06-21
US20170185430A1 (en) 2017-06-29
BR112016021602B1 (pt) 2022-10-11
EP3114561B1 (en) 2019-02-27
IL247856B (en) 2019-07-31
RU2664413C2 (ru) 2018-08-17
US9582295B2 (en) 2017-02-28
AU2015230885A1 (en) 2016-08-04
US11023256B2 (en) 2021-06-01
SG11201606095SA (en) 2016-08-30
TWI608363B (zh) 2017-12-11
IL247856A0 (en) 2016-11-30
SI3114561T1 (sl) 2019-05-31

Similar Documents

Publication Publication Date Title
US11023256B2 (en) Architectural mode configuration
KR101918831B1 (ko) 복수 아키텍처들에서 초기화될 수 있는 제어 유틸리티를 위한 공통 부팅 시퀀스
US10747583B2 (en) Managing processing associated with selected architectural facilities

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