KR100745478B1 - 복수의 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템 및 캐시 삭제가 없는 코히어런시 영역들 간의 소프트웨어 프로세스 이동 - Google Patents

복수의 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템 및 캐시 삭제가 없는 코히어런시 영역들 간의 소프트웨어 프로세스 이동 Download PDF

Info

Publication number
KR100745478B1
KR100745478B1 KR1020040036694A KR20040036694A KR100745478B1 KR 100745478 B1 KR100745478 B1 KR 100745478B1 KR 1020040036694 A KR1020040036694 A KR 1020040036694A KR 20040036694 A KR20040036694 A KR 20040036694A KR 100745478 B1 KR100745478 B1 KR 100745478B1
Authority
KR
South Korea
Prior art keywords
coherency
cache
node
computer system
multiprocessor computer
Prior art date
Application number
KR1020040036694A
Other languages
English (en)
Other versions
KR20050001305A (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 KR20050001305A publication Critical patent/KR20050001305A/ko
Application granted granted Critical
Publication of KR100745478B1 publication Critical patent/KR100745478B1/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
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01DCONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
    • E01D19/00Structural or constructional details of bridges
    • E01D19/06Arrangement, construction or bridging of expansion joints
    • E01D19/062Joints having intermediate beams
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01DCONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
    • E01D19/00Structural or constructional details of bridges
    • E01D19/08Damp-proof or other insulating layers; Drainage arrangements or devices ; Bridge deck surfacings
    • E01D19/083Waterproofing of bridge decks; Other insulations for bridges, e.g. thermal ; Bridge deck surfacings
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability

Abstract

멀티프로세서 컴퓨터 시스템은 프로세서 상태 정보를 이용하여 단일의 발신 프로세서의 기억 요청에 의해 형성된 코히어런시 트랜잭션 (coherency transaction)을 검사하는 데에 시스템에서 어떤 코히어런트 캐시 (coherent cache)가 필요한지를 결정하는 다수의 프로세싱 노드를 갖는다. 컴퓨터의 노드는 동적 코히어런시 경계를 갖고 있어 하드웨어가 특정 시점에서 하나의 작업 부하에 대해 대형 시스템에서의 전체 프로세서의 서브세트만을 이용하도록 하며, 슈퍼바이저 소프트웨어나 펌웨어가 단일의 작업 부하를 실행하는 데에 이용되고 있는 프로세서의 개수를 늘리고 줄이면서 캐시 코히어런시를 최적화할 수가 있다. 노드의 복수 인스턴스들은 대형 멀티프로세서 시스템을 형성하기 위해 제2 레벨 콘트롤러와 연결될 수 있다. 노드 콘트롤러는 어떤 프로세서가 노드 콘트롤러에 의해 수신되는 임의의 트랜잭션을 수신해야 하는지를 판단하기 위해 모드 비트를 이용한다. 제2 레벨 콘트롤러는 제2 레벨 콘트롤러에 의해 수신되는 임의의 트랜잭션을 어떤 노드가 수신해야하는지를 판단하기 위해 모드 비트를 이용한다. 논리적 분할부가 허용 가능한 물리적 프로세서에 대해 매핑된다. 시스템 내의 총 개수의 프로세서와 캐시의 서브세트를 포함하는 캐시 코히어런스 영역은 물리적으로 근접하게 선택된다. 하이퍼바이저 (hypervisor)를 이용하여 각각의 분할부에 대해 별개의 캐시 코히어런시 영역이 정의될 수 있다.
캐시 코히어런시 영역, 코히어런시 트랜잭션

Description

복수의 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템 및 캐시 삭제가 없는 코히어런시 영역들 간의 소프트웨어 프로세스 이동{Multiprocessor computer system having multiple coherency regions and software process migration between coherency regions without cache purges}
도 1은 동적 코히어런시 경계 (dynamic coherency boundary)를 구비하는 컴퓨터의 블록도로서, 노드 콘트롤러는 활성 코히어런시 영역 테이블의 하드웨어 구현을 포함한다.
도 2는 도 1에서의 컴퓨터의 노드의 다중 인스턴스들이 대형 멀티프로세서 시스템을 형성하도록 제2 레벨 콘트롤러와 연결되는 방법을 나타낸다.
도 3은 도 1에서의 단일 프로세싱 소자를 도시한다.
도 4는 어떤 프로세서가 노드 콘트롤러에 의해 수신된 임의의 트랜잭션을 수신해야하는 지를 판단하기 위해 노드 콘트롤러가 모드 비트를 이용하는 방법을 설명하는 테이블을 도시한다.
도 5는 어떤 노드가 제2 레벨 콘트롤러에 의해 수신된 임의의 트랜잭션을 수신해야하는 지를 결정하기 위해 제2 레벨 콘트롤러가 모드 비트를 이용하는 방법을 설명하는 테이블을 도시한다.
도 6은 허용가능한 물리적 프로세서들에 대한 논리적 분할부(partions)의 하나의 가능한 매핑을 도시한다.
도 7은 활성 코히어런시 영역 테이블의 하드웨어 구현의 부가적인 세부사항을 도시하는 것으로, 이 때 테이블은 일반적으로 소프트웨어 프로세스 디스패치를 위해 현재 프로세싱 노드를 이용할 수 있는 슈퍼바이저 소프트웨어로 제어되는 코히어런시 영역의 리스트이다.
삭제
본 발명은 다수의 노드와 동적 캐시 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템에 관한 것이다. 본 발명은 특히 캐시 컨텐츠를 선택적으로 삭제할 필요 없이 코히어런시 영역들 간에 소프트웨어 프로세스를 이동할 수 있는 컴퓨터 시스템에 관한 것이다.
본 발명은 본 출원과 함께 출원되며 본 명세서에서 참조문헌으로 인용되며 미국에서 출원되어 현재 계류중인 "동적 캐시 코히어런시 영역을 갖는 멀티프로세서 시스템"이라는 제목의 출원과 관련된다.
삭제
이 계류중인 출원과 본 출원은 동일한 양수인인 뉴욕, 아몽크 소재의 인터내셔널 비지니스 머신즈사 소유이다.
이 계류중인 출원에 기재된 내용은 참조문헌으로 본 출원에 포함된다.
상표 : IBM®은 미국, 뉴욕, 아몽크 소재의 인터내셔널 비지니스 머신즈사의 등록 상표이다. 다른 명칭들은 인터내셔널 비지니스 머신즈사 또는 다른 회사들의 등록된 상표 또는 제품명이다.
메모리 참조 (memory reference)를 대기하면서 컴퓨터 프로세서가 소모하는 유휴 시간 (idle time)은 광범위한 중요 상업적 및 기술적 컴퓨팅 작업 부하에 대한 전체 실행 시간 중 상당한 부분을 차지하게 된다. 주 기억 장치 위치에 대한 액세스가 완료되는 동안 프로세서가 대기해야 하는 시간을 최소화하기 위한, 많은 종래 기술둘이 멀티프로세서 시스템 설계에 이용되었다. 이 기술들은 크게 두가지로 분류된다. 첫번째 카테고리의 기술은 지연을 겪고 있는 메모리 참조를 기다리는 동안 프로세스가 실행할 추가의 명령어를 찾아내려 한다. 이 기술들은 무순서 (out of order) 실행 및 멀티쓰레딩 (multithreading)과 같은 하드웨어 및 소프트웨어 메커니즘을 포함한다. 두번째 카테고리의 기술은 예를 들면, SRAM 캐시, DRAM 캐시 및 고속 멀티프로세서 버스 아키텍쳐와 같이, 메모리 참조 자체의 지연을 최소화하는데 역점을 둔다. SRAM 및 DRAM 캐시는 메모리 참조 레이턴시를 줄이는데 아주 성공적이었으며, 하나나 둘 다가 현재의 모든 멀티프로세서 설계에 이용된다. 종래의 캐시 설계는 멀티프로세서 시스템에 대해 캐시 코히어런스를 유지하는 특수 하드웨어 및 소프트웨어를 포함한다. 공유 버스(shared bus)를 통해 다수의 프로세서를 연결하는 시스템에 대해, 일반적으로 스누프 버스 프로토콜 (snoop bus protocol)이 이용된다. 공유 버스상에서 수행된 각각의 코히어런트 트랜잭션 (coherent transaction)은 버스에 부착된 다른 모든 디바이스들의 캐시 내의 데이터에 대해 검사 ("스누프(snooped)")된다. 이런 데이터의 사본(copy)이 발견되면, 데이터를 포함하는 캐시 라인의 상태는 코히어런트 트랜잭션에 응답하여 갱신될 수 있다.
적당한 수의 프로세서를 갖는 멀티프로세서 시스템에 대해 캐시가 잘 작동한다고 해도, TPC-C 벤치마크에 의해 시뮬레이트된 트랜잭션 및 데이터베이스 작업 부하를 포함하는 많은 중요한 작업 부하를 위해 다수의 프로세서로 확장되는 경우 종래의 멀티프로세서 설계로는 적절하게 스케일링되지 않는다.
공유 프로세서를 이용할 때 미국 특허 No.4,843,541에 개시된 바와 같이, 논리적 분할 (logical partitioning)도 역시 다수의 프로세서로 확장되는 경우, 종래 시스템 설계에 대해 불충분한 스케일링을 야기한다. 미국 특허 No.4,843,531은 가상 머신 하이퍼바이저 프로그램이 데이터 프로세싱 시스템의 중앙 전자 복합체 (central electronic complex) 내의 리소스를 다수의 논리적 분할부로 분할하는 데에 이용되는 방법을 개시한다.
논리적 분할은 개인 데이터에 동작하는 많은 작업 부하를 동시에 실행하기 위해서, 대형 멀티프로세서 시스템상에서 광범위하게 이용된다. 논리적 분할을 이용하는 전형적인 시스템에서, 운영 체제 인스턴스 (operating system instance)는 각각의 논리적 분할부 내에서 초기화된다. 논리적 분할은 1개 내지 n개까지의 논리적 프로세서를 가질 수 있다. 하이퍼바이저(hypervisor)는 각각의 논리적 프로세서를 물리적 프로세서 상에서 디스패치하는 역활을 수행한다. 물리적 프로세서는 장시간 동안 단지 하나의 논리적 프로세서의 호스트(host)인 경우, 이 논리적 프로세서의 분할부에 "전용"이라고 할 수 있다. 물리적 프로세서가 복수개의 분할부로부터의 논리적 프로세서들의 호스트라면, "공유" 프로세서라고 할 수 있다. 전체 하드웨어 이용 관점에서, 물리적 프로세서의 이용은 외부 요인 변화로 변동하기 때문에, 대형 멀티프로세서 시스템이 물리적 프로세서 중 대부분이나 다수를 "공유"로 정의하고, 멀티프로세서의 물리적 프로세서 간의 논리적 프로세서의 이동을 가능하게 하는 것이 바람직하다. 종래 멀티프로세서 캐시 설계는, 특히, 물리적 프로세서가 "공유"로 정의될 때, 이 분할된 작업 부하들에 대해 적절하게 스케일링되지 않는다.
대형 단일 데이터베이스 작업 부하와 공유된 논리적 분할부 경우 둘 다에 대한 대형 멀티프로세서의 불충분한 성능 스케일링의 큰 요인으로는 프로세서들의 개수의 증가와 그들 사이의 통신에 요구되는 지연 시간 간의 관계가 있다. 스누프 버스 프로토콜(snoop bus protocol)은 로컬 캐시를 적중 실패한 메모리 참조가 요청된 라인의 사본을 포함할 수 있는 모든 캐시, 보통 시스템내의 모든 다른 캐시에 전파되는 것을 필요로 한다. 대형 멀티프로세서 시스템에 대한 주소 및 응답을 배포하는 데에 필요한 버스 밴드폭은 아주 넓다.
필요한 넓은 밴드 폭을 제공해야 하므로 종래 설계들에서는 다수의 넓은 포트를 갖는 스위치 칩, 필요한 핀을 제공하기 위한 고가의 칩 캐리어, 양호한 전기적 특성 및 그에 따른 고속 버스들을 제공하기 위한 고가의 카드 기술, 넓은 버스를 제공하기 위한 고가의 카드 커넥터 등을 이용하게 된다. 이러한 모든 요소들의 비용은 대형 멀티 프로세서 시스템의 비용 대비 성능을 개선시키려고 할 때, 심각한 문제점이 된다.
종래 설계는 많은 여러 방법으로 코히어런시 동작 레이턴시 및 어드레스 밴드폭 제한이라는 두 가지의 문제점을 해결하려고 시도했지만, 각각은 시스템 설계상에서 다른 비용 문제들 부과했으며, 본 발명은 이를 해결하고자 한다.
IBM S/390 G4 설계(연구와 개발의 IBM저널 1997년, Vol. 41, No 4&5)에서 예시된 바와 같이, 두 가지 문제들을 해결하기 위해 대형 공유 캐시가 종래 설계에 이용되었다. 소수의 대형 고유 캐시의 상호 연결은 공유 캐시에서 적중한 요청들에 대해 양호한 레이턴시를 제공한다. 또한, 포괄적인 공유 캐시는 몇몇 경우 시스템 내의 모든 프로세서에 어드레스를 전파해야 할 필요성을 삭제하는 필터로 작용한다. 이러한 설계는 다수의 프로세서에는 잘 스케일링되지 않는다. 추가의 프로세서의 이용에 따라, 설계시 많은 배선 층을 갖는 대형 멀티칩 모듈 (large multichip module) 및 연결된 각 프로세서에 대해 포트를 제공하는 데에 필요한 상당히 많은 수의 I/O를 갖는 L2 캐시 칩을 이용하게끔 한다.
시퀀트 NUMA-Q (Sequent NUMA-Q) 설계 ("Sting : 상용 A CC-NUMA 컴퓨터 시스템", 1996년 5월 inProc. 제23회 컴퓨터 아키텍쳐의 인터내서널 심포지움)에 예시된 바와 같이, 원격 요청자에 의한 로컬 메모리의 액세스를 추적하기 위해 디렉토리에 의존하는 멀티프로세서 시스템은 다수의 프로세서에 필요한 어드레스 밴드폭을 줄이도록 작용한다. 그들은 대형 RAM 디렉토리, 프로토콜 복잡성 (protocol complexity) 및 하드웨어 증가의 대가로 이렇게 작용한다. 또한, 이러한 형태의 설계는 특정한 소프트웨어 프로세스에 의해 참조되는 대부분의 주 기억 라인이 해당 작업 부하를 실행하고 있는 프로세서가 현재 디스패치되는 노드와 동일한 물리적 노드상에 위치한다는 가정에 따른 것이다. 원격 노드에 의해 "점검"될 수 있는 라인의 개수가 thNUMA 디렉토리의 크기로 제한되기 때문에, 작업 부하가 다수의 원격 라인을 액세스하고 있는 경우에 심각한 성능 결함이 있게 된다. 본 발명의 하나의 목적은 주 기억 컨텐츠를 이동시킬 필요 없으며 현저한 성능의 저하 없이 다수의 프로세서들 간에서 빠르고 쉽게 작업 부하 실행을 이동하게 하는 것이다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
Hagersten 등에 의한 미국 특허 제5,852,716호는 대형 멀티프로세서에서 프로세서의 서브세트로 제한되는 "로컬"이나 모든 프로세서에 전파되는 "글로벌" 중 하나인 캐시 코히어런트 동작을 정의하기 위해, 복수의 어드레스 분할의 이용을 설명한다. Hagersten에서의 로컬 트랜잭션 (local transaction)은 기억 요청을 발원한 프로세서가 속하는 서브세트와 동일한 서브세트의 프로세싱 노드에 할당된 물리적 메모리를 갖는 것으로 정의된다. 미국 특허 제5,852,716호의 칼럼 7의 63 라인에서 시작하는 기재 내용은 종래 발명에서는 "로컬 도메인(local domain)"으로 언급되는 것들 간의 프로세스의 이동이 이 프로세스와 연관된 물리적 기억 장치를 이동하지 않고는 또는 어드레싱 모드를 "글로벌"로 변경하지 않고는 가능하지 않다는 것을 명백하게 하고 있다.
다량의 SRAM 디렉토리를 이용하지 않으며 주 기억 컨텐츠의 이동을 필요로 하지 않고 멀티프로세서 컴퓨터 시스템내의 여러 프로세서들 간의 어드레스 요청의 전송을 줄이기 위한 기술의 필요성이 있다고 판단하였다. 이 요구를 충족시키기 위한 해결책을 개발하기 위해서, 대형 멀티프로세서 시스템에서 모든 기억 참조 트랜잭션의 레이턴시를 줄이기 위한 필요성이 관련되어 있음을 판단하였다.
이들의 필요성을 충족하게 되면, 다수의 캐시 코히어런시 영역을 이용하는 시스템이 코히어런시 영역들 사이에서 소프트웨어 프로세스들을 이동시키는 동작 중에, 캐시 삭제를 이용하지 않고 동작할 수 있게 하는 하드웨어 코히어런시 제어가 제공되게 된다. 본 발명은 소프트웨어 프로세스가 더 이상 이용되지 않는 하나의 코히어런시 영역을 벗어나, 이 영역과 동일한 어드레스 공간을 포함하게 형성되지만 새로운 세트의 프로세싱 노드를 포함하게 되는 다른 영역으로 이동되는 경우에 작용한다. 본 발명의 바람직한 실시예에서는, 슈퍼바이저 소프트웨어가 임의의 프로세싱 노드의 캐시에 대한 캐시 삭제를 필요로 하지 않고, 소프트웨어 프로세스를 한 세트의 프로세싱 노드를 포함하는 하나의 코히어런시 영역으로부터 다른 세트의 프로세싱 노드를 포함하는 다른 코히어런시 영역으로 이동할 수 있도록 작용한다. 목적지 코히어런시 영역이 본래 코히어런시 영역보다 더 적은 하드웨어 프로세싱 노드를 포함하면, 코히어런시 영역의 크기는 효과적으로 줄여지게 된다.
본 발명의 바람직한 실시예는 다수의 노드를 구비하고, 각각의 프로세싱 노드와 연관된 활성 코히어런시 영역 (active coherency region) 정보의 테이블을 이용하여 종래의 캐시 상태 전이 (cache state transition)를 언제 변경할지를 판단하는 멀티프로세서 컴퓨터 시스템으로 구현된다. 슈퍼바이저 소프트웨어는 각각의 프로세싱 노드와 연관된 테이블을 초기화한다. 테이블에서의 엔트리는 슈퍼바이저 소프트웨어가 그 프로세싱 노드 상에서 이용하려고 하는 각각의 코히어런시 영역에 대해 작성된다. 각각의 코히어런시 영역에는, 슈퍼바이저가 해당 코히어런시 영역에 의해 포함되는 기억 어드레스를 액세스하는 모든 소프트웨어 프로세스와 연관시킬 수 있는 고유의 코히어런시 영역 ID가 할당된다.
본 발명을 이용하는 프로세싱 노드는 슈퍼바이저 소프트웨어에 의해 현재 이 노드 상에서 디스패치될 수 있는 임의의 소프트웨어 프로세스의 어드레스 공간 부분이 아닌 캐시 라인을 목표로 하는 인입 기억 요청 (storage request)을 식별할 수 있다. 바람직한 실시예에서, 이 정보는 프로세싱 노드가 해당 노드에서 임의의 소프트웨어 프로세스에 의해 이제는 활성적으로 이용되지 않는 캐시 라인을 식별하고 코히어런시 영역 외부로부터의 기억 요청에 응답하여 캐시 엔트리를 무효로 변경할 수 있게 한다.
본 발명의 이점은 많다. 본 발명의 첫번째 이점은 캐시 코히어런시 영역들 사이에서 소프트웨어 프로세스를 이동시킬 때 캐시의 선택적 삭제를 수행하는 데에 필요했던 캐시 컨트롤 하드웨어가 필요 없다는 것이다. 본 발명의 두번째 이점은 본 발명은 소프트웨어 프로세스에 대한 코히어런시 경계가 효율적으로 변경되는 동안 시스템내의 모든 캐시가 코히어런시 트랜잭션의 처리를 계속할 수 있게 한다는 것이다. 세번째 이점은 임의의 노드에서 더 이상 활성적으로 디스패치되고 있지 않는 소프트웨어 프로세스에 속하는 캐시 라인이 식별되고 무효화될 수 있어 이에 의해 이들의 재이용을 가능하게 할 수 있다는 것이다.
이들 및 다른 개선들은 이하 상세한 설명에서 설명된다. 이점 및 특징들을 갖는 본 발명에 대한 보다 나은 이해를 위해, 도면과 상세한 설명을 참조한다.
삭제
삭제
삭제
삭제
본 발명의 상세한 설명은 도면을 참조하며, 본 발명의 장점 및 특징들과 함께 본 발명의 바람직한 실시예들을 설명한다.
도 1을 참조하면, 동적 코히어런시 경계 (dynamic coherency bondary)를 갖는 컴퓨터의 하나의 노드(10)에 대한 일 실시예의 블록도가 도시된다. 도 1은 다수의 프로세서 P0 - P3를 도시하는데, 각각의 프로세서는 캐시를 갖으며 로컬 노드 콘트롤러(local node controller : 11)에 부착된다. 로컬 콘트롤러는 다수의 프로세서를 DRAM 주 기억 소자 (main storage element : 12)와 함께 연결한다. 단일의 프로세서에 의해 초기화되는 기억 트랜잭션 (storage transaction)은 노드 내의 다른 프로세서들의 일부 또는 모두에 차례로 트랜잭션을 전송할 수 있는 노드 콘트롤러에 전송된다. 또한, 노드 콘트롤러는 부가의 프로세서(미도시)를 포함하는 컴퓨팅 시스템의 다른 부분에 버스(13)로 트랜잭션을 전송할 수 있다. 활성 코히어런시 영역 테이블(14)은 노드 콘트롤러에 의해 이용되어 컴퓨팅 시스템(미도시)의 다른 부분으로부터 버스(13) 상에서 노드로 진입하고 있는 기억 요청들에 응하여 적절한 캐시 상태 전이를 결정한다. 도 2는 도 1의 노드(10)의 복수의 인스턴스가 대형 멀티프로세서 시스템을 생성하기 위해 제2 레벨 콘트롤러(15)에 연결되는 방법을 도시한다. 도 1은 4개의 프로세싱 소자에 대한 이용을 도시하지만, 임의 개수의 프로세싱 소자가 이용될 수 있다. 도 1은 하나의 메모리 소자만을 도시하지만, 임의의 개수의 메모리 소자가 이용될 수 있다. 바람직한 실시예는 도 1 및 도 2에 도시된 계층적 버스 구조(hierarchial bus organization)를 이용하지만, 본 발명은 다른 형태의 상호 연결 토폴로지 (interconnect topology)를 이용하는 멀티프로세서 시스템에도 적용될 수 있다.
도 3은 도 1 중에서 하나의 프로세싱 소자를 도시한다. 본 발명은 멀티프로세서 시스템내의 각각의 프로세서에 대해 하나 이상의 코히어런시 모드 비트(16)를 이용한다. 본 발명은 멀티프로세서 시스템내의 각각의 프로세서에 대해 코히어런시 영역 ID (coherency region ID)를 이용한다. 트랜잭션이 도 3의 버스(17)를 통해 노드 콘트롤러에 전송될 때, 하나의 프로세서와 연관된 코히어런시 모드 비트와 코히어런시 영역 ID는 이 프로세서에 의해 초기화되는 각각의 기억 트랜잭션과 함께 전송된다. 본 실시예에서는 노드 콘트롤러가 이용되지만, 다른 실시예에서는 간단한 물리적 버스로 대체될 수 있다.
노드 콘트롤러(11)와 제2 레벨 콘트롤러(15)내의 캐시 코히어런시 하드웨어는 각각의 트랜잭션과 연관된 모드 비트를 이용하여, 어떤 캐시가 임의의 프로세서로부터 수신하는 임의의 기억 트랜잭션에 가담해야 하는지를 판단한다. 바람직한 실시예는 3개의 모드 비트를 이용한다. 노드 콘트롤러와 제2 콘트롤러에 대한 다음의 동작 모드를 식별하기 위해 3개의 모드 비트가 함께 이용된다. 코히어런시 모드 설정 "000"은 도 1에서 점선(10)으로 도시된 바와 같이, 하나의 프로세서의 코히어런시 영역을 정의하는데 이용된다. 임의의 다른 3개의 프로세서는 역시 하나의 프로세서 코히어런시 영역에 이용될 수 있다. 코히어런시 모드 설정 "001"은 도 1에서 점선(18) 및 (19)로 도시된 바와 같이 두 개의 프로세서의 코히어런시 영역을 정의하는데 이용된다. 본 실시예는 노드 콘트롤러에서 요구된 하드웨어 제어를 단순화하기 위해, 하이퍼바이저(hypervisor)가 (P0 및 P1) 또는 (P2 및 P3)를 포함하는 두 프로세서의 코히어런시 영역을 정의하는 것을 허용한다.
다른 실시예들은, 노드 1의 P0 및 노드 2의 P0와 같은, 다른 조합을 허용할 수 있다. 코히어런시 모드 설정 "010"은 도 1에서 점선(20)으로 도시된 바와 같이 단일 노드의 모든 프로세서를 포함하는 코히어런시 영역을 정의하는데 이용된다. 설정 "101"은 도 2에서 점선(21) 및 (22)로 도시된 바와 같이 두개의 노드를 포함하는 코히어런시 영역을 정의한다. 마지막으로, 설정 "111"을 갖는 프로세서는 생성된 모든 기억 트랜잭션이 전체 시스템내의 모든 캐시에 전송되어야 함을 나타낸다.
코히어런시 모드 설정에는 논리적 분할부(partition) 상태의 일부와 그에 따라 상기 분할부에서 정의되는 논리적 프로세서 상태의 일부가 고려된다. 본 실시예에서, 단일의 논리적 분할부로부터의 모든 논리적 프로세서는 하나의 시점에서 동일한 코히어런시 모드 설정을 갖는다. 추가 소프트웨어 또는 펌웨어 (firmware)는 별개 세트의 기억 어드레스를 이용하는 하나의 분할부 내의 프로세스를 정의하기 위해 이용될 수 있으며, 이에 따라 상이한 코히어런시 모드 설정 및 디스패치를 위해 이용될 다른 세트의 허용가능한 물리적 프로세서가 제공될 수 있다. 논리적 프로세서가 물리적 단일 프로세서 상에서 디스패치될 때, 물리적 프로세서는 논리적 프로세서의 코히어런시 모드 설정을 일시적으로 맡는다. 코히어런시 모드 비트가 노드 콘트롤러(11)에 전송될 때, 코히어런시 모드 비트는 프로세서에 의해 생성된 모든 기억 트랜잭션과 함께 전송된다. 다수의 논리적 분할부가 즉시 정의되어 이용될 수 있으므로, 많은 중첩 코히어런시 영역이 동시에 이용된다. 본 발명은 시스템내의 프로세서들을 상호 연결시키는 버스를 통해 트랜잭션을 어떻게 라우팅할 지를 판단하기 위해 각각의 버스 트랜잭션에 수반되는 코히어런시 모드 비트를 이용하는 노드 콘트롤러(11) 및 제2 레벨 콘트롤러(15)에서의 하드웨어 및 펌웨어 제어를 제공한다.
도 4는 어느 프로세서가 노드콘트롤러에 의해 수신되는 임의의 트랜잭션을 수신해야하는지를 결정하기 위해 노드 콘트롤러가 모드 비트를 이용하는 방법을 설명하는 테이블을 도시한다 ("1xx"는 제1 비트위치와 제2 비트 위치 및 제3 비츠 위치에서 1로 설명하기 위해 이용된다.) 도 5는 어느 노드가 제2 레벨 콘트롤러에 의해 수신되는 임의의 트랜잭션을 수신해야 하는지를 판단하기 위해 제2 레벨 콘트롤러가 모드 비트를 이용하는 방법을 설명하는 테이블을 도시한다. 도 6은 허용 가능한 물리적 프로세서에 대한 논리적 분할부의 하나의 가능한 매핑을 도시한다.
본 실시예에서, 노드 콘트롤러는 제2 노드 콘트롤러로부터 수신된 모든 트랜잭션을 노드 콘트롤러에 연결된 모드 프로세서에 포워딩할 수 있다. 노드 콘트롤러가 제2 레벨 노드 콘트롤러로부터 들어오는 요청을 제2 레벨 노드 콘트롤러에 연결된 프로세서의 서브세트에 전송할 것을 요구하는 많은 다른 잠재적인 코히어런시 경계가 구축될 수 있다는 것이 이해되어야 한다.
슈퍼바이저 소프트웨어는 그 자신의 코히어런시 영역을 갖는 각각의 프로세스에 대해 고유의 코히어런시 ID를 생성한다. 슈퍼바이저 소프트웨어는 시스템에서의 각각의 프로세싱 노드에 대해 테이블을 생성한다. 테이블은 그 프로세싱 노드상에서 현재 디스패치될 수 있는 모든 코히어런시 영역 ID에 대한 엔트리를 갖는다.
다른 방법을 관련 특허 출원에서 찾을 수 있다. 참고된 관련 특허 출원은 소프트웨어 컨트롤 프로그램 및 하드웨어 모드 비트의 조합을 이용하여 하나 이상의 프로세싱 노드를 이용하는 컴퓨팅 시스템에서 동적 코히어런시 경계를 정의한다. 코히어런시 경계는 전체 시스템에서 하나의 노드에서부터 모든 노드까지의 임의 개수의 프로세싱 노드를 포함하는 코히어런시 영역을 생성하도록 조정될 수 있다. 또한 관련 출원은 각각이 개인 어드레스 공간상에서 동작하는 복수의 코히어런시 영역이 어떻게 정의될 수 있는지를 설명한다. 코히어런시 영역은 시스템 동작동안 임의의 시점에서 추가 노드를 포함하도록 확장될 수 있다. 코히어런시 영역은 또한 요구된 프로시저를 따르면서 그 영역으로부터 프로세싱 노드를 삭제함으로써 크기를 줄일 수 있다. 이들 프로시저에는 코히어런시 영역으로부터 삭제하고자 하는 프로세싱 노드의 캐시 엔트리를 삭제해야 한다. 삭제되어야 하는 캐시 엔트리는 크기가 감소되고 있는 코히어런시 영역의 일부인 주기억 라인의 캐시 사본을 갖고 있는 것들만이다. 캐시된 라인을 갖는 코히어런시 영역의 식별에 기초하여 선택적 삭제를 수행할 수 없는 캐시는 완전히 삭제되어야 한다. 종래 설계와 비교하여, 선택적 삭제는 추가적인 캐시 콘트롤러 하드웨어를 필요로 한다. 여기에서 설명되는 바람직한 실시예는 프로세싱 시스템에 적용하여 2개의 개별 세트의 프로세싱 노드 사이에서 소프트웨어 프로세스를 이동시킬 때 캐시 삭제의 필요성을 없앨 수 있는 정점을 갖게 된다.
관련된 특허 출원은 이전에 디스패치된 소프트웨어 프로세스와는 다른 캐시 코히어런시 영역을 이용하는 소프트웨어 프로세스를 디스패치할 때, 슈퍼바이저 소프트웨어가 프로세서의 "캐시 코히어런시 모드"를 변경하는 방법을 설명한다. 본 발명은 기억 요청에 상기 요청을 발신했던 정밀한 코히어런시 영역에 대한 보다 구체적인 정보가 붙혀질 것을 필요로 한다. 본 발명은 발신 프로세스의 코히어런시 영역 ID를 이러한 구체적인 예로 이용한다. 바람직한 실시예에서, "캐시 코히어런시 모드"는 노드 콘트롤 로직에 의해 이용되어 마이크로프로세서 시스템에서 어느 노드가 기억 요청을 검사하는 데에 필요한지를 판단한다. 본 발명의 코히어런시 영역 ID는 정확한 스누핑 응답을 판단하도록 스누핑(snooping) 프로세서에 의해 이용된다.
본 발명의 다른 바람직한 실시예는 바람직한 실시예에 대하여 전술한 기능에 추가하여 "캐시 코히어런시 모드"의 기능을 수행하도록 코히어런시 영역 ID를 이용할 수 있다. 바람직한 실시예에서 "캐시 코히어런시 모드"를 판독해야 하는 노드 콘트롤러 로직은 "캐시 코히어런시 모드"의 단순한 인코딩에 좌우될 때, 보다 빠르고 보다 작게 만들어질 수 있다고 가정된다. 본 발명의 다른 바람직한 실시예는 어느 물리적 노드가 특정 코히어런시 영역 ID와 연관되는지를 노드 콘트롤러가 결정하는 것을 도와주기 위해 슈퍼바이저 소프트웨어가 이용하는 노드 콘트롤러에서의 프로그래밍 가능한 로직을 제공한다.
본 발명은 관련 특허 출원과 비교하여, 어느 프로세싱 노드가 임의의 특정 기억 요청을 검사해야 하는지를 결정하기 위해 이용되는 로직을 변경한다. 참조된 관련 특허 출원에서, 모드 비트로 표현되는 코히어런시 영역이 이 결정을 행하는데 이용되었다. 본 발명의 바람직한 본 실시예에서, 이는 발신자의 코히어런시 영역 내의 모든 캐시에 적중 실패한 임의의 기억 요청이 모드 비트의 설정에 상관없이, 전체 시스템의 모든 프로세싱 노드로 전송되도록 변경된다. 발신자의 코히어런시 영역에 적중했지만 정확한 캐시 상태를 갖지 않는 요청은 코히어런시 영역 외부로 전송될 필요 없다. 후자의 경우에 대한 예는 기억 라인을 변경하려고 하는 기억 요청으로서 기억 트랜잭션의 진행 동안 그 코히어런시 영역 내의 캐시가 공유된 것으로 표현된 라인의 사본을 갖는다고 파악된 것이다. 본 발명의 캐시 상태 전이 (cache state transition)는 캐시 라인이 두 개의 분리된 코히어런시 영역에서 공유된 것으로 표시될 수 없는 것을 확실히 하도록 설정된다. 슈퍼바이저 소프트웨어가 코히어런시 영역을 한 세트의 프로세싱 노드로부터 다른 세트의 프로세싱 노드로로 이동시킬 때, 구 노드(old node) 상의 코히어런시 영역에 대한 캐시 엔트리들은 효과적으로 남겨진다. 본 발명은 이러란 구 캐시 엔트리 (old cache entry)들이 새로운 프로세싱 노드로부터 발신된 요청에 의해 나타나게 되며, 동일한 주 기억 어드레스에 대한 캐시 엔트리는 구 엔트리가 무효화되고 나서야 새로운 프로세싱 노드에 구축되는 것을 확실히 한다.
본 발명은 관련된 특허 출원에서 설명된 시스템과 비교하여 프로세싱 노드들 간의 부가의 통신의 이용을 제공한다. 본 발명은 온-노드(on-node) 캐시에 완전하게 적중 실패한 기억 요청 개수를 최소화시킬 수 있는 대형 온-노드 캐시와 관련하여 이용될 수 있다. 본 발명은 동적 코히어런시 경계를 이용하지 않은 종래 설계와 비교하여, 프로세싱 노드들 간의 전반적인 통신의 감소를 가능하게 할 수 있다.
본 발명은 코히어런시 영역 간의 소프트웨어 프로세스의 이동을 용이하게 한다. 슈퍼바이저 소프트웨어를 이용하면, 본 발명에서는 요청된 기억 어드레스의 사본이 요청된 기억 어드레스에 대한 캐시 엔트리가 요청을 초기화한 프로세서를 포함하는 프로세싱 노드의 캐시에 존재하는 것으로 파악될 때마다, 해당 프로세싱 노드에서의 캐시 콘트롤러가 현재 코히어런시 영역 모드에 의해 지정되어진 이 프로세서의 현재 코히어런시 영역의 외부에는 존재하지 않는다는 것을 확실하게 한다.
새로운 코히어런시 영역 ID는 기억 요청에 어떻게 응답할 지를 결정하기 위해 스누핑 캐시에 의해 이용된다. 인입 요청에 첨부된 코히어런시 영역 ID가 프로세싱 노드의 활성 코히어런시 영역 테이블 내의 ID에 일치하지 않는다면, 프로세싱 노드의 캐시는 통상의 MESI 프로토콜 응답으로 응답한 다음에 상기 캐시를 무효로 설정한다. 무효로의 변경이 부정확한 데이터가 주 기억부에 다시 기록되는 것을 요구한다면, 이 동작 역시 동시에 시작된다. 도 7은 인입 기억 트랜잭션 처리 동안 프로세싱 노드에 의해 이용된 활성 코히어런시 영역 ID 테이블의 예를 도시한다. 테이블은 예상된 엔트리 개수 (이 프로세싱 노드에서 활성화되는 고유의 코히어런시 영역 당 한개)를 수용할 만큼 임의로 크게 만들어질 수 있다. 바람직한 실시예는 하드웨어 테이블을 이용하지만, 스프트웨어, 펌웨어 또는 하드웨어의 조합이 발명에 필요한 기능을 구현하기 위해 이용될 수 있다는 것은 자명하다.
본 발명의 첫번째 이점은 캐시 코히어런시 영역들 사이에서 소프트웨어 프로세스를 이동시킬 때 캐시의 선택적 삭제를 수행하는 데에 필요했던 캐시 컨트롤 하드웨어의 필요성이 없다는 것이다. 본 발명의 두번째 이점은 본 발명은 소프트웨어 프로세스에 대한 코히어런시 경계가 효과적으로 변경되는 동안 시스템내의 모든 캐시가 코히어런시 트랜잭션의 처리를 계속하도록 한다는 것이다. 세번째 이점은 임의의 노드에서 더 이상 활성적으로 디스패치되고 있지 않는 소프트웨어 프로세스에 속하는 캐시 라인이 식별되고 무효화될 수 있으므로 이에 의해 이들의 재이용이 가능하게 된다는 것이다.

Claims (31)

  1. 멀티프로세서 컴퓨터 시스템에 있어서,
    다수의 프로세싱 노드 (processing node) 및 상기 프로세싱 노드와 연관된 캐시를 이용하는 다수의 동적 캐시 코히어런시 영역 (dynamic cache coherency region)
    을 포함하고, 상기 프로세싱 노드 중 하나 이상의 노드의 캐시 컨텐츠(cache contents)를 선택적으로 삭제할 필요 없이 상기 다수의 캐시 코히어런시 영역들 간의 소프트웨어 프로세스의 이동을 제어하는 상기 프로세싱 노드 내의 캐시 콘트롤러 로직을 갖는 멀티프로세서 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 프로세싱 노드 내의 상기 캐시 콘트롤러 로직이 기억 어드레스에 대한 인입 기억 요청시, 요청된 기억 어드레스에 대한 캐시 엔트리가 상기 인입 기억 요청을 초기화한 프로세서를 포함하는 프로세싱 노드 내의 임의의 캐시에 존재하는 것으로 파악될 때마다, 상기 요청된 기억 어드레스의 사본이 상기 코히어런시 영역 모드에 의해 지정되어진, 그 프로세서의 현재 코히어런시 영역의 외부에 존재하지 않는 것을 확실히 하도록 하는 슈퍼바이저 소프트웨어 (supervisor software)를 포함하는 멀티프로세서 컴퓨터 시스템.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 제1항에 있어서, 상기 다수의 프로세싱 노드를 갖는 상기 멀티프로세서 컴퓨터 시스템은 각각의 프로세싱 노드와 연관된 활성 코히어런시 영역 정보 테이블을 이용하여 언제 상기 프로세싱 노드의 캐시 상태 전이 (cache state transition)를 변경할지를 판단하는 멀티프로세서 컴퓨터 시스템.
  13. 삭제
  14. 제1항에 있어서, 슈퍼바이저 소프트웨어는 상기 슈퍼바이저 소프트웨어가 상기 코히어런시 영역에 포함되는 기억 어드레스에 액세스하는 모든 소프트웨어 프로세스와 연관시킬 수 있는 각 코히어런시 영역에 대한 고유의 코히어런시 영역 ID을 할당하는 멀티프로세서 컴퓨터 시스템.
  15. 제1항에 있어서, 상기 프로세싱 노드는 슈퍼바이저 소프트웨어에 의해 현재 상기 노드 상에서 디스패치될 수 있는 소프트웨어 프로세스의 어드레스 공간 부분이 아닌 캐시 라인을 목표로 하는 인입 기억 요청을 식별할 수 있는 멀티프로세서 컴퓨터 시스템.
  16. 제1항에 있어서, 상기 프로세싱 노드는 슈퍼바이저 소프트웨어에 의해 현재 상기 노드 상에서 디스패치될 수 있는 소프트웨어 프로세스의 어드레스 공간 부분이 아닌 캐시 라인을 목표로 하는 인입 기억 요청을 식별할 수 있으며, 이에 의해 상기 프로세싱 노드 상의 임의의 소프트웨어 프로세스에 의해 이제는 활성적으로 이용되지 않는 캐시 라인을 식별하고 상기 코히어런시 영역 외부로부터의 기억 요청에 응답하여 상기 프로세싱 노드의 캐시 엔트리를 무효로 변경시키는 멀티프로세서 컴퓨터 시스템.
  17. 제1항에 있어서, 상기 프로세싱 노드는 슈퍼바이저 소프트웨어에 의해 현재 상기 노드 상에서 디스패치될 수 있는 소프트웨어 프로세스의 어드레스 공간 부분이 아닌 캐시 라인을 목표로 하는 인입 기억 요청을 식별할 수 있으며, 소프트웨어 프로세스에 대한 상기 코히어런시 경계가 효과적으로 변경되는 동안 상기 멀티프로세서 컴퓨터 시스템 내의 모든 캐시가 코히어런시 트랜잭션의 처리를 계속할 수 있게 하는 멀티프로세서 컴퓨터 시스템.
  18. 제1항에 있어서, 상기 프로세싱 노드는 슈퍼바이저 소프트웨어에 의해 현재 상기 노드 상에서 디스패치될 수 있는 소프트웨어 프로세스의 어드레스 공간 부분이 아닌 캐시 라인을 목표로 하는 인입 기억 요청을 식별할 수 있도록 하여, 임의의 프로세싱 노드 상에서 더 이상 활성적으로 디스패치되고 있지 않는 소프트웨어 프로세스에 속하는 캐시 라인이 식별되어 무효화되고 이로 인해 이들의 재사용을 가능케 하는 멀티프로세서 컴퓨터 시스템.
  19. 제1항에 있어서, 슈퍼바이저 소프트웨어는 프로세서 상태 정보를 이용하여 하나의 발신 프로세서의 인입 기억 요청에 의해 생성된 코히어런시 트랜잭션을 검사하는 데에 멀티프로세서 컴퓨터 시스템에서 어떤 캐시가 필요한 지를 판단하는 멀티프로세서 컴퓨터 시스템.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 멀티프로세서 컴퓨터 시스템에서의 소프트웨어 프로세스 이동 방법에 있어서:
    슈퍼바이저 소프트웨어가 그 자신의 코히어런시 영역을 갖는 각각의 프로세스에 대해 고유의 코히어런시 영역 ID를 생성한 후에, 상기 프로세싱 노드 중 하나 이상의 캐시 컨텐츠를 선택적으로 삭제할 필요 없이 상기 멀티프로세서 컴퓨터 시스템의 다수의 프로세싱 노드와 연관된 캐시에 대한 다수의 캐시 코히어런시 영역들 간에서 소프트웨어 프로세스를 이동하는 단계
    를 포함하고, 상기 슈퍼바이저 소프트웨어는 현재 상기 프로세싱 노드 상에서 디스패치될 수 있는 모든 코히어런시 영역 ID에 대한 엔트리를 갖는 상기 멀티 프로세서 컴퓨터 시스템 내의 각 프로세싱 노드에 대한 테이블을 생성하는, 멀티프로세서 컴퓨터 시스템에서의 소프트웨어 프로세스 이동 방법.
  30. 청구항 30은(는) 설정등록료 납부시 포기되었습니다.
    제29항에 있어서, 상기 트랜잭션이 상기 멀티프로세서 컴퓨터 시스템의 다른 프로세서에 통신하게 전송될 때 하나의 프로세서와 연관되는 상기 코히어런시 모드 비트 및 코히어런시 영역 ID를 요청된 기억 어드레스로 상기 프로세서에 의해 초기화된 각 기억 트랜잭션과 함께 보내는 단계를 더 포함하는, 멀티프로세서 컴퓨터 시스템에서의 소프트웨어 프로세스 이동 방법.
  31. 청구항 31은(는) 설정등록료 납부시 포기되었습니다.
    제29항에 있어서, 상기 멀티프로세서 컴퓨터 시스템의 프로세싱 노드 내의 캐시 컨트롤러 로직이 상기 프로세싱 노드에서 기억 어드레스에 대한 인입 기억 요청을 수신하면, 요청된 기억 어드레스에 대한 캐시 엔트리가 상기 인입 기억 요청을 초기화한 프로세서를 포함하는 상기 멀티프로세서 컴퓨터 시스템의 프로세싱 노드 내의 임의의 캐시 상에 존재하는 것으로 파악될 때 마다, 상기 요청된 기억 어드레스의 사본이 현재 코히어런시 영역 모드에 의해 지정된 바와 같은 상기 프로세싱 노드의 현재 코히어런시 영역 외부에 존재하지 않는다는 것을 슈퍼바이저 소프트웨어로 확실히 하도록 하는 단계를 더 포함하는, 멀티프로세서 컴퓨터 시스템에서의 소프트웨어 프로세스 이동 방법.
KR1020040036694A 2003-06-25 2004-05-24 복수의 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템 및 캐시 삭제가 없는 코히어런시 영역들 간의 소프트웨어 프로세스 이동 KR100745478B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/603,252 US7469321B2 (en) 2003-06-25 2003-06-25 Software process migration between coherency regions without cache purges
US10/603,252 2003-06-25

Publications (2)

Publication Number Publication Date
KR20050001305A KR20050001305A (ko) 2005-01-06
KR100745478B1 true KR100745478B1 (ko) 2007-08-02

Family

ID=34079546

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040036694A KR100745478B1 (ko) 2003-06-25 2004-05-24 복수의 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템 및 캐시 삭제가 없는 코히어런시 영역들 간의 소프트웨어 프로세스 이동

Country Status (4)

Country Link
US (1) US7469321B2 (ko)
JP (1) JP4082612B2 (ko)
KR (1) KR100745478B1 (ko)
CN (1) CN1294497C (ko)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484043B2 (en) * 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions
GB0315504D0 (en) * 2003-07-02 2003-08-06 Advanced Risc Mach Ltd Coherent multi-processing system
US7725619B2 (en) * 2005-09-15 2010-05-25 International Business Machines Corporation Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US8812793B2 (en) * 2006-06-19 2014-08-19 International Business Machines Corporation Silent invalid state transition handling in an SMP environment
US8195892B2 (en) * 2006-06-19 2012-06-05 International Business Machines Corporation Structure for silent invalid state transition handling in an SMP environment
US7987464B2 (en) * 2006-07-25 2011-07-26 International Business Machines Corporation Logical partitioning and virtualization in a heterogeneous architecture
US20080104333A1 (en) * 2006-10-31 2008-05-01 Veazey Judson E Tracking of higher-level cache contents in a lower-level cache
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US7818508B2 (en) * 2007-04-27 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for achieving enhanced memory access capabilities
US7904676B2 (en) * 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
US20080270708A1 (en) * 2007-04-30 2008-10-30 Craig Warner System and Method for Achieving Cache Coherency Within Multiprocessor Computer System
JP4457240B2 (ja) * 2007-05-09 2010-04-28 フェリカネットワークス株式会社 データ管理システム、管理サーバ、データ管理方法、およびプログラム
US8782779B2 (en) * 2007-09-26 2014-07-15 Hewlett-Packard Development Company, L.P. System and method for achieving protected region within computer system
US8612973B2 (en) * 2007-09-26 2013-12-17 Hewlett-Packard Development Company, L.P. Method and system for handling interrupts within computer system during hardware resource migration
US9207990B2 (en) * 2007-09-28 2015-12-08 Hewlett-Packard Development Company, L.P. Method and system for migrating critical resources within computer systems
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US7743375B2 (en) * 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
US8140817B2 (en) * 2009-02-24 2012-03-20 International Business Machines Corporation Dynamic logical partition management for NUMA machines and clusters
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
IL211490A (en) 2010-03-02 2016-09-29 Marvell Israel(M I S L ) Ltd Early next packets of information
US8327047B2 (en) 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
US8793439B2 (en) * 2010-03-18 2014-07-29 Oracle International Corporation Accelerating memory operations using virtualization information
CN101819596B (zh) * 2010-04-28 2011-11-02 烽火通信科技股份有限公司 一种基于内存的xml脚本缓存容器
US8543770B2 (en) 2010-05-26 2013-09-24 International Business Machines Corporation Assigning memory to on-chip coherence domains
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US8364904B2 (en) 2010-06-21 2013-01-29 International Business Machines Corporation Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
JP5121896B2 (ja) * 2010-08-11 2013-01-16 株式会社東芝 マルチコアプロセッサシステムおよびマルチコアプロセッサ
CN102110019B (zh) * 2010-12-31 2013-01-30 北京航空航天大学 一种基于众核处理器和分区结构的事务存储方法
JP5780243B2 (ja) * 2011-01-07 2015-09-16 富士通株式会社 スケジューリング方法、およびマルチコアプロセッサシステム
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
JP2013003793A (ja) 2011-06-15 2013-01-07 Toshiba Corp マルチコアプロセッサシステムおよびマルチコアプロセッサ
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
WO2013095637A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved permute instructions
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
WO2013095620A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
CN102708190B (zh) * 2012-05-15 2016-09-28 浪潮电子信息产业股份有限公司 一种CC-NUMA系统中结点控制芯片目录Cache的方法
US8943516B2 (en) * 2012-05-31 2015-01-27 International Business Machines Corporation Mechanism for optimized intra-die inter-nodelet messaging communication
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US20140032854A1 (en) * 2012-07-30 2014-01-30 Futurewei Technologies, Inc. Coherence Management Using a Coherent Domain Table
US9135172B2 (en) 2012-08-02 2015-09-15 Qualcomm Incorporated Cache data migration in a multicore processing system
CN109240704B (zh) 2012-11-06 2022-06-14 相干逻辑公司 用于设计重用的多处理器编程工具包
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
KR20150136045A (ko) * 2013-03-28 2015-12-04 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 리플렉티브 메모리를 이용한 일관성 구현
CN103365656B (zh) * 2013-06-28 2016-10-19 华为技术有限公司 保证缓存一致性的方法和终端
US10751587B2 (en) 2014-05-15 2020-08-25 Karsten Manufacturing Corporation Club heads having reinforced club head faces and related methods
US10918919B2 (en) 2014-05-15 2021-02-16 Karsten Manufacturing Corporation Club heads having reinforced club head faces and related methods
US10258843B2 (en) 2014-05-15 2019-04-16 Karsten Manufacturing Corporation Club heads having reinforced club head faces and related methods
US10888743B2 (en) 2014-10-24 2021-01-12 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
US11027177B2 (en) 2014-10-24 2021-06-08 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
TWI581835B (zh) 2014-10-24 2017-05-11 卡斯登製造公司 具有能量儲存特性的高爾夫球桿頭及其製作方法
US20230014268A1 (en) * 2014-10-24 2023-01-19 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
US11278772B2 (en) 2014-10-24 2022-03-22 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
US20160246721A1 (en) * 2015-02-19 2016-08-25 Qualcomm Incorporated Role based cache coherence bus traffic control
US20160271462A1 (en) * 2015-03-17 2016-09-22 Dean L. Knuth Golf club with low and rearward center of gravity
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
CN107894914A (zh) * 2016-09-30 2018-04-10 华为技术有限公司 缓存一致性处理方法和装置
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot
US10740239B2 (en) * 2018-12-11 2020-08-11 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990072598A (ko) * 1998-02-17 1999-09-27 포만 제프리 엘 최적화된캐시동작을독립적으로구현하는캐시일관성프로토콜

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
JPH06291696A (ja) * 1993-03-30 1994-10-18 Sony Corp アンテナ共用器
WO1994022531A1 (en) * 1993-03-31 1994-10-13 Motorola Inc. Switch circuit and method therefor
JP3291913B2 (ja) * 1994-05-17 2002-06-17 株式会社村田製作所 高周波スイッチ
US5819061A (en) * 1994-07-25 1998-10-06 International Business Machines Corporation Method and apparatus for dynamic storage reconfiguration in a partitioned environment
US5852716A (en) * 1996-07-02 1998-12-22 Sun Microsystems, Inc. Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions
US6272602B1 (en) * 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6636949B2 (en) * 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7065761B2 (en) * 2001-03-01 2006-06-20 International Business Machines Corporation Nonvolatile logical partition system data management
EP1255201B1 (en) * 2001-05-01 2009-12-23 Sun Microsystems, Inc. Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
US6633959B2 (en) * 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US7484043B2 (en) * 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990072598A (ko) * 1998-02-17 1999-09-27 포만 제프리 엘 최적화된캐시동작을독립적으로구현하는캐시일관성프로토콜

Also Published As

Publication number Publication date
CN1294497C (zh) 2007-01-10
US20050021913A1 (en) 2005-01-27
US7469321B2 (en) 2008-12-23
KR20050001305A (ko) 2005-01-06
JP2005018772A (ja) 2005-01-20
CN1577294A (zh) 2005-02-09
JP4082612B2 (ja) 2008-04-30

Similar Documents

Publication Publication Date Title
KR100745478B1 (ko) 복수의 코히어런시 영역을 갖는 멀티프로세서 컴퓨터 시스템 및 캐시 삭제가 없는 코히어런시 영역들 간의 소프트웨어 프로세스 이동
US7484043B2 (en) Multiprocessor system with dynamic cache coherency regions
US5734922A (en) Multiprocessing system configured to detect and efficiently provide for migratory data access patterns
US5852716A (en) Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions
US5878268A (en) Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5923847A (en) Split-SMP computer system configured to operate in a protected mode having repeater which inhibits transaction to local address partiton
US4755930A (en) Hierarchical cache memory system and method
US5887138A (en) Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US5749095A (en) Multiprocessing system configured to perform efficient write operations
US5561779A (en) Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
RU2220444C2 (ru) Компьютерная система и способ передачи данных в компьютерной системе
US5860159A (en) Multiprocessing system including an apparatus for optimizing spin--lock operations
EP0818733B1 (en) A multiprocessing system configured to perform software initiated prefetch operations
US6633967B1 (en) Coherent translation look-aside buffer
US20010037419A1 (en) Multiprocessing system configured to perform efficient block copy operations
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
US20060143406A1 (en) Predictive early write-back of owned cache blocks in a shared memory computer system
JPH10214230A (ja) 応答カウントを含むコヒーレンシー・プロトコルを採用したマルチプロセッサ・システム
JPH10133917A (ja) コヒーレンシー関連エラー・ロッジング能力を有するマルチプロセス・システム
US20080109624A1 (en) Multiprocessor system with private memory sections
US20090182893A1 (en) Cache coherence in a virtual machine managed system
US5829027A (en) Removable processor board having first, second and third level cache system for use in a multiprocessor computer system
CN113853589A (zh) 高速缓冲存储器大小改变
CA2148186A1 (en) Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
EP0817094B1 (en) A split-SMP computer system

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: 20120627

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee