KR101662829B1 - 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법 - Google Patents

다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법 Download PDF

Info

Publication number
KR101662829B1
KR101662829B1 KR1020090112096A KR20090112096A KR101662829B1 KR 101662829 B1 KR101662829 B1 KR 101662829B1 KR 1020090112096 A KR1020090112096 A KR 1020090112096A KR 20090112096 A KR20090112096 A KR 20090112096A KR 101662829 B1 KR101662829 B1 KR 101662829B1
Authority
KR
South Korea
Prior art keywords
request
state
processors
migration
cache
Prior art date
Application number
KR1020090112096A
Other languages
English (en)
Other versions
KR20110055179A (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 삼성전자주식회사
Priority to KR1020090112096A priority Critical patent/KR101662829B1/ko
Priority to US12/858,571 priority patent/US8566523B2/en
Priority to JP2010245535A priority patent/JP5752918B2/ja
Publication of KR20110055179A publication Critical patent/KR20110055179A/ko
Application granted granted Critical
Publication of KR101662829B1 publication Critical patent/KR101662829B1/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
    • 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/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Abstract

본 발명에 의한 캐시 일관성 관리 장치는, 복수의 프로세서들 사이에서 발생되는 핑퐁 마이그레이션 시퀀스를 모니터링하는 핑퐁 모니터링부, 상기 모니터링 결과에 응답해서 상기 핑퐁 마이그레이션 시퀀스의 연속 발생 횟수를 카운트하는 카운팅부, 그리고 상기 카운트 결과를 근거로 하여 마이그레이션 리퀘스트를 비-마이그레이토리 쉐어링 방식의 리퀘스트로 변경하는 리퀘스트 변경부를 포함한다.
캐시, 일관성, 다중 프로세서

Description

다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법{MULTI-PROCESSOR AND APPARATUS AND METHOD FOR MANAGING CACHE COHERENCE FOR THE SAME}
본 발명은 컴퓨팅 시스템에 관한 것으로, 좀 더 구체적으로는 복수 개의 코어들을 구비한 다중 프로세서를 위한 캐시 일관성 관리 장치 및 방법에 관한 것이다.
다중 프로세서(multi-processor)는 병렬 프로그램들을 처리하는데 흔히 사용되는 시스템 중 하나이다. 다중 프로세서에 구비된 복수 개의 프로세서들 각각에는, 빠른 속도의 프로세서와 느린 속도의 주 메모리(main memory) 사이의 수행 속도의 차이를 완화하기 위해 캐시 메모리(cache memory)가 사용된다.
각각의 프로세서가 자신만의 로컬 캐시를 가지고 있으면서 다른 프로세서들과 메모리를 공유하고 있는 경우, 캐시의 갱신으로 인한 데이터 불일치 문제가 발생될 수 있다. 예를 들면, 변수 X에 대해서 두 클라이언트가 변수 X를 공유하고 있고, 변수 X의 값이 0이라고 하자. 이때 제 1 프로세서가 X에 1을 대입하고 제 2 프로세서가 변수 X를 읽어 들이게 되면, 제 2 프로세서는 제 1 프로세서에 의해 수정된 1의 값을 갖는 변수 X를 읽어오는 것이 아니라 현재 자신의 로컬 캐시에 있는 0 의 값을 갖는 변수 X를 읽어 오게 된다. 따라서, 제 1 프로세서에 구비된 제 1 캐시와, 제 2 프로세서에 구비된 제 2 캐시는 동일한 변수 X에 대해 서로 다른 값을 가지게 되므로, 제 1 및 제 2 프로세서들 사이에는 데이터 불일치(data inconsistency) 문제가 발생하게 된다. 이러한 데이터 불일치 문제를 해결하기 위해, 데이터 일관성 프로토콜(data coherence protocol)이 적용될 수 있다.
특히, 공유 메모리를 이용하는 다중 프로세서 시스템에서는 캐시 메모리들 사이에 데이터 일관성(data coherence)이 필수적으로 유지되어야 한다. 다중 프로세서 시스템에 구비된 각 프로세서의 동작 성능을 개선시키기 위해서는, 프로세서의 불필요한 대기 시간 및 버스 트래픽을 줄이면서 캐시 메모리들 사이에 데이터 일관성을 효율적으로 유지시킬 수 있는 방안이 요구된다
본 발명의 목적은 다중 프로세서들에 적용되는 캐시 일관성 관리 동작시 불필요한 트랜잭션을 방지할 수 있는 캐시 일관성 관리 장치 및 방법을 제공하는데 있다.
본 발명의 다른 목적은 다른 프로세서의 대기 시간 및 버스 트래픽을 줄이고, 다중 프로세서의 동작 성능을 향상시킬 수 있는 캐시 일관성 관리 장치 및 방법을 제공하는데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 캐시 일관성 관리 장치는, 복 수의 프로세서들 사이에서 발생되는 핑퐁 마이그레이션 시퀀스를 모니터링하는 핑퐁 모니터링부; 상기 모니터링 결과에 응답해서 상기 핑퐁 마이그레이션 시퀀스의 연속 발생 횟수를 카운트하는 카운팅부; 그리고 상기 카운트 결과를 근거로 하여 마이그레이션 리퀘스트를 비-마이그레이토리 쉐어링 방식의 리퀘스트로 변경하는 리퀘스트 변경부를 포함할 수 있다.
이 실시예에 있어서, 상기 핑퐁 모니터링부는 상기 모니터링 결과에 응답해서 상기 복수의 프로세서들에 적용될 일관성 관리 모드를 변경할 수 있다.
이 실시예에 있어서, 상기 일관성 관리 모드는 수정 상태, 배타적 상태, 공유 상태 및 무효 상태를 포함하는 MESI 프로토콜을 기반으로 구성될 수 있다.
이 실시예에 있어서, 상기 일관성 관리 모드에는 마이그레이토리 쉐어링 방식이 선택적으로 적용될 수 있다.
이 실시예에 있어서, 상기 리퀘스트 변경부는, 상기 카운트 결과가 소정의 임계값 보다 크거나 같은 경우 상기 마이그레이션 리퀘스트를 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트로 변경할 수 있다.
이 실시예에 있어서, 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트는 공유 리퀘스트를 포함할 수 있다.
이 실시예에 있어서, 상기 핑퐁 마이그레이션 시퀀스는 상기 복수의 프로세서들로부터 제공된 리퀘스트들에 의해 수행되는 3단계의 상태 천이를 포함할 수 있다.
이 실시예에 있어서, 상기 카운팅부는 상기 복수의 프로세서들 각각의 태그 램에 대응되는 복수의 카운터들; 소정의 임계값을 저장하는 레지스터; 그리고 상기 복수의 카운터들에서 카운팅된 결과가 상기 임계값에 도달하였는지를 판별하는 제 1 판별회로를 포함할 수 있다.
이 실시예에 있어서, 상기 리퀘스트 변경부는 상기 복수의 프로세서들로부터 현재 입력된 리퀘스트가 상기 마이그레이션 리퀘스트인지 여부를 판별하는 제 2 판별회로; 상기 제 1 판별회로의 판별 결과와 상기 제 2 판별회로의 판별 결과에 응답해서 선택신호를 발생하는 논리회로; 그리고 상기 선택신호에 응답해서 상기 현재 입력된 마이그레이션 리퀘스트 및 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트 중 하나를 출력하는 리퀘스트 출력부를 포함할 수 있다.
이 실시예에 있어서, 상기 리퀘스트 출력부는, 상기 카운트 결과가 상기 임계값에 도달하였고, 상기 현재 입력된 리퀘스트가 상기 마이그레이션 리퀘스트인 경우, 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트를 출력할 수 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 다중 프로세서는, 각각이 하나 이상의 캐시를 구비한 복수의 프로세서들; 그리고 상기 복수의 프로세서들간에 발생되는 핑퐁 마이그레이션 시퀀스의 연속 발생횟수를 카운트하고, 상기 카운트 결과를 근거로 하여 상기 복수의 프로세서들에 대한 일관성 관리 모드를 가변시키는 캐시 일관성 관리 장치를 포함할 수 있다.
이 실시예에 있어서, 상기 캐시 일관성 관리 장치는 스눕 버스를 통해 상기 복수의 프로세서들에 접속될 수 있다.
이 실시예에 있어서, 상기 핑퐁 마이그레이션 시퀀스는 상기 복수의 프로세 서들로부터 제공된 리퀘스트들에 의해 수행되는 3단계의 상태 천이를 포함할 수 있다.
이 실시예에 있어서, 상기 일관성 관리 모드에는 마이그레이토리 쉐어링 방식이 선택적으로 적용될 수 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 캐시 일관성 관리 방법은, 복수의 프로세서들간에 발생되는 핑퐁 마이그레이션 시퀀스의 연속 발생 횟수를 카운트하는 단계; 그리고 상기 카운트 결과를 근거로 하여 마이그레이션 리퀘스트를 비-마이그레이토리 쉐어링 방식의 리퀘스트로 변경하여 대응되는 프로세서로 제공하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 카운트 결과를 근거로 하여 상기 복수의 프로세서들에서 적용될 일관성 관리 모드를 변경하는 단계를 더 포함할 수 있다.
이 실시예에 있어서, 상기 일관성 관리 모드에는 마이그레이토리 쉐어링 방식이 선택적으로 적용될 수 있다.
이 실시예에 있어서, 상기 핑퐁 마이그레이션 시퀀스는 상기 복수의 프로세서들로부터 제공된 리퀘스트들에 의해 3단계의 상태 천이가 1회 수행된 것에 대응될 수 있다.
이 실시예에 있어서, 상기 마이그레이션 리퀘스트는, 상기 카운트 결과가 소정의 임계값 보다 크거나 같은 경우 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트로 변경될 수 있다.
이 실시예에 있어서, 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트는 공 유 리퀘스트를 포함할 수 있다.
이상과 같은 본 발명에 의하면, 다중 프로세서의 캐시 일관성 관리 동작시 프로세서들 사이에 불필요한 트랜잭션이 발생되지 않게 된다. 그 결과, 프로세서의 불필요한 대기 시간 및 버스 트래픽을 줄일 수 있게 되고, 다중 프로세서의 동작 성능이 향상될 수 있게 된다.
본 발명의 예시적인 실시 예들이 참조 도면들에 의거하여 이하 상세히 설명될 것이다. 그러나 아래에서 설명될 본 발명의 반도체 디스크 장치의 회로 구성 및 동작은 예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경할 수 있은 물론이다.
본 발명의 캐시 일관성 관리 장치는 프로세서들 사이에서 발생되는 핑퐁(ping-pong) 현상을 모니터링하고, 모니터링된 결과를 근거로 하여 다중 프로세서에 적용되는 캐시 일관성 관리 모드를 가변시킬 수 있다. 이와 같은 구성에 따르면 캐시 일관성 관리 동작시 프로세서들 사이에 불필요한 트랜잭션이 발생되지 않게 된다. 그 결과, 프로세서의 대기 시간 및 버스 트래픽을 줄일 수 있고, 다중 프로세서의 동작 성능이 효과적으로 향상된다.
도 1은 본 발명의 실시예에 따른 다중 프로세서 시스템의 개략적인 구성을 보여주는 블록도이다.
도 1을 참조하면, 다중 프로세서 시스템은 복수 개의 프로세서들(P0, P1)을 포함할 수 있다. 프로세서들(P0, P1) 각각은 다중 프로세서 시스템 내에서 노드를 형성할 수 있다. 도 1에는 2 개의 프로세서들(P0, P1)이 예시적으로 도시되어 있으나, 이는 본 발명을 설명하기 위한 일 예에 불과하며, 다중 프로세서 시스템에 구비되는 프로세서들의 개수(즉, 노드의 개수)는 다양하게 구성될 수 있다.
각각의 프로세서(Pi, i는 양의 정수)는 중앙처리 장치(Central Processing Unit ; CPU)로서의 기능을 수행하는 코어(Core i, i는 양의 정수)와, 적어도 하나 이상의 캐시 메모리(Cache i, i는 양의 정수)를 포함할 수 있다. 캐시 메모리(Cache i)는, 각각의 프로세서(Pi) 내에서 계층 구조(cache hierachy)를 가지도록 구성될 수 있다. 예를 들면, 각각의 프로세서(Pi) 내에 구비되는 캐시 메모리(Cache i)는, 제 1 레벨 캐시(L1 cache), 제 2 레벨 캐시(L2 cache), 또는 제 3 레벨 캐시(L3 cache)와 같은 복수 개의 캐시들이 계층적으로 구성될 수 있다. 아래에서 설명될 본 발명의 데이터 일관성(data coherence) 관리 방법은, 특정 계층의 캐시 메모리에만 국한되지 않으며, 다양한 형태 및 다양한 계층의 캐시 메모리의 데이터 일관성 관리에 적용될 수 있다.
복수 개의 프로세서들(P0, P1)은 내부 버스(예를 들면, 스눕 버스(snoop bus))를 통해 일관성 관리부(coherence managing unit ; 200)와 접속될 수 있다. 일관성 관리부(200)는 복수의 프로세서들(P0, P1)에 구비되어 있는 복수의 캐시 메모리들(Cache0, Cache1)에 대한 데이터 일관성 관리를 수행할 수 있다. 일관성 관리부(200)는 스눕 버스(snoop bus)를 통해 복수 개의 프로세서들(P0, P1)과 공통으로 접속될 수도 있고, 또는 각각의 프로세서(P0, P1)마다 구비될 수도 있다. 그리 고, 일관성 관리부(200)는 공유 버스(미 도시됨)를 통해 메인 메모리 및 I/O 장치들과 접속될 수 있다. 일관성 관리부(200)의 구성 형태는 특정 형태에 국한되지 않고 다양하게 변경 및 변형될 수 있다.
아래에서 상세히 설명되겠지만, SMP(Symmetric Multi-Processors)와 같은 다중 프로세서에서는, 공유된 캐시 메모리를 하나의 코어(Core0 또는 Core1)에서만 읽거나 쓰는 방식이 적용될 수 있다. 이를 마이그레이토리 오브젝션(migratory objection) 방식 또는 마이그레이션(migration) 방식이라 한다. 마이그레이토리 쉐어링 방식 또는 마이그레이션 방식이 적용되는 경우, 일관성 관리부(200)와 코어들(Core0, Core1) 사이에 마이그레이션 리퀘스트가 요청될 수 있다. 마이그레이션 리퀘스트가 요청되면, 하나의 코어(Core0)에서 다른 하나의 코어(Core1)로 데이터를 전송할 때, 원래 데이터를 가지고 있던 코어(Core0 또는 Core1)의 캐시라인(cache line)을 무효화(invalid) 시키는 동작을 수행할 수 있다.
마이그레이토리 쉐어링 방식은, MSI 기반의 일관성 제어 정책(MSI based coherence policy)을 따르는 프로토콜에서 빈번하게 발생될 수 있는 기록 무효화 리퀘스트(write invalid request)를 줄이기 위해 제안된 방식이다. 마이그레이토리 쉐어링 방식이 적용될 때, 마이그레이토리 쉐어링(migratory sharing)이 아닌 데이터에 대한 접근(예를 들면, 읽기 동작)이 연속적으로 수행되는 경우, 캐시 미스(cache miss)와 트랜젝션(예를 들면, 마이그레토리 트랜젝션(migratory transaction) 등)이 빈번하게 발생하게 되어, 시스템의 성능이 저하될 수 있다. 이와 같이 복수의 프로세서들 사이에서 불필요한 트랜젝션들이 서로 교대로 발생되는 현상을 핑퐁(ping-pong) 현상이라 한다.
본 발명에서는 이와 같은 문제를 방지하기 위해, 일관성 관리부(200)에 FMSC(False Migratory Sharing Controller ; 100)를 구비할 수 있다. FMSC(100)는 일관성 관리부(200)에 의해 수행되는 캐시 일관성 관리 동작시, 다중 프로세서들에 대한 일관성 관리 동작에 마이그레이션(migration) 방식(즉, 마이그레이토리 쉐어링 방식)이 선택적으로 적용될 수 있도록 제어할 수 있다. 예시적인 실시예에 있어서, 본 발명의 FMSC(100)는 프로세서들 사이에서 발생되는 핑퐁(ping-pong) 현상을 모니터링하고, 모니터링된 결과를 근거로 하여 마이그레이션 리퀘스트를 비-마이그레이토리 쉐어링 방식의 리퀘스트(예를 들면, 공유 리퀘스트)로 가변시킬 수 있다. 이와 같은 구성에 따르면 캐시 일관성 관리 동작시 프로세서들 사이에 불필요한 트랜잭션이 발생되지 않게 된다. 그 결과, 프로세서의 대기 시간 및 버스 트래픽을 줄일 수 있고, 다중 프로세서의 동작 성능이 효과적으로 향상된다.
도 2는 일관성 관리 프로토콜 중 하나인 MESI 프로토콜의 상태 천이를 예시적으로 보여주는 도면이다.
도 2를 참조하면, MESI 프로토콜은 4개의 캐시 상태를 가질 수 있다. 예를 들면, 수정(modified; M) 상태, 배타적(exclusive; E) 상태, 공유(shared; S) 상태 및 무효(invalid; I) 상태를 가질 수 있다.
수정 상태(M)는 해당 캐시에서 수행된 쓰기(write) 동작으로 인해, 캐시 메모리에 저장되어 있던 데이터가 수정된 것을 의미할 수 있다. 배타적 상태(E)는 해당 캐시 내의 데이터만 유효하고, 다른 캐시의 데이터는 유효하지 않음을 의미할 수 있다. 공유 상태(S)는 데이터가 두 개 이상의 프로세서의 캐시들에 저장되어 있음을 의미할 수 있다. 캐시 라인이 공유 상태(S)에 있으면, 해당 캐시의 데이터와, 상기 데이터를 공유하는 다른 캐시의 데이터도 모두 유효하게 된다. 무효 상태(I)는 해당 캐시의 데이터가 유효하지 않음을 의미할 수 있다. 예를 들면, 공유 상태(S)에 있는 두 개의 캐시들 중 하나의 캐시에서 데이터가 수정된 경우, 수정되지 않는 다른 캐시의 데이터는 무효 상태(I)로 진입하여 해당 데이터가 무효화될 수 있다.
MESI 프로토콜은 MSI 프로토콜을 기반으로 한다. MSI 프로토콜을 기반으로 하는 일관성 관리 프로토콜에는 MESI, MOSI, MOSEI 등이 있다. 아래에서 상세히 설명되겠지만, 본 발명에는 MESI 프로토콜에 마이그레이토리 쉐어링 방식이 추가된 일관성 관리 프로토콜이 적용될 수 있으며, 상기 마이그레이토리 쉐어링 방식은 프로세서들간에 발생되는 트랜잭션의 횟수에 따라서 선택적으로 적용될 수 있다. 예시적인 실시 예에 있어서, 마이그레이토리 쉐어링 방식은 MESI 프로토콜 이외에도 다른 종류의 프로토콜도 적용 가능하다.
도 3은 다중 프로세서 시스템의 일관성 관리에 비-마이그레이토리 쉐어링 방식이 적용되었을 때의 상태 천이와, 마이그레이토리 쉐어링 방식이 적용되었을 때의 상태 천이를 예시적으로 보여주는 도면이다. 도 3에는 MESI 프로토콜에 마이그레이토리 쉐어링 방식이 적용된 경우와, 마이그레이토리 쉐어링 방식이 적용되지 않은 경우(즉, 비-마이그레이토리 쉐어링 방식)가 예시적으로 도시되어 있다.
먼저, 일관성 관리에 비-마이그레이토리 쉐어링 방식(예를 들면, 마이그레 이토리 쉐어링 방식이 적용되지 않은 MESI 프로토콜)의 경우, 'abcd'의 데이터가 저장된 제 1 프로세서(P0)의 캐시는 배타적 상태(E)에 있게 될 것이다. 그리고, 유효한 데이터가 저장되어 있지 않은 제 2 프로세서(P1)의 캐시는 무효 상태(I)에 있게 될 것이다. 제 2 프로세서(P1)가 제 1 프로세서(P0)의 캐시로부터 데이터를 읽어오는 경우, 제 2 프로세서(P1)는 제 1 프로세서(P0)로 읽기 리퀘스트(Read Request)를 요청한다(화살표 ①참조). 그리고 나서, 제 1 프로세서(P0)의 캐시로부터 'abcd'의 데이터를 읽어오게 된다(화살표 ②참조). 제 1 및 제 2 프로세서(P0, P1) 사이에서 수행되는 읽기 리퀘스트 동작은 스눕 버스를 통해 수행될 수 있다. 일관성 관리부(200)는 스눕 버스를 통해 요청된 읽기 리퀘스트를 감지하고, 감지 결과를 근거로 하여 읽기 동작이 수행된 제 2 프로세서(P1)의 캐시를 무효 상태(I)에서 공유 상태(S)로 변경한다. 그리고, 데이터가 읽혀진 제 1 프로세서(P0)의 캐시를 배타적 상태(E)에서 공유 상태(S)로 변경한다.
제 1 및 제 2 프로세서(P0, P1)의 캐시가 공유된 상태에서 제 2 프로세서(P1)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정하고자 할 경우, 제 2 프로세서(P1)는 먼저 스눕 버스를 통해 제 1 프로세서(P0)로 무효화 리퀘스트(Invalid Request)를 전송한다(화살표 ③참조). 일관성 관리부(200)는 스눕 버스를 통해 요청된 무효화 리퀘스트를 감지하고, 감지 결과를 근거로 하여 제 1 프로세서(P0)의 캐시를 공유 상태(S)에서 무효 상태(I)로 변경한다. 제 2 프로세서(P1)의 캐시는, 제 1 프로세서(P0)의 캐시가 무효 상태(I)로 변경된 후, 제 2 프로세서(P1)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정한다. 그리고 나서, 제 2 프로세서(P1)의 캐시의 상태는 일관성 관리부(200)의 제어에 의해 공유 상태(S)에서 수정 상태(M)로 변경된다. 만일, 이러한 상태에서 제 2 프로세서(P1)의 캐시에 저장된 데이터를 다른 값으로 재 수정하는 경우, 제 2 프로세서(P1)의 캐시의 상태는 수정 상태(M)를 그대로 유지하면서 데이터 값만 수정될 것이다.
계속해서, 마이그레이토리 쉐어링 방식의 경우, 'abcd'의 데이터가 저장된 제 1 프로세서(P0)의 캐시는 배타적 상태(E)에 있게 될 것이다. 그리고, 유효한 데이터가 저장되어 있지 않은 제 2 프로세서(P1)의 캐시는 무효 상태(I)에 있게 될 것이다. 제 2 프로세서(P1)가 제 1 프로세서(P0)의 캐시로부터 데이터를 읽어오는 경우, 제 2 프로세서(P1)는 제 1 프로세서(P0)로 마이그레이션 리퀘스트(Migration Request)를 요청한다(화살표 ④참조). 그리고 나서, 제 1 프로세서(P0)의 캐시로부터 'abcd'의 데이터를 읽어오게 된다(화살표 ⑤참조). 제 1 및 제 2 프로세서(P0, P1) 사이에서 수행되는 읽기 리퀘스트 동작은 스눕 버스를 통해 수행될 수 있다. 일관성 관리부(200)는 스눕 버스를 통해 요청된 마이그레이션 리퀘스트를 감지하고, 감지 결과를 근거로 하여 데이터가 읽혀진 제 1 프로세서(P0)의 캐시를 배타적 상태(E)에서 무효 상태(I)로 변경한다. 그리고, 데이터를 읽어온 제 2 프로세서(P1)의 캐시를 무효 상태(I)에서 배타적 상태(E)로 변경한다.
이 상태에서 제 2 프로세서(P1)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정하고자 할 경우, 제 2 프로세서(P1)는 어떠한 리퀘스트도 발생하지 않고 데이터를 직접 'abcd'에서 'efgh'로 수정한다. 이 경우, 제 2 프로세서(P1)의 캐시의 상태는 일관성 관리부(200)의 제어에 의해 배타적 상태(E)에서 수정 상 태(M)로 변경된다. 만일, 이러한 상태에서 제 2 프로세서(P1)의 캐시에 저장된 데이터를 다른 값으로 재 수정하는 경우, 제 2 프로세서(P1)의 캐시의 상태는 수정 상태(M)를 그대로 유지하면서 데이터 값만 수정될 것이다.
도 3에 도시된 바와 같이, 마이그레이토리 쉐어링 방식이 적용된 경우, 캐시에 대한 쓰기 동작에서 발생되는 무효화 리퀘스트(Invalid Request)(즉, 기록 무효화 리퀘스트(write invalid request))가 필요치 않게 됨을 알 수 있다. 기록 무효화 리퀘스트의 감소는 프로세서의 불필요한 대기 시간 및 버스 트래픽을 줄이는 효과를 가져올 수 있다. 그러나, 일관성 관리에 마이그레이토리 쉐어링 방식이 적용될 경우, 마이그레이토리 쉐어링(migratory sharing)이 아닌 데이터에 대한 접근(예를 들면, 읽기 동작)이 연속적으로 수행될 때에는, 불필요한 트랜젝션(예를 들면, 마이그레토리 트랜젝션 등)으로 인한 핑퐁(ping-pong) 현상이 발생하게 된다.
도 4는 다중 프로세서 시스템의 일관성 관리에 마이그레이토리 쉐어링 방식이 적용되었을 때와, 비-마이그레이토리 쉐어링 방식이 적용되었을 때 발생될 수 있는 핑퐁 현상을 설명하기 위한 도면이다. 도 4에는 MESI 프로토콜에 마이그레이토리 쉐어링 방식이 적용된 경우와, 마이그레이토리 쉐어링 방식이 적용되지 않은 경우(즉, 비-마이그레이토리 쉐어링 방식)가 예시적으로 도시되어 있다.
초기 상태로서 제 1 프로세서(P0)의 캐시에는 'abcd'의 데이터가 저장되어 있고, 제 2 프로세서(P1)의 캐시에는 무효의 데이터 'xxxx'가 저장되어 있다고 가정하자. 이러한 경우, 'abcd'의 데이터가 저장된 제 1 프로세서(P0)의 캐시는 배타 적 상태(E)에 있게 될 것이다. 그리고, 유효한 데이터가 저장되어 있지 않은 제 2 프로세서(P1)의 캐시는 무효 상태(I)에 있게 될 것이다.
먼저, 마이그레이토리 쉐어링 방식이 적용되는 경우에 대해 살펴보기로 하자. 제 2 프로세서(P1)가 제 1 프로세서(P0)의 캐시로부터 데이터를 읽어오는 경우, 제 2 프로세서(P1)는 제 1 프로세서(P0)로 마이그레이션 리퀘스트(Migration Request)를 요청한다(화살표 ⑥참조). 그리고 나서, 제 1 프로세서(P0)의 캐시로부터 'abcd'의 데이터를 읽어오게 된다. 제 1 및 제 2 프로세서(P0, P1) 사이에서 수행되는 읽기 리퀘스트 동작은 스눕 버스를 통해 수행될 수 있다. 일관성 관리부(200)는 스눕 버스를 통해 요청된 마이그레이션 리퀘스트를 감지하고, 감지 결과를 근거로 하여 데이터가 읽혀진 제 1 프로세서(P0)의 캐시를 배타적 상태(E)에서 무효 상태(I)로 변경한다. 그리고, 데이터를 읽어온 제 2 프로세서(P1)의 캐시를 무효 상태(I)에서 배타적 상태(E)로 변경한다.
이 상태에서 제 1 프로세서(P0)가 제 2 프로세서(P1)의 캐시로부터 데이터를 읽어오는 경우, 제 1 프로세서(P0)는 제 2 프로세서(P1)로 공유 리퀘스트(Shared Request)를 요청한다(화살표 ⑦참조). 그리고 나서, 제 2 프로세서(P1)의 캐시로부터 'abcd'의 데이터를 읽어오게 된다. 제 1 및 제 2 프로세서(P0, P1) 사이에서 수행되는 읽기 리퀘스트 동작은 스눕 버스를 통해 수행될 수 있다. 일관성 관리부(200)는 스눕 버스를 통해 요청된 쉐어링 리퀘스트를 감지하고, 감지 결과를 근거로 하여 데이터가 읽혀진 제 2 프로세서(P1)의 캐시를 배타적 상태(E)에서 공유 상태(S)로 변경한다. 그리고, 데이터를 읽어온 제 1 프로세서(P0)의 캐시 를 무효 상태(I)에서 공유 상태(S)로 변경한다.
제 1 및 제 2 프로세서(P0, P1)의 캐시의 데이터가 공유된 상태에서 제 1 프로세서(P0)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정하고자 할 경우, 제 1 프로세서(P0)는 먼저 스눕 버스를 통해 제 2 프로세서(P1)로 무효화 리퀘스트(Invalid Request)를 전송한다(화살표 ⑧참조). 일관성 관리부(200)는 스눕 버스를 통해 요청된 무효화 리퀘스트를 감지하고, 감지 결과를 근거로 하여 제 2 프로세서(P1)의 캐시를 공유 상태(S)에서 무효 상태(I)로 변경한다. 제 1 프로세서(P0)의 캐시는, 제 2 프로세서(P1)의 캐시가 무효 상태(I)로 변경된 후, 제 1 프로세서(P0)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정한다. 그리고 나서, 제 1 프로세서(P0)의 캐시의 상태는 일관성 관리부(200)의 제어에 의해 공유 상태(S)에서 수정 상태(M)로 변경된다.
계속해서, 다중 프로세서 시스템의 일관성 관리에 비-마이그레이토리 쉐어링 방식이 적용되는 경우에 대해 살펴보면 다음과 같다.
동일한 초기 상태에서, 'abcd'의 데이터가 저장된 제 1 프로세서(P0)의 캐시는 배타적 상태(E)에 있게 될 것이다. 그리고, 유효한 데이터가 저장되어 있지 않은 제 2 프로세서(P1)의 캐시는 무효 상태(I)에 있게 될 것이다. 이 상태에서, 제 2 프로세서(P1)가 제 1 프로세서(P0)의 캐시로부터 데이터를 읽어오는 경우, 제 2 프로세서(P1)는 제 1 프로세서(P0)로 읽기 리퀘스트(Read Request)를 요청한다(화살표 ⑨참조). 그리고 나서, 제 1 프로세서(P0)의 캐시로부터 'abcd'의 데이터를 읽어오게 된다. 제 1 및 제 2 프로세서(P0, P1) 사이에서 수행되는 읽기 리퀘스 트 동작은 스눕 버스를 통해 수행될 수 있다. 일관성 관리부(200)는 스눕 버스를 통해 요청된 읽기 리퀘스트를 감지하고, 감지 결과를 근거로 하여 읽기 동작이 수행된 제 2 프로세서(P1)의 캐시를 무효 상태(I)에서 공유 상태(S)로 변경한다. 그리고, 데이터가 읽혀진 제 1 프로세서(P0)의 캐시를 배타적 상태(E)에서 공유 상태(S)로 변경한다.
제 1 및 제 2 프로세서(P0, P1)의 캐시가 공유된 상태에서 제 1 프로세서(P0)가 제 2 프로세서(P1)의 캐시로부터 데이터를 읽어오는 경우, 제 1 프로세서(P0)는 어떠한 리퀘스트도 발생하지 않고도 제 2 프로세서(P1)의 캐시로부터 'abcd'의 데이터를 읽어오게 된다. 이 경우, 제 1 및 제 2 프로세서(P0, P1)는 공유 상태(S)를 그대로 유지하게 된다.
제 1 및 제 2 프로세서(P0, P1)의 캐시가 공유된 상태에서 제 1 프로세서(P0)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정하고자 할 경우, 제 1 프로세서(P0)는 먼저 스눕 버스를 통해 제 2 프로세서(P1)로 무효화 리퀘스트(Invalid Request)를 전송한다(화살표 ⑩참조). 일관성 관리부(200)는 스눕 버스를 통해 요청된 무효화 리퀘스트를 감지하고, 감지 결과를 근거로 하여 제 2 프로세서(P1)의 캐시를 공유 상태(S)에서 무효 상태(I)로 변경한다. 제 1 프로세서(P0)의 캐시는, 제 2 프로세서(P1)의 캐시가 무효 상태(I)로 변경된 후, 제 1 프로세서(P0)의 캐시에 저장된 데이터를 'abcd'에서 'efgh'로 수정한다. 그리고 나서, 제 1 프로세서(P0)의 캐시의 상태는 일관성 관리부(200)의 제어에 의해 공유 상태(S)에서 수정 상태(M)로 변경된다.
도 4에 도시된 바와 같이, 그러나, 일관성 관리에 마이그레이토리 쉐어링 방식이 적용될 경우, 마이그레이토리 쉐어링(migratory sharing)이 아닌 데이터(예를 들면, 도 4의 화살표 ⑥ 참조)에 대한 접근(예를 들면, 읽기 동작)이 수행될 때에는, 불필요한 트랜젝션들로 인한 인해 핑퐁(ping-pong) 현상이 발생할 수 있음을 알 수 있다. 마이그레이토리 쉐어링 방식이 적용될 때 발생될 수 있는 불필요한 트랜젝션을 FMT(false migratory transaction)이라 부르기도 한다.
본 발명에서는 불필요한 트랜젝션이 연속해서 발생되는 문제를 방지하기 위해, 한 종류의 일관성 관리 방식 또는 프로토콜을 고정시켜 적용하지 않고, 적어도 두 개의 일관성 관리 방식들(예를 들면, 마이그레이토리 쉐어링 방식이 적용된 것과, 적용되지 않은 것)을 선택적으로 적용하는 구성을 갖는다. 이를 위해 본 발명의 FMSC(100)는 캐시 일관성 관리 동작시, 프로세서들 사이에서 발생되는 핑퐁(ping-pong) 현상을 모니터링하고, 모니터링된 결과를 근거로 하여 마이그레이션 리퀘스트를 다른 리퀘스트(예를 들면, 공유 리퀘스트)로 가변시킬 수 있다. 이는 캐시 메모리들의 일관성 관리에 마이그레이션(migration) 방식(즉, 마이그레이토리 쉐어링 방식)이 선택적으로 적용되도록 일관성 관리부(200)의 일관성 관리 모드를 변경하는 것을 의미할 수 있다.
도 5는 본 발명의 실시예에 따른 FMSC(100)의 구성을 보여주는 블록도이다.
도 5를 참조하면, FMSC(100)는 핑퐁 모니터링부(ping-pong monitoring unit ; 110), 카운팅부(counting unit ; 130), 및 리퀘스트 변경부(request modifying unit ; 150)로 구성될 수 있다.
핑퐁 모니터링부(110)는 복수의 프로세서들(P0, P1)에 구비되어 있는 복수의 코어들(Core0, Core1)에서 발생되는 반복적인 트랜젝션으로 인한 핑퐁 현상을 모니터링할 수 있다. 핑퐁 현상은 핑퐁 마이그레이션 시퀀스의 발생을 감지함에 의해 모니터링될 수 있다. 핑퐁 모니터링부(110)는 핑퐁 마이그레이션 시퀀스의 감지 결과에 따라서 일관성 관리부(200)의 일관성 관리 모드를 변경할 수 있다. 예시적인 실시예에 있어서, 핑퐁 모니터링부(110)에서 수행된 모니터링 결과에 따라서, 다중 프로세서에 적용되는 일관성 관리 모드에 마이그레이토리 쉐어링 방식이 선택적으로 적용될 수 있다.
또한, 핑퐁 모니터링부(110)는, 핑퐁 마이그레이션 시퀀스의 감지 결과에 응답해서 카운팅부(130)의 카운팅 동작을 제어할 수 있다. 예를 들면, 핑퐁 모니터링부(110)는, 핑퐁 마이그레이션 시퀀스가 연속해서 발생되지 않을 경우, 카운팅부(130)의 카운팅 동작을 초기화할 수 있다. 카운팅부(130)는 핑퐁 모니터링부(110)로부터 발생된 카운트 업 제어 신호에 응답해서, 핑퐁 마이그레이션 시퀀스의 발생 횟수를 카운트 할 수 있다. 카운팅부(130)의 카운트 결과는 리퀘스트 변경부(150)로 제공될 수 있다. 카운팅부(130)의 카운팅 값은 핑퐁 모니터링부(110)의 제어에 의해 초기화될 수 있다. 핑퐁 모니터링부(110)는 카운팅부(130)의 카운팅 값을 초기화하는 동작 외에도, 카운팅부(130)의 카운팅 값을 증가 또는 감소시키는 제어 신호(예를 들면, 카운트 업 제어 신호, 카운트 다운 제어 신호)를 발생할 수도 있다. 이와 같은 구성에 따르면, 핑퐁 모니터링부(110)의 제어에 따라서 카운팅부(130)의 카운팅 값이 조절될 수도 있다.
리퀘스트 변경부(150)는, 복수의 프로세서들(P0, P1)로부터 제공된 리퀘스트와 카운팅부(130)의 카운트 결과에 응답해서, 현재 입력된 마이그레이션 리퀘스트를 다른 종류의 리퀘스트(예를 들면, 공유 리퀘스트)로 선택적으로 대체(replace) 또는 변경(modify)시킬 수 있다. 리퀘스트 변경부(150)에 의해 선택적으로 대체 또는 변경된 리퀘스트는 스눕 버스를 통해 프로세서들로 제공될 수 있다. 예를 들면, 리퀘스트 변경부(150)는 카운팅부(130)의 카운트 결과가 소정의 임계값(TH) 이상일 경우 현재 입력된 마이그레이션 리퀘스트를 비-마이그레이토리 쉐어링 방식의 리퀘스트로 대체 또는 변경하여, 상기 리퀘스트에 대응되는 프로세서로 제공할 수 있다. 그리고, 리퀘스트 변경부(150)는 카운팅부(130)의 카운트 결과가 소정의 임계값(TH) 보다 작을 경우에는, 현재 입력된 마이그레이션 리퀘스트를 그대로 대응되는 프로세서로 제공할 수 있다. 즉, 리퀘스트 변경부(150)로부터 출력되는 리퀘스트는, 복수의 프로세서들 중 적어도 하나로부터 제공된 리퀘스트 그대로일 수도 있고, 리퀘스트 변경부(150)에서 대체 또는 변경된 것일 수도 있다.
도 6은 도 1 및 도 5에 도시된 본 발명의 실시예에 따른 FMSC(100)의 상세 구성을 보여주는 도면이다.
도 6을 참조하면, 핑퐁 모니터링부(110)는 복수의 프로세서들(P0, P1)로부터 요청된 리퀘스트(예를 들면, 마이그레이션 리퀘스트, 읽기 공유 리퀘스트 등)에 응답해서, 핑퐁 마이그레이션 시퀀스를 감지한다. 하나의 핑퐁 마이그레이션 시퀀스는 3 개의 상태들로 구성될 수 있다. 핑퐁 모니터링부(110)에서 관리되는 3개의 상태들에 대한 천이가 순차적으로 수행되어야, 비로소 1개의 핑퐁 마이그레이션 시 퀀스가 발생된 것으로 인식될 수 있다. 핑퐁 모니터링부(110)는 1개의 핑퐁 마이그레이션 시퀀스가 발생될 때마다 카운팅부(130)로 카운트 업 제어 신호를 발생할 수 있다. 핑퐁 마이그레이션 시퀀스를 구성하는 3 개의 상태들과, 이를 제어하는 핑퐁 모니터링부(110)의 동작을 살펴보면 다음과 같다.
예시적인 실시예에 있어서, 제 1 상태(State I)는 핑퐁 마이그레이션 시퀀스의 초기 상태를 의미할 수 있다. 제 1 상태(State I)에서, 리퀘스트 변경부(150)를 통해 마이그레이션 리퀘스트가 입력되면, 핑퐁 모니터링부(110)는 핑퐁 마이그레이션 시퀀스의 상태를 제 1 상태(State I)에서 제 2 상태(State II)로 변경할 수 있다. 한편, 제 1 상태(State I)에서, 리퀘스트 변경부(150)를 통해 마이그레이션 리퀘스트 이외의 리퀘스트가 입력되면, 핑퐁 모니터링부(110)는 카운팅부(130)의 카운트 결과를 리셋 할 수 있다. 이 경우, 핑퐁 마이그레이션 시퀀스의 상태는 제 1 상태(State I)로 유지될 수 있다. 이 경우, 핑퐁 모니터링부(110)는 연속해서 발생되는 핑퐁 마이그레이션 시퀀스의 개수를 카운트할 수 있도록 카운팅부(130)의 카운팅 동작을 제어할 수 있다.
제 2 상태(State II)에서, 리퀘스트 변경부(150)를 통해 공유 리퀘스트(Shared Request)가 입력되면, 핑퐁 모니터링부(110)는 핑퐁 마이그레이션 시퀀스의 상태를 제 2 상태(State II)에서 제 3 상태(State III)로 변경할 수 있다. 제 2 상태(State II)에서, 리퀘스트 변경부(150)를 통해 마이그레이션 리퀘스트 이외의 리퀘스트가 입력되면, 핑퐁 모니터링부(110)는 카운팅부(130)의 카운트 결과를 리셋 하고, 핑퐁 마이그레이션 시퀀스의 상태를 제 2 상태(State II)에서 제 1 상 태(State I)로 변경할 수 있다.
제 3 상태(State III)에서, 리퀘스트 변경부(150)를 통해 무효화 리퀘스트(Invalidate Request)가 입력되면, 핑퐁 모니터링부(110)는 카운트 업 제어 신호를 발생하여 카운팅부(130)의 카운트 결과를 증가(counting up)시키고, 핑퐁 마이그레이션 시퀀스의 상태를 제 3 상태(State III)에서 제 1 상태(State I)로 변경할 수 있다. 그리고, 제 3 상태(State III)에서, 리퀘스트 변경부(150)를 통해 마이그레이션 리퀘스트 이외의 리퀘스트가 입력된 경우에는, 핑퐁 모니터링부(110)는 카운팅부(130)의 카운트 결과를 리셋 하고, 핑퐁 마이그레이션 시퀀스의 상태를 제 3 상태(State III)에서 제 1 상태(State I)로 변경할 수 있다. 앞에서 설명한 바와 같이, 본 발명의 실시예에 따른 핑퐁 마이그레이션 시퀀스는, 초기 상태인 제 1 상태로부터 시작하여 제 2 상태 및 제 3 상태를 거쳐 다시 제 1 상태로 되돌아 오게 된다. 이와 같은 3 단계의 상태 천이는 1 개의 핑퐁 마이그레이션 시퀀스를 구성할 수 있다.
카운팅부(130)는 복수의 카운터들(131)과, 레지스터(133), 그리고 제 1 판별회로(135)를 포함할 수 있다. 예시적인 실시예에 있어서, 카운터들(131) 각각은 각각의 프로세서(Pi, i는 양의 정수)에 구비된 캐시(Cache i)의 태그 램(tag RAM)에 각각 대응될 수 있다. 카운터들(131)은 세츄레이션 카운터(saturation counter)로 구성되어, 핑퐁 마이그레이션 시퀀스의 연속 발생 횟수를 카운트할 수 있다. 카운터에서 카운트될 수 있는 데이터 및 카운팅된 결과의 비트 수는 다양하게 구성 가능하다.
레지스터(133)에는 카운터들(131)에서 카운팅된 값과 비교될 소정의 임계값(TH)이 저장될 수 있다. 예시적인 실시예에 있어서, 임계값(TH)은 어플리케이션(Application) 또는 오퍼레이팅 시스템(Operating System ; OS)에 의해 설정될 수 있다. 임계값(TH)은 일관성 관리 모드의 변경의 기준(예를 들면, 마이그레이토리 쉐어링 방식의 적용 여부의 기준)이 되는 값으로서, 허용 가능한 핑퐁 마이그레이션 시퀀스의 연속 발생 횟수가 저장될 수 있다. 상기 임계값(TH)은 특정 값에 한정되지 않고, 다중 프로세서 시스템의 동작 특성에 따라 다양한 값으로 설정 및 변경 가능하다.
제 1 판별회로(135)는 카운터들(131)에서 카운팅된 값이 소정의 값(즉, 임계값(TH))에 도달했는지 여부를 판별하도록 구성될 수 있다. 예시적인 실시예에 있어서, 제 1 판별회로(135)는, 레지스터(133)에 저장되어 있는 임계값(TH)과 카운터들(131)에서 카운팅된 값을 비교하여 비교 결과를 리퀘스트 변경부(150)로 제공할 수 있다. 제 1 판별회로(135)는 카운터들(131)에서 카운팅된 값이 레지스터(133)에 저장되어 있는 임계값(TH)과 같은 경우(또는 크거나 같은 경우), 제 1 논리 값을 갖는 제어 신호를 리퀘스트 변경부(150)로 제공할 수 있다. 그리고, 제 1 판별회로(135)는 카운터들(131)에서 카운팅된 값이 레지스터(133)에 저장되어 있는 임계값(TH)과 같지 않은 경우(또는 임계값 보다 작은 경우), 제 2 논리 값을 갖는 제어 신호를 리퀘스트 변경부(150)로 제공할 수 있다.
한편, 본 발명의 FMSC(100)는 일관성 관리부(200) 내에 구비될 수 있다. 따라서, FMSC(100)로 제공되는 리퀘스트 및 데이터 등은 일관성 관리부(200)의 내부 회로(예를 들면, 리퀘스트 입력부(201), 태그판별부(203))를 통해 제공되도록 구성될 수 있다. 리퀘스트 입력부(201) 및 태그판별부(203)의 구성은 특정 형태에 국한되지 않고 다양하게 변경될 수 있다. 예시적인 실시예에 있어서, 도 6에 도시된 리퀘스트 입력부(201) 및 태그판별부(203)는 일관성 관리부(200) 내에 구비될 수도 있고, FMSC(100) 내에 구비될 수도 있다.
리퀘스트 입력부(201)는 복수 개의 프로세서들 중 적어도 하나로부터 제공되는 리퀘스트를 받아들이고, 이를 핑퐁 모니터링부(110) 및 리퀘스트 변경부(150)로 제공할 수 있다. 예시적인 실시예에 있어서, 리퀘스트 입력부(201)는 멀티플렉서로 구성될 수 있다. 리퀘스트 입력부(201)의 출력은 일관성 관리부(200)에 구비된 태그판별부(203)로부터 발생된 선택 신호에 의해 제어될 수 있다. 태그판별부(203)는 복수의 프로세서들 중 적어도 하나로부터 입력된 리퀘스트에 대응되는 태그의 값과, 각각의 프로세서의 캐시에 대응되는 태그 램 어레이에 저장되어 있는 태그 값을 비교할 수 있다. 태그판별부(203)는 태그 램 어레이에 저장되어 있는 태그 값과 입력된 리퀘스트에 대응되는 태그의 값이 일치하는 경우, 리퀘스트 입력부(201)가 프로세서로부터 입력된 리퀘스트를 핑퐁 모니터링부(110) 및 리퀘스트 변경부(150)로 출력할 수 있도록 선택신호를 활성화할 수 있다. 태그판별부(203)로부터 출력되는 선택신호는 핑퐁 모니터링부(110)로도 제공되어, 리퀘스트가 입력되었음을 알려줄 수 있다.
리퀘스트 변경부(150)는 제 2 판별회로(151), 논리회로(153), 및 리퀘스트 출력부(155)를 포함할 수 있다. 제 2 판별회로(151)는 리퀘스트 입력부(201)로부터 제공된 리퀘스트가 마이그레이션 리퀘스트인지를 판별할 수 있다. 논리회로(153)는 제 1 판별회로(135)의 판별 결과와 제 2 판별회로(151)의 판별 결과에 대한 논리 연산(예를 들면, 논리 AND 연산 등)을 수행할 수 있다. 논리회로(153)에서 수행된 논리 연산 결과는 리퀘스트 출력부(155)에게 선택 신호로서 제공될 수 있다.
리퀘스트 출력부(155)는, 논리회로(153)로부터 제공된 선택신호에 응답해서, 리퀘스트 입력부(201)를 통해 입력된 리퀘스트와 공유 리퀘스트(Shared Request) 중 어느 하나를 상기 리퀘스트에 대응되는 프로세서로 출력할 수 있다. 예시적인 실시예에 있어서, 리퀘스트 출력부(155)는 멀티플렉서로 구성될 수 있다. 리퀘스트 출력부(155)의 출력은, 논리회로(153)로부터 발생된 선택신호에 의해 제어될 수 있다. 예를 들면, 카운터(131)에서 카운팅된 결과가 소정의 임계값(TH)에 도달한 상태에서 마이그레이션 리퀘스트가 입력된 경우, 리퀘스트 출력부(155)는 논리회로(153)로부터 발생된 선택신호에 응답해서 프로세서로부터 입력된 마이그레이션 리퀘스트 대신에 공유 리퀘스트(Shared Request)를 출력할 수 있다. 그 외의 경우, 리퀘스트 출력부(155)는 논리회로(153)로부터 발생된 선택신호에 응답해서 리퀘스트 입력부(201)로부터 제공된 리퀘스트를 대응되는 프로세서로 출력할 수 있다.
이와 같은 구성에 따르면, 다중 프로세서들 사이에서 발생되는 핑퐁(ping-pong) 현상의 모니터링 결과에 따라서 캐시 일관성 관리 모드가 가변될 뿐만 아니라, 이에 대응되는 리퀘스트 또한 가변된 일관성 관리 모드에 대응되도록 가변될 수 있게 된다. 본 발명에 따른 일관성 관리 모드의 가변에 따르면, 마이그레이토리 쉐어링 방식이 선택적으로 적용될 수 있기 때문에, 다중 프로세서들 사이에 불필요한 트랜잭션이 발생되지 않게 된다. 따라서, 프로세서의 대기 시간 및 버스 트래픽이 감소하게 된다. 버스 트래픽의 감소는 버스 이용도(bus utilization)를 향상시킬 수 있게 된다. 그러므로, 다중 프로세서의 동작 성능이 효과적으로 향상될 수 있게 된다.
한편, 본 발명의 실시예에 있어서, 일관성 관리 모드의 변환에 사용되는 임계값(TH)은 언제든지 수정 가능하도록 구성될 수 있다. 따라서, 어플리케이션이 변경되더라도 상기 임계값(TH)은 자유롭게 변경될 수 있다. 이상에서 설명된 본 발명의 FMSC(100)은 하드웨어로 구성 가능하다. 그러나, 이는 본 발명이 적용되는 일 예로서, 본 발명의 FMSC(100)의 적어도 일부 구성은 펌웨어 또는 미들웨어로도 구성 가능하다.
도 7은 본 발명의 실시예에 따른 일관성 관리 방법을 보여주는 흐름도이다.
도 7을 참조하면, 본 발명의 일관성 관리 방법은 핑퐁 모니터링부(110)를 통해 복수의 프로세서들(P0, P1)에 구비되어 있는 복수의 코어들(Core0, Core1)에서 발생되는 연속적인 핑퐁 마이그레이션 시퀀스의 발생 여부를 모니터링할 수 있다(S1100 단계). 연속적인 핑퐁 마이그레이션 시퀀스의 모니터링을 통해 프로세서들 사이에서 발생되는 연속적인 트랜젝션, 즉 핑퐁 현상이 모니터링될 수 있다. 본 발명의 실시예에 있어서, 핑퐁 마이그레이션 시퀀스는 3 개의 상태들로 구성될 수 있다. 본 발명에서는 3 단계의 상태들에 대한 천이가 1회 수행된 것을 핑퐁 마이그레이션 시퀀스가 1회 발생된 것으로 정의할 수 있다.
S1100 단계에서 수행된 모니터링 결과에 따라서, 다중 프로세서에 적용되는 일관성 관리 모드에 마이그레이토리 쉐어링 방식이 선택적으로 적용될 수 있다. 일관성 관리 모드의 변경은 핑퐁 모니터링부(110)의 제어에 의해 수행될 수 있다.
연속적인 핑퐁 마이그레이션 시퀀스의 발생 횟수는 카운팅부(130)를 통해 카운트될 수 있다(S1300 단계). 카운팅부(130)의 카운팅 동작은 핑퐁 모니터링부(110)에 의해 제어될 수 있다. 카운팅부(130)를 통해 카운트된 결과는 소정의 임계값(TH) 보다 크거나 같은지 여부가 판별될 수 있다(S1400 단계). S1400 단계의 판별 결과, 카운팅부(130)의 카운트 결과가 소정의 임계값(TH) 보다 크거나 같은 경우, 프로세서로부터 제공된 마이그레이션 리퀘스트는 리퀘스트 변경부(150)에 의해 비-마이그레이토리 리퀘스트, 예컨대 공유 리퀘스트로 대체(replace) 또는 변경(modify)될 수 있다(S1500 단계). 이 경우, 리퀘스트 변경부(150)는, 프로세서로부터 입력된 마이그레이션 리퀘스트 대신에 S1500 단계에서 대체 또는 변경된 리퀘스트를 대응되는 프로세서로 제공할 수 있다. 마이그레이션 리퀘스트가 비-마이그레이토리 리퀘스트로 변경 또는 대체되는 것은, 일관성 관리 모드에 마이그레이토리 쉐어링 방식이 적용되지 않도록 제어되는 것을 의미할 수 있다. 한편, S1400 단계의 판별 결과, 카운팅부(130)의 카운트 결과가 소정의 임계값(TH) 보다 작은 경우, 프로세서로부터 제공된 리퀘스트는 대체 또는 변경되지 않고 수순은 종료된다. 이 경우, 리퀘스트 변경부(150)는 프로세서로부터 입력된 마이그레이션 리퀘스트를 대체 또는 변경하지 않고 그대로 대응되는 프로세서로 제공할 수 있다. 이는, 일관성 관리 모드에 마이그레이토리 쉐어링 방식이 적용되도록 제어되는 것을 의미할 수 있다.
앞에서 설명한 바와 같이, 본 발명의 일관성 관리 방법은, 핑퐁 마이그레이션 시퀀스의 발생을 모니터링하고, 상기 모니터링 결과를 근거로 하여 일관성 관리 모드를 변경할 수 있다. 그 결과, 다중 프로세서들 사이에 불필요한 트랜잭션이 발생되지 않게 되고, 프로세서의 대기 시간 및 버스 트래픽이 감소하게 된다. 버스 트래픽의 감소는 버스 이용도(bus utilization)를 향상시킬 수 있게 된다. 그러므로, 다중 프로세서의 동작 성능이 효과적으로 향상될 수 있게 된다.
이상에서와 같이 도면과 명세서에서 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 실시예에 따른 다중 프로세서 시스템의 개략적인 구성을 보여주는 블록도이다.
도 2는 일관성 관리 프로토콜 중 하나인 MESI 프로토콜의 상태 천이를 예시적으로 보여주는 도면이다.
도 3은 다중 프로세서 시스템의 일관성 관리에 비-마이그레이토리 쉐어링 방식이 적용되었을 때의 상태 천이와, 마이그레이토리 쉐어링 방식이 적용되었을 때의 상태 천이를 예시적으로 보여주는 도면이다.
도 4는 다중 프로세서 시스템의 일관성 관리에 마이그레이토리 쉐어링 방식이 적용되었을 때와, 비-마이그레이토리 쉐어링 방식이 적용되었을 때 발생될 수 있는 핑퐁 현상을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 FMSC의 구성을 보여주는 블록도이다.
도 6은 도 1 및 도 5에 도시된 본 발명의 실시예에 따른 FMSC의 상세 구성을 보여주는 도면이다.
도 7은 본 발명의 실시예에 따른 일관성 관리 방법을 보여주는 흐름도이다.
*도면의 주요 부분에 대한 부호의 설명*
100 : FMSC 110 : 핑퐁 모니터링부
130 : 카운팅부 150 : 리퀘스트 변경부
200 : 일관성 관리부

Claims (10)

  1. 복수의 프로세서들 사이에서 발생되는 핑퐁 마이그레이션 시퀀스를 모니터링하는 핑퐁 모니터링부;
    상기 모니터링 결과에 응답해서 상기 핑퐁 마이그레이션 시퀀스의 연속 발생 횟수를 카운트하는 카운팅부; 그리고
    상기 카운트 결과를 근거로 하여 마이그레이션 리퀘스트를 비-마이그레이토리 쉐어링 방식의 리퀘스트로 변경하는 리퀘스트 변경부를 포함하되,
    상기 핑퐁 마이그레이션 시퀀스는 상기 복수의 프로세서들로부터 제공된 리퀘스트에 의해 실행되는 3 개의 순차적인 상태 천이들을 포함하고, 상기 3 개의 순차적인 상태 천이 리퀘스트는 제 1 상태로부터 제 2 상태로의 천이, 제 2 상태로부터 제 3 상태로의 천이, 및 제 3 상태로부터 제 1 상태로의 천이를 포함하고,
    상기 제 1 상태로부터 상기 제 2 상태로의 천이는 상기 복수의 프로세서들 사이에서 마이그레이션 리퀘스트가 감지될 때 발생하고, 상기 제 2 상태로부터 상기 제 3 상태로의 천이는 상기 복수의 프로세서들 사이에서 공유 리퀘스트가 감지될 때 발생하고, 상기 제 3 상태로부터 상기 제 1 상태로의 천이는 상기 복수의 프로세서들 사이에서 무효화 리퀘스트가 감지될 때 발생하는 캐시 일관성 관리 장치.
  2. 제 1 항에 있어서,
    상기 리퀘스트 변경부는 상기 모니터링 결과에 응답하여 상기 복수의 프로세서들에 적용될 일관성 관리 모드를 변경하는 캐시 일관성 관리 장치.
  3. 제 2 항에 있어서,
    상기 일관성 관리 모드에는 마이그레이토리 쉐어링 방식이 선택적으로 적용되는 캐시 일관성 관리 장치.
  4. 제 1 항에 있어서,
    상기 비-마이그레이토리 쉐어링 방식의 리퀘스트는 공유 리퀘스트를 포함하 는 캐시 일관성 관리 장치.
  5. 제 1 항에 있어서,
    상기 카운팅부는,
    상기 복수의 프로세서들 각각의 태그 램에 대응되는 복수의 카운터들;
    소정의 임계값을 저장하는 레지스터; 그리고
    상기 복수의 카운터들에서 카운팅된 결과가 상기 임계값에 도달하였는지를 판별하는 제 1 판별회로를 포함하는 캐시 일관성 관리 장치.
  6. 제 5 항에 있어서,
    상기 리퀘스트 변경부는,
    상기 복수의 프로세서들로부터 현재 입력된 리퀘스트가 상기 마이그레이션 리퀘스트인지 여부를 판별하는 제 2 판별회로;
    상기 제 1 판별회로의 판별 결과와 상기 제 2 판별회로의 판별 결과에 응답해서 선택신호를 발생하는 논리회로; 그리고
    상기 선택신호에 응답해서 상기 현재 입력된 마이그레이션 리퀘스트 및 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트 중 하나를 출력하는 리퀘스트 출력부를 포함하는 캐시 일관성 관리 장치.
  7. 제 6 항에 있어서,
    상기 리퀘스트 출력부는, 상기 카운트 결과가 상기 임계값에 도달하였고, 상기 현재 입력된 리퀘스트가 상기 마이그레이션 리퀘스트인 경우, 상기 비-마이그레이토리 쉐어링 방식의 리퀘스트를 출력하는 캐시 일관성 관리 장치.
  8. 각각이 적어도 하나의 캐시를 포함하는 복수의 프로세서들; 그리고
    상기 복수의 프로세서들간에 발생되는 핑퐁 마이그레이션 시퀀스의 연속 발생횟수를 카운트하고, 상기 카운트 결과를 근거로 하여 상기 복수의 프로세서들에 대한 일관성 관리 모드를 가변시키는 캐시 일관성 관리 장치를 포함하되,
    상기 핑퐁 마이그레이션 시퀀스는 상기 복수의 프로세서들로부터 제공된 리퀘스트에 의해 실행되는 3 개의 순차적인 상태 천이들을 포함하고, 상기 3 개의 순차적인 상태 천이 리퀘스트는 제 1 상태로부터 제 2 상태로의 천이, 제 2 상태로부터 제 3 상태로의 천이, 및 제 3 상태로부터 제 1 상태로의 천이를 포함하고,
    상기 제 1 상태로부터 상기 제 2 상태로의 천이는 상기 복수의 프로세서들 사이에서 마이그레이션 리퀘스트가 감지될 때 발생하고, 상기 제 2 상태로부터 상기 제 3 상태로의 천이는 상기 복수의 프로세서들 사이에서 공유 리퀘스트가 감지될 때 발생하고, 상기 제 3 상태로부터 상기 제 1 상태로의 천이는 상기 복수의 프로세서들 사이에서 무효화 리퀘스트가 감지될 때 발생하는 다중 프로세서 시스템.
  9. 제 8 항에 있어서,
    상기 캐시 일관성 관리 장치는 스눕 버스를 통하여 상기 복수의 프로세서들에 연결되는 다중 프로세서 시스템.
  10. 제 8 항에 있어서,
    상기 일관성 관리 모드에는 마이그레이토리 쉐어링 방식이 선택적으로 적용되는 다중 프로세서 시스템.
KR1020090112096A 2009-11-19 2009-11-19 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법 KR101662829B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020090112096A KR101662829B1 (ko) 2009-11-19 2009-11-19 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
US12/858,571 US8566523B2 (en) 2009-11-19 2010-08-18 Multi-processor and apparatus and method for managing cache coherence of the same
JP2010245535A JP5752918B2 (ja) 2009-11-19 2010-11-01 多重プロセッサ及びそのキャッシュ一貫性管理装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090112096A KR101662829B1 (ko) 2009-11-19 2009-11-19 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110055179A KR20110055179A (ko) 2011-05-25
KR101662829B1 true KR101662829B1 (ko) 2016-10-05

Family

ID=44012181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090112096A KR101662829B1 (ko) 2009-11-19 2009-11-19 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법

Country Status (3)

Country Link
US (1) US8566523B2 (ko)
JP (1) JP5752918B2 (ko)
KR (1) KR101662829B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617614B (zh) * 2013-11-26 2019-02-22 新奥特(北京)视频技术有限公司 一种在视频图像中确定乒乓球落点数据的方法及系统
US9652390B2 (en) * 2014-08-05 2017-05-16 Advanced Micro Devices, Inc. Moving data between caches in a heterogeneous processor system
CN106293999B (zh) 2015-06-25 2019-04-30 深圳市中兴微电子技术有限公司 一种微引擎处理报文中间数据快照功能的实现方法及装置
CN105512054B (zh) * 2015-12-09 2018-11-09 上海兆芯集成电路有限公司 主机接口控制器以及储存装置控制方法
US11360906B2 (en) 2020-08-14 2022-06-14 Alibaba Group Holding Limited Inter-device processing system with cache coherency

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5713004A (en) * 1995-05-18 1998-01-27 Data General Corporation Cache control for use in a multiprocessor to prevent data from ping-ponging between caches
JP2001034597A (ja) 1999-07-22 2001-02-09 Fujitsu Ltd キャッシュメモリ装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03172943A (ja) * 1989-12-01 1991-07-26 Mitsubishi Electric Corp キャッシュメモリ制御方式
EP0769171A1 (en) 1995-05-05 1997-04-23 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US5734922A (en) * 1996-07-01 1998-03-31 Sun Microsystems, Inc. Multiprocessing system configured to detect and efficiently provide for migratory data access patterns
US6704842B1 (en) * 2000-04-12 2004-03-09 Hewlett-Packard Development Company, L.P. Multi-processor system with proactive speculative data transfer
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
US20060174228A1 (en) * 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US8135916B1 (en) * 2008-04-25 2012-03-13 Marvell International Ltd. Method and apparatus for hardware-configurable multi-policy coherence protocol
US8103834B2 (en) * 2008-10-29 2012-01-24 Oracle America, Inc. Coherence protocol with dynamic privatization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5713004A (en) * 1995-05-18 1998-01-27 Data General Corporation Cache control for use in a multiprocessor to prevent data from ping-ponging between caches
JP2001034597A (ja) 1999-07-22 2001-02-09 Fujitsu Ltd キャッシュメモリ装置

Also Published As

Publication number Publication date
KR20110055179A (ko) 2011-05-25
US20110119450A1 (en) 2011-05-19
US8566523B2 (en) 2013-10-22
JP2011108233A (ja) 2011-06-02
JP5752918B2 (ja) 2015-07-22

Similar Documents

Publication Publication Date Title
US9767027B2 (en) Private memory regions and coherency optimization by controlling snoop traffic volume in multi-level cache hierarchy
US6295582B1 (en) System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available
KR101393933B1 (ko) 캐시 블록 코히어런스를 위한 시스템들, 방법들, 및 디바이스들
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
US8793442B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US10423528B2 (en) Operation processing device, information processing apparatus, and control method for operation processing device
US20120198162A1 (en) Hazard Prevention for Data Conflicts Between Level One Data Cache Line Allocates and Snoop Writes
US7788452B2 (en) Method and apparatus for tracking cached addresses for maintaining cache coherency in a computer system having multiple caches
JPH03253963A (ja) マルチプロセツサ・システム
US9372803B2 (en) Method and system for shutting down active core based caches
KR101662829B1 (ko) 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
JP6451538B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20110161599A1 (en) Handling of a wait for event operation within a data processing apparatus
US20070239940A1 (en) Adaptive prefetching
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
JP2003186744A (ja) キャッシュエントリのプリエンプティブな追い出しのために使用される時間を調整することによるコンピュータパフォーマンスの向上方法
US11487672B1 (en) Multiple copy scoping bits for cache memory
US20220100660A1 (en) Reconfigurable cache architecture and methods for cache coherency
US8635411B2 (en) Data processing apparatus and method for managing coherency of cached data
CN116249970A (zh) 可扩展的基于区域的目录
JP6249120B1 (ja) プロセッサ
US7603522B1 (en) Blocking aggressive neighbors in a cache subsystem
US9558119B2 (en) Main memory operations in a symmetric multiprocessing computer
JP2000267935A (ja) キヤッシュメモリ装置
US11954033B1 (en) Page rinsing scheme to keep a directory page in an exclusive state in a single complex

Legal Events

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