KR20100126269A - 인출 보호를 가진 동적 어드레스 변환 - Google Patents

인출 보호를 가진 동적 어드레스 변환 Download PDF

Info

Publication number
KR20100126269A
KR20100126269A KR20107015298A KR20107015298A KR20100126269A KR 20100126269 A KR20100126269 A KR 20100126269A KR 20107015298 A KR20107015298 A KR 20107015298A KR 20107015298 A KR20107015298 A KR 20107015298A KR 20100126269 A KR20100126269 A KR 20100126269A
Authority
KR
South Korea
Prior art keywords
address
segment
bit
translation
region
Prior art date
Application number
KR20107015298A
Other languages
English (en)
Other versions
KR101175615B1 (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 KR20100126269A publication Critical patent/KR20100126269A/ko
Application granted granted Critical
Publication of KR101175615B1 publication Critical patent/KR101175615B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

강화된 동적 어드레스 변환 장치가 제공된다. 일 실시예에서, 변환될 가상 어드레스가 먼저 획득되고, 변환 테이블의 계층의 변환 테이블의 초기 기점 어드레스가 획득된다. 획득된 초기 기점에 기초하여, 세그먼트 테이블 엔트리가 획득된다. 세그먼트 테이블 엔트리는 포맷 제어 및 액세스 유효성 필드를 포함하도록 구성된다. 포맷 제어 및 액세스 유효성 필드가 인에이블링되면, 세그먼트 테이블 엔트리는 액세스 제어 필드와, 인출 보호 필드, 및 세그먼트-프레임 절대 어드레스를 더 포함한다. 저장 동작은 액세스 제어 필드가 인스트럭션이 실행되는 프로그램 인스트럭션의 피연산자 또는 프로그램 상태 규정어 중 어느 하나에 의해 제공되는 프로그램 액세스 키와 일치하는 경우에만 허용된다. 인출 동작은 가상 어드레스와 연관된 프로그램 액세스 키가 세그먼트 액세스 제어 필드와 동일하면 허용된다.

Description

인출 보호를 가진 동적 어드레스 변환{DYNAMIC ADDRESS TRANSLATION WITH FETCH PROTECTION}
본 발명은 전반적으로 컴퓨터 시스템에서 가상 어드레스를 변환하는 시스템 및 방법에 관한 것으로서, 보다 구체적으로 변환 테이블의 계층을 통해 가상 어드레스 변환이 발생하는 동적 어드레스 변환 장치를 갖는 컴퓨터 시스템에서 가상 어드레스를 데이터 블록의 실제 또는 절대 어드레스로 변환하는 시스템 및 방법에 관한 것이다.
동적 어드레스 변환은 임의의 순간에서 프로그램의 실행을 인터럽트하고, 직접 액세스 저장 장치와 같은 보조 저장 장치에 프로그램과 그의 데이터를 기록하며, 이후에 실행 재개를 위해 상이한 1차 저장 장치 위치에 프로그램과 데이터를 반환하는 기능을 제공한다. 1차 저장 장치와 보조 저장 장치 사이의 프로그램과 그 데이터의 전송은 단편적으로 수행될 수 있으며, 1차 저장 장치에 대한 정보의 반환은 실행을 위해 요구되는 시점에서 이를 액세스하기 위해 CPU에 의한 액세스에 응답하여 발생할 수 있다. 이들 기능은 프로그램과 그 데이터의 변경 또는 검사 없이 수행될 수 있으며, 이동된 프로그램에 임의의 명시적인 프로그래밍 규약을 필요로 하지 않고, 수반된 시간 지연을 제외한 프로그램의 실행을 방해하지 않는다.
운영 체제에 의한 적절한 지원에 의해, 동적 어드레스 변환 장치는 저장 장치가 환경 설정에서 이용 가능한 1차 저장 장치보다 큰 것처럼 보이는 시스템을 사용자에게 제공하도록 사용될 수 있다. 이 명백한 1차 저장 장치는 흔히 가상 저장 장치라 지칭되며, 가상 저장 장치에서 위치를 지정하도록 사용된 어드레스는 가상 어드레스라 흔히 지칭된다. 사용자의 가상 저장 장치는 환경 설정에서 이용 가능하고, 보조 저장 장치에서 통상 유지되는 1차 저장 장치의 크기를 훨씬 초과할 수 있다. 가상 저장 장치는 페이지라 통상 지칭되는(세그먼트 및 영역이라 또한 지칭되는) 데이터 블록으로 구성되는 것으로 간주된다. 가상 저장 장치의 페이지에 대해 가장 최근에 참조된 것만이 물리적 1차 저장 장치의 블록을 점유하도록 할당된다. 사용자가 1차 저장 장치에서 보이지 않는 가상 저장 장치의 페이지를 참조함에 따라, 이들은 필요성이 덜할 가능성이 있는 1차 저장 장치 내의 페이지를 대체하도록 요구된다. 몇몇 경우에 가상 저장 장치는 저장 장치가 참조되는 것에 관계없이, 긴 시간 구간 동안(또는 영구적으로) 1차 저장 장치에 할당된다. 저장 장치의 페이지 교체는 사용자의 지식 없이 운영 체제에 의해 수행될 수 있다.
프로그램은 가상 저장 장치를 액세스하도록 어드레스(또는 가상 어드레스)를 사용한다. 프로그램은 가상 어드레스를 이용하여 가상 저장 장치로부터 인스트럭션을 인출(fetch)하거나 또는 가상 저장 장치로부터 데이터를 로드하거나 저장한다. 가상 저장 장치의 범위와 연관된 가상 어드레스가 어드레스 공간을 정의한다. 운영 체제에 의한 적절한 지원에 의해, 동적 어드레스 변환 장치는 다수의 어드레스 공간을 제공하도록 사용될 수 있다. 이들 어드레스 공간은 사용자들 사이의 분리 정도를 제공하도록 사용될 수 있다. 이러한 지원은 각각의 사용자에 대해 완전히 상이한 어드레스 공간으로 구성되어, 완전한 분리를 제공할 수 있거나, 또는 공유 영역은 단일의 공통 저장 영역에 대해 각각의 어드레스 공간의 부분을 매핑함으로써 수행될 수 있다. 또한, 2 이상의 이러한 어드레스 공간을 액세스하도록 절반 특권(semi-privileged) 프로그램을 허용하는 인스트럭션이 제공된다.
동적 어드레스 변환은 다수의 상이한 어드레스 공간으로부터 가상 어드레스의 변환을 제공한다. 이들 어드레스 공간은 1차 어드레스 공간, 2차 어드레스 공간 및 액세스 레지스터 지정 어드레스 공간이라 지칭된다. 특권 프로그램은 홈 어드레스 공간이 또한 액세스되도록 할 수 있다. 동적 어드레스 변환은 CPU에 의해 생성된 인스트럭션 및 데이터 어드레스에 대해 지정될 수 있다.
따라서, 이 분야에서 지금까지 알려지지 않은 어드레스 기능, 성능 및 보호를 제공하는 강화된 동적 어드레스 변환 장치가 요구된다.
변환을 위해 사용된 변환 테이블의 계층을 갖는 기계 아키텍처의 컴퓨터 시스템에서 가상 어드레스를 주 저장 장치 내의 원하는 데이터 블록의 실제 또는 절대 어드레스로 변환하는 강화된 동적 어드레스 변환 장치를 위한 시스템, 방법 및 컴퓨터 프로그램 제품이 제공된다. 실제 어드레스는 절대 어드레스를 형성하기 위한 프리픽스(prefix)가 실시될 수 있다.
일 실시예에서, 변환될 가상 어드레스 및 변환 테이블의 계층의 변환 테이블의 초기 기점이 획득된다. 변환 테이블은 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블 또는 세그먼트 테이블로 구성된다. 획득된 초기 기점 어드레스에 기초하여, 세그먼트 테이블로부터 세그먼트 테이블 엔트리가 획득된다. 세그먼트 테이블 엔트리는 포맷 제어 필드를 포함하도록 구성된다. 강화된 DAT 장치 및 포맷 제어 필드가 인에이블링되면, 세그먼트 테이블 엔트리 내의 액세스 유효성 필드가 인에이블링되는지 여부를 판정한다. 액세스 유효성 필드가 인에이블링되면, 세그먼트 테이블 엔트리는 액세스 제어 필드, 보호 필드, 및 주 저장 장치 내의 큰 데이터 블록의 세그먼트-프레임 절대 어드레스를 더 포함한다. 큰 데이터 블록은 크기가 적어도 1 메가바이트인 블록이다. 만일 액세스 제어 필드가 인에이블링되면, 원하는 데이터 블록으로의 저장 동작은 액세스 제어 필드가, 실행되는 프로그램 인스트럭션의 피연산자 또는 프로그램 상태 규정어에 의해 제공되는 프로그램 액세스 키와 일치하는 경우에만 허용된다. 원하는 데이터 블록으로부터의 인출 동작은 가상 어드레스와 연관된 프로그램 액세스 키가 액세스 제어 필드와 동일한 경우에만 허용된다.
또 다른 실시예에서, 만일 액세스 유효성 필드가 인에이블링되면, 메모리의 원하는 블록에서 인출 동작 또는 저장 동작이 시도되고, 세그먼트 액세스 제어 필드가 프로그램 액세스 제어 필드와 일치하지 않는 것에 응답하여 보호 예외가 표시된다.
다음에 특정 예시적인 실시예와 관련하여 본 발명을 설명할 것이다. 본 발명의 사상 또는 범위로부터 벗어나지 않으면서 당업자에 의해 다양한 변경 및 수정이 이루어질 수 있음을 알아야 한다.
유사한 참조 부호가 개별적인 도면 전반에 걸쳐 동일하거나 또는 기능적으로 유사한 요소를 지칭하고 상세한 설명과 함께 이하 본 명세서에 포함되고 본 명세서의 일부분을 형성하는 첨부 도면은 본 발명에 따라 각종 실시예를 또한 도시하고 각종 원리 및 장점을 모두 설명하도록 기능한다.
도 1은 강화된 동적 어드레스 변환이 수행될 호스트 컴퓨터 시스템의 일 실시예를 도시하고,
도 2는 호스트 아키텍처의 호스트 컴퓨터 시스템을 에뮬레이트하는 예시적인 에뮬레이트된 호스트 컴퓨터 시스템을 제공하는 도면이며,
도 3은 가상 어드레스의 동적 어드레스 변환을 위한 유효 ASCE를 결정하도록 프로그램 상태 워드가 어떻게 사용되는지의 일 실시예를 도시하고,
도 4는 가상 어드레스의 변환에 사용된 변환 테이블의 계층에서 최상위 변환 테이블을 결정하도록 도 3에서 결정된 유효 ASCE가 사용되는 일 실시예를 도시하며,
도 5a는 세그먼트 테이블 레벨에 대한 변환 테이블의 계층을 이용하여 가상 어드레스의 동적 어드레스 변환 프로세스의 일 실시예를 도시하고,
도 5b는 세그먼트 테이블 엔트리(STE) 포맷 제어(FC)가 0인 도 5a의 동적 어드레스 변환의 연속을 도시하며,
도 5c는 세그먼트 테이블 엔트리(STE) 포맷 제어(FC)가 1인 도 5a의 동적 어드레스 변환의 연속을 도시하고,
도 6은 세그먼트 테이블 엔트리 내의 포맷 제어 필드를 획득하기 위해 강화된 동적 어드레스 변환(eDAT)의 일 실시예의 순서도이며,
도 7은 도 6의 노드(614)로부터 순서도의 연속을 도시하고,
도 8은 도 6의 노드(616)로부터 순서도의 연속을 도시하며,
도 9는 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용될 DAT 보호 레벨을 결정하는 일 실시예의 순서도이고,
도 10은 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용될 액세스 제어 보호 레벨을 결정하는 도 8의 노드(822)로부터의 순서도의 연속을 도시하며,
도 11은 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용될 인출 보호 레벨을 결정하는 도 8의 노드(822)로부터의 순서도의 연속을 도시하고,
도 12는 세그먼트 테이블 엔트리로부터 변경 기록 오버라이드 필드가 획득되는 도 8의 노드(822)로부터의 순서도의 연속을 도시하며,
도 13은 실제 어드레스와 절대 어드레스 사이의 관계를 도시하는 도면이다.
본 발명의 명세서에서 행해진 구조는 임의의 각종 청구된 발명을 반드시 제한하는 것은 아니다. 또한, 몇몇 설명은 몇몇 발명의 특징뿐만 아니라 다른 특징에도 적용할 수 있다. 달리 표시되지 않는 한, 일반성을 손상시키지 않고 단일의 요소가 복수일 수도 있고 복수의 요소가 단수일 수도 있다.
당 분야에서 통상의 지식을 가진 자라면 상태를 상이하게 하고 이들 상태에 대해 작동하는 것을 표시하도록 컴퓨팅 환경에서 저장 장치를 어드레싱하고 레지스터 또는 어드레스 필드 내의 비트를 이용하는 것을 용이하게 이해할 것이다. 또한, 당 분야에서 통상의 지식을 가진 자라면 컴퓨터 프로그램의 분야와 컴퓨터 시스템의 구성요소들 간의 상호 관계 및 작용에 관해 이해할 수 있을 것이다.
개요
강화된 동적 어드레스 변환(Dynamic Address Translation : DAT) 장치의 예시적인 실시예가 제공된다. 강화된 DAT 장치가 인스톨되고 인에이블될 때, DAT 변환은 세그먼트 테이블 엔트리(Segment Table Entry : STE) 내의 세그먼트 테이블 엔트리 포맷 제어에 의해 결정된 페이지 프레임 실제 어드레스 또는 세그먼트 프레임 절대 어드레스를 생성할 수 있다. 본 명세서에서 사용된 바와 같이, 용어 "강화된 DAT 적용"은 다음과 같은 사항이 모두 적용되는 것을 의미한다. 즉, 1) EDAT 장치가 인스톨되고, 2) EDAT 장치가 제어 레지스터 0(CR0) 비트 40을 통해 인에이블되며, 3) 어드레스가 DAT 테이블 엔트리에 의해 변환된다.
강화된 DAT가 적용될 때, 다음과 같은 추가적인 기능이 DAT 프로세스에서 이용 가능하다. 즉,
DAT 보호 비트가 영역 테이블 엔트리에 추가되어, 세그먼트 및 페이지 테이블 엔트리에 DAT 보호 비트와 유사한 기능을 제공된다.
STE 포맷 제어가 세그먼트 테이블 엔트리에 추가된다. STE 포맷 제어가 0일 때, 페이지 테이블 엔트리 내의 변경 기록 오버라이드가 변경 비트의 설정이 페이지에 대해 바이패스될 수 있는지를 표시하는 것을 제외하고, 현재 정의된 바와 같이 DAT가 진행한다.
STE 포맷 제어가 1일 때, 세그먼트 테이블 엔트리는 다음과 같은 사항을 또한 포함할 수 있다. 즉,
1 메가바이트 블록의 절대 저장 위치를 지정하는 (페이지 테이블 기점이 아닌) 세그먼트 프레임 절대 어드레스.
세그먼트의 개별적인 저장 키에서 대응하는 비트 대신에 선택적으로 사용될 수 있는 액세스 제어 비트 및 인출 보호 비트.
세그먼트 테이블 엔트리 내의 액세스 제어 비트 및 인출 보호 비트의 유효성을 결정하는 비트.
변경 비트의 설정이 세그먼트의 개별적인 저장 키에서 바이패스될 수 있는지를 표시하는 변경 기록 오버라이드.
호스트 컴퓨터 시스템
도 1을 참조하면, 호스트 컴퓨터 시스템(100)의 대표적인 구성요소가 도시된다. 당 분야에서 잘 알려져 있는 컴퓨터 시스템에서 구성요소의 다른 배치가 또한 채용될 수 있다.
호스트 컴퓨팅 환경은 바람직하게 New York, Armonk에 소재하는 International Business Machines Corporation(IBM®)에 의해 제공된 z/Architecture®에 근거한다. z/Architecture®은 본 명세서 전체에서 참조로서 인용되는 z/ Architecture ® Principle of Operation , IBM ® Pub. No. SA22-7832-05, 6호 Edition, (April 2007)에 보다 완전하게 기술되어 있다. z/Architecture®에 근거한 컴퓨팅 환경은, 예를 들어, IBM®에 의한 eServer 및 zSeries® 모두를 포함한다.
대표적인 호스트 컴퓨터(100)는 1차 저장 장치(컴퓨터 메모리(102)) 뿐만 아니라 저장 장치(111)에 대한 I/O 인터페이스와 통신하는 하나 이상의 CPU(101) 및 다른 컴퓨터 또는 저장 영역 네트워크(SAN)와 통신하는 네트워크(110) 등을 포함한다. CPU는 메모리의 실제 어드레스로의 프로그램 어드레스(가상 어드레스)를 변환하는 동적 어드레스 변환(DAT) 장치(기능 또는 유닛)(103)를 가질 수 있다. DAT 장치는 전형적으로 컴퓨터 메모리(102)의 블록에 대한 이후의 액세스가 어드레스 변환의 지연을 필요로 하지 않도록 변환을 캐싱하는 변환 위치 버퍼(107)를 포함한다. 전형적으로 컴퓨터 메모리(102)와 프로세서(101) 사이에 캐시(109)가 채용된다. 캐시(109)는 2 이상의 CPU에 대해 이용 가능한 대형의 캐시, 및 대형의 캐시와 각각의 CPU 사이에서 보다 작고, 보다 고속의(보다 낮은 레벨) 캐시를 갖는 계층일 수 있다. 몇몇 구현에서 보다 낮은 레벨 캐시는 인스트럭션 인출 및 데이터 액세스를 위한 개별적인 저 레벨 캐시를 제공하도록 분할된다. 실시예에서, 캐시(109)를 통해 인스트럭션 인출 유닛(104)에 의해 메모리(102)로부터 인출된다. 인스트럭션 인코딩 유닛(106)에서 인스트럭션이 인코딩되고 (몇몇 실시예에서 다른 인스트럭션과 함께) 인스트럭션 실행 유닛(108)으로 디스패치된다. 전형적으로 몇몇 실행 유닛(108)은, 예를 들어, 산출 실행 유닛, 부동점 실행 유닛 및 브랜치 인스트럭션 실행 유닛을 채용한다. 인스트럭션은 실행 유닛에 의해 실행되어, 요구되는 바와 같이 인스트럭션 지정된 레지스터 또는 메모리로부터 피연산자를 액세스한다. 피연산자가 메모리(102)로부터 액세스(로드 또는 저장)되는 경우, 로드 저장 유닛(105)은 전형적으로 실행되는 인스트럭션의 제어 하에 액세스를 처리한다.
실시예에서, 본 발명은 소프트웨어(종종 LIC(Licensed Internal Code), 펌웨어, 마이크로코드, 밀리코드, 피코코드 등, 본 발명과 부합할 수 있는 임의의 것을 지칭함)에 의해 실시될 수 있다. 본 발명을 구현하는 소프트웨어 프로그램 코드는 전형적으로 CD-ROM 드라이브, 테이프 드라이브 또는 하드 드라이브와 같은 롱 텀 저장 매체(111)로부터 컴퓨터 시스템(100)의 CPU(Central Processing Unit)(101)로서 또한 알려진 프로세서에 의해 액세스된다. 소프트웨어 프로그램 코드는 디스켓, 하드 드라이브 또는 CD-ROM과 같은 데이터 프로세싱 시스템과 함께 사용하기 위한 임의의 각종 알려진 매체 상에서 구현될 수 있다. 코드는 이러한 매체 상에 분배할 수 있거나, 또는 컴퓨터 메모리(102)로부터의 사용자에 분배되거나 또는 다른 컴퓨터 시스템의 사용자에 의해 사용하기 위해 이러한 다른 시스템에 대해 네트워크(110)를 통해 하나의 컴퓨터 시스템의 저장 장치에 분배될 수 있다.
이와 달리, 프로그램 코드가 메모리(102)에서 구현될 수 있고, 프로세스 버스를 이용하여 프로세서(101)에 의해 액세스될 수 있다. 이러한 프로그램 코드는 각종 컴퓨터 구성요소의 기능 및 상호 작용을 제어하는 운영 체제 및 하나 이상의 애플리케이션 프로그램을 포함한다. 프로그램 코드가 조밀한 저장 매체(111)로부터 고속 메모리(102)로 통상 페이징되며, 여기서 프로세서(101)에 의한 프로세싱을 위해 이용 가능하다. 물리적 매체 상에서, 메모리에 소프트웨어 프로그램 코드를 구현하고/하거나 네트워크를 통해 소프트웨어 코드를 분배하는 기법 및 방법은 잘 알려져 있으며, 본 명세서에서 더 기술되지 않을 것이다. 프로그램 코드는 실제의 매체(전자 메모리 모듈(RAM), 플래시 메모리, 컴팩트 디스크(CD), DVD, 자기 테이프 등을 포함함) 상에서 생성되고 저장될 때 흔히 "컴퓨터 프로그램 제품"이라 지칭된다. 컴퓨터 프로그램 제품 매체는 전형적으로 프로세싱 회로에 의해 바람직하게는 프로세싱 회로에 의해 실행을 위한 컴퓨터 시스템에서 판독 가능하다.
도 2에서, 호스트 아키텍처의 호스트 컴퓨터 시스템(100)을 에뮬레이팅하는 예시적인 에뮬레이팅된 호스트 컴퓨터 시스템(201)이 제공된다. 에뮬레이팅된 호스트 컴퓨터 시스템(201)에서, 호스트 프로세서(CPU)(208)는 에뮬레이팅된 호스트 프로세서(또는 가상 호스트 프로세서)이며 호스트 컴퓨터 시스템(100)의 프로세서(101)에 의해 사용된 것과 상이한 고유의 인스트럭션 세트 아키텍처를 갖는 에뮬레이션 프로세서(207)를 포함한다. 에뮬레이팅된 호스트 컴퓨터 시스템(201)은 에뮬레이팅된 프로세서(207)에 대해 액세스 가능한 메모리(202)를 포함한다. 예시적인 실시예에서, 메모리(207)는 호스트 컴퓨터 메모리(102) 부분 및 에뮬레이션 루틴(203) 부분(에뮬레이션을 제공하는 루틴은 호스트 메모리의 일부분일 수 있음)으로 구획된다. 호스트 컴퓨터 메모리(102)는 호스트 컴퓨터 아키텍처에 따라 에뮬레이션 호스트 컴퓨터(201)의 프로그램에 대해 이용 가능하다. 에뮬레이팅된 프로세서(207)는 에뮬레이팅된 프로세서(208) 이외의 아키텍처의 아키텍처 인스트럭션 세트의 고유의 인스트럭션을 실행하고, 고유의 인스트럭션은 에뮬레이팅된 루틴 메모리(203)로부터 획득되며, 액세스된 호스트 인스트럭션의 기능을 에뮬레이트하는 고유의 인스트럭션 실행 루틴을 결정하도록 액세스된 호스트 인스트럭션(들)을 디코딩할 수 있는 시퀀스 및 액세스/디코드 루틴에서 획득된 하나 이상의 인스트럭션(들)을 채용함으로써 호스트 컴퓨터 메모리(102)에서 프로그램으로부터의 실행을 위해 호스트 인스트럭션을 액세스할 수 있다.
호스트 컴퓨터 시스템(201) 아키텍처에 대해 정의되는 다른 장치는 범용 레지스터, 제어 레지스터, 동적 어드레스 변환 및 I/O 서브시스템 지원과 같은 장치 및, 예를 들어 프로세서 캐시를 포함하는 아키텍처 장치 루틴에 의해 에뮬레이팅될 수 있다. 에뮬레이션 루틴은 에뮬레이션 루틴의 성능을 향상시키도록 (범용 레지스터 및 가상 어드레스의 동적 변환과 같은) 에뮬레이팅된 프로세서(207)에서 이용 가능한 기능을 또한 이용할 수 있다. 특수한 하드웨어 및 오프 로드 엔진은 호스트 컴퓨터(100)의 기능을 에뮬레이트함에 있어 프로세서(207)를 지원하도록 또한 제공될 수 있다.
컴퓨터 프로세서 및 레지스터
실시예에서, CPU의 프로그램 인스트럭션 기능은 통신 버스를 통해 복수의 레지스터와 통신한다. 통신 버스는 CPU에 대해 내부적이거나 또는 외부적일 수 있다. 몇몇 레지스터는 판독 전용일 수 있다. 다른 하드웨어 및/또는 소프트웨어는 CPU에 의해 액세스 가능한 하나 이상의 레지스터에 대해 또한 판독/기록될 수 있다. 인스트럭션 연산 코드는 임의의 특정의 기계 인스트럭션 연산에서 어느 유형의 레지스터가 사용되는지를 결정한다.
범용 레지스터
인스트럭션은 16개의 범용 레지스터 중 하나 이상에 정보를 지정할 수 있다. 범용 레지스터는 산술 어드레스에서 베이스 어드레스 레지스터와 인덱스 레지스터로서, 및 범용 산술과 논리 연산에서 누산기로서 사용될 수 있다. 각각의 레지스터는 64 비트 위치를 포함한다. 범용 레지스터는 수 0-15에 의해 식별되고 인스트럭션 내의 4개의 비트 R 필드에 의해 지정된다. 몇몇 인스트럭션은 몇몇 R 필드를 구비함으로써 다수의 범용 레지스터를 어드레싱하도록 제공한다. 몇몇 인스트럭션에 대해, 인스트럭션의 R 필드에 의해 명시적으로 지정된 것 이외에 특정의 범용 레지스터의 사용이 암시된다.
몇몇 연산에 대해, 2개의 인접 범용 레지스터의 비트 32-63 또는 비트 0-63이 결합되어, 64 비트 또는 128 비트 포맷을 각각 제공한다. 이들 연산에서, 프로그램은 제일 왼쪽(고차)의 32 또는 64 비트를 포함하는 우수 레지스터로 지정되어야 한다. 다음으로 높게 넘버링된 레지스터는 제일 오른쪽(저차)의 32 또는 64 비트를 포함한다. 범용 산술 및 논리적 연산에서 누산기로서의 이들의 사용에 부가하여, 16개의 범용 레지스터 중 15개가 어드레스 생성 시에 기본 어드레스 및 인덱스 레지스터로서 또한 사용된다. 이들 경우에, 레지스터는 인스트럭션 내의 4 비트 B 필드 또는 X 필드에 의해 지정된다. B 또는 X 필드에서 0의 값은 베이스 또는 인덱스가 적용되지 않음을 지정하므로, 범용 레지스터 0은 베이스 어드레스 또는 인덱스를 포함하는 것으로서 지정될 수 없다.
제어 레지스터
제어 레지스터는 프로그램 상태 워드 외부의 제어 정보를 유지하고 조작하도록 제공된다. CPU는 16개의 제어 레지스터를 갖고, 각각은 64 비트 위치를 갖는다. 레지스터 내의 비트 위치는 프로그램 기록 이벤트와 같은 시스템 내의 특정의 장치에 할당되고, 연산이 발생할 수 있음을 지정하거나 또는 장치에 의해 요구된 특수한 정보를 제공하도록 사용된다. 제어 레지스터는 수 0-15에 의해 식별되고 인스트럭션 LOAD, CONTROL 및 STORE CONTROL에서 4개의 비트 R 필드에 의해 지정된다. 다수의 제어 레지스터는 이들 인스트럭션에 의해 어드레싱될 수 있다.
제어 레지스터 1
제어 레지스터 1은 PASCE(Primary Address Space Control Element)를 포함한다. 일 실시예에서, 제어 레지스터 1은 레지스터 내의 실제 공간 제어 비트 (R)에 따라, 다음과 같은 2개의 포맷 중 하나를 갖는다. 즉,
Figure pct00001
PASCE 내의 선택된 필드는 다음과 같이 할당된다.
1차 영역 테이블 또는 세그먼트 테이블 기점: 제어 레지스터 1에서 1차 영역 테이블 또는 세그먼트 테이블 지정의 비트 0-51은 우측에 12개의 0이 첨부되어, 1차 영역 테이블 또는 세그먼트 테이블의 시작을 지정하는 64 비트 어드레스를 형성한다. 이것은 어드레스가 실제인지 또는 절대인지를 예측하는 것이 불가능하다. 이 테이블은 1차 어드레스 공간에서 가상 어드레스를 변환하도록 사용되므로 1차 영역 테이블 또는 세그먼트 테이블이라 지칭된다.
1차 실제 공간 제어(R): 제어 레지스터 1의 비트 58이 0인 경우, 레지스터는 영역 테이블 또는 세그먼트 테이블 지정을 포함한다. 비트 58이 1인 경우, 레지스터는 실제 공간 지정을 포함한다. 비트 58이 1일 때, 세그먼트 테이블 엔트리의 변환 색인 버퍼 표시에서 공통 시퀀스 비트의 1 값은 제어 레지스터 1 내의 토큰 기점과 변환 색인 버퍼 엔트리 내의 테이블 엔트리 사이에서 일치한다 하더라도, 자신이 지정하는 엔트리 및 변환 색인 버퍼 페이지 테이블 복사가 1차 어드레스 공간에 대한 참조를 변환할 때 사용되지 못하도록 한다.
1차 지정 유형 제어( DT ): R이 0일 때, 제어 레지스터 1에서 테이블 지정의 유형은 레지스터에서 비트 60 및 61에 의해 다음과 같이 지정된다.
Figure pct00002
R이 0일 때, 제일 왼쪽의 1 비트가 어드레스의 비트 위치 0-10에 있는 가상 어드레스를 변환하기 위해 PASCE를 사용하도록 시도가 행해지는 경우 비트 60 및 61은 11 이진수가 되어야 한다. 마찬가지로, 제일 왼쪽의 1 비트가 어드레스의 비트 위치 11-21에 있는 경우 비트 60 및 61은 11 또는 10 이진수가 되어야 하고, 어드레스의 비트 위치 22-32에 있는 경우 이들은 11, 10 또는 01 이진수가 되어야 한다. 한편, ASCE 유형 예외가 인정된다.
1차 영역 테이블 또는 세그먼트 테이블 길이( TL ): 제어 레지스터 1에서 1차 영역 테이블 지정 또는 세그먼트 테이블 지정의 비트 62 및 63은 4,096 바이트의 유닛에서, 1차 영역 테이블 또는 세그먼트 테이블의 길이를 지정하여, 다수의 512 엔트리에서 1차 영역 테이블 또는 세그먼트 테이블 변수의 길이를 형성한다. 4,096 바이트의 유닛에서, 1차 영역 테이블 또는 세그먼트 테이블의 길이는 TL 값보다 1이 크다. 길이 필드의 콘텐츠는 테이블에 의해 지정될 가상 어드레스(RFX, RSX, RTX 또는 SX)의 부분이 테이블 내에 해당하는 엔트리를 지정하는지를 수립하도록 사용된다.
1차 실제 공간 토큰 기점 비트: 제어 레지스터 1에서 1차 실제 공간 지정의 비트 0-51은 우측에 12개의 0이 첨부되어, 1차 지정 공간에 대한 참조를 위해 실제 변환과 동일한 가상을 제공하는 변환 색인 버퍼 엔트리를 형성하고 사용할 때에 사용될 수 있는 64 비트 어드레스를 형성한다. 이 어드레스가 토큰으로서 단지 사용될 때 저장 참조를 수행하도록 사용되지 않는다 하더라도, 이것은 또한 유효 어드레스가 되어야 하며, 그렇지 않는 경우, 제어 레지스터 1의 콘텐츠가 사용될 때 부정확한 변환 색인 버퍼 엔트리가 사용될 수 있다.
제어 레지스터 1의 다음과 같은 비트가 할당되지 않거나 무시된다. 즉, 레지스터가 영역 테이블 지정 또는 세그먼트 테이블 지정을 포함하는 경우 비트 52, 53 및 59, 그리고 레지스터가 실제 공간 지정을 포함하는 경우 비트 52, 53 및 59-63.
제어 레지스터 7
제어 레지스터 7은 SASCE(Secondary Address Space Control Element)를 포함한다. 일 실시예에서, 제어 레지스터 7은 레지스터 내의 실제 공간 제어 비트 (R)에 따라, 다음과 같은 2개의 포맷 중 하나를 갖는다. 즉,
Figure pct00003
제어 레지스터 13
제어 레지스터 13은 HASCE(Home Address Space Control Element)를 포함한다. 일 실시예에서, 제어 레지스터 7은 레지스터 내의 실제 공간 제어 비트 (R)에 따라, 다음과 같은 2개의 포맷 중 하나를 갖는다. 즉,
Figure pct00004
액세스 레지스터
CPU는 0-15로 넘버링된 16개의 액세스 레지스터를 갖는다. 액세스 레지스터는 ASCE의 간접적인 사양을 포함하는 32 비트 위치로 구성된다. ASCE는 대응하는 어드레스 공간에 대한 참조를 변환하도록 동적 어드레스 변환(DAT) 메커니즘에 의해 사용된 파라미터이다. CPU가 (프로그램 상태 워드 내의 비트에 의해 제어된) 액세스 레지스터 모드라 지칭되는 모드에 있을 때, 저장 장치 동작 참조에 대해 논리적 어드레스를 지정하도록 사용된 인스트럭션 B 필드는 액세스 레지스터를 지정하고, 액세스 레지스터에 의해 지정된 ASCE는 참조가 행해지는 DAT에 의해 사용된다. 몇몇 인스트럭션에 대해, B 필드 대신에 R 필드가 사용된다. 액세스 레지스터의 콘텐츠를 로드하고 저장하며 하나의 액세스 레지스터의 콘텐츠를 다른 액세스 레지스터로 이동하기 위한 인스트럭션이 제공된다.
액세스 레지스터 1-15의 각각은 현재의 인스트럭션 공간(1차 어드레스 공간)을 포함하는 임의의 어드레스 공간을 지정할 수 있다. 액세스 레지스터 0은 1차 어드레스 공간을 지정한다. 액세스 레지스터 1-15 중 하나가 어드레스 공간을 지정하도록 사용될 때, CPU는 어느 어드레스 공간이 액세스 레지스터의 콘텐츠를 변환함으로써 지정되는지를 결정한다. 액세스 레지스터 0이 어드레스 공간을 지정하도록 사용될 때, CPU는 1차 인스트럭션 공간을 지정하는 것으로서 액세스 레지스터를 처리하고, 액세스 레지스터의 실제 콘텐츠를 검사하지 않는다. 따라서, 16개의 액세스 레지스터는 임의의 한 시점에서 1차 인스트럭션 공간 및 최대 15개의 다른 공간을 지정할 수 있다.
프로그램 상태 워드( PSW )
프로그램 상태 워드는 인스트럭션 시퀀싱을 제어하고 CPU의 상태를 결정하도록 사용된 인스트럭션 어드레스, 조건 코드, 및 다른 정보를 포함한다. 활성 또는 제어 프로그램 상태 워드는 현재의 프로그램 상태 워드라 지칭된다. 이것은 현재 실행되는 프로그램을 통제한다.
CPU는 예외 조건 및 외부 자극에 응답하여 CPU가 다른 프로그램으로 신속하게 스위칭하도록 허용하는 인터럽트 성능을 갖는다. 인터럽트가 발생할 때, CPU는 인터럽트의 특정의 클래스를 위해, 현재의 프로그램 상태 워드를 오래된 프로그램 상태 워드 위치라 지칭되는 할당된 저장 위치에 배치한다. CPU는 제 2 할당된 저장 위치로부터 새로운 프로그램 상태 워드를 인출한다. 새로운 프로그램 상태 워드는 실행될 다음 프로그램을 결정한다. 인터럽트를 프로세스하는 것을 종료할 때, 인터럽트를 처리하는 프로그램은 현재의 프로그램 상태 워드에 대해 오래된 프로그램 상태 워드를 리로드할 수 있어, 인터럽트된 프로그램이 계속될 수 있다.
인터럽트의 6개의 클래스, 즉, 외부, I/O, 기계 클록, 프로그램, 재개 및 감독자 호출이 존재한다. 각각의 클래스는 실제 저장 장치에 영구적으로 할당된 개별적인 쌍의 오래된 프로그램 상태 워드 및 새로운 프로그램 상태 워드 위치를 갖는다.
현재의 프로그램 상태 워드
CPU 내의 현재의 프로그램 상태 워드는 현재 활성 프로그램의 실행을 위해 요구된 정보를 포함한다. 프로그램 상태 워드는 128 비트 길이이고 인스트럭션 어드레스, 조건 코드, 및 다른 제어 필드를 포함한다. 일반적으로, 프로그램 상태 워드는 인스트럭션 시퀀싱을 제어하고 현재 실행되는 프로그램과 관련하여 CPU의 상태의 대다수를 유지하고 표시하도록 사용된다. 추가적인 제어 및 상태 정보는 제어 레지스터 및 영구적으로 할당된 저장 위치에 포함된다. CPU의 상태는 새로운 프로그램 상태 워드 또는 프로그램 상태 워드의 일부분을 로딩함으로써 변경될 수 있다.
CPU의 상태를 보존하기 위해 현재의 프로그램 상태 워드를 저장하고, 그 다음에 새로운 프로그램 상태 워드를 로딩함으로써 CPU의 인터럽트 동안 제어가 스위칭된다. LOAD PSW 또는 LOAD PSW EXTENDED의 실행, 또는 초기 프로그램 로딩 시퀀스의 성공적인 완료는 새로운 프로그램 상태 워드를 도입한다. 인스트럭션 어드레스는 순차적인 인스트럭션 실행에 의해 업데이트되고 성공적인 브랜치로 대체된다. 프로그램 상태 워드의 부분에 대해 동작하는 다른 인스트럭션이 제공된다.
프로그램 상태 워드를 변경하는 인스트럭션의 인터럽트 또는 실행이 완료될 때 새로운 또는 변경된 프로그램 상태 워드는 활성으로 된다(즉, 현재의 프로그램 상태 워드에 도입된 정보는 CPU를 통해 제어를 행함). 프로그램 상태 워드를 변경하는 인스트럭션과 연관된 프로그램 이벤트 기록(PER)에 대한 인터럽트는 연산의 시작에서 유효인 PER 마스크의 제어 하에 발생한다. 프로그램 상태 워드의 비트 0-7은 통합적으로 시스템 마스크라 지칭된다. 일 실시예에서, 프로그램 상태 워드는 다음과 같은 포맷을 갖는다.
Figure pct00005
선택된 프로그램 상태 워드 필드의 기능의 간략한 개요는 다음과 같다.
DAT 모드 (T): 비트 5는 저장 장치를 액세스하도록 사용된 논리적 및 인스트럭션 어드레스의 암시적인 동적 어드레스 변환이 발생하는지를 제어한다. 비트 5가 0일 때, DAT는 오프이고, 논리적 및 인스트럭션 어드레스는 실제 어드레스로서 처리된다. 비트 5가 1일 때, DAT는 온이고, 동적 어드레스 변환 메커니즘이 호출된다.
PSW : 비트 8-11은 CPU에 의한 저장 참조를 위해 액세스 키를 형성한다. 키 제어 위치에 대해 참조가 행해지면, 정보가 저장될 때 또는 인출에 대해 보호되는 위치로부터 정보가 인출될 때 PSW 키는 저장 키와 일치한다. 그러나, MOVE TO PRIMARY, MOVE TO SECONDARY, MOVE WITH KEY, MOVE WITH SOURCE KEY 및 MOVE WITH DESTINATION KEY 각각의 피연산자 중 하나에 대해, PSW 키 대신에 피연산자로서 지정된 액세스 키가 사용된다.
어드레스 공간 제어( AS ): 비트 16 및 17은 프로그램 상태 워드 비트 5와 결합하여, 변환 코드를 제어한다.
조건 코드( CC ): 비트 18 및 19는 조건 코드의 2개의 비트이다. 조건 코드는 특정의 인스트럭션을 실행할 때에 획득된 결과에 따라, 0, 1, 2 또는 3으로 설정된다. 대부분의 산술 및 논리 연산뿐만 아니라, 몇몇 연산은 조건 코드를 설정한다. 인스트럭션 BRANCH ON CONDITION은 브랜치를 위한 기준으로서 조건 코드 값의 임의의 선택을 지정할 수 있다.
인스트럭션 어드레스: 프로그램 상태 워드의 비트 64-127은 인스트럭션 어드레스이다. 이 어드레스는 CPU가 대기 상태가 1임)가 아닌 한(프로그램 상태 워드의 비트 14가 1임), 실행될 다음 인스트럭션의 제일 왼쪽의 바이트의 위치를 지정한다.
어드레스 유형 및 포맷
1차 저장 장치를 어드레싱하기 위해, 3개의 기본 유형의 어드레스, 즉, 절대, 실제, 및 가상 어드레스가 인식된다. 어드레스는 저장 액세스 동안 어드레스에 적용되는 변환에 근거하여 구분된다. 어드레스 변환은 가상 어드레스를 실제 어드레스로 변환한다. 프리픽싱은 실제 어드레스를 절대 어드레스로 변환한다. 3개의 기본 어드레스 유형에 부가하여, 인스트럭션 및 현재의 모드에 따라, 3개의 기본 유형의 중 하나 또는 다른 유형이 처리되는 추가적인 유형이 정의된다.
절대 어드레스
절대 어드레스는 1차 저장 위치에 할당된 어드레스이다. 절대 어드레스는 그에 대해 수행된 임의의 변환 없이 저장 액세스에 대해 사용된다. 환경 설정에서 채널 서브시스템 및 모든 CPU는 동일한 절대 어드레스를 이용함으로써 공유된 1차 저장 위치를 참조한다. 이용 가능한 1차 저장 장치는 0에서 시작되는 통상적으로 할당된 연속적인 절대 어드레스이고, 어드레스는 완전한 경계 상에서의 완전한 4 킬로바이트 블록에서 할당된다. 물리적 위치에 할당되지 않은 블록에서 절대 어드레스를 사용하도록 시도가 행해질 때 예외가 인정된다. 몇몇 모델 상에서, 오퍼레이터가 절대 어드레스와 물리적 위치 사이의 대응 관계를 변경하도록 허용하는 저장 재구성 제어가 제공될 수 있다. 그러나, 임의의 한 시점에서, 물리적 위치는 2 이상의 절대 어드레스와 연관되지 않는다. 그들의 절대 어드레스에 따라 시퀀스된 바이트 위치로 구성되는 저장 장치는 절대 어드레스라 지칭된다.
실제 어드레스
실제 어드레스는 실제 저장 장치 내의 위치를 식별한다. 실제 어드레스가 1차 저장 장치에 대한 액세스를 위해 사용될 때, 실제 어드레스를 형성하도록, 프리픽싱에 의해 변환된다. 임의의 순간에서 환경 설정에서의 각각의 CPU에 대해 절대 어드레스 매핑에 대한 하나의 실제 어드레스가 존재한다. 1차 저장 장치를 액세스하도록 CPU에 의해 실제 어드레스가 사용될 때, 프리픽싱에 의해 절대 어드레스로 변환될 수 있다. 특정의 변환은 CPU에 대한 프리픽스 레지스터 내의 값에 의해 정의된다. 그들의 실제 어드레스에 따라 시퀀스된 바이트 위치로 구성되는 저장 장치는 실제 저장 장치에서 실제 어드레스라 지칭된다.
가상 어드레스
가상 어드레스는 가상 저장 장치 내의 위치를 식별한다. 가상 어드레스가 1차 저장 장치에 대한 액세스를 위해 사용될 때, 절대 어드레스를 형성하도록, 프리픽싱이 실시될 수 있는 실제 어드레스에 대해, 또는 직접적으로 절대 어드레스에 대해, 동적 어드레스 변환에 의해 변환된다.
1차 가상 어드레스
1차 가상 어드레스는 PASCE(Primary Address Space Control Element)에 의해 변환되는 가상 어드레스이다. 논리적 어드레스는 1차 공간 모드에 있을 때 1차 가상 어드레스로서 처리된다. 인스트럭션 어드레스는 1차 공간 모드, 2차 공간 모드, 또는 액세스 레지스터 모드에 있을 때 1차 가상 어드레스로서 처리된다. MOVE TO PRIMARY의 제 1 피연산자 어드레스 및 MOVE TO SECONDARY의 제 2 피연산자 어드레스는 1차 가상 어드레스로서 처리된다.
2차 가상 어드레스
2차 가상 어드레스는 SASCE(Secondary Address Space Control Element)에 의해 변환되는 가상 어드레스이다. 논리적 어드레스는 2차 공간 모드에 있을 때 2차 가상 어드레스로서 처리된다. MOVE TO PRIMARY의 제 2 피연산자 어드레스 및 MOVE TO SECONDARY의 제 1 피연산자 어드레스는 2차 가상 어드레스로서 처리된다.
AR 지정 가상 어드레스
AR(Access Register) 지정 가상 어드레스는 ARASCE에 의해 변환되는 가상 어드레스이다. 논리 어드레스는 액세스 레지스터 모드에 있을 때 AR 지정 어드레스로서 처리된다.
홈 가상 어드레스
홈 가상 어드레스는 HASCE(Home Address Space Control Element)에 의해 변환되는 가상 어드레스이다. 논리 어드레스 및 인스트럭션 어드레스는 홈 공간 모드에 있을 때 홈 가상 어드레스로서 처리된다.
인스트럭션 어드레스
저장 장치로부터의 인스트럭션을 인출하도록 사용된 어드레스는 인스트럭션 어드레스라 지칭된다. 인스트럭션 어드레스는 실제 모드에서 실제 어드레스로서, 1차 공간 모드, 2차 공간 모드 및 액세스 레지스터 모드에서 1차 공간 어드레스로서, 홈 공간 모드에서 홈 가상 어드레스로서 처리된다. 현재의 프로그램 상태 워드에서의 인스트럭션 어드레스 및 EXECUTE의 타겟 어드레스가 인스트럭션 어드레스이다.
유효 어드레스
몇몇 상황에서, "유효 어드레스"란 용어를 사용하는 것이 편리하다. 유효 어드레스는 동적 어드레스 변환 또는 프리픽싱에 의해 임의의 변환이 수행되기 이전에 존재하는 어드레스이다. 유효 어드레스는 레지스터 내에 직접 지정될 수 있거나 또는 어드레스 산술로부터 초래될 수 있다. 어드레스 산술은 기본 및 변위의 어드레스이거나 기본, 인덱스 및 변위의 어드레스이다.
프리픽싱
프리픽싱은 각각의 CPU에 대해 실제 어드레스 0-8191의 범위를 절대 저장 장치 내의 상이한 블록에 할당하는 성능을 제공하여, 특히 인터럽트의 프로세싱 시에, 최소의 간섭으로 동시에 동작하도록 1차 저장 장치를 공유하는 2 이상의 CPU를 허용한다. 프리픽싱은 CPU에 대해 프리픽스 레지스터의 비트 위치 0-50의 값에 의해 식별된 8K 바이트 절대 어드레스(프리픽스 영역)에 대해 범위 0-8191 내의 실제 어드레스가 1 대 1 대응하고, 프리픽스 레지스터 내의 값에 의해 식별된 실제 어드레스 블록이 절대 어드레스 0-8191에 대해 1 대 1 대응하도록 한다. 나머지 실제 어드레스는 대응하는 절대 어드레스와 동일하다. 이 변환은 각각의 CPU가 모든 1차 저장 장치를 액세스하도록 하고, 다른 CPU의 프리픽스 레지스터에 의해 지정된 제 1 8K 바이트 및 위치를 포함한다.
프리픽스는 프리픽스 레지스터의 비트 위치 0-50에 포함된 51 비트 양이다. 일 실시예에서, 프리픽스 레지스터는 다음과 같은 포맷을 갖는다.
Figure pct00006
프리픽싱이 적용될 때, 실제 어드레스는 실제 어드레스의 비트 0-50에 따라, 다음과 같은 규칙 중 하나를 이용함으로써 절대 어드레스로 변환된다.
어드레스의 비트 0-50은, 모두 0인 경우, 프리픽스의 비트 0-50으로 대체된다.
어드레스의 비트 0-50은, 프리픽스의 비트 0-50인 경우, 0으로 대체된다.
어드레스의 비트 0-50은, 모두 0이 아니고, 프리픽스의 비트 0-50이 아닌 경우, 변경되지 않은 채로 유지된다.
저장 장치에 대해 제공된 어드레스만이 프리픽싱에 의해 변환된다. 어드레스 소스의 콘텐츠는 변경되지 않은 채로 유지된다.
실제 어드레스와 절대 어드레스 사이의 구분은 프리픽스 레지스터가 모두 0을 포함하는 경우이더라도 행해지며, 이러한 경우에 실제 어드레스 및 그 대응하는 절대 어드레스가 식별된다.
도 13은 실제 및 절대 어드레스 사이의 관계를 도시한다.
어드레스 공간은 각각의 수가 저장 장치 내의 바이트 위치와 연관되도록 하는 특정의 변환 파라미터와 함께, 연속적인 시퀀스의 정수(가상 어드레스)이다. 시퀀스는 0에서 시작하고 좌측으로부터 우측으로 진행한다.
가상 어드레스가 1차 저장 장치를 액세스하도록 CPU에 의해 사용될 때, 동적 어드레스 변환(DAT)에 의해 실제 또는 절대 어드레스로 먼저 변환된다. 실제 어드레스는 절대 어드레스를 형성하기 위한 프리픽싱이 또한 실시될 수 있다. DAT는 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블, 세그먼트 테이블 및 페이지 테이블을 변환 파라미터로서 사용할 수 있다. 특정의 어드레스 공간에 대한 최상위 레벨 테이블의 지정(기점 및 길이)은 ASCE라 지칭되며, 제어 레지스터에서 또는 액세스 레지스터에 의해 지정된 바와 같이 DAT에 의해 사용하는 것으로 발견되었다. 이와 달리, 어드레스 공간에 대한 ASCE는 실제 공간 지정일 수 있고, 이 실제 공간 지정은 실제 어드레스로서 처리하고 임의의 테이블을 이용하지 않고 DAT가 간단히 가상 어드레스를 변환하는 것을 표시한다.
DAT는 상이한 제어 레지스터 내의 ASCE 또는 액세스 레지스터에 의해 지정된 ASCE를 상이한 시점에서 사용한다. 선택은 현재의 프로그램 상태 워드에 지정된 변환 모드에 의해 결정된다. 4개의 변환 모드, 즉, 1차 공간 모드, 2차 공간 모드, 액세스 레지스터 모드 및 홈 공간 모드가 이용 가능하다. 변환 모드에 따라 상이한 어드레스 공간이 변환 가능하다.
CPU가 1차 공간 모드 또는 2차 공간 모드에 있는 임의의 순간에서, CPU는 2개의 인접 공간, 즉, 1차 어드레스 공간 및 2차 어드레스 공간에 속하는 가상 어드레스를 변환할 수 있다. CPU가 액세스 레지스터 모드에 있는 임의의 순간에서, 이는 16개 한도의 어드레스 공간, 즉, 1차 어드레스 공간 및 15개 한도의 AR 지정 어드레스 공간에 속하는 가상 어드레스를 변환할 수 있다. CPU가 홈 공간 모드에 있는 임의의 순간에서, 이는 홈 어드레스 공간의 가상 어드레스를 변환할 수 있다.
1차 어드레스 공간은 PASCE(Primary Address Space Control Element)에 의해 변환되는 1차 가상 어드레스로 구성되므로 이와 같이 식별된다. 마찬가지로, 2차 어드레스 공간은 SASCE(Secondary Address Space Control Element)C에 의해 변환된 2차 가상 어드레스로 구성된다. AR 지정 어드레스 공간은 ARSCE(Access Register specified Secondary Address Space Control Element)에 의해 변환된 AR 지정 가상 어드레스로 구성되고, 홈 어드레스 공간은 HASCE(Home Address Space Control Element)에 의해 변환된 홈 가상 어드레스로 구성된다. 1차 및 2차 ASCE는 제어 레지스터 1 및 7에 각각 있다. AR 지정 ASCE는 제어 레지스터 1 및 7에 있거나, 또는 ASN 제 2 테이블 엔트리라 지칭되는 테이블 엔트리에 있을 수 있다. HASCE는 제어 레지스터 13에 있다.
동적 어드레스 변환
동적 어드레스 변환은 (예를 들어, 저장 참조 동안) 가상 어드레스를 대응하는 1차 메모리 어드레스(이 실시예에서 실제 어드레스 또는 절대 어드레스)로 변환하는 프로세스이다. 가상 어드레스는 1차 가상 어드레스, 2차 가상 어드레스, 액세스 레지스터 지정 가상 어드레스, 또는 홈 가상 어드레스일 수 있다. 이들 어드레스는 PASCE, SASCE, AR 지정 ASCE, 또는 HASCE에 의해 각각 변환된다. 적절한 ASCE의 선택 후에, 변환 프로세스는 모두 4 유형의 가상 어드레스에 대해 동일하다.
어드레싱 변환 모드
유효 어드레스는 동적 어드레스 변환 또는 프리픽싱에 의해 임의의 변환이 수행되기 이전에 존재하는 어드레스(가상 어드레스)이다. 동적 어드레스 변환을 제어하는 프로그램 상태 워드 내의 3개의 비트는 DAT 모드 비트인 비트 5, 및 어드레스 공간 제어 비트인 비트 16과 17이다. DAT 모드 비트가 0이면, DAT는 오프이고, CPU는 실제 모드이다. DAT 모드 비트가 1이면, DAT는 온이고, CPU는 어드레스 공간 제어 비트에 의해 지정된 변환 모드에 있으며, 이진수 00은 1차 공간 모드를 지정하고, 이진수 01은 2차 레지스터 모드를 지정하며, 이진수 10은 2차 공간 모드를 지정하고, 이진수 11은 홈 공간 모드를 지정한다. 각종 모드가 각각의 모드에서 어드레스의 처리와 함께 이하에 도시된다.
Figure pct00007
프로그램 상태 워드는 어드레싱 모드를 나타내는 2 비트를 부분적으로 제공하는 128 비트 워드이다. 일 실시예에서, 비트 31은 강화된 어드레싱 모드(EA) 비트이고 비트 32는 베이스 어드레싱 모드(BA) 비트이다. 이들 2 비트는 어드레스의 크기를 나타낸다. 이들 2개의 비트 각각의 상태는 이진수(1 또는 0)이다. EA 비트가 0이고 BA 비트가 0이면 24 비트 어드레싱이 표시된다. 24 비트 어드레싱이 표시되면, 64 비트 워드(64 비트 개체는 통상적으로 더블워드라 지칭됨)의 비트 40-63은 어드레스가 위치하는 비트이다. 인스트럭션 어드레스가 128 비트 엔트리(쿼드워드)의 제 2의 64 비트를 점유하는 경우, 프로그램 상태 워드 내의 비트 위치는 다음과 같다. 24 비트 모드에서, 인스트럭션 어드레스는 프로그램 상태 워드의 비트 104-127에 있다. 31 비트 모드에서, 인스트럭션 어드레스는 프로그램 상태 워드의 비트 97-127에 있다. 64 비트 모드에서, 인스트럭션 어드레스는 프로그램 상태 워드의 비트 64-127에 있다. EA 비트가 0이고 BA 비트가 1이면 31 비트 어드레싱이 표시된다. 적절한 64 비트 워드는 비트 위치 33-63에 위치하는 31 비트 어드레스를 포함한다. EA 비트가 0이고 BA 비트가 1이면 64 비트 워드의 전체 64 비트가 어드레스를 포함하는 비트 0-63이다. 그렇지 않은 경우, 예외 조건이 표시된다. 일단 어드레싱 모드가 획득되면, ASCE는 결정될 필요가 있다.
어드레스 공간 제어 요소( ASCE )
이제 도 3을 참조하면, 가상 어드레스의 동적 어드레스 변환을 위해 유효 ASCE를 결정하기 위해 프로그램 상태 워드가 어떻게 사용되는지의 일 실시예를 도시한다. ASCE는, 예를 들어, 2 기가바이트(기가 = 230) 어드레스 공간을 지정할 수 있다. 또는 이것은, 예를 들어, 4 테라바이트(테라 = 240), 8 페타바이트(페타 = 250), 또는 16 엑사바이트(엑사 = 260) 어드레스 공간을 지정할 수 있다. 또는, 이것은 실제 공간 지정을 지정할 수 있다. 실제 공간 지정은 하나 이상의 어드레스 변환 테이블을 참조하지 않고 저장 장치 내의 실제 어드레스 가상 어드레스가 처리되도록 한다.
프로그램 상태 워드(300)는 변환(T) 비트(302)와 어드레스 공간(AS) 비트(304)를 포함한다. (306)에서, 변환(T) 비트가 0이면 어드레스가 실제 어드레스 326이다. (308)에서, 어드레스 공간(AS)이 0(이진수 00)이면 이 가상 어드레스에 대한 유효 ASCE는 PASCE(310)이다. (312)에서, 어드레스 공간(AS)이 1(이진수 01)이면 유효 ASCE는 AR 지정 ASCE(314)이다. (316)에서, 어드레스 공간(AS)이 2(이진수 10)이면 유효 ASCE는 SASCE(318)이다. 그렇지 않은 경우, 어드레스 공간(AS)이 3(이진수 11)이면 유효 ASCE는 HASCE(322)이다.
유효 ASCE의 선택 후에, 동적 어드레스 변환의 프로세스는 바람직하게 모두 4 유형의 가상 어드레스에 대해 동일하다.
세그먼트 테이블 지정 또는 영역 테이블 지정은 실제 또는 절대 저장 장치에서 운영 체제에 의해 수립된 테이블에 의해 변환이 수행되도록 한다. 실제 공간 지정은 저장 장치 내의 테이블을 사용하지 않고 가상 어드레스가 간간하게 실제 어드레스로서 처리되도록 한다.
변환 프로세스에서, 세그먼트 테이블 지정 또는 영역 테이블 지정을 이용할 때, 3 유형의 유닛의 정보, 즉, 영역, 세그먼트, 및 페이지가 인식된다. 영역은 2 기가바이트에 걸치고 2 기가바이트 경계에서 시작하는 순차적인 가상 어드레스의 블록이다. 세그먼트는 1 메가바이트에 걸치고 1 메가바이트 경계에서 시작하는 순차적인 가상 어드레스의 블록이다. 페이지는 4 킬로바이트에 걸치고 4 킬로바이트 경계에서 시작하는 순차적인 가상 어드레스의 블록이다.
가상 어드레스 포맷
가상 어드레스의 변환은 실제 또는 절대 어드레스를 획득하도록 변환 테이블의 계층의 복수의 변환 테이블을 참조하는 것을 수반할 수 있다. 실제 어드레스는 절대 어드레스를 형성하도록 프리픽싱 연산이 더 실시될 수 있다. 가상 어드레스는 변환 테이블의 계층의 변환 테이블 내의 엔트리에 대한 인덱스를 포함한다. 다라서, 가상 어드레스는 4개의 픽싱 필드로 분할된다. 비트 0-32은 영역 인덱스(RX)라 지칭되고, 비트 33-43은 세그먼트 인덱스(SX)라 지칭되며, 비트 44-51은 페이지 인덱스(PX)라 지칭되고, 비트 52-63은 바이트 인덱스(BX)라 지칭된다. 일 실시예에서, 가상 어드레스는 다음과 같은 포맷을 갖는다.
Figure pct00008
ASCE에 의해 결정된 바와 같이, 가상 어드레스 공간은 하나의 영역으로 구성되는 2 기가바이트 공간일 수 있거나, 또는 8 기가바이트 한도의 영역으로 구성되는 16개의 엑사바이트 한도의 공간일 수 있다. 2 기가바이트 어드레스 공간에 적용하는 가상 어드레스의 RX 부분은 모두 0이어야 하며, 그렇지 않은 경우 예외가 인정된다. 가상 어드레스의 RX 부분은 3개의 필드로 자체 분할된다. 비트 0-10은 영역 제 1 인덱스(RFX)라 지칭되고, 비트 11-21은 영역 제 2 인덱스(RSX)라 지칭되며, 비트 22-32는 영역 제 3 인덱스(RTX)라 지칭된다. 일 실시예에서, 가상 어드레스의 비트 0-32는 다음과 같은 포맷을 갖는다.
Figure pct00009
RTX가 제일 왼쪽의 유효 부분인 가상 어드레스(42 비트 어드레스)는 4 테라바이트(2048 영역)를 어드레싱할 수 있고, RSX가 제일 왼쪽의 유효 부분인 가상 어드레스(53 비트 어드레스)는 8 페타바이트(4,193,044 영역)를 어드레싱할 수 있고, RFX가 제일 왼쪽의 유효 부분인 가상 어드레스(64 비트 어드레스)는 16 엑사바이트(8,589,934,592 영역)를 어드레싱할 수 있다.
RX가 0인 가상 어드레스는 2개의 변환 테이블, 즉, 세그먼트 테이블 및 페이지 테이블에 의해 실제 어드레스로 변환될 수 있다. 인에이블된 EDAT 장치에 의해, 변환은 단지 세그먼트 테이블로 완성될 수 있다. RFX는 0이 아닐 수 있고, 그 경우에 영역 제 1 테이블, 영역 제 2 테이블 및 영역 제 3 테이블이 요구된다. RFX가 0이면, RSX는 0이 아닐 수 있고, 영역 제 2 테이블 및 영역 제 3 테이블이 요구된다. RFX 및 RSX가 0이면, RTX는 0이 아닐 수 있고, 영역 제 3 테이블이 요구된다.
어드레스 공간에 대한 ASCE가 어드레스 공간에 대한 참조를 변환하도록 요구된 테이블의 최상위 레벨(영역 제 1 테이블로 시작되어 세그먼트 테이블로 아래로 계속됨)을 지정하는 않는 경우 예외가 인정된다.
가상 어드레스의 동적 변환
이제 도 4를 참조하면, 가상 어드레스의 변환에 사용된 변환 테이블의 계층에서 제 1 변환 테이블을 결정하도록 도 3에서 결정된 유효 ASCE가 사용되는 일 실시예를 도시한다.
일 실시예에서, 제어 레지스터 1(CR1)은 PASCE를 포함한다. 제어 레지스터 7(CR7)은 SASCE를 포함한다. 제어 레지스터 13(CR13)은 HASCE를 포함하고, 애게스 레지스터 변환(ART)에 의해 정의되는 어드레스 공간 제 2 테이블 엔트리(ASTE)는 AR 지정 ASCE를 포함한다. 유효 ASCE(400)는 이들 위치 중 하나로부터 선택된다.
유효 ASCE(400)의 제 1 부분은 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블 및 세그먼트 테이블을 지정하는 기점 어드레스를 포함하는 테이블 기점(402)을 포함한다. 테이블 기점(비트 0..51)은 가상 어드레스의 변환에 사용될 변환 테이블의 계층에서 최상위 변환 테이블의 64 비트 기점 어드레스를 형성하도록 12개의 이진수 0이 첨부된다. 유효 ASCE(400)는 실제 공간 제어(R) 비트(404) 및 DT 비트(406)를 또한 포함한다. 실제 공간 제어(R) 비트가 0이면 DT 비트는 어느 특정의 기점 어드레스가 테이블 기점(402)인지를 결정하도록 선택기(408)에 의해 디코딩된다. DT 비트가 3(이진수 11)이면 테이블 기점(402)은 영역 제 1 테이블(410)을 지정한다. DT 비트가 2(이진수 10)이면 테이블 기점(402)은 영역 제 2 테이블(412)을 지정한다. DT 비트가 1(이진수 01)이면 테이블 기점(402)은 영역 제 3 테이블(414)을 지정한다. 그렇지 않은 경우, DT 비트가 0(이진수 00)이면 테이블 기점(402)은 세그먼트 테이블(416)을 지정한다.
영역 제 1 테이블, 영역 제 2 테이블, 또는 영역 제 3 테이블은 간단히 영역 테이블이라 지칭된다. 마찬가지로, 영역 제 1 테이블 지정, 영역 제 2 테이블 지정, 또는 영역 제 3 테이블 지정은 영역 테이블 지정이라 지칭된다. 영역, 세그먼트 및 페이지 테이블은 실제 저장 장치의 현재의 할당을 반영한다. 페이지는 가상 저장 장치의 할당에 대해 사용된 용어이다. 실제 저장 장치는 고정 블록으로 할당된다. 순차적인 가상 어드레스의 세트에 할당되다 하더라도 페이지는 실제 저장 장치에 인접할 필요가 없다.
변환에 사용된 ASCE가 영역 제 1 테이블 지정일 때, 변환 프로세스는, 예를 들어, 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블, 세그먼트 테이블 및 선택적으로 페이지 테이블을 이용하여 멀티 레벨 룩업을 포함한다. 이들 테이블은 실제 또는 절대 저장 장치에 상주한다. ASCE가 영역 제 2 테이블 지정, 영역 제 3 테이블 지정, 또는 세그먼트 테이블 지정일 때, 지정된 레벨 위의 테이블 레벨에서의 룩업은 생략되고, 보다 높은 레벨 테이블 자체가 생략된다.
이제 도 5a를 참조하면, 변환 테이블의 계층을 이용하여 가상 어드레스의 동적 어드레스 변환의 부분의 일 실시예를 도시한다.
도 4의 유효 ASCE(400)는 지정 유형(DT) 비트(406)를 포함한다. ASCE의 실제 공간 제어(R)(404) 비트가 0이면 DT 비트는 어느 어드레스 테이블 기점(402)이 지정하는지를 결정하도록 선택기(408)에 의해 디코딩된다. 실제 공간 제어(R) 비트가 1이면 도시된 바와 같이 도 5b의 노드 D(504)에 동적 어드레스 변환 테이블이 위치한다.
선택기(408)에서 DT 비트가 3(이진수 11)이면 변환 테이블의 계층에서 지정된 제 1 테이블이 영역 제 1 테이블이다. (502)에서, 테이블 기점(402)은 가상 어드레스의 영역 제 1 인덱스(RFX)(508) 부분으로, 영역 제 1 테이블 내의 참조 영역 제 1 테이블 엔트리(506)에 산술적으로 추가된다. 테이블 기점은 (우측에 12개의 0이 첨부되거나, 또는 4096이 승산되어) 8이 승산된 인덱스(또는 우측에 3개의 0이 첨부된 인덱스)의 부분에 추가된다. 영역 제 1 테이블 엔트리는 변환에 사용된 변환 테이블의 계층에서 다음의 하측 테이블에 대해 영역 제 2 테이블 기점(504)을 포함한다. 영역 제 1 테이블에 대한 다음의 하측 테이블은 영역 제 2 테이블이다. 영역 제 1 테이블 엔트리의 무효(I) 비트가 1이면 영역 제 1 테이블 엔트리는 무효이고 변환에 사용될 수 없다. 예외 조건이 표시된다.
선택기(408)에서 DT 비트가 2(이진수 10)이면 변환 테이블의 계층에서 지정된 제 1 테이블이 영역 제 2 테이블이다. (510)에서, 테이블 기점(402)은 가상 어드레스의 영역 제 2 인덱스(RSX)(516) 부분으로, 영역 제 2 테이블 내의 참조 영역 제 1 테이블 엔트리(514)에 산술적으로 추가된다. 테이블 기점은 (우측에 12개의 0이 첨부되거나, 또는 4096이 승산되어) 8이 승산된 인덱스(또는 우측에 3개의 0이 첨부된 인덱스)의 부분에 추가된다. 영역 제 2 테이블 엔트리는 변환에 사용된 변환 테이블의 계층에서 다음의 하측 테이블에 대해 영역 제 3 테이블 기점(512)을 포함한다. 영역 제 2 테이블에 대한 다음의 하측 테이블은 영역 제 3 테이블이다. 영역 제 2 테이블 엔트리의 무효(I) 비트가 1이면 영역 제 2 테이블 엔트리는 무효이고 예외 조건이 표시된다.
선택기(408)에서 DT 비트가 1(이진수 01)이면 변환 테이블의 계층에서 지정된 제 1 테이블이 영역 제 3 테이블이다. (518)에서, 테이블 기점(402)은 가상 어드레스의 영역 제 3 인덱스(RTX)(524) 부분으로, 영역 제 3 테이블 내의 참조 영역 제 3 테이블 엔트리(522)에 산술적으로 추가된다. 테이블 기점은 (우측에 12개의 0이 첨부되거나, 또는 4096이 승산되어) 8이 승산된 인덱스(또는 우측에 3개의 0이 첨부된 인덱스)의 부분에 추가된다. 영역 제 2 테이블 엔트리는 변환에 사용된 변환 테이블의 계층에서 다음의 하측 테이블에 대해 세그먼트 테이블 기점(520)을 포함한다. 영역 제 3 테이블에 대한 다음의 하측 테이블은 세그먼트 테이블이다. 영역 제 3 테이블 엔트리의 무효(I) 비트가 1이면 영역 제 3 테이블 엔트리는 무효이고 예외 조건이 표시된다.
선택기(408)에서 DT 비트가 0(이진수 00)이면 변환 테이블의 계층에서 지정된 제 1 테이블이 세그먼트 테이블이다. (526)에서, 테이블 기점(402)은 가상 어드레스의 세그먼트 인덱스(SX(532)) 부분으로, 세그먼트 테이블 내의 참조 세그먼트 테이블 엔트리(530)에 산술적으로 추가된다. 테이블 기점은 (우측에 12개의 0이 첨부되거나, 또는 4096이 승산되어) 8이 승산된 인덱스(또는 우측에 3개의 0이 첨부된 인덱스)의 부분에 추가된다. 세그먼트 테이블 엔트리는 (528)에 도시된 페이지 테이블에 대한 기점 어드레스 또는 세그먼트 프레임 절대 어드레스(SFAA)를 포함한다. 세그먼트 테이블 엔트리의 무효(I) 비트가 1이면 세그먼트 테이블 엔트리는 무효이고 예외 조건이 표시된다.
(538)에서, 세그먼트 테이블의 STE 포맷 제어(FC) 비트가 검사된다. STE 포맷 제어가 1이면 세그먼트 테이블 엔트리(530)는 세그먼트 프레임 절대 어드레스(SFAA)를 포함하고 동적 어드레스 변환은 도 5c에서 노드(562)를 참조하여 계속된다. 그렇지 않은 경우, 세그먼트 테이블로부터 획득된 세그먼트 테이블 엔트리는 페이지 테이블 기점 어드레스를 포함하고 동적 어드레스 변환은 도 5b에서 노드(560)를 참조하여 계속된다.
이하 도 5b를 참조한다. 세그먼트 테이블 엔트리 내의 STE 포맷 제어가 0이면 세그먼트 테이블로부터 획득된 세그먼트 테이블 엔트리가 변환 테이블의 계층에서 다음의 하측 테이블에 대한 기점 어드레스를 포함한다. 세그먼트 테이블에 대한 다음의 하측 테이블은 페이지 테이블이다. (538)에서, 도 5a의 세그먼트 테이블 엔트리(530)로부터 획득된 페이지 테이블 엔트리(528)는 가상 어드레스의 페이지 인덱스(PX)(534) 부분으로, 페이지 테이블 내의 참조 페이지 테이블 엔트리(542)에 산술적으로 추가된다. 페이지 테이블 엔트리는 페이지 프레임 실제 어드레스(PFRA)(546)를 포함한다. (548)에서, 페이지 프레임 실제 어드레스의 제일 왼쪽의 비트가 연계될 때, 가상 어드레스의 바이트 인덱스(BX(536)) 부분으로, 64 비트 실제 어드레스(550)가 획득된다. 실제 64 비트 어드레스는 절대 어드레스를 형성하기 위해 프리픽싱 연산이 실시될 수 있다. 변환된 가상 어드레스는 1차 저장 장치 또는 메모리 내의 원하는 4 킬로바이트(4096 바이트) 데이터 블록을 참조한다.
바람직하게, 메모리 어드레스에 대한 가상 어드레스의 동적 변환에 사용된 정보는 가상 어드레스와 연관된 메모리 블록의 어드레스와 함께 변환 위치 버퍼 엔트리에 저장된다. 후속의 저장 액세스는 ASCE 정보 및 가상 어드레스 정보를 변환 색인 버퍼 태그와 비교함으로써 가상 어드레스를 신속하게 변환할 수 있다. 태그가 가상 어드레스의 태그인 것으로 발견되면, 수반된 각각의 변환 테이블의 저속 순차적인 액세스를 수행하는 대신에 메모리 블록의 변환 색인 버퍼 어드레스가 사용될 수 있다. 일 실시예에서, 페이지 프레임 실제 어드레스(PFRA)는, 예를 들어, ASCE와, 가상 어드레스의 RX, SX 및 PX 부분으로 구성되는 태그와 함께, 변환 색인 버퍼(544)의 엔트리에 저장된다. 이후 이 가상 어드레스의 후속적인 변환은 변환 색인 버퍼에 저장된 정보로부터 도출된다.
이하 도 5c를 참조한다. 세그먼트 테이블 엔트리 내의 STE 포맷 제어가 1이면 세그먼트 테이블 엔트리가 세그먼트 프레임 절대 어드레스(SFAA)(552)를 포함한다. (554)에서, 세그먼트 프레임 절대 어드레스의 제일 왼쪽의 비트가 연계될 때, 페이지 인덱스(534) 부분 및 바이트 인덱스(536)) 부분으로, 64 비트 절대 어드레스(556)가 획득된다. 변환된 가상 어드레스는 1차 저장 장치 또는 메모리 내의 원하는 대형의 데이터 블록을 참조한다. 대형의 데이터 블록은 적어도 1 메가바이트(1,048,576) 크기이다.
일 실시예에서, 페이지 프레임 실제 어드레스(PFRA)는 가상 어드레스의 RX 및 SX 부분과 함께, 변환 색인 버퍼(544)에 저장된다. 이후 이 가상 어드레스의 후속적인 변환은 변환 색인 버퍼에 사용된 정보로부터 도출된다.
변환 테이블 엔트리 포맷
변환에 사용된 변환 테이블의 계층에서 각종 변환 테이블 엔트리의 실시예는 다음과 같다.
영역 테이블 엔트리
용어 "영역 테이블 엔트리"는 영역 제 1 테이블 엔트리, 영역 제 2 테이블 엔트리, 또는 영역 제 3 테이블 엔트리를 의미한다. 영역 제 1 테이블, 영역 제 2 테이블, 또는 영역 제 3 테이블로부터 인출된 엔트리는 다음과 같은 포맷을 갖는다. 엔트리를 포함하는 테이블의 레벨(제 1, 제 2, 또는 제 3)은 엔트리 내의 테이블 유형(TT)에 의해 식별된다.
일 실시예에서, 영역 제 1 테이블 엔트리, 영역 제 2 테이블 엔트리, 및 영역 제 3 테이블 엔트리의 포맷은 다음과 같다.
Figure pct00010
영역 제 2 테이블 기점, 영역 제 3 테이블 기점 및 세그먼트 테이블 기점: 영역 제 1 테이블 엔트리는 영역 제 2 테이블 기점을 포함한다. 영역 제 2 테이블 엔트리는 영역 제 3 테이블 기점을 포함한다. 영역 제 3 테이블 엔트리는 세그먼트 테이블 기점을 포함한다. 다음의 설명은 제 3 테이블 기점의 각각에 적용된다. 엔트리의 비트 0-51은 우측에 12개의 0이 첨부되어, 새로운 하측 레벨 테이블의 시작을 지정하는 64 비트 어드레스를 형성한다.
DAT 보호 비트(P): 강화된 DAT가 작용될 때, 비트 54는 각각의 후속의 영역 테이블 엔트리, 세그먼트 테이블 엔트리, 및 적용 가능한 경우, 변환에 사용된 페이지 테이블 엔트리의 DAT 보호 비트와 함께 OR 연산되는 것으로서 처리된다. 따라서, 비트가 1일 때, DAT 보호는 영역 테이블 엔트리에 의해 지정된 전체 영역 또는 영역들에 적용된다. 강화된 DAT 장치가 인스톨되지 않거나, 또는 장치가 인스톨되지만 강화된 DAT 가능 제어가 0일 때, 영역 테이블 엔트리의 비트 54가 무시된다.
영역 제 2 테이블 오프셋, 영역 제 3 테이블 오프셋 및 세그먼트 테이블 오프셋( TF ): 영역 제 1 테이블 엔트리는 영역 제 2 테이블 오프셋을 포함한다. 영역 제 2 테이블 엔트리는 영역 제 3 테이블 오프셋을 포함한다. 영역 제 3 테이블 엔트리는 세그먼트 테이블 오프셋을 포함한다. 다음과 같은 기술은 3개의 테이블 오프셋의 각각에 적용된다. 엔트리의 비트 56과 57은 테이블의 시작에서 손실되는 다음의 하측 레벨 테이블 부분의 길이를 지정한다. 즉, 비트는 다음의 하측 레벨 테이블에 실제로 존재하는 제 1 엔트리의 위치를 지정한다. 비트는 4,096 바이트의 유닛에서 손실 부분의 길이를 지정하여, 다수의 512 엔트리에서 손실 부분 변수의 길이를 형성한다. 4,096 바이트의 유닛에서, 손실 부분의 길이는 TF 값이다. 오프셋 필드의 콘텐츠는 길이 필드인 비트 62 및 63과 결합하여, 다음의 하측 레벨 테이블에 의해 변환될 가상 어드레스(RSX, RTX 또는 SX)의 부분이 테이블에 실제로 존재하는 엔트리를 지정하는지를 수립하도록 사용된다.
영역 무효 비트(I): 영역 제 1 테이블 엔트리 및 영역 제 2 테이블 엔트리 내의 비트 58은 엔트리와 연관된 영역 세트가 이용 가능한지를 제어한다. 영역 제 3 테이블 엔트리 내의 비트 58은 엔트리와 연관된 단일의 영역이 이용 가능한지를 제어한다. 비트 58이 0일 때, 어드레스 변환은 영역 테이블 엔트리를 이용함으로써 진행된다. 비트가 1일 때, 엔트리는 변환을 위해 사용될 수 없다.
테이블 유형 비트( TT ): 영역 제 1 테이블 엔트리, 영역 제 2 테이블 엔트리 및 영역 제 3 테이블 엔트리의 비트 60 및 61은 다음과 같이 엔트리를 포함하는 테이블의 레벨을 식별한다. 비트 60 및 61은 변환에 사용되는 ASCE인 테이블 지저으이 유형 및 현재까지 사용된 테이블 레벨의 수를 고려하여, 현재의 테이블 레벨을 식별해야 하며, 그렇지 않은 경우 변환 사양 예외가 인정된다. 다음의 테이블은 테이블 유형 비트를 나타낸다.
Figure pct00011
영역 제 2 테이블 길이, 영역 제 3 테이블 길이 및 세그먼트 테이블 길이( TL ): 영역 제 1 테이블 엔트리는 영역 제 2 테이블 길이를 포함한다. 영역 제 2 테이블 엔트리는 영역 제 3 테이블 길이를 포함한다. 영역 제 3 테이블 엔트리는 세그먼트 테이블 길이를 포함한다. 다음과 같은 기술은 3개의 테이블 길이의 각각에 적용된다. 엔트리의 비트 62와 63은 4,096 바이트의 유닛에서 다음의 하위 레벨 테이블의 길이를 지정하여, 다수의 512 엔트리에서 테이블 변수의 길이를 형성한다. 4,096 바이트의 유닛에서, 다음의 하위 레벨 테이블의 길이는 TL 값이다. 길이 필드의 콘텐츠는 오프셋 필드인 비트 56 및 57을 결합하여, 다음의 하측 레벨 테이블에 의해 변환될 가상 어드레스(RSX, RTX 또는 SX)의 부분이 테이블에 실제로 존재하는 엔트리를 지정하는지를 수립하도록 사용된다. 영역 테이블 엔트리의 모든 다른 비트 위치는 가능한 향후의 확장에 대해 예비할당되고, 0을 포함해야 하며, 그렇지 않은 경우, 프로그램은 향후에 호환 가능하게 동작하지 않을 수도 있다. 강화된 DAT가 적용될 때, 영역 테이블 엔트리의 예비할당된 비트 위치는 테이블 엔트리가 무효인 경우이더라도 0을 포함해야 한다.
세그먼트 테이블 엔트리
일 실시예에서, 강화된 DAT가 적용되지 않을 때, 또는 강화된 DAT가 적용되고 STE 포맷 제어인 세그먼트 테이블 엔트리의 비트 53이 0일 때, 세그먼트 테이블로부터 인출된 엔트리는 다음과 같은 포맷을 갖는다.
Figure pct00012
일 실시예에서, 강화된 DAT가 적용되고 STE 포맷 제어가 1일 때, 세그먼트로부터 인출된 엔트리는 다음과 같은 포맷을 갖는다.
Figure pct00013
세그먼트 테이블 엔트리 내의 선택된 필드는 다음과 같이 할당된다.
페이지 테이블 기점: 강화된 DAT가 적용되지 않을 때, 또는 강화된 DAT가 적용되고 STE 포맷 제어인 세그먼트 테이블 엔트리의 비트 53이 0일 때, 우측 상에 11개의 0이 첨부되어, 페이지 테이블의 시작을 지정하는 64 비트 어드레스를 형성한다. 이것은 어드레스가 실제인지 절대인지가 예측 불가능하다.
세그먼트 프레임 절대 어드레스( SFAA ): 강화된 DAT가 적용되고 STE 포맷 제어인 엔트리의 비트 0-43이 1일 때, 우측 상에 20개의 0이 첨부되어, 세그먼트의 64 비트 절대 어드레스를 형성한다.
ACCF 유효성 제어( AV ): 강화된 DAT가 적용되고 STE 포맷 제어가 1일 때, 비트 47은 액세스 제어 비트 및 인출 보호 비트(ACCF) 유효성 제어이다. AV 제어가 0일 때, 세그먼트 테이블 엔트리의 비트 48-52는 무시된다. AV 제어가 1일 때, 비트 48-52는 이하 기술된 바와 같이 사용된다.
액세스 제어 비트( ACC ): 강화된 DAT가 적용되고 STE 포맷 제어가 1이며, AV 제어가 1일 때, 세그먼트 테이블 엔트리의 비트 48-51은 어드레스에 적용되는 임의의 키 제어 액세스 체크에 대해 사용될 수 있는 액세스 제어 비트를 포함한다.
인출 보호 비트(F): 강화된 DAT가 적용되고 STE 포맷 제어가 1이며, AV 제어가 1일 때, 세그먼트 테이블 엔트리의 비트 52는 어드레스에 적용되는 임의의 키 제어 액세스 체크에 대해 사용될 수 있는 인출 보호 비트를 포함한다.
STE 포맷 제어( FC ): 강화된 DAT가 적용될 때, 비트 53은 세그먼트 테이블 엔트리에 대한 다음과 같은 포맷 제어이다.
FC 비트가 0일 때, 엔트리의 비트 0-52는 페이지 테이블 기점을 형성하고, 비트 55가 예비할당된다.
FC 비트가 1일 때, 엔트리의 비트 0-43은 세그먼트 프레임 절대 어드레스를 형성하고, 비트 47은 ACCF 유효성 제어이며, 비트 48-51은 액세스 제어 비트이고, 비트 52는 인출 보호 비트이며, 비트 55는 변경 기록 오버라이드이다. 강화된 DAT가 적용되지 않을 때, 비트 53이 무시된다.
DAT 보호 비트(P): 비트 54는 1일 때, DAT 보호가 전체 세그먼트에 적용됨을 나타낸다.
강화된 DAT가 적용되지 않을 때, 비트 54는 변환에 사용된 페이지 테이블 엔트리 내의 DAT 보호 비트와 OR 연산되는 것으로서 처리된다.
강화된 DAT가 적용될 때, 변환에 사용된 임의의 영역 테이블 엔트리 내의 DAT 보호 비트는 세그먼트 테이블 엔트리 내의 DAT 보호 비트와 OR 연산되는 것으로서 처리되며, STE 포맷 제어가 0일 때, STE 내의 DAT 보호 비트는 페이지 테이블 엔트리 내의 DAT 보호 비트와 OR 연산되는 것으로서 더 처리된다.
변경 기록 오버라이드 ( CO ): 강화된 DAT가 적용되고 STE 포맷 제어가 1일 때, 세그먼트 테이블 엔트리의 비트 53은 세그먼트에 대한 변경 기록 오버라이드이다. 강화된 DAT가 적용되지 않을 때, 또는 강화된 DAT가 적용되고 STE 포맷 제어가 0일 때, 세그먼트 테이블 엔트리의 비트 55가 무시된다.
세그먼트 무효 비트(I): 비트 58은 세그먼트 테이블 엔트리와 연관된 세그먼트가 이용 가능한지를 제어한다.
비트가 0일 때, 어드레스 변환은 세그먼트 테이블 엔트리를 이용함으로써 진행된다.
비트가 1일 때, 세그먼트 테이블 엔트리는 변환을 위해 사용될 수 없다.
공통 세그먼트 비트(C): 비트 59는 세그먼트 테이블 엔트리의 변환 색인 버퍼 복사본의 사용을 제어한다. 강화된 DAT가 적용되지 않을 때, 또는 강화된 DAT가 적용되고 포맷 제어가 0일 때, 비트 59는 세그먼트 테이블 엔트리에 의해 지정된 페이지 테이블의 변환 색인 버퍼 복사본의 사용을 또한 제어한다.
0은 비공개 세그먼트를 식별하며, 이 경우에, 세그먼트 테이블 엔트리 및 그 세그먼트 테이블 엔트리가 지정하는 임의의 페이지 테이블은 세그먼트 테이블 엔트리가 존재하는 세그먼트 테이블을 지정하는 세그먼트 테이블 기점과 관련해서만 사용될 수 있다.
1은 공통 세그먼트를 식별하며, 이 경우에, 세그먼트 테이블 엔트리 및 그 세그먼트 테이블 엔트리가 지정하는 임의의 페이지 테이블은, 상이한 세그먼트 테이블이 지정되더라도, 계속해서 세그먼트 인덱스에 대응하는 어드레스를 변환하는 데 사용될 수 있다.
그러나, 공통 세그먼트에 대한 세그먼트 테이블 엔트리 및 임의의 페이지 테이블의 변환 색인 버퍼 사본은 비공개 공간 제어, 비트 55가 변환에서 사용된 ASCE에서 1이거나, ASCE가 실제 공간 지정이면 사용가능하지 않다. 비공개 공간 제어가 사용되고 있는 ASCE에서 1인 경우에 세그먼트 테이블 엔트리가 변환 동안에 저장 장치로부터 인출되면 공통 세그먼트 비트는 0이어야 한다. 그렇지 않으면, 변환 지정 예외가 인정된다.
테이블 유형 비트( TT ): 세그먼트 테이블 엔트리의 비트 60 및 61은 엔트리를 포함하는 테이블의 레벨을 식별하는 00 이진수이다. 영역 테이블 엔트리 또는 세그먼트 테이블 엔트리에서 비트 60 및 61의 모든 가능한 값의 의미는 다음과 같다.
Figure pct00014
비트 60 및 61은 변환에 사용되고 있는 ASCE인 테이블 지정의 유형 및 지금까지 사용된 테이블 레벨의 수를 고려하는 정확한 테이블 레벨을 식별해야 하며, 그렇지 않으면, 변환 지정 예외가 인정된다. 세그먼트 테이블 엔트리의 모든 다른 비트 위치는 가능한 추후의 확장을 위해 예비할당되고 0을 포함해야 하며, 그렇지 않으면, 프로그램은 추후에 호환적으로 동작하지 않을 수 있다. 강화된 DAT가 적용되면, 세그먼트 테이블 엔트리의 예비할당된 비트 위치는 테이블 엔트리가 무효하더라도 0을 포함해야 한다.
페이지 테이블 엔트리
일 실시예에서, 페이지 테이블로부터 인출된 엔트리는 다음 포맷을 가져야 한다.
Figure pct00015
페이지 테이블 내의 선택된 필드는 다음과 같이 할당된다.
페이지 프레임 실제 어드레스( PERA ): 비트 0-51은 실제 저장 장치 어드레스의 제일 왼쪽의 비트이다. 이들 비트가 우측의 가상 어드레스의 12 비트 바이트 인덱스 필드와 연결되는 경우에, 64 비트 실제 어드레스가 획득된다.
페이지 무효 비트(I): 비트 54는 저장 액세스가 페이지 내에서 이루어질 수 있는지 여부를 제어한다. 비트가 0인 경우에, 어드레스 변환은 페이지 테이블 엔트리를 사용함으로써 진행된다. 비트가 1인 경우에, 페이지 테이블 엔트리는 변환에 사용될 수 없다.
DAT 보호 비트(P): 비트 54는 저장 액세스가 페이지 내에서 이루어질 수 있는지 여부를 제어한다. 이 보호 메커니즘은 키 제어 보호 외에 낮은 보호 메커니즘이다. 이 비트는 인출 액세스에 영향을 주지 않는다. 만일 비트가 0이면, 후속하는 추가적인 제약을 받기 쉬운 그 페이지에 저장이 허용된다.
DAT 보호 비트는 변환에 사용되는 세그먼트 테이블 엔트리에서 0이다.
강화된 DAT가 적용되는 경우에, DAT 보호 비트는 변환에 사용되는 모든 영역 테이블 엔트리에서 0이다.
다른 보호 메커니즘
비트가 1이면, 저장은 허가되지 않는다. 높은 우선순위의 예외 조건이 존재하지 않는 경우에, DAT 보호 비트가 1일 때 저장 시도는 보호 예외가 인정되게 한다. DAT 보호가 페이지에 적용되는지 여부를 결정할 때 세그먼트 테이블 엔트리 내의 DAT 보호 비트는 비트 54와 OR되는 것으로 간주한다. 강화된 DAT가 적용되면, DAT 보호가 페이지에 적용되는지 여부를 결정할 때 변환에 사용되는 임의의 영역 테이블 엔트리 내의 DAT 보호 비트는 비트 54와 OR되는 것으로 간주한다.
변경 기록 오버라이드(CO): 강화된 DAR가 적용되지 않을 때, 페이지 테이블 엔트리의 비트 55는 0을 포함해야 하며, 그렇지 않으면, 어드레스 변환을 위한 엔트리를 사용하는 인스트럭션의 실행의 일부로서 변환 지정 예외가 인정된다. 강화된 DAT가 적용되고 STR 포맷 제어가 0일 때, 페이지 테이블 엔트리의 비트 55는 페이지에 대한 변경 기록 오버라이드이다.
엔트리의 비트 위치 52는 0을 포함해야 하며, 그렇지 않으면, 어드레스 변환을 위한 엔트리를 사용하는 인스트럭션의 실행의 일부로서 변환 지정 예외가 인정된다. 비트 위치 56-63는 지정되지 않으며 무시된다.
동적 변환의 다른 실시예
이 섹션은 가상 어드레스가 주 저장 장치에 액세스하는 데 사용되기 전에 암시적으로 수행되는 변환 프로세스를 설명한다.
가상 어드레스의 변환은 프로그램 상태 워드 내의 DAT 모드 비트 및 어드레스 공간 제어 비트에 의해 및 제어 레지스터 1, 7 및 13 내의 ASCE에 의해 및 액세스 레지스터에 의해 지정된 바와 같이 제어된다. 변환에 사용된 ASCE가 영역 제 1 테이블 지정인 경우에, 변환은 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블, 세그먼트 테이블 및 페이지 테이블에 의해 수행되며, 이들 전부는 실제 또는 절대 저장 장치에 존재한다. ASCE가 낮은 레벨 유형의 테이블 지정(영역 제 2 테이블 지정, 영역 제 3 테이블 지정 또는 세그먼트 테이블 지정)이면, 변환은 지정된 레벨에서 시작하는 테이블 레벨에 의해서만 수행되고, 만일 0이 아닌 경우 테이블의 높은 레벨 또는 레벨들의 사용을 필요로 할 가상 어드레스 비트는 전부 0이어야 하며, 그렇지 않으면, ASCE 유형 예외가 인정된다. ASCE가 실제 공간 지정인 경우에, 가상 어드레스는 실제 어드레스로서 간주되고, 실제 또는 절대 저장 장치 내의 테이블 엔트리는 사용되지 않는다.
특정 어드레스 변환에 사용된 ASCE는 효율적인 ASCE로 지칭된다. 따라서, 1차 가상 어드레스가 변환되는 경우에, 제어 레지스터 1의 콘텐츠는 효율적인 ASCE로서 사용된다. 이와 유사하게, 2차 가상 어드레스의 경우에, 제어 레지스터 7의 콘텐츠가 사용되고, AR 지정 가상 어드레스의 경우에, 액세스 레지스터에 의해 지정된 ASCE가 사용되며, 홈 가상 어드레스의 경우에, 제어 레지스터 13의 콘텐츠가 사용된다.
효율적인 ASCE 내의 실제 공간 제어가 0인 경우에, ASCE 내의 지정 유형은 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블 또는 세그먼트 테이블과 같은 테이블 지정 유형을 지정한다. 가상 어드레스의 대응하는 부분(영역 제 1 인덱스, 영역 제 2 인덱스, 영역 제 3 인덱스 또는 세그먼트 인덱스)은 지정 내의 테이블 길이 필드에 대해 체크되고, 지정된 테이블 내의 엔트리를 선택하도록 지정 내의 기점에 추가된다. 지정 내의 테이블 길이 필드에 의해 결정된 바와 같이, 선택된 엔트리가 테이블 외부에 있거나, I 비트가 선택된 엔트리 내의 1이면, 지정에 의해 특정된 테이블 레벨에 따라, 영역 제 1 변환, 영역 제 2 변환, 영역 제 3 변환 또는 세그먼트 변환 예외가 인정된다. 만일 선택된 엔트리 내의 테이블 유형 비트가 예상 테이블 레벨을 나타내지 않으면, 변환 지정 예외가 인정된다.
효율적인 ASCE에 의해 선택된 테이블 엔트리는 사용될 다음 낮은 레벨 테이블을 지정한다. 만일 현재 테이블이 여역 제 1 테이블, 영역 제 2 테이블 또는 영역 제 3 테이블이면, 가상 어드레스의 다음 부분(각각, 영역 제 2 인덱스, 영역 제 3 인덱스 또는 세그먼트 인덱스)은 현재 테이블 엔트리 내의 테이블 오프셋 및 테이블 길이 필드에 대해 체크되고, 다음 낮은 레벨 테이블 내의 엔트리를 선택하도록 엔트리 내의 기점에 추가된다. 현재 테이블 엔트리 내의 테이블 오프셋 및 테이블 길이 필드에 의해 결정된 바와 같이, 다음 테이블 내의 선택된 엔트리가 테이블 외부에 있거나, I 비트가 선택된 엔트리 내의 1이면, 다음 테이블의 레벨에 따라, 영역 제 2 변환, 영역 제 3 변환 또는 세그먼트 변환 예외가 인정된다. 만일 선택된 엔트리 내의 테이블 유형 비트가 예상 테이블 레벨을 나타내지 않으면, 변환 지정 예외가 인정된다.
연속하는 테이블 레벨에 의한 가상 어드레스의 일부분의 처리는 세그먼트 테이블 엔트리가 선택될 때까지 계속된다. 세그먼트 테이블 엔트리는 지정된 세그먼트 내의 모든 페이지에 적용하는 페이지 보호 비트를 포함한다.
가상 어드레스의 페이지 인덱스 부분은 페이지 테이블 내의 엔트리를 선택하도록 세그먼트 테이블 엔트리 내의 페이지 테이블 기점에 추가된다. 만일 I 비트가 페이지 테이블 엔트리 내의 1이면, 페이지 변환 예외가 인정된다. 페이지 테이블 엔트리는 가상 어드레스의 변환을 나타내는 실제 어드레스의 제일 왼쪽의 비트를 포함하고, 페이지 테이블 엔트리에 의해 지정된 페이지에만 적용되는 페이지 보호 비트를 포함한다.
가상 어드레스의 바이트 인덱스 필드는 실제 어드레스의 제일 오른쪽의 비트 위치로서 변화없이 사용된다.
실제 또는 절대 저장 장치 내의 변환 테이블에 대한 참조와 연관된 지연을 제거하기 위해, 보통 테이블로부터 인출된 정보는 또한 특정 버퍼, 변환 색인 버퍼 내에 배치되고, 동일한 테이블 엔트리를 수반하는 후속 변환은 변환 색인 버퍼 내에 기록된 정보를 사용함으로써 수행될 수 있다. 변환 색인 버퍼는 또한 실제 공간 지정과 관련된 가상 어드레스 실제 변환을 기록할 수 있다.
영역 테이블, 세그먼트 테이블 또는 페이지 테이블로부터 엔트리를 인출하기 위해 어드레스 변환 프로세스 동안에 실제 또는 절대 저장 장치에 대한 액세스가 이루어질 때마다, 키 제어 보호는 적용되지 않는다.
ASCE 에 의해 지정된 테이블 내의 룩업
효율적인 ASCE의 DT 제어, 비트 60-61은 ASCE의 테이블 지정 유형과 지정된 테이블에 의해 변환되는 가상 어드레스의 일부분 양자 모두를 다음과 같이 지정한다.
Figure pct00016
비트 60 및 61이 값 11 이진수를 가지는 경우에, 가상 어드레스의 영역 제 1 인덱스 부분은 ASCE 내에 포함된 영역 제 1 테이블 기점과 관련하여, 영역 제 1 테이블로부터 엔트리를 선택하는 데 사용된다. 실제 또는 절대 저장 장치 내의 영역 제 1 테이블 엔트리의 64 비트 어드레스는 영역 제 1 테이블 지정의 비트 0-51의 우측에 12 개의 0을 추가함으로써 및 추가된 3 개의 제일 오른쪽의 0 및 50 개의 제일 왼쪽의 0을 가진 영역 제 1 인덱스를 추가함으로써 획득된다. 영역 제 1 테이블 룩업 프로세스의 일부로서, (영역 제 1 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 0 및 1은 테이블 길이, 영역 제 1 테이블 지정의 비트 62 및 63에 대해 비교되어, 어드레싱된 엔트리가 영역 제 1 테이블 내에 있는지 여부를 입증한다. 만일 테이블 길이 필드 내의 값이 가상 어드레스의 대응하는 비트 위치 내의 값보다 작으면, 영역 제 1 변환 예외가 인정된다. 만일 변환 색인 버퍼 내의 영역 제 1 테이블 엔트리의 균등물이 변환에 사용되면 테이블 길이에 대한 비교는 생략될 수 있다. 영역 제 1 테이블로부터 인출된 엔트리는 시작을 지정하고 대응하는 영역 제 2 테이블의 오프셋 및 길이를 특정한다.
ASCE의 비트 60 및 61이 값 10 이진수를 가지는 경우에, 가상 어드레스의 영역 제 2 인덱스 부분은 ASCE 내에 포함된 영역 제 2 테이블 기점과 관련하여, 영역 제 2 테이블로부터 엔트리를 선택하는 데 사용된다. (영역 제 2 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 11 및 12는 ASCE 내의 테이블 길이에 대해 비교된다. 만일 테이블 길이 필드 내의 값이 가상 어드레스의 대응하는 비트 위치 내의 값보다 작으면, 영역 제 2 변환 예외가 인정된다. 변환 색인 버퍼 내의 영역 제 2 테이블 엔트리의 균등물이 변환에 사용되면 테이블 길이에 대한 비교는 생략될 수 있다. 영역 제 2 테이블 룩업 프로세스는 영역 제 1 테이블 룩업 프로세스와 동일하며, 영역 제 2 테이블로부터 인출된 엔트리는 시작을 지정하고 대응하는 영역 제 3 테이블의 오프셋과 길이를 특정한다.
ASCE의 비트 60 및 61이 값 01 이진수를 가지는 경우에, 가상 어드레스의 영역 제 3 인덱스 부분은 ASCE 내에 포함된 영역 제 3 테이블 기점과 관련하여, 영역 제 3 테이블로부터 엔트리를 선택하는 데 사용된다. (영역 제 3 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 22 및 23은 ASCE 내의 테이블 길이에 대해 비교된다. 만일 테이블 길이 필드 내의 값이 가상 어드레스의 대응하는 비트 위치 내의 값보다 작으면, 영역 제 3 변환 예외가 인정된다. 영역 제 3 테이블 룩업 프로세스는 영역 제 1 테이블 룩업 프로세스와 동일하며, 영역 제 3 테이블 엔트리 내의 테이블 유형 비트의 체크를 포함한다. 영역 제 3 테이블로부터 인출된 엔트리는 시작을 지정하고 대응하는 세그먼트 테이블의 오프셋과 길이를 특정한다.
ASCE의 비트 60 및 61이 값 00 이진수를 가지는 경우에, 가상 어드레스의 세그먼트 인덱스 부분은 ASCE 내에 포함된 세그먼트 테이블 기점과 관련하여, 세그먼트 테이블로부터 엔트리를 선택하는 데 사용된다. (세그먼트 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 33 및 34는 ASCE 내의 테이블 길이에 대해 비교된다. 만일 테이블 길이 필드 내의 값이 가상 어드레스의 대응하는 비트 위치 내의 값보다 작으면, 세그먼트 변환 예외가 인정된다. 변환 색인 버퍼 내의 세그먼트 테이블 엔트리의 균등물이 변환에 사용되면 테이블 길이에 대한 비교는 생략될 수 있다. 세그먼트 테이블 룩업 프로세스는 영역 제 1 테이블 룩업 프로세스와 동일하며, 세그먼트 테이블 엔트리 내의 테이블 유형 비트의 체크를 포함한다. 처리는 다음과 같다.
강화된 DAT가 적용되지 않거나, 강화된 DAT가 적용되지만 STE 포맷 제어가 0인 경우에, 세그먼트 테이블로부터 인출된 엔트리는 대응하는 페이지 테이블의 시작을 지정하고, 처리는 "페이지 테이블 룩업"에 설명된 바와 같이 계속된다.
강화된 DAT가 적용되고 STE 포맷 제어가 0인 경우에, 세그먼트 테이블로부터 인출된 엔트리는 세그먼트 프레임 절대 어드레스의 제일 왼쪽의 비트를 포함한다. 만일 DAT 보호 비트가 변환에 사용된 임의의 영역 테이블 엔트리 또는 세그먼트 테이블 엔트리 내의 0이고, 변환이 수행되고 있는 저장 참조가 저장 장치이면, 보호 예외가 인정된다.
영역 테이블 엔트리에 의해 지정된 테이블 내의 룩업
효율적인 ASCE가 영역 테이블 지정인 경우에, 영역 테이블 엔트리는 이전 섹션에 설명된 바와 같이 선택된다. 이어서 선택된 엔트리의 콘텐츠 및 가상 어드레스의 다음 인덱스 부분은 다른 영역 테이블 또는 세그먼트 테이블일 수 있는 다음의 하위 레벨 테이블 내의 엔트리를 선택하는 데 사용된다. ASCE에 의해 선택된 테이블 엔트리가 영역 제 1 테이블 엔트리인 경우에, 가상 어드레스의 영역 제 2 인덱스 부분은 영역 제 1 테이블 엔트리 내에 포함된 영역 제 2 테이블 기점과 관련하여, 영역 제 2 테이블로부터 엔트리를 선택하는 데 사용된다. 실제 또는 절대 저장 장치 내의 영역 제 2 테이블 엔트리의 64 비트 어드레스는 영역 제 1 테이블 엔트리의 비트 0-51의 오른쪽에 12 개의 0을 추가함으로써 및 3 개의 제일 오른쪽의 0 및 50 개의 제일 왼쪽의 0이 추가된 영역 제 2 인덱스를 추가함으로써 획득된다.
영역 제 2, 영역 제 3 또는 세그먼트 테이블 엔트리의 어드레스를 형성하는 경우에, 만일 있다면, 테이블 인덱스 값의 추가 이전에 상위 레벨 테이블 엔트리 내에 포함된 각각의 테이블 기점에 프리픽싱(prefixing)이 적용되는지 여부 또는 테이블 기점 및 테이블 인덱스 값의 추가에 의해 형성되는 테이블 엔트리 어드레스에 프리픽싱이 적용되는지 여부를 예측할 수 없다.
영역 제 2 테이블 룩업 프로세스의 일부로서, (영역 제 2 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 11 및 12는 테이블 오프셋, 영역 제 1 테이블 엔트리의 비트 56 및 57에 대해 그리고 테이블 길이, 영역 제 1 테이블 엔트리의 비트 62 및 63에 대해 비교되어, 어드레싱된 엔트리가 영역 제 2 테이블 내에 있는지 여부를 입증한다. 테이블 오프셋 필드 내의 값이 가상 어드레스의 대응하는 비트 위치 내의 값보다 크거나, 테이블 길이 필드 내의 값이 가상 어드레스의 대응하는 비트 위치 내의 값보다 작으면, 영역 제 2 변환 예외가 인정된다.
영역 제 2 테이블은 시작을 지정하고 대응하는 영역 제 3 테이블의 오프셋과 길이를 특정한다.
ASCE에 의해 선택된 테이블 엔트리가 영역 제 2 테이블 엔트리인 경우나 영역 제 2 테이블 엔트리가 영역 제 1 테이블 엔트리의 콘텐츠에 의해 선택되면, 가상 어드레스의 영역 제 3 인덱스 부분은 영역 제 2 테이블 엔트리 내에 포함된 영역 제 3 테이블 기점과 관련하여, 영역 제 3 테이블로부터 엔트리를 선택하는 데 사용된다. (영역 제 3 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 22 및 23은 영역 제 2 테이블 엔트리 내의 테이블 오프셋 및 테이블 길이에 대해 비교된다. 만일 테이블 오프셋이 비트 22 및 23보다 크거나 테이블 길이가 비트 22 및 23보다 작으면, 영역 제 3 변환 예외가 인정된다. 영역 제 3 테이블 룩업 프로세스는 영역 제 2 테이블 룩업 프로세스와 동일하다. 영역 제 3 테이블로부터 인출된 엔트리는 시작을 지정하고 대응하는 세그먼트 테이블의 오프셋과 길이를 특정한다.
ASCE에 의해 선택된 테이블 엔트리가 영역 제 3 테이블 엔트리인 경우나 영역 제 3 테이블 엔트리가 영역 제 2 테이블 엔트리의 콘텐츠에 의해 선택되면, 가상 어드레스의 세그먼트 인덱스 부분은 영역 제 3 테이블 엔트리 내에 포함된 세그먼트 테이블 기점과 관련하여, 세그먼트 테이블로부터 엔트리를 선택하는 데 사용된다. (세그먼트 인덱스의 비트 0 및 1인) 가상 어드레스의 비트 33 및 34는 영역 제 3 테이블 엔트리 내의 테이블 오프셋 및 테이블 길이에 대해 비교된다. 만일 테이블 오프셋이 비트 33 및 34보다 크거나 테이블 길이가 비트 33 및 34보다 작으면, 세그먼트 변환 예외가 인정된다. (1) ASCE 내의 비공개 공간 제어, 비트 55가 0이고 (2) 세그먼트 테이블로부터 인출된 엔트리 내의 공통 세그먼트 비트, 비트 59가 1이면 변환 지정 예외가 인정된다. 세그먼트 테이블 룩업 프로세스는 영역 제 2 테이블 룩업 프로세스와 동일하다. 처리는 다음과 같다.
강화된 DAT가 적용되지 않는 경우 또는 강화된 DAT가 적용되지만 STE 포맷 제어가 0인 경우에, 세그먼트 테이블로부터 인출된 엔트리는 대응하는 페이지 테이블의 시작을 지정하고, 처리는 "페이지 테이블 룩업"에 설명된 바와 같이 계속된다.
강화된 DAT가 적용되고 STE 포맷 제어기 1인 경우에, 세그먼트 테이블로부터 인출된 엔트리는 세그먼트 프레임 절대 어드레스의 제일 왼쪽의 비트를 포함한다. 만일 변환에 사용된 임의의 영역 테이블 엔트리 또는 세그먼트 테이블 엔트리 내에서 DAT 보호 비트가 1이고, 변환이 수행되고 있는 저장 참조가 저장 장치이면, 보호 예외가 인정된다.
페이지 테이블 룩업
강화된 DAT가 적용되지 않는 경우 또는 강화된 DAT가 적용되지만 STE 포맷 제어가 0인 경우에, 가상 어드레스의 페이지 인덱스 부분은 세그먼트 테이블 엔트리 내에 포함된 페이지 테이블 기점과 관련하여, 페이지 테이블로부터 엔트리를 선택하는 데 사용된다.
페이지 테이블 기점의 오른쪽에 11 개의 0을 추가하고, 3 개의 제일 오른쪽의 0 및 53 개의 제일 왼쪽의 0이 추가된 페이지 인덱스를 추가함으로써 실제 또는 절대 저장 장치 내의 페이지 테이블 엔트리의 64 비트 어드레스가 획득된다. 비트 위치 0의 실행은 발생할 수 없다.
페이지 테이블로부터 인출된 엔트리는 페이지의 이용가능성을 나타내고 페이지 프레임 실제 어드레스의 제일 왼쪽의 비트를 포함한다. 페이지 무효 비트, 비트 53은 대응하는 페이지가 이용가능한지 여부를 입증하기 위해 검사된다. 만일 이 비트가 1이면, 페이지 변환 예외가 인정된다. 비트 위치 52가 1을 포함하면, 변환 지정 예외가 인정된다. 강화된 DAT가 적용되지 않는 경우 또는 강화된 DAT가 적용되고 STE 포맷 제어가 0인 경우에, 비트 위치 55가 1일 포함하면 변환 지정 예외가 또한 인정된다. 만일 페이지 테이블 엔트리에서, 변환에 사용된 세그먼트 테이블 엔트리 또는 강화된 DAT가 적용되는 경우에, 변환 동안에 사용되는 임의의 영역 테이블 엔트리 내의 DAT 보호 비트가 1이고, 변환이 수행되고 있는 저장 참조가 저장 장치이면, 보호 예외가 인정된다.
실제 및 절대 어드레스의 형성
효율적인 ASCE가 실제 공간 지정인 경우에, 가상 어드레스의 비트 0-63은 실제 저장 어드레스로서 직접 사용된다. 실제 어드레스는 또한 절대 어드레스를 형성하도록 프리픽싱될 수 있다. 효율적인 ASCE가 실제 공간 지정이 아니고 변환 프로세스에서 어떠한 예외도 없는 경우에, 후속하는 조건이 적용된다.
강화된 DAT가 적용되지 않는 경우 또는 강화된 DAT가 적용되지만 STE 포맷 제어가 0인 경우에, 페이지 테이블 엔트리로부터 페이지 프레임 실제 어드레스가 획득된다. 페이지 프레임 실제 어드레스가 제일 왼쪽의 부분을 형성하면서, 페이지 프레임 실제 어드레스 및 가상 어드레스의 바이트 인덱스 부분은 연관된다. 그 결과는 가상 어드레스에 대응하는 실제 저장 어드레스이다. 실제 어드레스는 절대 어드레스를 형성하도록 더 프리픽싱될 수 있다.
강화된 DAT가 적용되고 STE 포맷 제어기 0인 경우에, 세그먼트 프레임 절대 어드레스 및 가상 어드레스의 페이지 인덱스 및 바이트 인덱스 부분은 각각 가상 어드레스에 대응하는 절대 어드레스를 형성하도록 왼쪽에서 오른쪽으로 연관된다.
변환 동안 예외 인정
무효 어드레스 및 무효 포맷은 변환 프로세스 동안에 예외가 인정되게 할 수 있다. 예외는 테이블 엔트리 내에 포함된 정보가 변환에 관한 것이고 부정확한 것으로 발견되는 경우에 인정된다.
이제 세그먼트 테이블 엔트리로부터 포맷 제어 필드를 획득할 수 있을 정도로 동적 어드레스 변환의 일 실시예의 순서도를 도시하는 도 6을 참조한다.
단계(602)에서, 변환될 가상 어드레스가 획득된다. 단계(604)에서, 가상 어드레스의 변환에 사용된 최상 변환 테이블의 기점 어드레스가 획득된다. 변환에 사용된 제 1 변환 테이블의 기점 어드레스는 ASCE 및 DT 비트에 의존한다. 단계(606)에서, 가상 어드레스의 일부분은 변환 테이블 내의 적합한 테이블 엔트리를 참조하는 데 사용된다. 단계(608)에서, 변환 테이블로부터 인출된 엔트리가 세그먼트 테이블 엔트리가 아니면, 변환 테이블의 계층 내의 세그먼트 테이블은 아직 참조되지 않았다. 이 경우에, 단계(610)에서, 변환 테이블의 계층 내의 다음 하위 테이블의 기점이 테이블 엔트리로부터 획득된다. 가상 어드레스의 적합한 부분은 변환에 사용된 다음 하위 테이블 내의 대응하는 테이블 엔트리를 참조하는 데 사용된다.
예컨대, 만일 변환에 사용되는 제 1 변환 테이블의 테이블 기점 어드레스가 영역 제 1 테이블이면, 가상 어드레스의 RFX 부분이 영역 제 1 테이블 내의 영역 제 1 테이블 엔트리를 참조하는 데 사용된다. 만일 테이블 기점 어드레스가 영역 제 2 테이블이어야 하면, 가상 어드레스의 RSX 부분이 영역 제 2 테이블 내의 영역 제 2 테이블 엔트리를 참조하는 데 사용된다. 만일 테이블 기점 어드레스가 영역 제 3 테이블이어야 하면, 가상 어드레스의 RTX 부분이 영역 제 3 테이블 내의 영역 제 3 테이블 엔트리를 참조하는 데 사용된다. 만일 테이블 기점 어드레스가 세그먼트 테이블이어야 하면, 가상 어드레스의 SX 부분이 세그먼트 테이블 내의 세그먼트 테이블 엔트리를 참조하는 데 사용된다. 세그먼트 테이블 엔트리가 인출될 때까지 연속하는 테이블이 참조된다.
일단 세그먼트 테이블 엔트리가 인출되었으면, 단계(612)에서, 세그먼트 테이블 엔트리(STE) 포맷 제어 비트를 검사하여 이 특정 가상 어드레스에 대해 포맷 제어가 인에이블링되는지 여부를 판정한다. 만일 STE 포맷 제어가 0이면, 노드(614)에 관하여 동적 어드레스 변환이 발생한다. 만일 STE 포맷 제어가 1이면, 노드(616)에 관하여 동적 어드레스 변환이 발생한다.
동적 어드레스 변환( SET 포맷 제어는 0임)
이제 SET 포맷 제어가 0인 경우에 도 6의 노드(614)로부터 순서도의 계속을 도시하는 도 7을 참조한다.
단계(710)에서, 세그먼트 테이블 엔트리로부터 페이지 테이블에 대한 기점 어드레스가 획득된다. 단계(712)에서, 가상 어드레스의 PX 부분은 페이지 테이블 내의 페이지 테이블 엔트리를 참조하는 데 사용된다. 단계(714)에서, 페이지 테이블 엔트리로부터 페이지 프레임 실제 어드레스(PFRA)가 획득된다. 페이지 테이블 엔트리로부터 무효(I) 비트가 획득된다. 단계(716)에서, 무효(I) 비트가 1이면, 단계(718)에서, 엔트리가 무효한 것으로 마킹되었으므로 이 페이지 테이블 엔트리를 사용하여 가상 어드레스의 변환은 계속될 수 없다. 이 페이지 테이블 엔트리를 사용하는 가상 어드레스의 추가의 변환은 중단된다(단계 722). 단계(716)에서, 만일 무효(I) 비트가 0이면, 단계(720)에서, 페이지 프레임 실제 어드레스(PFRA)는 가상 어드레스의 PX 부분과 조합되어 실제 어드레스를 생성한다. 실제 어드레스에는 또한 프리픽싱 동작이 행해져서 절대 어드레스를 형성할 수 있다. 단계(724)에서, 실제 어드레스는 변환된 가상 어드레스에 의해 어드레싱된 데이터의 블록에 액세스하는 데 사용된다.
동적 어드레스 변환( STE 포맷 제어는 1임)
이제 도 6의 노드(616)로부터 순서도의 계속을 도시하는 도 8을 참조한다.
단계(810)에서, 세그먼트 테이블 엔트리의 일부로부터 세그먼트 프레임 절대 어드레스(SFAA)가 획득된다. 세그먼트 테이블 엔트리로부터 무효(I) 비트가 획득된다. 단계(812)에서 무효(I) 비트가 1이면, 단계(814)에서 엔트리가 무효한 것으로 마킹되었으므로 세그먼트 테이블 엔트리를 사용하여 가상 어드레스의 추가 변환이 진행될 수 없다. 일 실시예에서, 변환을 요구하는 프로그램 엔티티로 예외 코드가 리턴된다. 이 세그먼트 테이블 엔트리를 사용하는 이 가상 어드레스의 추가의 변환은 중단된다(단계 818).
단계(812)에서 무효(I) 비트가 0이면, 단계(816)에서 세그먼트 프레임 절대 어드레스(SFAA)는 가상 어드레스의 PX 및 BX 부분과 조합되어, 주 저장 장치 또는 메모리 내의 원하는 큰 데이터 블록에 대한 절대 어드레스를 생성한다. 단계(820)에서, 변환된 가상 어드레스에 의해 어드레싱된 원하는 큰 데이터 블록이 액세스된다.
각각의 테이블 엔트리에서, 테이블 엔트리의 유효성을 판단하기 위해 무효 비트가 검사된다. 변환된 가상 어드레스에 의해 어드레싱된 데이터 블록을 보호하는 다른 변환 보호 메커니즘이 이하에 논의된다.
다른 실시예에서, 변환 테이블 엔트리로부터 제한 정보가 획득된다. 제한 정보는 가상 어드레스 범위의 제한된 부분에 대한 액세스를 제한하는 데 사용된다. 변환된 어드레스에 의해 어드레싱된 원하는 큰 데이터 블록에 대한 액세스는 이후 어드레스 범위의 제한된 부분에만 허용된다. 제한 정보는 테이블 오프셋 또는 테이블 길이 중 어느 하나이다.
또 다른 실시예에서, 가상 어드레스의 변환에 사용된 정보는 적어도 하나의 변환 색인 버퍼에 저장된다. 변환 테이블의 계층이 아니라 변환 색인 버퍼로부터의 저장된 정보를 사용하여 주 저장 장치 내의 데이터 블록의 절대 어드레스로의 후속하는 가상 어드레스의 후속 변환이 수행된다.
또 다른 실시예에서, 변환이 기계 아키텍처에 고유하지 않으면, 변환을 에뮬레이팅하기 위해 사전결정된 소프트웨어 루틴이 식별된다. 사전결정된 소프트웨어 루틴은 복수의 인스트럭션을 포함한다. 사전결정된 소프트웨어 루틴이 실행된다.
어드레싱된 데이터 블록의 보호
본 명세서에 설명된 바와 같이, 가상 어드레스가 강화된 DAT 장치를 사용하여 변환되었으면, 변환된 가상 어드레스에 의해 어드레싱된 주 저장 장치 또는 메모리 내의 원하는 데이터 블록은 추가적인 보호 메커니즘을 겪을 수 있다.
DAT 보호
DAT 보호 함수는 각각의 페이지 테이블 엔트리 및 세그먼트 테이블 엔트리 내의 그리고 강화된 DAT 장치가 설치되는 경우에는 각각의 영역 테이블 엔트리 내의 DAT 보호 비트를 사용함으로써 가상 저장 장치에 대한 액세스를 제어한다. 이는 부적당한 저장에 대한 보호를 제공한다.
페이지 테이블 엔트리의 DAT 보호 비트(비트 54)는 저장이 대응하는 4 킬로바이트 페이지 내로 허용되는지 여부를 제어한다. 비트가 0이면, 인출과 저장 양자 모두 허용되고, 비트가 1이면, 인출만 허용된다. 보호된 페이지 내로 저장하려고 시도할 때, 페이지의 콘텐츠는 변하지 않은 채로 있고, 동작의 유닛 또는 인스트럭션의 실행은 억제되며, 보호에 대한 프로그램 인터럽트가 발생한다.
세그먼트 테이블 엔트리의 DAT 보호 비트(비트 54)는 대응하는 1 메가바이트 세그먼트 내로 저장이 허용되는지 여부를 다음과 같이 제어한다.
강화된 DAT가 적용되지 않는 경우에 또는 강화된 DAT가 적용되고 STE 포맷 제어가 0인 경우에, 세그먼트 테이블 엔트리의 DAT 보호 비트는 세그먼트 테이블 엔트리에 의해 지정된 페이지 테이블 내의 각각의 엔트리의 DAT 보호 비트 위치로 OR되는 것으로 처리된다. 따라서, 세그먼트 테이블 엔트리 DAT 보호 비트가 1이면, 결과는 DAT 보호 비트가 지정된 페이지 테이블 내의 각각의 엔트리에서 1이었던 것과 같다.
강화된 DAT가 적용되고 STE 포맷 제어가 1인 경우에, 세그먼트 테이블 엔트리의 DAT 보호 비트는 대응하는 1 메가바이트 세그먼트 내로 저장이 허용되는지 여부를 제어한다. 비트가 0이면, 인출과 저장 양자 모두 허용되고, 비트가 1이면, 인출만 허용된다. 보호된 세그먼트 내로 저장하려고 시도할 때, 세그먼트의 콘텐츠는 변하지 않은 채로 있고, 동작의 유닛 또는 인스트럭션의 실행은 억제되며, 보호에 대한 프로그램 인터럽트가 발생한다.
강화된 DAT가 적용되는 경우에, 영역 테이블 엔트리의 DAT 보호 비트는 대응하는 영역(들)으로 저장이 허용되는지 여부를 제어한다. 영역 테이블 엔트리 내의 DAT 보호 비트는 변환에 사용되는 임의의 후속하는 영역 테이블 엔트리 및 세그먼트 테이블 엔트리의 DAT 보호 비트 위치 내로 OR되는 것으로 처리된다. STE 포맷 제어 비트가 0인 경우에, DAT 보호 비트는 페이지 테이블 엔트리로 더 전달된다.
DAT 보호는 가상 어드레스를 사용하는 모든 저장 유형 참조에 적용된다.
이제 변환에 사용된 세그먼트 테이블 엔트리로부터 DAT 보호 비트를 획득하는 일 실시예의 순서도를 도시하는 도 9를 참조한다.
단계(902)에서, 변환될 가상 어드레스가 획득된다. 단계(904)에서, 가상 어드레스의 변환에 사용되는 제 1 변환 테이블의 기점이 획득된다. 단계(906)에서, 가상 어드레스의 일부분이 전술한 방식으로 변환 테이블 내의 엔트리를 참조하는 데 사용된다. 단계(908)에서, 세그먼트 프레임 절대 어드레스(SFAA) 또는 페이지 프레임 실제 어드레스(PFRA)로부터 실제 또는 절대 어드레스가 획득된다.
단계(910)에서, 가상 어드레스의 변환에 사용되는 변환 테이블의 각각의 엔트리로부터 DAT 보호(P) 비트가 획득된다. DAT 보호의 효율적인 레벨은 변환에 사용된 테이블 엔트리의 각각으로부터 획득된 다수의 P 비트의 논리적 OR이다. 단계(912)에서, 변환된 가상 어드레스에 의해 어드레싱된 데이트 블록이 DAT 보호되는지 여부를 판정하기 위해 DAT 보호 비트가 검사된다. 단계(912)에서 DAT 보호(P) 비트가 0이면, 단계(914)에서 변환된 가상 어드레스에 의해 어드레싱된 데이터 블록에 대해 저장 동작이 허용된다. 단계(912)에서 DAT 보호(P) 비트가 1이면, 단계(916)에서 변환된 가상 어드레스에 의해 어드레싱된 데이터 블록에 대해 저장 동작이 금지된다. 이와 달리, DAT 보호 필드에 의해 표시된 보호 레벨은 가상 어드레스를 사용하는 모든 저장 유형 참조에 적용된다. DAT 보호 필드가 인에이블링된 경우에, 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 대해 저장이 시도되면 보호 예외 조건이 표시된다.
키 제어형 보호
키 제어형 보호가 저장 장치 액세스에 적용되는 경우에, 저장은 저장 장치 키가 저장 장치 액세스에 대한 요청과 연관된 액세스 키와 일치할 때에만 허용되고, 인출은 키들이 일치하는 경우나 저장 장치 키의 인출 보호 비트가 0인 경우에 허용된다. 저장 장치 키의 4 개의 액세스 제어 비트가 액세스 키와 동일할 때 또는 액세스 키가 0일 때 키들이 일치한다고 한다. 보호 동작은 다음과 같이 요약된다.
Figure pct00017
저장 장치에 대한 액세스가 CPU에 의해 개시되고 키 제어형 보호가 적용되는 경우에, 액세스 키가 MOVE TO SECONDARY 및 MOVE WITH DESTINATION KEY의 제 1 피연산자에 대해, MOVE TO PRIMARY, MOVE WITH KEY 및 MOVE WITH SOURCE KEY의 제 2 피연산자에 대해 및 MOVE PAGE의 제 1 또는 제 2 피연산자에 대해 범용 레지스터 내에 특정된다는 것을 제외하고는 PSW 키가 액세스 키이다. PSW 키는 현재 프로그램 상태 워드의 비트 위치 8-11을 점유한다.
키 제어형 보호 때문에 CPU 액세스가 금지되는 경우에, 인스트럭션의 실행이 중단되고, 보호 예외에 대한 프로그램 인터럽트가 발생한다. 그러나, 동작의 유닛 또는 인스트럭션의 실행이 억제될 수 있다.
저장 장치 키
저장 장치 키는 구성에서 이용가능한 저장 장치의 각각의 4 킬로바이트 블록과 연관된다. 저장 장치 키는 어드레싱가능한 저장 장치의 일부가 아니다. 일 실시예에서, 저장 장치 키는 다음 포맷을 갖는다.
Figure pct00018
저장 장치 키 내의 비트 위치는 다음과 같이 할당된다.
액세스 제어 비트( ACC ): 참조가 키 제어형 보호를 받으면, 4 개의 액세스 제어 비트는 정보가 저장되는 경우 및 정보가 인출에 대해 보호되는 위치로부터 인출되는 경우에 4 비트 액세스 키와 일치된다.
인출 보호 비트(F): 참조가 키 제어형 보호를 받으면, 인출 보호 비트는 키 제어형 보호가 인출 유형 참조에 적용되는지 여부를 제어하는데, 0은 저장 유형 참조만이 모니터링되고 임의의 액세스 키를 가진 인출이 허용됨을 나타내고, 1은 키 제어형 보호가 인출과 저장 양자 모두에 적용됨을 나타낸다.
참조 비트(R): 참조 비트는 보통 대응하는 저장 장치 블록 내의 위치가 정보의 저장 또는 인출에 대해 참조될 때마다 1로 설정된다.
변경 비트(C): 변경 비트는 대응하는 저장 장치 블록 내의 위치에 정보가 저장될 때마다 1로 설정된다.
강화된 DAT가 적용되는 경우에, 후속하는 추가 조건이 실시된다.
STE 포맷 제어(FC, 변환 동안에 사용된 세그먼트 테이블 엔트리의 비트 53)가 0인 경우에, 변환 동안에 사용된 페이지 테이블 엔트리의 비트 55는 페이지에 대한 변경 기록 오버라이드(CO)이다. 페이지 테이블 엔트리 내의 CO 비트가 1인 경우에, 변경 기록은 페이지에 대한 임의의 저장 동작에 대해 예측가능하지 않다.
세그먼트 테이블 엔트리 내의 포맷 제어 비트(FC)가 1인 경우에, 후속 내용이 적용된다.
세그먼트 테이블 엔트리의 비트 위치 47은 ACCF 유효성 제어를 포함한다. ACCF 유효성 제어는 STE 내의 액세스 제어 및 인출 보호 비트의 유효성을 결정한다. ACCF 유효성 제어가 0인 경우에, 키 제어형 보호는 어드레스에 대응하는 4K 바이트 블록에 대한 저장 장치 키 내의 액세스 제어 및 인출 보호 비트를 사용한다.
ACCF 유효성 제어가 1인 경우에, 세그먼트 테이블 엔트리의 비트 위치 48-52는 세그먼트에 대한 액세스 제어 비트 및 인출 보호 비트를 포함한다. 저장 장치 피연산자에 대한 액세스가능성을 판정할 때, 세그먼트를 구성하는 4K 바이트 블록에 대한 개별 저장 장치 키의 비트 0-4 또는 STE의 비트 48-52가 검사되는지 여부는 예측가능하지 않다.
세그먼트 테이블 엔트리의 비트 55는 세그먼트에 대한 변경 기록 오버라이드(CO)이다. 세그먼트 테이블 엔트리 내의 CO 비트가 1이면, 변경 비트가 세그먼트에 대한 임의의 저장 동작을 위해 설정되는지 여부는 예측가능하지 않다.
저장 장치 키 액세스
저장 장치 키에 대한 참조는 다음과 같이 처리된다.
저장 장치에 대한 참조가 이루어지고 키 제어형 보호가 참조에 적용될 때마다, 저장 장치 위치와 연관된 인출 보호 비트 및 4 개의 액세스 제어 비트는 저장 장치 위치에 대한 참조와 동시에 검사된다. (1) 강화된 DAT가 적용되지 않는 경우 또는 (2) 강화된 DAT가 적용되지만 저장 장치가 STE 포맷 제어가 0인 세그먼트 테이블 엔트리에 의해 액세스되는 경우 또는 (3) 강화된 DAT가 적용되고, 저장 장치가 STE 포맷 제어가 1이지만 ACCF 유효성 제어는 0인 세그먼트 테이블 엔트리에 의해 액세스되는 경우에, 액세스 제어 비트 및 인출 보호 비트는 4K 바이트 블록에 대한 저장 장치 키의 비트 0-4에 존재한다. 강화된 DAT가 적용되고 저장 장치는 STE 포맷 제어와 ACCF 유효성 제어 양자 모두 1인 세그먼트 테이블 엔트리에 의해 액세스되는 경우에, 저장 장치 키의 비트 0-4 또는 세그먼트 테이블 엔트리의 비트 48-52가 액세스 제어 비트 및 인출 보호 비트를 제공하는지 여부를 예측할 수 없다. 또한, 세그먼트 테이블 엔트리가 액세스 제어 비트 및 인출 보호 비트를 제공하는 경우에, 변환 색인 버퍼로부터의 버퍼링 사본이 사용될 수 있다.
강화된 DAT가 적용되고, (a) STE 포맷 제어가 0이고 변경 기록 오버라이드가 DAT에 의해 사용된 페이지 테이블 엔트리에서 1이며, 또는 (b) STE 포맷 제어가 1이고 변경 기록 오버라이드가 DAT에 의해 사용된 페이지 테이블 엔트리에서 1인 경우에, 저장 동작을 수행할 때 CPU가 변경 비트를 설정하는지 여부를 예측할 수 없다. 변경 기록 오버라이드는 PTE 또는 STE의 변환 색인 버퍼 사본에서 버퍼링될 수 있다.
조건부적인 SSKE 특징부가 설치되는 경우에, SET STORAGE KEY EXTENDED 인스트럭션은 모든 7 개의 비트가 동시에 저장 장치 키 내에 설정되게 한다. 조건부적인 SSKE 특징부가 설치되는 경우에, SET STORAGE KEY EXTENDED 인스트럭션은 프로그램 지정 기준에 기초하여 저장 장치 키의 전부 또는 일부를 설정하는 데 사용될 수 있다.
INSERT STORAGE KEY EXTENDED 인스트럭션은 4K 바이트 블록에 대한 저장 장치 키의 비트 0-6의 일관된 이미지를 제공한다. 이와 유사하게, 인스트럭션 INSERT VIRTUAL STORAGE KEY AND TEST PROTECTION은 액세스 제어 비트 및 인출 보호 비트의 일관된 이미지를 제공한다.
인스트럭션 RESET REFERENCE BIT EXTENDED는 참조 비트만 변경한다. 저장 장치 키의 모든 다른 비트는 변경되지 않은 채로 있다. 참조 비트 및 변경 비트는 조건 코드를 설정하기 위해 동시에 검사된다.
참조 비트에 의해 제공된 참조의 기록이 반드시 정확한 것은 아니다. 그러나, 대부분의 경우에, 참조 기록은 연관된 저장 장치 참조와 거의 일치한다. 변경 비트는 어떠한 저장도 발생하지 않은 경우에 설정될 수 있다.
다른 CPU에 의해 관찰되는 바와 같이, 저장 장치 키는 저장 장치 키를 명백하게 조작하고 저장 장치 키 액세스 그들 자체가 각각 저장 장치 피연산자 인출 및 저장인 것처럼 그들 사이 및 저장 장치 피연산자 참조 사이에서 순서화되는 인스트럭션(INSERT STORAGE KEY EXTENDED, INSERT VIRTUAL STORAGE KEY, RESET REFERENCE BIT EXTENDED 및 SET STORAGE KEY EXTENDED)에 기인하여 인출하고 저장한다.
액세스 제어 및 인출 보호( ACC /F)
주 저장 장치 또는 메모리 내의 데이터 블록은 세그먼트 테이블 엔트리 내에 제공된 액세스 제어 및 인출 보호 비트에 의해 더 보호될 수 있다.
액세스 유효성( AV ) 및 액세스 제어( ACC )
이제 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용되는 액세스 제어 보호를 결정하는 순서도의 일 실시예를 도시하는 도 10을 참조한다.
동적 어드레스 변환은 세그먼트 테이블 엔트리가 노드(616)로의 도 6에 설명된 변환에 사용된 세그먼트 테이블로부터 인출되는 지점으로 진행된다. 어드레스 변환은 저장 장치 또는 메모리 내의 원하는 데이터 블록에 대한 절대 어드레스가 획득되는 노드(822)로의 도 8에 설명된 바와 같이 계속된다. 도 10의 흐름은 노드(822)에서 시작된다.
단계(1002)에서, 세그먼트 테이블 엔트리로부터 액세스 유효성(AV) 필드가 획득된다. 단계(1004)에서, 세그먼트 테이블 엔트리 내의 액세스 유효성 필드가 인에이블링(AV=1)되는지 여부가 판정된다. 만일 액세스 유효성 필드가 0이면 세그먼트 테이블 엔트리 내의 액세스 제어(ACC) 필드는 유효하지 않다. 단계(1006)에서, 액세스 제어 필드의 비트는 무시된다. 만일 액세스 유효성 필드가 인에이블링되면, 액세스 제어 필드는 유효하다. 단계(1008)에서, 세그먼트 테이블 엔트리로부터 액세스 제어 필드의 비트가 획득된다. 단계(1010)에서, 세그먼트 테이블 엔트리 내의 ACC 필드에 의해 표시된 액세스 제어 보호의 레벨은 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용된다.
다른 실시예에서, 원하는 데이터 블록으로의 저장 동작은 액세스 제어 필드가 프로그램 상태 규정어(Program Status Word)와 같은 프로그램 엔티티 또는 실행되고 있는 프로그램 인스트럭션의 피연산자에 의해 제공된 액세스 키와 일치하는 경우에만 허용된다. 보호 예외는 원하는 데이터 블록에서 저장이 시도되고 액세스 제어 필드가 액세스 키와 일치하지 않으면 표시되는 것이 바람직하다.
또 다른 실시예에서, 액세스 유효성 필드가 인에이블링되는 경우에, 메모리의 원하는 블록에서 인출 동작 또는 저장 동작이 시도되고 세그먼트 액세스 제어 필드가 프로그램 액세스 제어 필드와 일치하지 않으면 보호 예외가 표시된다.
액세스 유효성( AV ) 및 인출 보호(F)
이제 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용되는 인출 보호를 결정하는 순서도의 일 실시예를 도시하는 도 11을 참조한다.
동적 어드레스 변환은 세그먼트 테이블 엔트리가 노드(616)로의 도 6에 설명된 변환에 사용된 세그먼트 테이블로부터 인출되는 지점으로 진행된다. 어드레스 변환은 저장 장치 또는 메모리 내의 원하는 데이터 블록에 대한 절대 어드레스가 획득되는 노드(822)로의 도 8에 설명된 바와 같이 계속된다. 도 11의 흐름은 노드(822)에서 시작된다.
단계(1102)에서, 세그먼트 테이블 엔트리로부터 액세스 유효성(AV) 필드가 획득된다. 단계(1104)에서, 세그먼트 테이블 엔트리 내의 액세스 유효성 필드가 인에이블링(AV=1)되는지 여부가 판정된다. 단계(1104)에서 액세스 유효성 필드가 0이면, 단계(1006)에서 인출 보호 비트는 무시된다. 단계(1104)에서 액세스 유효성 필드가 인에이블링되면, 단계(1108)에서 세그먼트 테이블 엔트리로부터 인출 보호 비트가 획득된다. 단계(1110)에서, 세그먼트 테이블 엔트리 내의 F 필드에 의해 표시된 인출 보호의 레벨은 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록에 적용된다. 변환된 가상 어드레스에 의해 어드레싱된 데이터 블록으로부터의 인출 동작은 인출 보호 필드가 액세스 키와 일치하는 경우에만 허용된다. 액세스 키는 프로그램 상태 규정어 또는 실행되고 있는 프로그램 인스트럭션의 피연산자에 의해 제공된다. 원하는 데이터 블록으로부터의 인출 동작은 인출 보호 필드가 디스에이블링되는 경우 또는 인출 보호 필드가 인에이블링되고 가상 어드레스와 연관된 액세스 제어 필드가 액세스 키와 같은 경우에만 허용된다. 액세스 키가 0이면, 원하는 데이터 블록으로부터의 인출이 허용된다.
또 다른 실시예에서, 프로그램 액세스 키가 0이면, 메모리의 원하는 블록으로의 저장 동작 및 메모리의 원하는 블록으로부터의 인출 동작이 허용된다.
또 다른 실시예에서, 액세스 유효성 필드 및 인출 보호 필드가 인에이블링되면, 메모리의 원하는 블록으로부터 시도되고 있는 인출 동작 및 세그먼트 액세스 제어 필드가 프로그램 액세스 제어 필드와 일치하지 않는 것에 응답하여 보호 예외가 표시된다.
SET STORAGE KEY EXTENDED( SSKE )
저장 장치 키는 SET STORAGE KEY EXTENDED(SSKE) 인스트럭션에 의해 설정될 수 있다. 일 실시예에서, SSKE 인스트럭션은 다음 포맷을 갖는다.
Figure pct00019
하나 이상의 4K 바이트 블록에 대한 저장 장치 키는 제 1 피연산자 레지스터 내의 값으로 대체된다. 조건부적인 SSKE 장치가 설치될 때, 키 설정 동작의 특정 기능은 바이패스될 수 있다. 조건부적인 SSKE 장치가 설치되지 않을 때, 또는 조건부적인 SSKE 장치가 설치될 때 및 M3 필드의 MR 및 MC 비트 양자 모두 0일 때, 범용 레지스터 R2의 콘텐츠에 의해 어드레싱되는 4K 바이트 블록에 대한 저장 장치 키는 범용 레지스터 R1으로부터의 비트로 대체된다. 인스트럭션은 조건 코드의 변경 없이 완료된다.
조건부적인 SSKE 장치가 설치되고 MR 및 MC 비트 양자 모두 1이면, 액세스 제어 비트, 인출 보호 비트 및 선택적으로 범용 레지스터 R2의 콘텐츠에 의해 어드레싱되는 저장 장치 키의 참조 비트 및 변경 비트는 범용 레지스터 R1 내의 대응하는 비트와 비교된다. 만일 비교된 비트들이 동일하면, 키에 어떠한 변경도 이루어지지 않으며, 그렇지 않으면, 키의 선택된 비트가 범용 레지스터 R1 내의 대응하는 비트로 대체된다. 임의의 변경 이전의 저장 장치 키는 범용 레지스터 R1 내에 삽입되고, 그 결과는 조건 코드에 의해 표시된다.
강화된 DAT 장치가 설치되면, 후술되는 다중 블록 제어의 제어 하에 있는 동일한 1MB 블록 내의 다수의 4K 바이트 블록의 저장 장치 키마다 이상의 동작이 반복될 수 있다. 일 실시예에서, M3 필드는 다음 포맷을 갖는다.
Figure pct00020
M3 필드의 비트는 다음과 같이 정의된다.
예비할당: 비트 0이 예비할당된다.
참조 비트 갱신 마스크( MR ): MR 비트, M3 필드의 비트 1은 저장 장치 키 내의 참조 비트에 대한 갱신이 바이패스될 수 있는지 여부를 제어한다.
변경 비트 갱신 마스크( MC ): MC 비트, M3 필드의 비트 2는 후술되는 바와 같이 저장 장치 키 내의 변경 비트에 대한 갱신이 바이패스될 수 있는지 여부를 제어한다.
다중 블록 제어( MB ): MB 비트, M3 필드의 비트 3은 다수의 4K 바이트 블록 내의 저장 장치 키 설정에서 설명된 바와 같이, 저장 장치의 다수의 4K 바이트 블록에 대한 저장 장치 키가 설정될 수 있는지 여부를 제어한다.
강화된 DAT 장치가 설치되지 않으면, M3 필드의 비트 위치 3은 예비할당된다. 조건부적인 SSKE 장치가 설치되면, 처리는 다음과 같다.
MR 및 MC 비트, M3 필드의 비트 1 및 2 양자 모두가 0이면, 조건부적인 SSKE 장치가 설치되지 않았더라도 인스트럭션은 완료된다. 범용 레지스터 R2의 콘텐츠에 의해 어드레싱되는 4K 바이트 블록에 대한 저장 장치 키는 범용 레지스터 R1으로부터의 비트로 대체되고, 인스트럭션은 조건 코드의 변경 없이 완료된다.
MR 및 MC 비트 중 어느 하나 또는 양자 모두 1일 때, 처리는 다음과 같다.
임의의 변경 이전에, 범용 레지스터 R2에 의해 어드레싱되는 4K 바이트 블록에 대한 저장 장치 키의 콘텐츠는 범용 레지스터 R1의 비트 위치 48-54에 배치되고, 범용 레지스터 R1의 비트 55는 0으로 설정된다. 레지스터의 비트 0-47 및 56-63은 변경되지 않은 채로 있다. 저장 장치 키를 인출할 때 무효 체킹 블록 코드(CBC)가 검출되면, (a) 4K 바이트 블록에 대한 전체 저장 장치 키는 범용 레지스터 R1의 비트 56-62로 대체되고, (b) 범용 레지스터 R1의 비트 위치 48-55의 콘텐츠는 예측될 수 없으며, (c) 인스트럭션은 조건 코드 3을 설정함으로써 완료된다.
지정된 4K 바이트 블록에 대한 저장 장치 키의 액세스 제어 비트 및 인출 보호 비트는 범용 레지스터 R1의 비트 56-60 내의 대응하는 필드와 비교된다. 만일 각각의 필드가 동일하지 않으면, 4K 바이트 블록에 대한 전체 저장 장치 키는 범용 레지스터 R1으로부터의 비트로 대체되고, 인스트럭션은 조건 코드 1을 설정함으로써 완료된다. 저장 장치 키 내의 액세스 제어 및 인출 보호 비트가 범용 레지스터 R1 내의 각각의 비트와 동일하면, 처리는 후술되는 바와 같이 계속된다.
MR 및 MC 비트 양자 모두 1이면, 인스트럭션은 조건 코드 0을 설정함으로써 완료된다. 이 경우에 저장 장치 키는 변경되지 않은 채로 있다.
MR 비트가 0이고 MC 비트가 1이면, 지정된 4K 바이트 블록에 대한 저장 장치 키의 참조 비트는 범용 레지스터 R1의 비트 61과 비교된다. 만일 비트들이 동일하면, 인스트럭션은 조건 코드 0을 설정함으로써 완료된다. 이 경우에 저장 장치 키는 변경되지 않은 채로 있다. 비트들이 동일하지 않으면, (a) 지정된 4K 바이트 블록에 대한 전체 저장 장치 키는 범용 레지스터 R1 내의 비트로 대체되고, 인스트럭션은 조건 코드 1을 설정함으로써 완료되며, 또는 (b) 저장 장치 키에 대한 참조 비트는 범용 레지스터 R1의 비트 61로 대체되고, 키에 대한 변경 비트는 예측될 수 없고, 인스트럭션은 조건 코드 2를 설정함으로써 완료된다. 조건 코드 1이 설정되는지 조건 코드 2가 설정되는지 여부는 예측될 수 없다.
MC 비트가 0이고 MR 비트가 1이면, 지정된 4K 바이트 블록에 대한 저장 장치 키의 변경 비트는 범용 레지스터 R1의 비트 62와 비교된다. 만일 비트들이 동일하면, 인스트럭션은 조건 코드 0을 설정함으로써 완료된다. 이 경우에 저장 장치 키는 변경되지 않은 채로 있다. 비트들이 동일하지 않으면, (a) 지정된 4K 바이트 블록에 대한 전체 저장 장치 키는 범용 레지스터 R1 내의 비트로 대체되고, 인스트럭션은 조건 코드 1을 설정함으로써 완료되며, 또는 (b) 저장 장치 키에 대한 변경 비트는 범용 레지스터 R1의 비트 62로 대체되고, 키에 대한 변경 비트는 예측될 수 없고, 인스트럭션은 조건 코드 2를 설정함으로써 완료된다. 조건 코드 1이 설정되는지 조건 코드 2가 설정되는지 여부는 예측될 수 없다.
강화된 DAT 장치가 설치되지 않거나, 장치가 설치되지만 다중 블록 제어가 0이면, 범용 레지스터 R2는 실제 어드레스를 포함한다. 강화된 DAT 장치가 설치되고 다중 블록 제어가 1이면, 범용 레지스터 R2는 절대 어드레스를 포함한다. 24 비트 어드레싱 모드에서, 범용 레지스터 R2의 비트 40-51은 실제 또는 절대 저장 장치 내에 4K 바이트 블록을 지정하고, 레지스터의 비트 0-39 및 52-63은 무시된다. 31 비트 어드레싱 모드에서, 범용 레지스터 R2의 비트 33-51은 실제 또는 절대 저장 장치 내에 4K 바이트 블록을 지정하고, 레지스터의 비트 0-32 및 52-63은 무시된다. 64 비트 어드레싱 모드에서, 범용 레지스터 R2의 비트 0-51은 실제 또는 절대 저장 장치 내에 4K 바이트 블록을 지정하고, 레지스터의 비트 52-63은 무시된다. 저장 장치 블록을 지정하는 어드레스는 실제 또는 절대 어드레스이므로 동적 어드레스 변환을 겪지 않는다. 저장 장치 키에 대한 참조는 보호 예외를 겪지 않는다.
새로운 7 개의 비트 저장 장치 키 값 또는 그 선택된 비트는 범용 레지스터 R1의 비트 위치 56-62로부터 획득된다. 레지스터의 비트 위치 0-55 및 63의 콘텐츠는 무시된다. 조건부적인 SSKE 장치가 설치되고, MR 및 MC 비트 중 어느 하나 또는 양자 모두 0일 때, 비트 위치 63은 0을 포함하고, 그렇지 않으면, 프로그램은 추후에 호환적으로 동작하지 않을 수 있다.
조건부적인 SSKE 장치가 설치되고 결과적인 조건 코드가 0일 때, 직렬화 및 체크포인트 동기화 기능이 동작이 완료된 후에 수행되는지 여부가 예측될 수 없다는 것을 제외하고, 직렬화 및 체크포인트 동기화 기능은 동작이 시작되기 전에 및 다시 동작이 완료된 후에 수행된다. 이 인스트럭션에 의한 키의 설정 이전 또는 이후에 지정된 4K 바이트 블록에 대해 완료된 임의의 CPU 또는 채널 프로그램에 의한 임의의 저장 액세스의 경우에, 블록에 대한 저장 장치 키 내의 1로의 참조 및 변경 비트의 연관된 설정은 각각 이 인스트럭션의 실행 전 또는 후에 완료된다.
다수의 4K 바이트 블록 내의 저장 장치 키 설정
강화된 DAT 장치가 설치되지 않는 경우 또는 장치가 설치되지만 다중 블록 제어가 0인 경우에, 단일 4K 바이트 블록에 대한 저장 장치 키는 전술한 바와 같이 설정된다. 강화된 DAT 장치가 설치되고 다중 블록 제어가 1이면, 1 메가바이트 블록 내의 다수의 4K 바이트 블록에 대한 저장 장치 키가 설정될 수 있는데, 이는 제 2 피연산자 어드레스에 의해 지정된 블록에서 시작하고, 다음 1 메가바이트 경계까지 각각의 연속하는 블록에서 바로 계속된다. 이 경우에, SET STORAGE KEY EXTENDED가 인터럽트될 수 있고 처리는 다음과 같다.
인터럽트(종료 다음에 오는 것이 아닌 다른 것)가 발생하면, 범용 레지스터 R2는 갱신되었으므로 인스트럭션은 재실행될 때 인터럽트 포인트에서 재개한다. 만일 MR 비트 또는 MC 비트 중 어느 하나 또는 양자 모두 1이면, 조건 코드는 예측될 수 없고, 그렇지 않으면, 조건 코드는 변경되지 않는다.
인스트럭션이 인터럽트 없이 완료되면, 범용 레지스터 R2는 다음 1 메가바이트 경계로 갱신된다. MR 또는 MC 비트 중 어느 하나 또는 양자 모두가 1이면, 조건 코드 3이 설정되고, 그렇지 않으면, 조건 코드는 변경되지 않는다.
이상의 2 가지 경우 중 어느 하나에서, MR 또는 MC 비트 중 어느 하나 또는 양자 모두 1이면, 범용 레지스터 R1의 비트 48-55는 예측될 수 없다.
다중 블록 처리가 발생하고 R1 및 R2 필드가 동일한 레지스터를 지정하면, 제 2 피연산자 어드레스가 레지스터 내에 배치된다. 24 비트 또는 31 비트 어드레싱 모드에서 다중 블록 처리가 발생하면, 범용 레지스터 R2의 비트 위치 32-63 내의 어드레스의 일부가 아닌 제일 왼쪽의 비트는 0으로 설정되고, 레지스터의 비트 0-31은 변경되지 않는다.
결과적인 조건 코드:
조건부적인 SSKE 장치가 설치되지 않는 경우 또는 M3 필드의 MR 및 MC 비트 양자 모두 0인 경우에, 조건 코드는 변경되지 않은 채로 있다. 조건부적인 SSKE 장치가 설치되고 MR 및 MC 비트 중 어느 하나 또는 양자 모두가 1인 경우에, 조건 코드는 다음과 같이 설정된다.
0 - 저장 장치 키 설정되지 않음
1 - 전체 저장 장치 키 설정
2 - 부분 저장 장치 키 설정
3 - 전체 저장 장치 키 설정; 범용 레지스터 R1의 비트 48-55는 예측될 수 없음
프로그램 예외:
어드레싱(범용 레지스터 R2에 의해 지정된 어드레스)
특권 동작
변경 기록:
변경 기록은 주 저장 장치에서 대체될 때 어느 페이지가 보조 저장 장치에 저장되어야 하는지에 관하여 정보를 제공한다. 변경 기록은 저장 장치 키의 변경 비트(비트 6)를 사용한다. 저장 액세스가 대응하는 저장 장치 블록의 콘텐츠로 하여금 변경되게 할 때마다 및 (a) 강화된 DAT가 적용되지 않거나 (b) 강화된 DAT가 적용되고 후속 내용 중 어느 하나가 참일 때마다 변경 비트는 1로 설정된다.
DAT에 의해 사용된 세그먼트 테이블 엔트리 내의 STE 포맷 제어는 0이고, DAT에 의해 사용된 페이지 테이블 엔트리 내의 변경 기록 오버라이드(CO)는 0이다.
DAT에 의해 사용된 세그먼트 테이블 엔트리 내의 STE 포맷 제어는 1이고, DAT에 의해 사용된 페이지 테이블 엔트리 내의 변경 기록 오버라이드(CO)는 1이다.
저장 장치의 콘텐츠를 변경하지 않는 저장 액세스는 변경 비트를 1로 설정하거나 설정하지 않을 수 있다. 변경 비트는 액세스가 금지되면 저장 시도를 위해 1로 설정되지 않는다. 특히,
CPU의 경우에, 저장 액세스 대해 액세스 예외가 존재할 때마다 또는 그 액세스에 대한 액세스 예외의 우선순위보다 높은 우선순위인 예외가 존재할 때마다 그 저장 액세스는 금지된다.
채널 서브시스템의 경우에, 저장 액세스에 대해 키 제어형 보호 위반이 존재할 때마다 그 저장 액세스는 금지된다.
변경 기록은 항상 활성이고, 임의의 CPU(본 명세서에 설명된 변경 기록 오버라이드에 의해 억제될 때를 제외함), 임의의 오퍼레이터 장치 또는 채널 서브시스템에 의해 이루어진 액세스를 포함하는 저장 장치에 대한 모든 저장 액세스에 대해 발생한다. 변경 기록은 인터럽트의 일부인 것과 같은 기계에 의해 이루어진 암시적인 참조에 대해 발생한다.
변경 기록은 후속하는 인스트럭션의 피연산자에 대해서는 발생하지 않는데, 이는 그들이 저장 장치 위치를 변경하지 않으면서 저장 장치 키를 직접 변경하기 때문이다.
RESET REFERENCE BIT EXTENDED
SET STORAGE KEY EXTENDED(변경 비트는 지정된 값으로 설정된다)
0에서 1로 변경된 변경 비트가 CPU 재시행 시에 0으로 반드시 복원되는 것은 아니다.
변경 기록 오버라이드( CO )
저장 액세스가 대응하는 저장 장치 블록의 콘텐츠로 하여금 변경되게 할 때마다 저장 장치 키의 변경 비트는 1로 설정된다. 저장 장치의 콘텐츠를 변경하지 않는 저장 액세스는 변경 비트를 0으로 설정하거나 설정하지 않을 수 있다. 변경 비트는 액세스가 금지되면 저장 시도시에 1로 설정되지 않는다. 변경 기록 오버라이드는 저장 장치 키의 변경 비트의 설정이 바이패스되게 한다.
강화된 DAT가 적용되고, 가상 어드레스가 DAT 표 엔트리에 의해 변환되는 경우에, 세그먼트 테이블 엔트리와 페이지 테이블 엔트리 양자 모두의 비트 55에 변경 기록 오버라이드(CO)가 제공된다. 세그먼트 테이블 엔트리의 STE 포맷 제어(FC) 비트 53이 0이면, 페이지 테이블 엔트리 내의 변경 기록 오버라이드가 적용된다. PTE 내의 변경 기록 오버라이드가 0이면, 4K 바이트 블록으로의 저장 동작에 대해 변경 기록이 발생한다. 변경 기록 오버라이드가 1이면, 4K 바이트 블록으로의 저장 동작에 대해 변경 기록이 발생하는지 여부는 예측될 수 없다. STE 포맷 제어가 1이면, STE 내의 변경 기록 오버라이드가 적용된다. STE 내의 변경 기록 오버라이드가 0이면, 세그먼트의 256 개의 4K 바이트 블록 중 임의의 4K 바이트 블록으로의 저장 동작에 대해 변경 기록이 발생한다. STE 내의 변경 기록 오버라이드가 1이면, 세그먼트의 256 개의 4K 바이트 블록 중 임의의 4K 바이트 블록에 대해 변경 기록이 발생하는지 여부는 예측될 수 없다.
변경 기록 오버라이드는 실제 또는 절대 어드레스에 또는 실제 공간 지정에 의해 변환되는 가상 어드레스에 적용되지 않는다.
이제 가상 어드레스의 동적 어드레스 변환에 사용된 세그먼트 테이블 엔트리로부터 변경 기록 오버라이드 필드를 획득하는 일 실시예의 순서도를 도시하는 도 12를 참조한다.
동적 어드레스 변환은 세그먼트 테이블 엔트리가 노드(616)로의 도 6에 설명된 변환에 사용된 세그먼트 테이블로부터 인출되는 지점으로 진행된다. 어드레스 변환은 저장 장치 또는 메모리 내의 원하는 데이터 블록에 대한 절대 어드레스가 획득되는 노드(822)로의 도 8에 설명된 바와 같이 계속된다. 도 12의 흐름은 노드(822)에서 시작된다.
단계(1210)에서, 변환에 사용된 세그먼트 테이블 엔트리로부터 변경 기록 오버라이드(CO) 필드가 획득된다. 변경 기록 오버라이드는 저장 키의 변경 비트가 오버라이딩되게 한다. 단계(1212)에서, 변환된 가상 어드레스에 의해 어드레싱된 원하는 데이터 블록 상에서 수행되는 액세스가 저장 유형 동작인지 인출 유형 동작인지 여부가 결정된다. 만일 액세스가 인출 유형 액세스이면, 단계(1213)에서 변경 비트의 설정은 발생하지 않고 변경 기록 오버라이드는 적용되지 않는다. 만일 액세스가 저장 유형 동작이면, 단계(1214)에서 세그먼트 테이블 엔트리 내의 변경 기록 오버라이드가 인에이블링되는지 여부가 결정된다. 단계(1214)에서 변경 기록 오버라이드가 인에이블링되지 않으면, 단계(1218)에서 원하는 블록과 연관된 저장 장치 키의 변경 비트는 1로 설정된다. 단계(1214)에서 변경 기록 오버라이드가 인에이블링되면, 단계(1216)에서 연관된 저장 장치 키의 변경 비트는 설정되지 않는다. 단계(1220)에서, 원하는 데이터 블록이 변경되었다고 표시된다.
다른 실시예에서, 강화된 DAT가 적용되고 STE 내의 포맷 제어가 인에이블링되지 않으면, 세그먼트 테이블 엔트리로부터 페이지 테이블의 기점이 획득된다. 가상 어드레스의 페이지 인덱스 부분은 페이지 테이블 내의 페이지 테이블 엔트리를 참조하는 데 사용된다. 주 저장 장치 내의 작은 데이터 블록의 페이지-프레임 실제 어드레스 및 페이지 변경 오버라이드 필드는 페이지 테이블 엔트리로부터 획득된다. 각각의 작은 데이터 블록은 변경 비트를 포함하는 연관된 저장 장치 키를 갖는다. 작은 데이터 블록은 큰 데이터 블록보다 크기가 작고 4 킬로바이트(4096 바이트) 데이터 블록으로 구성된다. 주 저장 장치 내의 원하는 실제 데이터 블록의 변환된 어드레스는 페이지-프레임 실제 어드레스 및 가상의 바이트-인덱스 부분의 조합을 포함한다. 저장 또는 인출 유형 동작이 원하는 실제 데이터 블록에 대해 수행되었는지 여부가 결정된다. 만일 액세스 동작이 인출 유형 동작이면, 변경 기록 오버라이드는 적용되지 않는다. 만일 액세스가 저장 유형 동작이고, 가상 어드레스와 연관된 변경 기록 오버라이드 필드가 디스에이블링되면, 원하는 4K 블록과 연관된 저장 장치 키의 변경 비트는 1로 설정된다. 원하는 4K 블록이 변경되었다는 표시가 제공된다.
다른 실시예에서, 변경 기록 오버라이드 필드가 인에이블링되면, 원하는 4K 블록과 연관된 저장 장치 키의 변경 비트는 예측될 수 없다.
상업적 구현
본 명세서에 IBM®에 의한 z/아키텍처가 언급되었지만, 본 발명의 하나 이상의 양상은 페이지 가능 엔트리 또는 유사한 구성을 이용하는 다른 기계 아키텍처 및/또는 컴퓨팅 환경에 동일하게 적용될 수 있다.
본 명세서에 개시된 eDAT 장치 및 다른 포맷, 인스트럭션 및 속성의 상업적 구현은 하드웨어로 또는 예컨대, 어셈블리어로 기록하는 운영 시스템 프로그래머와 같은 프로그래머에 의해 구현될 수 있다. 그러한 프로그래밍 인스트럭션은 IBM® 시스템 z 서버와 같은 컴퓨팅 환경에서 또는 다른 아키텍처를 실행하는 기계에서 고유하게 실행되도록 의도되는 저장 장치 매체 상에 저장될 수 있다. 인스트럭션은 기존의 및 앞으로의 IBM® 서버에서 및 다른 기계 또는 메인프레임 상에서 에뮬레이팅될 수 있다. 인스트럭션은 일반적으로 실행이 에뮬레이션 모드에 있는 기계에서 실행될 수 있다.
본 발명의 하나 이상의 양상은 가령, 하나 이상의 페이지 가능 엔티티(예컨대, 게스트)가 하나 이상의 프로세서 상에서 실행하는 가상 기계 에뮬레이션에 동일하게 적용가능하다. 일례로서, 페이지 가능 게스트는 그 전체 내용이 본 명세서에 참조로써 포함되는 "IBM® 시스템/370 확장 아키텍처", IBM® Pub. No. SA22-7095 (1985)에 설명된 SIE(Start Interpretive Execution) 아키텍처에 의해 정의된다.
에뮬레이션 모드에서, 에뮬레이트되는 특정 인스트럭션은 디코딩되고, 서브루틴 또는 드라이버에서와 같이 개별 인스트럭션을 구현하도록 서브루틴이 실행되거나, 특정 하드웨어에 드라이버를 제공하는 데 본 명세서의 설명을 이해한 후에 당해 기술 내에 있는 몇몇 다른 기술이 사용된다. 다양한 소프트웨어 및 하드웨어 에뮬레이션 기술은 각각 본 명세서에 참조로써 포함되는 5,551,013, 5,574,873, 5,790,825, 6,009,261, 6,308,255 및 6,463,582를 포함하는 다수의 미국 특허에 설명된다. 다수의 다른 교시는 타깃 기계에 대해 설계된 인스트럭션의 에뮬레이션을 달성하는 다양한 방법을 더 설명한다.
다른 변경 및 아키텍처
본 명세서에 설명된 다양한 실시예는 예일 뿐이다. 본 발명의 사상으로부터 벗어나지 않으면서 이들 실시예에 대한 다수의 변경이 존재할 수 있다. 본 발명의 하나 이상의 능력은 소프트웨어, 펌웨어, 하드웨어 또는 이들의 몇몇 조합으로 구현될 수 있다. 본 발명의 양상은 복수의 존을 갖는 다른 환경 및 비분할된 환경을 포함하는 다수의 유형의 환경에 이롭다. 또한, 중앙 프로세서 집합체가 존재하지 않을 수 있지만, 함께 연결된 다수의 프로세서는 존재한다. 본 발명의 다양한 양상은 단일 프로세서 환경에 적용가능하다.
본 명세서에 특정 실시예가 설명되었지만, 본 발명의 사상으로부터 벗어나지 않으면서 이들 환경에 대한 다수의 변경이 구현될 수 있다. 예컨대, 만일 환경이 논리적으로 분할되면, 환경 내에 보다 많거나 적은 논리적 분할부가 포함될 수 있다. 또한, 함께 연결된 다수의 중앙 처리 집합체가 존재할 수 있다. 이들은 본 발명의 사상으로부터 벗어나지 않으면서 이루어질 수 있는 몇몇 변경일 뿐이다. 추가적으로, 다른 변경이 가능하다.
저장 장치의 고정 크기 또는 사전규정된 크기를 지칭하는 데 '페이지'라는 용어가 사용되지만, 페이지의 크기는 변할 수 있다. 이와 유사하게, 블록의 크기는 변할 수 있다. 상이한 크기의 블록 및/또는 페이지가 존재할 수 있다. 페이지는 블록과 균등할 수 있다. 다른 구조체가 대안적으로 사용되거나 소프트웨어 및/또는 하드웨어를 통해 구현될 수 있다. 또한, 본 명세서에 설명된 예에서, 상이한 크기의 워드 또는 어드레스, 상이한 수의 비트, 상이한 순서의 비트, 보다 많거나 적거나 상이한 비트, 보다 많거나 적거나 상이한 필드, 상이한 순서의 필드, 상이한 크기의 필드 등을 포함하지만 이것으로 제한되지 않는 다수의 변경이 존재할 수 있다. 다시 한번, 이들은 예로서 제공될 뿐이다. 다수의 변경이 가능하다.
처리 유닛은 게스트, 호스트, 다른 프로세서, 에뮬레이터, 가상 기계 및/또는 다른 유사한 구성과 같은 페이지 가능 엔티티를 포함한다. 버퍼는 저장 장치 및/또는 메모리의 영역뿐만 아니라 어레이 또는 페이지 가능 엔티티를 포함하는 상이한 유형의 데이터 구조체도 포함하지만, 이것으로 제한되지 않는다. 테이블은 다른 데이터 구조체도 포함할 수 있다. 인스트럭션은 다른 레지스터를 참조할 수 있다. 또한, 페이지, 세그먼트 및/또는 영역은 본 명세서에 설명된 것과 다른 크기 변경에 속할 수 있다.
본 발명의 하나 이상의 양상은 가령, 컴퓨터 사용가능 또는 기계 판독가능 매체를 가지는 제조물(예컨대, 하나 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 매체는 본 발명의 능력을 제공하고 용이하게 하도록 내부에 구현된, 가령, 컴퓨터 판독가능 프로그램 코드 수단 또는 로직(예컨대, 인스트럭션, 코드, 커맨드 등)을 갖는다. 제조물은 컴퓨터 시스템의 일부로서 포함되거나 개별적으로 판매될 수 있다. 부가적으로, 본 발명의 능력을 수행하도록 기계에 의해 실행가능한 인스트럭션의 적어도 하나의 프로그램을 실행하는 기계에 의해 판독가능한 적어도 하나의 프로그램 저장 장치가 제공될 수 있다.
본 명세서에 도시된 순서도는 예시적이다. 본 발명의 사상으로부터 벗어나지 않으면서 설명된 이들 도면 또는 단계 또는 동작에 다수의 변경이 존재할 수 있다. 가령, 단계는 상이한 순서로 수행되거나, 단계는 추가, 제거 또는 변경될 수 있다. 이들 모든 변경은 청구되는 본 발명의 일부인 것으로 간주한다.
본 발명의 실시예가 상세히 도시되고 설명되었지만, 당업자는 본 발명의 사상으로부터 벗어나지 않으면서 다양한 변경, 추가, 대체 등이 이루어질 수 있음을 알 것이며 따라서 이들은 후속하는 특허청구범위에 규정된 바와 같이 본 발명의 범위 내에 있는 것으로 간주한다.

Claims (10)

  1. 주 저장 장치 내의 데이터 블록의 변환 어드레스로의 가상 어드레스의 변환에 사용되는 변환 테이블의 계층을 가지는 컴퓨터 시스템에서 데이터를 보호하는 방법에 있어서,
    변환될 상기 가상 어드레스를 획득하는 단계와,
    상기 변환 테이블의 계층의 변환 테이블의 초기 기점을 획득하는 단계 -상기 변환 테이블의 계층은 세그먼트 테이블을 포함함- 와,
    상기 획득된 초기 기점에 기초하여, 상기 세그먼트 테이블로부터 세그먼트 테이블 엔트리를 획득하는 단계 -상기 세그먼트 테이블 엔트리는 포맷 제어 필드를 포함하도록 구성됨- 와,
    강화된 DAT 장치가 인에이블링되는 것에 응답하여, 상기 세그먼트 테이블 엔트리 내의 상기 포맷 제어 필드가 인에이블링되는지 여부를 판정하는 단계와,
    상기 포맷 제어 필드가 인에이블링되는 것이 응답하여,
    상기 세그먼트 테이블 엔트리 내의 액세스 유효성 필드가 인에이블링되는지 여부를 판정하는 단계 -상기 세그먼트 테이블 엔트리는 상기 액세스 유효성 필드와, 세그먼트 액세스 제어 필드와, 세그먼트 인출 보호 필드, 및 주 저장 장치 내의 큰 데이터 블록의 세그먼트-프레임 절대 어드레스를 포함함- 와,
    상기 액세스 유효성 필드가 인에이블링되는 것에 응답하여,
    메모리의 원하는 블록으로의 저장을 허용하는 단계 -상기 저장은 상기 가상 어드레스와 연관되고, 상기 저장은 상기 세그먼트 액세스 제어 필드가, 실행되는 프로그램 인스트럭션의 피연산자 또는 프로그램 상태 규정어 중 어느 하나에 의해 제공되는 프로그램 액세스 키와 일치하는 것에만 응답하여 허용됨- 와,
    상기 원하는 데이터 블록으로부터의 인출을 허용하는 단계 -상기 인출은 a) 세그먼트 인출 보호 필드가 디스에이블링되는 것 또는, b) 상기 세그먼트 인출 보호 필드가 인에이블링되고 상기 가상 어드레스와 연관된 상기 프로그램 액세스 키가 상기 세그먼트 액세스 제어 필드와 동일한 것에만 응답하여, 상기 가상 어드레스와 연관됨- 와,
    상기 강화된 DAT 장치가 인에이블링되지 않는 것에 응답하여,
    상기 세그먼트 테이블 엔트리로부터 페이지 테이블의 기점을 획득하고, 상기 페이지 테이블 내의 페이지 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 페이지 인덱스 부분을 사용하는 단계와,
    상기 페이지 테이블 엔트리로부터 주 저장 장치 내의 작은 데이터 블록의 페이지-프레임 실제 어드레스를 획득하는 단계 -상기 작은 데이터 블록은 상기 큰 데이터 블록보다 크기가 작고 저장 장치 키와 연관된 4 킬로바이트 데이터 블록으로 구성되며, 상기 저장 장치 키는 저장 장치 액세스 제어 필드 및 저장 장치 인출 보호 필드를 포함하고, 주 저장 장치 내의 원하는 실제 데이터 블록의 변환 어드레스는 상기 페이지-프레임 실제 어드레스와 상기 가상 어드레스의 바이트-인덱스 부분의 조합을 포함함- 를 포함하는
    데이터 보호 방법.
  2. 제 1 항에 있어서,
    상기 변환 어드레스는 실제 어드레스 또는 절대 어드레스 중 어느 하나이고, 상기 실제 어드레스는 상기 절대 어드레스로부터 프리픽싱(prefixing)되며, 상기 변환 테이블의 계층은 영역 제 1 테이블, 영역 제 2 테이블, 영역 제 3 테이블 및 상기 세그먼트 테이블 중 하나 이상으로 구성되고,
    상기 세그먼트 테이블로부터 세그먼트 테이블 엔트리를 획득하는 단계는,
    A) 상기 영역 제 1 테이블의 상기 획득된 초기 기점 어드레스에 기초하여, 상기 영역 제 2 테이블의 기점 어드레스를 포함하는 상기 영역 제 1 테이블 내의 영역 제 1 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 제 1 인덱스 부분을 사용하는 단계와, 상기 영역 제 2 테이블의 상기 기점 어드레스에 기초하여, 상기 영역 제 3 테이블의 기점 어드레스를 포함하는 상기 영역 제 2 테이블 내의 영역 제 2 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 제 2 인덱스 부분을 사용하는 단계와, 상기 영역 제 3 테이블의 상기 기점 어드레스에 기초하여, 상기 세그먼트 테이블의 기점 어드레스를 포함하는 상기 영역 제 3 테이블 내의 영역 제 3 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 제 3 인덱스 부분을 사용하는 단계와, 상기 세그먼트 테이블의 상기 기점 어드레스에 기초하여, 상기 세그먼트 테이블 내의 세그먼트 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 세그먼트 인덱스 부분을 사용하는 단계와,
    B) 상기 영역 제 2 테이블의 상기 획득된 초기 기점 어드레스에 기초하여, 상기 영역 제 3 테이블의 기점 어드레스를 포함하는 상기 영역 제 2 테이블 내의 상기 영역 제 2 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 제 2 인덱스 부분을 사용하는 단계와, 상기 영역 제 3 테이블의 상기 기점 어드레스에 기초하여, 상기 세그먼트 테이블의 기점 어드레스를 포함하는 상기 영역 제 3 테이블 내의 상기 영역 제 3 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 상기 제 3 인덱스 부분을 사용하는 단계와, 상기 세그먼트 테이블의 상기 기점 어드레스에 기초하여, 상기 세그먼트 테이블 내의 상기 세그먼트 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 상기 세그먼트 인덱스 부분을 사용하는 단계와,
    C) 상기 영역 제 3 테이블의 상기 획득된 초기 기점 어드레스에 기초하여, 상기 세그먼트 테이블의 기점 어드레스를 포함하는 상기 영역 제 3 테이블 내의 상기 영역 제 3 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 상기 제 3 인덱스 부분을 사용하는 단계와, 상기 세그먼트 테이블의 상기 기점 어드레스에 기초하여, 상기 세그먼트 테이블 내의 상기 세그먼트 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 상기 세그먼트 인덱스 부분을 사용하는 단계와,
    D) 상기 세그먼트 테이블의 상기 획득된 초기 기점 어드레스에 기초하여, 상기 세그먼트 테이블 엔트리를 참조하는 데 상기 가상 어드레스의 상기 세그먼트 인덱스 부분을 사용하는 단계
    중 어느 하나를 포함하는
    데이터 보호 방법.
  3. 제 1 항에 있어서,
    상기 프로그램 액세스 키가 0인 것에 응답하여, 상기 메모리의 원하는 블록으로의 저장 및 상기 메모리의 원하는 블록으로부터의 인출을 허용하는 단계를 포함하되,
    상기 저장 및 인출은 상기 가상 어드레스와 연관되는
    데이터 보호 방법.
  4. 제 1 항에 있어서,
    상기 액세스 유효성 필드 및 상기 인출 보호 필드가 인에이블링되는 것에 응답하여, 상기 메모리의 원하는 블록으로부터 인출 동작이 시도되고 상기 세그먼트 액세스 제어 필드가 상기 프로그램 액세스 제어 필드와 일치하지 않으면 보호 예외를 표시하는 단계를 포함하되,
    상기 인출 동작은 상기 가상 어드레스와 연관되는
    데이터 보호 방법.
  5. 제 1 항에 있어서,
    상기 액세스 유효성 필드가 인에이블링되는지 여부를 판정하는 단계는 a) 제어 레지스터의 저장 보호 오버라이드 필드(Storage-Protection-Override field)가 디스에이블링되는지 여부 또는 b) 상기 저장 보호 오버라이드 필드가 인에이블링되고 상기 세그먼트 액세스 제어 필드가 인에이블링되지 않는지 여부 중 어느 하나를 판정하는 단계를 더 포함하는
    데이터 보호 방법.
  6. 제 1 항에 있어서,
    적어도 하나의 변환 색인 버퍼 내에 상기 가상 어드레스의 상기 변환에 사용되는 정보를 저장하는 단계와,
    상기 변환 테이블의 계층보다 상기 변환 색인 버퍼로부터의 상기 저장된 정보를 사용하여 주 저장 장치 내의 상기 데이터 블록의 상기 절대 어드레스로의 후속 가상 어드레스의 후속 변환을 수행하는 단계를 더 포함하는
    데이터 보호 방법.
  7. 제 1 항에 있어서,
    상기 변환이 기계 아키텍처에 고유하지 않은 것에 응답하여,
    상기 변환을 에뮬레이팅하기 위해 사전결정된 소프트웨어 루틴을 식별하는 단계 -상기 사전결정된 소프트웨어 루틴은 복수의 인스트럭션을 포함함- 와,
    상기 사전결정된 소프트웨어 루틴을 실행하는 단계를 더 포함하는
    데이터 보호 방법.
  8. 제 1 항에 있어서,
    상기 큰 데이터 블록은 크기가 적어도 1 메가바이트인 블록을 포함하는
    데이터 보호 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 따른 방법의 모든 단계를 수행하는 수단을 포함하는 시스템.
  10. 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램이 컴퓨터 시스템에서 실행되는 경우, 제 1 항 내지 제 8 항 중 어느 한 항에 따른 방법의 모든 단계를 수행하는 인스트럭션을 포함하는 컴퓨터 프로그램.
KR1020107015298A 2008-01-11 2009-01-05 인출 보호를 가진 동적 어드레스 변환 KR101175615B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/972,688 2008-01-11
US11/972,688 US8677098B2 (en) 2008-01-11 2008-01-11 Dynamic address translation with fetch protection

Publications (2)

Publication Number Publication Date
KR20100126269A true KR20100126269A (ko) 2010-12-01
KR101175615B1 KR101175615B1 (ko) 2012-08-22

Family

ID=40473424

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107015298A KR101175615B1 (ko) 2008-01-11 2009-01-05 인출 보호를 가진 동적 어드레스 변환

Country Status (12)

Country Link
US (6) US8677098B2 (ko)
EP (1) EP2229632B1 (ko)
JP (1) JP5373817B2 (ko)
KR (1) KR101175615B1 (ko)
CN (1) CN101911025B (ko)
CY (1) CY1114228T1 (ko)
DK (1) DK2229632T3 (ko)
ES (1) ES2408189T3 (ko)
PL (1) PL2229632T3 (ko)
PT (1) PT2229632E (ko)
SI (1) SI2229632T1 (ko)
WO (1) WO2009087133A1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8103851B2 (en) * 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
WO2015075674A1 (en) * 2013-11-21 2015-05-28 Green Cache AB Systems and methods for direct data access in multi-level cache memory hierarchies
US20150261693A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Dynamic storage key assignment
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) * 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US10019368B2 (en) 2014-05-29 2018-07-10 Samsung Electronics Co., Ltd. Placement policy for memory hierarchies
JP6504984B2 (ja) * 2015-09-28 2019-04-24 ルネサスエレクトロニクス株式会社 データ処理装置
TWI570559B (zh) * 2015-12-28 2017-02-11 點序科技股份有限公司 快閃記憶體及其存取方法
US10496292B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
CN110096457B (zh) * 2018-01-31 2023-05-23 联发科技股份有限公司 硬件控制系统及硬件控制方法
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
GB2578099B (en) * 2018-10-15 2021-05-12 Advanced Risc Mach Ltd Memory access control
US11151267B2 (en) 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control
US10831480B2 (en) 2019-02-25 2020-11-10 International Business Machines Corporation Move data and set storage key instruction
US10838631B2 (en) 2019-02-25 2020-11-17 International Business Machines Corporation Detection of alteration of storage keys used to protect memory
JP7238178B2 (ja) * 2020-02-04 2023-03-13 キオクシア株式会社 メモリ装置及びメモリ装置を制御する方法
CN114070134B (zh) * 2022-01-05 2022-05-06 山东汉德自动化控制设备有限公司 一种变频钻机电控装置及其控制方法

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4638426A (en) * 1982-12-30 1987-01-20 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4972338A (en) 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JPS62208147A (ja) 1986-03-10 1987-09-12 Hitachi Ltd 拡張アドレス変換装置
JP2635058B2 (ja) 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5008811A (en) * 1988-02-10 1991-04-16 International Business Machines Corp. Control mechanism for zero-origin data spaces
US5058003A (en) 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JPH1091597A (ja) 1996-08-13 1998-04-10 Internatl Business Mach Corp <Ibm> マルチプロセッサ装置におけるトークンにもとづく命令の直列化
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6415305B1 (en) 1998-04-20 2002-07-02 Microsoft Corporation Method for displaying editable characters in a divided table cell
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP2004328771A (ja) 1999-02-05 2004-11-18 Sony Corp エンコーディング装置及び方法、デコーディング装置及び方法、並びに記録媒体
DE10002120B4 (de) 1999-02-13 2006-04-20 International Business Machines Corp. Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
US7069412B2 (en) 1999-02-17 2006-06-27 Elbrus International Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
US6879989B2 (en) 1999-08-16 2005-04-12 International Business Machines Corporation Modification system for supporting localized data changes in a mobile device
US6574706B2 (en) 2001-02-28 2003-06-03 International Business Machines Corporation Managing unvirtualized data pages in real storage
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7299243B2 (en) 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
US7120746B2 (en) 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7703097B2 (en) 2002-11-15 2010-04-20 International Business Machines Corporation Auto-commit processing in an IMS batch application
US6981125B2 (en) 2003-04-22 2005-12-27 International Business Machines Corporation Method and apparatus for managing shared virtual storage in an information handling system
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7020761B2 (en) 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US6996698B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
DE60311462T2 (de) * 2003-09-19 2008-01-03 Sun Microsystems, Inc., Santa Clara Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
US7234037B2 (en) 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US7941799B2 (en) 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US8214622B2 (en) 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
GB2415578B (en) 2004-06-23 2007-07-04 Hewlett Packard Development Co Restricting virus access to a network
CN100377117C (zh) * 2005-07-14 2008-03-26 中国科学院计算技术研究所 用于虚实地址变换及读写高速缓冲存储器的方法及装置
US8387049B2 (en) 2005-07-15 2013-02-26 International Business Machines Corporation Facilitating processing within computing environments supporting pageable guests
US7464249B2 (en) 2005-07-26 2008-12-09 International Business Machines Corporation System and method for alias mapping of address space
JP4469783B2 (ja) 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8417916B2 (en) 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8335906B2 (en) 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8082405B2 (en) 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier

Also Published As

Publication number Publication date
US20090182971A1 (en) 2009-07-16
WO2009087133A9 (en) 2009-09-24
US9378128B2 (en) 2016-06-28
CN101911025A (zh) 2010-12-08
CY1114228T1 (el) 2016-08-31
US10977190B2 (en) 2021-04-13
US20190303301A1 (en) 2019-10-03
US20160267017A1 (en) 2016-09-15
PT2229632E (pt) 2013-05-28
EP2229632B1 (en) 2013-04-10
US20140115295A1 (en) 2014-04-24
JP5373817B2 (ja) 2013-12-18
SI2229632T1 (sl) 2013-06-28
US20180089103A1 (en) 2018-03-29
EP2229632A1 (en) 2010-09-22
WO2009087133A1 (en) 2009-07-16
DK2229632T3 (da) 2013-06-03
KR101175615B1 (ko) 2012-08-22
US9934159B2 (en) 2018-04-03
JP2011509470A (ja) 2011-03-24
PL2229632T3 (pl) 2013-08-30
ES2408189T3 (es) 2013-06-18
US20150169437A1 (en) 2015-06-18
US9021225B2 (en) 2015-04-28
CN101911025B (zh) 2012-11-07
US8677098B2 (en) 2014-03-18
US10423539B2 (en) 2019-09-24

Similar Documents

Publication Publication Date Title
KR101175615B1 (ko) 인출 보호를 가진 동적 어드레스 변환
KR101419578B1 (ko) 포맷 제어를 갖는 동적 액세스 변환
KR101310412B1 (ko) 프레임 관리를 이용한 동적 주소 변환 방법
KR101174583B1 (ko) 변환 예외 한정자를 갖는 동적 어드레스 변환
US9158711B2 (en) Creating a program product or system for executing a perform frame management instruction
US9244856B2 (en) Dynamic address translation with translation table entry format control for identifying format of the translation table entry
US9003134B2 (en) Emulation of a dynamic address translation with change record override on a machine of another architecture
US8082405B2 (en) Dynamic address translation with fetch protection
US20120011341A1 (en) Load Page Table Entry Address Instruction Execution Based on an Address Translation Format Control Field
WO2009087135A1 (en) Dynamic address translation with dat protection
WO2009087131A1 (en) Dynamic address translation with load real address

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: 20150728

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170725

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180727

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190730

Year of fee payment: 8