z/아키텍처
설계 기업 및 설계자 | IBM |
---|---|
비트 | 64비트 |
발표 | 2000년 |
버전 | ARCHLVL 2 및 ARCHLVL 3 (2008) |
구조 | CISC |
유형 | 레지스터-레지스터 레지스터–메모리 메모리-메모리 |
인코딩 | 가변 (2, 4, 6바이트 길이) |
분기 | 상태 코드, 색인, 계수 |
엔디언 | 빅(Big) 엔디언 |
이전 | ESA/390 |
레지스터 | |
Access 16× 32, breaking-event-address register (BEAR) 64-bit, Control 16×64, Floating-Point Control 32-bit, Prefix 64-bit, PSW 128-bit | |
범용 목적 | 16× 64비트 |
부동소수점 | 16× 64비트 (16진수 및 IEEE 이진수; IEEE 10진수 IBM System z9부터) |
IBM 메인프레임의 역사 (1952년~현재) | |
---|---|
출시 제품 | 구조 |
700/7000 시리즈 | 다양함 |
시스템/360 | 시스템/360 |
시스템/370 | 시스템/370 |
S/370-XA | |
ESA/370 | |
시스템/390 | ESA/390 (ARCHLVL 1) |
z시리즈 900, 800, 990, 890 | z/아키텍처 (ARCHLVL 2) |
시스템 z9 | |
시스템 z10 | z/아키텍처 ARCHLVL 3 |
z엔터프라이즈 시스템 | |
z/아키텍처(z/Architecture)는 초기에는 짧게 ESA 모달 확장 (ESAME)이라 불렸으며, IBM의 64비트 복잡 명령어 집합 컴퓨터 (CISC) 명령어 집합으로, 메인프레임에서 구현된다. IBM은 2000년 후반에 최초의 z/아키텍처 기반 시스템인 z900을 출시했다.[1] 이후의 z/아키텍처 시스템으로는 IBM z800, z990, z890, 시스템 z9, 시스템 z10, zEnterprise 196, zEnterprise 114, zEC12, zBC12, z13, z14, z15, z16, z17 등이 있다.
z/아키텍처는 이전 32비트 데이터/31비트 주소 지정 아키텍처인 ESA/390 및 32비트 데이터/24비트 주소 지정 IBM 시스템/360까지의 선행 아키텍처와 하위 호환성을 유지한다. IBM z13은 ESA/390 아키텍처 모드에서 운영 체제를 실행하는 것을 지원하는 마지막 z 시스템 서버이다.[2] 그러나 원래 ESA/390 아키텍처에서 실행되도록 작성된 모든 24비트 및 31비트 문제 상태 애플리케이션 프로그램은 이 변경의 영향을 받지 않는다.
특징
[편집]z/아키텍처는 ESA/390의 거의 모든 기능[a]을 포함하며, 몇 가지 새로운 기능을 추가한다. z/아키텍처의 기능[b] 중에는 다음이 있다.
- S/370-XA에서 도입된 아키텍처를 가진 채널 서브시스템
- ESA/390에서 도입된 브랜치 상대 명령어
- 트라이모달 (24/31/64비트) 주소
- ESA/370에서 도입된 16개의 32비트 접근 레지스터 (AR)
- 16개의 64비트 범용 레지스터 (GR), 이전 아키텍처에서는 32비트
- System/370에서 32비트로 도입된 16개의 64비트 제어 레지스터 (CR)
- 16개의 64비트 부동소수점 레지스터 (FPR)
- 32개의 128비트 벡터 레지스터 (VR); VR0–VR15의 비트 0–63에는 FPR0–FPR15가 포함된다
- 1개의 32비트 부동소수점 제어 (FPC) 레지스터
- 1개의 128비트 프로그램 상태 워드[c] (PSW), 64비트 명령어 주소 포함
- 8KiB 접두사 스토리지 영역 (PSA)
- 암호화 기능
- ESA/390에서 추가된 IEEE 이진 부동소수점 명령어
- IEEE 10진 부동소수점 명령어
각 기능이 언제 도입되었는지에 대한 정보는 작동 원칙을 참조한다.[3][4]
벡터 기능
[편집]z13은 z/아키텍처용 벡터 기능[d]을 도입했다. 이는 각각 128비트 너비의 32개 벡터 레지스터를 추가한다. 기존의 16개 부동소수점 레지스터는 새로운 벡터 레지스터 위에 오버레이된다. 새로운 아키텍처는 정수, 부동소수점, 문자열 데이터 유형을 포함하여 벡터 레지스터의 데이터를 처리하기 위한 150개 이상의 새로운 명령어를 추가한다. z13 구현에는 벡터 데이터를 처리하기 위한 두 개의 독립적인 SIMD 장치가 포함된다.[5]
신경망 처리 보조 기능
[편집]z16은 신경망 처리 보조 기능을 도입[6][7]하여 모델 종속 데이터 유형에 대한 작업을 수행하는 여러 명령어를 도입한다. z16의 경우 이는 16비트 NNP-데이터 유형-1 형식이다.
새로운 명령어는 AI 및 신경망 애플리케이션에 유용한 텐서 연산을 포함한다.
레지스터
[편집]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
각 프로세서에는 다음 레지스터가 있다.
- 접근 레지스터
- 브레이킹 이벤트 주소 레지스터 (BEAR)
- 제어 레지스터
- 부동소수점 제어 (FPC) 레지스터
- 부동소수점 레지스터
- 범용 레지스터
- 접두사 레지스터
- 프로그램 상태 워드 (PSW)
- 벡터 레지스터
접근 레지스터
[편집]각 CPU에는 16개의 32비트 접근 레지스터가 있다.[8][14] AR 모드에서 실행되는 프로그램이 레지스터 1-15를 기본 레지스터 또는 주소를 포함하는 레지스터 피연산자로 지정하면, CPU는 주소 변환 중에 관련 접근 레지스터를 사용한다.
브레이킹 이벤트 주소 레지스터 (BEAR)
[편집]64비트 BEAR[9][15]는 명령어의 순차적 실행을 중단시킨 마지막 명령어의 주소를 포함한다. 인터럽트는 실제 주소 272 (11016)의 이중 워드에 BEAR를 저장한다. 분기 실행 후 BEAR는 분기의 주소가 아닌 실행의 주소를 포함한다.
제어 레지스터
[편집]16개의 64비트 제어 레지스터는 PSW에 포함된 정보를 제외하고 CPU의 제어 및 상태를 제공한다. 이들은 이전 S/390 프로세서의 ESA/390 제어 레지스터의 진화적인 개선 사항이다. 특정 기능에 따라 어떤 필드가 의존적인지에 대한 자세한 내용은 작동 원칙을 참조한다.[16] z/아키텍처는 제어 레지스터를 32비트에서 64비트로 확장하므로, 비트 번호 지정이 ESA/390과 다르다.
CR | 비트 | 필드 |
---|---|---|
0 | 8 | 트랜잭션 실행 제어 |
0 | 9 | 트랜잭션 실행 프로그램 인터럽트 필터링 재정의 |
0 | 10 | 클록 비교기 부호 제어 |
0 | 13 | 암호화 카운터 제어 |
0 | 14 | 프로세서 활동 계측 확장 제어 |
0 | 15 | 측정 카운터 추출 권한 제어 |
0 | 30 | 경고 트랙 서브클래스 마스크 |
0 | 32 | TRACE TOD-클록 제어 |
0 | 33 | SSM 억제 |
0 | 34 | TOD-클록-동기화 제어 |
0 | 35 | 낮은 주소 보호 제어 |
0 | 36 | 추출 권한 제어 |
0 | 37 | 보조 공간 제어 |
0 | 38 | 페치 보호 재정의 제어 |
0 | 39 | 스토리지 보호 재정의 제어 |
0 | 40 | 향상된 DAT 활성화 제어 |
0 | 43 | 명령어 실행 보호 활성화 제어 |
0 | 44 | ASN 및 LX 재사용 제어 |
0 | 45 | AFP 레지스터 제어 |
0 | 46 | 벡터 활성화 제어 |
0 | 48 | 오작동 경고 서브클래스 마스크 |
0 | 48 | 오작동 경고 서브클래스 마스크 |
0 | 49 | 비상 신호 서브클래스 마스크 |
0 | 50 | 외부 호출 서브클래스 마스크 |
0 | 52 | 클록 비교기 서브클래스 마스크 |
0 | 53 | CPU 타이머 서브클래스 마스크 |
0 | 54 | 서비스 신호 서브클래스 마스크 |
0 | 56 | 1로 초기화됨 |
0 | 57 | 인터럽트 키 서브클래스 마스크 |
0 | 58 | 측정 경고 서브클래스 마스크 |
0 | 59 | 타이밍 경고 서브클래스 마스크 |
0 | 61 | 암호화 제어 |
1 | 0–51 | 기본 주소 공간 제어 요소 (ASCE) 기본 영역 테이블 원점 기본 세그먼트 테이블 원점 기본 실제 공간 토큰 원점 |
1 | 54 | 기본 서브스페이스 그룹 제어 |
1 | 55 | 기본 개인 공간 제어 |
1 | 56 | 기본 스토리지 변경 이벤트 |
1 | 57 | 기본 공간 전환 이벤트 제어 |
1 | 58 | 기본 실제 공간 제어 |
1 | 60–61 | 기본 지정 유형 제어 |
1 | 62–63 | 기본 테이블 길이 |
2 | 33–57 | 디스패치 가능 단위 제어 테이블 원점 |
2 | 59 | 보호된 스토리지 기능 활성화 제어 |
2 | 61 | 트랜잭션 진단 범위 |
2 | 62–63 | 트랜잭션 진단 제어 |
3 | 0–31 | 보조 ASN-두 번째 테이블-항목 인스턴스 번호 |
3 | 32–47 | PSW 키 마스크 |
3 | 48–63 | 보조 ASN |
4 | 0–31 | 기본 ASN-두 번째 테이블-항목 인스턴스 번호 |
4 | 32–47 | 권한 부여 인덱스 |
4 | 48–63 | 기본 ASN |
5 | 33–57 | 기본 ASN-두 번째 테이블-항목 원점 |
6 | 32–39 | I/O 인터럽트 서브클래스 마스크 |
7 | 0–51 | 보조 주소 공간 제어 요소 (ASCE) 보조 영역 테이블 원점 보조 세그먼트 테이블 원점 보조 실제 공간 토큰 원점 |
7 | 54 | 보조 서브스페이스 그룹 제어 |
7 | 55 | 보조 개인 공간 제어 |
7 | 56 | 보조 스토리지 변경 이벤트 제어 |
7 | 58 | 보조 실제 공간 제어 |
7 | 60–61 | 보조 지정 유형 제어 |
7 | 62–63 | 보조 테이블 길이 |
8 | 16–31 | 향상된 모니터 마스크 |
8 | 32–47 | 확장 권한 부여 인덱스 |
8 | 48–63 | 모니터 마스크 |
9 | 32 | 성공적인 분기 이벤트 마스크 |
9 | 33 | 명령어 페치 이벤트 마스크 |
9 | 34 | 스토리지 변경 이벤트 마스크 |
9 | 35 | 스토리지 키 변경 이벤트 마스크 |
9 | 36 | 실제 주소 이벤트 사용 저장 |
9 | 37 | 0 주소 감지 이벤트 마스크 |
9 | 38 | 트랜잭션 종료 이벤트 마스크 |
9 | 39 | 명령어 페치 무효화 이벤트 마스크 |
9 | 40 | 분기 주소 제어 |
9 | 41 | PER 이벤트 억제 제어 |
9 | 43 | 스토리지 변경 공간 제어 |
10 | 0–63 | PER 시작 주소 |
11 | 0–63 | PER 종료 주소 |
12 | 0 | 분기 추적 제어 |
12 | 1 | 모드 추적 제어 |
12 | 2–61 | 추적 항목 주소 |
12 | 62 | ASN 추적 제어 |
12 | 63 | 명시적 추적 제어 |
13 | 0–51 | 홈 주소 공간 제어 요소 (ASCE) 홈 영역 테이블 원점 홈 세그먼트 테이블 원점 홈 실제 공간 토큰 원점 |
13 | 55 | 홈 개인 공간 제어 |
13 | 56 | 홈 스토리지 변경 이벤트 |
13 | 57 | 홈 공간 전환 이벤트 제어 |
13 | 58 | 보조 실제 공간 제어 |
13 | 60–61 | 홈 지정 유형 제어 |
13 | 62–63 | 홈 테이블 길이 |
14 | 32 | 1로 설정됨 |
14 | 33 | 1로 설정됨 |
14 | 34 | 확장 저장 영역 제어 (ESA/390 호환 모드만 해당) |
14 | 35 | 채널 보고서 대기 서브클래스 마스크 |
14 | 36 | 복구 서브클래스 마스크 |
14 | 37 | 성능 저하 서브클래스 마스크 |
14 | 38 | 외부 손상 서브클래스 마스크 |
14 | 39 | 경고 서브클래스 마스크 |
14 | 42 | TOD-클록-제어-재정의 제어 |
14 | 44 | ASN 변환 제어 |
14 | 45–63 | ASN-첫 번째 테이블 원점 |
15 | 0–60 | 연결 스택 항목 주소 |
부동소수점 제어 (FPC) 레지스터
[편집]FPC 레지스터에는 인터럽트 마스크 (IM), 상태 플래그 (SF), 데이터 예외 코드 (DXC), 십진 반올림 모드 (DRM), 이진 반올림 모드 (BRM)가 포함된다. AFP 레지스터 (추가 부동소수점 레지스터) 제어 비트인 제어 레지스터 0의 비트 13이 1인 경우에만 인터럽트가 FPC 레지스터에 DXC를 저장한다. 또한 DXC의 개별 비트가 일반적으로 의미를 가지지만, 프로그램은 일반적으로 개별 비트를 조회하는 대신 8비트 정수로 처리해야 한다.
바이트 이름 | 비트 | 필드 이름 | 용도 |
---|---|---|---|
마스크 | 0 | IMi | IEEE-유효하지 않은 연산 마스크 |
마스크 | 1 | IMz | IEEE-0으로 나누기 마스크 |
마스크 | 2 | IMo | IEEE-오버플로 마스크 |
마스크 | 3 | IMu | IEEE-언더플로 마스크 |
마스크 | 4 | IMx | IEEE-부정확 마스크 |
마스크 | 5 | IMq | 양자 예외 마스크 |
플래그 | 8 | SFi | IEEE-유효하지 않은 연산 플래그 |
플래그 | 9 | SFz | IEEE-0으로 나누기 플래그 |
플래그 | 10 | SFo | IEEE-오버플로 플래그 |
플래그 | 11 | SFu | IEEE-언더플로 플래그 |
플래그 | 12 | SFx | IEEE-부정확 플래그 |
플래그 | 13 | SFq | 양자 예외 플래그 |
DXC | 16–23 | DXC | 데이터 예외 코드 |
DXC | 16 | i | IEEE-유효하지 않은 연산 |
DXC | 17 | z | IEEE-0으로 나누기 |
DXC | 18 | o | IEEE-오버플로 |
DXC | 19 | u | IEEE-언더플로 마스크 |
DXC | 20 | x | IEEE-부정확 마스크 |
DXC | 21 | y/q | 양자 예외 마스크 |
25–27 | DRM | DFP 반올림 모드 | |
29–31 | BRM | BFP 반올림 모드 |
부동소수점 레지스터
[편집]각 CPU에는 16개의 64비트 부동소수점 레지스터가 있었으며, FP0–15는 VR0–15의 비트 0–63을 차지한다.
범용 레지스터
[편집]각 CPU에는 16개의 64비트 범용 레지스터가 있으며, 이는 누산기, 기본 레지스터[e] 및 인덱스 레지스터[e]로 사용된다. "그랑데"로 지정된 명령어는 모든 64비트에서 작동하며, 확장 즉시 기능을 통해 추가된 일부 명령어는 레지스터 내의 모든 하프워드 또는 워드에서 작동한다. 다른 대부분의 명령어는 비트 0–31을 변경하거나 사용하지 않는다.
접두사 레지스터
[편집]접두사 레지스터는 실제 주소를 절대 주소로 변환하는 데 사용된다. z/아키텍처 모드에서 PSA는 2페이지 (8KiB)이다. 비트 0–32와 51–63은 항상 0이다. 실제 주소의 비트 0–50이 0이면 접두사 레지스터의 비트 0–50으로 대체된다. 실제 주소의 비트 0–50이 접두사 레지스터의 비트 0–50과 같으면 0으로 대체된다.
프로그램 상태 워드 (PSW)
[편집]PSW는 명령어 주소와 현재 CPU에서 실행 중인 프로그램의 상태를 반영하는 다른 필드를 포함한다. 프로그램의 상태는 제어 레지스터의 내용에도 영향을 받는다.
벡터 레지스터
[편집]각 CPU에는 32개의 128비트 벡터 레지스터가 있다.[17] VR0–15의 비트 0–63은 또한 FPR0–15이다. 벡터 레지스터는 16개의 8비트 필드, 8개의 16비트 필드, 4개의 32비트 필드, 2개의 64비트 필드 또는 1개의 128비트 필드를 포함할 수 있다.
메모리
[편집]IBM은 z/아키텍처의 메모리를 메인 스토리지와 확장 스토리지로 분류한다.
메인 스토리지는 8비트 바이트 (옥텟) 단위로 주소 지정되며, 더 큰 정렬된[f] 그룹화가 있다.
- 하프워드
- 2바이트
- 16비트
- 워드
- 4바이트
- 32비트
- 더블워드
- 8바이트
- 64비트
- 쿼드워드
- 16바이트
- 128비트
- 페이지
- 4096바이트
z/아키텍처는 0부터 264-1까지의 실제 및 가상 주소를 허용하지만, 엔지니어링 제약으로 인해 현재 및 계획된 모델은 훨씬 적은 용량으로 제한된다.
확장 스토리지는 4KiB 블록 단위로 주소 지정되며, 블록 번호는 0부터 232까지이다.
주소 지정
[편집]메인 스토리지 주소 유형
[편집]z/아키텍처에는 세 가지 유형의 메인 스토리지 주소가 있다.
- 가상 주소
- 애플리케이션 프로그램이 보는 주소. 주소 공간에 대한 오프셋이며 페이지 및 세그먼트 테이블을 통한 주소 변환이 적용된다.
- 실제 주소
- 주소 변환 후의 주소, 또는 변환이 꺼진 상태에서 OS 구성 요소가 보는 주소. 접두사가 적용된다.
- 절대 주소
- 접두사 레지스터를 통해 처음 두 페이지[g]에 대한 참조에 접두사 지정 후의 주소.
주소 인코딩
[편집]z/아키텍처는 ESA와 동일한 잘린 주소 지정 방식을 사용하며, 몇 가지 추가 명령어 형식이 있다. ESA와 마찬가지로 AR 모드에서는 0이 아닌 각 기본 레지스터가 주소 공간을 지정하는 기본 레지스터와 연결된다. 명령어에 따라 주소는 여러 다른 형식으로 제공될 수 있다.
- R
- 주소가 범용 레지스터에 포함됨
- 상대
- 현재 명령어로부터의 부호 있는 16비트 하프워드 오프셋
- 상대 롱
- 현재 명령어로부터의 부호 있는 32비트 하프워드 오프셋
- RS
- 기본 레지스터와 12비트 변위
- RX
- 기본 레지스터, 인덱스 레지스터 및 12비트 변위
- Y
- 기본 레지스터, 인덱스 레지스터 및 20비트 변위; 비공식적으로 "Yonder"로 알려짐
주소 지정 모드
[편집]S/370-XA 및 ESA에서 지원하는 두 가지 주소 지정 모드 외에도, z/아키텍처는 64비트 가상 주소를 가진 확장 주소 지정 모드를 제공한다. 주소 지정 모드는 PSW의 EA (비트 31) 및 BA (비트 32) 비트에 의해 제어된다. 유효한 조합은 다음과 같다.
- 00 24비트 주소 지정
- 01 31비트 주소 지정
- 11 64비트 주소 지정
변환 모드
[편집]z/아키텍처는 PSW의 비트 5, DAT 모드 비트, 비트 16–17, 주소 공간 제어 (AS) 비트에 의해 제어되는[18] 4가지 가상 변환 모드를 지원한다.
- 기본 공간 모드
- 모든 스토리지 참조는 기본 주소 공간의 변환 테이블을 사용한다.
- 액세스 레지스터 모드
- 모든 스토리지 참조는 기본 레지스터와 관련된 액세스 레지스터에 의해 지정된 변환 테이블을 사용한다.
- 보조 공간 모드
- 모든 스토리지 참조는 보조 주소 공간의 변환 테이블을 사용한다.
- 홈 공간 모드
- 모든 스토리지 참조는 홈 주소 공간의 변환 테이블을 사용한다.
운영체제 지원
[편집]IBM의 운영체제인 z/OS, z/VSE, z/TPF, z/VM은 각각 MVS, VSE, 트랜잭션 처리 기능 (TPF), VM의 버전으로 z/아키텍처를 지원한다. z/OS, z/VSE, z/VM의 이전 버전은 32비트 시스템을 계속 지원했다. z/OS 버전 1.6 이상, z/VSE 버전 4 이상, z/VM 버전 5 이상은 z/아키텍처를 필요로 한다.
리눅스도 리눅스 온 IBM Z와 함께 z/아키텍처를 지원한다.
z/아키텍처는 서로 다른 주소 크기를 사용하는 경우에도 여러 개의 동시 운영 체제와 애플리케이션을 실행할 수 있도록 지원한다. 이를 통해 소프트웨어 개발자는 애플리케이션 및 데이터 구조에 가장 유리한 주소 크기를 선택할 수 있다.
2009년 7월 7일, IBM은 새로운 운영 체제 버전 발표와 함께 아키텍처 레벨 세트 4 (ALS 4)가 존재하며 System z10 및 이후 머신에 구현된다고 암시적으로 밝혔다.[19][20] ALS 4는 LOADxx에서도 ARCHLVL 3으로 지정되어 있으며, 이전 z900, z800, z990, z890, System z9는 ARCHLVL 2로 지정되었다. System z10의 이전 발표에서는 단순히 z/아키텍처에 일부 추가 기능, 즉 50개 이상의 새로운 기계 명령어, 1MB 페이지 프레임, 하드웨어 십진 부동소수점 장치(HDFU)를 구현한다고 명시했다.[21][22]
z/OS를 포함한 z/아키텍처용 대부분의 운영체제는 효율성과 호환성 때문에 각 가상 주소 공간의 첫 2GB(31비트 주소, 즉 231개의 주소 지정 가능한 바이트)로 코드 실행을 제한하며, 이는 아키텍처적 제한 때문이 아니다. Linux on IBM Z는 코드가 64비트 주소 범위 내에서 실행될 수 있도록 한다.
z/OS
[편집]각 z/OS 주소 공간은 64비트 주소 공간이라고 불리며, 크기는 16 엑사바이트이다.
코드 (또는 혼합) 공간
[편집]자바 프로그래밍 언어의 z/OS 구현은 예외이다. z/OS 가상 메모리 구현은 여러 2GB 주소 공간을 지원하여 2GB 이상의 동시 상주 프로그램 코드를 허용한다.
데이터 전용 공간
[편집]데이터 전용 공간은 읽고 쓸 수는 있지만 실행 가능한 코드로 사용할 수 없는 메모리 영역이다. (다른 최신 프로세서의 NX 비트와 유사하다.) 기본적으로 z/아키텍처 메모리 공간은 64비트 포인터로 인덱싱되어 실행 중인 프로그램에 최대 16엑사바이트의 메모리를 표시할 수 있다.
데이터 공간과 하이퍼 공간
[편집]16 엑사바이트 이상의 데이터 주소 공간이 필요한 애플리케이션은 추가 주소 공간 또는 데이터 전용 공간을 사용하여 확장된 주소 지정 기술을 사용할 수 있다. 사용자 프로그램에 사용 가능한 데이터 전용 공간은 다음과 같다.
이러한 공간은 프로그램이 생성할 수 있는 가상 스토리지 영역이라는 점에서 비슷하며, 최대 2 기가바이트에 달할 수 있다. 주소 공간과 달리 데이터 공간 또는 하이퍼 공간은 사용자 데이터만 포함하며, 시스템 제어 블록이나 공통 영역을 포함하지 않는다. 프로그램 코드는 데이터 공간이나 하이퍼 공간에서 실행될 수 없다.[27]
데이터 공간은 바이트 주소 지정이 가능한 반면, 하이퍼 공간은 페이지 주소 지정이 가능하다는 점에서 다르다.
IBM 메인프레임 확장 스토리지
[편집]전통적으로 IBM 메인프레임 메모리는 바이트 주소 지정이 가능했다. 이러한 종류의 메모리는 "중앙 스토리지"라고 불린다. IBM 메인프레임 프로세서는 1980년대와 1990년대 대부분 동안 또 다른 종류의 메모리인 확장 스토리지를 지원했다. 이는 1985년 IBM 3090 고급 메인프레임 시리즈와 함께 처음 도입되었다.[28]
확장 스토리지는 4KB 페이지 주소 지정이 가능하다. 애플리케이션이 확장 스토리지의 데이터에 액세스하려면 먼저 중앙 스토리지로 이동해야 한다. 마찬가지로 중앙 스토리지에서 확장 스토리지로의 데이터 이동은 4KB 페이지 단위로 수행된다. 초기에는 페이지 이동이 상대적으로 비용이 많이 드는 명령어, 즉 페이징 서브시스템 코드를 사용하여 수행되었다.
중앙 스토리지와 확장 스토리지 간의 단일 및 그룹 페이지 이동 오버헤드는 MVPG (페이지 이동) 명령어 및 ADMF (비동기 데이터 이동기 기능) 기능의 도입으로 줄어들었다.
MVPG 명령어와 ADMF는 일반적으로 z/OS 또는 z/VM (및 ACP?)의 미들웨어에 의해 확장 스토리지의 데이터에 액세스하기 위해 명시적으로 호출된다. 일부 사용 사례는 다음과 같다.
- MVPG는 VSAM 로컬 공유 리소스(LSR) 버퍼 풀 관리에서 확장 스토리지의 하이퍼 공간에 있는 버퍼에 액세스하는 데 사용된다.
- MVPG와 ADMF는 모두 IBM Db2에서 하이퍼풀에 액세스하는 데 사용된다. 하이퍼풀은 하이퍼 공간에 위치한 버퍼 풀의 일부이다.
- VM 미니디스크 캐싱.
1990년대 중반까지 중앙 스토리지와 확장 스토리지는 프로세서의 물리적으로 다른 메모리 영역이었다. 1990년대 중반부터 중앙 스토리지와 확장 스토리지는 단순히 기본 프로세서 메모리에 대한 할당 선택이었다. 이러한 선택은 특정 예상 사용 사례를 기반으로 이루어졌다. 예를 들어, 하이퍼배치 기능(하이퍼 공간에 액세스하기 위해 MVPG 명령어를 사용함)에는 확장 스토리지가 필요하다.
위에 언급된 하이퍼 공간 및 페이징 사례 외에도 확장 스토리지를 사용하는 다른 용도가 있다.
- 확장 스토리지로의 가상 I/O (VIO)는 시뮬레이션된 장치에 임시 데이터 세트를 저장했다. (이 기능은 중앙 스토리지의 VIO로 대체되었다.)
- VM 미니디스크 캐싱.
z/OS는 확장 스토리지에 대한 지원을 제거했다. z/OS의 모든 메모리는 이제 중앙 스토리지이다. z/VM 6.4는 확장 스토리지의 모든 사용에 대한 지원을 중단하라는 방향성 선언을 이행한다.
MVPG 및 ADMF
[편집]MVPG
[편집]IBM은 MVPG를 "단일 페이지를 이동하며 페이지 이동이 완료될 때까지 중앙 프로세서는 다른 명령어를 실행할 수 없습니다."라고 설명했다.[29]
MVPG 메인프레임 명령어[30] (MoVe PaGe, opcode X'B254')는 MVCL (MoVe Character Long) 명령어와 비교되었으며, 둘 다 단일 명령어로 주 메모리 내에서 256바이트 이상을 이동할 수 있다. 이 명령어들은 원자성의 정의를 준수하지 않지만, 문서화된 타이밍 및 비중첩 제한 내에서 단일 명령어로 사용될 수 있다.[31]:Note 8, page 7-27[32]
주 메모리 내에서 256바이트 이상을 이동해야 하는 필요성은 역사적으로 소프트웨어[33] (MVC 루프), 1970년 System/370 발표와 함께 도입된 MVCL,[34] 그리고 1989년 IBM이 특허[35]를 내고 발표한 MVPG를 통해 해결되었으며, 각각 장점이 있다.[36]
ADMF
[편집]1992년에 도입된 ADMF (비동기 데이터 이동기 기능)는 단일 페이지로 제한되는 MVPG (페이지 이동) 명령어의 기능을 넘어[37] 중앙 스토리지와 확장 스토리지 사이에서 페이지 그룹을 이동할 수 있다.
IOSADMF라는 매크로 명령어는 "ADMF의 직접적이고 저수준 사용"을 피하는 API로 묘사되었으며,[38] 하이퍼 공간에서 데이터를 읽거나 쓸 수 있다.[h][39] 하이퍼 공간은 DSPSERV CREATE를 사용하여 생성된다.
재진입성을 제공하기 위해 IOSADMF는 "List form" 및 "Execute form"과 함께 사용된다.[40]
비IBM 구현
[편집]플랫폼 솔루션즈 주식회사(PSI)는 이전에 z/아키텍처와 호환되는 아이테니엄 기반 서버를 판매했다. IBM은 2008년 7월에 PSI를 인수했으며, PSI 시스템은 더 이상 제공되지 않는다.[41] FLEX-ES, zPDT 및 Hercules emulator도 z/아키텍처를 구현한다. 히타치 메인프레임은 최신 버전의 VOS3 운영 체제를 실행하며, 몇 가지 64비트 명령어를 포함한 ESA/390과 히타치 고유의 CPU 명령어를 구현한다. 히타치는 2002년 출시된 z900-G2/z800 CPU에 대해 IBM과 공식적으로 협력했지만, 히타치의 기기는 z/아키텍처와 호환되지 않는다.
같이 보기
[편집]- ↑ The ESA asynchronous-pageout, asynchronous-data-mover, program-call-fast, and ESA/390 vector facilities are not present in z/Architecture. The z/Architecture vector feature has been replaced by a very different vector facility starting with the z13.
- ↑ For a complete list see Chapter 1. Introduction in Principle of Operation.[3][4]
- ↑ Although the PSW in z is a quadword and in older architectures a double word, IBM has always used the nomenclature Program-Status Word for this register.
- ↑ Despite the similarity in name, Vector Facility for z/Architecture is not compatible with the Vector Facility on the 3090.
- ↑ 가 나 Except for general register 0.
- ↑ Some instructions allow references to unaligned data.
- ↑ References to the first page in ESA mode, but that is not available on current models.
- ↑ AREAD – transfer data from a hiperspace to the program's primary address space.
각주
[편집]- z
- 《z/Architecture Principles of Operation》 (PDF) Fourteen판. IBM. May 2022. SA22-7832-13. 2024년 6월 28일에 확인함.
- ↑ 《Development and Attributes of z/Architecture》 (PDF). 《IBM Journal of Research and Development》 45. July–September 2002. 2013년 12월 12일에 원본 문서 (PDF)에서 보존된 문서.
- ↑ “Accommodate functions for the z13 server to be discontinued on future servers”. 《IBM》. 2015년 6월 25일. 2017년 9월 15일에 원본 문서에서 보존된 문서. 2017년 9월 18일에 확인함.
- ↑ 가 나 z, 1-2–1-7쪽, Highlights of Original z/Architecture.
- ↑ 가 나 z, 1-7–1-31쪽, Additions to z/Architecture.
- ↑ “IBM z Systems Processor Optimization Primer” (PDF). 《IBM》.
- ↑ z, 1-23쪽, Neural-Network-Processing-Assist Facility.
- ↑ z, 26-1–26-126쪽, Chapter 26. Specialized-Function-Assist Instructions.
- ↑ 가 나 z, 5-50쪽, Access-Register-Specified Address Spaces.
- ↑ 가 나 z, 4-46쪽, Breaking-Event-Address Register.
- ↑ z, 4-9–4-11쪽, Figure 4-5. Assignment of Control-Register Fields.
- ↑ z, 3-22–3-23쪽, Prefixing in the z/Architecture Architectural Mode.
- ↑ z, 4-5–4-8쪽, Program-Status-Word Format.
- ↑ z, 4-8쪽, Short PSW Format.
- ↑ z, 6-15–6-16쪽, Access Registers.
- ↑ z, 4-464-46쪽, Breaking-Event-Address Register.
- ↑ z, 4-9–4-12쪽, Control Registers.
- ↑ z, 2-5–2-6쪽, Vector Registers.
- ↑ z, 3-41, 3-42쪽, Figure 3-15. Translation Modes.
- ↑ Preview: IBM z/VM V6.1 – Foundation for future virtualization growth 보관됨 2021-10-28 - 웨이백 머신, IBM United States Software Announcement 209-207, dated July 7, 2009
- ↑ ALS 1 was 9672 G2; ALS 2 was 9672 G5; ALS 3 was the original z/Architecture:“IBM CMOS Processor Table”. 2008년 11월 18일. 2013년 12월 10일에 원본 문서에서 보존된 문서. 2012년 10월 18일에 확인함.
- ↑ “IBM System z10 Business Class (z10 BC) Reference Guide” (PDF). 《IBM》. 2008. 2011년 3월 4일에 원본 문서 (PDF)에서 보존된 문서. 2012년 10월 18일에 확인함.
- ↑ “z/Architecture Principles of Operation” (PDF). 2020년 11월 30일에 원본 문서 (PDF)에서 보존된 문서. 2016년 1월 15일에 확인함.
- ↑ Hoskins, Jim; Frank, Bob (2002). 《Exploring IBM Eserver Zseries and S/390 Servers》. Maximum Press. 26쪽. ISBN 1885068913. 2021년 4월 27일에 원본 문서에서 보존된 문서. 2017년 10월 19일에 확인함.
VM Data Spaces architecture is standard on all System/390 processors.
- ↑ “CA Defends VSE Policy”. 《InformationWeek》. 1991년 10월 21일. 15면.
Computer Associates International is now providing data space technology to VSE/ESA or System/370 users.
- ↑ “Analyzing data in memory”. IBM.
- ↑ Hemanth Nandas (2007년 10월 15일). “What is hiperspace? Which was the first OS to support hiperspace?”. 뉴스그룹: ibmmainframes.com. 2017년 2월 2일에 원본 문서에서 보존된 문서. 2017년 1월 25일에 확인함. HIGH PERFORMANCE SPACE or "High Performance Dataspace" (author Anuj Dhawan, same date)
- ↑ “CheatSheet #54 zTidBits z/OS Extended Addressing” (PDF). 2022년 7월 17일에 확인함.
- ↑ Sakaki, M.; Samukawa, H.; Honjou, N. (1988). 《Effective utilization of IBM 3090 large virtual storage in the numerically intensive computations of ab initio molecular orbitals》. 《IBM Systems Journal》 27. 528–540쪽. doi:10.1147/sj.274.0528. ISSN 0018-8670.
- ↑ US 5442802 Asynchronous co-processor data mover method and means
- ↑ “HLASM – MVPG = MoVe PaGe”. 2013년 10월 6일에 원본 문서에서 보존된 문서. 2017년 1월 24일에 확인함.
- ↑ MOVE LONG, note 8.“GA22-7000-10, IBM System/370, Principles of Operation” (PDF). 2021년 4월 11일에 원본 문서 (PDF)에서 보존된 문서. 2021년 10월 11일에 확인함.
- ↑ "things are done immediately, and there is no chance of the instruction being half-completed or of another being interspersed. Used especially to convey that an operation cannot be interrupted."“Atomic from FOLDOC”.
- ↑ “$MVCL – Move more than 256 bytes of storage”. 《IBM》. 2014년 9월 20일. 2017년 2월 2일에 원본 문서에서 보존된 문서. 2017년 1월 24일에 확인함.
- ↑ “Move Long”. 2017년 4월 27일에 원본 문서에서 보존된 문서. 2017년 1월 24일에 확인함.
- ↑ US 5237668 Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
- ↑ “MVPG faster than MVCL for aligned pages?”. 《IBM-MAIN》 (메일링 리스트). 2011년 1월 22일에 원본 문서에서 보존된 문서. 2017년 1월 24일에 확인함.
- ↑ IBM's patent EP0549924A1 describes MVPG as "moves a single page."
- ↑ Celestini, Art (1997년 8월 20일). “admf”. 《IBM-MAIN》 (메일링 리스트). 2011년 1월 22일에 원본 문서에서 보존된 문서. 2017년 1월 24일에 확인함 – Google Groups 경유.
- ↑ z/OS MVS Programming: Extended Addressability Guide – SA23-1394-00
- ↑ “IOSADMF — Transfer hiperspace data”. 《IBM》. 2015년 2월 7일. 2017년 2월 2일에 원본 문서에서 보존된 문서. 2017년 1월 24일에 확인함.
- ↑ “IBM Acquires Platform Solutions” (보도 자료). IBM. 2008년 7월 2일. 2008년 9월 5일에 원본 문서에서 보존된 문서. 2008년 9월 6일에 확인함.