KR100869189B1 - 멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법 - Google Patents

멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법 Download PDF

Info

Publication number
KR100869189B1
KR100869189B1 KR1020060133729A KR20060133729A KR100869189B1 KR 100869189 B1 KR100869189 B1 KR 100869189B1 KR 1020060133729 A KR1020060133729 A KR 1020060133729A KR 20060133729 A KR20060133729 A KR 20060133729A KR 100869189 B1 KR100869189 B1 KR 100869189B1
Authority
KR
South Korea
Prior art keywords
cache
memory
state
level
coherence
Prior art date
Application number
KR1020060133729A
Other languages
English (en)
Other versions
KR20070069053A (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 KR20070069053A publication Critical patent/KR20070069053A/ko
Application granted granted Critical
Publication of KR100869189B1 publication Critical patent/KR100869189B1/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/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
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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

Landscapes

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

Abstract

본 발명의 일부 실시예들은 캐시 코히어런스의 장치, 시스템 및 방법을 제공한다. 예를 들어, 본 발명의 일 실시예에 따른 한 장치는 메모리 라인을 저장하는 메모리; 및 제1 컴포넌트와 관련해서 메모리 라인에 제1 캐시 코히어런스 상태를 할당하고 상이한 제2 컴포넌트와 관련해서 메모리 라인에 상이한 제2 캐시 코히어런스 상태를 할당하는 캐시 컨트롤러 로직을 포함한다.
Figure R1020060133729
메모리, 캐시, 캐시 컨트롤러 로직, 프로세싱 클러스터, 컴퓨팅 플랫폼

Description

멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법{DEVICE, SYSTEM AND METHOD OF MULTI-STATE CACHE COHERENCE SCHEME}
도 1은 본 발명의 일 실시예에 따른 멀티 상태(multi-state) 캐시 코히어런스 방식을 사용하는 컴퓨팅 플랫폼의 개략 블록도.
도 2는 본 발명의 일 실시예에 따른 다수의(multiple) 캐시 코히어런스 상태들을 관리하는 방법의 개략적인 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 컴퓨팅 플랫폼 101, 102 : 프로세싱 클러스터
111-114 : 프로세서 코어 121-124 : 레벨-1 캐시
131, 132 : 레벨-2 캐시 141-143 : 인터커넥트
150 : 메인 메모리 유닛 161 : 입력 유닛
162 : 출력 유닛 163 : 스토리지 유닛
컴퓨팅 플랫폼은 하나 이상의 메모리 유닛들, 예를 들어, 레벨-1 캐시 메모리 및 레벨-2 캐시 메모리에 접속될 수 있는 하나 이상의 프로세서 코어들을 포함 할 수 있다. 예를 들어, 제1 프로세서 코어는 제1 프라이비트 레벨-1 캐시 메모리에 접속될 수 있으며; 제2 프로세서 코어는 제2 프라이비트 레벨-1 캐시 메모리에 접속될 수 있으며; 제1 및 제2 레벨-1 캐시 메모리들은 공유 레벨-2 캐시 메모리에 접속될 수 있다.
메모리 유닛의 메모리 라인은 다수의 가능한 캐시 코히어런스 상태들, 예를 들어, 변경("M") 상태, 소유("O") 상태, 배타("E") 상태, 공유("S") 상태 또는 무효("I") 상태 중 하나의 단일 캐시 코히어런스 상태를 특정 시점에 가질 수 있다. 예를 들어, 메모리 라인은 메모리 라인이 프로세싱 유닛의 서브-유닛들 내에서 내부적으로 공유될 뿐만 아니라 컴퓨팅 플랫폼의 다른 컴포넌트들과 외부적으로 공유됨을 나타내는 공유 상태를 가질 수 있다.
본 발명은 멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법을 제공하기 위한 것이다.
본 발명과 관련된 청구 대상은 본 명세서의 결론부에 특별히 지시되어 있으며 뚜렷하게 청구되어 있다. 그러나, 본 발명은 첨부된 도면들을 읽을 때 이하의 상세한 설명을 참조해서 특징 및 장점과 함께 동작 구성 및 방법에 대해 가장 잘 이해될 수 있다.
편의상, 도면들에 도시된 요소들은 반드시 비율에 따라 그려진 것은 아님을 알 것이다. 예를 들어, 일부 소자들의 크기는 명료성을 위해 다른 소자들에 비해 확대될 수 있다. 또한, 참조 번호들은 대응 또는 유사 소자들을 나타내기 위해 도면들에서 반복될 수 있다.
이하의 상세한 설명에서, 다수의 특정 세부 사항들이 본 발명의 완전한 이해를 제공하기 위해 기재된다. 그러나, 본 기술 분야에 숙련된 자들은 이러한 특정 세부 사항들 없이 본 발명이 실시될 수 있음을 알 것이다. 다른 일례들에서, 공지된 방법들, 프로시져들, 컴포넌트들, 유닛들 및/또는 회로들은 본 발명을 애매하게 하지 않기 위해 상세히 기술되지 않았다.
본 발명의 실시예들은 다양한 애플리케이션들에서 사용될 수 있다. 본 발명의 실시예들이 이점에 있어서 제한되지 않더라도, 본 발명의 실시예들은 다수의 장치들, 예를 들어, 컴퓨터, 컴퓨팅 플랫폼, 퍼스널 컴퓨터, 데스크탑 컴퓨터, 모바일 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 퍼스널 디지털 어시스턴트(PDA) 디바이스, 태블릿 컴퓨터, 서버 컴퓨터, 네트워크, 무선 장치, 무선 스테이션, 무선 통신 장치 등과 관련하여 사용될 수 있다. 본 발명의 실시예들은 다양한 다른 장치들, 디바이스들, 시스템들 및/또는 네트워크들에서 사용될 수 있다.
본 발명의 실시예들이 이점에 있어서 제한되지 않더라도, 예를 들어, "프로세싱(processing)", "컴퓨팅(computing)", "계산(calculating)", "결정determining)", "설정(establishing)", "분석(analyzing)", "체크(checking)" 등과 같은 용어들을 사용하는 논의들은 컴퓨터, 컴퓨팅 플랫폼, 컴퓨팅 시스템 또는 다른 전자 컴퓨팅 디바이스의 동작(들) 및/또는 프로세스(들)와 관련될 수 있으며, 이들은 컴퓨터의 레지스터들 및/또는 메모리들 내의 물리적(예를 들어, 전자적) 양 들로 표현된 데이터를 컴퓨터의 레지스터들 및/또는 메모리들 또는 동작들 및/또는 프로세스들을 실행하는 명령들을 저장할 수 있는 다른 정보 기억 매체들 내의 물리적 양들로 유사하게 표현된 다른 데이터로 조작 및/또는 변형한다.
본 발명의 실시예들이 이점에 있어서 제한되지 않더라도, 용어 "복수(plurality 및/또는 a plularity)"는 예를 들어, "다수의(multiple)" 또는 "두 개 이상의(two or more)"를 포함할 수 있다. "복수(plurality 및/또는 a plularity)"라는 용어는 두 개 이상의 컴포넌트들, 디바이스들, 소자들, 파라미터들 등을 기술하는데 사용될 수 있다. 예를 들어, "복수의 프로세서들(a plurality of processors)"은 두 개 이상의 프로세서들을 포함할 수 있다.
본 발명의 실시예들이 이점에 있어서 제한되지 않더라도, 본 명세서에서 사용된 용어 "메모리 블록"은 예를 들어, 하나 이상의 메모리 라인들, 하나 이상의 메모리 주소들, 하나 이상의 메모리 영역들, 하나 이상의 메모리 뱅크들, 하나 이상의 메모리 서브-유닛들, 하나 이상의 메모리 레코드들 또는 필드들 등을 포함할 수 있다.
본 명세서에서 논의의 일부분들이 예시를 위해 예를 들어, 캐시 메모리, 레벨-1 캐시 및/또는 레벨-2 캐시와 같은 메모리 유닛들과 관련될 수도 있지만, 본 발명의 실시예들은 이점에 있어서 제한되지 않으며, 다양한 다른 메모리 유닛들 또는 스토리지 유닛들, 예를 들어, 비-캐시 메모리, 프로세서 또는 프로세싱 유닛의 내부 또는 외부에 있을 수 있는 메모리 유닛들 또는 스토리지 유닛들, 마더보드 또는 컴퓨팅 플랫폼의 내부 또는 외부에 있을 수 있는 메모리 유닛들 또는 스토리지 유닛들, 내부 메모리, 외부 메모리, 그래픽스 메모리, 온보드 메모리, 확장 메모리, 그래픽스 프로세싱 카드 또는 그래픽스 렌더링 카드와 관련되거나 그 내부에 포함된 메모리, 3차원(3D) 그래픽스 프로세싱 카드 또는 그래픽스 렌더링 카드와 관련되거나 그 내부에 포함된 메모리, 비디오 메모리, 임시 메모리, 버퍼, 레지스터, 누산기, 휘발성 메모리, 비휘발성 메모리, 프라이비트 캐시 또는 메모리, 비-프라이비트 캐시 또는 메모리, 공유 캐시, 숏텀(short-term) 메모리, 롱텀(long-term) 메모리, 기준 메모리, 중간 메모리, 데이터 캐시 또는 메모리, 명령 캐시 또는 메모리, 데이터/명령 캐시 또는 메모리, 하나 이상의 라인들 또는 라인 블록들을 갖는 메모리 또는 캐시, 하나 이상의 부분들 또는 뱅크들을 갖는 메모리 또는 캐시 등과 함께 사용될 수 있다.
본 명세서에서 설명의 일부분들이 예시를 위해 두개의 캐시 레벨들, 예를 들어, 레벨-1 캐시 및/또는 레벨-2 캐시를 갖는 프로세싱 유닛과 관련될 수도 있지만, 본 발명의 실시예들은 이점에 있어서 제한되지 않으며, 다른 개수의 캐시 레벨들, 예를 들어, 세 개 이상의 캐시 레벨들을 사용하는 프로세싱 유닛들 및/또는 컴퓨팅 플랫폼들과 관련해서 사용될 수 있다.
본 발명의 실시예들이 이점에 있어서 제한되지 않지만, 본 발명의 실시예들과 관련해서 사용될 수 있는 일부 캐시 메모리들 및/또는 메모리 유닛들은 예를 들어, RAM(Random Access Memory), 메인 RAM, 정적 RAM(SRAM), 동적 RAM(DRAM), BS-RAM(Burst Static RAM), SB-RAM(SyncBurst RAM), FPM-DRAM(Fast Page Mode DRAM), EDRAM(Enhanced DRAM) 및 EDO-RAM(Extended Data Output RAM), EDO-DRAM, BEDO- DRAM(Burst Extended Data Output DRAM), NV-RAM(Non-Volatile RAM), SD-RAM(Synchronous DRAM), JEDEC SD-RAM(Joint Electron Device Engineering Coucil SD-RAM), PC100 SD-RAM, DDR SD-RAM(Double Data Rate SD-RAM), ESD-RAM(Enhanced SD-RAM), DRD-RAM(Direct Rambus DRAM), SLD-RAM(SyncLink DRAM), F-RAM(Ferroelectric RAM), Video RAM(VRAM), SG-RAM(Synchronous Graphics RAM), 듀얼-포트 RAM, 윈도 RAM(W-RAM), 멀티뱅크 DRAM(MD-RAM) 등을 포함할 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티-상태 캐시 코히어런스 방식을 사용하는 컴퓨팅 플랫폼(100)을 개략적으로 도시한다. 컴퓨팅 플랫폼(100)은 예컨대, 입력 유닛(161), 출력 유닛(162), 스토리지 유닛(163) 및 메인 메모리 유닛(150)을 포함할 수 있다. 컴퓨팅 플랫폼(100)은 하나 이상의 프로세서들, 프로세싱 유닛들 또는 칩-레벨 멀티프로세싱(CMP) 유닛들, 예컨대, 프로세싱 클러스터들(101, 102)을 더 포함할 수 있다. 컴퓨팅 플랫폼(100)은 다른 적합한 하드웨어 컴포넌트들 및/또는 소프트웨어 컴포넌트들을 포함할 수 있다.
입력 유닛(161)은 예컨대, 키보드, 키패드, 마우스, 터치패드 또는 다른 적합한 포인팅 디바이스 또는 입력 디바이스를 포함할 수 있다. 출력 유닛(162)은 예컨대, 스크린, 모니터, 스피커, CRT(Cathode Ray Tube) 모니터 또는 디스플레이 유닛, LCD(Liquid Crystal Display) 모니터 또는 디스플레이 유닛, 또는 다른 적합한 모니터 또는 디스플레이 유닛을 포함할 수 있다.
스토리지 유닛(163)은 예를 들어, 하드 디스크 드라이브, 플로피 디스크 드라이브, 컴팩트 디스크(CD) 드라이브, CD-ROM 드라이브, 또는 다른 적합한 착탈 가 능 또는 착탈 불가능 스토리지 유닛들을 포함할 수 있다.
메모리 유닛(150)은 예컨대, RAM, ROM(Read Only Memory), DRAM, SD-RAM, 플래시 메모리, 휘발성 메모리, 비휘발성 메모리, 캐시 메모리, 버퍼, 숏텀 메모리 유닛, 롱텀 메모리 유닛 또는 다른 적합한 메모리 유닛들 또는 스토리지 유닛들을 포함할 수 있다.
프로세싱 클러스터(101)는 예컨대, CPU(Central Processing Unit), DSP(Digital Signal Processor), 마이크로프로세서, 컨트롤러, 칩, 마이크로칩, IC(Integrated Circuit) 또는 임의의 다른 적합한 다목적 또는 특정 프로세서 또는 컨트롤러를 포함할 수 있다. 예를 들어, 프로세싱 클러스터(101)는 하나 이상의 프로세서들 또는 프로세서 코어들, 예를 들어, 프로세서 코어들(111, 112)을 포함할 수 있다. 프로세서 코어(111)는 프라이비트 레벨-1 캐시 메모리(121)에 접속될 수 있으며, 프로세서 코어(112)는 프라이비트 레벨-1 캐시 메모리(122)에 접속될 수 있다. 레벨-1 캐시 메모리들(121, 122)은 선택적으로 로컬 인터커넥트(141)를 통해, 예를 들어, 버스 또는 지점간 인터커넥트를 통해 레벨-2 캐시 메모리(131)에 접속될 수 있다.
유사하게, 프로세싱 클러스터(102)는 예를 들어, CPU, DSP, 마이크로프로세서, 컨트롤러, 칩, 마이크로칩, IC 또는 임의의 다른 적합한 다목적 또는 특정 프로세서 또는 컨트롤러를 포함할 수 있다. 예를 들어, 프로세싱 클러스터(102)는 하나 이상의 프로세서들 또는 프로세서 코어들, 예를 들어, 프로세서 코어들(113, 114)을 포함할 수 있다. 프로세서 코어(113)는 프라이비트 레벨-1 캐시 메모 리(123)에 접속될 수 있으며, 프로세서 코어(114)는 프라이비트 레벨-1 캐시 메모리(124)에 접속될 수 있다. 레벨-1 캐시 메모리들(123, 124)은 선택적으로 로컬 인터커넥트(142), 예를 들어, 버스 또는 지점간(point-to-point) 인터커넥트를 통해 레벨-2 캐시 메모리(132)에 접속될 수 있다.
프로세싱 클러스터(101)의 레벨-2 캐시 메모리(131) 및 프로세싱 클러스터(102)의 레벨-2 캐시 메모리(132)는 선택적으로 글로벌 인터커넥트(143), 예를 들어, 글로벌 버스, 시스템 버스 또는 지점간 인터커넥트 등을 통해 메인 메모리 유닛(150)에 접속될 수 있다.
컴퓨팅 플랫폼(100)은 하나 이상의 캐시 제어 로직(CCL; Cache Control Logic) 컴포넌트들 또는 모듈들, 예를 들어, 프로세싱 클러스터(101)와 관련되거나 그 내부에 포함된 CCL(191), 프로세싱 클러스터(102)와 관련되거나 그 내부에 포함된 CCL(192), 메인 메모리 유닛(150) 및/또는 프로세싱 클러스터(101-102) 외부에 있는 다른 컴포넌트들과 관련된 CCL(193) 등을 선택적으로 포함할 수 있다. 일부 실시예들에서, CCL들(191, 192 및/또는 193)은 하나 이상의 하드웨어 컴포넌트들 및/또는 소프트웨어 컴포넌트들을 사용하거나, 전용 유닛을 사용하거나, 컴퓨팅 플랫폼(100)의 하나 이상의 컴포넌트들의 서브-유닛으로서 사용하거나, 드라이버를 사용하거나, 범용 또는 전용 컨트롤러 또는 프로세서를 사용하거나, IC를 사용하거나 하는 등으로 구현될 수 있다. 일부 실시예들에서, CCL들(191, 192 및/또는 193)의 기능은 디렉토리-기반 캐시 로직, 스누핑(snooping)-기반 캐시 로직 등을 사용해서 구현될 수 있다.
레벨-1 캐시 메모리들(121, 122, 123, 124), 레벨-2 캐시 메모리들(131, 132) 및/또는 메인 메모리 유닛(150)은 CCS(Cache Coherency State)의 하나 이상의 식별자들을 포함하거나 상기 식별자들과 동작에 있어 연관될 수 있다. CCS 식별자(들)는 하나 이상의 메모리 블록들과 관련되거나 대응하는 CCS를 식별하는 데이터를 포함할 수 있다. 일부 실시예들에서, CCS 식별자(들)는 메모리 유닛, 메모리 매니저, 메모리 컨트롤러, 회로 또는 서브-회로, 로직 컨트롤러, 하나 이상의 포인터들, 하나 이상의 테이블들, 하나 이상의 데이터 아이템들 등을 선택적으로 포함하거나 그 일부로 구현될 수 있다.
예를 들어, 레벨-1 캐시 메모리들(121-124)은 각각 CCS 식별자들(171-174)을 포함하거나 연관될 수 있으며; 레벨-2 캐시 메모리들(131-132)은 각각 CCS 식별자들(181-182)을 포함하거나 연관될 수 있고; 메인 메모리 유닛(150)은 CCS 식별자(151)를 포함하거나 연관될 수 있다.
본 발명의 일부 실시예들에 따라, 메모리 블록은 컴퓨팅 플랫폼(100)의 하나 이상의 다른 컴포넌트들에 대한 다수의, 예컨대 상이한 CCS들을 가질 수 있다. 예를 들어, 메모리 블록은 컴퓨팅 플랫폼(100)의 제1 컴포넌트에 대한 제1 CCS 및 컴퓨팅 플랫폼(100)의 상이한 제2 컴포넌트에 대한 상이한 제2 CCS를 가질 수 있다. 일부 실시예들에서, 예를 들어, 메모리 블록은 예를 들어, 변경(modified)("M") 상태, 공유("S") 상태, 배타("E") 상태, 또는 무효(invalid)("I") 상태와 같은 다수의 CCS 및/또는 컴퓨팅 플랫폼(100)의 다양한 컴포넌트들에 대한 다른 적합한 CCS 값들을 실질적으로 동시에 가질 수 있다. 일부 실시예들에서, 예를 들어, CCL 들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들은 컴퓨팅 플랫폼(100)의 메모리 블록의 CCS를 설정 또는 변경하는데 사용될 수 있다.
예를 들어, 레벨-2 캐시(131)의 CCS 식별자(181)는 레벨-2 캐시(131)의 메모리 블록이 메인 메모리 유닛(150) 및/또는 프로세싱 클러스터(102)를 향한 또는 그에 대한 "변경" CCS를 가짐을 나타내는 제1 표시; 및 레벨-2 캐시(131)의 메모리 블록이 레벨-1 캐시 메모리들(121-122) 및/또는 프로세서 코어들(111-112)를 향한 또는 그에 대한 "공유" CCS를 더 가짐을 나타내는 제2 표시를 실질적으로 동시에 포함할 수 있다. 다수의 CCS들은 예를 들어, CCL들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들로 설정 및/또는 변경될 수 있다.
일부 실시예들에서, 예를 들어, 컴퓨팅 플랫폼(100)의 하나 이상의 CCS 식별자들은 다수의 실질적으로 동시의 CCS들 표시들을 포함할 수도 있는 반면, 컴퓨팅 플랫폼(100)의 하나 이상의 다른 CCS 식별자들은 단일한 CCS들의 표시들을 포함할 수도 있다. 예를 들어, 레벨-2 캐시 메모리(131)는 두개의 CCS, 예를 들어, 메인 메모리(150)에 대한 "변경" CCS 및 레벨-1 캐시들(121-122)에 대한 "공유" CCS를 실질적으로 동시에 가질 수도 있는 반면; 레벨-1 캐시 메모리(111)는 단일 CCS, 예를 들어, 레벨-2 캐시(131) 및 프로세서 코어(111) 둘 모두에 대한 "공유" CCS를 가질 수 있으며, 메인 메모리 유닛(150)은 단일 CCS, 예를 들어, "변경" CCS를 가질 수 있다. 다양한 CCS들이 예를 들어, CCL들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들로 설정 및/또는 변경될 수 있다.
본 발명의 일부 실시예들에 따라, 컴퓨팅 플랫폼(100)의 메모리 컴포넌트의 메모리 블록은, 해당 메모리 컴포넌트와 프로세서 코어 간에 연결된 컴포넌트(들)에 대한 제1 CCS{즉, 프로세서 코어 방향의 "프로세서 코어를 향한" 제1 CCS, "다운링크" CCS, "내부" CCS, 또는 하향(downward-looking) CCS}; 및 해당 메모리 컴포넌트와 프로세서 코어 간에 연결되지 않은 컴포넌트(들)에 대한 상이한 제2 CCS{즉, 프로세서 코어 방향과 실질적으로 반대 방향의 "프로세서 코어로부터의" 상이한 제2 CCS, "업링크" CCS, "외부" CCS 또는 상향(upward-looking) CCS}를 실질적으로 동시에 가질 수 있다. 예를 들어, 레벨-2 캐시 메모리(131)는 제1 CCS, 예를 들어, 프로세서 코어들(111-112)을 향한 "공유" CCS; 및 상이한 제2 CCS, 예를 들어, 프로세서 코어들(111-112)로부터의 "변경" CCS를 실질적으로 동시에 가질 수 있다. 다수의 또는 다양한 CCS들은 예를 들어, CCL들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들에 의해 선택적으로 설정 및/또는 변경될 수 있다.
일부 실시예들에서, 예를 들어, 컴퓨팅 플랫폼(100)의 메모리 컴포넌트의 메모리 블록은 제1 계층, 예를 들어, 메모리 컴포넌트의 계층 보다 높은 계층을 갖는 컴포넌트(들), "부모" 컴포넌트 또는 보다 높은 브랜치에 위치한 컴포넌트에 대한 제1 CCS; 및 상이한 제2 계층, 예를 들어, 메모리 컴포넌트의 계층 보다 낮은 계층을 갖는 컴포넌트(들), "자식" 컴포넌트 또는 보다 낮은 브랜치에 위치한 컴포넌트에 대한 상이한 제2 CCS를 실질적으로 동시에 가질 수 있다. 다수의 또는 다양한 CCS들은 예를 들어, CCL들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들에 의해 선택적으로 설정 및/또는 변경될 수 있다.
본 발명의 일부 실시예들에 따라, 컴퓨팅 플랫폼(100)의 메모리 컴포넌트의 메모리 블록은 제1 로컬 CCS 및 제2 글로벌 CCS를 실질적으로 동시에 가질 수 있다. 로컬 CCS는 예를 들어, 메모리 컴포넌트 근처에 위치한 컴포넌트들에 대한 것이거나, 메모리 컴포넌트의 동일한 프로세싱 클러스터에 위치한 컴포넌트들에 대한 것이거나, 메모리 컴포넌트와의 다이렉트 커넥션 또는 로컬 커넥션을 갖는 컴포넌트들에 대한 것이거나, 버스 또는 지점간 인터커넥트를 사용하지 않고 메모리 컴포넌트에 접속된 컴포넌트들에 대한 것 등일 수 있다. 글로벌 CCS는 예를 들어, 메모리 컴포넌트로부터 별개의 카드 또는 다이에 위치한 컴포넌트들에 대한 것이거나, 메모리 컴포넌트로부터 별개의 칩 또는 물리적 유닛에 위치한 컴포넌트들에 대한 것이거나, 버스 또는 지점간 인터커넥트를 사용해서 메모리 컴포넌트에 접속된 컴포넌트들에 대한 것 등일 수 있다. 예를 들어, 레벨-2 캐시 메모리(131)는 제1 로컬 CCS, 예를 들어, 프로세서 코어들(111-112) 또는 로컬 인터커넥트(141)를 향한 또는 이와 관련된 "공유" CCS; 및 제2 글로벌 CCS, 예를 들어, 글로벌 인터커넥트(143) 또는 프로세싱 클러스터(102)를 향한 또는 이와 관련된 "변경" CCS를 실질적으로 동시에 가질 수 있다. 다수의 또는 다양한 CCS들은 예를 들어, CCL들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들로 선택적으로 설정 및/또는 변경될 수 있다.
일 실시예에서, 예를 들어, 레벨-1 캐시들(121-122)의 메모리 라인은 예를 들어, 메모리 라인이 프로세서 코어들(111-112) 간에 판독-공유될 수 있다는 "공유" CCS를 가질 수 있다. 레벨-2 캐시(131)의 대응 메모리 라인은 "공유" 하향 CCS를 가질 수 있으며, "변경" 상향 CCS를 더 가질 수 있다. 메인 메모리 유닛(150)의 디렉토리 또는 CCS 식별자(151)는 대응 메모리 라인이 "변경" CCS를 가지며 프로세싱 클러스터(101)에 의해 "소유"됨을 나타낼 수 있다. 컴퓨팅 플랫폼의 다른 메모리 유닛들, 예를 들어, 프로세싱 클러스터(102)의 레벨-2 캐시(132) 및/또는 프로세싱 클러스터(102)의 레벨-1 캐시들(123-124)은 대응 메모리 라인이 "무효" CCS를 가짐을 나타내는 CCS 식별자를 포함하거나 그와 연관될 수 있다. 본 실시예에서, 예를 들어, 메인 메모리 유닛(150) 및/또는 프로세싱 클러스터(102)의 컴포넌트들은 레벨-2 캐시(131)가 상이한 CCS를 가질 수도 있는 가능성, 예를 들어, 프로세서 코어들(111-112) 간에 판독-공유될 수 있다는 가능성과 무관하게, 레벨-2 캐시(131)를 "변경" 상태를 갖는 캐시로 간주한다. 예를 들어, 프로세싱 클러스터(102)의 프로세서 코어(113)는 "무효" CCS를 갖는 레벨-2 캐시의 메모리 라인에 액세스할 것을 요청할 수 있다; 이에 응답해서, 프로세싱 클러스터(101)의 프라이비트 레벨-1 캐시들(121-122)의 대응 복사본들이 무효화될 수 있으며, 요청된 메모리 라인이 프로세싱 클러스터(102)의 프로세서 코어(113)에 전달될 수 있다.
일부 실시예들은 하나 이상의 캐시 코히어런스 프로토콜들, 예를 들어, 변경-소유-배타-공유-무효(MOESI; Modified-Owned-Exclusive-Shared-Invalid) 프로토콜, 변경-배타-공유-무효(MESI) 프로토콜, 변경-공유-무효(MSI) 프로토콜 등과 관련해서 사용될 수 있다. 일부 실시예들에서, 예를 들어, 메모리 컴포넌트는 제1 컴포넌트 세트, 예를 들어, 로컬 컴포넌트들, 보다 낮은 브랜치 또는 계층의 컴포 넌트들, 제1 레벨의 컴포넌트들 등과 통신하기 위해 제1 캐시 코히어런스 프로토콜을 사용할 수 있으며; 제2 컴포넌트 세트, 예를 들어, 글로벌 컴포넌트들, 보다 높은 브랜치 또는 계층의 컴포넌트들, 제2 레벨의 컴포넌트들 등과 통신하기 위해 상이한 제2 캐시 코히어런스 프로토콜을 실질적으로 동시에 사용할 수 있다. 또한, 일부 실시예들에서, 다수의 예를 들어, 상이한 캐시 코히어런스 프로토콜들은 동일한 레벨에 있을 수 있는 다수의 브랜치들에서 사용될 수 있다.
선택적으로, 예를 들어, 본 발명의 실시예들에 따른 캐시 코히어런스 아키텍처를 구현하기 위해, 하나 이상의 캐시 코히어런스 규칙들 또는 캐시 코히어런스 정의들이 사용될 수 있다. 예를 들어, 캐시 코히어런스 규칙은, 메모리 라인이 프로세싱 클러스터의 실질적으로 모든 캐시 메모리들, 예를 들어, 프로세싱 클러스터(101)의 캐시들(121, 122, 131)에서 "공유" CCS 또는 "무효" CCS를 갖는 경우 메모리 라인이 글로벌 "공유" CCS를 가질 수 있음을 나타낼 수 있다. 예를 들어, 다른 캐시 코히어런스 규칙은, 메모리 라인이 레벨-2 캐시(131)에서 "배타" 또는 "변경" CCS를 갖고 레벨-1 캐시들(121-122)에서 "공유" 또는 "무효" CCS를 더 갖는 경우 메모리 라인이 로컬 "공유" CCS를 가질 수 있음을 나타낼 수 있다. 예를 들어, 또 다른 캐시 코히어런스 규칙은, 캐시들(예를 들어, 캐시들(121, 122, 131)) 중 적어도 하나의 캐시가 메모리 라인이 "배타" 또는 "변경" CCS를 갖는 것으로 식별하는 경우 메모리 라인이 프로세싱 클러스터(101)에 의해 배타적으로 소유될 수 있음을 나타낼 수 있다. 예를 들어, 또 다른 캐시 코히어런스 규칙은, 보다 높은 레벨 캐시의 대응 메모리 라인이 "배타" 또는 "변경" CCS를 갖는 경우, 제1 메모리 컴포넌트의 메모리 라인이 내부적으로만 또는 국부적으로만, 예를 들어, 하향으로 프로세서 코어를 향한 "공유" CCS를 가지고; 반면 보다 높은 레벨 캐시의 대응 메모리 라인이 "공유" CCS를 갖는 경우, 메모리 라인이 예를 들어, 프로세서 코어로부터 멀어지는 상향의 글로벌 또는 외부 "공유" CCS를 가짐을 나타낼 수도 있다. 다른 적합한 규칙들 또는 정의들이 본 발명의 실시예들에 따라 사용될 수 있다. 일부 실시예들에서, 선택적으로, 하나 이상의 규칙들 또는 정의들은 예를 들어, CCL들(191, 192 및/또는 193) 또는 컴퓨팅 플랫폼(100)의 다른 컴포넌트들에 의해 설정 및/또는 변경될 수 있다.
일부 실시예들에서, 레벨-2 캐시(131)의 메모리 라인은 레벨-1 캐시들(121-122)를 향한 또는 그에 대한 "공유" 내부 CCS, 및 메인 메모리 유닛(150)과 프로세싱 클러스터(101)를 향한 또는 그에 대한 "배타" 외부 CCS를 실질적으로 동시에 가질 수 있다. 이러한 아키텍처는 예를 들어, 컴퓨팅 플랫폼(100)의 모든 컴포넌트들을 향한 또는 그에 대한 "공유" 단일 CCS를 대체할 수 있다. 일부 실시예들에서, 예를 들어, 상기 아키텍처는 프로세싱 클러스터(101) 외부에 있는 컴포넌트들에게 RFO(Request For Ownership) 표시를 송신할 필요를 제거할 수 있으며, 상기 외부 컴포넌트들로부터 그 대응 메모리 라인(들)이 무효화됨을 나타내는 응답들을 수신할 필요를 제거할 수 있다. 예를 들어, 일부 실시예들은 사용되는 대역폭(예를 들어, 인터커넥터(143)의 대역폭)을 감소시키고, 성능을 향상시키며, 내부 캐시들, 예를 들어, 레벨-1 캐시들(121-122) 간의 내부 고속 RFO를 가능케 할 수 있다.
본 발명의 일부 실시예들은 예를 들어, 디렉토리-기반 캐시 코히어런스 프로 토콜들 및/또는 스누핑-기반 캐시 코히어런스 프로토콜들과 함께 사용될 수 있다. 예를 들어, 일부 실시예들에서, 선택적으로, 프로세싱 코어(111)는 레벨-2 캐시(131) 액세스와 실질적으로 동시에 프로세싱 코어(112)에 대한 "스누핑" 동작들을 실행할 수 있다.
예를 들어, 프로세싱 코어(111)는 레벨-2 캐시(131)에 액세스할 수도 있고, 코히어런스 요청, 예를 들어, 디렉토리-기반 코히어런스 요청 또는 스누핑-기반 코히어런스 요청을 프로세싱 코어(112)에 송신할 수 있다. 코히어런스 요청은 예를 들어, 프로세서 코어(111)가 레벨-2 캐시(131)에 대해 실행하는 동작에 대한 정보(예를 들어, "프로세서(111)가 메모리 라인(345)에서 판독 동작을 실행한다"는 정보 또는 "프로세서(111)가 메모리 라인(567)에서 기록 동작을 실행한다"는 정보); 및/또는 프로세서(112)가 실행하도록 요청받거나 실행할 필요가 있는 동작들에 대한 정보(예를 들어, "프로세서(112)는 메모리 라인(789)으로부터 판독은 할 수 있으나 메모리 라인(789)에 기록은 할 수 없다"는 정보 또는 "프로세서(112)는 메모리 라인(456)을 무효화할 필요가 있다"는 정보)를 포함할 수 있다.
일 실시예에서, 코히어런스 요청은 예를 들어, 프로세서 코어(111)에 의한 메모리 라인의 액세스에 관한 하나 이상의 속성들, 타입들, 특징들 및/또는 속성들을 포함할 수 있다. 일부 실시예들에서, 프로세서 코어(111)는 프로세서(111)가 하나 이상의 다른 프로세서들에게 송신하는 코히어런스 요청에 대한 응답을 대기할 필요가 없으며, 코히어런스 요청 송신과 실질적으로 함께 또는 코히어런스 요청 송신 직후에, 보고된 동작을 실행할 수 있다. 수신된 코히어런스 요청에 응답해서, 프로세서 코어(112)는 프로세서(111)에 코히어런스 응답(예를 들어, 디렉토리-기반 또는 "스누핑"-기반)을 송신하거나, 수신된 코히어런스 요청에 기초하여 동작을 변경하거나, 수신된 코히어런스 요청에 의해 지시된 하나 이상의 동작들 또는 명령들을 실행하거나, 하나 이상의 메모리 라인들을 무효화할 수 있다. 선택적으로, CCL들(191, 192 및/또는 193)은 캐시 코히어런스 요청들 및/또는 캐시 코히어런스 응답들을 관리, 제어, 저장, 추적 및/또는 전달하는데 사용될 수 있다.
일부 실시예들에서, 메모리 라인을 하나 보다 많은 CCS와 연관시키는 것이 다양한 적합한 방법들, 예를 들어, 메모리 라인이 두개의 또는 다수의 CCS들을 가짐을 나타내는 CCS 식별자를 반드시 사용하지는 않는 방식으로 수행될 수 있다. 예를 들어, 일부 실시예들에서, 제1 메모리 유닛{예를 들어, 레벨-1 캐시 메모리(121)}의 메모리 라인은 제1 단일(single) CCS를 가질 수도 있으며, 제2 메모리 유닛{예를 들어, 레벨-2 캐시 메모리(131)}의 메모리 라인은 라인당 제2 단일 CCS를 가질 수 있으며, 최종 또는 결합 CCS는 제1 CCS 및 제2 CCS의 조합에 기초하여 또는 제1 CCS 및 제2 CCS를 고려한 계산에 기초하여 외부 컴포넌트들(예를 들어, 메인 메모리 유닛(150))에 보고될 수 있다. 다른 실시예들에서, 스누핑-기반 질의들, 응답들, 명령들 및/또는 데이터 아이템들이 사용될 수 있다.
일부 실시예들에서, 선택적으로, 메모리 라인의 다수의 CCS들은 일치하거나(coincide) 오버랩될 수 있다. 예를 들어, 메모리 라인은 제1 컴포넌트에 관한 제1 CCS, 및 제2 컴포넌트에 관한 제2 CCS를 가질 수 있으며; 일부 경우, 제1 CCS는 제2 CCS와 유사하거나 실질적으로 동일할 수 있으며, 또는 제1 및 제2 컴포넌트 들에 관한 단일 CCS가 제1 및 제2 개별 CCS들을 대체할 수 있다.
도 2는 본 발명의 일 실시예에 따른 다수의 캐시 코히어런스 상태들을 관리하는 방법의 개략적인 흐름도이다. 본 방법의 동작들은 예를 들어, 도 1의 컴퓨팅 플랫폼(100)에 의해, 또는 그 컴포넌트들에 의해, 도 1의 CCL들(191, 192 및/또는 193)에 의해 및/또는 다른 적합한 컴퓨터들, 프로세서들, 컴포넌트들, 디바이스들 및/또는 시스템들에 의해 구현될 수 있다.
박스(210)에 도시된 바와 같이, 본 방법은 예를 들어, 메모리 유닛의 메모리 라인을 컴퓨팅 플랫폼의 제1 컴포넌트 또는 컴포넌트 세트를 향한 또는 그에 대한 제1 CCS, 및 컴퓨팅 플랫폼의 상이한 제2 컴포넌트 또는 컴포넌트 세트를 향한 또는 그에 대한 상이한 제2 CCS와 예컨대, 실질적으로 동시에 연관시키는 단계를 선택적으로 포함할 수 있다. 선택적으로, 이는 도 1의 CCL들(191, 192 및/또는 193)을 사용해서, 디렉토리-기반 캐시 코히어런스 프로토콜을 사용해서, 스누핑-기반 캐시 코히어런스 프로토콜을 사용해서, 메모리 라인들 또는 메모리 블록들과 관련된 하나 이상의 CCS 식별자들 등을 사용해서 실행될 수 있다.
박스(220)에 도시된 바와 같이, 본 방법은 예를 들어, 메모리 라인 액세스와 함께 컴퓨팅 플랫폼의 프로세서들 간에 코히어런스 요청을 송신하는 것을 선택적으로 포함할 수 있다. 이는 예를 들어, 제1 프로세서가 메모리 라인에 대해 실행하거나 막 실행하려는 동작에 대한 표현, 제1 프로세서가 메모리 라인에 대해 실행하거나 막 실행하려는 액세스 타입에 대한 표현, 제2 프로세서가 실행하도록 요청받은 동작의 표현, 제2 프로세서가 실행하도록 요청받은 CCS 변경에 대한 표현 등을 갖는 코히어런스 요청을 송신하는 것을 포함할 수 있다.
박스(230)에 도시된 바와 같이, 본 방법은 예를 들어, 메모리 라인의 제1 CCS 및 제2 CCS 중 적어도 하나를 변경하는 것을 선택적으로 포함할 수 있다. 일 실시예에서, 예를 들어, 제1 컴포넌트를 향한 또는 그에 대한 메모리 라인과 연관된 제1 CCS는 변경될 수 있는 반면, 제2 컴포넌트를 향한 또는 그에 대한 메모리 라인과 연관된 제2 CCS는 실질적으로 동시에 예컨대, 변경되지 않은 상태로 유지될 수 있다. 선택적으로, 이는 도 1의 CCL들(191, 192 및/또는 193)을 사용해서, 디렉토리-기반 캐시 코히어런스 프로토콜을 사용해서, 스누핑-기반 캐시 코히어런스 프로토콜을 사용해서, 메모리 라인들 또는 메모리 블록들과 관련된 하나 이상의 CCS 식별자들 등을 사용해서 실행될 수 있다.
다른 적합한 동작들 또는 동작 세트들이 본 발명의 실시예에 따라 사용될 수 있다.
본 명세서에서 설명의 일부분들이 설명을 목적으로 두개의 각각의 컴포넌트들 또는 컴포넌트 세트들에 대한 두개의 상이한 CCS들을 갖는 메모리 블록과 관련될 수도 있지만, 본 발명의 실시예들은 이점에 있어서 제한되지 않는다. 예를 들어, 일부 실시예들에서, 메모리 블록은 다양한 컴포넌트들 또는 컴포넌트 세트들에 대한 두 개 보다 많은(예를 들어, 3개, 4개, 5개 등등) 상이한 CCS들을 실질적으로 동시에 가질 수 있다. 본 발명의 일부 실시예들에 따라, 2 상태 캐시 코히어런스 방식, 3 상태 캐시 코히어런스 방식, 4 상태 캐시 코히어런스 방식, 또는 다른 다 상태 캐시 코히어런스 방식이 사용될 수 있다.
본 발명의 일부 실시예들은 특정 애플리케이션들을 위해 또는 특정 설계 요구 사항들에 따라 적합할 수도 있는 소프트웨어에 의해, 하드웨어에 의해, 또는 소프트웨어 및/또는 하드웨어의 임의의 결합에 의해 구현될 수 있다. 본 발명의 실시예들은 서로 개별적일 수도 있고 또는 전체적으로 또는 부분적으로 함께 결합될 수도 있는 유닛들 및/또는 서브-유닛들을 포함할 수도 있으며, 특정 다목적 또는 범용 프로세서들 또는 컨트롤러들 또는 본 기술 분야에 공지된 디바이스들을 사용해서 구현될 수 있다. 본 발명의 일부 실시예들은 데이터의 임시 저장 또는 장기간 저장을 위해 또는 특정 실시예의 동작을 용이하게 하기 위해 버퍼들, 레지스터들, 스택들, 스토리지 유닛들 및/또는 메모리 유닛들을 포함할 수 있다.
본 발명의 일부 실시예들은 컴퓨터에 의해, 예컨대, 도 1의 프로세싱 클러스터들(101, 102)이나, 다른 적합한 컴퓨터에 의해 실행되는 경우, 컴퓨터로 하여금 본 발명의 실시예들에 따른 방법 및/또는 동작들을 실행하게 하는 명령 또는 명령 세트을 저장할 수 있는 컴퓨터 판독 가능 매체 또는 물품을 사용해서 구현될 수 있다. 상기 컴퓨터는 예를 들어, 임의의 적합한 프로세싱 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 디바이스, 프로세싱 디바이스, 컴퓨팅 시스템, 프로세싱 시스템, 컴퓨터, 프로세서 등을 포함할 수도 있으며, 하드웨어 및/또는 소프트웨어의 임의의 적합한 결합을 사용해서 구현될 수 있다. 컴퓨터 판독 가능 매체 또는 물품은 예를 들어, 임의의 적합한 타입의 메모리 유닛(예를 들어, 메모리 유닛(150)), 메모리 디바이스, 메모리 아티클, 메모리 매체, 스토리지 디바이스, 스토리지 아티클, 스토리지 매체 및/또는 스토리지 유닛, 예를 들어, 메모리, 착탈식 또는 비-착탈식 매체, 소 거 가능 또는 소거 불가능 매체, 기록 가능 또는 재기록 가능 매체, 디지털 또는 아날로그 매체, 하드 디스크, 플로피 디스크, CD-ROM, CD-R(Compact Disk Recordable), CD-RW(Compact Disk Re-Writable), 광 디스크, 자기 매체, 다양한 타입들의 DVD(Digital Versatile Disk), 테이프, 카세트 등을 포함할 수 있다. 명령들은 임의의 적합한 타입의 코드, 예를 들어, 소스 코드, 컴파일 코드, 해석 코드, 실행 가능 코드, 정적 코드, 동적 코드 등을 포함할 수도 있으며, 임의의 적합한 하이-레벨, 로우-레벨, 객체 지향, 비쥬얼, 컴파일 및/또는 해석 프로그래밍 언어, 예를 들어, C, C++, 자바, BASIC, 파스칼, 포트란, 코볼, 어셈블리 언어, 기계 코드 등을 사용해서 구현될 수 있다.
본 발명의 특정 특징들이 본 명세서에서 설명되고 기술되었지만, 다수의 변경, 치환, 변화 및 동등물이 발생할 수도 있음을 본 기술 분야에 숙련된 자들은 알 것이다. 따라서, 첨부된 청구항들은 본 발명의 원리 내에 속한 모든 변경들 및 변화들을 커버하도록 의도됨을 알 것이다.
본 발명에 의해 종래 기술의 단점들이 극복된다.

Claims (20)

  1. 제1 코히어런스 상태(coherency state)와 연관된 캐시 라인을 저장하기 위한 적어도 하나의 제1 레벨 캐시;
    제2 코히어런스 상태와 연관된 상기 캐시 라인을 저장하기 위한 적어도 하나의 제2 레벨 캐시 - 상기 제1 및 제2 코히어런스 상태는 상이함 - ; 및
    상기 제1 및 제2 코이허런스 상태 사이의 관계에 따라 상기 캐시 라인의 제3 코히어런스 상태를 결정하기 위한 로직 - 상기 캐시 라인의 상기 제3 상태는 상기 캐시 라인의 상기 제1 및 제2 코히어런스 상태와 상이함 -
    을 포함하는 장치.
  2. 제1항에 있어서,
    상기 캐시 라인이 프로세싱 클러스터의 모든 캐시들에서 공유 또는 무효 상태를 가지는 경우, 상기 로직은 상기 캐시 라인에 글로벌 공유(globally shared) 상태를 할당하는 장치.
  3. 제1항에 있어서,
    상기 캐시 라인이 프로세싱 클러스터의 모든 제1 레벨 캐시들에서 배타 또는 변경 상태를 가지는 경우, 상기 로직은 상기 캐시 라인에 로컬 공유 상태(locally shared)를 할당하는 장치.
  4. 제1항에 있어서,
    상기 캐시 라인이 프로세싱 클러스터의 적어도 하나의 캐시에서 배타 또는 변경 상태를 가지는 경우, 상기 로직은 상기 캐시 라인에 배타 상태를 할당하는 장치.
  5. 제1항에 있어서,
    상기 적어도 하나의 제1 레벨 캐시 및 상기 적어도 하나의 제2 레벨 캐시에 저장된 데이터는 프로세서 내의 복수의 프로세서 코어에 의해 액세스될 수 있는 장치.
  6. 제1항에 있어서,
    상기 적어도 하나의 제1 레벨 캐시는 프로세서 내에 배치되는 장치.
  7. 제1항에 있어서,
    제1 프로세서 코어; 및
    제2 프로세서 코어를 포함하고,
    상기 제1 프로세서 코어는, 상기 적어도 하나의 제1 레벨 캐시에 저장된 상기 캐시 라인에 액세스하고, 상기 적어도 하나의 제1 레벨 캐시에 저장된 상기 캐시 라인에 대한 상기 제1 프로세서 코어의 액세스 속성을 나타내는 코히어런스 요청을 상기 제2 프로세서 코어로 송신하는 장치.
  8. 제1 레벨 캐시에 저장된 캐시 라인에 제1 코히어런스 상태를 할당하는 단계;
    제2 레벨 캐시에 저장된 상기 캐시 라인에 제2 코히어런스 상태를 할당하는 단계 - 상기 제1 및 제2 코히어런스 상태는 상이함 - ; 및
    상기 제1 및 제2 코히어런스 상태 사이의 관계에 따라 상기 캐시 라인의 제3 코히어런스 상태를 결정하는 단계 - 상기 캐시 라인의 상기 제3 상태는 상기 캐시 라인의 상기 제1 및 제2 코히어런스 상태와 상이함 -
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 캐시 라인이 프로세싱 클러스터의 모든 캐시들에서 공유 또는 무효 상태를 가지는 경우, 상기 캐시 라인에 글로벌 공유 상태를 할당하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서,
    상기 캐시 라인이 프로세싱 클러스터의 모든 제1 레벨 캐시들에서 배타 또는 변경 상태를 가지는 경우, 상기 캐시 라인에 로컬 공유 상태를 할당하는 단계를 더 포함하는 방법.
  11. 제8항에 있어서,
    상기 캐시 라인이 프로세싱 클러스터의 적어도 하나의 캐시에서 배타 또는 변경 상태를 가지는 경우, 상기 캐시 라인에 배타 상태를 할당하는 단계를 더 포함하는 방법.
  12. 제8항에 있어서,
    상기 제1 레벨 캐시 및 상기 제2 레벨 캐시에 저장된 데이터는 프로세서 내의 복수의 프로세서 코어에 의해 액세스될 수 있는 방법.
  13. 제8항에 있어서,
    상기 적어도 하나의 제1 레벨 캐시는 프로세서 내에 배치되는 방법.
  14. 제8항에 있어서,
    제1 프로세서 코어에 의해 상기 적어도 하나의 제1 레벨 캐시에 저장된 상기 캐시 라인에 액세스하는 단계; 및
    상기 적어도 하나의 제1 레벨 캐시에 저장된 상기 캐시 라인에 대한 상기 제1 프로세서 코어의 액세스 속성을 나타내는 코히어런스 요청을 상기 제1 프로세서 코어에서 제2 프로세서 코어로 송신하는 단계
    를 더 포함하는 방법.
  15. 복수의 메모리 라인을 저장하기 위한 메모리 유닛;
    캐시 코히어런스 상태 식별자를 상기 복수의 메모리 라인 중 적어도 하나의 메모리 라인과 연관시키고, 시스템의 제1 컴포넌트와 관련해서 상기 적어도 하나의 메모리 라인을 제1 캐시 코히어런스 상태와 연관시키도록 상기 식별자를 설정하며, 시스템의 상이한 제2 컴포넌트와 관련해서 상기 적어도 하나의 메모리 라인을 상이한 제2 캐시 코히어런스 상태와 연관시키도록 상기 식별자를 설정하는 캐시 컨트롤러 로직; 및
    상기 적어도 하나의 메모리 라인에 액세스하고, 상기 적어도 하나의 메모리 라인에 대한 상기 제1 프로세서 코어의 액세스 속성을 나타내는 코히어런스 요청을 제2 프로세서 코어로 송신하기 위한 제1 프로세서 코어
    를 포함하는 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020060133729A 2005-12-27 2006-12-26 멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법 KR100869189B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/316,949 US20070150663A1 (en) 2005-12-27 2005-12-27 Device, system and method of multi-state cache coherence scheme
US11/316,949 2005-12-27

Publications (2)

Publication Number Publication Date
KR20070069053A KR20070069053A (ko) 2007-07-02
KR100869189B1 true KR100869189B1 (ko) 2008-11-18

Family

ID=37898361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060133729A KR100869189B1 (ko) 2005-12-27 2006-12-26 멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법

Country Status (5)

Country Link
US (1) US20070150663A1 (ko)
EP (1) EP1814039A3 (ko)
KR (1) KR100869189B1 (ko)
CN (1) CN101030170A (ko)
TW (1) TWI336438B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101365940B1 (ko) 2009-10-27 2014-02-24 한국전자통신연구원 코어 클러스터, 및 코어 클러스터를 포함하는 에너지 스케일러블 벡터 프로세싱 장치 및 방법

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8527709B2 (en) 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7827336B2 (en) * 2008-11-10 2010-11-02 Freescale Semiconductor, Inc. Technique for interconnecting integrated circuits
US20100191913A1 (en) * 2009-01-26 2010-07-29 Agere Systems Inc. Reconfiguration of embedded memory having a multi-level cache
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
WO2011031796A2 (en) 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
WO2011031903A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
CN102387204B (zh) * 2011-10-21 2014-12-10 中国科学院计算技术研究所 维护集群缓存一致性的方法及系统
KR101915073B1 (ko) 2011-12-20 2018-11-06 인텔 코포레이션 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
CN103150264B (zh) * 2013-01-18 2014-09-17 浪潮电子信息产业股份有限公司 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
CN104571930B (zh) * 2013-10-10 2018-01-30 中国移动通信集团公司 一种安全域存储空间的管理方法、系统和多应用开放平台装置
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
CN108228481A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于保证数据一致性的方法和设备
US11360906B2 (en) 2020-08-14 2022-06-14 Alibaba Group Holding Limited Inter-device processing system with cache coherency
US11354239B2 (en) 2020-09-18 2022-06-07 Microsoft Technology Licensing, Llc Maintaining domain coherence states including domain state no-owned (DSN) in processor-based devices

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990072315A (ko) * 1998-02-17 1999-09-27 포만 제프리 엘 다중-레벨메모리계층구조를포함하는데이터처리시스템용캐시코히어런시프로토콜
JP2002259211A (ja) 2001-02-12 2002-09-13 Internatl Business Mach Corp <Ibm> キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
KR20040029110A (ko) * 2001-08-27 2004-04-03 인텔 코오퍼레이션 분산 캐시들을 이용하기 위한 방법 및 장치
JP2005018772A (ja) 2003-06-25 2005-01-20 Internatl Business Mach Corp <Ibm> 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム
WO2005029335A2 (en) * 2003-09-12 2005-03-31 Intel Corporation Method and apparatus for joint cache coherency states in multi-interface caches

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2746530B2 (ja) * 1993-01-30 1998-05-06 洲 植 全 共有メモリマルチプロセッサ
US5900015A (en) * 1996-08-09 1999-05-04 International Business Machines Corporation System and method for maintaining cache coherency using path directories
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
US6341336B1 (en) * 1998-02-17 2002-01-22 International Business Machines Corporation Cache coherency protocol having tagged state used with cross-bars
WO2000052582A1 (de) * 1999-02-26 2000-09-08 Fujitsu Siemens Computers Gmbh Einrichtung zur erhöhung der leistungsfähigkeit von prozessorsystemen
US6405290B1 (en) * 1999-06-24 2002-06-11 International Business Machines Corporation Multiprocessor system bus protocol for O state memory-consistent data
US6629268B1 (en) * 2000-01-25 2003-09-30 International Business Machines Corporation Method and apparatus for servicing a processing system through a test port
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6721848B2 (en) * 2000-12-08 2004-04-13 Hewlett-Packard Development Company,L.P. Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US6571322B2 (en) * 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6484241B2 (en) * 2000-12-28 2002-11-19 International Business Machines Corporation Multiprocessor computer system with sectored cache line system bus protocol mechanism
US6763434B2 (en) * 2000-12-30 2004-07-13 International Business Machines Corporation Data processing system and method for resolving a conflict between requests to modify a shared cache line
US6925537B2 (en) * 2001-06-11 2005-08-02 Hewlett-Packard Development Company, L.P. Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
US6813691B2 (en) * 2001-10-31 2004-11-02 Hewlett-Packard Development Company, L.P. Computer performance improvement by adjusting a count used for preemptive eviction of cache entries

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990072315A (ko) * 1998-02-17 1999-09-27 포만 제프리 엘 다중-레벨메모리계층구조를포함하는데이터처리시스템용캐시코히어런시프로토콜
JP2002259211A (ja) 2001-02-12 2002-09-13 Internatl Business Mach Corp <Ibm> キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
KR20040029110A (ko) * 2001-08-27 2004-04-03 인텔 코오퍼레이션 분산 캐시들을 이용하기 위한 방법 및 장치
JP2005018772A (ja) 2003-06-25 2005-01-20 Internatl Business Mach Corp <Ibm> 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム
WO2005029335A2 (en) * 2003-09-12 2005-03-31 Intel Corporation Method and apparatus for joint cache coherency states in multi-interface caches

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101365940B1 (ko) 2009-10-27 2014-02-24 한국전자통신연구원 코어 클러스터, 및 코어 클러스터를 포함하는 에너지 스케일러블 벡터 프로세싱 장치 및 방법

Also Published As

Publication number Publication date
EP1814039A2 (en) 2007-08-01
EP1814039A3 (en) 2009-03-25
KR20070069053A (ko) 2007-07-02
TWI336438B (en) 2011-01-21
CN101030170A (zh) 2007-09-05
US20070150663A1 (en) 2007-06-28
TW200809498A (en) 2008-02-16

Similar Documents

Publication Publication Date Title
KR100869189B1 (ko) 멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법
US11741012B2 (en) Stacked memory device system interconnect directory-based cache coherence methodology
JP6417344B2 (ja) 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US9384134B2 (en) Persistent memory for processor main memory
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US10621098B2 (en) Computing device and non-volatile dual in-line memory module that evict and prefetch data with respect to memories having different operating speeds
US11360906B2 (en) Inter-device processing system with cache coherency
JP6415366B2 (ja) 低レイテンシレベルのキャッシュによってキャッシュインジェクションを遂行する方法とその方法を利用する装置及びシステム
KR20200088391A (ko) 공통 메모리 페이지로부터 메모리로의 캐시 라인들의 린싱

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee