본 발명과 관련된 청구 대상은 본 명세서의 결론부에 특별히 지시되어 있으며 뚜렷하게 청구되어 있다. 그러나, 본 발명은 첨부된 도면들을 읽을 때 이하의 상세한 설명을 참조해서 특징 및 장점과 함께 동작 구성 및 방법에 대해 가장 잘 이해될 수 있다.
편의상, 도면들에 도시된 요소들은 반드시 비율에 따라 그려진 것은 아님을 알 것이다. 예를 들어, 일부 소자들의 크기는 명료성을 위해 다른 소자들에 비해 확대될 수 있다. 또한, 참조 번호들은 대응 또는 유사 소자들을 나타내기 위해 도면들에서 반복될 수 있다.
이하의 상세한 설명에서, 다수의 특정 세부 사항들이 본 발명의 완전한 이해를 제공하기 위해 기재된다. 그러나, 본 기술 분야에 숙련된 자들은 이러한 특정 세부 사항들 없이 본 발명이 실시될 수 있음을 알 것이다. 다른 일례들에서, 공지된 방법들, 프로시져들, 컴포넌트들, 유닛들 및/또는 회로들은 본 발명을 애매하게 하지 않기 위해 상세히 기술되지 않았다.
본 발명의 실시예들은 다양한 애플리케이션들에서 사용될 수 있다. 본 발명의 실시예들이 이점에 있어서 제한되지 않더라도, 본 발명의 실시예들은 다수의 장치들, 예를 들어, 컴퓨터, 컴퓨팅 플랫폼, 퍼스널 컴퓨터, 데스크탑 컴퓨터, 모바일 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 퍼스널 디지털 어시스턴트(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, 파스칼, 포트란, 코볼, 어셈블리 언어, 기계 코드 등을 사용해서 구현될 수 있다.
본 발명의 특정 특징들이 본 명세서에서 설명되고 기술되었지만, 다수의 변경, 치환, 변화 및 동등물이 발생할 수도 있음을 본 기술 분야에 숙련된 자들은 알 것이다. 따라서, 첨부된 청구항들은 본 발명의 원리 내에 속한 모든 변경들 및 변화들을 커버하도록 의도됨을 알 것이다.