KR100953854B1 - 캐시 메모리 액세스를 관리하기 위한 방법 및 장치 - Google Patents

캐시 메모리 액세스를 관리하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100953854B1
KR100953854B1 KR1020077030698A KR20077030698A KR100953854B1 KR 100953854 B1 KR100953854 B1 KR 100953854B1 KR 1020077030698 A KR1020077030698 A KR 1020077030698A KR 20077030698 A KR20077030698 A KR 20077030698A KR 100953854 B1 KR100953854 B1 KR 100953854B1
Authority
KR
South Korea
Prior art keywords
cache
data
access
banks
type
Prior art date
Application number
KR1020077030698A
Other languages
English (en)
Other versions
KR20080014899A (ko
Inventor
토마스 필립 스파이어
제임스 노리스 디펜더퍼
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20080014899A publication Critical patent/KR20080014899A/ko
Application granted granted Critical
Publication of KR100953854B1 publication Critical patent/KR100953854B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

멀티프로세서 시스템에 있어서, 공유 데이터 액세스가 공유 데이터를 보유하기 위해 지정된 하나 이상의 뱅크로 지향되도록, 또한/또는 비공유 데이터 액세스가 비공유 데이터를 보유하기 위해 지정된 하나 이상의 뱅크로 지향되도록, 주어진 프로세서의 뱅크드 캐시에 대한 액세스가 제어된다. 비공유 데이터 뱅크는 비공유 데이터를 보유하기 위한 전용으로 지정될 수도 있어, 공유 데이터 액세스가 그 뱅크에 대해 비공유 데이터 액세스와 간섭하지 않게 된다. 또한, 공유 데이터 뱅크도 공유 데이터를 보유하기 위한 전용으로 지정될 수도 있고, 하나 이상의 뱅크는 공유 데이터 및 비공유 데이터의 양쪽 모두를 보유하기 위해 지정될 수도 있다. 액세스 제어 회로는, 공유 및 비공유 액세스와 관련하여 수신한 공유 지시 신호에 기초하여 이들 액세스를 각각의 뱅크로 지향시킨다. 또한, 하나 이상의 실시형태에 있어서, 액세스 제어 회로는 뱅크 구성 신호에 응답하여 하나 이상의 뱅크 지정을 재구성한다.
캐시 메모리, 공유 데이터, 비공유 데이터, 캐시 액세스, 멀티프로세서, 플러싱, 데이터 일관성

Description

캐시 메모리 액세스를 관리하기 위한 방법 및 장치{METHOD AND APPARATUS FOR MANAGING CACHE MEMORY ACCESSES}
배경
발명의 분야
본 발명은 마이크로프로세서에 관한 것으로, 특히 마이크로프로세서 캐시의 관리에 관한 것이다.
관련 배경
종종, 고성능 마이크로프로세서는, 프로세서 속도에 대해 메모리의 속도를 보다 근접하게 정합시키기 위해서 하나 이상의 상위 레벨의 보다 소형이며 보다 고속의 캐시 메모리 및 메인 메모리의 기본량 (base amount) 을 포함하는 계층적 메모리 구조를 이용한다. 예를 들어, 레벨 1 (L1) 캐시는 일반적으로 온-칩으로 존재하고, 마이크로프로세서에 대해 이용가능한 초소형, 초고속 캐시를 나타낸다. 레벨 2 (L2) 캐시는 온-칩으로 또는 오프-칩으로 존재하고, 마이크로프로세서에 대해 L1 캐시보다 다소 저속이지만 통상적으로 대용량의 캐시 메모리를 제공한다. 마이크로프로세서와 메인 메모리 사이에 단계적으로 보다 저속의 (또한 보다 대용량의) 캐시 메모리의 부가적인 레벨이 있을 수도 있다.
동작에 있어서, 캐시 메모리는 마이크로프로세서와 (비교적) 저속의 메인 메모리 사이에서 버퍼로서 동작하고, 마이크로프로세서에 의해 요구될 가능성이 큰 데이터 및/또는 명령어의 카피를 보유하는데 이용된다. 필요한 명령어 또는 데이터 항목의 카피가 캐시에 존재하는 경우, 마이크로프로세서는, 메인 메모리에 액세스하는 대신에 그 카피를 읽기/쓰기함으로써, 메인 메모리 액세스와 연관되는 훨씬 더 긴 액세스 지연을 회피하게 된다.
캐시 동작은 멀티프로세서 환경에서 보다 복잡해지는데, 여기서 2 개 이상의 마이크로프로세서가 메모리 공간을 공유한다. 이러한 환경에 있어서, 2 개 이상의 마이크로프로세서는 메인 메모리로부터의 동일한 데이터를 캐시할 수도 있다. 즉, 다중 마이크로프로세서는 각각 메인 메모리로부터의 동일한 데이터 항목의 카피를 캐시할 수도 있다. 각 마이크로프로세서가 주어진 데이터 항목의 가장 최근에 업데이트된 값에 액세스하는 것을 보장하기 위해서, 마이크로프로세서들 사이에 캐시를 동기화하는 몇몇 방법이 이용되어야 한다. 캐시 동기화는, 다른 마이크로프로세서의 동작을 통해 구식이 되는 값을 갖는 데이터 항목을 개별 마이크로프로세서가 이용하는 것을 방지하는 몇몇 메커니즘을 제공함으로써, 캐시 "일관성"을 유지한다. 캐시 동기화는 하드웨어-시행 일관성 또는 캐시 관리 명령어를 통한 소프트웨어 중 어느 하나에 의해 관리될 수 있다.
하드웨어-시행 캐시 일관성의 일 타입은 "브로드캐스트" 타입 접근 방식이다. 캐시 동기화에 대한 브로드캐스트 기반 접근 방식은 일반적으로 각 마이크로프로세서가 데이터 메모리 동작에 관련된 메시지를 송신하는 것에 종속한다. 차례로, 개별 마이크로프로세서, 또는 그 캐시 컨트롤러는 이들 메시지를 모니터링 ("스누핑") 하여, 또 다른 마이크로프로세서의 동작이 그 연관된 캐시에 보유되는 어떠한 데이터 항목을 무효화했는지 여부를 판정한다.
따라서, 이들 소위 "스누프성 (snoopy)" 버스의 이용은, 멀티프로세서 시스템에서 캐시 일관성을 유지하는 비교적 간단하며 효과적인 방법을 나타낸다. 그러나, 스누프성 버스는 캐시 메모리의 유효 액세스 대역폭을 감소시킬 수 있는데, 그 이유는 주어진 캐시에 대한 스누프 트래픽 액세스가 통상적으로 마이크로프로세서(들)에 의해 로컬 발생된 캐시 액세스에 이용되는 동일한 "포트" 또는 액세스 버스에 대해 지원되기 때문이다. 스누프 트래픽의 양은 마이크로프로세서 총수가 증가함에 따라 상당히 증가하고, 결국 스누프 트래픽의 양은 전체 시스템 성능을 상당히 제한할 수 있다.
고용량의 스누프 트래픽에 의해 내포된 캐시 액세스 간섭 문제점에 대한 각종 회피 방법은 다중-접속 캐시 메모리의 이용을 포함하는데, 여기서 스누프 트래픽 및 로컬 발생된 트래픽은 상이한 포트로 캐시에 액세스한다. 그러나, 이러한 구성은 크기, 전력 소모, 및 캐시의 비용을 상당히 증가시킬 수 있다.
명세서의 요약
뱅크드 캐시 (banked cache) 관리 방법의 하나 이상의 실시형태에 있어서, 뱅크드 캐시의 하나 이상의 캐시 뱅크에서 공유 데이터와 비공유 데이터의 혼합을 감소 또는 제거함으로써, 공유 데이터 캐시 액세스 (예를 들어, 스누프 트래픽과 연관된 캐시 액세스) 와 비공유 데이터 캐시 액세스 사이의 간섭이 감소된다. 이러한 혼합을 감소 또는 제거하는 것은, 공유 데이터를 유지하기 위해 뱅크드 캐시의 하나 이상의 뱅크를 지정하는 것, 및 공유 데이터에 대한 캐시 액세스를 지정 된 하나 이상의 캐시 뱅크로 지향시키는 것을 포함할 수도 있다. 부가적으로, 또는 대안적으로, 비공유 데이터를 보유하기 위해 뱅크드 캐시의 하나 이상의 뱅크를 지정함으로써, 또한 비공유 데이터에 대한 캐시 액세스를 지정된 하나 이상의 캐시 뱅크로 지향시킴으로써, 이러한 혼합이 감소 또는 제거될 수 있다.
예를 들어, 주어진 캐시 액세스 (읽기 또는 쓰기) 는 "뱅크 선택 기능" 에 따라 특정 캐시 뱅크의 특정 캐시 위치로 지향되는데, 뱅크 선택 기능은 적어도 부분적으로 하나 이상의 캐시 액세스 어드레스 신호에 의해 구동될 수도 있다. 본 명세서에서 이용된 바와 같이, "뱅크 선택 기능" 이라는 용어는 특정 캐시 액세스 어드레스에 대해 특정 뱅크를 선택하는데 이용되는 각종 상이한 방법 및 알고리즘을 포함한다. 예를 들어, 이 용어는 어드레스 및/또는 다른 신호 해싱 기능을 포함할 수 있거나, 간단한 어드레스 디코딩을 나타낸다.
그러나, 뱅크 선택 기능은 본 명세서에 개시된 바와 같은 캐시 관리의 하나 이상의 실시형태에 따라 구현되고, 액세스 타입 지시자 (예를 들어, 공유 액세스 지시자) 는 뱅크 선택 기능을 변경하여, 공유 데이터에 대한 캐시 액세스 또한/또는 비공유 데이터에 대한 캐시 액세스가 뱅크드 캐시의 하나 이상의 지정된 뱅크로 지향 (조종) 되게 한다. 예를 들어, 뱅크 선택 기능은 공유 액세스를 공유 액세스 뱅크로 또는 혼합 (공유와 비공유) 액세스 뱅크로 지향시킬 수도 있다. 이러한 동작은 공유 데이터에 대한 캐시 액세스 액티비티를 공유 데이터를 보유하기 위해 지정된 뱅크(들)에 "포커싱" 한다. 유사하게, 액세스 타입 지시자는 비공유 액세스를 비공유 액세스 뱅크로 또는 혼합 액세스 뱅크로 지향시키도록 뱅 크 선택 기능을 변경하는데 이용될 수도 있는데, 이는 비공유 데이터에 대한 캐시 액세스 액티비티를 비공유 데이터를 보유하기 위해 지정된 뱅크(들)에 포커싱한다. 양쪽 모두의 경우에, 뱅크드 캐시의 하나 이상의 뱅크에 대하여, 공유 데이터 액세스와 비공유 데이터 액세스 사이의 간섭이 감소 또는 제거된다.
뱅크드 캐시의 하나 이상의 뱅크에 대한 비공유 데이터 캐시 액세스와 공유 데이터 캐시 액세스 사이의 간섭을 감소시키는 광범위한 방법은, 제 1 타입의 데이터를 보유하기 위해 뱅크드 캐시의 하나 이상의 제 1 뱅크를 지정하는 단계로서, 제 1 타입의 데이터는 공유 데이터 및 비공유 데이터 중 하나의 데이터인, 하나 이상의 제 1 뱅크를 지정하는 단계, 및 제 1 타입의 데이터에 대한 캐시 액세스를 하나 이상의 제 1 뱅크로 지향시키는 단계를 포함한다. 이 방법은, 제 2 타입의 데이터를 보유하기 위해 뱅크드 캐시의 하나 이상의 제 2 뱅크를 지정하는 단계로서, 제 2 타입의 데이터는 공유 데이터 및 비공유 데이터 중 다른 하나의 데이터인, 하나 이상의 제 2 뱅크를 지정하는 단계, 및 제 2 타입의 데이터에 대한 캐시 액세스를 하나 이상의 제 2 뱅크로 지향시키는 단계를 더 포함할 수도 있다. 임의의 또는 모든 이러한 지정은 전용 또는 범용일 (혼합될) 수도 있다.
전술한 방법, 또는 전술한 방법의 변형을 구체화하는 뱅크드 캐시의 일 실시형태는, 제 1 타입의 데이터에 대한 캐시 액세스를 제 1 타입의 데이터를 보유하기 위해 지정되는 뱅크드 캐시의 하나 이상의 제 1 캐시 뱅크로 지향시키는 것에 기초하여, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭을 감소시키도록 구성된 액세스 제어 회로로서, 제 1 타입의 데이터는 공유 데이터 및 비 공유 데이터 중 하나의 데이터인, 액세스 제어 회로를 포함한다. 또한, 액세스 제어 회로는, 제 2 타입의 데이터에 대한 캐시 액세스를 뱅크드 캐시의 하나 이상의 제 2 캐시 뱅크로 지향시킬 수도 있는데, 제 2 타입의 데이터는 공유 데이터 및 비공유 데이터 중 다른 하나의 데이터이다.
이러한 실시형태에 있어서, 액세스 제어 회로는 직접적으로 또는 간접적으로 액세스 타입 지시자에 응답할 수도 있는데, 액세스 타입 지시자는 캐시 액세스와 관련하여 뱅크드 캐시로 제공되는 공유 액세스 신호일 수도 있다. 공유 액세스 지시자 신호의 논리 상태나 값, 또는 몇몇 다른 특성은, 주어진 캐시 액세스가 공유 (또는 비공유) 데이터에 대한 캐시 액세스인지 여부를 나타내고, 그에 따라 액세스 제어 회로의 뱅크 선택 기능이 변경되어, 캐시 액세스를 적절한 캐시 뱅크로 지향시킬 수 있게 된다.
또한, 뱅크 선택 기능은 뱅크 구성 신호에 따라 변경될 수도 있다. 즉, 뱅크드 캐시의 구성은 필요나 요구에 따라 변경될 수도 있어, 공유 데이터, 비공유 데이터, 또는 혼합 데이터를 위한 것으로서 하나 이상의 뱅크의 지정이 변경될 수 있게 된다. 이러한 변경은 컴퓨터 운영 체계 레벨에서 제어될 수도 있고/있거나, 뱅크드 캐시와 연관된 프로세서(들)에서 구동되는 개별 프로그램에 의해 제어될 수도 있다.
도면의 간단한 설명
도 1 은 뱅크드 캐시를 포함하는 멀티프로세서 회로를 도시한 블록도이다.
도 2 는 도 1 의 멀티프로세서 회로의 주어진 하나의 프로세서 및 뱅크드 캐 시를 도시한 블록도이다.
도 3 은 비공유/공유 데이터 액세스 타입의 기능으로서 뱅크드 캐시 액세스를 제어하는 일 실시형태를 도시한 논리 흐름도이다.
도 4 는 뱅크드 캐시 액세스를 제어하기 위한 액세스 제어 회로의 일 실시형태를 도시한 블록도이다.
도 5 는 비공유 및 공유 뱅크의 하나의 배열을 갖는 뱅크드 캐시를 도시한 블록도이다.
도 6 은 뱅크드 캐시 액세스를 제어하기 위한 액세스 제어 회로의 또 다른 실시형태를 도시한 블록도이다.
도 7 은 비공유 및 공유 뱅크의 또 다른 배열을 갖는 뱅크드 캐시를 도시한 블록도이다.
발명의 실시예들의 설명
도 1 은 복수의 마이크로프로세서 (10), 및 시스템 버스 (14) 를 통해 메인 메모리 (16) 에 연결되는 연관된 메모리 캐시 (12) 를 포함하는 멀티프로세서 회로 (8) 를 적어도 부분적으로 도시한 도면이다. 프로세서 (10) 는, 단일 집적 회로 장치, 시스템-온-칩 회로 (멀티-칩 모듈) 와 같이, 함께 구현될 수도 있거나, 개별 구현될 수도 있다. 유사하게, 캐시 메모리 (12) 는 전체적으로 또는 부분적으로 프로세서 (10) 에 집적될 수도 있거나, 개별 구현될 수도 있다. 예를 들어, 캐시 (12-1) 는, 프로세서 (10-1) 내에 포함되는 레벨 1 (L1) 캐시, 및 내부적으로 또는 외부적으로 구현되는 레벨 2 (L2) 캐시를 포함할 수도 있다. 프로 세서 (10-1) 의 예시된 실시형태는 캐시 컨트롤러 (18-1) 를 포함하는데, 이는 다수의 메모리 관리 특징을 포함할 수도 있다. 유사한 구성이, 프로세서 (10-2 및 10-3) 를 위해, 또한 그 대응 캐시 (12-2 및 12-3) 를 위해 이용될 수도 있다.
물론, 프로세서 (10) 및 캐시 (12) 를 위해 선택된 일반적인 물리 구현은 일반적으로 본 명세서에 개시된 캐시 액세스 제어 방법 및 장치에 적절하지 않고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 각종 회로 구현 변형이 가능하다는 것을 인식할 것이다. 예를 들어, 필요나 요구에 따라, 예시된 것보다 많거나 적은 수의 프로세서 (10) 및 대응 캐시 (12) 가 이용될 수도 있다.
이들 변형을 고려하면, 멀티프로세서 회로 (8) 는 대칭형 다중 처리 (Symmetric Multi-Processing: SMP) 회로로서 동작할 수도 있는데, 여기서 프로세서 (10) 는 하나 이상의 컴퓨터 프로그램, 프로그램 스레드 등을 공동 실행한다. 프로세서 (10) 는 각각 축소 명령 집합 컴퓨터 (Reduced Instruction Set Computer: RISC) 프로세서를 포함할 수도 있는데, 이는 하나 이상의 명령어 실행 파이프라인을 갖는 코어 유닛을 포함하고, 명령어 및 데이터의 예측 캐시 (predictive caching) 를 위한 사전-인출 유닛, 메모리 매핑 및 허가를 추적하기 위한 변환 색인 버퍼 (Translation Look-aside Buffers: TLB) 등을 더 포함한다. 또한, 언급된 바와 같이, 프로세서 (10) 의 각각은 캐시 컨트롤러 (18) 를 더 포함할 수도 있는데, 이는 프로세서를 메인 메모리 (16) 에 대해, 시스템 버스 (14) 에 대해, 또한 캐시 (12) 의 각각에 대해 인터페이스하는 보다 큰 메모리 관리 유닛의 일부를 포함할 수도 있다. 물론, 각 프로세서 (10) 는, 디버그 회로 등과 같이, 도시되지 않은 기능 엘리먼트를 더 포함할 수도 있다.
메인 메모리 (16) 는, 프로세서 (10) 중 어떠한 하나 이상에 의해 실행될 수도 있는 데이터를 보유하기 위해 이용되는 하나 이상의 범위의 "공유" 메모리, 및 특정 프로세서 (10) 에 의해 이용되기 위한 하나 이상의 범위의 "비공유" 메모리로 구성될 수도 있다. 이러한 관계에 있어서, 각 프로세서 (10) 는 비공유 데이터와 공유 데이터의 혼합을 대응 캐시 (12) 에 캐시할 수도 있다. 하나 이상의 실시형태에 있어서, 캐시 (12) 중 하나 이상은 뱅크드 캐시로서 구성되는데, 이는 2 개 이상의 캐시 뱅크를 포함한다. 바람직하게는, 상이한 뱅크는 독립적인 접근성을 제공하여, 하나의 뱅크에 대한 액세스가 또 다른 뱅크에 대한 액세스와 간섭하지 않게 된다.
캐시들 (12) 사이에 데이터 일관성을 유지할 필요성 때문에, 다중 처리 회로 (8) 는 "스누프성" 프로토콜과 같이 언급되는 데이터 일관성 프로토콜에 기초한 하나 이상의 형태의 "브로드캐스트" 를 채택한다. 스누핑에 있어서, 공유 데이터의 캐시된 카피에 대해 하나의 프로세서 (10) 에 의한 동작은 나머지 프로세서 (10) 에 의해 인식되어, 각 프로세서 (10) 가 공유 데이터의 유효한 현재의 카피에 대해 실행하는 것을 보장하도록 적절한 캐시 플러싱 및/또는 메인 메모리 업데이트가 이루어질 수 있게 된다.
비제한적인 실시예로서, 다중 처리 회로의 스누핑 프로토콜은 쓰기 브로드캐스팅에 기초할 수도 있는데, 여기서 각 프로세서 (10) 및/또는 캐시 (12) 는 모든 쓰기를 시스템 버스 (14) 로 송신하여, 다른 프로세서/캐시가 필요에 따라 그 각각 의 캐시된 데이터를 업데이트할 수 있게 된다. 대안적으로, 쓰기 무효화 프로토콜이 이용될 수 있는데, 여기서 하나의 캐시 (12) 에서의 주어진 캐시 라인에 대한 쓰기는 어떠한 다른 캐시 (12) 에 존재하는 동일한 캐시 라인으로 하여금 무효화되도록 한다. ("캐시 라인" 은 일반적으로 메인 메모리에서의 특정 어드레스 범위로부터 캐시된 주어진 데이터 블록을 포함한다.) 물론, 다중 처리 회로 (8) 를 위해, MSI (Modified-Shared-Invalid), MESI (Modified-Exclusive-Shared-Invalid), 또는 MOESI (Modified-Owner-Exclusive-Shared-Invalid) 와 같이, 다른 스누핑 프로토콜이 구현될 수 있다.
시스템 버스 (14) 상에 흐르는 하나 이상의 형태의 스누핑 트래픽에 있어서, 캐시 (12) 에 대한 액세스는 캐시 (12) 에 걸쳐 공유 데이터 일관성을 유지하는 것과 연관되는 상당량의 스누프 트래픽을 포함할 수도 있다. 부가적으로, 각 프로세서 (10) 는, 연관된 캐시 (12) 에 보유된 공유 데이터 및 비공유 데이터의 양쪽 모두에 대한 로컬 액세스가 프로세서에서 실행되는 코드의 요건을 준수하게 한다. 예를 들어, 캐시 (12-1) 에 대한 액세스는, 데이터 일관성을 유지하기 위한 스누프-관련 공유 데이터 액세스, 및 프로그램 명령어의 진행 중인 실행과 관련하여 수행되는 프로세서 (10-1) 에 의한 로컬 액세스의 혼합을 포함한다. 종래에, 뱅크드 캐시의 동일한 뱅크, 또는 동일한 캐시 포트에 대한 스누프-관련 및 동작-관련 액세스는 전체 캐시 액세스 대역폭에 대하여 서로 경쟁하였다. 종래의 시스템에 있어서, 그런 다음, 스누프 트래픽은 이용가능한 캐시 메모리 대역폭에 대해 넌-스누프 캐시 액세스와 경쟁함으로써 유효 성능을 감소시켰다.
도 2 는 프로세서 (10-1 ; "P1" 으로도 언급됨) 및 연관된 캐시 (12-1) 의 일 실시형태를 도시한 도면이다. 이 도면에 있어서, 뱅크드 캐시 (12-1) 는 액세스 제어 회로 (20) 및 4 개의 캐시 뱅크 (22-1 내지 22-4) 를 포함한다. 필요나 요구에 따라, 보다 많거나 적은 수의 캐시 뱅크 (22) 가 구현될 수도 있다. 또한, 뱅크드 캐시 (12-1) 가 오프-칩의 L2 캐시를 포함하는 경우에, 액세스 제어 회로 (20) 를 뱅크드 캐시 (12-1) 의 일부로서 구현하는 것이 이로울 수도 있다. 그러나, 하나 이상의 실시형태에 있어서, 액세스 제어 회로 (20) 는 프로세서 (10-1) 의 일부로서 내장형으로 구현된다. 이러한 실시형태에 있어서, 액세스 제어 회로 (20) 는 캐시 컨트롤러 (18-1) 의 일부로서 구현될 수도 있다.
하여튼, 동작에 있어서, 액세스 제어 회로 (20) 는 캐시 액세스를 비공유 데이터에 관련되는 것으로서 또는 공유 데이터에 관련되는 것으로서 인식하고, 이에 대응하여 이들 액세스를 뱅크 (22) 와 연관되는 비공유/공유 지정에 따라 지향시킨다. 하나 이상의 실시형태에 있어서, 이러한 인식은, 프로세서 (10-1) 가 공유 액세스 지시 신호 및/또는 뱅크 구성 신호를 액세스 제어 회로로 제공하는 것에 기초한다. 동일하거나 유사한 구성이, 프로세서 (10-2 및 10-3 ; 즉, P2, P3) 중 어떠한 하나 이상을 위해, 또한 그 대응 캐시 (12-2 및 12-3) 를 위해 채택될 수도 있다.
그럼에도 불구하고, 주어진 하나의 뱅크드 캐시 (12) 내의 각 뱅크 (22) 는 바람직하게는 독립적으로 액세스가능하여, 하나의 뱅크 (22) 에 대한 액세스는 나머지 뱅크 (22) 에 대한 액세스와 간섭하지 않는다. 이러한 캐시 구성에 있어 서, 뱅크 (22) 중 하나 이상은 비공유 데이터, 공유 데이터, 또는 이들의 혼합을 보유하기 위해 지정될 수 있다.
특정 뱅크 (22) 가 비공유 데이터를 보유하기 위한 전용으로 지정되는 경우, 공유 데이터 일관성의 유지와 연관되는 스누프-관련 액세스는 그 특정 뱅크 (22) 에 대한 로컬 비공유 데이터 액세스와 간섭하지 않는다. 물론, 특정 뱅크 (22) 는 공유 데이터를 보유하기 위한, 또는 공유 데이터와 비공유 데이터의 혼합을 보유하기 위한 전용으로 지정될 수도 있다. 일반적으로, 상이한 뱅크 (22) 가 비공유 이용, 공유 이용, 또는 혼합 이용을 위해 지정될 수 있고, 뱅크 (22) 중 하나 이상을 위해 로컬 프로세서 액세스 대역폭을 보존하는 방법은 그 하나 이상의 뱅크로부터의 공유 데이터를 배제시키는 단계를 포함한다. 이러한 방식으로 공유 및 비공유 데이터 액세스를 지향시키는 것은 특정 뱅크 (22) 와 연관되는 지정을 상이하게 하는 것에 종속한다.
대체로, 액세스 제어 회로 (20) 의 일 실시형태는, 뱅크드 캐시의 하나 이상의 뱅크에 대한 비공유 데이터 캐시 액세스와 공유 데이터 캐시 액세스 사이의 간섭을 감소시키는 방법을 구현하도록 구성될 수 있다. 예를 들어, 액세스 제어 회로 (20) 는, 제 1 타입의 데이터를 보유하기 위해 뱅크드 캐시 (12) 의 하나 이상의 제 1 뱅크 (22) 를 지정함으로써, 또한 제 1 타입의 데이터에 대한 캐시 액세스를 하나 이상의 제 1 뱅크로 지향시킴으로써, 이러한 간섭을 감소시킬 수도 있는데, 제 1 타입의 데이터는 공유 데이터 및 비공유 데이터 중 하나의 데이터이다. 액세스는, 캐시 액세스와 관련하여 액세스 제어 회로 (20) 로 제공되는 액세스 타입 지시자에 기초하여, 제 1 타입의 데이터를 타깃으로 하는 것으로서 인식될 수도 있다.
또한, 액세스 제어 회로 (20) 는, 제 2 타입의 데이터를 보유하기 위해 뱅크드 캐시 (12) 의 하나 이상의 제 2 뱅크 (22) 를 지정하도록, 또한 제 2 타입의 데이터에 대한 캐시 액세스를 하나 이상의 제 2 뱅크 (22) 로 지향시키도록 구성될 수도 있는데, 제 2 타입의 데이터는 공유 데이터 및 비공유 데이터 중 다른 하나의 데이터이다. 이러한 실시형태에 있어서, 제 1 타입의 데이터를 보유하기 위해 뱅크드 캐시 (12) 의 하나 이상의 제 1 뱅크 (22) 를 지정하는 것은 공유 데이터를 보유하기 위해 제 1 캐시 뱅크 (22) 를 지정하는 것을 포함할 수도 있다. 유사하게, 제 2 타입의 데이터를 보유하기 위해 하나 이상의 제 2 캐시 뱅크 (22) 를 지정하는 것은 비공유 데이터를 보유하기 위해 제 2 캐시 뱅크 (22) 를 지정하는 것을 포함할 수도 있다.
이러한 구성에 있어서, 제 1 타입의 데이터에 대한 캐시 액세스는 제 1 캐시 뱅크 (22) 로 지향되고, 비공유 데이터에 대한 캐시 액세스는 제 2 캐시 뱅크 (22) 로 지향된다. 또한, 이러한 지정 중 하나 또는 양쪽 모두는 전용일 수 있어, 모든 공유 및/또는 비공유 액세스가 뱅크드 캐시 (12) 의 하나 이상의 지정된 뱅크 (22) 로 전용으로 지향되는 것이 주목된다. 그러나, 지정은 범용일 수도 있어, 공유 및 비공유 액세스의 양쪽 모두는 적어도 주어진 범위의 캐시 어드레스에 대하여 동일한 뱅크로 지향된다. 주어진 하나의 캐시 뱅크 (22) 가 혼합 뱅크로서 지정되는 경우에도, 공유 또는 비공유 데이터를 위해 이용되는 이 뱅크의 양 또는 백분율이 제어될 수 있는데, 예를 들어 이는 1 차적으로 공유 또는 비공유 데이터를 위해 이용될 수 있어, 1 차 타입이 아닌 데이터에 대한 이 뱅크의 액세스 간섭은 최소가 된다.
액세스 타입 지시자는 소프트웨어 제어 하에서 설정되는 신호 또는 다른 타입의 값일 수도 있다. 예를 들어, 액세스 타입 지시자는 소프트웨어에 의해 기록되는 마이크로프로세서 (10) 내의 페이지 테이블에서의 비트를 포함할 수도 있어, 하드웨어 (예를 들어, 프로세서 (10)) 는 주어진 메모리 어드레스에 기초하여 페이지 테이블 룩업을 수행한 이후에 지시자에 대한 액세스를 갖게 된다. 또 다른 실시형태에 있어서, 액세스 타입 지시자는 프로세서 (10) 내의 몇몇 소프트웨어-기록 구성 레지스터(들)에 대한 어드레스 디코딩/비교의 결과를 포함할 수도 있다. 예를 들어, 소프트웨어는 공유 영역 시작 및 종료를 지시하도록 2 개의 레지스터를 구성할 수 있고, 프로세서 (10) 는, 주어진 액세스가 공유인지 여부를 판정하기 위해서 이들 레지스터에 대해 액세스 어드레스의 전부 또는 일부를 비교함으로써 적절한 상태로 액세스 타입 지시자 신호를 설정할 수 있다.
또 다른 실시형태에 있어서, 프로세서 (10) 내의 소프트웨어 프로그램된 레지스터는, 어떤 타입의 액세스가 공유인지 여부를 나타내는데 이용되고, 따라서 레지스터의 값 또는 상태는 액세스 타입 지시자 신호의 역할을 하게 된다. 공유/비공유 판정은, 어떤 타입의 액세스가 메모리의 어느 영역에 액세스할 수 있는지의 소프트웨어의 지식에 기초할 수 있다. 이러한 구성은 캐시 관리 동작, 변환 색인 버퍼 (TLB) 관리 동작, 및 데이터 스트리밍과 같은 다른 전문 기능 등과 연관된 액세스에 유용할 수도 있다.
그럼에도 불구하고, 전술한 공유/비공유 액세스-지향 방법을 고려하면, 도 3 은, 공유 및 비공유 액세스의 지향을 지지하여 구현될 수 있고, 공유 또는 비공유로서 캐시 (12) 중 어떠한 하나 이상에서의 특정 뱅크 (22) 를 지정하는 것 (단계 100) 부터 시작하는 처리 로직을 도시한 도면이다. 이 단계는, 뱅크드 캐시 (12) 가 소정의 공유 및 비공유 뱅크 지정으로 구성되는 바와 같이, 암시적 단계일 수도 있거나, 뱅크 지정이 변경가능한 실시형태에서는 명시적 단계일 수도 있다.
원하는 지정이 이루어졌다고 가정하면, 캐시 액세스를 수신하는 것 (단계 102), 및 액세스 타입을 공유 또는 비공유로서 판정하는 것 (단계 104) 으로 처리가 계속된다. 액세스가 공유 데이터에 대한 액세스인 경우에는 (단계 106 에서, 예), 이는 공유 데이터를 보유하는 것으로서 지정된 하나의 뱅크 (22) 로 지향된다. 이와 달리, 액세스가 비공유 데이터에 대한 액세스인 경우에는 (단계 106 에서, 아니오), 이는 비공유 데이터를 보유하는 것으로서 지정된 하나의 뱅크 (22) 로 지향된다.
도 4 는 캐시 액세스를 위해 발생된 하나 이상의 어드레스 비트의 "해싱" 에 기초하여 캐시 액세스를 비공유 또는 공유 뱅크 (22) 로 지향시키도록 구성되는 뱅크 선택기 회로 (24) 를 포함하는 액세스 제어 회로 (20) 의 일 실시형태를 도시한 도면이다. 예를 들어, 2 개의 뱅크 (22) 에 있어서, 하나 이상의 어드레스 라인은 각각 공유 또는 비공유 액세스에 대응하는 "BANK 0" 선택 신호 또는 "BANK 1" 선택 신호를 발생시키는데 이용될 수 있다. 도 5 는 2 개의 이러한 선택적으로 액세스되는 뱅크 (22) 를 도시한 도면이다.
유사하게, 도 6 및 도 7 은 각각 액세스 제어 회로 (20) 의 또 다른 실시형태, 및 공유 및 비공유 뱅크 지정의 대응 실시예를 도시한 도면이다. 보다 상세하게는, 도 6 에 도시된 액세스 제어 회로 (20) 의 실시형태는, 하나 이상의 어드레스 라인 및 공유 액세스 지시 신호, 및 선택적으로 뱅크 구성 신호의 해싱의 기능으로서, 비공유 및 공유 데이터 캐시 액세스를 지향시킨다. 공유 액세스 지시자 신호는 하나 이상의 비트를 포함할 수도 있고, 정 논리 또는 부정 논리에 따라 표명될 수 있는데, 이는 주어진 캐시 액세스가 메인 메모리의 공유 또는 비공유 영역에 매핑하는 캐시 라인에 대한 액세스라는 것을 나타낸다. 이러한 공유 지시는 프로세서의 이용을 위해 저장된 메모리 페이지 정보의 기능으로서 손쉽게 발생될 수 있다. 공유 지시 신호와 같이, 뱅크 구성 신호는 하나 이상의 비트일 수 있고, 프로세서-발생될 수 있다.
일 예시로서 동작하는 프로세서 (10-1) 에 있어서, 캐시 컨트롤러 (18-1) 는 공유 지시자 신호 및/또는 뱅크 구성 신호를 발생시켜 액세스 제어 회로 (20) 의 동작을 지원하도록 구성될 수 있다. 원하는 경우, 캐시 컨트롤러 (18-1) 는 예를 들어 메인 메모리 (16) 의 리매핑 (remapping) 에 응답하여, 또는 상이한 운영 체계 또는 프로그램 모드에 응답하여, 동적으로 뱅크 구성 신호를 업데이트하도록 구성될 수 있다. 이러한 실시예에 있어서, 캐시 컨트롤러 (18-1) 는 공유/비공유 뱅크 지정을 재구성하는 일환으로서 뱅크드 캐시 (12-1) 를 플러싱하도록, 또는 다른 방법으로 무효화 또는 소거하도록 구성될 수 있다. 본 발명이 속하는 기 술분야에서 통상의 지식을 가진 자라면, 유사한 구성이, 뱅크드 캐시 (12-2 및 12-3), 캐시 컨트롤러 (18-2 및 18-3), 및 프로세서 (10-2 및 10-3) 중 어떠한 하나 이상에 존재할 수도 있다는 것을 인식할 것이다.
물론, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면, 본 명세서의 설명이 각종 예시적인 실시형태에 관련되고, 본 발명을 제한하는 것도, 첨부 도면을 제한하는 것도 아니라는 것을 인식해야 한다. 오히려, 본 발명은 특허청구범위 및 그 법적 등가물에 의해서만 제한된다.

Claims (22)

  1. 뱅크드 캐시 (banked cache) 의 하나 이상의 뱅크에 대한, 멀티프로세서 시스템의 캐시 스누프 (snoop) 트래픽에 관련된 공유 데이터 캐시 액세스와 액세싱 프로세서에 전용되는 데이터로 지향되는 비공유 데이터 캐시 액세스 사이의 간섭을 감소시키는 방법으로서,
    제 1 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 1 뱅크를 지정하는 단계로서, 상기 제 1 타입의 데이터는 공유 데이터 및 비공유 데이터 중 하나의 데이터인, 상기 하나 이상의 제 1 뱅크를 지정하는 단계; 및
    상기 제 1 타입의 데이터에 대한 캐시 액세스를 상기 하나 이상의 제 1 뱅크로 지향시키는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  2. 제 1 항에 있어서,
    제 2 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 2 뱅크를 지정하는 단계로서, 상기 제 2 타입의 데이터는 공유 데이터 및 비공유 데이터 중 다른 하나의 데이터인, 상기 하나 이상의 제 2 뱅크를 지정하는 단계; 및
    상기 제 2 타입의 데이터에 대한 캐시 액세스를 상기 하나 이상의 제 2 뱅크로 지향시키는 단계를 더 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  3. 제 2 항에 있어서,
    상기 제 1 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 1 뱅크를 지정하는 단계는, 공유 데이터를 보유하기 위해 상기 뱅크드 캐시의 제 1 캐시 뱅크를 지정하는 단계를 포함하고, 상기 제 2 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 2 뱅크를 지정하는 단계는, 비공유 데이터를 보유하기 위해 상기 뱅크드 캐시의 제 2 캐시 뱅크를 지정하는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  4. 제 3 항에 있어서,
    상기 제 1 타입의 데이터에 대한 캐시 액세스를 상기 하나 이상의 제 1 뱅크로 지향시키는 단계는, 공유 데이터에 대한 캐시 액세스를 상기 제 1 캐시 뱅크로 지향시키는 단계를 포함하고, 비공유 데이터에 대한 캐시 액세스를 상기 제 2 캐시 뱅크로 지향시키는 단계를 더 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 제 1 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 1 뱅크를 지정하는 단계는, 상기 뱅크드 캐시의 하나 이상의 뱅크를 상기 제 1 타입의 데이터를 보유하기 위한 전용으로 지정하는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  7. 제 1 항에 있어서,
    상기 제 1 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 1 뱅크를 지정하는 단계는, 상기 제 1 타입의 데이터와 제 2 타입의 데이터의 혼합을 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 뱅크를 지정하는 단계로서, 상기 제 2 타입의 데이터는 공유 데이터 및 비공유 데이터 중 다른 하나의 데이터인, 상기 뱅크드 캐시의 하나 이상의 뱅크를 지정하는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  8. 제 1 항에 있어서,
    상기 제 1 타입의 데이터에 대한 캐시 액세스를 상기 하나 이상의 제 1 뱅크로 지향시키는 단계는, 캐시 액세스가 상기 제 1 타입의 데이터에 대한 캐시 액세 스인지 여부를 나타내는 액세스 타입 지시자 신호에 응답하도록 뱅크 선택 기능을 구성하는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  9. 제 8 항에 있어서,
    상기 캐시 액세스가 상기 제 1 타입의 데이터에 대한 캐시 액세스인지 여부를 나타내는 액세스 타입 지시자 신호에 응답하도록 뱅크 선택 기능을 구성하는 단계는, 하나 이상의 캐시 액세스 어드레스 신호 및 상기 액세스 타입 지시자 신호의 기능으로서, 주어진 캐시 액세스를 상기 뱅크드 캐시의 특정 뱅크의 특정 위치 또는 위치들로 지향시키도록 상기 뱅크 선택 기능을 구성하는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  10. 제 1 항에 있어서,
    상기 제 1 타입의 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 제 1 뱅크를 지정하는 단계는, 개별 캐시 액세스가 상기 제 1 타입의 데이터를 포함하는지 여부를 나타내는 액세스 타입 지시자 신호에 응답하도록, 캐시 액세스를 상기 뱅크드 캐시의 특정 뱅크로 지향시키는데 이용되는 뱅크 선택 기능을 구성하는 단계를 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  11. 제 10 항에 있어서,
    상기 뱅크드 캐시의 하나 이상의 제 1 뱅크의 지정을 변경하도록 상기 뱅크 선택 기능을 재구성하는 단계를 더 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  12. 제 11 항에 있어서,
    상기 지정의 변경에 응답하여, 상기 뱅크드 캐시의 하나 이상의 제 1 뱅크로부터 현재 캐시된 데이터를 플러싱하는 단계를 더 포함하는, 공유 데이터 캐시 액세스와 비공유 데이터 캐시 액세스 사이의 간섭 감소 방법.
  13. 멀티프로세서 시스템의 캐시 스누프 트래픽에 관련된 공유 데이터에 대한 캐시 액세스와 액세싱 프로세서에 전용되는 비공유 데이터에 대한 캐시 액세스 사이에서 뱅크드 캐시의 캐시 액세스 간섭을 감소시키는 방법으로서,
    상기 뱅크드 캐시의 하나 이상의 캐시 뱅크에서 공유 데이터와 비공유 데이터의 혼합을 감소 또는 제거하는 단계; 및
    공유 데이터 또는 비공유 데이터 중 하나에 관련된 캐시 액세스를 공유 데이터 또는 비공유 데이터 중 다른 하나가 감소 또는 제거된 하나 이상의 캐시 뱅크로 지향시키는 단계를 포함하는, 뱅크드 캐시의 캐시 액세스 간섭 감소 방법.
  14. 제 13 항에 있어서,
    상기 뱅크드 캐시의 하나 이상의 캐시 뱅크에서 공유 데이터와 비공유 데이터의 혼합을 감소 또는 제거하는 단계는, 공유 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 캐시 뱅크를 지정하는 단계, 및 공유 데이터에 대한 캐시 액세스를 상기 지정된 하나 이상의 캐시 뱅크로 지향시키는 단계를 포함하는, 뱅크드 캐시의 캐시 액세스 간섭 감소 방법.
  15. 제 13 항에 있어서,
    상기 뱅크드 캐시의 하나 이상의 캐시 뱅크에서 공유 데이터와 비공유 데이터의 혼합을 감소 또는 제거하는 단계는, 비공유 데이터를 보유하기 위해 상기 뱅크드 캐시의 하나 이상의 캐시 뱅크를 지정하는 단계, 및 비공유 데이터에 대한 캐시 액세스를 상기 지정된 하나 이상의 캐시 뱅크로 지향시키는 단계를 포함하는, 뱅크드 캐시의 캐시 액세스 간섭 감소 방법.
  16. 제 1 타입의 데이터에 대한 캐시 액세스를 상기 제 1 타입의 데이터를 보유하기 위해 지정되는 뱅크드 캐시의 하나 이상의 제 1 캐시 뱅크로 지향시킴으로써, 멀티프로세서 시스템의 캐시 스누프 트래픽에 관련된 공유 데이터 캐시 액세스와 액세싱 프로세서에 전용되는 데이터로 지향되는 비공유 데이터 캐시 액세스 사이의 간섭을 감소시키도록 구성된 액세스 제어 회로로서, 상기 제 1 타입의 데이터는 공유 데이터 및 비공유 데이터 중 하나의 데이터인, 상기 액세스 제어 회로를 포함하는, 뱅크드 캐시.
  17. 제 16 항에 있어서,
    상기 액세스 제어 회로는 제 2 타입의 데이터에 대한 캐시 액세스를 상기 뱅크드 캐시의 하나 이상의 제 2 캐시 뱅크로 지향시키도록 구성되고, 상기 제 2 타입의 데이터는 공유 데이터 및 비공유 데이터 중 다른 하나의 데이터인, 뱅크드 캐 시.
  18. 제 17 항에 있어서,
    상기 액세스 제어 회로는, 주어진 캐시 액세스와 관련하여 상기 뱅크드 캐시로 제공되는 액세스 타입 지시자 신호에 기초하여, 상기 주어진 캐시 액세스가 상기 제 1 타입의 데이터에 대한 캐시 액세스인지 또는 상기 제 2 타입의 데이터에 대한 캐시 액세스인지를 판정하도록 구성되는, 뱅크드 캐시.
  19. 제 16 항에 있어서,
    상기 액세스 제어 회로는, 캐시 액세스와 관련하여 수신한 액세스 타입 지시자 신호에 기초하여 뱅크 선택 기능을 구현하도록 구성되고, 상기 액세스 제어 회로는, 주어진 캐시 액세스가 상기 제 1 타입의 데이터에 대한 캐시 액세스라는 것을 상기 액세스 타입 지시자 신호가 나타내는 경우, 상기 주어진 캐시 액세스를 상기 하나 이상의 제 1 캐시 뱅크로 지향시키도록 구성되는, 뱅크드 캐시.
  20. 제 16 항에 있어서,
    상기 하나 이상의 제 1 캐시 뱅크 중 하나 이상은 상기 제 1 타입의 데이터를 보유하기 위한 전용으로 지정되는, 뱅크드 캐시.
  21. 제 16 항에 있어서,
    상기 하나 이상의 제 1 캐시 뱅크 중 하나 이상은 상기 제 1 타입의 데이터를 보유하기 위한 범용으로 지정되는, 뱅크드 캐시.
  22. 제 16 항에 있어서,
    상기 액세스 제어 회로는 상기 하나 이상의 제 1 캐시 뱅크의 지정의 변경을 허용하도록 구성가능한, 뱅크드 캐시.
KR1020077030698A 2005-06-02 2006-06-02 캐시 메모리 액세스를 관리하기 위한 방법 및 장치 KR100953854B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/144,207 2005-06-02
US11/144,207 US7353319B2 (en) 2005-06-02 2005-06-02 Method and apparatus for segregating shared and non-shared data in cache memory banks

Publications (2)

Publication Number Publication Date
KR20080014899A KR20080014899A (ko) 2008-02-14
KR100953854B1 true KR100953854B1 (ko) 2010-04-20

Family

ID=37027583

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077030698A KR100953854B1 (ko) 2005-06-02 2006-06-02 캐시 메모리 액세스를 관리하기 위한 방법 및 장치

Country Status (10)

Country Link
US (1) US7353319B2 (ko)
EP (1) EP1902370B1 (ko)
JP (1) JP4477688B2 (ko)
KR (1) KR100953854B1 (ko)
CN (1) CN101228512B (ko)
AT (1) ATE459920T1 (ko)
DE (1) DE602006012678D1 (ko)
IL (1) IL187807A0 (ko)
MX (1) MX2007015246A (ko)
WO (1) WO2006130809A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669614B2 (en) 2017-11-08 2023-06-06 Samsung Electronics Co., Ltd. Electronic device and control method therefor

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8661265B1 (en) 2006-06-29 2014-02-25 David Dunn Processor modifications to increase computer system security
US7925815B1 (en) * 2006-06-29 2011-04-12 David Dunn Modifications to increase computer system security
US8041854B2 (en) * 2007-09-28 2011-10-18 Intel Corporation Steering data units to a consumer
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
US20100017569A1 (en) * 2008-07-16 2010-01-21 Agere Systems Inc. Pcb including multiple chips sharing an off-chip memory, a method of accessing off-chip memory and a mcm utilizing fewer off-chip memories than chips
US8112585B2 (en) * 2009-04-30 2012-02-07 Netapp, Inc. Method and apparatus for dynamically switching cache policies
JP5121896B2 (ja) * 2010-08-11 2013-01-16 株式会社東芝 マルチコアプロセッサシステムおよびマルチコアプロセッサ
US20130159630A1 (en) * 2011-12-20 2013-06-20 Ati Technologies Ulc Selective cache for inter-operations in a processor-based environment
US9195658B2 (en) 2012-12-12 2015-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing direct attached cache and remote shared cache
CN103268321B (zh) * 2013-04-19 2016-04-27 中国建设银行股份有限公司 高并发交易数据处理方法和装置
US20150370707A1 (en) * 2014-06-24 2015-12-24 Qualcomm Incorporated Disunited shared-information and private-information caches
JP6558009B2 (ja) * 2015-03-23 2019-08-14 富士ゼロックス株式会社 転送装置、転送システムおよびプログラム
CN110688331B (zh) * 2018-07-05 2021-08-17 珠海全志科技股份有限公司 一种SoC芯片及读取数据的方法
GB2584440B (en) * 2019-06-03 2021-12-08 Advanced Risc Mach Ltd Cache arrangement for graphics processing systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073280A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Dual-L2 processor subsystem architecture for networking system
US20030196041A1 (en) * 1997-01-30 2003-10-16 Stmicroelectronics Limited Cache system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09506988A (ja) * 1993-09-30 1997-07-08 アップル コンピュータ,インコーポレイテッド コンピュータの仮想メモリにおける補助記憶の分散制御システム
US5854638A (en) * 1996-02-02 1998-12-29 Opti Inc. Unified memory architecture with parallel access by host and video controller
US5943686A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Multiple cache directories for non-arbitration concurrent accessing of a cache memory
US6029237A (en) * 1997-10-08 2000-02-22 Dell Usa, L.P. Method for simulating the presence of a diskette drive in a NetPC computer that contains only a hard disk drive
JP2003177958A (ja) * 2001-06-11 2003-06-27 Emblaze Semiconductor Ltd 特殊メモリデバイス

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196041A1 (en) * 1997-01-30 2003-10-16 Stmicroelectronics Limited Cache system
US20020073280A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Dual-L2 processor subsystem architecture for networking system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669614B2 (en) 2017-11-08 2023-06-06 Samsung Electronics Co., Ltd. Electronic device and control method therefor

Also Published As

Publication number Publication date
JP4477688B2 (ja) 2010-06-09
US7353319B2 (en) 2008-04-01
CN101228512A (zh) 2008-07-23
EP1902370A2 (en) 2008-03-26
EP1902370B1 (en) 2010-03-03
WO2006130809A2 (en) 2006-12-07
JP2008542923A (ja) 2008-11-27
DE602006012678D1 (de) 2010-04-15
CN101228512B (zh) 2011-05-11
KR20080014899A (ko) 2008-02-14
MX2007015246A (es) 2008-02-21
US20060277356A1 (en) 2006-12-07
IL187807A0 (en) 2008-08-07
ATE459920T1 (de) 2010-03-15
WO2006130809A3 (en) 2007-02-08

Similar Documents

Publication Publication Date Title
KR100953854B1 (ko) 캐시 메모리 액세스를 관리하기 위한 방법 및 장치
US9575901B2 (en) Programmable address-based write-through cache control
KR101569160B1 (ko) 캐시에서의 웨이 할당 및 웨이 로킹 방법
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US20210390052A1 (en) Memory Interface Having Multiple Snoop Processors
US11914514B2 (en) Data coherency manager with mapping between physical and virtual address spaces
US20080147987A1 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
GB2403560A (en) Memory bus within a coherent multi-processing system
JPH11272559A (ja) マルチレベル・メモリ・ハイアラ―キを含むデ―タ処理システムのためのキャッシュ・コヒ―レンシ・プロトコル
GB2403561A (en) Power control within a coherent multi-processor system
ZA200205198B (en) A cache line flush instruction and method, apparatus, and system for implementing the same.
US20060080511A1 (en) Enhanced bus transactions for efficient support of a remote cache directory copy
US20090024796A1 (en) High Performance Multilevel Cache Hierarchy
CN113853589A (zh) 高速缓冲存储器大小改变
US8332592B2 (en) Graphics processor with snoop filter
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US20090150619A1 (en) Coherent caching of local memory data
US6314498B1 (en) Multiprocessor system bus transaction for transferring exclusive-deallocate cache state to lower lever cache
JP2006244460A (ja) キャッシュメモリ及びプロセッサ
KR19990072313A (ko) 명령어및데이터를위한배회상태를가지는캐시코히어런시프로토콜
US20030145171A1 (en) Simplified cache hierarchy by using multiple tags and entries into a large subdivided array
CN113094297A (zh) 一种支持混合写策略的数据缓冲存储器装置
GB2589022A (en) Coherency manager

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
FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee