KR20160134780A - 선택된 아키텍처 퍼실리티들과 연관된 처리의 관리 - Google Patents
선택된 아키텍처 퍼실리티들과 연관된 처리의 관리 Download PDFInfo
- Publication number
- KR20160134780A KR20160134780A KR1020167028749A KR20167028749A KR20160134780A KR 20160134780 A KR20160134780 A KR 20160134780A KR 1020167028749 A KR1020167028749 A KR 1020167028749A KR 20167028749 A KR20167028749 A KR 20167028749A KR 20160134780 A KR20160134780 A KR 20160134780A
- Authority
- KR
- South Korea
- Prior art keywords
- architecture
- architectural
- mode
- virtual machine
- instruction
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 85
- 238000013519 translation Methods 0.000 claims abstract description 73
- 230000006870 function Effects 0.000 claims description 134
- 238000003860 storage Methods 0.000 claims description 134
- 238000000034 method Methods 0.000 claims description 96
- 230000008569 process Effects 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 19
- 230000002829 reductive effect Effects 0.000 claims description 14
- 230000000977 initiatory effect Effects 0.000 claims description 13
- 230000014616 translation Effects 0.000 description 62
- 238000006243 chemical reaction Methods 0.000 description 20
- 238000005192 partition Methods 0.000 description 16
- 238000006073 displacement reaction Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000007667 floating Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000006855 networking Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 2
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 101100241173 Caenorhabditis elegans dat-1 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- RTAQQCXQSZGOHL-UHFFFAOYSA-N Titanium Chemical compound [Ti] RTAQQCXQSZGOHL-UHFFFAOYSA-N 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 231100000176 abortion Toxicity 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
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)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
Abstract
설치되었을 때, 한 아키텍처로부터 선택된 아키텍처 기능을 제거하여, 그 기능이 환경 내 다른 제어들에 상관없이 턴온/턴오프될 수 없도록 하는 퍼실리티가 제공된다. 상기 퍼실리티가 설치되었을 때, 상기 아키텍처 기능은 아키텍처에서의 처리가 상기 아키텍처에 기초하였을 때 지원되지 않는다. 그것은 마치 상기 선택된 아키텍처 기능이 상기 아키텍처에서 더 이상 이용 가능하지 않는 것과 같지만, 실제로, 상기 퍼실리티를 구현하는 코드가 삭제되었거나, 우회되었거나, 또는 제거되었을 수 있다. 그러한 아키텍처 기능의 하나가 동적 주소 변환(DAT)와 같은 가상 주소 변환이며, 상기 아키텍처의 예는 ESA/390이다.
Description
[0001] 본 발명의 하나 또는 그 이상의 특징들은, 일반적으로, 컴퓨팅 환경 내의 처리(processing)에 관한 것이고, 구체적으로는 컴퓨팅 환경 내의 선택된 아키텍처 기능들의 사용(use of selected architectural functions)을 관리하는 것에 관한 것이다.
[0002] 컴퓨팅 환경들의 아키텍처들의 일부로서 컴퓨팅 환경들은 다양한 능력들(capabilities)과 기능들(functions)을 제공한다. 그러한 기능의 하나는 가상 주소들을 실제 주소들로 변환하는데 사용되는, 동적 주소 변환(dynamic address translation)과 같은, 가상 주소 변환이다.
[0003] 시스템 구성들(System configurations)은 애플리케이션들과 데이터를 저장하기 위해 사용되는 물리적 메모리를 포함한다. 물리적 메모리의 양은 고정되어 있고 사용자들의 필요를 지원하기에는 종종 부족하다. 그러므로, 추가의 메모리를 제공하기 위해서 또는 추가의 메모리가 제공된 것처럼 보이기 위해서, 가상 메모리라 불리는, 메모리 관리 기술이 이용된다. 가상 메모리는 가상 주소지정(virtual addressing)을 사용하는데, 이는 주 메모리의 물리적 사이즈보다 훨씬 더 크게 보일 수 있는 주소들의 범위를 제공한다.
[0004] 가상 메모리를 포함하는 시스템 구성 내 주 메모리를 액세스하기 위해, 예를 들어, 가상 주소를 포함하는 메모리 액세스가 요청된다. 가상 주소는, 예를 들어, 동적 주소 변환 또는 다른 변환 기술을 사용하여 실제 주소로 변환되어서 물리적 메모리를 액세스하는 데 사용된다.
[0005] 그러나, 가상 메모리 테스팅(virtual memory testing)은 비용이 많이 든다. 한 아키텍처에는 유효기간(sunset)이 있으므로, 예를 들어, 커맨드 라인 인터프리터 환경들(command line interpreter environments)로서 1차적으로 기능하는, DOS 운영체제들과 같은(예를 들어, MS DOS 또는 CMS), 최소 아키텍처 지원을 사용하는 시스템들을 위해, 또는 BIOS의 부분을 실행하기 위해 사용되는(그리고 가상 메모리의 복잡성 없이 실행할 수 있는) 환경들을 위해, 레거시 환경들(legacy environments)을 제공하는 것이 바람직할 수 있다.
[0006] 따라서, 이 기술 분야에서 전술한 문제를 해결할 필요가 있다.
[0007] 컴퓨팅 환경 내 처리를 관리하기 위한 컴퓨터 프로그램 제품을 제공함으로써 종래 기술의 결점들이 극복되고 장점들이 제공된다. 상기 컴퓨터 프로그램 제품은, 예를 들어, 처리회로에 의해 판독 가능하고 방법을 수행하기 위해 상기 처리회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함한다. 상기 방법은, 예를 들어, 제1 아키텍처 모드에서 처리하는 호스트 프로세서에 의해서, 제1 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제1 게스트 가상 머신은 상기 제1 아키텍처 모드에서 처리하고, 상기 제1 아키텍처 모드는 제1 명령 세트 아키텍처를 가짐 ― 및 제1 세트의 아키텍처 기능들을 제공하는 단계; 상기 호스트 프로세서에 의해서, 제2 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리하고, 상기 제2 아키텍처 모드는 제2 명령 세트 아키텍처를 가짐 ― 및 제2 세트의 아키텍처 기능들을 제공하는 단계 ― 상기 제2 세트의 아키텍처 기능들은 상기 제1 세트의 아키텍처 기능들에서 제공된 아키텍처 기능들의 감소된 세트(a reduced set)이고, 상기 제1 세트의 아키텍처 기능들에서 제공되는 선택된 아키텍처 기능이 상기 제2세트의 아키텍처 기능들로부터는 결여되어 있으며(absent), 상기 제2 아키텍처 모드는 기능 금지 모드(a function inhibit mode)임 ―; 및 상기 제2 아키텍처 모드에서 상기 제2 게스트 가상 머신에 의한 처리를 수행하는 단계(performing) ― 상기 처리를 수행하는 단계는 상기 제2 게스트 가상 머신의 실행을 제어하도록 정의된 상기 선택된 아키텍처 기능과 연관된 하나 또는 그 이상의 제어들을 무시함(override) ― 를 포함한다.
[0008] 본 발명의 제1 특징은 컴퓨팅 환경 내 처리를 관리하기 위한 방법을 제공하는 것이며, 상기 방법은: 제1 아키텍처 모드에서 처리하는 호스트 프로세서에 의해서, 제1 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제1 게스트 가상 머신은 상기 제1 아키텍처 모드에서 처리하고 상기 제1 아키텍처 모드는 제1 명령 세트 아키텍처를 가짐 ― 및 제1 세트의 아키텍처 기능들을 제공하는 단계; 상기 호스트 프로세서에 의해서, 제2 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리하고, 상기 제2 아키텍처 모드는 제2 명령 세트 아키텍처를 가짐 ― 및 제2 세트의 아키텍처 기능들을 제공하는 단계 ― 상기 제2 세트의 아키텍처 기능들은 상기 제1 세트의 아키텍처 기능들에서 제공된 아키텍처 기능들의 감소된 세트(a reduced set)이고, 상기 제1 세트의 아키텍처 기능들에서 제공되는 선택된 아키텍처 기능이 상기 제2세트의 아키텍처 기능들로부터는 결여되어 있으며(absent), 상기 제2 아키텍처 모드는 기능 금지 모드(a function inhibit mode)임 ―; 및 상기 제2 아키텍처 모드에서 상기 제2 게스트 가상 머신에 의한 처리를 수행하는 단계(performing) ― 상기 처리를 수행하는 단계는 상기 제2 게스트 가상 머신의 실행을 제어하도록 정의된 상기 선택된 아키텍처 기능과 연관된 하나 또는 그 이상의 제어들을 무시함(override) ― 를 포함한다.
[0009] 본 발명의 다른 특징은 컴퓨팅 환경 내 처리를 관리하기 위한 방법을 제공하는 것이며, 상기 방법은: 컴퓨팅 환경의 한 프로세서에 의해서, 연산을 수행하기 위한 요청을 획득하는 단계(obtaining) ― 상기 연산은 선택된 아키텍처 기능을 사용하거나(use) 또는 동작 가능하게 하기(enable) 위한 것이고, 상기 프로세서는 제1 아키텍처 및 제2 아키텍처를 포함하는 복수의 아키텍처들을 동시에 지원하도록 구성되며, 상기 제1 아키텍처는 상기 선택된 아키텍처 기능을 위해서 그리고 지원하도록 구성되고 그리고 상기 제2 아키텍처는 그것으로부터 제거되는 상기 선택된 아키텍처를 가짐 ―; 상기 획득하는 단계에 기초하여, 상기 프로세서가 상기 제1 아키텍처에 기초한 제1 아키텍처 모드에서 또는 상기 제2 아키텍처에 기초한 제2 아키텍처 모드에서 처리하고 있는지를 결정하는 단계(determining); 상기 프로세서가 상기 제1 아키텍처 모드에서 처리하고 있다고 결정하는 것에 기초하여, 상기 연산을 수행하는 단계; 및 상기 프로세서가 상기 제2 아키텍처 모드에서 처리하고 있고 그리고 상기 선택된 아키텍처 기능이 제거되었다고 결정하는 것에 기초하여, 상기 선택된 아키텍처 기능이 사용되지 않거나 또는 동작 가능하게 되지 않을 것이라는 표시(an indication)를 제공하는 단계(providing)를 포함하되, 상기 제공하는 단계는 상기 선택된 아키텍처 기능이 동작 가능하게 되었는지(enabled)/동작 가능하지 않게 되었는지(disabled)를 표시하는 제어의 체크(a check of a control)없이 수행되고, 상기 제어는 제거의 표시(an indication of removal)와는 무관하다(separate).
[0010] 본 발명의 또 다른 특징은 컴퓨팅 환경 내 처리를 관리하기 위한 컴퓨터 시스템을 제공하는 것이며, 상기 컴퓨터 시스템은: 메모리; 상기 메모리와 통신하는 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은: 제1 아키텍처 모드에서 처리하는 호스트 프로세서에 의해서, 제1 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제1 게스트 가상 머신은 상기 제1 아키텍처 모드에서 처리하고 상기 제1 아키텍처 모드는 제1 명령 세트 아키텍처를 가짐 ― 및 제1 세트의 아키텍처 기능들을 제공하는 단계; 상기 호스트 프로세서에 의해서, 제2 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리하고, 상기 제2 아키텍처 모드는 제2 명령 세트 아키텍처를 가짐 ― 및 제2 세트의 아키텍처 기능들을 제공하는 단계 ― 상기 제2 세트의 아키텍처 기능들은 상기 제1 세트의 아키텍처 기능들에서 제공된 아키텍처 기능들의 감소된 세트(a reduced set)이고, 상기 제1 세트의 아키텍처 기능들에서 제공되는 선택된 아키텍처 기능이 상기 제2세트의 아키텍처 기능들로부터는 결여되어 있으며(absent), 상기 제2 아키텍처 모드는 기능 금지 모드(a function inhibit mode)임 ―; 및 상기 제2 아키텍처 모드에서 상기 제2 게스트 가상 머신에 의한 처리를 수행하는 단계(performing) ― 상기 처리를 수행하는 단계는 상기 제2 게스트 가상 머신의 실행을 제어하도록 정의된 상기 선택된 아키텍처 기능과 연관된 하나 또는 그 이상의 제어들을 무시함(override) ― 를 포함한다.
[0011] 본 발명의 또 다른 특징은 컴퓨팅 환경 내 처리를 관리하기 위한 컴퓨터 프로그램 제품을 제공하는 것이며, 상기 컴퓨터 프로그램 제품은 처리회로에 의해 판독 가능하고 본 발명의 상기 단계들을 수행하는 방법을 수행하기 위해 상기 처리회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함한다.
[0012] 본 발명의 또 다른 특징은 컴퓨터 판독가능 매체에 저장되고 디지털 컴퓨터의 내부 메모리로 로드 가능한 컴퓨터 프로그램을 제공하는 것이며, 상기 컴퓨터 프로그램은, 상기 프로그램이 컴퓨터 상에서 실행될 때, 본 발명의 상기 단계들을 수행하기 위한 소프트웨어 코드 부분들을 포함한다.
[0013] 하나 또는 그 이상의 실시 예들과 관련되는 방법들 및 시스템들이 또한 여기서 기술되고 청구된다. 더 나아가서, 하나 또는 그 이상의 실시 예들과 관련되는 서비스들이 또한 여기서 기술되고 청구된다.
[0014] 추가의 특징들 및 장점들이 실현된다. 기타 실시 예들 및 특징들이 여기서 상세히 기술되고 청구된 발명의 일부로서 고려된다.
[0015] 이제 다음과 같은 내용의 도면들에 도시되는 바와 같은, 바람직한 실시 예들을 참조하여, 단지 예시로, 본 발명을 기술할 것이다.
도 1a는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티(No-Dynamic Address Translation facility)의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 한 예를 도시한다.
도 1b는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 가상 컴퓨팅 환경의 한 예를 도시한다.
도 2는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다.
도 3a는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 또 다른 예를 도시한다.
도 3b는 본 발명의 바람직한 실시 예에 따른, 도 3a의 메모리의 더 상세한 사항을 도시한다.
도 4는 본 발명의 바람직한 실시 예에 따른, 64-비트 주소 변환의 한 실시 예를 도시한다.
도 5는 본 발명의 바람직한 실시 예에 따른, Load Program Status Word(PSW) 명령의 포맷의 한 예를 도시한다.
도 6은 본 발명의 바람직한 실시 예에 따른, 프로그램 상태 워드의 포맷의 한 예를 도시한다.
도 7a-c는 본 발명의 바람직한 실시 예에 따른, Load Real Address 명령의 포맷의 한 예를 도시한다.
도 8은 본 발명의 바람직한 실시 예에 따른, Set System Mask 명령의 포맷의 한 예를 도시한다.
도 9는 본 발명의 바람직한 실시 예에 따른, Store Then OR System Mask 명령의 포맷의 한 예를 도시한다.
도 10은 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티와 연관된 처리의 한 실시 예를 도시한다.
도 11a-11b는 본 발명의 바람직한 실시 예에 따른, 가상 환경에서 No-DAT 퍼실리티와 연관된 처리의 한 실시 예를 도시한다.
도 12는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 프로그램 제품의 한 실시 예를 도시한다.
도 13은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 호스트 컴퓨터 시스템의 한 실시 예를 도시한다.
도 14는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 시스템의 추가 예를 도시한다.
도 15는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 네트워크를 포함하는 컴퓨터 시스템의 다른 예를 도시한다.
도 16은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 시스템의 여러 엘리먼트들의 한 실시 예를 도시한다.
도 17a는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 16의 컴퓨터 시스템의 실행 유닛의 한 실시 예를 도시한다.
도 17b는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 16의 컴퓨터 시스템의 분기 유닛의 한 실시 예를 도시한다.
도 17c는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 16의 컴퓨터 시스템의 로드/저장 유닛의 한 실시 예를 도시한다.
도 18은 에뮬레이트된 호스트 컴퓨터 시스템의 한 실시 예를 도시한다.
도 19는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 클라우드 컴퓨팅 노드의 한 실시 예를 도시한다.
도 20은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 클라우드 컴퓨팅 환경의 한 실시 예를 도시한다.
도 21은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 추상화 모델 계층들(abstraction model layers)의 한 예를 도시한다.
도 1a는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티(No-Dynamic Address Translation facility)의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 한 예를 도시한다.
도 1b는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 가상 컴퓨팅 환경의 한 예를 도시한다.
도 2는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다.
도 3a는 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 또 다른 예를 도시한다.
도 3b는 본 발명의 바람직한 실시 예에 따른, 도 3a의 메모리의 더 상세한 사항을 도시한다.
도 4는 본 발명의 바람직한 실시 예에 따른, 64-비트 주소 변환의 한 실시 예를 도시한다.
도 5는 본 발명의 바람직한 실시 예에 따른, Load Program Status Word(PSW) 명령의 포맷의 한 예를 도시한다.
도 6은 본 발명의 바람직한 실시 예에 따른, 프로그램 상태 워드의 포맷의 한 예를 도시한다.
도 7a-c는 본 발명의 바람직한 실시 예에 따른, Load Real Address 명령의 포맷의 한 예를 도시한다.
도 8은 본 발명의 바람직한 실시 예에 따른, Set System Mask 명령의 포맷의 한 예를 도시한다.
도 9는 본 발명의 바람직한 실시 예에 따른, Store Then OR System Mask 명령의 포맷의 한 예를 도시한다.
도 10은 본 발명의 바람직한 실시 예에 따른, No-DAT 퍼실리티와 연관된 처리의 한 실시 예를 도시한다.
도 11a-11b는 본 발명의 바람직한 실시 예에 따른, 가상 환경에서 No-DAT 퍼실리티와 연관된 처리의 한 실시 예를 도시한다.
도 12는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 프로그램 제품의 한 실시 예를 도시한다.
도 13은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 호스트 컴퓨터 시스템의 한 실시 예를 도시한다.
도 14는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 시스템의 추가 예를 도시한다.
도 15는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 네트워크를 포함하는 컴퓨터 시스템의 다른 예를 도시한다.
도 16은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 컴퓨터 시스템의 여러 엘리먼트들의 한 실시 예를 도시한다.
도 17a는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 16의 컴퓨터 시스템의 실행 유닛의 한 실시 예를 도시한다.
도 17b는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 16의 컴퓨터 시스템의 분기 유닛의 한 실시 예를 도시한다.
도 17c는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 도 16의 컴퓨터 시스템의 로드/저장 유닛의 한 실시 예를 도시한다.
도 18은 에뮬레이트된 호스트 컴퓨터 시스템의 한 실시 예를 도시한다.
도 19는 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 클라우드 컴퓨팅 노드의 한 실시 예를 도시한다.
도 20은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 클라우드 컴퓨팅 환경의 한 실시 예를 도시한다.
도 21은 선행 기술에 따른, 그리고 본 발명의 바람직한 실시 예가 구현될 수 있는 추상화 모델 계층들(abstraction model layers)의 한 예를 도시한다.
[0016] 본 발명의 하나 또는 그 이상의 특징들에 따라서, 한 퍼실리티가 제공되는데, 이는 설치 되었을 때, 아키텍처로부터 선택된 기능을 제거하여, 상기 기능이 환경 내 다른 제어들에 상관없이 턴 온/오프되지 않도록 한다. 상기 퍼실리티가 설치되었을 때, 상기 선택된 아키텍처 기능은 지원되지 않는다. 그것은 마치 그 기능이 아키텍처 내에서 더 이상 이용 가능하지않는 것과 같이 되는 것이지만, 실제로는 상기 퍼실리티를 구현하는 코드가 삭제되거나, 우회되거나, 또는 그렇지 않으면 제거되었을 수 있다. 그러한 아키텍처 기능의 하나가, 동적 주소 변환(dynamic address translation (DAT))과 같은, 가상 주소 변환이며, 그러한 아키텍처의 예가 ESA/390이다.
[0017] 한 특정 실시 예에서, 복수의 아키텍처 모드들, 예를 들어, 제1 아키텍처 모드 ―예를 들어 z/Architecture와 같은, 강화 모드(an enhanced mode)― 및 제2 아키텍처 모드 ―예를 들어, ESA/390과 같은 레거시 모드(a legacy mode) ― 를 지원하도록 구성된 컴퓨팅 환경이 제공된다. 한 실시 예에서, 상기 제1 아키텍처 모드는 상기 제2 아키텍처 모드와는 아키텍처에서 다른 점들을 갖고 있는데, 예를 들어, 제1 아키텍처 모드는 64-비트 주소지정(addressing)을 제공하고 64-비트 범용 레지스터들을 사용하며, 제2 아키텍처 모드는 31-비트 주소지정(addressing)을 제공하고 31-비트 범용 레지스터들을 사용한다. 더 나아가서, DAT와 같은, 특정 아키텍처 기능들은 상기 제1 아키텍처 모드에 의해서는 지원되지만, 상기 제2 아키텍처 모드에 의해서는 지원되지 않을 수 있다.
[0018] 컴퓨팅 환경이 복수의 아키텍처 모드들을 동시에 지원하도록 구성되었을 지라도, 복수의 아키텍처 모드들 중 하나에서만 처리를 수행한다. 따라서, 본 발명의 한 특징에 따라, 컴퓨팅 환경의 프로세서가 선택된 아키텍처 기능을 사용하는 연산을 수행하기 위해 요청을 수신하는 것에 기초하여, 상기 프로세서는 상기 기능을 수행할 수도 있고 또는 컴퓨팅 환경이 현재 처리중인 아키텍처 모드로부터 상기 기능이 제거되었다는 것에 기초하여, 상기 기능이 수행되지 않는다는 표시를 제공할 수 있다.
[0019] 다른 실시 예에서, 컴퓨팅 환경은 한 프로세서 상에서 실행하는 호스트 제어 프로그램과 호스트에 의해서 지원되는 복수의 가상 머신들을 갖는 가상 환경이다. 호스트는, 예를 들어, 제1의 아키텍처 모드에서 처리를 한다; 그러나, 상기 호스트에 의해서 개시되는, 게스트 가상 머신들은 상기 호스트와 동일 아키텍처 모드에서 처리할 수도 있고 또는 처리하지 않을 수도 있다. 예를 들어, 한 가상 머신이, 선택된 아키텍처 기능을 제공하는, 제1의 아키텍처 모드에서 개시될 수 있고, 그리고 다른 가상 머신은, 상기 선택된 아키텍처 기능을 제공하지 않는, 제2의 아키텍처 모드에서 개시될 수 있다. 한 실시 예에서, 상기 제2의 아키텍처 모드는 상기 제1의 아키텍처 모드의 아키텍처 기능들의 감소된 세트(a reduced set)를 제공한다. 상기 선택된 아키텍처 기능은 그것이 상기 아키텍처로부터 제거되었다는 점에서 상기 아키텍처의 일부분이 아니다(다시 말하면, 상기 아키텍처의 버전이 상기 기능을 구현하는 코드 없이 생성되었거나 또는 이 기능을 지원하기 위해 상기 아키텍처 내에 이전에 존재했던 코드가 우회되었거나, 삭제되었거나 또는 달리 제거되었다는 것이다).
[0020] 다른 실시 예에서, 제2의 아키텍처 모드는 제1의 아키텍처와는 다른 기능들 또는 퍼실리티들을 공급하지만, 특정 아키텍처 능력들이 제1의 아키텍처 모드에서는 제공되고 제2의 아키텍처 모드에서는 제공되지 않을 수 있다. 한 예시적 실시 예에서, DAT 변환이 제1의 아키텍처에서 제공되고 제2의 아키텍처에서는 (제1의 아키텍처에 의해서 정의된 형식, 또는, 예를 들어 ESA/390, S/390, S/370, S/360, Power PC, Book 3E에 따른 Power PC, Intel/AMD x86, Itanium 또는 DAT 혹은 DAT-유사 퍼실리티에 대응하는 기타 아키텍처 사양 중 하나 또는 그 이상에 따라 제공되었을 수 있는 기타 형식에서는) 제공되지 않는다. IBM, z/OS, z/VM, z/Architecture, Processor Resource/Systems Manager PowerPC 및 Power Systems는 전 세계 여러 국가들에 등록된 인터내셔널 비즈니스 머신즈 코포레이션의 상표들이다. 여기에서 사용되는 다른 명칭들도 인터내셔널 비즈니스 머신즈 코포레이션 또는 다른 회사들의 등록 상표, 상표 또는 제품 명칭일 수 있다. Intel, 및 Itanium은 인텔 코포레이션 및 미국 및 다른 나라들에서의 그 자회사들의 상표들 또는 등록 상표들이다.
[0021] 여기서 표시한 바와 같이, 한 예에서, 제1의 아키텍처에서 제공되고 제2의 아키텍처에서 제공되지 않는 아키텍처 기능은, 동적 주소 변환(DAT)과 같은, 가상 주소 변환이다. 따라서, 한 특정 예에서, No-DAT(또한 NDAT라고도 함) 퍼실리티는 동적 주소 변환이 특정 아키텍처 모드(예를 들어, 레거시 아키텍처 모드)에 의해서 지원되지 않는다고 표시하는 컴퓨팅 환경에서 제공된다. 상기 퍼실리티는 가능성, 예를 들어, 동적 주소 변환(DAT)을 온(on)시키는 ESA/390 아키텍처 모드에서 존재하는 구성의 가능성을 제거한다. 다시 말하면, 이 퍼실리티가 설치되고 동작 가능하게 되었을 때, ESA/390 아키텍처 모드에서 구성은 DAT를 온(on) 시킬 수 없다. DAT를 턴온 시키려는 시도는, 예를 들어, No-DAT 예외 프로그램 인터럽션(a No-DAT exception program interruption)을 일으킨다.
[0022] 한 실시 예에서, NDAT 퍼실리티는 또한 DAT 변환과 함께 통상적으로 사용되는 하나 또는 그 이상의 명령들, 예를 들어, 로드 리얼 어드레스(LRA) 명령(the Load Real Address (LRA) instruction)이 실행되지 못하게 한다. 로드 리얼 어드레스 명령은 제1의 아키텍처 모드에서는 실행될 수 있을 때, 예를 들어, 제2의 아키텍처 모드에서는 실행이 금지된다.
[0023] 한 실시 예에서, NDAT 퍼실리티는 하나 또는 그 이상의 컴퓨팅 환경들(예를 들어, 프로세서들, LPAR들, 게스트들)에서 선택적으로 동작 가능하게 될 수 있다. 그러나, 그것이 한 컴퓨팅 환경에서 동작 가능하게 되었을 때, 상기 환경 내 다른 제어들의 세팅들에 상관없이 상기 환경은 제2의 아키텍처 모드(즉, NO ESA/390 DAT)에서는 DAT를 사용할 수 없다. 이 다른 제어들은 우회되거나 또는 무시된다.
[0024] No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 한 예를 도 1a를 참조하여 기술한다. 도 1a를 참조하면, 한 예에서, 컴퓨팅 환경(100)은, 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션(IBM)이 공급하는, z/Architecture에 기초한다. z/Architecture는 "z/Architecture - Principles of Operation,"(간행물 번호 SA22-7932-09, 10판, 2012년 9월)라는 제목의 IBM 간행물에 기술되어 있다. 상기 컴퓨팅 환경은 z/Architecture에 기초하지만, 한 바람직한 실시 예에서, ESA/390 또는 ESA/390의 서브세트와 같은 하나 또는 그 이상의 다른 아키텍처 구성들도 지원한다.
[0025] 한 예로서, 컴퓨팅 환경(100)은 하나 또는 그 이상의 제어 유닛들(108)을 통해서 하나 또는 그 이상의 입력/출력(I/O) 디바이스들(106)에 결합된 중앙 프로세서 복합체(CPC)(102)를 포함한다. 중앙 프로세서 복합체(102)는, 예를 들어 하나 또는 그 이상의 중앙 프로세서들(중앙처리장치(CPU)들로도 알려짐)(110)에 결합된 프로세서 메모리(104)(메인 메모리, 메인 스토리지, 중앙 스토리지로도 알려짐)와 입력/출력 서브시스템(111)을 포함하고, 이들 각각에 대해서는 아래에서 기술한다.
[0026] 프로세서 메모리(104)는, 예를 들어 하나 또는 그 이상의 파티션들(112)(예를 들어, 논리적 파티션들)과 프로세서 펌웨어(113)를 포함하고, 프로세서 펌웨어(113)는 논리적 파티션 하이퍼바이저(114)와 기타 프로세서 펌웨어(115)를 포함한다. 논리적 파티션 하이퍼바이저(114)의 한 예로는, 미국 뉴욕주 아몬크에 있는, 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는, 프로세서 자원/시스템 매니저™(PR/SM)가 있다.
[0027] 논리적 파티션(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)에 특화된 마이크로코드를 포함하고 운영 체제가 시스템 하드웨어에 액세스하는 것을 제어한다.
[0028] 중앙 프로세서들(110)은 논리적 파티션들에 할당되는 물리적인 프로세서 자원들이다. 구체적으로, 각 논리적 파티션(112)은 하나 또는 그 이상의 논리적 프로세서들을 보유하며, 이들 각각은 상기 파티션에 할당되는 물리적인 프로세서(110)의 전부 또는 일부분을 나타낸다. 특정한 파티션(112)의 논리적 프로세서들은 그 파티션에 전용이어서 그 하부 프로세서 자원(110)이 그 파티션을 위해 유보되거나, 또는 다른 파티션과 공유되어서 그 하부 프로세서 자원이 다른 파티션에도 잠재적으로 이용 가능할 수 있다. 한 예에서, 하나 또는 그 이상의 CPU들은 여기에서 기술되는 No-DAT(NDAT) 퍼실리티(130)의 특징들을 포함한다.
[0029] 입력/출력 서브시스템(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 서브시스템들도 사용될 수 있다.
[0030] I/O 서브시스템은 하나 또는 그 이상의 입력/출력 경로들을 입력/출력 디바이스들(106)로 향하는(to) 또는 부터의(from) 정보의 흐름을 관리하는 데 있어서 통신 링크들로서 사용한다. 이 구체적인 예에서, 통신 어댑터들이 채널들이므로, 이 경로들은 채널 경로(channel paths)라 불린다.
[0031] No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하는 컴퓨팅 환경의 다른 예가 도 1b를 참조하여 기술된다. 이 예에서, 컴퓨팅 환경(150)은 가상 머신 지원을 제공하는 중앙 프로세서 복합체(CPC)(152)를 포함한다. CPC(152)는 하나 또는 그 이상의 제어 유닛들(108)을 통해서 하나 또는 그 이상의 입력/출력(I/O) 디바이스들(106)에 결합된다. 중앙 프로세서 복합체(152)는, 예를 들어 하나 또는 그 이상의 중앙 프로세서들(중앙처리장치(CPU)들로도 알려짐)(110)에 결합된 프로세서 메모리(154)(메인 메모리, 메인 스토리지, 중앙 스토리지로도 알려짐)와 입력/출력 서브시스템(111)을 포함한다.
[0032] 프로세서 메모리(154)는, 예를 들어, 하나 또는 그 이상의 가상 머신들(162), 및 프로세서 펌웨어(163)를 포함하고, 이는 호스트 하이퍼바이저(164) 및 기타 프로세서 펌웨어(165)를 포함한다. 호스트 하이퍼바이저(164)의 한 예가, 미국 뉴욕주 아몬크에 있는 인터내셔널 비즈니스 머신즈 코포레이션에 의해서 공급되는, z/VM®이다.
[0033] 상기 CPC의 가상 머신 지원은 다수의 가상 머신들(162)을 운영할 능력을 제공하고, 이들 가상 머신들 각각은, Linux®과 같은, 게스트 운영 체제(172)를 호스트할 수 있다. 각각의 가상 머신(162)은 분리된 시스템으로서 기능할 수 있다. 다시 말하면, 각각의 가상 머신(162)은 독립적으로 리셋될 수 있고, 게스트 운영체제를 호스트할 수 있으며, 그리고 다른 프로그램들(120)을 운영할 수 있다. 가상 머신에서 실행하는 운영 체제 및 애플리케이션 프로그램은 완전하고 완벽한 시스템(a full and complete system)에 대해 액세스하는 것처럼 보이지만, 실제로는, 시스템의 일부분만 이용 가능하다. Linux는 미국, 다른 국가들 또는 이 모두들에서 리누스 토발즈 소유의 등록 상표이다.
[0034] 이 특정 예에서, 가상 머신들의 모델은 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® 간행물에 상세히 기술되어 있다.
[0035] 중앙 프로세서들(110)은 가상 머신에 할당될 수 있는 물리적 프로세서 자원들이다. 예를 들어, 가상 머신(162)은 하나 또는 그 이상의 논리적 프로세서들을 포함하는데, 이들 각각은 가상 머신에 동적으로 할당될 수 있는 물리적 프로세서 자원(110)의 전부 또는 일부(all or a share)를 나타낸다. 가상 머신들(162)은 호스트(164)에 의해서 관리된다.
[0036] 한 실시 예에서, 호스트(예를 들어, 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)에 기술되어 있다.
[0037] 특히, 한 실시 예에서, 해석적 실행 퍼실리티는 가상 머신들의 실행을 위한 명령을 제공한다. 이 명령은 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)의 실행을 포함한다. 이 머신은 그것이 가상 머신의 맥락에서 실행하는 기능들을 해석한다고 한다.
[0038] SIE 명령은, 상태 설명이라 불리는, 오퍼랜드(an operand)를 가지고 있는데, 이는 게스트의 현재 상태와 관련된 정보를 포함한다. SIE 실행이 종료되면, 게스트 PSW를 포함하는, 게스트의 상태를 나타내는 정보는 제어가 호스트로 반환되기 전에 상태 설명에 세이브 된다.
[0039] 해석적 실행 아키텍처는 페이지 가능 스토리지 모드(a pageable storage mode)라 하는 절대 스토리지를 위한 스토리지 모드를 제공한다. 페이지 가능 스토리지 모드에서, 호스트 수준에서의 동적 주소 변환은 게스트 메인 스토리지(guest main storage)를 맵핑하기(map) 위해 사용된다. 호스트 DAT를 사용함으로써 호스트는 페이지 가능 스토리지 모드 게스트들의 실제 스토리지를 호스트 실제 스토리지 내 어디에서나 이용 가능한 프레임들(to usable frames anywhere in host real storage)로 분산하고(scatter) 그리고 게스트 데이터를 보조 스토리지로 페이지 아웃(page out)할 능력이 있다. 이러한 기술은 실제 머신 자원들을 할당하면서 한편 게스트를 위한 절대 스토리지의 인접 범위의 기대 외관(the expected appearance)을 유지할 때 융통성을 제공한다.
[0040] 가상 머신 환경은 DAT의 애플리케이션을 두 번(twice) 호출할 수 있는데: 첫째는 게스트 수준에서, 게스트 관리 변환 테이블들(guest managed translation tables)을 통해 게스트 가상 주소를 게스트 실제 주소로 변환하기 위해서이고, 그 다음은 페이지 가능 게스트를 위해, 호스트 수준에서, 대응 호스트 가상 주소를 호스트 실제 주소로 변환하기 위해서이다.
[0041] 특정 경우들에서, 호스트는 머신에 정상적으로 위임된 연산들에 개입해야 한다 (intercede). 이 목적을 위해서, 상태 설명은 특정 조건들(specific conditions)을 "트랩하기(trap)", 또는 가로채기(intercept) 위해 호스트에 의해서 세트 가능한 제어들을 포함한다. 특정 게스트 명령들을 만났을 때(encountered) 가로채기 제어 비트들(interception control bits)은 머신이 제어를 호스트 시뮬레이션에 반환할 것을 요청한다. 중재 제어들(intervention controls)은 PSW 내로의 동작 가능 상태(an enabled state)의 유입(introduction)을 캡처하여서, 호스트가 게스트를 위해 펜딩(pending)을 유지하는 인터럽션을 일으킬 수 있게 한다. 중재 제어들은 해석이 진행되는 동안 다른 실제 프로세서 상에서 호스트에 의해서 비동기로 세트될 수 있다. 머신은 주기적으로 스토리지로부터 제어들을 다시 페치하여, 갱신된 값들이 인식될 수 있게 한다. 이 때문에 게스트 인터럽션들은 너무 일찍(prematurely) 해석을 방해하는 일 없이 펜딩 상태를 유지할 수 있게 된다.
[0042] 본 발명의 한 바람직한 실시 예에서, 가상 환경들을 위해, 실행 제어 표시자(an execution control indicator)가 SIE 상태 설명에 제공된다. 일반적으로, 만일 이 아키텍처 기능에 대한 상기 표시자가 0이면, 그 기능은 가상 머신에서 이용 가능하지 않게 되고, 만일 상기 표시자가 1이면, 연관된 기능의 해석적 실행이 시도된다. 한 예에서, 페이지 가능 스토리지 모드 게스트가 ESA/390 아키텍처 모드에 있고 상기 표시자가 1일 때, NDAT 퍼실리티는 게스트에 설치되고; 0일 때, NDAT는 설치되지 않는다. NDAT가 설치되었을 때, 게스트는, DAT 기능의 이용 가능성을 지배할 수 있는 기타 제어들(예를 들어, 가상 머신들에서 실행을 제어하는 기타 제어들 또는 퍼실리티들)에 상관없이, DAT를 사용하지 않는다. (다른 실시 예에서, NDAT는 특정 표시자의 제공 없이 글로벌 퍼실리티(a global facility)로서 가상 환경에 제공된다.)
[0043] 상기 실행 제어들에 추가하여, 상태 설명 내의 모드 제어들이 게스트가 ESA/390 또는 z/Architecture 모드에서 실행되는지 그리고 호스트 스토리지에서 게스트 가상 머신의 게스트 메인 스토리지를 나타내기 위한 복수의 방법들 중 하나를 선택하는지를 명시한다. 본 발명의 바람직한 실시 예에 따라, 제어 비트는 제1 또는 제2의 아키텍처 모드(예를 들어, 각각, z/Architecture 및 ESA/390)의 게스트 사이에서 선택하기 위해 상태 제어(a state control) 내에 제공된다. 본 발명의 다른 바람직한 실시 예에 따라, 두 개의 구별되는 명령들이 호스트에 제1 및 제2의 게스트 가상 머신을 생성할 능력을 제공할 수 있는데, 예를 들어, 구별되는 명령들 SIEz 및 SIEe가 게스트 머신들을, 각각, z/Architecture 및 ESA/390 모드에서 시작하기 위해 제공될 수 있다.
[0044] SIE 명령은 제어 프로그램에 의해서 디스패치된 가상 서버를 실행하는데, 상기 서버의 타임 슬라이스(time slice)가 모두 소비될 때까지 또는 상기 서버가 하드웨어가 가상화 할 수 없는 연산 또는 상기 제어 프로그램이 제어를 다시 획득하는 연산을 수행하기를 원할 때까지 실행한다. 그 시점에서, SIE 명령은 종료하고 제어는 상기 제어 프로그램에 반환되고, 상기 제어 프로그램은 상기 명령을 시뮬레이트 하거나 또는 상기 가상 서버를 비자발적 대기 상태(an involuntary wait state)에 배치한다. 동작이 완료되면, 상기 제어 프로그램은 다시 가상 서버가 실행할 스케줄을 잡고, 사이클은 다시 시작된다. 이 과정에서, CPU의 완전한 능력과 속도가 가상 서버에서 이용 가능하다. 상기 제어 프로그램으로부터의 지원 또는 상기 제어 프로그램에 의한 인증(validation)을 요구하는 이들 특권 명령들(privileged instructions)만이 가로채기 된다(intercepted). 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)에 기술되어 있다.
[0045] 본 발명의 한 바람직한 실시 예에서, NDAT 퍼실리티는 어떠한 제어들을 참조하는 일 없이 ESA/390 게스트들 내에 자동으로 설치된다. 따라서, SIE 상태 제어 블록 내 임의의 제어들에 대해 참조하지 않고는, 또는 SIE 혹은 기타 가상 머신-생성 명령에 대한 다른 선택(option)에 대한 참조 없이는, ESA/390 모드에 대응하는 가상 머신은 DAT 퍼실리티들에 대해 액세스하지 않는다.
[0046] 본 발명의 No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도 2를 참조하여 기술한다. 이 예에서, 컴퓨팅 환경(200)은 z/Architecture와 ESA/390 또는 ESA/390의 서브세트를 포함하는 복수의 아키텍처 모드들에 대하여 구성될 수 있는 파티션되지 않은 환경(a non-partitioned environment)을 포함한다. 컴퓨팅 환경(200)은, 예를 들어, 프로세서(중앙처리장치 - CPU)(202)를 포함하며, 이 프로세서는 No-DAT(NDAT) 퍼실리티(204)와 하나 또는 그 이상의 캐시들(206)을 포함한다. 프로세서(202)는 하나 또는 그 이상의 캐시들(210)을 갖는 메모리 부분(208)에 통신할 수 있도록(communicatively coupled to) 결합되고, 입력/출력(I/O) 서브시스템(212)에 통신할 수 있도록 결합된다. I/O 서브시스템(212)은 외부 I/O 디바이스들(214)에 통신할 수 있도록 결합되며, 외부 I/O 디바이스들에는, 예를 들면, 데이터 입력 디바이스들, 센서들 및/또는 디스플레이 같은 출력 디바이스들이 포함될 수 있다.
[0047] 본 발명의 No-DAT 퍼실리티의 하나 또는 그 이상의 특징들을 포함하고 사용하기 위한 컴퓨팅 환경의 다른 바람직한 실시 예를 도 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; 및/또는 인터내셔널 비즈니스 머신즈 코포레이션, 휴렛 팩커드, 인텔, 오라클 또는 기타 회사들에 의해서 공급하는 아키텍처들에 기초하는 기타 머신들이 포함될 수 있다.
[0048] 네이티브 중앙처리장치(302)는, 상기 환경 내에서 처리하는 동안에 사용되는 하나 또는 그 이상의 범용 레지스터들 및/또는 하나 또는 그 이상의 특수용 레지스터들 같은, 하나 또는 그 이상의 네이티브 레지스터들(310)을 포함하고, 그리고 또한, No-DAT 퍼실리티(311)를 포함한다. 이 레지스터들은 특정 시점에서(at any particular point in time) 상기 환경의 상태(the state of the environment)를 나타내는 정보를 포함한다.
[0049] 또한, 네이티브 중앙처리장치(302)는 메모리(304)에 저장된 명령들 및 코드를 실행한다. 한 구체적인 예에서, 상기 중앙처리장치는 메모리(304)에 저장된 에뮬레이터 코드(312)를 실행한다. 이 코드는 한 아키텍처에서 구성된 상기 컴퓨팅 환경이 하나 또는 그 이상의 다른 아키텍처들을 에뮬레이션 할 수 있게 해준다. 예를 들어, 에뮬레이터 코드(312)는 z/Architecture 이외의 아키텍처들에 기초한 머신들, 즉 PowerPC 프로세서들, Power Systems 서버들, HP Superdome 서버들 또는 기타 등등의 머신들이 z/Architecture (및/또는 ESA/390)를 에뮬레이트하여 그 z/Architecture에 기초하여 개발된 소프트웨어와 명령들을 실행할 수 있게 해준다.
[0050] 에뮬레이터 코드(312)에 관련된 더 세부적인 사항들을 도 3b를 참조하여 기술한다. 메모리(304)에 저장된 게스트 명령들(guest instructions)(350)은 네이티브 CPU(302)의 아키텍처 이외의 아키텍처에서 실행될 수 있도록 개발된 소프트웨어 명령들(예를 들어, 기계어 명령들과 관련되어 있음)을 포함한다. 예를 들면, 게스트 명령들(350)은 z/Architecture 프로세서(202) 상에서 실행되지만, 그 대신에, 예를 들어, Intel Itanium 프로세서일 수 있는, 네이티브 CPU(302) 상에서 에뮬레이트 될 수 있도록 설계될 수도 있다. 한 예에서, 에뮬레이터 코드(312)는 메모리(304)로부터 하나 또는 그 이상의 게스트 명령들(350)을 획득하고, 그리고 선택적으로, 그 획득된 명령들에 로컬 버퍼링을 제공하기 위해 명령 페칭 루틴(352)을 포함한다. 그것은 획득된 게스트 명령의 유형을 판정하고 그 게스트 명령을 하나 또는 그 이상의 대응하는 네이티브 명령들(356)로 변환하기 위해 명령 변환 루틴(354)을 또한 포함한다. 이 변환은, 예를 들어, 상기 게스트 명령에 의해 수행될 기능(function)을 식별하는 단계와 그 기능을 수행할 네이티브 명령(들)을 선택하는 단계를 포함한다.
[0051] 추가로, 에뮬레이터 코드(312)는 상기 네이티브 명령들이 실행되게 하기 위해 에뮬레이션 제어 루틴(360)을 포함한다. 에뮬레이션 제어 루틴(360)은 네이티브 CPU(302)로 하여금 하나 또는 그 이상의 앞에서 획득된 게스트 명령들을 에뮬레이트하는 네이티브 명령들의 루틴을 실행하게 하고 그러한 실행 마지막에 다음 게스트 명령 또는 게스트 명령들의 그룹을 획득하는 것을 에뮬레이트하도록 상기 명령 페치 루틴에 제어를 반환할 수 있다. 네이티브 명령들(356)의 실행은 메모리(304)로부터 레지스터 내에 데이터를 로딩하는 것; 레지스터로부터 메모리로 다시 데이터를 저장하는 것; 또는 상기 변환 루틴에 의해 결정되는, 몇몇 유형의 산술 또는 논리 연산을 수행하는 것을 포함할 수 있다.
[0052] 각 루틴은, 예를 들어, 소프트웨어로 구현되며, 이 소프트웨어는 메모리에 저장되고 네이티브 중앙처리장치(302)에 의해 실행된다. 다른 예들에서, 하나 또는 그 이상의 루틴들 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 부분 조합으로 구현된다. 에뮬레이트된 프로세서의 레지스터들은 네이티브 CPU의 레지스터들(310)을 사용하여 또는 메모리(304) 내 위치들(locations)을 사용하여 에뮬레이트될 수 있다. 실시 예들에서, 게스트 명령들(350), 네이티브 명령들(356) 및 에뮬레이터 코드(312)는 동일 메모리 내에 상주할 수도 있고 또는 다른 메모리 디바이스들 사이에 분산될 수도 있다.
[0053] 도 3a 및 3b의 에뮬레이션 시스템의 본 발명의 바람직한 실시 예에 따라, NDAT 퍼실리티가 제1의 아키텍처(예를 들어, z/Architecture)가 아닌 제2의 아키텍처(예를 들어, ESA/390)를 위해 설치된 시스템을 위한 에뮬레이터는 z/Architecture 모드를 위해 DAT 변환을 구현하기 위한 에뮬레이션 루틴들은 포함하고, ESA/390 아키텍처 모드에 대한 DAT 변환을 구현하기 위한 에뮬레이션 루틴들은 포함하지 않는다. 대신에, 제2의 아키텍처 모드를 위한 에뮬레이터 코드(312)는 테스트들을 포함하는데, 이는 제2의 아키텍처 모드에서 실행하는 에뮬레이트된 프로그램이 DAT 변환을 동작 가능하게 하도록 시도하는지를 결정하기 위함이며, 만일 시도한다면, 직접적으로 하나 또는 그 이상의 에러 표시들을 생성하기 위함이다. 본 발명의 다른 바람직한 실시 예에서, 공통 코드 루틴들(common code routines)이 제1 및 제2의 아키텍처를 구현하기 위해서 사용되고, DAT 관련 기능들이 프로그램에 의해서 호출될 때, 제1의 테스트(a first test)가 현재 아키텍처 모드를 결정하기 위해 수행된다. 만일 현재 아키텍처 모드가 제1의 아키텍처 모드에 대응한다면, 제어는 제1의 아키텍처 모드를 위해 DAT를 구현하는 코드로 이전된다(transfer). 현재 모드가 제2의 아키텍처 모드에 대응할 때, 제어는 에러 루틴으로 이전되고 DAT 변환의 동작 가능 또는 DAT 변환의 수행에 대응하는 코드가 호출된다(invoked).
[0054] 본 발명의 적어도 하나의 바람직한 실시 예에 따라, 다수의 명령들(예를 들어, LRA)이 DAT와 함께 사용되고, NDAT 퍼실리티가 설치되었을 때, 선택적으로 제2 아키텍처 모드에서 동작이 가능하지 않게 된다(disabled). 본 발명의 적어도 하나의 바람직한 실시 예에 따라, 에뮬레이터 코드(312)는 제2의 아키텍처 모드에서 DAT와 함께 사용되는 동작 가능하지 않게 된 명령에 대응하는 명령을 에뮬레이트 하기 위한 코드를 포함하지 않는다. 본 발명의 그러한 하나의 바람직한 실시 예에 따라, 에뮬레이터 코드(312)는 제1의 아키텍처 모드에서 DAT와 함께 사용되는 명령에 대응하는 명령을 에뮬레이트 하기 위한 코드를 포함한다. 본 발명의 다른 바람직한 실시 예에서, 공통 코드 루틴들(common code routines)이 제1 및 제2의 아키텍처를 구현하기 위해서 사용되고, DAT 관련 기능들과 함께 사용되는 명령들이 프로그램에 의해서 호출될 때, 제1의 테스트가 현재 아키텍처 모드를 결정하기 위해 수행된다. 만일 현재 아키텍처 모드가 제1의 아키텍처 모드에 대응한다면, 제어는 제1의 아키텍처 모드를 위해 그러한 명령들을 구현하는 코드로 이전된다(transfer). 현재 모드가 제2의 아키텍처 모드에 대응할 때, 제어는 에러 루틴으로 이전되고 DAT 변환과 함께 사용되는 명령들 또는 DAT 변환의 수행에 대응하는 코드가 호출된다(invoked).
[0055] 위에서 기술한 컴퓨팅 환경들은 사용될 수 있는 컴퓨팅 환경들의 예시들일 뿐이다. 다른 파티션되지 않은 환경들, 다른 파티션된 환경들, 및/또는 다른 에뮬레이트된 환경들을 포함하는 (그러나 이에 한정되지는 않음) 다른 환경들이 사용될 수 있으며; 실시 예들은 어느 한 환경에 한정되지 않는다. 더 나아가서, 특정 아키텍처들의 예들이 여기서 기술되었고 그리고 구체적 아키텍처 차이점들 및 다른 아키텍처 기능들이 기술되었지만, 이들은 오직 예들일 뿐이다. 다른 아키텍처들이 사용될 수 있고, 다른 아키텍처 차이점들이 존재할 수 있으며, 및/또는 다른 아키텍처 기능들이 하나 또는 그 이상의 아키텍처들에 의해서 지원될 수도 또는 지원되지 않을 수도 있다.
[0056] 본 발명의 하나의 바람직한 실시 예에 따라, 각각의 컴퓨팅 환경이 다수의 아키텍처들을 지원하도록 구성되며, 이 다수의 아키텍처들에는, 예를 들어, 동적 주소 변환을 포함하는(이에 한정하지 않음) 제1 세트의 아키텍처 기능들을 공급하는 제1의 아키텍처(예: z/Architecture)와 제2 세트의 아키텍처 기능들을 공급하는 제2의 아키텍처(예: ESA/390)가 포함 된다. 상기 제2 세트의 아키텍처 기능들은, 상기 제1 세트의 아키텍처 기능들에는 포함된, DAT와 같은, 하나 또는 그 이상의 기능들이 상기 제2 세트의 아키텍처 기능들로부터 결여되었다(absent)는 점에서, 감소된 세트(a reduced set)의 기능들이다.
[0057] 동적 주소 변환(DAT)은 임의의 순간에(at an arbitrary moment) 프로그램의 실행을 인터럽트하고, 이를 데이터와 함께, 직접 액세스 스토리지 디바이스와 같은, 보조 스토리지에 기록하며, 그리고 실행의 재개를 위해 상기 프로그램과 상기 데이터를 다른 메인 스토리지 위치들에 나중에 반환하는 능력을 제공한다. 메인 스토리지와 보조 스토리지 사이에서 프로그램과 데이터의 이전(transfer)은 단편적으로(piecemeal) 수행될 수 있고, 메인 스토리지로의 정보의 반환은 CPU가 실행을 위해 필요로 하는 때에 그것을 액세스하려는 CPU에 의한 시도에 응답하여 일어날 수 있다. 이 기능들은 프로그램과 데이터의 변경 또는 검사 없이 수행될 수 있고, 재배치된 프로그램을 위한 어떠한 명시적인 프로그램 규약(any explicit programming convention for the relocated program)을 요구하지 않으며, 그리고 관련된 시간 지연을 위한 프로그램 예외의 실행을 방해하지 않는다.
[0058] 운영 체제에 의한 적절한 지원이 있다면, 동적 주소 변환 퍼실리티는 사용자에게 스토리지가 구성 내에서 이용 가능한 메인 스토리지보다 더 크게 보이는 시스템을 제공하기 위해 사용될 수 있다. 이러한 표면상의(apparent) 메인 스토리지를 가상 스토리지라 하고, 가상 스토리지에서 위치들을 지정하기 위해 사용되는 주소들을 가상 주소들이라 한다. 사용자의 가상 스토리지는 구성 내에서 이용 가능한 메인 스토리지의 사이즈를 훨씬 초과할 수 있고, 통상적으로 보조 스토리지에서 유지된다. 가상 스토리지는 페이지들(pages)로 불리는 주소들의 블록들로 구성된다. 가상 스토리지의 가장 최근 참조된 페이지들만 물리적 메인 스토리지의 블록들을 차지하도록 할당된다. 사용자가 메인 스토리지에서 보이지 않는 가상 스토리지의 페이지들을 참조하면, 그 페이지들은 덜 필요하다고 여겨지는 메인 스토리지의 페이지들을 대체하기 위해 불려온다(brought in). 스토리지 페이지들의 교환(swapping)은 사용자에게 알리지 않고 운영 체제가 수행할 수 있다.
[0059] 가상 스토리지와 연관된 가상 주소들의 시퀀스를 주소 공간(an address space)이라 부른다. 운영 체제에 의해서 적절히 지원된다면, 동적 주소 변환 퍼실리티는 다수의 주소 공간들을 제공하기 위해 사용될 수 있다. 이들 주소 공간들은 사용자들 사이에서 고립(isolation)의 정도를 제공하기 위해 사용될 수 있다. 그러한 지원은 각각의 사용자를 위해 완전히 다른 주소 공간을 포함하고, 따라서 완전한 고립을 제공할 수도 있거나, 또는 공유 영역(a shared area)이 각각의 주소 공간의 일부분을 단일의 공통 스토리지 영역(a single common storage area)으로 맵핑함으로써 제공될 수 있다. 또한 반-특권 프로그램(a semi-privileged program)이 그러한 주소 공간 하나 이상을 액세스 하도록 허용하는 명령들이 제공된다. 동적 주소 변환은, 예를 들어, 다수의 다른 주소 공간들로부터 가상 주소들의 변환을 제공하는데, 제어 레지스터들 내 변환 파라미터들이 변경되는 것을 요구함이 없이 제공한다. 이들 주소 공간들은 1차 주소 공간(the primary address space), 2차 주소 공간(secondary address space), 그리고 AR-명시된 주소 공간들(AR-specified address spaces)이라 불린다. 특권 프로그램은 또한 홈 주소 공간(the home address space)이 액세스 되도록 한다.
[0060] 외부 매체로부터의 새로운 정보에 의해서 메인 스토리지의 블록들을 대체하는 프로세스에서, 어느 블록이 대체될 것인지 그리고 대체되는 블록이 기록되어 보조 스토리지에 보존되어야 하는지가 결정되어야 한다. 이러한 결정 프로세스를 돕기 위해, 참조 비트 및 변경 비트(a reference bit and a change bit)가 스토리지 키(the storage key)와 연관된다
[0061] 동적 주소 변환은 CPU에 의해 생성된 명령과 데이터 주소들을 위해 명시될 수 있다.
[0062] 주소 계산(address computation)은 24-비트, 31-비트, 또는 64-비트 주소지정 모드로 수행될 수 있다. 주소 계산이 24-비트 또는 31-비트 주소지정 모드로 수행될 때, 40 또는 33개의 0들이, 각각, 64-비트 주소를 형성하기 위해 좌측에 추가된다(appended). 그러므로, 합성 논리적 주소는 길이가 64 비트이다. 동적 주소 변환에 의해서 형성된 실제 또는 절대 주소와, 그리고, 한 실시 예에서, 프리픽싱(prefixing)에 의해서 형성된 절대 주소는 길이가 64 비트이다.
[0063] 동적 주소 변환은 가상 주소를 스토리지 참조 동안 대응 실제 또는 절대 주소로 변환하는 프로세스이다. 가상 주소는 1차 가상 주소, 2차 가상 주소, 그리고 AR(액세스 레지스터)-명시된 가상 주소, 또는 홈 가상 주소가 될 수 있다. 주소들은 1차, 2차, AR-명시된, 또는 홈 주소 공간 제어 엘리먼트, 각각에 의해서 변환될 수 있다. 적절한 주소 공간 제어 엘리먼트를 선택한 후, 변환 프로세스는 가상 주소의 4가지 유형들 모두에 대해서 동일하다. 주소 공간 제어 엘리먼트는 2G-바이트 주소 공간을 명시하는 세그먼트 테이블 지정(a segment table designation), 4T-바이트, 8P-바이트, 또는 16E-바이트 공간을 명시하는 영역 테이블 지정(a region table designation), 16E-바이트 공간을 명시하는 실제-공간 지정(a real-space designation)일 수 있다. (문자 K, M, G, T, P 및 E는 kilo, 210; mega, 220; giga, 230; tera, 240; peta, 250; 및 exa, 260 를, 각각 나타낸다.) 세그먼트 테이블 지정 또는 영역 테이블 지정은 실제 또는 절대 주소에서 운영 체제에 의해서 설정된 테이블들에 의해서 변환이 수행되게 한다. 실제 공간 지정은, 스토리지 내 테이블들을 사용하지 않고, 가상 주소가 단순히 실제 주소로서 취급되도록 한다.
[0064] 세그먼트 테이블 지정 또는 영역 테이블 지정을 사용할 때 변환의 프로세스에서, 3가지 유형의 정보 유닛들이 인정되는데, 영역들(regions), 세그먼트들(segments), 및 페이지들(pages)이 그들이다. 영역은 순차적 가상 주소들의 블록(a block of sequential virtual addresses)이고, 예를 들어, 2G 바이트에 걸치며 2G-바이트 경계(a 2G-byte boundary)에서 시작한다. 세그먼트도 순차적 가상 주소들의 블록(a block of sequential virtual addresses)이고, 예를 들어, 1M 바이트에 걸치며 1M-바이트 경계(a 1M-byte boundary)에서 시작한다. 페이지도 순차적 가상 주소들의 블록(a block of sequential virtual addresses)이고, 예를 들어, 4K 바이트에 걸치며 4K-바이트 경계(a 4K-byte boundary)에서 시작한다.
[0065] 가상 주소는, 따라서, 4개의 주요 필드들(four principal fields)로 나뉜다. 비트 0-32는 영역 인덱스(RX)라 부르고, 비트 33-43은 세그먼트 인덱스(SX)라 부르며, 비트 44-51은 페이지 인덱스(PX)라 부르고, 그리고 비트 52-63은 바이트 인덱스(BX)라 부른다.
[0066] 자신의 주소 공간 제어 엘리먼트에 의해서 결정된 바와 같이, 가상 주소 공간은 한 영역을 포함하는 2G-바이트 공간이 될 수 있거나, 또는 8G 영역들까지 포함하는 16E-바이트 공간까지가 될 수 있다. 2G-바이트 주소 공간에 적용하는 가상 주소의 RX 부분은 모두 0들이 된다; 그렇지 않으면, 예를 들어, 예외가 인지된다.
[0067] 가상 주소의 RX 부분은 스스로 3개의 필드들로 나뉜다. 비트 0-10은 영역 제1 인덱스(RFX)라 부르고, 비트 11-21은 영역 제2 인덱스(RSX)라 부르며, 그리고 비트 22-32는 영역 제3 인덱스(RTX)라 부른다.
[0068] 가상 주소를 실제 주소로 변환하는 것의 한 예가 도 4를 참조하여 기술된다. 이 예에서, 주소 공간 제어 엘리먼트(400)은, 지정 유형(DT) 제어(a designation type (DT) control)(404)뿐만 아니라, 테이블 오리진(a table origin)(402)를 포함하는데, 이는 변환을 위한 시작 수준의 표시(an indication of a start level)(즉, 계층 주소 변환(the hierarchy address translation)에서 수준이 시작되는 표시)이다. 테이블 오리진(402)와 DT(404)를 사용하면, 특정 테이블의 시작(origin)을 찾아낼 수 있다. 그 다음, 그 테이블에 기초하여, 가상 주소의 비트들이 다음 수준 테이블의 시작(the origin of the next level table)을 획득하기 위해 특정 테이블로 인덱스 하는데 사용된다. 예를 들어, 만일 영역 제1 테이블(406)이 선택된다면, 가상 주소의 비트 0-10(RFX)(408)이 영역 제2테이블(410)의 시작을 획득하기 위해 영역 제1 테이블(406)로 인덱스 하는데 사용된다. 그 다음, 가상 주소의 비트 11-21(RSX)(412)이 영역 제3 테이블(414)의 시작을 획득하기 위해 영역 제2 테이블(410)로 인덱스 하는데 사용된다. 유사하게, 가상 주소의 비트 22-32(RTX)(416)이 세그먼트 테이블(418)의 시작을 획득하기 위해 영역 제3 테이블(414)로 인덱스 하는데 사용된다. 그 다음, 가상 주소의 비트 33-43(SX)(420)이 페이지 테이블(422)의 시작을 획득하기 위해 세그먼트 테이블(418)로 인덱스 하는데 사용되고, 그리고 가상 주소의 비트 44-51(PX)(424)가 페이지 프레임 실제 주소(a page frame real address)(426)을 갖는 페이지 테이블 엔트리(PTE)(425)를 획득하기 위해 페이지 테이블(422)로 인덱스 하는데 사용된다. 페이지 프레임 실제 주소는 그 다음 실제 주소를 획득하기 위해 오프셋(428)(비트 52-63)과 조합된다(예를 들어, 연결된다).
[0069] 전술한 바와 같이, 한 실시 예에서, 동적 주소 변환 퍼실리티는 선택된 아키텍처에 의해서 제공된 이용 가능한 기능들의 세트에는 포함되지 않는다. 특히, 한 예에서, No-DAT 퍼실리티가 제공되는데, 이는 DAT가 지원되지 않음을 표시한다. No-DAT 퍼실리티는 컴퓨팅 환경에서 이 퍼실리티를 설치함으로써 제공될 수 있고, 선택적으로, 그것이 설치 되었음을 표시하는, 퍼실리티 비트, 예를 들어, 비트 140과 같은, 표시자를 세트할 수 있다. 한 실시 예에서, 만일 상기 비트가 1로 세트된다면, 상기 퍼실리티는 설치된 것이다. 한 실시 예에서, 상기 퍼실리티가 퍼실리티 비트를 통해서 동작 가능하게 되었을지라도, 다른 실시 예에서는, 그것이 다른 메커니즘들에 의해서 동작 가능하게 될 수 있다. 예를 들어, 가상 게스트들을 갖는 환경에서, 상기 퍼실리티는 디폴트로 동작 가능하게 될 수 있다.
[0070] 더 나아가서, No-DAT 퍼실리티는 DAT 퍼실리티를 포함하지 않는 선택된 아키텍처의 서브세트 또는 감소된 세트를 공급함으로써도 제공될 수도 있다. 이 환경에서, 그것이 지원되지 않는다는 어떠한 명시적인 표시는 없지만, 그것이 아키텍처로부터 단지 결여되었을 뿐일 수도 있다. 한 실시 예에서, No-DAT 퍼실리티(또한 NDAT, ESA/390-No-DAT 또는 390NDAT라고도 함)는 z/Architecture를 구현하는 모델 상에서는 이용 가능할 수 있다. 상기 퍼실리티는 ESA/390 아키텍처 모드에서 동적 주소 변환(DAT)이 온(on)이 되는 구성의 가능성을 제거한다. 다시 말하면, NDAT 퍼실리티가 제공되었을 때, ESA/390 아키텍처 모드에서 구성은 DAT가 온이 되게 할 수 없다. DAT를 턴온 시키려는 시도는, 한 실시 예에서, No-DAT 예외 프로그램 인터럽션을 일으킨다. 한 실시 예에서, 다른 프로그램 인터럽션 코드들, 또는 에러를 표시하는 다른 방법들이 제공된다. 또 다른 실시 예에서, 에러는 표시되지 않지만, DAT는 동작 가능하지 않는 상태로 남아있다.
[0071] 한 실시 예에서, No-DAT 퍼실리티를 위해 구성된 프로세서에서 이 퍼실리티를 동작 가능하게 하는 것은 선택(option)이다; 한편 다른 실시 예들에서, 그것은 컴퓨팅 환경의 모든 프로세서들(또는, 또 다른 실시 예에서, 선택된 프로세서들) 상에서 자동으로 설치되고 동작 가능하게 된다. 한 특정 실시 예에서, No-DAT 퍼실리티는 게스트-2 구성들(게스트가 다른 게스트에 의해서 초기화되는 제2 수준의 게스트)에서 설치된다. 그러한 구성에서, 만일 게스트-2가 ESA/390에서 초기화된다면, 그것은 DAT를 사용할 수 없을 것이다; 그러나, 게스트-1 및 호스트 프로세서들이 z/Architecture에서 초기화될 수 있고, 그래서 DAT를 사용할 수 있다. 더 나아가서, 한 실시 예에서, 게스트-1 또는 호스트는 ESA/390에서 초기화될 수도 있고, No-DAT 퍼실리티는 동작 가능하게 되지 않는다. 따라서, 게스트-1 또는 호스트는 DAT를 사용할 수 있고, 한편 No-DAT는 게스트-2를 위해 설치되고, 그러므로, 게스트-2는 ESA/390에 있을 때는 DAT를 사용할 수 없다.
[0072] No-DAT 퍼실리티가 다수의 아키텍처 모드들을 지원하는 컴퓨팅 환경에서 설치되었을 때, DAT는 상기 환경이, z/Architecture 아키텍처 모드와 같은, 제1 아키텍처 모드에 있을 때 수행될 수 있지만, 상기 환경이, ESA/390 아키텍처 모드와 같은, 제2 아키텍처 모드에 있을 때 수행될 수 없다. 한 예에서, ESA/390 아키텍처 모드에 있을 때 그리고 NDAT가 제공될 때 DAT를 수행하려는 모든 시도는, 예를 들어, No-DAT 예외 프로그램 인터럽션을 일으킨다. 다른 실시 예들에서, 다른 프로그램 인터럽션이 에러를 표시하기 위해 사용된다. 또 다른 실시 예에서, 에러는 표시되지 않고, 실행은 진행되지만, DAT는 동작 가능하지 않다.
[0073] 전술한 바와 같이, 동적 주소 변환 기능이 구성 내에 제공되지 않고 그리고 DAT를 턴온 시키거나 또는DAT를 수행하기 위한 시도가 이루어졌을 때 No-DAT 예외가 인지된다.
[0074] 예를 들어, 다음의 경우들에서 예외가 인지된다:
1. LOAD PSW 명령의 실행에 의해서 DAT를 턴온 시키려는 시도가 이루어 진다. 로드될 값이 PSW를 변경하기 전에 체크되지 않는다.
2. LOAD REAL ADDRESS 명령이 실행된다. 실행이 중단되고 명령-길이 코드는 2로 세트된다.
3. SET SYSTEM MASK 명령의 실행에 의해서DAT를 턴온 시키려는 시도가 이루어진다. 세트될 값이 현재 PSW를 변경하기 전에 체크되지 않는다.
4. STORE THEN OR SYSTEM MASK 명령의 실행에 의해서 DAT를 턴온 시키려는 시도가 이루어진다. 상기 시스템 마스크에 대해 OR 연산될(ORed) 값이 현재 PSW의 시스템 마스크를 변경하기 전에 체크되지 않는다.
5. 경우 1과 유사하게, 인터럽션이 발생하고 이 인터럽션-뉴(new)-PSW는 비트 위치 5를 1로서 갖는다.
[0075] 상기 경우들의 각각은 아래에서 더 상세히 기술된다; Load PSW 명령에 관한 더 상세한 사항들은 도 5를 참조하여 기술된다. 한 실시 예에서, Load PSW 명령(500)은 연산 코드 필드(502)를 포함하고, 이 필드는 load PSW 연산을 표시하기 위한 연산 코드(opcode); 베이스 필드(B2)(504); 및 변위 필드(D2)(506)를 포함한다. B2 필드에 의해서 지정된 범용 레지스터의 컨텐츠는 스토리지 내에 제2 오퍼랜드의 주소(이를 제2오퍼랜드 주소라 한다)를 형성하기 위해 D2 필드의 컨텐츠에 더해진다.
[0076] Load PSW 명령의 연산에서, 현재 PSW는 상기 제2 오퍼랜드 주소에 의해서 지정된 위치에서 더블워드(the doubleword)의 컨텐츠로부터 형성된 16-바이트 PSW에 의해서 대체된다.
[0077] 상기 더블워드의 비트 12는 1이 되어야 한다; 그렇지 않으면, 모델에 따라서, 명세 예외(a specification exception)가 인지될 수 있다. 만일 구성 z/Architecture 아키텍처 모드(Configuration z/Architecture Architectural Mode: CZAM) 퍼실리티가 설치되어 있다면, 상기 더블워드의 비트 12가 1이 아닌 경우 명세 예외가 인지된다. 한 실시 예에서, CZAM 퍼실리티는 컴퓨팅 환경(예를 들어, 프로세서, LPAR, 게스트)을, 다수-아키텍처 지원된 환경에서, ESA/390과 같은, 아키텍처의 하나 또는 그 이상의 특징들이 더 이상 지원되지 않도록 재구성한다. CZAM의 설치는, 파워-온(power-on), 리셋 등과 같은, 컴퓨팅 환경의 특정 프로세스들이 영향을 받는다. 예를 들어, 만일 CZAM이 설치되고 동작 가능하게 된다면, 파워-온 또는 리셋 시퀀스는, 예를 들어, ESA/390보다는 오히려, z/Architecture를 초기화 한다. CZAM의 특징들은 미국에서 공동-출원되어 양도된 "아키텍처 모드 구성(Architectural Mode Configuration)" (Gainey et al, IBM Docket No. POU920140021US1)이라고 명명된 출원에 기술되어 있다.
[0078] 비트 12가 인버트된다는 것을 제외하고, 상기 더블워드의 비트들 0-32는 현재 PSW의 위치들 0-32에 배치된다. 상기 더블워드의 비트들 33-63은 현재 PSW의 위치들 97-127에 배치된다. 현재 PSW의 비트들 33-96은 0으로 세트된다.
[0079] 직렬화 및 체크포인트 동기화 기능(a serialization and checkpoint synchronization function)은 상기 오퍼랜드가 페치되기 전에 또는 후에 그리고 상기 연산이 완료된 후에 다시 수행된다.
[0080] 상기 오퍼랜드는 더블워드 경계 상에서 지정되어야 한다; 그렇지 않으면, 명세 예외가 인지된다. 만일 상기 오퍼랜드의 비트 12가 0이면, 모델에 따라서, 명세 예외가 인지될 수 있다.
[0081] 상기 명령에 의해서 로드되어야 하는 PSW 필드들은, 비트 12를 체크하는 경우를 제외하고, 그것들이 로드되기 전에 유효성에 대해서 체크되지 않는다. 그러나, 새롭게 로드되는 PSW에 대해 아래 사항들 중 하나라도 참(true)일 때 로드한 후 즉시, 명세 예외가 인지되고, 프로그램 인터럽션이 발생한다:
[0082] 이들 경우들에서, 연산은 완료되고, 합성 명령 길이 코드(the resulting instruction length code)는 0이다.
[0083] 모든 주소지정 및 보호 예외들에서 연산은 중단된다(suppressed).
합성 조건 코드(Resulting Condition Code): 이 코드는 로드된 새로운 PSW에 명시된 대로 세트된다.
프로그램 예외들(Program Exceptions):
프로그래밍 노트(Programming Note): 제2 오퍼랜드는 ESA/390 PSW의 포맷을 가져야 하고, 이것의 예는 아래에서 기술된다. 만일 상기 오퍼랜드의 비트 12가 0이면, 명세 예외가 LOAD PSW의 실행 중에 또는 후에 인지될 것이다.
[0084] PSW 에 관한 더 상세한 내용들은 "z/Architecture의 개발과 속성들(Development and Attributes of z/Architecture)"(Plambeck et al, IBM J. Res. & Dev., Vol. 46, No. 4/5, July/September 2002)에 기술되어 있다.
[0085] 프로그램 상태 워드(PSW)의 포맷의 한 실시 예가 도 6을 참조하여 기술된다. 도 6을 참조하면, 비트 31이, 아래에서 표시한 바와 같이, EA로 도시되는 것을 제외하고, 이 예에서, 프로그램 상태 워드의 포맷은 ESA/390이다.
[0086] 한 실시 예에서, 프로그램 상태 워드(600)은, 한 예로서, 다음 필드들을 포함한다:
Per Mask (R) (602): 비트 1은 프로그램 이벤트 기록(PER)과 연관된 인터럽션들에 대해 CPU가 동작 가능하게 되는지를 제어한다. 이 비트가 0일 때, 어떠한 PER 이벤트도 인터럽션을 일으킬 수 없다. 이 비트가 1일 때, 제어 레지스터 9 내의 PER 이벤트 마스크 비트들에 따라서, 인터럽션이 허용된다;
DAT Mode (T) (604): 비트 5는 스토리지를 액세스 하는데 사용된 논리적 및 명령 주소들의 묵시적(implicit) 동적 주소 변환(DAT)이 일어나는지를 제어한다. 이 비트가 0일 때, DAT는 오프(off)되고, 논리적 및 명령 주소들은 실제 주소들로 취급된다. 이 비트가 1일 때, DAT는 온(on)이 되고, 동적 주소 변환 메커니즘이 호출된다.
[0087] I/O Mask (IO) (606): 비트 6은 CPU가 I/O 인터럽션들에 대해 동작 가능하게 되는지(enabled)를 제어한다. 이 비트가 0일 때, I/O 인터럽션은 일어날 수 없다. 이 비트가 1일 때, 제어 레지스터 6 내의 I/O 인터럽션 서브플래스 마스크 비트들에 따라서, I/O 인터럽션들이 일어난다. I/O 인터럽션 서브클래스 마스크 비트가 0일 때, 이 I/O 인터럽션 서브클래스에 대한 I/O인터럽션은 일어날 수 없다; I/O 인터럽션 서브클래스 마스크 비트가 1일 때, 이 I/O 인터럽션 서브클래스에 대한 I/O 인터럽션은 일어날 수 있다;
External Mask (EX) (608): 비트 7은 CPU가 외부 클래스에 포함된 조건들에 의한 인터럽션에 대해 동작 가능하게 되는지를 제어한다. 이 비트가 0일 때, 외부 인터럽션은 일어날 수 없다. 이 비트가 1일 때, 제어 레지스터 0 내의 대응 외부 서브클래스 마스크 비트들에 따라서, 외부 인터럽션들은 일어난다. 서브클래스 마스크 비트가 0일 때, 상기 서브클래스에 연관된 조건들은 인터럽션을 일으킬 수 없다. 상기 서브클래스 마스크 비트가 1일 때, 이 서브클래스 내 인터럽션은 일어날 수 있다.
[0088] PSW Key (Key)(610): 비트들 9-11은 CPU에 의한 스토리지 참조들을 위해 액세스 키(the access key)를 형성한다. 만일 상기 참조가 키-제어된 보호에 따른다면, 정보가 저장되거나 또는 정보가 페칭에 대하여 보호된 위치로부터 페치되었을 때 상기 PSW 키는 스토리지 키와 매치된다(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 키 대신에 사용된다.
[0089] 비트 12 (612): 이 비트는 현재 아키텍처 모드를 표시한다. 이 비트는 ESA/390 PSW 포맷에 대해서 1로 세트된다. z/Architecture PSW 포맷에 대해서, 이 비트는 0이 되는 것으로 정의된다. z/Architecture 모드에 있을 때, 로드 PSW 확장(LPSWE) 명령이 참 z/Architecture PSW(비트들 64-127 내에 명령 주소를 갖는 것을 포함하여, 여기서 기술된 상기 포맷과 다른 포맷을 가짐)를 로드하기 위해 정의된다. 그러나, ESA/390 로드 PSW (LPSW)는 여전히 지원되며 ESA/390 포맷 PSW를 로드하기 위해 사용될 수 있다. LPSW가 실행되고 컴퓨팅 환경이 z/Architecture에 있을 때, 프로세서는, 비트 12를 인버트하는 것을 포함하여, ESA/390 포맷 PSW를 z/Architecture 포맷으로 확장한다(expand). 이것은 운영 체제가 ESA/390 포맷 PSW를 생성하기 위해 수행하는 z/Architecture PSW 포맷의 붕괴시키는 것(collapsing)의 역(reverse)이다. 다시 말하면, ESA/390과 z/Architecture 모두를 지원하는 컴퓨팅 환경들에서, PSW의 사본이 스토리지에 배치될 때, 운영 체제는 완전 z/Architecture PSW를 ESA/390 PSW의 사이즈와 포맷으로 붕괴시킨다. 따라서, PSW 포맷 의존성(dependencies)을 갖는 다른 소프트웨어는 z/Architecture PSW를 인지할 수 없다(unaware).
[0090] Machine Check Mask (M) (614): 비트 13은 CPU가 머신 체크 조건들에 의해서 인터럽션이 동작 가능하게 되는지를 제어한다. 이 비트가 0일 때, 머신 체크 인터럽션은 일어날 수 없다. 이 비트가 1일 때, 시스템 손상 및 명령 처리 손상으로 인한 머신 체크 인터럽션들은 허용되지만, 기타 머신 체크 서브클래스 조건들로 인한 인터럽션들은 제어 레지스터 14 내의 서브클래스 마스크 비트들에 따른다.
[0091] Wait State (W) (616): 비트 14가 1일 때, CPU는 대기하게 된다; 다시 말하면, CPU에 의해서 명령들이 처리되지 않지만, 인터럽션들은 일어날 수 있다. 비트 14가 0일 때, 명령 페칭과 실행은 정상적으로 일어난다. 대기 표시자는 이 비트가 1일 때 1이다.
[0092] Problem State (P) (618): 비트 15가 1일 때, CPU는 문제 상태(the problem state)에 있게 된다. 비트 15가 0일 때, CPU는 수퍼바이저 상태(the supervisor state)에 있게 된다. 수퍼바이저 상태에서, 모든 명령들은 유효하다(valid). 문제 상태에서, 문제 프로그램에 의미 있는 정보를 제공하고 시스템 무결성(system integrity)에 영향을 주지 않는 명령들만 유효하다; 그러한 명령들은 비특권 명령들(unprivileged instructions)이라 부른다. 문제 상태에서 유효가 아닌 명령들은 특권 명령들(privileged instructions)이라 부른다. 문제 상태의 CPU가 특권 명령을 실행하도록 시도할 때, 특권 연산 예외(a privileged operation exception)가 인지된다. 반특권 명령들(semiprivileged instructions)로 불리는, 명령들의 다른 그룹은 특정 권능 테스트들(specific authority tests)이 충족될 경우에만 문제 상태의 CPU에 의해 실행된다; 그렇지 않으면, 특권 연산 예외 또는 기타 프로그램 예외가, 위반되는 특정 요건에 따라서, 인지된다.
[0093] Address Space Control (AS) (620): 비트들 16 및 17은, PSW 비트 5와 함께, 변환 모드를 제어한다.
[0094] Condition Code (CC) (622): 비트들 18 및 19는 조건 코드(the condition code)의 두 비트들이다. 특정 명령들의 실행에서 획득된 결과에 따라서 조건 코드는 0, 1, 2, 또는 3으로 세트된다. 다른 연산들뿐만 아니라, 대부분의 산술적 및 논리적 연산들도 조건 코드를 세트한다. 명령 BRANCH ON CONDITION은 분기를 위한 표준(a criterion for branching)으로서 조건 코드 값들 중 어떠한 선택도 명시할 수 있다.
[0095] Program Mask (624): 비트들 20-23은 4개의 프로그램 마스크 비트들이다. 각각의 비트는 프로그램 예외와 연관되고, 다음과 같다:
프로그램 마스크 비트
프로그램 예외
20
고정 소수점 오버플로(Fixed point overflow)
21
십진 오버플로(Decimal overflow)
22
HFP 지수 언더플로(exponent underflow)
23
HFP 유의성(significance)
[0096] 마스크 비트가 1일 때, 예외가 인터럽션을 일으킨다. 마스크 비트가 0일 때, 인터럽션은 발생하지 않는다. HFP-유의성-마스크 비트의 HFP-지수-언더-플로-마스크 비트(the HFP-exponent-under-flow-mask bit of the HFP-significance-mask bit)의 세팅은 대응 예외가 발생할 때 또한 연산이 완료되는 방식을 결정한다.
[0097] Extended Addressing Mode (EA) (626): 비트 31은, 기본 주소지정 모드 비트인, 비트 32와 함께 유효 주소들의 사이즈와 유효 주소 생성을 제어한다. 비트 31이 0일 때, 주소지정 모드는 비트 32에 의해서 제어된다. 비트들 31 및 32가 모두 1일 때, 64-비트 주소지정이 명시된다.
[0098] Basic Addressing Mode (BA) (628): 비트들 31 및 32는 유효 주소들의 사이즈와 유효 주소 생성을 제어한다. 비트들 31 및 32가 모두 0일 때, 24-비트 주소지정이 명시된다. 비트 31이 0이고 비트 32가 1일 때, 31-비트 주소지정이 명시된다. 비트들 31 및 32가 모두 1일 때, 64-비트 주소지정이 명시된다. 비트 31이 1이고 비트 32가 0인 조합은 무효이고, 명세 예외가 인지되게 한다. 주소지정 모드는 PER 주소들 또는 DAT를 액세스하는 데 사용된 주소들의 사이즈, ASN, 디스패치가능 유닛 제어(dispatchable unit control), 링키지(linkage), 엔트리(entry), 그리고 트레이스 테이블들(trace trables) 또는 액세스 리스트들(access lists) 또는 링키지 스택(the linkage stack)을 제어하지 않는다. PSW의 비트들 31 및 32에 의한 주소지정 모드의 제어는 다음과 같이 요약된다:
PSW:31
PSW:32
주소지정 모드
0
0
24-비트
0
1
31-비트
1
1
64-비트
Instruction Address (630): PSW의 비트들 33-63은 명령 주소이다. 상기 주소는, CPU가 대기 상태(the wait state)(PSW의 비트 14가 1일 때)에 있지 않는 한, 실행될 다음 명령의 최좌측(the leftmost) 바이트의 위치를 지정한다.
[0099] 전술한 바와 같이, Load PSW 명령에 더하여, Load Real Address 명령은 No-DAT 예외가 인지되도록 할 수 있다.
[0100] Load Real Address 명령의 예시적 포맷들이 도 7a-7c를 참조하여 기술된다. 도 7a에 도시한 바와 같이, 한 실시 예에서, Load Real Address 명령(700)은 복수의 필드들을 갖고 있는데, 이들은, 예를 들어, 실제 주소 로드 연산을 표시하는 오피코드를 갖는 오퍼레이션 코드 필드(702); 제1 레지스터 필드(R1)(704); 인덱스 필드(X2)(706); 베이스 필드(B2)(708); 및 변위 필드(D2)(710)를 포함한다.
[0101] 다른 실시 예에서, 도 7b를 참조하면, Load Real Address 명령(720)은 복수의 필드들을 갖는데, 이들은, 예를 들어, 리드 주소 로드 연산(a load read address operation)을 표시하는 오피코드를 갖는 연산 코드 필드(722a, 722b); 제1 레지스터 필드(R1)(724); 인덱스 필드(X2)(726); 기본 필드(B2)(728); 및 복수의 변위 필드들(DL2, DH2)(730a, 730b)을 포함한다.
[0102] 또 다른 실시 예에서, 도 7c를 참조하면, Load Real Address 명령(740)은 복수의 필드들을 갖는데, 이들은, 예를 들어, 리드 주소 로드 연산(a load read address operation)을 표시하는 오피코드를 갖는 연산 코드 필드(742a, 742b); 제1 레지스터 필드(R1)(744); 인덱스 필드(X2)(746); 기본 필드(B2)(748); 및 복수의 변위 필드들(DL2, DH2)(750a, 750b)을 포함한다.
[0103] 상기 포맷들에서, R1 은 제1 오퍼랜드를 포함하는 일반 레지스터를 명시하고; 그리고 X2 및 B2에 의해 지정된 일반 레지스터들의 컨텐츠는 제2 오퍼랜드 주소를 형성하기 위해 D2 필드 또는 DH2 및 DL2 필드들의 컨텐츠에 더해진다.
[0104] 24-비트 또는 31-비트 주소지정 모드에서 Load Real Address (LRA, LRAY)를 위해서, 만일 제2 오퍼랜드 가상 주소에 대응하는 64-비트 실제 또는 절대 주소의 비트들 0-32가 모두 0이면, 상기 실제 또는 절대 주소의 비트들 32-63은 일반 레지스터 R1의 비트 위치들 32-63에 배치되고 상기 레지스터의 비트들 0-31은 변경되지 않는다. 만일 상기 실제 또는 절대 주소의 비트들 0-32가 모두 0이 아니면, 특별 연산 예외가 인지된다.
[0105] 64-비트 주소지정 모드에서 LRA 또는 LRAY를 위해, 그리고 모든 주소지정 모드에서 Load Real Address (LRAG)를 위해, 상기 제2 오퍼랜드 가상 주소에 대응하는 64-비트 실제 또는 절대 주소는 일반 레지스터 R1에 배치된다.
[0106] EDAT-1 (Enhanced DAT-1)을 적용하지 않을 때, 또는 EDAT-1을 적용하지만 상기 제2 오퍼랜드가 STE-포맷 제어가 0인 세그먼트 테이블 엔트리(a segment table entry (STE))에 의해서 변환될 때, 일반 레지스터 R1에 배치된 주소는 실제(real) 주소이다. EDAT-1을 적용하고 상기 제2 오퍼랜드가 STE-포맷 제어가 1인 세그먼트 테이블 엔트리(STE)에 의해서 변환될 때, 또는 EDAT-2를 적용하고 상기 제2 오퍼랜드가 RTTE-포맷 제어가 1인 영역 제3 테이블 엔트리(a region third table entry)에 의해서 변환될 때, 일반 레지스터 R1에 배치된 주소는 절대(absolute) 주소이다.
[0107] X2, B2, 및 D2 필드들에 의해서 명시된 가상 주소는, DAT가 온(on) 또는 오프(off)인지에 상관없이, 동적 주소 변환 퍼실리티에 의해서 변환된다.
[0108] LRA를 위한 변위(displacement)는 12-비트 무 부호 2진 정수(unsigned binary integer)로서 취급된다. LRAY 및 LRAG를 위한 변위는 20-비트 부호 2진 정수(signed binary integer)로서 취급된다.
[0109] DAT 는 주소-공간-제어 엘리먼트(an address-space-control element)를 사용하여 수행되고, 이 엘리먼트는, 아래 테이블에서 도시한 바와 같이, 주소-공간-제어 비트들의 현재 값, PSW의 비트들 16 및 17에 따라 달라진다:
PSW 비트들 16 및 17
DAT에 의해서 사용된 주소 공간 제어 엘리먼트
00
제어 레지스터 1의 컨텐츠
10
제어 레지스터 7의 컨텐츠
01
액세스 레지스터 변환(ART) 프로세스를 B2 필드에 의해서 지정된 액세스 레지스터에 대해 적용함으로써 획득된 주소 공간 제어 엘리먼트
11
제어 레지스터 13의 컨텐츠
[0110] ART 및 DAT는 ART-룩어사이드 버퍼(ALB) 및 변환-룩어사이드 버퍼(TLB)를, 각각, 사용하여서 수행될 수 있다.
[0111] 가상-주소 계산은, 현재 PSW의 비트들 31 및 32에 의해서 명시된, 현재 주소지정 모드에 따라 수행된다.
[0112] 영역-테이블 엔트리(the region-table entry) 또는 엔트리들의 주소들은, 만일 사용된다면, 그리고 세그먼트-테이블 엔트리(the segment-table entry) 및 페이지-테이블 엔트리(page-table entry)의 주소들은, 만일 사용된다면, 현재 주소지정 모드에 상관없이 64-비트 주소들로서 취급된다. 이들 엔트리들의 주소들이 실제 또는 절대 주소들로서 취급될지는 예측 불가능 하다(unpredictable).
[0113] 해당하는 경우, ART 및 DAT 모두가 완료될 수 있고 그리고 특별-연산 예외(a special-operation exception)가 인지되지 않을 때 조건 코드 0은 세트된다. 다시 말하면, 주소-공간-제어 엘리먼트가 획득될 수 있을 때, 각 DAT 테이블 내의 엔트리는 상기 테이블 내에 있고 0의 I 비트를 갖는다. 그리고 24-비트 또는 31-비트 주소지정 모드에서 LRA 또는 LRAY를 위해, 합성 실제 또는 절대 주소의 비트들 0-32는 0이다. 상기 변환 주소는 경계 정렬(boundary alignment)에 대해 또는 주소지정 혹은 보호 예외들에 대해 검사되지 않는다(not inspected).
[0114] PSW 비트들 16 및 17이 01 이진수이고 그리고 아래 도시한 예외들 중 하나를 정상적으로 일으킬 수 있는 조건 때문에 주소-공간-제어 엘리먼트가 획득될 수 없을 때, (1) 상기 예외에 할당된 인터럽션 코드는 일반 레지스터 R1의 비트 위치들 48-63에 배치되고, 비트들 33-47은 0으로 세트되며, 그리고 비트들 0-31은 변경되지 않는다. 그리고 (2) 상기 명령은 조건 코드 3을 세트 함으로써 완료된다.
예외 이름
원인
코드 (Hex)
ALET 명세
액세스 리스트 엔트리 토큰(ALET)
0028
비트들 0-6 모두 0이 아님
ALEN 변환
액세스 리스트 엔트리 (ALE) 아웃사이드 리스트
0029
또는 무효 (비트 0은 1임)
ALE 시퀀스
ALET 내의 ALE 시퀀스 번호 (ALESN)는
002A
ALE 내의 ALESN과 같지 않음
ASTE 유효성
ASN-제2 테이블 엔트리 (ASTE) 무효
002B
(비트 0은 1임)
ASTE 시퀀스
ALE 내의 ASTE 시퀀스 번호(ASTESN)는
002C
ASTE 내의 ASTESN과 같지 않음
확장 권능
ALE 사설 비트 0이 아님, ALE 인가
002D
인덱스(ALEAX)는 확장 인가 인덱스(EAX)와 같지 않고, EAX에 의해서 선택된 2차 비트는 권능 테이블을 벗어나거나 또는 0임.
[0115] ART가 정상적으로 완료될 때, 연산은 DAT의 수행을 통해서 계속된다.
[0116] 세그먼트 테이블 엔트리가 테이블의 범위를 벗어나고 그리고 엔트리의 실제 또는 절대 주소의 비트들 0-32가 모두 0일 때, 조건 코드 3이 세트되고, 엔트리 주소의 비트들 32-63은 일반 레지스터 R1의 비트 위치들 32-63에 배치되며, 그리고 상기 레지스터의 비트들 0-31은 변경되지 않는다. 만일 상기 주소의 비트들 0-32가 모두 0이 아니면, 그 결과는 아래에 도시한 바와 같다.
[0117] 64-비트 주소지정 모드에서 LRA 혹은 LRAY 또는 모든 주소지정 모드에서 LRAG을 위해, 세그먼트 테이블 엔트리 내의 I 비트가 1일 때, 조건 코드 1이 세트되고, 그리고 세그먼트 테이블 엔트리의 64-비트 실제 또는 절대 주소는 일반 레지스터 R1에 배치된다. LRA 혹은 LRAY가 24-비트 또는 31-비트 주소지정 모드에 있는 것을 제외하고 이 경우에서, 만일 세그먼트 테이블 엔트리의 주소의 비트들 0-32가 모두 0이면, 그 결과는 일반 레지스터 R1의 비트들 0-31이 변경되지 않는다는 것을 제외하고는 동일하다. 만일 상기 주소의 비트들 0-32가 모두 0이 아니면, 그 결과는 아래 도시한 바와 같다.
[0118] 64-비트 주소지정 모드에서 LRA 혹은 LRAY 또는 모든 주소지정 모드에서 LRAG를 위해, 페이지 테이블 엔트리 내의 I 비트가 1일 때, 조건 코드 2가 세트되고, 그리고 페이지 테이블 엔트리의 64-비트 실제 또는 절대 주소는 일반 레지스터 R1에 배치된다. LRA 혹은 LRAY가 24-비트 또는 31-비트 주소지정 모드에 있는 것을 제외하고 이 경우에서, 만일 페이지 테이블 엔트리의 주소의 비트들 0-32가 모두 0이면, 그 결과는 일반 레지스터 R1의 비트들 0-31이 변경되지 않는다는 것을 제외하고는 동일하다. 만일 상기 주소의 비트들 0-32가 모두 0이 아니면, 그 결과는 아래 도시한 바와 같다.
[0119] 일반 레지스터 R1에 배치된 세그먼트 테이블 엔트리 또는 페이지 테이블 엔트리 주소는 상기 시도된 변환 동안 사용된 주소의 유형에 따라 실제 또는 절대 주소이다.
[0120] 만일 아래에 도시한 예외들 중 하나를 정상적으로 일으킬 수 있는 조건이 존재한다면, (1) 상기 예외에 할당된 인터럽션 코드는 일반 레지스터 R1의 비트 위치들 48-63에 배치되고, 이 레지스터의 비트 32는 1로 세트되며, 비트들 33-47은 0으로 세트되고, 그리고 비트들 0-31은 변경되지 않는다. 그리고 (2) 인터럽션은 조건 코드 3을 세트함으로써 완료된다.
예외 이름
원인
코드 (Hex)
ASCE 유형
0038
사용되는 주소 공간 제어 엘리먼트(ASCE)는 영역 제2 테이블 지정(a region second table designation)이고 가상 주소의 비트들 0-10은 모두 0이 아님; ASCE는 영역 제3 테이블 지정(a region third table designation)이고, 가상 주소의 비트들 0-21은 모두 0이 아님; 또는 ASCE는 세그먼트 테이블 지정(a segment table designation)이고, 가상 주소의 비트들 0-32는 모두 0이 아님.
영역 제1 변환
가상 주소의 영역 제1 인덱스 부분에
0039
의해서 선택된 영역 제1 테이블 엔트리는 테이블 범위 바깥이거나 또는 무효임.
영역 제2 변환 가상 주소의 영역 제2 인덱스 부분에
003A
의해서 선택된 영역 제2 테이블 엔트리는 테이블 범위 바깥이거나 또는 무효임.
영역 제3 변환
가상 주소의 영역 제3 인덱스 부분에
003B
의해서 선택된 영역 제3 테이블 엔트리는 테이블 범위 바깥이거나 또는 무효임.
세그먼트 변환
가상 주소의 세그먼트 인덱스 부분에
0010
의해서 선택된 세그먼트 테이블 엔트리는 테이블 범위 바깥이거나(엔트리 주소의 비트들 0-32가 모두 0이 아닐 때만); 또는 세그먼트 테이블 엔트리는 무효임(LRA 혹은 LRAY만, 그리고 엔트리 주소의 비트들 0-32가 모두 0이 아닐 때 24-비트 또는 31-비트 주소지정 모드에서 만)
페이지 변환
가상 주소의 페이지 인덱스 부분에 의해서
0011
선택된 페이지 테이블 엔트리는 무효임(LRA 및 LRAY만, 그리고 엔트리 주소의 비트들 0-32가 모두 0이 아닐 때 24-비트 또는 31-비트 주소지정 모드에서 만).
특별 조건들(Special Conditions)
[0121] 24-비트 또는 31-비트 주소지정 모드에서 LRA 혹은 LRAY를 위해, 합성 64-비트 실제 주소(the resultant 64-bit real address)의 비트들 0-32가 모두 0이 아닐 때 특별-연산 예외가 인지된다.
[0122] 유효 액세스 리스트 지정(the effective access list designation) 또는 ALE, ASTE, 또는 권능-테이블 엔트리(authority-table entry)를 페치하기 위해 ART에 의해서 사용된 주소가 구성 내 이용 가능하지 않은 위치를 지정할 때 또는 영역 테이블 엔트리 또는 엔트리들, 만일 있다면, 세그먼트 테이블 엔트리, 또는 페이지 테이블 엔트리를 페치하기 위해 사용된 주소가 구성 내 이용 가능하지 않은 위치를 지정할 때 주소지정 예외가 인지된다.
[0123] 액세스된 영역 테이블 엔트리 또는 세그먼트 테이블 엔트리 또는 페이지 테이블 엔트리가 0의 I 비트와 포맷 에러를 가질 때 변환-명세 예외(a translation-specification exception)가 인지된다.
[0124] 영역 테이블 엔트리 또는 세그먼트 테이블 엔트리의 주소를 계산하기 위해 행해진 덧셈의 결과로서 비트위치 0으로부터의 캐리(a carry)는 무시될 수 있거나 또는 주소지정 예외를 일으킨다.
[0125] 모든 주소지정 예외들에서 연산은 중단된다.
합성 조건 코드(Resulting Condition Code):
0
변환이 이용 가능함
1
세그먼트-테이블 인트리가 무효임(I 비트가 1임)
2
페이지 테이블 엔트리가 무효임(I 비트가 1임)
3
주소-공간-제어 엘리먼트는 이용 가능하지 않음, 영역 테이블 엔트리는 테이블 범위 바깥이거나 또는 무효임(I 비트는 1임), 세그먼트 테이블 엔트리는 테이블 범위 바깥이거나, 또는, LRA 및 LRAY만을 위해, 그리고 엔트리 주소의 비트들 0-32가 모두 0이 아닐 때 24-비트 또는 31-비트 주소지정 모드에서만, 세그먼트 테이블 엔트리 또는 페이지 테이블 엔트리가 무효임(I 비트는 1임)
프로그램 예외들(Program Exceptions):
주소지정(유효 액세스-리스트 지정, 액세스-리스트 엔트리, ASN-제2의-테이블 엔트리, 권능-테이블 엔트리, 영역 테이블 엔트리, 세그먼트 테이블 엔트리, 또는 페이지 테이블 엔트리)
트랜잭션 제한
프로그래밍 노트들(Programming Notes):
1. 멀티 프로세싱 구성에서 Load Real Address를 사용하는 데에는 주의가 필요하다. 다른 CPU들의 TLB들 내의 대응 엔트리들을 클리어 되게 하기 전에 Invalidate DAT Table Entry 또는 Invalidate Page Table Entry가 스토리지 내 I 비트들을 1로 세트할 수 있기 때문에, 이 CPU 상에서 Load Real Address를 그리고 다른 CPU 상에서 Invalidate DAT Table Entry 또는 Invalidate Page Table Entry를 동시에 실행하는 것은 일관되지 않은 결과들을 생성할 수 있다. Load Real Address가 스토리지 내의 테이블들을 액세스 할 수 있기 때문에, 비록 대응 TLB 엔트리가 아직 클리어되지 않았고, 그리고 다른 CPU상에서 Invalidate DAT Table Entry 또는 Invalidate Page Table Entry가 완료될 때까지 TLB 엔트리가 TLB 내에 남아 있을 수 있다 하더라도, 영역 테이블 엔트리들, 세그먼트 테이블 엔트리 또는 페이지 테이블 엔트리는 무효인 것으로 보일 수 있다(각각, 조건 코드들 3, 1, 또는 2). Load Real Address가 완료되는 것과 TLB의 엔트리가 클리어되는 것 사이에 실행될 수 있는 명령들의 수에는 보증된 한계가 없다.
[0126] Load Real Address를 사용하는 것에 대한 위의 주의들은 DAT-테이블 엔트리에 무효 비트를 명시적으로 세트하기 위해 Compare And Swap And Purge 또는 Compare And Replace DAT Table Entry가 사용될 때 또한 적용된다.
[0127] Load PSW 및 Load Real Address 명령들에 더하여, Set System Mask 명령은 또한 No-DAT 예외가 인지되도록 할 수 있다.
[0128] Set System Mask 명령의 포맷에 관한 본 발명의 바람직한 한 실시 예가 도 8을 참조하여 기술된다. 도 8을 참조하면, Set System Mask 명령(800)은, 예를 들어, 세트 시스템 마스크 연산을 명시하기 위한 연산 코드(오피코드)를 갖는 연산 코드 필드(802); 기본 필드(B2)(804); 및 변위 필드(D2)(806)를 포함한다.
[0129] 연산에서, 현재 PSW의 비트들 0-7은 제2-오퍼랜드 주소에 의해서 지정된 위치에서의 바이트에 의해서 대체된다(B2에 의해서 명시된 일반 레지스터의 컨텐츠를 변위 필드의 값에 더함으로써 형성됨).
특별 조건들
[0130] SSM 중단 제어 비트(suppression control bit)인, 제어 레지스터 0의 비트 33이 1이고 CPU가 수퍼바이저 상태(the supervisor state)에 있을 때, 특별 연산 예외가 인지된다.
[0131] 만일 PSW의 비트 위치들 0 및 2-4의 컨텐츠가 모두 0이 아니면, PSW로 로드될 값은 로딩 전에 유효성에 대해 체크되지 않고, 명세 예외가 인지되며, 그리고 프로그램 인터럽션이 발생한다. 이 경우에, 명령은 완료되고, 명령-길이 코드는 2로 세트된다. 명세 예외는 이 명령에 대한 프로그램 예외로서 리스트된다(listed). 이 예외는 아마도 이 명령의 실행에 의해서 발생되었거나 또는 후속 명령을 실행하기 위한 준비 프로세스에서 조기에 발생하는 것으로 보인다.
[0132] 모든 주소지정 및 보호 예외들에서 연산은 중단된다.
조건 코드: 이 코드는 변경되지 않는다.
프로그램 예외들:
[0133] 더 나아가서, Store Then OR System Mask 명령은 No-DAT 예외가 인지되게 할 수 있다. Store Then OR System Mask 명령의 포맷에 관한 본 발명의 한 바람직한 실시 예가 도 9를 참조하여 기술된다. 도 9를 참조하면, Store Then Or System Mask 명령(900)은 스토어 덴 오어 시스템 마스크 연산(a store then OR system mask operation)을 명시하기 위한 오피코드를 갖는 연산 코드 필드(902); 직접 필드(an immediate field)(I2)(904); 기본 필드(B1)(906); 및 변위 필드(D1)(908)를 포함한다. 한 예에서, B1에 의해서 명시된 레지스터의 컨텐츠는 제1 오퍼랜드의 주소를 제공하기 위해 상기 변위 필드에 더해진다. 상기 직접 필드는 제2 오퍼랜드이다.
[0134] 연산에서, 현재 PSW의 비트들 0-7은 상기 제1 오퍼랜드 위치에 저장된다. 그 다음, 현재 PSW의 비트 위치들 0-7의 컨텐츠는 그들의 원래 컨텐츠와 상기 제2 오퍼랜드(I2 필드)의 논리적 OR에 의해서 대체된다.
특별 조건들
[0135] PSW로 로드될 값은 로딩 전에 유효성에 대해 체크되지 않는다. 그러나, 만일 PSW의 비트 위치들 0 및 2-4의 컨텐츠가 모두 0이 아니면, 로딩 후에는 즉시, 명세 예외가 인지되고 그리고 프로그램 인터럽션이 발생한다. 이 경우에, 명령은 완료되고, 명령-길이 코드는 2로 세트된다. 명세 예외는 프로그램 예외로서 리스트된다(listed). 이 예외는 다음의 명령을 실행하기 위한 준비 프로세스에서 조기에 발생하는 것일 수 있다.
주소지정과 보호 예외들에서 연산은 중단된다.
조건 코드: 이 코드는 변경되지 않는다.
프로그램 예외들:
[0136] 프로그래밍 노트: Store Then Or System Mask 명령은 프로그램이 나중의 복원을 위해 원래 컨텐츠를 유지하면서 시스템 마스크 내의 선택된 비트들을 1로 세트하도록 한다. 예를 들어, 프로그램이 외부 마스크 비트의 현재 상태를 이용 가능하게 하지 않고도 I/O 인터럽션들을 위해 CPU를 동작 가능하게 할 수 있다.
전술한 사례들 1(Load PSW) 및 3-5(Set System Mask, Store Then Or System Mask, 인터럽션)에서, PSW의 비트5를 0에서 1로 변경한 후 즉시, No-DAT 예외가 인지되고, 프로그램 인터럽션이 발생한다. 이 사례 들에서, 명령 실행, 또는 해당하는 경우, PSW 교환(swap)은 완료되고 명령-길이 코드는 0이다. No-DAT 예외는 다음, 순차적 명령을 실행하기 위해 준비하는 프로세스에서 조기에 발생하는 것으로 볼 수 있다. 따라서, 프로그램-올드(old) PSW에 의해서 명시된 명령 주소에 위치한 명령은 무효가 된다(nullified). No-DAT 예외는 003D hex(또는, 만일 동시 PER 이벤트가 표시된다면, 00BD hex)의 프로그램 인터럽션 코드에 의해서 표시된다.
[0137] 인터럽션은 현재 PSW를 올드 PSW로서 저장하는 것, 인터럽션의 원인을 식별하는 정보를 저장하는 것, 그리고 새로운 PSW를 페치하는 것을 포함한다. 처리는 새로운 PSW에 의해서 명시된 대로 재개한다.
[0138] 인터럽션 상에 저장된 올드 PSW는 인터럽션이 발생하지 않았더라면 실행되었을 명령의 주소를 정상적으로 포함하고, 따라서 인터럽트된 프로그램의 재개를 가능하게 한다. 프로그램 및 수퍼바이저-콜 인터럽션들(program and supervisor-call interruptions)에서, 저장된 정보는 최종 실행된 명령의 길이를 식별하는 코드를 또한 포함하는데, 따라서, 프로그램이 인터럽션의 원인에 대해 응답할 수 있게 해준다. 정상 응답이 인터럽션을 일으키는 명령의 재-실행(re-execution)인 일부 프로그램 조건들의 경우에, 그 명령 주소는 최종 실행된 명령을 직접적으로(directly) 식별한다.
[0139] 재시작(restart)의 경우를 제외하고, 인터럽션은 CPU가 운영 상태(the operating state)에 있을 때만 발생할 수 있다. 재시작 인터럽션은 CPU가 중단된 또는 운영 상태(the stopped or operating state)에 있을 때 어느 경우에나 발생할 수 있다.
[0140] PER 기본 이벤트들의 경우를 제외하고, 오직 하나의 프로그램 인터럽션 조건이 프로그램 인터럽션에 표시된다. 한 조건의 존재가, 그러나, 다른 조건들의 존재를 배제하는 것은 아니다. 하나 이상의 프로그램 인터럽션 조건이 존재할 때, 한 실시 예에서, 가장 높은 우선 순위를 갖는 조건이 인터럽션 코드에서 식별된다. 동일 우선 순위의 다수 조건들을 적용할 때, 어느 것이 표시될지 예측 불가능하다.
[0141] 동일 스토리지 오퍼랜드의 다수 부분들이 분리된 액세스 제어들을 따를 때 (subject to separate access controls), 그 부분들과 연관된 액세스 예외들의 우선 순위는 예측 불가능하고, 그리고 상기 오퍼랜드 내 바이트들의 액세스를 위해 명시된 시퀀스에 반드시 관련되는 것도 아니다. 예를 들어, (a) MOVE (MVC) 명령의 제1 오퍼랜드가 세그먼트 경계를 가로지를(cross) 때, (b) 상기 오퍼랜드의 최좌측 부분(the leftmost part)을 변환하기 위해 사용된 세그먼트 테이블 엔트리 상에서 무효 비트가 1일 때, 그리고 (c) 상기 오퍼랜드의 최우측 부분(the rightmost part)을 변환하기 위해 사용된 유효 페이지 테이블 엔트리에서 DAT-보호 비트가 1일 때, 세그먼트-변환 예외 또는 보호 예외가 인지될 것인지는 예측 불가능하다.
[0142] 명령이 두 개의 스토리지 오퍼랜드들을 갖고 이 오퍼랜드들 모두에 대해 액세스 예외가 존재할 때, 어느 조건이 인지될지는 예측 불가능하다. 동일 명령(동일 예외 조건들을 갖는)의 후속 실행은 제1 실행과 동일 오퍼랜드에 대해서, 또는 다른 오퍼랜드에 대해서, 예외 조건이 인지되게 할 수 있다.
[0143] 발생하는 끝내기(ending)의 유형(무효(nullification), 중단(suppression), 또는 종료(termination))은 인터럽션 코드에서 표시된 예외의 유형을 위해 정의된 것이다. 그러나, 만일 종료를 허용하는 조건이 표시되고, 그리고 무효 또는 중단 어느 것이든지 일으킬 수 있는 다른 조건이 또한 존재한다면, 연산의 유닛은 중단된다(suppressed).
[0144] 다수의 아키텍처 모드들을 지원하는 컴퓨팅 환경에서 No-DAT 퍼실리티를 제공하는 것과 연관된 처리에 관한 본 발명의 한 바람직한 실시 예가 도 10을 참조하여 기술된다. 이 특정 예에서, 모든 아키텍처 모드들은 선택된 아키텍처 기능에 대해 구성되지만(즉, 각각은, 예를 들어, DAT를 포함하도록 정의 된다), 제1 아키텍처 모드는 그 기능을 지원하고, 한편 제2 아키텍처 모드에서는 그 기능이 제거되어(예를 들어, 지원되지 않거나, 우회되거나, 아키텍처로부터 제거되어) 비록 DAT 턴온/오프 제어가 존재하더라도 그 기능이 턴온 될 수 없게 된다.
[0145] 도 10을 참조하면, 한 예에서, 컴퓨팅 환경이 복수의 아키텍처들: 선택된 아키텍처 기능(예를 들어, DAT)을 위해 지원하도록 구성된 제1 아키텍처(예를 들어, 강화 아키텍처, 예를 들어, z/Architecture); 그리고 상기 선택된 아키텍처 기능을 위해 구성되었지만 선택적으로 제거하는 제2 아키텍처(예를 들어, 레거시 아키텍처, 예를 들어, ESA/390)를 동시에 지원하도록 구성된다(단계 1000). 상기 기능을 제거하는 데 있어서(예를 들어, No-DAT를 턴온 하거나 또는 영구 공장-설치된 상태로 No-DAT를 제공함에 있어서), 다른 제어가 그 기능을 턴온 하기 위해 세트되더라도 DAT는 턴온 될 수 없다.
[0146] 상기 컴퓨팅 환경의 프로세서는 선택된 아키텍처 기능을 포함하는 연산을 수행하기 위한 요청을 획득한다(단계 1002). 상기 프로세서가 제2 아키텍처에 기초하여 제2 아키텍처 모드에서 처리하는지에 관한 결정이 내려진다(질의 1004). 만일 상기 프로세서가 제2 아키텍처와 다른 아키텍처 모드, 예를 들어 제1 아키텍처(예: z/Architecture)에서 처리한다면, 선택된 아키텍처 기능이 수행된다(단계 1006).
[0147] 질의 1004로 돌아가서, 만일 프로세서가 제2 아키텍처 모드에 있다면, 그 다음 선택된 아키텍처 기능이 제거되었는지에 관한 결정이 내려진다(질의 1008). 본 발명의 한 바람직한 실시 예에서, 이것은 퍼실리티 표시자 및/또는 다른 표시자를 체크함으로써 결정된다. 만일 상기 기능이 제거되지 않았다면(예를 들어, No-DAT가 설치되지 않았다면), 상기 선택된 아키텍처 기능(예를 들어, DAT)이 수행된다(단계 1006). 제거 되었다면, 상기 선택된 아키텍처 기능은 수행되지 않을 것이라는 표시가 제공된다(단계 1010). 예를 들어, 에러가 제공된다. 상기 에러는 예외일 수 있고, 알려진 예외 유형 또는 새로운 예외 유형 어느 것이든지 사용될 수 있다.
[0148] 위의 예에서, 선택된 아키텍처 모드는 DAT를 위해 구성되지만, DAT는 상기 아키텍처로부터 제거된다 할지라도, 다른 실시 예에서, 제2 아키텍처 모드는 DAT를 위해 구성되지는 않지만, 대신에, 제2 아키텍처는 하나 또는 그 이상의 선택된 아키텍처 기능들(예를 들어 DAT)이 결여되는(absent) 감소된 세트의 아키텍처를 포함한다. 이 경우에, DAT는 또한 아키텍처로부터 제거되는 것이라고 한다.
[0149] 본 발명의 다른 바람직한 실시 예에서, NDAT 퍼실리티는 페이지 가능 스토리지 모드 게스트들을 포함하는 컴퓨팅 환경 내에 포함된다. 그러한 환경에서, 한 예에서, 호스트는 제1 아키텍처 모드(예를 들어, z/Architecture) 에서 초기화되고 처리하며, 게스트들은 제1 아키텍처 모드 또는, 제2 아키텍처 모드(예를 들어, ESA/390 또는 그것의 서브세트)와 같은, 다른 아키텍처 모드 에서 초기화 될 수 있다. ESA/390 아키텍처 모드의 페이지 가능 스토리지 모드 게스트에서, No-DAT 퍼실리티가 설치되었을 때, 한 예에서, 다음 액션들이 발생한다:
1. 본 발명의 한 바람직한 실시 예에서, NDAT가 설치되었을 때, 상태 제어 내에 존재하는 또는 그렇지 않으면 DAT 또는 다른 특징들의 이용 가능성을 지배할 수 있는 가상 환경 내의 실행을 제어하는 다른 표시자들(예를 들어, 임의의 그리고 모든 다른 표시자들)에 상관없이, 게스트는 마치 DAT가 제공되지 않은 것처럼 효과적으로 동작한다.
2. DAT 기능들을 동작 가능하게 하거나, DAT 기능들을 사용하거나 또는 DAT 기능들의 존재를 요구하는 명령들(예를 들어, LRA 명령을 포함하지만, 이에 한정되지는 않음)을 실행하려는 시도가 있을 때, No-DAT 예외 프로그램 인터럽션이 제출된다.
[0150] 게스트 환경에서 No-DAT 퍼실리티를 제공하기 위한 로직(logic)에 관한 본 발명의 한 바람직한 실시 예가 도 11a-11b를 참조하여 기술된다. 도 11a를 참조하면, 제1 아키텍처 모드(예를 들어, z/Architecture)에서 처리하는 호스트(단계 1100)는, 하나 또는 그 이상의 게스트 가상 머신들을 개시하기 위해 시작 해석적 실행 명령(a start interpretative execution instruction)을 발행한다(단계 1102). 제1 게스트 가상 머신은 제1 아키텍처 모드에서 처리하고 상기 제1 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 가지며 그리고 제1 세트의 아키텍처 기능들을 포함한다(단계1104). 그러나, 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리하고(단계 1106), 그리고 상기 제2 아키텍처 모드는 제2 명령 세트 아키텍처(a second instruction set architecture)를 가지며 그리고 제2 세트의 아키텍처 기능들을 포함한다. 상기 제2 세트의 아키텍처 기능들은 상기 제1 세트의 감소된 세트(a reduced set)이고, 이 감소된 세트에서 하나 또는 그 이상의 기능들(예를 들어, DAT와 같은, 선택된 아키텍처 기능)이 결여된다(absent). 따라서, 상기 제2 아키텍처 모드는 기능 금지 모드(a function inhibit mode)이며, 이는, DAT와 같은, 기능을 금지한다. 한 예에서, 상기 선택된 아키텍처 기능의 결여는 한 퍼실리티 비트를 통해서 표시된다. 그러나, 이것은 하나 또는 그 이상의 실시 예들에서 선택적이다.
[0151] 본 발명의 한 특정 실시 예에서, 제1 아키텍처 모드는 64-비트 주소지정을 포함하고 64-비트 범용 레지스터들을 사용하며 그리고 제2 아키텍처 모드는 31-비트 주소지정을 포함하고 32-비트 일반 레지스터들을 사용한다.
[0152] 상기 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리를 수행하고, 그리고 이 처리는 상기 제2 게스트 가상 머신의 실행을 제어하기 위해 사용될 수 있는 선택된 아키텍처 기능과 연관된 하나 또는 그 이상의 제어들을 무시한다(override)(단계1108). 예를 들어, 만일 한 표시자가 DAT가 온(on)임을 표시하기 위해 사용된다면, 이 표시자는 No-DAT 퍼실리티가 상기 제2 게스트 가상 머신을 위해 설치될 때 무시되는 제어이다. 다른 예에서, 상기 가상 머신에 대응하는 아키텍처의 명세는 특정 특징들의 이용 가능성을 제어하는데, 이 명세도 또한 NDAT 퍼실리티에 의해서 무시되는 제어이다. 무시되는 제어들의 다른 예들도 또한 가능하다.
[0153] 본 발명의 한 바람직한 실시 예에서, 제2 게스트는 선택된 기능(예를 들어, DAT)을 사용하거나 또는 동작 가능하게 하는 연산을 수행하기 위한 요청을 획득한다(단계 1120). 그 다음, 상기 제2 게스트가 제2 아키텍처 모드에서 처리하는지에 관한 결정이 내려진다(질의 1122). 만일 상기 제2 게스트가 제2 아키텍처 모드에서 처리하고 있지 않다면, 상기 선택된 아키텍처 기능을 사용하거나 또는 동작 가능하게 할 수 있는, 연산이 수행될 수 있다(단계 1124). 그러나, 만일 상기 제2 게스트가 제2 아키텍처 모드에서 처리하고 있고, 그리고 따라서 상기 선택된 기능이 지원되지 않는다면(즉, 그것이 제거되었다면), 상기 연산은 수행되지 않고(단계 1126), 그리고 에러가 제공된다(단계 1128).
[0154] 위에서 기술한 본 발명의 바람직한 실시 예에서, 게스트들은 모두 제1 수준의 게스트들(level one guests)(즉, 각각은 호스트에 의해서 초기화됨)이지만, 다른 예에서, 하나 또는 그 이상의 게스트들은, 한 게스트가 다른 게스트에 의해서 개시되는, 제2 수준 게스트들(second level guests)이다. 본 발명의 그러한 바람직한 실시 예에서, 만일 제2 수준의 게스트가 ESA/390에서 처리되어야 한다면, No-DAT는 디폴트(default)이다. 다시 말하면, ESA/390에서 개시되는 제2 수준의 게스트는, 다르게 표시될 수 있는 다른 제어들(예를 들어, SIE 제어들)에 상관없이, DAT를 사용하지 않을 것이다. DAT에 관련된 모든 기타 제어들은 무시된다. 더 나아가서, 본 발명의 한 바람직한 실시 예에서, 상기 제1 수준의 게스트 및/또는 호스트가 ESA/390 또는 z/Architecture에서 DAT를 실행할 수 있을지라도, 이것은 상기 제2 수준의 게스트에 대해서는 디폴트이다. 본 발명의 다른 바람직한 실시 예에서, ESA/390 가상 머신들은 게스트-2 가상 머신들로서만 생성될 수 있고, 호스트 및 게스트-1 모드 중 하나 또는 모두에서 이용 가능하지 않다.
[0155] 상기 기능들이 제2 아키텍처를 위한 No-DAT 퍼실리티의 제공에 대한 특정 참조로 기술되었지만, 여기서 기술된 특징들은 한 아키텍처 모드에서 동작 가능하지 않게 되고 게스트 또는 호스트 환경의 또 다른 아키텍처 모드에서 제공될 수 있는 다른 프로세서 기능들에 대해서도 적용될 수 있다.
[0156] 명령 및 데이터를 위해, 명령 세트는 제공하고 아키텍처를 위한 데이터 주소 변환은 배제하는 능력에 관하여 지금까지 기술하였다. 특정 아키텍처로부터 데이터 주소 변환을 제거하기 위한 제어들에 관해서도 또한 기술하였다. 한 실시 예에서는, 상기 제거하는 것은 제어 레지스터에 따라 이루어지고; 다른 실시 예에서는, 하나 또는 그 이상의 디폴트에 따라 이루어져서 자동적으로, 예를 들어, 게스트 2를 위한, 데이터 주소 변환을 제거하는 것을 동작 가능하게 한다. 추가적으로, 본 발명의 한 바람직한 실시 예에서, 한 인터럽트가 DAT가 제거될 때 DAT를 동작 가능하게 하고 및/또는 사용하기 위한 시도를 표시하기 위해 제공된다. 더 나아가서, 하나 또는 그 이상의 실시 예들에서, 가상화 환경을 위한 운영 모드가 제공된다.
[0157] 전술한 바와 같이, 특정 아키텍처로부터, DAT 변환들과 같은, 선택된 기능들을 제거하여, 더 이상 테스트 되어야 하지 않기 위해 한 퍼실리티가 제공된다. (수퍼바이저 프로그램과 같은) 프로그램이 제거된 기능을 동작 가능하게 하려고 시도할 때, 예를 들어, 에러 또는 예외(알려진 예외 코드 또는 새로운 코드를 사용하는)와 같은, 표시가 제공된다. 또한, 한 프로그램이 제거된 기능을 사용하는 명령을 실행하려고 시도할 때, 예를 들어, 에러 또는 예외와 같은, 표시가 제공된다.
[0158] 본 발명의 한 바람직한 실시 예에서, No-DAT 퍼실리티는 하나 또는 그 이상의 다른 퍼실리티들과 사용할 수 있는데, 이들은, 예를 들어, CZAM 퍼실리티 및/또는 제어 유틸리티 부팅 퍼실리티(a control utility boot facility)를 포함하며, 이는 아래의 공동 출원에 기술되어 있다: "아키텍처 모드 구성(Architectural Mode Configuration)" (Gainey, et al, (미국 출원 번호: 14/217840); 및 "다수 아키텍처들에서 초기화될 수 있는 제어 유틸리티를 위한 공통 부팅 시퀀스(Common Boot Sequence for Control Utility Able to be Initialized in Multiple Architectures)" (Michael K. Gschwind, (미국 출원 번호 14/217800).
[00159] 도 12를 참조하면, 한 예에서, 컴퓨터 프로그램 제품(1200)은, 예를 들어 하나 또는 그 이상의 비-일시적인(non-transitory) 컴퓨터 판독 가능 스토리지 매체(1202)를 포함하며 이 매체상에 컴퓨터 판독 가능 프로그램 코드 수단, 로직 및/또는 명령들(1204)을 저장하여 하나 또는 그 이상의 실시 예들을 제공하고 가능하게 만든다.
[00160] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함할 수 있으며 이 매체 상에 프로세서가 본 발명의 특징들을 수행하도록 하기 위한 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[00161] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 디바이스에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광학 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 디바이스, 및 전술한 것들의 모든 적절한 조합. 여기에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[00162] 여기에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 각각 컴퓨터 판독 가능 스토리지 매체로부터 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드될 수 있다. 상기 통신망(네트워크)은 구리 전송 케이블, 광학 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 엣지 서버를 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망(네트워크)으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[00163] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 바람직한 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 특징들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[00164] 여기에서는 본 발명의 바람직한 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 특징들을 기술한다. 순서 예시도들 및/또는 블록도들의 각 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00165] 이 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램 가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램 가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램 가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00166] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램 가능 데이터 처리 장치, 또는 다른 디바이스에 로드되어, 상기 컴퓨터, 기타 프로그램 가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램 가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00167] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 동작(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.
[00168] 전술한 것에 추가하여, 하나 또는 그 이상의 특징들은 컴퓨터 환경의 관리를 공급하는 서비스 제공자에 의해 제공, 공급, 배치, 관리, 서비스 등이 될 수 있다. 예를 들면, 서비스 제공자는 하나 또는 그 이상의 고객들을 위해 하나 또는 그 이상의 특징들을 수행하는 컴퓨터 코드 및/또는 컴퓨터 인프라스트럭처의 제작, 유지, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는 가입제(subscription) 및/또는 수수료 약정에 따라 고객으로부터 대금을 수령할 수 있으며, 이는 예이다. 또한, 서비스 제공자는 하나 또는 그 이상의 제3자들에게 광고 콘텐츠를 판매하고 대금을 수령할 수 있다.
[00169] 한 특징으로, 하나 또는 그 이상의 바람직한 실시 예들을 수행하기 위한 애플리케이션이 배치될 수 있다. 한 예로서, 애플리케이션의 배치는 하나 또는 그 이상의 바람직한 실시 예들을 수행하는 데 실시 가능한 컴퓨터 인프라스트럭처를 제공하는 것을 포함한다.
[00170] 추가 특징으로서, 컴퓨터 판독 가능 코드를 컴퓨팅 시스템으로 통합하는 것을 포함하는 컴퓨팅 인프라스트럭처가 배치될 수 있으며, 그 컴퓨팅 시스템에서 상기 코드는 상기 컴퓨팅 시스템과 결합하여 하나 또는 그 이상의 바람직한 실시 예들을 수행하는 것이 가능하다.
[00171] 추가 특징으로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템으로 통합시키는 것을 포함하는 컴퓨팅 인프라스트럭처 통합을 위한 프로세스가 제공될 수 있다. 상기 컴퓨터 시스템은 컴퓨터 판독 가능 매체를 포함하고, 상기 컴퓨터 시스템에서 상기 컴퓨터 매체는 하나 또는 그 이상의 바람직한 실시 예들을 포함한다. 상기 코드는 상기 컴퓨터 시스템과 결합하여 하나 또는 그 이상의 바람직한 실시 예들을 수행하는 것이 가능하다.
[00172] 위에서 다양하게 기술되었지만, 이들은 단지 예시일 뿐이다. 예를 들면, 다른 아키텍처들로 된 컴퓨팅 환경들이 하나 또는 그 이상의 바람직한 실시 예들을 포함하고 사용하는 데 사용될 수 있다. 또한, 각각 다른(different) 명령들, 명령 포맷들, 명령 필드들 및/또는 명령 값들이 사용될 수 있다. 또한, 다른 유형의 주소 변환들이 하나 또는 그 이상의 특징들로부터 유익을 얻을 수 있다. 더 나아가, 다른 아키텍처 기능들이 유사하게 제거될 수 있다. 많은 변형 예들이 가능하다.
[00173] 또한, 다른 종류의 컴퓨팅 환경들도 이득을 얻을 수 있고 사용될 수 있다. 예로서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용될 수 있으며, 이 시스템은 시스템 버스를 통해서 메모리 엘리먼트들에 직접적으로 또는 간접적으로 결합된 적어도 두 개의 프로세서를 포함한다. 상기 메모리 엘리먼트들은, 예를 들어 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 대용량 스토리지(bulk storage), 및 코드가 실행 동안에 대용량 스토리지로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장(temporary storage)을 제공하는 캐시 메모리를 포함한다.
[00174] 입력/출력 또는 I/O 디바이스들(키보드, 디스플레이, 포인팅 디바이스, DASD, 테이프, CD, DVD, 썸 드라이브 및 기타 메모리 매체 등을 포함하나 이에 한정되지는 않음)은 직접 또는 중개(intervening) I/O 컨트롤러들을 통해서 상기 시스템에 결합될 수 있다. 네트워크 어댑터 또한 상기 시스템에 결합되어 상기 데이터 처리 시스템이 중개하는 사설 또는 공공 네트워크를 통해서 기타 데이터 처리 시스템 또는 원격 포인터 또는 스토리지 디바이스에 결합되는 것을 가능하게 한다. 모뎀, 케이블 모뎀, 및 이더넷 카드는 이용 가능한 네트워크 어댑터의 단지 일부 예이다.
[00175] 도 13을 참조하면, 하나 또는 그 이상의 바람직한 실시 예들을 구현하기 위한 호스트 컴퓨터 시스템(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) 하위 레벨 캐시들을 제공하기 위해 분할된다.
[00176] 한 실시 예에서, 한 명령이 명령 페치 유닛(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)이 통상적으로 실행되는 명령의 제어에 따라 액세스를 처리한다. 명령들은 하드웨어 회로들에서 또는 내부 마이크로코드(펌웨어)에서 또는 이 둘의 조합에 의해서 실행될 수 있다.
[00177] 전술한 바와 같이, 컴퓨터 시스템은 로컬 (또는 메인) 스토리지에 정보를 포함하고, 또한 주소지정(addressing), 보호(protection), 그리고 참조 및 변경 기록(reference and change recording)을 포함한다. 주소지정의 몇 가지 예로는 주소의 형식(format of addresses), 주소 공간의 개념(concept of address spaces), 주소의 여러 유형(various types of addresses), 및 한 유형의 주소가 또 다른 유형의 주소로 변환되는 방식(manner)이 있다. 메인 스토리지의 일부는 영구적으로 할당된 스토리지 위치들을 포함한다. 메인 스토리지는 시스템에 데이터의 직접 주소지정 가능한 고속 액세스 스토리지(fast-access storage)를 제공한다. 데이터와 프로그램들은 모두 (입력 디바이스들로부터) 메인 스토리지로 로드된 후에 처리될 수 있다.
[00178] 메인 스토리지는 때때로 캐시라고 불리는 하나 또는 그 이상의 더 작고 더 고속의 액세스 버퍼 스토리지들을 포함한다. 캐시는 통상적으로 CPU 또는 I/O 프로세서와 물리적으로 연관된다. 구별되는(distinct) 스토리지 매체의 물리적 구축과 사용의 영향들은, 수행 중인 경우를 제외하고는, 일반적으로 프로그램에 의해 관찰되지 않는다.
[00179] 명령들 용과 데이터 오퍼랜드들 용으로 분리된 캐시들이 유지될 수 있다. 캐시 내의 정보는 캐시 블록(cache block) 또는 캐시 라인(또는 줄여서 라인)이라 불리는 인테그럴 경계(integral boundary) 상의 인접 바이트들에 보존된다. 어떤 모델은 캐시 라인의 사이즈를 바이트로 회신하는 EXTRACT CACHE ATTRIBUTE 명령을 제공할 수 있다. 다른 실시 예에서, 이 정보는 예를 들어 파워 아키텍처 플랫폼 레퍼런스(Power Architecture Platform Reference) 명세에 의해 명시된 인터페이스들에 부합하는 펌웨어를 통해 획득될 수 있다. 어떤 모델은 또한 스토리지를 데이터 또는 명령 캐시로의 프리페치(prefetch) 또는 캐시로부터 데이터의 해제를 실현하는 하나 또는 그 이상의 데이터 캐시 블록 터치(debt) 명령, PREFETCH DATA 명령과 PREFETCH DATA RELATIVE LONG 명령을 제공할 수 있다.
[00180] 스토리지는 비트들의 긴 수평의 열(a long horizontal string of bits)로 보여진다. 대부분의 연산들에 있어서, 스토리지에 대한 액세스는 좌측-에서-우측(left-to-right) 순서로 진행된다. 비트들의 문자열(string)은 8 비트의 유닛들로 세분된다. 8-비트 단위를 바이트(byte)라 부르고, 이것은 모든 정보 포맷들의 기본적인 빌딩 블록(building block)이다. 스토리지에서 각 바이트 위치는 음이 아닌 고유한 정수로 식별되고, 이것은 그 바이트 위치의 주소, 또는, 간단히 말해서 바이트 주소(byte address)이다. 인접 바이트 위치들은 좌측의 0부터 시작해서 좌측-에서-우측 순서로 진행되는 연속되는 주소들이다. 주소들은 무부호 2진 정수들이며 24, 31, 또는 64비트이다.
[00181] 정보는 스토리지와 CPU 또는 채널 서브시스템 사이에서, 1 바이트 또는 바이트들의 그룹으로, 한 번에 전송된다. 달리 명시되지 않는 한, 예를 들어, Power ISA 및 z/Architecture에서 스토리지 내 바이트들의 그룹은 그 그룹의 최 좌측 바이트에 의해 주소지정 된다. 그룹 내 바이트의 수는 수행될 연산에 의해 암시되거나 분명하게 명시된다. CPU 연산에서 사용될 때, 바이트들의 그룹은 필드(field)라 불린다. 각 바이트들의 그룹 내에서, 예를 들어, Power ISA 및 z/Architecture에서, 비트들은 좌측-에서-우측 순으로 번호가 붙는다. Power ISA 및 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 바이트의 배수로 또는 다른 배수들로) 변할 수 있다. 정보가 스토리지에 배치될 때, 비록 스토리지에 대한 물리적 경로의 폭이 저장되는 필드의 길이보다 더 클 수 있을지라도, 단지 그 지정된 필드에 포함된 그 바이트 위치들의 내용들만 대체된다.
[00182] 정보의 특정 유닛들(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) 요건들을 갖지 않는다.
[00183] 명령들과 데이터 오퍼랜드들에 대한 분리된 캐시들을 구현하는 디바이스들 상에서, 만일 프로그램이 어떤 캐시 라인에 저장되고 그 캐시 라인으로부터 명령들이 후속적으로 페치되면, 그 저장이 후속적으로 페치되는 명령들을 변경하는지 여부와 상관 없이, 상당한 지연을 겪게 될 것이다.
[00184] 한 예에서, 실시 예는 소프트웨어로 실시될 수 있다(이 소프트웨어는 때때로 라이센스된 내부 코드, 펌웨어, 마이크로-코드, 밀리-코드, 피코-코드 등으로 불리며, 이들 중 어떤 것이든 하나 또는 그 이상의 바람직한 실시 예들에 부합할 것이다). 도 13을 참조하면, 하나 또는 그 이상의 특징들을 구현하는 소프트웨어 프로그램 코드는 CD-ROM 드라이브, 테이프 드라이브 또는 하드 드라이브와 같은 장기 스토리지(long-term storage) 매체 디바이스들(5011)로부터 호스트 시스템(5000)의 프로세서(5001)에 의해 액세스된다. 소프트웨어 프로그램 코드는 디스켓, 하드 드라이브, 또는 CD-ROM과 같은 데이터 처리 시스템에 사용할 용도로 알려진 여러 가지 매체들 중 어느 하나에 구현될 수 있다. 코드는 그러한 매체상에 배포되거나, 또는 사용자들에게 배포될 수 있는데, 한 컴퓨터 시스템의 컴퓨터 메모리(5002)로부터 또는 네트워크(5010)를 통해서 한 컴퓨터 시스템의 스토리지로부터 다른 컴퓨터 시스템들로, 그러한 다른 시스템들의 사용자에 의해 사용될 용도로 배포될 수 있다.
[00185] 소프트웨어 프로그램 코드는 여러 가지 컴퓨터 컴포넌트들의 기능과 상호작용(interaction) 및 하나 또는 그 이상의 애플리케이션 프로그램들을 제어하는 운영체제를 포함한다. 프로그램 코드는 보통으로 스토리지 매체 디바이스(5011)로부터 상대적으로 더 고속의 컴퓨터 스토리지(5002) ― 이것은 프로세서(5001)에 의한 처리에 이용 가능함 ― 로 페이지된다. 메모리 내 소프트웨어 프로그램 코드를 물리적 매체상에 구현하는 기술과 방법, 및/또는 네트워크들을 통해서 소프트웨어 코드를 배포하는 기술과 방법은 잘 알려져 있으며 여기에서는 더 논의하지 않을 것이다. 프로그램 코드는, 유형의 매체(전자 메모리 모듈들(RAM), 플래시 메모리, 컴팩트 디스크(CDs), DVDs, 자기 테이프 등을 포함하나, 이러한 것들로 한정되지 않음)상에 생성되고 저장될 때, 흔히 "컴퓨터 프로그램 제품"으로 불린다. 컴퓨터 프로그램 제품 매체는 통상적으로 처리 회로에 의해 판독 가능하며, 컴퓨터 시스템에서 처리 회로에 의해 실행하기 위해 판독 가능한 것이 바람직하다.
[00186] 도 14는 하나 또는 그 이상의 바람직한 실시 예들이 실시될 수 있는 대표적인 워크스테이션 또는 서버 하드웨어 시스템을 예시한다. 도 14의 시스템(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)에 연결한다.
[00187] 시스템(5021)은 네트워크(5029)와 통신(5028)이 가능한 네트워크 어댑터를 경유하여 다른 컴퓨터들 또는 컴퓨터들의 네트워크들과 통신할 수 있다. 네트워크 어댑터들의 예로는 통신 채널(communications channels), 토큰 링(token ring), 이더넷(Ethernet) 또는 모뎀(modems)이 있다. 이와는 달리, 시스템(5021)은 CDPD(cellular digital packet data) 카드 같은 무선 인터페이스를 사용하여 통신할 수 있다. 시스템(5021)은 근거리 통신망(LAN) 또는 광역 통신망(WAN)에서 다른 컴퓨터들과 연관될 수 있고, 또는 시스템(5021)은 또 다른 컴퓨터와 클라이언트/서버 배열방식(arrangement)에서 클라이언트가 될 수 있다. 이들 모든 구성들과 적절한 통신 하드웨어 및 소프트웨어는 이 기술분야에서 알려져 있다.
[00188] 도 15는 하나 또는 그 이상의 바람직한 실시 예들이 실시될 수 있는 데이터 처리 네트워크(5040)를 예시한다. 데이터 처리 네트워크(5040)는 무선 네트워크와 유선 네트워크 같은 복수의 개별 네트워크들을 포함할 수 있으며, 이들의 각각은 복수의 개별 워크스테이션들(5041, 5042, 5043, 5044)을 포함할 수 있다. 또한, 이 기술분야에서 통상의 지식을 가진 자들은 인식할 수 있는 바와 같이, 하나 또는 그 이상의 LAN들이 포함될 수 있으며, 여기에서 LAN은 호스트 프로세서에 결합된 복수의 지능형(intelligent) 워크스테이션들을 포함할 수 있다.
[00189] 계속해서 도 15를 참조하면, 네트워크들은 또한 게이트웨이 컴퓨터 (클라이언트 서버 5046) 또는 애플리케이션 서버(데이터 저장소를 액세스할 수 있고 또한 워크스테이션 5045로부터 직접 액세스될 수 있는 원격 서버 5048)와 같은 메인프레임 컴퓨터들 또는 서버들을 포함할 수 있다. 게이트웨이 컴퓨터(5046)는 각 개별 네트워크로의 진입점(a point of entry) 역할을 한다. 게이트웨이는 하나의 네트워킹 프로토콜을 또 하나의 네트워킹 프로토콜에 연결할 때 필요하다. 게이트웨이(5046)는 바람직하게는 통신 링크를 통해 또 하나의 네트워크(예를 들면 인터넷 5047)에 결합될 수 있다. 게이트웨이(5046)는 또한 통신 링크를 사용하여 하나 또는 그 이상의 워크스테이션들(5041, 5042, 5043, 5044)에 직접 결합될 수 있다. 게이트웨이 컴퓨터는 인터내셔널 비즈니스 머신즈 코포레이션에서 입수 가능한 IBM Power Systems 서버 및 IBM eServer System z 서버 중 하나를 활용하여 구현될 수 있다.
[00190] 도 14와 도 15를 동시에 참조하면, 하나 또는 그 이상의 특징들을 구현할 수 있는 소프트웨어 프로그래밍 코드(5031)가 시스템(5020)의 프로세서(5026)에 의해, CD-ROM 드라이브 또는 하드 드라이브와 같은, 장기 스토리지 매체(5027)로부터 액세스될 수 있다. 소프트웨어 프로그래밍 코드는 디스켓, 하드 드라이브, 또는 CD-ROM과 같은 데이터 처리 시스템과 함께 사용할 용도로 알려진 여러 가지 매체들 중 어느 하나에 구현될 수 있다. 코드는 그러한 매체상에 배포되거나, 또는 사용자들(5050, 5051)로 배포될 수 있는데, 상기 메모리로부터 또는 네트워크를 통해서 한 컴퓨터의 스토리지로부터 다른 컴퓨터 시스템들로, 그러한 다른 시스템들의 사용자에 의해 사용될 용도로 배포될 수 있다.
[00191] 이와는 달리, 프로그래밍 코드는 메모리(5025)에 구현되고, 프로세서 버스를 사용하여 프로세서(5026)에 의해 액세스될 수 있다. 이러한 프로그래밍 코드는 여러 가지 컴퓨터 컴포넌트들의 기능과 상호작용 및 하나 또는 그 이상의 애플리케이션 프로그램들(5032)을 제어하는 운영체제를 포함한다. 프로그램 코드는 보통으로 스토리지 매체(5027)로부터 고속의 메모리(5025) ― 이것은 프로세서(5026)에 의한 처리에 이용 가능함 ― 로 페이지된다. 메모리 내 소프트웨어 프로그래밍 코드를 물리적 매체상에 구현하는 기술과 방법, 및/또는 네트워크들을 통해서 소프트웨어 코드를 배포하는 기술과 방법은 잘 알려져 있으며 여기에서는 더 논의하지 않을 것이다. 프로그램 코드는, 유형의 매체(전자 메모리 모듈들(RAM), 플래시 메모리, 컴팩트 디스크(CDs), DVDs, 자기 테이프 등을 포함하나, 이러한 것들로 한정되지 않음)상에 생성되고 저장될 때, 흔히 "컴퓨터 프로그램 제품"으로 불린다. 컴퓨터 프로그램 제품 매체는 통상적으로 처리 회로에 의해 판독 가능하며, 컴퓨터 시스템에서 처리 회로에 의해 실행하기 위해 판독 가능한 것이 바람직하다.
[00192] 프로세서가 가장 쉽게 이용 가능한 캐시(보통으로 프로세서의 다른 캐시들보다 더 빠르고 더 작음)는 가장 낮은 (L1 또는 레벨 1) 캐시이고 메인 저장소(메인 메모리)는 가장 높은 레벨의 캐시(만일 3개의 레벨이 있다면 L3)이다. 가장 낮은 레벨의 캐시는 흔히 실행될 기계어 명령들을 보유하는 명령 캐시(I-캐시)와 데이터 오퍼랜드들을 보유하는 데이터 캐시(D-캐시)로 나뉜다.
[00193] 도 16을 참조하면, 예시적인 프로세서 실시 예가 프로세서(5026)에 대해 도시된다. 프로세서 성능을 향상시키기 위해서 메모리 블록들을 버퍼하기 위해 통상적으로 하나 또는 그 이상의 캐시(5053) 수준들이 채용된다. 캐시(5053)는 사용될 가능성이 있는 메모리 데이터의 캐시 라인들을 보유하는 고속 버퍼이다. 통상적인 캐시 라인들은 64, 128 또는 256 바이트의 메모리 데이터이다. 별개의 캐시들은 흔히 데이터를 캐시하기 위해서보다는 명령들을 캐시하기 위해 채용된다. 이 기술분야에서 잘 알려진 "스누프(snoop)" 알고리즘들에 의해 캐시 일관성(cache coherence)(메모리 내 라인들의 사본들과 캐시들의 동기화(synchronization))이 종종 제공된다. 프로세서 시스템의 메인 메모리 스토리지(5025)는 종종 캐시로 불린다. 4개 레벨의 캐시(5053)를 가진 프로세서 시스템에서, 메인 스토리지(5025)는 때로 레벨 5(L5) 캐시로 불리는데, 왜냐하면 그것은 통상적으로 더 빠르며 컴퓨터 시스템이 이용 가능한 비휘발성 스토리지(DASD, 테이프 등)의 일부분만을 보유하기 때문이다. 메인 스토리지(5025)는 운영체제에 의해 메인 스토리지(5025)의 안팎으로(in and out of) 페이지되는 데이터의 페이지들을 "캐시"한다.
[00194] 프로그램 카운터(명령 카운터)(5061)는 실행될 현재 명령의 주소를 추적한다. z/Architecture 프로세서 내 프로그램 카운터는 64 비트이고 이전의 주소지정 한계(addressing limits)를 지원하기 위해 31 비트 또는 24 비트로 잘려질 수 있다. Power Architecture 프로세서 내 프로그램 카운터는 64 비트이고 이전의 주소지정 한계(addressing limits)를 지원하기 위해 32 비트로 잘려질 수 있다. 프로그램 카운터는 통상적으로 컴퓨터의 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)이 수행된다.
[00195] 통상적으로 프로세서(5026)를 대신하여 명령들을 페치하기 위해 명령 페치 유닛(5055)이 채용된다. 페치 유닛은 "다음 순차의 명령들"이나, 분기 채택 명령들의 타겟 명령들, 또는 컨텍스트 전환에 뒤이은 프로그램의 첫 번째 명령들을 페치한다. 현대 명령 페치 유닛들(modern Instruction fetch units)은 프리페치된(prefetched) 명령들이 사용될 수 있는 가능성에 기초하여 추론적으로 명령들을 프리페치하는 프리페치 기술들을 종종 채용한다. 예를 들어, 페치 유닛은 16 바이트의 명령 ― 이는 그 다음 순차 명령 및 그 이후 순차 명령들의 추가 바이트들을 포함함 ― 을 페치할 수 있다.
[00196] 그런 다음, 페치된 명령들이 프로세서(5026)에 의해 실행된다. 한 실시 예에서, 페치된 명령(들)은 페치 유닛의 디스패치 유닛(5056)으로 보내진다. 디스패치 유닛이 그 명령(들)을 디코드하고, 디코드된 명령(들)에 관한 정보를 적절한 유닛들(5057, 5058, 5060)로 전달한다. 실행 유닛(5057)이 통상적으로 명령 페치 유닛(5055)으로부터 디코드된 산술 명령들(arithmetic instructions)에 관한 정보를 수신할 것이고, 그 명령의 오피코드(opcode)에 따라 오퍼랜드들에 대한 산술 연산들(arithmetic operations)을 수행할 것이다. 오퍼랜드들이 바람직하게는, 메모리(5025), 아키텍처화된 레지스터들(5059)로부터 또는 실행되고 있는 명령의 즉시 필드(immediate field)로부터 실행 유닛(5057)에 제공된다. 저장될 때, 실행의 결과들이 메모리(5025)나, 레지스터들(5059)에 또는 다른 머신 하드웨어(예를 들어, 제어 레지스터들, PSW 레지스터들 및 그와 유사한 것)에 저장된다.
[00197] 가상 주소들은 동적 주소 변환(5062)을 이용하여, 선택적으로, 액세스 레지스터 변환(5063)을 이용하여 실제 주소들로 변환된다.
[00198] 통상적으로 프로세서(5026)는 명령의 기능을 실행하기 위한 하나 또는 그 이상의 유닛들(5057, 5058, 5060)을 갖는다. 도 17a를 참조하면, 실행 유닛(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)은 다양하며, 본 설명은 본 발명의 한 실시 예에 관한 대표적인 이해를 제공하려는 의도일 뿐이다.
[00199] 예를 들어, ADD 명령은 산술 및 논리 기능을 갖는 실행 유닛(5057)에서 실행될 것이고, 한편 예를 들어 부동 소수점 명령은 특수한 부동 소수점 능력을 갖는 부동 소수점 실행에서 실행될 것이다. 바람직하게는, 실행 유닛은 오퍼랜드들에 관한 오피코드 정의 기능(opcode defined function)을 수행함으로써 명령에 의해 식별된 오퍼랜드들에 관해 연산한다. 예를 들어, ADD 명령은 그 명령의 레지스터 필드들에 의해 식별되는 두 개의 레지스터들(5059)에서 발견되는 오퍼랜드들에 관해 실행 유닛(5057)에 의해 실행될 수 있다.
[00200] 실행 유닛(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는 빅 엔디언이다. IBM Power ISA는 빅 엔디언(Big Endian) 실행 모드와 리틀 엔디언(Little Endian) 실행 모드를 모두 지원한다. 부호화된 필드들(signed fields)은 아키텍처에 따라, 부호(sign) 및 크기(magnitude), 1의 보수 또는 2의 보수일 수 있다. 2의 보수에서 음의 값 또는 양의 값은 단지 ALU 내에서 덧셈만을 필요로 하므로, ALU가 뺄셈 능력을 설계할 필요가 없다는 점에서 2의 보수가 유리하다. 숫자들은 일반적으로 속기(shorthand)로 기술되는데, 12 비트 필드는 예를 들어, 4,096 바이트 블록의 주소를 정의하고 일반적으로 4Kbyte(Kilobyte) 블록으로 기술된다.
[00201] 도 17b를 참조하면, 분기 명령을 실행하기 위한 분기 명령 정보는 통상적으로 분기 유닛(5058)으로 보내지는데, 이 분기 유닛(5058)은 다른 조건부 연산들(conditional operations)이 완료되기 전에 그 분기의 결과를 예측하도록 분기 이력 테이블(5082)과 같은 분기 예측 알고리즘을 흔히 채용한다. 현재 분기 명령의 타겟은, 그 조건부 연산들이 완료되기 전에 페치되고 추론적으로 실행될 것이다. 조건부 연산들이 완료될 때, 추론적으로 실행된 분기 명령들은 조건부 연산 및 추론된 결과의 조건들에 기초하여 완료되거나 폐기된다. 통상적인 분기 명령은, 만일 그 조건 코드들이 분기 명령의 분기 요건을 충족한다면, 조건 코드들을 테스트하고 타겟 주소로 분기할 수 있고, 타겟 주소는, 예를 들어, 레지스터 필드들 또는 그 명령의 즉시 필드에서 발견되는 수들을 포함하는 몇 개의 수들에 기초하여 계산될 수 있다. 분기 유닛(5058)은 복수의 입력 레지스터 회로들(5075, 5076, 5077) 및 출력 레지스터 회로(5080)를 갖는 ALU(5074)를 채용할 수 있다. 분기 유닛(5058)은, 예를 들어, 범용 레지스터들(5059), 디코드 디스패치 유닛(5056) 또는 기타 회로들(5073)과 통신할 수 있다(5081).
[00202] 명령들의 그룹의 실행은 여러 가지 이유들로 인터럽트될 수 있는데, 이러한 이유들에는, 예를 들어, 운영체제에 의해 개시되는 컨텍스트 전환, 컨텍스트 전환을 초래하는 프로그램 예외 또는 에러, 컨텍스트 전환 또는 (멀티-스레드 환경에서) 복수의 프로그램들의 멀티스레딩 활동을 초래하는 I/O 인터럽션 신호가 포함된다. 바람직하게는 컨텍스트 전환 액션은 현재 실행중인 프로그램에 관한 상태 정보(state information)를 세이브하고, 그런 다음 호출되는 또 다른 프로그램에 관한 상태 정보를 로드한다. 상태 정보는, 예를 들어, 하드웨어 레지스터들 또는 메모리에 저장될 수 있다. 바람직하게는, 상태 정보는 실행될 다음 명령을 가리키는 프로그램 카운터 값, 조건 코드들, 메모리 변환 정보 및 아키텍처화된 레지스터 콘텐츠를 포함한다. 컨텍스트 전환 활동은, 하드웨어 회로들, 애플리케이션 프로그램들, 운영체제 프로그램들 또는 펌웨어 코드(마이크로코드, 피코-코드 또는 라이센스된 내부 코드(LIC)) 단독으로 또는 이것들의 조합으로 실행될 수 있다.
[00203] 프로세서는 명령 정의 방법들(instruction defined methods)에 따라 오퍼랜드들에 액세스한다. 명령은 명령의 일부분의 값을 사용하는 즉시 오퍼랜드(immediate operand)를 제공할 수 있고, 범용 레지스터들 또는 특수 목적용 레지스터들(예를 들어, 부동 소수점 레지스터들)을 분명하게 가리키는 하나 또는 그 이상의 레지스터 필드들을 제공할 수 있다. 명령은 오피코드 필드에 의해 오퍼랜드들로서 식별되는 암시 레지스터들(implied registers)을 이용할 수 있다. 명령은 오퍼랜드들에 대한 메모리 위치들을 이용할 수 있다. 오퍼랜드의 메모리 위치는 레지스터, 즉시 필드(immediate field), 또는 레지스터들과 즉시 필드의 조합에 의해 제공될 수 있고, 전형적인 예로는 z/Architecture 장 변위(long displacement) 퍼실리티가 있고, 여기서 명령은 기준 레지스터(base register), 인덱스 레지스터 및 즉시 필드(변위 필드)를 정의하고 이것들은 함께 더해져서 예를 들어 메모리에서 오퍼랜드의 주소를 제공하고; 또는 Power ISA 주소지정 모드들이 있으며, 여기서 D-Form 주소들이 기준 레지스터 및 즉시 필드(변위 필드)를 정의하고 이것들은 함께 더해져서 메모리에서 오퍼랜드의 주소를 제공하며; 여기서 X-Form 주소들은 기준 레지스터 및 인덱스 레지스터를 정의하고 이것들은 함께 더해져서 메모리에서 오퍼랜드의 주소를 제공한다. 만일 다르게 표시되지 않는다면, 여기서의 위치는 통상적으로 메인 메모리(메인 스토리지) 내 위치를 암시한다.
[00204] 도 17c를 참조하면, 프로세서는 로드/저장 유닛(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)를 포함한다. 일부 연산들은 순서가 바뀔 수 있으나, 이 기술분야에서 잘 알려진 바와 같이, 로드/저장 유닛은, 순서가 바뀐 연산들이 그 프로그램에 순서대로 수행된 것처럼 나타나도록 하는 기능을 제공한다.
[00205] 바람직하게는, 애플리케이션 프로그램이 "보는(sees)" 주소들은 흔히 가상 주소들로 불린다. 가상 주소들은 때로는 "논리적 주소들(logical addresses)" 및 "유효 주소들(effective addresses)"로 불린다. 이들 가상 주소들은 여러 가지 동적 주소 변환(DAT) 기술들 중 하나에 의해 물리적 메모리 위치로 다시 보내진다는 점에서 가상이고, 상기 여러 가지 동적 주소 변환(DAT) 기술들에는, 단순히 오프셋 값으로 가상 주소를 프리픽싱(prefixing)하는 것, 하나 또는 그 이상의 변환 테이블들을 통해 가상 주소를 변환하는 것이 포함될 수 있으나, 이러한 것들로 한정되는 것은 아니며, 바람직하게는, 변환 테이블들은 적어도 세그먼트 테이블 및 페이지 테이블만을 또는 이것들의 조합을 포함하며, 바람직하게는, 세그먼트 테이블은 페이지 테이블을 가리키는 엔트리를 갖는다. z/Architecture에서는, 변환의 계층(hierarchy of translation)이 제공되는데, 이 변환의 계층에는 영역 제1 테이블, 영역 제2 테이블, 영역 제3 테이블, 세그먼트 테이블 및 선택적인 페이지 테이블이 포함된다. 주소 변환의 수행은 흔히 변환 룩어사이드 버퍼(TLB)를 이용하여 향상되는데, 이 변환 룩어사이드 버퍼는 연관된 물리적 메모리 위치에 가상 주소를 맵핑하는 엔트리들을 포함한다. DAT가 변환 테이블들을 사용하여 가상 주소를 변환할 때, 엔트리들이 생성된다. 그런 다음, 후속적으로 가상 주소를 사용할 때 느린 연속적인 변환 테이블 액세스들보다 오히려 빠른 TLB의 엔트리를 이용할 수 있다. TLB 콘텐츠는 LRU(Least Recently used)를 포함하는 여러 가지 대체 알고리즘들에 의해 관리될 수 있다.
[00206] 프로세서가 멀티-프로세서 시스템의 프로세서인 경우, 각각의 프로세서는 I/O, 캐시들, TLB들 및 메모리와 같은 공유 리소스들(shared resources)을 일관성(coherency)을 위해 인터로크(interlock)를 유지하는 역할을 한다. 통상적으로, "스누프(snoop)" 기술들이 캐시 일관성을 유지하는 데 이용될 것이다. 스누프 환경에서, 각각의 캐시 라인은 공유를 용이하게 하기 위해, 공유 상태(shared state), 독점 상태(exclusive state), 변경된 상태(changed state), 무효 상태(invalid state) 중 어느 하나에 있는 것으로 표시될 수 있다.
[00207] I/O 유닛들(5054, 도 16)은 프로세서에 주변기기들에 연결하기 위한 수단을 제공하는데, 예를 들어, 그 주변기기에는 테이프, 디스크, 프린터, 디스플레이, 및 네트워크가 포함된다. I/O 유닛들은 흔히 소프트웨어 드라이버들에 의해 컴퓨터 프로그램에 제공된다. IBM®의 System z 같은 메인프레임들에서, 채널 어댑터들 및 오픈 시스템 어댑터들은 운영체제와 주변 디바이스들 사이의 통신을 가능하게 하는, 메인프레임의 I/O 유닛들이다. IBM®의 Power Systems 같은 RISC 서버들에서, 사유권 있는(proprietary) 어댑터들 및 오픈 시스템 어댑터들은 I/O 유닛들이고, 이 유닛들은 운영체제와 주변기기들 사이에 통신을 제공한다.
[00208] 또한, 다른 종류의 컴퓨팅 환경들도 하나 또는 그 이상의 특징들로부터 이득을 얻을 수 있다. 한 예로, 환경(environment)은 에뮬레이터(예, 소프트웨어 또는 다른 에뮬레이션 메커니즘들)를 포함할 수 있으며, 이 에뮬레이터에서 특정 아키텍처(예를 들어, 명령 실행, 주소 변환과 같은 아키텍처화된 함수들, 및 아키텍처화된 레지스터들을 포함함) 또는 그것의 서브세트(subset)가 (예를 들어, 프로세서 및 메모리를 갖는 네이티브 컴퓨터 시스템 상에서) 에뮬레이트 된다. 이러한 환경에서, 비록 그 에뮬레이터를 실행하는 컴퓨터가 에뮬레이트될 능력들과는 다른 아키텍처를 가질 수 있지만, 에뮬레이터의 하나 또는 그 이상의 에뮬레이션 기능들은 하나 또는 그 이상의 바람직한 실시 예들을 구현할 수 있다. 한 예로서, 에뮬레이션 모드에서, 에뮬레이트될 특정 명령 또는 연산이 디코드되어, 적절한 에뮬레이션 기능이 개별 명령 또는 연산을 구현하도록 구축된다.
[00209] 에뮬레이션 환경에서, 호스트 컴퓨터는, 예를 들어, 명령들 및 데이터를 저장하는 메모리, 메모리로부터 명령들을 페치하고 또한 선택적으로 그 페치된 명령을 위한 로컬 버퍼링을 제공하는 명령 페치 유닛, 페치된 명령들을 수신하고 페치된 명령들의 유형을 결정하는 명령 디코드 유닛, 및 명령들을 실행하는 명령 실행 유닛을 포함한다. 실행은 메모리로부터 레지스터 내에 데이터를 로딩하는 것; 레지스터로부터 메모리로 다시 데이터를 저장하는 것; 또는 디코드 유닛에 의해 결정된 바와 같이, 산술 또는 논리 연산의 몇몇 유형을 수행하는 것을 포함할 수 있다. 한 예에서, 각각의 유닛은 소프트웨어에서 구현된다. 예를 들어, 그 유닛들에 의해 수행되고 있는 연산들은 에뮬레이터 소프트웨어 내에서 하나 또는 그 이상의 서브루틴들로서 구현된다.
[00210] 더 구체적으로는, 메인프레임에서, 아키텍처화된 머신 명령들(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도 사용될 수 있다. 에뮬레이션 모드에서, 에뮬레이션 소프트웨어는 네이티브 프로세서에 의해 실행되어 에뮬레이트된 프로세서의 아키텍처를 에뮬레이트한다.
[00211] 네이티브 프로세서(native processor)는 통상적으로 에뮬레이트된 프로세서의 에뮬레이션을 수행하기 위해 펌웨어(firmware) 또는 네이티브 운영체제를 포함하는 에뮬레이션 소프트웨어를 실행한다. 에뮬레이션 소프트웨어는 그 에뮬레이트된 프로세서 아키텍처의 명령들을 페치 및 실행하는 역할을 한다. 에뮬레이션 소프트웨어는 명령 경계들(instruction boundaries)을 추적하기 위해 에뮬레이트된 프로그램 카운터를 유지한다. 에뮬레이션 소프트웨어는 한 번에 하나 또는 그 이상의 에뮬레이트된 머신 명령들을 페치하여, 하나 또는 그 이상의 그 에뮬레이트된 머신 명령들을 네이티브 프로세서에 의해 실행하기 위한 네이티브 머신 명령들의 대응 그룹으로 변환시킬 수 있다. 이들 변환된 명령들은 캐시되어 더 빠른 변환이 수행될 수 있도록 할 수 있다. 그럼에도 불구하고, 에뮬레이션 소프트웨어는, 운영체제들 및 에뮬레이트된 프로세서를 위해 작성된 애플리케이션들이 정확하게 연산되도록 보장하기 위해, 그 에뮬레이트된 프로세서 아키텍처의 아키텍처 규칙들을 유지해야 한다. 더 나아가, 에뮬레이션 소프트웨어는 그 에뮬레이트된 프로세서 아키텍처에 의해 식별된 자원들을 제공해야 하며 ― 이 자원들에는 제어 레지스터들, 범용 레지스터들, 부동 소수점 레지스터들, 예를 들어 세그먼트 테이블들 및 페이지 테이블들을 포함하는 동적 주소 변환 함수, 인터럽트 메커니즘들, 컨텍스트 전환 메커니즘들, TOD(Time of Day) 클록들 및 I/O 서브시스템들에 대한 아키텍처화된 인터페이스들이 포함됨 ― 그리하여 운영체제, 또는 에뮬레이트된 프로세서 상에서 실행되도록 지정된 애플리케이션 프로그램이, 에뮬레이션 소프트웨어를 갖는 네이티브 프로세서상에서 실행될 수 있도록 한다.
[00212] 에뮬레이트될 특정 명령이 디코드되고, 서브루틴이 개별 명령의 기능을 수행하기 위해 호출(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)" 등이 포함되나, 이러한 것들로 한정되는 것은 아님, 이들 각각은 여기에서 그 전체가 참조로써 포함됨 ― 이 기술 분야에서 통상의 지식을 가진 자들이 이용할 수 있는 타겟 머신에 대한 다른 머신을 위해 아키텍처화된 명령 포맷의 에뮬레이션을 달성하는 알려진 여러 가지 방법들을 예시하고 있다.
[00213] 도 18에서는, 호스트 아키텍처의 호스트 컴퓨터 시스템(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)를 보조할 수 있다.
[00214] 본 발명의 다른 실시 예에서, 하나 또는 그 이상의 특징들은 클라우드 컴퓨팅과 관련이 있다. 본 발명은 클라우드 컴퓨팅에 관해 상세한 설명을 포함하고 있지만, 여기에 언급되는 원리들의 구현은 클라우드 컴퓨팅 환경에 한정되지 않는다는 것을 미리 이해할 필요가 있다. 그보다, 본 발명의 바람직한 실시 예들은 현재 알려지거나 또는 앞으로 개발되는 다른 종류의 컴퓨팅 환경들과 함께 구현될 가능성이 있다.
[00215] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 스토리지, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[00216] 특성들은 다음과 같다:
주문형 셀프-서비스(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) 계측 기능을 이용하여서 그렇게 한다. 리소스 사용량은 모니터되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[00217] 서비스 모델들(Service Models)은 다음과 같다:
소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 디바이스들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.
플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 스토리지를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 리소스들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.
[00218] 배치 모델들(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))에 의해 서로 결합되어 있다.
[00219] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.
[00220] 이제 도 19를 참조하면, 클라우드 컴퓨팅을 예시하는 개략도가 도시된다. 클라우드 컴퓨팅 노드(6010)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 여기에 기술된 본 발명의 바람직한 실시 예들의 사용 또는 기능의 범위를 한정하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(6010)에는 여기에서 기술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.
[00221] 클라우드 컴퓨팅 노드(6010)에, 컴퓨터 시스템/서버(6012)가 위치하고, 이것은 다른 수많은 범용 또는 특수용 컴퓨팅 시스템 환경들 또는 구성들과 동작 가능하다. 컴퓨터 시스템/서버(6012)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들에는 개인용 컴퓨터 시스템, 서버 컴퓨터 시스템, 씬 클라이언트(thin clients), 씩 클라이언트(thick clients), 포켓용 또는 휴대용 디바이스(handheld or laptop devices), 다중 프로세서 시스템(multiprocessor systems), 마이크로프로세서-기반 시스템(microprocessor-based systems), 셋톱박스(set top boxes), 프로그램가능 소비자 가전(programmable consumer electronics), 네트워크 PC, 미니컴퓨터 시스템, 메인프레임 컴퓨터 시스템, 그리고 상기 시스템들 또는 디바이스들 중 어느 하나를 포함하는 분산 클라우드 컴퓨팅 환경 및 그와 유사한 것들이 포함되나 이에 한정되지는 않는다.
[00222] 컴퓨터 시스템/서버(6012)는 컴퓨터 시스템에 의해 실행되는 프로그램 모듈들 같은 컴퓨터 시스템 실행 가능한 명령들의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈들에는 특정한 태스크들을 수행하거나 특정한 추상적인 데이터 유형들을 구현하는 루틴들(routines), 프로그램들, 객체들(objects), 컴포넌트들, 로직, 데이터 구조들 등이 포함될 수 있다. 컴퓨터 시스템/서버(6012)는 분산 클라우드 컴퓨팅 환경들에서 실시될 수 있으며, 여기서 태스크들은 통신 네트워크를 통해 연결되는 원격 처리 디바이스들에 의해 수행된다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하여 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[00223] 도 19에 도시된 바와 같이, 클라우드 컴퓨팅 노드(6010) 내 컴퓨터 시스템/서버(6012)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(6012)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 장치들(6016), 시스템 메모리(6028), 및 시스템 메모리(6028)를 프로세서(6016)에 연결하는 것을 포함하여 다양한 시스템 컴포넌트들을 연결하는 버스(6018)를 포함할 수 있으나 이에 한정되지는 않는다.
[00224] 버스(6018)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽 포트(accelerated graphics port), 및 다양한 버스 아키텍처들 중 하나를 사용하는 프로세서 또는 로컬 버스를 포함하여 하나 또는 그 이상의 다양한 유형의 버스 구조들 중 하나를 대표한다. 한정되지 않는 예로서, 그러한 아키텍처들에는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 확장 ISA(EISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함된다.
[00225] 컴퓨터 시스템/서버(6012)는 통상적으로 다양한 컴퓨터 시스템 판독가능 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(6012)에 의해 액세스될 수 있는 이용 가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 탈착 및 비탈착 매체 모두를 포함한다.
[00226] 시스템 메모리(6028)는 랜덤 액세스 메모리(RAM)(6030) 및/또는 캐시 메모리(6032) 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독가능 매체를 포함할 수 있다. 컴퓨터 시스템/서버(6012)는 다른 탈착/비탈착, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 더 포함할 수 있다. 단지 예시로서 말하면, 스토리지 시스템(6034)은 비탈착, 비휘발성 자기 매체(도시되지 않으며 통상적으로 "하드 드라이브"라 부름)에서/로 읽어오고 쓸 수 있다. 도시되진 않지만, 탈착 가능 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터 읽어오고 그것에 쓰기 위한 자기 디스크 드라이브, 및 CD-ROM, DVD-ROM 또는 기타 광학 매체 같은 탈착 가능 비휘발성 광학 디스크로부터 읽어오고 그것에 쓰기 위한 광학 디스크가 제공될 수 있다. 이러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(6018)에 연결될 수 있다. 아래에 묘사되고 기술되는 바와 같이, 메모리(6028)는 본 발명의 바람직한 실시 예들의 기능들을 실행하도록 구성된 일 세트(적어도 하나)의 프로그램 모듈들을 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[00227] 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터뿐 아니라, 일 세트(적어도 하나)의 프로그램 모듈들(6042)을 갖는, 프로그램/유틸리티(6040)는, 예로서 메모리(6028)에 저장될 수 있고, 이에 한정되지 않는다. 상기 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 몇몇 조합의 각각은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(6042)은 일반적으로 여기에 기술된 바와 같은 본 발명의 바람직한 실시 예들의 기능들 및/또는 방법들을 실행한다.
[00228] 컴퓨터 시스템/서버(6012)는 또한 키보드, 포인팅 디바이스, 디스플레이(6024) 등의 하나 또는 그 이상의 외부 디바이스들(6014); 사용자가 컴퓨터 시스템/서버(6012)와 상호작용할 수 있게 해주는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(6012)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 해주는 기타 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과 통신할 수 있다. 그러한 통신은 입력/출력(I/O) 인터페이스들(6022)을 통해 일어날 수 있다. 또한, 컴퓨터 시스템/서버(6012)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 공공 네트워크(예를 들어, 인터넷) 등의 하나 또는 그 이상의 네트워크들과 네트워크 어댑터(6020)를 통해 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(6020)는 컴퓨터 시스템/서버(6012)의 다른 컴포넌트들과 버스(6018)를 통해 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들도 컴퓨터 시스템/서버(6012)와 함께 사용될 수 있다는 것을 이해해야 한다. 예들은 다음과 같으며, 이에 한정되지 않는다: 마이크로코드, 디바이스 드라이버들, 중복 처리 장치들(redundant processing units), 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들, 및 데이터 아카이브 스토리지 시스템들 등.
[00229] 이제 도 20을 참조하면, 예시적인 클라우드 컴퓨팅 환경(6050)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(6050)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(6010)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(6054A), 데스크탑 컴퓨터(6054B), 휴대용 컴퓨터(6054C), 및/또는 자동차용 컴퓨터 시스템(6054N)과 통신할 수 있다. 노드들(6010)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 디바이스 상에 리소스들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(6050)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 20에 도시된 컴퓨팅 디바이스들(6054A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(6010)과 클라우드 컴퓨팅 환경(6050)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[00230] 이제 도 21를 참조하면, 클라우드 컴퓨팅 환경(6050, 도 20)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 21에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:
하드웨어 및 소프트웨어 계층(6060)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들, 한 예로서 IBM® zSeries® 시스템들; RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들, 한 예로서 IBM pSeries® 시스템들; IBM xSeries® 시스템들; IBM BladeCenter® 시스템들; 스토리지 디바이스들; 네트워크 및 네트워킹 컴포넌트들이 포함된다. 소프트웨어 컴포넌트들의 예들에는 네트워크 애플리케이션 서버 소프트웨어, 한 예로서 IBM WebSphere® 애플리케이션 서버 소프트웨어; 및 데이터베이스 소프트웨어, 한 예로서 IBM DB2® 데이터베이스 소프트웨어가 포함된다. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, 및 DB2는 전세계 여러 국가들에 등록된 인터내셔널 비즈니스 머신즈 코포레이션의 상표들이다.)
가상화 계층(6062)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버; 가상 스토리지; 가상 사설 네트워크를 포함하는, 가상 네트워크; 가상 애플리케이션 및 운영체제; 및 가상 클라이언트.
[00231] 한 예에서, 관리 계층(6064)은 아래에 기술하는 기능들을 제공한다. 리소스 제공(Resource provisioning)은 클라우드 컴퓨팅 환경 내에서 태스크들을 수행하는 데 이용되는 컴퓨팅 리소스들 및 기타 리소스들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)은 리소스들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 리소스들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 리소스들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 리소스들뿐 아니라 클라우드 소비자들과 태스크들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 리소스 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 계획 및 충족(planning and fulfillment)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 리소스들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[00232] 워크로드 계층(6066)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션; 소프트웨어 개발 및 라이프사이클 관리; 가상 교실 교육 전달; 데이터 분석 처리; 및 트랜잭션 처리.
[00233] 본 명세서 내에 사용되는 용어는 단지 특정 실시 예들을 기술할 목적으로 사용된 것이지 한정하려는 의도로 사용된 것은 아니다. 여기에서 사용할 때, 단수 형태는 그 컨텍스트에서 그렇지 않은 것으로 명시되어 있지 않으면, 복수 형태도 또한 포함할 의도로 기술된 것이다. 또한, "포함한다" 및/또는 "포함하는" 이라는 말들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하는 것은 아니라는 것을 이해할 수 있을 것이다.
[00234] 이하의 청구항들에서, 구조들(structures), 재료들(materials), 동작들(acts), 및 모든 수단의 등가물들 또는 단계 플러스 기능 엘리먼트들은 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 동작을 포함할 의도가 있다. 하나 또는 그 이상의 바람직한 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 많은 수정 예들 및 변형 예들이 있을 수 있다는 것을 알 수 있다. 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 가지 수정 예들을 갖는 다양한 바람직한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.
Claims (20)
- 컴퓨팅 환경 내 처리(processing)를 관리하기 위한 방법에 있어서, 상기 방법은:
제1 아키텍처 모드(a first architectural mode)에서 처리하는 호스트 프로세서에 의해서, 제1 게스트 가상 머신(a first guest virtual machine)을 개시하는 단계(initiating) ― 상기 제1 게스트 가상 머신은 상기 제1 아키텍처 모드에서 처리하고 상기 제1 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 가짐 ― 및 제1 세트의 아키텍처 기능들(a first set of architectural functions)을 제공하는 단계(providing);
상기 호스트 프로세서에 의해서, 제2 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리하고, 상기 제2 아키텍처 모드는 제2 명령 세트 아키텍처를 가짐 ― 및 제2 세트의 아키텍처 기능들(a second set of architectural functions)을 제공하는 단계(providing) ― 상기 제2 세트의 아키텍처 기능들은 상기 제1 세트의 아키텍처 기능들에서 제공된 아키텍처 기능들의 감소된 세트(a reduced set)이고, 상기 제1 세트의 아키텍처 기능들에서 제공되는 선택된 아키텍처 기능(a selected architectural function)이 상기 제2세트의 아키텍처 기능들로부터는 결여되어 있으며(absent), 상기 제2 아키텍처 모드는 기능 금지 모드(a function inhibit mode)임 ―; 및
상기 제2 아키텍처 모드에서 상기 제2 게스트 가상 머신에 의한 처리를 수행하는 단계(performing) ― 상기 처리를 수행하는 단계는 상기 제2 게스트 가상 머신의 실행을 제어하도록 정의된 상기 선택된 아키텍처 기능과 연관된 하나 또는 그 이상의 제어들을 무시함(override) ― 를 포함하는
방법. - 제1항에 있어서, 상기 선택된 아키텍처 기능은 동적 주소 변환(dynamic address translation)을 포함하는
방법. - 제2항에 있어서, 상기 호스트 프로세서 및 상기 제1 게스트 가상 머신 중 적어도 하나는 동적 주소 변환을 사용하여 한 주소를 다른 주소로 변환하고, 그리고 상기 제2 게스트 가상 머신에 대해서는, 제어 블록 내 표시자(an indicator)가 동적 주소 변환이 턴온(turned on)임을 표시하더라도, 동적 주소 변환이 이용 가능하지 않는
방법. - 이전의 항들 중 어느 한에 있어서, 상기 방법은: 연산을 수행하기 위한 요청을 상기 제2 게스트 가상 머신에 의해서 획득하는 단계(obtaining) ― 상기 연산은 상기 선택된 아키텍처 기능을 사용하거나 동작 가능하게 하기 위한 것임 ―;
상기 요청을 획득하는 것에 기초하여, 상기 제2 게스트 가상 머신이 상기 제2 아키텍처 모드에서 처리하는 지를 결정하는 단계(determining); 및
상기 제2 게스트 가상 머신이 상기 제2 아키텍처 모드에서 처리한다고 결정하는 것에 기초하여, 상기 선택된 아키텍처 기능이 사용되지 않거나 또는 동작 가능하게 되지 않을 것이라는 표시를 제공하는 단계(providing)를 더 포함하는
방법. - 제4항에 있어서, 상기 표시를 제공하는 단계는 에러(an error)를 표시하는 단계를 포함하는
방법. - 제5항에 있어서, 상기 에러는 예외(an exception)인
방법. - 제4항 내지 제6항 중 어느 한 항에 있어서, 상기 연산은 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 로드 프로그램 상태 워드 명령(a load program status word instruction), 로드 실제 주소 명령(a load real address instruction), 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 세트 시스템 마스크 명령(a set system mask instruction), 또는 인터럽션(an interruption) ― 상기 인터럽션에서 인터럽션 프로그램 상태 워드는 상기 선택된 아키텍처 기능을 턴온시키려고 시도함 ― 중 하나를 포함하는
방법. - 이전의 항들 중 어느 한 항에 있어서, 상기 선택된 아키텍처 기능에 대한 동작 가능/동작 불가능 표시자(an enabling/disabling indicator)가 동작 가능하게 되었는지(enabled)에 상관없이 상기 컴퓨팅 환경의 표시자가 상기 선택된 아키텍처 기능은 지원되지 않는다고 표시하는 것에 기초하여 상기 선택된 아키텍처 기능은 상기 제2세트의 아키텍처 기능들로부터 결여되는(absent)
방법. - 이전의 항들 중 어느 한 항에 있어서, 상기 제1 아키텍처 모드는 64-비트 주소지정(addressing)을 포함하고 64-비트 범용 레지스터들을 사용하며, 상기 제2 아키텍처 모드는 31-비트 주소지정(addressing)을 포함하고 32-비트 범용 레지스터들을 사용하는
방법. - 컴퓨팅 환경 내 처리를 관리하기 위한 방법에 있어서, 상기 방법은:
컴퓨팅 환경의 한 프로세서에 의해서, 연산을 수행하기 위한 요청을 획득하는 단계(obtaining) ― 상기 연산은 한 선택된 아키텍처 기능을 사용하거나(use) 또는 동작 가능하게 하기(enable) 위한 것이고, 상기 프로세서는 제1 아키텍처 및 제2 아키텍처를 포함하는 복수의 아키텍처들을 동시에 지원하도록 구성되며, 상기 제1 아키텍처는 상기 선택된 아키텍처 기능을 위해서 그리고 지원하도록 구성되고 그리고 상기 제2 아키텍처는 그것으로부터 제거되는 상기 선택된 아키텍처를 가짐 ―;
상기 획득하는 단계에 기초하여, 상기 프로세서가 상기 제1 아키텍처에 기초한 제1 아키텍처 모드에서 또는 상기 제2 아키텍처에 기초한 제2 아키텍처 모드에서 처리하고 있는지를 결정하는 단계(determining);
상기 프로세서가 상기 제1 아키텍처 모드에서 처리하고 있다고 결정하는 것에 기초하여, 상기 연산을 수행하는 단계; 및
상기 프로세서가 상기 제2 아키텍처 모드에서 처리하고 있고 그리고 상기 선택된 아키텍처 기능이 제거되었다고 결정하는 것에 기초하여, 상기 상기 선택된 아키텍처 기능이 사용되지 않거나 또는 동작 가능하게 되지 않을 것이라는 표시(an indication)를 제공하는 단계(providing)를 포함하되, 상기 제공하는 단계는 상기 선택된 아키텍처 기능이 동작 가능하게 되었는지(enabled)/동작 가능하지 않게 되었는지(disabled)를 표시하는 제어의 체크(a check of a control)없이(absent) 수행되고, 상기 제어는 제거의 표시와는 무관한(separate)
방법. - 제10항에 있어서, 상기 선택된 아키텍처 기능은 동적 주소 변환(dynamic address translation)을 포함하는
방법. - 제10항 또는 제11항 중 어느 한 항에 있어서, 상기 연산은 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 로드 프로그램 상태 워드 명령(a load program status word instruction), 로드 실제 주소 명령(a load real address instruction), 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 세트 시스템 마스크 명령(a set system mask instruction), 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 스토어 덴 오어 시스템 마스크 명령(a store then OR system mask instruction), 또는 인터럽션(an interruption) ― 상기 인터럽션에서 인터럽션 프로그램 상태 워드는 상기 선택된 아키텍처 기능을 턴온시키려고 시도함 ― 중 하나를 포함하는
방법. - 컴퓨팅 환경 내 처리(processing)를 관리하기 위한 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은:
메모리; 및
상기 메모리와 통신하는 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은:
제1 아키텍처 모드(a first architectural mode)에서 처리하는 호스트 프로세서에 의해서, 제1 게스트 가상 머신(a first guest virtual machine)을 개시하는 단계(initiating) ― 상기 제1 게스트 가상 머신은 상기 제1 아키텍처 모드에서 처리하고 상기 제1 아키텍처 모드는 제1 명령 세트 아키텍처(a first instruction set architecture)를 가짐 ― 및 제1 세트의 아키텍처 기능들(a first set of architectural functions)을 제공하는 단계(providing);
상기 호스트 프로세서에 의해서, 제2 게스트 가상 머신을 개시하는 단계(initiating) ― 상기 제2 게스트 가상 머신은 제2 아키텍처 모드에서 처리하고, 상기 제2 아키텍처 모드는 제2 명령 세트 아키텍처를 가짐 ― 및 제2 세트의 아키텍처 기능들(a second set of architectural functions)을 제공하는 단계(providing) ― 상기 제2 세트의 아키텍처 기능들은 상기 제1 세트의 아키텍처 기능들에서 제공된 아키텍처 기능들의 감소된 세트(a reduced set)이고, 상기 제1 세트의 아키텍처 기능들에서 제공되는 선택된 아키텍처 기능(a selected architectural function)이 상기 제2세트의 아키텍처 기능들로부터는 결여되어 있으며(absent), 상기 제2 아키텍처 모드는 기능 금지 모드(a function inhibit mode)임 ―; 및
상기 제2 아키텍처 모드에서 상기 제2 게스트 가상 머신에 의한 처리를 수행하는 단계(performing) ― 상기 처리를 수행하는 단계는 상기 제2 게스트 가상 머신의 실행을 제어하도록 정의된 상기 선택된 아키텍처 기능과 연관된 하나 또는 그 이상의 제어들을 무시함(override) ― 를 포함하는
컴퓨터 시스템. - 제13항에 있어서, 상기 선택된 아키텍처 기능은 동적 주소 변환(dynamic address translation)을 포함하는
컴퓨터 시스템. - 제14항에 있어서, 상기 호스트 프로세서 및 상기 제1 게스트 가상 머신 중 적어도 하나는 동적 주소 변환을 사용하여 한 주소를 다른 주소로 변환하고, 그리고 상기 제2 게스트 가상 머신에 대해서는, 제어 블록 내 표시자(an indicator)가 동적 주소 변환이 턴온(turned on)임을 표시하더라도, 동적 주소 변환이 이용 가능하지 않는
컴퓨터 시스템. - 제12항 내지 제15항들 중 어느 한 항에 있어서, 상기 방법은:
연산을 수행하기 위한 요청을 상기 제2 게스트 가상 머신에 의해서 획득하는 단계(obtaining) - 상기 연산은 상기 선택된 아키텍처 기능을 사용하거나 동작 가능하게 하기 위한 것임 ―;
상기 요청을 획득하는 것에 기초하여, 상기 제2 게스트 가상 머신이 상기 제2 아키텍처 모드에서 처리하는지를 결정하는 단계(determining); 및
상기 제2 게스트 가상 머신이 상기 제2 아키텍처 모드에서 처리한다고 결정하는 것에 기초하여, 상기 선택된 아키텍처 기능이 사용되지 않거나 또는 동작 가능하게 되지 않을 것이라는 표시를 제공하는 단계(providing)를 더 포함하는
컴퓨터 시스템. - 제16항에 있어서, 상기 연산은 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 로드 프로그램 상태 워드 명령(a load program status word instruction), 로드 실제 주소 명령(a load real address instruction), 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 세트 시스템 마스크 명령(a set system mask instruction), 상기 선택된 아키텍처 기능을 턴온시키려고 시도하는 스토어 덴 오어 시스템 마스크 명령(a store then OR system mask instruction), 또는 인터럽션(an interruption) ― 상기 인터럽션에서 인터럽션 프로그램 상태 워드는 상기 선택된 아키텍처 기능을 턴온시키려고 시도함 ― 중 하나를 포함하는
컴퓨터 시스템. - 제13항 내지 제17항들 중 어느 한 항에 있어서, 상기 선택된 아키텍처 기능에 대한 동작 가능/동작 불가능 표시자(an enabling/disabling indicator)가 동작 가능하게 되었음(enabled)을 표시하는 것에 상관없이 상기 컴퓨팅 환경의 표시자가 상기 선택된 아키텍처 기능은 지원되지 않는다고 표시하는 것에 기초하여 상기 선택된 아키텍처 기능은 상기 제2세트의 아키텍처 기능들로부터 결여되는(absent)
컴퓨터 시스템. - 컴퓨팅 환경 내 처리를 관리하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
처리회로에 의해 판독 가능하고 그리고 제1항 내지 제12항들 중 어느 한 항에 따른 방법을 수행하기 위해 상기 처리회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함하는
컴퓨터 프로그램 제품. - 컴퓨터 판독가능 매체상에 저장되고 디지털 컴퓨터의 내부 메모리 내로 로드 가능한 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은, 상기 프로그램이 컴퓨터 상에서 실행될 때, 제1항 내지 제12항들 중 어느 한 항에 따른 방법을 수행하기 위한 소프트웨어 코드 부분들을 포함하는
컴퓨터 프로그램.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/217,824 US9916185B2 (en) | 2014-03-18 | 2014-03-18 | Managing processing associated with selected architectural facilities |
US14/217,824 | 2014-03-18 | ||
US14/554,675 | 2014-11-26 | ||
US14/554,675 US9916186B2 (en) | 2014-03-18 | 2014-11-26 | Managing processing associated with selected architectural facilities |
PCT/EP2015/054841 WO2015139988A1 (en) | 2014-03-18 | 2015-03-09 | Managing processing associated with selected architectural facilities |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160134780A true KR20160134780A (ko) | 2016-11-23 |
KR101843679B1 KR101843679B1 (ko) | 2018-03-29 |
Family
ID=54142212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167028749A KR101843679B1 (ko) | 2014-03-18 | 2015-03-09 | 선택된 아키텍처 퍼실리티들과 연관된 처리의 관리 |
Country Status (22)
Country | Link |
---|---|
US (4) | US9916185B2 (ko) |
EP (1) | EP3117310B1 (ko) |
JP (1) | JP6407299B2 (ko) |
KR (1) | KR101843679B1 (ko) |
CN (1) | CN106133687B (ko) |
AU (1) | AU2015233738B2 (ko) |
BR (1) | BR112016021603B1 (ko) |
CA (1) | CA2940909C (ko) |
DK (1) | DK3117310T3 (ko) |
ES (1) | ES2878147T3 (ko) |
HU (1) | HUE055096T2 (ko) |
IL (1) | IL247855B (ko) |
LT (1) | LT3117310T (ko) |
MX (1) | MX2016011920A (ko) |
PL (1) | PL3117310T3 (ko) |
PT (1) | PT3117310T (ko) |
RU (1) | RU2665243C2 (ko) |
SG (1) | SG11201606097WA (ko) |
SI (1) | SI3117310T1 (ko) |
TW (1) | TWI639084B (ko) |
WO (1) | WO2015139988A1 (ko) |
ZA (1) | ZA201605469B (ko) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652210B2 (en) * | 2007-08-28 | 2017-05-16 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
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 |
US10447728B1 (en) * | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
US10846117B1 (en) | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
CN111258867B (zh) * | 2015-12-30 | 2022-04-22 | 华为技术有限公司 | 一种公有云的拨测方法和装置 |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
US10282305B2 (en) | 2016-07-18 | 2019-05-07 | International Business Machines Corporation | Selective purging of entries of structures associated with address translation in a virtualized environment |
US10802986B2 (en) | 2016-07-18 | 2020-10-13 | International Business Machines Corporation | Marking to indicate memory used to back address translation structures |
US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
US10162764B2 (en) | 2016-07-18 | 2018-12-25 | International Business Machines Corporation | Marking page table/page status table entries to indicate memory used to back address translation structures |
US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing purging of structures associated with address translation |
US10223281B2 (en) * | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
US10176006B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
US10169243B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation |
US10241924B2 (en) | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
WO2018064202A1 (en) | 2016-09-30 | 2018-04-05 | 3M Innovative Properties Company | Synchronizing multiple processing systems |
US10175946B2 (en) * | 2016-09-30 | 2019-01-08 | International Business Machines Corporation | Perform sign operation decimal instruction |
US10684984B2 (en) | 2016-12-21 | 2020-06-16 | Intel Corporation | Computing devices and server systems with processing cores having different instruction set architectures |
US10552207B2 (en) | 2016-12-21 | 2020-02-04 | Intel Corporation | Systems and methods for multi-architecture computing including program stack translation |
US10713213B2 (en) * | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
US10228981B2 (en) * | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US11275709B2 (en) | 2017-05-02 | 2022-03-15 | Intel Corporation | Systems and methods for multi-architecture computing |
US11175853B2 (en) * | 2017-05-09 | 2021-11-16 | Samsung Electronics Co., Ltd. | Systems and methods for write and flush support in hybrid memory |
TWI649690B (zh) * | 2017-07-24 | 2019-02-01 | 優像數位媒體科技股份有限公司 | Integration of distributed computing engine modules and control of interactive interface analysis modules system |
TWI658365B (zh) * | 2017-10-30 | 2019-05-01 | 緯創資通股份有限公司 | 連接模組 |
US11226839B2 (en) * | 2019-02-27 | 2022-01-18 | International Business Machines Corporation | Maintaining compatibility for complex functions over multiple machine generations |
US12014198B2 (en) | 2021-03-25 | 2024-06-18 | International Business Machines Corporation | Running smaller memory-address width program code in a larger memory-address width address space |
Family Cites Families (79)
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 |
JPH0447853A (ja) | 1990-06-15 | 1992-02-18 | Nec Home Electron Ltd | 情報処理装置の通信中通話方式 |
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 |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | 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 |
US6496971B1 (en) | 2000-02-07 | 2002-12-17 | Xilinx, Inc. | Supporting multiple FPGA configuration modes using dedicated on-chip processor |
US7058791B1 (en) * | 2000-08-09 | 2006-06-06 | Advanced Micro Devices, Inc. | Establishing a mode indication responsive to two or more indications |
US7146305B2 (en) | 2000-10-24 | 2006-12-05 | Vcis, Inc. | Analytical virtual machine |
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 |
US8024730B2 (en) | 2004-03-31 | 2011-09-20 | Intel Corporation | Switching between protected mode environments utilizing virtual machine functionality |
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 | 엘지전자 주식회사 | 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법 |
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 |
KR101120956B1 (ko) | 2006-12-31 | 2012-03-05 | 쌘디스크 코포레이션 | 휴대용 멀티-플랫폼 부팅시스템과 아키텍쳐 |
US7783867B2 (en) | 2007-02-01 | 2010-08-24 | International Business Machines Corporation | Controlling instruction execution in a processing environment |
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 |
US7739434B2 (en) | 2008-01-11 | 2010-06-15 | International Business Machines Corporation | Performing a configuration virtual topology change and instruction therefore |
US8677098B2 (en) * | 2008-01-11 | 2014-03-18 | International Business Machines Corporation | Dynamic address translation with fetch protection |
US8321861B2 (en) * | 2008-02-20 | 2012-11-27 | Arm Limited | Non-native program execution across multiple execution environments |
US8086811B2 (en) | 2008-02-25 | 2011-12-27 | International Business Machines Corporation | Optimizations of a perform frame management function issued by pageable guests |
US8176280B2 (en) | 2008-02-25 | 2012-05-08 | International Business Machines Corporation | Use of test protection instruction in computing environments that support 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 |
US9141389B2 (en) * | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
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 |
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 |
JP6290893B2 (ja) * | 2012-08-30 | 2018-03-07 | ユニバーシティ オブ ヴァージニア パテント ファウンデーション | マルチモーダル無線機を備えた超低電力センシングプラットフォーム |
CN103530089B (zh) | 2012-08-31 | 2018-06-15 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
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 | 富士通株式会社 | ログ取得プログラム、ログ取得装置及びログ取得方法 |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
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 |
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 |
-
2014
- 2014-03-18 US US14/217,824 patent/US9916185B2/en active Active
- 2014-11-26 US US14/554,675 patent/US9916186B2/en active Active
-
2015
- 2015-03-09 SI SI201531635T patent/SI3117310T1/sl unknown
- 2015-03-09 WO PCT/EP2015/054841 patent/WO2015139988A1/en active Application Filing
- 2015-03-09 BR BR112016021603-2A patent/BR112016021603B1/pt active IP Right Grant
- 2015-03-09 PL PL15708240T patent/PL3117310T3/pl unknown
- 2015-03-09 EP EP15708240.5A patent/EP3117310B1/en active Active
- 2015-03-09 KR KR1020167028749A patent/KR101843679B1/ko active IP Right Grant
- 2015-03-09 RU RU2016126975A patent/RU2665243C2/ru active
- 2015-03-09 CA CA2940909A patent/CA2940909C/en active Active
- 2015-03-09 MX MX2016011920A patent/MX2016011920A/es unknown
- 2015-03-09 AU AU2015233738A patent/AU2015233738B2/en active Active
- 2015-03-09 SG SG11201606097WA patent/SG11201606097WA/en unknown
- 2015-03-09 HU HUE15708240A patent/HUE055096T2/hu unknown
- 2015-03-09 PT PT157082405T patent/PT3117310T/pt unknown
- 2015-03-09 CN CN201580014448.1A patent/CN106133687B/zh active Active
- 2015-03-09 LT LTEPPCT/EP2015/054841T patent/LT3117310T/lt unknown
- 2015-03-09 ES ES15708240T patent/ES2878147T3/es active Active
- 2015-03-09 JP JP2016557127A patent/JP6407299B2/ja active Active
- 2015-03-09 DK DK15708240.5T patent/DK3117310T3/da active
- 2015-03-17 TW TW104108514A patent/TWI639084B/zh active
-
2016
- 2016-08-05 ZA ZA2016/05469A patent/ZA201605469B/en unknown
- 2016-09-15 IL IL24785516A patent/IL247855B/en active IP Right Grant
-
2017
- 2017-11-27 US US15/822,796 patent/US10747583B2/en active Active
- 2017-11-27 US US15/822,664 patent/US10747582B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101843679B1 (ko) | 선택된 아키텍처 퍼실리티들과 연관된 처리의 관리 | |
US11023256B2 (en) | Architectural mode configuration | |
KR101918831B1 (ko) | 복수 아키텍처들에서 초기화될 수 있는 제어 유틸리티를 위한 공통 부팅 시퀀스 | |
US12013791B2 (en) | Reset dynamic address translation protection instruction |
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 |