KR20010050799A - 개선된 메모리 관리 유닛 및 캐시 메모리를 갖춘마이크로프로세서 - Google Patents

개선된 메모리 관리 유닛 및 캐시 메모리를 갖춘마이크로프로세서 Download PDF

Info

Publication number
KR20010050799A
KR20010050799A KR1020000057745A KR20000057745A KR20010050799A KR 20010050799 A KR20010050799 A KR 20010050799A KR 1020000057745 A KR1020000057745 A KR 1020000057745A KR 20000057745 A KR20000057745 A KR 20000057745A KR 20010050799 A KR20010050799 A KR 20010050799A
Authority
KR
South Korea
Prior art keywords
cache
memory
instruction
entry
information
Prior art date
Application number
KR1020000057745A
Other languages
English (en)
Inventor
라제시 촙라
신이찌 요시오까
마크 데바지
데비드 셉허드
Original Assignee
가나이 쓰토무
가부시키가이샤 히타치세이사쿠쇼
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가나이 쓰토무, 가부시키가이샤 히타치세이사쿠쇼 filed Critical 가나이 쓰토무
Publication of KR20010050799A publication Critical patent/KR20010050799A/ko

Links

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
    • 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
    • G06F9/383Operand prefetching
    • 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/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/3802Instruction prefetching
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Landscapes

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

Abstract

가상 캐시 메모리 (virtual cache memory) 및 해석 룩어사이드 버퍼 (translation lookaside buffer)를 갖는 데이터 처리 시스템에서 메모리 억세스에 대한 허가를 넓히는 방법이 개시된다.
메모리 억세스 동작이 연관된 논리 어드레스 정보 및 허가 정보를 근거로 소정의 메모리 위치에 대해서 초기화된다. 가상 캐시 메모리가 억세스되고, 상기 메모리 억세스 동작의 논리 어드레스와 상기 가상 캐시의 엔트리에 저장된 논리 어드레스 정보 간에 정합이 있는가를 결정한다. 정합이 있으면, 상기 메모리 억세스 동작의 허가 정보 및 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보를 근거로, 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되는가 여부를 결정한다. 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되지 않으면, 상기 가상 캐시 메모리의 상기 특정 엔트리의 논리 어드레스 정보를 근거로 상기 해석 룩어사이드 버퍼를 억세스한다. 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보와 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 논리 어드레스 정보 사이에 정합이 있으면, 상기 메모리 억세스 동작의 허가 정보 및 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보를 근거로, 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되는가 여부를 결정한다. 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되면, 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보를 근거로 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보가 업데이트될 수 있고 메모리 억세스 동작이 완료될 수 있다.

Description

개선된 메모리 관리 유닛 및 캐시 메모리를 갖춘 마이크로프로세서 {MICROPROCESSOR HAVING IMPROVED MEMORY MANAGEMENT UNIT AND CACHE MEMORY}
본 발명은 마이크로프로세서 및 유사한 연산형 디바이스에 관한 것으로, 특별히 개선된 메모리 관리 및 캐시 기능을 갖춘 마이크로프로세서 및 유사한 연산형 디바이스, 특히 가상 캐시 메모리 (virtual cache memory)를 포함하는 것에 관한 것이다.
마이크로프로세서, 데이터 프로세서, 마이크로컴퓨터, 마이크로컨트롤러, 및 다른 연산형 디바이스 (여기서 일반적으로 간단하게 "마이크로프로세서"라 칭하여지는)는 때로 메모리 관리 유닛 (memory management unit, MMU) 및 하나 이상의 캐시 메모리를 포함하도록 실시된다. 종래 기술에서 공지된 바와 같이, MMU는 전형적으로 물리 어드레스 공간 (메인 메모리)으로부터 논리적 또는 가상적 어드레스 공간 (가상 메모리)의 분리를 관리함으로서 프로세서 기능을 개선시키고, 때로 논리 어드레스와 물리 어드레스간을 해석하도록 해석 룩어사이드 버퍼 (translation lookaside buffer, TLB)를 포함한다. 또한, 종래 기술에서 공지된 바와 같이, 캐시 메모리는 가장 최근에 억세스된 메모리 위치의 복사 내용을 유지하여, 캐시내의 어드레스가 다시 억세스되는 경우 그 데이터를 매우 신속하게 프로세서에 제공할 수 있다.
캐시는 일반적으로 3가지 종류로 나뉜다: (1) PIPT (physically indexed physically tagged); (2) VIPT (virtually indexed physically tagged); 및 (3) VIVT (virtually indexed virtually tagged) 또는 "가상 캐시 (virtual cache)". 가장 일반적으로 사용되는 캐시 구성은 VIPT 캐시이다. VIPT 캐시에서, 가상 어드레스는 캐시에 대한 인덱스를 선택하는데 사용된다. 물리적인 태그 (tag)는 TLB에 의해 제공되는 크기 정보 및 물리적인 페이지 번호 (physical page number, PPN)로부터 유도되는 물리 어드레스 부분과 비교된다. 가상 캐시는 가상 어드레스 (VIPT 캐시와 유사하게)를 사용해 캐시로 인덱스화되지만, 캐시에 속하는 태그도 또한 가상적이다. 가상적인 태그 정합의 경우, 데이터는 TLB를 억세스하지 않고 즉시 복귀된다. 이러한 이유로, 가상 캐시는 VIPT 캐시와 비교해 더 신속한 캐시 억세스 시간을 갖는 경향이 있다. 그러므로, 때로 가상 캐시로 더 높은 빈도수를 이루는 것이 가능하다.
이러한 가상 캐시의 사용이 제안되었지만 (여기서 참고로 포함되는 미국 특허 No. 5,930,833을 참고), 다수의 논점이 발생될 수 있다. 예를 들면, 가상 캐시는 가상-물리 어드레스 해석 동안 지연을 일으키지 않으므로 매우 신속한 억세스 시간을 갖는다. 그러나, 때로 동질성 문제라 칭하여지는 일관성 문제를 일으키는 경향이 있다. 이는 2개의 다른 가상 어드레스가 유일한 물리 어드레스를 지시할 때, 또는 다른 프로세스 ID를 갖는 똑같은 가상 어드레스가 유일한 물리 어드레스를 지시할 때 일어난다. 미국 특허 No. 5,930,833이 동질성 문제를 다루고 다른 방법으로 마이크로프로세서를 개선하기 위한 특정 전략을 제안하지만, 아직까지 MMU, TLB, 캐시, 가상 캐시 등을 포함하는 마이크로프로세서를 더 개선할 필요성이 존재한다.
본 발명은 개선된 MMU (memory management unit), TLB (translation lookaside buffer), 캐시, 및 가상 캐시 (virtual cache)를 사용하는 마이크로프로세서, 및 마이크로프로세서를 동작시키는 방법을 제공한다.
본 발명에 따라, MMU (memory management unit)는 차세대 마이크로프로세서의 개발을 수용하도록 MMU가 보다 손쉽게 스케일 조정될 수 있는 방식으로 제공된다. MMU 자원은 바람직하게 물리적 및 논리 어드레스 공간으로부터 분리된 구성 레지스터 공간에서 억세스되고, 이러한 MMU 구성 레지스터는 미래에 스케일 조정될 버전을 보다 손쉽게 수용하는 방식으로 실시된다. 바람직하게, MMU 구성 레지스터 내용을 억세스, 수정, 및 제어하는 지시가 제공된다.
바람직한 실시예에 따른 MMU는 또한 캐시 또는 가상 캐시 (virtual cache)와 특별히 링크된 작용을 제공한다. 이와 같은 바람직한 실시예에서는 특정한 지시가 아직 캐시 구성 레지스터를 억세스할 수 있더라도, MMU가 디스에이블 (disable) 상태일 때는 캐시 또는 가상 캐시가 바람직하게 동결되어 무시된다 (캐시 자원은 또한 바람직하게 분리된 구성 레지스터 공간에서 억세스된다).
바람직한 특정 실시예에 따른 MMU는 또한 보다 적절한 방식에서 가상 캐시 메모리로 동작한다. 설명되는 한 예로, MMU/TLB에서의 허가가 캐시에서 대응하는 엔트리 (entry) 보다 더 넓은 것으로 발견되면, 캐시에서 허가가 더 넓어져, 바람직하게 캐시 허가가 자동적으로 넓어진다.
또한, 본 발명에 따라, MMU 뿐만 아니라 캐시도 차세대 마이크로프로세서의 개발을 수용하도록 보다 손쉽게 스케일 조정가능한 방식으로 제공된다. 캐시 자원은 또한 바람직하게 물리적 및 논리 어드레스 공간으로부터 분리된 구성 레지스터 공간에서 억세스되고, 이러한 캐시 구성 레지스터는 미래에 스케일 조정될 버전을 보다 손쉽게 수용하는 방식으로 실시된다. 바람직하게, 캐시 구성 레지스터 내용을 억세스, 수정, 및 제어하는 지시가 제공된다.
바람직한 실시예에 따라, MMU 및 캐시는 가상 및 비가상 캐시 설계로 보다 손쉽게 버전을 가능하게 하는 방식으로 실시된다.
캐시 및 캐시를 갖춘 마이크로프로세서를 보다 적절하게 동작시키기 위해, 보다 바람직한 방식으로 캐시 로킹 (locking) 및 캐시 무효화/플러쉬 (flush)/정화 동작을 가능하게 하는 지시가 제공된다. 일반적으로, 본 발명에 따라, 캐시, 특히 가상 캐시는 추후 더 설명될 바와 같이 구성 레지스터, 캐시 제어 지시, 및 다른 실시를 사용하여 손쉽게 실시, 관리, 및 제어될 수 있다.
따라서, 본 발명의 목적은 상기의 이점 및 이득 뿐만 아니라 이후 설명될 상세한 설명에서 주어지고 그로부터 명백해질 이점 및 이득을 갖춘 MMU/TLB/캐시 및/또는 가상 캐시를 갖는 마이크로프로세서를 제공하는 것을 포함한다.
도 1은 본 발명의 바람직한 실시예에 따른 CPU 및 연산 시스템/데이터 프로세서의 블록도.
도 2는 본 발명에 따른 CPU의 바람직한 실시예에서 사용되는 상태 레지스터 (status register)를 도시하는 도면.
도 3a 내지 도 3c는 본 발명의 바람직한 실시예에서 사용되는 물리 어드레스 공간, 논리 어드레스 공간, 및 구성 어드레스 공간을 도시하는 도면.
도 4a 내지 도 4c 및 도 5a 내지 도 5i는 본 발명의 바람직한 실시에에 따른 MMU (memory management unit)에서 구성 레지스터를 도시하는 도면.
도 6은 본 발명의 바람직한 실시예에 따른 유효 어드레스에서 물리 어드레스로의 해석을 설명하는 도면.
도 7a 내지 도 7i는 본 발명의 바람직한 실시예에 따른 가상 캐시 메모리 (virtual cache memory)에서 구성 레지스터를 도시하는 도면.
도 8a 및 도 8b는 본 발명의 바람직한 실시예에 따른 가상 캐시 어레이를 도시하는 도면.
도 9는 본 발명의 바람직한 실시예에 따라 가상 캐시에서 허가를 넓히기 위한 한가지 처리 흐름을 도시하는 흐름도.
도 10은 본 발명의 바람직한 실시예에 따라 가상 캐시에서 허가를 넓히고 동질성 (synonym)/앨리어싱 (aliasing)을 해결하기 위한 제2 처리 흐름을 도시하는 또 다른 흐름도.
도 11은 본 발명의 바람직한 실시예에 따라 태그 (tag) 비교 및 허가 점검을 설명하는 도면.
도 12는 본 발명의 바람직한 실시예에 따라 외부에서 공급되는 스누프형 (snoop-type) 명령에 응답하여 가상 캐시 메모리 시스템에서 캐시 간섭성 (coherency)을 유지하는 처리를 도시하는 흐름도.
〈도면의 주요부분에 대한 부호의 설명〉
100 : 프로세서
102 : CPU 코어
104, 112, 122, 124 : 버스
106 : 다이렉트 메모리 억세스 제어기(DMAC)
108 : 주변 모듈
114 : PCH 브릿지
118 : 인터페이스
120 : 외부 메모리 인터페이스
126 : 외부 메모리
본 발명은 본 발명의 바람직한 실시예를 더 이해하도록 주어지는 바람직한 특정 실시예 및 다른 특정 실시예를 참고로 보다 상세히 설명된다. 종래 기술에 숙련된 자에 의해 이해되는 바와 같이, 여기서 설명되는 다양한 실시예의 특성은 유리하게 다른 특정한 특성 (바람직한 실시예에서 설명되는 것과 같은)과 조합되어 사용되지만, 특정한 특성 (예를 들면, MMU/TLB 또는 캐시/가상 캐시의)은 바람직한 실시예에서 예시화된 전체적인 조합으로부터 분리된 이점 및 사용성을 갖는 것으로 이해되어야 한다. 이와 같이 조합으로부터 분리된 이러한 특성을 사용하는 것은 표현적으로 여기서 설명되는 본 발명의 범위내에 드는 것으로 생각된다. 또한, 바람직한 특정 실시예는 어드레스 및 지시 필드, 레지스터 등에서의 비트수와 같은 특별한 숫자값, 캐시, TLB 및 페이지 크기 등에 대해 설명되는 것으로 이해된다. 이러한 바람직한 숫자 속성의 예는 일반적으로 본 발명을 이러한 숫자 속성에 특별히 제한하게 구성되지 않는 것으로 이해된다.
이제, 도 1을 참고로, 바람직하게 단일 칩의 마이크로프로세서로 구성된 프로세서(100)가 도시되지만, 이는 다른 실시예에서 하나 이상의 칩으로 실시될 수 있다. 프로세서(100)는 다른 구성성분 중에서 실행 자원 (지시 실행 파이프라인 (pipeline), 산술/논리 유닛, 범용 및 다른 레지스터, 제어 로직, 버스 인터페이스 유닛 등), MMU(110) (바람직하게 단일 TLB 또는 다중 TLB를 포함하는), 및 캐시 메모리(111)를 갖춘 CPU 코어 (core)(102)를 포함한다. 도 1은 분리된 지시 및 데이터 TLB와 분리된 지시 및 데이터 캐시를 도시하지만, 이후 더 상세히 설명될 바와 같이, 본 발명의 다양한 실시예는 다른 MMU/캐시 배열을 사용함을 주목하여야 한다. 종래 기술에 숙련된 자에 의해 이해되는 바와 같이, CPU 코어(102)의 구성성분은 메모리로부터 지시 및 데이터를 인출하는 것, 인출된 처리를 미리 처리하는 것, 실행될 지시의 순서/스케쥴을 정하는 것, 지시를 실행하고 또한/또는 예외를 처리하는 것, 메모리 트랜잭션 (transaction)을 관리하는 것, 또한 외부 메모리, 주변 디바이스 등을 포함하는 외부 회로 디바이스와 인터페이스하는 것을 포함하는 기능을 실행한다 (또는 그 성능을 제어한다).
CPU 코어(102)는 주로 버스(104)를 통해 프로세서(100)의 다른 구성성분과 통신한다. 바람직한 특정 실시예에서, 버스(104)는 바람직하게 여기서 "수퍼 하이웨이 (super highway)"라 칭하여지는 패킷 (packet) 기초의 데이터 전달 기술을 사용하는 고속 네트워크형 버스로 구성된다. 버스(104)는 예를 들어 CPU 코어(102)를 DMAC (direct memory access controller)(106), 외부 메모리 인터페이스/제어기(120), PCH 브릿지 (peripheral component highway bridge)(114), 또한 주변 버스(112)를 통해 다양한 주변 모듈(108) (예를 들면, PIO (programmable input/output) 회로, RTC (real time clock), TMU (timer unit), SCIF (serial communication interface with FIFO), INTC (interrupt controller), 및 ROM (read only memory)을 포함하는)에 연결시킨다. 외부 메모리 디바이스 (DRAM (dynamic random access memory)와 같은)는 바람직하게 메모리 버스(122)를 통해 외부 메모리 인터페이스/제어기(120)에 연결된다. 바람직하게, PCI형 (peripheral component interconnect type) 디바이스 (PCI형 디바이스는 단지 한 예이다)로 공지된 외부 디바이스(128)는 버스(124)를 통해 인터페이스(118) (바람직하게, PCI형 인터페이스)에 연결된다. 외부 메모리(126)는 때로 "메인 메모리 (main memory)"라 칭하여짐을 주목하여야 하고, 또한 이러한 메인 메모리 중 일부 또는 모두는 CPU 코어(102)와 같은 칩상에 또한/또는 외부 메모리로 실시될 수 있음을 주목하여야 한다.
도 1의 전체 시스템 배열은 한 예임을 주목하여야 한다. 특별히, 다른 방법의 실시예에서는 PCH 버스(116) 및 PCH 브릿지(114)가 주어지지 않고, 그 대신에 소자(118)가 실제로 하나의 또는 다수의 PCI형 디바이스 (디바이스(128)와 같은)에 연결되는 PCI 버스(124)와 버스(104) 사이를 연결하는 PCI 브릿지형 디바이스임을 주목하여야 한다. 본 발명의 범위내에 드는 다른 변형은 (바람직하게) 분리된 인터페이스를 통해 버스(104)에 연결된 외부 또는 내부 ROM (또는 FLASH형 메모리)를 포함한다 (주변 모듈(108)의 ROM을 대신하거나 그에 부가될 수 있는). 이러한 변형은 또한 본 발명의 범위내에 있다.
종래 기술에서 공지된 다른 CPU 코어와 같이, CPU 코어(102)는 매우 다양하게 원하는 기능을 이행하도록 지시를 실행한다. 이러한 CPU 코어는 전형적으로 CPU 코어에 의해 이어서 실행될 지시의 작용을 제어하거나 그에 영향을 주는 필드를 일반적으로 포함하는 제어 레지스터인 상태 레지스터 (status register, SR)를 포함한다. 도 2에는 바람직한 특정 실시에에서 사용되는 SR의 배열예가 도시된다.
바람직한 실시예는 'r' 필드로 표시된 하나 또는 다수의 지정 비트 (reserve bit)를 포함하는 SR을 사용한다. 지정된 비트는 미래에 추가 기능성 및 지시 설정/지시 설정 작용의 변화가 부가되는 것을 가능하게 한다. 바람직하게, CPU 코어(102)는 일반적인 인출, 복호화, 실행 포맷으로 이루어지는 적어도 하나의 제1 지시 세트를 실행한다. 또한 바람직하게, CPU 코어(102)는 제1 지시 세트를 사용하여 제2 지시 세트를 에뮬레이트 (emulate)한다. 바람직한 실시예에서, S, Q, 및 M 비트는 바람직하게 제2 지시 세트의 에뮬레이트를 지지하는데 사용되고, FR, SZ, 및 PR 비트는 바람직하게 제2 지시 세트에 포함되는 부동점 지시의 에뮬레이트에 대한 추가 지지를 제공하는데 사용된다.
IMASK 필드는 바람직하게 4개의 (또는 다른 수의) 비트를 포함하여,0 CPU 코어(102)가 마스킹 (masking) 인터럽트에 대해 16개 우선순위 (priority) 레벨 중 하나로 설정되도록 허용한다. FD 비트는 바람직하게 제1 지시 세트에 포함된 부동점 지시가 인에이블되었나 (클리어 (clear)될 때) 디스에이블되었나 (설정될 때) 여부를 제어한다. ASID 필드는 바람직하게 현재 실행되고 있는 지시 "맥락 (thread)"의 어드레스 공간 식별자를 나타내고, 추후 설명될 바와 같이 메모리 관리 유닛에 의해 사용된다. WATCH 비트는 바람직하게 시점이 디스에이블되었나 (클리어될 때) 인에이블되었나 (설정될 때) 여부를 제어한다. STEP 비트는 바람직하게 단일 스텝화가 디스에이블되었나 (클리어될 때) 인에이블되었나 (설정될 때) 여부를 제어한다. BL 비트는 바람직하게 예외, 트랩 (trap), 및 인터럽트가 허용되었나 (클리어될 때) 저지되었나 (설정될 때) 여부를 제어한다. MD 비트는 바람직하게 지시가 사용자 모드 (클리어될 때) 또는 특별 모드 (설정될 때)에서 실행되어, 데이터가 사용자 모드 (클리어될 때) 또는 특별 모드 (설정될 때)에서 판독 또는 기록되는가 여부를 제어한다. 이해될 바와 같이, MD 비트는 함축적으로 지시 실행에 영향을 준다. MMU 비트는 추후 보다 상세히 설명될 바와 같이, 바람직하게 MMU가 디스에이블되었나 (클리어될 때) 인에이블되었나 (설정될 때) 여부를 제어한다.
앞서 논의된 바와 같이, 바람직한 실시예에서, CPU 코어(102)는 프로세서에서 메모리 트랜잭션을 관리하기 위한 MMU를 포함한다. 바람직한 실시예는 이러한 MMU를 포함하지만, MMU의 기능성은 조절가능하여 특정한 프로세서 요구조건에 가장 적절하게 구성될 수 있다. 본 발명은 실시로 지지되는 메모리 관리 특성이 특정한 프로세서 요구조건에 맞추어지도록 허용하는 MMU 기능을 제공한다. 바람직한 실시예에서는 다음과 같은 MMU 특성이 포함된다:
디스에이블/인에이블; MMU가 디스에이블되고 (예를 들면, 부트-스트랩 (boot-strap) 목적으로) 인에이블되도록 (예를 들면, 프로그램 실행을 위해) 허용하는 메카니즘;
보호; 보호 정보를 어드레스 범위와 연관시켜, 이들 어드레스 범위가 부적절한 억세스에 대해 보호되도록 허용하는 메카니즘;
캐시 제어; 캐시 작용 정보를 어드레스 범위와 연관시켜, 이들 어드레스 범위에 대한 캐시의 제어를 허용하는 메카니즘;
유효 어드레스 공간; CPU에서 지시를 실행함으로서 이루어지는 모든 메모리 억세스는 유효 어드레스 공간에 어드레스 지정된다;
물리 어드레스 공간; CPU에 의해 이루어지는 메모리 시스템에 대한 모든 메모리 억세스는 물리 어드레스 공간에 어드레스 지정된다; 또한
해석 (translatinon); 해석이 지지되지 않는 (또는 off 상태인) 실시예에서,유효 어드레스는 신원 맵핑 (identity mapping)에 의해 물리 어드레스로 변한다; 바람직하게, 이러한 어드레스 해석이 제공될 때는 물리 어드레스로의 유효 어드레스의 맵핑이 프로그램가능하다.
또한, 바람직한 실시예에서, MMU는 다음의 매개변수가 다른 실시 사이에서 조절/변화되도록 허용한다:
유효 어드레스에서 실시되는 비트의 수;
물리 어드레스에서 실시되는 비트의 수;
페이지 크기; 페이지 크기의 수와 실제 크기;
캐싱; 지지되는 캐시 작용의 수;
해석; 지지되거나 지지되지 않음;
유효 어드레스 공간의 수; 및
해석 설명의 조직 및 크기.
CPU 코어(102)의 MMU는 바람직하게 원하는 탄력적인 방식으로 인에이블 및 디스에이블될 수 있다. 예를 들면, 바람직한 실시예에서는 전력을 on 상태로 하여 재설정하거나 수동으로 재설정한 이후에 CPU 코어(102)가 디스에이블된 MMU로 실행하기 시작한다. MMU의 인에이블/디스에이블 상태는 SR 제어 레지스터를 통해 억세스될 수 있다. MMU는 앞서 설명된 바와 같이, SR의 MMU 비트를 변경하는 하나 이상의 지시를 사용해 인에이블 또는 디스에이블될 수 있다. 따라서, MMU를 인에이블 및 디스에이블하는 다양한 시퀀스가 종래 방식으로 바람직하게 사용될 수 있다. 여기서 이후 설명될 바와 같이, 바람직한 실시예는 유효 어드레스와 물리 어드레스간의 맵핑을 지지하지만, 이러한 맵핑을 지지하지 않을 수 있다.
CPU 코어(102)는 도 3a에 도시된 바와 같이 물리 어드레스 공간내의 물리 어드레스를 사용하여 물리적 메모리 시스템과 상호작용한다. 바람직한 실시예에서는 하나의 물리 어드레스 공간이 주어진다. 바람직한 실시예에서, 총 물리 어드레스 공간은 264바이트를 포함한다. 바람직하게, 물리 어드레스는 부호가 주어지지 않으므로, [0, 264]의 범위에서 변화된다. 생각되는 바와 같이, 특별한 실시예는 모든 물리 어드레스 공간을 반드시 실시하거나 실시하지 않아도 된다; 제공되는 양은 실시에 따라 변할 수 있다. 실시되는 물리 어드레스의 비트수 nphys는 바람직하게 [32, 64]의 범위이다. 이 실시 비트는 바람직하게 물리 어드레스의 하위 비트들이다. 바람직한 실시예에서, 64-비트의 총 물리 어드레스 공간 중 실시되는 서브세트는 비트수 (nphys-1)와 같은 값으로 설정된 물리 어드레스의 상단 (64-nphys) 비트를 갖는다. 특정 실시예에서, 실시되는 물리 어드레스 공간은 총 물리 어드레스 공간으로 부호-확장될 수 있다. 실시되는 물리 어드레스 공간은 도 3a에 도시된 바와 같이 [0, 2nphys-1]의 범위 및 [264-2nphys-1, 264]의 범위에 있는 어드레스로 구성될 수 있다. nphys가 64인 실시예에서는 이것이 [0, 264]의 단일 범위로 된다.
또한, 바람직한 실시예에서, CPU 코어(102)로 이루어지는 메모리 억세스는 유효 어드레스 및 데이터 폭으로 특징지워진다. 총 유효 어드레스 공간은 바람직하게 도 3b에 도시된 바와 같이 64 비트이고, 로드 (load)/저장 지시에서 유효 어드레스 연산은 바람직하게 64-비트의 정확도로 실행된다. 64-비트 유효 어드레스 공간의 조직은 물리 어드레스 공간과 유사하여, 바람직하게 264바이트를 포함한다. 이러한 실시예에서, 유효 어드레스는 부호가 주어지지 않으므로 [0, 264]의 범위에서 변화된다.
본 발명의 특별한 실시예는 반드시 유효 어드레스 공간 모두를 실시하거나 실시하지 않아도 된다; 제공되는 양은 실시에 따라 변할 수 있다. 실시되는 유효 어드레스의 비트수는 도 3b에서 neff로 칭하여진다. 실시가 해석을 지지하지 않으면, neff는 nphys와 똑같은 값을 갖는다. 실시가 해석을 지지하면, neff는 [nphys, 64]의 범위에 있다. 이러한 실시예에서, 실시되는 유효 어드레스 공간은 언제나 실시되는 물리 어드레스 공간 모두를 맵핑하기에 충분하다. 이 실시 비트는 바람직하게 유효 어드레스의 하위 비트들이다. 64-비트의 총 유효 어드레스 공간 중 실시되는 서브세트는 도 3b에 도시된 바와 같이, 비트수 (neff-1)와 같은 값으로 설정된 유효 어드레스의 상단 (64-neff) 비트를 갖는다. 특정 실시예에서, 실시되는 유효 어드레스 공간은 총 유효 어드레스 공간으로 부호-확장될 수 있고, 실시되는 유효 어드레스 공간은 [0, 2neff-1]의 범위 및 [264-2neff-1, 264]의 범위에 있는 유효 어드레스를 차지한다. neff가 64인 실시예에서는 이것이 [0, 264]의 단일 범위로 된다.
해석을 지지하는 실시에 대해, 유효 어드레스에서 물리 어드레스로의 맵핑은 바람직하게 이후 약술된 바와 같다. MMU가 디스에이블될 때, 맵핑 알고리즘은 바람직하게 모든 실시에 공통적이다. MMU가 인에이블될 때, 맵핑 알고리즘은 실시가 해석을 지지하는가 여부에 의존하게 된다. CPU가 유효 어드레스에 억세스할 때, 맵핑은 바람직하게 다음과 같이 이루어진다:
1. 유효 어드레스의 유효성이 점검된다. 유효성 점검은 변하는 양의 실시 유효 어드레스 공간으로의 실시 사이에서 호환가능성을 증가시킨다. neff가 64이면, 유효 어드레스는 언제나 유효하고 부적절하거나 에러가 있는 어드레스 예외가 생기지 않는다. 그렇지 않은 경우, 유효 어드레스가 [2neff-1, 264-2neff-1]의 범위에 있으면, 유효 어드레스는 무효로 검출되어 어드레스 에러 예외가 생기게 된다. 유효 어드레스가 유효하면, 맵핑은 계속된다.
2. MMU가 디스에이블되면, 유효 어드레스는 여기서 추후 설명되는 바와 같은 해석 없이 물리 어드레스로 직접 변환된다.
3. MMU가 인에이블되고 MMU가 해석을 지지하지 않으면, 유효 어드레스는 바람직하게 해석 없이 물리 어드레스로 직접 변환된다. 이러한 맵핑은 여기서 추후 더 상세히 설명된다. 어드레스 해석이 없더라도, 다양한 특징이 억세스와 연관될 수 있음을 주목하여야 한다.
4. MMU가 인에이블되고 MMU가 해석을 지지하면, 유효 어드레스는 바람직하게 해석 처리에 의해 물리 어드레스로 변환된다. 해석 메카니즘은 바람직하게 다수의 유효 어드레스 공간을 지지한다. 각 유효 어드레스 공간은 전형적으로 다른 처리와 연관된다. 유효 어드레스 공간은 여기서 추후 상세히 설명되는 어드레스 공간 식별자 (address space identifier, "ASID")에 의해 구별된다.
바람직한 실시예에서, 어드레스 공간과 속성을 연관시키는 입도는 페이지 (page)이다. 바람직하게, 다수의 페이지 크기가 지지될 수 있고, 다른 페이지 크기 중 일부 또는 모두가 동시에 사용될 수 있다. 페이지 크기는 언제나 2의 멱수, 2n이고, 여기서 n은 [12, nphys]의 범위에서 변한다. 바람직한 특정 실시예에서 가능한 최소의 페이지 크기 (예를 들면)는 4 kbyte이고, 가능한 최대의 페이지 크기는 정확하게 물리 어드레스 공간을 채운다. 메모리에서 페이지는 언제나 페이지 크기에 정렬된 어드레스에서 시작되어야 한다.
물리 어드레스 공간은 페이지로 분할된다. 바람직하게, 주어진 페이지 크기 2n에 대해, 물리 어드레스의 비트 0 내지 n-1은 페이지내의 바이트 인덱스를 나타내고, 비트 n 내지 nphys-1은 물리적 페이지수 (physical page number, PPN)를 나타낸다. 유효 어드레스 공간도 또한 페이지로 분할된다. 해석 정보는 지지되는 경우 각 유효 페이지와 연관된다. 주어진 페이지 크기 2n에 대해, 유효 어드레스의 비트 0 내지 n-1은 페이지내의 바이트 인덱스를 나타내고, 비트 n 내지 neff-1은 유효 페이지수 (effective page number, EPN)를 나타낸다. 바람직하게 지시 스트림 (stream)에 의해 이루어진 각 메모리 억세스는 전체적으로 8-바이트의 경계에 정렬된 8-바이트 입자의 메모리내에 포함된다. 이는 억세스가 페이지 경계에 걸쳐지지 않고, 모든 억세스가 전체적으로 단일 페이지내에 포함되어야 함을 의미한다.
본 발명의 특별한 실시예에서 특히 중요한 것은 MMU 및 캐시가 메모리 공간을 통해 억세스되지 않고, 분리된 구성 레지스터 공간을 통해 억세스되는 것이다. 바람직한 실시예에서, 구성 공간은 도 3c에 도시된 바와 같이, 232개의 64-비트 구성 레지스터 또는 위치를 포함한다 (본 발명은 특별히 구성 레지스터의 특별한 수나 크기에 제한되지 않는다). 구성 공간은 메모리 어드레스 공간에 연관되지 않음을 주목하여야 한다. 이는 해석되지 않고, 다른 범용 레지스터나 메모리 등으로부터 범용 레지스트를 로드하는 것과 같은 일반적인 로드 및 저장 지시에 의해 억세스가능하지 않다. 구성 공간에서 레지스터/위치는 바람직하게 바이트-억세스되기 보다는 구성수에 의해 어드레스 지정된다. CFG[i]는 제i의 64-비트 구성 레지스트를 칭하는데 사용된다. 바람직한 실시예에서, 구성 레지스터는 유리하게 MMU 및 캐시와 같이, 실시에 매우 의존하는 CPU 코어(102) 부분을 구성하는데 사용된다.
바람직한 실시예에서는 구성 레지스터가 두 지시를 사용하여 억세스된다. 지시 GETCFG (범용 로드/저장 지시가 아닌)는 구성 레지스터에서 범용 레지스터로 64-비트 데이터 전달을 실행한다. 특별히, GETCFG 지시는 바람직하게 구성 레지스터의 내용을 범용 레지스터 Rd로 이동시킨다. 소스 구성 레지스터는 바람직하게 또 다른 범용 레지스터 Rm의 내용을 (바람직하게) 6-비트로 부호화된 직접값에 더함으로서 식별된다. 지시 PUTCFG는 범용 레지스터에서 구성 레지스터로 64-비트 데이터 전달을 실행한다. 특별히, PUTCFG 지시는 범용 레지스터 Ry의 내용을 구성 레지스터로 이동시킨다. 목적지 구성 레지스터는 또 다른 범용 레지스터 Rm의 내용을 (바람직하게) 6-비트로 부호화된 직접값에 더함으로서 식별된다.
GETCFG 및 PUTCFG 지시 모두에 대해, 구성 레지스터는 바람직하게 기본값 (바람직하게 레지스터에 제공되는)에 오프셋 (offset) 값 (바람직하게 직접값으로 제공되는)을 더함으로서 식별된다. 바람직한 실시예에서, GETCFG 및 PUTCFG는 특별 지시로 특별 모드에서 실행된다. 사용자 모드에서 두 지시 중 하나를 실행하도록 시도하면, 바람직하게 지정된 지시 예외가 주어지게 된다. 정의되지 않은 구성 레지스터를 판독하면, 바람직하게 정의되지 않은 값이 주어지게 된다. 유사하게, 정의되지 않은 구성 레지스터를 기록하면, 정의되지 않은 작용을 일으키게 된다. 다른 방법의 실시예에서는 예외가 일어나는 것과 같은 다른 상태가 주어질 수 있다.
특정한 종래 기술의 프로세서에서는 이러한 TLB 자원 (Write TBL 엔트리형의 지시와 같은)을 억세스하는데 특수 지시가 사용됨을 주목하여야 한다. 본 발명에 따른 PUTCFG형의 지시는 구성 레지스터 공간과 연관되어 구성 레지스터를 기록하는 작용으로 단일 지시가 채택될 수 있게 한다; 그래서, TLB (및 캐시) 자원이 제2 프로세서에서 조절되거나 변화되더라도, 새로운 작용의 새로운 지시가 정의될 필요가 없다; 원래의 PUTCFG형의 지시 작용은 또한 제2 프로세서 등에서도 사용될 수 있다.
앞서 논의된 바와 같이, MMU 및 캐시 자원은 구성 공간으로 맵핑된다. 이제는 바람직한 실시예에서 MMU에 대한 구성 레지스터가 더 설명된다.
도 4a 및 도 4b는 본 발명의 바람직한 실시예에서 사용되는 MMU 구성 레지스터의 예를 도시한다. 'r' 필드는 지정된 비트를 나타낸다. 여기서 PTEH 및 PTEL로 칭하여진 MMU 구성 레지스터의 다른 필드는 도 4c에 요약되고, 이후 보다 상세히 논의된다. 바람직한 실시예에서, PTEH 및 PTEL 구성 레지스터는 유효 어드레스에서 물리 어드레스로 이용가능한 맵핑을 설명하는 페이지 테이블 엔트리의 어레이를 제공하도록 복제된다.
바람직한 실시예에서, 각 구성 레지스터는 64 비트의 폭이고, MMU/TLB의 한 페이지 테이블 엔트리를 실시하는데는 이러한 구성 레지스터가 2개 사용된다. 주목될 바와 같이, 이용가능한 모든 레지스터 및 이용가능한 모든 필드가 바람직한 실시예의 모든 변형에서 실시되지는 않는다. 생각되는 바와 같이, 여기서 설명되는 것처럼 구성 공간에 구성 레지스터를 사용하는 다른 이점 중에서, 제1 프로세서는 하나의 MMU 구성 (구성 공간에서 MMU 구성 레지스터를 적절히 선택하여), 및 구성 공간내의 레지스터/위치에서 이용가능한 제1 세트의 어드레스 비트를 갖고 개발될 수 있다. 특별히, 본 발명에서, MMU (및 캐시 특성)는 ASID (지지되는 처리의 수 등), 유효 페이지수, 물리적 페이지수, 보호, 및 크기 필드 (즉, 바람직하게 SH 및 V 필드를 제외한 구성 레지스트의 거의 모든 특성)가 제1 프로세서에서 제2 프로세서로 변화가능하도록 구성 레지스터를 사용하여 필드, 크기, 및 구성 레지스터의 수로 정의 및 제어되므로, MMU (및 캐시) 특성은 제1 프로세서 및 제2 프로세서 사이에서 보다 손쉽게 조절되거나 변화될 수 있다. 제1 프로세서와 유사한 속성을 적어도 일부 갖는 프로세서인 제2 프로세서는 추가 (또는 더 적은) 구성 레지스터를 실시함으로서 크기가 변화될 수 있다는 면에서 조절가능한 MMU를 갖고, 예를 들면 제2 프로세서에서는 구성 레지스터에 더 큰 어드레스 필드를 사용하도록 지정 비트가 사용될 수 있다. 다른 말로 하면, 이와 같은 바람직한 실시예에서, 조절/변화가능한 MMU 특성을 갖는 추가 프로세서는 원하는 수의 구성 레지스터를 실시하고 (즉, TLB에서 다른 수의 페이지 테이블 엔터리를 만들고) MMU/TLB에서 더 큰 (또는 더 작은) 어드레스 필드를 사용함으로서 보다 손쉽게 개발될 수 있다. 그래서, 다르지만 아마도 관련된 특성을 갖는 마이크로프로세서 시리즈가 보다 손쉽게 개발 및 실시될 수 있고, 그 시리즈의 다양한 마이크로프로세서에 대해 원하는 바에 따라 MMU 특징이 손쉽게 조절될 수 있다.
이제는 MMU가 디스에이블될 때 CPU 코어(102)의 동작에 대해 더 설명된다. 전력을 on 상태로 한 재설정이나 수동 재설정 또는 특수형의 예외 이후에, MMU는 자동적으로 디스에이블되고, CPU 코어(102)는 디스에이블된 MMU로 코드를 실행한다. 디스에이블된 MMU로 코드를 실행하는 것은 일반적으로 MMU 구성 레지스터의 상태에 관계없이 보다 예측가능한 작용을 제공한다. 이는 MMU 실시가 다수의 프로그램가능한 필드를 포함할 수 있고 이들 필드가 전력을 on 상태로 한 재설정 이후에 정의되지 않은 값을 갖기 때문에 중요하다. 부가하여, 수동 재설정 또는 특수형의 예외 이벤트 이후에, 이들 필드의 이전 값은 유효하지 않다. 바람직한 실시예에서, 디스에이블된 MMU로 실행되는 코드의 양은 일반적으로 비교적 작다. 때로 부트-스트랩 (boot-strap)이라 칭하여지는 이러한 코드는 적절한 메모리 관리 구성으로 MMU를 프로그램하여 MMU를 인에이블시킬 필요가 있다. 구성의 상세한 내용은 특별한 실시예에 의해 제공되는 메모리 관리 특성에 의존한다. 일반적으로, MMU가 디스에이블될 때 코드 실행 속도는 부트-스트랩 코드의 작용 중 하나가 MMU를 구성하고 이를 인에이블시키는 것이기 때문에 결정적으로 중요하지는 않다. 이는 비교적 작은 수의 지시로 이루어질 수 있고, MMU가 디스에이블될 때 코드에 대한 실행 모델도 비교적 단순하다.
디스에이블된 MMU로 코드가 실행될 때, 유효 어드레스는 바람직하게 물리 어드레스에 직접 맵핑된다. 이러한 맵핑은 기본적으로 신원 해석이다. 그러나, 실시가 물리 어드레스 공간 보다 더 많은 유효 어드레스 공간을 지지하는 경우 (즉, neff 〉 nphys), 물리 어드레스 공간은 유효 어드레스 공간을 통해 복제되어 나타난다. 유효 어드레스(EA)는 바람직하게 PA ← SignExtendnphys(EA)에 의해 물리 어드레스(PA)로 맵핑된다. 이 맵핑은 정확하게 neff 및 nphys가 동일할 때의 신원 해석이다. 일반적으로, MMU가 디스에이블될 때는 보호 메카니즘이 없다. 부가하여, 데이터 억세스가 디바이스 억세스인 것처럼 실시된다 (종래 기술에 공지된 바와 같이, "디바이스 억세스"는 일반적으로 버퍼처리되지 않은 억세스를 칭하고, 지시 등에 의해 지정된 트랙적션을 보다 효과적으로 관리하는 방식으로 처리하지 않고, 순차적으로, 또는 다른 방법으로 특별한 지시에 의해 지정된 바와 같이 억세스된다). 데이터 캐시는 효과적으로 동작하지 않고 통과된다 (비록, 설명된 바와 같이, 데이터 캐시 자원은 이 상태에서 특정 지시로 억세스되더라도). 지시에 의해 지정된 정확한 양의 데이터가 전달되고, 데이터를 미리 인출하지 않는다.
MMU가 디스에이블될 때, 지시 인출은 캐시 처리되지 않는다. 지시 캐시 (분리된 지시 캐시를 포함하는 실시예에서)는 또한 효과적으로 동작하지 않고 통과된다. 부가하여, 미리 인출하는 지시량은 바람직하게 표시된 디바이스 영역과 같은 물리 어드레스 영역으로부터 미리 인출되지 않도록 제한된다. 바람직하게, CPU 코어(102)는 프로그램 카운터를 둘러싼 최소 페이지 (특별한 실시예에서 제공되는)의 외부에서 지시를 추론적으로 인출하지 않는다. MMU가 디스에이블된 동안에는 억세스가 캐시 처리되지 않으므로, 일반적으로 최적의 성능이 이루어지지 않는다. 따라서, 대부분의 실시예에서는 재설정 이후에 가능한한 빨리 MMU가 구성되어 인에이블된다.
MMU가 인에이블될 때, 페이지 테이블 엔트리 (page table entry, "PTE")를 사용하여 유효 어드레스에서 물리 어드레스로의 맵핑이 설명된다. 각 페이지 테이블 엔트리는 앞서 설명된 바와 같이 유효 어드레스 공간 및 물리 어드레스 공간에서 페이지의 특징을 지정하는 두 구성 레지스터 (PTEH 및 PTEL)로 구성된다. 페이지 테이블 엔트리는 다수의 페이지가 설명되도록 어레이에 보유된다. PTE 어레이는 또한 해석 룩어사이드 버퍼 (translation lookaside buffer, TLB)라 칭하여진다. 이제는 PTE 어레이의 바람직한 조직예, PTE 구성 레지스터의 내용, 맵핑 메카니즘, 및 실시 옵션이 보다 상세히 설명된다.
일반적으로, 본 발명의 다양한 실시예에서 사용되는 페이지 테이블 엔트리 어레이의 가능한 조직은 두가지가 있다: 통합 및 분할. 통합된 조직은 기본적으로 단일 어레이의 페이지 테이블 엔트리로 구성된다. 각 엔트리는 설명되는 페이지에 대한 데이터 및 지시 억세스의 작용을 제어한다. 어레이에서 엔트리의 수는 실시 정의되고, 여기서는 u로 나타내진다. 통합 어레이의 구성 레지스터는 MMUR[n].PTEH 및 MMUR[n].PTEL이라 칭하여지고, n은 [0, u]의 범위에서 변한다.
한편, 분할 조직은 일반적으로 2 어레이의 페이지 테이블 엔트리로 구성된다. 제1 데이터 레지스터 어레이의 엔트리는 설명되는 페이지에 대한 데이터 억세스의 작용을 제어하고, 반면에 제2 지시 레지스터 어레이의 엔트리는 설명되는 페이지에 대한 지시 억세스의 작용을 제어한다. 특별한 실시예에 대해서는 이들 어레이에서 엔트리의 수가 정의되고, 여기서 데이터 레지스터 어레이에 대해서는 d로, 지시 레지스터 어레이에 대해서는 i로 나타내진다. 데이터 어레이의 구성 레지스터는 MMUDR[n].PTEH 및 MMUDR[n].PTEL이라 칭하여지고, n은 [0, d]의 범위에서 변한다. 지시 어레이의 구성 레지스터는 MMUIR[n].PTEH 및 MMUIR[n].PTEL이라 칭하여지고, n은 [0,i]의 범위에서 변한다.
본 발명의 다양한 실시예에서 통합 및 분할 지시가 모두 사용되는 것으로 명백히 생각되면, 바람직한 특정 실시예에서는 예를 들어, 분할 어레이가 사용되고, 데이터 PTE 어레이 크기가 64이고, 지시 PTE 어레이 크기가 64이다. 그래서, 이러한 실시예에서는 d 및 i가 모두 값 64를 갖는다. PTE 어레이에서 모든 엔트리는 동일하고, PTE 어레이는 전체적으로 연합되어, 각 엔트리가 유효 어드레스에서 물리 어드레스로의 맵핑에 대한 정보를 보유한다.
PTE 구성 레지스터내의 필드는 일반적으로 특별한 기능이나 작용을 제어하거나 그에 영향을 주도록 제공된다. 일부 필드는 모든 실시예에서 제공되거나 제공되지 않아도 되어, 예를 들면, 일부는 해석을 지지하는 실시예에서만 제공된다. 또한, 일부 필드의 작용은 PTE 어레이 조직이 통합 또는 분할 조직인가 여부에 의존한다. 도 5a 내지 도 5i를 참고로, 바람직한 PTE 구성 레지스터의 필드가 보다 상세히 설명된다 (특정한 필드 정의 및 유사한 예 등).
도 5a에 도시된 바와 같이, 인에이블 필드 (바람직하게 1 비트)(PTEH.V)는 이 PTE가 유효인가 또는 무효인가 여부를 제어하도록 제어된다. 이 비트는 바람직하게 소프트웨어가 사용하지 않는 PTE를 무효화하고, 예를 들어 프로그램되는 동안 PTE가 무효가 되게 보장하도록 허용한다.
도 5b에 도시된 바와 같이, 페이지 크기 필드(PTEL.SZ)가 제공된다. 지지되는 페이지 크기의 수, npage는 특별한 실시예간에 변화될 수 있지만, 각 실시예 및 실시는 적어도 1 페이지 크기를 제공하여야 한다. 도 5b에서는 2 비트로 도시되지만, 일반적으로 다른 수의 크기 비트 (및 크기들)도 또한 본 발명의 범위내에 든다. 지지되는 페이지의 크기는 일반적으로 또한 실시예/실시에 따라 정의된다. 도 5c는 본 발명의 바람직한 특별 실시예에서 사용되는 지지 페이지 크기를 도시한다.
도 5d에 도시된 바와 같이, 캐시 작용 필드(PTEL.CB)가 제공된다. 여기서 논의된 바와 같이, 본 발명의 실시예는 최적으로 지시 및 데이터 캐시를 제공한다. 이와 같이 다른 실시예에 따라, 캐시의 작용이 다른 페이지로의 억세스를 위해 지정되도록 허용하기 위해 다른 캐시 작용이 바람직하게 선택될 수 있다. 특별한 실시예에서 캐시가 지지되지 않으면, 캐시 작용 필드는 비캐시 처리되는 것으로 설정되어야 한다. 바람직한 실시예에서 이용가능한 다른 캐시 작용은 캐시 작용 필드를 사용해 구별된다. 일반적으로, 캐시 작용은 물리적 페이지의 특징이므로, 똑같은 물리적 페이지를 공유하는 모든 맵핑이 똑같은 캐시 작용을 갖도록 보장하는 것이 중요하다. 그렇지 않은 경우, 그 페이지로의 메모리 억세스의 작용은 예측불가능하다.
바람직한 실시예에서 이용가능한 지시 캐시 작용은 캐시 처리된 지시 인출 및 캐시 처리되지 않은 지시 인출이다. 바람직한 실시예에서 이용가능한 데이터 캐시 작용은 회신 (write-back) 작용으로 캐시 처리된 억세스, 기록 (write-through) 작용으로 캐시 처리된 억세스, 디바이스 억세스 (여기서 설명된 바와 같이, 이들은 바람직하게 캐시 처리되지 않고 정확한 양의 데이터가 억세스된다), 및 캐시 처리되지 않은 억세스 (이들은 바람직하지 캐시 처리되지 않지만, 디바이스 페이지에 허용되는 것 보다 더 효과적으로 데이터를 억세스한다)가 있다. 도 5d는 본 발명의 바람직한 실시예에서 사용되는 캐시 작용의 예를 도시한다. RESERVED 설정이 리스트되면, 그 작용은 설계적으로 정의되지 않은 것으로, 미래에 제2 프로세서 등에서 지정될 수 있다.
도 5e에 도시된 바와 같이, 보호 필드(PTEL.PR)가 제공된다. 일반적으로, 억세스는 다양한 종류의 보호 위반에 대해 점검된다. 바람직한 실시예에서는 보호 위반으로 적절한 예외가 일어나게 된다. 보호는 일반적으로 유효 페이지의 특징이다. 똑같은 보호 속성을 사용하도록 똑같은 물리적 페이지를 공유하는 맵핑이 요구되지 않는다. 바람직한 실시예에서, 각 PTE는 다음의 비트를 포함하는 보호 필드를 갖는다: PTEL.PR.U (설정되면, 페이지는 사용자 및 특별 모드로 억세스가능하고, 그렇지 않은 경우에는 특별 모드만 억세스가능하다); PTEL.PR.W (설정되면, 페이지가 기록가능하고, 그렇지 않은 경우에는 기록불가능하다); PTEL.PR.R (설정되면, 페이지가 판독가능하고, 그렇지 않은 경우에는 판독불가능하다); PTEL.PR.X (설정되면, 페이지가 실행가능하고, 그렇지 않은 경우에는 실행불가능하다).
이해될 바와 같이, 바람직한 실시예에서는 적절한 억세스 허가가 주어지면, 억세스를 위해 특별 모드에 허가가 부여된다. PTEL.PR.U가 설정되고 적절한 억세스 허가가 주어지면, 억세스를 위해 사용자 모드에 허가가 부여된다. 금지된 억세스는 적절한 예외가 일어나게 한다. 보호 필드는 도 5e에서 모범적인 작용으로 설명된다. RESERVED 설정이 리스트되면, 작용은 설계적으로 정의되지 않은 것으로, 미래에 제2 프로세서 등에서 지저될 수 있다.
도 5f에 도시된 바와 같이, 물리적 페이지수 필드(PTEL.PPN)가 제공된다. 바람직한 실시예에서, 2n바이트의 페이지 크기에 대해, PPN에는 (nphys-n)개의 비트가 있다. PTEL.PPN 필드는 일반적으로 설계에 의해 허용되는 최소 페이지 크기 (예를 들면, 4 kbyte)를 포함하는 것으로 충분하다. 그래서, PTEL.PPN은 (nphys-12) 비트를 포함한다. 실제 페이지 크기가 이 최소 페이지 크기 보다 크면, PPN은 PTEL.PPN 필드의 최상위 비트에 저장되어야 하고, PTEL.PPN의 나머지 하위 비트들은 클리어되어야 한다. 예를 들면, 바람직한 실시예에서는 PTEL.PPN 필드에 20개의 비트가 있다.
도 5g에 도시된 바와 같이, 공유 페이지 필드(PTEH.SH)가 제공된다. 이 필드는 바람직하게 해석을 지지하는 실시예/실시에서만 제공된다. 공유 페이지 필드(PTEH.SH)는 일반적으로 다른 ASID 값 사이에서 페이지의 공유를 제어하는데 사용된다. 이는 여기서 설명된 유효 어드레스 룩업 (look-up) 메카니즘에서 사용된다. 간략하게, SH=1인 경우, 페이지는 ASID 값에 관계없이 공유된다 (예를 들면, ASID는 바람직하게 무시된다).
도 5h에 도시된 바와 같이, 어드레스 공간 식별자 필드 (PTEH.ASID)가 제공된다. 이 필드는 바람직하게 해석을 지지하는 실시예/실시에서만 제공된다. PTEH.ASID 필드는 다른 유효 어드레스 공간을 구별하는데 사용된다. 일반적으로, 제공되는 유효 어드레스 공간의 수는 실시에 따라 변한다. 이는 여기서 설명된 유효 어드레스 룩업 메카니즘에서 사용된다.
도 5i에 도시된 바와 같이, 유효 페이지수 필드(PTEH.EPN)가 제공된다. 이 필드는 바람직하게 해석을 지지하는 실시에서만 제공된다. 2n바이트의 페이지 크기에 대해, EPN에서는 (neff-n)개의 비트가 있다. PTEH.EPN 필드는 언제나 설계에 의해 허용된 최소 페이지 크기 (예를 들면, 4 kbyte)를 포함하는 것으로 충분하다. 그래서, PTEH.EPN은 (neff-12)개의 비트를 포함한다. 이 최소 페이지 크기 보다 실제 페이지 크기가 더 큰 경우, EPN은 PTEH.EPN 필드의 최상위 비트에 저장되어야 하고, PTEH.EPN의 마너지 하위 비트들은 클리어되어야 한다. 바람직한 특정 실시예에서는 PTEH.EPN 필드에 20개의 비트가 있다. 모범적인 페이지 크기 세트의 각각에 대해 요구되는 EPN 비트의 수는 도 5i에 도시된다.
본 발명에 따라, 해석을 지지하지 않는 실시예에 유효 어드레스 맵핑이 제공된다. 이러한 실시예에서, 유효 어드레스는 바람직하게 물리 어드레스에 직접 맵핑된다. 이 맵핑은 바람직하게 신원 해석이다; 물리 어드레스가 유효 어드레스와 동일하다. 신원 맵핑은 유효한 유효 어드레스의 범위가 물리 어드레스의 범위와 정확하게 정합되므로 충분하다; neff 및 nphys는 해석을 지지하지 않는 실시에 대해 동일하여야 한다. 이 물리 어드레스는 적절한 PTE 어레이에서 연합 룩업을 실행하는데 사용된다. PTE에 의해 설명된 물리적 페이지가 억세스의 물리 어드레스를 포함하면, 정합되는 것으로 밝혀진다. 정합되면, 룩업은 그 억세스에 사용되는 캐시 속성 및 보호를 결정한다. 정합되지 않으면, 지시 손실 (ITLBMISS) 또는 데이터 손실 (RTLBMISS 또는 WTLBMISS)을 나타내는 예외가 일어난다. PTE 어레이의 내용은 물리 어드레스의 맵핑을 설명하는 PTE가 많아야 1개 있도록 배열되어야 한다.
또한, 본 발명에 따라, 유효 어드레스 맵핑에는 해석이 제공된다. 이해될 바와 같이, 해석은 일반적으로 유효 어드레스에서 물리 어드레스로의 맵핑에 걸쳐 보다 탄력적인 제어를 제공한다. 표준적인 가상 메모리는 유효 어드레스 공간, 해석 메카니즘, 및 적절한 소프트웨어를 사용해 지지될 수 있다. 이 경우, 가상 메모리 맵은 CPU 설계가 아니라 소프트웨어에 의해 결정된다.
바람직한 실시예에서, 이 유효 어드레스 맵핑은 바람직하게 다음과 같이 이루어진다. 억세스의 유효 어드레스 및 현재 처리의 ASID는 연합 룩업을 적절한 PTE 어레이로 실행하는데 사용된다. 각 PTE에 대해 다음의 점검이 이루어진다: (1) 억세스의 유효 어드레스의 EPN이 PTEH.EPN 필드와 정합하면, 유효 어드레스 정합이 발견된다. 이 비교에서 바람직하게 사용되는 유효 어드레스의 비트는 그 PTE의 페이지 크기에 의존함을 주목하여야 한다. 크기 2n바이트의 페이지에서는 유효 어드레스를 포함하는 비트 n 내지 neff-1이 비교된다; (2) PTEH.SH가 1이거나, 현재 처리의 ASID (SR.ASID; SR은 여기서 논의되었다)가 PTEH.ASID 필드와 정합하면, ASID 정합이 발견된다. PTEH.SH 필드는 ASID에 관계없이 모든 처리에 걸쳐 페이지가 공유되도록 허용한다.
PTE 정합은 똑같은 PTE에서 유효 어드레스 정합 및 ASID 정합을 요구한다. PTE 정합이 발견되면, 룩업은 그 억세스에 대해 사용되는 속성 (물리적 페이지수, 보호, 및 캐시 속성 등)을 결정한다. 유효 어드레스에서 물리 어드레스로의 해석은 바람직하게 유효 페이지수 대신에 물리적 페이지수를 대신함으로서 이루어진다. 그래서, 페이지내의 바이트 인덱스가 유지되고, EPN은 PPN에 의해 대치된다. 이 처리는 도 6에서 설명된다.
PTE 정합이 발견되지 않으면, 지시 손실 (ITLBMISS) 또는 데이터 손실 (RTLBMISS 또는 WTLBMISS)을 나타내는 예외가 일어난다. 이러한 예외는 바람직하게 적절한 PTE 어레이의 소프트웨어 보충을 일으키거나 무효 어드레스로의 억세스를 검출하는데 사용될 수 있다. 바람직한 실시예에서, PTE 보충은 완전히 소프트웨어로 실행된다; 하드웨어 페이지-테이블 워킹 (page-table walking)은 없다. 바람직한 실시예에서는 유효 어드레스 공간에서 유효 어드레스의 맵핑을 설명하는 PET가 많아야 1개 있어야 한다. 유효 어드레스와 ASID 조합에 주어지는 맵핑이 여러 개이면, 작용은 일반적으로 정의되지 않는다. 이 상황을 방지하기 위해 특정 실시예에서는 적절한 소프트웨어가 사용된다.
본 발명에 따라, PTE 어레이 조직과 PTE 상태에서는 변형이 이용가능하다. 해석이 지지되지 않으면, 실시된 PTE 필드는 판독 전용이 될 수 있다. 이 변형은 하드-와이어 비해석 맵핑의 세트를 제공하여, 결과적으로 매우 간단하게 실시된다. 예를 들면, PTE 룩업은 PTE 어레이의 연합 룩업에 의하기 보다는 유효 어드레스로부터 비트를 복호화함으로서 실시된다. 이러한 변형은 일반적으로 매우 간단한 메모리 관리 요구조건으로 시스템을 지지한다. 해석이 지지되지 않으면, 실시된 PTE 필드는 판독-기록이 될 수 있다. 이 변형은 보호의 프로그램가능한 제어 및 페이지 레벨에서의 캐시 처리를 제공하지만, 해석을 지지하지 않는다. 이러한 변형은 예를 들어 해석의 비용 없이 보호를 요구하는 시스템을 지지하는데 사용될 수 있다. 해석이 지지되면, 실시된 PTE 필드는 판독-기록이 될 수 있다. 이 변형은 전체적으로 특징화되어 표준 가상 메모리를 지지하는데 사용된다.
이제는 바람직한 실시예에 따른 메모리 관리 유닛과 캐시 (캐시를 실시하는 실시예에서) 사이의 상호작용이 설명된다.
MMU가 디스에이블될 때, 바람직한 실시예에서는 캐시 상태가 무시되고 억세스에 대해 동작되지 않는다. 사실상, 캐시가 디스에이블된다. 이 바람직한 작용은 캐시 자체가 인에이블 또는 디스에이블되었나 여부에 관계없이 제공된다. 캐시 인에이블 플래그는 바람직하게 MMU가 인에이블일 때만 효과를 갖는다. 그래서, 이러한 실시예에서, MMU가 디스에이블되지만 캐시가 인에이블되면, 캐시 상태는 계속 무시되고 동작되지 않는다. 무시되는 것 (bypassing)은 억세스가 캐시의 상태를 고려하지 않음을 의미함을 주목하여야 한다; 기본적으로, 억세스는 언제나 무시된 캐시에 닿지 못한다. 동작되지 않는 것 (freezing)은 억세스가 캐시의 상태를 수정하지 않음을 의미한다. 사실상, 억세스는 캐시가 주어지지 않은 것처럼 진행된다. 또한, 캐시 간섭성 (cache coherehncy) 지시 및 캐시 구성 메카니즘은 계속 캐시 상태에 동작하고, 평소대로 캐시를 억세스하게 됨을 주목하여야 한다. 이는 MMU가 인에이블 또는 디스에이블되었나 여부에 관계없이 캐시 상태를 억세스하는 수단을 소프트웨어에 제공하는데 사용된다.
이와 같이 바람직한 배열에는 다수의 이점이 있다. 먼저, MMU가 디스에이블될 때 캐시의 작용은 전체적으로 지정되어, 역설적인 (불일치되거나 정의되지 않은) 캐시 상황을 만나지 않고 지시를 잘 실행하도록 허용한다. 부가하여, 수동 재설정 이후에, 소프트웨어는 재설정 이전의 완전한 캐시 상태를 관찰하는데 사용될 수 있다. 이는 예를 들면, "포스트-몰템 (post-mortem)" 디버깅 (debugging) 또는 다른 코드 분석 등에서 유리하게 사용된다. 또한, 정상 동작에서는 MMU가 인에이블된다; 그래서, MMU가 디스에이블되고, 지시가 해석 없이 실행되고, 또한 MMU가 캐시 상태에 영향을 주지 않고 다시 인에이블되도록 배열하는 것이 가능하다. 이 작용은 시스템이 예를 들면, 비관여, 완전 분리, 상호작용 디버깅을 지지하도록 허용한다. 기본적으로, 디버거 (debugger)는 타켓 시스템의 기능적인 작용에 영향을 주지 않고, 디스에이블된 MMU로 자체 코드를 운행하도록 배열하는데 사용된다.
MMU가 인에이블될 때, 캐시의 작용은 소프트웨어로 프로그램될 수 있다. 캐시 작용은 여기서 설명된 바와 같이 PTEL.CB를 사용해 지정된다. 바람직한 실시예에서, PTEL.CB 설정은 다음의 방식으로 캐시 구성에 의해 번복될 수 있다. 먼저, 데이터 캐시 처리가 디스에이블되면, 각 PTE의 데이터 캐시 작용은 PTEL.CB의 값에 관계없이 캐시 처리되지 않은 것으로 다루어진다. 지시 캐시 처리가 디스에이블되면, 각 PTE의 지시 캐시 작용은 PTEL.CB의 값에 관계없이 캐시 처리되지 않은 것으로 다루어진다. 데이터 캐시가 디스에이블된 회신 (write-back)으로 구성되면, 캐시 처리가능한 PTEL.CB를 갖는 PTE는 회신이 아니라 기록 (write-through)으로 다루어진다.
바람직한 실시예에서, 캐시 대치 알고리즘은 특별한 실시로, 캐시 로킹 (cache locking)을 지지할 수 있다 (캐시 로킹은 또한 여기서 더 상세히 설명된다). 이러한 실시예에서는 캐시가 완전히 잠겨지도록 캐시 로킹을 배열하는 것이 가능하다. 이러한 실시예에서, 캐시에 미치치 못하는 캐시 처리가능한 억세스는 캐시 처리되지 않은 억세스로 작용한다. MMU가 인에이블될 때, 바람직한 실시예에서 소프트웨어는 캐시가 적절한 방식으로 사용되도록 보장하는 것을 담당한다. 특별히, 소프트웨어는 예를 들면, 캐시에 대한 역설적인 면이 방지되도록 보장하여야 한다. 캐시에 대한 역설적인 면은 현재 캐시 상태가 요구되는 캐시 작용과 일치하지 않음을 메모리 억세스가 발견할 때 일어난다. 한 예로, 억세스된 데이터가 캐시내에 있음을 발견하는 디바이스 억세스가 있다; 이 상황은 디바이스 억세스 조건/의미와 일치하지 않는다. 바람직하게, 소프트웨어 규정이 이러한 상황을 방지하는데 사용된다. 예를 들면, 똑같은 물리적 페이지를 갖는 모든 맵핑이 똑같은 캐시 작용을 갖도록 보장하는 것이 중요하다. 그렇지 않은 경우, 그 페이지에 대한 메모리 억세스의 작용은 예측불가능하다.
여기서 설명된 바와 같이, 가상 캐시가 갖는 문제점은 캐시 동질성 (synonym)이라 공지되어 있다. 해석을 지지하는 실시예에서, 실시에는 캐시 처리가능한 페이지에 대한 PTEH.EPN 및 PTEL.PPN의 허가값에 대해 추가 제한이 놓여진다. 이러한 제한은 캐시 동질성을 해결하도록 돕거나 방지하도록 동작하고, 보다 효과적인 MMU 및 캐시의 실시를 허용한다.
특정 실시예에서 한가지 제한은 실시예/실시에 따른 특정값을 갖는 단일 매개변수, nsynbits에 의해 지정된다. 이러한 매개변수는 캐시 동질성을 겪을 수 있는 PTEH.EPN 및 PTEL.PPN 중 최하위 비트의 수를 제공한다. 이러한 비트는 동질성 비트라 칭하여진다 (또한, 때때로 "칼라링 (coloring)" 비트라 칭하여진다). 본 실시예에 의해 지지되는 최소 페이지 크기는 4 kbytes이므로, PTEH.EPN 및 PTEL.PPN이 어드레스의 하위 12 비트를 포함하지 않음을 주목한다. 이 제한은 똑같은 PTEL.PPN을 맵핑하는 모든 PTEH.EPN의 예에서 동질성 비트가 동일한 값을 갖도록 캐시 처리가능한 페이지의 PTE 값이 프로그램될 것을 요구한다.
이 제한은 캐시 실시가 물리 어드레스 보다는 유효 어드레스로부터 하위 비트를 사용해 캐시에 인덱스되도록 허용한다. 그래서, 소프트웨어는 바람직하게 똑같은 PTEL.PPN을 맵핑하는 모든 PTEH.EPN 예의 비트 [0, nsynbits]가 동일하도록 캐시 처리가능한 페이지의 메모리 맵핑을 배열한다. 특별한 PTEL.PPN만이 1회 맵핑되면, 제한은 없다. 그러나, 특별한 PTEL.PPN의 맵핑이 2회 이상이면, 소프트웨어는 이 제한을 만족시키도록 PTEH.EPN 값을 배열하여야 한다. 소프트웨어가 그 제한을 받아들이지 않으면, 캐시의 작용은 예측불가능해질 수 있다. 선택된 페이지 크기가 212+nsynbits바이트 이상이면, 제한은 페이지 정렬로 인해 자동적으로 받아들여짐을 주목하여야 한다. 한 예로, 바람직한 특별 실시예에서는 nsynbits의 값이 1이다. 그래서, 바람직하게 4 kbyte 페이지 크기를 사용하는 캐시 처리가능한 맵핑은 1 동질성 비트에 의해 제한된다. 이러한 실시예에서, 더 큰 페이지 크기는 제한되지 않는다.
바람직한 실시예에서, nsynbits는 모든 실시에 대해 [0, nsynmax]의 범위에 있게 된다. 이러한 실시예에서, nsynmax 이상인 PTEH.EPN 및 PTEL.PPN의 비트는 동질성 문제점을 겪지 않게 된다. 소프트웨어는 더 약한 실시-정의 nsynbits 제한 보다는 이와 같이 더 엄격한 설계적-정의 nsynmax 제한을 받아들이는 것이 바람직하다. 이를 사용해, 바람직한 제한은 소프트웨어가 미래의 실시예/실시와 호환가능한 방식으로 메모리 맵핑을 배열하도록 허용한다. 한 예로, nsynmax의 값은 4이다. 그래서, 미래의 실시는 4 kbyte 페이지를 사용하는 캐시 처리가능한 맵핑이 4개의 동질성 비트로 제한되도록 요구할 수 있다. 64 kbyte 페이지 크기 이상을 사용하는 맵핑을 제한하지 않는 실시예/실시가 개발될 수 있다.
판독-기록 PTE 필드를 갖는 실시예에서, 소프트웨어는 PTE의 내용을 변화시킬 수 있다. CPU 코어(102)의 MMU는 바람직하게 매우 다양한 실시를 허용하도록 페이지 테이블 업데이트에서 사용 모델을 대치한다. 이 모델은 바람직하게 페이지 맵핑의 내용을 변화시킬 때 소프트웨어가 특정 제한을 받아들이도록 요구한다. MMU 설계는 바람직하게 PTE 어레이내의 엔트리 (하드 PTE, 또는 칩상의 TLB내의 페이지 테이블 엔트리)가 소프트웨어에 의해 일부 방식으로 유지되는 더 큰 개념상 PTE 값의 세트의 서브세트 (소프트 PTE, 전형적으로 메인 메모리에 통상적으로 저장되는 외부 페이지 테이블내의 엔트리의 집합)인 모델을 사용한다. 소프트웨어는 소프트 PTE가 관리되는 방법에 대해 완전히 자유롭다. 예를 들면, 이들은 메모리 보유 PTE 데이터 구조에 의해 관리되거나, 중간에 계산되거나, 물리적으로 존재하지 않거나, 또는 다른 방법으로 관리될 수 있다.
바람직하게, MMU에는 PTE가 하드 PTE로 로드되어 인에이블된 시점에 소프트 PTE의 존재가 알려질 수 있다. MMU에 소프트 PTE의 존재가 알려지는 동안, MMU는 (선택적으로) 하드 PTE를 캐시 처리된 PTE로 처리할 수 있다. 캐시 처리된 PTE는 대응하는 하드 PTE가 재프로그램되었더라도 MMU가 소프트 PTE의 상태를 유지하도록 허용한다. 이 특징은 바람직하게 예를 들어, 바람직한 실시예에서 가상 캐시의 사용을 가능하게 한다.
정상적으로 사용될 때, 소프트웨어는 일반적으로 하드 PTE로부터 엔트리를 축출하고, 페이지 손실로 요구되는 바에 따라 소프트 PTE로부터 다시 채운다. 이러한 축출 및 보충은 일반적으로 소프트 PTE의 상태가 변화될 것을 요구하지 않고, 캐시 처리된 PTE 상태를 밀착시키는 특수 동작이 일반적으로 요구되지 않는다. 그러나, 소프트 PTE가 수정될 때, 캐시 처리된 PTE 상태는 명확한 소프트웨어 작용에 의해 밀착되어야 한다. 이러한 수정을 MMU에 알리기 위해서는 두가지 조건이 만족되어야 한다 (동시에). 먼저, 소프트 PTE에 대응하는 인에이블된 하드 PTE가 없어야 한다. 이는, 있는 경우, 그 소프트 PTE에 대응하는 하드 PTE를 디스에이블시킴으로서 이루어질 수 있다. 두번째로, 그 소프트 PTE에 의해 맵핑된 유효 어드레스에 대응하는 캐시에 유효하거나 오염된 라인이 없어야 한다. 이 조건은 PTE의 캐시 작용이 디바이스이거나 캐시 처리되지 않으면 자동적으로 만족된다. 캐시 처리되었으면, 그 조건은 여기서 설명된 바와 같이 적절한 캐시 간섭성 메카니즘을 통해 만족되어야 한다.
소프트 PTE는 바람직하게 PTEH.EPN, PTEH.ASID, 및 PTEL.SZ에 의해 정의된 유효 어드레스 공간에서 유효 페이지를 식별한다. 다음의 시나리오는 소프트 PTE에 대한 수정을 설명한다.
1. 유효 페이지가 디맵핑 (demapping)되고 있다 (즉, 더 이상 억세스가능해지지 않게 된다).
2. 유효 페이지가 리맵핑 (remapping)되고 있다 (즉, PTEH.EPN이 변화되고 있다).
3. 유효 페이지의 캐시 작용 (PTEL.CB)이 변화되고 있다. 캐시 작용은 물리적 페이지의 특징으로, PTEL.CB에 대한 변화는 그 물리적 페이지의 모든 맵핑에 걸쳐 동기화되어야 함을 주목하여야 한다.
4. 유효 페이지의 보호 특징 (PTEL.PR)은 보호 속성 중 임의의 것이 보호 증가를 갖도록 변화되고 있다 (즉, 새로운 PTE에 더 이상 허용되지 않은 이전 PTE에 대해 억세스가 있다). 이는 허가 비트 중 임의의 것이 1에서 0으로 변하는 경우 일어난다. 어떠한 보호 비트도 보호를 증가시키도록 변화되지 않으면 (즉, 각 비트가 변화되지 않거나 억세스를 더 허용하도록 변화되면), 이는 이러한 환경에서 PTE 수정으로 카운트되지 않는다. 이러한 이권은 PTE 간섭성 가치에 손상을 입히지 않고 소프트웨어가 페이지에 제1 억세스를 포착하도록 허용한다. 예를 들면, 소프트웨어는 깨끗한 페이지를 기록불가능으로 표시하고, 초기 기록 예외를 포착하여, 기록 허가를 인에이블시킬 수 있다 (이러한 과정은 여기서 더 상세히 설명된다). 기록 허가를 인에이블시키는 것은 PTE 간섭성을 요구하지 않는다.
5. 유효 페이지의 공유가능성 (PTEL.SH)이 변화되고 있다.
이제는 본 발명의 바람직한 실시예에서 MMU에 적용가능한 코드 시퀀스의 예가 설명된다.
이러한 코드 시퀀스는 MMU를 조작하여 바람직하게 특별 모드에서 실행된다. 제1 지시 세트를 실행하고 제1 지시 세트를 사용하여 제2 지시 세트를 에뮬레이트 (emulate)하는 실시예에서, 이러한 코드 시퀀스는 바람직하게 제1 지시 세트만을 사용한다. 또한, 바람직하게, 결정적인 코드 시퀀스에서는 전형적으로 인터럽트가 방지되어야 한다.
한 예로, MMU는 SR의 MMU 비트를 수정할 수 있는 예외 (RTE) 지시 또는 유사한 지시로부터의 복귀를 사용해 인에이블 또는 디스에이블될 수 있다. 다른 지시예로는 바람직하게 SR과 같은 제어 레지스터를 억세스하기 위해 특별히 제공된 지시인 GETCON 및 PPUTCON형의 지시가 있다. 실시예에서, GETCON은 바람직하게 제어 레지스터 (SR 또는 CPU 코어(102)내의 다른 제어 레지스터와 같은)로부터 범용 레지스터로의 64-비트 데이터 전달을 제공한다. PUTCON은 바람직하게 범용 레지스터로부터 제어 레지스터로의 64-비트 데이터 전달을 실행한다. 그래서, PUTCON 지시 및 범용 레지스터 값의 적절한 로딩에 의해, SR과 같은 제어 레지스터의 내용이 변경된다. 다른 방법으로, 예를 들어 저장된 또는 제2 프로그램 카운터(PC)나 저장된 또는 제2 상태 레지스터 (바람직한 실시예는 프로그램 카운터 및 상태 레지스터의 저장된 복사를 각각 저장하는 "SPC" 및 "SSR" 레지스터를 사용한다), 또는 다른 적절한 레지스터에 적절한 값을 제공함으로서, RTE형 지시 (또는 다른 지시)가 PC 및 SR을 새로운 값으로 교환할 수 있다. 이는 바람직하게 단일 RTE형 지시로 이루어질 수 있는 PC를 변화시키는 것과 동시에 MMU를 인에이블 또는 디스에이블시키도록 허용한다.
이제는 바람직한 실시예에서 사용되는 RTE형 지시가 더 상세히 설명된다. 바람직한 실시예에서, RTE형 지시는 예외 핸들러 (exception handler) 또는 다른 소프트웨어가 이전 프로그램 내용 (예를 들면, 프로그램 카운터, 상태 레지스터 등의 내용)을 회복하도록 허용한다. 바람직한 실시예에서, 이는 때로 예외 핸들러의 최종 지시로 사용된다. 바람직한 실시예의 RTE형 지시는 바람직하게 다음의 작용을 실행한다. 프로그램 카운터는 실행될 다음 지시를 SPC로부터 복구한다 (바람직한 실시예에서는 SPC의 최하위 비트가 지시 설정 모드를 결정한다 (여기서 설명된 바와 같이, 본 실시예에서는 다수의 지시 세트가 실시된다)). SPC의 나머지 비트는 실행될 다음 지시의 프로그램 카운터를 결정한다. 부가하여, SR은 SSR로부터 복구된다. 지시의 실행은 지시 설정 모드에서 PC로부터 계속되고, 지시 스트림은 동기화된다.
다음의 변화는 바람직한 실시예에서 RTE형 지시를 실행할 때 일어난다. MMU는 인에이블 또는 디스에이블된다. 특별 레벨(MD)이 변화된다. ASID가 변화된다. 지시 설정 모드가 변화된다. 바람직한 실시예에서 RTE형 지시의 실행은 또한 이러한 변화에 대해 다음 지시가 정확하게 인출되도록 보장한다.
바람직한 실시예에서, 지시 인출은 이러한 RTE 지시에 걸쳐 자동적으로 동기화된다. RTE 지시는 SR의 원래값에 따라 인출된다. RTE 지시의 실행은 PC를 SPC로, 또한 SR을 SSR로 교환한다. 바로 이어지는 지시는 새로운 PC에 있고, 이는 새로운 SR에 따라 인출된다. 이와 같이 바람직한 실시예에서는 분리된 동기화형 지시 (이후 논의될 SYNCI와 같은)를 사용할 필요가 없고, 일반적으로 MMU 인에이블/디스에이블 상태를 변화시킬 때 신원 해석을 사용하도록 요구되지 않는다.
그러나, 이러한 실시예에서 데이터 억세스는 RTE형 지시에 걸쳐 자동적으로 동기화되지 않는다. MMU가 인에이블 또는 디스에이블될 때, 데이터 억세스를 동기화하기 위해서는 RTE형 지시 이전에 동기화 지시를 사용하는 것이 바람직하다. 이는 MMU 상태가 변화되기 이전에 억세스 버퍼링의 플러싱 (flushing)을 포함하여 모든 이전 데이터 억세스가 완료될 것을 보장한다. 데이터 동기화는 MMU 상태를 변화시키는 것이 극적으로 캐시 작용을 변화시킬 수 있기 때문에 중요하고, 이는 메모리 억세스와 관련되어 잘 정의된 시점에서 일어나도록 보장될 필요가 있다.
일부 코드 시퀀스의 예 이전에, 이제는 본 발명에 따라 사용되는 동기화형 지시가 보다 상세히 설명된다.
바람직한 실시예에서는 특정한 동기화 동작을 위해 지시가 제공된다. 이들 동기화형 지시는 바람직하게 다음을 포함한다: SYNCI는 지시 인출을 동기화하는데 사용된다; SYNCO는 데이터 동작을 동기화하는데 사용된다; 또한, SWAP는 메모리 시스템을 통한 소프트웨어 동기화에 사용된다. 이제는 이와 같은 바람직한 동기화형 지시가 설명된다.
SYNCI 지시는 바람직하게 지시 인출을 동기화하는데 사용된다. 바람직한 실시예에서, SYNCI 지시의 실행은 이어지는 지시가 인출되기 이전에 모든 이전 지시가 완료되도록 보장한다. 그러나, 바람직한 실시예에서, SYNCI 지시는 데이터 메모리에서 이전 지시의 효과가 완료되도록 보장하지는 않는다. 이러한 실시예에서, 데이터 동기화는 SYNCO 지시 (여기서 보다 상세히 설명될)를 따로 사용해 이루어진다.
SYNCI형 지시는 예를 들면, 코드가 로드되거나 수정된 이후에 지시 인출을 동기화하고, 지시 해석이 수정된 이후에 지시 인출을 동기화하고, 또한 이어지는 지시의 추론적인 실행을 중단하는데 사용될 수 있다. 일부 실시예에서는 지시 인출을 최적화하는 메카니즘이 제공된다. 한 예로, 지시의 사전 인출 (prefetching)과 지시 버퍼링이 제공될 수 있다. 지시의 사전 인출은 필요로 되기 이전에 지시가 인출되어 지시 인출 잠재기를 감소시키는 기술이다. 지시 버퍼링은 아마도 브랜치 동작 등을 실시하는데 사용되는 타켓 레지스터와 연관되는 CPU에 가까운 버퍼에 지시가 보유되어 지시 인출 잠재기를 줄이는 기술이다. 바람직한 실시예에서, SYNCI형 지시에 응답해, 이러한 상태는 이어지는 지시가 재인출되는 것을 보장하도록 무효화된다. 또한, 바람직한 실시예에서, SYNCI 지시는 지시 캐시의 상태를 밀착시키지 않으므로, 이는 요구되는 경우 명확한 캐시 간섭성 지시에 의해 이루어져야 한다.
또한, 바람직한 실시예에서는 데이터 동기화 지시가 제공된다. 이러한 "SYNCO" 지시는 바람직하게 데이터 동작을 동기화하는데 사용된다. 데이터 동작은 로드 지시, 저장 지시, 스와프 (swap) 지시, 사전 인출 지시, 할당 지시, 및 데이터 캐시 간섭성 지시를 포함한다. 이러한 SYNCO 지시는 바람직하게 다른 메모리 사용자에게 가시적인 데이터 동작의 순서를 정하는 것을 부과한다. 바람직한 실시예에서, SYNCO의 실행은 이어지는 지시로부터의 데이터 억세스가 시작되기 이전에 이전 지시로부터의 모든 데이터 동작이 완료되는 것을 보장한다. 부가하여, 이러한 SYNCO 지시 자체는 바람직하게 이전 지시로부터의 모든 데이터 동작이 완료될 때까지 완료되지 않는다. 한 예로, SYNCI형 지시로 이어지는 SYNCO형 지시의 시퀀스는 이어지는 지시가 인출되기 이전에 모든 이전 지시 및 모든 이전 데이터 동작이 완료되도록 보장하는데 사용된다. 다른 예로, SYNCO형 지시는 또 다른 메모리 사용자와 공유되는 메모리 위치에 대한 억세스의 순서를 정하고, 디바이스 메모리 위치에 대한 억세스의 순서를 정하고, 다른 지시에 대한 캐시 간섭성 지시의 순서를 정하고, 기록 버퍼링을 플러쉬 처리하고, 또한 메모리 억세스가 병합 또는 삭제되는 것을 방지하는데 사용될 수 있다.
일부 실시예에서는 데이터 억세스를 최적화하는 메카니즘이 제공된다. 이러한 실시예의 이러한 메카니즘은 나중의 일부 지점에서 메모리로 플러쉬 처리되기 이전에 기록된 데이터가 버퍼에 유지되는 기술인 기록 버퍼링을 포함할 수 있다. 기록 버퍼는 기록을 연기하고 수집함으로서 메모리 성능을 증진시킬 수 있다. 바람직한 실시예에서, 버퍼 처리된 데이터는 이전 기록 동작이 메모리를 통해 전파되는 것을 보장하도록 SYNCO 지시에 응답하거나 그 동안에 플러쉬 처리된다. 바람직한 SYNCO 지시는 데이터 캐시의 상태를 밀착시키지 않음을 주목하여야 한다; 바람직한 실시예에서, 이는 요구되는 경우 명확한 캐시 간섭성 지시에 의해 이루어진다.
또 다른 동기화형 지시는 메모리 위치에서의 극소 (여기서 더 상세히 설명되는 바와 같이, 극소로 실행되는 동작은 기본적으로 부적절한 작용을 방지하도록 인터럽트 없이 완료될 때까지 실행된다) 판독-수정-기록 동작인 "SWAP" 지시이다. 바람직한 SWAP형 지시는 새로운 값을 (바람직하게) 8-바이트 메모리 객체에 기록하고 그의 이전 내용을 복귀한다. 바람직한 실시예에서, 메모리 시스템은 스와프 지시의 판독 및 기록 부분이 그 위치로의 다른 억세스에 대해 타켓 메모리 위치에서 국소로 실행되도록 보장한다. 스와프는 또한 바람직하게 억세스와 연관된 캐시 작용과 관계없이 메모리에서 실행된다. 이러한 SWAP형 지시는 바람직하게 메모리 시스템을 통해 다수의 메모리 사용자를 동기화시키도록 소프트웨어에 의해 사용된다.
본 발명의 바람직한 실시예에서 MMU의 동작을 다시 참고로, 이제는 실례가 되는 코드 시퀀스가 설명된다. 실례가 되는 다음의 코드 시퀀스는 다음의 규정을 사용한다:
; -SR은 SR 제어 레지스터를 나타낸다;
; -SSR은 SSR 제어 레지스터를 나타낸다;
; -SPC는 SPC 제어 레지스털르 나타낸다;
; -MMU_BIT는 SR내에서 MMU 필드의 비트수이다; 또한
; -R0, R1, 및 TR0은 임시로 사용될 수 있다.
이후에는 임의의 해석을 사용해 MMU를 인에이블하는 코드 시퀀스의 예가 주어진다. 타켓 지시는 일반 레지스터(R4)에 지정되고, 이는 적절하게 실행가능한 맵핑내에 있어야 한다. 타켓 지시는 임의의 해석 (즉, 반드시 신원 해석일 필요는 없다)에 의해 맵핑될 수 있다. 여기서 다른 방법으로 언급되거나 기술되지 않으면, MOVI (즉각 이동), SHLLI (즉각 좌측으로 쉬프트), OR (논리적 OR 동작), 및 SYNCO (데이터 억세스를 동기화)와 같은 지시는 본 특별 내용에서 종래의 기능성을 갖는다. 본 발명의 내용에서 특별하게 기술된 특별 기능성을 갖는 지시는 일반적으로 여기서 설명된다.
; 이전 조건 (Pre-conditions):
; -MMU는 지금 디스에이블되어 있다;
; -PTE 구성은 유효하다;
; -PTE는 타켓 지시에 적절하게 실행가능한 맵핑을 제공한다;
; -캐시는 적절하게 구성되었다.
GETCON SR, R0; 현재 SR을 구함, 적절한 ASID 값을 가져야 함
MOVI 1, R1
SHLLI R1, MMU_BIT, R1
OR R0, R1, R0
PUTCON R0, SSR; 타켓 SR을 설정 (인에이블된 MMU로)
PUTCON R4, SPC; 타켓 PC를 설정
SYNCO; 데이터 억세스를 동기화
RTE
; 이후 조건 (Post-conditions):
; -실행은 R4에 의해 나타내지는 어드레스에서 계속된다;
; -실행은 인에이블된 MMU로 진행된다.
MMU는 유사한 시퀀스를 사용해 디스에이블될 수 있음을 주목하여야 한다. 이 경우에는 SR의 MMU 비트가 설정되기 보다는 클리어되도록 OR 대신에 ANDC (논리적 AND 동작) 지시가 사용된다. 또한, 타켓 지시는 일반 레지스터(R4)에 지정되고, 디스에이블된 MMU로 (또한, 해석 없이) 실행되는 지시를 말한다.
특정 실시예에서는 때로 신원 해석의 한계내에서 MMU를 인에이블 또는 디스에이블하는 것이 편리하다. 이는 간단한 코드 시퀀스를 제공한다. 이는 코드 시퀀스에서 전체적인 지시 세트에 대해 신원 실행가능 맵핑 (즉, EPN이 PPN과 정합)이 제공되는 것을 보장함으로서 이루어진다. 이는 PTE 구성 레지스터의 적절한 셋업을 요구한다. 이제는 신원 해석을 사용해 MMU를 인에이블하는 코드 시퀀스의 예가 제공된다.
; 이전 조건 (Pre-conditions):
; -MMU는 지금 디스에이블되어 있다;
; -PTE 구성은 유효하다;
; -PTE는 이들 지시에 신원 실행가능 맵핑을 제공한다;
; -캐시는 적절하게 구성되었다.
GETCON SR, R0; 현재 SR을 구함
MOVI 1, R1
SHLLI R1, MMU_BIT, R1
OR R0, R1, R0
PUTCON R0, SSR; 타켓 SR을 설정 (인에이블된 MMU로)
PTB label-$, TR0; 타켓 PC를 계산
GETTR TRO, R0
PUTCON R0, SPC; 타켓 PC를 설정
SYNCO; 데이터 억세스를 동기화
RTE
라벨 (label):
; 이후 조건 (Post-conditions):
; -실행은 라벨에 의해 나타내지는 어드레스에서 계속된다;
; -실행은 인에이블된 MMU로 진행된다.
MMU는 유사한 시퀀스를 사용해 디스에이블될 수 있음을 주목하여야 한다. 이 경우에는 SR의 MMU 비트가 설정되기 보다는 클리어되도록 OR 대신에 ANDC 지시가 사용된다.
바람직한 실시예에서, PTE는 PUTCFG 지시 (여기서 더 상세히 설명될)의 간단한 시퀀스를 사용해 인에이블 및 디스에이블될 수 있다. PTE가 인에이블 또는 디스에이블될 때, 소프트웨어는 바람직하게 그 PTE로의 억세스 이전에 동기화 또는 RTE형 지시가 실행되도록 보장하여야 한다. 이는 해석 룩업, 예외 검출, 및 메모리 억세스가 수정된 PTE 상태에 대해 정확하게 실행되도록 보장한다. 아래에는 PTE를 인에이블하는 코드 시퀀스의 예가 제공된다.
; 이전 조건 (Pre-conditions):
; -R0은 PTE의 구성 공간 인덱스를 포함한다;
; -R1은 새로운 PTEH 값을 포함한다 (PTEH.V가 설정);
; -R2는 새로운 PTEL 값을 포함한다;
; -OFFSET_PTEH는 PTE내에서 PTEH의 오프셋이다;
; -OFFSET_PTEL은 PTE내에서 PTEL의 오프셋이다.
PUTCFG R0, OFFSET_PTEH, R63; 해석을 수정하기 이전에 PTE를 디스에이블
PUTCFG R0, OFFSET_PTEL, R2; 새로운 PTEL 값을 설정
PUTCFG R0, OFFSET_PTEH, R1; 새로운 PTEH 값을 설정, PTE를 인에이블
; 이후 조건 (Post-conditions):
; -Ensure SYNCI 또는 RTE는 인에이블된 PTE를 통한 억세스 이전에 실행된다;
; -이는 억세스가 정확하게 해석되는 것을 보장한다.
바람직한 실시예에서, PTE 필드의 값은 PTE가 인에이블된 동안에는 수정되지 않는다. PTE는 바람직하게 그 내용을 수정하기 이전에 디스에이블되어야 한다. 그러나, 바람직한 실시예에서 PTE의 내용은 언제나 안전하게 판독될 수 있다. PTE는 다음의 코드 시퀀스의 예에 의해 디스에이블될 수 있다.
; 이전 조건 (Pre-conditions):
; -R0는 PTE의 구성 공간 인덱스를 포함한다;
; -OFFSET_PTEH는 PTE내에서 PTEH의 오프셋이다.
PUTCFG R0, OFFSET_PTEH, R63
; 이후 조건 (Post-conditions):
; -Ensure SYNCI 또는 RTE는 디스에이블된 PTE를 통한 억세스 이전에 실행된다;
; -이는 예외가 정확하게 처리되는 것을 보장한다.
이제는 다양한 본 발명의 바람직한 실시예 및 다른 실시예에서 사용되는 가상 캐시 (virtual cache)를 포함하는 캐시의 다양한 종류에 대해 설명된다.
종래 기술에 공지된 바와 같이, 캐시는 "공간상 국부성 (spatial locality)" 또는 "시간상 국부성 (temporal locality)"을 근거로 CPU에 가깝게 데이터나 지시의 복사를 유지하는데 사용된다. 캐시는 캐시 처리된 데이터 및 지시에 대해 억세스 잠재기를 감소시키고, 이들 억세스에 사용되는 메모리 대역폭의 양을 감소시키는 경향이 있다. 바람직하게, 캐시는 메모리 억세스를 지연, 집합, 제거, 및 재정리할 수 있다. 이러한 기술은 CPU 싸이클 시간과 비교해 메모리 잠재기가 높은 경우에도 높은 로드/저장 성능을 가능하게 할 수 있다.
캐시 속성은 때로 특별한 실시/실시예에 지정되는 것으로 이해되어야 한다. 여기서 설명되는 캐시 구조 및 방법론은 특별히 본 발명의 다른 특성 (MMU 속성, 특별 지시, 구성 공간 등과 같은)과 조합될 때 특별히 유리한 이용성을 제공하는 것으로 믿어지지만, 이와 같이 특별한 구조 및 방법론은 본 발명의 다양한 실시예의 범위를 특별히 제한하는 것으로 구성되지 말아야 한다. 그래서, 캐시를 제공하지 않는 실시예, 및 여기서 설명되는 캐시 속성의 다양성을 포함하는 것 (다른 캐시 뿐만 아니라)은 모두 본 발명의 다양한 특성의 범위내에 있다.
비록 캐시가 성능에 상당한 효과를 가질 수 있더라도, 캐시의 존재는 일반적으로 기능면에서 대부분의 소프트웨어에 명백하다. 이는 지시 스트림에서만 관찰할 때 캐시가 일반적으로 메모리 모델에 영향을 주지 않기 때문이다. 그러나, 캐시를 직접 관리하는 소프트웨어 (운영 시스템 등과 같은)는 캐시의 특정한 특징에 노출된다.
캐시의 일부 특징은 실시에 따른 매개변수에 의해 설명될 수 있다. 캐시를 관리하는 소프트웨어는 이들 매개변수에 의해 기록되어야 하고, 타켓 실시에 적절하게 매개변수가 설정되는 것을 허용하는 메카니즘을 제공하여야 한다. 이상적으로, 이들 매개변수는 다른 캐시 조직을 갖는 실시 사이에 이진수 레벨의 호환가능성을 허용하도록 로드 시간 또는 운행 시간에 구성가능하여야 한다. 그러나, 다른 실시예에서는 이 정보를 정적으로 프로그램에 속박시킬 필요가 있다. 본 발명의 바람직한 실시예에서는 캐시 관리를 위해 2가지 메카니즘이 제공된다. 사용자 및 특별 모드 소프트웨어에 이용가능한 캐시의 사전 인출 지시, 할당 지시, 및 간섭성 지시가 제공된다. 이러한 지시를 사용하는 것은 일반적으로 소프트웨어를 대부분의 실시에 따른 캐시 특징으로부터 격리한다. 또한, 여기서 설명되는 바와 같이, 특별한 구성 지시를 사용하는 특별 모드로부터 구성 공간을 사용하여 억세스될 수 있는 캐시 구성 레지스터가 또한 제공된다. 이는 고도로 실시에 따른 메카니즘이므로, 다른 캐시 조직을 갖춘 또 다른 실시에 연결된 경우, 이 메카니즘을 사용하는 소프트웨어는 상당한 주위를 요구한다. 그 결과로, 바람직한 실시예에서는 캐시 구성 레지스터가 소프트웨어에 의해 드물게 사용되고, 대신에 원하는 효과를 이룰 수 있는 경우 캐시의 사전 인출 지시, 할당 지시, 및 간섭성 지시가 사용된다.
바람직한 실시예에서는 단 하나의 레벨의 캐시만이 지지된다 (다른 실시예에서는 그 이상의 레벨의 캐시가 사용될 수 있다). 본 발명의 실시예에서 사용되는 다양한 다른 방법은 다음을 포함한다. 캐시 조직이 사용되지 않고, 데이터 및 지시 억세스가 모두 캐시 처리 없이 메모리에서 실행될 수 있다. 통합된 캐시 조직이 사용되어, 데이터 및 지시 억세스가 단일 통합 캐시를 통과할 수 있다. 분할 캐시 조직이 사용되어, 데이터 및 지시 억세스가 분리되어 사용될 수 있다. 이러한 분리 캐시 조직은 다음의 다른 조직을 포함할 수 있다. 데이터 (또는 오퍼랜드 (operand)) 캐시만이 실시되어, 데이터 억세스가 데이터 캐시를 통과하는 반면, 지시 억세스는 캐시 처리 없이 메모리에서 실행될 수 있다. 지시 캐시만이 실시되어, 지시 억세스가 지시 캐시를 통과하는 반면, 데이터 억세스는 캐시 처리 없이 메모리에서 실행될 수 있다. 데이터 캐시 및 지시 캐시가 실시되어, 데이터 억세스가 오퍼랜드 캐시를 통과하는 반면, 지시 억세스는 독립적으로 지시 캐시를 통과할 수 있다. 일반적으로, 캐시 조직의 선택은 MMU의 PTE 조직에 대해 독립적이다. 분리된 지시 캐시가 제공되면, 캐시는 기록 억세스를 지지할 필요가 없다. 또한, 내부 하드웨어나 외부 메모리 시스템은 더 많은 레벨의 캐시를 제공할 수 있음을 주목하여야 한다.
캐시에서 할당 유닛은 캐시 블록 (cache block) (때로 캐시 라인 (cache line)이라 칭하여지는)이다. 캐시 블록은 일부 메모리 블록의 상태의 복사를 보유하는데 사용된다. 캐시 블록은 일반적으로 데이터 및 어드레스 정보로 구성된다. 데이터는 메모리 블록의 복사를 보유하는데 사용된다. 어드레스 정보는 지금 캐시 처리되고 있는 메모리 블록 (있는 경우)에 지정된 추가 정보를 제공하는데 사용된다. 정확한 정보는 실시에 따른 것이지만, 일반적으로 다음과 같은 부분으로 구성된다. 그 캐시 블록이 사용중인가 (유효한가) 또는 사용되지 않는가 (무효인가) 여부를 나타내는 플래그. 그 캐시 블록이 깨끗한가 오염되었는가 여부를 나타내는 플래그. 어드레스 맵에서 메모리 블록을 식별하는 정보. 그 캐시 블록에 대한 캐시 억세스와 대치 정보. 캐시 블록과 연관된 데이터의 바이트수는 캐시 블록 크기라 칭하여진다. 캐시 블록 크기는 일반적으로 nbytes이고, 여기서 nbytes는 2의 멱수이다. nbytes의 값은 적어도 설계의 레지스터 크기이고 (예를 들면, 8 bytes) 많아야 설계의 페이지 크기이다 (예를 들면, 4 kbytes). nbytes의 실제값은 실시에 따른다. 실시가 분리된 지시 및 오퍼랜드 캐시를 제공하면, 캐시 블록 크기는 일반적으로 모든 캐시에 대해 똑같다. 메모리 블록은 또한 nbytes 바이트의 인접 메모리를 포함한다. 메모리 블록의 물리적 및 유효 어드레스는 nbytes의 배수이다 (즉, 정렬된 캐시 블록 크기).
캐시를 직접 관리하는 소프트웨어는 때로 캐시 블록 크기에 노출된다. 바람직한 실시예에서, 소프트웨어는 실시에 따른 매개변수로 캐시 블록 크기를 다루고, 타켓 실시에 적절하게 설정되도록 허용하는 메카니즘을 제공한다. 실시 세트에 걸쳐 이진수 레벨의 소프트웨어 호환가능성이 요구되는 것과 같은 (여기서 설명된 바와 같은 마이크로프로세서 시리즈) 다른 실시예에서는 이들 실시의 캐시 블록 크기가 일반적으로 똑같다. 지시 캐시는 지시 캐시 블록을 포함한다. 데이터 캐시는 데이터 캐시 블록을 포함한다. 통합 캐시에서는 각 캐시 블록이 지시 및 데이터 캐시 블록으로, 지시 및 데이터 억세스에 모두 사용될 수 있다.
캐시 블록은 복제되어 한 세트를 형성한다. 세트로부터 캐시 블록을 선택하는데 사용되는 값은 경로 (way)라 칭하여진다. 경로의 수 (또한 세트 크기 및 연합성으로 공지된)는 nways로 나타내지고, nways는 0 보다 큰 2의 멱수이다. 세트는 복제되어 캐시를 형성한다. 캐시로부터 세트를 선택하는데 사용되는 값은 인덱스 (index)라 칭하여진다. 세트의 수는 nsets로 나타내지고, nsets는 0 보다 큰 2의 멱수이다. 캐시의 연합성은 특별한 메모리 블록이 맵핑될 수 있는 다른 캐시 블록의 수이다. 연합성의 양은 nways (세트 크기)에 의해 주어진다. 다음 배열이 가능하다:
1. nways = 1이면, 이는 직접 맵핑되는 캐시이다. 메모리 블록은 캐시에서 정확하게 한 캐시 블록으로 맵핑될 수 있다.
2. nways 〉 1이고 nsets 〉 1이면, 이는 nways-경로 세트-연합 캐시이다. 메모리 블록은 캐시내의 특별한 세트에서 nways 캐시 블록 중 임의의 것으로 맵핑된다.
3. nways 〉 1이고 nsets = 1이면, 이는 전체적으로 연합된 캐시이다. 메모리 블록은 캐시에서 임의의 캐시 블록에 맵핑된다.
이러한 배열 각각은 nways 및 nsets 매개변수를 특별히 선택하는 것에 대응함을 주목하여야 한다. 이러한 매개변수화는 모드 3가지 배열을 포함한다. 캐시 크기 바이트는 캐시 블록 크기를 세트 크기와 세트수로 곱함으로서 주어진다. 실시가 분리된 지시 및 오퍼랜드 캐시를 제공하면, 세트 크기 및 세트수는 각 캐시에 대해 다르다.
메모리 블록이 캐시 블록으로 맵핑되는 방법은 다음과 같이 이루어진다. 맵핑은 메모리 블록의 어드레스를 근거로 한다. 어드레스는 오프셋, 인덱스, 및 태그로 나뉜다. 이들 필드 사이의 경계는 예를 들면, 여기서 설명된 실시에 따른 특징에 의해 결정된다. 필드는 일반적으로 다음과 같이 사용된다:
1. 오프셋은 캐시 블록내에서 한 바이트를 선택한다. 오프셋 필드의 비트수는 log2(nbytes)이다.
2. 인덱스는 캐시내에서 한 세트를 선택한다. 인덱스 필드의 비트수는 log2(nsets)이다.
3. 태그는 모든 나머지 어드레스 비트로 구성된다. 태그 필드의 비트수는 64 - log2(nsets) - log2(nbytes)이다.
어드레스의 맵핑은 세트를 식별하도록 인덱스로 캐시에 첨자를 붙임으로서 진행된다. 이 세트는 이 어드레스가 맵핑될 수 있는 모든 캐시 블록으로 구성된다. 실시는 이 맵핑이 억세스의 유효 어드레스 또는 물리 어드레스를 근거로 하는가 여부를 결정한다. 해석이 없거나 신원 해석이 있으면, 이러한 구별은 중요하지 않다. 부가하여, 어드레스의 인덱스가 해석 처리에 의해 변하지 않도록 최소의 페이지 크기로 실시가 주어지면, 구별은 또한 중요하지 않다.
특별한 실시예에서는 해석 이후에 (물리 어드레스를 사용하여) 또는 해석 이전에 (유효 어드레스를 사용하여) 인덱스 처리가 일어나는가 여부를 결정한다. 후자의 경우에는 특별한 어드레스의 모든 유효 앨리어싱 (aliasing) (동질성)이 똑같은 세트에 인덱스되도록 보장할 필요가 있다. 그렇지 않은 경우, 캐시 동작은 부정확해진다. MMU 설계는 여기서 설명된 바와 같이, 허용된 해석에 제한을 줌으로서 이를 달성한다. 이러한 제한이 받아들여지지 않으면, 특별한 어드레스의 다른 유효 앨리어싱에 대한 억세스는 다른 세트로 맵핑되어, 캐시에서 일부 메모리 위치에 다수의 복사가 주어지게 된다. 바람직한 실시예에서, 캐시는 이들 캐시 동질성이 밀착되어 유지되는 메카니즘을 제공하지 않고, 바람직하지 않은 이러한 조건은 예측불가능하고 불완전한 메모리 모델을 제공하게 된다.
어드레스가 한 세트의 특별한 캐시 블록에 보유될 때, 이 특별한 어드레스를 식별하기 위해 캐시 블록에는 태그가 기록된다. 인덱스 및 오프셋 필드는 그 값이 캐시 구조에 본래의 것으로 기록될 필요는 없다. 특별한 실시는 기록된 태그가 억세스의 유효 어드레스 또는 물리 어드레스로부터 주어지는 것인가 여부를 결정한다. 실시가 모든 어드레스 공간을 실시하지 않으면, 상단 태그 비트 일부는 여유가 있다. 태그가 유효 어드레스로부터 유도되고 neff 비트의 유효 어드레스 공간이 실시되면, (64-neff) 비트의 태그가 여유있다. 유사하게, 태그가 물리 어드레스로부터 유도되고 nphys 비트의 물리 어드레스 공간이 실시되면, (64-nphys) 비트의 태그가 여유있다.
전력을 on 상태로 하여 재설정한 이후에, 바람직한 실시예에서는 캐시 상태의 값과 캐시 구성 레지스터가 무효로 된다. 이는 바람직하게 하드웨어로 실행되어, 전력을 on 상태로 하여 재설정하는 경우 모든 엔트리가 무효화되도록 유효한 비트가 설정되는 것을 보장한다 (다른 실시예에서는 전력을 on 상태로 하여 재설정하는 경우 캐시 상태 및 캐시 구성 레지스터가 단순히 정의되지 않는다). MMU는 또한 디스에이블되고, 이는 지시 인출 및 데이터 억세스에 대해 모든 캐시 상태가 무시되어 동작하지 않도록 보장한다. 캐시는 MMU가 인에이블되기 이전에 적절하게 구성되어야 한다. 이는 바람직하게 캐시를 무효화시키고 (하드웨어가 이러한 무효화를 보장하지 않았으면), (바람직하게 4개의) 캐시 구성 레지스터에 적절한 값을 제공함으로서 실행된다. 일단 MMU가 인에이블되면, 캐시는 여기서 보다 상세히 설명된 바와 같이 인에이블된다. 억세스를 위한 캐시 작용은 이어서 MMU 및 캐시 구성에 의해 결정된다. 바람직한 실시예에서는 MMU가 디스에이블될 수 있는 상황이 다양하다. 이는 RTE형 지시 (여기서 보다 상세히 설명된), 수동 재설정, 패닉 이벤트 (panic event)라 공지된 특수한 종류의 예외, 디버그 예외, 또는 디버그 인터럽트로 인할 수 있다. MMU가 디스에이블될 때, 캐시는 캐시 구성에 관계없이 동작되지 않고 무시되는 상태로 복귀한다. 바람직한 실시에에서, 지지되는 판독 및 기록 억세스는 8 바이트 정렬 입자의 메모리에 유지되는 8 바이트까지의 데이터에 작용한다. 캐시 블록 크기는 바람직하게 적어도 8 바이트이므로, 각 억세스는 단일 캐시 블록내에 들게 된다.
바람직하게, 오퍼랜드/데이터 캐시를 포함하는 실시예는 기록 (write-through) 및 회신 (write-back) 작용을 지지한다. 기록에서, 각 기록 억세스는 바람직하게 연관된 캐시 블록을 업데이트하고, 이어서 메모리로 전파된다. 이 접근법의 특징은 기록 캐시 블록이 항상 메모리 상태의 복사로, 메모리 업데이트를 더 요구하지 않고 없애질 수 있다는 점이다. 회신에서, 기록 억세스는 캐시 블록에 실행될 수 있고, 메모리로의 기록은 캐시 블록이 없애질 때까지 지연된다. 회신 캐시 작용은 바람직하게 깨끗한 데이터와 오염된 데이터를 구별하는데 각 캐시 블록에서 한 비트를 사용한다. 회신은 특별한 캐시 블록에 대한 기록 억세스의 집성을 허용한다. 바람직한 실시예에서는 캐시 할당으로의 회신이 실행되거나, 캐시 할당 없이 기록이 실시된다.
캐시 처리가능한 판독 및 기록 억세스에서 캐시의 전반적인 작용은 다음과 같다.
1. 억세스의 어드레스는 여기서 설명된 인덱스 처리 과정을 통해 캐시에서 한 세트에 맵핑된다.
2. 선택/인덱스 처리된 세트내의 각 캐시 블록은 그의 태그가 억세스의 태그와 정합하는가를 보도록 점검된다. 캐시 룩업 알고리즘은 바람직하게 세트에 많아야 한가지 정합이 있을 수 있도록 동작한다.
3. 태그 정합의 가능한 결과는 2가지가 있다. 정합이 없으면, 이는 캐시 손실 (cache miss)이다. 바람직한 실시예에서, 대치 알고리즘은 대치를 위해 세트에서 적절한 캐시 블록을 선택하는데 사용된다. 그 알고리즘에 따라, 대치가능한 캐시 블록이 없으면, 억세스는 메모리에 실행되고 캐시 상태에는 변화가 없다. 그 알고리즘에 따라, 대치가능한 캐시 블록이 있으면, 그 캐시 블록은 대치된다. 그 캐시 블록이 깨끗하면, 그 블록내의 엔트리는 회신 없이 대치될 수 있다 (즉, 블록 엔트리가 간단히 재사용될 수 있다); 그러나, 캐시 블록이 오염되었으면, 그 데이터는 재사용되기 이전에 메모리로 회신되어야 한다. 정합이 있으면, 이는 캐시 히트 (cache hit)이다. 판독 억세스는 간단히 캐시 블록으로부터 적절한 바이트를 복귀한다. 기록 억세스는 캐시 블록에서 적절한 바이트를 업데이트한다. 기록 작용에서, 기록은 캐시 블록 상태와 메모리 상태를 모두 업데이트한다. 회신 작용에서, 기록은 캐시 블록 상태를 바로 업데이트하고, 캐시 블록이 오염된 것으로 표시한다. 바람직한 실시예에서는 회신 모드에서의 기록 손실로, 캐시 라인/블록을 채우도록 대기하지 않고 (즉, 라인/블록을 채우도록 먼저 완료하는 것과 반대로; 본 발명에서 하드웨어는 바람직하게 이후에 채우지는 라인/블록의 나머지 부분으로 캐시에 특정한 데이터가 기록되도록 허용한다), TLB가 억세스되고, 태그가 업데이트되고, 또한 데이터가 캐시에 기록된다. 다른 억세스의 작용은 상기와 다를 수 있고 (예를 들면, 스와프 억세스, 사전 인출 억세스, 할당 억세스, 및 캐시 간섭성 지시가 다른 작용을 제공할 수 있다), 본 발명은 설명된 바람직한 특정 작용에 제한되지 않는다.
지시 인출 또는 데이터 억세스의 캐시 작용은 다음과 같이 결정된다. MMU가 디스에이블되면, 억세스는 캐시를 무시한다. MMU가 인에이블되면, 캐시 작용은 바람직하게 전반적인 캐시 작용 (캐시 구성 레지스터에 지정된; CCR, ICCR1, OCCR1 등) 및 페이지-레벨 캐시 작용 (그 억세스에 대해 PTE에 지정된)에 의해 결정된다. 이들 두 작용은 바람직하게 더 제한적인 작용을 선택함으로서 조합된다. 캐시 작용은 일반적으로 메모리에서 물리적 페이지의 특징이므로, 소프트웨어는 특별한 물리적 페이지에 대한 모든 억세스가 호환가능한 캐시 작용을 사용하는 것을 보장하여야 한다. 예를 들면, 물리적 페이지에 대한 모든 데이터 억세스는 똑같은 오퍼랜드 캐시 작용을 사용하여야 하고, 물리적 페이지로부터의 모든 지시 인출은 똑같은 지시 캐시 작용을 사용하여야 한다.
바람직한 실시예에서, 캐시 작용은 지시 억세스 및 데이터 억세스에 무관하게 선택될 수 있지만, 바람직하게 특별한 물리적 페이지에 대해 허용된 조합에는 제한이 있다. 이러한 실시예에서, 캐시 처리 불가능한 지시 작용은 캐시 처리 불가능한 데이터 작용 (디바이스 또는 캐시 처리되지 않은)과 사용될 수 있다. 바람직하게, 캐시 처리 가능한 지시 작용은 캐시 처리 가능한 데이터 작용 (기록 또는 회신)과 사용될 수 있다. 이러한 제한은 통합 캐시와의 실시에서 정확한 작용을 보장하는데 바람직하다. 이제는 바람직한 실시예에서 캐시 작용에 대한 추가 논의가 제공된다.
캐시 처리되지 않은 지시 작용과의 억세스는 바람직하게 메모리 시스템에서 직접 실행된다. 바람직한 실시예에서, 캐시 처리되지 않은 지시는 캐시에 배치되지 않으므로, 이들 억세스는 절대로 캐시에 닿거나 캐시의 상태를 변화시키지 못한다. 본 발명의 특별한 실시에서는 이러한 억세스가 최적화된 방식으로 사용된다. 이러한 실시에서는 억세스에 지정된 것 보다 더 많은 데이터가 전달되고, 다른 억세스 없이 억세스가 집성된다.
캐시 처리된 지시 작용과의 억세스는 캐시를 통해 실행된다. 이들 억세스는 캐시에 닿아 깨끗한 캐시 블록을 할당한다. 본 발명의 특별한 실시에서는 이러한 억세스가 또한 최적화된다. 이러한 실시에서는 억세스에 지정된 것 보다 더 많은 데이터가 전달되고, 다른 억세스 없이 억세스가 집성된다.
디바이스 데이터 작용과의 억세스는 메모리 시스템에서 직접 실행된다. 디바이스 데이터는 바람직하게 캐시에 배치되지 않으므로, 이들 억세스는 절대로 캐시에 닿거나 캐시의 상태를 변화시키지 못한다. 본 발명의 바람직한 실시에서는 억세스가 최적화되지 못한다. 이러한 실시에서는 억세스에서 지정된 정확한 양의 데이터가 전달되고, 억세스는 다른 것과 집성되지 않는다. 바람직하게, 여기서 설명된 SYNCO 지시와 같은 동기화 지시가 사용됨을 주목하여야 한다.
캐시 처리되지 않은 데이터 작용과의 억세스는 메모리 시스템에서 직접 실행된다. 캐시 처리되지 않은 데이터는 바람직하게 캐시에 배치되지 않으므로, 이들 억세스는 절대로 캐시에 닿거나 캐시의 상태를 변화시키지 못한다. 본 발명의 바람직한 실시에서는 캐시 처리되지 않은 데이터 억세스가 또한 최적화된다. 이러한 실시에서는 억세스에 지정된 것 보다 더 많은 데이터가 전달되고, 다른 억세스 없이 억세스가 집성된다.
기록 데이터 작용과의 억세스는 기록 의미를 사용하여 캐시를 통해 실행된다. 이들 억세스는 바람직하게 판독의 경우 (기록이 아니라) 캐시에 닿아 깨끗한 캐시 블록을 할당한다 (바람직하게, 본 발명에서 기록 동작하는 캐시는 기록에 할당되지 않는다). 오염된 데이터는 절대로 캐시에 배치되지 않으므로, 이들 억세스는 오염된 데이터에 절대로 닿지 않는다. 본 발명의 바람직한 실시에서는 이러한 억세스가 최적화된다. 이러한 실시에서는 억세스에 지정된 것 보다 더 많은 데이터가 전달되고, 다른 억세스 없이 억세스가 집성된다.
회신 데이터 작용과의 억세스는 회신 의미를 사용하여 캐시를 통해 실행된다. 이들 억세스는 바람직하게 캐시에 닿아 깨끗한 캐시 블록이나 오염된 캐시 블록을 할당한다. 본 발명의 바람직한 실시에서는 이러한 억세스가 최적화된다. 이러한 실시에서는 억세스에 지정된 것 보다 더 많은 데이터가 전달되고, 다른 억세스 없이 억세스가 집성된다.
캐시 처리 가능한 억세스가 캐시를 손실할 때, 캐시 대치 알고리즘은, 있는 경우, 어느 캐시 블록이 캐시로부터 제거되어 새로운 억세스가 캐시 처리되도록 허용하는가를 결정하는데 사용된다. 억세스의 어드레스는 캐시로 인덱스되어 (여기서 설명된 바와 같이) 세트를 선택하는데 사용된다. 선택된 세트에는 nways의 캐시 블록이 있고, 대치될 후보가 있다. 캐시 대치 알고리즘의 상세한 내용은 특별한 실시예에 대해 선택될 수 있다. 바람직한 실시예는 그 세트에 대한 최근 억세스 내력에 의해 영향을 받아 선택하도록 각 세트에 대해 일부 추가 상태를 유지하는 알고리즘을 사용한다. 바람직한 특정 실시예에서 사용되는 알고리즘은 가장 최근에 사용된 캐시 블록을 선택하는 것이다. 특정 실시예에서는 캐시 로킹 (locking) 특성이 제공된다. 캐시 로킹 특성은 데이터가 캐시 블록으로 로드되어 고정되도록 허용한다. 고정된 캐시 블록은 대치될 수 없으므로, 명확하게 없애질 때까지 캐시에 남아있다. 특정 실시예에서는 특별한 세트에 모든 캐시 블록을 고정하는 것이 가능하다 (예를 들면, 여기서 설명된 바와 같이, PREFI 또는 PREFO형의 지시를 사용해 고정되게 채우는 방식). 이러한 실시예에서는 대치 알고리즘이 대치가능한 블록을 찾지 못하고, 그 세트에 대한 캐시 손실은 캐시 처리 없이 메모리에서 실행된다. 캐시 로킹의 다른 특성은 특별한 실시예에 대해 최적화될 수 있다.
바람직한 실시예에서, 스와프 억세스는 캐시가 아니라 메모리에서 실행된다. 이는 캐시 작용에 관계없이 메모리 시스템에서 안전한 동기화를 제공한다. 다양한 캐시 작용에 대해 바람직한 스와프 지시로 실행되는 작용은 다음을 포함한다. 스와프는 메모리에서 극소로 (즉, 인터럽트 없이, 주변 디바이스가 완료 이전에 버스의 제어를 취하지 않고, 완료될 때까지 실행되는) 실행된다. 기록 작용에서, 유효 어드레스는 캐시 처리되지만, 오염되지는 않는다. 캐시 처리되면, 캐시 블록은 무효화된다. 스와프는 메모리에서 극소로 실행된다. 회신 작용에서, 유효 어드레스는 캐시 처리되고 오염된다. 캐시 처리되면, 캐시 블록은 정화된다 (오염된 경우 회신되고, 이어서 무효화된다). 스와프는 메모리에서 극소로 실행된다. 각 경우에서, 스와프 처리가 실행된 이후에는 타켓 메모리 위치가 캐시 처리되지 않는다.
바람직한 실시예에서, MMU가 인에이블될 때, 캐시 작용을 부적절하게 사용하면, 결과적으로 억세스가 불일치한 상태로 캐시를 찾게 된다. 이러한 상태는 캐시 패러독스 (cache paradox)라 칭하여진다. 캐시 작용은 페이지-레벨 캐시 작용 및 전반적인 캐시 작용에 의해 결정되고, 페이지-레벨 또는 전반적인 캐시 작용의 부적절한 관리는 캐시 패러독스를 일으킬 수 있다. 바람직한 실시예에서, 소프트웨어 (예를 들면, 운영 체계)는 다음의 상황을 방지하면서 메모리를 관리한다 (하나 이상의 다양한 응용 프로그램을 운행할 수 있게 하면서): 'UNCACHED INSTRUCTION' 작용을 사용하는 지시 억세스는 캐시에 닿는다; 'DEVICE' 작용을 사용하는 데이터 억세스는 캐시에 닿는다; 'UNCACHED DATA' 작용을 사용하는 데이터 억세스는 캐시에 닿는다; 'WRITE-THROUGH DATA' 작용을 사용하는 데이터 억세스는 캐시에 닿고 캐시 블록이 오염된다. 바람직한 실시예에서, 이들 억세스의 작용은 설계적으로 정의되지 않고, 바람직하게 소프트웨어는 특별한 물리적 페이지의 캐시 작용이 변할 때 이러한 상황들을 방지하도록 캐시를 명확하게 "밀착 (cohere)"시킨다. MMU가 디스에이블될 때, 캐시의 상태는 무시되어 동작되지 않으므로, 캐시 패러독스가 일어날 수 없다. 가능한 시나리오는 소프트웨어가 인에이블된 MMU로 운행하고 있고, 일부 이유로 MMU를 디스에이블 시키고, 이어서 MMU를 다시 인에이블시키는 것이다. 소프트웨어가 이 시퀀스를 통해 밀착된 메모리 모델을 요구하면, 적절한 캐시 관리를 통해 소프트웨어에서 간섭성이 이루어져야 한다.
바람직한 실시예에서 캐시와 MMU 사이의 중요한 상호작용을 요약하기 위해: 정상적인 캐시 동작은 MMU가 인에이블될 때만 제공되고; 캐시 동질성 문제점의 해결을 돕도록 MMU 구성에 제한이 주어지고; 또한 페이지 테이블 엔트리를 변화시키는 것은 전형적으로 캐시의 적절한 소프트웨어 관리를 요구한다.
바람직한 실시예에서는 캐시 동작을 제어 및 관리하도록 제공된 캐시 지시의 카테고리가 3가지 있다: 사전 인출 (prefetch); 할당 (allocate); 및 간섭성 (coherency). 이러한 지시는 소프트웨어가 대부분 실시에 독립적인 방식으로 캐시 동작을 제어 및 최적화하도록 허용한다. 이러한 지시에 의해 캐시 블록 크기가 노출되고, 이 값은 특정 실시예에 대해 선택될 수 있음을 주목하여야 한다.
바람직한 실시예에서, 캐시 지시의 대부분은 지시 스트림으로부터만 관찰될 때 메모리 모델의 의미에 대해 기능적인 효과를 갖지 않는다. 그러나, 특정한 지시 ALLOCO 및 OCBI (이후 더 상세히 설명될)는 메모리 모델에 대해 관찰가능한 효과를 가질 수 있다. 이러한 지시는 메모리 위치의 값을 수정하고, 수정된 위치의 값은 캐시 블록 크기에 의해 결정된다. 다른 캐시 블록 크기를 갖는 실시에 대해 휴대성 (portability)을 원하면, 이들 지시를 사용할 때 특별한 주위가 있어야 한다.
바람직한 실시예는 지정된 유효 어드레스로부터 소프트웨어 지향 사전 인출을 위해 2가지 지시를 제공한다. PREFI형 지시는 바람직하게 지시로 캐시 블록을 사전 인출하는데 사용되고, PREFO형 지시는 바람직하게 데이터로 캐시 블록을 사전 인출하는데 사용된다. 이러한 방식으로 사용될 때, 소프트웨어는 이러한 지시들을 성능 힌트로 생각할 수 있다; 이들은 의미가 아니라 타이밍에 영향을 준다. PREFI는 소프트웨어 지향적이라는 것을 제외하면 지시 인출과 매우 유사하게 작용한다. PREFO는 데이터가 레지스터 보다는 캐시 블록으로 로드된다는 것을 제외하면 판독 억세스와 매우 유사하게 작용한다. 대부분에 있어서, 사전 인출은 바람직하게 정상적인 억세스와 유사하게 작용한다.
이러한 사전 인출로, 캐시 작용 및 캐시 로킹을 포함하는 캐시 동작은 바람직하게 정상적인 억세스와 매우 유사하게 실행된다. 이러한 지시는 정상적인 억세스와 매우 유사하게 캐시 패러독스에 민감하다. 바람직한 실시예에서는 사전 인출 지시가 바람직하게 아무런 효과도 갖지 않는 다수의 시나리오가 있다. 사전 인출은 MMU가 디스에이블될 때 아무런 효과도 갖지 않는다. 디바이스 또는 캐시 처리되지 않은 작용의 사전 인출은 아무런 효과도 갖지 않는다. 실시예가 지시 캐시 또는 통합 캐시를 제공하지 않으면, PREFI 지시는 아무런 효과도 갖지 않는다. 실시예가 오퍼랜드 캐시나 통합 캐시를 제공하지 않으면, PREFO 지시는 아무런 효과도 갖지 않는다. 사전 인출은 바람직하게 어드레스 에러, 해석 실수, 또는 보호 예외를 일으키지 않는다. 어드레스 에러가 있거나, 해석이 이용가능하지 않거나, 또는 보호 점검이 잘못되면, 사전 인출은 바람직하게 아무런 효과도 갖지 않는다. 이러한 특징은 소프트웨어가 사전 인출을 "추측 (speculate)"하는 것을 허용한다. 실시예가 캐시 로킹을 제공하면, 사전 인출 지시는 캐시의 고정 부분에 정보를 미리 로드하는데 사용된다.
이제는 바람직한 PREFI 지시가 더 설명된다. PREFI는 지정된 유효 어드레스로부터의 소프트웨어 지향 지시 사전 인출을 포함한다. 소프트웨어는 특별한 지시가 요구된다는 통보를 미리 제공하는데 이 지시를 사용할 수 있다. 유효 어드레스는 바람직하게 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값 (이러한 값은 이해될 바와 같이 지시의 이진수 부호화의 필드 부분으로 부호화될 수 있다)에 부가함으로서 계산된다. 유효 어드레스는 주위의 메모리 블록을 식별하고, 또한 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 똑같은 크기를 갖는다. 바람직한 실시예는 현재 캐시 작용에 의해 허용되는 경우 캐시로 메모리 블록을 미리 인출한다. 이 지시를 실행하는 동안에는 예외가 일어나지 않는다.
이제는 바람직한 PREFO 지시가 더 설명된다. PREFO는 지정된 유효 어드레스로부터의 소프트웨어 지향 데이터 사전 인출을 포함한다. 소프트웨어는 특별한 데이터가 요구된다는 통보를 미리 제공하는데 이 지시를 사용할 수 있다. 유효 어드레스는 바람직하게 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값에 부가함으로서 계산된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 또한 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 똑같은 크기를 갖는다. 바람직한 실시예는 현재 캐시 작용에 의해 허용되는 경우 캐시로 메모리 블록을 미리 인출한다. 이 지시를 실행하는 동안에는 예외가 일어나지 않는다.
바람직한 실시예는 또한 하나 이상의 할당형 지시를 제공한다. 바람직한 ALLOCO 지시는 지정된 유효 어드레스에 대해 오퍼랜드 캐시 블록을 할당하고 (이는 바람직하게 사전 인출과 유사하게 작용하지만, 캐시 라인을 채우지 않는다; 어레이의 태그 영역이 업데이트된다), 이제는 그에 대한 바람직한 실시가 더 설명된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 또한 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기와 똑같은 크기를 갖는다. 할당 지시는 할당된 오퍼랜드 캐시 블록이 메모리로부터 인출될 필요가 없다는 힌트를 제공한다. 바람직한 실시예에서는 ALLOCO에 의해 타켓화된 메모리 블록에 각 위치값이 0으로 설정된다 (다른 실시예에서는 단순히 정의되지 않고, 또 다른 실시예에서는 이전 상태에서 변화되지만, 명확하게 정의되지 않는다). 바람직한 ALLOCO 지시는 보호 모델을 위반한 데이터를 밝혀내지 않는다. 사용자 모드에서, ALLOCO 지시는 메모리 블록을 변화시키지 않고 남겨 두거나, 특별한 실시예에 대해 일부 패턴이 정의되거나, 또는 실행되고 있는 특별한 소프트웨어 맥락 (software thread)에 일부 데이터가 억세스가능하다. 특별 모드에서, ALLOCO 지시는 특별한 맥락이 메모리 상태의 가시성을 배열할 수 있으므로 임의의 값으로 메모리 블록을 남겨둘 수 있다.
ALLOCO는 바람직하게 회신 캐시 작용과 조합되어 사용되도록 설계되고, 바람직하게 ALLOCO는 저장 지시를 사용해 새로운 데이터로 완전히 오버라이트 (overwrite)되고, 이어서 회신되는 오퍼랜드 캐시 라인을 할당하는데 사용된다. ALLOCO는 메모리로부터의 불필요한 캐시 블록 인출을 제거하여, 판독 메모리 잠재기를 방지하고 메모리 대역폭을 줄일 수 있다. 할당 지시는 그 메모리에 대한 데이터 기록과 매우 유사하게 어드레스 에러, 해석 실수, 및 보호 예외에 대해 점검된다. 바람직한 실시예에서는 비정렬 점검이 없다; 제공된 유효 어드레스는 가장 가까운 캐시 블록 크기의 정확한 배수에 아래 방향으로 자동적으로 정렬된다. ALLOCO에 대한 캐시 작용, 캐시 패러독스, 및 캐시 로킹의 처리는 바람직하게 정상적인 억세스에 대한 것과 똑같다.
일부 상황에서는 할당 지시가 바람직하게 아무런 효과를 갖지 않는다 (예외 경우의 검출과 별도로). 예를 들면, 할당은 MMU가 디스에이블될 때 아무런 효과를 갖지 않는다. 디바이스 또는 캐시 처리되지 않은 작용과의 할당도 아무런 효과를 갖지 않는다. 실시가 오퍼랜드 캐시나 통합 캐시를 제공하지 않으면, 할당은 아무런 효과를 갖지 않는다.
이제는 바람직한 ALLOCO 지시가 설명된다. ALLOCO는 바람직하게 지정된 유효 어드레스에 대해 오퍼랜드 캐시 블록의 할당을 요구하는데 사용된다. 유효 어드레스는 바람직하게 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값에 가산함으로서 계산된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 또한 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 똑같은 크기를 갖는다. 바람직한 실시예에서, ALLOCO에 의해 타켓화된 메모리 블록에서 각 위치의 값은 0으로 설정된다. 프로그램은 바람직하게 이들 값에 의존하지 않는다. ALLOCO는 바람직하게 어드레스 에러, 해석 실수, 보화 예외의 경우를 점검한다.
바람직한 실시예는 또한 오퍼랜드 캐시가 소프트웨어에 의해 관리되도록 허용하는 캐시 간섭성 지시의 세트를 제공한다. 바람직하게, 이들 지시는 다음을 포함한다: 지시 캐시 블록을 무효화하는 ICBI; 오퍼랜드 캐시 블록을 무효화하는 OCBI; 오퍼랜드 캐시 블록을 정화하는 OCBP; 및 오퍼랜드 캐시 블록을 회신하는 OCBWB. 무효화를 위해, 캐시 블록은 바람직하게 메모리로 회신되지 않고 없애진다. 정화를 위해서는 캐시 블록이 오염된 경우 메모리로 회신되어 없애진다. 회신 (또는 때로 "플러쉬 (flush)"라 공지된)을 위해서는 캐시 블록이 바람직하게 오염된 경우 메모리로 회신되지만 없애지지는 않는다.
OCBI, OCBP, 및 OCBWB는 물리적 메모리에서 캐시 간섭성을 실행한다. 이들 지시는 밀착될 물리적 메모리에서 위치를 식별하는데 유효 어드레스를 사용한다. 이루어진 간섭성은 바람직하게 유효 어드레스 공간에서 그 물리적 메모리의 모든 앨리어싱에 적용된다. 그러나, 바람직한 실시예에서는 ICBI만이 유효 메모리에서 간섭성을 이루도록 보장된다. 이 지시는 밀착될 유효 메모리에서 위치를 식별하는데 유효 어드레스를 사용한다. 이루어진 간섭성은 바람직하게 ICBI에 의해 보여진 유효 어드레스 공간 및 유효 어드레스에만 적용된다. 다른 실시예에서는 이 보다 더 강한 간섭성 (예를 들면, 물리적 메모리에서의 간섭성과 같이 이를 실시함으로서)이 제공될 수 있지만, 일반적으로 다른 실시에 대한 소프트웨어의 이식가능성이 요구되는 경우, 소프트웨어는 이 작용에 의존하지 말아야 한다.
이러한 지시는 바람직하게 어드레스 에러, 해석 실수, 및 메모리 억세스와 같은 보호 예외에 대해 점검된다. ICBI는 바람직하게 그 어드레스로부터의 지시 인출과 같이 점검된다. 바람직한 실시예에서는 ICBI에서 예외 경우가 일어나지만, 다른 실시예에서는 예외 경우가 일어나는 경우, 지시가 예외를 일으키지 않고 완료되도록 실행되고, 지시 캐시의 상태에 영향을 주지 않는다 (이러한 작용은 바람직하게 일부 실시예에서 디버깅 등이 약간 복잡하게 이러한 ICBI 지시를 실시하는 하드웨어의 비용이 감소되도록 허용한다).
OCBI는 바람직하게 그 어드레스에 대한 데이터 기록과 같이 점검된다. 이는 그 실행으로 메모리 값이 변화될 수 있기 때문에 (지시 스트림으로부터 관찰되는 바에 따라) 기록으로 생각된다. OCBP 및 OCBWB는 바람직하게 그 어드레스의 판독가능성 또는 기록가능성에 대해 점검된다. 그래서, 판독 및 기록이 모두 금지되면, 보호 예외가 일어나게 된다. 예외 종류는 이들 지시의 실행으로 메모리 값이 변화되지 않으므로 (지시 스트림으로부터 관찰되는 바에 따라) 판독 예외로 생각된다. 이들 지시에는 비정렬 점검이 없다; 제공된 유효 어드레스는 가장 가까운 캐시 블록 크기의 정확한 배수에 아래 방향으로 자동적으로 정렬된다.
이들 지시의 바람직한 형태는 캐시의 상태에 직접 동작한다. 다수의 중요한 점에 있어서, 이들 지시는 바람직하게 정상적인 메모리 억세스와 아주 다르게 작용한다. 예를 들면, 이들 지시는 MMU가 디스에이블된 경우에도 캐시의 상태를 업데이트한다. 부가하여, 이들 지시는 프로그램된 캐시 작용에 무관하게 캐시의 상태를 업데이트한다. 또한, 이들 지시는 캐시 로킹에 무관하게 캐시의 상태를 업데이트한다. 이들 지시는 캐시 패러독스에 민감하지 않다. 그러나, 명백한 바와 같이, 이러한 지시 기능은 바람직하게 본 발명에 따라 캐시 동작을 관리하는데 사용된다.
이들 지시는 바람직하게 간단하게 잘 정의된 사용 모델을 갖는다. 소프트웨어는 캐시 및 MMU 구성에 무관하게 캐시에 대해 보장된 효과를 갖도록 이들 지시를 사용할 수 있다. 특별한 실시예가 지시 캐시 또는 통합 캐시를 제공하지 않으면, ICBI는 예외에 대해 점검되고, 그렇지 않은 경우에는 동작이 없는 것처럼 작용한다. 특별한 실시예가 오퍼랜드 캐시 또는 통한 캐시를 제공하지 않으면, OCBI, OCBP, 및 OCBWB는 예외에 대해 점검되고, 그렇지 않은 경우에는 동작이 없는 것처럼 작용한다. 통합 캐시 실시예에서, ICBI 및 OCBI는 캐시에 똑같은 효과를 갖지만, 그들의 예외 점점은 다름을 주목하여야 한다. 소프트웨어는 바람직하게 ICBI가 지시 무효화에 사용되고 OCBI가 데이터 무효화에 사용되는 것을 보장한다. 이는 분리된 캐시를 갖는 다른 실시예에 대한 소프트웨어 이식가능성을 증진시킨다.
이제는 바람직한 ICBI 지시가 더 설명된다. ICBI는 바람직하게 지정된 유효 어드레스에 대응하는 지시 캐시 블록 (있는 경우)을 무효화한다. 통합 캐시 조직이 사용되고 지시 캐시 블록내의 데이터가 오염되면, 이는 바람직하게 메모리로의 회신 없이 없애진다. 유효 어드레스는 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값에 가산함으로서 계산된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 같은 크기를 갖는다. ICBI는 어드레스 에러, 해석 실수, 및 보호 예외 경우를 점검한다. ICBI의 실행 직후에, 예외 경우가 검출되지 않는다고 가정하면, 유효 어드레스 공간에서 타켓화된 메모리 블록이 지시 또는 통합 캐시에 주어지지 않음을 보장한다. ICBI는 유효 메모리에 무효화를 실행함을 주목하여야 한다. 다른 유효 어드레스 또는 다른 유효 어드레스 공간에서는 앨리어싱의 무효화에 대한 보장이 없다.
이제는 바람직한 OCBI 지시가 더 설명된다. OCBI는 바람직하게 지정된 유효 어드레스에 대응하는 오퍼랜드 캐시 블록 (있는 경우)을 무효화한다. 오퍼랜드 캐시 블록내의 데이터가 오염되면, 이는 메모리로의 회신 없이 없애진다. 유효 어드레스는 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값에 가산함으로서 계산된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 같은 크기를 갖는다. OCBI는 어드레스 에러, 해석 실수, 및 보호 예외 경우를 점검한다. OCBI의 실행 직후에, 예외가 일어나지 않는다고 가정하면, 물리 어드레스 공간에서 타켓화된 메모리 블록이 오퍼랜드 또는 통합 캐시에 주어지지 않음을 보장한다.
이제는 바람직한 OCBP 지시가 더 설명된다. OCBP는 바람직하게 지정된 유효 어드레스에 대응하는 오퍼랜드 캐시 블록 (있는 경우)을 정화한다. 오퍼랜드 캐시 블록내의 데이터가 오염되면, 이는 없애지기 이전에 메모리로 회신된다. 유효 어드레스는 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값에 가산함으로서 계산된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 같은 크기를 갖는다. OCBP는 어드레스 에러, 해석 실수, 및 보호 예외 경우를 점검한다. OCBP의 실행 직후에, 예외가 일어나지 않는다고 가정하면, 물리 어드레스 공간에서 타켓화된 메모리 블록이 오퍼랜드 또는 통합 캐시에 주어지지 않음을 보장한다.
이제는 바람직한 OCBWB 지시가 더 설명된다. OCBWB는 바람직하게 지정된 유효 어드레스에 대응하는 오퍼랜드 캐시 블록 (있는 경우)을 회신한다. 오퍼랜드 캐시 블록내의 데이터가 오염되면, 이는 메모리로 회신되지만 없애지지 않는다. 유효 어드레스는 범용 레지스터(Rm)의 내용을 (바람직하게) 6-비트 부호-확장 치환값에 가산함으로서 계산된다. 유효 어드레스는 주변의 메모리 블록을 식별하고, 이는 캐시 블록 크기에 정렬된 어드레스에서 시작되고 캐시 블록 크기 (특별한 실시예에 대해 선택되는)와 같은 크기를 갖는다. OCBWB는 어드레스 에러, 해석 실수, 및 보호 예외 경우를 점검한다. OCBWB의 실행 직후에, 예외가 일어나지 않는다고 가정하면, 물리 어드레스 공간에서 타켓화된 메모리 블록이 오퍼랜드 또는 통합 캐시에서 오염되지 않음을 보장한다.
상술된 바와 같이, 바람직한 특정 실시예는 캐시 또는 "가상 캐시 (virtual cache)"에 대해 가상적으로 인덱스 처리되고, 가상적으로 태그 처리된 배열을 실시한다. 이제는 이러한 가상 캐시의 바람직한 실시예에 대한 추가 상세 내용이 설명된다. 다른 실시예는 여기서 설명된 가상 캐시 또는 특별한 가상 캐시 특성을 반드시 사용하지는 않음을 주목하여야 한다; 그러나, 이러한 가상 캐시는 이와 같은 바람직한 실시예에서 현저한 이점 및 이득을 제공하는 것으로 믿어진다.
바람직한 실시예는 바람직하게 분할 캐시 조직을 사용한다; 오퍼랜드 데이터 및 지시에 대해 분리된 캐시가 있다. 두 캐시는 모두 바람직하게 유효 어드레스를 사용하여 인덱스 처리되고, 유효 어드레스에 의해 태그 처리된다 (가상 캐시). 이와 같이 바람직한 배열은 여기서 설명된 MMU 및 캐시 설계와 사용되고, 그에 의해 지지될 수 있다. 이러한 가상 캐시의 사용은 바람직하게 PTE 어레이에 알릴 필요없이 대부분 캐시에 닿을 수 있도록 허용한다. 이는 물리 어드레스를 근거로 하는 실시에 관련되어 성능 및 전력의 이점을 제공한다. 본 발명의 가상 캐시는 여기서 더 상세히 설명되는 바와 같이 캐시 블록에 많은 PTE 정보를 유지한다.
캐시 실시가 캐시 블록을 태그 처리하는데 유효 어드레스를 사용할 때는 여기서 설명된 바와 같이, 캐시 동질성의 문제점이 고려되어야 한다. 바람직한 MMU 설계는 특별한 물리 어드레스가 다수의 유효 어드레스 공간에서 다수의 유효 어드레스에 맵핑되도록 허용한다. 문제는 이들 앨리어싱으로 특정한 물리 어드레스에 대해 유효한 다수의 동시 캐시 블록이 주어질 수 있는가, 즉 캐시가 동질성을 포함할 수 있는가 여부이다. 동질성이 허용되면, 이들 동질성의 간섭성이 고려되어야 한다.
바람직한 실시예에서, 동질성은 오퍼랜드 캐시 블록에 대해 존재하지 않도록 보장된다. 바람직한 실시예는 물리 어드레스에 대응하여 많아야 하나의 오퍼랜드 캐시 블록이 있음을 보장하도록 오퍼랜드 캐시 동질성을 해결하는 여기서 논의된 명확한 메카니즘을 제공한다. 또한, 바람직한 특정 실시예에서, 동질성은 지시 캐시 블록에 대해 존재하고, 이러한 실시예는 지시 캐시 동질성을 해결하는 메카니즘을 제공하도록 요구되지 않는다. 특별한 물리 어드레스에 대응하여 다수의 지시 오퍼랜드 블록이 존재할 수 있다. 이러한 실시예에서는 바람직하게 특별한 물리 어드레스의 동질성이 똑같은 세트에서 일어나게 됨이 보장된다. 또한, 소프트웨어 제한 및 MMU의 적절한 사용 등에 대해서는 여기서 논의된 것을 참고한다.
그래서, 바람직한 실시예는 오퍼랜드 캐시에서 동질성을 해결하지만, 지시 캐시에서는 동질성을 해결하지 못한다. 지시 캐시가 4-방법으로 연합되므로, 지시 캐시에서는 특별한 물리 어드레스에 대해 4개 까지의 동질성이 있을 수 있다. 동질성 해결에 대한 정책 사이에는 불균형이 있다. 이는 지시 캐시가 기록을 지지하지 않고, 지시의 다중 복사가 지시 캐시에서 모순에 이르지 않기 때문이다. 그러나, 바람직한 실시예에서, 이 특징은 ICBI 지시를 통해 소프트웨어에 가시적이다. 소프트웨어는 바람직하게 지시를 무효화할 때 특별한 주위를 기울인다 (예를 들면, 동질성이 또한 무효화되는 것을 보장하기 위해). 캐시 및 MMU 설계의 다른 특성 (여기서 설명된)은 효과적으로 어드레스 지정되고 효과적으로 태그 처리된 캐시로 설계되는 작업이다. 바람직하게, 소프트웨어는 여기서 설명된 바와 같이 페이지 테이블 엔트리의 내용이 변할 때 캐시 간섭성을 보장한다. 또한, 여기서 설명된 바와 같이, 유효 태그를 포함하여 바람직한 실시예에서의 캐시의 내부 상태는 구성 레지스터를 통해 가시적이다. 이는 캐시가 관리 및 제어되는 탄력적이고 편리한 방법을 제공한다.
바람직한 실시예에서, 두 캐시는 모두 4-방법으로 연합적이다. 또한 이러한 실시예에서는 대치 알고리즘이 LRU (least-recently used policy)를 실시하는데 세트당 6 비트의 상태를 사용한다. LRU 상태는 최종 사용에 의해 결정된 순서로 그 세트에서 유효한 블록의 순서를 정한다. 이 상태는 순서가 정해진 리스트와 똑같고, 처음에 있는 성분은 가장 오래전에 사용된 유효 블록을 나타내고, 끝에 있는 성분은 가장 최근에 사용된 유효 블록을 나타낸다. 무효 블록은 바람직하게 이 리스트에 나타나지 않는다.
부가하여, 바람직한 실시예는 캐시 로킹 (cache locking) 메카니즘을 제공한다. 캐시 로킹으로, 소프트웨어는 지정된 메모리 블록이 캐시에 고정되도록 배열할 수 있다. 바람직한 실시예에서 로킹의 입도는 방향이다. 캐시에서 각 방향은 독립적으로 고정되거나 고정되지 않을 수 있다. 일단 방향이 고정되면, 그 방향은 대치 후보가 아니므로, 정상적인 캐시 동작은 로킹된 방법으로 캐시 블록을 축출한다. 캐시 처리 가능한 각 억세스에서, 대치 방법은 바람직하게 다음과 같이 작용한다.
1. 억세스가 캐시에 닿으면, 이 캐시 블록은 이를 순서 리스트의 끝으로 이동시킴으로서 가장 최근에 사용된 것으로 표시된다.
2. 그렇지 않은 경우, 억세스가 캐시를 손실하고 세트가 무효이고 고정되지 않은 블록을 포함하면, 이들 블록 중 하나가 선택된다. 이러한 블록이 다수 있으면, 이들 블록 중 하나를 선택한다 (바람직한 실시예에서는 실제 선택이 중요하지 않다). 선택된 블록은 이를 순서 리스트의 끝으로 이동시킴으로서 가장 최근에 사용된 것으로 표시된다.
3. 그렇지 않은 경우, 억세스가 캐시를 손실하고 세트가 유효하고 고정되지 않은 블록을 포함하면, 이들 블록 중 하나가 선택된다. 바람직하게 가장 오래전에 사용된 블록이 선택된다; 이는 순서 리스트의 헤드에 가장 가까운 것이다. 선택된 블록은 이를 순서 리스트의 끝으로 이동시킴으로서 가장 최근에 사용된 것으로 표시된다.
4. 그렇지 않은 경우, 억세스는 캐시를 손실하고 모든 블록은 고정된다 (이들은 유효하거나 무효일 수 있다). 이 경우, 대치 후보는 없고, 메모리는 캐시 처리 없이 메모리에서 실시된다.
대치를 위해, 바람직한 실시예에서는 모든 캐시 지시가 억세스로 카운트되어, 상기 알고리즘에 의해 요구되는 바와 같이 가장 오래전에 사용된 정보가 업데이트된다. 바람직한 실시예는 대치 과정의 상태를 기록하는데 6-비트 필드 (LRU라 칭하여지는)를 사용한다. 각 캐시 세트와 연관된 LRU 필드가 있다. 지정된 방향으로 사전 인출을 허용하기 위해 상기 대치 과정을 번복하는 것이 가능함을 주목하여야 한다. 이 특성은 사전 인출 지시를 사용해 로킹 방법이 주어지는 것을 허용하도록 제공되고, 이는 여기서 설명된다.
바람직한 실시예에서, 캐시 로킹은 캐시 구성 레지스터를 통해 구성되므로, 바람직하게 특별 모드에서만 관리된다. 바람직한 캐시 로킹 구성은 어드레스 공간 식별자에 관계없이 사용자 및 특별 모드에서 모든 소프트웨어 실행 맥락에 영향을 준다. 캐시 로킹의 전형적인 용도는 캐시 동작과 RAM 동작 사이에서 캐시 상태를 분할하는 것이다. 하나 이상의 캐시 방법이 고정되고 메모리 위치의 세트로 로드된다. 이러한 메모리 위치는 고정되지 않은 캐시 방법이 캐시로 계속 작용하는 동안 낮은 잠재기의 RAM으로 작용한다. 캐시 로킹 메카니즘의 효과는 캐시 대치 알고리즘에 영향을 주는 것이다. 다른 캐시 특징 및 작용은 바람직하게 캐시 로킹의 사용에 의해 영향을 받지 않는다. 캐시 블록이 캐시로 고정될 때, 바람직한 실시예에서 그 캐시 블록에 대한 데이터 및 어드레스 정보는 아직까지 판독, 기록, 캐시 지시, 및 캐시의 정상적인 동작에 의해 수정될 수 있다. 캐시 로킹이 제공하는 특징은 단지 고정된 캐시 블록이 대치에 선택되는 것을 방지하는 것이다.
일단 방법이 고정되면, 그 방법은 대치 후보가 아니므로, 정상적인 캐시 동작은 로킹 방법으로 캐시 블록을 축출하지 못한다. 이러한 규칙은 바람직하게 캐시 블록이 유효한가 무효인가 여부에 관계없이 적용된다. 그래서, 로킹 방향의 무효 캐시 블록은 대치 후보가 아니다. 캐시에서 임의의 방법 또는 모든 방법을 고정시키는 것이 가능하다. 일부 방법이 고정되지 않으면, 정상적인 캐시 동작은 이들 모든 비고정 방법으로 계속된다. 모든 방법이 고정되면, 캐시 손실로 캐시 블록이 캐시에 할당될 수 없고, 캐시 처리없이 메모리에서 직접 이루어진다.
캐시 간섭성 지시는 바람직하게 이들 캐시 블록이 고정되었나 여부에 관계없이 캐시 블록에서 직접 동작된다. MMU에 의해 제공되는 보호 메카니즘은 요구되는 경우, 부적절한 억세스에 대해 고정된 캐시 블록을 보호하는데 사용될 수 있다. 소프트웨어 실행 맥락이 지시 캐시 블록에 대해 실행가능성을 가지면, 그 맥락은 그 블록을 무효화시킴 (로킹에 관계없이)을 주목하여야 한다. 유사하게, 맥락이 오퍼랜드 캐시 블록에 대해 기록가능성을 가지면, 그 맥락은 그 블록을 무효화시킨다 (로킹에 관계없이). 캐시는 여기서 더 상세히 설명되는 바와 같이, 사전 인출 지시를 사용하여 메모리 블록이 지정된 방법으로 로드될 수 있도록 정상적인 대치 알고리즘을 번복하는 메카니즘을 제공한다. 바람직한 실시예는 여기서 또한 더 상세히 설명되는 바와 같이, 캐시 구성 레지스터를 사용한다. 이러한 바람직한 실시예는 분리된 지시 및 오퍼랜드 캐시를 지지하고, 캐시 구성 레지스터는 또한 바람직하게 똑같은 방법으로 나뉜다. 각 캐시는 다음 레지스터와 연관된다:
전반적인 캐시 작용 및 캐시 로킹을 제어하는 캐시 구성 레지스터 (ICCR 및 OCCR);
캐시 태그 정보를 포함하는 구성 레지스터의 어레이 (ICACHETAG 및 OCACHETAG); 및
캐시 데이터 정보를 포함하는 구성 레지스터의 어레이 (ICACHEDATA 및 OCACHEDATA).
구성 레지스터 ICCR 및 OCCR은 GETCFG 지시를 사용하여 판독되고 PUTCFG 지시를 사용하여 기록될 수 있다. 이러한 레지스터는 바람직하게 캐시 처리, 전반적인 캐시 무효화, 기록 (write-through)/회신 (write-back) 선택 (오퍼랜드 캐시만), 및 캐시 로킹의 관리를 인에이블하는데 사용된다. PUTCFG 내지 ICCR은 바람직하게 동기화 지시(SYNCI)로 이어져야 하고, PUTCFG 내지 OCCR은 또 다른 동기화 지시(SYNCO)로 이어져야 한다. 본 발명의 범위에 제한되는 것으로 의도되지만, 바람직한 실시예에서는 이러한 지시가 캐시 특징을 수정하면서 지시 인출 및 데이터 억세스의 동기화를 보장한다.
태그 및 데이터 구성 레지스터는 바람직하게 GETCFG 사용해 판독될 수 있다. 이는 특별 모드 맥락이 캐시의 내부 상태를 관찰하도록 허용한다. 이는 바람직하게 특정 캐시 블록을 밀착시키는 캐시 간섭성 지시와 조합되어 사용될 수 있다. 이는 또한 바람직하게 더버깅 동안 캐시 상태의 가시성을 제공하도록 디버거 (debugger)와 사용될 수 있다. 캐시 상태는 매우 휘발성이 강하므로, 예측가능한 결과를 이루기 위해서는 주위가 요구됨을 주목하여야 한다. 캐시 상태는 다음 상황에서 안정한 상태로 관찰될 수 있다. MMU가 디스에이블 될 때, 지시 캐시 및 오퍼랜드 캐시는 모두 동작되지 않는다. GETCFG를 통해 관찰될 때, 이러한 캐시의 상태는 비휘발성이다.
MMU가 인에이블될 때는 안정한 캐시 상태를 관찰하기 위해 상당한 주위가 필요하다. 특별히, 캐시 대치 방법이 캐시 상태를 변화시키는 것을 방지하도록 캐시 로킹 메카니즘이 사용되어야 한다. 로킹 지시 캐시 방법에 대응하는 ICACHETAG 및 ICACHEDATA 구성 레지스터는 GETCFG를 통해 관찰될 때 비휘발성이 된다. 오퍼랜드 캐시에 대해서도 또한 OCACHETAG 및 OCACHEDATA로 변화될 수 있으므로 오퍼랜드 캐시에 닿는 로드 또는 저장 억세스를 방지할 필요가 있다. 안정한 오퍼랜드 캐시 상태를 관찰하기 위해, 소프트웨어는 이들 GETCFG 시퀀스에서 로드 및 저장을 사용하는 것을 방지하도록 기록되어야 한다; 이는 적절한 동기화 지시(SYNCO) 장벽을 요구할 수 있다. 이 경우, 로킹 오퍼랜드 캐시 방법에 대응하는 OCADHETAG 및 OCACHEDATA 구성 레지스터는 GETCFG를 통해 관찰될 때 비휘발성이 된다.
또한, 이들 구성 레지스터는 기록되지 말아야 함을 주목하여야 한다. 이들 레지스터에 대한 PUTCFG의 작용은 정의되지 않은 작용에 이를 수 있다. 특별히, 메모리 모델이 손상되어, 메모리 억세스의 작용이 예측불가능해질 수 있다.
바람직한 실시예에서는 2가지의 지시 캐시 제어 레지스터 ICCR0 및 ICCR1이 있다. ICCR0에 대해, 소프트웨어는 이 레지스터에 기록할 때 주위를 기울어야 함을 주목하여야 한다. 지시 캐시 처리가 인에이블에서 디스에이블로 변하면, 지시 캐시는 캐시 패러독스를 방지하도록 동시에 무효화되어야 한다.
설명을 위해, 도 7a 및 도 7b는 바람직한 실시예에서 사용되는 ICCR0 및 ICCR1 구성 레지스터의 필드에 대한 모범적인 실시예의 요약 설명을 제공한다. 다른 실시예는 이러한 구성 레지스터에 다른 배열을 사용할 수 있고, 도시된 특정한 실시는 본 발명을 제한하도록 의도되지 않는다.
바람직한 실시예에서, ICACHETAG 구성 레지스터는 2차원 어레이로 조직된다. 이 어레이는 바람직하게 지시 캐시에서 특별한 블록에 대해 태그 정보를 제공하도록 방법 번호와 인덱스 번호로 첨자가 주어진다. 각 지시 캐시 블록에 대한 태그 정보는 하나의 구성 레지스터에 보유된다. ICACHETAG0은 바람직하게 유효 어드레스 태그를 보유한다. 이 레지스터는 또한 바람직하게 유효한 비트를 포함한다. 이는 무효 블록을 나타낼 때 클리어되고, 유효 블록을 나타낼 때 설정된다. 블록이 무효일 때, 모든 다른 필드는 정의되지 않은 값을 갖는다. 바람직한 실시예에서, ICACHETAG 구성 레지스터로의 기록은 정의되지 않은 작용에 이를 수 있음을 주목하여야 한다.
설명을 위해, 도 7c는 바람직한 실시예에서 사용되는 ICACHETAG 구성 레지스터의 필드에 대한 모범적인 실시예의 요약 설명을 제공한다. 다른 실시예는 이러한 구성 레지스터에 대해 다른 배열을 사용할 수 있고, 도시된 특정한 실시는 본 발명을 제한하도록 의도되지 않는다.
바람직한 실시예에서, ICACHEDATA 구성 레지스터는 3차원 어레이로 조직된다. 이 어레이는 바람직하게 지시 캐시에서 특별한 블록에 대해 데이터 정보를 제공하도록 방법 번호, 인덱스 번호, 및 레지스터 번호로 첨자가 주어진다. ICACHEDATA의 정보는 바람직하게 대응하는 ICADHETAG가 유효할 때만 정의된다. 바람직한 하나의 특별 실시예에서, 예를 들면, 각 지시 캐시 블록은 32 바이트의 데이터를 포함한다. 32 바이트는 4개의 64-비트 구성 레지스터에 걸쳐 분포된다. 이들 레지스터는 r이라 번호가 정해지고, 여기서 r은 [0, 3]이다. 이 블록에 의해 캐시 처리된 물리 어드레스가 P라 나타내진다고 가정하고, 여기서 P는 캐시 블록 크기의 배수이다. 물리적 메모리는 PMEM이라 칭하여지는 바이트-어레이로 나타내진다고 가정한다. 레지스터 r의 하단 32 비트는 PMEM[P+8r FOR 4]에 대응하는 캐시 처리된 데이터를 포함한다. 레지스터 r의 상단 32 비트는 PMEM[P+8r+4 FOR 4]에 대응하는 캐시 처리된 데이터를 포함한다.
각 ICACHEDATA 레지스터에서 데이터의 엔디언 (endian)은 2개의 32-비트 메모리 억세스와 일치한다. 데이터는 바람직하게 언제나 2개의 지시 (예를 들면, 각각 32 비트의 제1 지시 세트인 "모드 A 지시")로 해석을 위해 정확하게 포맷화된다. 작은 엔디언 모드에서는 또한 4개의 지시 (예를 들면, 각각 16 비트의 제2 지시 세트인 "모드 B 지시")로 해석을 위해 정확하게 포맷화된다. 그러나, 큰 엔디언 모드에서는 제1 및 제2 모드 B 지시가 레지스터에서 스와프 (swap) 처리되어 나타나고, 제3 및 제4 모드 B 지시가 또한 스와프 처리되어 나타나게 된다. 이 스와프 처리는 소프트웨어에서 행해지지 않는다. ICACHEDATA 구성 레지스터로의 기록은 정의되지 않은 작용에 이를 수 있음을 주목하여야 한다.
설명을 위해, 도 7d는 바람직한 실시예에서 사용되는 ICACHEDATA 구성 레지스터의 필드에 대한 모범적인 실시예의 요약 설명을 제공한다. 다른 실시예는 이러한 구성 레지스터에 다른 배열을 사용할 수 있고, 도시된 특정한 실시는 본 발명을 제한하도록 의도되지 않는다.
바람직한 실시예에서는 2개의 오퍼랜드 캐시 제어 레지스터 OCCR0 및 OCCR1이 있다. OCCR0 레지스터에 대해, 소프트웨어는 이 레지스터에 기록할 때 주위를 기울어야 한다. 오퍼랜드 캐시가 무효화되면, 오염된 캐시 블록의 상태는 손실된다. OCCR0.OCE 또는 OCCR0.OWT 필드의 값을 변화시키면, 결과적으로 캐시 작용이 변화된다. 캐시 패러독스를 방지하기 위해서는 오퍼랜드 캐시를 플러쉬, 정화, 또는 무효화할 필요가 있음을 주목하여야 한다.
설명을 위해, 도 7e 및 도 7f는 바람직한 실시예에서 사용되는 OCCR0 및 OCCR1 구성 레지스터의 필드에 대한 모범적인 실시예의 요약 설명을 제공한다. 다른 실시예는 이러한 구성 레지스터에 다른 배열을 사용할 수 있고, 도시된 특정한 실시는 본 발명을 제한하도록 의도되지 않는다.
바람직한 실시예에서, OCACHETAG 구성 레지스터는 2차원 어레이로 조직된다. 이 어레이는 바람직하게 오퍼랜드 캐시에서 특별한 블록에 대해 태그 정보를 제공하도록 방법 번호와 인덱스 번호로 첨자가 주어진다. 각 오퍼랜드 캐시 블록에 대한 태그 정보는 2개의 구성 레지스터에 보유된다: OCACHETAG0은 유효 어드레스 태그를 보유하고; OCACHETAG1은 물리 어드레스 태그를 보유한다. 각 레지스터는 바람직하게 유효한 비트를 포함한다. 이들는 모두 무효 블록을 나타낼 때 클리어되고, 유효 블록을 나타낼 때 설정된다. 블록이 무효일 때, 모든 다른 필드는 정의되지 않은 값을 갖는다. OCACHETAG 구성 레지스터로의 기록은 정의되지 않은 작용에 이를 수 있음을 주목하여야 한다.
설명을 위해, 도 7g 및 도 7h는 바람직한 실시예에서 사용되는 OCACHETAG0 및 OCACHETAG1 구성 레지스터의 필드에 대한 모범적인 실시예의 요약 설명을 제공한다. 다른 실시예는 이러한 구성 레지스터에 대해 다른 배열을 사용할 수 있고, 도시된 특정한 실시는 본 발명을 제한하도록 의도되지 않는다.
바람직한 실시예에서, OCACHEDATA 구성 레지스터는 3차원 어레이로 조직된다. 이 어레이는 바람직하게 오퍼랜드 캐시에서 특별한 블록에 대해 데이터 정보를 제공하도록 방법 번호, 인덱스 번호, 및 레지스터 번호로 첨자가 주어진다. OCACHEDATA의 정보는 바람직하게 대응하는 OCADHETAG가 유효할 때만 정의된다.
바람직한 실시예에서, 각 오퍼랜드 캐시 블록은 32 바이트의 데이터를 포함한다. 32 바이트는 4개의 64-비트 구성 레지스터에 걸쳐 분포된다. 이들 레지스터는 r이라 번호가 정해지고, 여기서 r은 [0, 3]이다. 이 블록에 의해 캐시 처리된 물리 어드레스가 P라 나타내진다고 가정하고, 여기서 P는 캐시 블록 크기의 배수이다. 물리적 메모리는 PMEM이라 칭하여지는 바이트-어레이로 나타내진다고 가정한다. 레지스터 r은 PMEM[P+8r FOR 8]에 대응하는 캐시 처리된 데이터를 포함한다. 각 OCACHEDATA 레지스터에서 데이터의 엔디언은 64-비트 메모리 억세스와 일치한다. GETCFG 지시는 64-비트 판독을 실행하므로, 메모리 엔디언과 일치하는 값을 복귀한다. OCACHEDATA 구성 레지스터로의 기록은 정의되지 않은 작용에 이를 수 있음을 주목하여야 한다.
설명을 위해, 도 7i는 바람직한 실시예에서 사용되는 OCACHEDATA 구성 레지스터의 필드에 대한 모범적인 실시예의 요약 설명을 제공한다. 다른 실시예는 이러한 구성 레지스터에 대해 다른 배열을 사용할 수 있고, 도시된 특정한 실시는 본 발명을 제한하도록 의도되지 않는다.
또한, 설명을 위해, 도 8a 및 도 8b는 바람직한 실시예의 가상 캐시 (바람직하게 여기서 설명된 바와 같이 구성 레지스터를 통해 실시된)에 대한 전체적인 투시도를 제공한다. ptag 어레이 및 vtag 어레이의 분리된 V 유효 필드가 주목되어야 한다. 예를 들어, 캐시 간섭성에 대해 ptag 점검이 실시될 때 (여기서 설명된 바와 같이, 외부적으로 제공된 캐시 간섭성/스누프 (snoop) 명령에 응답하여), 이와 같은 복제 유효성 필드는 이러한 기능을 위한 하드웨어를 실시하는데 개선을 제공한다. 또한, 도 8b에서는 설명된 바와 같이 바람직한 실시예에서 캐시 대치 방법을 실시하는데 사용되는 모범적인 LRU 어레이가 도시됨을 주목한다.
이제는 본 발명에 따라 캐시를 관리하기 위한 모범적인 코드 시퀀스 및 알고리즘이 설명된다.
상술된 바와 같이, 캐시는 MMU가 인에이블되기 이전에 초기화되어야 한다. 바람직한 실시예에서, 필요한 단계는 다음과 같다.
1. 오퍼랜드 캐시의 전반적인 작용을 지정하고 이를 사용하기 이전에 오퍼랜드 캐시의 상태를 무효화하는 OCCR0으로의 기록.
2. 오퍼랜드 캐시 로킹 정보를 구성하는 OCCR1으로의 기록.
3. 지시 캐시의 전반적인 작용을 지정하고 이를 사용하기 이전에 지시 캐시의 상태를 무효화하는 ICCR0으로의 기록.
4. 지시 캐시 로킹 정보를 구성하는 ICCR1으로의 기록.
캐시 로킹이 사용되면, 이는 사전 인출이 캐시 상태를 수정하는데 필요하므로, 캐시는 MMU가 인에이블될 때까지 미리 로드될 수 없음을 주목하여야 한다. 캐시 로킹 시퀀스는 여기서 더 상세히 설명된다.
바람직한 실시예에서는 4가지의 기본적인 간섭성 동작이 있다.
1, 오퍼랜드 캐시 블록의 무효화. 이는 바람직하게 OCBI 또는 OCCR0.OCE를 사용하여 이루어진다. 오퍼랜드 캐시 블록의 무효화는 결과적으로 오염된 오퍼랜드 캐시 블록이 없어지게 함을 주목하여야 한다. 바람직하게, 이는 메모리 상태의 손실이 될 수 있으므로 주의하여 행해진다.
2. 오퍼랜드 캐시 블록의 회신. 이는 바람직하게 OCBWB를 사용하여 이루어진다.
3. 오퍼랜드 캐시 블록의 정화. 이는 바람직하게 OCBP를 사용하여 이루어진다.
4. 지시 캐시 블록의 무효화. 이는 바람직하게 ICBI 또는 ICCR0.ICE를 사용하여 이루어진다.
이러한 캐시 간섭성 동작은 바람직하게 3가지 다른 의미로 실행된다. 첫번째는 메모리 위치이다: 적절한 지시가 메모리 위치에 적용되어야 한다. 이는 공급된 유효 어드레스 주변의 캐시 블록 크기의 메모리 블록을 밀착시키게 된다. 이는 바람직하게 사용자 또는 특별 모드에서 이루어진다.
두번째는 메모리의 페이지이다: 작은 페이지의 메모리에 대해 (바람직한 실시예에서 4 kbyte 페이지와 같이), 적절한 캐시 간섭성 지시는 캐시 블록 크기의 간격으로 페이지를 통해 증가되는 유효 어드레스로 페이지를 통해 반복되어야 한다. 이는 바람직하게 사용자 또는 특별 모드에서 이루어진다. 더 큰 메모리 페이지에 대해서는 특별 모드를 사용하고 캐시 구성 레지스터로부터 관찰되는 바와 같이 캐시 상태를 통해 주사 (scan)되는 것이 보다 효과적이다. 타켓 페이지에 대응하는 어드레스 정보를 포함하는 각 캐시 블록은 적절한 캐시 간섭성 지시를 사용하여 밀착되어야 한다. 타켓 유효 어드레스는 캐시 블록에서 어드레스 정보로부터 계산될 수 있다.
세번째는 모든 캐시이다: 이는 바람직하게 특별 모드에서만 이루어진다. 전체적인 오퍼랜드 캐시의 무효화는 OCCR0.OCE를 사용하여 이루어질 수 있고, 전체적인 지시 캐시의 무효화는 ICCR0.ICE를 사용하여 이루어질 수 있다. 회신 또는 정화 동작에서는 캐시 구성 레지스터를 통해 관찰되는 바와 같이 캐시 상태를 통해 주사가 필요한다. 각 유효 캐시 블록은 적절한 캐시 간섭성 지시를 사용해 밀착되어야 한다. 타켓 유효 어드레스는 캐시 블록에서 어드레스 정보로부터 계산될 수 있다.
지시 캐시 무효화가 ICBI를 통해 이루어질 때, 본 실시예에서는 무효화에 사용되는 유효 어드레스에 대응하는 캐시 블록에서만 무효화가 보장된다. 이는 여기서 설명된 캐시 동질성 문제 때문이다. 그러나, 일부 경우에서, 지시 무효화는 지시의 물리 어드레스에 맵핑될 수 있는 모든 유효 어드레스 공간에서 지시가 무효화되는 것을 보장하도록 물리적 레벨로 요구될 수 있다. 추천된 접근법은 특별 모드를 사용하고 캐시 구성 레지스터를 통해 지시 캐시 상태를 조사하는 것이다. 지시 캐시 상태는 무효화되는 유효 어드레스의 캐시 인덱스 필드를 사용해 인덱스화되어야 한다. 이는 캐시에서의 설정을 식별한다; 지시의 모든 캐시 동질성은 이러한 설정내에 있어, 캐시 동질성 문제점 (여기서 설명된)을 해결하는 제한이 이어진다. 이들 캐시 블록 각각은 캐시 구성 레지스터에서 조사되고, 요구되는 경우 적절하게 타켓화된 ICBI를 사용하여 무효화되어야 한다. 무효화가 정말로 필요한가 여부를 보는 소프트웨어 점검을 실행하기 보다는 각 경우을 무조건적으로 무효화하는 것이 더 신속함을 주목하여야 한다. 다수의 물리적 지시를 무효화할 필요가 있으면, ICCR0.ICE를 사용하여 전체적인 지시 캐시를 간단히 무효화하는 것이 더 쉽고 더 신속할 수 있다.
다음의 바람직한 시퀀스의 예는 특별한 방법으로 단일 캐시 블록을 고정하는데 사용된다.
1. 이어지는 이전 조건 (pre-condition)이 바람직하게 보유된다. 먼저, 구성 레지스터 억세스가 필요하므로, 특별 모드가 사용되어야 한다. 두번째로, MMU가 인에이블되어야 한다; SR.MMU가 설정되어야 한다. 세번째로, 캐시 처리가 인에이블되어야 한다. OCCR0.OCE는 오퍼랜드 캐시로의 로킹인 경우 설정되어야 한다; ICCR0.ICE는 지시 캐시로의 로킹인 경우 설정되어야 한다. 네번째로, 타켓 유효 어드레스는 캐시 처리 가능하고 적절한 허가를 포함하는 해석에 의해 맵핑되어야 한다. 판독 허가는 데이터 캐시를 미리 인출하는데 요구되고, 실행 허가는 지시 캐시에 대해 요구된다.
2. 타켓 방법이 고정되어야 한다. CCR1.OW_LOCK 또는 ICCR1.IW_LOCK 중 적절한 비트가 설정되어야 한다. 방법은 다른 억세스가 이 시퀀스와 간섭되지 않음을 보장하도록 이어지는 단계 이전에 고정되어야 한다.
3. 타켓 유효 어드레스가 이미 캐시에 있지 말아야 한다. 이것이 그러한 경우가 아니면, 이는 적절하게 OCBP, OCBI, 또는 ICBI를 사용하여 캐시로부터 제거될 수 있다. 지시 인출은 프로그램 실행과 독립적으로 실행되므로, 지시 무효화는 언제나 ICBI를 사용해 명확하게 이루어져야 한다. 이는 단계(1)에서 방법을 고정시킨 이후에 행해져야 한다.
4. 캐시는 사전 인출이 타켓 방법으로 실행되도록 구성되어야 한다. 오퍼랜드 캐시 로킹에 대해서는 OCCR1.OW_LE가 설정되어야 하고 OCCR1.OW_LOAD가 타켓 방법을 나타내도록 설정되어야 한다. 지시 캐시 로킹에 대해서는 ICCR1.IW_LE가 설정되어야 하고 ICCR1.IW_LOAD가 타켓 방법을 나타내도록 설정되어야 한다.
5. 캐시 블록은 사전 인출 지시를 사용해 로드되어야 한다. 타켓 유효 어드레스에서는 적절하게 PREFO 또는 PREFI를 실행한다. 이 사전 인출은 캐시를 손실하게 되어 지정된 방법의 캐시 블록이 메모리로부터 다시 채워지게 되는 이전 단계가 배열된다. 해석이 없거나 사전 인출이 허가되지 않으면, 사전 인출은 무시됨을 주목하여야 한다. 소프트웨어는 바람직하게 단계(1)에서 설명된 바와 같이 적절한 해석에 대해 배열된다.
6. 이제는 로드 인에이블 비트 OCCR1.OW_LE 또는 ICCR1.IW_LE가 정상적인 캐시 대치를 재시동하도록 클리어될 수 있다.
고정된 캐시 블록은 적절한 정화 또는 무효화 지시를 통해 캐시로부터 제거될 수 있다. 방법이 이어서 고정되면, 그 방법은 캐시 대치의 후보가 된다.
여기서 논의된 바와 같이, 바람직한 특정 실시예는 가상 캐시를 실시한다. 이러한 가상 캐시에서 동질성 문제를 해결하기 위해 제공된 개선 방법에 부가하여, 바람직한 실시예는 또한 이러한 가상 캐시 실시예에서 판독/기록 허가가 점검되고 처리되는 방법을 개선시킨다.
도 9를 참고로, 이러한 개선된 허가 처리의 제1 예를 설명하는 흐름도가 설명된다. 단계(200)에서는 캐시가 억세스되고, 이는 본 예를 설명할 목적으로 기록 요구/동작이다. 단계(202)에서는 기록 요구에 대한 가상 어드레스 (또는 그 일부)와 가상 캐시의 vtag 사이에 점검/비교가 이루어진다. 비교 이후에는 vtag 히트 (hit)가 있는가 여부에 대한 결정이 이루어진다 (단계 204). vtag 히트가 없으면, 다음 단계는 TLB의 억세스이다 (단계 212). 단계(204)에서의 결정이 vtag 히트이면, 단계(206, 208)에서는 선택된 캐시 엔트리의 허가에 대해 점검이 이루어진다. 선택된 캐시 엔트리가 적절한 허가 (예를 들면, 기록 동작 등을 인증하도록 설정된 허가 필드/비트)를 가지면, 동작은 단계(210)에서 나타내지는 바와 같이 완료된다. 일반적으로, 기록 동작의 경우, 데이터는 선택된 캐시 엔트리에 기록되고, 이는 기록 또는 회신 동작 (여기서 설명된 바와 같이)이 될 수 있다. 선택된 캐시 엔트리가 적절한 허가 (예를 들면, 판독 동작 등에 대한 억세스를 제한하는 허가 필드/비트)를 가지 않으면, 처리는 단계(212)의 TLB 억세스로 진행된다.
단계(212)에서는 TLB 입력과 같이 기록 요구에 대한 가상 어드레스 (또는 그 일부)를 사용하여 TLB가 억세스된다. 이어서, PTE는 가상 어드레스에 의해 선택되도록 시도되고, 단계(214)에서는 선택된 페이지의 허가가 점검된다 (바람직한 실시예에서, 단계(212, 214)는 단일 단계 또는 싸이클로 함께 실행될 수 있음을 주목하여야 한다). 단계(216)에 의해 나타내지는 바와 같이, TLB 억세스 이후에는 적절한 허가가 선택된 페이지와 연관되는가 여부를 결정한다. 선택된 PTE가 기록 동작에 대해 적절한 허가를 갖지 않으면, 단계(218)에서 예외가 일어나고, 이어서 예외 핸들러 (exception handler) 소프트웨어 루틴이 기록 요구에 응답하게 된다. 기록 요구의 가상 어드레스에 대응하는 PTE가 없으면, 예외는 또한 단계(218)에서 일어난다 (TLB 손실을 다루는 것과 같이 적절한 예외 핸들어에 의한 처리를 위해). 설명되는 예로, 운영 시스템 또는 다른 소프트웨어가 특별한 페이지에 대한 제1 기록 동작을 검출하길 원하면, 그 페이지는 초기에만 판독으로 나타내지고, 이어서 단계(218) 이후에 예외 핸들러가 예를 들면, 그 페이지가 기록/판독되도록 TLB 엔트리 허가를 업데이트할 수 있다.
단계(216)에서 페이지가 적절한 허가를 갖지 않은 것으로 결정되면, 단계(220)에서는 캐시가 업데이트된다. 단계(208)에서의 NO 결정 때문에 단계(212)에서 TLB가 억세스되면, 캐시의 허가 필드/비트는 단계(220)에서 업데이트될 필요가 있다. 단계(204)에서의 NO 결정 때문에 단계(212)에서 TLB가 억세스되면, 캐시 vtag, ptag, 데이터, 및 허가는 단계(220)에서 업데이트된다 (예를 들면, 캐시 손실로 다루어진다). 단계(222)에서는 동작이 완료되고, 기록 동작의 경우, 데이터가 선택된 캐시 엔트리에 기록되어 기록 또는 회신 동작이 될 수 있다 (여기서 설명된 바와 같이). 이 경우, 캐시 엔트리가 대치될 때, 어느 엔트리가 대치되는가를 결정하는 처리 (여기서 설명된 바와 같이)가 실행된다.
이러한 "허가 확장 (permission widening)"은 또한 보다 일반적으로 가상 캐시의 내용에서, 특별히 여기서 설명된 바와 같이 동질성 문제점을 해결하는 처리와 연관되어 사용될 수 있다. 이제는 도 10을 참고로, 가상 캐시를 사용하는 본 발명의 바람직한 특정 실시예에서 사용되는 허가 확장 처리에 대한 흐름도의 예가 설명된다.
단계(228)에서는 예를 들어 판독 요구 또는 기록 요구를 처리할 목적으로 가상 캐시가 억세스된다. 단계(230)에서는 판독 또는 기록 요구에 대한 가상 어드레스 (또는 그 일부)와 가상 캐시의 vtag 사이, 및 가상 캐시의 선택된 엔트리에서 요구의 허가 레벨에 점검/비교가 이루어진다. 단계(232)에서는 vtag 히트가 있는가 또한 보호 위반이 없는가에 대한 결정이 이루어지고, 이어서 처리는 단계(248)로 진행되어 동작이 완료된다. 그러나, vtag 히트가 없거나, vtag 히트는 있지만 보호 위반이 없으면, 다음 단계는 TLB의 억세스이다 (단계 234). 단계(236)에서는 TLB 손실 또는 보호 위반과 같이 예외가 취해져야 하는가 여부를 결정한다 (예외가 취해져야 하는 경우, 예를 들면, TLB 손실이나 보호 위반의 경우, 단계(238)에서는 예외가 일어난다). 단계(236)에서 예외가 일어나지 않으면, 단계(240)에서는 ptag 히트가 있는가 여부를 점검한다 (즉, TLB로부터의 물리 어드레스 정보와 이루어진 동질성이 저장된 가상 캐시의 엔트리의 ptga 사이에 비교가 이루어진다). 단계(242)에서, TLB로부터의 물리 어드레스와 캐시의 선택된 (인덱스에 의해 선택된) 엔트리 (nway 세트의 연합 캐시의 경우 다수의 엔트리) 사이에 정합 또는 일치가 없는 것으로 결정되면, 단계(244)에서는 동작이 캐시 손실로 다루어진다. 단계(242)에서, 정합 또는 일치가 있는 것으로 결정되면, 단계(246)에서는 정합된 캐시 엔트리의 vtag가 TLB로부터의 가상 어드레스로 업데이트된다. 또한, 단계(246)에서는 캐시 엔트리의 허가 비트/필드가 또한 업데이트된다. 그래서, 단계(246) 이후에는 허가가 확장되고 또한/또는 단계(234)에서의 TLB 억세스 이후에 vtag 엔트리가 업데이트되어, 그에 의해 동질성 문제를 해결하고 (필요한 경우) 허가를 확장하여 (필요한 경우), 불필요한 예외 등을 방지한다. 단계(248)에서는 동작이 완료된다 (예를 들면, 적절하게 메모리 판독 또는 기록으로 처리된다). 단계(248)에서는 동작이 완료되어, 기록 동작의 경우, 데이터가 선택된 캐시 엔트리에 기록되고, 이는 기록 또는 회신 동작이 될 수 있다 (여기서 설명된 바와 같이). 판독 동작의 경우에는 선택된 캐시 엔트리로부터 판독된다.
vtag 엔트리를 재기록하는 단계는 현재 억세스와 똑같은 어드레스를 사용하는 이어지는 억세스가 vtag 어레이 억세스로 캐시에 닿게 되도록 실행됨을 주목하여야 한다. 고려되는 참고의 부근을 근거로, 데이터에 대한 다음 억세스는 이전 억세스와 똑같은 가상 어드레스 (앨리어싱)을 통해 이루어질 가능성이 있으므로, 상기 처리는 바람직한 실시예에서 성능을 최적화하게 된다.
여기서 설명되는 허가 확장은 또한 지시 캐시에도 적용될 수 있음을 주목하여야 한다. 예를 들면, 실행가능성과 같은 허가 또는 사용자/특별 허가는 상기에 설명된 알고리즘 (특별히, 도 9와 연관되어 논의된 알고리즘)으로 확장될 수 있다. 이러한 지시 캐시 실시예에서는 바람직하게 앨리어싱을 제거하는 하드웨어 작용이 없고 (즉, ptag 룩업 (look-up)이 없고), 구성 캐시에 대해 캐시 간섭성을 제공할 필요가 없다 (캐시 간섭성은 논의되었다). 이러한 것을 고려하여, 지시 캐시 및 그 제어기는 간략화된 로직과 더 낮은 비용으로 실시될 수 있다.
이제는 도 11을 참고로, 본 발명의 바람직한 실시예에서 허가를 다루는 특정한 특성이 더 상세히 설명된다. 도 11에서, 가상 캐시 어레이(262)는 모범적인 4-방법 세트의 연합 가상 캐시에서 vtag 어레이 및 허가 필드/비트를 설명한다 (가상 캐시 엔트리의 다른 필드는 도 11에 도시되지 않지만, 여기서 설명된다). 가상 캐시 어레이(262)의 각 세트는 세트의 수로 구성되고, 도시된 실시예에서는 각각 4가지 방법을 포함한다. 각 세트 및 방법에 대해, 데이터가 그 세트 및 방법에 저장된 어드레스의 가상 태그 및 라인/블록이 캐시에 배치되었을 때 TLB로부터 구해진 허가 정보가 저장된다. 여기서 보다 전체적으로 설명되는 바와 같이, 허가 정보는 판독/기록 허가, 사용자/특별 모드 허가 등으로 구성될 수 있다.
가상 캐시 어레이(262)를 억세스할 목적으로, 가상 억세스 어드레스 (예를 들면, CPU(102)로부터)가 가상 캐시에 제공되고, 이는 가상 어드레스 태그 필드(266) 및 인덱스 필드(268)를 포함한다 (다른 비트는 워드 (word) 크기에 의존하여 캐시내의 라인/블록으로부터 억세스되는 특별한 워드나 바이트를 선택하는데 사용될 수 있고, 이 논의에서는 무시된다). 인덱스(268)는 가상 캐시 어레이(262)의 세트(264) 중 한 세트로 선택/인덱스하는데 사용된다 (다시, 예를 위해, 도 11에서는 4-방법의 세트 연합 가상 캐시가 도시된다). 가상 캐시 어레이(262)에서 선택/인덱스 처리된 엔트리의 4가지 방법은 바람직하게 어레이(262) 밖으로 판독되고, 이어서 가상 어드레스의 태그 필드(266)와 비교된다 (항목(270)은 방법 중 하나의 선택/인덱스 처리된 vtag를 보유하는 버퍼 및 태그 부분(266)을 보유하는 버퍼를 설명하고, 이들은 바람직하게 비교기와 비교된다). 4회 비교의 결과는 바람직하게 4개 태그 정합 신호를 통해 나란히 AND 로직(274)으로 운반된다 (AND 로직(274)은 AND 또는 NAND 게이트, 또는 다른 적절한 로직으로 구성될 수 있다).
부가하여, 선택된 세트의 각 방법과 연관된 허가 정보는 로직(272)에 제공된다. 허가 요구 정보도 또한 로직(272)에 제공된다. 여기서 보다 전체적으로 설명되는 바와 같이, CPU(102)의 로드/저장 유닛 (또는 CPU(102)의 다른 적절한 부분)은 특별히 요구되는 억세스에 대해 요구되는 허가를 결정한다. 예를 들면, 로드 동작은 판독 허가를 요구하고, 저장 동작은 기록 허가를 요구한다; 지시가 사용자 모드에서 실행되면, 사용자 모드 허가가 요구된다 (예를 들면, 여기서 설명된 바와 같이, SR.MD 비트로부터 결정되는).
다시 도 11을 참고로, 로직(272)은 캐시 어레이(262)로부터 복귀된 허가 비트를 CPU로부터의 허가 정보와 조합한다. 로직(272)은 CPU로부터의 허가 정보를 근거로, 선택/인덱스 처리된 세트의 방법에서 각 방법에 대해 억세스가 허용되는가 여부를 결정한다. 억세스는 예를 들어, 판독 전용 페이지로의 기록, 비판독가능 페이지로의 판독, 또는 페이지가 특별 모드이고 모드가 사용자 모드인 것과 같이 허가 위반 때문에 허가되지 않는다. 로직(272)은 각 방법에서 억세스가 그 방법에 대해 허용되는가를 나타내는 신호를 제공한다. 로직(272)은 CPU로부터 허가/허가 요구형 정보를 수신하고, 캐시 방법으로부터의 허가 정보를 근거로, 억세스가 허가되는가 여부를 논리적으로 결정하는 적절한 로직으로 구성된다.
AND 로직(274)은 어레이(262)로부터의 각 방법 출력에 대한 태그 정합 신호를 억세스 허가된 신호와 AND 처리하여 각 방법에 대한 캐시 히트 신호를 제공한다. 그 결과로, 바람직한 실시예에서는 어드레스 태그가 캐시 방법내의 태그와 정합되는 경우 캐시 히트 신호가 주어진 방법에 대해 발생되고, 그 방법에 대한 허가 정보는 동작이 허가되어 (바람직하게) 가상 태그 억세스만을 근거로 완료될 수 있음을 나타낸다.
이제는 도 12를 참고로, 바람직하게 외부 공급된 캐시 간섭성 (cache coherency)/스누프 (snoop) 명령에 응답하는 가상 캐시 메모리 시스템이 더 설명된다.
도 1은 PCI 버스나 다른 종류의 주변 디바이스 (예를 들면, 그래픽 또는 다른 디스플레이 모듈, 네트워크 인터페이스 디바이스, 저장 디바이스 등)가 될 수 있는 외부 디바이스(128)가 버스(124)를 통해 인터페이스(118) (바람직한 실시예에서는 PCI형 인터페이스이지만, 다른 실시예에서는 다른 인터페이스가 사용된다)에 연결된 전반적인 마이크로프로세서/데이터 처리 시스템을 도시한다. 외부 디바이스(128)는 메모리 버스(122)를 통해 외부 메모리 인터페이스(120)에 연결된 외부 메모리(126)를 억세스, 판독, 또는 기록하기를 원한다. 그러나, 이러한 메모리 트랜잭션에서는 캐시 간섭성에 대한 문제점이 일어날 수 있다. 외부 디바이스(128)가 캐시 메모리 시스템에 저장된 메모리 위치를 억세스하기 원하는 경우, 외부 디바이스(128)에 의해 억세스되는 외부 메모리(126)에 저장된 데이터가 캐시 메모리에 저장된 메모리와 일치하지 않으면, 에러가 일어날 수 있다.
바람직한 실시예에서, 이 문제는 바람직하게 외부적으로 제공된 (CPU 코어(102), 가상 캐시 메모리 시스템 등에 대해 외부) "스누프" 또는 다른 캐시 간섭성 명령에 응답하는 가상 캐시 메모리를 통해 해결된다. 일반적으로, 외부 디바이스 (외부 디바이스(128)와 같은)가 메모리 억세스 트랜잭션을 초기화할 때, PCH 브릿지(114) (또는 다른 적절한 인터페이스나 다른 디바이스)는 메모리 억세스 트랜잭션이 캐시 간섭성 메모리의 영역에 영향을 주는가 여부를 결정한다. 바람직한 실시예에서, 메모리의 일부 영역은 비캐시 간섭성 (non-cache coherency) (예를 들면, 캐시 처리되지 않은)으로 지정되므로, 이러한 메모리 영역은 캐시 간섭성 문제를 일으키지 않는다. 그러나, 요구되는 메모리 트랜잭션이 메모리의 캐시 간섭성 영역에 영향을 주는 것으로 결정되면, 스누프 또는 다른 캐시 간섭성 명령이 CPU 코어(102)에 공급된다. 스누프 또는 다른 캐시 간섭성 명령에 응답해, 가상 캐시 시스템은 캐시 간섭성이 요구됨을 보장하도록 처리를 초기화하고 (예를 들면, 데이터가 "오염 (dirty)"된 경우, 캐시 메모리로부터 데이터의 메모리 회신을 초기화하고), 이어서 외부/메인 메모리 및 캐시 메모리가 밀착됨을 승인하는 신호를 제공하여, 원래 요구되는 메모리 트랙잭션이 완료될 수 있게 한다.
도 12는 본 발명의 바람직한 실시예에서 사용되는 캐시 간섭성 처리에 대한 흐름도의 예이다. 단계(300)에서는 외부 디바이스, 본 예에서 PCI형 디바이스 (비록 본 발명은 이러한 디바이스에 제한되지 않지만)가 메모리 요구를 한다. 이는 브릿지(114)에 의해, 요구에 응답하는데 필요한 어드레스 정보와 함께, 판독 또는 기록 요구로 수신된다. 단계(302)에서, 브릿지(114)는 요구가 캐시 간섭성 메모리를 포함하는가를 결정할 수 있도록 내부 레지스터, 메모리, 또는 다른 자원을 참고한다. 바람직한 실시예에서, 반드시 브릿지(114)가 이러한 점검을 할 필요는 없음을 주목하여야 한다; 다른 인터페이스 또는 메모리 트랜잭션 처리 디바이스 등도 또한 CPU 코어(102) 및 가상 캐시 메모리 시스템 외부에서 이러한 결정을 할 수 있다. 특별한 버스 및 전체적인 시스템은 본 발명의 가상 캐시 메모리 시스템의 바람직한 실시예에 대한 예인 도 1에서 도시되었다.
단계(304)에서는 요구가 캐시 간섭성 메모리를 포함하는가 여부를 결정한다; 그렇지 않은 경우, 처리는 원래 요구된 동작을 완료하도록 단계(306)로 진행한다 (원래 요구된 메모리 트랙잭션을 완료하기 위해 브릿지 또는 요구되는 버스 프로토콜을 초기화하는 다른 제어 디바이스 등에 의해 전이가 실시될 수 있다); 그러한 경우에는 단계(308)에서 브릿지 (또는 다른 제어 디바이스)가 CPU 코어(102)에 스누프 명령 (또는 다른 캐시 간섭성 종류의 명령)을 전한다. 명령의 정확한 본성 및 그 명령을 제공하기 위한 버스 프로토콜은 특정한 실시예 및 실시를 근거로 선택된다. 중요한 것은 외부로 제공된 스누프 또는 다른 캐시 간섭성 명령이 CPU 코어(102)에 제공된다는 것이다. 도 12에서는 이것이 스누프 요구 (snoop request)"라 칭하여진다.
CPU 코어(102)는 바람직하게 데이터를 버스(104)에 제공하도록 버스 인터페이스 유닛 (bus interface unit, BIU) 또는 다른 인터페이스 회로를 포함하고, 단계(310)에서는 CPU 코어(102)의 BIU가 데이터 캐시 제어기 (도 12에서 "DCC (data cache controller)"라 칭하여지는)에 전해지는 스누프 요구를 수신한다. BIU 및 DCC의 특정한 실시는 특별한 응용에 대해 선택되고, 논의되고 있는 가상 캐시 실시예는 특별한 종류의 인터페이스 회로나 제어 회로에 제한되지 않음을 주목하여야 한다. 중요한 것은 여기서 설명된 방식으로 요구에 응답하기 위해 CPU 코어(102)가 스누프 요구를 수신하고 가상 캐시 메모리 시스템에 대해 적절한 제어 회로가 스누프 요구 (또한 다른 적절한 제어 및 어드레스 정보 등)를 수신한다는 점이다.
단계(312)에서, 가상 캐시 메모리는 물리 어드레스 태그 정보(ptag)를 포함하는 DCC로부터의 정보를 수신하고, 가상 캐시 ptag 어레이의 내용으로 ptag 히트를 찾는다. 단계(312)의 실시는 바람직하게 다음의 방식으로 행해진다. DCC는 가상 캐시의 ptag 어레이로 적절하게 인덱스 처리하기 위해 물리 어드레스의 인덱스 필드를 취하여 이 인덱스를 사용하거나, 물리 어드레스 인덱스로부터 한 인덱스를 생성한다. 특정한 실시예의 페이지 크기 및 다른 특성에 의존해, DCC는 ptag 히트를 찾도록 1, 2, 4, 또는 그 이상의 인덱스를 가상 캐시에 적용할 필요가 있다. 중요한 것은 스누프 요구를 동반하는 물리 어드레스 정보를 근거로 닿을 수 있는 ptag 어레이의 모든 위치가 탐색되고, DCC가 요구되는 경우 ptag 어레이를 이렇게 탐색하도록 ptag 어레이에 하나 이상의 인덱스를 사용한다는 점이다. 단계(312)의 결과로, 가상 캐시의 ptag 어레이는 닿을 수 있는 ptag 위치 모두에서 탐색된다.
여기서 설명되고 바람직한 실시예에서 사용되는 바와 같은 ptag 탐색의 특징 중 하나는 0 또는 1회 히트가 발견된다는 점임을 주목하여야 한다. 바람직한 실시예에서는 1회 이상의 있을 수 없고, 이는 여기서 설명된 바와 같이 하드웨어 및 소프트웨어 메카니즘의 조합으로 이루어진다. 하드웨어는 바람직하게 똑같은 세트내에 물리 어드레스의 앨리어싱이 없음을 보장하고 (즉, ptag 룩업 및 점검 메카니즘), 소프트웨어는 다른 세트 사이에서 물리 어드레스의 앨리어싱이 없음을 보장한다 (즉, 캐시 동질성을 방지하기 위한 소프트웨어 제한). 그 결과로, 바람직한 실시예에서 캐시 간섭성을 실시하는 것은 단지 많아야 하나의 캐시 라인/블록의 플러싱 (flushing)/무효화만을 요구한다. 바람직한 실시예에서, 적절한 플러싱/무효화를 실행하기 위한 다수의 캐시 라인을 통해 반복되는 요구조건이 없으므로, 이는 하드웨어를 상당히 간략화한다.
단계(314)에서는 단계(312)의 ptag 점검/비교를 근거로 ptag 히트가 있는가 여부를 결정한다 (물론, 특별한 실시예에서는 (312, 314)와 같은 단계가 조합될 수 있지만, 논의를 위해 분리되어 도시된다). 단계(314)에서 ptag 히트가 없는 것으로 결정되면, 처리는 단계(328)로 진행된다 (단계(328)는 추후 더 상세히 논의된다). 단계(314)에서 ptag 히트가 있는 것으로 결정되면, 처리는 단계(316)로 진행되어, 선택된 캐시 라인/블록이 오염되었나 여부 (즉, ptag가 닿은 라인/블록이 메인 메모리에 기록되어야 하는 데이터를 갖는가 여부)를 결정하도록 점검이 이루어진다. 단계(318)에서는 라인/블록의 오염 점검 및 결정을 근거로 (이러한 점검 및 결정은 일반적으로 조합되거나 분리된 동작이 될 수 있다), 처리가 직접 단계(322) (라인/블록이 오염되지 않은 경우)로 진행되거나, 처리가 단계(320)로 진행되어 DCC (또는 다른 적절한 제어 로직)가 오염된 캐시 라인/블록내의 데이터를 메모리에 기록하게 한다.
단계(322)에서는 스누프 요구가 기록 동작을 위한 것인가 여부를 점검한다 스누프 요구가 기록 동작을 위한 것이면 (단계(324)에서의 결정이 yes이면), 단계(326)에서, ptag가 닿은 (ptag 히트가 있다고 가정하고) 캐시의 라인/블록은 그 라인/블록의 내용이 원래 요구되는 기록 동작의 결과에 대해 가장 최근의 데이터를 포함하지 않으므로 무효화된다. 단계(314)에서 결정된 ptag 히트가 없는 경우, 단계(322)는 다른 방법으로 스킵되어, 처리가 직접 단계(328)로 진행된다. 여기서 중요한 것은 메모리 기록 동작의 경우에, 메모리 기록 동작을 근거로 간섭성을 보장하도록 요구되지 않으면 가상 캐시 시스템이 캐시 라인을 무효화한다는 점이다.
단계(328)에서는 바람직하게 (가상 캐시로부터 적절한 상태 정보를 수신한 이후에) CPU 코어(102)의 BIU가 완전한 스누프 신호 또는 다른 적절한 신호를 복귀하여, 스누프 동작이 완료되었고 캐시 및 메모리가 원래 요구된 메모리 트랜잭션을 위해 밀착되었음을 브릿지(114) (또는 다른 제어 디바이스)에 나타낸다. 바람직하게, 이 신호는 데이터를 운반하지 않고 캐시 및 메모리가 밀착된 신호로 구성된다. 사실상, 신호는 원래 요구된 메모리 트랜잭션이 완료될 수 있음을 브릿지나 다른 디바이스에 알리기 위해 "모두 클리어 (all clear)" 또는 "진행 준비 (ready to proceed)"로 복귀된다. 단계(306)에서는 원래 요구된 트랜잭션이 완료된다 (예를 들면, "모드 클리어" 또는 "진행 준비' 신호에 응답하여).
본 발명에 따라, 이제는 바람직한 특정 실시예에 따라 실행될 수 있는 특정한 방법이 설명된다. 메모리 공간에 위치를 갖는 메모리로부터 데이터를 저장 및 수신하고 지시를 실행하며, 또한 다수의 엔트리를 갖는 캐시 메모리를 갖는 데이터 처리 시스템에서, 캐시 메모리의 엔트리가 메모리 공간으로부터 분리된 레지스터 공간내의 위치에 있는 경우, 본 발명에 따른 방법은 다음 단계로 구성된다:
A. 캐시 메모리의 적어도 하나의 엔트리로부터 어드레스 정보를 구하도록 제1 지시를 실행하는 단계 - 제1 지시는 메모리 공간내의 위치에서가 아니라 레지스터 공간내의 위치에서만 동작한다 -;
B. 구해진 어드레스 정보를 타켓 어드레스 정보와 비교하는 단계;
C. 구해진 어드레스 정보와 타켓 어드레스 정보 사이의 비교 결과가 일치되면, 캐시 메모리의 적어도 하나의 엔트리에 제1 동작이 실행되는 단계; 및
D. 구해진 어드레스 정보와 타켓 어드레스 정보 사이의 비교 결과가 일치되지 않으면, 캐시 메모리의 적어도 하나의 엔트리에 제1 동작이 실행되지 않는 단계;
여기서, 관리 동작은 메모리 공간에서의 위치를 사용하지 않고 캐시 메모리에 실행된다.
상기 방법에서, 제1 동작은 무효화 (invalidate), 플러시 (flush), 또는 정화 (purge) 동작이 될 수 있다. 상기 방법에서, 단계 A 내지 D는 루프로 실행되고, 여기서는 캐시 메모리의 다수의 엔트리가 억세스되고, 제1 동작이 공통된 특성을 갖는 캐시 메모리의 엔트리의 서브세트에 실행된다. 상기 방법에서, 공통된 특성은 메모리의 페이지가 되는 메모리의 공통 영역과 연관된 어드레스를 갖는 것이다. 상기 방법에서, 어드레스 정보는 물리 어드레스 정보이다. 상기 방법에서, 캐시 메모리는 다수의 엔트리를 갖는 가상 캐시 메모리이고, 가상 캐시 메모리의 각 엔트리는 물리 어드레스 정보, 논리 어드레스 정보를 포함하고, 구해진 어드레스 정보는 논리 어드레스 정보나 물리 어드레스 정보이다.
상기 방법에서, 데이터 처리 시스템은 또한 다수의 엔트리를 갖는 해석 룩어사이드 버퍼 (translation lookaside buffer)를 포함하고, 해석 룩어사이드 버퍼의 엔트리는 메모리 공간으로부터 분리된 레지스터 공간내의 위치할 수 있다. 상기 방법에서, 해석 룩어사이드 버퍼의 엔트리는 캐시 메모리의 엔트리와 똑같은 레지스터 공간내의 위치에 있다. 상기 방법에서, 제1 지시는 다수의 필드를 포함하고, 여기서 하나 이상의 필드내의 정보 제어는 해석 룩어사이드 버퍼의 엔트리 또는 캐시 메모리의 엔트리가 제1 지시의 실행시 억세스되는가 여부를 제어한다. 상기 방법에서, 제1 지시는 해석 룩어사이드 버퍼 또는 캐시 메모리의 엔트리로부터 정보를 판독하기 위한 GET 지시이다. 상기 방법에서, 제1 동작은 제2 지시의 실행에 의해 실행되고, 제2 지시는 다수의 필드를 포함하고, 여기서 하나 이상의 필드내의 정보 제어는 해석 룩어사이드 버퍼의 엔트리 또는 캐시 메모리의 엔트리가 제2 지시의 실행시 억세스되는가 여부를 제어한다. 상기 방법에서, 제 2 지시는 해석 룩어사이드 버퍼 또는 캐시 메모리의 엔트리에 정보를 기록하는 PUT 지시이다. 상기 방법에서, 제1 동작은 캐시 메모리의 엔트리를 디맵핑 (demapping)하거나 허가 정보를 변화하는 동작이 될 수 있고, 여기서 허가 정보는 허가를 좁히도록 변화된다.
메모리 공간에 위치를 갖는 메모리로부터 데이터를 저장 및 수신하고 지시를 실행하며, 또한 다수의 엔트리를 갖는 지시 캐시 메모리를 갖는 데이터 처리 시스템에서, 엔트리가 다수의 세트(nset)를 포함하고, 각 세트가 다수의 방법(nway)을 포함하는 경우, 본 발명에 따른 방법은 다음 단계로 구성된다:
A. 지시 캐시 메모리의 제1 방법으로 하나 이상의 지시를 로드하도록 하나 이상의 제1 지시를 실행하는 단계;
B. 지시 캐시 메모리의 제1 방법을 고정시키도록 (locking) 하나 이상의 제2 지시를 실행하는 단계; 및
C. 지시 캐시 메모리의 제1 방법에 로드된 하나 이상의 지시를 포함하는 지시 시퀀스를 실행하는 단계, 여기서 지시 캐시 메모리의 제1 방법에 로드된 하나 이상의 지시는 지시 시퀀스를 실행하는 동안 메모리로부터 하나 이상의 지시를 회복하지 않고 실행되도록 미리 결정된다.
상기 방법에서, 지시 캐시 메모리는 메모리 공간으로부터 공간된 레지스터 공간에서 제어 레지스터에 의해 제어되고, 여기서 하나 이상의 제2 지시는 제어 레지스터에 정보를 기록하는 PUT 지시이고, 기록된 정보는 지시 캐시 메모리의 로킹 (locking)을 제어한다. 상기 방법에서, 방법의 수는 1 보다 큰 수이다. 상기 방법에서, 제1 방법이 고정되는 반면, 하나 이상의 다른 방법은 고정되지 않고 캐시 처리 지시에 이용가능하다. 상기 방법에서, nset는 1 보다 큰 수이다. 상기 방법에서, 단계 A는 단계 B 이후에 실행될 수 있다. 상기 방법에서, 하나 이상의 제2 지시는 제1 방법이 고정되고 제1 방법이 지시를 로드하는데 사용되도록 제어할 수 있다.
메모리 공간에 위치를 갖는 메모리로부터 데이터를 저장 및 수신하고 지시를 실행하며, 또한 다수의 엔트리를 갖는 데이터 캐시 메모리를 갖는 데이터 처리 시스템에서, 엔트리가 다수의 세트(nset)를 포함하고, 각 세트가 다수의 방법(nway)을 포함하는 경우, 본 발명에 따른 방법은 다음 단계로 구성된다:
A. 데이터 캐시 메모리의 제1 방법에서 하나 이상의 위치로 데이터를 로드하도록 하나 이상의 제1 지시를 실행하는 단계;
B. 데이터 캐시 메모리의 제1 방법을 고정시키도록 하나 이상의 제2 지시를 실행하는 단계; 및
C. 데이터 캐시 메모리의 제1 방법에서 데이터가 로드되었던 하나 이상의 위치를 억세스하는 하나 이상의 지시를 포함하는 지시 시퀀스를 실행하는 단계, 여기서 지시 캐시 메모리의 제1 방법에 로드된 데이터에 대한 하나 이상의 위치는 캐시 손실 없이 지시 시퀀스를 실행하는 동안 억세스되도록 미리 결정된다.
상기 방법에서, 데이터 캐시 메모리는 메모리 공간으로부터 공간된 레지스터 공간에서 제어 레지스터에 의해 제어되고, 여기서 하나 이상의 제2 지시는 제어 레지스터에 정보를 기록하는 PUT 지시이고, 기록된 정보는 데이터 캐시 메모리의 로킹을 제어한다. 상기 방법에서, 방법의 수는 1 보다 큰 수이다. 상기 방법에서, 제1 방법이 고정되는 반면, 하나 이상의 다른 방법은 고정되지 않고 데이터를 캐시 처리하는데 이용가능하다. 상기 방법에서, nset는 1 보다 큰 수이다.
메모리 공간에 위치를 갖는 메모리로부터 데이터를 저장 및 수신하고 지시를 실행하며, 또한 다수의 엔트리를 갖는 캐시 메모리를 갖는 데이터 처리 시스템에서, 엔트리가 다수의 세트(nset)를 포함하고, 각 세트가 다수의 방법(nway)을 포함하는 경우, 본 발명에 따른 방법은 다음 단계로 구성된다:
A. 캐시 메모리의 제1 방법에서 하나 이상의 위치로 데이터나 지시를 로드하도록 하나 이상의 제1 지시를 실행하는 단계;
B. 캐시 메모리의 제1 방법을 고정시키도록 하나 이상의 제2 지시를 실행하는 단계; 및
C. 캐시 메모리의 제1 방법에서 데이터나 지시가 로드되었된 하나 이상의 위치를 억세스하는 하나 이상의 지시를 포함하는 지시 시퀀스를 실행하는 단계, 여기서 캐시 메모리의 제1 방법에 로드된 데이터나 지시에 대한 하나 이상의 위치는 캐시 손실 없이 지시 시퀀스를 실행하는 동안 억세스되도록 미리 결정된다.
상기 방법에서, 캐시 메모리는 메모리 공간으로부터 공간된 레지스터 공간에서 제어 레지스터에 의해 제어되고, 여기서 하나 이상의 제2 지시는 제어 레지스터에 정보를 기록하는 PUT 지시이고, 기록된 정보는 캐시 메모리의 로킹을 제어한다. 상기 방법에서, 방법의 수는 1 보다 큰 수이다. 상기 방법에서, 제1 방법이 고정되는 반면, 하나 이상의 다른 방법은 고정되지 않고 데이터를 캐시 처리하는데 이용가능하다. 상기 방법에서, nset는 1 보다 큰 수이다.
가상 캐시 메모리를 갖고, 가상 캐시 메모리가 다수의 엔트리를 갖고, 가상 캐시 메모리의 각 엔트리가 물리 어드레스 정보 및 논리 어드레스 정보를 포함하는 데이터 처리 시스템에서, 본 발명에 따른 방법은 다음 단계로 구성된다:
A. 메모리 억세스 동작과 연관된 물리 어드레스 정보를 근거로 하나 이상의 소정의 메모리 위치에서 메모리 억세스 동작을 초기화하는 단계;
B. 메모리 억세스 동작이 캐시 간섭성 메모리를 포함하는가를 결정하는 단계;
C. 메모리 억세스 동작이 캐시 간섭성 메모리를 포함하면, 메모리 억세스 동작의 물리 어드레스 정보를 포함하는 캐시 간섭성 명령을 전하는 단계;
D. 메모리 억세스 동작의 물리 어드레스 정보 및 캐시 간섭성 명령을 근거로, 메모리 억세스 동작의 물리 어드레스 정보 중 적어도 일부와 가상 캐시의 엔트리에 저장된 물리 어드레스 정보 중 적어도 일부 사이에 정합이 있는가를 결정하는 단계;
E. 메모리 억세스 메모리의 물리 어드레스 정보와 가상 캐시 메모리의 특정 엔트리의 물리 어드레스 정보 사이에 정합이 있으면, 가상 캐시 메모리의 특정한 엔트리와 연관된 데이터가 오염되었나 여부를 결정하는 단계;
F. 가상 캐시 메모리의 특정 엔트리와 연관된 데이터가 오염되었으면, 회신 (write back) 동작을 초기화하고, 여기서 가상 캐시 메모리의 특정 엔트리내의 데이트가 메모리에 기록되는 단계;
G. 메모리 억세스 동작의 메모리 위치와 가상 캐시 메모리가 밀착됨을 나타내는 명령을 전하는 단계; 및
H. 메모리 억세스 동작을 완료하는 단계.
상기 방법에서, 추가 단계는 메모리 억세스 동작이 기록 동작인가, 또한 메모리 억세스 동작이 기록 동작으로 가상 캐시 메모리의 특정 엔트리를 무효화하는가를 결정할 수 있다. 상기 방법에서, 가상 캐시 메모리는 단일 칩의 마이크로프로세서에 포함될 수 있고, 단일 칩의 마이크로프로세서 외부에 있는 디바이스가 메모리 억세스 동작을 초기화한다. 상기 방법에서, 외부 디바이스와 내부 버스 사이를 연결하는 회로는 메모리 억세스 동작을 초기화하는 외부 디바이스로부터 명령을 수신한다. 상기 방법에서, 회로는 메모리의 어느 영역이 캐시 밀착되는가를 결정하는 정보를 저장한다. 상기 방법에서, 회로는 외부 디바이스로부터의 물리 어드레스 정보를 저장된 정보와 비교하고, 여기서 메모리 억세스 정보가 간섭성 메모리를 포함하지 않으면, 회로는 캐시 간섭성 명령을 전하지 않고 메모리 억세스 동작의 완료를 초기화한다. 상기 방법에서, 캐시 간섭성 명령에 응답하고 메모리 억세스 동작의 물리 어드레스 정보를 근거로, 하나 이상의 인덱스가 가상 캐시 메모리에 대해 형성될 수 있고, 여기서 하나 이상의 인덱스는 메모리 억세스 동작의 물리 어드레스 정보 중 적어도 일부와 가상 캐시의 엔트리에 저장된 물리 어드레스 정보 중 적어도 일부 사이에 정합이 있는가를 결정하도록 가상 캐시 메모리를 탐색하는데 사용된다. 상기 방법에서, 가상 캐시 메모리의 엔트리가 모두 탐색되지 않을 수 있고, 여기서 인덱스는 정합이 발견된 가상 캐시의 엔트리를 탐색하는 것을 제어한다.
가상 캐시 메모리 및 해석 룩어사이드 버퍼 (translation lookaside buffer)를 갖고, 가상 캐시 메모리가 다수의 엔트리를 갖고, 가상 캐시 메모리의 각 엔트리가 물리 어드레스 정보, 논리 어드레스 정보, 및 허가 정보를 포함하고, 해석 룩어사이드 버퍼가 다수의 엔트리를 갖고, 해석 룩어사이드 버퍼의 각 엔트리가 물리 어드레스 정보, 논리 어드레스 정보, 및 허가 정보를 포함하는 데이터 처리 시스템에서, 본 발명에 따른 방법은 다음 단계로 구성된다:
A. 메모리 억세스 동작과 연관된 논리 어드레스 정보 및 허가 정보를 근거로 소정의 메모리 위치에서 메모리 억세스 동작을 초기화하는 단계;
B. 가상 캐시 메모리를 억세스하고, 메모리 억세스 동작의 논리 어드레스 정보 중 적어도 일부와 가상 캐시의 엔트리에 저장된 논리 어드레스 정보 중 적어도 일부 사이에 정합이 있는가를 결정하는 단계;
C. 메모리 억세스 동작의 논리 어드레스 정보와 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 있으면, 메모리 억세스 동작의 허가 정보 및 가상 캐시 메모리의 특정 엔트리의 허가 정보를 근거로, 가상 캐시 메모리의 특정 엔트리의 허가 정보에 의해 메모리 억세스 동작이 허용되는가 여부를 결정하는 단계;
D. 가상 캐시 메모리의 특정 엔트리의 허가 정보에 의해 메모리 억세스 동작이 허용되지 않으면, 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보를 근거로 해석 룩어사이드 버퍼를 억세스하는 단계;
E. 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보와 해석 룩어사이드 버퍼의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 있으면, 메모리 억세스 동작의 허가 정보 및 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보를 근거로, 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보에 의해 메모리 억세스 동작이 허용되는가 여부를 결정하는 단계;
F. 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보에 의해 메모리 억세스 동작이 허용되면, 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보를 근거로 가상 캐시 메모리의 특정 엔트리의 허가 정보를 업데이트하는 단계; 및
G. 메모리 억세스 동작을 완료하는 단계.
상기 방법에서, 단계 D 이후에, 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보와 해석 룩어사이드 버퍼의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 없으면, 해석 룩어사이드 버퍼 손실 동작이 실행된다. 상기 방법에서, 단계 C 이후에, 가상 캐시 메모리의 특정 엔트리의 허가 정보에 의해 메모리 억세스 동작이 허용되면, 메모리 억세스 동작은 완료된다. 상기 방법에서, 가상 캐시 메모리의 특정 엔트리의 허가 정보는 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보를 근거로 확장된다. 상기 방법에서, 동작은 허가 위반 동작을 실행하지 않고 완료된다.
상기 방법에서, 단계 H가 실행될 수 있다: 단계 C 이후에, 메모리 억세스 동작의 논리 어드레스 정보와 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 없으면, 메모리 억세스 동작의 논리 어드레스 정보를 근거로 해석 룩어사이드 버퍼가 억세스된다; 또한, 단계 I가 실행될 수 있다: 메모리 억세스 동작과 해석 룩어사이드 버퍼의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 있으면, 해석 룩어사이드 버퍼의 특정 엔트리의 물리 어드레스 정보와 가상 캐시 메모리의 특정 엔트리의 물리 어드레스 정보 사이에 정합이 있는가를 결정한다; 또한 단계 J가 실행될 수 있다: 해석 룩어사이드 버퍼의 특정 엔트리의 물리 어드레스 정보와 가상 캐시 메모리의 특정 엔트리의 물리 어드레스 정보 사이에 정합이 있으면, 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보가 해석 룩어사이드 버퍼의 특정 엔트리의 논리 어드레스 정보로 업데이트된다.
상기 방법에서, 단계 D 및 H의 해석 룩어사이드 버퍼를 억세스하는 단계는 해석 룩어사이드 버퍼의 단일 억세스와 함께 실행될 수 있다. 상기 설명에서, 똑같은 물리 어드레스를 갖는 2개의 논리 어드레스의 상태가 검출될 수 있고, 여기서 메모리 억세스 동작은 캐시 손실 동작 없이 완료된다. 상기 설명에서, 메모리 억세스 동작은 메모리 기록 동작이 될 수 있고, 여기서 가상 캐시 메모리의 특정 엔트리의 허가 정보는 메모리 기록 동작이 허용되지 않음을 먼저 나타내고, 해석 룩어사이드 버퍼의 특정 엔트리는 메모리 기록 동작이 허용되지 않음을 먼저 나타내고, 그 방법은 또한: 메모리 기록 동작이 소정의 메모리 위치를 포함하는 특별한 메모리 페이지에 대한 제1 메모리 기록 동작인가를 결정하도록 동작을 실행하는 단계; 및 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보를 업데이트하는 단계를 포함한다. 상기 방법에서, 단계 A 내지 G는 메모리 기록 동작에 대해 반복될 수 있고, 여기서 가상 캐시 메모리의 특정 엔트리의 허가 정보는 업데이트되어 메모리 기록 동작이 완료된다.
또한, 상기 방법에서, 단계 E 이후에, 메모리 억세스가 해석 룩어사이드 버퍼의 특정 엔트리의 허가 정보에 의해 허용되지 않으면, 허가 위반 예외가 일어날 수 있다.
생각할 수 있는 바와 같이, 이러한 가상 캐시 메모리의 바람직한 실시예로,캐시 및 메모리가 바람직하게 밀착되는 방식으로, 예를 들어 스누프형 명령이 제공되는 물리 어드레스 정보를 근거로 하는 ptag 비교를 사용하여, 외부적으로 공급된 스누프형 명령이 처리될 수 있다.
본 발명은 바람직한 실시예 및 다른 방법의 실시예에 대해 설명되었지만, 종리 기술에 숙련된 자에게는 본 발명의 의도에서 실질적으로 벗어나지 않고 다수의 변형 및 수정이 이루어질 수 있음이 명백하다. 따라서, 이러한 변형 및 수정은 모두 첨부된 청구항에 의해 정의되는 본 발명의 의도 및 범위내에 포함되는 것으로 의도된다.
본 발명에 따르면, 다음과 같은 효과가 있다.
(1)MMU는 MMU가 후세대의 마이크로 프로세서의 발전에 적합하도록 용이하게 스케일링될 수 있다.
(2)MMU는 보다 최적화된 방법으로 가상 캐시 메모리에 의해서도 조작할 수 있다.
(3)MMU 및 캐시는 가상 및 비가상 캐시 설계로 보다 손쉽게 버전을 가능하게 하는 방식으로 실시된다.
(4) 캐시 또는 가상 캐시보다 용이하게 구현되고, 관리되고, 또한 구성 레지스터, 캐시 제어 명령등을 사용하여 제어할 수 있다.

Claims (11)

  1. 가상 캐시 메모리 (virtual cache memory) 및 해석 룩어사이드 버퍼 (translation lookaside buffer)를 갖고, 상기 가상 캐시 메모리가 다수의 엔트리 (entry)를 갖고, 상기 가상 캐시 메모리의 각 엔트리가 물리 어드레스 정보, 논리 어드레스 정보, 및 허가 정보를 포함하고, 상기 해석 룩어사이드 버퍼가 다수의 엔트리를 갖고, 상기 해석 룩어사이드 버퍼의 각 엔트리가 물리 어드레스 정보, 논리 어드레스 정보, 및 허가 정보를 포함하는 데이터 처리 시스템에서 실행되는 방법에 있어서,
    A. 메모리 억세스 동작과 연관된 논리 어드레스 정보 및 허가 정보를 근거로 소정의 메모리 위치에 대해서 메모리 억세스 동작을 초기화하는 단계;
    B. 상기 가상 캐시 메모리를 억세스하고, 상기 메모리 억세스 동작의 논리 어드레스 정보 중 적어도 일부와 상기 가상 캐시의 엔트리에 저장된 논리 어드레스 정보 중 적어도 일부 사이에 정합이 있는가를 결정하는 단계;
    C. 상기 메모리 억세스 동작의 논리 어드레스 정보와 상기 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 있으면, 상기 메모리 억세스 동작의 허가 정보 및 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보를 근거로, 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되는가 여부를 결정하는 단계;
    D. 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되지 않으면, 상기 가상 캐시 메모리의 상기 특정 엔트리의 논리 어드레스 정보를 근거로 상기 해석 룩어사이드 버퍼를 억세스하는 단계;
    E. 상기 가상 캐시 메모리의 상기 특정 엔트리의 논리 어드레스 정보와 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 논리 어드레스 정보 사이에 정합이 있으면, 상기 메모리 억세스 동작의 허가 정보 및 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보를 근거로, 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되는가 여부를 결정하는 단계;
    F. 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되면, 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보를 근거로 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보를 업데이트하는 단계; 및
    G. 상기 메모리 억세스 동작을 완료하는 단계
    를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  2. 제1항에 있어서,
    단계 D 이후에, 상기 가상 캐시 메모리의 상기 특정 엔트리의 논리 어드레스 정보와 상기 해석 룩어사이드 버퍼의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 없으면, 해석 룩어사이드 버퍼 손실 동작을 실행하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  3. 제1항에 있어서,
    단계 C 이후에, 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보에 의해 상기 메모리 억세스 동작이 허용되면, 상기 메모리 억세스 동작을 완료하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  4. 제1항에 있어서,
    상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보는 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보를 근거로 확장되는 것을 특징으로 하는 데이터 처리 방법.
  5. 제1항에 있어서,
    상기 동작은 허가 위반 동작을 실행하지 않고 완료되는 것을 특징으로 하는 데이터 처리 방법.
  6. 제1항에 있어서,
    H. 단계 C 이후에, 상기 메모리 억세스 동작의 논리 어드레스 정보와 상기 가상 캐시 메모리의 특정 엔트리의 논리 어드레스 정보 사이에 정합이 없으면, 상기 메모리 억세스 동작의 논리 어드레스 정보를 근거로 상기 해석 룩어사이드 버퍼를 억세스하는 단계;
    I. 상기 메모리 억세스 동작의 상기 논리 어드레스 정보와 상기 해석 룩어사이드 버퍼의 특정 엔트리 사이에 정합이 있으면, 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 물리 어드레스 정보와 상기 가상 캐시 메모리의 특정 엔트리의 물리 어드레스 정보 사이에 정합이 있는지 여부를 결정하는 단계; 및
    J. 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 물리 어드레스 정보와 상기 가상 캐시 메모리의 특정 엔트리의 물리 어드레스 정보 사이에 정합이 있으면, 상기 가상 캐시 메모리의 상기 특정 엔트리의 논리 어드레스 정보를 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 논리 어드레스 정보로 업데이트하는 단계
    를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  7. 제6항에 있어서,
    단계 D 및 H에서 상기 해석 룩어사이드 버퍼를 억세스하는 단계는 상기 해석 룩어사이드 버퍼의 단일 억세스와 함께 실행되는 것을 특징으로 하는 데이터 처리 방법.
  8. 제6항에 있어서,
    동일한 물리 어드레스를 갖는 2개의 논리 어드레스의 조건이 검출되고, 상기 메모리 억세스 동작은 캐시 손실 동작을 실행하지 않고 완료되는 것을 특징으로 하는 데이터 처리 방법.
  9. 제1항에 있어서,
    상기 메모리 억세스 동작은 메모리 기록 동작이고, 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보는 상기 메모리 기록 동작이 허용되지 않음을 초기적으로 나타내고, 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리는 상기 메모리 기록 동작이 허용되지 않음을 초기적으로 나타내고, 상기 방법은:
    상기 메모리 기록 동작이 소정의 메모리 위치를 포함하는 메모리 특정 페이지에 대한 제1 메모리 기록 동작인지 여부를 결정하는 동작을 실행하는 단계; 및
    상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보를 업데이트하는 단계
    를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  10. 제9항에 있어서,
    단계 A 내지 G는 상기 메모리 기록 동작에 대해 반복되고, 상기 가상 캐시 메모리의 상기 특정 엔트리의 허가 정보는 업데이트되어 상기 메모리 기록 동작이 완료되는 것을 특징으로 하는 데이터 처리 방법.
  11. 제1항에 있어서,
    단계 E 이후에, 상기 메모리 억세스 동작이 상기 해석 룩어사이드 버퍼의 상기 특정 엔트리의 허가 정보에 의해 허용되지 않으면, 허가 위반 예외 (exception)가 일어나는 것을 특징으로 하는 데이터 처리 방법.
KR1020000057745A 1999-10-01 2000-09-30 개선된 메모리 관리 유닛 및 캐시 메모리를 갖춘마이크로프로세서 KR20010050799A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/410,506 US6412043B1 (en) 1999-10-01 1999-10-01 Microprocessor having improved memory management unit and cache memory
US9/410,506 1999-10-01

Publications (1)

Publication Number Publication Date
KR20010050799A true KR20010050799A (ko) 2001-06-25

Family

ID=23625019

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000057745A KR20010050799A (ko) 1999-10-01 2000-09-30 개선된 메모리 관리 유닛 및 캐시 메모리를 갖춘마이크로프로세서

Country Status (4)

Country Link
US (2) US6412043B1 (ko)
JP (1) JP2001142779A (ko)
KR (1) KR20010050799A (ko)
TW (1) TW508493B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019266B1 (ko) * 2006-04-19 2011-03-07 콸콤 인코포레이티드 물리적으로-태그된 동작을 사용하는 가상으로-태그된 명령 캐시
KR101109210B1 (ko) * 2008-08-05 2012-01-30 인텔 코오퍼레이션 데이터 액세스 위반을 검출하기 위한 방법 및 장치

Families Citing this family (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE59710317D1 (de) 1996-12-27 2003-07-24 Pact Inf Tech Gmbh VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
GB9704542D0 (en) * 1997-03-05 1997-04-23 Sgs Thomson Microelectronics A cache coherency mechanism
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
EP1030243B1 (en) * 1999-02-18 2002-10-30 Texas Instruments France Optimized hardware cleaning function for virtual index virtual tag data cache
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US7254806B1 (en) * 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6629207B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6598128B1 (en) * 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6519684B1 (en) * 1999-11-23 2003-02-11 Motorola, Inc. Low overhead method for selecting and updating an entry in a cache memory
US6536038B1 (en) * 1999-11-29 2003-03-18 Intel Corporation Dynamic update of non-upgradeable memory
US6629234B1 (en) 2000-03-30 2003-09-30 Ip. First, L.L.C. Speculative generation at address generation stage of previous instruction result stored in forward cache for use by succeeding address dependent instruction
ATE476700T1 (de) 2000-06-13 2010-08-15 Richter Thomas Pipeline ct-protokolle und -kommunikation
US6615300B1 (en) * 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6782469B1 (en) 2000-09-29 2004-08-24 Intel Corporation Runtime critical load/data ordering
US6760816B1 (en) * 2000-09-29 2004-07-06 Intel Corporation Critical loads guided data prefetching
US6662273B1 (en) 2000-09-29 2003-12-09 Intel Corporation Least critical used replacement with critical cache
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
GB2368150B (en) * 2000-10-17 2005-03-30 Advanced Risc Mach Ltd Management of caches in a data processing apparatus
US6662275B2 (en) * 2001-02-12 2003-12-09 International Business Machines Corporation Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with store-through data cache
US6574714B2 (en) * 2001-02-12 2003-06-03 International Business Machines Corporation Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with write-back data cache
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US6651156B1 (en) 2001-03-30 2003-11-18 Mips Technologies, Inc. Mechanism for extending properties of virtual memory pages by a TLB
US6643759B2 (en) * 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US7472231B1 (en) * 2001-09-07 2008-12-30 Netapp, Inc. Storage area network data cache
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
WO2004021176A2 (de) * 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US6829762B2 (en) * 2002-10-10 2004-12-07 International Business Machnies Corporation Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system
US7213248B2 (en) * 2002-10-10 2007-05-01 International Business Machines Corporation High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system
US6829698B2 (en) * 2002-10-10 2004-12-07 International Business Machines Corporation Method, apparatus and system for acquiring a global promotion facility utilizing a data-less transaction
US7017031B2 (en) * 2002-10-10 2006-03-21 International Business Machines Corporation Method, apparatus and system for managing released promotion bits
US6920514B2 (en) * 2002-10-10 2005-07-19 International Business Machines Corporation Method, apparatus and system that cache promotion information within a processor separate from instructions and data
US6925551B2 (en) 2002-10-10 2005-08-02 International Business Machines Corporation Method, apparatus and system for accessing a global promotion facility through execution of a branch-type instruction
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7296127B2 (en) * 2003-03-31 2007-11-13 Intel Corporation NoDMA cache
EP1634182A2 (en) * 2003-06-17 2006-03-15 PACT XPP Technologies AG Data processing device and method
EP1676208A2 (en) 2003-08-28 2006-07-05 PACT XPP Technologies AG Data processing device and method
US7249225B1 (en) * 2003-10-31 2007-07-24 Sun Microsystems, Inc Method and apparatus for supporting read-only objects within an object-addressed memory hierarchy
US7159095B2 (en) * 2003-12-09 2007-01-02 International Business Machines Corporation Method of efficiently handling multiple page sizes in an effective to real address translation (ERAT) table
US7464100B2 (en) * 2003-12-24 2008-12-09 Sap Ag Reorganization-free mapping of objects in databases using a mapping chain
US20050216713A1 (en) * 2004-03-25 2005-09-29 International Business Machines Corporation Instruction text controlled selectively stated branches for prediction via a branch target buffer
US7386679B2 (en) 2004-04-15 2008-06-10 International Business Machines Corporation System, method and storage medium for memory management
US7260702B2 (en) * 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US20060106988A1 (en) * 2004-11-16 2006-05-18 Charbel Khawand Method and system for exchanging data
US8458467B2 (en) * 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
CA2604573A1 (en) * 2005-04-13 2006-10-19 Telefonaktiebolaget L M Ericsson (Publ) Data value coherence in computer systems
US7337262B2 (en) * 2005-05-02 2008-02-26 International Business Machines Corporation Adaptive read ahead method of data recorded on a sequential media readable via a variable data block size storage device
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
KR100776112B1 (ko) 2006-02-15 2007-11-15 삼성전자주식회사 휴대단말기의 부팅 시간 단축방법
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US9208095B2 (en) 2006-12-15 2015-12-08 Microchip Technology Incorporated Configurable cache for a microprocessor
US7877537B2 (en) * 2006-12-15 2011-01-25 Microchip Technology Incorporated Configurable cache for a microprocessor
US7966457B2 (en) 2006-12-15 2011-06-21 Microchip Technology Incorporated Configurable cache for a microprocessor
US7681020B2 (en) * 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US8261006B2 (en) * 2007-12-19 2012-09-04 Spansion Llc Efficient memory hierarchy in solid state drive design
US8751747B2 (en) * 2008-02-26 2014-06-10 International Business Machines Corporation Management of cache replacement status in cache memory
US9239799B2 (en) 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
JP5300407B2 (ja) * 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
US8234407B2 (en) * 2009-06-30 2012-07-31 Oracle America, Inc. Network use of virtual addresses without pinning or registration
US8593472B1 (en) * 2009-07-31 2013-11-26 Nvidia Corporation System and method for accessing a frame buffer via a storage driver
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US8635412B1 (en) * 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8533396B2 (en) * 2010-11-19 2013-09-10 Advanced Micro Devices, Inc. Memory elements for performing an allocation operation and related methods
US8949551B2 (en) 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation
US9116845B2 (en) 2011-02-23 2015-08-25 Freescale Semiconductor, Inc. Remote permissions provisioning for storage in a cache and device therefor
US20120239887A1 (en) * 2011-03-16 2012-09-20 Advanced Micro Devices, Inc. Method and apparatus for memory control
US9189424B2 (en) * 2011-05-31 2015-11-17 Hewlett-Packard Development Company, L.P. External cache operation based on clean castout messages
US8639895B2 (en) 2011-07-14 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for memory region descriptor attribute override
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
WO2013058745A1 (en) 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches
JP2013097671A (ja) * 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
US8863141B2 (en) 2011-12-14 2014-10-14 International Business Machines Corporation Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history
US8694995B2 (en) 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US8924832B1 (en) * 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US10599433B2 (en) 2013-07-15 2020-03-24 Texas Instruments Incorported Cache management operations using streaming engine
US10606596B2 (en) 2013-07-15 2020-03-31 Texas Instruments Incorporated Cache preload operations using streaming engine
GB2517453B (en) * 2013-08-20 2017-12-20 Imagination Tech Ltd Improved use of memory resources
US9256543B2 (en) 2014-01-15 2016-02-09 Oxide Interactive Llc Method and system for efficient communication and command system for deferred operation
US11507506B2 (en) 2014-01-15 2022-11-22 Oxide Interactive, Inc. Method and system for efficient communication and command system for deferred operation
CN105993003B (zh) * 2014-07-21 2019-04-09 上海兆芯集成电路有限公司 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器
US9767045B2 (en) * 2014-08-29 2017-09-19 Memory Technologies Llc Control for authenticated accesses to a memory device
JP6481549B2 (ja) * 2015-07-23 2019-03-13 富士通株式会社 情報処理装置および情報処理装置の制御方法
US11249646B1 (en) * 2016-02-01 2022-02-15 OmniTier Storage, Inc. Large segment management
US20170255569A1 (en) * 2016-03-01 2017-09-07 Qualcomm Incorporated Write-allocation for a cache based on execute permissions
US10169009B2 (en) * 2016-06-01 2019-01-01 International Business Machines Corporation Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs
US10169010B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing
US9934009B2 (en) 2016-06-01 2018-04-03 International Business Machines Corporation Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur
WO2018132477A1 (en) * 2017-01-10 2018-07-19 Renesas Electronics America Inc. A security architecture and method
US10482028B2 (en) * 2017-04-21 2019-11-19 Intel Corporation Cache optimization for graphics systems
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
KR102287758B1 (ko) * 2018-03-05 2021-08-09 삼성전자주식회사 부채널 공격으로부터 캐시를 보호하는 시스템
WO2019183831A1 (en) * 2018-03-28 2019-10-03 Intel Corporation Address space identifier management in complex input/output virtualization environments
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US11061810B2 (en) * 2019-02-21 2021-07-13 International Business Machines Corporation Virtual cache mechanism for program break point register exception handling
US11119770B2 (en) * 2019-07-26 2021-09-14 Microsoft Technology Licensing, Llc Performing atomic store-and-invalidate operations in processor-based devices
US11226902B2 (en) * 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4682281A (en) * 1983-08-30 1987-07-21 Amdahl Corporation Data storage unit employing translation lookaside buffer pointer
JPH0644138A (ja) * 1992-04-29 1994-02-18 Sun Microsyst Inc キャッシュ・メモリを利用したデータ処理システム
JPH07325761A (ja) * 1994-02-22 1995-12-12 Advanced Micro Devicds Inc 仮想記憶システムに使用するための装置
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4332010A (en) 1980-03-17 1982-05-25 International Business Machines Corporation Cache synonym detection and handling mechanism
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
US4680698A (en) 1982-11-26 1987-07-14 Inmos Limited High density ROM in separate isolation well on single with chip
US4873629A (en) 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
DE3584690D1 (de) 1984-06-20 1992-01-02 Convex Computer Corp Ein-/ausgabebus fuer rechner.
US4935867A (en) 1986-03-04 1990-06-19 Advanced Micro Devices, Inc. Signal processor memory management unit with indirect addressing using selectable offsets and modulo values for indexed address calculations
US4797814A (en) 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
US4814981A (en) 1986-09-18 1989-03-21 Digital Equipment Corporation Cache invalidate protocol for digital data processing system
JPH0221342A (ja) 1987-02-27 1990-01-24 Hitachi Ltd マルチプロセッサシステム及びマルチプロセッサシステムにおける論理キャッシュメモリのアクセス方法
US5293597A (en) * 1987-03-09 1994-03-08 At&T Bell Laboratories Concurrent context memory management unit
US4926317A (en) 1987-07-24 1990-05-15 Convex Computer Corporation Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses
US5483518A (en) 1992-06-17 1996-01-09 Texas Instruments Incorporated Addressable shadow port and protocol for serial bus networks
US5133058A (en) * 1989-09-18 1992-07-21 Sun Microsystems, Inc. Page-tagging translation look-aside buffer for a computer memory system
JPH0666056B2 (ja) 1989-10-12 1994-08-24 甲府日本電気株式会社 情報処理システム
US5148538A (en) 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
JPH03217949A (ja) 1990-01-23 1991-09-25 Hitachi Ltd 計算機システム
US5452432A (en) 1990-08-14 1995-09-19 Chips And Technologies, Inc. Partially resettable, segmented DMA counter
JP2984463B2 (ja) 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
GB2260004B (en) * 1991-09-30 1995-02-08 Apple Computer Memory management unit for a computer system
US5423050A (en) 1991-11-27 1995-06-06 Ncr Corporation Intermodule test across system bus utilizing serial test bus
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5724549A (en) 1992-04-06 1998-03-03 Cyrix Corporation Cache coherency without bus master arbitration signals
GB2266606B (en) 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command mode
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US5448576A (en) 1992-10-29 1995-09-05 Bull Hn Information Systems Inc. Boundary scan architecture extension
JP3231429B2 (ja) 1992-11-06 2001-11-19 株式会社日立製作所 中央処理装置と乗算器とを有する半導体集積回路装置
JP3524110B2 (ja) 1992-11-06 2004-05-10 株式会社ルネサステクノロジ マイクロコンピュータシステム
JPH06150023A (ja) 1992-11-06 1994-05-31 Hitachi Ltd マイクロコンピュータ及びマイクロコンピュータシステム
US5627842A (en) 1993-01-21 1997-05-06 Digital Equipment Corporation Architecture for system-wide standardized intra-module and inter-module fault testing
JP2731692B2 (ja) 1993-04-28 1998-03-25 日本電気アイシーマイコンシステム株式会社 デバッグ装置
US5598551A (en) 1993-07-16 1997-01-28 Unisys Corporation Cache invalidation sequence system utilizing odd and even invalidation queues with shorter invalidation cycles
DE69415600T2 (de) 1993-07-28 1999-07-15 Koninkl Philips Electronics Nv Mikrokontroller mit hardwaremässiger Fehlerbeseitigungsunterstützung nach dem Boundary-Scanverfahren
JP3904244B2 (ja) 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
EP0652516A1 (en) 1993-11-03 1995-05-10 Advanced Micro Devices, Inc. Integrated microprocessor
US5596734A (en) 1993-12-17 1997-01-21 Intel Corporation Method and apparatus for programming embedded memories of a variety of integrated circuits using the IEEE test access port
US5828825A (en) 1993-12-22 1998-10-27 Intel Corporation Method and apparatus for pseudo-direct access to embedded memories of a micro-controller integrated circuit via the IEEE test access port
US5434804A (en) 1993-12-29 1995-07-18 Intel Corporation Method and apparatus for synchronizing a JTAG test control signal to an on-chip clock signal
US5488688A (en) 1994-03-30 1996-01-30 Motorola, Inc. Data processor with real-time diagnostic capability
JPH07287668A (ja) * 1994-04-19 1995-10-31 Hitachi Ltd データ処理装置
US5556009A (en) 1994-07-18 1996-09-17 Wagner Spray Tech Corporation Adjustable constant pressure caulk gun
GB9417602D0 (en) 1994-09-01 1994-10-19 Inmos Ltd A controller for implementing scan testing
JP3672634B2 (ja) 1994-09-09 2005-07-20 株式会社ルネサステクノロジ データ処理装置
JPH08329687A (ja) 1995-06-05 1996-12-13 Hitachi Ltd 半導体集積回路
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5907867A (en) 1994-09-09 1999-05-25 Hitachi, Ltd. Translation lookaside buffer supporting multiple page sizes
JP3713312B2 (ja) 1994-09-09 2005-11-09 株式会社ルネサステクノロジ データ処理装置
US5848247A (en) 1994-09-13 1998-12-08 Hitachi, Ltd. Microprocessor having PC card interface
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5613153A (en) 1994-10-03 1997-03-18 International Business Machines Corporation Coherency and synchronization mechanisms for I/O channel controllers in a data processing system
US5751621A (en) 1994-11-17 1998-05-12 Hitachi, Ltd. Multiply-add unit and data processing apparatus using it
TW330265B (en) 1994-11-22 1998-04-21 Hitachi Ltd Semiconductor apparatus
JP2752592B2 (ja) 1994-12-28 1998-05-18 日本ヒューレット・パッカード株式会社 マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法
US5778237A (en) 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5664197A (en) 1995-04-21 1997-09-02 Intel Corporation Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller
US5867726A (en) 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
US5570375A (en) 1995-05-10 1996-10-29 National Science Council Of R.O.C. IEEE Std. 1149.1 boundary scan circuit capable of built-in self-testing
GB9509988D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
GB9509989D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US5860127A (en) 1995-06-01 1999-01-12 Hitachi, Ltd. Cache memory employing dynamically controlled data array start timing and a microcomputer using the same
US5774701A (en) 1995-07-10 1998-06-30 Hitachi, Ltd. Microprocessor operating at high and low clok frequencies
GB9514684D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics An arithmetic unit
US5708773A (en) 1995-07-20 1998-01-13 Unisys Corporation JTAG interface system for communicating with compliant and non-compliant JTAG devices
US5704034A (en) 1995-08-30 1997-12-30 Motorola, Inc. Method and circuit for initializing a data processing system
US5737516A (en) 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
JP3655403B2 (ja) 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
JP3623840B2 (ja) 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US5950012A (en) 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US5978874A (en) 1996-07-01 1999-11-02 Sun Microsystems, Inc. Implementing snooping on a split-transaction computer system bus
JPH09311786A (ja) 1996-03-18 1997-12-02 Hitachi Ltd データ処理装置
JP3579205B2 (ja) 1996-08-06 2004-10-20 株式会社ルネサステクノロジ 半導体記憶装置、半導体装置、データ処理装置及びコンピュータシステム
GB9617033D0 (en) 1996-08-14 1996-09-25 Int Computers Ltd Diagnostic memory access
US5768152A (en) 1996-08-28 1998-06-16 International Business Machines Corp. Performance monitoring through JTAG 1149.1 interface
JP3790307B2 (ja) 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
JPH10177520A (ja) 1996-10-16 1998-06-30 Hitachi Ltd データプロセッサ及びデータ処理システム
JP3641327B2 (ja) 1996-10-18 2005-04-20 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
GB9622686D0 (en) 1996-10-31 1997-01-08 Sgs Thomson Microelectronics A test port controller and a method of effecting communication using the same
US5953538A (en) 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US5983017A (en) 1996-11-12 1999-11-09 Lsi Logic Corporation Virtual monitor debugging method and apparatus
US5771240A (en) 1996-11-14 1998-06-23 Hewlett-Packard Company Test systems for obtaining a sample-on-the-fly event trace for an integrated circuit with an integrated debug trigger apparatus and an external pulse pin
US5956477A (en) 1996-11-25 1999-09-21 Hewlett-Packard Company Method for processing information in a microprocessor to facilitate debug and performance monitoring
US5896550A (en) 1997-04-03 1999-04-20 Vlsi Technology, Inc. Direct memory access controller with full read/write capability
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
GB9802097D0 (en) 1998-01-30 1998-03-25 Sgs Thomson Microelectronics DMA controller
GB9806184D0 (en) 1998-03-23 1998-05-20 Sgs Thomson Microelectronics A cache coherency mechanism
GB9809203D0 (en) 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Packet distribution in a microcomputer
US6496905B1 (en) * 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6434665B1 (en) * 1999-10-01 2002-08-13 Stmicroelectronics, Inc. Cache memory store buffer
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4682281A (en) * 1983-08-30 1987-07-21 Amdahl Corporation Data storage unit employing translation lookaside buffer pointer
JPH0644138A (ja) * 1992-04-29 1994-02-18 Sun Microsyst Inc キャッシュ・メモリを利用したデータ処理システム
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
JPH07325761A (ja) * 1994-02-22 1995-12-12 Advanced Micro Devicds Inc 仮想記憶システムに使用するための装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019266B1 (ko) * 2006-04-19 2011-03-07 콸콤 인코포레이티드 물리적으로-태그된 동작을 사용하는 가상으로-태그된 명령 캐시
KR101109210B1 (ko) * 2008-08-05 2012-01-30 인텔 코오퍼레이션 데이터 액세스 위반을 검출하기 위한 방법 및 장치

Also Published As

Publication number Publication date
US6591340B2 (en) 2003-07-08
US20020156962A1 (en) 2002-10-24
US6412043B1 (en) 2002-06-25
JP2001142779A (ja) 2001-05-25
TW508493B (en) 2002-11-01

Similar Documents

Publication Publication Date Title
US6591340B2 (en) Microprocessor having improved memory management unit and cache memory
US6598128B1 (en) Microprocessor having improved memory management unit and cache memory
US6629207B1 (en) Method for loading instructions or data into a locked way of a cache memory
US10915466B2 (en) System protecting caches from side-channel attacks
US7793067B2 (en) Translation data prefetch in an IOMMU
US8341379B2 (en) R and C bit update handling
US8949572B2 (en) Effective address cache memory, processor and effective address caching method
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
US5915262A (en) Cache system and method using tagged cache lines for matching cache strategy to I/O application
US6604187B1 (en) Providing global translations with address space numbers
US6681311B2 (en) Translation lookaside buffer that caches memory type information
US5793941A (en) On-chip primary cache testing circuit and test method
US5524233A (en) Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US5802574A (en) Method and apparatus for quickly modifying cache state
US8195881B2 (en) System, method and processor for accessing data after a translation lookaside buffer miss
US20040154012A1 (en) Safe store for speculative helper threads
US20140237174A1 (en) Highly Efficient Design of Storage Array Utilizing Multiple Cache Lines for Use in First and Second Cache Spaces and Memory Subsystems
US7996650B2 (en) Microprocessor that performs speculative tablewalks
US6711653B1 (en) Flexible mechanism for enforcing coherency among caching structures
US10339054B2 (en) Instruction ordering for in-progress operations
US6553460B1 (en) Microprocessor having improved memory management unit and cache memory
CN112639750A (zh) 用于控制存储器存取的装置及方法
US8108621B2 (en) Data cache with modified bit array
US20050091459A1 (en) Flexible mechanism for enforcing coherency among caching structures
US8108624B2 (en) Data cache with modified bit array

Legal Events

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