KR20170120635A - 캐시 메인터넌스 명령 - Google Patents
캐시 메인터넌스 명령 Download PDFInfo
- Publication number
- KR20170120635A KR20170120635A KR1020177026340A KR20177026340A KR20170120635A KR 20170120635 A KR20170120635 A KR 20170120635A KR 1020177026340 A KR1020177026340 A KR 1020177026340A KR 20177026340 A KR20177026340 A KR 20177026340A KR 20170120635 A KR20170120635 A KR 20170120635A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- address
- virtual page
- page
- cache maintenance
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
-
- Y02B60/1225—
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
장치(2)는 명령에 응답하여 데이터 처리를 수행하기 위한 처리 회로(4)를 포함한다. 처리 회로(4)는 가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스(52)를 특정하는 캐시 메인터넌스 명령(cache maintenance instruction)(50)을 지원한다. 캐시 메인터넌스 명령에 응답하여, 처리 회로(4)는 캐시 라인에 의해 저장된 데이터의 물리적 어드레스가 캐시 메인터넌스 명령에 의해 제공된 가상 페이지 어드레스에 의해 식별된 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 캐시 라인(cache line)에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시(18, 20, 22)를 트리거한다.
Description
본 기술은 데이터 처리 분야에 관한 것이다. 더욱 상세하게는, 이는 캐시 메인터넌스 동작(cache maintenance operation)에 관한 것이다.
장치는, 데이터가 메모리로부터 페치되어야(fetched) 하는 경우보다 캐싱된(cached) 데이터가 더 빠르게 처리 회로에 의해 액세스될 수 있도록, 메모리로부터의 데이터의 캐싱된 형태를 저장하기 위한 하나 이상의 캐시(cache)를 가질 수 있다. 장치 내에는 여러 캐시가 있을 수 있으며, 예를 들어 동일한 어드레스에 대응하는 일관성 있는 상이한 형태의 데이터를 만들도록, 때때로 캐시 메인터넌스 동작이 수행될 수 있다.
적어도 일부 실시예는:
명령에 응답하여 데이터 처리를 수행하는 처리 회로를 포함하고,
가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령(cache maintenance instruction)에 응답하여, 처리 회로는, 캐시 라인(cache line)에 의해 저장된 데이터의 물리적 어드레스가 가상 페이지 어드레스에 의해 식별된 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 캐시 라인에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하고,
캐시 메인터넌스 명령은 복수의 가상 페이지 크기 중 하나를 특정하고, 처리 회로는 캐시 메인터넌스 명령에 의해 특정된 가상 페이지 크기를 갖는 가상 페이지를 이용하여 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하기 위하여 캐시 메인터넌스 명령에 응답하는 장치를 제공한다.
적어도 일부 실시예는:
명령에 응답하여 데이터 처리를 수행하는 처리 수단을 포함하고,
가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령에 응답하여, 처리 수단이, 캐시 라인에 의해 저장된 데이터의 물리적 어드레스가 가상 페이지 어드레스에 의해 식별된 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 캐시 라인에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하고,
캐시 메인터넌스 명령은 복수의 가상 페이지 크기 중 하나를 특정하고, 처리 수단은 캐시 메인터넌스 명령에 의해 특정된 가상 페이지 크기를 갖는 가상 페이지를 이용하여 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하기 위하여 캐시 메인터넌스 명령에 응답하는 장치를 제공한다.
적어도 일부 실시예는:
가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령을 수신하는 단계; 및
캐시 메인터넌스 명령에 응답하여, 캐시 라인에 의해 저장된 데이터의 물리적 어드레스가 가상 페이지 어드레스에 의해 식별된 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 캐시 라인에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하는 단계
를 포함하고,
캐시 메인터넌스 명령은 복수의 가상 페이지 크기 중 하나를 특정하고, 캐시 메인터넌스 명령에 응답하여, 적어도 하나의 캐시는 캐시 메인터넌스 명령에 의해 특정된 가상 페이지 크기를 갖는 가상 페이지를 이용하여 캐시 메인터넌스 동작을 수행하도록 트리거되는 데이터 처리 방법을 제공한다.
추가의 실시예들, 예들 및 특징들이 다음의 첨부된 도면들과 함께 아래에서 설명될 것이다:
도 1은 처리 회로 및 캐시를 갖는 데이터 처리 장치를 개략적으로 도시한다;
도 2는 캐시의 일례를 도시한다;
도 3은 캐시 메인터넌스 명령의 일례를 도시한다;
도 4는 가상 페이지 어드레스와 물리적 페이지 어드레스 사이의 변환의 일례를 도시한다;
도 5 내지 도 7은 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령에 응답하여 캐시 메인터넌스 동작을 수행하는 3가지 예를 도시한다;
도 8 및 9는 캐시 메인터넌스 명령에 의해 특정된 가상 페이지에 대응하는 물리적 페이지 내에서 어느 캐시 라인이 물리적 어드레스를 갖는 데이터를 저장하는지 식별하는 것에 대한 예들을 도시한다;
도 10은 스눕(snoop) 필터가 각각의 캐시에 저장된 데이터를 추적하는 여러 캐시를 포함하는 장치의 일례를 도시한다; 그리고,
도 11은 데이터 처리 방법을 도시한다.
도 1은 처리 회로 및 캐시를 갖는 데이터 처리 장치를 개략적으로 도시한다;
도 2는 캐시의 일례를 도시한다;
도 3은 캐시 메인터넌스 명령의 일례를 도시한다;
도 4는 가상 페이지 어드레스와 물리적 페이지 어드레스 사이의 변환의 일례를 도시한다;
도 5 내지 도 7은 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령에 응답하여 캐시 메인터넌스 동작을 수행하는 3가지 예를 도시한다;
도 8 및 9는 캐시 메인터넌스 명령에 의해 특정된 가상 페이지에 대응하는 물리적 페이지 내에서 어느 캐시 라인이 물리적 어드레스를 갖는 데이터를 저장하는지 식별하는 것에 대한 예들을 도시한다;
도 10은 스눕(snoop) 필터가 각각의 캐시에 저장된 데이터를 추적하는 여러 캐시를 포함하는 장치의 일례를 도시한다; 그리고,
도 11은 데이터 처리 방법을 도시한다.
장치는 명령에 응답하여 데이터 처리를 수행하기 위한 처리 회로를 가질 수 있다. 처리 회로는 메모리로부터의 대응하는 데이터보다 더 빠르게 데이터가 액세스될 수 있는 적어도 하나의 캐시(cache)에 액세스할 수 있다. 예를 들어, 캐시 계층(cache hierarchy)에는 여러 레벨의 캐시가 있을 수 있다. 때때로 하나 이상의 캐시 내의 소정의 캐시 라인(cache line)에 캐시 메인터넌스 동작(cache maintenance operation)을 수행하는 것이 요구될 수 있다. 예를 들어, 캐시 메인터넌스 동작이 캐싱된 데이터와 메모리 또는 다른 캐시에서의 대응하는 데이터 사이에 일관성을 유지하기 위하여 수행될 수 있다.
처리 회로는 가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령(cache maintenance instruction)을 지원한다. 가상 어드레스는, 메모리에 의해 사용되는 물리적 어드레스와는 대조적으로, 데이터를 참조하기 위하여 처리 회로에 의해 사용되는 어드레스이다. 캐시 메인터넌스 명령에 응답하여, 처리 회로는 임의의 캐시 라인에 의해 저장되는 데이터의 물리적 어드레스가 명령에서 특정된 가상 페이지 어드레스에 의해 식별되는 가상 페이지에 대응하는 물리적 페이지 내에 있는 그 캐시 라인에 대하여 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거할 수 있다. 2 이상의 캐시를 포함하는 시스템에서, 캐시 메인터넌스가 수행되는 캐시 라인들은 모두 동일한 캐시 내에 있을 수 있거나, 2 이상의 캐시 내에 있을 수 있다 - 이것은 어느 어드레스가 각각의 캐시에 저장된 데이터를 가지는가에 좌우될 것이다.
어드레스의 전체 가상 페이지에 대하여 수행되도록 캐시 메인터넌스를 트리거하는 캐시 메인터넌스 명령을 제공함으로써, 이것은 캐시 메인터넌스가 수행될 각각의 가상 어드레스를 위하여 개별 캐시 메인터넌스를 실행하는 것과 같은 다른 대안적인 접근 방식에 비하여 여러 이점을 제공할 수 있다. 첫째, 실행되는 명령의 개수가 감소될 수 있어, 처리 회로에 대한 부담을 감소시키고 다른 명령들의 더 큰 쓰루풋을 가능하게 한다. 또한, 이는 더 높은 레벨의 시스템 소프트웨어 의도가 장치 내의 구조(fabric) 및 컴포넌트로 표현될 수 있게 하며, 이는, 어드레스 기반의 접근 방식으로는 시스템이 개별 명령으로부터 더 큰 범위의 어드레스가 캐시 메인터넌스를 필요로 할 것이라고 전할 수 없기 때문에, 각각의 어드레스에 대하여 개별 캐시 메인터넌스 명령이 실행될 때 가능하지 않을 수 있는 성능 최적화를 가능하게 할 수 있다. 또한, 가상 어드레스 공간의 전체 페이지에 대하여 캐시 메인터넌스를 트리거하기 위하여 단일 명령을 사용함으로써, 메인터넌스 동작은 로크(lock) 또는 다른 상태 추적 동작이 처리 회로에 의해 수행될 필요가 없이 미세하게(atomically) 수행될 수 있어, 데이터 일관성(data coherence)을 유지하는 것에 대한 오버 헤드를 감소시킨다. 또한, 캐시 동작 동안의 운영 체제 선취(pre-emption)도 소프트웨어에 대하여 투명하게 핸들링될 수 있다.
캐시 메인터넌스 명령은, 실행될 때 처리 회로가 특정된 페이지 크기의 어드레스 블록에 대하여 캐시 메인터넌스 동작을 수행하기 위하여 캐시를 제어할 수 있도록, 다수의 가상 페이지 크기 중 하나를 특정할 수 있다. 이것은, 실제로 필요한 것보다 훨씬 더 큰 범위의 어드레스에 대하여 캐시 메인터넌스를 불필요하게 적용하는 것을 방지하기 위하여, 프로그래머 또는 컴파일러가 필요한 범위의 어드레스와 최상으로 매칭하는 가상 페이지 크기를 특정하는 캐시 메인터넌스 명령을 선택할 수 있게 하여, 캐시에서 메인터넌스 오버 헤드를 감소시킨다. 가상 페이지 크기는 명령에 의해 상이한 방식들로 특정될 수 있다. 일부 예에서, 페이지 크기는 (본질적으로 상이한 명령이 각각의 페이지 크기에 대하여 제공되도록) 명령 작동 부호(opcode)에 내포될 수 있다. 이 대신에, 공통 opcode가 사용될 수 있지만, 즉각적인 필드가 사용될 가상 페이지 크기를 특정할 수 있거나, 사용될 가상 페이지 크기를 나타내는 값을 저장하는 레지스터를 명령이 특정할 수 있다.
처리 회로는 가상 페이지 어드레스를 물리적 페이지 어드레스로 변환하기(translate) 위하여, 변환 색인 버퍼(translation lookaside buffer(TLB)) 또는 메모리 관리 유닛(memory management unit(MMU))과 같은, 변환 회로를 가질 수 있다. 예를 들어, 변환 회로는 각각의 엔트리(entry)가 특정 가상 페이지 어드레스에 대응하고 그 가상 페이지 어드레스에 대한 대응하는 물리적 페이지 어드레스를 식별하는 다수의 변환 엔트리를 가질 수 있다. 즉, 동일한 가상 어드레스-물리적 어드레스 변환이 동일한 페이지 내의 모든 어드레스에 적용되고 상이한 가상 어드레스-물리적 어드레스 변환이 상이한 페이지 내의 어드레스에 대하여 사용될 수 있도록, 메모리의 "페이지(page)"는 하나의 변환 엔트리에 대응하는 메모리 어드레스 공간의 단위를 지칭할 수 있다. 따라서, 가상 페이지 어드레스를 이용하여 캐시 메인터넌스가 필요한 어드레스를 식별하는 캐시 메인터넌스 명령을 제공하는 것의 다른 이점은, 개별 캐시 메인터넌스 명령이 각각의 어드레스에 대하여 실행되는 경우에 필요할 수 있는 각각의 어드레스에 대한 다수의 룩업(lookup)이 아니라, 변환 회로의 단지 한 번의 룩업이 필요할 수 있다는 것이다. 변환 테이블 룩업은, 특히, 필요한 가상 어드레스-물리적 어드레스 매핑을 찾기 위하여 변환 테이블 워크(translation table walk)가 필요한 경우에, 상대적으로 느릴 수 있어, 어드레스 변환의 오버 헤드를 감소시킴으로써 가상 페이지 어드레스 기반의 캐시 메인터넌스 명령은 성능을 개선할 수 있다.
가상 캐시 메인터넌스 동작은, 캐시 메인터넌스 명령에 응답하여, 특정된 가상 페이지 내의 어드레스에 수행될 수 있다. 예를 들어, 캐시 메인터넌스 동작은, 일반적으로, 캐싱된 데이터의 일관성 상태(coherency status)를 변경하거나, 시스템 내의 상이한 형태들의 데이터 사이에 일관성을 보장하거나, 다른 동작이 예측 가능한 동작을 계속할 수 있도록 캐시의 부분들을 어떤 알려진 상태로 배치하기 위한 동작을 포함할 수 있다. 예를 들어, 캐시 메인터넌스 동작은 다음 중 임의의 것을 포함할 수 있다:
● 오염 데이터(dirty data)를 적어도 하나의 추가 데이터 저장소(다른 레벨의 캐시 계층에 있는 캐시 또는 메모리일 수 있음)로 기록하기 위한 클린(clean) 동작. 오염 데이터는 다른 위치에서의 데이터의 대응하는 복사본(copy)을 업데이트하지 않고 변경된 데이터일 수 있다. 클린 동작 동안 오염 데이터가 기록되는 추가 데이터 저장소(들)는 미리 결정되거나 하드코딩될(hardcoded) 수 있거나, 또는 가변적일 수 있어, 예를 들어 제어 레지스터 내의 제어 파라미터를 이용하여 정의될 수 있다.
● 특정된 어드레스로부터의 데이터를 (예를 들어, 데이터를 무효인 것으로 표시함으로써 그리고/또는 캐시로부터 데이터를 삭제함으로써) 무효화하는 무효화(invalidate) 동작. 무효화 동작은 오염 데이터가 아직 추가 데이터 저장소로 다시 기록되지 않았다면 오염 데이터가 손실되게 할 수 있다.
● 클린 동작과 이에 이어지는 무효화 동작을 수행하는 것과 동일한 클린 및 무효화 동작. 이것은 이 오염 데이터를 메모리 또는 다른 데이터 저장소에 먼저 기록함으로써 임의의 이전에 변형된 오염 데이터를 여전히 유지하는 동안 캐시 내의 데이터가 무효화될 수 있게 한다.
● 필요한 어드레스에서의 데이터를 미리 정해진 값(예를 들어 0과 같이)으로 설정하는 설정 동작.
일부 시스템들이 단지 하나의 종류의 캐시 메인터넌스 동작을 구현할 수 있는 반면, 다른 시스템들은 여러 종류를 구현할 수 있다. 예를 들어, 여러 상이한 형태의 캐시 메인터넌스 명령이 각각의 종류의 캐시 메인터넌스 동작을 위하여 제공될 수 있고, 각각의 형태는 캐시 메인터넌스가 수행되어야 하는 어드레스를 식별하기 위하여 가상 페이지 어드레스를 사용할 수 있다. 수행될 특정 캐시 메인터넌스 동작은 명령 opcode에 의해 또는 명령 인코딩 내의 필드에 의해 식별될 수 있다.
가상 페이지 어드레스는 처리 회로가 캐시 메인터넌스를 위한 어드레스가 식별될 수 있게 하는 유일한 방법이 아닐 수 있다. 예를 들어, 처리 회로는 또한 캐시 메인터넌스 동작이 적용되어야 하는 개별 가상 어드레스를 특정하거나, 또는 캐시 메인터넌스가 전체로서 캐시에 대하여 수행되어야 한다고 특정하는 캐시 메인터넌스 명령을 지원할 수 있다.
장치 내에 캐시 메인터넌스의 처리를 구현하는 다수의 방법이 있다. 일례에서, 캐시 메인터넌스 명령에 응답하여, 처리 회로는 각각의 커맨드(command)가 캐시 메인터넌스 명령에 의해 특정된 가상 페이지 어드레스에 대응하는 물리적 페이지 내의 물리적 어드레스를 특정하는 캐시 메인터넌스 커맨드를 캐시에 발행하는 것을 트리거할 수 있다. 각각의 개별 캐시 메인터넌스 커맨드에 응답하여, 캐시는 그 다음 특정된 물리적 어드레스에 캐시 메인터넌스 동작을 수행할 수 있다. 이것은 개별 어드레스에 대한 캐시 메인터넌스 커맨드를 이미 다룰 수 있는 표준 캐시가 가상 페이지 기반 캐시 메인터넌스를 핸들링하기 위하여 어떠한 하드웨어 수정도 필요로 하지 않도록 캐시 설계를 단순화할 수 있다. 예를 들어, 처리 회로 내의 작은 상태 기계(state machine)가 캐시 메인터넌스 명령을 각각의 어드레스를 위한 개별 마이크로 동작(micro-operation)으로 변환할 수 있다.
이 대신에, 캐시에는 캐시 메인터넌스 명령에 의해 특정된 가상 페이지 어드레스에 대응하는 물리적 페이지 내의 물리적 어드레스 블록을 특정하는 적어도 하나의 캐시 메인터넌스 커맨드가 발행될 수 있다. 각각의 커맨드에 응답하여, 캐시는 어느 캐시 라인이 특정된 어드레스 블록 내에 물리적 어드레스를 위한 데이터를 저장하는지 식별할 수 있고, 식별된 캐시 라인에 캐시 메인터넌스 동작을 수행할 수 있다. 이 접근 방식은 캐시로 전송될 필요가 있는 커맨드의 개수를 감소시킬 수 있어, 커맨드 대역폭을 절약하고 처리 회로에 대한 부담을 감소시킨다.
일부 경우에, 캐시 메인터넌스 커맨드에 의해 식별된 물리적 어드레스 블록은 전체 페이지일 수 있어, 전체 페이지에 대하여 메인터넌스를 적용하도록 캐시를 제어하기 위하여 캐시 메인터넌스 명령은 단일 캐시 메인터넌스 커맨드를 트리거한다.
이 대신에, 적어도 일부 캐시 메인터넌스 명령에 대하여, 여러 커맨드가 전체 페이지 크기보다 작은 어드레스 블록을 각각 특정하는 캐시에 발행될 수 있다. 이 접근 방식은 처리 회로가 전술한 바와 같이 상이한 페이지 크기를 지원할 때 캐시 하드웨어를 특정하는데 특히 유용할 수 있다. 예를 들어, 캐시 메인터넌스 명령에 의해 선택된 페이지 크기에 관계 없이, 캐시가 특정 페이지 크기를 고려할 필요가 없고 소정의 고정된 크기의 어드레스 블록의 하나 이상의 커맨드를 단순히 처리하도록, 명령은 어드레스의 소정의 기본 유닛에 대응하는 캐시 메인터넌스 커맨드로 매핑될 수 있다.
캐시가 어드레스 블록을 특정하는 캐시 메인터넌스 커맨드에 대응할 수 있는 상이한 방식들이 있다. 하나의 접근 방식은, 어드레스에 대응하는 데이터를 저장하는 임의의 캐시 라인이 있는지 검사하기 위하여, 각각의 어드레스를 위한 캐시의 개별 룩업을 이용하여 특정된 블록 내의 각각의 어드레스를 통해 반복하는 것일 수 있다. 그러나, 이 접근 방식은 페이지 크기가 종종 캐시 내의 위치의 개수보다 상당히 더 클 수 있고 이에 따라 각각의 어드레스에 대하여 캐시를 반복적으로 룩업하는 것이 느리고 에너지를 많이 소비할 수 있기 때문에 상대적으로 상당한 오버 헤드를 가질 수 있다.
따라서, 더욱 효율적인 접근 방식은 캐시에 대하여 캐시의 각각의 캐시 라인을 통해 반복하고, 각각의 캐시 라인에 대하여 캐시 라인이 캐시 메인터넌스 커맨드에 의해 특정된 블록 내의 임의의 물리적 어드레스를 위한 데이터를 저장하는지 검사하는 것일 수 있다. 동일한 페이지 또는 동일한 어드레스 블록 내의 물리적 페이지 어드레스가 통상적으로 어드레스의 소정의 개수의 비트에 대하여 동일한 값을 공유할 것이기 때문에, 실제로는 범위 내의 각각의 어드레스에 대하여 개별 어드레스 비교를 수행할 필요가 없을 수 있다. 대신에, 캐시는, 캐시 라인이 그 블록 내의 임의의 어드레스로부터의 데이터를 저장하는지 식별하기 위하여, 요구되는 어드레스의 공통 부분에 대하여 캐시 라인의 태그의 적어도 일부를 비교하도록 각각의 캐시 라인을 한 번 단순히 룩업할 수 있다. 매치가 발견되는 캐시 라인이 기록될 수 있고, 캐시 메인터넌스 동작은 매칭하는 캐시 라인에 대하여 개시될 수 있다.
때때로 캐시에는 여러 캐시 메인터넌스 커맨드가 전송될 수 있다. 이것은 하나의 캐시 메인터넌스 명령이 동일한 페이지 내의 상이한 어드레스 블록을 특정하는 개별 커맨드로 분할되었기 때문이거나, 또는 여러 상이한 명령이 상이한 페이지에 대하여 처리 회로에 의해 실행되었기 때문일 수 있다. 캐시 태그가 룩업되는 횟수를 감소시키기 위하여, 여러 캐시 메인터넌스 커맨드는, 여러 커맨드에 의해 특정된 임의의 어드레스 블록을 위한 데이터를 어느 캐시 라인이 저장하는지 결정하기 위하여 캐시 태그의 단일 룩업을 이용하여 태그가 여러 캐시 메인터넌스 커맨드에서 특정된 어드레스에 대하여 비교될 수 있도록, 캐시에 의해 함께 핸들링될 수 있다. 태그 룩업의 횟수를 감소시킴으로써, 에너지 소비가 감소될 수 있고, 성능이 개선될 수 있다.
캐시 라인이 특정된 페이지에 대응하는 데이터를 저장하는지 판단하기 위하여 캐리 라인을 룩업할 때, 일부 경우에 캐시는 모든 캐시 라인을 룩업할 필요가 없을 수 있다. 예를 들어, 일부 시스템은 어느 데이터가 어느 캐시 내에 저장되는지 추적하기 위한 일부 정보를 유지할 수 있고, 이 경우에 어드레스의 필요한 페이지에 대응하는 데이터를 저장하지 않는 것으로 알려진 라인에 대하여는 룩업이 필요하지 않을 수 있다.
예를 들어, 다수의 캐시를 갖는 일부 시스템은 어느 캐시가 대응하는 물리적 어드레스를 위한 데이터를 저장하는지 식별하는 데이터를 저장하는 스눕(snoop) 필터를 제공할 수 있다. 이 경우에, 스눕 필터는 어느 캐시가 어드레스의 필요한 가상 페이지를 위한 데이터를 저장하는지 식별하는데 사용될 수 있으며, 제어 회로는 스눕 필터에 의해 식별된 캐시가 아닌 캐시로의 캐시 메인터넌스 커맨드의 전송을 방지할 수 있다. 이것은, 필요한 어드레스로부터의 데이터를 저장하지 않는 것으로 알려진 캐시의 불필요한 캐시 룩업을 방지함으로써 그리고 다른 커맨드를 위한 대역폭을 풀어주도록 상호 연결 구조에 의해 라우팅되는 캐시 메인터넌스 커맨드의 개수를 감소시킴으로써, 에너지 소비를 감소시키는데 도움을 주며 성능을 개선한다.
일부 경우에, 메모리와 연관된 메모리 컨트롤러가 일부 캐시 메인터넌스 커맨드를 로컬로 처리할 수 있어도 된다. 예를 들어, 어드레스의 페이지를 0과 같은 미리 정해진 값으로 설정하는 경우에, 메모리는 제로 설정 커맨드 자체를 처리할 수 있어도 된다(캐시 내의 임의의 대응하는 값을 0으로 하도록 캐시로 전송된 커맨드와 병행하여). 메모리 컨트롤러 내에서 일부 캐시 메인터넌스 커맨드를 처리함으로써, 이것은 커맨드가 후속 라이트 백(write back)이 메모리 내의 대응하는 데이터를 업데이트하도록 수행되는 커맨드가 캐시로만 지시된 경우보다도 더 빠르게 캐시 메인터넌스 동작이 수행될 수 있게 할 수 있다.
도 1은 레지스터(8) 내에 저장된 데이터 값을 이용하여 데이터 처리 동작을 수행하기 위한 처리 회로(6)를 포함하는 프로세서(4)를 구비하는 데이터 처리 장치(2)를 개략적으로 도시한다. 예를 들어, 처리 회로(6)는 레지스터(8)로 라이트 백되는 결과 값을 생성하도록 레지스터(8) 내에 저장된 값에 대한 연산 동작을 수행하기 위하여 다양한 가산기, 시프터(shifter), 승산기 등을 포함하는 연산 논리 유닛(arithmetic logic unit(ALU))을 포함할 수 있다. 명령 파이프라인(10)은 명령 페치(fetch) 유닛(12)에 의해 메모리 시스템으로부터 페치된 프로그램 명령에 응답하여 데이터 처리를 수행하도록 처리 회로(6)를 제어한다. 페치된 명령은 파이프라인(10)의 다양한 스테이지를 통해 진행한다. 예를 들어, 파이프라인 스테이지는 처리 회로(6)를 제어하도록 제어 신호를 생성하기 위하여 명령을 디코딩하기 위한 디코드 스테이지와, 실행을 위하여 처리 회로(6)로 명령이 발행되는 때를 제어하기 위한 발행 스테이지를 포함할 수 있다. 일부 예에서, 파이프라인이 고장난 처리를 지원할 수 있고, 레지스터 이름 바꾸기를 수행하기 위하여 새 이름 스테이지(rename stage)를 포함할 수 있다. 또한, 파이프라인은, 로드(load)/저장 명령에 응답하여, 메모리 시스템으로부터 레지스터(8)로 값을 로딩하거나 레지스터(8)로부터 메모리 시스템으로 데이터 값을 저장하도록 로드/저장 유닛(14)을 제어할 수 있다. 프로세서(4)가 도 1에 도시되지 않은 다른 요소를 포함할 수 있다는 것이 이해될 것이다.
메모리 시스템은 계층 구조로 배열된 다수의 캐시뿐만 아니라 메인 메모리(15)를 포함한다. 메모리(16)는 메모리 액세스 동작을 제어하기 위한 메모리 컨트롤러(17)를 가진다. 이 예에서, 캐시는 페치 유닛(12)에 의해 페치될 명령을 캐싱하기 위한 레벨 1(L1) 명령 캐시(18)와, 메모리(16)로부터 데이터를 캐싱하기 위한 L1 데이터 캐시(20)와, 데이터 및 명령을 캐싱하기 위한 공유된 레벨 2(L2) 캐시를 포함한다. L2 캐시(22)는 메모리(16)로부터의 데이터 또는 명령의 소정의 부분 집합에 대한 더 빠른 액세스를 제공하지만, 메인 메모리(16)보다 더 작은 용량을 가진다. L1 캐시(18, 20)는 L2 캐시(22) 또는 메모리(16)로부터 데이터 또는 명령의 부분 집합에 더 빠른 액세스를 제공하지만, L2 캐시(22)보다 더 작은 용량을 가진다. 프로세서(4)에 의한 데이터의 사용에 따라, 다양한 캐싱 정책이 L1 및 L2 캐시(18, 20, 22)에서 무슨 데이터 또는 명령이 배치되어야 하는지 결정하는데 사용될 수 있다. 일부 정책은 L1 캐시(18, 20) 내의 모든 데이터 또는 명령이 L2 캐시(22)에서도 캐싱되어야 하는 것을 필요로 하는 반면, 다른 정책은 L2 캐시(22)에 있지 않는 데이터 또는 명령어가 L1 캐시(18, 20)에서 존재하도록 허용할 수 있다. 또한, 도 1에 도시된 배열은 단지 예이며, 다른 시스템이 다른 배열이나 개수의 캐시 레벨을 가질 수 있다.
파이프 라인(10)에 의해 실행되는 명령은 가상 어드레스를 특정하는 반면, 적어도 메모리 시스템의 메모리(16)는 물리적 어드레스를 사용하여 데이터를 식별한다(캐시(18, 20, 22)가 물리적으로 어드레싱되거나 가상적으로 어드레싱될 수 있다). 이것은 동일한 가상 어드레스로 기록된 프로그램이 상이한 범위의 물리적 어드레스로 매칭된 각각의 프로그램에 의해 사용된 가상 어드레스와 공존할 수 있게 한다. 가상 어드레스를 물리적 어드레스로 변환하기 위하여 메모리 관리 유닛(memory management unit(MMU))(24)이 제공된다. 메모리 관리 유닛(24)은 다수의 변환 엔트리(translation entry)(26)를 포함하는 테이블을 포함한다. 각각의 변환 엔트리(26)는 가상 페이지 어드레스(virtual page address(VPA)), 대응하는 물리적 페이지 어드레스(physical page address(PPA)) 및 어드레스 공간의 대응하는 페이지를 위한 액세스 허가를 정의하는 데이터(27)를 식별한다. 상이한 가상 어드레스-물리적 어드레스 매핑 또는 상이한 프로그램이나 컨텍스트(context)에 대한 허가를 제공하기 위하여, 일부 경우에 MMU(24)는 각각의 프로그램 또는 컨텍스트를 위한 다수의 테이블을 유지할 수 있거나, 또는 프로그램 또는 컨텍스트의 변경이 있을 때 테이블의 상이한 엔트리에 로딩할 수 있다. 로드/저장 명령 또는 가상 어드레스를 특정하는 다른 명령이 로드/저장 유닛(14)에 의해 실행될 때, MMU(24)는 액세스가 허용되는지 여부를 판단하기 위하여 액세스 허가(27)를 검사하고, 허용되는 경우에, 명령에 의해 특정된 가상 페이지 어드레스에 대응하는 물리적 페이지 어드레스(26)를 리턴하고, 그 다음 이 물리적 페이지 어드레스가 캐시 또는 메모리에 대한 액세스를 수행하는데 사용될 수 있다.
예를 들어, 도 4는 MMU(24)에 의해 수행된 어드레스 변환의 일례를 도시한다. 프로세서(4)의 의해 실행되는 소프트웨어가 보는 가상 어드레스 공간은 각각이 동일한 가상 페이지 어드레스(29)를 공유하는 소정의 범위의 가상 어드레스에 대응하는 다수의 가상 페이지(28)를 포함한다. 도 4의 하부에 도시된 바와 같이, 가상 페이지 어드레스(29)는 가상 어드레스의 가장 중요한 부분에 대응한다. 가상 어드레스의 가장 덜 중요한 부분은 페이지(28) 내의 특정 어드레스를 특정하는 페이지 오프셋(30)을 식별한다. 상이한 페이지 크기가 가상 페이지 어드레스(29)와 페이지 오프셋(30)을 위한 상이한 개수의 비트를 각각 제공함으로써 구현될 수 있다. 대조적으로, 메모리 시스템은 다수의 물리적 페이지(31)를 포함하는 물리적 어드레스 공간 내의 어드레스를 사용한다. 가상 어드레스를 물리적 어드레스로 변환하기 위하여, MMU(24)는 가상 페이지 어드레스(29)에 대응하는 변환 테이블의 엔트리(26)를 룩업하고 대응하는 물리적 페이지 어드레스(32)를 리턴하지만, 어드레스의 페이지 오프셋(30)은 변경되지 않은 상태로 남아 있다. 따라서, 도 4에 도시된 바와 같이, 변환은 어드레스의 가상 페이지를 어드레스의 대응하는 물리적 페이지로 효율적으로 매핑한다 - "페이지(page)"는 변환 테이블이 어드레스 변환을 적용하는 입도(granularity)를 말한다. 일부 경우에, MMU(24)는 단지 소정 개수의 페이지에 대한 엔트리를 위한 공간만을 가질 수 있다. 프로세서(4)가 테이블 내에 페이지 엔트리가 없는 어드레스를 어드레싱하는 경우에, 엔트리는, 예를 들어 페이지 테이블 워크를 수행함으로써, 메모리(16)로부터 또는 추가 페이지 테이블로부터 로딩될 수 있다.
도 2는 도 1에 도시된 캐시(18, 20, 22) 중 임의의 것일 수 있는 캐시(34)의 일례를 도시한다. 캐시는 캐시 라인(cache line)으로 알려진 다수의 저장 위치를 포함할 수 있다. 본 예에서, 각각의 캐시 라인(34)은 데이터 값(36)(명령 캐시(18)의 경우에 명령일 수 있음), 태그 값(37), 그 캐시 라인 내의 데이터가 깨끗한지 아니면 오염되었는지를 나타내는 오염 플래그(dirty flag)(38) 및 그 캐시 라인 내의 데이터가 유효한지 또는 아니면 유효하지 않은지 나타내는 유효 플래그(valid flag)(39)를 저장한다. 본 예에서, 캐시는 세트 결합(set-associative) 구조를 가진다(그러나, 완전 결합되거나(fully associative) 또는 직접 매핑된 캐시가 또한 제공될 수 있다는 것이 이해될 것이다. 이것은 각각의 데이터 값이 데이터 값의 어드레스에 기초하여 선택된 캐시 내에서 캐시 라인(35)의 대응하는 세트(42) 중 하나 내에 배치될 수 있고, 다른 캐시 라인(35)에는 배치될 수 없다는 것을 의미한다. 본 예에서, 캐시(34)는 양방향 세트 결합되며, 이는, 다른 캐시가 더 큰 연관성(associativity)을 가질 수 있더라도, 각각의 데이터 값이 배치될 수 있는 2개의 가능한 위치가 있다는 것을 의미한다. 각각의 물리적 어드레스는 캐시 라인의 대응하는 세트(42)를 선택하는데 사용되는 인덱스 부분(40)을 포함하고, 데이터(36)가 특정 캐시 라인(35)으로 저장될 때, 어느 데이터 값이 캐시 라인(35)에 저장되는지 식별하기 위하여 어드레스의 태그 부분(41)이 그 캐시 라인(35)의 태그 값(37)으로서 기록된다. 특정 어드레스를 위한 캐시를 검색할 때, 어드레스의 태그 부분(41)은 필요한 데이터가 캐시 내에 저장되는지 검사하기 위하여 대응하는 세트(42)의 각각의 캐시 라인(35)의 태그(37)에 대하여 비교된다. 데이터가 이미 저장되지 않고 캐시 라인의 대응하는 세트(42) 중 하나가 유효하지 않은 데이터를 나타내는 이의 유효 플래그(39)를 가진다면, 이 캐시 라인이 필요한 데이터를 저장하기 위하여 할당될 수 있고, 데이터가 더 높은 레벨의 캐시 또는 메모리로부터 페치될 때 데이터가 새로 할당된 캐시 라인에 배치된다. 유효하지 않은 데이터를 포함하는 여분의 캐시 라인이 없다면, 임의의 알려진 희생 선택 정책(예를 들어, 순차 순환 대기 방식(round robin), 최소 최근 사용(least recently used))을 이용하여 희생 캐시 라인이 선택될 수 있고, 유효한 데이터가 희생 캐시 라인으로부터 퇴거될 수 있으며, 데이터가 오염되었다고 오염 플래그(38)가 나타내면, 데이터는 새로운 데이터에게 양보하도록 더 높은 레벨의 캐시 또는 메모리로 다시 기록된다. 일부 캐시가 도 2에 도시된 정보에 더하여 다른 정보를 저장할 수 있다는 것이 이해될 것이다 - 예를 들어, 데이터의 일관성 상태의 표시, 또는 데이터가 안전한지 아니면 안전하지 않은지 나타내는 플래그.
캐시 메인터넌스 동작은 캐시 내의 데이터에 수행될 수 있다. 예를 들어, 캐시 메인터넌스 동작은 상이한 레벨의 캐시 사이에서 또는 캐시와 메모리 사이에서 일관성을 보장할 수 있다. 예를 들어, 하나 이상의 캐시 라인 내의 임의의 오염 데이터 값을 메모리 또는 더 높은 레벨의 캐시로 기록하기 위한 클린 동작, 재사용에 대하여 준비가 되도록 하나 이상의 캐시 라인을 유효하지 않은 것으로 표시하는 무효화 동작, 그 캐시 라인을 무효화하기 전에 선택된 캐시 라인으로부터 메모리로 오염 데이터를 다시 기록하기 위한 클린 및 무효화 동작, 및 미리 정해진 값(예를 들어, 0)으로 캐시 라인을 설정하는 설정 동작을 포함하는 다수의 상이한 종류의 캐시 메인터넌스 동작이 지원될 수 있다. 일부 경우에, 설정 동작은 또한 임의의 더 높은 레벨의 캐시 또는 메모리로 미리 정해진 값을 다시 기록할 수 있다.
캐시 메인터넌스 동작이 수행되어야 하는 캐시 라인을 식별하는 상이한 방식들이 있을 수 있다. 예를 들어:
전체 캐시에 대한 동작:
캐시 메인터넌스 동작이 특정 캐시 내의 모든 위치에 적용된다. 전형적으로, 명령 캐시 데이터가 종종 리드 온리(read only)이고 안전하고 미세하게 폐기될 수 있기 때문에, 이것은 단지 명령 캐시에만 적용될 수 있다.
캐시 라인에 대한 동작:
캐시 메인터넌스 동작이 캐시 메인터넌스 동작에 의해 특정된 하나의 캐시 라인에 적용된다. 캐시 라인에 의한 동작은 종종 MESI와 같은 일관성 프로토콜로 직접 통합됨에 따라 다중 프로세서 일관 메모리 시스템(multiprocessor coherent memory system)에서 선호된다. 캐시 라인에 의한 동작에 대하여, 캐시 라인을 식별하는 여러 방식이 있다:
세트/웨이(set/way) - 캐시 구조 내의 물리적 라인에 대한 동작.
세트/웨이 동작은 전형적으로 전체 캐시에 대하여 동작을 반복하기 위하여 소프트웨어에 의해 사용된다. 다중 프로세서 일관 시스템에서, 캐시는 이 과정 동안 어떠한 캐시 라인도 자동으로 변경되지 않는 것을 보장하기 위하여 일관성 상황(coherency regime)으로부터 제거될 필요가 있을 수 있다. 이러한 캐시 클리닝 동작들은 주로 CPU 초기화 및 정지(shutdown)(전력 관리) 코드 경로 동안 사용되지만, 다른 목적을 위하여 사용될 수 있다.
VA(가상 어드레스) - 단일 가상 어드레스를 특정하는 명령에 응답하여, 가상 어드레스 - 물리적 어드레스 변환에 의해 결정된 단일의 물리적으로 어드레싱된 캐시 라인에 대한 동작. VA 동작은, 일관성 시스템의 모든 에이전트가 메모리로의 모든 변화를 정확하게 관찰하는 것을 보장하기 위하여, 일관성 있는 공유된 가상 메모리의 상황 내에 사용된다.
이러한 종류의 캐시 메인터넌스 동작에 더하여, 또는 이 대신에, 본 기술은 또한 캐시 메인터넌스 동작이 어드레스의 전체 가상 페이지(28)에 대하여 수행되어야 한다고 특정하는 능력을 제공한다. 도 3에 도시된 바와 같이, 캐시 메인터넌스 명령(50)은 캐시 메인터넌스가 적용되어야 하는 가상 페이지(28)를 식별하는 가상 페이지 어드레스(52)를 특정할 수 있다. 명령(50)에 응답하여, 처리 회로(6)는 데이터의 물리적 어드레스가 명령에 의해 특정된 가상 페이지 어드레스(52)에 의해 식별된 가상 페이지에 대응하는 물리적 페이지에 속하는 임의의 캐시 라인에 대하여 캐시 메인터넌스 동작을 수행하도록 캐시(18, 20, 22) 중 임의의 하나 이상을 트리거할 수 있다. 도 3에 도시된 바와 같이, 가상 어드레스 기반의 캐시 메인터넌스 명령(50)은 수행될 동작의 종류를 식별하는 opcode(54), 사용될 특정 페이지 크기를 식별하는 페이지 크기 파라미터(56) 및 동작이 적용될 가상 페이지를 특정하는 가상 페이지 어드레스(52)를 포함한다. 페이지 크기(56)는 페이지 크기를 특정하는 즉각적인 값을 포함할 수 있거나, 페이지 크기 값을 저장하는 레지스터(8) 또는 가상 페이지 어드레스(52)를 참조할 수 있다. 일부 경우에, 페이지 크기(56)는 이 대신에 명령 opcode(54)의 일부로서 표시될 수 있다. 가상 페이지 어드레스(52)를 위하여, 명령은 가상 페이지 어드레스를 저장하는 레지스터를 식별하는 레지스터 지정자(specifier)를 포함할 수 있다. 페이지 어드레스가 명령 인코딩 내에 피팅되는(페이지 크기에 따라) 실시예에서, 페이지 어드레스는 또한 즉각적인 값으로서 인코딩될 수 있다. 그러나, 가상 페이지 어드레스는 종정 어드레스 특정 필드(52)를 위한 명령 인코딩에서 사용 가능한 공간보다 더 클 수 있어, 이 경우에 레지스터 지정자가 사용될 수 있다.
이것은 캐시 라인보다는 전체의 가상적으로 어드레싱된 페이지에 대하여 작동하는 전체 등급(class)의 캐시 메인터넌스 동작이 제공될 수 있게 한다. 다음의 표는 제공될 수 있는 동작의 일부 예를 열거한다:
VA에 의한 동작 | 가상 4K 페이지에 의한 동작 | 가상 16K 페이지에 의한 동작 | 가상 64K 페이지에 의한 동작 | 설명 |
DCIVAC | DCIV4PPC | DCIV16PPC | DCIV64PPC | 일관성 포인트에 대한 데이터 캐시 무효화 |
DCIVAU | DCIV4PU | DCIV16PU | DCIV64PU | 통일 포인트에 대한 데이터 캐시 무효화 |
DCCVAC | DCCV4PC | DCCV16PC | DCCV64PC | 일관성 포인트에 대한 데이터 캐시 클린 |
DCCVAU | DCCV4PU | DCCV16PU | DCCV64PU | 통일 포인트에 대한 데이터 캐시 클린 |
DCCIVAC | DCCIV4PC | DCCIV16PC | DCCIV64PC | 일관성 포인트에 대한 데이터 캐시 클린 및 무효화 |
DCCIVAU | DCCIV4PU | DCCIV16PU | DCCIV64PU | 통일 포인트에 대한 데이터 캐시 클린 및 무효화 |
DCZVA | DCZV4P | DCZV16P | DCZV64P | 데이터 0 |
ICIVAU | ICIV4PU | ICIV16PU | ICIV64PU | 통일 포인트에 대한 명령 캐시 무효화 |
ICIVAIS | ICIV4PIS | ICIV16PIS | ICIV64PIS | 내부 공유 가능 포인트에 대한 명령 캐시 무효화 |
왼쪽 컬럼은 캐시 메인터넌스가 제공될 단일 가상 어드레스(VA)를 특정하는 명령을 나타낸다. 다음의 3개의 컬럼은 상이한 페이지 크기에 대응하는 대응 명령을 나타내고, 그 각각은 그 페이지 내에서 각각의 어드레스를 위한 캐시 메인터넌스를 트리거하도록 가상 페이지 어드레스를 특정한다. 마지막 컬럼은 수행될 캐시 메인터넌스 동작을 설명한다.
통일(unification) 포인트, 일관성 포인트 및 내부 공유 가능 포인트(point inner shareable)는 클린 또는 무효화 동작이 수행되어야 하는 메모리 시스템의 레벨을 말한다. 일부 동작은 소정 레벨의 캐시 계층만이 일관성 있게 되는 것을 필요로 하는 반면, 다른 것은 메모리까지 더 깊은 일관성을 요구할 수 있다. 통일 포인트, 일관성 포인트 및 내부 공유 가능 포인트는, 일관성이 강화되는 포인트의 일부 구성을 가능하게 하도록, 예를 들어 제어 레지스터 내의 제어 파라미터에 의해 정의될 수 있다.
특정 가상 어드레스를 위한 일관성 포인트는 메모리를 액세스할 수 있는 모든 에이전트가 메모리 위치의 동일한 복사본을 보도록 보증되는 포인트이다. 많은 경우에, 이것은 유효하게는 메인 시스템 메모리일 수 있지만, 다른 시스템은 메모리 시스템 에이전트들 사이의 일관성에 영향을 미치지 않는 일관성 포인트 이상의 캐시를 구현할 수 있고, 이 경우에 일관성 포인트가 캐시일 수 있다. 일관성 포인트는 위에서 나타낸 일관성 포인트 캐시 메인터넌스 명령 중 하나에 응답하여 클리닝되거나 무효화되는 마지막 레벨의 캐시/메모리이다.
특정 처리 요소(예를 들어, 프로세서(4))를 위한 통일 포인트는 명령 및 데이터 캐시와 그 처리 요소를 위한 변환 테이블 워크가 메모리 위치의 동일한 복사본을 보도록 보증되게 하는 포인트이다. 많은 경우에, 통일 포인트는 명령 및 데이터 캐시와 변환 테이블 워크가 병합되게 한 단일 프로세서 메모리 시스템 내의 포인트일 수 있다. 통일 포인트는 위에서 나타낸 통일 포인트 캐시 메인터넌스 명령 중 하나에 응답하여 클리닝되거나 무효화되는 마지막 레벨의 캐시/메모리이다.
내부 공유 가능 포인트는 다중 프로세서 시스템 내의 "내부 공유 가능 공유 도메인(inner shareable shareability domain)"으로서 지정된 처리 요소의 특정 그룹을 지칭하도록 적용되고, 내부 공유 가능 포인트는 명령 및 데이터 캐시와 모든 처리 요소의 변환 테이블 워크가 메모리 위치의 동일한 복사본을 보도록 보증되게 하는 포인트를 말한다. 내부 공유 가능 포인트는 위에서 나타낸 내부 공유 가능 포인트 캐시 무효화 명령에 응답하여 무효화되는 마지막 레벨의 캐시/메모리이다.
전체 가상 페이지에 걸쳐 캐시 메인터넌스를 수행하기 위한 명령어가 유용할 수 있는 다수의 사용 사례(use case)가 있다. 예를 들어:
비일관성(non-coherent) DMA(Direct Memory Access)
DMA 동작 전후에, 메모리 버퍼와 캐시는 일관성 있게 될 필요가 있을 수 있다. 이것은 DMA 전의 캐시 클린과, DMA가 완료한 후의 캐시 무효화를 필요로 할 수 있다. 현재의 실제적인 예는 OpenCL 이미지 처리를 위하여 GPU로 그리고 그로부터 1080p HD 이미지를 전송하는 것일 수 있고, 각각의 이미지 프레임의 크기는 ~8Mbyte일 수 있다. 최악의 경우에, 버퍼가 모든 캐시보다 몇 배 더 크기 때문에, 아주 조금의 이미지가 어떤 캐시에 있을 것이다. 캐시 메인터넌스 명령이 단일 가상 어드레스를 특정하면, 이것의 결과는 128K×64byte 캐시 라인 동작이 될 것이다. 페이지 기반 동작을 이용하면, CPU 작업은 몇 차수의 크기만큼 감소될 수 있고, 캐시 메인터넌스는 캐시 및 메모리 시스템 내에서 최적화될 수 있다. 사용된 페이지 크기에 따라, 8Mbyte 버퍼가 2048×4K 캐시 페이지 동작, 512×16K 캐시 페이지 동작 또는 128×64K 캐시 페이지 동작을 이용하여 처리될 수 있다.
메모리 0 충전 (zero filling)
많은 운영 체제 및 하이퍼바이저(hypervisor)는, 보안상의 이유로, 메모리 페이지를 클라이언트에 매핑하기 전에 0 충전을 한다. 페이지 기반 메모리 0 동작은 궁극적으로, 브로드캐스트 페이지 무효화와 함께, 메모리 소자에서 직접 발생할 수 있다.
동적 코드 로딩(dynamic code loading)
코드가 RAM으로 로딩될 때, 명령 캐시는 데이터 캐시 및 메모리와 동기화되어야 할 수 있다. 작은 업데이트가 VA 라인 동작에 의해 수행될 수 있지만, 큰 변화의 결과는 현재 전제 명령 캐시를 무효화하는 것이다. 페이지에 의한 무효화는 독립적으로 실행되는 코드로부터 전체 명령 캐시 무효화의 영향을 제거할 것이다.
따라서, 이러한 사용 사례 및 다른 사용 사례에서, 가상 페이지 어드레스 기반 캐시 메인터넌스 명령은 가상 어드레스 기반 캐시 메인터넌스 명령 또는 전용 커스텀 플러쉬(custom flush) 엔진에 비하여 다음을 포함하는 다수의 이점을 제공할 수 있다:
● 최적화된 구현을 허용하도록, 더 높은 레벨의 시스템 소프트웨어 의향이 SoC 구조(fabric) 및 컴포넌트로 표현된다.
● 설계된 명령이 장래의 OS 커널 코드에 의해 사용될 것이다.
● 단지 하나의 MMU 변환 및 허가 검사가 지정된 페이지를 위하여 요구된다.
● 미세 페이지 동작은 로크(lock) 또는 상태 추적을 필요로 하지 않는다(동작은 메모리 배치 및 배리어에 관하여 제 시간에 완료될 필요가 있을 수 있다).
● 캐시 동작 동안의 운영 체제 선취(pre-emption)가 투명하게 핸들링될 것이다.
● 비동기화 에러가 없다.
● 다중 프로세서 및 일관 메모리 시스템에 대하여 설계된다.
● 하드웨어 또는 구조는 다수의 무효화를 소비하고 캐시를 통한 한 번의 스윕(sweep)으로 해결될 수 있다(아래의 도 9 참조).
특정 시스템 내에 위에서 나타낸 종류의 캐시 메인터넌스 명령을 구현하기 위한 여러 옵션이 있다.
도 5는 페이지 기반 캐시 메인터넌스 동작이 프로세서(4)에 의해 개별 어드레스에 대응하는 다수의 개별 마이크로 동작으로 분해되는 제1 예를 도시한다. 프로세서(4)는 가상 페이지 어드레스(virtual page address(VPA)) 기반의 캐시 메인터넌스 명령을 수신하고, 가상 페이지 어드레스를 물리적 페이지 어드레스(physical page address(PPA))로 변환하도록 MMU(24)를 트리거한다. 프로세서(4)는 페이지 동작을 각각이 MMU에 의해 식별되는 페이지 내에서 해당하는 물리적 어드레스(PA0, PA1, ... PAN)에 대응하는 다수의 개별 캐시 메인터넌스 커맨드(60)로 매핑하고, 커맨드(60)는 캐시(34)로 전송된다. 캐시(34)는 특정된 물리적 어드레스를 위한 캐시를 룩업하고 매칭하는 캐시 라인이 발견되는 경우에 필요한 캐시 메인터넌스 동작을 수행함으로써 각각의 커맨드(60)에 응답한다. 이 접근 방식은, 캐시 자체가 개별 어드레스를 특정하는 커맨드만을 핸들링할 수 있더라도, VPA 캐시 메인터넌스 명령의 구조적 제공이 지원될 수 있게 한다. 예를 들어, CPU 내의 작은 상태 기계가 순차적인 캐시 라인 동작을 생성할 수 있다. 이 대신에, 개별 커맨드(60)를 생성하기 전에 어드레스 변환을 수행하는 대신에, 프로세서(4)는 가상 어드레스에 의해 순차적인 캐시 라인 동작을 생성할 수 있고, 그 다음 이러한 동작들의 각각은 캐시로 전송될 물리적 어드레스를 결정하기 위하여 MMU에서 변환을 트리거할 수 있다.
도 6은 전체 페이지를 위한 커맨드가 캐시로 전송되는 다른 예를 도시한다. 이 경우에, 프로세서(4)는 VPA를 특정하는 캐시 메인터넌스 명령을 실행하고, VPA는 MMU를 이용하여 PPA로 변환되며, 그 다음 PPA를 특정하는 커맨드(62)가 캐시로 전송된다. 그 다음, 캐시는 어느 캐시 라인이 특정된 페이지 내에 물리적 어드레스를 갖는 데이터를 저장하는지 결정할 수 있고, 식별된 각각의 캐시 라인에 대하여 캐시 메인터넌스 동작을 개시할 수 있다. 이 접근 방식은 도 5에 비하여 여러 이점을 가진다. 첫째, 커맨드 대역폭이 감소되어 프로세서와 캐시 사이에 더 적은 커맨드가 전송될 필요가 있다. 또한, 이 접근 방식은, 도 5에서와 같이 각각의 어드레스에 대하여 개별 룩업을 필요로 하는 대신에, 각각의 캐시 라인의 태그를 통한 단일 스윕이 특정된 물리적 페이지 어드레스 내에 캐시가 임의의 데이터를 포함하는지 식별할 수 있게 할 수 있으며, 이는 에너지 소비와 응답 시간을 줄이는데 도움을 준다.
이 대신에, 도 7에 도시된 바와 같이, 페이지 동작은 디코딩되어 다수의 더 작은 캐시 마이크로 동작(micro operation)으로서 발송될 수 있다. 예를 들어, 일 구현예는 64K 페이지 동작을 16개의 4K 동작으로 바꾸거나, 4K 페이지 동작을 각각 64 byte인 64개 동작으로 변환할 수 있다. 따라서, 도 7에서, 캐시 메인터넌스 명령은 명령에서 특정된 가상 페이지에 대응하는 물리적 페이지 내에서 물리적 어드레스 블록(예를 들어, 서브 페이지 어드레스)을 특정하는 다수의 커맨드(64)로 매핑되고, 그 다음 각각의 커맨드는 특정된 어드레스 블록에 대응하는 캐시 라인을 식별하고, 식별된 캐시 라인에 대한 캐시 메인터넌스를 수행하도록 캐시(34)를 트리거한다.
도 5 내지 7이 하나의 캐시로 커맨드를 전송하는 예들을 도시하지만, 다수의 캐시를 포함하는 시스템에서 커맨드는 각각의 캐시로 또는 캐시의 부분 집합으로 브로드캐스트될 수 있고, 각각의 캐시는 이것이 필요한 어드레스를 위한 임의의 데이터를 가지는지 검사함으로써 응답하여, 필요한 경우에 캐시 메인터넌스를 수행할 수 있다.
도 8은 어느 캐시 라인이 특정된 물리적 어드레스(PA - 도 5), 특정된 물리적 페이지 어드레스(PPA - 도 6) 또는 특정된 물리적 서브 페이지 어드레스(PSPA - 도 7)에 대응하는 데이터를 저장하는지를 어떻게 판단하는지에 대한 일례를 도시한다. 캐시(34)는 각각의 캐시 라인을 스캔하여 캐시 라인의 태그(37)를 커맨드(60, 62, 64)에서 수신된 PA, PPA 또는 PSPA에 대하여 비교할 수 있다. 예를 들어, 도 6 및 7에서, 페이지 어드레스 또는 서브 페이지 어드레스의 가장 덜 중요한 비트보다 덜 중요한 태그의 임의의 비트를 마스킹하기 위하여 마스크(72)가 태그에 적용될 수 있다. 예를 들어, 어느 비트가 마스킹되어야 하는지 식별하기 위하여 크기 파라미터가 사용될 수 있다. 마스킹된 태그가 특정된 어드레스, 페이지 어드레스 또는 서브 페이지 어드레스와 매칭하면, 히트(hit) 신호가 생성될 수 있고, 히트가 발견된 임의의 라인에 대하여 수행되도록 제어 회로(70)가 캐시 메인터넌스를 트리거할 수 있다.
때때로, 캐시가 여러 캐시 메인터넌스 커맨드를 수신할 수 있다. 캐시 룩업의 오버 헤드를 줄이기 위해, 동일한 종류의 캐시 메인터넌스 동작에 대응하는 다수의 커맨드가 함께 그루핑되고, 그 다음 캐시를 통한 단일 스윕을 사용하여 처리될 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 각각의 캐시 라인의 (마스킹된) 태그 값은 여러 캐시 메인터넌스 커맨드의 어드레스, 페이지 어드레스 또는 서브 페이지 어드레스에 대하여 병렬로 비교될 수 있고, 각 커맨드에 대한 히트 신호는 캐시 메인터넌스 동작이 대응하는 캐시 라인에 대해 수행되어야 하는지 식별하기 위해 OR 연산될 수 있다. 도 9가 한 번에 2개의 커맨드에 대한 비교를 수행하는 것을 도시하지만, 각각의 캐시 라인의 단일 룩업으로 2 이상의 캐시 메인터넌스 커맨드가 동시에 처리될 수 있다.
일부 경우에, 메모리 시스템(16)은, 데이터 0 동작(data zero operation)과 같은, 일부 커맨드를 로컬로 처리할 수 있는 메모리 컨트롤러(17)를 포함할 수 있다. 이 경우에, 커맨드는, 캐시에 추가하여, 메모리로 전송될 수 있다.
일부 경우에, 캐시는 소정의 레이트로만 커맨드를 처리할 수 있고, 캐시 메인터넌스 커맨드를 저장하기 위하여 유한한 버퍼만을 가질 수 있다. 따라서, 프로세서(4)는 캐시보다 더 빠른 캐시 메인터넌스 동작을 발행하는 것을 제한하도록 역압을 가할 수 있거나, 메모리 시스템이 이를 처리할 수 있다.
도 10은 각각이 캐시를 가질 수 있는 다수의 처리 요소를 포함하는 데이터 처리 장치(100)의 다른 예를 도시한다. 예를 들어, 처리 요소는 2개의 중앙 처리 유닛(central processing unit(CPU))과 그래픽 처리 유닛(graphic processing unit(GPU))(106)을 포함할 수 있고, 그 각각은 도 1에 도시된 프로세스(4)와 유사한 방식으로 구성될 수 있다. 또한, 장치는 메모리 컨트롤러(108)(예를 들어, DMA 유닛), 예를 들어 이더넷 인터페이스와 같은 주변 장치나 외부 장치와의 통신을 위한 입출력 유닛(110) 및 디스플레이 장치 상의 데이터의 디스플레이를 제어하기 위한 디스플레이 컨트롤러(112)를 포함할 수 있다. 많은 다른 종류의 장치가 연결될 수 있다는 것이 이해될 것이다. 상호 연결부는 장치를 연결하고, 각각의 장치에 의해 저장된 상이한 데이터 형태 사이에 일관성을 유지한다.
CPU 및 GPU는 각각 로컬 캐시(120)를 가지며, 상호 연결부(114)는 캐시들(120) 내의 데이터 사이에 일관성을 유지하기 위한 일관성 제어 회로(130)를 포함할 수 있다. 어느 데이터가 각각의 캐시(120)에 의해 저장되는지 추적하기 위하여 스눕 필터(1320)가 상호 연결부(114) 내에 제공될 수 있다. 하나의 처리 요소가 특정 어드레스에 대한 액세스를 개시할 때, 스눕 필터(132)는 임의의 다른 캐시가 그 어드레스를 위한 데이터를 저장하는지 판단할 수 있고, 그러한 경우에는 다른 캐시 내의 데이터의 일관성 상태를 검사하기 위한 스눕 동작을 개시할 수 있다. 예를 들어, ARM® Limited에 의해 제공된 AMBA® ACE 프로토콜인 임의의 알려진 일관성 프로토콜이 일관성을 유지하기 위하여 사용될 수 있다.
전술한 바와 같이 가상 페이지 어드레스에 의해 식별된 캐시 메인터넌스 동작을 수행할 때, 스눕 필터(132)는 필요한 캐시 검색량을 감소시키는데 유용할 수 있다. 일반적으로, 캐시 메인터넌스 동작이 발행될 때, 이는 데이터가 저장될 수 있는 임의의 캐시에서 데이터가 클리링되거나 무효화되도록 일관성 있는 구조 전체에 걸쳐 브로드캐스팅될 수 있다. 그러나 종종 페이지 크기가 비교적 클 수 있고 캐시가 비교적 작을 수 있으며, 따라서 어떤 캐시가 명령에서 특정된 페이지로부터의 임의의 데이터를 저장하지 않을 수 있다는 타당성 있는 가능성이 있다. 검색 오버 헤드를 줄이기 위해, 스눕 필터(132)는, 특정된 페이지로부터의 데이터를 저장하는 것으로 식별된 캐시만이 룩업되도록, 캐시 메인터넌스 커맨드를 각각의 캐시로 포워딩할 필요가 있는지 판단하는데 사용될 수 있다. 일관성 컨트롤러(130)는 그 페이지로부터의 데이터를 저장하는 것으로서 스눕 필터(132)에서 표시되지 않은 캐시로의 캐시 메인터넌스 커맨드의 전송을 방지할 수 있어, 커맨드를 전송하고 추적하는 것과 연관된 대역폭 및 제어 오버 헤드와, 필요한 데이터를 유지하고 있는지 판단하기 위하여 캐시를 검색하는 오버 헤드가 감소될 수 있다.
도 11은 데이터 처리 방법을 도시한다. 단계 200에서, 처리 회로는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령이 마주치게 되었는지 판단한다. 그러한 경우에, 단계 202에서, 가상 페이지 어드레스가 MMU(24)에 의해 물리적 페이지의 물리적 페이지 어드레스로 변환된다. 단계 204에서, 하나 이상의 캐시 메인터넌스 커맨드가 그 물리적 페이지 내의 어드레스를 위한 캐시로 발행된다(이것은 도 5 내지 7에 도시된 예들 중 임의의 예로 수행될 수 있다. 단계 206에서, 캐시는 캐시 메인터넌스 명령의 특정된 가상 페이지 어드레스에 대응하는 물리적 페이지 내에 의존하는 물리적 어드레스를 갖는 데이터를 저장하는 것으로 식별된 임의의 캐시 라인에 캐시 메인터넌스를 수행한다.
본 출원에서, "~하도록 구성된"이라는 단어들은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 이 상황에서, "구성(configuration)"은 하드웨어 또는 소프트웨어의 상호 연결의 방식(arrangement) 또는 방법(manner)을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 또는 다른 처리 장치가 기능을 수행하도록 프로그래밍될 수 있다. "~하도록 구성된"은 정의된 동작을 제공하기 위하여 장치 요소가 임의의 방식으로 변경될 필요가 있다는 것을 암시하지 않는다.
본 발명의 예시적인 실시예가 첨부된 도면을 참조하여 여기에서 상세히 설명되었지만, 본 발명이 이러한 정확한 실시예로 한정되지 않으며, 다양한 변경, 추가 및 수정이 첨부된 청구범위에 의해 정의된 발명의 범위 및 사상을 벗어나지 않으면서 당해 기술 분야에서의 통상의 기술자에 의해 이루어질 수 있다는 것이 이해되어야 한다.
Claims (16)
- 명령에 응답하여 데이터 처리를 수행하는 처리 회로를 포함하고,
가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령(cache maintenance instruction)에 응답하여, 상기 처리 회로는, 캐시 라인(cache line)에 의해 저장된 데이터의 물리적 어드레스가 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 상기 캐시 라인에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하고,
상기 캐시 메인터넌스 명령은 복수의 가상 페이지 크기 중 하나를 특정하고, 상기 처리 회로는 상기 캐시 메인터넌스 명령에 의해 특정된 상기 가상 페이지 크기를 갖는 상기 가상 페이지를 이용하여 상기 캐시 메인터넌스 동작을 수행하도록 상기 적어도 하나의 캐시를 트리거하기 위하여 상기 캐시 메인터넌스 명령에 응답하는 것을 특징으로 하는, 장치.
- 제1항에 있어서,
상기 캐시 메인터넌스 동작은,
상기 하나 이상의 캐시 라인에 의해 저장된 오염 데이터(dirty data)를 적어도 하나의 추가 데이터 저장소로 기록하기 위한 클린(clean) 동작;
상기 하나 이상의 캐시 라인에 의해 저장된 데이터를 무효화하기 위한 무효화(invalidate) 동작;
상기 하나 이상의 캐시 라인에 의해 저장된 오염 데이터를 적어도 하나의 추가 데이터 저장소로 기록하고 상기 하나 이상의 캐시 라인에 의해 저장된 데이터를 무효화하기 위한 클린 및 무효화 동작; 및
상기 하나 이상의 캐시 라인에 의해 저장된 데이터를 미리 정해진 값으로 설정하기 위한 설정 동작 중 하나를 포함하는 것을 특징으로 하는, 장치.
- 제1항 또는 제2항에 있어서,
상기 가상 페이지 어드레스를 상기 물리적 페이지의 물리적 페이지 어드레스로 변환하기 위한 변환(translation) 회로를 더 포함하는 것을 특징으로 하는, 장치.
- 제3항에 있어서,
상기 변환 회로는 복수의 변환 엔트리(entry)를 포함하고, 각각의 상기 변환 엔트리는 가상 페이지 어드레스에 대응하고 그 가상 페이지 어드레스를 위한 대응하는 물리적 페이지 어드레스를 식별하는 것을 특징으로 하는, 장치.
- 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 적어도 하나의 캐시를 포함하는 것을 특징으로 하는, 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 캐시 메인터넌스 명령에 응답하여, 상기 처리 회로는 복수의 캐시 메인터넌스 커맨드를 상기 적어도 하나의 캐시로 발행하는 것을 트리거하도록 구성되고, 각각의 상기 캐시 메인터넌스 커맨드는 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 상기 물리적 페이지 내의 물리적 어드레스를 특정하고 특정된 상기 물리적 어드레스를 갖는 데이터를 저장하는 캐시 라인에 상기 캐시 메인터넌스 동작을 수행하도록 상기 적어도 하나의 캐시를 제어하기 위한 것임을 특징으로 하는, 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 캐시 메인터넌스 명령에 응답하여, 상기 처리 회로는 상기 적어도 하나의 캐시로 적어도 하나의 캐시 메인터넌스 커맨드를 발행하는 것을 트리거하도록 구성되고, 각각의 상기 캐시 메인터넌스 커맨드는 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 상기 물리적 페이지 내에 물리적 어드레스 블록을 특정하는 것을 특징으로 하는, 장치.
- 제7항에 있어서,
적어도 일부의 상기 캐시 메인터넌스 명령에 대하여, 상기 처리 회로는, 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 상기 물리적 페이지 내의 상이한 물리적 어드레스 블록에 각각이 대응하는 복수의 상기 캐시 메인터넌스 커맨드를 발행하는 것을 트리거하도록 구성되는 것을 특징으로 하는, 장치.
- 제7항 또는 제8항에 있어서, 제5항에 종속할 때,
상기 적어도 하나의 캐시는, 상기 캐시 메인터넌스 커맨드에 의해 식별된 상기 블록 내의 물리적 어드레스를 위한 데이터를 어느 캐시 라인이 저장하는지 식별하고, 식별된 캐시 라인에 대하여 상기 캐시 메인터넌스 동작을 수행하도록, 상기 캐시 메인터넌스 커맨드에 응답하는 것을 특징으로 하는, 장치.
- 제9항에 있어서,
상기 적어도 하나의 캐시는, 복수의 캐시 라인의 각각에 대하여, 상기 캐시 라인이 상기 캐시 메인터넌스 커맨드에 의해 특정된 상기 블록 내의 물리적 어드레스를 위한 데이터를 저장하는지 검사하도록 구성되는 것을 특징으로 하는, 장치.
- 제9항 또는 제10항에 있어서,
복수의 상기 캐시 메인터넌스 커맨드에 응답하여, 상기 적어도 하나의 캐시는, 복수의 캐시 라인의 각각에 대하여, 상기 캐시 라인이 상기 복수의 캐시 메인터넌스 커맨드에 의해 특정된 임의의 상기 물리적 어드레스 블록 내의 물리적 어드레스를 위한 데이터를 저장하는지 검사하도록 구성되는 것을 특징으로 하는, 장치.
- 제1항 내지 제11항 중 어느 한 항에 있어서,
복수의 캐시를 포함하고, 상기 처리 회로는 상기 캐시 메인터넌스 동작을 수행하도록 상기 복수의 캐시의 적어도 일부를 트리거하기 위하여 상기 캐시 메인터넌스 명령에 응답하는 것을 특징으로 하는, 장치.
- 제12항에 있어서,
대응하는 물리적 어드레스를 위한 데이터를 어느 캐시가 저장하는지 식별하는 데이터를 저장하기 위한 스눕(snoop) 필터로서, 상기 캐시 메인터넌스 명령에 응답하여, 상기 스눕 필터는 상기 캐시 메인터넌스 명령에 의해 특정된 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 상기 물리적 페이지 내의 물리적 어드레스를 위한 데이터를 저장하는 하나 이상의 캐시를 식별하는, 상기 스눕 필터; 및
상기 스눕 필터에 의해 식별된 상기 하나 이상의 캐시가 아닌 캐시로의 캐시 메인터넌스 커맨드의 전송을 금지하도록 구성되는 제어 회로를 포함하는 것을 특징으로 하는, 장치.
- 제1항 내지 제13항 중 어느 한 항에 있어서,
상기 처리 회로는 적어도 하나의 메모리를 제어하기 위하여 커맨드를 메모리 컨트롤러에 전송하도록 적어도 일부의 캐시 메인터넌스 명령에 응답하고, 상기 메모리 컨트롤러는 상기 적어도 하나의 캐시에 의한 상기 캐시 메인터넌스 동작의 성능을 제어하기 위하여 상기 커맨드에 응답하는 것을 특징으로 하는, 장치.
- 명령에 응답하여 데이터 처리를 수행하는 처리 수단을 포함하고,
가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령(cache maintenance instruction)에 응답하여, 상기 처리 수단은, 캐시 라인(cache line)에 의해 저장된 데이터의 물리적 어드레스가 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 상기 캐시 라인에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하고,
상기 캐시 메인터넌스 명령은 복수의 가상 페이지 크기 중 하나를 특정하고, 상기 처리 수단은 상기 캐시 메인터넌스 명령에 의해 특정된 상기 가상 페이지 크기를 갖는 상기 가상 페이지를 이용하여 상기 캐시 메인터넌스 동작을 수행하도록 상기 적어도 하나의 캐시를 트리거하기 위하여 상기 캐시 메인터넌스 명령에 응답하는 것을 특징으로 하는, 장치.
- 가상 어드레스 공간의 가상 페이지를 식별하는 가상 페이지 어드레스를 특정하는 캐시 메인터넌스 명령(cache maintenance instruction)을 수신하는 단계; 및
상기 캐시 메인터넌스 명령에 응답하여, 캐시 라인(cache line)에 의해 저장된 데이터의 물리적 어드레스가 상기 가상 페이지 어드레스에 의해 식별된 상기 가상 페이지에 대응하는 물리적 페이지 내에 있는 하나 이상의 상기 캐시 라인에 캐시 메인터넌스 동작을 수행하도록 적어도 하나의 캐시를 트리거하는 단계를 포함하고,
상기 캐시 메인터넌스 명령은 복수의 가상 페이지 크기 중 하나를 특정하고, 상기 캐시 메인터넌스 명령에 응답하여, 상기 적어도 하나의 캐시는 상기 캐시 메인터넌스 명령에 의해 특정된 상기 가상 페이지 크기를 갖는 상기 가상 페이지를 이용하여 상기 캐시 메인터넌스 동작을 수행하도록 트리거되는 것을 특징으로 하는, 데이터 처리 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1503580.1 | 2015-03-03 | ||
GB1503580.1A GB2536205A (en) | 2015-03-03 | 2015-03-03 | Cache maintenance instruction |
PCT/GB2016/050064 WO2016139444A1 (en) | 2015-03-03 | 2016-01-12 | Cache maintenance instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170120635A true KR20170120635A (ko) | 2017-10-31 |
KR102531261B1 KR102531261B1 (ko) | 2023-05-11 |
Family
ID=52876431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177026340A KR102531261B1 (ko) | 2015-03-03 | 2016-01-12 | 캐시 메인터넌스 명령 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11144458B2 (ko) |
EP (1) | EP3265917B1 (ko) |
JP (1) | JP6831788B2 (ko) |
KR (1) | KR102531261B1 (ko) |
CN (1) | CN107278298B (ko) |
GB (1) | GB2536205A (ko) |
WO (1) | WO2016139444A1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898226B2 (en) | 2015-10-28 | 2018-02-20 | International Business Machines Corporation | Reducing page invalidation broadcasts in virtual storage management |
US10942683B2 (en) | 2015-10-28 | 2021-03-09 | International Business Machines Corporation | Reducing page invalidation broadcasts |
US10255181B2 (en) * | 2016-09-19 | 2019-04-09 | Qualcomm Incorporated | Dynamic input/output coherency |
US11687460B2 (en) * | 2017-04-26 | 2023-06-27 | Advanced Micro Devices, Inc. | Network cache injection for coherent GPUs |
US10831673B2 (en) * | 2017-11-22 | 2020-11-10 | Arm Limited | Memory address translation |
GB2571539B (en) * | 2018-02-28 | 2020-08-19 | Imagination Tech Ltd | Memory interface |
CN109308270B (zh) * | 2018-09-04 | 2021-07-23 | 飞腾技术(长沙)有限公司 | 一种加速虚实地址转换的方法及装置 |
US10656881B1 (en) * | 2018-11-21 | 2020-05-19 | Kyocera Document Solutions Inc. | System for printing a document using a PDF converter based on page size value |
CN109684238A (zh) * | 2018-12-19 | 2019-04-26 | 湖南国科微电子股份有限公司 | 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘 |
US11055250B2 (en) * | 2019-10-04 | 2021-07-06 | Arm Limited | Non-forwardable transfers |
CN112764668B (zh) * | 2019-11-01 | 2024-07-05 | 伊姆西Ip控股有限责任公司 | 扩展gpu存储器的方法、电子设备和计算机程序产品 |
US11681624B2 (en) * | 2020-07-17 | 2023-06-20 | Qualcomm Incorporated | Space and time cache coherency |
US11972145B2 (en) * | 2021-01-21 | 2024-04-30 | Micron Technology, Inc. | Opportunistic data movement |
US11960403B2 (en) * | 2022-08-30 | 2024-04-16 | Micron Technology, Inc. | Variable execution time atomic operations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005932A1 (en) * | 2005-06-29 | 2007-01-04 | Intel Corporation | Memory management in a multiprocessor system |
US20090019232A1 (en) * | 2007-07-11 | 2009-01-15 | Freescale Semiconductor, Inc. | Specification of coherence domain during address translation |
US20090157981A1 (en) * | 2007-12-12 | 2009-06-18 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
JP2009140376A (ja) * | 2007-12-10 | 2009-06-25 | Hitachi Ltd | 特定アドレス範囲に分割されたスヌープフィルタを持つマルチプロセッサコンピュータシステム |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03231345A (ja) | 1990-02-06 | 1991-10-15 | Fujitsu Ltd | キャッシュ装置 |
US6978357B1 (en) * | 1998-07-24 | 2005-12-20 | Intel Corporation | Method and apparatus for performing cache segment flush and cache segment invalidation operations |
JP2001134490A (ja) | 1999-11-01 | 2001-05-18 | Fujitsu Ltd | キャッシュメモリの制御方法及びその方法を実現する計算機 |
EP1182566B1 (en) * | 2000-08-21 | 2013-05-15 | Texas Instruments France | Cache operation based on range of addresses |
US6757784B2 (en) | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
US7000081B2 (en) * | 2002-02-12 | 2006-02-14 | Ip-First, Llc | Write back and invalidate mechanism for multiple cache lines |
US7802055B2 (en) | 2006-04-19 | 2010-09-21 | Qualcomm Incorporated | Virtually-tagged instruction cache with physically-tagged behavior |
US20090083496A1 (en) * | 2007-09-26 | 2009-03-26 | Stevens Jr David L | Method for Improved Performance With New Buffers on NUMA Systems |
CN101615133A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于细粒度延迟写拷贝的装置和方法 |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US8214598B2 (en) | 2009-12-22 | 2012-07-03 | Intel Corporation | System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries |
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US9069684B2 (en) * | 2012-07-16 | 2015-06-30 | Nvidia Corporation | System, method, and computer program product for invalidatng cache lines |
US9208102B2 (en) * | 2013-01-15 | 2015-12-08 | Qualcomm Incorporated | Overlap checking for a translation lookaside buffer (TLB) |
GB2516477A (en) * | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
CN104346295B (zh) * | 2013-08-09 | 2017-08-11 | 华为技术有限公司 | 一种缓存刷新方法和装置 |
CN103455443B (zh) | 2013-09-04 | 2017-01-18 | 华为技术有限公司 | 一种缓存管理方法和装置 |
US20170192886A1 (en) * | 2014-07-31 | 2017-07-06 | Hewlett Packard Enterprise Development Lp | Cache management for nonvolatile main memory |
-
2015
- 2015-03-03 GB GB1503580.1A patent/GB2536205A/en not_active Withdrawn
-
2016
- 2016-01-12 KR KR1020177026340A patent/KR102531261B1/ko active IP Right Grant
- 2016-01-12 US US15/549,284 patent/US11144458B2/en active Active
- 2016-01-12 CN CN201680012407.3A patent/CN107278298B/zh active Active
- 2016-01-12 WO PCT/GB2016/050064 patent/WO2016139444A1/en active Application Filing
- 2016-01-12 JP JP2017545291A patent/JP6831788B2/ja active Active
- 2016-01-12 EP EP16701195.6A patent/EP3265917B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005932A1 (en) * | 2005-06-29 | 2007-01-04 | Intel Corporation | Memory management in a multiprocessor system |
US20090019232A1 (en) * | 2007-07-11 | 2009-01-15 | Freescale Semiconductor, Inc. | Specification of coherence domain during address translation |
JP2009140376A (ja) * | 2007-12-10 | 2009-06-25 | Hitachi Ltd | 特定アドレス範囲に分割されたスヌープフィルタを持つマルチプロセッサコンピュータシステム |
US20090157981A1 (en) * | 2007-12-12 | 2009-06-18 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
Also Published As
Publication number | Publication date |
---|---|
EP3265917A1 (en) | 2018-01-10 |
GB201503580D0 (en) | 2015-04-15 |
CN107278298A (zh) | 2017-10-20 |
JP6831788B2 (ja) | 2021-02-17 |
GB2536205A (en) | 2016-09-14 |
WO2016139444A1 (en) | 2016-09-09 |
US20180032435A1 (en) | 2018-02-01 |
EP3265917B1 (en) | 2021-05-19 |
US11144458B2 (en) | 2021-10-12 |
KR102531261B1 (ko) | 2023-05-11 |
JP2018511120A (ja) | 2018-04-19 |
CN107278298B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102531261B1 (ko) | 캐시 메인터넌스 명령 | |
KR102448124B1 (ko) | 가상 주소들을 사용하여 액세스된 캐시 | |
US10552339B2 (en) | Dynamically adapting mechanism for translation lookaside buffer shootdowns | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US6370622B1 (en) | Method and apparatus for curious and column caching | |
US8949572B2 (en) | Effective address cache memory, processor and effective address caching method | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US5802574A (en) | Method and apparatus for quickly modifying cache state | |
US20080046736A1 (en) | Data Processing System and Method for Reducing Cache Pollution by Write Stream Memory Access Patterns | |
US20120137079A1 (en) | Cache coherency control method, system, and program | |
JP7443344B2 (ja) | 外部メモリベースのトランスレーションルックアサイドバッファ | |
JPWO2012070291A1 (ja) | キャッシュコヒーレンシ制御の方法、システムおよびプログラム | |
US10339054B2 (en) | Instruction ordering for in-progress operations | |
GB2507759A (en) | Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache | |
US20060294319A1 (en) | Managing snoop operations in a data processing apparatus | |
US7434007B2 (en) | Management of cache memories in a data processing apparatus | |
TWI407306B (zh) | 快取記憶體系統及其存取方法與電腦程式產品 | |
US9442856B2 (en) | Data processing apparatus and method for handling performance of a cache maintenance operation | |
TWI417725B (zh) | 微處理器、微處理器之資料快取存取方法與電腦程式產品 | |
TWI782754B (zh) | 微處理器和在微處理器中實現的方法 | |
WO2023239671A1 (en) | Virtual memory paging system and translation lookaside buffer with pagelets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |