KR101231562B1 - 캐시 속성 추출 기능 및 이를 위한 명령어 - Google Patents

캐시 속성 추출 기능 및 이를 위한 명령어 Download PDF

Info

Publication number
KR101231562B1
KR101231562B1 KR1020107014473A KR20107014473A KR101231562B1 KR 101231562 B1 KR101231562 B1 KR 101231562B1 KR 1020107014473 A KR1020107014473 A KR 1020107014473A KR 20107014473 A KR20107014473 A KR 20107014473A KR 101231562 B1 KR101231562 B1 KR 101231562B1
Authority
KR
South Korea
Prior art keywords
cache
instruction
address
bit
instructions
Prior art date
Application number
KR1020107014473A
Other languages
English (en)
Other versions
KR20100106444A (ko
Inventor
댄 그레이너
티모시 슬레젤
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100106444A publication Critical patent/KR20100106444A/ko
Application granted granted Critical
Publication of KR101231562B1 publication Critical patent/KR101231562B1/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

컴퓨터 시스템을 동작시키는 방법에 있어서, 하나 이상의 타깃 캐시의 캐시 속성을 획득하기 위해 관심 있는 타깃 캐시의 캐시-레벨 및 타깃 캐시 속성을 특정하는 컴퓨터 아키텍쳐의 기기 및 캐시 기계 명령이 제공된다. 타깃 캐시(들)의 요청된 캐시 속성은 레지스터에 저장된다.

Description

캐시 속성 추출 기능 및 이를 위한 명령어{EXTRACT CACHE ATTRIBUTE FACILITY AND INSTRUCTION THEREFORE}
본 발명은 컴퓨터 시스템에 관한 것이며, 구체적으로는 컴퓨터 프로세서 명령어의 기능에 대한 것이다.
IBM?은 인터내셔널 비지네스 머신즈 코포레이션의 미국 Armonk, New York에서의 등록 상표다. S/390, Z900, z990 및 그 외의 상품명은 인터내셔널 비지네스 머신즈 코포레이션 및 다른 회사들의 등록 상표 및 등록 상품명이다.
1960년대에 IBM?System 360이라는 이름의 기계로 시작해서 오늘날까지 IBM은 '메인프레임'이라고 알려진 구조를 개발해왔으며 이 구조의 작동의 기본 원리는 IBM 개발자들이 개발해온 명령어를 '메인프레임' 상에서 구현하는 명령어에 의하여 정의되는 기계의 구조를 나타낸다. 오랜 기간 IBM의 연산 기본 원리(Principles of Operation)에 의해 이루어진 '메인프레임'이 연산 기계 분야의 발전에의 큰 공헌을 해왔다. 2007년 4월에 공개된 IBM?z/Arehiteciure?Principles of Operation의 6번째 에디션은 SA22-7832-05의 공개된 참고 문헌의 기본이 되었으며, IBM's z9?메인프레임 서버에 구현되어 있다. IBM Z/Architecture?연산 기본 원리(Principles of Operation), Publication S.A22-7832-05는 그 전문이 본 명세서에 포함되어 있다.
도 1a는 종래의 호스트 컴퓨터 시스템(50)의 대표적인 구성요소를 보여준다. 당업자에게 잘 알려져 있듯이 컴퓨터 시스템 내에서 이와 상이한 배열도 적용 가능하다. 대표적인 호스트 컴퓨(50)은 메인 저장 매체(컴퓨터 메모리(2))와 연결된 하나 이상의 CPU(1), I/O 인터페이스, 저장 매체 기기(11) 및 다른 컴퓨터 또는 SAN 등과 연결된 네트워크를 포함한다. CPU(1)은 구축된 명령어 집합 및 구축된 기능을 갖는 구조에 상응하는 것이다. CPU(1)은 프로그램 주소(가상 주소)를 메모리의 실주소로 변환시키기 위한 동적 주소 변환(Dynamic Address Translation: DAT)(3)을 갖는다. DAT는 일반적으로 변환 색인 버퍼(Translation Lookaside Buffer: TLB)(7)를 가지며, 이는 변화를 캐싱하여 차후에 컴퓨터 메모리(2) 블록으로 액세스 시 주소 변환에 따른 지연이 발생하지 않도록 하는 기능을 갖는다. 캐시(9)는 보통 컴퓨터 메모리(2)와 프로세서(1)의 사이에 구비된다. 캐시(9)는 하나 이상의 CPU에 대하여 사용되는 큰 캐시와 각각의 CPU와 큰 캐시의 사이에서 사용되는 작고 빠른(낮은 레벨의) 캐시가 계층관계를 갖도록 설정된다. 구현에 따라, 낮은 레벨을 갖는 캐시가 명령어 인출을 위한 캐시와 데이터 액세스를 위한 캐시로 나뉘기도 한다. 실시예에서 명령어는 명령어 인출 유닛(4)에 의하여 캐시(9)를 통하여 메모리(2)로부터 인출된다. 명령어는 명령어 디코드 유닛(6)에 의하여 디코드되며, 명령어 실행 유닛(8)로 디스패치된다(실시예에 따라 명령어는 상이할 수 있음). 실행 유닛(8)인 연산 실행 유닛, 부동 소수점 실행 유닛, 분기 명령어 실행 유닛 중 일부가 사용된다. 명령어는 실행 유닛에 의하여 실행되며, 실행 시 필요에 따라 명령어에 의하여 특정된 레지스터 또는 메모리에서 가져온 피연산자가 액세스된다. 피연산자가 메모리(2)로부터 액세스(로드 또는 저장)되면, 로드/저장 유닛(5)은 실행된 명령어를 제어하여 이 액세스를 처리한다. 명령어는 하드웨어 회로 또는 내부 마이크로 코드(펌웨어) 또는 이 둘의 조합 내에서 실행된다.
도 1b는 종래 기술에 따라 에뮬레이트된 호스트 컴퓨터 시스템(21)을 구현한 예를 나타내고 있으며, 이는 호스트 구조의 호스트 컴퓨터 시스템(50)을 에뮬레이트한 것이다. 에뮬레이트된 호스트 컴퓨터 시스템(21)에서, 호스트 프로세서(CPU)(1)는 에뮬레이트된 호스트 프로세서(또는 가상 호스트 프로세서)이며, 호스트 컴퓨터(50)의 프로세서(1)의 구조와 상이한 네이티브 명령어 조합 구조를 갖는 에뮬레이션 프로세서(27)를 포함한다. 에뮬레이트된 호스트 컴퓨터 시스템(21)은 에뮬레이션 프로세서(27)에 액세스할 수 있는 메모리(22)를 갖는다. 예시적으로, 메모리(27)는 호스트 컴퓨터 메모리(2)부와 에뮬레이션 루틴(23)부로 나뉘어져 있다. 호스트 컴퓨터 메모리(2)는 호스트 컴퓨터 구조에 따라 에뮬레이션된 호스트 컴퓨터(21)의 프로그램에 사용 가능하다. 에뮬레이션 프로세서(27)는 에뮬레이트된 프로세서(1) 명령어가 아니라, 구조에 맞게 구축된 명령어 집합의 네이티브 명령어를 실행하고, 이 네이티브 명령어는 에뮬레이션 루틴 메모리(23)로부터 얻어지며, 이 에뮬레이션 프로세서(27)는 실행을 위하여 액세스된 호스트 명령어의 에뮬레이팅을 위한 네이티브 명령어 실행 루틴을 결정하기 위하여 액세스된 호스트 명령어를 디코드하는 시퀀스 및 액세스/디코드(Sequence & Access/Decode) 루틴에서 얻어지는 하나 이상의 명령어를 사용하여 호스트 컴퓨터 메모리(2)내의 프로그램으로부터 호스트 명령어에 액세스한다. 호스트 컴퓨터 시스템(50) 구조에 의하여 정의되는 다른 기능들은 범용 레지스터, 제어 레지스터, 동적 주소 변환 및 I/O 서브시스템 서포트 및 프로세서 캐시 등의 기기들을 포함하는 구축된 기능 루틴(Architected Facilities Routines)에 의하여 에뮬레이트된다. 프로세서(27)가 호스트 컴퓨터(50)의 기능을 에뮬레이트하는 것을 돕기 위하여 특수 하드웨어 및 오프로드 엔진이 제공되기도 한다.
메인프레임에서, 구축된 기계 명령어는 프로그래머에 의하여 사용되며, 컴파일러로는 “C” 가 주로 사용된다. 저장 매체에 저장된 이러한 명령어는 기본적으로 z/Architecture IBM 서버에서 실행되거나, 또는 다른 구조를 실행하는 기계에서 실행되기도 한다. 이는 현존하는 또는 장래 개발될 IBM 메인프레임 서버 및 IBM의 다른 기기에서 에뮬레이트될 수 있다(예를 들어 pSeries? Servers 및 xSeries? Servers). 이는 IBM? , Intel?, AMD™, Sun Microsystems 및 여러 회사에서 제조된 하드웨어를 사용하는 다양한 기기 중 리눅스를 사용하는 기기에서 실행 가능하다. 더욱이 Z/Architecture?를 갖춘 하드웨어에서 실행한다면, 리눅스는 Hercules, UMX, FSI (Fundamental Software, Inc) 또는 Platform Solutions. Inc. (PSI)에 의한 에뮬레이션을 사용하는 기계들과 함께 사용 가능하고 이때 실행은 일반적으로 에뮬레이션 모드에서의 실행을 의미한다. 에뮬레이션 모드에서 네이티브 프로세서는 에뮬레이션 소프트웨어를 사용하여 에뮬에이트된 프로세서의 구조를 에뮬레이트한다.
네이티브 프로세서(27)은 보통 펌웨어 또는 네이티브 운영 체제 중 하나를 포함하는 에뮬레이션 소프트웨어(23)을 실행하여 에뮬레이트된 프로세서의 에뮬레이션을 수행하도록 한다. 에뮬레이션 소프트웨어(23)는 에뮬레이트된 프로세서 구조의 명령어 인출 및 실행을 담당한다. 에뮬레이션 소프트웨어(23)는 에뮬레이트된 프로그램 카운터가 명령어 경계의 트랙을 유지하도록 한다. 에뮬레이션 소프트웨어(23)는 한번에 하나 이상의 에뮬레이트된 기계 명령어를 인출하고, 하나 이상의 에뮬레이트된 기계 명령어를 이에 상응하는 네이티브 프로세서(27)에 의하여 실행 가능한 네이티브 기계 명령어의 그룹으로 전환한다. 이러한 전환된 명령어는 캐시되며, 따라서 빠른 전환이 이루어진다. 그럼에도 불구하고, 에뮬레이션 소프트웨어는 에뮬레이트된 프로세서의 구조 규칙을 지켜야 하며, 이렇게 하여야 에뮬레이트된 프로세서로 작성된 운영 체제 및 응용 프로그램이 정확히 작동될 것이다. 나아가 에뮬레이션 소프트웨어는 에뮬레이트된 프로세서(1) 구조에 의하여 식별된 리소스들을 제공하여야 하고, 여기서 에뮬레이트된 프로세서 구조란 제어 레지스터, 범용 레지스터, 부동 소수점 레지스터, 세그먼트 테이블과 페이지 테이블을 포함하는 동적 주소 변환 기능, 장애 메커니즘, 문맥 전환 메커니즘 등을 포함하나 이에 한정되는 것은 아니다. 운영 체제 또는 응용 프로그램이 에뮬레이트된 프로세서 상에서 작동되도록 하는 시각(Time of Day: TOD) 시계 및 I/O 서브시스템에 구축된 인터페이스는 에뮬레이션 소프트웨어를 갖는 네이티브 프로세서 상에서도 작동될 수 있다.
에뮬레이트된 특정 명령어는 디코드되어 각각의 명령어의 기능을 수행하도록 호출된 서브루틴이 된다. 에뮬레이트된 프로세서(1)의 기능을 에뮬레이트하는 에뮬레이션 소프트웨어 기능(23)은 “C” 서브루틴이나 드라이버, 또는 특정 하드웨어를 위한 드라이버에서 제공하는 다른 방법에 의하여 구현되며 이는 본 발명의 상세한 설명을 이해한 당업자라면 쉽게 이해할 것이다. 미국 등록 특허, US 5551013 ("Multiprocessor for hardware emulation", Beausoleil et al.), US 6009261 (“Preprocessing of stored target routines for emulating incompatible instructions on a target processor", Scalzi et al), US 5574873 (“Decoding guest instruction to directly access emulation routines that emulate the guest instructions”, Davidian et al), US 6308255 (“Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non- native code to run in a system”, Gorishek et al), US 6463582 (“Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method”, Lethin et al), US 5790825 (“Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions”, Eric Traut) 등 이 외에도 다양한 소프트웨어 및 하드웨어 에뮬레이션 특허가 당업자가 이해할 수 있도록 다양한 목적을 위하여 구축된 명령어 포맷을 에뮬레이션하는 다양한 공지된 방법과 상기 문헌들에서 사용된 상업적 소프트웨어 기술을 기술하고 있다.
본 발명의 일 실시예에서, 프로세싱 시스템의 프로세서는 컴퓨터 구조에 의하여 정의된 캐시 속성 기계 명령어 추출을 인출하고 실행하며, 이 때 캐시 기계 명령어는 연산 코드, 피연산자 위치(레지스터)를 식별하는 피연산자 식별자(레지스터 필드)를 포함한다. 명령어는 명령어의 변위 필드, 캐시 레벨 및 정해진 캐시 레벨의 캐시로부터 추출된 캐시 속성을 결정한다. 캐시 속성은 프로세서의 각각의 캐시 레벨에서의 캐시의 요약 또는 프로세서와 연관된 특정 캐시 레벨에서의 캐시 속성 중 하나를 의미한다. 결정된 속성은 캐시로부터 추출되어 피연산자 주소에 저장된다.
본 발명의 일 실시예에서, 추출된 캐시 속성은 하나 이상의 캐시의 캐시 토폴로지 요약, 타깃 캐시의 라인 크기, 타깃 캐시의 총 크기, 타깃 캐시의 집합 연관(set-associativity) 레벨 중 하나다.
본 발명의 다른 실시예에서, 추출된 캐시 토폴로지 요약은 하나 이상의 요약을 포함하며, 하나의 레벨에서 캐시의 각 요약은 캐시 레벨 식별자에 의하여 특정되고, 상응하는 캐시 레벨에서의 캐시의 요약은 다음 중 하나로 구성된다: 캐시의 존재 여부; 캐시가 명령어를 실행하는 프로세서의 접근을 허용하는지 여부; 프로세싱 시스템의 다른 프로세서가 캐시를 공유하는지 여부; 명령어 캐시와 데이터 캐시가 별도로 구성되는지 여부; 명령어 캐시만 존재하는지 여부; 캐시가 명령어 캐시와 데이터 캐시가 통합된 캐시인지 여부.
본 발명은 일반 레지스터처럼 구조 리소스 상의 종속성을 줄이면서 현존하는 구조와 모순되지 않는 새로운 명령어 기능성을 제공하고, 새로운 명령어를 이용하는 소프트웨어 버전의 기능성과 성능을 향상시키고자 한다.
본 발명으로서 간주되는 주제는 본 명세서의 결론에서 특히 강조되고 청구항에서 명확히 청구된다. 본 발명의 전술한 및 그 밖의 다른 목적, 특징 및 장점은 첨부한 도면과 함께 후속하는 상세한 설명으로부터 명확해질 것이다.
도 1a는 종래 기술에 의한 예시적인 호스트 컴퓨터 시스템의 다이어그램,
도 1b는 종래 기술에 의한 예시적인 에뮬레이트된 호스트 컴퓨터 시스템의 다이어그램,
도 1c는 종래 기술에 의한 예시적인 컴퓨터 시스템의 다이어그램,
도 2는 종래 기술에 의한 예시적인 컴퓨터 네트워크의 다이어그램,
도 3은 종래 기술에 의한 컴퓨터 시스템의 구성 요소의 다이어그램,
도 4a 내지 4c는 종래 기술에 의한 컴퓨터 시스템의 구체적인 구성 요소의 다이어그램,
도 5a 내지 5f는 컴퓨터 시스템의 기계 명령어 포맷,
도 6은 본 발명의 실시예에 의한 예시적인 명령어 포맷,
도 7은 본 발명의 실시예에 따른 속성 식별자,
도 8은 본 발명의 실시예의 예시적인 기능의 흐름도.
일 실시예에서, 본 발명은 소프트웨어에 의하여 실행된다.(이는 인가 내부 코드(Licensed Internal Code), 펌웨어, 마이크로 코드(Micro-code), Milli-code, Pico-code 및 이와 유사한 것으로 실행 가능하다.) 도 1a를 보면, 본 발명을 구현하는 소프트웨어 프로그램 코드는 시스템(50)의 중앙 처리 장치(CPU)로 더 많이 알려져 있는 프로세서(1)에 의하여 CD-ROM, 테이프 드라이브, 하드 드라이브와 같은 장기 저장 매체(7)로부터 액세스된다. 이 소프트웨어 프로그램 코드는 디스켓, 하드 드라이브, CD-ROM 등 데이터 처리 시스템과 함께 사용되는 다양한 매체에서 구현 가능하다. 이 코드는 이러한 매체를 통하여 배포될 수 있으며, 또는 컴퓨터 메모리(2)를 통하여 사용자에게 배포되거나, 네트워크상의 컴퓨터 시스템의 저장 매체를 통하여 다른 컴퓨터 시스템의 사용자들이 사용 가능하도록 이러한 사용자들에게 배포될 수도 있다.
또는, 프로그램 코드는 메모리(2)에서 구현될 수 있으며, 프로세서(1)가 프로세서 버스를 사용하여 이 코드에 액세스할 수도 있다. 이러한 프로그램 코드는 다양한 컴퓨터 구성 요소의 기능과 이러한 구성 요소간의 상호 작용을 제어하는 운영 체제(OS)와 하나 이상의 응용 프로그램을 포함한다. 일반적으로 프로그램 코드는 고밀도 저장 매체로부터 프로세서(1)에 의하여 처리 가능한 고속 메모리(2)로 호출된다. 소프트웨어 코드를 네트워크를 통하여 배포하는 방법 및/또는 하드웨어적인 매체 상의 메모리 내의 소프트웨어 프로그램 코드를 구현하기 위한 기술 및 방법은 이미 알려져 있으며 여기서는 더 이상 설명하지 않겠다. 프로그램 코드가 생성되고 유형의 메모리에 저장되며, 이러한 유형의 메모리의 예로는 전자 메모리 모듈(RAM), 플래시 메모리, 콤팩트 디스크(CD), DVD, 테이프 등 보통 “컴퓨터 프로그램 제품”이라고 일컬어지는 것들이 해당된다. 일반적으로 컴퓨터 프로그램 제품 매체는 처리 회로에 의하여 판독가능하며, 이러한 처리회로는 바람직하게는 처리 회로를 실행하기 위한 컴퓨터 시스템 내에 구비된다.
도 1c는 본 발명을 실행하는 전형적인 워크스테이션 또는 서버 하드웨어 시스템을 나타낸다. 도 1c의 시스템(100)은 개인용 컴퓨터 같은 전형적인 컴퓨터 시스템(101), 주변장치를 포함하는 워크스테이션 또는 서버를 갖는다. 워크스테이션(101)은 하나 이상의 프로세서(106)과 주지 기술을 사용하여 프로세서(106)간 및 프로세서와 시스템(101)의 다른 요소를 연결하고 상호 작용이 가능하게 하는 버스를 포함한다. 버스는 프로세서(106)을 메모리(105), 하드 드라이브(예를 들어, 마그네틱 매체, CD, DVD 및 플레시 메모리)를 포함하는 장기 저장 매체(107) 또는 테이프 드라이브 등에 연결한다. 또한, 시스템(101)에는 유저 인터페이스 어댑터도 추가될 수 있다. 이는 마이크로 프로세서(106)를 버스를 통하여 하나 이상의 인터페이스 기기에 연결하는 것으로, 인터페이스 기기로는 키보드(104), 마우스(103), 프린터/스캐너(110) 등을 예로 들 수 있으며 이 외의 터치 스크린, 디지털 엔트리 패드 등의 다양한 인터페이스가 모두 해당될 수 있다. 또한 버스는 LCD 스크린 또는 모니터 등의 디스플레이 기기(102)를 디스플레이 어댑터를 통하여 마이크로 프로세서(106)에 연결한다.
시스템(101)은 네트워크(109)의 통신 가능한의 네트워크 어댑터(108)를 거쳐서 컴퓨터 네트워크 상의 다른 컴퓨터와 연결될 수 있다. 네트워크 어댑터의 예로는 커뮤니케이션 채널, 토큰 링, 이더넷 또는 모뎀 등을 들 수 있다. 또한, 워크스테이션(101)은 셀룰러 디지털 패킷 데이터(CDPD) 카드 등의 무선 인터페이스를 사용하여 연결될 수도 있다. 워크스테이션(101)은 근거리 통신망(LAN) 또는 광역 통신망(WAN) 상의 다른 컴퓨터와 연결될 수 있으며, 클라이언트/서버 협약에 따라 워크스테이션(101)이 다른 컴퓨터의 클라이언트가 될 수도 있다. 이러한 모든 구성 및 적절한 커뮤니케이션 하드웨어와 소프트웨어는 모두 공지 기술이다.
도 2는 본 발명이 실행되는 데이터 처리 네트워크(200)를 나타낸다. 데이터 처리 네트워크(200)은 무선 네트워크, 유선 네트워크 같은 다수의 단일 네트워크를 포함하며, 이러한 단일 네트워크 각각이 다수개의 단일 워크 스테이션(101, 201, 202, 203, 204)을 포함할 수 있다. 추가적으로, 당업자라면 이해할 수 있듯이 하나 이상의 LAN이 포함될 것이며, LAN은 호스트 프로세서에 결합된 다수개의 지능형 워크스테이션를 포함할 수도 있다.
도 2를 보면 네트워크는 게이트웨이 컴퓨터(클라이언트 서버(206)) 또는 응용 서버(데이터 저장소에 액세스 가능하고 워크스테이션(205)에서 직접 접근 가능한 원격 서버(208)) 같은 메인프레임 컴퓨터 또는 서버를 포함할 수 있다. 게이트웨이 컴퓨터(206)는 각각의 네트워크(207)의 진입점을 제공한다. 게이트웨이는 하나의 네트워크 프로토콜을 다른 하나에 연결할 때 사용된다. 바람직하게는 게이트웨이(206)는 커뮤니케이션 링크를 사용하여 다른 네트워크(예를 들어 인터넷(207))에 연결될 수도 있다. 게이트웨이(206)는 커뮤니케이션 링크를 사용하여 하나 이상의 워크스테이션(101, 201, 202, 203, 204)과 직접적으로 결합될 수도 있다. 게이트웨이 컴퓨터는 IBM사가 제공하는 IBM eServer™ zSeries? z9? 서버를 사용하여 구현될 수 있다.
본 발명을 구현하는 소프트웨어 프로그래밍 코드는 일반적으로 시스템(101)의 프로세서(106)에 의하여 CD-ROM 드라이브 또는 하드 드라이브 등의 장기 저장 매체(107)로부터 액세스된다. 소프트웨어 프로그래밍 코드는 디스켓, 하드 드라이브, 또는 CD-ROM 등의 데이터 처리 시스템과 함께 사용되는 잘 알려진 매체 상에 구현될 수도 있다. 코드는 이러한 매체 상에서 배포되거나, 네트워크 상의 하나의 컴퓨터 시스템의 저장 매체로부터 다른 컴퓨터 시스템의 사용자(210, 211)에 의하여 다른 컴퓨터 시스템의 사용자에게로 배포될 수도 있다.
또한, 프로그래밍 코드(111)는 메모리(105)에서 구현되고 프로세서 버스를 사용하여 프로세서(106)에 의하여 액세스될 수도 있다. 이러한 프로그래밍 코드는 다양한 컴퓨터 구성요소의 기능과 이러한 구성요소간의 상호 작용을 제어하기 위한 운영 체제 및 하나 이상의 응용 프로그램(112)를 포함한다. 프로그램 코드는 일반적으로 고밀도 저장 매체(107)로부터 프로세서(106)에 의하여 처리 가능한 고속 메모리로 호출된다. 소프트웨어 코드를 네트워크를 통하여 배포하는 방법 및/또는 하드웨어적인 매체 상의 메모리 내의 소프트웨어 프로그램 코드를 구현하기 위한 기술 및 방법은 이미 알려져 있으며 여기서는 더 이상 설명하지 않겠다. 프로그램 코드가 생성되고 유형의 메모리에 저장되며, 이러한 유형의 메모리의 예로는 전자 메모리 모듈(RAM), 플래시 메모리, 콤팩트 디스크(CD), DVD, 테이프 등 보통 “컴퓨터 프로그램 제품”이라고 일컬어지는 것들이 이에 해당한다. 일반적으로 컴퓨터 프로그램 제품 매체는 처리 회로에 의하여 판독가능하며, 이러한 처리회로는 바람직하게는 처리 회로를 실행하기 위한 컴퓨터 시스템 내에 구비된다.
프로세서에 의하여 즉시 접근 가능한 캐시는 가장 낮은 레벨의 캐시(L1 또는 레벨 1)이고, 이는 일반적으로 프로세서의 다른 캐시보다 더 빠르고 더 작으며, 메인 저장 매체는 가장 높은 레벨의 캐시(3이 가장 높은 레벨인 경우: L3)이다. 가장 낮은 레벨의 캐시는 일반적으로 실행될 기계 명령어를 보유한 명령어 캐시와 피연산자의 데이터를 보유한 데이터 캐시로 나뉜다.
도 3은 프로세서(106)의 예시적인 실시예를 나타낸다. 캐시(303)의 하나 이상의 레벨은 보통 프로세서 성능을 향상시키기 위하여 버퍼 메모리 블록에 사용된다. 캐시(303)는 사용 예정인 메모리 데이터의 캐시 라인을 보유한 고속 버퍼이다. 전형적인 캐시 라인은 64, 128 또는 256byte의 메모리 데이터이다. 각각의 캐시는 주로 데이터를 캐싱하는 것 보다는 명령어를 캐싱하기 위하여 사용된다. 캐시 일관성(메모리 라인의 복사본과 캐시의 동기화)은 당업자에게 잘 알려진 다양한 “Snoop” 알고리즘을 사용하여 달성된다. 프로세서 시스템의 메인 저장 매체(105)라면 주로 캐시를 가리킨다. 캐시(303)가 4개의 레벨을 갖는 프로세서 시스템에서, 메인 저장 매체(105)는 보통 레벨이 5(L5)인 캐시로 불리며, 이는 이 캐시가 일반적으로 더 빠르고 컴퓨터 시스템상에서 가능한 비휘발성 저장 매체(DASD, 테이프 등)의 일부만을 보유하고 있기 때문이다. 메인 저장 매체(105)는 운영 체제에 의하여 메인 저장 매체(105)의 안과 밖에 저장된 데이터 페이지들을 캐시한다.
프로그램 카운터(명령어 카운터)(311)는 현재 실행되고 있는 명령어의 주소를 추적한다. z/Architecture 프로세서 내의 프로그램 카운터는 64 비트이며, 상위 주소 제한에 따라 31 또는 24 비트로 줄일 수 있다. 프로그램 카운터는 일반적으로 컴퓨터의 프로그램 상태어(PSW)에 의하여 구현되며, 이는 문맥 전환 중에도 지속된다. 따라서, 프로그램 카운터 값을 갖는 실행중인 프로그램이 예컨대 운영 체제에 의하여 중단될 수 있다.(프로그램 환경에서 운영 체제 환경으로 문맥 전환) 프로그램의 PSW는 프로그램이 실행되고 있지 않은 동안 프로그램 카운터 값을 유지하며, PSW에 유지된 운영 체제의 프로그램 카운터 값은 운영 체제가 실행되는 동안 사용된다. 통상적인 프로그램 카운터는 현재 명령어의 바이트 수와 동일한 양 만큼 증가한다. RISC(Reduced Instruction Set Computing) 명령어는 그 길이가 정해져 있으며, CISC(Complex Instruction Sec Computing) 명령어는 가변 길이를 갖는다. IBM z/Architecture의 명령어는 2, 4, 6 바이트의 길이를 갖는 CISC 명령어다. 프로그램 카운터(311)은 문맥 전환 연산 또는 분기 명령어에 의한 분기 발생 연산 등에 의하여 수정된다. 문맥 전환 연산 시, 현재의 프로그램 카운터 값이 실행중인 프로그램에 대한 다른 상태 정보(예를 들어 컨디션 코드)와 함께 프로그램 상태어(PSW)에 저장되고, 새로운 프로그램 카운터 값이 실행되는 새로운 프로그램 모듈의 명령어를 가리키도록 로드된다. 분기 발생 연산은 프로그램 카운터(311)로 분기 명령어의 결과를 로딩하는 것에 의하여 프로그램 내에서 프로그램이 결정을 내릴지 또는 반복할 지 여부를 결정하는 것이다.
일반적으로 명령어 인출 유닛(305)은 프로세서(106)를 대신하여 명령어를 인출하는데 사용된다. 인출 유닛은 “다음 순차 명령어”를 인출하며, 이는 분기 발생 명령어의 타깃 명령어 또는 문맥 전환에 따라 실행될 프로그램의 첫 번째 명령어 등이 해당된다. 최근의 명령어 인출 유닛은 주로 프리패치 기술을 사용하며, 이는 프리패치된 명령어들이 사용될 가능성을 근거로 명령어를 미리 투기적으로 인출하는 기술이다. 예를 들어 인출 유닛이 다음 순차 명령어를 포함하는 16 바이트를 인출하며 그 다음 순차 명령어를 포함하는 추가 바이트를 함께 인출하는 것이다.
인출된 명령어는 프로세서(106)에 의하여 실행된다. 실시예에서, 인출된 명령어는 인출 유닛의 디스패치 유닛(306)을 거친다. 디스패치 유닛은 명령어를 디코드하고 디코드된 명령어에 대한 정보를 적절한 유닛(307, 308, 309)에 전달한다. 실행 유닛(307)은 디코드된 산술 명령어를 명령어 인출 유닛(305)으로부터 받고, 명령어의 연산코드에 따라 피연산자에 산술 연산을 실시한다. 피연산자는 메모리(105), 구축된 레지스터(309) 또는 실행되는 명령어의 현재 필드로부터 얻어져 실행 유닛(307)에 제공된다. 실행 결과를 저장하고자 할 때, 이는 메모리(105), 레지스터(309), 또는 다른 기계 하드웨어(예를 들어 제어 레지스터, PSW 레지스터 등)에 저장된다.
프로세서(106)는 일반적으로 명령어의 기능을 실행하기 위하여 하나 이상의 실행 유닛(307, 308, 310)을 갖는다. 도 4a를 보면, 실행 유닛(307)은 구축된 일반 레지스터(309), 디코드/디스패치 유닛(306), 로드/저장 유닛(310) 및 인터레이트 로직(407)을 거쳐서 다른 프로세서 유닛(401)과 연결된다. 실행 유닛(307)은 수개의 레지스터 회로(403, 404, 405)를 사용하며, 이들은 산술 논리 유닛(Arithmetic Logic Unit: ALU)(402)가 실행한 정보를 보유한다. ALU는 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 and, or, xor 회전, 이동 등의 논리연산을 수행한다. ALU는 맞춤 디자인된 특수한 연산을 제공하기도 한다. 다른 회로들은 조건 코드, 복구 지원 로직 등을 포함하는 다른 구축된 기능들을 제공한다. ALU 연산의 결과는 보통 출력 레지스터 회로(46)가 보유하며, 다양한 다른 처리 기능의 결과로 보내진다. 프로세서 유닛의 배열은 다양하며, 본 기술은 실시예에 대한 이해를 돕기 위한 대표적인 기재에 불가하다.
예를 들어, 덧셈 명령어는 산술 및 논리 기능을 갖는 실행 유닛(307)에서 실행되고, 부동 소수점 명령어는 부동 소수점 계산이 가능한 부동 소수점 실행부에서 실행된다. 바람직하게는 실행 유닛이 피연산자에 대한 기능이 정의된 연산 코드를 사용하여 명령어에 의하여 식별된 피연산자에 대하여 연산을 실행한다. 예컨대 덧셈 명령어는 명령어의 레지스터 필드에 의하여 식별된 두 개의 레지스터(309)에서 찾아낸 피연산자들에 대하여 실행 유닛(307)을 실행시키는 방법으로 실행된다.
실행 유닛(307)은 두 개의 피연산자의 값을 더하고, 그 결과를 세 번째 피연산자에 저장한다. 이 때 세 번째 피연산자는 세 번째 레지스터거나 덧셈의 소스가 된 두 개의 레지스터 중 하나일 수 있다. 실행 유닛은 바람직하게는 산술 논리 유닛(ALU)(402)를 사용하며, 이는 덧셈, 뺄셈, 곱셈, 나눗셈 등의 산술 연산과 이동, 회전, And, Or, Xor등의 다양한 논리 연산이 수행 가능한 것이다. 산술 논리 유닛(ALU)(402) 중 일부는 스칼라 연산을 위하여 설계된 것이며, 다른 일부는 부동 소수점 연산을 위하여 설계된 것이다. 데이터는 구조에 따라 빅 엔디언(큰 단위의 바이트가 앞에 나오는 방식) 또는 리틀 엔디언(작은 단위의 바이트가 앞에 나오는 방식) 모두 가능하다. IBM z/Architecture는 빅 엔디언 방식을 사용한다. 부호 달린 필드는 부호와 양을 나타내며, 1의 보수 또는 2의 보수를 구조에 따라 사용한다. 2의 보수 숫자는 ALU가 뺄셈 기능을 디자인하지 않아도 된다는 장점을 갖는다. 이는 2의 보수의 음의 값이나 양의 값 중 하나는 ALU의 and 추가만 필요로 하기 때문이다. 숫자는 일반적으로 축약되어 기록되며, 예컨대 12 비트 필드는 4,096 바이트 블록의 주소를 정의하며 4 K바이트(Kilo-byte) 블록처럼 나타내진다.
도 4b를 보면, 분기 명령어를 실행하기 위한 분기 명령어 정보는 보통 분기 유닛(308)로 전송되며, 분기 유닛은 조건 연산의 수행이 끝나기 전에 분기의 결과를 예측하기 위하여 분기 히스토리 테이블(432) 같은 분기 예측 알고리즘을 갖는다. 현 분기 명령어의 타깃은 조건 연산의 수행이 끝나기 전에 인출되고 투기적으로 실행되게 된다. 조건 연산의 수행이 끝나면, 투기적으로 실행된 분기 명령어는 조건 연산의 조건과 투기적 연산 결과에 근거하여 완성되거나 제거된다. 현 분기 명령어는 조건 코드가 분기 명령어의 분기 조건을 만족하는지 조건 코드나 타깃 주소로의 분기를 테스트 할 수 있고, 타깃 주소는 명령어의 레지스터 필드 또는 즉시 필드(immediate field)에서 가져온 수개의 숫자에 근거하여 산출된다. 예컨대, 분기 유닛(308)은 일반 레지스터(309)와 연결되며 디스패치 유닛(306) 또는 다른 회로들(425)를 디코드한다.
명령어 그룹의 실행은 다양한 이유로 방해 받으며, 이러한 이유로는 운영 체제에 의한 문맥 전환, 문맥 전환에 의한 프로그램 제외, 에러, 문맥 전환에 의한 I/O 장애 신호, 멀티 스레드 환경 하의 다수의 프로그램의 멀티스레딩 등을 예로 들 수 있다. 바람직하게는 문맥 전환 실행은 현재 실행중인 프로그램의 상태 정보를 저장하고, 새로 실행될 다른 프로그램의 상태 정보를 로딩한다. 상태 정보는 예를 들어 하드웨어 레지스터나 메모리 등에 저장된다. 상태 정보는 바람직하게는 실행될 다음 명령어를 가리키는 프로그램 카운터 값, 조건 코드, 메모리 번역 정보 및 구축된 레지스터 콘텐트 등을 포함한다. 문맥 전환 실행은 하드웨어 회로, 응용 프로그램, 운영 체제 프로그램 또는 펌웨어 코드(마이크로코드, 피코코드 또는 인가 내부 코드(LIC))가 단독으로 또는 함께 실행한다.
프로세서는 명령어에 의하여 정해진 방법으로 피연산자에 액세스한다. 명령어는 명령어의 일부분의 값을 사용하여 즉시피연산자(immediate operand)를 제공하고, 범용 레지스터 또는 특수목적의 레지스터(예를 들어 부동 소수점 레지스터) 중 하나를 명시적으로 가리키는 하나 이상의 레지스터 필드를 제공한다. 명령어는 피연산자처럼 연산코드 필드에 의하여 식별되는 암시적 레지스터를 사용한다. 연산자는 피연산자의 메모리 위치를 이용한다. z/Architecture 롱 디스플레이스먼트 기능(long displacement facility)에 나와있듯이 피연산자의 메모리 위치는 레지스터, 즉시 필드 또는 레지스터와 즉시 필드의 조합에 의하여 제공되며, 명령어는 베이스 레지스터, 인덱스 레지스터, 및 즉시 필드(변위 필드)를 정의하고 이들의 주소를 조합하여 피연산자의 주소를 산출한다. 여기서 주소란 일반적으로 다른 기재가 없다면 메인 메모리(메인 저장 매체)의 주소를 의미한다.
도 4c를 보면, 프로세서는 로드/저장 유닛(310)을 사용하여 저장 매체에 액세스한다. 로드/저장 유닛(310)은 메모리(303)으로부터 타깃 피연산자의 주소를 받고 레지스터(309) 또는 다른 메모리(303)에서 피연산자를 로딩하여 로드 동작을 수행하고, 메모리(303)에서 타깃 피연산자의 주소를 받고 레지스터(309) 또는 다른 메모리(303)에서 얻은 주소를 메모리(303)의 타깃 피연산자의 위치에 저장함으로써 저장 동작을 수행한다. 로드/저장 유닛(310)은 투기적으로 실행될 수도 있으며 명령어 순서와 상이한 순서로 메모리를 액세스 할 수도 있으나, 명령어는 순서대로 실행된다는 프로그램의 특징은 유지하여야 한다. 로드/스토어 유닛(310)은 일반 레지스터(309), 디코드/디스패치 유닛(306), 캐시/메모리 인터페이스(303) 또는 다른 요소(455)와 연결되며, 저장 주소를 산출하고, 동작이 순서대로 이루어지도록 파이프라인 시퀀싱을 제공하기 위하여 다양한 레지스터 회로, ALU(458) 및 제어 로직(463)을 포함한다. 어떤 동작은 순서에서 벗어날 수도 있으나, 로드/저장 유닛은 순서를 벗어난 동작도 프로그램에게는 순서에 맞게 실행된 것처럼 나타내지도록 만드는 기능을 가지며, 이러한 기능은 당업자에게 자명한 것이다.
바람직하게는 응용 프로그램이 현재 “인식하고 있는” 주소가 주로 가상 주소로 지칭된다. 가상 주소는 때때로 “근거리 주소(local address)”나 “효율적 주소(effective address)”로 지칭되기도 한다. 이러한 가상 주소들은 동적 주소 변환(DAT)(312) 기술 중 하나에 의하여 유형의 메모리 주소로 다시 연결된다. 이러한 동적 주소 변환 기술로는 오프셋 값을 이용하여 가상 주소를 프리픽스 하는 방법, 페이지 테이블의 진입점을 보유하는 세그먼트 테이블과 페이지 테이블을 각각 또는 함께 갖는 하나 이상의 변환 테이블을 통하여 가상 주소를 변환하는 방법 등을 예로 들 수 있다. z/Architecture에서, 변환의 계층은 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블, 세그먼트 테이블 및 선택적 페이지 테이블을 포함한다. 주소 변환 기능을 향상시키기 위하여 가상 주소를 이에 대응하는 유형의 메모리 위치에 매핑하는 엔트리들을 포함하는 변환 색인 버퍼(Translation Look-aside Buffer: TLB)를 사용할 수 있다. 엔트리들은 DAT가 가상 주소를 변환 테이블을 사용하여 변환할 때 생성된다. 가상 주소를 연속적으로 사용 하면 느린 순차적 변환 테이블 액세스 대신 빠른 변환 색인 버퍼(TLB)의 엔트리를 사용할 수 있다. LRU(Least Recently used)를 포함한 다양한 대체 알고리즘을 사용하여 TLB 콘텐트를 관리한다.
프로세서가 멀티 프로세서 시스템의 프로세서인 경우, 각각의 프로세서는 I/O, 캐시, TLB, 메모리 등의 나눠진 자료들이 자료의 다른 부분들과 일관성을 갖도록 유지하여야 한다. 일반적으로 “Snoop” 기술은 캐시 일관성을 유지하기 위하여 사용된다. Snoop 환경에서 각각의 캐시 라인은 정보 공유를 촉진하기 위하여 나눠진 상태, 배타적 상태, 바뀐 상태, 무효 상태 등 중 하나로 마킹한다.
I/O 유닛(304)는 프로세서가 테이프, 디스크, 프린터, 디스플레이, 네트워크 등을 포함하는 여러 주변 기기들에 결합하는 수단이 된다. I/O 유닛은 주로 컴퓨터 프로그램에서 소프트웨어 드라이브로 지칭된다. IBM의 z/Series같은 메인프레임에서 채널 어댑터, 오픈 시스템 어뎁터은 메인프레임의 I/O 유닛이며, 이는 운영 체제과 주변 기기 간의 통신을 가능하게 한다.
다음의 설명은 z/Architecture 운영 원리에서 참조한 것으로 컴퓨터의 구조적인 면을 설명한다:
저장:
컴퓨터 시스템은 주소, 보호, 참조번호, 변화 기록 등의 정보를 메인 저장 매체에 저장한다. 주소의 어떤 관점은 주소의 포맷, 주소 공간의 컨셉, 주소의 다양한 유형, 하나의 유형의 주소를 다른 유형의 주소로 전환하는 방법 등을 포함한다. 메인 저장 매체의 일부는 영구적으로 지정된 저장 위치를 포함한다. 메인 저장 매체는 직접 어드레스할 수 있으며 액세스가 빠른 데이터 저장 매체를 갖는 시스템을 제공한다. 데이터와 프로그램은 모두 처리에 앞서 입력 기기로부터 메인 저장 매체에 로딩되어야 한다.
메인 저장 매체는 하나 이상의 캐시라고 불리는 비교적 작고 액세스가 빠른 버퍼 저장 매체를 포함한다. 캐시는 일반적으로 CPU 또는 I/O 프로세서에 물리적으로 결합되어 있다. 일반적으로 성능의 차이가 아닌 물리적 구조의 차이와 서로 떨어진 저장 매체의 사용에 따른 효과의 차이는 프로그램에 의해서는 관측되지 않는다.
개별적 캐시는 명령어와 데이터 피연산자에 의하여 유지된다. 캐시 내의 정보는 캐시 블록 또는 캐시 라인(또는 축약하여 라인)이라고 불리는 정수 경계 상의 인접한 바이트에서 유지된다. 모델은 캐시 라인의 사이즈를 바이트 단위로 복귀하는 캐시 속성 추출(EXTRACT CACHE ATTRIBUTE)를 제공한다. 또한 모델은 저장 매체를 데이터나 명령어 캐시로 프리패칭하는 것 또는 캐시로부터 데이터를 복구하는 것에 영향을 끼치는 PREFETCH DATA 및 PREFETCH DATA RELATIVE LONG 명령어를 제공한다.
저장 매체는 비트가 긴 줄처럼 수평적으로 나열되어 있는 것처럼 보인다. 대부분의 동작 시에, 저장 매체에의 액세스는 왼쪽에서 오른쪽 순서로 진행된다. 비트의 선은 내부적으로는 유닛으로 나뉘며, 비트 8개가 한 유닛에 해당된다. 8 비트 유닛은 바이트라고 불리며, 이는 모든 정보 포맷 블록을 형성하는 기본이 된다. 저장 매체에서의 각각의 바이트 위치는 유일한 양의 정수로 식별되며, 이는 바이트 위치, 간단하게는 바이트 주소라고 지칭된다. 인접한 바이트 위치는 연속적인 주소를 가지며, 왼쪽 끝에서 0부터 시작하여 오른쪽으로 갈 수록 증가한다. 주소는 부호화되지 않은 이진 정수이며 24, 31, 64 비트다.
정보는 저장 매체와 CPU, 또는 채널 서브시스템 사이에서 한번에 한 바이트 또는 바이트의 그룹 단위로 전송된다. 별도로 정한 바가 없는 한 저장 매체의 바이트의 그룹의 주소는 그룹 내에 가장 왼쪽의 바이트의 주소가 된다. 그룹 내의 바이트의 숫자는 암묵적 또는 명시적으로 실행되는 동작에 의하여 특정된다. CPU 동작에서 사용될 때, 바이트의 그룹은 필드라고 지칭된다. 각각의 바이트의 그룹 내에서, 비트는 좌에서 우로 진생하는 순서로 숫자가 매겨진다. 가장 왼쪽의 비트는 “하이 오더(high-order)” 비트라고 지칭되며 가장 오른쪽의 비트는 “로우 오더(low-order)” 비트라고 지칭된다. 그러나, 비트 숫자는 저장 매체의 주소가 아니다. 바이트만이 주소가 지정될 수 있다. 저장 매체의 바이트의 개개의 비트를 실행하기 위해서는 전체 바이트에 액세스해야 한다. 바이트 내의 비트는 왼쪽부터 0에서 7로 번호 매겨진다. 하나의 주소 내의 비트는 24비트 주소의 경우 8-31 또는 40-63 등, 64 비트의 경우 0-63 등으로 번호 매겨진다. 길이가 정해진 다중 바이트의 포맷 내에서 포맷을 구성하는 비트는 항상 0부터 번호 매겨진다. 오류 검출을 위하여, 바람직하게는 오류 수정을 위하여, 하나 이상의 체크 비트가 바이트의 그룹 또는 각각의 바이트 내에 함께 전송된다. 이러한 체크 비트는 기계에 의하여 자동적으로 생성되고, 프로그램으로 직접 제어할 수는 없다. 저장 매체 용량은 바이트의 수로 나타낸다. 명령어의 실행 코드가 저장 매체-피연산자 필드의 길이를 내포하고 있는 경우 필드는 정해진 길이를 갖게 되며, 이는 1, 2, 4, 8, 또는 16 바이트이다. 특정 명령어에 의하여 더 큰 필드의 길이가 내포될 수도 있다. 실행 코드가 저장 매체-피연산자 필드의 길이를 내포하지 않고 명시적으로 서술한 경우, 필드는 다양한 길이를 갖는다. 길이-가변 피연산자는 하나의 바이트의 증분에 의하여 길이가 가변된다. 정보가 저장 매체에 저장되어 있을 때, 비록 저장 매체로의 물리적 경로의 넓이가 저장된 필드의 길이보다 크더라도 이러한 바이트의 위치 콘텐트가 지정된 필드 내에 포함되는 것으로 대체된다.
정보의 일정 유닛은 저장 매체의 정수 경계 내에 존재하여야 한다. 이러한 경계는 정보의 유닛을 위한 정수라고 지칭되며, 이의 저장 매체 주소가 바이트의 유닛의 길이의 배수에 해당되도록 하는 것이다. 정수 경계 상의 2, 4, 8, 16 바이트의 필드에는 별도의 호칭이 주어진다. 반단어(halfword)는 2 바이트 경계 상의 두 개의 연속하는 바이트의 그룹을 지칭하며 이는 명령어 블록의 기본 구조이다. 단어(word)는 4 바이트 경계 상의 4 개의 연속하는 바이트 그룹을 지칭한다. 2중단어(doubleword)는 8 바이트 경계 상의 8개의 연속하는 바이트 그룹을 지칭한다. 4중단어(quadword)는 16 바이트 경계 상의 16개의 연속하는 바이트 그룹을 지칭한다. 저장 매체 주소가 반단어, 단어, 2중단어, 4중단어 등으로 정의될 때, 주소의 이진 표현은 가장 오른쪽에 각각 1, 2, 3, 4개의 0 비트를 포함하게 된다. 명령어는 2 바이트 정수 경계상에 놓여야 한다. 대부분의 명령어의 저장 매체 피연산자는 경계 경계-정렬 조건을 갖지 않는다.
명령어 및 데이터 피연산자를 위한 별도의 캐시를 실행하는 모델 상에서, 연속적으로 인출되는 명령어에 대한 추가적 고려 없이, 프로그램이 명령어가 연속적으로 인출되는 캐시 라인을 계속 입력한다면 상당한 지연이 발생할 것이다.
명령어:
일반적으로 CPU의 작동은 저장 매체 내의 명령어가 한번에 하나씩 왼쪽에서 오른쪽으로 저장 매체 주소가 증가하는 방향으로 순차적으로 실행됨에 따라 제어된다. 순차적 작동의 변화는 분기, LOAD PSW, 장애, SIGNAL PROCESSOR 순서, 또는 수동 장애에 의하여 발생한다.
바람직하게 명령어는 크게 두 부분으로 구성된다.
- 수행할 연산을 특정하는 작동 코드(연산 코드) 부분.
- 선택적으로 연산에 참여하는 피연산자를 특정하는 부분.
z/Architecture의 명령어 포맷은 도 5a-5f에 나타나 있다. 명령어는 단순히 연산 코드를 제공할 수도 있고, 또는 즉시피연산자 또는 레지스터 또는 메모리 내의 피연산자를 지정하기 위한 레지스터 구별자를 포함하는 다양한 필드를 연산 코드와 함께 제공할 수도 있다. 연산 코드는 내재된 자원(피연산자 등)을 하나 이상의 특정된 범용 레지스터(GPR)처럼 사용할 것을 하드웨어에게 지시한다. 피연산자는 3 개의 클래스로 분류될 수 있다: 레지스터에 위치한 피연산자, 즉시피연산자, 저장 매체의 피연산자. 피연산자는 내재적 또는 명시적으로 지정된다. 레지스터 피연산자는 일반 레지스터, 부동 소수점 레지스터, 액세스 레지스터 또는 제어 레지스터 등 연산 코드에 의하여 확인된 레지스터에 위치할 수 있다. 피연산자를 포함한 레지스터는 4 비트 필드 내의 레지스터를 식별함으로 특정되며 명령어에서 이를 R 필드라고 지칭한다. 일부 명령어에서 피연산자는 암묵적으로 지정된 레지스터, 즉 연산 코드에 의하여 내재된 레지스터에 위치하기도 한다. 즉시피연산자는 명령어 내에 위치하며 8 비트, 16 비트, 또는 32비트 필드이고, I 필드라고 지칭된다. 저장 매체의 피연산자는 암묵적 길이를 갖고, 비트 마스트에 의하여 특정되며, 4 비트 또는 8 비트 길이 특징에 의하여 특정되고, 명령어에서는 L 필드라고 지칭되며, 또는 일반 레지스터의 콘텐트에 의하여 특정되는 길이를 갖는다. 저장 매체의 피연산자의 주소는 주소의 일부분으로 일반 레지스터의 컨텐트를 사용하는 포맷으로 특정된다. 이는 다음을 가능하게 한다:
- 축약된 표기를 사용하여 전체 주소를 특정하기
- 피연산자를 위한 일반 레지스터를 사용한 명령어를 이용하여 주소 조작 수행하기
- 명령어 스트림을 변경하지 않으면서 프로그램 수단을 사용하여 주소 변경하기
- 다른 프로그램에서 받은 주소를 직접 사용하여 데이터 지역의 주소를 독립적으로 실행하기
주소는 일반적으로 명령어의 R 필드에 의하여 지정된 레지스터 내에 보유된, 또는 명령어 내의 B, X, D 필드 각각에 의하여 특정된 베이스 주소, 인덱스 및 변위에 의하여 산출된 저장 매체를 지칭한다. CPU가 액세스-레지스터 모드인 경우, B 또는 R 필드는 주소를 특정하는 것만이 아니라, 엑세스 레지스터를 지정하기도 한다. 명령어의 실행을 나타내기 위하여, 피연산자는 바람직하게는 제 1 및 제 1 피연산자로 지정되며, 경우에 따라 제 3 및 제 4 피연산자가 쓰이기도 한다. 일반적으로 두 개의 피연산자가 명령어 실행에 사용되며, 그 결과가 제 1 피연산자를 대체한다.
명령어는 길이로는 1, 2, 또는 3 반단어에 해당되며, 반단어 경계의 저장 매체에 위치하여야 한다. 도 5a-5f는 명령어 포맷을 나타내고 있으며, 각각의 명령어는 25 개의 기본 포맷에 해당한다: E(501), I(502), Rl(503, 504), RIE(505, 551, 552, 553, 554), RIL(506, 507), RIS(555), RR(510), RRK(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), 추가적으로 RRF의 세 가지 변형, RI, RIL, RS, 및 RSY의 두 가지 변형, RIE 및 SS의 다섯 가지 변형.
포맷의 이름은 일반용어로, 연산에 참여하는 피연산자의 클래스 및 필드의 상세 정보를 나타낸다.
- RIS는 레지스터-및-즉시 연산 및 저장 매체 연산(Register-and-Immediate operation and a Storage operation)을 나타낸다.
- RRS는 레지스터-및 레지스터 연산 및 저장 매체 연산(Register-and-Register operation and a Storage operation)을 나타낸다.
- SIL은 저장 매체 및 레지스터 연산을 16 비트 즉시 필드에서 하는 것을 나타낸다.
I, RR, RS, RSI, RX, SI, 및 SS 포맷에서, 명령어의 첫 번째 바이트는 연산 코드를 보유한다. E, RRE, RRF, S, SIL, 및 SSE 포맷에서 명령어의 첫 번째 2 바이트는 연산코드를 보유하며, 예외적으로 S 포맷의 일부 연산자는 첫 번째 바이트에서만 연산 코드를 갖는다. RI 및 RIL 포맷에서는 연산 코드가 명령어의 제 1 바이트와 12-15 비트 포지션에 위치한다. RIE, RIS, RRS, RSL, RSY, RXE, RXF, RXY, 및 SIY 포맷에서, 연산 코드는 명령어의 첫 번째 바이트와 6번째 바이트이다. 연산 코드의 첫 번째 또는 유일한 바이트의 가장 앞 두 개의 비트는 명령어의 길이와 포맷을 나타내며 이는 다음과 같다:
RR, RRE, RRF, RRR, RX, RXE, RXF, RXY, RS, RSY, RSI, RI, RIE 및 RIL 포맷에서, R1 필드로 지정된 레지스트의 콘텐트는 제 1 피연산자이다. 제 1 피연산자를 포함하는 레지스터는 때로는 “제 2 피연산차 위치” 또는 “레지스터 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 포맷에서 8 비트 즉시데이터 필드의 콘텐트, 즉 명령어의 I 필드는 직접적으로 피연산자로 사용된다. SI 포맷에서, 8 비트 즉시데이터 필드의 콘텐트, 즉 명령어의 I2 필드는 제 1 피연산자로 사용된다. B1 및 D1 필드는 길이가 1 바이트인 제 1 피연산자를 특정한다. SIY 포맷에서 연산은 DH1 및 DL1 필드가 D1 필드 대신에 사용된다는 점을 제외하고는 동일하다. ADD HALFWORD IMMEDIATE, COMPARE HALFWORD IMMEDIATE, LOAD HALFWORD IMMEDIATE, 및 MULTIPLY HALFWORD IMMEDIATE 명령어를 위한 RI 포맷에서 명령어의 16 비트 I2 필드의 콘텐트는 기호화된 이진 정수이며, R1 필드는 제 1 피연산자를 특정하고, 이 때 제 1 피연산자의 길이는 명령어에 따라 32 또는 64 비트다. TEST UNDER MASK (TMHH, TMHL, TMLH, TMLL) 명령어에 있어서, I2 필드의 콘텐트는 마스크로 사용되고, R1 필드는 길이가 64 비트인 제 1 피연산자를 특정한다.
INSERT IMMEDIATE, AND IMMEDIATE, OR IMMEDIATE, 및 LOAD LOGICAL IMMEDIATE 명령에 있어서, I2 필드 콘텐트는 부호 없는 이진 정수 또는 논리 값으로 사용되고, R1 필드는 길이가 64 비트인 제 1 피연산자를 특정한다. RI 및 RSI 포맷의 상대 분기 명령어에 있어서 16 비트 I2 필드의 콘텐트는 반단어의 숫자를 지정하는 부호화된 이진 정수로 사용된다. 이 숫자를 분기 명령어의 주소에 더하면, 분기 주소가 특정된다. RIL 포맷의 상대 분기 명령어에 있어서, I2필드는 32비트이며 동일한 방식으로 사용된다.
RI 및 RSI 포맷의 상대 분기 명령어에 있어서, 16 비트 I2 필드의 콘텐트는 반단어의 숫자를 지정하는 부호화된 이진 정수로 사용된다. 이 숫자를 분기 명령어의 주소에 더하면, 분기 주소가 특정된다. RIL 포맷의 상대 분기 명령어에 있어서, I2 필드는 32비트이며 동일한 방식으로 사용된다. RIE 포맷 명령어 COMPARE IMMEDIATE AND BRANCH RFLATIVE와 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 비트 I4 필드의 콘텐트는 반단어의 개수를 나타내는 부호화된 이진 정수이며, 이 숫자를 명령어의 주소에 더하면, 분기 주소가 특정된다.
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 피연산자를 직접 나타낸다. B1 및 D1 필드는 아래 서술한 바와 같이 제 1 피연산자를 특정한다.
RSL, Sl, SIL, SSE 및 대부분의 SS 포맷에 있어서, B1 필드에 의하여 규정된 일반 레지스터의 콘텐트는 D1 필드의 콘텐트에 더해져서 제 1 피연산자의 주소를 구성한다. RS, RSY, S, SIY, SS 및 SSE 포맷에서 B2 필드에 의하여 규정된 일반 레지스터의 콘텐트는 D2 필드 또는 DH2 및 DL2 필드의 콘텐트에 더해져서 제 2 피연산자의 주소를 구성한다. RX, RXE, RXF 및 RXY 포맷에서, X2 및 B2 필드에 의하여 규정된 일반 레지스터의 콘텐트는 D2 필드 또는 DH2 및 DL2 필드의 콘텐트에 더해져서 제 2 피연산자의 주소를 구성한다. RIS 및 RRS 포맷과 하나의 SS 포맷에서, B4 필드에 의하여 규정된 일반 레지스터의 콘텐트는 D4 필드의 콘텐트에 더해져서 제 4 피연산자의 주소를 구성한다
단일, 8 비트 길이 필드를 갖는 SS 포맷의 명령어 AND (NC), EXCLUSIVE OR (XC), MOVE (MVC), MOVE NUMERICS, MOVE ZONES 및 OR (OC)에 있어서, L 은 제 1 피연산자 주소로 지정되는 바이트의 오른쪽의 추가적 피연산자 바이트의 갯수를 특정한다. 따라서, 제 1 피연산자의 바이트 길이가 1-256이면, 이에 따라 L의 코드 길이는 0-255가 된다. 저장 매체 결과가 제 1 피연산자를 대체하고, 주소와 길이로 특정된 필드의 외부에는 저장되지 않는다. 이 포맷에서, 제 2 피연산자는 제 1 피연산자와 같은 길이를 갖는다. 전술한 정의들의 변환이 EDIT, EDIT AND MARK, PACK ASCII, PACKUNICODE. TRANSLATE, TRANSLATE AND TEST, UNPACK ASCH, 및 UNPACK UNICODE에 적용된다.
두 개의 길이 필드를 갖는 SS 포맷과 RSL포맷에 있어서, L1은 제 1 피연산자 주소로 지정되는 바이트의 오른쪽의 추가적 피연산자 바이트의 갯수를 특정한다. 따라서, 제 1 피연산자의 바이트 길이가 1-16이면, 이에 따라 L1의 코드 길이는 0-15가 된다. 이와 유사하게, L2는 제 2 피연산자 주소로 지정되는 바이트의 오른쪽의 추가적 피연산자 바이트의 갯수를 특정한다. 결과가 제 1 피연산자를 대체하고, 주소와 길이로 특정된 필드의 외부에는 저장되지 않는다. 제 1 피연산자가 제 2 피연산자보다 길다면, 제 2 피연산자는 왼쪽으로 확장하며 0 수치를 저장하며, 제 1 피연산자의 길이에 미칠 때까지 확장된다. 이러한 확장은 저장 매체의제 2 피연산자를 변형하는 것은 아니다. MOVE TO PRIMARY, MOVE TO SECONDARY 및 MOVE WITH KEY 명령어에 의하여 사용되는 두 개의 R 필드를 갖는 SS 포맷에서, R1 필드에 의하여 규정된 일반 레지스터의 콘텐트는 32 비트 부호 없는 값을 가지며, 이를 순수한 길이(true length)라고 지칭한다. 피연산자는 유효 길이(effective length)라고 불리는 길이도 갖는다. 유효 길이는 256과 순수한 길이 중에 작은 쪽의 값을 갖는다. 명령어는 순수 길이로 특정된 바이트의 총 개수만큼 움직이는 루프를 프로그래밍하는 것을 돕기 위하여 조건 코드를 정한다. 또한, 두 개의 R 필드를 갖는 SS 포맷은 LOAD MULTIPLE DISJOINT 명령어를 위한 레지스터의 범위와 두 저장 매체 피연산자를 특정하고, PERFORM LOCKED OPERATION 명령어를 위한 하나 또는 두 개의 레지스터 및 하나 또는 두 개의 저장 매체 피연산자를 특정하기 위하여 사용된다.
B1, B2, X2 또는 B4 필드 중 어느 하나에 있는 0 값은 대응하는 주소 요소의 부재를 나타낸다. 일반 레지스터 0의 콘텐트와 무관하게, 결여된 구성 요소를 위하여 0이 중간 합계를 내는데 사용된다. 0의 변위는 중요한 의미를 갖지 않는다.
현재 PSW의 비트 31 및 32는 주소-모드 비트이다. 비트 31은 확장된 주소 모드 비트이며, 비트 32는 기본 주소 모드 비트다. 이러한 비트가 주소 생성에 의하여 만들어진 유효 주소의 크기를 조절한다. 현재 PSW의 비트 31 및 32가 모두 0일 때, CPU는 24 비트 주소 모드이고, 24 비트 명령어와 피연산자 유효 주소가 생성된다. 현재 PSW의 비트 31 및 32가 모두 1일 때, CPU는 64 비트 주소 모드이고, 64 비트 명령어와 피연산자 유효 주소가 생성된다. CPU에 의한 명령어의 실행은 명령어와 피연산자의 주소의 생성을 포함한다.
명령어가 현재 PSW에 의하여 지정된 위치로부터 인출되면, 명령어 주소가 명령어의 바이트 수만큼 증가하고, 명령어는 실행된다. 순서대로 새로운 명령어를 인출하기 위하여 명령어 주소의 새로운 값을 사용함에 따라 위와 동일한 절차가 반복된다. 24 비트 주소 모드에서, 명령어 주소는 랩어라운드하기 때문에, 명령어 주소가 224-2인 반단어의 다음은 명령어 주소가 0인 반단어가 된다. 따라서, 24 비트 주소 모드에서, 명령어 주소를 업데이트함에 따라 PSW 비트 포지션 104의 실행 의 결과가 유실된다. 31 비트 주소 모드에서, 명령어 주소는 위와 유사하게 랩어라운드하기 때문에, 명령어 주소가 231-2 또는 264-2인 반단어의 다음은 명령어 주소가 0인 반단어가 된다. PSW 비트 포지션 97, 64의 실행의 결과도 모두 유실된다.
중간 값으로부터 도출되는 저장매체에 의한 피연산자 주소는 명령어의 R필드로부터 지정되는 레지스터에 보유된 것이거나 베이스 주소, 인덱스 및 변위 이 세 가지 이진 숫자의 합으로부터 산출된 것이다. 베이스 주소(B)는 64 비트 숫자로, 명령어에서 B 필드라고 불리는 4 비트 필드에서 프로그램에 의하여 특정된 일반 레지스터에 보유된 값이다. 베이스 주소는 프로그램과 데이터 영역의 주소들 각각의 평균값들로 사용된다. 배열 유형 연산에서, 배열의 위치를 지정할 수 있으며, 레코드 유형 처리에서는 레코드를 식별할 수도 있다. 베이스 주소는 전체 저장 매체의 주소를 제공한다. 또한, 베이스 주소는 인덱스 작업에도 사용된다.
인덱스(X)는 64비트 숫자로 명령어에서 X 필드라고 불리는 4 비트 필드에서 프로그램에 의하여 특정된 일반 레지스터에 보유된 값이다. 이는 RX-, RXE- 및 RXY- 포맷 명령어에 의하여 특정되는 주소에만 포함되어 있다. RX-, RXE- 및 RXY- 포맷 명령어는 이중 인덱스를 허용한다: 이는 인덱스가 배열 내의 요소의 주소를 제공하는데 사용되는 것을 말한다.
변위(D)는 12 비트 또는 0 비트 숫자로, 명령어에서 D 필드라고 불리는 필드에 보유된 값이다. 12 비트 변위는 부호가 없는 것으로, 베이스 주소에 의하여 지정되는 위치 다음의 4,095 바이트 값의 상대 주소를 제공한다. 20 비트 변위는 부호가 없는 것으로, 베이스 주소에 의하여 지정되는 위치 다음의 524,287 바이트 또는 그 위치 전의 524,288 바이트의 상대 주소를 제공한다.배열 유형 연산에서, 변위는 요소와 결합된 많은 아이템 중 하나를 특정하는데 사용된다. 레코드 처리에 있어서, 변위는 레코드 내의 아이템들을 식별하는데 사용된다. 12 비트 변위는 특정 포맷의 명령어의 20-31 비트 포지션에 놓인다.어떤 명령어 포맷에서는 두 번째 12 비트 변위가 비트 포지션 36-47에 놓이기도 한다.
20 비트 변위는 RSY, RXY, 또는 SlY 포맷의 명령어에서만 존재한다. 이러한 명령어에서 D 필드는 비트 포지션 20-31에 DL(low) 필드를 갖고, 비트 포지션 32-39에 DH(high) 필드를 갖는다. 긴 변위 기능(Long Displacement Facility)이 인스톨되면, 변위의 수치 값이 DL 필드의 콘텐트의 왼쪽의 DH 필드의 콘텐트를 부가함으로써 형성된다. 긴 변위 기능(Long Displacement Facility)이 인스톨되지 않으면, 변위의 수치 값은 DL 필드의 콘텐트의 왼쪽에 8 개의 0 비트를 부가함으로써 형성되고, DH 필드의 콘텐트는 사용되지 않는다.
중간 값을 형성 시, 베이스 주소와 인덱스는 64 비트 이진 정수로 취급된다. 12 비트 변위는 12 비트 부호 없는 이진 정수로 취급되고, 52개의 0 비트가 왼쪽에 부가된다. 20 비트 변위는 20 비트 부호화된 이진 정수로 취급되고, 부호 비트와 동일한 44 비트가 왼쪽에 부가된다. 이 셋을 합한 후 이를 64 비트 이진수처럼 취급하며, 오버플로는 무시한다. 합의 길이는 항상 64 비트이며, 생성된 주소를 형성하는 중간 값처럼 사용된다. 중간 값의 비트는 0-63의 숫자가 매겨진다. B1, B2, X2, 또는 B4 필드 중 하나의 0은 상응하는 주소 요소의 결여를 의미한다. 요소의 결여에 따라 일반 레지스터 0의 콘텐트가 무엇이던지 간에 중간 값을 형성하는 데는 0이 사용된다. 0의 변위는 중요한 의미를 갖지 않는다.
명령어의 설명에서 R 필드로 지정되는 일반 레지스터가 저장 매체의 피연산자에게 주소를 지정하는데 사용된다고 지정하면, 레지스터 콘텐트는 64 비트 중간 값처럼 사용되게 된다.
명령어는 주소 산출을 위하여 또는 피연산자의 주소로 사용하기 위하여 동일한 일반 레지스터를 지정할 수 있다. 주소 산출은 지정된 레지스터가 있다면 이러한 레지스터가 연산에 의하여 바뀌기 전에 완성된다. 개개의 명령어 정의에서 지정된 사항이 없다면, 생성된 피연산자 주소는 저장 매체의 피연산자의 가장 왼쪽 바이트를 지정하게 된다.
생성된 피연산자 주소의 길이는 항상 64 비트이며, 이 비트는 0-63의 번호가 매겨진다. 현재 주소 모드에 따라 중간 값으로부터 생성된 주소를 얻는 방법을 사용한다. 24 비트 주소 모드에서, 중간 값의 비트 0-39는 무시되며, 생성된 주소의 비트 0-39는 0이 되고, 중간 값의 비트 40-63은 생성된 주소의 비트 40-63이 된다. 31 비트 주소 모드에서, 중간 값의 비트 0-32는 무시되며, 생성된 주소의 비트 0-32는 0이 되고, 중간 값의 비트 33-63은 생성된 주소의 비트 33-63이 된다. 64 비트 주소 모드에서, 중간 값의 비트 0-63은 생성된 주소의 비트 0-63이 된다. 인덱스와 베이스 주소 레지스터에서 음수도 사용될 수 있다. 이러한 값의 0-32 비트는 31 비트 주소 모드에서 무시되며, 0-39 비트는 24 비트 주소 모드에서 무시된다.
분기 명령어에서, 분기가 결정되었을 때 주소 및 실행될 다음 명령어를 분기 주소라고 지칭한다. 분기 명령어에 따라, 명령어 포맷은 RR, RRE. RX, RXY, RS. RSY, RSI. RI, RIE, 또는 RlL로 나뉜다. RS, RSY, RX, 및 RXY 포맷에서, 분기 주소는 베이스 주소, 변위에 의하여 지정되며, RX 및 RXY 포맷에서는 베이스 주소, 변위 및 인덱스에 의하여 지정된다. 이러한 포맷에서, 중간 값의 생성은 피연산자 주소 중간 값의 생성과 동일한 규칙을 따른다. RR 및 RRE 포맷에서 R2 필드에 의하여 지정된 일반 레지스터의 콘텐트는 분기 주소를 형성하는 중간 값처럼 사용된다. 일반 레지스터 0은 분기 주소를 갖도록 지정될 수 없다. R2 필드에서의 0의 값은 분기 연산을 하지 않고 실행되는 명령어를 의미하게 된다.
상대 분기 명령어는 RSI, RI, RIE, 및 RIL 포맷을 갖는다. 상대 분기 명령어의 RSI, RI, RIE 포맷에서 I2 필드의 콘텐트는 반단어의 수를 지정하는 16 비트의 부호화된 이진 정수로 취급된다. RIL 포맷에서 I2 필드의 콘텐트는 반단어의 수를 지정하는 32 비트의 부호화된 이진 정수로 취급된다. 분기 주소는 상대 분기 명령어의 주소에 부가된 I2 필드에 의하여 지정되는 반단어의 숫자다.
RSI, RI, RIE, 또는 RIL 포맷의 상대 분기 명령어를 위한 64 비트 중간 값은 두 개의 가수의 합이며, 비트 포지션 0의 오버플로는 무시된다. RSI, RI 또는 RIE 포맷에서, 첫 번째 가수는 I2 필드의 콘텐트이며, I2 필드는 0 비트 하나가 오른쪽에 부가되어 있는 것이나, 단 명령어가 COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, 및 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE인 경우의 첫 번째 가수는 I4 필드의 콘텐트와 상기 언급된 I2 필드에 비트들이 부가된 것이다. RIL 포맷에서 첫 번째 가수는 I2 필드의 콘텐트에 오른쪽에 0 비트를 왼쪽에 콘텐트의 부호 비트와 동일한 31 비트를 부가한 것이고, 두 번째 가수는 분기 명령어의 64 비트 주소이다. 분기 명령어의 주소는 PSW의 주소로, 다음 차례인 명령어의 주소가 업데이트되기 전의 PSW의 주소, 또는 EXECUTE 명령어가 사용된다면 EXECUTE 명령어의 타깃 주소에 해당된다. 23 비트 또는 31 비트 주소 모드에서 EXECUTE 명령어가 사용된다면, 분기 명령어의 주소는 왼쪽에 각각 40개 또는 33 개의 0이 부가된 타깃 주소이다.
분기 주소는 그 길이가 항상 64비트이며 비트는 0-63의 숫자가 매겨진다. 분기 주소는 현재의 PSW의 640127 비트를 대체한다. 주소 모드에 따라 중간 값으로부터 생성된 주소를 얻는 방법을 사용하여 분기 주소를 얻는다. 주소 모드를 변경하는 분기 명령어에서는 새로운 주소 모드가 사용된다. 24 비트 주소 모드에서, 중간 값의 0-39 비트는 무시되며, 분기 주소의 0-39 비트는 0이 되고, 중간 값의 40-63 비트는 분기 주소의 40-63 비트가 된다. 31 비트 주소 모드에서, 중간 값의 0-32 비트는 무시되며, 분기 주소의 0-32 비트는 0이 되고, 중간 값의 33-63 비트는 분기 주소의 33-63 비트가 된다. 64 비트 주소 모드에서, 중간 값의 0-63 비트는 분기 주소의 0-63 비트가 된다.
분기 명령어 중 일부에 있어서, 분기는 주어진 조건을 만족하는지에 따라 결정된다. 조건 불만족 시, 분기는 정해지지 않으며 일반적인 다음 차례의 명령어가 실행되고, 분기 주소는 사용되지 않는다. 분기가 정해지면, 분기 주소의 0-63 비트가 현재 PSW의 64-127 비트로 대체된다. 분기 주소는 분기 연산의 일부인 저장 매체에 액세스하기 위해서 사용되지는 않는다. 비정상적인 분기 주소에 의한 예외적인 사양과 분기 위치에서 명령어를 인출함에 따는 예외적인 액세스는 분기 연산으로 취급되지 않으며, 대신에 분기 위치에서의 명령어 실행에 따른 예외로 여겨진다.
BRANCH AND SAVE와 같은 분기 명령어는 분기 주소 산출을 위한 레지스터와 피연산자의 주소로 일반 레지스터를 지정한다. 분기 주소 산출은 남은 연산이 수행되기 전에 완료된다.
프로그램 상태어(PSW)는 적절한 프로그램 실행을 위하여 필요한 정보를 담고 있다. PSW는 명령어의 순서를 조절하며, 현재 실행되는 프로그램에 따른 CPU의 상태를 추적한다. 활성화되어 현재 제어중인 PSW를 현재 PSW(current 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 연산의 결과를 반영하는 조건 코드를 검열한다. 2 비트로 구성된 조건 코드는 4 개의 가능한 조건 코드 설정을 제공한다: 0, 1, 2, 3.
하나의 설정의 특정한 의미는 조건 코드를 설정하는 연산에 따라 결정된다. 예를 들어, 조건 코드가 0, 0이아님, 제 1 피연산자 높음, 동일, 오버플로, 서브채널 사용중이라는 조건을 나타낼 수도 있다. 한번 설정한 조건 코드는 다른 조건 코드를 설정하도록 하는 명령어에 의하여 변경될 때 까지 바뀌지 않는다.
루프 제어는 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는 일반 레지스터 R1의 32-29 비트 포지션에 명령어를 위한 명령어 길이 코드, 조건 코드 및 현재 PSW로부터의 프로그램 마스크를 저장한다. BRANCH AND SAVE는 이러한 비트 포지션에 0을 설정한다.
31 비트 주소 모드에서, 두 개의 명령어 모두 R1 일반 레지스터의 33-63 비트 포지션과 32 비트 포지션에 복귀 주소를 저장하고, 레지스터의 0-31 비트 포지션은 바꾸지 않는다.
- 64 비트 주소 모드에서, 두 개의 명령어 모두 일반 레지스터 R1의 0-63 비트 포지션에 복귀 주소를 저장한다.
- 어떤 주소 모드에서든지 두 명령어는 현재 주소 모드의 제어 하에 분기 주소를 생성한다. 명령어는 PSW의 비트 포지션 64-127에 분기 주소 0-63 비트를 위치시킨다. RR 포맷에서, 두 명령어는 명령어의 R2 필드가 0인 경우에는 실행되지 않는다.
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는 일반 레지스터 R1의 콘텐트를 BRANCH AND SAVE와 동일하게 설정한다. 또한, 명령어는 확장 주소 모드 비트, 즉 PSW의 31 비트를 레지스터의 63 비트 포지션에 위치시킨다.
- BRANCH AND SET MODE는 R1이 0이 아닌 경우 다음과 같이 연산한다. 24 또는 31 비트 모드에서, PSW의 비트 32를 일반 레지스터 R1의 비트 포지션 32에 위치하고, 레지스터의 0-31, 33-63은 바꾸지 않는다. 레지스터의 비트 63은 레지스터가 명령어 주소를 포함한다면 0이 되어야 함을 주의한다. 64 비트 모드에서, 명령어는 PSW의 비트 31(1)을 일반 레지스터 R1의 비트 포지션 63에 위치시키고, 레지스터의 0-62 비트는 바꾸지 않는다.
- R2가 0이 아닌 경우, 명령어들은 주소 모드로 설정되며, 다음과 같이 분기 연산을 수행한다. 일반 레지스터 R2의 비트 63은 PSW의 비트 포지션 31에 위치시킨다. 비트 63이 0이라면, 레지스터의 비트 32를 PSW의 비트 포지션 32에 위치시킨다. 비트 63이 0이라면, PSW 비트 32는 1로 설정된다. 따라서, 레지스터의 비트 63이 0이 아닌 이상, 새로운 주소 모드의 제어 하에 분기 주소가 레지스터의 콘텐트로부터 생성된다. 명령어는 분기 주소의 비트 0-63을 PSW의 비트 포지션 64-127로 위치시킨다. 일반 레지스터 R2의 비트 63은 바뀌지 않으며, 따라서 호출된 프로그램에 진입될 수 있다. R2가 R1과 동일한 경우, 지정된 일반 레지스터에서의 결과는 R1 레지스터에만 특정된 것이다.
장애(문맥 전환):
장애 메커니즘은 CPU가 외부 조건에 따라 또는 CPU 자신의 판단에 따라 자신의 상태를 변경하는 것을 허용한다. 우선순위가 높은 조건에 신속하게 대응 가능하도록 하며, 조건의 유형을 즉시 인식 가능하게 하기 위하여, 장애 조건들은 6 가지 클래스로 나뉜다: 외부, 입력/출력, 기계 체크, 프로그램, 재시작, 슈퍼바이저 호출.
장애는 현재 PSW를 이전 PSW처럼 저장하는 것, 장애의 원인을 식별하는 정보를 저장하는 것, 새로운 PSW를 인출하는 것에 장애의 원인이 내재되어 있다. 처리는 새로운 PSW에 의하여 특정될 때 재개된다. 장애에 저장되어 있는 이전 PSW는 일반적으로 장애가 일어나지 않았다면 다음에 실행되었을 명령어의 주소를 담고 있으므로, 이에 의하여 장애 받은 프로그램이 재개된다. 프로그램 및 슈퍼바이저 호출에 있어서도, 저장된 정보는 마지막에 실행된 명령어의 길이를 식별하는 코드를 보유하고 있어, 장애의 원인에 대응하는 프로그램이 실행되도록 한다. 정상 대응이 장애를 유발하는 명령어의 재실행이 되는 일부 프로그램 조건에 있어서, 명령어 주소는 마지막 실행된 명령어 자체를 가리킨다.
재시작을 제외하고 장애는 CPU가 작동 중이 때에만 일어날 수 있다. 재시작 장애는 CPU가 정지 상태 또는 작동 상태 중 어느 상태이더라도 발생 가능하다.
어떤 액세스 예외도 그 예외와 관련된 명령어의 실행의 일부분으로 인식된다. 액세스 예외는 CPU가 불가능한 위치로부터의 프리패치, 또는 다른 액세스 예외 조건을 검출을 시도할 때 인식되지 않으나, 분기 명령어 또는 장애는 명령어 순서를 바꾸므로 명령어가 실행되지 않는다. 모든 명령어가 명령어 인출에 인한 액세스 예외를 유발할 수 있다. 또한, 명령어 예외와 결합된 액세스 예외는 저장 매체의 피연산자로의 액세스에 의하여 발생할 수 있다. 명령어 인출에 의한 액세스 예외는 첫 번째 명령어 반단어를 인출할 때 예외를 직면하는 경우 인식된다. 명령어의 첫 번째 반단어가 액세스 예외를 갖지 않을 때, 액세스 예외는 명령어의 처음 2 비트에 의하여 특정된 명령어 길이에 따른 추가적인 반단어에 의하여 인식된다; 그러나 명령어의 두 번째 또는 세 번째 반단어에 액세스하지 않은 채로 연산이 실행가능한 경우, 액세스 예외가 사용하지 않은 부분에 대한 것인지는 알 수 없다. 명령어 인출 시의 액세스 예외의 인지는 모든 명령어에 공통된 것이기 때문에, 개개의 명령어 정의로도 이는 해결되지 않는다.
개개의 명령어 설명에 명시되어 있는 것을 제외하고, 다음의 규칙은 피연산자 위치로의 액세스에 관한 예외들에 적용된다. 인출 유형 피연산자에 있어서, 연산을 종료하기 위하여 요구되는 피연산자의 부분만이 액세스 예외의 원인이 된다. 연산을 종료하기 위하여 필요한 인출 유형 피연산자의 부분이 아닌 부분이 액세스 예외를 가리키고 있는지는 예측할 수 없다.
저장 유형 피연산자에서, 액세스 예외는 연산이 피연산자의 액세스할 수 없는 부분을 사용하지 않고 완성될 수 있더라고, 전체 피연산자에 대하여 인식된다. 저장 유형 피연산자의 값이 예측 불가능하다고 인정된 경우, 액세스 예외가 내재되어 있는지는 판단할 수 없다. 피연산자 위치로의 액세스가 액세스 예외를 유발하는 것으로 인식할 수 있을 때마다, “access”라는 단어가 명령어의 설명의 프로그램 예외의 리스트에 포함된다. 이 엔트리는 피연산자가 인식되는 예외를 유발할 수 있다는 것을 나타내며, 예외가 인출 액세스 또는 피연산자 위치로의 저장 액세스 중 어디서 인식되었는지도 나타낸다. 액세스 예외는 각각의 특정 명령어에 의하여 정의된 피연산자의 부분에 대해서만 인식된다.
연산 예외는 CPU가 불가능한 연산 코드로 명령어를 실행하려고 할 때 인식된다. 연산 코드가 할당되지 않거나, 또한 그 연산 코드의 명령어가 CPU에 인스톨 되지 않는 경우가 이에 해당된다. 연산은 금지된다. 명령어 길이 코드는 1, 2, 3이다. 명령어 예외는 프로그램 장애 코드 0001 hex(또는 병행 PER 사건이 인식되면 0081 hex)에 의하여 인식된다.
일부 모델은 여기에 적혀있지 않은 기능을 제공할 수도 있다. 따라서, 여기에 적혀있지 않은 연산 코드에 의해서는 연산 예외가 인식되지 않는다. 나아가, 이러한 명령어는 연산 모드의 활성화를 유발하거나 기계를 변형하여 일련의 명령어의 실행에 영향을 줄 수 있다. 이러한 연산을 막기 위하여, 여기에 적혀있지 않은 연산코드의 명령어는 연산 코드에 대한 특별한 기능을 실행하고자 하는 경우가 아니면 실행하지 않을 것을 권장한다.
구체적인 예외는 다음 중 하나에 해당되는 경우 인식된다:
1. 1이 PSW의 부호화 되지 않은 비트 포지션(즉, 비트 포지션 0, 2-4, 24-30 또는 33-63 중 하나)으로 전달된다. 이는 이른 PSW 사양 예외로 취급된다.
2. 1이 PSW의 비트 포지션 12로 전달된다. 이는 이른 PSW 사양 예외로 취급된다.
3. PSW가 인식되지 않는 경우는 다음과 같다: a. PSW의 비트 31이 1이고 비트 32는 0. b. PSW의 비트 31 및 32가 0이고, 24 비트 주소 모드를 가리키며, PSW의 비트 64-103은 모두 0이 아님. c. PSW의 비트 31은 0이고, 비트 32는 1이며, 31 비트 주소 모드를 가리키고, PSW의 비트 64-96은 모두 0이 아님. 이는 이른 PSW 사양 예외로 취급된다.
4. PSW는 홀수인 명령어 주소를 보유한다.
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, COMPUTE 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 피연산자길이는 지정된 함수의 데이터 블록 크기의 배수가 아니다. 이 Specification 예외 조건은 질의 기능을 제공하지 않는다.
13. COMPARE AND FORM CODEWORD의 실행이 시도되며, 일반 레지스터 1, 2, 3은 처음에는 짝수 값을 보유하지 않는다.
32. COMPARE AND SWAP AND STORE의 실행 및 다음 조건 중에 하나가 시도된다:
- 함수 코드는 부호화 되지 않은 값을 지정한다.
- 저장 특성은 부호화 되지 않은 값을 지정한다.
- 함수 코드는 0이고, 첫 번째 피연산자는 단어 경계에서 지정되지 않는다.
- 함수 코드는 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은 0이 아니다.
37. CONVERT HFP TO BFP, CONVERT TO FIXED (BFP or HFP), 또는 LOAD FP INTEGER (BFP)의 실행이 시도되고, M3 필드는 유효한 변경자로 정의되지 않는다.
38. DIVIDE TO INTEGER의 실행이 시도되고, M4 필드는 유효한 변경자로 지정되지 않는다.
39. EXECUTE의 실행이 시도되고, 타깃 주소는 홀수다.
40. EXTRACT STACKED STATE의 실행이 시도되고 일반 레지스터 R2의 비트 포지션 56-63의 코드는 ASN-and-LX 재사용 기능이 인스톨 되지 않은 경우 4 보다 크며, 이 기능이 인스톨된 경우에는 5 보다 크다.
41. FIND LEFTMOST ONE의 실행이 시도되며, R1 필드는 홀수로 번호 매겨진 레지스터를 지정한다.
42. INVALIDATE DAT TABLE ENTRY의 실행이 시도되며, 일반 레지스터 R2의 비트 44-51은 적어도 하나는 0이 아닌 값을 갖는다.
43. LOAD FPC의 실행이 시도되며, FPC 레지스터에서 지원되지 않는 비트에 상응하는 두 번째 피연산자의 하나 이상의 비트는 1이다.
44. LOAD PAGE-TABLE-ENTRY ADDRESS의 실행이 시도되며, 명령어의 M4 필드는 이진 값 0000-0100 이외의 값을 갖는다.
45. LOAD PSW의 실행이 시도되고, 제 2 피연산자주소의 2중단어는 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 LOCKED OPERATION의 실행이 시도되고 다음 중 하나는 진실이다:
-일반 레지스터 0의 비트 55, 즉 T 비트는 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의 실행이 시도되고, 다음 중 하나는 진실이다:
-두 번째 피연산자에서 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이다.
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 TREE가 시도되고, 일반 레지스터 4 및 5의 최초 콘텐트는 24 비트 또는 31 비트 주소 모드에서 8의 배수가 아니거나, 64 비트 주소 모드에서 16의 배수가 아니다. 이전 PSW에 의하여 식별된 명령어의 실행은 저지된다. 그러나, 이른 PSW 특성 예외(이유 1-3)에 있어서, 새로운 PSW를 도입하는 연산은 완료되나, 완료 즉시 장애가 나타난다. 바람직하게는 명령어 길이 코드(ILC)가 1, 2, 또는 3이며 이는 예외를 일으키는 명령어의 길이를 나타낸다. 명령어 주소가 홀수인 경우(이유 4), ILC가 1, 2, 3 중 어느 것인지 예측할 수 없다. 이른 PSW 특성 예외(이유 1-3)에 의하여 예외가 인식된 경우와 예외가 LOAD PSW, LOAD PSW EXTENDED, PROGRAM RETURN, 또는 장애에 의하여 유발된 경우에는 ILC가 0이다. 예외가 SET ADDRESSING MODE (SAM24, SAM31)에 의하여 유발된 경우에는 ILC가 1이나, SET ADDRESSING MODE가 EXECUTE의 타깃이었다면 2이다. SET SYSTEM MASK 또는 STORE THEN OR SYSTEM MASK에 의하여 예외가 유발된 경우에는 ILC가 2이다.
프로그램 장애는 주로 프로그램을 실행하는 도중에 발생하는 예외 또는 이벤트에 의하여 보고된다. 프로그램 장애에 의하여 이전 PSW가 실주소 336-351에 저장되고, 새로운 PSW가 실주소 464-479로부터 인출된다. 장애의 원인은 장애 코드에 의하여 식별된다. 장애 코드는 실주소 142-143에 저장되고, 명령어 길이 코드는 실주소 141의 바이트의 비트 포지션 5 및 6에 저장되고 이 때 다른 비트는 모두 0이 되며, 실주소 140에도 0이 저장된다. 장애의 원인을 식별하는 추가적인 정보는 실주소 144-183에 저장된다. PER-3 기능이 인스톨되면, 프로그램 장애 액션 중 일부분으로 브레이킹-이벤트-주소 레지스터의 콘텐트가 저장 매체 실주소 272-279에 저장된다. PER 이벤트와 암호 디코드 연산 예외를 제외하고, 장애를 유발하는 조건은 장애 코드의 가장 오른쪽 7개의 비트 포지션에 저장된 코드화된 값에 의하여 인식된다. 한 번에 하나의 조건만이 인식 가능하다. 장애 코드의 비트 0-7은 0으로 설정된다. PER 이벤트는 장애 코드의 비트 8을 0으로 설정함으로써 인식된다. 이것이 유일한 조건인 경우, 비트 0-7 및 9-15도 모두 0으로 설정된다. PER 이벤트가 다른 프로그램 장애 조건과 함께 인식될 때 비트 8은 1이 되며, 비트 0-7 및 9-15는 다른 조건에 따라 설정된다. 암호 디코드 연산 예외와 PER 이벤트가 함께 인식될 때 암호 디코드 연산 제외는 장애 코드 0119 hex 또는 0199 hex의 장애 코드에 의하여 인식된다.
상응하는 마스크 비트가 존재할 때, 프로그램 장애는 마스크 비트가 1인 경우만 발생한다. PSW의 프로그램 마스크가 예외 중 4개를 제어하고, FPC 레지스터의 IEEE 마스크는 IEEE 예외를 제어하며, 제어 레지스터 0의 비트 33은 SET SYSTEM MASK가 특수-연산 예외를 일으키는지 여부를 제어하며, 마스크의 계층 구성은 PER 이벤트에 따른 장애를 제어한다. 마스크 비트를 0으로 조정하면, 조건이 무시되고, 보류 중인 조건이 사라지게 된다.
프로그램 장애의 새로운 PSW가 PSW 포맷 에러를 갖거나, 명령어 인출 프로세스로 인식되는 예외를 유발하는 경우, 프로그램 장애의 문자열이 발생한다.
프로그램 예외로 취급되는 조건 중 일부는 채널 시스템에 의해서도 인식되며, 이 경우 예외는 서브채널-상태어 또는 확장-상태어로 지칭된다.
데이터 예외가 프로그램 장애의 원인인 경우, 데이터 예외 코드(Data Exception Code: DXC)는 147에 저장되고 144-146에는 0이 저장된다. DXC는 다양한 유형의 데이터 예외 조건들을 구분한다. AFP-레지스터(추가적인 부동 소수점 레지스터)는 비트를 제어하고, 제어 레지스터 0의 비트 45는 1이며, DXC는 부동 소수점 제어(Floating-Point-Control: FPC) 레지스터의 DXC 필드에 위치한다. FPC 레지스터의 DXC 필드는 다른 프로그램 예외가 보고되는 경우에는 바뀌지 않는다. DXC는 데이터 예외의 구체적인 원인을 가리키는 8 비트 코드다.
DXC 2 및 3은 상호 배타적이며, 다른 어떤 DXC 보다 우선순위가 높다. 따라서 예컨대 DXC 2(BFP 명령어)는 IEEE 예외에 우선하며, IEEE 예외 또는 모의 IEEE 예외보다 DXC 3(DFP 명령어)가 우선한다. 다른 예로는, DXC 3(DFP 명령어) 및 DXC 1(AFP 명령어)에 모두 해당되는 조건이 존재하면, DXC 3이 보고된다. 특성 예외 및 AFP 레지스터 데이터 예외 모두 적용 가능할 때에는 어떤 것이 보고될지 예측할 수 없다.
주소 예외는 CPU가 구조상 불가능한 메인 저장 매체 위치를 참조하려고 할 때 인식된다. 메인 저장 매체 주소가 구조상 불가능하다고 판단되는 것은 주소가 인스톨되지 않은 경우, 저장 매체 유닛이 구조 내에 있지 않은 경우, 또는 저장 매체의 전원이 꺼져 있는 경우이다. 구조상 불가능한 저장 매체 위치를 지정하는 주소는 무효한 것으로 취급된다. 명령어의 주소가 무효인 경우 연산은 저지된다. 이와 유사하게 EXECUTE의 타깃 명령어의 주소가 무효인 경우에도 연산이 저지된다. 또한, 테이블 또는 테이블 엔트리에 액세스할 때 주소 예외가 발생한 경우에도 연산 유닛은 저지된다. 규칙이 적용되는 테이블 및 테이블 엔트리는 디스패치 가능 유닛 제어 테이블, 프라이머리 ASN 제 2 테이블 엔트리, 및 액세스 리스트의 엔트리인 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블, 세그먼트 테이블, 페이지 테이블, 연결 테이블, 연결 제 1 테이블, 연결 제 2 테이블, 엔트리 테이블, ASN 제 1 테이블, ASN 제 2 테이블, 권한 테이블, 연결 스택 및 추적 스택이다. 주소 예외는 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블, 세그먼트 테이블, 페이지 테이블의 참조 번호에 해당되는 주소를 만난 경우 저지하는 것이며, 이 때 참조 번호는 동적 주소 변환에서의 내재된 참조 번호와 LOAD PAGE-TA B LE-ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS, 및 TEST PROTECTION의 실행에 의한 참조 번호를 모두 포함하는 의미다. 이와 유사하게, 디스패치 가능 유닛 제어 테이블, 프라이머리 ASN 제 2 테이블 엔트리, 액세스 리스트, ASN 제 2 테이블 및 권한 테이블로의 액세스에 의한 주소 예외는 이들이 내재된 또는 LOAD PAGE-TABLE-ENTRY ADDRESS, LOAD REAL ADDRESS. STORE REAL ADDRESS, TEST ACCESS, 또는 TEST PROTECTION의 일부에 의한 액세스 레지트터 변환이 발생하는 경우 저지된다. 실행이 저지된 일부 특수한 명령어를 제외하고, 변환 가능하나 불가능한 주소로 지정된 피연산자 주소에 의하여 연산은 종료된다. 종료 시 결과 필드만 변경된다. 이 때, “결과 필드”라는 용어는 제공되어 명령어에 의하여 변경되도록 지정된 조건 코드, 레지스터 및 모든 저장 매체 위치를 포함하는 것이다.
EXTRACT CACHE ATTEUBUTE(캐시 속성 추출) 명령어:
도 8은, 도 6의 EXTRACT CACHE ATTEUBUTE 명령어가 인출(801)되어 실행되고, 저장 매체 서브시스템(303)의 구체적 특성(804)에 해당하는 정보(805)가 제 1 피연산자 위치(806) 저장되는 것을 보여준다. 명령어는 8 비트 연산 코드 'EB', 8 비트 연산 코드 확장 '4C', 레지스터 필드인 R1, R3, B2 및 부호화된 변위 필드 DH2, DL2를 포함한다. 제 1 피연산자는 명령어의 R1 레지스터 필드에 의하여 특정된 레지스터이며 64 비트이다.
제 1 피연산자 주소는 주소 데이터로 사용되지 않으며, 도 7의 64 비트 어드레스의 가장 오른쪽의 24 비트는 어떤 특성이 R1으로 특정되는 일반 레지스터로 복귀되는지를 정하는 코드 804로 취급된다. 제 2 피연산자의 주소는 명령어의 부호화된 변위 필드(DH2, DL2)의 확장 값을 명령어의 B2 필드가 0이 아닌 경우 B2 필드로 특정되는 레지스터의 값과 산술적으로 합하여(802) 산출된다.(B2 필드의 값이 1이면 부호화된 변위 필드(DH2, DL2)는 제 2 피연산자 주소처럼 사용된다.)
코드는 아래와 같이 정의된다:
속성 지시(Attribute Indication: AI): 도 7의 제 2 피연산자 주소의 비트 포지션 56-59는 아래에 기술된 바와 같이 추출될 캐시 속성을 나타내는 4 비트의 부호 없는 정수를 포함한다:
0 위상 요약을 추출
1 캐시의 라인 크기를 바이트 단위로 추출
2 캐시의 전체 크기를 바이트 단위로 추출
3 캐시의 집합 연관(set-associativity) 레벨을 추출
4-15 예비
레벨 지시(Level Indication: LI): 도 7의 제 2 피연산자 주소의 비트 포지션 60-62는 캐시 속성을 추출할 캐시의 레벨을 나타내는 3 비트의 부호 없는 정수를 포함하며, 이 때 캐시 값과 레벨은 0은 제 1 레벨, 1은 제 2 레벨 등 이런 식으로 대응된다. 캐시 레벨이 모델에서 구현되지 않은 경우, 이에 상응하는 레벨 지시가 예비로 남겨진다.
유형 지시(Type Indication: TI): 도 7의 제 2 피연산자 주소의 비트 63은 캐시 속성을 추출할 캐시의 유형을 나타내며, 이 때 0은 이 캐시가 데이터 캐시임을, 1은 명령어 캐시임을 의미한다. 캐시 레벨이 데이터 캐시와 명령어 캐시가 융합된 유형인 경우에는, 유형 지시와 무관하게 동일한 결과가 도출된다.
속성 지시가 0인 경우, 레벨 및 유형 지시는 무시된다.
제 2 피연산자 주소의 비트 0-39는 무시된다. 제 2 피연산자 주소의 비트 40-55는 예비로 남게되며 0의 값을 지닌다. 제 2 피연산자 주소의 예비로 남겨진 비트 포지션이 1의 값을 갖게 되거나, 예비로 남겨진 속성 지시 또는 레벨 지시가 지정되면, 일반 레지스터 R1의 비트 0-63은 모두 1로 설정된다.
일반 레지스터 R3의 콘텐트는 무시되나, R3 필드는 레지스터 0으로 특정되어야 하며, 그렇지 않다면 프로그램이 장래에 양립 불가능한 실행을 하도록 된다.
속성 지시가 0인 경우, 캐시의 각 레벨의 요약은 일반 레지스터 R1으로 복귀된다. 각 요약 필드는 8비트이며 이 때 레지스터의 비트 0-7에는 제 1 레벨 캐시의 요약이, 비트 8-15는 제 2 레벨 캐시의 요약이 저장되는 식으로 진행된다. 8 비트 요약 필드의 콘텐트는 다음과 같다.
요약 필드
비트 의미
0-3 예비로 남겨짐, 0이 저장됨.
4-5 아래와 같은 캐시 스코프
(00) 이 레벨에는 캐시가 존재하지 않음.
(01) 캐시는 CPU에게 공개되지 않음.
(10) 캐시는 다수의 CPU에게 공유됨.
(11) 예비로 남겨짐.
6-7 비트 포지션 4-5가 0이 아닌 값을 지닐 때의 비트 포지션 6-7은 다음과 같은 캐시 유형을 갖는다:
(00) 이 레벨에서 명령어와 데이터 캐시가 별도로 존재함.
(01) 이 레벨에 명령어 캐시만이 존재함.
(10) 이 레벨에 데이터 캐시만이 존재함.
(11) 이 레벨에 명령어 캐시와 데이터 캐시가 통합된 캐시가 존재함.
비트 포지션 4-5가 0을 포함할 때, 비트 포지션 6-7도 0을 포함한다.
프로그램 예외:
- 실행(일반 명령어 확장 기능이 인스톨되지 않은 경우)
다른 코드는 모두 예비적으로 남겨둔다. 예비적으로 남겨둔 코드가 특정되면, 일반 레지스터 R1의 비트 0-63이 모두 1로 설정된다. 일반 레지스터 R3의 콘텐트가 무시되나, R3 필드는 레지스터 0에 의하여 특정되어야 하고, 그렇지 않다면 프로그램이 장래에 양립 불가능한 실행을 하도록 된다.
캐시 라인 크기를 알면, PREFETCH DATA 및 PREFETCH DATA RELATIVE LONG 명령어의 배치를 결정할 때 유용하다. 모델에 따라, 제 1 레벨 캐시가 데이터 및 명령어를 모두 갖는 통합된 캐시로 구현되기도 한다(명령어 캐시와 데이터 캐시를 별도로 갖는 분할된 캐시와는 상반된 유형임). 모델이 데이터 캐시를 제공하지 않으며 동시에 함수 코드가 0인 경우나, 모델이 명령어 캐시를 제공하지 않으며 동시에 함수 코드가 1인 경우에는 제 1 피연산자 위치에 0의 값이 저장된다.
상술한 내용은 컴퓨터 시스템의 전형적인 구조 및 이에 관한 어휘를 이해하는 데 유용할 것이다. 본 발명은 z/Architecture 또는 여기 기술한 내용에 한정되지 않는다. 본 발명은 다른 컴퓨터 제조사에 의한 이와 상이한 컴퓨터 구조에도 상술한 내용을 바탕으로 유용하게 적용될 수 있다.

Claims (7)

  1. 피연산자 위치를 식별하는 피연산자 식별자(operand identifier) 및 연산 코드(opcode)를 포함하고, 컴퓨터 구조를 위하여 정의된 캐시 장치 명령어를 처리 시스템의 프로세서에 의하여 인출하는 단계와,
    상기 캐시 장치 명령어를 실행하는 단계를 포함하되,
    상기 캐시 장치 명령어를 실행하는 단계는,
    캐시 레벨 식별자에 기초하여 타깃 캐시를 결정하는 단계와,
    캐시 속성 식별자에 기초하여, 추출될 캐시 속성을 결정하는 단계와,
    상기 타깃 캐시로부터 상기 결정된 캐시 속성을 추출하는 단계와,
    상기 추출된 캐시 속성을 상기 식별된 피연산자 위치에 저장하는 단계를 포함하는
    컴퓨터 동작 방법.
  2. 제 1 항에 있어서,
    상기 피연산자 식별자는 제 1 레지스터를 식별하는 제 1 레지스터 필드로 구성되고,
    상기 캐시 속성을 결정하는 단계는 상기 캐시 속성을 결정하기 위하여 상기 명령어의 변위 필드를 상기 명령어의 제 2 필드와 연관된 값에 대수적으로 더하는 단계를 포함하는 컴퓨터 동작 방법.
  3. 제 1 항에 있어서,
    상기 추출될 캐시 속성은, 하나 이상의 캐시의 캐시 토폴로지 요약, 상기 타깃 캐시의 라인 크기, 상기 타깃 캐시의 전체 크기, 또는 상기 타깃 캐시의 집합 연관(set-associativity) 레벨 중 하나를 포함하는 컴퓨터 동작 방법.
  4. 제 3 항에 있어서,
    상기 추출된 캐시 토폴로지 요약은 하나 이상의 요약을 포함하며, 각 요약은 상기 캐시 레벨 식별자에 의하여 식별된 레벨에서의 캐시를 위한 것이고,
    상응하는 캐시 레벨에서의 캐시를 위한 요약은
    캐시가 존재하는지의 여부,
    캐시가 상기 명령어를 실행하는 상기 프로세서에 전용되는 것인지의 여부,
    캐시가 상기 처리 시스템의 다른 프로세서에 의해 공유될 수 있는지의 여부,
    상기 캐시가 별도의 명령어 캐시와 별도의 데이터 캐시로 구성되는지의 여부,
    상기 캐시가 오직 명령어 캐시인지의 여부,
    상기 캐시가 오직 데이터 캐시인지의 여부,
    상기 캐시가 통합된 명령 및 데이터 캐시인지의 여부 중 어느 하나로 구성되는
    컴퓨터 동작 방법.
  5. 제 1 항에 있어서,
    상기 컴퓨터 구조를 위하여 정의된 상기 캐시 장치 명령어는 다른 컴퓨터 구조의 중앙 처리 유닛에 의하여 인출되고 실행되며,
    상기 방법은 상기 캐시 장치 명령어의 동작을 에뮬레이트하기 위한 사전 설정된 소프트웨어 루틴을 식별하기 위하여 상기 캐시 장치 명령어를 해석하는 단계를 더 포함하고,
    상기 캐시 장치 명령어를 실행하는 단계는 상기 캐시 장치 명령어를 실행하기 위한 상기 방법의 단계들을 수행하기 위한 상기 사전 설정된 소프트웨어 루틴을 실행하는 단계를 더 포함하는
    컴퓨터 동작 방법.
  6. 처리 회로에 의하여 판독 가능하고 청구항 제 1 항 내지 제 5 항 중 어느 한 항의 방법을 수행하기 위하여 상기 처리 회로에 의하여 실행되는 명령어를 저장하는
    컴퓨터 판독가능 저장 매체.
  7. 메모리,
    상기 메모리로부터 명령어를 인출하기 위한 명령어 인출 요소, 인출한 명령어를 실행하기 위한 하나 이상의 실행 요소를 포함하며, 상기 메모리와 통신하는 프로세서를 포함하는 컴퓨터 시스템으로,
    상기 컴퓨터 시스템은 청구항 제 1 항 내지 제 5 항 중 어느 한 항의 방법을 수행하도록 구성된 컴퓨터 시스템.
KR1020107014473A 2008-01-11 2009-01-07 캐시 속성 추출 기능 및 이를 위한 명령어 KR101231562B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/972,675 2008-01-11
US11/972,675 US7870339B2 (en) 2008-01-11 2008-01-11 Extract cache attribute facility and instruction therefore
PCT/EP2009/050107 WO2009087160A1 (en) 2008-01-11 2009-01-07 Extract cache attribute facility and instruction therefore

Publications (2)

Publication Number Publication Date
KR20100106444A KR20100106444A (ko) 2010-10-01
KR101231562B1 true KR101231562B1 (ko) 2013-02-12

Family

ID=40513439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107014473A KR101231562B1 (ko) 2008-01-11 2009-01-07 캐시 속성 추출 기능 및 이를 위한 명령어

Country Status (16)

Country Link
US (3) US7870339B2 (ko)
EP (1) EP2229620B1 (ko)
JP (1) JP5052678B2 (ko)
KR (1) KR101231562B1 (ko)
CN (1) CN101911013B (ko)
AT (1) ATE516538T1 (ko)
BR (1) BRPI0906424B1 (ko)
CA (1) CA2701093C (ko)
CY (1) CY1112472T1 (ko)
DK (1) DK2229620T3 (ko)
ES (1) ES2368682T3 (ko)
IL (1) IL206848A (ko)
PL (1) PL2229620T3 (ko)
PT (1) PT2229620E (ko)
SI (1) SI2229620T1 (ko)
WO (1) WO2009087160A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280480B2 (en) 2008-01-11 2016-03-08 International Business Machines Corporation Extract target cache attribute facility and instruction therefor
US8151076B2 (en) * 2008-04-04 2012-04-03 Cisco Technology, Inc. Mapping memory segments in a translation lookaside buffer
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US10620957B2 (en) 2015-10-22 2020-04-14 Texas Instruments Incorporated Method for forming constant extensions in the same execute packet in a VLIW processor
US10713048B2 (en) * 2017-01-19 2020-07-14 International Business Machines Corporation Conditional branch to an indirectly specified location
CN109408429B (zh) * 2018-11-01 2020-10-16 苏州浪潮智能科技有限公司 一种低速接口的缓存方法与装置
US20220180467A1 (en) 2019-03-15 2022-06-09 Intel Corporation Systems and methods for updating memory side caches in a multi-gpu configuration
BR112021016106A2 (pt) 2019-03-15 2021-11-09 Intel Corp Processador gráfico de propósito geral, método e sistema de processamento de dados
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
CN117093510B (zh) * 2023-05-30 2024-04-09 中国人民解放军军事科学院国防科技创新研究院 大小端通用的缓存行高效索引方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035392A (en) * 1998-02-20 2000-03-07 International Business Machines Corporation Computer with optimizing hardware for conditional hedge fetching into cache storage
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US20050050281A1 (en) 2002-04-05 2005-03-03 Snyder Michael D. System and method for cache external writing and write shadowing

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3825895A (en) 1973-05-14 1974-07-23 Amdahl Corp Operand comparator
US3982229A (en) 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
US4713750A (en) 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
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
US4578750A (en) 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
JPS6382513A (ja) 1986-09-26 1988-04-13 Toshiba Corp バレルシフタ
ATE109910T1 (de) * 1988-01-20 1994-08-15 Advanced Micro Devices Inc Organisation eines integrierten cachespeichers zur flexiblen anwendung zur unterstützung von multiprozessor-operationen.
JPH05158795A (ja) * 1991-12-06 1993-06-25 Nec Corp キャッシュメモリシステム
US5859994A (en) 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
EP0730220A3 (en) 1995-03-03 1997-01-08 Hal Computer Systems Inc Method and device for quickly executing branch instructions
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6223256B1 (en) 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6763327B1 (en) 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6738895B1 (en) 2000-08-31 2004-05-18 Micron Technology, Inc. Method and system for substantially registerless processing
US7165101B2 (en) 2001-12-03 2007-01-16 Sun Microsystems, Inc. Transparent optimization of network traffic in distributed systems
US7493480B2 (en) 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US20060212439A1 (en) 2005-03-21 2006-09-21 Microsoft Corporation System and method of efficient data backup in a networking environment
US7529768B2 (en) * 2005-12-08 2009-05-05 International Business Machines Corporation Determining which objects to place in a container based on relationships of the objects
US8335810B2 (en) 2006-01-31 2012-12-18 Qualcomm Incorporated Register-based shifts for a unidirectional rotator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035392A (en) * 1998-02-20 2000-03-07 International Business Machines Corporation Computer with optimizing hardware for conditional hedge fetching into cache storage
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US20050050281A1 (en) 2002-04-05 2005-03-03 Snyder Michael D. System and method for cache external writing and write shadowing

Also Published As

Publication number Publication date
EP2229620A1 (en) 2010-09-22
CA2701093A1 (en) 2009-07-16
US20120137073A1 (en) 2012-05-31
US8131934B2 (en) 2012-03-06
PT2229620E (pt) 2011-10-06
KR20100106444A (ko) 2010-10-01
US20090182942A1 (en) 2009-07-16
DK2229620T3 (da) 2011-09-05
EP2229620B1 (en) 2011-07-13
CY1112472T1 (el) 2015-12-09
ATE516538T1 (de) 2011-07-15
IL206848A0 (en) 2010-12-30
CA2701093C (en) 2016-10-11
US8516195B2 (en) 2013-08-20
BRPI0906424A2 (pt) 2016-10-11
IL206848A (en) 2014-03-31
CN101911013B (zh) 2013-07-31
US20110131382A1 (en) 2011-06-02
ES2368682T3 (es) 2011-11-21
JP5052678B2 (ja) 2012-10-17
BRPI0906424B1 (pt) 2020-10-20
JP2011509475A (ja) 2011-03-24
SI2229620T1 (sl) 2011-10-28
CN101911013A (zh) 2010-12-08
PL2229620T3 (pl) 2011-12-30
US7870339B2 (en) 2011-01-11
WO2009087160A1 (en) 2009-07-16

Similar Documents

Publication Publication Date Title
KR101231562B1 (ko) 캐시 속성 추출 기능 및 이를 위한 명령어
JP5357181B2 (ja) コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム
JP5039905B2 (ja) 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令
JP5657074B2 (ja) 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ
KR101285072B1 (ko) 실행 관련 명령어
JP2011509475A5 (ko)
US20090182988A1 (en) Compare Relative Long Facility and Instructions Therefore
US9996472B2 (en) Extract target cache attribute facility and instruction therefor
US20090182985A1 (en) Move Facility and Instructions Therefore
KR20100106436A (ko) 선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어

Legal Events

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

Payment date: 20160128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170125

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 8