KR101572409B1 - 비교 및 대체 dat 테이블 엔트리 - Google Patents

비교 및 대체 dat 테이블 엔트리 Download PDF

Info

Publication number
KR101572409B1
KR101572409B1 KR1020147027931A KR20147027931A KR101572409B1 KR 101572409 B1 KR101572409 B1 KR 101572409B1 KR 1020147027931 A KR1020147027931 A KR 1020147027931A KR 20147027931 A KR20147027931 A KR 20147027931A KR 101572409 B1 KR101572409 B1 KR 101572409B1
Authority
KR
South Korea
Prior art keywords
operand
tlb
entry
entries
instruction
Prior art date
Application number
KR1020147027931A
Other languages
English (en)
Other versions
KR20140138848A (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 KR20140138848A publication Critical patent/KR20140138848A/ko
Application granted granted Critical
Publication of KR101572409B1 publication Critical patent/KR101572409B1/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

제1 및 제2 오퍼랜드가 비교된다. 만약 그것들이 동일하다면, 레지스터 R1+1의 컨텐츠가 제2-오퍼랜드 위치에 저장되고, 구성에서 지정된 CPU 또는 CPU들에서, 스토리지에 대체된 엔트리의 사용을 통해 형성된 지정된 유형의 모든 TLB 엔트리들, 그리고 클리어링된 더 높은-레벨의 TLB 테이블 엔트리들의 사용을 통해 형성된 모든 더 낮은-레벨의 TLB 테이블 엔트리들이 클리어링(clear)된다. 유효 DAT 테이블 엔트리는 새로운 엔트리로 대체되고, 변환 색인 버퍼(Translation Lookaside Buffer)(TLB)에서, 그 구성 내 모든 CPU들 상의 (적어도) 단일 엔트리의 어떤 사본들이 퍼지(purge)된다. 만약 상기 제1 오퍼랜드 및 제2 오퍼랜드들이 동일하지 않으면, 상기 제2 오퍼랜드는 제1-오퍼랜드 위치에 로드된다. 그 비교 결과는 조건 코드(condition code)에 의해 표시된다. 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다.

Description

비교 및 대체 DAT 테이블 엔트리{COMPARE AND REPLACE DAT TABLE ENTRY}
본 발명은, 일반적으로 컴퓨팅 환경 내 처리와 관련되고, 구체적으로는, 주소 테이블(address table) 내 엔트리를 비교하고 대체(replace)하는 것, 버퍼 엔트리들을 클리어링(clearing)하는 것, 그리고 그에 대한 명령 중 하나 또는 그 이상과 관련된다.
US 특허 7284100의 "스토리지를 무효화하는 것, 버퍼 엔트리들을 클리어링하는 것, 그리고 그 명령(INVALIDATING STORAGE, CLEARING BUFFER ENTRIES, AND AN INSTRUCTION THEREFORE)"(2003년 5월 12일 출원)에 기술된 바와 같이, 예컨대 스토리지의 세그먼트들 또는 스토리지의 영역들(regions)과 같은 스토리지의 선택된 유닛들이 무효화(invalidate)된다. 무효화는 무효화될 스토리지의 유닛들에 대응하는 데이터 구조 엔트리들(data structure entries)에 위치한 무효화 인디케이터들(invalidation indicators)의 세팅에 의해 가능해진다. 또한, 무효화된 스토리지의 유닛들 또는 다른 선택된 스토리지의 유닛들과 연관된 버퍼 엔트리들이 클리어링(clear)된다. 무효화 및/또는 클리어링을 수행하기 위한 명령이 제공된다. 더욱이, 특정 주소 공간(address space)과 연관된 버퍼 엔트리들은, 어떠한 무효화도 없이, 클리어링된다. 이 또한 명령에 의해 수행된다. 명령은 소프트웨어, 하드웨어, 펌웨어(firmware) 또는 이것들의 어떤 조합으로 구현될 수 있거나, 에뮬레이션될 수 있다.
일 실시예에서, 프로세서의 로컬 변환 색인 버퍼(Tlanslation Lookaside Buffer, TLB) 또는 복수의 프로세서들의 복수의 변환 색인 버퍼들을 선택적으로 클리어링하기 위한 컴퓨터 프로그램 제품이 제공된다. 상기 컴퓨터 프로그램 제품은, 컴퓨터 판독가능 스토리지 매체(computer readable storage medium) - 상기 컴퓨터 판독가능 스토리지 매체는 그 내부에 구현되는 프로그램 코드를 가지며, 상기 프로그램 코드는 하나의 방법(a method)을 수행하기 위해 컴퓨터 프로세서에 의해 판독가능함 - 를 포함한다. 상기 방법은, 실행될 머신 실행가능 명령(machine executable instruction)의 오피코드(opcode)로부터, 상기 명령이 비교 및 대체 DAT 엔트리(compare and replace DAT entry) 명령임을, 상기 프로세서에 의해, 결정하는 단계 - 상기 명령은 R1 필드 및 R2 필드를 포함함 - ; 그리고 상기 프로세서에 의해, 상기 명령을 실행하는 단계를 포함한다. 상기 실행하는 단계는, 상기 명령의 상기 R2 필드에 의해 지정된 짝-홀 레지스터 쌍(even-odd register pair)의 레지스터들에 의해 지정(specify)된 메모리 위치로부터 오리지널 제2 오퍼랜드(original second operand)를 획득하는 단계; 제1 오퍼랜드와 상기 획득된 오리지널 제2 오퍼랜드를 비교하는 단계 - 상기 제1 오퍼랜드는 상기 명령의 상기 R1 필드에 의해 지정된 짝-홀 레지스터 쌍의 짝수(짝수 R1) 레지스터 내에 포함됨 - ;
상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일한 것에 기초하여, 상기 제2 오퍼랜드 위치에 상기 짝수 R1 레지스터의 컨텐츠를 새로운 제2 오퍼랜드로 저장하는 단계; 및 상기 오리지널 제2 오퍼랜드의 값에 의해 지정된 변환 테이블 오리진(translation table origin)에 기초한 변환 테이블 엔트리들을 사용하여 DAT로부터 형성된 엔트리들에 대응하는 모든 로컬 변환 색인 버퍼(TLB) 엔트리들을 선택적으로 클리어링하는 단계를 포함한다.
또 다른 실시예에서, 비교 및 대체 DAT 엔트리(Compare and Replace DAT Entry) 지정 예외을 실행하기 위한 시스템이 제공된다. 상기 시스템은, 메모리; 및 상기 메모리와 통신하도록 구성된 프로세서를 포함하며, 상기 컴퓨터 시스템은 하나의 방법을 수행하도록 구성된다. 상기 방법은, 실행될 머신 실행가능 명령의 오피코드로부터, 상기 명령이 비교 및 대체 DAT 엔트리 명령임을, 상기 프로세서에 의해, 결정하는 단계 - 상기 명령은 R1 필드 및 R2 필드를 포함함 - ; 상기 프로세서에 의해, 상기 명령을 실행하는 단계를 포함한다. 상기 실행하는 단계는, 상기 명령의 상기 R2 필드에 의해 지정된 짝-홀 레지스터 쌍의 레지스터들에 의해 지정된 메모리 위치로부터 오리지널 제2 오퍼랜드를 획득하는 단계; 제1 오퍼랜드와 상기 획득된 오리지널 제2 오퍼랜드를 비교하는 단계 - 상기 제1 오퍼랜드는 상기 명령의 R1 필드에 의해 지정된 짝-홀 레지스터 쌍의 짝수(짝수 R1) 레지스터에 포함됨 - ; 상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일한 것에 기초하여, 상기 제2 오퍼랜드 위치에 상기 짝수 R1 레지스터의 컨텐츠를 새로운 제2 오퍼랜드로 저장하는 단계; 및 상기 오리지널 제2 오퍼랜드의 값에 의해 지정된 변환 테이블 오리진에 기초한 변환 테이블 엔트리들을 사용하여 DAT로부터 형성된 엔트리들에 대응하는 모든 로컬 변환 색인 버퍼(TLB) 엔트리들을 선택적으로 클리어링하는 단계를 포함한다.
추가 실시예에서, 제1 오퍼랜드 및 제2 주소 변환 테이블 엔트리를 비교하기 위한, 컴퓨터로 구현된 방법(computer implemented method)이 제공된다. 상기 방법은, 실행될 머신 실행가능 명령의 오피코드로부터, 상기 명령이 비교 및 대체 DAT 엔트리 명령임을, 프로세서에 의해, 결정하는 단계 - 상기 명령은 R1 필드 및 R2 필드를 포함함 - ; 상기 프로세서에 의해, 상기 명령을 실행하는 단계를 포함한다. 상기 실행하는 단계는, 상기 명령의 R2 필드에 의해 지정된 짝-홀 레지스터 쌍의 레지스터들에 의해 지정된 메모리 위치로부터 오리지널 제2 오퍼랜드를 획득하는 단계; 제1 오퍼랜드와 상기 획득된 오리지널 제2 오퍼랜드를 비교하는 단계 - 상기 제1 오퍼랜드는 상기 명령의 R1 필드에 의해 지정된 짝-홀 레지스터 쌍의 짝수(짝수 R1) 레지스터 내에 포함됨 - ; 상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일한 것에 기초하여, 상기 제2 오퍼랜드 위치에 상기 짝수 R1 레지스터의 컨텐츠를 새로운 제2 오퍼랜드로 저장하는 단계; 및 상기 오리지널 제2 오퍼랜드의 값에 의해 지정된 변환 테이블 오리진에 기초한 변환 테이블 엔트리들을 사용하여 DAT로부터 형성된 엔트리들에 대응하는 모든 로컬 변환 색인 버퍼(TLB) 엔트리들을 선택적으로 클리어링하는 단계를 포함한다.
추가 특징들 및 장점들은 설명된 기술들을 통해 구현된다. 다른 실시예들 및 측면들이 여기에 상세히 기술되는데, 이는 본 발명에 포함되는 것으로 간주된다.
추가 대상들, 특징들, 및 장점들은 첨부된 도면들과 함께 취해지는 다음의 상세한 설명으로부터 분명해진다.
도 1은 본 발명의 하나 또는 그 이상의 측면들을 편입시키고 사용하는 컴퓨팅 환경의 일 실시예를 도시한다.
도 2는 도 1의 컨트롤러와 연관된 추가 상세 내용들의 일 실시예를 도시한다.
도 3은 또 다른 컴퓨터를 에뮬레이션할 수 있는 호스트 컴퓨터의 일 실시예를 도시한다.
도 4는 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY) 명령의 명령 이미지, 및 그것의 동작을 도시한다.
도 5는 비교 및 대체 DAT 테이블 엔트리 명령의 레지스터 오퍼랜드들(register operands)을 도시한다.
도 6은 M4 필드를 도시한다.
도 7은 컴퓨터 판독가능 매체를 도시한다.
컴퓨팅 환경(computing environments)은 이용가능한 스토리지의 크기를 증가시키기 위해 보조 스토리지에 노멀하게 유지되는 가상 스토리지(virtual storage)를 사용할 수 있다. 가상 스토리지의 페이지가 참조될 때, 그 페이지를 참조함에 있어서 사용되는 가상 주소는 동적 주소 변환(dynamic address translation)에 의해 실제 스토리지 주소(real storage address)로 변환된다. 만약 상기 변환이 성공적이면, 가상 스토리지는 유효(valid)이고, 그렇지 않으면 그것은 무효(invalid)이다. 가상 스토리지의 페이지는 페이지 테이블 엔트리 내 무효 비트(invalid bit)에 의해 유효 또는 무효로 표시되며, 만약 그 페이지가 유효이면 엔트리는 실제 스토리지 주소를 포함한다.
스토리지의 페이지들은 한 번에 한 페이지씩 무효화(invalidate)될 수 있다. 예를 들어, 인터내셔널 비지네스 머신즈 코퍼레이션(International Business Machines Corporation)에 의해 제공되는 z/Architecture에 기초한 컴퓨팅 환경에서, 가상 스토리지의 하나 또는 그 이상의 페이지들을 무효화시키기 위해 무효화 페이지 테이블 엔트리(Invalidate Page Table Entry, IPTE) 명령으로 일컬어지는 명령이 사용된다. 가상 스토리지 내 위치의 가상 주소가 동적 주소 변환에 의해, 실제 주소로도 일컬어지는 물리적 메인 스토리지 주소(physical main storage address)로 변환될 수 없다는 것을 나타내기 위해, 무효화는, 가상 스토리지와 연관되고 물리적 메인 스토리지에 위치하는, 컨트롤 구조 내 무효 인디케이터(invalid indicator)를 세팅하는 것을 포함한다. 나아가, 그 명령은 페이지와 연관된 내부 머신 버퍼 엔트리들(internal machine buffer entries)을 클리어링하기 위해 사용되고, 여기서 엔트리들은 물리적 메인 스토리지 내 컨트롤 구조들(control structures)에 접근하는 것을 피하기 위해 동적 주소 변환 동안 사용될 수 있다. 예를 들어, z/Architecture에는, 가상 주소들을 실제 주소들로 동적 주소 변환하는 동안 사용되는 변환 색인 버퍼들(Translation Lookaside Buffers)이 있다. 스토리지의 한 페이지가 무효화될 때, 대응하는 버퍼들에서 그 페이지와 연관된 엔트리들이 또한 클리어링된다.
전체 변환 색인 버퍼들의 퍼징(purging)을 가능하게 하는 명령들도 있다. 예를 들어, z/Architecture에서, 비교 및 스왑 및 퍼지(Compare and Swap and Purge, CSP) 명령으로 일컬어지는 명령은, 그 구성 내 모든 CPU들에서 변환 색인 버퍼들의 모든 엔트리들을 퍼지(purge)하고; PURGE TLB는 그 명령을 실행하는 CPU 상에서 TLB의 모든 엔트리들을 클리어링한다.
변환-색인 버퍼( Translation - Lookaside Buffer )
퍼포먼스를 향상시키기 위해, 동적-주소-변환 메커니즘은 노멀하게, 영역 테이블들(region tables), 세그먼트 테이블들, 및 페이지 테이블들에 명시된 정보 중 일부가 변환-색인 버퍼(TLB)로 일컬어지는 특수 버퍼(special buffer)에 유지되도록 구현된다. CPU는 그 엔트리에 대한 초기 접근(initial access)을 위해서만 실제 또는 절대 스토리지 내 DAT-테이블 엔트리를 필수적으로 참조한다. 이 정보는 TLB에 배치될 수 있고, 추후의 변환들은 TLB 내 정보를 사용함으로써 수행될 수 있다. 동작의 일관성(consistency)을 위해, 실제-공간 지정(real-space designation)에 의해 지정되는 가상-이퀄-실제 변환(virtual-equals-real translation)은 TLB 내 정보를 사용함으로써 수행될 수 있다. TLB의 존재는 다음의 (1) 내지 (3) 정도까지 변환 프로세스에 영향을 미친다. (1) 실제 또는 절대 스토리지 내 테이블 엔트리의 컨텐츠의 수정(modification)은, 만약 있다면, 그 변환에 관해 반드시 즉각적인 영향을 미치는 것은 아니고, (2) 주소-공간-컨트롤 엘리먼트(address-space-control element)(ASCE)에서의, 영역-제1-테이블-오리진(region-first-table origin), 영역-제2-테이블 오리진(region-second-table origin), 영역-제3-테이블 오리진(region-third-table origin), 세그먼트-테이블 오리진(segment-table origin), 또는 실제-공간 토큰 오리진(real-space token origin)은, 심지어 두 개의 오리진들이 서로 다른 유형을 가질 때에도 동일한 값을 갖는 오리진을 포함하는 ASCE에 의해서 형성된, TLB 엔트리를 선택할 수 있고, (3) 주소-공간-컨트롤 엘리먼트에서의 테이블 길이에 대한 비교는, 만약 그 지정된 테이블의 TLB에 상당하는 것(TLB equivalent)이 사용된다면, 생략될 수 있다. 멀티-CPU 구성에서, 각각의 CPU는 자신의 TLB를 갖는다.
TLB 내 엔트리들은 프로그램에 의해 명시적으로 주소지정가능하지(addressable) 않다.
정보는 그러한 보유(retention)가 허용가능한 모든 조건들 하에서 TLB에 반드시 보유되는 것은 아니다. 더 나아가, TLB 내 정보는 클리어링이 의무적인(mandatory) 것이 추가된 조건들 하에서 클리어링될 수 있다.
TLB 구조( TLB Structure )
TLB의 논리적 구조에 관한 설명은 z/Architecture에 의해 정의되는 바와 같이 동작하는 모든 시스템들에 의한 구현을 커버한다. TLB 엔트리들은 6 개 유형, 즉, TLB 영역-제1-테이블 엔트리들, TLB 영역-제2-테이블 엔트리들, TLB 영역-제3-테이블 엔트리들(이것들은 총괄하여 TLB 영역-테이블 엔트리들로 일컬어짐), TLB 세그먼트-테이블 엔트리들, TLB 페이지-테이블 엔트리들, 및 TLB 실제-공간 엔트리들로 고려된다. TLB 영역-테이블 엔트리, TLB 세그먼트-테이블 엔트리, 또는 TLB 페이지-테이블 엔트리는 그 안에 실제 또는 절대 스토리지 내 테이블 엔트리로부터 획득되는 정보와 스토리지로부터 이 정보를 페치하는데 사용되는 속성들(attributes) 둘 다를 포함하는 것으로 고려된다. TLB 실제-공간 엔트리는, 페이지-프레임 실제 주소 및 실제-공간 토큰 오리진 및, 그 엔트리를 형성하는데 사용되는 영역, 세그먼트, 및 페이지 인덱스들을 포함하는 것으로 고려된다.
어떤 적용가능한 TLB 영역-테이블 엔트리들, TLB 세그먼트-테이블 엔트리, 및 TLB 페이지-테이블 엔트리는 TLB 복합(composite) 테이블 엔트리로 일컬어지는 단일 엔트리로 병합될 수 있다. 이와 유사한 방법으로, 어떤 구현은 테이블 레벨들의 어떤 인접 서브세트를 결합할 수 있다. 이 경우, 중간 테이블 오리진들(intermediate table origins), 오프셋들(offsets), 및 길이들(lengths)은 버퍼링될 필요가 없다.
테이블 오리진, 영역 인덱스, 세그먼트 인덱스, 및 공통-세그먼트 비트(common-segment bit)를 세그먼트-프레임 절대 주소 또는 페이지-테이블 오리진(및 다른 지정된 필드들)에 매핑하는, 그 아키텍쳐의 이전의 버전들에서 기술된, TLB 결합(combined) 영역-및-세그먼트-테이블 엔트리(region-and-segment-table entry)(CRSTE)에 상당하는 것이, 형성될 수 있다.
TLB 실제-공간 엔트리 내 토큰 오리진은 TLB 복합(composite)-, 영역-, 또는 세그먼트-테이블 엔트리 내 테이블 오리진과 구별할 수 없다.
:다음의 섹션들은 정보가 TLB에 배치될 수 있는 조건들을 기술하는데, 이 조건들 하에서 TLB로부터의 정보가 주소 변환을 위해 사용될 수 있으며, 그 변환 테이블들에 대한 어떠한 변화들이 그 변환 프로세스에 영향을 미친다.
TLB 엔트리들의 형성
실제 또는 절대 스토리지 내 테이블 엔트리들로부터의, TLB 영역-테이블 엔트리들, TLB 세그먼트-테이블 엔트리들 및 TLB 페이지-테이블 엔트리들의 형성, 그리고 프로그램에 의한 스토리지 내 테이블 엔트리들의 컨텐츠의 어떤 처리(manipulation)의 결과는, 스토리지 내 엔트리들이 특정 CPU에 어태치(attach)되는지 여부 그리고 그 엔트리들이 유효인지 여부에 달려 있다.
테이블 엔트리의 어태치 상태(attached state)는, 다만 프라이머리 또는 홈 주소 공간에 대한 테이블 엔트리가, 심지어 CPU가 그들 공간들 중 어느 하나로부터 페치하지 않을 때에도, 어태치될 수 있다는 점을 제외하고는, 그것이 어태치된 CPU가, 암시적(implicit) 주소 변환을 위해 테이블 엔트리를 사용하려고 시도할 수 있다는 것을 나타낸다. 테이블 엔트리는 한 번에 하나 이상의 CPU에 어태치될 수 있다.
테이블 엔트리의 유효 상태(valid state)는, 테이블 엔트리와 연관된, 영역 세트, 영역, 세그먼트, 또는 페이지가 이용가능하다는 것을 나타낸다. 엔트리는, 엔트리 내의, 영역-무효, 세그먼트-무효, 또는 페이지-무효 비트가 0일 때, 유효이다.
영역-테이블 엔트리, 세그먼트-테이블 엔트리, 또는 페이지-테이블 엔트리는, 그 엔트리가 어태치되고 유효일 때, 그리고 변환을 위해 사용된다면 변환-지정 예외(translation-specification exception)을 초래하지 않을 때에는 언제나, TLB에 배치될 수 있다.
만약 있다면, 가상 주소를 변환하는데 사용된, 영역-테이블 엔트리들, 그리고 만약 있다면, 세그먼트-테이블 엔트리는, 변환 경로(translation path)로 일컬어진다. 변환 경로에서 가장 높은 레벨의 테이블 엔트리는, 어태칭 주소-공간-컨트롤 엘리먼트(attaching addressing-space-control element)(ASCE)에 의해 지정된 테이블 내에 그것이 있을 때 어태치된다. "테이블 내(Within a table)" 라는 것은 ASCE에서 오리진 및 길이 필드들에 의해 결정되는 것을 의미한다. ASCE는, 다음의 조건들 모두가 충족될 때 어태칭(attaching) ASCE이다.
1. 현재 PSW는 DAT 온(on)을 지정한다.
2. 현재 PSW는 초기 지정 예외(early specification exception)가 인식될 수 있도록 할 어떠한 에러들도 포함하지 않는다.
3. ASCE는, 이하의 a, b, c, 또는 d에서의 요건들을 충족시킨다.
a. ASCE는 컨트롤 레지스터 1에서 프라이머리 ASCE이다.
b. ASCE는 컨트롤 레지스터 7에서 세컨더리 ASCE이고, 다음의 요건들 중 어떤 것이 충족된다.
·CPU는 세컨더리-공간 모드 또는 접근-레지스터 모드에 있다.
·CPU는 프라이머리-공간 모드에 있고, 세컨더리-공간 컨트롤, 즉 컨트롤 레지스터 0의 비트 37은 1이다.
·로드 페이지 테이블 엔트리 주소(LOAD PAGE TABLE ENTRY ADDRESS)의 M4 오퍼랜드는 세컨더리 공간에 대한 접근을 명시적으로 허용하거나, 접근-레지스터 변환을 명시적으로 허용한다.
·선택적 스펙들로 무브(MOVE WITH OPTIONAL SPECIFICATIONS)에 관한 어느 하나의 오퍼랜드의 오퍼랜드-접근 컨트롤(OAC)은 명시적으로 세컨더리 공간에 대한 접근을 허용하거나 명시적으로 접근-레지스터 변환을 허용한다.
위의 두 개 항목에서 사용된, "명시적으로 허용(explicitly allows)" 이라는 용어의 추가 설명을 위해, 이하에서 프로그래밍 주(programming note)를 참고한다.
c. ASCE는 어태치되고 유효인 ASN-제2-테이블 엔트리(ASTE) 또는 사용가능한 ALB ASTE에 있고, 다음의 요건들 중 어떤 것이 충족된다.
·CPU는 접근-레지스터 모드에 있다.
·로드 페이지 테이블 엔트리 주소(LOAD PAGE TABLE ENTRY ADDRESS)의 M4 필드는 접근-레지스터 변환이 수행되도록 명시적으로 허용한다.
·선택적 스펙들로 무브(MOVE WITH OPTIONAL SPECIFICATIONS)에 관한 어느 하나의 오퍼랜드의 OAC는 접근-레지스터 변환이 수행되도록 명시적으로 허용한다.
d. ASCE는 컨트롤 레지스터 13에서 홈 ASCE이다.
DAT가 온(on)이든 오프(off)이든 관계없이, 현재 PSW가 초기 지정 예외(early specification exception)가 인지되도록 하는 어떠한 에러들도 포함되지 않을 때, 그리고 다음의 조건 중 어떤 것이 충족될 때, ASCE는 또한 어태칭(attaching) ASCE이다.
·홈 ASCE는 모니터-이벤트 카운팅 동작이 발생할 때 어태칭 ASCE인 것으로 고려된다.
변환 경로에서 남아 있는 테이블 엔트리들 각각은, 그것이, 만약 변환을 위해 사용된다면 변환-지정 예외를 초래하지 않을 그 다음 높은 레벨의 어태치되고 유효인 엔트리에 의해 또는 그 다음 높은 레벨의 사용가능한 TLB 엔트리에 의해, 지정된 테이블 내에 있을 때, 어태치된다. "테이블 내(Within the table)" 라는 것은 그 다음 높은 레벨의 엔트리에서 오리진, 오프셋, 및 길이 필드들에 의해 결정되는 것을 의미한다. 사용가능한 TLB 엔트리는 다음 섹션에서 설명된다.
페이지-테이블 엔트리는, 만약 변환을 위해 사용된다면, 변환-지정 예외를 초래하지 않을 어태치되고 유효인 세그먼트-테이블 엔트리 또는 사용가능한 TLB 세그먼트-테이블 엔트리에 의해 지정된 페이지 테이블 내에 그것이 있을 때, 어태치된다.
영역-테이블 엔트리 또는 세그먼트-테이블 엔트리는, 만약 엔트리 내의 테이블-유형 비트들, 즉, 비트들 60 및 61이, 변환 프로세스에서 변환 경로를 사용할 때 그 엔트리가 마주치게 될 레벨과 부합하지 않는(inconsistent)다면, 변환-지정 예외를 초래한다. 세그먼트-테이블 엔트리는 또한, 만약 그것을 선택하기 위해 사용되는 주소-공간-컨트롤 엘리먼트에서 개인-공간-컨트롤 비트(private-space-control bit)가 1이고 그 엔트리에서 공통-세그먼트 비트가 1이면, 변환-지정 예외를 초래한다. EDAT-2가 적용될 때, 영역-제3-테이블 엔트리는 또한, 만약 그것을 선택하기 위해 사용되는 주소-공간-컨트롤 엘리먼트에서 개인-공간-컨트롤 비트가 1이고 그 엔트리에서 공통-영역 비트가 1이면, 변환-지정 예외를 초래한다. 페이지-테이블 엔트리는, 만약 그 엔트리에서 비트 52가 1이면 변환-지정 예외를 초래한다. EDAT-1이 적용되지 않을 때, 페이지-테이블 엔트리는 또한, 만약 그 엔트리에서 비트 55가 1이면 변환-지정 예외를 초래한다.
TLB 실제-공간은 인식될 초기 지정 예외( early specification exception )를 사용하고, 다음의 조건들 중 어떤 것이 충족된다.
·홈 ASCE는 모니터-이벤트 카운팅 동작이 일어날 때, 어태칭 ASCE인 것으로 고려된다.
변환 경로에서 남아 있는 테이블 엔트리들 각각은, 만약 변환을 위해 사용된다면 변환-지정 예외를 초래하지 않을 그 다음의 높은 레벨의 어태치되고 유효인 엔트리에 의해 또는 그 다음의 높은 레벨의 사용가능한 TLB 엔트리에 의해, 지정된 테이블 내에 그것이 있을 때 어태치된다. "테이블 내(Within the table)" 라는 것은 그 다음의 높은 레벨 엔트리에서 오리진, 오프셋, 및 길이 필드들에 의해 결정되는 것을 의미한다. 사용가능한 TLB 엔트리는 다음 섹션에서 설명된다.
페이지-테이블 엔트리는 만약 변환을 위해 사용된다면 변환-지정 예외를 초래하지 않을 어태치되고 유효인 세그먼트-테이블 엔트리, 또는 사용가능한 TLB 세그먼트-테이블 엔트리에 의해, 지정된 페이지 테이블 내에 그것이 있을 때 어태치된다.
만약 그 엔트리 내 테이블-유형 비트들, 즉 비트들 60 및 61이 변환 프로세스에서 변환 경로를 사용할 때 그 엔트리가 마주치게 될 레벨과 부합하지 않는다면, 영역-테이블 엔트리 또는 세그먼트-테이블 엔트리는, 변환-지정 예외를 초래한다. 세그먼트-테이블 엔트리는 또한, 만약 그것을 선택하기 위해 사용된 주소-공간-컨트롤 엘리먼트에서 개인-공간-컨트롤 비트가 1이고, 그 엔트리에서 공통-세그먼트 비트가 1이라면, 변환-지정 예외를 초래한다. EDAT-2가 적용될 때, 영역-제3-테이블 엔트리는 또한, 만약 그것을 선택하기 위해 사용되는 주소-공간-컨트롤 엘리먼트에서 개인-공간-컨트롤 비트가 1이고, 그 엔트리에서 공통-영역 비트가 1이라면, 변환-지정 예외를 초래한다. 페이지-테이블 엔트리는, 만약 그 엔트리에서 비트 52가 1이면 변환-지정 예외를 초래한다. EDAT-1이 적용되지 않을 때, 페이지-테이블 엔트리는 또한, 만약 그 엔트리에서 비트 55가 1이면, 변환-지정 예외를 초래한다.
위에서 정의된, 어태치(attached) 및 유효(valid) 제약(constraints) 조건하에서, CPU는 장래 스토리지 레퍼런스들을 예상하고 또는 명령들의 추측에 근거한 실행(speculative execution)의 결과로서 TLB 엔트리들을 형성할 수 있다.
프로그래밍 주 : 어태치되고 있을 ACSE에 대한 조건들의 상기 리스트에서, 항목 3.b 및 3.c는, 이하에서 설명되는 바와 같이, "명시적으로 허용한다(explicitly allows)..." 라는 용어를 사용한다.
·LPTEA는, M4 필드가 바이너리 0010일 때 세컨더리 공간에 대한 접근을 명시적으로 허용한다.
·LPTEA는, M4 필드가 바이너리 0001일 때, ART가 수행되도록 명시적으로 허용한다.
·MVCOS의 어느 하나의 오퍼랜드는, 오퍼랜드의 OAC의 비트들 8-9가 바이너리 10이고, OAC의 비트 15가 1이고, 세컨더리-공간 컨트롤, 즉 컨트롤 레지스터 0의 비트 37이 1일 때, 세컨더리 공간에 대한 접근을 명시적으로 허용한다.
·MVCOS의 어느 하나의 오퍼랜드는, 오퍼랜드의 OAC의 비트들 8-9가 바이너리 01이고, OAC의 비트 15가 1일 때, ART가 수행되도록 명시적으로 허용한다.
TLB 엔트리들의 사용
TLB 엔트리의 사용가능한( usable ) 상태는, CPU가 암시적(implicit) 주소 변환을 위해 TLB 엔트리를 사용하려고 시도할 수 있다는 것을 나타낸다. 사용가능한 TLB 엔트리는, 만약 있다면, 그 다음의 낮은 레벨의 테이블을 어태치하고, 암시적 주소 변환의 특별한 경우를 위해 사용가능할 수 있다.
TLB 엔트리를 참조하면, "현재 레벨(current level)" 이라는 용어는, TLB 엔트리가 형성된 변환 테이블(영역 제1 테이블, 영역 제2 테이블, 영역 제3 테이블, 세그먼트 테이블, 또는 페이지 테이블)의 레벨을 나타낸다. 마찬가지로, "현재 레벨 인덱스(current-level index)"는 가상 주소의 일부분이 변환 테이블의 현재 레벨 내로의 인덱스로서 사용되었다는 것이다.
TLB 영역-또는 세그먼트-테이블 엔트리는 다음의 조건들 모두가 충족될 때 사용가능 상태에 있다.
1. 현재 PSW가 DAT 온(on)을 지정한다.
2. 현재 PSW가 초기 지정 예외가 인식되도록 할 어떤 에러들도 포함하지 않는다.
3. TLB 엔트리가 다음의 요건들 중 적어도 하나를 충족시킨다.
a. TLB 영역-제3-테이블 엔트리에서 공통-영역 비트가 1이다.
b. TLB 세그먼트-테이블 엔트리에서 공통-세그먼트 비트가 1이다.
c. TLB 엔트리에서 ASCE-테이블-오리진(ASCETO) 필드는 어태칭 주소-공간-컨트롤 엘리먼트에서 테이블- 또는 토큰-오리진 필드와 매치한다.
d. TLB 엔트리는 TLB 영역-제2-테이블, 영역-제3-테이블, 또는 세그먼트-테이블 엔트리이고, TLB 엔트리에서 현재 레벨 테이블-오리진 필드(current-level table-origin field)는 다음 중 하나와 매치된다.
·현재 테이블 레벨을 직접적으로 지정하는(R 및 DT 비트들에 의해 나타낸 바와 같이) 어태칭 ASCE 내 테이블-오리진 필드.
·그 다음의 더 높은 레벨의 어태치된 영역-테이블 엔트리 내 테이블-오리진 필드.
·그 다음의 더 높은 레벨의 사용가능한 TLB 영역-테이블 엔트리에서 동일 레벨의 테이블-오리진 필드.
TLB 영역-테이블 엔트리는, 단지 그 엔트리가 사용가능한 상태에 있을 때에만 암시적 주소 변환의 특별한 경우를 위해 사용될 수 있고, TLB 엔트리 내 현재 레벨 인덱스 필드는 변환되고 있는 가상 주소의 대응하는 인덱스 필드와 매치되며, 다음의 조건들 중 어떤 것이 충족된다.
1. TLB 엔트리 내 ASCE-테이블-오리진(ASCETO) 필드는, 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트에서 테이블- 또는 토큰- 오리진 필드와 매치되고, 현재 레벨 인덱스 좌측의 변환되고 있는 가상 주소의 부분은, TLB 엔트리 내 대응하는 인덱스 필드들과 매치된다.
2. 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트는 현재 레벨 테이블을 지정하고, TLB 엔트리 내 현재 레벨 테이블 -오리진 필드는 그 주소-공간-컨트롤 엘리먼트에서 테이블 오리진과 매치된다.
3. TLB 엔트리 내 현재 레벨 테이블-오리진 필드는, 그 다음의 더 높은 레벨(the next-higher-level) 테이블 엔트리에서, 또는 변환에 사용되고 있는 TLB 엔트리 내의, 동일한 레벨의 테이블 오리진과 매치된다.
4. TLB 영역-제3-테이블 엔트리를 위해, TLB 엔트리 내 공통-영역 비트는 1이고, TLB 엔트리 내 영역-제1-인덱스 및 영역-제2-인덱스 필드들은 변환되고 있는 가상 주소의 그것들과 매치된다.
그러나, EDAT-2가 적용될 때, TLB 영역-제3-테이블 엔트리는, 만약 그 엔트리 내 공통-영역 비트가 1이고, 개인-공간-컨트롤 비트(private-space-control bit)가 그 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트에서 1이거나 그 주소-공간-컨트롤 엘리먼트가 실제-공간 지정이라면, 사용되지 않는다. 이들 두 경우들에 있어서, TLB 엔트리는, 비록 그 엔트리 내 ASCE-테이블-오리진(ASCETO) 필드와 주소-공간-컨트롤 엘리먼트에서 테이블- 또는 토큰-오리진 필드가 매치되더라도, 사용되지 않는다.
TLB 세그먼트-테이블 엔트리는, 엔트리가 사용가능한 상태에 있을 때에만 암시적 주소 변환의 특별한 경우를 위해 사용될 수 있고, TLB 엔트리 내 세그먼트-인덱스 필드는 변환되고 있는 가상 주소의 그것과 매치되며, 다음의 조건들 중 어떤 것이 충족된다.
1. TLB 엔트리 내 ASCE-테이블-오리진(ASCETO) 필드는 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트에서 테이블- 또는 토큰- 오리진 필드와 매치되고, TLB 엔트리 내 영역-인덱스 필드는 변환되고 있는 가상 주소의 그것과 매치된다.
2. TLB 엔트리 내 세그먼트-테이블-오리진 필드는 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트에서 테이블-오리진 필드와 매치되고, 그 주소-공간-컨트롤 엘리먼트는 세그먼트-테이블 지정(segment-table designation)이다.
3. TLB 엔트리 내 세그먼트-테이블-오리진 필드는, 영역-제3-테이블 엔트리, 또는 변환에 사용되고 있는 TLB 영역-제3-테이블 엔트리 내 세그먼트-테이블-오리진 필드와 매치된다.
4. TLB 엔트리에서 공통-세그먼트 비트는 1이고, TLB 엔트리 내 영역-인덱스 필드는 변환되고 있는 가상 주소의 그것과 매치된다.
그러나, TLB 세그먼트-테이블 엔트리는, 만약 엔트리에서 공통-세그먼트 비트가 1이고, 개인-공간-컨트롤 비트가 그 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트에서 1이거나 그 주소-공간-컨트롤 엘리먼트가 실제-공간 지정이면, 사용되지 않는다. 이들 두 경우들에 있어서, TLB 엔트리는, 비록 그 엔트리 내 ASCE-테이블-오리진(ASCETO) 필드와 주소-공간-컨트롤 엘리먼트에서 테이블- 또는 토큰- 오리진 필드가 매치되지 않더라도, 사용되지 않는다.
TLB 페이지-테이블 엔트리는, 단지 그 엔트리 내 페이지-테이블-오리진 필드가 세그먼트-테이블 엔트리 또는 그 변환에 사용되고 있는 TLB 세그먼트-테이블 엔트리에서 페이지-테이블-오리진 필드와 매치되고, TLB 페이지-테이블 엔트리 내 페이지-인덱스 필드가 변환되고 있는 가상 주소의 페이지 인덱스와 매치될 때에만, 암시적 주소 변환의 특별한 경우를 위해 사용될 수 있다.
TLB 실제-공간 엔트리는, 단지 TLB 엔트리 내 토큰-오리진 필드가 변환에 사용되고 있는 주소-공간-컨트롤 엘리먼트에서 테이블- 또는 토큰-오리진 필드와 매치되고, TLB 엔트리 내 영역-인덱스, 세그먼트-인덱스, 및 페이지-인덱스 필드들이 변환되고 있는 가상 주소의 그것들과 매치될 때에만, 암시적 주소 변환을 위해 사용될 수 있다.
로드 페이지-테이블-엔트리 주소(LOAD PAGE-TABLE-ENTRY ADDRESS), 로드 실제 주소(LOAD REAL ADDRESS), 및 저장 실제 주소(STORE REAL ADDRESS)의 오퍼랜드 주소들, 그리고 향상된-모니터 카운팅 어레이에 대한 접근들은, DAT가 온(on)이든 오프(off)이든, TLB 컨텐츠의 사용으로 변환될 수 있다. 그러나, 로드 페이지-테이블-엔트리 주소(LOAD PAGE-TABLE-ENTRY ADDRESS), 로드 실제 주소(LOAD REAL ADDRESS), 및 저장 실제 주소(STORE REAL ADDRESS)를 위해, TLB 엔트리들은 여전히 DAT가 온(on)일 경우에만 형성된다.
프로그래밍 주( Programming Notes ):
1. 비록 테이블 엔트리의 컨텐츠가, 그 테이블 엔트리가 어태치되고 유효일 때에만 TLB 내에 복사될 수 있지만, 사본은, 심지어 그 테이블 엔트리 자체가 더 이상 어태치 또는 유효가 아닐 때에도, TLB에 남아 있을 수 있다.
2. 향상된-모니터 카운팅 동작들의 결과로서 변환들이 수행될 때를 제외하고, DAT가 오프(off)일 때 TLB 내에 어떠한 컨텐츠들도 복사될 수 없다. 왜냐하면 이 시점에서 테이블 엔트리들은 어태치되지 않기 때문이다. 특히, DAT 오프(off) 상태에서, 로드 페이지-테이블-엔트리 주소(LOAD PAGE-TABLE-ENTRY ADDRESS), 로드 실제 주소(LOAD REAL ADDRESS) 및 저장 실제 주소(STORE REAL ADDRESS)의 오퍼랜드 주소의 변환은 엔트리들이 TLB에 배치되도록 하지 않는다.
이와는 반대로, DAT가 온일 때, 정보는 주소 변환을 위해 사용될 수 있는 모든 변환-테이블 엔트리들, 주어진 현재 변환 파라미터들, 주소-공간-컨트롤 비트들의 세팅, 및 접근 레지스터들의 컨텐츠들로부터, TLB 내에 복사될 수 있다. TLB의 로딩은 그 엔트리가 현재 명령의 실행의 일부로서 변환을 위해 사용되는지 여부에 달려 있지 않으며, 그러한 로딩은 CPU가 대기 상태(wait state)에 있을 때 발생할 수 있다.
3. 테이블 엔트리의 컨텐츠의 하나 이상의 사본이 TLB에 존재할 수 있다. 예를 들어, 몇몇 구현들은, 각각의 주소-공간-컨트롤 엘리먼트 - 이것에 의해 그 엔트리가 어태치됨 - 에서 테이블 오리진을 위해, 유효 테이블 엔트리의 컨텐츠의 사본이 TLB에 배치되도록 할 수 있다.
변환 테이블들의 수정( Modification of Translation Tables )
어태치되고 무효인 테이블 엔트리가 유효로 만들어지고, 그 연관된 가상 주소의 변환을 위해 사용가능한 어떠한 엔트리도 TLB에 있지 않을 때, 그 변화는 늦어도 동작의 현재 유닛의 끝까지는 효과를 갖는다. 이와 유사하게, 어태치되지 않고(unattached) 유효인 테이블 엔트리가 어태치되는 것으로 만들어지고 연관된 가상 주소를 위해 어떠한 사용가능한 엔트리도 TLB에 있지 않을 때, 그 변화는 늦어도 동작의 현재 유닛의 끝까지는 효과를 갖는다.
유효하고 어태치된 테이블 엔트리가 변화될 때, 그리고, TLB에서 그 엔트리에 대한 대체(substitution) 자격을 갖는(qualify) 엔트리들이 클리어링되기 전에, 변환을 위해 그 엔트리를 필요로 하는 가상 주소를 사용함으로써 스토리지에 대한 참조가 시도될 때, 예측가능하지 않은 결과들이 다음과 같은 정도로(to the following extent) 발생할 수 있다. 새로운 값의 사용은 명령들 사이에서 또는 명령의 실행 동안 시작할 수 있다. 상기 명령은 그 변화를 초래한 명령을 포함한다. 더욱이, TLB에서 그 엔트리에 대한 대체 자격을 갖는 엔트리들이 클리어링될 때까지, TLB는 오래된 값과 새로운 값 둘 다를 포함할 수 있고, 특정 접근을 위해 그 오래된 값이 선택되는지 또는 새로운 값이 선택되는지는 예측가능하지 않다. 만약 더 높은 레벨 테이블 엔트리에 관한 오래된 값과 새로운 값 둘 다가 TLB에 존재한다면, 더 낮은 레벨 테이블 엔트리는 하나의 값(one value)을 사용함으로써 페치될 수 있고, 다른 값(the other value)과 연관된 TLB에 배치될 수 있다. 만약 그 엔트리의 새로운 값이 예외를 초래할 값이라면, 그 예외는 인터럽션이 발생하도록 할 수도 있고 그렇지 않을 수도 있다. 만약 인터럽션이 발생하면, 그 명령의 결과 필드들은, 비록 그 예외가 억제(suppression) 또는 무효(nullification)를 노멀하게 초래할 것임에도 불구하고, 변화될 수 있다.
엔트리들은 다음의 규칙들에 따라 TLB로부터 클리어링된다.
1. 모든 엔트리들은, 퍼지 TLB(PURGE TLB) 또는 세트 프리픽스(SET PREFIX)의 실행에 의해 그리고 CPU 리셋에 의해 TLB로부터 클리어링된다.
2. 모든 엔트리들은, 명령에 의해 사용된 범용 레지스터에서의 하나의 비트에 의존하여, 그 구성에서 CPU들 중 어떤 것에 의한 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE)의 실행에 의해 그 구성에서의 모든 TLB들로부터 클리어링될 수 있다.
3. 선택된 엔트리들은 그 구성에서 CPU들 중 어떤 것에 의한 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY) 또는 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)의 실행에 의해, 그 구성에서의 모든 TLB들로부터 클리어링된다.
4. 일부 또는 모든 TLB 엔트리들은 때로는 전술한 규칙들에 의해 요구되는 것들과 다르게 클리어링될 수 있다.
프로그래밍 주:
1. TLB에서 엔트리들은, 그것들이 형성된 테이블 엔트리들이 어태치되지 않거나(unattached) 무효가 된 후, 변환을 위해 계속해서 사용될 수 있다. 이들 TLB 엔트리들은 TLB로부터 명시적으로 클리어링되지 않는다면, 반드시 제거될 필요는 없다.
어태치되고 유효인 엔트리에 대해 만들어지는 변화 또는 그 엔트리가 어태치되고 유효가 되도록 하는 테이블 엔트리에 대해 만들어지는 변화는, 만약 TLB 엔트리가 그 테이블 엔트리에 대한 대체 자격을 갖지 않는다면, 그 다음의 명령, 또는 그 다음보다 더 이른 명령을 위해 변환 프로세스에 반영된다. 그러나, 그 엔트리가 어태치되지 않거나 무효가 되도록 하는 테이블 엔트리에 대해 만들어지는 변화는, TLB에서 그 테이블 엔트리에 대한 대체 자격을 갖는 엔트리들이 클리어링될 때까지, 변환 프로세스에 반드시 반영될 필요는 없다.
2. 동적 주소 변환과 연관된 예외들은 명령 실행의 시작의 일부로서 수행되는 오퍼랜드 접근가능성(operand accessibility)을 위한 프리테스트(pretest)에 의해 수립될 수 있다. 결과적으로, 비록 그 명령이 그것이 사용하는 테이블 엔트리를 무효화하더라도, 그리고 만약 그 명령이 한 번에 한 바이트씩 그 오퍼랜드들을 처리하도록 고려되었다면 그 테이블 엔트리가 유효인 것으로 보이더라도, 실행의 시작에서 그 테이블 엔트리가 무효일 때, 영역-제1-변환, 영역-제2-변환, 영역-제3-변환, 세그먼트-변환, 또는 페이지-변환 예외가 표시될 수 있다.
3. I 비트를 0으로 세트하는 것, 세그먼트- 또는 페이지-테이블 엔트리의 CO 비트를 1로 세트하는 것, 또는 페이지-테이블 엔트리의 최우측 바이트를 변경하는 것을 제외하고, 어태치된 테이블 엔트리에 대해 만들어진 변화는, 만약 TLB에서 그 엔트리의 컨텐츠의 모든 사본들이 클리어링되기 전에 그 엔트리가 변환을 위해 사용된다면, 예측할 수 없는 결과들을 생성할 수 있다. 새로운 값의 사용이 명령들 사이에서 또는 명령의 실행 동안 시작될 수 있다. 상기 명령은 그 변화를 초래한 명령을 포함한다. 예컨대, MOVE(MVC)와 같은 명령이, 어태치된 테이블 엔트리에 대한 변화 - 이 변화는 그 엔트리를 무효로 만드는 변화를 포함함 - 를 만들 때, 그리고 그 이후에 변환을 위해 그 엔트리를 사용할 때, 변화된 엔트리는 TLB로부터 엔트리의 이전의 클리어링(prior clearing) 없이 사용되고 있고, 그래서 결과 값들의 그리고 예외 인정(exception recognition)의, 연관된 예측불가능(unpredictability)이 적용된다.
어태치된 테이블 엔트리들의 처리(manipulation)는 가짜 테이블-엔트리 값들이 TLB에 기록되도록 할 수 있다. 예를 들어, 만약 변화들이 조금씩(piecemeal) 만들어지면, 유효한 어태치된 엔트리의 수정(modification)은 부분적으로 업데이트된 엔트리가 기록되도록 할 수 있고, 또는 만약 그 변화의 프로세스에 중간 값이 도입되면, 추정상의 무효 엔트리가 일시적으로 유효인 것으로 보일 수 있고 TLB에 기록될 수 있다. 만약 그 변화가 재시도되는 I/O 동작에 의해 만들어지면, 또는 만약 단일 명령의 실행동안 중간 값이 도입되면, 이러한 중간 값이 도입될 수 있다.
또 다른 예로서, 만약 세그먼트-테이블 엔트리가 다른 페이지 테이블을 지정하도록 변화되고 TLB를 클리어링함이 없이 사용된다면, 새로운 페이지-테이블 엔트리들이 페치되고 오래된 페이지-테이블 오리진과 연관될 수 있다. 이 경우, 그 새로운 페이지-테이블 오리진을 지정하는 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)의 실행은 그 새로운 페이지 테이블로부터 페치된 페이지-테이블 엔트리들을 반드시 클리어링하지는 않을 것이다.
4. 페이지 테이블들의 처리(manipulation)를 가능하게 하기 위해, 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY) 명령이 제공된다. 이 명령은 페이지-테이블 엔트리에서 I 비트를 1로 세트하고, 다음과 같이 그들 테이블 엔트리들로부터 형성된 엔트리들의 구성에서 하나 또는 그 이상의 TLB들을 클리어링한다.
a. 로컬-TLB-클리어링 퍼실리티(facility)가 인스톨되지 않을 때, 또는 그 퍼실리티가 인스톨되고 명령이 모든 TLB들의 클리어링을 지정할 때(즉, 그 명령에서 로컬-클리어링 컨트롤이 0임), 그 구성에서 모든 TLB들이 클리어링된다.
b. 로컬-TLB-클리어링 퍼실리티가 인스톨되고 명령이 단지 로컬 TLB의 클리어링을 지정할 때(즉, 명령에서 로컬-클리어링 컨트롤이 1임), 단지 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY) 명령을 실행하는 CPU에서의 TLB 만이 클리어링된다.
무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)를 사용할 때, TLB 동작의 다음과 같은 측면들이 고려되어야 한다(또한, 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)에 대한 프로그래밍 주들을 참고).
a. 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)는, 최우측 바이트를 변화시키는 것 이외의 페이지-테이블 엔트리에 대한 어떤 변화를 만들기 전에, 실행되어야 하며; 그렇지 않으면, 무효화 페이지 테이블 엔트리(INVALIDATE PAGE ENTRY)의 선택적-클리어링 부분은 그 엔트리의 TLB 사본들을 클리어링할 수 없다.
b. 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)에 의해 페이지 테이블 내의 모든 페이지-테이블 엔트리들을 무효화시키는 것은, 그 페이지 테이블을 지정하는 어떤 세그먼트-테이블 엔트리의 TLB를 반드시 클리어링하는 것은 아니다. 영역- 또는 세그먼트-테이블 엔트리의 TLB를 무효화하고 클리어링하는 것이 요구될 때, 이하의 주 5(note 5) 내의 규칙들을 따라야 한다.
이와 유사하게, 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)에 의해 영역 또는 세그먼트 테이블 내에서 모든 더 낮은-레벨의 테이블 엔트리들을 무효화하는 것은, 더 낮은-레벨의 테이블을 지정하는 어떤 더 높은-레벨의 테이블 엔트리의 TLB를 반드시 클리어링하는 것은 아니다. 더 높은-레벨의 테이블 엔트리의 TLB를 무효화하고 클리어링하는 것이 요구될 때, 이하의 주 5 내의 규칙들을 따라야 한다.
c. 아주 많은 수의 페이지-테이블 엔트리들이 단일 시간에 무효화될 때, 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE)(TLB를 퍼지(purge)하는 것), 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY), 또는 퍼지 TLB(PURGE TLB)를 사용함에 있어서, 그리고 이하의 주 5 내의 규칙들을 따름에 있어서 수반되는 오버헤드는, 각각의 페이지-테이블 엔트리에 대해 무효화 페이지 테이블 엔트리( INVALIDATE PAGE TABLE ENTRY)를 발행(issue)함에 있어서보다 더 적을 수 있다.
5. 테이블 엔트리들의 처리(manipulation)는 다음의 규칙들에 따라야 한다. 만약 이들 규칙들이 준수되면, 마치 실제 또는 절대 스토리지로부터의 테이블 엔트리들이 변환 프로세스에서 항상 사용되는 것처럼 변환이 수행된다.
a. 유효한 테이블 엔트리는, 그것이 어떤 CPU에 어태치되는 동안 변화되어서는 아니되며, 그리고 (1) 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY) 또는 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)를 사용함으로써 그 엔트리를 무효화하는 것, (2) 페이지-테이블 엔트리의 비트들 56-63을 변경하는 것, (3) TLB를 퍼지(purge)하는 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE) 명령에 의해 변화를 만드는 것, 또는 (4) 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY)를 사용하여 엔트리를 대체하는 것을 제외하고, 그 CPU에 의한 변환을 위해 사용될 수 있다.
b. 페이지-테이블 엔트리의 비트들 56-63에 대한 변화 이외의 어태치되고 유효인(attached and valid) 또는 어태치되지 않은(unattached) 테이블 엔트리에 대한 어떤 변화가 만들어질 때, 그 엔트리로부터 형성된 TLB 엔트리를 가질 수 있는 각각의 CPU는, 그 변화가 발생한 후 그리고 그 CPU에 의해 암시적 변환을 위한 그 엔트리의 사용 이전에, 그것의 TLB를 퍼지하도록 되어야 한다. (만약 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY), 무효 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY), 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY), 또는 TLB를 퍼지하는 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE) 명령을 사용함으로써 그 변화가 만들어졌다면, 독립된 퍼지는 필요하지 않음에 유의한다). 그 테이블 엔트리가 어태치되고 유효인 경우, 이 규칙은, 변환을 위해 그 엔트리를 필요로 할 수 있는 프로그램이 실행되고 있지 않다는 것이 알려질 때, 적용된다.
c. 엔트리에 중간의 유효 값들이 나타날 수 있도록 하는 그러한 방법으로 무효 테이블 엔트리에 대한 어떤 변화가 만들어질 때, 그 엔트리가 어태치되는 각각의 CPU는, 그 변화가 발생한 후 그리고 그 CPU에 의한 암시적 주소 변환을 위한 그 엔트리의 사용 이전에, 그 자신의 TLB를 퍼지하도록 되어야 한다.
d. 테이블에 대해 지정된 오프셋 또는 길이에 대한 어떤 변화가 만들어질 때, 그것의 테이블 내에 더 이상 있지 않는 테이블 엔트리로부터 형성된 TLB 엔트리를 가질 수 있는 각각의 CPU는, 그 변화가 발생한 후 그리고 그 CPU에 의한 암시적 변환을 위한 테이블의 사용 이전에, 그 자신의 TLB를 퍼지하도록 되어야 한다.
중간의 유효 값들을 도입함이 없이 무효 페이지-테이블 엔트리가 유효로 만들어질 때, TLB는 그 엔트리로부터 형성된 어떤 TLB 엔트리들을 갖지 않는 CPU에서 클리어링될 필요는 없음에 유의하자. 이와 유사하게, 무효 영역-테이블 또는 세그먼트-테이블 엔트리가 중간의 유효 값들을 도입함이 없이 유효로 만들어질 때, TLB는, 그 유효화된 엔트리로부터 형성된 어떤 TLB 엔트리들을 갖지 않는, 그리고 그 유효화된 엔트리에 의해 어태치된 페이지 테이블 내 엔트리들로부터 형성된 어떤 TLB 엔트리들을 갖지 않는, CPU에서 클리어링될 필요는 없다.
퍼지 TLB(PURGE TLB), 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE), 또는 셋 프리픽스(SET PREFIX)의 실행은 몇몇 모델들의 퍼포먼스에 나쁜 영향을 미칠 수 있다. 따라서, 이들 명령들의 사용은, 상기 규칙들에 따라서 최소화되어야 한다.
6. EDAT-1이 적용될 때 사실상 다음의 고려사항들이 있다.
a. STE-포맷 및 ACCF-유효성(validity) 컨트롤들이 둘 다 1일 때, 세그먼트-테이블 엔트리에서, 또는 어떤 주어진 키-컨트롤-보호 체크(key-controlled-protection check)에 대해 대응하는 4K-바이트 블록의 스토리지 키에서, CPU가 접근-컨트롤 비트들 및 페치-보호 비트를 조사하는지는 예측불가능하다. 그러므로, 프로그램은, STE에서 무효 비트를 0으로 세트하기 전에, 세그먼트-테이블 엔트리 내 접근-컨트롤 비트들 및 페치-보호 비트가, 그 세그먼트의 구성요소 4K-바이트 블록들에 대해 모든 256 스토리지 키들에서 각각의 필드들과 동일하다는 것을 보장해야 한다.
세그먼트-테이블 엔트리에서, ACCF-유효성 컨트롤, 접근-컨트롤 비트들, 또는 페치 보호 비트를 변화시키기 이전에, 그리고 세그먼트의 256 스토리지 키들 중 어떤 것에서 접근-컨트롤 비트들 또는 페치-보호 비트를 변화시키기 이전에, 프로그램은, 이 섹션에서 앞서 기술된 바와 같이, 세그먼트-테이블 엔트리에서, 무효 비트를 1로 먼저 세트해야 하고, 그 구성에서 모든 TLB들에서의 모든 엔트리들을 클리어링해야 한다.
b. 세그먼트-테이블 엔트리에서 변화-레코딩 오버라이드(change-recording override)를 0으로 세팅하기 이전에, 프로그램은 세그먼트-테이블 엔트리에서 무효 비트를 1로 세트하고, 그 구성에서 모든 TLB들에서의 모든 엔트리들을 클리어링해야 한다(예를 들어, 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)를 사용함으로써). 만약 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY) 또는 TLB를 클리어링하는 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE)의 형태를 사용하여 그 변화가 만들어진다면, 테이블 엔트리를 무효화시키는 것은 필요하지 않다.
c. 페이지-테이블 엔트리에서 변화-레코딩 오버라이드를 0으로 세팅하기 이전에, 프로그램은 페이지-테이블 엔트리에서 무효 비트를 세트하고, 그 구성에서 모든 TLB들에서의 모든 엔트리들을 클리어링해야 한다(예를 들어, 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)를 사용함으로써). 만약 그 변화가 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY) 또는 TLB를 클리어링하는 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE)의 형태를 사용함에 의해 만들어진다면, 테이블 엔트리를 무효화시키는 것은 필요하지 않다.
EDAT-2가 적용될 때, 다음의 추가 고려사항들이 효력이 있다.
a. RTTE-포맷 컨트롤 및 ACCF-유효성 컨트롤이 둘 다 1일 때, CPU가, 영역-제3-테이블 엔트리에서, 또는 어떤 주어진 키-컨트롤-보호 체크에 대해 대응하는 4K-바이트 블록의 스토리지 키(storage key)에서, 접근-컨트롤 비트들 및 페치-보호 비트를 조사하는지는 예측가능하지 않다. 그러므로, 프로그램은, RTTE에서 무효 비트를 0으로 세팅하기 전에, 영역-제3-테이블 엔트리에서 접근-컨트롤 비트들 및 페치-보호 비트가 영역의 구성요소 4K-바이트 블록들에 대한 524,288 스토리지 키들 모두에서 각각의 필드들과 동일하다는 것을 보장해야 한다.
영역-제3-테이블 엔트리에서, ACCF-유효성 컨트롤, 접근-컨트롤 비트들, 또는 페치 보호 비트를 변화시키기 이전에, 그리고 영역의 524,288 스토리지 키들 중 어떤 것에서 접근-컨트롤 비트들 또는 페치-보호 비트를 변화시키기 이전에, 프로그램은, 이 섹션에서 앞서 기술된 바와 같이, 영역-제3-테이블 엔트리에서 무효 비트를 1로 먼저 세트하고, 그 구성에서 모든 TLB들에서의 모든 엔트리들을 클리어링해야 한다.
b. 영역-제3-테이블 엔트리에서 변화-레코딩 오버라이드(change-recording override)를 0으로 세팅하기 이전에, 프로그램은, 영역-제3-테이블 엔트리에서 무효 비트를 1로 세트하고, 그 구성에서 모든 TLB들에서의 모든 엔트리들을 클리어링해야 한다(예를 들어, 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)를 사용함으로써). 만약 그 변화가 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY) 또는 TLB를 클리어링하는 비교 및 스왑 및 퍼지(COMPARE AND SWAP AND PURGE)의 형태를 사용하여 만들어진다면, 테이블 엔트리를 무효화하는 것은 필요하지 않다.
이들 과정들을 준수하지 못하면 예측가능하지 않은 결과들 - 아마도 딜레이된-접근-예외 머신-체크 또는 변화를 기록하지 못하는 것을 포함함 - 을 초래할 수 있다.
향상된- DAT 퍼실리티 1( Enhanced - DAT Facility 1)
향상된- DAT 퍼실리티 ( enhanced - DAT facility ) 1은 z/Architecture를 구현하는 모델들 상에서 이용가능할 수 있다. 퍼실리티가 인스톨되어 인에이블될 때, DAT 변환은, 세그먼트-테이블 엔트리에서 STE-포맷 컨트롤에 의해 결정된, 페이지-프레임 실제 주소 또는 세그먼트 프레임 절대 주소를 생성할 수 있다. 퍼실리티가 구성에 인스톨될 때, 컨트롤 레지스터 0 내의 새로운 비트는 그 퍼실리티를 인에이블시킨다. 주: EDAT -1 적용( EDAT -1 applies )이라는 용어가 본 문서 전반에 사용되는데, 이는 향상된-DAT 퍼실리티 1이 그 구성에 인스톨되고 컨트롤 레지스터 0에 의해 인에이블될 때의 조건을 설명하기 위한 것이다.
EDAT-1이 적용될 때, DAT 프로세스에서 다음의 추가 기능이 이용가능하다.
·DAT-보호 비트가 영역-테이블 엔트리들에 추가되어, 세그먼트- 및 페이지-테이블 엔트리들에서 DAT-보호 비트들과 유사한 기능을 제공한다.
·세그먼트 테이블 엔트리에 STE-포맷 컨트롤이 추가된다. STE-포맷 컨트롤이 0일 때, DAT는, 페이지-테이블 엔트리에서 변화-레코딩 오버라이드(change-recording override)가 변화 비트(change bit)의 세팅이 페이지를 위해 바이패스될 수 있는지를 나타낸다는 것을 제외하고는, 현재 정의된 것에 따라 진행한다.
·STE-포맷 컨트롤이 1일 때, 세그먼트-테이블 엔트리는 또한 다음을 포함한다.
- 1 M-바이트 블록의 절대 스토리지 위치를 지정하는 세그먼트-프레임 절대 주소(페이지-테이블 오리진(page-table origin)보다는).
- 세그먼트의 개별 스토리지 키들에서 대응하는 비트들을 대신하여 선택적으로 사용될 수 있는 접근-컨트롤 비트들 및 페치-보호 비트.
- 세그먼트-테이블 엔트리에서 접근-컨트롤 비트들 및 페치-보호 비트의 유효성을 결정하는 비트.
- 변화 비트(change bit)의 세팅이 세그먼트의 개별 스토리지 키들에서 바이패스될 수 있는지를 나타내는 변화-레코딩 오버라이드(change-recording override). 퍼실리티는 수행 프레임 관리 기능(PERFORM FRAME MANAGEMENT FUNCTION) 컨트롤 명령을 추가함. 퍼실리티는 다음의 컨트롤 명령들에 대한 향상(enhancements) 또는 변화(changes)를 포함함: ·로드 페이지-테이블-엔트리 주소(LOAD PAGE-TABLE-ENTRY ADDRESS)·무브 페이지(MOVE PAGE) ·세트 확장된 스토리지 키(SET STORAGE KEY EXTENDED)·테스트 보호(TEST PROTECTION).
향상된- DAT 퍼실리티 2
향상된- DAT 퍼실리티 ( enhanced - DAT facility ) 2는 z/Architecture를 구현하는 모델들 상에서 이용가능할 수 있다. 퍼실리티가 인스톨되어 인에이블될 때, DAT 변환은, 영역 제3-테이블 엔트리(만약 있다면) 및 세그먼트-테이블 엔트리(만약 있다면)에서의 포맷 컨트롤들에 의해 결정된, 페이지-프레임 실제 주소, 세그먼트 프레임 절대 주소, 또는 영역-프레임 절대 주소 중 어느 하나를 생성할 수 있다.
주: EDAT -2가 적용된다(EDAT-2 applies)라는 용어가 본 문서에서 전반적으로 사용되는데, 이는 향상된-DAT 퍼실리티 2가 그 구성에 인스톨되고 컨트롤 레지스터 0에 의해 인에이블될 때의 조건을 설명하기 위한 것이다.
EDAT-2가 적용될 때, DAT 프로세스에서 다음의 추가 기능이 이용가능하다.
·EDAT-1가 적용된다.
·영역-제3-테이블 엔트리(RTTE)에 포맷 컨트롤이 추가된다. RTTE-포맷 컨트롤이 0일 때, DAT는 EDAT-1이 적용될 때에 대한 경우와 같이 진행된다.
·RTTE-포맷 컨트롤이 1일 때, 영역-제3-테이블 엔트리는 또한 다음을 포함한다.
- 2 G-바이트 블록의 절대 스토리지 위치를 지정하는 영역-프레임 절대 주소(세그먼트-테이블 오리진보다는)
- 영역의 개별 스토리지 키들에 대응하는 비트들 대신에 선택적으로 사용될 수 있는 접근-컨트롤 비트들 및 페치-보호 비트.
- 영역-제3-테이블 엔트리 내 접근-컨트롤 비트들 및 페치-보호 비트의 유효성을 결정하는 비트 - 변화 비트(change bit)의 세팅이 영역의 개별 스토리지 키들에서 바이패스될 수 있는지를 나타내는 변화-레코딩 오버라이드. 향상된-DAT 퍼실리티 2는 비교 및 대체 DAT 테이블(COMPARE AND REPLACE DAT TABLE) 엔트리 명령 - 이는 유효이고, 어태치된 DAT-테이블 엔트리들의 동적 대체(dynamic replacement), 그리고 대체된 엔트리로부터 생성된 어떤 TLB 엔트리들의 선택적인 클리어링을 제공함 - 을 추가한다. 향상된-DAT 퍼실리티 2가 다음의 컨트롤 명령들, 즉, ·무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY) ·로드 페이지-테이블-엔트리 주소(LOAD PAGE-TABLE-ENTRY ADDRESS) ·무브 페이지(MOVE PAGE) ·수행 프레임 관리 기능(PERFORM FRAME MANAGEMENT FUNCTION) ·테스트 보호(TEST PROTECTION)에 대한 향상(enhancements) 또는 변화(changes)를 포함한다. 향상된-DAT 퍼실리티 2가 인스톨될 때, 향상된-DAT 퍼실리티 1도 또한 인스톨된다.
무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)(IDTE)는, 세그먼트-테이블 엔트리 또는 엔트리들이 무효화될 때 TLB 결합된 영역 및 세그먼트 테이블 엔트리들을 선택적으로 클리어링함으로써 무효화-및-클리어링 동작을 수행한다. IDE는 또한 클리어링-바이-ASCE 동작도 수행한다.
IDTE 명령의 실행동안, 스토리지(예컨대, 가상 스토리지)의 지정된 부분이 무효화된다. 예를 들어, 스토리지의 복수의 페이지들을 포함하는 스토리지의 세그먼트, 스토리지의 복수의 세그먼트들을 포함하는 스토리지의 영역이 무효화되도록 선택된다. 무효화는 무효화될 스토리지의 유닛들에 대응하는 데이터 구조 엔트리들에 위치한 무효화 인디케이터들의 세팅에 의해 가능해진다. 다른 측면에서, 무효화되고 있는 스토리지와 연관된 버퍼 엔트리들(예컨대, 변환 색인 버퍼 엔트리들), 또는 다른 스토리지가 클리어링된다. 더 나아가, 또 다른 측면에서, 선택된 주소 공간들과 연관된 버퍼 엔트리들은 선택되지 않은(non-selected) 주소 공간들의 버퍼 엔트리들에 영향을 미침이 없이, 그리고 무효화를 수행함이 없이, 버퍼들로부터 클리어링된다. 일 예에서, 여기서는 IBM® z/Architecture로부터의, 무효화 동적 주소 변환(DAT) 테이블 엔트리(IDTE) 명령으로 일컬어지는 명령이, 상기 동작들 중 하나 또는 그 이상을 수행하기 위해 사용된다.
무효화 DAT 테이블 엔트리( INVALIDATE DAT TABLE ENTRY )
IDTE R1,R3,R2[,M4]
주: "지정된 CPU 또는 CPU들" 이라는 용어는 이 명령에 의해 영향을 받는 TLB들의 범위(scope)에 대해 다음의 의미를 갖는다.
·로컬-TLB-클리어링 퍼실리티가 인스톨되지 않을 때, 또는 그 퍼실리티가 인스톨되고 M4 필드에서 로컬-클리어링-컨트롤(LC) 비트가 0일 때, "지정된 CPU 또는 CPU들" 이라는 용어는 그 구성에서 CPU들 모두를 의미한다.
·로컬-TLB-클리어링 퍼실리티가 인스톨되고 M4 필드에 LC 비트가 1일 때, "지정된 CPU 또는 CPU들" 이라는 용어는 IDTE 명령을 실행하는 CPU(로컬 CPU)만을 의미한다. 그 구성에서 다른 모든 CPU들에서의 TLB들은 영향을 받지 않을 수 있다.
클리어링-바이-ASCE-옵션 비트, 범용 레지스터 R2의 비트 52가 0일 때, 무효화-및-클리어링 동작으로 불려지는 동작이 다음과 같이 수행된다. 스토리지 내의 지정된 영역-테이블 엔트리 또는 세그먼트-테이블 엔트리, 또는 지정된 엔트리로 시작하는 엔트리들의 영역은 무효화되고, 그 구성에서 지정된 CPU 또는 CPU들에서의 변환-색인 버퍼들(TLBs)에서, (1) 스토리지에서 무효화된 엔트리 또는 엔트리들의 사용을 통해 형성된 지정된 유형의 모든 TLB 테이블 엔트리들, 및 (2) 클리어링된 더 높은-레벨의 TLB 테이블 엔트리들의 사용을 통해 형성된 모든 더 낮은-레벨의 TLB 테이블 엔트리들이 클리어링된다. 클리어링된 TLB 엔트리들은 지정된 주소 공간에서 주소들을 변환하도록 형성된 엔트리들로 선택적으로 한정될 수 있다.
클리어링-바이-ASCE-옵션 비트가 1일 때, 클리어링-바이-ASCE 동작으로 일컬어지는 동작이 다음과 같이 수행된다. 동작은, 스토리지에서 DAT-테이블 엔트리들의 어떤 무효화도 수행하지 않지만, 그것은 구성에서 모든 CPU들에서의 TLB들로부터, 지정된 주소 공간에서 주소들을 변환하기 위해 형성된, 모든 영역-제1-테이블 엔트리들, 영역-제2-테이블 엔트리들, 영역-제3-테이블 엔트리들, 세그먼트-테이블 엔트리들 및 페이지-테이블 엔트리들을 클리어링한다.
M4 필드의 비트들은 다음과 같이 정의된다.
·보류( Reserved ) : M4 필드의 비트들 0-1은 무시되지만 0들을 포함해야 한다. 그렇지 않으면, 그 프로그램은 장차 호환가능하게 동작하지 않을 수 있다.
·포맷-컨트롤 써머리 ( Format - Control Summary , FS ) : EDAT-2가 적용될 때, M4 필드의 비트 2는 무효화-및-클리어링 동작을 위한 포맷-컨트롤 써머리(FS)이다. M4 필드의 비트 2는 클리어링-바이-ASCE 동작에 대해, 그리고 EDAT-2가 적용되지 않을 때, 무시된다.
지정 유형(designation type, DT), 범용 레지스터 R1의 비트들 60-61이 바이너리 00 또는 01일 때, 포맷-컨트롤 써머리가 적용되며; 범용 레지스터 R1에서 DT가 바이너리 10 또는 11일 때, 포맷-컨트롤 써머리는 무시된다.
. 로컬- 클리어링 컨트롤( Local - Clearing Control , LC ) : 로컬-TLB-클리어링 퍼실리티가 인스톨될 때, LC 비트, M4 필드의 비트 3은 로컬 CPU에서 단지 TLB가 클리어되는지 또는 그 구성의 모든 CPU들에서의 TLB들이 클리어되는지를 컨트롤한다. 로컬-TLB-클리어링 퍼실리티가 인스톨되지 않을 때, M4 필드의 비트 3은 무시된다.
무효화-및- 클리어링 동작( Invalidation - and - Clearing Operation )
범용 레지스터 R2의 비트 52, 클리어링-바이-ASCE-옵션 비트가 0일 때, 무효화-및-클리어링 동작이 지정된다.
범용 레지스터 R1의 컨텐츠는, 사용된, 테이블 오리진, 비트들 0-51, 및 지정-유형 컨트롤(DT), 비트들 60 및 61만을 갖는, 주소-공간-컨트롤 엘리먼트의 포맷을 갖는다. 테이블 오리진은, 하나 또는 그 이상의 엔트리들이 무효화될 DAT 테이블을 지정하고, DT는 그 테이블의 유형을 지정한다.
범용 레지스터 R1의 비트들 52-59, 62, 및 63은 무시된다.
범용 레지스터 R2의 비트들 0-43은 가상 주소의 영역 인덱스 및 세그먼트 인덱스의 포맷을 갖는다. 범용 레지스터 R1에 의해 지정된 테이블의 유형에서 엔트리를 선택하기 위해 DAT에 의해 노멀하게 사용된 비트들 0-43의 일부는 유효 무효화 인덱스(effective invalidation index)로 일컬어진다.
범용 레지스터 R1의 비트들 60 및 61은, 다음과 같이, 테이블 유형 및 유효한(effective) 무효화 인덱스를 지정한다.
유효한 무효화 인덱스의 우측의 범용 레지스터 R2의 비트들 0-43의 일부는 무시된다.
범용 레지스터 R1에서의 테이블 오리진 및 유효한 무효화 인덱스는 무효화될 DAT-테이블 엔트리를 지정한다. 범용 레지스터 R2의 비트들 53-63은 무효화될 추가 테이블 엔트리들의 수를 지정하는 무부호 바이너리 정수(unsigned binary integer)이다. 그러므로, 무효화될 엔트리들의 수는 1-2,048이며, 이는 비트들 53-63의 값에 대응한다.
범용 레지스터 R2의 비트들 44-51은 0이어야 하며, 그렇지 않으면 지정 예외가 인식된다.
만약 R3가 논제로(nonzero)이면, 사용된, 범용 레지스터 R3의 컨텐츠는 단지 테이블 오리진, 비트들 0-51, 및 지정-유형 컨트롤(DT), 비트들 60 및 61을 갖는 주소-공간-컨트롤 엘리먼트의 포맷을 갖는다. 이들 컨텐츠들은 클리어링될 TLB 엔트리들을 선택하는데 사용된다. 범용 레지스터 R3의 비트들 52-59,62, 및 63은 무시된다. 만약 R3가 0이면, 범용 레지스터 0의 전체 컨텐츠가 무시되며, TLB 엔트리들은 그들을 형성하기 위해 사용된 ASCE에 관계없이 클리어링된다.
범용 레지스터 R1에서 테이블 오리진 및 범용 레지스터 R2에서 유효한 무효화 인덱스는, 그 결과 주소의 비트 위치 0으로부터의 캐리는 항상 무시되고, 그 인덱스는 테이블-길이 필드에 대하여 체크되지 않는다는 것을 제외하고는, IBM 발행물(Publication) 번호 SA22-7832-08(2010, 8월)의 "z/Architecture 동작 원리"에서 "주소-공간-컨트롤 엘리먼트에 의해 지정된 테이블에서의 룩업(Lookup in a Table Designated by an Address-Space-Control Element)"에서의 규칙들에 따라, 테이블 엔트리를 지정한다. 현재 PSW의 비트들 31 및 32에 의해 지정된 현재의 주소지정 모드(addressing mode)에 관계없이, 테이블 오리진은 64-비트 주소로 취급되며, 덧셈(addition)은 64-비트 주소 산술(arithmetic)에 대한 규칙들을 사용하여 수행된다. 이들 두 개의 컴포넌트들로부터 형성된 주소는 실제 또는 절대 주소이다. 이 영역-테이블 또는 세그먼트-테이블 엔트리의 무효 비트, 즉 비트 58은 1로 세트된다. 이 과정 동안, 엔트리는 포맷 에러에 대해, 또는 그 다음의-더 낮은 레벨의 테이블의, 엔트리 내, 오리진이 어드레싱 예외를 초래하는지 여부에 대해, 체크되지 않는다. 엔트리 내 테이블-유형 필드는 무시된다. 만약 그 엔트리가 세그먼트-테이블 엔트리이면, 그 엔트리 내 공통-세그먼트 비트는 무시된다. 만약 EDAT-2가 적용되고 그 엔트리가 영역-제3-테이블 엔트리이면, 그 엔트리 내 공통-영역 비트는 무시된다.
전체 테이블 엔트리는 스토리지로부터 동시에 페치된다. 그 후에, 무효 비트를 포함하는 바이트가 저장된다. 엔트리에 대한 페치 접근(fet access)은 키-컨트롤 보호(key-controlled protection)를 받으며, 저장 접근(store access)은 키-컨트롤 보호 및 낮은-주소 보호(low-address protection)를 받는다.
만약 범용 레지스터 R2의 비트들 53-63이 모두 0이 아니라면, 영역-테이블 또는 세그먼트-테이블 엔트리에서 무효 비트를 1로 세팅하는 것은, 유효한 무효화 인덱스의 이전에 사용된 값에 1을 더함으로써, 반복되며, 그래서 이는, 비트들 53-63에 의해 명시된 만큼 여러 번 수행된다. 유효한 무효화 인덱스의 최좌측 비트 위치를 벗어나는 캐리는 무시되며, 테이블에서 랩어라운드(wraparound)는 이 경우에 일어난다. 범용 레지스터 R2의 컨텐츠는 변화되지 않은 상태로 남는다.
동작(operation)이 시작되기 전에 그리고 또한 그 동작이 완료된 후, 직렬화 기능(serialization function)이 수행된다. 모든 직렬화 동작들에 대해 해당되는 것과 같이, 이 직렬화는 이 CPU에 대해서만 적용되며, 다른 CPU들이 반드시 직렬화되는 것은 아니다.
그것이 무효화 비트를 1로 세트한 후, 이 CPU는 그것의 TLB로부터 선택된 엔트리들을 클리어링한다. 그런 다음, 만약 로컬-TLB-클리어링 퍼실리티가 인스톨되지 않으면, 또는 만약 퍼실리티가 인스톨되고 M4 필드 내 LC 필드가 0이면, 이 CPU는 그들의 TLB들로부터 선택된 엔트리들을 클리어링하기 위해 그 구성에서 모든 다른 CPU들에게 신호를 보낸다. 각각의 영향을 받는 TLB에서, 다음의 조건들 모두가 충족되는 적어도 그들 엔트리들이 클리어링된다.
·범용 레지스터 R2에서 유효한 무효화 인덱스는 범용 레지스터 R1의 비트들 60-61에서 DT 필드에 의해 지정된 유형의 TLB 테이블 엔트리에서 대응하는 인덱스와 매치된다. 만약 그 모델이 DT 필드에 의해 지정된 인덱스를 포함하는 복합(composite) TLB 엔트리를 구현한다면, 범용 레지스터 R1에서 유효한 인덱스의 좌측의 비트들은 또한 그 지정된 TLB 테이블 엔트리에 제공된 어떤 대응하는 비트들과 매치된다. 다수의 테이블 엔트리들이 범용 레지스터 R2의 비트들 53-63에 기인하여 무효화될 때, 유효한 무효화 인덱스는 증가되고, 인덱스의 최좌측 비트 위치를 벗어난 캐리는 상실(lost)되며, TLB 영역- 또는 세그먼트-테이블 엔트리들이, 그렇게 획득된 인덱스의 각각의 값에 대해 클리어링된다.
·R3 필드가 0이거나, 범용 레지스터 R3에서 테이블-오리진 및 지정-유형 필드들이 TLB 테이블 엔트리를 형성하기 위해 사용된 주소-공간 컨트롤 엘리먼트(address-space-control element, ASCE)에서 테이블-오리진 및 지정-유형 필드들과 매치된다.
·만약 R3 필드가 0이면, 이 단계에서 기술되는 조건은 적용되지 않는다.
·만약 스토리지에서 무효화된 엔트리가 더 낮은-레벨의 변환 테이블을 지정하면, 그 무효화된 엔트리에서 더 낮은 레벨의 테이블 오리진은 TLB 테이블 엔트리에서 테이블-오리진 필드와 매치된다.
각각의 영향을 받는 TLB에서, 또한 다음의 조건들 모두가 충족되는 적어도 어떤 더 낮은-레벨의 TLB 테이블 엔트리들이 클리어링된다.
·더 낮은-레벨의 TLB 엔트리는 스토리지에서 무효화된 엔트리의 사용을 통해, 또는 스토리지에서 무효화된 엔트리 또는 이 프로세스에서 클리어링된 TLB 엔트리 중 어느 하나의 사용을 통해 형성된 더 높은-레벨의 TLB 테이블 엔트리의 사용을 통해 형성되었다.
·R3 필드가 0이거나 범용 레지스터 R3에서 테이블-오리진 및 지정-유형 필드들이 더 낮은-레벨의 TLB 테이블 엔트리를 형성하기 위해 사용된 주소-공간 컨트롤 엘리먼트(ASCE)에서 테이블-오리진 및 지정-유형 필드들과 매치된다. 이 ASCE는, 더 낮은 레벨의 TLB 테이블 엔트리가 형성된 스토리지에서 더 낮은 레벨의 테이블 엔트리를 어태치한 더 높은 레벨의 테이블 엔트리를 포함하는 변환 경로(translation path)를 어태치한 것일 수 있고, 또는 더 낮은 레벨의 TLB 테이블 엔트리가 형성된 스토리지에서 더 낮은 레벨의 테이블 엔트리를 어태치한 더 높은 레벨의 TLB 테이블 엔트리를 사용가능하게 만드는 것일 수 있다. 만약 R3 필드가 0이면, 이 단계에서 설명되는 조건은 적용되지 않는다.
·만약 스토리지에서 무효화된 엔트리가 더 낮은 레벨의 변환 테이블을 지정하면, 무효화된 엔트리에서 더 낮은 레벨의 테이블 오리진은 TLB 테이블 엔트리에서 테이블-오리진 필드와 매치된다.
프로그래밍 주:
1. 포맷-컨트롤 써머리를 1로 세팅하는 것은 특정 모델들에 관한 향상된 퍼포먼스를 제공할 수 있다.
2. 지정 유형(DT), 범용 레지스터 R1의 비트들 60-61이 바이너리 00일 때, 포맷-컨트롤 써머리는 무효화되고 있는 세그먼트-테이블 엔트리들에 적용된다. 범용 레지스터 R1에서 DT가 바이너리 01일 때, 포맷-컨트롤 써머리는 무효화되고 있는 영역-제3-테이블 엔트리들에 적용된다.
3. 프로그램은, 만약 무효화되고 있는 테이블 엔트리들 모두에서 포맷 컨트롤(테이블 엔트리의 비트 53)이 1이라는 것을 그것이 보장할 수 있을 때, 포맷-컨트롤 써머리를 1로 세트하기만 해야 한다. 만약 포맷-컨트롤 써머리가 1로 세트되지만, 무효화되고 있는 테이블 엔트리들 모두에서 포맷 컨트롤이 1이 아니면, TLB의 미완료 퍼징(imcomplete purging)이 발생할 수 있고, 그 결과 DAT로부터 예측할 수 없는 결과들을 초래한다.
4. 명령의 M4 필드는, 어셈블러 신택스(assembler syntax)에서 브래킷들 [] 내에 포함되어 있는 필드로 나타낸 바와 같이, 선택적인 것으로 고려된다. M4 필드가 지정되지 않을 때, 어셈블러는 명령의 그 필드에 0들을 배치한다.
영역- 또는 세그먼트-테이블 엔트리에 저장하는 것 그리고 TLB 엔트리들의 클리어링은, 만약 그 무효 비트가 영역- 또는 세그먼트-테이블 엔트리에서 이미 1이면, 발생할 수도 있고 또는 발생하지 않을 수도 있다.
다수의 엔트리들이 무효화될 때, TLB 엔트리들의 클리어링은, 모든 엔트리들이 무효화될 때까지 딜레이될 수 있다.
클리어링 - 바이 ASCE 동작( Clearing - by - ASCE Operation )
범용 레지스터 R2의 비트 52, 즉 클리어링-바이-ASCE-옵션 비트가 1일 때, 클리어링-바이-ASCE 동작이 지정된다.
범용 레지스터 R3의 컨텐츠는, 사용된, 테이블 오리진, 비트들 0-51, 지정-유형 컨트롤(DT), 비트들 60 및 61만을 갖는 주소-공간-컨트롤 엘리먼트의 포맷을 갖는다. 이들 컨텐츠는 클리어링될 TLB 엔트리들을 선택하는데 사용된다. 범용 레지스터 R3의 비트들 52-59, 62, 및 63은 무시된다. R3은 0 또는 논제로(nonzero)일 수 있다. 즉, 레지스터 0을 포함하는 어떤 범용 레지스터도 지정될 수 있다.
범용 레지스터 R2의 비트들 44-51은 0들이어야 하고, 그렇지 않으면, 지정 예외가 인정된다.
범용 레지스터 R1 및 범용 레지스터 R2의 비트 위치들 0-43 및 53-63의 컨텐츠는 무시된다.
그 구성에서 지정된 CPU 또는 CPU들의 TLB들에서, 모든 레벨에서, 범용 레지스터 R3에서 테이블-오리진 및 지정-유형 필드들이, 엔트리를 형성하기 위해 사용되는 주소-공간-컨트롤 엘리먼트(ASCE)에서 테이블-오리진 및 지정-유형 필드들과 매치되는 적어도 그들 엔트리들이 클리어링된다. 이 ASCE는, 그 엔트리가 형성된 동안 변환에서 사용된 것이다.
클리어링-바이-ASCE-옵션 비트(범용 레지스터 R2의 비트 52)가 1일 때, M4 필드는 무시된다.
공통 동작( Common Operation )
무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)의 실행은 다음과 같은 것들이 발생할 때까지 그것을 실행하는 CPU 상에서 완료되지 않는다.
1. 위에서 지정된 기준을 충족시키는 모든 엔트리들은, 이 CPU의 TLB로부터 클리어링되었다. 로컬-TLB-클리어링 퍼실리티가 인스톨되고 M4 필드에서 LC 비트가 1일 때, 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)의 실행은 이 시점에서 완료되고 다음의 단계는 수행되지 않는다.
2. 로컬-TLB-클리어링 퍼실리티가 인스톨되지 않을 때, 또는 그 퍼실리티가 인스톨되고 M4 필드에서 LC 비트가 0일 때, 그 구성에서 다른 모든 CPU들은, 명시된 파라미터들에 대응하는 TLB 엔트리들을 사용하여, 어떤 스토리지 접근들 - 변화 및 레퍼런스 비트들의 업데이트를 포함함 - 을 완료했다.
동작들은 TLB 실제-공간 엔트리들에 대해 반드시 어떤 영향을 미치는 것은 아니다.
특수 조건들( Special Conditions ):
범용 레지스터 R2의 비트들 44-51은 0들이어야 한다. 그렇지 않으면, 지정 예외가 인정된다.
동작은 모든 주소지정(addressing) 및 보호 예외들에 관해 억제(suppress)된다(단지 무효화-및-클리어링 동작만).
결과 조건 코드 : 코드는 예측불가능하다.
프로그램 예외들 :
·주소지정(addressing)(무효화된 영역- 또는 세그먼트-테이블 엔트리, 무효화-및-클리어링 동작만)
·동작(만약 DAT-향상 퍼실리티가 인스톨되지 않으면)
·특권이 있는 동작(Privileged operation)
·보호(페치 및 저장, 영역- 또는 세그먼트-테이블 엔트리, 키-컨트롤 보호 및 낮은-주소 보호; 무효화-및-클리어링 동작만)
·스펙(Specification)
프로그래밍 주:
1. TLB 엔트리들에 관한 선택적인 클리어링은 그 모델에 따라 다른 방법들로 구현될 수 있으며, 일반적으로, 요구되는 최소 수보다 더 많은 엔트리들이 클리어링될 수 있다. 무효화-및-클리어링 동작이 수행될 때, 어떤 모델들은, 유효한 무효화 인덱스가 세그먼트 인덱스가 아닐 때, 모든 TLB 엔트리들을 클리어링할 수 있고, 또는 그 엔트리에서 페이지-테이블 오리진에 관계없이 엔트리를 클리어링할 수 있다. 그 동작 또는 클리어링-바이-ASCE 동작이 수행될 때, 어떤 모델들은, 범용 레지스터 R3에서 지정-유형 필드에 관계없이 TLB 엔트리를 클리어링할 수 있다. 어느 하나의 동작이 수행될 때, 다른 모델들은 요구되는 엔트리들의 최소 수를 정확히 클리어링할 수 있다. 그러므로, 모든 모델들 상에서 프로그램이 동작하도록 하기 위해, 프로그램은 특정 모델에 관한 덜 선택적인 클리어링(less selective clearing)에 의해 획득된 어떤 특징들을 이용해서는 안된다.
2. 공통의 세그먼트들과 연관된 TLB 엔트리들을 클리어링하기 위해 클리어링-바이-ASCE 동작을 사용할 때, 이들 엔트리들은 많은 다른 테이블 오리진들을 포함하는 주소-공간-컨트롤 엘리먼트들의 사용을 통해 형성될 수 있었다는 것에 유의한다.
무효화-및-클리어링 동작이 특정될 때 다음의 주가 적용된다.
3. TLB 엔트리들의 클리어링은 세그먼트-테이블 엔트리에서 페이지-테이블 오리진을 사용할 수 있다. 그러므로, 만약 어태치된 상태에서, 세그먼트-테이블 엔트리가, 현재 값과 다른 페이지-테이블 오리진을 포함했다면, 이전의 값들을 포함하는 엔트리들의 사본들이 TLB에 남아 있을 수 있다.
4. 만약 또 다른 CPU 또는 채널 프로그램이 또한 그 위치를 업데이트할 수도 있는 가능성이 존재한다면, 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)는 메인 스토리지에서 공유된 위치를 업데이트하는데 안전하게 사용될 수 없다.
5. 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)에 대한 DAT-테이블 엔트리의 주소는 64-비트 주소이고, 그래서 주소 산술(address arithmetic)은 264-1에서 랩어라운드(wraparound)가 일어나는, 64-비트 주소 산술에 대해 노멀한 규칙들을 따름으로써 수행된다. 또한, 오프셋 및 길이 필드들은 사용되지 않는다. 로드 실제 주소(LOAD REAL ADDRESS) 및 저장 실제 주소(STORE REAL ADDRESS)에 대한 암시적 변환 및 변환들과 이를 대조한다. 이 모두는 결국, 비트 위치 0을 벗어나서 캐리가 발생할 때, 랩어라운드(wraparound) 또는 주소지정 예외(addressing exception)를 초래할 수 있고, 지정된 엔트리가 그것의 테이블 내에 있지 않을 때 예외 조건을 나타낸다. 따라서, DAT 테이블들은 최대 스토리지 위치들로부터 위치 0으로 랩(wrap) 하도록 특정되어서는 아니되며, 제1의 지정된 엔트리 및 범용 레지스터 R2의 비트들(53-63)에 의해 특정된 모든 추가 엔트리들은 그 지정된 테이블 내에 있어야 한다.
6. 로컬-TLB-클리어링 퍼실리티가 인스톨될 때, 로컬-클리어링 컨트롤은, 클리어링되고 있는 TLB 엔트리들을 형성하기 위해 사용된 ASCE가, IDTE 명령이 실행되는(예를 들어, 만약 프로그램이 단일프로세서(uniprocessor) 상에서 실행중이라면) CPU에 대해서만 어태치되어 있을 때 1로 지정되어야 한다. 그렇지 않으면, 딜레이된-접근-예외 머신 체크의 제공(presentation)을 포함하는, 예측불가능한 결과들이 발생할 수 있다.
몇몇 모델들 상에서, 위에서 열거된 케이스들에 대해 로컬 TLB 만의 클리어링을 지정하는 무효화 DAT 테이블 엔트리(INVALIDATE DAT TABLE ENTRY)의 사용은 결국 중요한 퍼포먼스 향상을 가져올 수 있다.
7. 어셈블러 신택스에서 브래킷들 [] 내에 포함되어 있는 필드로 나타낸 바와 같이, 명령의 M4 필드는 선택적인 것으로 고려된다. M4 필드가 지정되지 않을 때, 어셈블러는 명령의 그 필드에서 0들을 배치한다.
INVALIDATE PAGE TABLE ENTRY
IPTE R1, R2[,R3[,M4]]
: "지정된 CPU 또는 CPU들" 이라는 용어는 이 명령에 의해 영향을 받는 TLB들의 범위에 대해 다음과 같은 의미를 갖는다.
. 로컬-TLB-클리어링 퍼실리티가 인스톨되지 않을 때, 또는 그 퍼실리티가 인스톨되고 M4 필드에서 로컬-클리어링-컨트롤(LC) 비트가 0일 때, "지정된 CPU 또는 CPU들" 이라는 용어는 그 구성에서 모든 CPU들을 의미한다.
. 로컬-TLB-클리어링 퍼실리티가 인스톨되고 M4 필드에서 LC 비트가 1일 때, "지정된 CPU 또는 CPU들" 이라는 용어는 단지 IPTE 명령을 실행하는 CPU(로컬 CPU)를 의미한다. 그 구성에서 다른 모든 CPU들 내 TLB들은 영향을 받지 않을 수 있다.
지정된 페이지-테이블 엔트리들은 무효화되고, 그래서 그 구성에서 지정된 CPU 또는 CPU들 내 변환-색인 버퍼들(TLB들)에서, 연관된 엔트리들이 클리어링된다.
범용 레지스터 R1의 컨텐츠들은 세그먼트-테이블 엔트리의 포맷을 갖는데, 여기서는 단지 페이지-테이블 오리진만이 사용된다. 범용 레지스터 R2의 컨텐츠는 가상 주소의 포맷을 갖는데, 여기서는 단지 페이지 인덱스만이 사용된다. 페이지-테이블 오리진 또는 페이지 인덱스의 일부가 아닌 필드들의 컨텐츠들은 무시된다.
IPTE-범위 퍼실리티가 인스톨되지 않을 때, 또는 R3 필드가 0일 때, 제1 및 제2 오퍼랜드들에 의해 지정된 단일 페이지-테이블 엔트리는 무효화된다.
IPTE-범위 퍼실리티가 인스톨되고 R3 필드가 논제로일 때, 범용 레지스터 R3의 비트들 56-63은 무효화될 추가 페이지-테이블 엔트리들의 카운트를 특정하는 미부호 바이너리 정수를 포함한다. 그러므로, 무효화될 페이지-테이블 엔트리들의 수는 1-256이며, 이는 그 레지스터의 비트들 56-63에서 0-255의 값에 대응한다.
IPTE-범위 퍼실리티가 인스톨되지 않을 때, R3 필드는 무시되지만, 0들을 포함해야 하며, 그렇지 않으면, 프로그램은 장차 호환가능하게 동작하지 않을 수 있다.
M4 필드의 비트들은 다음과 같이 정의된다.
· 보류 : 비트들 0-2는 보류된다. M4 필드의 보류된 비트 위치들은 무시되지만, 0들을 포함해야 한다. 그렇지 않으면, 프로그램은 장차 호환가능하게 동작하지 않을 수 있다.
· 로컬- 클리어링 컨트롤( LC ) : 로컬-TLB-클리어링 퍼실리티가 인스톨될 때, LC 비트, 즉 M4 필드의 비트 3은 단지 로컬 CPU의 TLB만이 클리어링될 지 또는 그 구성의 모든 CPU들 내 TLB들이 클리어링될 지를 컨트롤한다. 로컬-TLB 클리어링 퍼실리티가 인스톨되지 않을 때, M4 필드의 비트 3은 보류된다.
페이지-테이블 오리진 및 페이지 인덱스는 페이지-테이블 엔트리를 지정하는데, 이는 페이지-테이블 룩업을 위한 동적-주소-변환 규칙들을 따른다. 페이지-테이블 오리진은, 현재 PSW의 비트들 31 및 32에 의해 지정되는, 현재의 주소지정 모드에 상관없이, 64비트 주소로 취급되며, 덧셈은 64-비트 주소 산술을 위한 규칙들을 사용하여 수행된다. 페이지 인덱스 및 페이지-테이블 오리진의 덧셈의 결과에 따라 비트 위치 0을 벗어난 캐리는 발생할 수 없다. 이들 두 개의 컴포넌트들로부터 형성된 주소는 실제 또는 절대 주소이다. 이 페이지-테이블 엔트리의 페이지-무효 비트는 1로 세트된다. 이 과정 동안, 페이지-테이블 엔트리는, 페이지-무효 비트가 이미 1인지에 대한 것인지 또는 포맷 에러들에 대한 것인지 조사되지 않는다. 또한, 엔트리에 포함된 페이지-프레임 실제 주소는 어드레싱 예외에 대해 체크되지 않는다.
IPTE-범위 퍼실리티가 인스톨되고 R3 필드가 논제로일 때, 그 명령은 인터럽트가능하고, 처리는 다음과 같다.
1. 위에서 설명된 무효화 프로세스는, 범용 레지스터 R3의 비트들 56-63에 특정된 추가 엔트리들의 수가 무효화될 때까지 또는 인터렵션이 발생할 때까지, 그 페이지 테이블에서 각각의 계속되는 엔트리에 대해 반복된다.
2. 범용 레지스터 R2의 비트들 44-51에서 페이지-인덱스는 무효화된 페이지-테이블 엔트리들의 수만큼 증가되고, 범용 레지스터 R2의 비트 위치 44를 벗어난 캐리는 무시된다.
3. 범용 레지스터 R3의 비트들 56-63에서 추가-엔트리 카운트는 무효화된 페이지-테이블 엔트리들의 수만큼 증가된다.
그러므로, IPTE-범위 퍼실리티가 인스톨되고, R3 필드가 논제로이고, 그리고 인터렵션이 발생할 때(종료를 야기하는 것이 아닌), 범용 레지스터들 R2 및 R3는 업데이트되었고, 그래서 명령은, 재실행될 때, 인터럽션의 발생시에 재개되도록 한다.
IPTE-범위 퍼실리티가 인스톨되지 않을 때, 또는 R3 필드가 0일 때, 레지스터들 R2, 및 R3의 컨텐츠는 변화되지 않은 상태로 남는다.
무효화되는 각각의 페이지-테이블 엔트리에 대해, 전체 페이지-테이블 엔트리는 다른 CPU들에 의해 관찰될 때 스토리지로부터 동시적으로 페치되는 것처럼 보인다. 계속해서, 페이지-무효 비트를 포함하는 바이트는 저장된다. 각각의 페이지-테이블 엔트리에 대한 페치 접근(fetch access)은 키-컨트롤 보호를 받으며, 그 스토어 접근은 키-컨트롤 보호 및 낮은-주소 보호를 받는다.
직렬화 펑션은, 동작이 시작되기 전에 그리고 또한 그 동작이 완료된 후에, 수행된다. 모든 직렬화 동작들의 경우에 있어서와 같이, 이 직렬화는 단지 이 CPU에 대해 적용되며, 다른 CPU들은 반드시 직렬화되는 것은 아니다.
만약 어떠한 예외들도 인지되지 않으면, 이 CPU는 그것의 TLB로부터 선택된 엔트리들을 클리어링한다. 그런 다음, 만약 로컬-TLB-클리어링 퍼실리티가 인스톨되지 않으면, 또는 만약 그 퍼실리티가 인스톨되고 M4 필드에서 LC 비트가 0이면, 이 CPU는 그들의 TLB들로부터 선택된 엔트리들을 클리어링하기 위해 그 구성에서 모든 CPU들에 신호를 보낸다. 무효화된 각각의 페이지-테이블 엔트리에 대해, 각각의 영향을 받은 TLB에서, 다음과 같은 모든 것들을 사용하여 형성된 적어도 그들 엔트리들이 클리어링된다.
·범용 레지스터 R1에 의해 지정된 페이지-테이블 오리진
·범용 레지스터 R2에 의해 지정된 페이지 인덱스
·지정된 페이지-테이블 엔트리에 포함된 페이지-프레임 실제 주소
무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)의 실행은, 다음과 같은 것이 발생할 때까지 그것을 실행하는 CPU 상에서 완료되지 않는다.
1. 지정된 파라미터들에 대응하는 모든 페이지-테이블 엔트리들이 무효화되었다.
2. 지정된 파라미터들에 대응하는 모든 엔트리들은 이 CPU의 TLB로부터 클리어링되었다. 로컬-TLB-클리어링 퍼실리티가 인스톨되고 M4 필드에서 LC 비트가 1일 때, 무효화 페이지 테이블(INVALIDATE PAGE TABLE) 엔트리의 실행은 이 시점에 완료되고 다음의 단계는 수행되지 않는다.
3. 로컬-TLB-클리어링 퍼실리티가 인스톨되지 않을 때, 또는 그 퍼실리티가 인스톨되고 M4 필드에서 LC 비트가 0일 때, 그 구성에서 다른 모든 CUP들은, 그 지정된 파라미터들에 대응하는 TLB 엔트리들을 사용함으로써, 변화 및 레퍼런스 비트들의 업데이트를 포함하는, 어떤 스토리지 접근들을 완료했다.
특수 조건들( Special Conditions )
IPTE-범위 퍼실리티가 인스톨되고, R3 필드가 논제로이고, 범용 레지스터 R2 내 페이지 인덱스 플러스(plus) 범용 레지스터 R3 내 추가-엔트리 카운트가 255보다 더 클 때, 지정 예외가 인지된다.
동작은 모든 주소지정 및 보호 예외들에 관해 억제된다.
조건 코드( Condition Code ) : 그 코드는 변화되지 않은 상태로 남는다.
프로그램 예외들:
·주소지정(addressing)(페이지-테이블 엔트리)
. 특권이 있는 동작(Privileged operation)
·보호(페치 및 저장, 페이지-테이블 엔트리, 키-컨트롤드 보호, 및 낮은-주소 보호)
·스펙
프로그래밍 주:
1. 엔트리들의 선택적인 클리어링은, 그 모델에 따라, 다른 방법들로 구현될 수 있고, 일반적으로, 요구되는 최소 숫자보다 더 많은 엔트리들이 클리어링될 수 있다. 어떤 모델들은 스토리지에서 페이지-테이블 엔트리들로부터 획득된 페이지-프레임 실제 주소들을 포함하는 모든 엔트리들을 클리어링할 수 있다. 다른 모델들은 지정된 페이지 인덱스(또는 인덱스들)을 포함하는 모든 엔트리들을 클리어링할 수 있고, 어떤 구현 예들은 요구되는 최소 엔트리들의 수를 정확히 클리어링할 수 있다. 그러므로, 모든 모델들에 관해 프로그램이 동작하도록 하기 위해, 그 프로그램은 특정 모델 상에서 덜 선택적인 클리어링(less selective clearing)을 함으로써 획득된 어떤 특징들을 이용해서는 아니된다.
2. TLB 엔트리들의 클리어링은 페이지-테이블 엔트리들에서 페이지-프레임 실제 주소들을 사용할 수 있다. 그러므로, 만약 그 페이지-테이블 엔트리들이, 어태치된 상태에 있을 때, 현재 값들과 다른 페이지-프레임 실제 주소들을 포함했다면, 이전의 값들을 포함하는 엔트리들의 사본들은 TLB에 남아 있을 수 있다.
3. 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)는, 만약 또 다른 CPU 또는 채널 프로그램이 또한 그 위치를 업데이트하고 있을 가능성도 존재한다면, 메인 스토리지에서 공유된 위치를 업데이트하기 위해 안전하게 사용될 수 없다.
4. IPTE-범위 퍼실리티가 인스톨되고 R3 필드가 논제로일 때, 다음이 적용된다.
a. 무효화될 모든 페이지-테이블 엔트리들은 동일한 페이지 테이블에 존재해야 한다. 만약 범용 레지스터 R1 내 페이지 인덱스 플러스(plus) 범용 레지스터 R3내 추가-엔트리 카운트가 최대 페이지 인덱스 255보다 더 크다면, 지정 예외가 인정된다.
b. 무효화 페이지 테이블 엔트리(INBALIDATE PAGE TABLE ENTRY)에 의해 무효화되는 페이지-테이블 엔트리들의 수는 하나의 실행에서 또 다른 실행까지 변할 수 있다.
c. 명령은, 그 프로그램이 그 명령의 인터럽트되지 않은 실행에 의존해야만 하는 상황들에 대해서는 사용될 수 없다. 이와 유사하게, 프로그램은 페이지-테이블 엔트리, 그 명령을 포함하는 4k-바이트 블록을 지정하는, 또는 IPTE를 실행하는 실행-유형 명령의, 페이지-프레임-실제 주소를, 무효화하기 위해 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)를 노멀하게 사용해서는 아니된다.
5. 로컬-TLB-클리어링 퍼실리티가 인스톨될 때, 로컬-클리어링 컨트롤은, 클리어링되고 있는 TLB 엔트리들을 형성하기 위해 사용되는 ASCE가, IPTE 명령이 실행되는 CPU에 대해서만 어태치되었을 때(예컨대, 만약 그 프로그램이 단일프로세서 상에서 실행중이라면), 1로 지정되어야 한다. 그렇지 않으면, 딜레이된-접근-예외 머신 체크의 제공(presentation)을 포함하여, 예측 불가능한 결과들이 발생할 수 있다.
어떤 모델들에 관해, 위에서 열거된 케이스들에 대해 단지 로컬 TLB의 클리어링을 지정하는 무효화 페이지 테이블 엔트리(INVALIDATE PAGE TABLE ENTRY)의 사용은 결국 상당한 퍼포먼스 향상을 초래할 수 있다.
6. 어셈블러 신택스에서 브래킷들 [] 내에 포함되어 있는 필드들로 나타낸 바와 같이, 명령의 R3 및 M4 필드들은 선택적인 것으로 고려된다. 필드 중 어느 것이 지정되지 않을 때, 어셈블러들은 그 명령의 대응하는 필드에서 0들을 배치한다. M4 필드가 코딩되지만 R3 필드가 요구되지 않을 때, 제3 오퍼랜드의 배치를 지정하기 위해 0이 코딩되어야 한다.
하나 또는 그 이상의 측면들을 편입시키는 또는 사용하는 컴퓨팅 환경(100)의 일 실시예는 도 1을 참조하여 설명된다. 컴퓨팅 환경(100)은, 예를 들어, 뉴욕 아몽크의 인터내셔널 비지네스 머신즈 코퍼레이션에 의해 제공되는, z/Architecture에 기초한다. z/Architecture는 IBM® 발행물에서 "z/Architecture 동작 원리" 라는 제목으로 IBM 발행물 번호 SA22-7832-08(2010년 08월)에 설명되어 있다(IBM®은 미국, 뉴욕, 아몽크의 인터내셔널 비지네스 머신즈 코퍼레이션의 등록 상표이다. 여기에 사용되는 다른 명칭들은, 인터내셔널 비지네스 머신즈 코퍼레이션 또는 다른 회사들의 등록 상표들, 상표들 또는 제품 명칭들일 수 있다). 일 예에서, z/Architecture에 기초한 컴퓨팅 환경은, 뉴욕, 아몽크의 인터내셔널 비지네스 머신즈 코퍼레이션에 의해 제공되는, eServer zSeries를 포함한다.
일 예로서, 컴퓨팅 환경(100)은 컨트롤러(120)에 결합된 중앙처리장치 콤플렉서(central processor complex)(CPC)(102)를 포함한다. 중앙처리장치 콤플렉스(102)는, 예를 들어, 하나 또는 그 이상의 파티션들(104)(예컨대, 논리적 파티션들(LP1-LPn)), 하나 또는 그 이상의 중앙처리장치들(106)(예컨대, CP1-CPm), 및 하이퍼바이저(108)(예컨대, 논리적 파티션 매니저)를 포함하며, 이들 각각은 이하에서 기술된다.
각각의 논리적 파티션(104)은 독립된 시스템으로서 기능할 수 있다. 즉, 각각의 논리적 파티션은, 만약 희망한다면, 처음에 운영체제가 로드되어, 독립적으로 리셋될 수 있으며, 다른 프로그램들과 동작할 수 있다. 운영체제 또는 논리적 파티션에서 실행 중인 응용프로그램은 전체 그리고 완전한 시스템에 대한 접근성을 갖는 것처럼 보이지만, 실제로, 단지 그것의 일부분이 이용가능하다. 하드웨어와 라이센스된 내부 코드(흔히 마이크로코드로 일컬어짐)의 조합은 하나의 논리적 파티션에서의 프로그램이 다른 논리적 파티션에서의 프로그램과 간섭하는 것을 방지한다. 이는 시간에 따라 나누는 방식(time sliced manner)으로, 몇 개의 다른 논리적 파티션들이 단일 또는 다수의 물리적 프로세서들 상에서 동작하도록 허용한다. 이러한 특정 예에서, 각각의 논리적 파티션은 상주 운영 체제(resident operation system)(110)을 갖는데, 이는 하나 또는 그 이상의 논리적 파티션들에 대해 다를 수 있다. 일 실시예에서, 운영체제(110)는, 뉴욕, 아몽크의 인터내셔널 비지네스 머신즈 코퍼레이션에 의해 제공되는 z/OS 운영체제이다.
중앙처리장치들(106)은 논리적 파티션들에 할당되는 물리적 프로세서 리소스들이다. 예를 들어, 논리적 파티션(104)은 하나 또는 그 이상의 논리적 프로세서들을 포함하는데, 이들 각각은 그 파티션에 할당된 물리적 프로세서 리소스(106) 모두 또는 그것의 할당 몫(share)을 나타낸다. 특정 파티션(104)의 논리적 프로세서들은 그 파티션에 전용되어, 기본적인 프로세서 리소스가 그 파티션에 대해 보류(reserve)되도록 할 수 있고, 또는 또 다른 파티션과 공유되어, 기본적인 프로세서 리소스가 또 다른 파티션에 대해 잠재적으로 이용가능하도록 할 수 있다.
논리적 파티션들(104)은 프로세서들(106) 상에서 실행중인 마이크로코드에 의해 구현되는 하이퍼바이저(108)에 의해 관리된다. 논리적 파티션들(104) 및 하이퍼바이저(108) 각각은 중앙 프로세서들과 연관된 중앙 스토리지의 각각의 부분들에 상주하는 하나 또는 그 이상의 프로그램들을 포함한다. 하이퍼바이저(108)의 일 예는, 뉴욕, 아몽크의 인터내셔널 비지네스 머신즈 코퍼레이션에 의해 제공되는, 프로세서 리소스/시스템즈 매니저(PR/SM)이다.
중앙처리장치 콤플렉스에 결합되는 컨트롤러(120)는, 요청들을 발행(issue)하는 서로 다른 프로세서들 사이에서 중재하는 책임이 있는 중앙식 로직(centralized logic)을 포함한다. 예를 들어, 컨트롤러(120)가 요청을 수신할 때, 그것은 그 요청자가 그 요청에 대한 마스터 프로세서(master processor)라는 것 그리고 다른 프로세서들은 슬레이브 프로세서들(slave processors)이라는 것을 결정하고, 그것은 메시지들을 브로드캐스트(broadcast)하고, 또 다르게는, 요청들을 처리한다. 컨트롤러의 일 예는 2000년 9월 12월 Webb 등의 "개별 프로세서의 이른 릴리스로의 시스템 직렬화(System Serialization With Early Release Of Individual Processor)" 이라는 제목의 미국 특허 제6,1999,219호에 설명되어 있다.
도 2는 복수의 중앙처리장치들(CPU들)(201)에 결합된 컨트롤러(200)의 일 예를 도시한다. 이 예에서, 두 개의 중앙처리장치들이 도시된다. 그러나, 두 개 이상의 처리장치들이 컨트롤러(200)에 결합될 수 있다는 것이 이해되어야 할 것이다.
컨트롤러(200)는, 예를 들어, 시스템 직렬화 컨트롤들(202)을 포함하는 여러 가지 컨트롤들(controls)을 포함한다. 시스템 직렬화 컨트롤들은, 단지 하나의 이러한 명령이 그 컴퓨팅 환경에서 한 번에 진행되고 있다는 점에서, 예컨대 무효화 명령들과 같은 그러한, 직렬화될 동작들이 직렬화되는 것을 보장하는데 사용된다. 그것은 또한, 그 동작을 위해 이벤트들의 시퀀스를 모니터한다.
컨트롤러(200)는 여러 가지 인터페이스들을 통해 각각의 중앙처리장치들에 결합된다. 예를 들어, 인터페이스(204)는 그 컨트롤러로 "컨트롤" 커맨드들 - 취해질 액션을 특정함 - 을 보내기 위해, 그리고 "센스" 커맨드들 - 컨트롤러로부터 정보를 리턴함 - 을 보내기 위해, 중앙처리장치에서 라이센스된 내부 코드에 의해 사용된다. 또 다른 인터페이스는 응답 버스(206)이며, 이는 "센스" 커맨드들을 위해 컨트롤러로부터 정보를 리턴하는데 사용된다. 응답 버스(response bus)는 또한 "컨트롤" 커맨드들을 위한 커맨드 상태(command status)를 통신하는데에도 사용되며, 시스템 직렬화 컨트롤들을 포함하는, 컨트롤러 내 복수의 소스들로부터 세트될 수 있다. 중앙처리장치는 컨트롤러(200)에서 시스템 직렬화 컨트롤들의 상태를 감지(sense)하기 위해 이 인터페이스를 사용할 수 있다.
추가 인터페이스는, 각각의 CPU로 명령들을 보내기 위해 컨트롤러에 의해 사용되는 인터페이스(208)이다. 이는 또한 시스템 직렬화 컨트롤들(202)를 포함하는, 컨트롤러 내 복수의 소스들로부터 컨트롤 될 수 있다. 또한 추가 인터페이스는, 중앙처리장치(201)의 캐시 컨트롤들(212)에 신호들을 제공하는 인터페이스(210)이다. 캐시 컨트롤들(212)은, 신호들에 응답하여, 명령들을 처리한다. 일 예에서, 캐시 컨트롤들(212)은, 이하에서 더 상세히 기술되는 바와 같이, 예컨대 변환 색인 버퍼들(TLB들)(213)과 같은 그러한, 하나 또는 그 이상의 버퍼들에 영향을 미치는 명령들을 처리한다.
캐시 컨트롤들(212)에 추가로, 중앙처리장치(201)는, 예를 들어, 인터럽트 컨트롤들(220) 및 실행 컨트롤들(222)을 포함하여, 여러 가지 다른 컨트롤들을 포함한다. 특정 이벤트들에 응답하여, 인터럽트 컨트롤들(220)은 CPU에 내부 인터럽션이 펜딩되도록 하며, 이는 결국, 그 다음 인터럽트가능한 시점에서, 실행 컨트롤들(222)이 프로그램 명령 처리를 중단(suspend)시키도록 한다. 인터럽션에 응답하여, 실행 컨트롤들(222)은, 캐시 컨트롤들(212)이 펜딩 명령들을 처리할 수 있도록 하기 위해 브로드캐스트 동작 허용 래치(broadcast operation allowed latch)(224)를 세트하도록, 라이센스된 내부 코드 루틴(Licensed Internal Code routine)을 불러온다(invoke).
중앙처리장치(201)는 또한, 중앙처리장치가 정지되는지 그렇지 않은지를 나타내는 중앙처리장치(CPU) 정지 래치(quiesced latch)(226)를 포함한다. CPU, 처리장치 및 프로세서라는 용어는 본 명세서에서 서로 바꿔가며 사용될 수 있다.
위에서 기술된 컴퓨팅 환경은 단지 일 예일 뿐이다. 여러 가지의 변경 예들이 가능하다. 예를 들어, 하나 또는 그 이상의 파티션들은 다른 아키텍쳐 모드들에서 실행중일 수 있다. 나아가, 또 다른 예로서, 그 환경은, z/Architecture에 기초할 필요는 없고, 대신에, 인텔, 썬 마이크로시스템즈 뿐만 아니라 다른 회사들에 의해 제공된 다른 아키텍쳐들에 기초할 수 있다. 더욱이, 환경은 에뮬레이터(예컨대, 소프트웨어 또는 다른 에뮬레이션 메커니즘들)을 포함할 수 있는데, 여기에서 특정 아키텍쳐 또는 그것의 서브셋이 에뮬레이션된다. 이러한 환경에서, 그 에뮬레이터의 하나 또는 그 이상의 에뮬레이션 기능들은, 비록 그 에뮬레이터를 실행하는 컴퓨터가 에뮬레이션되고 있는 그 기능들과는 다른 아키텍쳐를 가질 수 있더라도, 하나 또는 그 이상의 측면들을 구현할 수 있다. 일 예로서, 에뮬레이션 모드에서, 에뮬레이션되고 있는 특정 명령 또는 동작이 디코딩되며, 개별 명령 또는 동작을 구현하기 위해 적절한 에뮬레이션 기능이 구축된다.
에뮬레이션 환경에 관한 추가적인 상세내용들은 도 3을 참조하여 기술된다. 일 예로서, 호스트 컴퓨터(300)는 또 다른 아키텍쳐, 컴퓨터 및/또는 또 다른 컴퓨터의 처리 기능들을 에뮬레이션할 수 있다. 예를 들어, 호스트 컴퓨터(300)는 인텔 아키텍쳐; RISC 아키텍쳐 - 예컨대, PowerPC - ; 썬 마이크로시스템즈에 의해 제공되는, SPARC 아키텍쳐; 또는 또 다른 아키텍쳐에 기초하고, 그리고 IBM®의 z/Architecture 또는 IBM® 또는 또 다른 엔티티의 또 다른 아키텍쳐를 에뮬레이션할 수 있다.
호스트 컴퓨터(300)는, 예를 들어, 명령들 및 데이터를 저장하는 메모리(302); 메모리(302)로부터 명령들을 페치하고, 선택적으로는, 그 페치된 명령들을 위한 로컬 버퍼링을 제공하는, 명령 페치 유닛(304); 명령 페치 유닛(304)으로부터 명령들을 수신하고, 페치된 명령들의 유형을 결정하는 명령 디코드 유닛(306); 및 그 명령들을 실행하는 명령 실행 유닛(308)을 포함한다. 실행은, 디코드 유닛에 의해 결정되는 바와 같이, 메모리(302)로부터 레지스터 내로 데이터를 로드하는 것; 레지스터로부터 메모리로 다시 데이터를 저장하는 것; 또는 산술 또는 논리적 동작의 어떤 유형을 수행하는 것을 포함할 수 있다.
일 예에서, 위에서 기술되는 각각의 유닛은 소프트웨어로 구현된다. 예를 들어, 그 유닛들에 의해 수행되고 있는 동작들은, 에뮬레이터 소프트웨어 내의 하나 또는 그 이상의 서브루틴들로 구현된다. 또 다른 예에서, 동작들의 하나 또는 그 이상은 펌웨어, 하드웨어, 소프트웨어 또는 이것들의 몇몇 조합으로 구현된다.
나아가, 비록 도 3이 에뮬레이션을 참조하여 설명되지만, 도 3의 환경은 에뮬레이션 환경일 필요는 없다. 또 다른 예에서, 명령들은 네이티브 환경에서 실행되며, 동작들은 하드웨어, 펌웨어, 소프트웨어, 또는 이것들의 조합으로 구현된다.
컴퓨팅 환경은, 메인 스토리지 뿐만 아니라, 가상 스토리지를 포함한다. 가상 스토리지는 그 구성에서 이용가능한 메인 스토리지의 크기를 더 넘어서게 할 수 있고, 보조 스토리지에 노멀하게 유지된다. 가상 스토리지는 페이지들로 일컬어지는 주소들의 블록들로 구성되는 것으로 고려된다. 가상 스토리지의 페이지들에 대한 가장 최근의 참조는 물리적 메인 스토리지의 블록들을 점유하도록 배정된다. 사용자가 메인 스토리지에 나타나지 않는 가상 스토리지의 페이지들을 참조하면, 메인 스토리지에서 사용될 가능성이 더 낮은 페이지들을 대체하기 위해 가상 페이지들을 가져온다. 스토리지에서 페이지들의 스와핑(swapping)은 사용자가 모르게 운영체제에 의해 수행될 수 있다.
가상 스토리지에서 위치들을 지정하기 위해 사용되는 주소들은 가상 주소들로 일컬어진다. 예를 들어, 최대 4k 바이트까지의 폭을 갖는(spanning) 연속적인 가상 주소들의 블록은, 페이지로서 일컬어진다. 이와 유사하게, 예를 들어, 최대 1M 바이트까지의 폭을 갖는 연속적인 가상 페이지들의 블록은 세그먼트로 일컬어지며, 예를 들어, 최대 2G 바이트까지의 폭을 갖는 연속적인 가상 세그먼트들의 블록은 영역(region)으로 일컬어진다. 나아가, 주소 공간 컨트롤 엘리먼트(ASCE)에 의해 지정된 가상 스토리지와 연관된 가상 주소들의 시퀀스는 주소 공간(address space)으로 일컬어진다. 주소 공간들은 사용자들 사이의 아이솔레이션의 정도(degrees)를 제공하는데 사용될 수 있다. 주소 공간은 하나 또는 그 이상의 영역들, 하나 또는 그 이상의 세그먼트들, 하나 또는 그 이상의 페이지들, 또는 이것들의 어떤 조합을 포함할 수 있다.
스토리지의 유닛들과 연관된 처리에 사용될 데이터 구조들은, 서로 다른 유형의 스토리지의 유닛들(예컨대, 영역들, 세그먼트들, 페이지들)과 연관된다. 예를 들어, 영역 테이블들은 영역들과 연관되고, 세그먼트 테이블들은 세그먼트들과 연관되고, 페이지 테이블들은 테이블들과 연관된다. 이들 테이블들은, 예를 들어, 가상 주소를, 메인 스토리지에 접근하는데 사용되는 실제 주소로 변환(예컨대, 동적 주소 변환)하는 동안 사용된다. 여기서 변환 테이블들로 일컬어지는, 변환에 사용될 테이블들은 주소 공간 컨트롤 엘리먼트(ASCE)에 의해 지정된다. 메인 스토리지에 현재 배정되지 않은 가상 스토리지의 유닛은 무효(invalid)로 일컬어진다. 가상 스토리지의 유닛의 무효 상태는 그 유닛과 연관된 데이터 구조에서 무효 인디케이터에 의해 표시된다.
일 실시예에서, 동적 주소 변환 메커니즘이 구현되어, DAT 프로세스를 통한 변환 테이블들(예컨대, 영역 테이블들, 세그먼트 테이블들 및/또는 페이지 테이블들)로부터 비롯된 정보가, 주소 변환의 퍼포먼스를 향상시키기 위해, 변환 색인 버퍼들로 일컬어지는, 프로세서들 내에 위치한 하나 또는 그 이상의 버퍼들에서 유지된다. 즉, 변환 동안, 버퍼들은 요구되는 정보에 대해 체크되고, 그런 다음, 만약 그 정보가 버퍼들 내에 있지 않으면, 변환 테이블들 중 하나 또는 그 이상이 접근된다.
에뮬레이션 모드에서, 에뮬레이션되고 있는 특정 명령이 디코딩되고, C 서브루틴 또는 드라이버에서와 같이, 개별 명령을 구현하기 위해 서브루틴이 구축되고, 또는 몇몇 다른 기술은 특정 하드웨어에게 드라이버를 제공하기 위해 사용되는데, 이는 당해 기술 분야에서 통상의 기술을 가진 자들이 일 실시예에 관한 설명을 이해한 후에 알 수 있는 것이다. Beausoleil 등의 "Multiprocessor for Hardware Emulation" 이라는 제목의 U.S. 특허번호 5,551,013; Scalzi 등의 "Preprocessing of Stored Traget Routines for Emulating Incompatible Instructions on a Target Processor," 라는 제목의 U.S. 특허번호 6,009,261; Davidian 등의 "Decoding Guest Instruction to Directly Access Emulation Routines That Emulate the Guest Instructions," 라는 제목의 U.S. 특허번호, 5,574,873; Gorishek 등의 "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System," 이라는 제목의 U.S. 특허번호 6,308,255; Lethin 등의 "Dynamic Optimizing Object Code Translator For Architecture Emulation and Dynamic Optimizing Object Code Translation Method," 라는 제목의 U.S. 특허번호 6,463,582; Eric Traut의 "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions," 라는 제목의 U.S. 특허번호 5,790,825; 및 많은 다른 것들을 포함하는, 여러 가지 소프트웨어 및 하드웨어 에뮬레이션 특허들은, 당해 기술 분야에서 숙련된 자들에게 이용가능한 타겟 머신을 위하여 다른 머신에 대해 아키텍트된 명령 포맷의 에뮬레이션을 달성하는 여러 가지 알려진 방법들뿐만 아니라 위에서 참조된 것들에 의해 사용된 그러한 상업적 소프트웨어 기술들을 설명한다.
비교 및 대체 DAT 테이블 엔트리( COMPARE AND REPLACE DAT TABLE ENTRY )( CRDTE )
유효한 DAT 테이블 엔트리를 새로운 엔트리로 대체하고, 구성에서 모든 CPU들 상에 (적어도) 단일 엔트리의 어떤 사본들을 TLB로부터 퍼지(purge)할 수 있는 CPU 명령(COMPARE AND REPLACE DAT TABLE ENTRY)이 기술된다. 이 명령은 어떤 액티브 태스크들이 중단(suspend)될 것을 요구하지 않으며, 그래서 그것은 필요 이상의 엔트리들을 퍼지(purge)할 수 없다.
CRDTE 명령이 실행될 때, 엔트리들의 선택적인 클리어링은, 모델에 따라 다른 방법으로 구현될 수 있으며, 일반적으로 요구되는 최소 수보다 더 많은 엔트리들이 클리어링될 수 있다. 몇몇 모델들은 스토리지에서 페이지-테이블 엔트리들로부터 획득된 페이지-프레임 실제 주소들을 포함하는 모든 엔트리들을 클리어링할 수 있다.
만약 컨트롤 프로그램이 DAT 테이블에서의 유효 엔트리(즉, 다른 CPU들에 의해 잠재적으로 사용되는 테이블 엔트리)를 대체할 필요가 있다면, 그것은 다음의 동작들 중 하나를 수행할 수 있다.
·구성에서 모든 CPU들에 관해 이 DAT-테이블 엔트리를 사용할 수 있는 모든 태스크들의 실행을 중단하고, 모든 CPU들 상에서 엔트리를 무효화 및 퍼지하고(예를 들어, IPTE를 사용하여), 무효화된 엔트리를 새로운 엔트리로 대체하고, 그 중단된 태스크들을 재디스패치(redispatch)함.
·DAT 테이블 엔트리를 대체하고 구성에서 모든 CPU들 상에서 전체 TLB를 퍼지(purge)함(예컨대, CSPG를 사용하여).
제1 옵션은, 그것이 언디스패치하는 (un-dispatching) 그리고 재디스패치하는(re-dispatching) 태스크들을 요구한다는 점에서, 복합적(complex)이다. 제2 옵션은, 비록 단지 하나의 엔트리가 변화되더라도, 그것이 전체 TLB의 퍼징(purging)을 필요로 한다는 점에서, 차선(sub-optimal)이다.
일 실시예에서, 컴퓨터 프로세서는 처리를 위한 명령을 획득한다. 오피코드(opcode)에 기초하여, 머신은 비교 및 대체 DAT 테이블 엔트리(Compare and Replace DAT Table Entry)(CRDTE) 명령을 처리한다. CRDTE 명령은 다음의 포맷을 갖는다.
Figure 112014094547266-pct00001
R1 및 R2 필드들 각각은 범용 레지스터들의 짝-홀 쌍을 지정하며, 짝수 레지스터를 지정해야 하고; 그렇지 않으면, 지정 예외가 인정된다. 범용 레지스터 R1(그 쌍의 짝수 레지스터)는 제1 오퍼랜드를 포함한다. 제1 오퍼랜드는 비교 값(compare value)으로 일컬어질 수 있다. 범용 레지스터 R1+1(그 쌍의 홀수 레지스터)는 대체 값(replacement value)으로 일컬어질 수 있다.
명령을 수행함에 있어서, 제1 및 제2 오퍼랜드가 비교된다. 제1 오퍼랜드는 범용 레지스터 R1에 위치한다. 제2 오퍼랜드는 범용 레지스터들 R2 및 R2+1에 의해 지정된다. R2 및 R2+1은 지정된-테이블 유형(DTT)과 같은 주소지정 정보(addressing information), 및 제2 오퍼랜드의 위치를 찾기(locate) 위한 테이블 내의 유효한 인덱스를 포함한다.
일단 제1 및 제2 오퍼랜드들이 획득될 때, 그것들은 비교되며, 만약 그것들이 동일하다면, 범용 레지스터 R1+1의 컨텐츠들은 제2-오퍼랜드 위치에 저장되고, 구성에서 특정된 CPU 또는 CPU들에서, (1) 스토리지에서 대체된 엔트리의 사용을 통해 형성된 지정된 유형의 모든 TLB 테이블 엔트리들, 그리고 (2) 클리어링된 더 높은 레벨의 TLB 테이블 엔트리들의 사용을 통해 형성된 모든 더 낮은 레벨의 TLB 테이블 엔트리들이 클리어링된다. 클리어링된 TLB 엔트리들은 선택적으로는, 특정된 주소 공간에서 주소들을 변환하기 위해 형성된 엔트리들로 한정될 수 있다. 그 결과의 조건 코드(condition code)는 0으로 세트된다.
만약 제1 및 제2 오퍼랜드들이 동일하지 않다면, 제2 오퍼랜드는 제1-오퍼랜드 위치에 로드되고, 그 결과의 조건 코드는 1로 세트된다.
M4 필드는, 구성에서 모든 CPU들의 TLB들을 클리어링하는지 또는 단지 명령을 실행하는 CPU에서의 TLB 만을 클리어링하는지를 결정할 수 있다.
도 4는 일 실시예의 챠트를 보여준다.
일 실시예에서, 컴퓨터 프로세서는 처리를 위한 CRDTE 명령(0401)을 획득한다. 오피코드에 기초하여, 머신은 비교 및 대체 DAT 테이블 엔트리(Compare and Replace DAT Table Entry) 명령을 처리한다.
R1 및 R2 필드들 각각은 범용 레지스터(0405)의 짝-홀 쌍을 지정하며, 짝수 레지스터를 지정해야 하고; 그렇지 않으면, 지정 예외가 인정된다. 범용 레지스터 R1(상기 쌍의 짝수 레지스터)(0410)은 비트 위치들 0-63에서 제1 오퍼랜드를 포함한다. 제1 오퍼랜드는 비교 값으로 일컬어질 수 있다. 범용 레지스터 R1+1의 비트 위치들 0-63(상기 쌍의 홀수 레지스터)(0411)은 대체 값으로 일컬어질 수 있다.
명령을 실행함에 있어서, 제1 및 제2 오퍼랜드가 비교된다. 상기 제1 오퍼랜드는 범용 레지스터 R1(0410)에 위치한다. 상기 제2 오퍼랜드는 범용 레지스터들 R2(0420) 및 R2+1(0421)에 의해 지정된 스토리지에서 더블워드(doubleword)이다. 범용 레지스터 R2의 비트들 59-61은 지정된-테이블 유형(DTT)이며, 스토리지(0440)에서 테이블(0430)의 오리진을 형성하는 범용 레지스터 R2에서 비트들을 지정하며; DTT는 또한 제2 오퍼랜드(0435)의 위치를 찾기 위해 테이블에 대한 유효한 인덱스로서 사용되는 범용 레지스터 R2+1에서의 비트들을 지정한다.
일단 제1 및 제2 오퍼랜드들이 비교되는 경우(0436), 만약 그것들이 동일하다면, 범용 레지스터 R1+1의 컨텐츠는 제2-오퍼랜드 로케이션(0445)에 저장되며, 그리고 0450에 보여지는 바와 같이, 구성에서 지정된 CPU 또는 CPU들에서, (1) 스토리지에서 대체된 엔트리의 사용을 통해 형성된 지정된 유형의 모든 TLB 테이블 엔트리들, 및 (2) 클리어링된 더 높은-레벨의 TLB 테이블 엔트리들의 사용을 통해 형성된 모든 더 낮은-레벨의 TLB 테이블 엔트리들이 클리어링된다. 클리어링된 TLB 엔트리들은 선택적으로, 지정된 주소 공간에서 주소들을 변환하기 위해 형성된 엔트리들로 한정될 수 있다. 그 결과의 조건 코드는 0455에 보여지는 바와 같이 0으로 세트된다.
만약 상기 제1 및 제2 오퍼랜드들이 동일하지 않다면, 상기 제2 오퍼랜드는 제1-오퍼랜드 위치(0460)에 로드된다. 그 결과의 조건 코드는 0465에 도시된 바와 같이 1로 세트된다.
명령 0401은, 구성 1570에서 모든 CPU들의 TLB들을 선택적으로 클리어링할지 또는 명령 1575를 실행하는 CPU에서 단지 TLB만을 클리어링할지를 결정하기 위해, M4 필드(0402)를 이용할 수 있다. M4 필드는 로컬 클리어링(LC) 컨트롤을 포함한다. 만약 M4 필드에서 LC 컨트롤이 0이면, 구성에서 모든 CPU들에서의 TLB들이 영향을 받을 것이다. 만약 M4 필드에서 LC 컨트롤 필드가 1이면, 비교 및 대체 DAT 테이블 엔트리 명령을 실행하는 CPU와 연관된 TLB만이 영향을 받을 수 있다. 구성에서 다른 모든 CPU들에서 TLB들은 영향을 받지 않는다.
주: "지정된 CPU 또는 CPU들" 이라는 용어는 이 명령에 의해 영향을 받는 TLB들의 범위에 대해 다음과 같은 의미를 갖는다.
M4 필드에서 로컬-클리어링(LC) 컨트롤이 0일 때, "지정된 CPU 또는 CPU들" 이라는 용어는 구성에서 CPU들 모두를 의미한다.
M4 필드에서 LC 컨트롤이 1일 때, "지정된 CPU 또는 CPU들" 이라는 용어는 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY) 명령을 실행하는 CPU(로컬 CPU) 만을 의미한다. 구성에서 모든 다른 CPU들에서 TLB들은 영향을 받지 않을 수 있다.
·제1 및 제2 오퍼랜드들이 비교된다. 만약 그것들이 동일하다면, 범용 레지스터 R1+1의 컨텐츠는 제2-오퍼랜드 위치에 저장되고, 구성에서 지정된 CPU 또는 CPU들에서, (1) 스토리지에서 대체된 엔트리의 사용을 통해 형성된 지정된 유형의 모든 TLB 엔트리들, 및 (2) 클리어링된 더 높은-레벨의 TLB 테이블 엔트리들의 사용을 통해 형성된 모든 더 낮은-레벨의 TLB 테이블 엔트리들이 클리어링된다. 클리어링된 TLB 엔트리들은 선택적으로, 지정된 주소 공간에서 주소들을 변환하기 위해 형성된 엔트리들로 제한될 수 있다.
·만약 제1 및 제2 오퍼랜드들이 동일하지 않다면, 제2 오퍼랜드는 제1-오퍼랜드 위치에 로드된다. 그러나, 몇몇 모델들 상에서, 제2 오퍼랜드는 제2 오퍼랜드 위치에서 페치될 수 있고, 후속적으로 변경되지 않은 상태로 제2 오퍼랜드 위치에 다시 저장될 수 있다. 이 업데이트는 다른 CPU들에 의해 관찰되는 바와 같이 블록-동시 인터락된-업데이트 레퍼런스(block-concurrent interlocked-update reference)처럼 보인다. 비교의 결과는 조건 코드에 의해 표시된다.
R1 및 R2 필드들 각각은 범용 레지스터들의 짝-홀 쌍을 지정하고 짝수 레지스터를 지정해야 하며, 그렇지 않으면, 지정 예외가 인정된다. 이제 도 5를 참조하면, 제1 오퍼랜드는 비교 값(0501)으로 일컬어지고 범용 레지스터 R1의 비트 위치들 0-63에 포함된다. 범용 레지스터 R1+1의 비트 위치들 0-63은 대체 값(0510)으로 일컬어진다.
제2 오퍼랜드는 범용 레지스터 R2 및 R2+1(0540)에 의해 지정된 스토리지에서 더블워드이다. 범용 레지스터 R2의 비트들 59-61은 지정된-테이블 유형(DTT)이며, 스토리지에서 테이블의 오리진을 형성하는 범용 레지스터 R2에서의 비트들을 지정하며; DTT는 또한 다음과 같이, 제2 오퍼랜드의 위치를 정하기(locate) 위해 테이블에 대한 유효한 인덱스로서 사용되는 범용 레지스터 R2+1(0540)에서의 비트들을 지정한다.
DTT(레지스터 R2의 비트들 59-61) 테이블 유형 레지스터 R2에서 테이블 오리진 비트들 레지스터 R2+1에서 유효한 인덱스 비트들
000 페이지 0-52 44-51
001-011 -- -- --
100 세그먼트 0-51 33-43
101 영역 제3 0-51 22-32
110 영역 제2 0-51 11-21
111 영역 제1 0-51 0-10
DTT가 0520에 보여지는 바와 같이 바이너리 000일 때, 범용 레지스터 R2의 비트 위치들 0-52의 컨텐츠는 오른쪽에 덧붙여진(appended) 11 개의 0들(0521)을 가지며, 이는 테이블 오리진을 형성하고, 레지스터의 0522에서 비트들 53-58, 0523에서 62, 및 0524에서 63은 무시된다. DTT가 0530에 도시된 바와 같이 바이너리 100-111일 때, 범용 레지스터 R2의 비트 위치들 0-51의 컨텐츠는, 오른쪽에 덧붙여진 12 개의 0들(0531)을 가지며, 이는 테이블 오리진을 형성하고, 레지스터의 0532에서 52-58, 0533에서 62, 및 0534에서 63은 무시된다. 바이너리 001, 010, 011의 DTT 값들은 무효이며, 만약 DTT가 무효이면 지정 예외가 인정된다.
범용 레지스터 R2+1(0540)의 비트들 0-51은 가상 주소의 영역 인덱스, 세그먼트 인덱스, 페이지 인덱스의 포맷을 갖는다. DTT에 의해 지정된 테이블의 유형에서 엔트리를 선택하기 위해 DAT에 의해 노멀하게 사용되는 0541에서의 비트들 0-51의 일부는 유효한 인덱스(effective index)로 일컬어진다. 유효한 인덱스의 오른쪽의 범용 레지스터 R2+1의 비트들 0-51의 일부는 무시된다. 범용 레지스터 R2+1(0542)의 비트 위치들 52-63은 보류(reserve)되고 0들을 포함해야 하며, 그렇지 않으면 지정 예외가 인정된다.
만약 R3(0550)가 논제로이면, 범용 레지스터 R3의 컨텐츠는, 사용된, 단지 테이블 오리진, 0551에서 비트들 0-51, 및 지정-유형 컨트롤(DT), 0553에서 비트들 60 및 61를 갖는 주소-공간-컨트롤 엘리먼트의 포맷을 갖는다. 이것들은 클리어링될 TLB 엔트리들을 선택하는데 사용된다. 범용 레지스터 R3의, 0552에서 비트들 52-59, 0554에서 62, 및 0555에서 63은 무시된다. 만약 R3가 0이면, 범용 레지스터 0의 전체 컨텐츠는 무시되며, TLB 엔트리들은 그것들을 형성하는데 사용되는 ASCE에 관계없이 클리어링된다.
M4 필드는 도 6에 도시된다.
M4 필드의 비트들은 다음과 같이 정의된다.
보류(reserved) : 0601에 도시된 바와 같이 비트들 0-2은 보류(reserve)된다. M4 필드의 보류된 비트 위치들은 무시되지만, 0들을 포함해야 하며, 그렇지 않으면, 프로그램은 장차 호환가능하게 동작할 수 없다.
로컬-클리어링 컨트롤(LC):
LC 비트, 즉 M4 필드(0602)의 비트 3은, 로컬 CPU에서 단지 TLB만이 클리어링되는지, 또는 구성의 모든 CPU들에서 TLB들이 클리어링되는지를 컨트롤한다.
제1 및 제2 오퍼랜드들이 동일할 때, 범용 레지스터 R1+1의 컨텐츠는 제2-오퍼랜드 위치에 저장되고, 구성에서 지정된 CPU들에서 변환-색인 버퍼들(TLB들)에서, (1) 스토리지에서 제2 오퍼랜드의 오리지널 컨텐츠의 사용을 통해 형성된 지정된 유형의 모든 TLB 테이블 엔트리들(즉, 대체 값으로 대체되기 전 제2 오퍼랜드의 컨텐츠), 및 (2) 클리어링된 더 높은-레벨의 TLB 테이블 엔트리들의 사용을 통해 형성된 모든 더 낮은-레벨의 TLB 테이블 엔트리들이 클리어링된다. 클리어링된 TLB 엔트리들은 선택적으로, 지정된 주소 공간에서 주소들을 변환하도록 형성된 엔트리들로 한정될 수 있다.
테이블 유형에 따라서, 범용 레지스터 R2에서의 테이블 오리진 및 범용 레지스터 R2+1에서의 유효한 인덱스는, 2010년 8월, IBM 출판물 번호, SA22-7832-08인 "z/Architecture의 동작 원리"의 "주소-공간-컨트롤 엘리먼트에 의해 지정된 테이블에서의 룩업(Lookup in a Table Designated by an Address-Space-Control Element" 또는 "페이지-테이블 룩업(PAge-Table Lookup)" 에서의 규칙들에 따라 테이블 엔트리를 지정하는데, 다만 그 결과의 주소의 비트 위치 0으로부터의 캐리는 항상 무시되고, 그 인덱스는 테이블-길이 필드에 대해 체크되지 않는다는 점은 제외된다. 현재 PSW의 비트들 31 및 32에 의해 지정된 현재의 주소지정 모드에 관계없이, 테이블 오리진은 64-비트 주소로 취급되며, 덧셈은, 64-비트 주소 산술을 위한 규칙들을 사용하여 수행된다. 이들 두 개의 컴포넌트들로부터 형성된 주소는 실제 또는 절대 주소이다. 테이블 엔트리의 컨텐츠는 유효성에 대해 조사되지 않으며, 테이블 엔트리의 컨텐츠에 기인한 어떠한 예외 조건들도 인지되지 않는다.
테이블 엔트리의 페치(fetch) 및 저장(store)은 블록-컨커런트 인터락 업데이트(block-concurrent interlocked update)로서 수행된다. 엔트리에 대한 페치 억세스(fetch access)는 키-컨트롤 보호(key-controlled protection)를 받으며, 그 저장 억세스는 키-컨트롤 보호 및 낮은-주소 보호를 받는다.
동작이 시작되기 전 그리고 또한 그 동작이 완료된 후, 직렬화 기능이 수행된다. 모든 직렬화 동작들에서 그러하듯이, 이 직렬화는 이 CPU에 대해서만 적용되고, 다른 CPU들은 반드시 직렬화되는 것은 아니다.
제1 및 제2 오퍼랜드들이 동일할 때, 이 CPU는 그것의 TLB로부터 선택된 엔트리들을 클리어링한다. 로컬 CPU의 클리어링에 추가로, 만약 M4 필드에서 LC 비트가 0이면, 그 구성에서 모든 다른 CPU들은 그들의 TLB들로부터 선택된 엔트리들을 제거하도록 신호를 받는다. 각각의 TLB에서, 다음의 조건들 모두가 충족되는 적어도 그러한 엔트리들이 클리어링된다.
- 범용 레지스터 R2+1에서 유효한 인덱스는 범용 레지스터 R2의 비트들 59-61에서 DTT 필드에 의해 지정된 유형의 TLB 테이블 엔트리에서 대응하는 인덱스와 매치한다. 만약 그 모델이 DTT 필드에 의해 지정된 인덱스를 포함하는 복합 TLB 엔트리를 구현한다면, 범용 레지스터 R2+1에서 유효 인덱스의 왼쪽으로의 비트들은 또한, 지정된 TLB 테이블 엔트리에서 제공된 어떤 대응하는 비트들과 매치된다.
- R3 필드가 0이거나, 범용 레지스터 R3에서 테이블-오리진 및 지정-유형 필드들이, TLB 테이블 엔트리를 형성하는데 사용된 주소-공간-컨트롤 엘리먼트(ASCE)에서 테이블-오리진 및 지정-유형 필드들과 매치한다.
- 만약 R3 필드가 0이면, 이 단계에서 기술되는 조건은 적용되지 않는다.
- 만약 EDAT-1이 적용되고 스토리지에 대체된 엔트리가 세그먼트-테이블 엔트리라면, 또는 만약 EDAT-2가 적용되고 스토리지에 대체된 엔트리가 영역-제3-테이블 엔트리이면, 그 대체된 엔트리에서 포맷 컨트롤은 TLB 엔트리의 그것과 매치된다.
- 만약 스토리지에서 대체된 엔트리가 더 낮은-레벨의 변환 테이블을 지정하면, 그 엔트리에서 더 낮은-레벨의 테이블 오리진은 TLB 테이블 엔트리에서 테이블-오리진 필드와 매치된다.
- 만약 EDAT-1이 적용되고 스토리지에 대체된 엔트리가, 포맷 컨트롤이 1인 세그먼트-테이블 엔트리이면, 또는 만약 EDAT-2가 적용되고 스토리지에 대체된 엔트리가, 포맷 컨트롤이 1인 영역-제3-테이블 엔트리이면, 그 대체된 엔트리에서, 세그먼트-프레임 절대 주소 또는 영역-프레임 절대 주소는 각각, TLB 엔트리의 그것과 매치된다.
영향을 받은 TLB 각각에서, 다음의 조건들 모두가 충족되는 적어도 어떤 더 낮은-레벨의 TLB 테이블 엔트리들이 또한 클리어링된다.
- 더 낮은-레벨의 TLB 엔트리는, 스토리지에서 대체된 엔트리의 사용을 통해, 또는 스토리지에서 대체된 엔트리 또는 이 프로세스에서 클리어링된 TLB 엔트리의 사용을 통해 형성된 더 높은-레벨의 TLB 테이블 엔트리의 사용을 통해, 형성되었다.
- R3 필드는 0이거나 범용 레지스터 R3에서 테이블-오리진 및 지정-유형 필드들이 더 낮은-레벨의 TLB 테이블 엔트리를 형성하는데 사용되는 주소-공간 컨트롤 엘리먼트(ASCE)에서 테이블-오리진 및 지정-유형 필드들과 매치된다. 이 ASCE는 더 낮은-레벨의 TLB 테이블 엔트리가 형성된 스토리지에서의 더 낮은-레벨의 테이블 엔트리를 어태치한 더 높은-레벨의 테이블 엔트리를 포함하는 변환 경로를 어태치한 것일 수 있고, 또는 그것은 더 낮은-레벨의 TLB 테이블 엔트리가 형성된 스토리지에서 더 낮은-레벨의 테이블 엔트리를 어태치한 더 높은-레벨의 TLB 테이블 엔트리를 사용가능하게 만든 것일 수 있다.
만약 R3 필드가 0이면, 이 단계에서 기술된 조건은 적용되지 않는다.
- 만약 EDAT-1이 적용되고 스토리지에서 대체된 엔트리가 세그먼트-테이블 엔트리이면, 또는 만약 EDAT-2가 적용되고 스토리지에서 대체된 엔트리가 영역-제3-테이블 엔트리이면, 그 대체된 엔트리에서 포맷 컨트롤은 TLB 엔트리의 그것과 매치된다.
만약 스토리지에서의 엔트리가 더 낮은-레벨의 변환 테이블을 지정하면, 그 엔트리에서 더 낮은-레벨의 테이블 오리진은 TLB 테이블 엔트리에서 테이블-오리진 필드와 매치된다.
제1 및 제2 오퍼랜드들이 동일할 때, 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY)의 실행은 다음과 같은 것이 일어날 때까지 그것을 실행하는 CPU 상에서 완료되지 않는다.
1. 위에서 특정된 기준을 충족시키는 모든 엔트리들은 이 CPU의 TLB로부터 클리어링되었다. M4 필드에서 LC 컨트롤이 1일 때, 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY)의 실행은 완료되고, 다음의 단계는 수행되지 않는다.
2. M4 필드에서 LC 컨트롤이 0일 때, 구성에서 모든 다른 CPU들은, 변화의 업데이팅 및 레퍼런스 비트들을 포함하는, 어떤 스토리지 접근들을 완료했다.
그 동작은 TLB 실제-공간 엔트리들에 대해 반드시 어떠한 영향을 미치는 것은 아니다.
특수 조건들
지정 예외가 인정되고, 그래서 그 동작은, 만약 다음 중 어떤 것이 참(true)이면, 억제(suppress)된다.
R1 또는 R2 필드가 홀수이다.
DTT 필드들, 즉, 범용 레지스터 R2의 비트 위치들 59-61은, 바이너리 001, 010, 또는 011을 포함한다.
범용 레지스터 R2+1의 비트 위치들 52-63은 논제로 값들을 포함한다.
그 동작은, 모든 주소지정 및 보호 예외들에 관해 억제된다.
결과적인 조건 코드( Resulting Condition Code ):
0-- 제1 및 제2 오퍼랜드들이 동일하고, 제2 오퍼랜드는 범용 레지스터 R1+1의 컨텐츠에 의해 대체됨.
1-- 제1 및 제2 오퍼랜드들이 동일하지 않고, 제1 오퍼랜드는 제2 오퍼랜드에 의해 대체됨.
2--
3--
프로그램 예외들:
. 주소지정(addressing)
. 동작(만약 향상된-DAT 퍼실리티 2가 인스톨되지 않는다면)
. 특권을 갖는 동작
. 보호(페치 및 저장, 영역-, 세그먼트-, 또는 페이지-테이블 엔트리, 키-컨트롤 보호 및 낮은-주소 보호)
. 스펙
프로그래밍 주 :
1. TLB 엔트리들의 선택적인 클리어링은, 모델에 따라서, 다른 방법들로 구현될 수 있으며, 그리고 일반적으로, 요구되는 최소 수보다 더 많은 엔트리들이 클리어링될 수 있다.
2. 공통 세그먼트들과 연관된 TLB 엔트리들을 클리어링할 때, 이들 엔트리들은, 많은 다른 테이블 오리진들을 포함하는 주소-공간-컨트롤 엘리먼트들의 사용을 통해 형성되었을 수 있음에 유의.
3. 명령의 M4 필드는, 어셈블러 신택스에서 브래킷들 [] 내에 포함되어 있는 필드에 의해 표시된 바와 같이, 선택적인 것으로 고려된다. M4 필드가 지정되지 않을 때, 어셈블러는 명령의 그 필드에서 0들을 배치한다.
4. 로컬-클리어링 컨트롤은 다음과 같은 것 중 어느 하나가 참(true)일 때에만 1로서 지정되어야 하고, 그렇지 않으면, 딜레이된-접근-예외 머신의 제공을 포함하여, 예측불가능한 결과들이 발생할 수 있다.
·프로그램은 단일-프로세서 구성에서 실행중이다.
·프로그램은 단일 CPU 상에서 실행되는 것으로 배정되고, 프로그램과 그 CPU 사이의 동질관계(affinity)가 유지된다.
몇몇 모델들 상에서, 위에서 열거된 케이스들에 대한 단지 로컬 TLB만의 클리어링을 지정하는 비교 및 대체 DAT 테이블 엔트리(COMPARE AND REPLACE DAT TABLE ENTRY)의 사용은 결국 중요한 퍼포먼스 향상들을 가져올 수 있다.
위에서의 환경에 대한 많은 변경 예들이 가능하다. 예를 들어, 하나 또는 그 이상의 측면들이, 예를 들어, 가상 머신 에뮬레이션에 똑같이 적용가능한데, 여기서 하나 또는 그 이상의 페이지가능한(pageable) 엔티티들(예, 게스트들)이 하나 또는 그 이상의 프로세서들 상에서 실행한다. 일 예로서, 페이지가능한 게스트들은 시작 해석 실행(Start Interpretive Execution, SIE) 구조에 의해 정의되는데, 그 일 예는 1985년 IBM 출판물 번호 SA22-7095에서 "IBM 시스템/370 확장 아키텍쳐(Extended Architecture)"라는 제목의 IBM® 출판물에 설명되어 있으며, 이는 그 전체로 본 명세서 내에 편입된다.
비록 위에서 SIE 및 z/Architecture가 언급되었으나, 하나 또는 그 이상의 측면들은 페이지가능한 엔티티들 또는 유사 컨스트럭트들을 채용하는 다른 아키텍쳐들 및/또는 환경들에 동일하게 적용가능하다.
더욱이, 위에서 기술된 여러 가지 실시예들은 단지 예들일 뿐이다. 예를 들어, 비록 여기서는 논리적으로 파티션된 환경이 기술되지만, 이는 단지 일 예일 뿐이다. 측면들은, 복수의 존들(zones)을 갖는 다른 환경들, 및 비-파티션된 환경들을 포함하는, 여러 유형의 환경들에 대해서도 유익하다. 나아가, 어떤 중앙처리장치 콤플렉스들도 없이, 함께 결합된 다수의 프로세서들만이 있을 수 있다. 더 나아가, 하나 또는 그 이상의 측면들은 단일의 프로세서 환경들에 적용가능하다.
비록 특정 환경들이 여기에 기술되지만, 또한, 이들 환경들에 대한 많은 변형들이 구현될 수 있다. 예를 들어, 만약 그 환경이 논리적으로 파티션되면, 더 많거나 더 적은 논리적 파티션들이 그 환경에 포함될 수 있다. 나아가, 함께 결합된 다수의 중앙처리 콤플렉스들이 있을 수 있다. 이것들은 만들어질 수 있는 변형들의 몇몇일 뿐이다. 또한, 다른 변형들도 가능하다. 나아가, 환경은 다수의 컨트롤러들을 포함할 수 있다. 더 나아가, 다수의 진행이 중단된(quiescent) 요청들(하나 또는 그 이상의 컨트롤러들로부터의)이 그 시스템에서 동시에 계류 중일 수 있다. 추가 변형들도 또한 가능하다.
바람직하게는, 하나 또는 그 이상의 측면들은 다음의 US 특허들, 즉, Slegel 등의 "식별자들에 기초한 프로세서 요청들의 필터링(Filtering Processor Requests Based On Identifiers)," 이라는 제목의 U.S. 특허 7530067; Slegel 등의 "페이지 인덱스들에 기초한 처리 제한들의 블로킹(Blocking Processing Restrictions Based On Page Indices)," 이라는 제목의 U.S. 특허 7020761, 그리고, Slegel 등의 "주소들에 기초한 처리 제한들의 블로킹(Blocking Processing Restrictions Based On Addresses)," 이라는 제목의 U.S. 특허 6996698, 중 하나 또는 그 이상의 것에 기술된 퍼포먼스 향상들로부터 혜택을 볼 수 있다.
여기에 사용된 바와 같이, "처리장치(processing unit)" 라는 용어는 페이지가능한 엔티티들, 예컨대, 게스트들; 프로세서들; 에뮬레이터들; 및/또는 다른 유사 컴포넌트들을 포함한다. 더욱이, "처리장치에 의해" 라는 용어는 처리장치를 위해(on behalf of a processing unit)를 포함한다. "버퍼(buffer)" 라는 용어는, 어레이들(arrays)(그러나 이것으로 한정되는 것은 아님)을 포함하여, 다른 유형의 데이터 구조들 뿐만 아니라, 스토리지의 영역을 포함하며, "테이블" 이라는 용어는 테이블 유형 데이터 구조들 이외의 것을 포함할 수 있다. 나아가, 명령은 정보를 지정하기 위해 레지스터들 이외의 것을 포함할 수 있다. 더욱이, 페이지, 세그먼트 및/또는 영역은 여기에 기술된 것들과는 다른 크기들을 가질 수 있다.
기능들 중 하나 또는 그 이상은 소프트웨어, 펌웨어, 하드웨어, 또는 이것들의 몇몇 조합으로 구현될 수 있다. 나아가, 기능들 중 하나 또는 그 이상은 에뮬레이션될 수 있다.
하나 또는 그 이상의 측면들은, 예를 들어, 컴퓨터 사용가능 매체를 갖는 제조 물품(article of manufacture)(예컨대, 하나 또는 그 이상의 컴퓨터 프로그램 제품들)에 포함될 수 있다. 매체는, 그 안에, 예를 들어, 기능들을 제공하고 가능하게 하기 위해, 컴퓨터 판독가능 프로그램 코드 수단 또는 로직(예컨대, 명령들, 코드, 명령들 등)을 구현했다. 제조 물품은 컴퓨터 시스템의 일부로서 포함될 수 있고, 또는 독립적으로 팔릴 수 있다.
도면들에 도시된 흐름도들은 단지 예들이다. 여기에 기술된 이들 다이어그램들 또는 단계들(또는 동작들)에 대해 많은 변형들이 있을 수 있다. 예를 들어, 단계들은, 다른 순서로 수행될 수 있고, 또는 단계들이 추가, 삭제, 또는 수정될 수 있다.
비록 바람직한 실시예들이 여기에서 상세히 설명되고 기술되고 있지만, 여러 가지 수정, 추가, 대체 등이 이뤄질 수 있으며, 그러므로 이것들은 다음의 청구항들에 정의되는 범위 내에 있는 것으로 고려될 수 있다는 것은, 당해 기술 분야에서 숙련된 자들에게는 자명할 것이다.
추가 실시예에서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템은, 메모리 엘리먼트들에 직접적으로 또는 시스템 버스를 통해 간접적으로 결합되는 적어도 하나의 프로세서를 포함하는 것으로 사용가능하다. 메모리 엘리먼트들은, 예를 들어, 프로그램 코드의 실제 실행 동안 채용되는 로컬 메모리, 벌크 스토리지, 및 실행 동안 벌크 스토리지로부터 코드가 검색되어야 하는 횟수를 감소시키기 위해 적어도 몇몇 프로그램 코드의 임시 스토리지를 제공하는 캐시 메모리를 포함한다.
입력/출력 또는 I/O 디바이스(키보드들, 디스플레이들, 포인팅 디바이스들, DASD, 테이프, CD 들, DVD들, 썸 드라이브들 및 다른 메모리 매체 등을 포함하나, 이것들로 한정되는 것은 아님)는 직접적으로 또는 중간의 I/O 컨트롤러들을 통해서 시스템에 결합될 수 있다. 네트워크 어댑터들은 또한 데이터 처리 시스템이 중간의 사설 또는 공중 네트워크들을 통해 다른 데이터 처리 시스템들 또는 원격 프린터들 또는 스토리지 디바이스들에 결합될 수 있도록 하기 위해, 시스템에 결합될 수 있다. 모뎀들, 케이블 모뎀들, 및 이더넷 카드들은 단지 이용가능한 네트워크 어댑터들의 유형들의 몇몇 예들일 뿐이다.
하나 또는 그 이상의 측면들은, 예를 들어, 컴퓨터 사용가능 매체를 갖는 제조 물품(예. 하나 또는 그 이상의 컴퓨터 프로그램 제품들)에 포함될 수 있다. 매체는, 그 안에, 예를 들어, 그 기능들을 제공하고 가능하게 하기 위한 컴퓨터 판독가능 프로그램 코드 수단 또는 로직(예, 명령들(instructions), 코드, 커맨드들(commands) 등)을 갖는다. 제조 물품은 시스템(예, 컴퓨터 시스템)의 일부로서 포함될 수도 있고, 또는 독립적으로 팔릴 수도 있다.
하나 또는 그 이상의 측면들을 편입시키는 제조 물품 또는 컴퓨터 프로그램 제품의 일 예는 도 7을 참조하여 기술된다. 컴퓨터 프로그램 제품(0700)은, 예를 들어, 하나 또는 그 이상의 측면들을 제공하고 가능하게 하기 위해 그 안에 컴퓨터 판독가능 프로그램 코드 수단 또는 로직(0704)을 저장하기 위한 하나 또는 그 이상의 컴퓨터 사용가능 매체(0702)를 포함한다. 매체는 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 컴퓨터 판독가능 매체의 예들은, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 탈착가능 컴퓨터 디스켓, 랜덤 억세스 메모리(RAM), 읽기-전용 메모리(ROM), 리지드 자기 디스크 및 광 디스크를 포함한다. 광 디스크들의 예들은 컴팩트 디스크-읽기 전용 메모리(CD-ROM), 컴팩트 디스크-읽기/쓰기(CD-R/W) 및 DVD를 포함한다. 하나 또는 그 이상의 컴퓨터 판독가능 프로그램 코드 수단 또는 로직에 의해 정의되는 하나 또는 그 이상의 서로 관련되는 모듈들의 일련의 프로그램 명령들 또는 논리적 어셈블리는, 하나 또는 그 이상의 측면들의 퍼포먼스를 지시한다.

Claims (9)

  1. 제1 및 제2 주소 변환 테이블 엔트리(a first and a second address translation table entry)를 비교하는 컴퓨터로 구현된 방법(computer implemented method)으로서, 상기 방법은:
    프로세서에 의해, 실행될 머신 실행가능 명령의 오피코드(opcode)로부터, 상기 명령이 비교 및 대체 DAT 테이블 엔트리(compare and replace DAT table entry) 명령임을 결정하는 단계 ― 상기 명령은 R1 필드 및 R2 필드를 포함함 ―; 및
    상기 프로세서에 의해, 상기 명령을 실행하는 단계를 포함하며,
    상기 실행하는 단계는:
    상기 명령의 R2 필드에 의해서 지정된 짝-홀 레지스터 쌍의 레지스터들에 의해 지정된(specified) 메모리 위치로부터 오리지널 제2 오퍼랜드를 획득하는 단계;
    제1 오퍼랜드와 상기 획득된 오리지널 제2 오퍼랜드를 비교하는 단계 ― 상기 제1 오퍼랜드는, 상기 명령의 R1 필드에 의해 지정된 짝-홀 레지스터 쌍의 짝수(짝 R1) 레지스터에 포함됨 ―;
    상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일한 것(being equal)에 기초하여,
    상기 명령의 R1 필드에 의해서 지정된 상기 짝-홀 레지스터 쌍의 홀수(홀 R1) 레지스터의 컨텐츠를 상기 제2 오퍼랜드 위치에 새로운 제2 오퍼랜드로서 저장하고, 그리고
    상기 오리지널 제2 오퍼랜드 값에 의해서 지정된 변환 테이블 엔트리에 기초한 변환 테이블 엔트리들을 사용하여 DAT로부터 형성된 엔트리들에 대응하는 모든 로컬 변환 색인 버퍼(local translation lookaside buffer: TLB) 엔트리들을 선택적으로 클리어링하는 단계(clearing)를 포함하는,
    방법.
  2. 삭제
  3. 청구항 1에 있어서, 상기 방법은
    상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일하지 않은 것에 기초하여, 상기 오리지널 제2 오퍼랜드를 상기 짝수 R1 레지스터 내에 저장하는 단계를 포함하는,
    방법.
  4. 청구항 1에 있어서, 선택적으로 클리어된 변환 테이블 엔트리는, 상기 오리지널 제2 오퍼랜드와 연관된 더 낮은 레벨의 변환 테이블 엔트리들에 대응하는,
    방법.
  5. 청구항 1에 있어서, 상기 방법은,
    상기 제1 오퍼랜드 비교 값이 상기 제2 오퍼랜드와 동일한 것에 기초하여, 제1 조건 코드 값을 세팅하는 단계; 및
    상기 제1 오퍼랜드 비교 값이 상기 제2 오퍼랜드와 동일하지 않은 것에 기초하여, 제2 조건 코드 값을 세팅하는 단계를 더 포함하는,
    방법.
  6. 청구항 1에 있어서, 클리어된 상기 TLB 엔트리들은, 상기 명령에 의해 지정된(specified) 주소 공간에서의 주소들을 변환하기 위해 형성된 엔트리들로 제한되는,
    방법.
  7. 청구항 1에 있어서, 상기 방법은, 상기 명령의 마스크 필드(mask field)가 제1 값을 갖는 것에 기초하여, 구성의 복수의 프로세서들의 명령을 실행하는 프로세서의 TLB만을 선택적으로 클리어링하는 단계; 및 상기 명령의 마스크 필드가 제2 값을 갖는 것에 기초하여, 상기 구성의 복수의 프로세서들의 TLB를 선택적으로 클리어링하는 단계를 더 포함하는,
    방법.
  8. 비교 및 대체 DAT 테이블 엔트리 명령(a compare and replace DAT table entry instruction)을 실행하기 위한 컴퓨터 시스템에서, 상기 시스템은:
    메모리; 및
    상기 메모리와 통신하도록 구성된 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은:
    프로세서에 의해서, 실행될 머신 실행가능 명령의 오피코드(opcode)로부터, 상기 명령이 비교 및 대체 DAT 테이블 엔트리 명령(a compare and replace DAT table entry instruction)임을 결정하는 단계 ― 상기 명령은 R1 필드 및 R2 필드를 포함함 ―; 및
    상기 프로세서에 의해, 상기 명령을 실행하는 단계를 포함하며,
    상기 실행하는 단계는:
    상기 명령의 R2 필드에 의해서 지정된 짝-홀 레지스터 쌍의 레지스터들에 의해 지정된(specified) 메모리 위치로부터 오리지널 제2 오퍼랜드를 획득하는 단계;
    제1 오퍼랜드와 상기 획득된 오리지널 제2 오퍼랜드를 비교하는 단계 ― 상기 제1 오퍼랜드는 상기 명령의 R1 필드에 의해 지정된 짝-홀 레지스터 쌍의 짝수(짝 R1) 레지스터에 포함됨 ―;
    상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일한 것(being equal)에 기초하여,
    상기 명령의 R1 필드에 의해서 지정된 상기 짝-홀 레지스터 쌍의 홀수(홀 R1) 레지스터의 컨텐츠를 상기 제2 오퍼랜드 위치에 새로운 제2 오퍼랜드로서 저장하고, 그리고
    상기 오리지널 제2 오퍼랜드 값에 의해서 지정된 변환 테이블 엔트리에 기초한 변환 테이블 엔트리들을 사용하여 DAT로부터 형성된 엔트리들에 대응하는 모든 로컬 변환 색인 버퍼(local translation lookaside buffer: TLB) 엔트리들을 선택적으로 클리어링하는 단계(clearing)를 포함하는,
    시스템.
  9. 비교 및 대체 DAT 테이블 엔트리 명령(a compare and replace DAT table entry instruction)을 실행하기 위한 프로그램 코드를 구현하는 비-일시적인 컴퓨터 판독가능 스토리지 매체로서, 컴퓨터 프로세서에 의해서 판독가능한 상기 프로그램 코드는 컴퓨터에 의해서 실행될 때 방법을 수행하도록 구성되며, 상기 방법은:
    프로세서에 의해서, 실행될 머신 실행가능 명령의 오피코드(opcode)로부터, 상기 명령이 비교 및 대체 DAT 테이블 엔트리 명령(a compare and replace DAT table entry instruction)임을 결정하는 단계 ― 상기 명령은 R1 필드 및 R2 필드를 포함함 ―; 및
    상기 프로세서에 의해, 상기 명령을 실행하는 단계를 포함하며,
    상기 실행하는 단계는:
    상기 명령의 R2 필드에 의해서 지정된 짝-홀 레지스터 쌍의 레지스터들에 의해 지정된(specified) 메모리 위치로부터 오리지널 제2 오퍼랜드를 획득하는 단계;
    제1 오퍼랜드와 상기 획득된 오리지널 제2 오퍼랜드를 비교하는 단계 ― 상기 제1 오퍼랜드는 상기 명령의 R1 필드에 의해 지정된 짝-홀 레지스터 쌍의 짝수(짝 R1) 레지스터에 포함됨 ―;
    상기 제1 오퍼랜드가 상기 오리지널 제2 오퍼랜드와 동일한 것(being equal)에 기초하여,
    상기 명령의 R1 필드에 의해서 지정된 상기 짝-홀 레지스터 쌍의 홀수(홀 R1) 레지스터의 컨텐츠를 상기 제2 오퍼랜드 위치에 새로운 제2 오퍼랜드로서 저장하고, 그리고
    상기 오리지널 제2 오퍼랜드 값에 의해서 지정된 변환 테이블 엔트리에 기초한 변환 테이블 엔트리들을 사용하여 DAT로부터 형성된 엔트리들에 대응하는 모든 로컬 변환 색인 버퍼(local translation lookaside buffer: TLB) 엔트리들을 선택적으로 클리어링하는 단계(clearing)를 포함하는,
    컴퓨터 판독가능 스토리지 매체.
KR1020147027931A 2012-06-15 2012-11-26 비교 및 대체 dat 테이블 엔트리 KR101572409B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,468 2012-06-15
US13/524,468 US20130339656A1 (en) 2012-06-15 2012-06-15 Compare and Replace DAT Table Entry
PCT/IB2012/056736 WO2013186606A2 (en) 2012-06-15 2012-11-26 Compare and replace dat table entry

Publications (2)

Publication Number Publication Date
KR20140138848A KR20140138848A (ko) 2014-12-04
KR101572409B1 true KR101572409B1 (ko) 2015-12-04

Family

ID=49757047

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027931A KR101572409B1 (ko) 2012-06-15 2012-11-26 비교 및 대체 dat 테이블 엔트리

Country Status (23)

Country Link
US (1) US20130339656A1 (ko)
EP (1) EP2862089B1 (ko)
JP (1) JP6202543B2 (ko)
KR (1) KR101572409B1 (ko)
CN (1) CN104903873B (ko)
AU (1) AU2012382781B2 (ko)
BR (1) BR112014031436B1 (ko)
CA (1) CA2874186C (ko)
DK (1) DK2862089T3 (ko)
ES (1) ES2708331T3 (ko)
HK (1) HK1210846A1 (ko)
HR (1) HRP20190166T1 (ko)
IL (1) IL236248A0 (ko)
LT (1) LT2862089T (ko)
MX (1) MX347759B (ko)
PL (1) PL2862089T3 (ko)
PT (1) PT2862089T (ko)
RU (1) RU2550558C2 (ko)
SG (1) SG11201407485RA (ko)
SI (1) SI2862089T1 (ko)
TW (1) TWI622880B (ko)
WO (1) WO2013186606A2 (ko)
ZA (1) ZA201408136B (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9501425B2 (en) * 2014-11-14 2016-11-22 Cavium, Inc. Translation lookaside buffer management
RU2632416C2 (ru) * 2015-05-14 2017-10-04 Общество С Ограниченной Ответственностью "Яндекс" Способ (варианты) передачи объекта от первого процесса на второй процесс, машиночитаемый носитель (варианты) и система обработки данных
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US20180018283A1 (en) * 2016-07-18 2018-01-18 International Business Machines Corporation Selective purging of guest entries of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US9798597B1 (en) 2016-09-26 2017-10-24 International Business Machines Corporation Verifying selective purging of entries from translation look-aside buffers
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10901911B2 (en) 2018-11-21 2021-01-26 Microsoft Technology Licensing, Llc Faster computer memory access by reducing SLAT fragmentation
US10740239B2 (en) 2018-12-11 2020-08-11 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US10977183B2 (en) 2018-12-11 2021-04-13 International Business Machines Corporation Processing a sequence of translation entry invalidation requests with regard to draining a processor core
US10817434B2 (en) 2018-12-19 2020-10-27 International Business Machines Corporation Interruptible translation entry invalidation in a multithreaded data processing system
KR102333695B1 (ko) 2020-01-10 2021-12-02 박재범 다채널 사운드 시스템이 구비된 의자용 부재 및 이를 포함하는 의자
WO2021085790A1 (ko) 2019-10-30 2021-05-06 박재범 다채널 사운드 시스템이 구비된 의자용 부재 및 이를 포함하는 의자
KR102359742B1 (ko) 2020-05-15 2022-02-08 박재범 다채널 사운드 시스템이 구비된 의자
KR102378865B1 (ko) 2020-06-16 2022-03-25 박재범 다채널 사운드 시스템 구현을 위한 의자용 부재 및 이를 포함하는 의자
KR102381959B1 (ko) 2020-07-06 2022-04-01 박재범 다채널 사운드 시스템이 구비된 의자용 부재 및 이를 포함하는 의자
KR102357554B1 (ko) 2020-08-12 2022-02-07 박재범 다채널 사운드 시스템이 구비된 의자
KR102406224B1 (ko) 2020-09-02 2022-06-08 박재범 다채널 사운드 시스템이 구비된 의자용 부재 및 이를 포함하는 의자
KR102352425B1 (ko) 2020-08-21 2022-01-18 박재범 다채널 사운드 시스템이 구비된 의자
KR102426565B1 (ko) 2020-08-28 2022-07-29 박재범 무선 스피커 의자
US20220382682A1 (en) * 2021-06-01 2022-12-01 International Business Machines Corporation Reset dynamic address translation protection instruction
US11593275B2 (en) 2021-06-01 2023-02-28 International Business Machines Corporation Operating system deactivation of storage block write protection absent quiescing of processors
KR102630387B1 (ko) 2021-08-19 2024-01-29 박재범 다채널 사운드 시스템이 구비된 의자
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273561A1 (en) 2003-05-12 2005-12-08 International Business Machines Corporation Method, system and program product for clearing selected storage translation buffer entries
US20090182988A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Compare Relative Long Facility and Instructions Therefore
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3619613A1 (de) * 1985-09-02 1987-03-05 Erfurt Electronic Pc-steuerwerk mit einem programmspeicher und einem abbildspeicher
TW343318B (en) * 1996-09-23 1998-10-21 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
US6816961B2 (en) * 2000-03-08 2004-11-09 Sun Microsystems, Inc. Processing architecture having field swapping capability
US6560687B1 (en) * 2000-10-02 2003-05-06 International Business Machines Corporation Method of implementing a translation lookaside buffer with support for a real space control
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
RU2433456C2 (ru) * 2006-04-19 2011-11-10 Квэлкомм Инкорпорейтед Виртуально маркированный кэш команд с поведением физически маркированного
US7624237B2 (en) * 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
US8914619B2 (en) * 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273561A1 (en) 2003-05-12 2005-12-08 International Business Machines Corporation Method, system and program product for clearing selected storage translation buffer entries
US20090182988A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Compare Relative Long Facility and Instructions Therefore
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand

Also Published As

Publication number Publication date
HRP20190166T1 (hr) 2019-03-22
SI2862089T1 (sl) 2019-03-29
US20130339656A1 (en) 2013-12-19
AU2012382781A1 (en) 2014-12-11
CA2874186A1 (en) 2013-12-19
RU2012148399A (ru) 2014-05-20
ZA201408136B (en) 2020-02-26
HK1210846A1 (en) 2016-05-06
PL2862089T3 (pl) 2019-04-30
JP2015527632A (ja) 2015-09-17
CA2874186C (en) 2020-09-22
WO2013186606A8 (en) 2014-12-18
TW201413454A (zh) 2014-04-01
EP2862089A4 (en) 2015-09-02
CN104903873A (zh) 2015-09-09
JP6202543B2 (ja) 2017-09-27
SG11201407485RA (en) 2014-12-30
LT2862089T (lt) 2019-02-11
CN104903873B (zh) 2017-10-20
WO2013186606A3 (en) 2015-06-11
TWI622880B (zh) 2018-05-01
IL236248A0 (en) 2015-01-29
DK2862089T3 (en) 2019-02-25
WO2013186606A2 (en) 2013-12-19
PT2862089T (pt) 2019-02-04
AU2012382781B2 (en) 2016-06-02
BR112014031436A2 (pt) 2017-06-27
ES2708331T3 (es) 2019-04-09
KR20140138848A (ko) 2014-12-04
MX347759B (es) 2017-05-10
EP2862089B1 (en) 2018-12-26
EP2862089A2 (en) 2015-04-22
RU2550558C2 (ru) 2015-05-10
MX2014015347A (es) 2015-07-06
BR112014031436B1 (pt) 2021-08-10

Similar Documents

Publication Publication Date Title
KR101572409B1 (ko) 비교 및 대체 dat 테이블 엔트리
US9182984B2 (en) Local clearing control
US9804970B2 (en) Invalidating a range of two or more translation table entries and instruction therefor
US8452942B2 (en) Invalidating a range of two or more translation table entries and instruction therefore
KR101442382B1 (ko) 가상 프로세서의 멀티-펑션 명령의 명령 펑션을 차단하기 위한 펑션 가상 퍼실리티

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee