KR20100106436A - 선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어 - Google Patents

선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어 Download PDF

Info

Publication number
KR20100106436A
KR20100106436A KR1020107014280A KR20107014280A KR20100106436A KR 20100106436 A KR20100106436 A KR 20100106436A KR 1020107014280 A KR1020107014280 A KR 1020107014280A KR 20107014280 A KR20107014280 A KR 20107014280A KR 20100106436 A KR20100106436 A KR 20100106436A
Authority
KR
South Korea
Prior art keywords
instruction
bit
operand
bits
register
Prior art date
Application number
KR1020107014280A
Other languages
English (en)
Inventor
댄 그라이너
티모시 슬레겔
버틀라 조아생 폰
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100106436A publication Critical patent/KR20100106436A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본원에 개시된 컴퓨터를 동작시키는 방법에서, Z 비트를 갖는 회전 후 삽입 명령어가 인출되어 실행되는 데 제1 레지스터내의 제1 피연산자는 일정한 양만큼 회전된다. Z 비트가 '0'이면, 부울 연산의 결과의 선택된 부분이 제2 레지스터의 제2 피연산자의 대응하는 비트에 삽입된다. Z 비트가 '1'이면, 제2 피연산자의 삽입된 비트가 아닌 비트가 제로로 설정된다.

Description

선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어{ROTATE THEN INSERT SELECTED BITS FACILITY AND INSTRUCTIONS THEREFORE}
본 발명은 컴퓨터 시스템에 관한 것으로, 더욱 상세히는 컴퓨터 시스템 프로세서 명령어 기능에 관한 것이다.
상표 IBM®은 미국 뉴욕 아몽크에 소재한 인터내셔널 비즈니스 머신즈 회사(International Business Machines Corporation)의 등록상표이다. S/390, Z900 및 z900은 인터내셔널 비즈니스 머신즈 회사 또는 다른 회사들의 등록상표 또는 제품명이다.
1960년대의 IBM® System 360으로 알려진 머신으로부터 시작하여 현재까지, IBM은 컴퓨팅 시스템에 대한 본질적 특징으로 인해 "메인 프레임"으로서 알려진 특수한 구조를 개발하였는 데, 메인 프레임의 동작 원리는, 수년에 걸쳐, 설명한 바와 같은 IBM의 동작원리(IBM's Principles of Operation)를 포함시킴으로써 상당한 기여로서, "메인 프레임"으로 표현된 컴퓨팅 머신의 상태를 개선하는 데 있어서 상당한 공헌을 했기 때문에, IBM 발명자들에 의해 개발되고 채택된 명령어의 "메인프레임" 구현시 실행될 수 있는 명령어를 설명함으로써 머신의 구조를 설명한다. 2007년 4월 발표된 IBM® z/Architecture® Principles of Operation의 제6판은 SA22-7832-05로서 공표된 표준 레퍼런스가 되었고 IBM의 z9® 메인 프레임 서버에 통합되어 있다. IBM Z/Architecture® Principles of Operation, SA22-7832-05 공표물은 그 전체 내용이 본원에 참조문헌으로 통합되어 있는 것으로 한다.
도 1a를 참조하면, 종래 기술의 호스트 컴퓨터 시스템(50)의 대표적인 컴포넌트들이 나타나 있다. 당업계에 공지된, 컴포넌트들의 다른 배열도 컴퓨터 시스템에 채용될 수도 있다. 대표적인 호스트 컴퓨터 시스템(50)은 저장 디바이스에 대한 I/O 인터페이스뿐만 아니라 주 저장장치(컴퓨터 메모리(2))와 통신하는 하나 이상의 CPU(1) 및 다른 컴퓨터 또는 SAN등과 통신하기 위한 네트워크(10)를 포함한다. CPU(1)는 설계된(architected) 명령어 셋트 및 설계된 기능을 갖는 구조에 따를 수 있다. CPU(1)는 프로그램 주소(가상 주소)를 실제 메모리 주소로 변환하기 위한 동적 주소 변환(DAT;Dynamic Address Translation)(3)을 가질 수 있다. DAT는 일반적으로 컴퓨터 메모리(2)의 블록에 대한 나중 액세스가 주소 변환의 지연을 요구하지 않도록 변환된 것을 캐쉬에 저장하기 위한 변환 조사 버퍼(TLB;Translation Lookaside Buffer)를 포함한다. 일반적으로 캐쉬(9)는 컴퓨터 메모리(2)와 프로세서(1) 사이에 채용될 수 있다. 캐쉬(9)는 하나 이상의 CPU가 이용할 수 있는 대형 캐쉬 및 대형 캐쉬와 각각의 CPU 사이에 소형의 고속(하위 레벨) 캐쉬를 갖는 계층 구조일 수 있다. 일부 구현예에서 하위 레벨 캐쉬는 명령어 인출 및 데이터 액세스를 위해 개별적인 하위 레벨 캐쉬를 제공하도록 분할될 수 있다. 한 실시예에서, 명령어는 캐쉬(9)를 통해 명령어 인출 유닛(4)에 의해 메모리(2)부터 인출된다. 명령어는 명령어 디코딩 유닛(6)에 의해 디코딩되고 명령어 실행 유닛(8)에 (일부 실시예에선 다른 명령어와 함께) 발송된다. 일반적으로 여러 실행 유닛(8), 예를 들어, 산술연산 실행 유닛, 부동 소숫점 실행 유닛 및 분기 명령 실행 유닛이 채용된다. 명령어는 실행 유닛에 의해 실행되고, 필요에 따라 명령어로 지정된 레지스터 또는 메모리에서 피연산자를 액세스한다. 피연산자가 메모리(2)부터 액세스(로드 또는 저장)되어야 한다면, 로드 저장 유닛(5)은 일반적으로 실행되는 명령어의 제어하에 액세스를 처리한다. 명령어는 하드웨어 회로에서 또는 내부 마이크로코드로(펌웨어) 또는 이 둘의 조합으로 실행될 수 있다.
도 1b에서, 호스트 구조의 호스트 컴퓨터 시스템(50)을 에뮬레이트하는 종래 기술의 에뮬레이트된 호스트 컴퓨터 시스템(21)의 예가 제공된다. 에뮬레이트된 호스트 컴퓨터 시스템(21)에서, 호스트 프로세서(CPU)(1)는 에뮬레이트된 호스트 프로세서(또는 가상 호스트 프로세서)이고 호스트 컴퓨터(50)의 프로세서(1)의 명령어 셋트 구조와 상이한 고유한(native) 명령어 셋트 구조를 갖는 에뮬레이션 프로세서(27)를 포함한다. 에뮬레이트된 호스트 컴퓨터 시스템(21)은 에뮬레이션 프로세서(27)가 액세스할 수 있는 메모리(22)를 갖는다. 예시적인 실시예에서, 메모리(27)는 호스트 컴퓨터 메모리(2) 부분과 에뮬레이션 루틴(23) 부분으로 분할된다. 호스트 컴퓨터 메모리(2)는 호스트 컴퓨터 구조에 따라 에뮬레이트된 호스트 컴퓨터(21)의 프로그램에 의해 이용될 수 있다. 에뮬레이션 프로세서(27)는 에뮬레이트된 프로세서(1)의 구조의 명령어 셋트 구조와 상이한 구조의 고유한 명령어 셋트의 명령어-에뮬레이션 루틴 메모리(23)로부터 획득됨-를 실행하고, 액세스 호스트 명령어의 기능을 에뮬레이트하기 위해 고유한 명령어 실행 루틴을 결정하기 위해 액세스된 호스트 명령어를 디코딩할 수 있는 시퀀스 및 액세스/디코딩 루틴에서 획득된 하나 이상의 명령어를 채용함으로써 호스트 컴퓨터 메모리(2)내의 프로그램으로부터 실행을 위해 호스트 명령어를 액세스할 수 있다. 호스트 컴퓨터 시스템(50) 구조에 대해 정의된 기타 기능부는 예를 들어, 범용 레지스터, 제어 레지스터, 동적 주소 변환 및 I/O 서브시스템 지원부 및 프로세서 캐시와 같은 기능부를 포함하는, 설계된 기능부 루틴에 의해 에뮬레이트될 수 있다. 에뮬레이션 루틴은 에뮬레이션 루틴의 성능을 개선하기 위해 에뮬레이션 프로세서(27)(범용 레지스터 및 가상 주소의 동적인 변환 기능부와 같은)에서 이용할 수 있는 기능을 이용할 수 있다. 특수한 하드웨어 및 오프로드 엔진도 호스트 컴퓨터(50)의 기능을 에뮬레이트하는 데에 있어서 프로세서(27)를 지원하기 위해 제공될 수도 있다.
메인프레임에서, 설계된 머신 명령어는 흔히 컴파일러 애플리케이션에 의해 오늘날 일반적으로 "C" 프로그래머에 의해 사용된다. 저장 매체에 저장된 이 명령어들은 고유하게 z/Architecture IBM 서버에서 실행될 수 있거나, 대안으로서 다른 구조를 실행하는 머신에서 실행될 수 있다. 명령어들은 기존 및 미래의 IBM 메인프레임 서버에서 그리고 IBM의 다른 머신(예를 들어, pSeries® 서버 및 xSeries® 서버)상에서 에뮬레이트될 수 있다. 명령어들은 IBM®, Intel®, AMDTM, Sun Microsystems등에 의해 제조된 하드웨어를 사용하여 광범위한 머신상에서 리눅스를 구동하는 머신에서 실행될 수 있다. Z/Architecture® 구조하에서 그 하드웨어상에서의 실행외에, 리눅스는 Hercules, UMX, FSI(Fundamental Software, Inc) 또는 Platform Solutions, Inc.(PSI)에 의해 에뮬레이션을 이용하는 머신에서도 사용될 수 있고, 일반적으로 이 머신에서 실행은 에뮬레이션 모드에서 실행된다. 에뮬레이션 모드에서, 에뮬레이션 소프트웨어는 에뮬레이트된 프로세서의 구조를 에뮬레이트하기 위해 고유한 프로세서에 의해 실행된다.
고유한 프로세서(27)는 일반적으로 에뮬레이트된 프로세서의 에뮬레이션을 수행하기 위해 고유한 운영체제 또는 펌웨어를 포함하는 에뮬레이션 소프트웨어(23)를 실행한다. 에뮬레이션 소프트웨어(23)는 에뮬레이트된 프로세서 구조의 명령어를 인출 및 실행하는 것을 담당한다. 에뮬레이션 소프트웨어(23)는 명령어 경계를 추적하기 위해 에뮬레이트된 프로그램 카운터를 유지한다. 에뮬레이션 소프트웨어(23)는 한번에 하나 이상의 에뮬레이트된 머신 명령어를 인출하여 하나 이상의 에뮬레이트된 머신 명령어를 고유한 프로세서(27)에 의한 실행을 위해 대응하는 고유한 머신 명령어의 그룹으로 변환할 수 있다. 이 변환된 명령어들은 고속으로 변환될 수 있도록 캐쉬에 저장될 수 있다. 그럼에도 불구하고, 에뮬레이션 소프트웨어는 에뮬레이트된 프로세서를 위해 기입된 운영체제 및 애플리케이션이 올바르게 동작하는 것을 보장하기 위해 에뮬레이트된 프로세서 구조의 구조 룰을 유지해야만 한다. 또한, 에뮬레이션 소프트웨어는, 에뮬레이트된 프로세서상에서 구동하도록 설계된 운영체제 및 애플리케이션이 에뮬레이션 소프트웨어를 갖는 고유한 프로세서상에서 실행될 수 있도록, 제어 레지스터, 범용 레지스터, 부동소수점 레지스터, 세그먼트 테이블 및 페이지 테이블을 포함하는 동적인 주소 변환 기능부를 포함하지만 이에 한정되지 않는 에뮬레이트된 프로세서(1) 구조에 의해 식별된, 예를 들어, 인터럽트 매커니즘, 컨텍스트 스위치 매커니즘, TOD(Time of Day) 클록 및 I/O 서브시스템에 대한 설계된 인터페이스와 같은 자원을 제공해야 한다.
에뮬레이트되는 특정한 명령어는 디코딩되고 개별 명령어의 기능을 수행하도록 서브루틴이 호출된다. 에뮬레이트된 프로세서의 기능을 에뮬레이트하는 에뮬레이션 소프트웨어 기능부(23)는 예를 들어, "C" 서브루틴 또는 드라이버, 또는 바람직한 실시예의 상세한 설명에 대한 완전한 이해 후에 당업자의 수준에 속할 특정한 하드웨어에 대한 드라이버를 제공하기 위한 그 밖의 방법으로 구현된다. 다양한 소프트웨어 및 하드웨어 에뮬레이션 특허문헌들로는, "Multiprocessor for hardware emulation"이라는 발명의 명칭으로 Beausoleil등에 허여된 US 5,551,013; "Preprocessing of stored target routines for emulating incompatible instructions on a target processor"이라는 발명의 명칭으로 Scalzi 등에 허여된 US 6,009,261; "Decoding guest instruction to directly access emulation routines that emulate the guest instructions"이라는 발명의 명칭으로 Davidian 등에 허여된 US 5,574,873; "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system"이라는 발명의 명칭으로 Gorishek등에 허여된 US 6,308,255호; "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method"이라는 발명의 명칭으로 Lethin등에 허여된 US 6,463,582; "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions"이라는 발명의 명칭으로 Eric Traut등에 허여된 US 5,790,825호 및 기타 특허문헌을 포함하지만 이들로 제한되지 않으며, 다양한 소프트웨어 및 하드웨어 에뮬레이션 특허문헌들은 당업자가 이용할 수 있는 타겟 머신에 대한 상이한 머신에 대해 설계된 명령어 포맷의 에뮬레이션을 달성하기 위한 여러 공지된 방법뿐만 아니라 상기 특허문헌에 의해 사용된 상용 소프트웨어 기술을 예시한다.
Z 비트를 갖는 회전 후 삽입 명령어(rotate then insert instruction)가 인출되어 실행되고 제1 레지스터내의 제1 피연산자는 일정량만큼 회전된다. Z 비트가 '0'이면 부울 연산의 결과의 선택된 부분은 제2 레지스터내의 제2 피연산자의 대응하는 비트에 삽입된다. Z 비트가 '1'이면 제2 피연산자의 삽입된 비트 이외의 삽입된 비트는 제로로 설정된다.
조건 코드는 저장된 결과가 부호화된 값인 것처럼 설정되고 결과가 제로이거나, 제로 보다 작거나 제로 보다 크다는 것을 지시한다.
본 발명은 범용 레지스터와 같은 구조 자원에 대한 종속성을 경감시키는 기존의 구조에 맞는 새로운 명령어 기능을 제공하고, 새로운 명령어를 채용하는 소프트웨어 버전의 기능 및 성능을 개선시킨다.
도 1a는 종래 기술의 대표적인 호스트 컴퓨터 시스템을 설명하는 도면이다.
도 1b는 종래 기술의 대표적인 에뮬레이트된 호스트 컴퓨터 시스템을 설명하는 도면이다.
도 1c는 종래 기술의 대표적인 컴퓨터 시스템을 설명하는 도면이다.
도 2는 종래 기술의 대표적인 컴퓨터 네트워크를 설명하는 도면이다.
도 3은 종래 기술의 컴퓨터 시스템의 엘리먼트를 설명하는 도면이다.
도 4a 내지 도 4c는 종래 기술의 컴퓨터 시스템의 엘리먼트를 상세히 설명하는 도면이다.
도 5a 내지 도 5f는 컴퓨터 시스템의 머신 명령어 형식을 설명하는 도면이다.
도 6a 및 도 6b는 본 발명의 일실시예에 따른 대표적인 명령어 형식을 설명하는 도면이다.
도 7은 본 발명의 일실시예의 흐름도를 설명하는 도면이다.
본 발명인 것으로 간주되는 주제는 명세서의 결론 부분의 특허청구범위에서 특정하게 언급하고 분명하게 청구하였다. 본 방명의 상기한 목적 및 기타 목적과, 특징 및 이점들은 첨부 도면과 연계하여 하기의 상세한 설명으로부터 분명히 알 수 있다.
일 실시예에서, 본 발명은 소프트웨어(때때로 라이센스드 인터널 코드, 펌웨어, 마이크로코드, 밀리코드, 피코코드등으로 지칭되고, 이것들은 본 발명에 적합할 것임)에 의해 실시될 수 있다. 도 1a를 참조하면, 본 발명을 구체화하는 소프트웨어 프로그램 코드는 일반적으로, CD-ROM 드라이브, 테이프 드라이브 또는 하드 드라이브와 같은 롱텀 저장 매체(7)로부터 시스템(50)의 CPU(Central Processing Unit)(1)로서 알려진 프로세서에 의해 액세스된다. 소프트웨어 프로그램 코드는 데이터 처리 시스템에 사용하기 위한, 디스켓, 하드 드라이브 또는 CD-ROM과 같은 다양한 매체에 구체화될 수 있다. 소프트웨어 프로그램 코드는 그러한 매체에 분포되거나, 네트워크(10)를 통하여 컴퓨터 메모리(2) 또는 하나의 컴퓨터 시스템의 저장장치로부터 다른 컴퓨터 시스템의 사용자에 의한 사용을 위해 다른 컴퓨터 시스템에 분포될 수도 있다.
대안으로서, 프로그램 코드는 메모리(2)에 구체화될 수 있고, 프로세서 버스를 사용하여 프로세서(1)에 의해 액세스될 수 있다. 그러한 프로그램 코드는 다양한 컴퓨터 컴포넌트 및 하나 이상의 애플리케이션 프로그램의 기능 및 상호작용을 제어하는 운영체제를 포함한다. 프로그램 코드는 일반적으로 고밀도 저장 매체(11)로부터 프로세서(1)에 의한 처리를 위해 이용할 수 있는 고속 메모리(2)로 페이징된다. 메모리내의 소프트웨어 프로그램 코드를 물리적 매체에 구체화하기 위한 및/또는 소프트웨어 프로그램 코드를 네트워크를 통해 분포시키기 위한 기술 및 방법은 잘 알려져 있고 본원에선 더 이상 설명하지 않는다. 프로그램 코드는 생성되어 실체적인 매체(전자 메모리 모듈(RAM), 플래시 메모리, 컴팩트 디스크(CD), DVD, 자기 테이프등을 포함하지만 이에 한정되진 않음)에 저장되었을 때에는 흔히 "컴퓨터 프로그램 제품"으로 지칭된다. 컴퓨터 프로그램 제품 매체는 일반적으로 처리 회로로 판독할 수 있는, 바람직하게는 처리 회로에 의한 실행을 위해 컴퓨터 시스템에서 판독할 수 있다.
도 1c는 본 발명이 실시될 수 있는 대표적인 워크스테이션 또는 서버 하드웨어 시스템을 예시한다. 도 1c의 시스템(100)은 선택적인 주변 디바이스를 포함하여, 개인용 컴퓨터, 워크스테이션 또는 서버와 같은 대표적인 컴퓨터 시스템(101)을 포함한다. 워크스테이션(101)은 공지된 기술에 따라 하나 이상의 프로세서(106) 및 시스템(101)의 프로세서(106)와 다른 컴포넌트들간을 연결하거나 통신을 인에이블시키도록 채용된 버스를 포함한다. 버스는 프로세서(106)를 메모리(105) 및 하드 드라이브(예를 들어, 자성 매체, CD, DVD 및 플래시 메모리중 임의의 것을 포함함) 또는 테이프 드라이브를 포함할 수 있는 장기간 저장장치(107)에 연결시킨다. 시스템(101)은 또한 사용자 인터페이스 어댑터를 포함할 수 있는 데, 이는 마이크로 프로세서(106)를 버스를 통하여, 키보드(104), 마우스(103), 프린터/스캐너(110) 및/또는 터치식 감지 스크린, 디지털화된 입력 패드와 같은 임의의 사용자 인터페이스 디바이스일 수 있는 기타 인터페이스 디바이스와 같은 하나 이상의 인터페이스 디바이스에 연결한다. 버스는 또한 LCD 스크린 또는 모니터와 같은 디스플레이 디바이스(102)를 디스플레이 어댑터를 통해 마이크로 프로세서(106)에 연결시킨다.
시스템(101)은 네트워크(109)와 통신(108)할 수 있는 네트워크 어댑터에 의해 컴퓨터의 네트워크 또는 다른 컴퓨터와 통신할 수 있다. 대표적인 네트워크 어댑터는 통신 채널, 토큰 링, 이더넷 또는 모뎀이다. 대안으로서, 워크스테이션(101)은 근거리 통신망(LAN) 또는 광역 통신망(WAN)에서 상기 다른 컴퓨터와 연관될 수 있거나, 워크스테이션(101)은 다른 컴퓨터와의 클라이언트/서버 배열에서 클라이언트일 수 있다. 적합한 통신 하드웨어 및 소프트웨어뿐만 아니라 이러한 구성들 모두는 당업계에 공지되어 있다.
도 2는 본 발명이 실시될 수 있는 데이터 처리 네트워크(200)를 예시한다. 데이터 처리 네트워크(200)는 각각이 복수의 개별적인 워크스테이션(101,201,202,203,204)을 포함할 수 있는 무선 네트워크 또는 유선 네트워크와 같은 복수의 개별적인 네트워크를 포함할 수 있다. 또한, 당업자가 알 수 있는 바와 같이, 하나 이상의 LAN이 포함될 수 있고, 여기서 LAN은 호스트 프로세서에 연결된 복수의 지능형 워크스테이션을 포함할 수 있다.
도 2를 참조하면, 네트워크는 또한 게이트웨이 컴퓨터(클라이언트 서버(206)) 또는 애플리케이션 서버(데이터 저장소를 액세스할 수 있고 워크스테이션(205)에 의해 직접 액세스될 수 있는 원격 서버(208))와 같은 메인프레임 서버 또는 메인프레임 컴퓨터를 포함할 수 있다. 게이트웨이 컴퓨터(206)는 각각의 네트워크내부의 입력 지점으로서의 역할을 한다. 게이트웨이는 하나의 네트워킹 프로토콜을 다른 네트워킹 프로토콜에 연결할 때 필요로 된다. 게이트웨이 컴퓨터(206)는 바람직하게 통신 링크에 의해 다른 네트워크(예를 들어, 인터넷(207))에 연결된다. 게이트웨이(206)는 통신 링트를 사용하여 하나 이상의 워크스테이션(102, 201, 202, 203, 204)에 직접 연결될 수 있다. 게이트웨이 컴퓨터는 IBM사로부터 구입할 수 있는 IBM eServerTM zSeries® z9® Server를 이용하여 구현될 수 있다.
본 발명을 구체화하는 소프트웨어 프로그래밍 코드는 일반적으로 CD-ROM 드라이브 또는 하드 드라이브와 같은 장기간 저장 매체(107)로부터 시스템(101)의 프로세서(106)에 의해 액세스된다. 소프트웨어 프로그래밍 코드는 데이터 처리 시스템에 사용하기 위한 디스켓, CD-ROM 또는 하드 드라이브와 같은 임의의 다양한 공지된 매체에 구체화될 수 있다. 코드는 그러한 매체에 분포되거나,사용자들(210,211)에게 즉, 네트워크를 통하여 메모리 또는 하나의 컴퓨터 시스템의 메모리 또는 저장장치로부터 다른 컴퓨터 시스템의 사용자에 의한 사용을 위해 다른 컴퓨터 시스템에 분포될 수도 있다.
대안으로서, 프로그램 코드(111)는 메모리(105)에 구체화될 수 있고, 프로세서 버스를 사용하여 프로세서(106)에 의해 액세스될 수 있다. 그러한 프로그래밍 코드는 하나 이상의 애플리케이션 프로그램(112)과 다양한 컴퓨터 컴포넌트들의 기능 및 상호작용을 제어하는 운영체제를 포함한다. 프로그램 코드는 일반적으로 고밀도 저장 매체(107)로부터 프로세서(106)에 의한 처리를 위해 이용할 수 있는 고속 메모리(105)로 페이징된다. 메모리내의 소프트웨어 프로그램 코드를 물리적 매체에 구체화하기 위한 및/또는 소프트웨어 프로그램 코드를 네트워크를 통해 분포시키기 위한 기술 및 방법은 잘 알려져 있고 본원에선 더 이상 설명하지 않는다. 프로그램 코드는 생성되어 실체적인 유형의 매체(전자 메모리 모듈(RAM), 플래시 메모리, 컴팩트 디스크(CD), DVD, 자기 테이프등을 포함하지만 이에 한정되진 않음)에 저장되었을 때에는 흔히 "컴퓨터 프로그램 제품"으로 지칭된다. 컴퓨터 프로그램 제품 매체는 일반적으로 처리 회로에 의한 실행을 위해 바람직하게는 컴퓨터 시스템내의 처리 회로로 판독할 수 있다.
프로세서가 가장 용이하게 이용할 수 있는 캐쉬(일반적으로 프로세서의 다른 캐쉬 보다 고속이고 소형임)는 최하위 레벨(L1 또는 레벨 1) 캐쉬이고 주 저장장치는 최상위 레벨 캐쉬(3개 레벨이 있다면 L3)이다. 최하위 레벨 캐쉬는 흔히 실행되어야 할 머신 명령어를 유지하는 명령어 캐쉬(I-캐쉬) 및 데이터 피연산자를 유지하는 데이터 캐쉬(D-캐쉬)로 나뉜다.
도 3을 참조하면, 대표적인 프로세서 실시예가 프로세서(106)에 대해 설명되어 있다. 일반적으로 캐쉬(303)의 하나 이상의 레벨은 프로세서 성능을 개선하기 위해 메모리 블록을 버퍼링하기 위해 채용된다. 캐쉬(303)는 사용될 가능성이 있는 메모리 데이터의 캐쉬 라인을 유지하는 고속 버퍼이다. 일반적인 캐쉬 라인은 메모리 데이터의 64, 128 또는 256 바이트이다. 개별 캐쉬들은 데이터를 캐쉬에 저장하기 보단 명령어를 캐쉬에 저장하기 위해 채용된다. 캐쉬 코히어런스(메모리 및 캐쉬에서 라인 복사본들의 동기화)는 흔히 당업계에 공지된 다양한 "스눕" 알고리즘에 의해 제공된다. 프로세서 시스템의 주 저장장치(105)는 흔히 캐쉬로 지칭된다. 4개 레벨을 갖는 프로세서 시스템에서 주 저장장치(105)는 흔히 레벨 5(L5)캐쉬로 지칭되는 데 이는 주 저장장치는 고속이며 컴퓨터 시스템이 이용할 수 있는 비휘발성 저장장치(DASD, 테이프등)만을 유지하기 때문이다. 주 저장장치(105)는 운영체제에 의해 주 저장장치로 및 주 저장장치로부터 페이지 인 및 페이지 아웃되는 데이터의 페이지를 "캐쉬"한다.
프로그램 카운터(명령어 카운터)(311)는 실행되어야 할 현재 명령어의 주소를 추적한다. z/Architecture 프로세서내의 프로그램 카운터는 64 비트이고 종래의 주소지정 한계를 지원하기 위해 31 또는 24 비트들로 트런케이트될 수 있다. 프로그램 카운터는 컨텍스트 스위칭 동안 지속되도록 일반적으로 컴퓨터의 PSW(프로그램 상태 워드)에서 구체화된다. 따라서, 프로그램 카운터 값을 갖는, 진행중인 프로그램은 예를 들어 운영체제(프로그램 환경으로부터 운영체제 환경으로의 컨텍스트 스위칭)에 의해 인터럽트될 수 있다. 프로그램의 PSW는 프로그램이 활성상태가 아닌 동안 프로그램 카운터 값을 유지하고, 운영체제의 프로그램 카운터(PSW에서)는 운영체제가 실행되는 동안 사용된다. 일반적으로, 프로그램 카운터는 현재 명령어의 바이트의 수와 동일한 양만큼 증가된다. RISC(축소 명령어 셋트 컴퓨팅) 명령어는 일반적으로 고정된 길이인 반면에 CISC(복잡한 명령어 셋트 컴퓨팅) 명령어는 일반적으로 가변 길이이다. IBM z/Architecture의 명령어는 2, 4 또는 6 바이트를 갖는 CISC 명령어이다. 프로그램 카운터(311)는 예를 들어 컨텍스트 스위치 동작 또는 분기 명령어의 동작을 취한 분기에 의해 수정된다. 컨텍스트 스위치 동작에서, 현재 프로그램 카운터 값은 실행중인 프로그램에 대한 다른 상태 정보(조건 코드와 같은)와 함께 프로그램 상태 워드(PSW)에 저장되고, 실행되어야 할 새로운 프로그램 모듈의 명령어를 가리키는 새로운 프로그램 카운터 값이 로딩된다. 분기 명령어의 결과를 프로그램 카운터(311)에 로드함으로써 프로그램이 결정할 수 있도록 하거나 프로그램내에서 루핑될 수 있도록 하기 위해 분기된 동작이 수행된다.
일반적으로 명령어 인출 유닛(305)은 프로세서(106) 대신에 명령어를 인출하기 위해 채용된다. 인출 유닛은 "다음 순차 명령어", 분기를 취한 명령어의 타겟 명령어, 또는 컨텍스트 스위치를 뒤따르는 프로그램의 제1 명령어를 인출할 수 있다. 현대의 명령어 인출 유닛은 미리인출된 명령어가 사용될 수도 있을 가능성에 기초하여 추론적으로 명령어를 미리인출하는 미리인출 기술을 채용한다. 예를 들어, 인출 유닛은 다음 순차 명령어를 포함하는 16 바이트의 명령어 및 추가의 순차 명령어의 추가 바이트를 인출할 수 있다.
인출된 명령어는 그러면 프로세서(106)에 의해 실행된다. 한 실시예에서, 인출된 명령어는 인출 유닛의 발송 유닛(306)에 전달된다. 이 발송 유닛은 명령어를 디코딩하여 디코딩된 명령어에 대한 정보를 적합한 유닛(307,308,310)에 전송한다. 실행 유닛(307)은 명령어 인출 유닛(305)으로부터 디코딩된 산술 명령어에 대한 정보를 수신하고 명령어의 연산자(opcoede)에 따라 피연산자(operand)에 대한 산술 동작을 수행할 것이다. 피연산자는 바람직하게 메모리(105), 설계된 레지스터(309) 또는 실행중인 명령어의 직접 필드로부터 실행 유닛(307)에 제공된다. 실행 결과는 저장되었을 때 메모리(105), 레지스터(309) 또는 기타 머신 하드웨어(제어 레지스터, PSW 레지스터등과 같은)에 저장된다.
프로세서(106)는 일반적으로 명령어의 기능을 실행하기 위한 하나 이상의 실행 유닛(307,308,310)을 갖는다. 도 4a를 참조하면, 실행 유닛(307)은 설계된 범용 레지스터(309), 디코딩/발송 유닛(306) 및 로드 저장 유닛(310) 및 기타 프로세서 유닛(401)과 인터페이싱 로직(507)에 의해 통신할 수 있다. 실행 유닛(307)은 산술 논리 유닛(ALU;arithmetic logic unit)(402)이 동작할 정보를 유지하기 위해 여러 레지스터 회로(403,404,405)를 채용할 수 있다. ALU는 더하기, 빼기, 곱하기 및 나누기뿐만 아니라 AND, OR, XOR, 회전 및 시프트와 같은 논리 기능을 수행한다. 바람직하게 ALU는 설계에 종속적인 특수화된 동작을 지원한다. 그 밖의 회로는 예를 들어 조건 코드 및 복구 지원 로직을 포함하는 설계된 다른 기능부(408)를 제공할 수 있다. 일반적으로 ALU 동작의 결과는 결과를 여러 다른 처리 기능부에 전달할 수 있는 출력 레지스터 회로(406)에 유지된다. 프로세서 유닛에 대한 여러 배열이 있으며, 본원의 설명은 일 실시예에 대한 대표적인 이해를 제공하는 것만을 의도하진 않는다.
ADD 명령어는 예를 들어 산술 및 논리 기능을 갖는 실행 유닛(307)에서 실행될 것이지만 예를 들어 부동소수점 명령어는 특수화된 부동소수점 능력을 갖는 부동소수점 실행 유닛에서 실행될 것이다. 바람직하게, 실행 유닛은 피연산자에 대한 연산자 정의 기능을 수행함으로써 명령어에 의해 식별된 피연산자에 대해 동작한다. 예를 들어, ADD 명령어는 명령어의 레지스터 필드에 의해 식별된 두 개의 레지스터(309)에서 찾은 피연산자에 대해 실행 유닛(307)에 의해 실행될 수 있다.
실행 유닛(307)은 두 개의 피연산자에 대해 산술 가산을 수행하고 그 결과를 제3 피연산자에 저장하는 데 제3 피연산자는 제 3 레지스터 또는 두 개의 소스 레지스터중 하나일 수 있다. 실행 유닛은 바람직하게 시프트, 회전, AND, OR 및 XOR와 같은 다양한 논리 기능뿐만 아니라 더하기, 빼기, 곱하기, 나누기중 임의의 것을 포함하는 여러 대수 연산을 수행할 수 있는 산술 논리 유닛(ALU)(402)를 이용한다. 일부 ALU(402)는 스칼라 연산을 위해 설계되었고 일부 ALU(402)는 부동소수점 연산을 위해 설계되었다. 데이터는 구조에 좌우되어 큰 엔디안(Big Endian)(최하위 유효 바이트가 최상위 바이트 주소에 있음) 또는 작은 엔디안(Little Endian)(최하위 유효 바이트가 최하위 바이트 주소에 있음)일 수 있다. IBM z/Architecture는 큰 엔디안이다. 부호화된 필드는 구조에 좌우되어 부호 및, 1의 보수 또는 2의 보수인 크기일 수 있다. 2의 보수는, 2의 보수에서 음의 값 또는 양의 값은 ALU내에서 오직 가산만을 필요로 하기 때문에 감산 능력을 설계할 필요가 없다는 점에서 이점이 있다. 수는 공통적으로 축약하여 설명되었는 데, 예를 들어 12 비트 필드는 4,096 바이트 블록의 주소를 정의하고 흔히 4K바이트(킬로 바이트) 블록으로서 설명된다.
도 4b를 참조하면, 분기 명령어를 실행하기 위한 분기 명령어 정보는 기타 조건 동작들이 완료되기 이전에 분기의 결과를 예측하기 위해 분기 이력 테이블(432)과 같은 분기 예측 알고리즘을 흔히 채용하는 분기 유닛(308)에 전송된다. 현재 분기 명령어의 타겟은 인출되고 조건 동작들이 완료되기 이전에 추측적으로 실행될 것이다. 조건 동작들이 완료되었을 때 추측적으로 실행된 분기 명령어는 조건부 동작의 상태 및 추측된 결과에 기초하여 완료되거나 폐기된다. 일반적인 분기 명령어는 조건 코드를 테스트하여 조건 코드가 분기 명령어의 분기 요구조건을 충족시킨다면 타겟 주소로 분기할 수 있고, 타겟 주소는 예를 들어 명령어의 직접 필드(immediate field) 또는 레지스터 필드에서 발견된 수를 포함하는 여러 수에 기초하여 계산될 수 있다. 분기 유닛(308)은 복수의 입력 레지스터 회로(427,428,429) 및 출력 레지스터 회로(430)를 갖는 ALU(426)를 채용할 수 있다. 분기 유닛(308)은 예를 들어, 범용 레지스터(309)와 통신하고, 발송 유닛(306) 또는 기타 회로(425)를 디코딩할 수 있다.
명령어 그룹의 실행은 예를 들어, 운영체제에 의해 개시된 컨텍스트 스위칭, 컨텍스트 스위칭을 일으키는 프로그램 예외 또는 에러, 컨텍스트 스위칭 또는 복수의 프로그램의 멀티스레딩 활동을 초래하는 I/O 인터럽션 신호를 포함하는 다양한 원인에 대해 인터럽트될 수 있다. 바람직하게 컨텍스트 스위칭 활동은 현재 실행하는 프로그램에 대한 상태 정보를 저장하고 그후 호출되는 다른 프로그램에 대한 상태 정보를 로드한다. 상태 정보는 예를 들어, 하드웨어 레지스터 또는 메모리에 저장될 수 있다. 상태 정보는 바람직하게 실행되어야 할 다음 명령어를 지시하는 프로그램 카운터 값, 조건 코드, 메모리 변환 정보 및 설계된 레지스터 내용을 포함한다. 컨텍스트 스위칭 활동은 하드웨어 회로, 애플리케이션 프로그램, 운영 체제 프로그램 또는 펌웨어 코드(마이크로코드, 피코코드 또는 라이센스드 인터널 코드(ILC) 단독으로 또는 이들의 조합에 의해) 실행될 수 있다.
프로세서는 명령어 정의된 방법에 따라 피연산자를 액세스한다. 명령어는 명령어의 일부의 값을 사용하여 직접 피연산자(immediate operand)를 제공할 수 있고, 범용 레지스터 또는 특수 목적 레지스터(예를 들어, 부동 소숫점 레지스터)를 명시적으로 지시하는 하나 이상의 레지스터 필드를 제공할 수 있다. 명령어는 피연산자로서 연산자 필드에 의해 식별된 묵시적 레지스터를 이용할 수 있다. 명령어는 피연산자를 위한 메모리 위치를 이용할 수 있다. 피연산자의 메모리 위치는 레지스터, 직접 필드 또는 레지스터의 조합 및 z/Architecture 긴 변위 기능부에 의해 작성된 직접 필드에 의해 제공될 수 있는 데, 명령어는 예를 들어 메모리내의 피연산자의 주소를 제공하기 위해 함께 가산되는 베이스 레지스터, 인덱스 레지스터 및 직접 필드(변위 필드)를 정의한다. 본원에서 위치는 달리 지시되지 않는 한 주 메모리에서의 위치를 의미한다.
도 4c를 참조하면, 프로세서는 로드/저장 유닛(310)을 사용하여 저장장치를 액세스한다. 로드/저장 유닛(310)은 메모리(303)내의 타겟 피연산자의 주소를 획득하고 그 피연산자를 레지스터(309) 또는 다른 메모리(303) 위치에 로딩함으로써 로드 동작을 수행할 수 있거나, 메모리(303)내의 타겟 피연산자의 주소를 획득하고 레지스터(309) 또는 다른 메모리(303) 위치로부터 획득된 데이터를 메모리(303)내의 타겟 피연산자 위치에 저장함으로써 저장 동작을 수행할 수 있다. 로드/저장 유닛(310)은 추측적일 수 있고 명령어 시퀀스에 관해 순서를 벗어난 시퀀스로 메모리를 액세스할 수 있지만, 로드/저장 유닛(310)은 명령어가 순서적으로 실행되었던 프로그램에 대한 모습을 유지해야 한다. 로드/저장 유닛(310)은 범용 레지스터(309), 디코딩/발송 유닛(306), 캐쉬/메모리 인터페이스(303) 또는 다른 엘리먼트(455)와 통신할 수 있고 저장 주소를 계산하기 위해 그리고 동작을 순서대로 유지시키는 파이프라인 순서화를 제공하기 위해 다양한 레지스터 회로, ALU(458) 및 제어 로직(463)를 포함할 수 있다. 일부 동작들은 순서에서 벗어날 수 있지만 로드/저장 유닛(310)은 순서에서 벗어난 동작들을 당업계에서 공지된 바와 같이 순서적으로 수행되는 것으로 프로그램에 나타나도록 하는 기능을 제공한다.
바람직하게, 애플리케이션 프로그램이 "이해하는(see)" 주소는 흔히 가상 주소로 지칭된다. 가상 주소는 때때로 "논리 주소" 및 "유효 주소"로 지칭될 수 있다. 이 가상 주소들은 가상 주소를 오프셋 값으로 프리픽스하고, 가상 주소를 하나 이상의 변환 테이블을 사용하여 변환하는 것을 포함하지만 이에 한정되지 않는 다양한 동적 주소 변환(DAT;Dynamic Address Translation)(312)기술중의 하나에 의해 물리적 메모리 위치에 리디렉팅된다는 점에서 가상적이며, 변환 테이블은 바람직하게 적어도 하나의 세그먼트 테이블 및 페이지 테이블만을 포함하거나 이것들의 조합을 포함하며, 바람직하게 세그먼트 테이블은 페이지 테이블을 지시하는 엔트리를 갖는다. z/Architecture에서, 리전(region) 제1 테이블, 리전 제2 테이블, 리전 제3 테이블, 세그먼트 테이블 및 선택적인 페이지 테이블을 포함하는 변환의 계층구조가 제공된다. 주소 변환의 성능은 흔히 가상 주소를 연관된 물리적 메모리 위치에 매핑시키는 엔트리를 포함하는 변환 조사 테이블(TLB;Translation Look-aside Buffer)을 이용함으로써 개선된다. 엔트리들은 DAT(312)가 변환 테이블을 사용하여 가상 주소를 변환할 때 생성된다. 후속하는 가상 주소의 사용은 저속의 순차적인 변환 테이블 액세스 보단 고속의 TLB 액세스의 엔트리를 이용할 수 있다. TLB 콘텐트는 LRU(Least Recently used)를 포함하는 다양한 재배치 알고리즘에 의해 관리될 수 있다.
프로세서가 다중 프로세서 시스템의 프로세서인 경우에, 각각의 프로세서는 코히어런스를 위해 상호잠금된 I/O, 캐쉬, TLB 및 메모리와 같은 공유 자원들을 유지시키는 것을 담당한다. 일반적으로, "스눕" 기술은 캐쉬 코히어런스를 유지시키는 데에 이용될 것이다. 스눕 환경에서, 각각의 캐쉬 라인은 공유를 용이하게 하기 위해 공유 상태, 전용 상태, 변화된 상태, 비유효 상태등 중의 하나인 것으로 표시될 수 있다.
I/O 유닛(304)은 예를 들어 테이프, 디스크, 프린터, 디스플레이 및 네트워크를 포함하는 주변 디바이스에 부착하기 위한 수단을 프로세서에 제공한다. I/O 유닛은 소프트웨어 드라이버에 의해 컴퓨터 프로그램에 제공된다. IBM사의 z/Series와 같은 메인프레임에서 채널 어댑터 및 개방형 시스템 어댑터는 운영체제와 주변 디바이스간에 통신을 제공하는 메인프레임의 I/O 유닛이다.
z/Architecture 동작 원리에 의한 하기의 설명은 컴퓨터 시스템의 구조적 모습을 설명한다.
저장장치
컴퓨터 시스템은 주 저장장치에 정보 뿐만 아니라 주소지정, 보호, 및 레퍼런스 및 변화 기록들을 포함한다. 일부 주소지정 양상은 주소의 형식(format), 주소 공간의 개념, 다양한 주소 유형, 및 한 유형의 주소가 다른 유형의 주소로 변환되는 방식을 포함한다. 일부 주 저장장치는 영구적으로 할당된 저장장소의 위치를 포함한다. 주 저장장치는 시스템에 직접 주소지정가능한 고속 액세스 데이터 저장장소를 제공한다. 데이터 및 프로그램은 처리될 수 있기 이전에 주 저장장치로(입력 디바이스로부터) 로드되어야만 한다.
주 저장장치는, 때때로 캐쉬로 지칭되는, 하나 이상의 소형의 고속 액세스 버퍼 저장장소를 포함할 수 있다. 캐쉬는 일반적으로 CPU 또는 I/O 프로세서와 물리적으로 연관된다. 성능을 제외하곤, 개별 저장 매체의 물리적 구조 및 이용은 일반적으로 프로그램에 의해 관찰되지 않는다.
개별 캐쉬는 명령어 및 데이터 피연산자에 대해 유지될 수 있다. 캐쉬내의 정보는 캐쉬 블록 또는 캐쉬 라인(또는 단축해서, 라인)으로 지칭되는 적분 경계(integral boundary)에 연속하는 바이트로 유지된다. 모델은 바이트로 나타낸 캐쉬 라인의 크기를 돌려주는 EXTRACT CACHE ATTRIBUTE 명령어를 제공할 수 있다. 모델은 또한 저장장소를 데이터 또는 명령어 캐쉬에 미리인출하거나 데이터를 캐쉬로부터 방출하는 데에 영향을 미치는 PREFETCH DATA 및 PREFETCH DATA RELATIVE LONG 명령어도 제공할 수 있다.
저장장소는 비트의 긴 수평방향 스트링인 것으로 볼 수 있다. 대부분의 동작에 대해, 저장장소로의 액세스는 좌측에서 우측으로의 시퀀스로 진행한다. 비트의 스트링은 8개 비트 단위로 분할된다. 8개 비트 단위는 바이트로 지칭되고, 이는 모든 정보 형식의 기본 빌딩 블록이다. 저장장소에서 각각의 바이트 위치는 바이트 위치의 주소 또는 단순히 바이트 주소인, 고유한 음이아닌 정수로 식별된다. 인접한 바이트 위치는 좌측에서 우측으로의 시퀀스에서 좌측의 0으로부터 시작하여 진행하는, 연속하는 주소를 갖는다. 주소는 부호화되지 않은 2진 정수이고 24, 31 또는 64 비트이다.
정보는 저장장치와 CPU 또는 채널 서브시스템간에 한번에 한 바이트, 또는 바이트 그룹으로 송신된다. 달리 명시하지 않으면, 저장장치내의 바이트 그룹은 그룹의 최좌측 바이트에 의해 주소지정된다. 바이트 그룹내의 바이트의 수는 묵시적으로 지정되거나 수행될 동작에 의해 명시적으로 지정된다. CPU 동작에서 사용될 때, 바이트 그룹은 필드로 지칭된다. 각각의 바이트 그룹내에서, 비트는 좌측에서 우측으로의 시퀀스에서 번호가 정해진다. 최좌측 비트들은 "상위(high-order)" 비트로 지칭되고 최우측 비트들은 "하위(low-order)" 비트로 지칭된다. 그러나 비트 번호는 저장장소의 주소가 아니다. 바이트들만이 주소지정될 수 있다. 저장장소의 한 바이트의 개별 비트들에 대해 동작하기 위해선, 전체 바이트를 액세스할 것이 필요하다. 한 바이트의 비트들은 좌측에서 우측으로 0부터 7까지 번호가 정해진다. 주소의 비트들은 24비트 주소에 대해 8-31 또는 40-63 번호가 정해지거나 31비트 주소에 대해 1-31 또는 33-63 번호가 정해지며 64비트 주소에 대해 0-63 번호가 정해진다. 다수 바이트의 임의의 기타 고정된 길이의 형식에서, 형식을 구성하는 비트들은 0부터 시작하여 연속적으로 번호가 정해진다. 에러 검출을 위한 목적으로, 바람직하게는 보정을 위해, 하나 이상의 검사 비트가 각각의 바이트 또는 바이트 그룹과 함께 송신될 수 있다. 이러한 검사 비트는 머신에 의해 자동적으로 생성되고 프로그램에 의해 직접 제어될 수 없다. 저장 용량은 바이트의 수로 표현된다. 저장장소 피연산자 필드의 길이가 명령어의 연산 코드에 의해 묵시적으로 정해질 때, 필드는, 1, 2, 4, 8, 또는 16 바이트일 수 있는 고정된 길이를 갖는다고 한다. 더 큰 필드가 일부 명령어에 대해 묵시적으로 정해질 수 있다. 저장장소 피연산자 필드의 길이가 묵시적으로 정해져 있진 않지만 명시적으로 나타내어 졌을 때, 필드는 가변 길이를 갖는다고 한다. 가변 길이 피연산자는 길이가 일 바이트씩 증분하여 변동할 수 있다. 정보가 저장장소에 있을 때, 저장장소로의 물리적 경로의 폭이 저장되는 필드의 길이보다 큰 경우에도, 지정된 필드에 포함되는, 저장장소의 바이트 위치만의 내용이 대체되어 질 수 있다.
특정한 정보 단위(unit)들은 저장장소내의 적분 경계에 있어야만 한다. 이 적분 경계는 그 저장장소 주소가 다수의 바이트 단위 길이일 때 정보 단위에 대한 적분인 것으로 지칭된다. 특정한 명칭이 적분 경계상의 2, 4, 8 및 16 바이트의 필드에 주어진다. 하프워드는 2바이트 경계(two-byte boundary)상의 2개의 연속하는 바이트의 그룹이고 명령어의 기본 빌딩 블록이다. 워드는 4바이트 경계상의 4개의 연속하는 바이트의 그룹이다. 더블워드는 8바이트 경계상의 8개의 연속하는 바이트의 그룹이다. 쿼드워드는 16바이트 경계상의 16개의 연속하는 바이트의 그룹이다. 저장장소 주소가 하프워드, 워드, 더블워드, 및 쿼드워드를 지정할 때, 주소의 이진 표현은 1,2,3 또는 4개의 최우측 제로 비트들을 각각 포함한다. 명령어는 2바이트 적분 경계상에 있어야 한다. 대부분의 명령어의 저장 피연산자는 경계 정렬 요구조건을 갖지 않는다.
명령어 및 데이터 피연산자에 대해 개별 캐쉬를 구현하는 모델에서, 명령어가 후속하여 인출될 캐쉬 라인에 프로그램을 저장한다면, 저장된 프로그램이 후속하여 인출될 명령어를 변경시키는 것과 무관하게, 상당한 지연이 있을 수 있다.
명령어
일반적으로, CPU의 동작은 한번에 하나씩, 오름차순 저장장소 주소에서 좌측으로부터 우측으로, 순차적으로 실행되는 저장장소내의 명령어에 의해 제어된다. 순차 동작에서의 변화는 분기, LOAD PSW, 인터럽션, SIGNAL PROCESSOR 명령 또는 수동작업에 의한 중재에 의해 초래될 수 있다.
바람직하게, 명령어는 두 개의 주요 부분을 포함한다.
ㆍ 수행될 동작을 지정하는, 연산 코드(op code)
ㆍ 선택사항으로서, 참여하는 피연산자의 지정
z/Architecture의 명령어 형식이 도 5a 내지 도 5f에 도시되어 있다. 명령어는 Opcode(501) 또는 연산자 및 즉시 피연산자 또는 레지스터내에서 또는 메모리내에서 피연산자를 찾기 위한 레지스터 지정자를 포함하는 여러 필드들을 간단하게 제공할 수 있다. Opcode는 하나 이상의 특정한 범용 레지스터(GPRs)와 같은 묵시적으로 정해진 자원(피연산자등)이 사용되어야 한다는 것을 하드웨어에 지시할 수 있다. 피연산자는 3개의 부류들인, 레지스터에 위치된 피연산자, 직접 피연산자, 및 저장장소내의 피연산자들로 그룹화될 수 있다. 피연산자들은 묵시적으로 또는 명시적으로 지정된다. 레지스터 피연산자는 일반적으로, 연산 코드에 의해 식별된 레지스터 유형과 함께, 범용, 부동 소숫점, 액세스 또는 제어 레지스터들에 위치될 수있다. 피연산자를 포함하는 레지스터는 명령어에서 R 필드로 지칭되는 4비트 필드로 레지스터를 식별함으로써 지정된다. 일부 명령어에 대해, 피연산자는 연산 코드에 의해 묵시적으로 정해지는 레지스터인 묵시적으로 지정된 레지스터에 위치된다. 직접 피연산자는 명령어내에 포함되고, 직접 피연산자를 포함하는 8비트, 16비트 또는 32 비트 필드는 I 필드로 지칭된다. 저장장소내의 피연산자는 묵시적으로 전해진 길이, 비트 마스크에 의해 지정된 길이, 명령어내에서, L 필드로 지칭되는 4비트 또는 8비트 길이 상세내역에 의해 지정될 수 있거나; 또는 범용 레지스터의 내용에 의해 지정된 길이를 가질 수 있다. 저장장소내의 피연산자의 주소는 주소의 일부로서 범용 레지스터의 내용을 사용하는 형식에 의해 지정된다. 이것은,
축약된 표기를 이용한 완전한 주소를 지정하는 것과,
피연산자에 대해 범용 레지스터를 채용하는 명령어를 사용한 주소 조작을 수행하는 것,
명령어 스트림의 변경없이 프로그램 수단에 의해 주소를 수정하는 것,
다른 프로그램으로부터 수신한 주소를 직접적으로 이용하여 데이터 영역의 위치와 무관하게 동작하는 것을 가능하게 한다.
저장장소를 참조하기 위해 사용된 주소는 명령어의 R 필드에 의해 지정된 레지스터에 포함되거나 명령어의 B, X 및 D 필드에 의해 각각 지정된 베이스 주소, 인덱스 및 변위(displacement)로부터 계산된다. CPU가 액세스 레지스터 모드에 있을 때, B 또는 R 필드는 주소를 지정하는 데에 사용하는 외에 액세스 레지스터를 지정할 수 있다. 명령어의 실행을 설명하기 위해, 피연산자는 바람직하게 제1 및 제2 피연산자로 지정되고, 일부 경우엔 제3 및 제4 피연산자로 지정된다. 일반적으로, 명령어 실행엔 두 개의 피연산자가 참여하게되고, 그 결과는 제1 피연산자를 대체한다.
명령어는 길이가 1, 2 또는 3 하프워드이고 하프워드 경계상에서 저장장소에 위치되어야 한다. 명령어 형식을 설명하는 도 5a 내지 5f를 참조하면, 각각의 명령어는, RRF의 3개의 변형, RI, RIL, RS, 및 RSY의 2개의 변형 및 RIE 및 SS의 5개의 변형과 함께, E 501, I 502, RI 503 504, RIE 505 551 552 553 554, RIL 506 507, RIS 555, RR 510, RRE 511, RRF 512 513 514, RRS, RS 516 517, RSI 520, RSL 521, RSY 522 523, RX 524, RXE 525, RXF 526, RXY 527, S 530, SI 531, SIL 556, SIY 532, SS 533 534 535 536 537, SSE 541 및 SSF 542들인, 25개의 기본 형식중의 하나이다.
형식 이름은 일반적으로, 용어, 연산에 참여하는 피연산자의 부류 및 필드에 대한 일부 상세사항을 지시한다:
RIS는 레지스터-직접 동작 및 저장장소 동작을 나타낸다.
RRS는 레지스터-레지스터 동작 및 저장장소 동작을 나타낸다.
SIL은 저장장소-16비트의 직접 필드를 지닌 직접 동작을 나타낸다.
I, RR, RS, RSI, RX, SI, 및 SS 형식에서, 명령어의 제1 바이트는 연산 코드를 포함한다. E, RRE, RRF, S, SIL, 및 SSE 형식에서는, S 형식에 대한 일부 명령어를 제외하곤, 명령어의 맨처음 2개 바이트는 연산 코드를 포함하는 데, 연산 코드는 명령어의 제1 바이트에만 있다. RI 및 RIL 형식에서, 연산 코드는 명령어의 제1 바이트 및 비트 위치 12-15에 있다. RIE, RIS, RRS, RSL, RSY, RXE, RXF, RXY, 및 SIY 형식에서, 연산 코드는 명령어의 제1 바이트 및 제6 바이트에 있다. 연산 코드의 제1 바이트의 맨처음 두 개 비트 또는 제1 바이트만이 하기와 같이 명령어의 길이 및 형식을 지정한다.
RR, RRE, RRF, RRR, RX, RXE, RXF, RXY, RS, RSY, RSI, RJ, RIE, 및 RIL 형식에서, R1 필드에 의해 지정된 레지스터의 내용은 제1 피연산자로 지칭된다. 제1 피연산자를 포함하는 레지스터는 때때로 "제1 피연산자 위치" 또는 "레지스터 R1"으로 지칭된다. RR, RRE, RRF 및 RRR 형식에서, R2 필드는 제2 피연산자를 포함하는 레지스터를 지정하고, R2 필드는 R1과 동일한 레지스터를 지정할 수 있다. RRF, RXF, RS, RSY, RSI, 및 RIE 형식에서, R3 필드의 사용은 명령어에 좌우된다. RS 및 RSY 형식에서, R3 필드는 대신에 마스크를 지정하는 M3 필드일 수 있다. R 필드는 일반 명령어에서 범용 또는 액세스 레지스터를, 제어 명령어에서 범용 레지스터를, 그리고 부동소숫점 명령어에서 부동소숫점 레지스터 또는 범용 레지스터를 지정한다. 범용 및 제어 레지스터에 대해, 레지스터 피연산자는 명령어에 따라, 64비트 레지스터의 비트 위치 32-63에 있거나 레지스터 전체를 차지할 수 있다.
I 형식에서, 명령어의 I 필드, 8비트의 직접 데이터 필드의 내용은 피연산자로서 직접 사용된다. SI 형식에서, 명령어의 I2 필드, 8비트의 직접 데이터 필드의 내용은 제2 피연산자로서 직접 사용된다. B1 및 D1 필드는 길이가 1 바이트인 제1 피연산자를 지정한다. SIY 형식에서, 동작은, DH1 및 DL1 필드가 D1 필드 대신에 사용된다는 것을 제외하곤 동일하다.
명령어들인, ADD HALFWORD IMMEDIATE, COMPARE HALFWORD IMMEDIATE, LOAD HALFWORD IMMEDIATE, 및 MULTIPLY HALFWORD IMMEiDIATE에 대한 R1 형식에서, 명령어에 따라, 16 비트의 명령어의 I2 필드의 내용은 부호화된 2진 정수로서 직접 사용되고, R1 필드는 길이가 32비트 또는 64 비트인, 제1 피연산자를 지정한다. 명령어 TEST UNDER MASK(TMHH, TMHL, TMLH, TMLL)에 대해, I2 필드의 내용은 마스크로서 사용되고, R1 필드는 길이가 64 비트인, 제1 피연산자를 지정한다.
INSERT IMMEDIATE, AND IMMEDIATE, OR IMMEDIATE, 및 LOAD LOGICAL IMMEDIATE 명령어들에 대해, I2 필드의 내용은 부호화되지 않은 2진 정수 또는 논리값으로서 사용되고, R1 필드는 길이가 64 비트인, 제1 피연산자를 지정한다. RI 및 RSI 형식에서의 상대적 분기 명령어(relative-branch instruction)에 대해, 16 비트 I2 필드의 내용은 하프워드의 수를 지정하는 부호화된 이진 정수로서 사용된다. 이 수는, 분기 명령어의 주소에 가산될 때, 부s분기 주소를 지정한다. RIL 형식에서, 상대적 분기 명령어에 대해, I2 필드는 32비트이고 동일한 방식으로 사용된다.
RI 및 RSI 형식에서 상대적 분기 명령어에 대해, 16 비트 I2 필드의 내용은 하프워드의 수를 지정하는 부호화된 2진 정수로서 사용된다. 이 수는, 분기 명령어의 주소에 더해졌을 때, 분기 주소를 지정한다. RIL 형식에서, 상대적 분기 명령어에 대해, I2 필드는 32비트이고 동일한 방식으로 사용된다. RIE 형식 명령어들인, COMPARE IMMEDIATE AND BRANCH RELATIVE 및 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE에 대해, 8비트 I2 필드의 내용은 제2 피연산자로서 직접 사용된다. RIE 형식 명령어들인, COMPARE IMMEDIATE AND BRANCH, COMPARE IMMEDIATE AND TRAP, COMPARE LOGICAL IMMEDIATE AND BRANCH, 및 COMPARE LOGICAL IMMEDIATE AND TRAP에 대해, 16비트 I2 필드의 내용은 제2 피연산자로서 직접 사용된다. RIE 형식 명령어들인, COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, 및 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE에 대해, 16비트 I2 필드의 내용은 분기 주소를 형성하기 위해 명령어의 주소에 더해지는 하프워드의 수를 지정하는 부호화된 2진 정수로서 사용된다.
RIL 형식 명령어들인, ADD IMMEDIATE, ADD LOGICAL IMMEDIATE, ADD LOGICAL WITH SIGNED IMMEDIATE, COMPARE IMMEDIATE, COMPARE LOGICAL IMMEDIATE, LOAD IMMEDIATE, 및 MULTIPLY SINGLE IMMEDIATE에 대해, 32비트 I2 필드의 내용은 제2 피연산자로서 직접 사용된다.
RIS 형식 명령어에 대해, 8비트 I2 필드의 내용은 제2 피연산자로서 직접 사용된다. SIL 형식에서, 16비트 I2 필드의 내용은 제2 피연산자로서 직접 사용된다. B1 및 D1 필드는 하기에 설명하는 바와 같이, 제1 피연산자를 지정한다.
RSL, SI, SIL, SSE, 및 대부분의 SS 형식에서, B1 필드에 의해 지정된 범용 레지스터의 내용은 제1 피연산자 주소를 형성하기 위해 D1 필드의 내용에 추가된다. RS, RSY, S, STY, SS, 및 SSE 형식에서, B2 필드에 의해 지정된 범용 레지스터의 내용은 제2 피연산자 주소를 형성하기 위해 D2 필드 또는 DH2 및 DL2 필드의 내용에 추가된다. RX, RXE, RXF, 및 RXY 형식에서, X2 및 B2 필드에 의해 지정된 범용 레지스터의 내용은 제2 피연산자 주소를 형성하기 위해 D2 필드 또는 DH2 및 DL2 필드의 내용에 추가된다. RIS 및 RRS 형식에서, 그리고 하나의 SS 형식에서, B4 필드에 의해 지정된 범용 레지스터의 내용은 제4 피연산자 주소를 형성하기 위해 D4 필드의 내용에 추가된다.
단일한, 8비트 길이 필드를 갖는 SS 형식에서,명령어들인, AND(NC), EXCLUSIVE OR(XC), MOVE(MVC), MOVE NUMERICS, MOVE ZONES, 및 OR(OC)에 대해, L은 제1 피연산자 주소에 의해 지정된 바이트의 우측까지의 추가적인 피연산자 바이트의 수를 지정한다. 그러므로, 제1 피연산자의 바이트의 길이는, 0-255인 L의 길이 코드에 대응하여, 1-256이다. 저장 결과는 제1 피연산자를 대체시키고 주소 및 길이에 의해 지정된 필드의 외부에 절대로 저장되지 않는다. 이 형식에서, 제2 피연산자는 제1 피연산자와 동일한 길이를 갖는다. EDIT, EDIT AND MARK, PACK ASCII, PACK UNICODE, TRANSLATE, TRANSLATE AND TEST, UNPACK ASCII, 및 UNPACK UNICODE에 적용되는 앞선 정의내용에 대한 변형들이 있다.
두 개의 길이 필드를 갖는 SS 형식에서, 그리고 RSL 형식에서, L1은 제1 피연산자 주소에 의해 지정된 바이트의 우측까지의 추가적인 피연산자 바이트의 수를 지정한다. 그러므로, 제1 피연산자의 바이트의 길이는, 0-15인 L의 길이 코드에 대응하여, 1-16이다. 마찬가지로, L2는 제2 피연산자 주소에 의해 지정된 위치의 우측까지의 추가적인 피연산자 바이트의 수를 지정한다. 결과는 제1 피연산자를 대체시키고 주소 및 길이에 의해 지정된 필드의 외부에 절대로 저장되지 않는다. 제1 피연산자가 제2 피연산자 보다 길다면, 제2 피연산자는 최대 제1 피연산자의 길이까지 제로로 좌측상에서 확장된다. 이 확장은 저장장소에서 제2 피연산자를 수정하지 않는다. MOVE TO PRIMARY, MOVE TO SECONDARY, 및 MOVE WITH KEY 명령어에 의해 사용되는, 두 개의 R 필드를 갖는 SS 형식에서, R1 필드에 의해 지정된 범용 레지스터의 내용은 32비트 부호화되지 않은 값이며 진정한 길이(true length)로 지칭된다. 피연산자들은 모두 유효 길이(effective length)로 지칭되는 길이를 갖는다. 유효 길이는 진정한 길이와 같거나, 또는 256인 길이를 가지며, 유효 길이와 진정한 길이는 어느 것도 256보다 작은 길이를 갖는다. 명령어는 진정한 길이에 의해 지정된 바이트의 총 수를 이동시키기 위해 루프를 프로그래밍하는 것을 용이하게 하기 위해 조건 코드를 설정한다. 두 개의 R 필드를 갖는 SS 형식은 또한 레지스터의 범위 및 LOAD MULTIPLE DISJOINT 명령어에 대한 두 개의 저장장소 피연산자를 지정하는 데에 그리고 PERFORM LOCKED OPERATION 명령어에 대한 하나 또는 두 개의 레지스터 및 하나 또는 두 개의 저장장소 피연산자를 지정하는 데에 사용된다.
B1, B2, X2 또는 B4 필드 중 임의의 것내의 제로는 대응하는 주소 성분이 없음을 지시한다. 없는 성분에 대해, 제로는 범용 레지스터 0의 내용과 무관하게 중간 합(intermediate sum)을 지시하는 데에 사용된다. 제로인 변위는 어떤 특별한 중요성을 갖지 않는다.
현재 PSW의 비트 31 및 32는 주소지정 모드 비트들이다. 비트 31은 확장형 주소지정 모드 비트이고, 비트 32는 기본 주소지정 모드 비트이다. 이비트들은 주소 발생에 의해 산출된 유효 주소의 크기를 제어한다. 현재 PSW의 비트 31 및 32 모두가 0이면, CPU는 24비트 주소지정 모드에 있고, 24 비트 명령어 및 피연산자 유효 주소가 생성된다. 현재 PSW의 비트 31이 0이고 비트 32가 1이면, CPU는 31비트 주소지정 모드에 있고, 31비트 명령어 및 피연산자 유효 주소가 생성된다. 현재 PSW의 비트 31 및 32 모두가 1이면, CPU는 64비트 주소지정 모드에 있고, 64 비트 명령어 및 피연산자 유효 주소가 생성된다. CPU에 의한 명령어의 실행은 명령어 및 피연산자의 주소의 생성을 수반한다.
명령어가 현재 PSW에 의해 지정된 위치로부터 인출되었을 때, 명령어 주소는 명령어에서 바이트의 수만큼 증대되어, 명령어가 실행된다. 그후 동일한 단계들이 시퀀스에서 다음 명령어를 인출하기 위해 새로운 명령어 주소의 값을 사용하여 반복된다. 24 비트 주소지정 모드에서, 명령어 주소는 명령어 주소 0에서 하프워드가 뒤이어지는 명령어 주소 224-2에서 하프워드를 이용하여 랩어라운드된다. 따라서, 24 비트 주소지정 모드에서, 명령어 주소의 갱신의 결과로서, PSW 비트 위치 104의 임의의 아웃된 캐리는 손실된다. 31비트 또는 64 비트 주소지정 모드에서, 명령어 주소는 마찬가지로, 명령어 주소 0에서 하프워드가 뒤이어지는 명령어 주소 231-2 또는 264-2에서 하프워드를 이용하여 랩어라운드된다. PSW 비트 위치 97 또는 64의 아웃된 각각의 캐리는 손실된다.
저장장소를 참조하는 피연산자 주소는 중간값으로부터 유도되고, 이것은 명령어내의 R 필드에 의해 지정된 레지스터에 포함되거나 또는 베이스 주소, 인덱스 및 변위인 3개의 이진수의 합에 의해 계산된다. 베이스 주소(B)는 명령어에서, B 필드로 지칭되는, 4 비트 필드에서 프로그램에 의해 지정된 범용 레지스터에 포함된 64 비트 수이다. 베이스 주소는 각각 프로그램 및 데이터 영역을 독립적으로 주소지정하는 수단으로서 사용될 수 있다. 어레이 유형 계산에서, 베이스 주소는 어레이의 위치를 지정할 수 있고 레코드 유형 처리에선 레코드를 식별할 수 있다. 베이스 주소는 전체 저장장소에 대한 주소지정을 제공한다. 베이스 주소는 또한 인덱싱에 대해 사용될 수 있다.
인덱스(X)는 명령어에서, X 필드로 지칭되는, 4 비트 필드에서 프로그램에 의해 지정된 범용 레지스터에 포함된 64 비트 수이다. 인덱스는 RX-형식, RXE-형식, 및 RXY-형식 명령어에만 포함된다. RX-형식, RXE-형식, RXF-형식, 및 RXY-형식 명령어들은 더블 인덱싱을 허용한다. 즉, 어레이내의 엘리먼트의 주소를 제공하도록 사용될 수 있다.
변위(D)는 명령어에서, D 필드로 지칭되는, 필드에 포함된 12 비트 또는 20비트 수이다. 12 비트 변위는 부호화되지 않으며 베이스 주소에 의해 지정된 위치를 넘어 최대 4,095 바이트까지의 상대 주소지정을 제공한다. 20 비트 변위는 부호화되며 베이스 주소 위치를 넘어 최대 524,287 바이트까지의 상대 주소지정 또는 베이스 주소 위치 이전의 최대 524,288 바이트까지의 상대 주소지정을 제공한다. 어레이 유형 계산에서, 변위는 엘리먼트와 연관된 다수의 아이템중 하나를 지정하기 위해 사용될 수 있다. 레코드의 처리에서, 변위는 레코드내의 아이템을 식별하기 위해 사용될 수 있다. 12 비트 변위는 일정한 형식의 명령어의 비트 위치 20-31에 있다. 일부 형식의 명령어에서, 또다른 12 비트 변위도 명령어에서, 비트 위치 36-47에 있다.
20 비트 변위는 RSY, RXY 또는 SIY 형식의 명령어에만 있다. 이 명령어들에서, D 필드는 비트 위치 20-31의 DL(하위) 필드와 비트 위치 32-39의 DH(상위) 필드로 이루어 진다. 긴 변위 기능부가 설치되었을 때, 변위의 수치 값은 DH 필드의 내용을 DL 필드의 내용의 좌측에 첨부함으로써 형성된다. 긴 변위 기능부가 설치되지 않았을 때, 변위의 수치 값은 DL 필드의 내용의 좌측에 8개의 제로 비트를 첨부함으로써 형성되고, DH 필드의 내용은 무시된다.
중간 합을 형성함에 있어서, 베이스 주소 및 인덱스는 64 비트 이진 정수로 취급된다. 12 비트 변위는 12 비트의 부호화되지 않은 이진 정수로 취급되고, 52개의 제로 비트가 좌측에 첨부된다. 20 비트 변위는 20비트의 부호화된 이진 정수로 취급되고, 부호 비트와 동일한 44개 비트가 좌측에 첨부된다. 64비트 이진 수가 3개 가산되고, 오버플로우는 무시된다. 중간 값의 비트는 0 내지 63으로 번호가 매겨진다. 합은 언제나 64비트 길이이고 생성된 주소를 형성하도록 중간값으로서 사용된다. B1, B2, X2 또는 B4 중 임의의 것에서 제로는 대응하는 주소 성분이 없음을 지시한다. 없는 성분에 대해, 제로는 범용 레지스터 0의 내용과 무관하게, 중간 합을 형성하는 데에 사용된다. 변위 제로는 어떠한 특별한 중요성을 갖지 않는다.
명령어 설명부가 R 필드에 의해 지정된 범용 레지스터의 내용은 저장장소에서 피연산자를 주소지정하는 데에 사용된다는 것을 지시할 때, 레지스터 내용은 64 비트 중간값으로서 사용된다.
명령어는 피연산자의 위치로서 및 주소 계산을 위해 동일한 범용 레지스터를 지정할 수 있다. 주소 계산은 레지스터가 동작에 의해 변경되기 이전에 완료된다. 개별 명령어 정의에서 달리 명시되지 않는 한, 생성된 피연산자 주소는 저장장소에서 피연산자의 최좌측 바이트를 지정한다.
생성된 피연산자 주소는 항상 64 비트 길이이고, 비트 0-63으로 번호가 정해진다. 생성된 피연산자 주소가 중간값으로부터 획득되는 방식은 현재 주소지정 모드에 좌우된다. 24 비트 주소지정 모드에서, 중간값의 비트 0-39는 무시되고, 생성된 주소의 비트 0-39는 강제로 제로가 되며, 중간값의 비트 40-63은 생성된 주소의 비트 40-63으로 된다. 31 비트 주소지정 모드에서, 중간값의 비트 0-32는 무시되고, 생성된 주소의 비트 0-32는 강제로 제로가 되며, 중간값의 비트 33-63은 생성된 주소의 비트 33-63으로 된다. 64 비트 주소지정 모드에서, 중간값의 비트 0-63은 생성된 주소의 비트 0-63으로 된다. 음의 값이 인덱스 및 베이스 주소 레지스터에 사용될 수 있다. 이 값들의 비트 0-32는 31 비트 주소지정 모드에서 무시되고, 비트 0-39는 24 비트 주소지정 모드에서 무시된다.
분기 명령어에 대해, 분기가 취해졌을 때 실행되어야 할 다음 명령어의 주소는 분기 주소로 지칭된다. 분기 명령어에 따라, 명령어 형식은 RR, RRE, RX, RXY, RS, RSY, RSI, RI, RIE, 또는 RIL일 수 있다. RS, RSY, RX, 및 RXY 형식에서, 분기 주소는 베이스 주소, 변위에 의해 지정되고 RX 및 RXY 형식에서, 인덱스에 의해 지정된다. 이 형식들에서, 중간값의 생성은 피연산자 주소 직접 값의 생성에 대한 것과 동일한 규칙을 따른다. RR 및 RRE 형식에서, R2 필드에 의해 지정된 범용 레지스터의 내용은 분기 주소가 형성되는 중간값으로서 사용된다. 범용 레지스터 0은 분기 주소를 포함하는 것으로 지정될 수 없다. R2 필드내의 제로 값은 명령어가 분기없이 실행되도록 한다.
상대 분기 명령어는 RSI, RI, RIE, 또는 RIL 형식의 명령어이다. 상대 분기 명령어에 대한 RSI, RI 및 RIE 형식에서, I2 필드의 내용은 하프워드의 수를 지정하는 16 비트 부호화된 이진 정수로 취급된다. RIL 형식에서, I2 필드의 내용은 하프워드의 수를 지정하는 32 비트 부호화된 이진 정수로 취급된다. 분기 주소는 상대 분기 명령어의 주소에 더해진 I2 필드에 의해 지정된 하프워드의 수이다.
RSI, RI, RIE, 또는 RIL 형식에서, 상대 분기 명령어에 대한 64 비트 중간값은 무시된 비트 위치0 로부터의 오버플로우를 갖는, 두 개의 가수(addend)의 합이다. RSI, RI 및 RIE 형식에서, COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE 및 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE에 대해, 제1 가수가 I2 필드에 대해 상기 설명한 바와 같이 첨부된 비트와 함께, I4 필드의 내용이라는 것을 제외하고, 제1 가수는 좌측에 첨부된 내용의 부호 비트와 동일한 47개 비트 및 우측에 첨부된 하나의 제로 비트를 갖는 I2 필드의 내용이다. RIL 형식에서, 제1 가수는 좌측에 첨부된 내용의 부호 비트와 동일한 31개 비트 및 우측에 첨부된 하나의 제로 비트를 갖는 I2 필드의 내용이다. 모든 명령어 형식에서, 제2 가수는 분기 명령어의 64 비트 주소이다. 분기 명령어의 주소는 다음 순차 명령어를 주소지정하도록 갱신되기 이전에 PSW에서의 명령어 주소이거나, 또는 EXECUTE가 사용된다면 EXECUTE 명령어의 타겟의 주소이다. EXECUTE가 24 비트 또는 31 비트 주소지정 모드에서 사용된다면, 분기 명령어의 주소는 좌측에 각각 첨부된 40개의 제로 및 33개의 제로를 갖는 타겟 주소이다.
분기 주소는 언제나 64 비트 길이이고, 0-63으로 번호가 정해진 비트를 갖는다. 분기 주소는 현재 PSW의 비트 64-127를 대체한다. 분기 주소가 중간값으로부터 획득되는 방식은 주소지정 모드에 좌우된다. 주소지정 모드를 변경하는 분기 명령어 등에 대해, 새로운 주소지정 모드가 사용된다. 24 비트 주소지정 모드에서, 중간값의 비트 0-39는 무시되고, 분기 주소의 비트 0-39는 제로로 되고, 중간값의 비트 40-63는 분기 주소의 비트 40-63이 된다. 31 비트 주소지정 모드에서, 중간값의 비트 0-32는 무시되고, 분기 주소의 비트 0-32는 제로로 되고, 중간값의 비트 33-63은 분기 주소의 비트 33-63이 된다. 64 비트 주소지정 모드에서, 중간값의 비트 0-63은 분기 주소의 비트 0-63이 된다.
여러 분기 명령어에 대해, 분기는 특정한 조건을 충족시키는 지에 좌우된다. 조건이 충족되지 않았을 때, 분기는 행해지지 않으며, 정상적인 순차적 실행이 계속되고, 분기 주소는 사용되지 않는다. 분기가 행해졌을 때, 분기 주소의 비트 0-63은 현재 PSW의 비트 64-127를 대체한다. 분기 주소는 분기 동작의 일부로서 저장장소를 액세스하는 데에 사용되지 않는다. 홀수 분기 주소에 기인한 지정 예외 및 분기 주소에서의 명령어의 인출에 기인한 액세스 예외는 분기 동작의 일부로서 인식되진 않지만 대신에 분기 위치에서 명령어의 실행과 연관된 예외로서 인식된다.
BRANCH AND SAVE와 같은 분기 명령어는 피연산자의 위치로서 및 분기 주소 계산에 대한 동일한 레지스터를 지정할 수 있다. 분기 주소 계산은 나머지 동작이 수행되기 이전에 완료된다.
제4장 "제어"에서 설명된 프로그램 상태 워드(PSW)는 적절한 프로그램을 실행하는 데에 필요한 정보를 포함한다. PSW는 명령어 시퀀싱을 제어하고 현재 실행중인 프로그램과 관련한 CPU의 상태를 유지 및 지시하는 데에 사용된다. 활성이거나 제어하는 PSW를 현재 PSW로 지칭한다. 분기 명령어는 결정 수행, 루프 제어 및 서브루틴 연결의 기능을 수행한다. 분기 명령어는 새로운 명령어 주소를 현재 PSW에 도입함으로써 명령어 시퀀싱에 영향을 미친다. 16 비트의 I2 필드를 갖는 상대 분기 명령어는 베이스 레지스터를 사용하지 않고, 분기 명령어의 위치에 대해 최대 + 64K-2 바이트까지 또는 - 64K 바이트까지의 오프셋트의 위치로 분기할 수 있도록 한다. 32 비트의 I2 필드를 갖는 상대 분기 명령어는 베이스 레지스터를 사용하지 않고, 분기 명령어의 위치에 대해 최대 + 4G-2 바이트까지 또는 - 4G 바이트까지의 오프셋트의 위치로 분기할 수 있도록 한다.
결정을 수행하기 위한 기능부들은 BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, 및 BRANCH RELATIVE ON CONDITION LONG 명령어에 의해 제공된다. 이 명령어들은 산술, 논리 및 I/O 동작의 대부분의 결과를 반영하는 조건 코드를 검사한다. 두 개의 비트로 된 조건 코드는 4개의 가능한 조건 코드 설정값들인, 0, 1, 2 및 3을 제공한다.
임의 설정값에 대한 특별한 의미는 조건 코드를 설정하는 동작에 좌우된다. 예를 들어, 조건 코드는 제로, 비제로, 제1 피연산자 하이, 등가, 오버플로루 및 서브채널 사용중(busy)과 같은 조건을 반영한다. 설정되었으면, 조건 코드는 상이한 조건 코드가 설정되도록 하는 명령어에 의해 수정될 때 까지 변화되지 않은 상태에 있다.
루프 제어는 주소 산술 및 카운팅 동작의 결과를 테스트하기 위해 BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, 및 BRANCH RELATIVE ON CONDITION LONG의 사용으로 수행될 수 있다. 특히 산술 및 테스트의 빈번한 일부 조합에 대해, BRANCH ON COUNT, BRANCH ON INDEX HIGH, 및 BRANCH ON INDEX LOW OR EQUAL이 제공되고, 이 명령어들의 상대 분기 등가물들도 제공된다. 특수화되는 이 분기들은 이 타스크들에 대한 증가된 성능을 제공한다.
주소지정 모드의 변경이 요구되지 않을 때 서브루틴 링키지가 BRANCH AND LINK 및 BRANCH AND SAVE 명령어에 의해 제공된다. (이 BRANCH AND SAVE에 대한 설명은 BRANCH RELATIVE AND SAVE 및 BRANCH RELATIVE AND SAVE LONG에도 적용된다) 이들 명령어 모두는 새로운 명령어 주소의 도입 뿐만 아니라 복귀 주소 및 연관된 정보의 보존도 허용한다. 복귀 주소는, 분기 명령어의 타겟으로서 분기 명령어를 갖는 EXECUTE 명령어를 뒤따르는 명령어의 주소라는 것을 제외하곤, 저장장소에서 분기 명령어를 뒤따르는 명령어의 주소이다.
BRANCH AND LINK 및 BRANCH AND SAVE 양자 모두는 R1 필드를 갖는다. 이들은 명령어에 좌우되는 필드에 의해 분기 주소를 형성한다. 명령어의 동작은 하기와 같이 요약된다.
ㆍ 24 비트 주소지정 모드에서, 두 명령어는 모두 범용 레지스터 R1의 비트 위치 40-63에 복귀 주소를 위치시키고 그 레지스터의 비트 0-31을 변경되지 않은 상태로 둔다. BRANCH AND LINK는 명령어에 대한 명령어 길이 코드 및 현재 PSW로부터 조건 코드 및 프로그램 마스크를 범용 레지스터 R1의 비트 위치 32-39에 둔다. BRANCH AND SAVE는 제로를 상기 비트위치에 둔다.
ㆍ 31 비트 주소지정 모드에서, 두 명령어는 모두 범용 레지스터 R1의 비트 위치 33-63에 복귀 주소를 그리고 비트위치 32에 1을 위치시키고 그 레지스터의 비트 0-31을 변경되지 않은 상태로 둔다.
ㆍ 64 비트 주소지정 모드에서, 두 명령어는 모두 범용 레지스터 R1의 비트 위치 0-63에 복귀 주소를 둔다.
ㆍ 임의의 주소지정 모드에서, 두 명령어는 모두 현재 주소지정 모드의 제어하에 분기 주소를 생성한다. 명령어는 분기 주소의 비트 0-63을 PSW의 비트 위치 64-127에 둔다. RR 형식에서, 두 명령어는 모두 명령어의 R2 필드가 제로이면 분기를 수행하지 않는다.
24 비트 또는 31 비트 주소지정 모드에서, BRANCH AND SAVE는 기본 주소지정 모드 비트, PSW의 비트 32를 범용 레지스터 R1의 비트 위치 32에 둔다는 것을 알 수 있다. BRANCH AND LINK는 31 비트 주소지정 모드에서 상기와 같이 동작한다. BRANCH AND SAVE AND SET MODE 및 BRANCH AND SET MODE 명령어들은 링키지 동안 주소지정 모드의 변경이 요구될 때 사용하기 위한 것이다. 이 명령어들은 R1 및 R2 필드를 갖는다. 이 명령어들의 동작은 하기와 같다.
ㆍ BRANCH AND SAVE AND SET MODE는 BRANCH AND SAVE와 동일한 범용 레지스터 R1의 내용을 설정한다. 또한, 이 명령어는 확장형 주소지정 모드 비트, PSW의 비트 31을 이 레지스터의 비트 위치 63에 둔다.
ㆍ BRANCH AND SET MODE는 R1이 비제로이면 하기와 같이 수행한다. 24비트 또는 31비트 모드에서, 이 명령어는 PSW의 비트 32를 범용 레지스터 R1의 비트 위치 32에 두고 이 레지스터의 나머지 비트들인 비트 0-31 및 33-63을 변경되지 않은 상태로 둔다. 레지스터의 비트 63은 그 레지스터가 명령어 주소를 포함한다면 제로이어야한다는 것을 유의해야 한다. 64비트 모드에서, 이 명령어는 PSW의 비트 31(일 비트)을 이 레지스터의 비트 위치 63에 두고, 이 레지스터의 비트 0-62를 변경되지 않은 상태로 둔다.
ㆍ R2가 제로가 아닐 때, 두 명령어 모두는 하기와 같이 주소지정 모드를 설정하고 분기를 수행한다. 범용 레지스터 R2의 비트 63은 PSW의 비트 31에 위치된다. 비트 63이 0이면, 이 레지스터의 비트 32는 PSW의 비트 32에 놓인다. 비트 63이 1이면, PSW의 비트 32는 1로 설정된다. 그러면 분기 주소는, 레지스터의 비트 63이 0으로 취급되는 것을 제외하고, 새로운 주소지정 모드의 제어하에, 레지스터의 내용으로부터 생성된다. 명령어들은 분기 주소의 비트 0-63을 PSW의 비트 위치 64-127에 둔다. 범용 레지스터 R2의 비트 63은 변경되지 않은 상태로 남겨지고, 따라서, 호출된 프로그램으로의 입력시 1일 수 있다. R2가 R1과 같다면, 지정된 범용 레지스터내의 결과는 R1 레지스터에 대해 지정된다.
인터럽션(컨텍스트 스위치)
인터럽션 매커니즘은 CPU가 구성 외적인, 구성 내적인 또는 CPU 자체내의 조건의 결과로서 자신의 상태를 변경시킬 수 있도록 한다. 고 우선순위의 조건 및 즉시적인 조건 유형의 인식에 고속으로 응답할 수 있도록 하기 위해, 인터럽션 조건은 6개의 부류들인, 외부, 입력/출력, 머신 검사, 프로그램, 재시작, 및 관리자 호출(supervisor call)로 그룹지어 진다.
인터럽션은, 새로운 PSW를 구 PSW로서 저장하는 것, 인터럽션의 원인을 식별하는 정보를 저장하는 것, 및 새로운 PSW를 인출하는 것으로 이루어 진다. 프로세싱은 새로운 PSW에 의해 정해진 바와 같이 재개된다. 인터럽션에 저장된 구 PSW는 일반적으로 인터럽션이 발생하지 않았다면 다음번에 실행되었을 명령어의 주소를 포함한다. 따라서 인터럽트된 프로그램의 재개를 허용한다. 프로그램 및 관리자 호출 인터럽션에 대해, 저장된 정보는 또한 마지막으로 실행된 명령어의 길이를 식별하는 코드를 포함하고, 따라서 프로그램이 인터럽션의 원인에 응답하는 것을 허용한다. 일반적인 응답이 인터럽션을 야기하는 명령어의 재실행으로 되는 일부 프로그램 조건의 경우에, 명령어 주소는 직접 마지막으로 실행된 명령어를 식별한다.
재시작을 제외하곤, 인터럽션은 CPU가 동작 상태에 있을 때에만 발생할 수 있다. 재시작 인터럽션은 정지되어 있거나 동작 상태에 있는 CPU에서 발생할 수 있다.
임의의 액세스 예외는 예외와 연관되어 있는 명령어의 실행의 일부로서 인식된다. 액세스 예외는 CPU가 이용불가능한 위치로부터 미리인출하려 하거나 일부 기타의 액세스 예외 조건을 탐지하려고 할 때 인식될 수 없지만, 분기 명령어 또는 인터럽션은 명령어가 실행되지 않도록 명령어 시퀀스를 변경시킨다. 모든 명령어는 명령어의 인출로 인해 액세스 예외가 인식되어 질 수 있도록 한다. 또한, 명령어 실행과 연관된 액세스 예외는 저장장소내의 피연산자에 대한 액세스로 인해 발생할 수 있다. 명령어 인출로 인한 액세스 예외는 제1 명령어 하프워드가 예외를 만나지 않고는 인출될 수 없을 때 지시된다. 제1 명령어 하프워드가 어떠한 액세스 예외도 가지고 있지 않을 때, 액세스 예외는 명령어의 맨처음 두 비트에 의해 지정된 명령어 길이에 따라 추가의 하프워드에 대해 지시될 수 있다. 그러나, 동작이 명령어의 제2 또는 제 3 하프워드를 액세스하지 않고 수행될 수 있을 때, 액세스 예외가 사용되지 않은 부분에 대해 지시되어는 지의 여부를 예측할 수 없다. 명령어 인출에 대한 액세스 예외의 지시는 모든 명령어에 공통적이므로, 개별 명령어 정의내용으로는 정의되지 않는다.
개별 명령어 설명에서 달리 지시되는 것을 제외하곤, 하기의 규칙이 피연산자 동작에 대한 액세스와 연관된 예외에 대해 적용된다. 인출 유형 피연산자에 대해, 액세스 예외는 동작을 완료하는 데에 요구되는 피연산자의 부분에 대해서만 지시될 것이 필요하다. 동작을 완료하는 데에 필요하지 않은 인출 유형 피연산자 부분에 대해 액세스 예외가 지시되는 지의 여부는 예측할 수 없다.
저장 유형 피연산자에 대해, 액세스 예외는 동작이 피연산자의 액세스가 불가능한 부분의 사용없이 완료될 수 있는 경우에도 전체 피연산자에 대해 인식된다. 저장 유형 피연산자의 값이 예측할 수 없는 경우로 정의되는 상황에서, 액세스 예외가 지시되는 지의 여부는 예측할 수 없다. 피연산자 위치에 대한 액세스가 액세스 예외가 인식되도록 할 때 마다, 용어 "액세스"는 명령어의 설명부에 프로그램 예외 리스트에 포함된다. 이 엔트리는 액세스 예외가 인식될 수 있도록 하는 피연산자를 지시하고 액세스 예외가 그 피연산자 위치에 대한 인출 액세스 또는 저장 액세스상에서 인식되는 지의 여부를 지시한다. 액세스 예외는 각각의 특정한 명령어에 대해 정의된 피연산자의 일부분에 대해서만 인식된다.
동작 예외는 CPU가 비유효한 동작 코드로 명령어를 실행하려고 할 때 인식된다. 동작 코드는 할당되지 않을 수도 있고, 또는 그 동작 코드를 구비한 명령어는 CPU에 설치되지 않을 수도 있다. 동작은 억제된다. 명령어 길이 코드는 1,2 또는 3이다. 동작 예외는 16진수(hex) 0001(또는 동시적인 PER 이벤트가 지시되었다면 16진수 0081)인 프로그램 예외 코드이다.
일부 모델은 특정한 또는 맞춤 특징의 일부로서 또는 이것들에 도움을 주는 것으로서, 본원에 설명되지 않은 명령어를 제공할 수 있다. 결과적으로, 본원에 설명되지 않은 동작 코드는 동작 예외가 인식되도록 할 필요가 없다. 또한, 이 명령어들은 동작 모드가 설정되도록 하거나 그렇지 않으면 후속하는 명령어의 실행에 영향을 미치도록 머신이 변경되도록 할 수 있다. 그러한 동작이 행해지는 것을 방지하기 위해, 본원에 설명되지 않은 동작 코드를 지닌 명령어는 이 동작 코드와 연관된 특정한 기능이 요망될 때에만 실행되어야 한다.
사양 예외는 하기의 내용이 참일 때 인식된다.
1. PSW의 할당되지 않은 비트 위치(즉, 비트 위치, 0, 2-4, 24-30, 또는 33-60 중 임의의 비트 위치)에 1이 도입된다. 이것은 초기 PSW 사양 예외로서 취급된다.
2. PSW의 비트 위치 12에 1이 도입된다. 이것은 초기 PSW 사양 예외로서 취급된다.
3. PSW는 다음 방식 중 임의의 것에서 유효하지 않다. a. PSW의 비트 31이 1이고 비트 32는 0(제로). b. PSW의 비트 31 및 32가, 24 비트 주소지정 모드를 지시하는 0이고, PSW의 비트 64-103가 모두가 0인 것은 아님. c. PSW의 비트 31이 0이고 비트 32는, 31 비트 주소지정 모드를 지시하는 1이고, PSW의 비트 64-96은 모두가 0인 것은 아님. 이것은 초기 PSW 사양 예외로서 취급된다.
4. PSW는 홀수(odd) 명령어 주소를 포함한다.
5. 피연산자 주소는 적분 경계 지정을 필요로 하는 명령어에서 적분 경계를 지정하지 않는다.
6. 홀수 번호를 갖는 범용 레지스터는 짝수 번호를 갖는 레지스터 지정을 필요로 하는 명령어의 R 필드에 의해 지정된다.
7. 0, 1, 4, 5, 8, 9, 12, 또는 13 이외의 부동 소숫점 레지스터는 확장 피연산자를 위해 지정된다.
8. 십진 산술연산에서 곱셈기 또는 나눗셈기는 15개 숫자 및 부호를 초과한다.
9. 제1 피연산자 필드의 길이는 십진 곱셈 또는 나눗셈에서 제2 피연산자 필드의 길이 보다 작거나 같다.
10. CIPHER MESSAGE, CIPHER MESSAGE WITH CHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPLTTE LAST MESSAGE DIGEST, 또는 COMPUTE MESSAGE AUTHENTICATION CODE의 실행이 시도되고, 범용 레지스터 0의 비트 57-63의 기능 코드는 할당되지 않은 또는 설치되지 않은 기능 코드를 포함한다.
11. CIPHER MESSAGE 또는 CIPHER MESSAGE WITH CHAINING 의 실행이 시도되고, R1 또는 R2 필드는 홀수 번호 레지스터 또는 범용 레지스터 0을 지정한다.
12. CIPHER MESSAGE, CIPHER MESSAGE WITH CHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST 또는 COMPUTE MESSAGE AUTHENTICATION CODE의 실행이 시도되고, 제2 피연산자 길이는 지정된 기능의 데이터 블록 사이즈의 수 배가 아니다. 이 사양 예외 조건 코드는 질의 기능에 적용되지 않는다.
13. COMPARE AND FORM CODEWORD 의 실행이 시도되고, 범용 레지스터 1, 2 및 3은 초기에 짝수 값을 포함하지 않는다.
32. COMPARE AND SWAP AND STORE 의 실행이 시도되고, 하기의 조건 중 임의의 조건이 존재함.
ㆍ 기능 코드는 할당되지 않은 값을 지정한다.
ㆍ 저장 특성은 할당되지 않은 값을 지정한다.
ㆍ 기능 코드는 0이고, 제1 피연산자는 워드 경계상에서 지정되지 않는다.
ㆍ 기능 코드는 1이고, 제1 피연산자는 더블워드 경계상에서 지정되지 않는다.
ㆍ 제2 피연산자는 저장값의 사이즈에 대응하는 적분 경계상에서 지정되지 않는다.
33. COMPARE LOGICAL LONG UNICODE 또는 MOVE LONG UNICODE 의 실행이 시도되고, 범용 레지스터 R1+1, 또는 R3+1의 내용은 짝수 개 바이트를 지정하지 않는다.
34. COMPARE LOGICAL STRING, MOVE STRING 또는 SEARCH STRING의 실행이 시도되고, 범용 레지스터 0의 비트 32-55는 모두가 0인 것은 아니다.
35. COMPRESSION CALL의 실행이 시도되고, 범용 레지스터 0의 비트 48-51은 이진수 0000 및 0110-1111 값들 중 임의의 값을 갖는다.
36. COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPUTE LAST MESSAGE DIGEST, 또는 COMPUTE MESSAGE AUTHENTICATION CODE 의 실행이 시도되고, 하기의 내용중 어느 것도 참인 경우:
ㆍ R2 필드는 홀수 번호 레지스터 또는 범용 레지스터 0을 지정한다.
ㆍ 범용 레지스터 0의 비트 56은 제로가 아니다.
37. CONVERT HFP TO BFP, CONVERT TO FIXED (BFP 또는 HFP), 또는 LOAD FP INTEGER (BFP)의 실행이 시도되고, M3 필드는 유효한 수정자를 지정하지 않는다.
38. DIVIDE TO INTEGER 의 실행이 시도되고, M4 필드는 유효한 수정자를 지정하지 않는다.
39. EXECUTE 의 실행이 시도되고, 타겟 주소는 홀수이다.
40. EXTRACT STACKED STATE 의 실행이 시도되고, 범용 레지스터 R2의 비트 위치 56-63의 코드는 ASN-및-LX-재사용(ASN-and-LX-reuse) 기능부가 설치되지 않았을 땐 4 보다 크거나 상기 기능부가 설치되었을 땐 5 보다 크다.
41. FIND LEFTMOST ONE 의 실행이 시도되고, R1 필드는 홀수 번호 레지스터를 지정한다.
42. INVALIDATE DAT TABLE ENTRY 의 실행이 시도되고, 범용 레지스터 R2의 비트 위치 44-51는 모두가 0인 것은 아니다.
43. LOAD FPC의 실행이 시도되고, FPC 레지스터에서 지원되지 않는 비트에 대응하는 제2 피연산자의 하나 이상의 비트는 1이다.
44. LOAD PAGE-TABLE-ENTRY ADDRESS 의 실행이 시도되고, 명령어의 M4 필드는 이진수 0000-0100 이 아닌 임의의 값을 포함한다.
45. LOAD PSW의 실행이 시도되고, 제2 피연산자 주소에서 더블워드의 비트 12는 0이다. 이것은 이 예외가 인식되었는 지의 여부에 좌우되는 모델이다.
46. MONITOR CALL 의 실행이 시도되고, 명령어의 비트 위치 8-11은 0을 포함하지 않는다.
47. MOVE PAGE 의 실행이 시도되고, 범용 레지스터 0의 비트 위치 48-51은 0를 포함하지 않거나 이 레지스터의 비트 52 및 53은 모두 1이다.
48. PACK ASCII 의 실행이 시도되고, L2 필드는 31 보다 크다.
49. PACK UNICODE 의 실행이 시도되고, L2 필드는 63 보다 크거나 등가이다.
50. PERFORM FLOATING POINT OPERATION 의 실행이 시도되고, 범용 레지스터 0의 비트 32는 0이고, 비트 33-63의 하나 이상의 필드는 유효하지 않거나 설치되지 않은 기능을 지정한다.
51. PERFORM LOCKE-D OPERATION 의 실행이 시도되고, 다음 하기의 내용중 임의의 것이 참이다. ㆍT 비트, 범용 레지스터 0의 비트 55는 0이고, 이 레지스터의 비트 56-63의 기능 코드는 유효하지 않다. ㆍ범용 레지스터 0의 비트 32-54는 모두가 0인 것은 아니다. ㆍ액세스-레지스터 모드에서, ALET를 포함하는 파라미터의 사용을 야기하는 기능 코드에 대해, R3 필드는 0이다.
52. PERFORM TIMING FACILITY FUNCTION 의 실행이 시도되고, 하기의 내용중 어느 것이든 참이다. ㆍ범용 레지스터 0의 비트 56은 0이 아니다. ㆍ범용 레지스터 0의 비트 57-63은 할당되지 않은 또는 설치되지 않은 기능 코드를 지정한다.
53. PROGRAM TRANSFER 또는 PROGRAM TRANSFER WITH INSTANCE 의 실행이 시도되고, 하기의 내용 모두가 참이다. ㆍ PSW의 확장 주소지정 모드 비트는 0이다. ㆍ 명령어의 R2 필드에 의해 지정된 범용 레지스터에서, 기본 주소지정 모드 비트, 비트 32는 0이다. ㆍ 동일한 레지스터에서 명령어 주소의 비트 33-39는 모두가 0인 것은 아니다.
54. RESUME PROGRAM 의 실행이 시도되고, 하기의 내용중 어느 것이든 참이다.
ㆍ 제2 피연산자에서 PSW 필드의 비트 31, 32 및 64-127은 현재 PSW내의 위치에 대해 유효하지 않다. 실행은 하기의 내용 중 임의의 것이 참이라면 인식된다. - 비트 31 및 32가 모두 0이고 비트 64-103이 모두가 0인 것은 아니다. - 비트 31 및 32가 각각, 0 및 1이고 비트 64-96이 모두가 0인 것은 아니다. - 비트 31 및 32가 각각, 1 및 0이다. -비트 127이 1이다.
ㆍ 파라미터 리스트의 비트 0-12는 모두가 0인 것은 아니다.
55. SEARCH STRING UNICODE 의 실행이 시도되고, 범용 레지스터 0의 비트 32-47은 모두가 0인 것은 아니다.
56. SET ADDRESS SPACE CONTROL 또는 SET ADDRESS SPACE CONTROL FAST 의 실행이 시도되고, 제2 피연산자 주소의 비트 52 및 53은 모두 0이 아니다.
57. SET ADDRESSING MODE (SAM24)의 실행이 시도되고, PSW내의 갱신되지 않은 명령어 주소의 비트 0-39, PSW의 비트 64-103는, 모두가 0인 것은 아니다.
58. SET ADDRESSING MODE (SAM31)의 실행이 시도되고, PSW내의 갱신되지 않은 명령어 주소의 비트 0-32, PSW의 비트 64-96는, 모두가 0인 것은 아니다.
59. SET CLOCK PROGRAMMABLE FIELD 의 실행이 시도되고, 범용 레지스터 0의 비트 32-47은 모두가 0인 것은 아니다.
60. SET FPC의 실행이 시도되고, FPC 레지스터에서 지원되지 않는 비트에 대응하는 제1 피연산자의 하나 이상의 비트는 1이다.
61. STORE SYSTEM INFORMATION의 실행이 시도되고, 범용 레지스터 0의 기능 코드는 유효하고, 하기 사항은 어느 것이든 참이다. ㆍ 범용 레지스터 0의 비트 36-55 및 범용 레지스터 1의 비트 32-47은 모두가 0인 것은 아니다. ㆍ 제2 피연산자 주소는 4K-바이트 경계로 정렬되지 않는다.
62. TRANSLATE TWO TO ONE 또는 TRANSLATE TWO TO TWO 의 실행이 시도되고, 범용 레지스터 R1 + 1의 길이는 짝수 개의 바이트를 지정하지 않는다.
63. UNPACK ASCII 의 실행이 시도되고, L1 필드는 31 보다 크다.
64. UNPACK UNICODE의 실행이 시도되고, L1 필드는 63 보다 크거나 등가이다다.
65. UPDATE FREE의 실행이 시도되고, 범용 레지스터 4 및 5의 초기 내용이 24 비트 또는 31 비트 주소지정 모드에서 8의 배수가 아니거나, 64 비트 주소지정 모드에서 16의 배수가 아니다. 구 PSW에 의해 식별된 명령어의 실행은 억제된다. 그러나, 초기 PSW 사양 예외(원인 1 내지 3)에 대해 새로운 PSW를 도입하는 동작이 완료되었지만, 그후 즉시 인터럽션이 발생한다. 바람직하게, 명령어 길이 코드(ILC)는 1, 2, 또는 3이고 예외를 야기시키는 명령어의 길이를 지시한다. 명령어 주소가 홀수일 때(원문 명세서 페이지 6-33, 원인 4), ILC가 1, 2, 또는 3인지의 여부를 예측하는 것이 불가능하다. 초기 PSW 사양 예외(원인 1-3) 및 예외가 LOAD PSW, LOAD PSW ELXTENDED, PROGRAM RETURN, 또는 인터럽션에 의해 도입되었기 때문에 예외가 인식되었을 때, ILC는 0이다. 예외가 SET ADDRESSING MODE(SAM24, SAM31)에 의해 도입되었을 때, ILC는 1이거나, SET ADDRESSING MODE가 EXECUTE의 타겟이었다면 ILC는 2이다. 예외가 SET SYSTEM MASK 또는 STORE THEN OR SYSTEM MASK에 의해 도입되었을 때, ILC는 2이다.
프로그램 인터럽션은 프로그램의 실행 동안 발생하는 이벤트 및 예외를 보고하기 위해 사용된다. 프로그램 인터럽션은 구 PSW가 실제 위치 336-351에 저장되도록 하고 새로운 PSW가 실제 위치 464-479로부터 인출되어지게 한다. 인터럽션의 원인은 인터럽션 코드에 의해 식별된다. 인터럽션 코드는 실제 위치 142-143에 위치되고, 명령어 길이 코드는 실제 위치 141에서 바이트의 비트 위치 5 및 6-나머지 비트는 0으로 설정됨-에 위치되고, 0은 실제 위치 140에 저장된다. 몇몇 원인에 대해, 인터럽션에 대한 이유를 식별하는 추가의 정보는 실제 위치 144-183에 저장된다. PER-3 기능이 설치되어 있다면, 프로그램 인터럽션 작용의 일부로서, 차단 이벤트 주소 레지스터(breaking-event-address register)의 내용이 실제 저장 위치 272-279에 위치된다. PER 이벤트 및 비밀 동작 예외를 제외하곤, 인터럽션을 일으키는 조건은 인터럽션 코드의 최우측 7개 비트 위치에 있는 코드화된 값에 의해 지시된다. 한번에 단 하나의 조건만이 지시된다. 인터럽션 코드의 비트 0-7은 0으로 설정된다. PER 이벤트는 인터럽션 코드의 비트 8을 1로 설정함으로써 지시된다. 이것인 유일한 조건이었을 때, 비트 0-7 및 9-15도 또한 0으로 설정된다. PER 이벤트가 다른 프로그램 인터럽션 조건과 동시에 지시되었을 때, 비트 8은 1이고 비트 0-7 및 9-15는 다른 조건에 대해 설정된다. 비밀 동작 예외는 16진수 0119인 인터럽션 코드에 의해 지시되고, PER 이벤트도 지시되었다면 16진수 0199인 인터럽션 코드에 의해 지시된다.
대응하는 마스크 비트가 있을 때, 프로그램 인터럽션은 그 마스크 비트가 1일 때에만 발생할 수 있다. PSW내의 프로그램 마스크는 4개의 예외들을 제어하고, FPC 레지스터내의 IEEE 마스크는 IEEE 예외를 제어하고, 제어 레지스터 0내의 비트 33은 SET SYSTEM MASK가 특수한 동작 예외를 일으키는 지의 여부를 제어하고, 제어 레지스터 8내의 비트 48-63은 모니터 이벤트로 인한 인터럽션을 제어하고, 마스크의 계층구조는 PER 이벤트로 인한 인터럽션을 제어한다. 임의의 제어하는 마스크 비트가 0일 때, 조건은 무시되고, 조건은 미해결 상태(pending)에 있지 않는다.
프로그램 인터럽션에 대한 새로운 PSW가 PSW 형식 에러를 갖거나 예외가 명령어 인출 프로세스중에 인식되도록 할 때, 프로그램 인터럽션의 스트링이 발생할 수 있다.
프로그램 예외로서 지시된 일부 조건들은 채널 서브시스템에 의해서도 인식될 수 있고, 이 경우 예외는 서브채널 상태 워드 또는 확장 상태 워드에서 지시된다.
데이터 예외가 프로그램 인터럽션을 야기시킬 때, 데이터 예외 코드(DXC;data-exception code)는 위치 147에 저장되고, 0는 위치 144-146에 저장된다. DXC는 다양한 유형의 데이터 예외 조건들간을 구별한다. AFP-레지스터(추가의 부동 소숫점 레지스터)가 비트를 제어할 때, 제어 레지스터0의 비트 45는 1이고, DXC는 또한 부동 소숫점 제어(FPC;floating-point-control) 레지스터의 DXC 필드에 위치된다. FPC 레지스터의 DXC 필드는 임의의 기타 프로그램 예외가 보고되었을 때 변경되지 않은 상태로 남아 있다. DXC는 데이터 예외의 특정 원인을 지시하는 8비트 코드이다.
DXC 2 및 3은 상호 배타적이고 임의의 기타 DXC 보다 더 높은 우선순위를 갖는다. 따라서, 예를 들어, DXC 2(BFP 명령어)는 임의의 기타 IEEE 예외보다 높은 우선순위를 취하고, DXC 3(DFP 명령어)는 임의의 기타 IEEE 예외 또는 시뮬레이트된 IEEE 예외보다 높은 우선순위를 취한다. 또다른 예로서, DXC 3(DFP 명령어) 및 DXC 1(AFP 명령어) 모두에 대한 조건이 존재한다면, DXC 3가 보고된다. 사양 예외 및 AFP 레지스터 데이터 예외 모두를 적용할 때, 어느 것이 보고되는 지를 예측하는 것은 불가능하다.
주소지정 예외는, CPU가 구성에서 이용할 수 없는 주 저장장소 위치를 참조하려고 시도할 때 인식된다. 주 저장장소 위치는 위치가 설치되지 않았을 때, 저장 유닛이 구성에 없을 때, 또는 전력이 저장 유닛에서 오프상태에 있을 때 구성에서 이용할 수 없다. 구성에서 이용할 수 없는 저장장소 위치를 지정하는 주소는 비유효한 주소인 것으로 참조된다. 동작은 명령어의 주소가 비유효한 것일 때 억제된다. 마찬가지로, 동작은 EXECUTE의 타겟 명령어의 주소가 비유효한 것일 때 억제된다. 또한 동작 유닛은 주소 지정 예외가 테이블 또는 테이블 엔트리를 액세스하는 중에 만나게 될 때 억제된다. 규칙이 적용될 테이블 및 테이블 엔트리들로는 발송가능한 유닛 제어 테이블, 주(primary) ASN 제2 테이블 엔트리, 액세스 리스트내의 엔트리, 리전(region) 제1 테이블, 리전 제2 테이블, 리전 제3 테이블, 세그먼트 테이블, 페이지 테이블, 링키지 테이블, 링키지 제1 테이블, 링키지 제2 테이블, 엔트리 테이블, ASN 제1 테이블, ASN 제2 테이블, 기관(authority) 테이블, 링키지 스택, 및 트레이스 테이블들이 있다. 주소지정 예외는, LOAD PAGE-TABLE-ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS, 및 TEST PROTECTION의 실행과 연관된 레퍼런스 및 동적인 주소 변환에 대한 묵시적 레퍼런스 모두에서, 리젼 제1 테이블, 리전 제2 테이블, 리전 제3 테이블, 세그먼트 테이블 및 페이지 테이블에 대한 레퍼런스가 발생할 때 억제되는 결과가 초래된다. 마찬가지로, 발송가능한 유닛 제어 테이블, 주(primary) ASN 제2 테이블 엔트리, 액세스 리스트, ASN 제2 테이블 또는 기관(authority) 테이블에 대한 액세스를 위한 주소지정 예외는, 묵시적으로 또는 LOAD PAGE-TABLE-ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS, TEST ACCESS, 또는 TEST PROTECTION의 일부로서 액세스 레지스터 변환에서 행해질 때 억제되는 결과가 초래된다. 실행이 억제되는 일부 특수한 명령어를 제외하곤, 동작은 변환될 순 있지만 이용불가능한 주소를 지정하는 피연산자 주소에 대해 종료된다. 종료를 위해, 변경은 결과 필드에 대해서만 발생할 수 있다. 이러한 상황에서, 용어 "결과적인 필드(result field)"는 조건 코드, 레지스터, 및 제공되고 명령어에 의해 변경되어야 할 것으로 지정되는 임의의 저장장소 위치를 포함한다.
도 6a의 회전 및 삽입 선택된 비트(도 6b에서, Z 비트, 선택된 비트의 시작 비트 위치를 지정하는 I3 직접 필드, 선택된 비트의 종료 비트 위치를 지정하는 I4 직접 필드, 및 회전량을 지정하는 I5 직접 필드를 가짐)는 도 7의 단계 701에서 인출되어, 디코딩되고 실행된다. 실행 동안, 제2 피연산자는 명령어의 R2 필드에 의해 식별된(단계 702) 레지스터로부터 획득되고(단계 703) 제5 피연산자에 의해 지정된 비트의 수 만큼 좌측으로 회전된다(단계 704). 피연산자의 최좌측 위치로부터 시프트된 각각의 비트는 피연산자의 최우측 위치로 재입력된다. 회전된 제2 피연산자의 선택된(단계 705) 비트는 명령어의 R1 필드에 의해 식별된 레지스터에서 제1 피연산자의 대응하는 비트 위치의 내용을 대체한다(단계 706). Z 비트가 1이면, 제1 피연산자의 선택된 비트가 아닌 비트들은 0으로 설정된다(단계 708). 결과는 조건 코드에 의해 지시된다(단계 709).
제2 피연산자는 범용 레지스터 R2에서 변경되지 않은 상태로 있다.
I3 필드의 비트 2-7(명령어의 비트 18-23)는 회전 후의 제1 피연산자 및 제2 피연산자내의 선택된 비트 범위의 시작 비트 위치를 지정하는 부호화되지 않은 2진 정수를 포함한다. I4 필드의 비트 2-7(명령어의 비트 26-31)는 선택된 비트 범위의 종료 비트 위치를 지정하는 부호화되지 않은 2진 정수를 포함한다. 종료 비트 위치가 시작 비트 위치 보다 작을 때, 비트의 범위는 비트 63으로부터 비트 0으로 랩어라운드한다.
I5 필드의 비트 2-7(명령어의 비트 34-39)는 제2 피연산자가 좌측으로 회전된 비트의 수를 지정하는 부호화되지 않은 2진 정수를 포함한다.
I4 필드의 비트 0(명령어의 비트 24)는 제로가 남아있는 비트(zero-remaining-bit) 제어(Z)를 포함한다. Z 비트는 제1 피연산자의 남아있는 비트가 설정되는 방법(즉, 지정된 범위외에 있는 임의의 비트들)을 제어한다. Z 비트가 0일 때, 제1 피연산자의 나머지 비트들은 변경되지 않는다. Z 비트가 1일 때, 제1 피연산자의 나머지 비트들은 0으로 설정된다.
바람직하게, 상기 설명한 명령어의 직접 필드들은 도 6b에 나타나 있다.
I3 필드의 비트 0-1 및 I4 필드의 비트 1(명령어의 비트 16-17 및 25)는 예약되고 0을 포함하여야 하며, 그렇지 않으면 프로그램은 앞으로 알맞게 동작하지 않을 것이다. I5 필드의 비트 0-1(명령어의 비트 32-33)은 무시된다.
조건 코드를 설정할 목적으로, 범용 레지스터 R1의 결과는 64비트의 부호화된 2진 정수가 되는 것으로 취급된다.
명령어 조건 코드의 실행의 결과로서 하기의 내용이 설정된다.
0 결과가 제로임
1 결과가 제로 보다 작음
2 결과가 제로 보다 큼
3 --
명령어의 실행은 범용 명령어 확장 기능부가 설치되지 않았다면 동작 예외를초래할 수 있다.
I5 필드의 비트 2-7이 제2 피연산자가 좌측으로 회전된 비트의 수를 지정하는 부호화되지 않은 2진 정수를 포함하는 것으로 정의되었을 지라도, 우측으로의 회전량을 지정하는 음의 값이 코드화될 수 있다.
제로가 남아있는 비트 제어에 사용될 때, ROTATE THEN INSERT SELECTED BITS 는 시프트 동작을 유효하게 하는 수단을 제공한다.
R1 및 R2 필드가 동일한 레지스터를 지정하고 Z 비트가 1일 때, ROTATE THEN INSERT SELECTED BITS는 레지스터에서 선택된 비트의 범위를 제로가 되도록 하기 위해 사용될 수 있다.
어셈블러 신택스에서, 회전량을 포함하는 I5 피연산자는 선택적인 것으로 간주된다. I5 필드가 코드화되지 않았을 때, 제로인 회전량이 묵시적으로 정해져 있다.
하기에 설명하는 예는 범용 레지스터 8에 포함된 가상 주소의 다양한 DAT-테이블 인덱스들을 추출하기 위해 ROTATE THEN INSERT SELECTED BITS 명령어의 사용을 예시한다. 이 예는 결과 레지스터의 나머지 비트들을 제로로 설정하기 위해 제로가 남아있는 비트 제어의 사용을 예시한다.
범용 레지스터 8내의 가상 주소는 16진수 123456789ABCDEF0인 것으로 가정된다.
RISBG 1,8,53,128+63,11 리젼 1의 인덱스를 획득함
RISBG 2,8,53,128+63,22 리젼 2의 인덱스를 획득함
RISBG 3,8,53,128+63,33 리젼 3의 인덱스를 획득함
RISBG 4,8,53,128+63,44 세그먼트 인덱스를 획득함
RISBG 5,8,56,128+63,52 페이지 인덱스를 획득함
RISBG 6,8,52,128+63,0 바이트 인덱스를 획득함
각각의 RISBG에 이어지는 조건 코드는 2이다. 완료시, 범용 레지스터 1-6은 리젼 1의 인덱스, 리젼 2의 인덱스, 리젼 3의 인덱스, 세그먼트 인덱스, 페이지 인덱스 및 바이트 인덱스를 각각, 하기와 같이 포함한다.
GRl: 0000000000000091 (RFX)
GR2: 0000000000000515 (RSX)
GR3: 00000000000004F1 (RTX)
GR4: 00000000000001AB (SX)
GR5: 00000000000000CD (PX)
GR6: 0000000000000EF0 (BX)
하기의 예는 64 비트값을 L 비트 만큼 좌측으로 시프트시키는 것을 예시한다.
RISBG R1,R2,0,X'80'+63-L,L
하기의 예는 32 비트값을 R 비트 만큼 우측으로 시프트시키고 최좌측 32 비트들을 제로로 설정하는 것을 예시한다.
RISBG R1,R2,32+R,X'80'+63,-R
하기의 예는 범용 레지스터 3의 비트 S 내지 E를 제로가 되게 하는 것을 예시한다.
RISBG 3,3,mod64(E+1),128+mod64(S-1),0
Mod64는 16진수 3F와 괄호안의 값을 AND 연산하는 모듈로 함수를 표현한다.
상기한 설명은 하나의 컴퓨터 시스템의 환경의 구조 및 용어에 대한 이해를 제공한다. 본 발명은 z/Architecture 또는 이에 대해 제공된 설명에 제한되지 않는다. 본 발명은 본원의 기술사상을 이용하여 다른 컴퓨터 제조자의 다른 컴퓨터 구조에 유익하게 적용될 수 있다.
본원에 본 발명의 바람직한 실시예가 예시되고 설명되었지만, 본 발명은 본원에 설명된 그 구성에만 한정되지 않고 특허권리범위는 첨부된 특허청구범위에 정의된 바와 같은 발명의 범위내에서 나오는 모든 변경 및 수정에 대해 가진다는 것을 알아야 한다.
50: 호스트 컴퓨터, 1: 프로세서(CPU)
2: 컴퓨터 메모리(주 저장장치), 4: 명령어 인출 유닛
5: 로드/저장 유닛, 6: 명령어 디코딩 유닛
8: 명령어 실행 유닛, 9: 캐쉬
10: 네트워크, 11: 매체
23: 에뮬레이션 루틴, 27: 프로세서
102: 디스플레이, 13: 마우스
104: 키보드 105: 메모리
106: 프로세서, 107: 저장 매체
109: 네트워크, 110: 프린터/스캐너
207: 인터넷, 208: 원격 서버
303: 캐쉬, 304: I/O 유닛
305: 명령어 인출 유닛, 306: 디코딩/발송 유닛
307: 실행 유닛, 308: 분기 유닛
309: 레지스터, 310: 로드/저장 유닛
311: 프로그램 카운터

Claims (6)

  1. 회전 후 삽입 명령어 - 상기 회전 후 삽입 명령어는 컴퓨터 구조에 대해 정의되고, 연산자(opcode) 필드, 제1 레지스터 필드(R2), 제2 레지스터 필드(R1), Z 비트를 포함하고, 상기 제1 레지스터 필드는 복수의 범용 레지스터들 중 하나를 지정하고, 상기 제2 레지스터 필드는 상기 복수의 범용 레지스터들 중 하나를 지정함 - 를 프로그램에서 인출하는 것; 및
    상기 회전 후 삽입 명령어를 실행하는 것
    을 포함하고,
    상기 실행하는 것은,
    상기 제1 레지스터 필드에 의해 지정된 제1 레지스터로부터 제1 피연산자(operand)를 획득하는 것;
    회전 값을 산출하기 위해 회전량 만큼 상기 제1 피연산자를 회전시키는 것 - 상기 회전은 비트를 상위 위치를 향해 효과적으로 시프트하고, 상위 비트 위치로부터의 비트를 하위 비트 위치로 효과적으로 시프트하는 것임 -;
    상기 회전 값 부분을 선택하는 것;
    상기 Z 비트가 0인 것에 응답하여, 제2 레지스터내의 제2 피연산자의 제2 피연산자 부분 - 상기 제2 피연산자 부분은 상기 선택된 회전 값 부분의 비트 위치에 대응되고, 상기 제2 피연산자 부분 이외의 상기 제2 레지스터의 다른 모든 비트들은 상기 저장 동작에 의해 상기 제2 레지스터내에서 변경되지 않음 - 에 상기 선택된 회전 값 부분을 저장하는 것;
    상기 Z 비트가 1인 것에 응답하여, 상기 제2 레지스터내의 상기 제2 피연산자의 제2 피연산자 부분 - 상기 제2 피연산자 부분은 상기 선택된 회전 값 부분의 비트 위치에 대응되고, 상기 제2 피연산자 부분 이외의 상기 제2 레지스터의 다른 모든 비트들은 상기 저장 동작에 의해 상기 제2 레지스터내에서 0으로 설정됨 - 에 상기 선택된 회전 값 부분을 저장하는 것;
    조건 코드를 상기 저장된 제2 피연산자의 크기를 표시하는 값으로 설정하는 것; 및
    다음 실행 명령어에 대해 계속하는 것
    을 포함하는, 컴퓨터 방법.
  2. 제1 항에 있어서, 상기 회전 후 삽입 명령어는, 상기 선택될 회전 값 부분의 시작 비트 위치를 표시하는 제1 값을 포함하는 제1 직접 필드(I3), 상기 선택될 회전 값 부분의 끝 비트 위치를 표시하는 제2 값을 포함하는 제2 직접 필드(I4), 및 상기 회전량을 갖는 제3 직접 필드(I5)를 더 포함하고, 상기 방법은,
    상기 회전 값의 부분을 선택하기 위해 상기 제1 값 및 상기 제2 값을 사용하는 것; 및
    상기 저장된 제2 피연산자가 0인 것에 응답하여, 상기 저장된 제2 피연산자가 0인 것을 표시하는 조건 코드를 설정하는 것;
    상기 저장된 제2 피연산자가 0보다 큰 것에 응답하여, 상기 저장된 제2 피연산자가 0보다 크다는 것을 표시하는 조건 코드를 설정하는 것; 및
    상기 저장된 제2 피연산자가 0보다 작은 것에 응답하여, 상기 저장된 제2 피연산자가 0보다 작다는 것을 표시하는 조건 코드를 설정하는 것을 포함하는 것인, 컴퓨터 방법.
  3. 제2 항에 있어서, 상기 회전 후 삽입 명령어는 비트 0 내지 비트 47로 이루어지고, 상기 연산자는 비트 0 내지 비트 7로 이루어진 제1 연산자 부분 및 비트 40 내지 비트 47로 이루어진 제2 연산자 부분을 포함하고, 상기 제2 레지스터 필드(R1)는 비트 8 내지 비트 11로 이루어지고, 상기 제1 레지스터 필드(R2)는 비트 12 내지 비트 15로 이루어지고, 상기 Z 비트는 비트 24이고, 상기 제1 직접 필드(I3)는 비트 16 내지 비트 23으로 이루어지고, 상기 제2 직접 필드(I4)는 비트 25 내지 비트 31로 이루어지며, 상기 회전량(I5)은 비트 34 내지 비트 39로 이루어지는 것인, 컴퓨터 방법.
  4. 제1 항에 있어서, 상기 컴퓨터 구조에 대해 정의된 회전 후 삽입 명령어가 대안적인 컴퓨터 구조의 중앙처리장치에 의해 인출되어 실행되고,
    상기 방법은 상기 회전 후 삽입 명령어의 동작을 에뮬레이팅하기 위한 미리결정된 소프트웨어 루틴을 식별하도록 상기 회전 후 삽입 명령어를 해석하는 것을 더 포함하고,
    상기 회전 후 삽입 명령어를 실행하는 것은 상기 회전 후 삽입 명령어를 실행하기 위한 상기 방법의 단계들을 수행하기 위한 미리결정된 소프트웨어 루틴을 실행하는 것을 포함하는 것인, 컴퓨터 방법.
  5. 컴퓨터 시스템으로서,
    메모리;
    상기 메모리와 통신하는 프로세서
    를 포함하고,
    상기 프로세서는 상기 메모리로부터 명령어를 인출하기 위한 명령어 인출 엘리먼트 및 인출된 명령어를 실행하기 위한 하나 이상의 실행 엘리먼트를 포함하고,
    상기 컴퓨터 시스템은 청구항 제1항 내지 제4항 중 어느 한 항의 방법을 수행하도록 구성된 것인, 컴퓨터 시스템.
  6. 컴퓨터 프로그램 제품으로서, 처리 회로에 의해 판독가능한 유형적 저장 매체를 포함하고, 청구항 제1항 내지 제4항 중 어느 한 항의 방법을 수행하기 위해 상기 처리 회로로 실행하기 위한 명령어를 저장하는 것인, 상기 컴퓨터 프로그램 제품.
KR1020107014280A 2008-01-11 2009-01-07 선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어 KR20100106436A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/972,689 2008-01-11
US11/972,689 US20090182982A1 (en) 2008-01-11 2008-01-11 Rotate Then Insert Selected Bits Facility and Instructions Therefore

Publications (1)

Publication Number Publication Date
KR20100106436A true KR20100106436A (ko) 2010-10-01

Family

ID=40497563

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107014280A KR20100106436A (ko) 2008-01-11 2009-01-07 선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어

Country Status (6)

Country Link
US (1) US20090182982A1 (ko)
EP (1) EP2229621A2 (ko)
JP (1) JP2011509473A (ko)
KR (1) KR20100106436A (ko)
CN (1) CN101911014A (ko)
WO (1) WO2009087152A2 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US8914619B2 (en) * 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
WO2014203034A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Signal processing device and method of performing a pack-insert operation
GB2540939B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4785393A (en) * 1984-07-09 1988-11-15 Advanced Micro Devices, Inc. 32-Bit extended function arithmetic-logic unit on a single chip
US5487159A (en) * 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5751614A (en) * 1994-03-08 1998-05-12 Exponential Technology, Inc. Sign-extension merge/mask, rotate/shift, and boolean operations executed in a vectored mux on an ALU
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US5822606A (en) * 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US20030037085A1 (en) * 2001-08-20 2003-02-20 Sandbote Sam B. Field processing unit

Also Published As

Publication number Publication date
WO2009087152A2 (en) 2009-07-16
JP2011509473A (ja) 2011-03-24
US20090182982A1 (en) 2009-07-16
EP2229621A2 (en) 2010-09-22
CN101911014A (zh) 2010-12-08
WO2009087152A4 (en) 2009-10-22
WO2009087152A3 (en) 2009-09-11

Similar Documents

Publication Publication Date Title
JP5357181B2 (ja) コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム
KR101231562B1 (ko) 캐시 속성 추출 기능 및 이를 위한 명령어
US9250904B2 (en) Modify and execute sequential instruction facility and instructions therefor
US10963391B2 (en) Extract target cache attribute facility and instruction therefor
US20090182983A1 (en) Compare and Branch Facility and Instruction Therefore
JP2011509475A5 (ko)
US20090182988A1 (en) Compare Relative Long Facility and Instructions Therefore
KR101285072B1 (ko) 실행 관련 명령어
US20090182992A1 (en) Load Relative and Store Relative Facility and Instructions Therefore
US20090182985A1 (en) Move Facility and Instructions Therefore
KR20100106436A (ko) 선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application