KR101928770B1 - 제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법 - Google Patents

제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법 Download PDF

Info

Publication number
KR101928770B1
KR101928770B1 KR1020147025925A KR20147025925A KR101928770B1 KR 101928770 B1 KR101928770 B1 KR 101928770B1 KR 1020147025925 A KR1020147025925 A KR 1020147025925A KR 20147025925 A KR20147025925 A KR 20147025925A KR 101928770 B1 KR101928770 B1 KR 101928770B1
Authority
KR
South Korea
Prior art keywords
request
write
snoop
protocol domain
progressive
Prior art date
Application number
KR1020147025925A
Other languages
English (en)
Other versions
KR20140131965A (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 KR20140131965A publication Critical patent/KR20140131965A/ko
Application granted granted Critical
Publication of KR101928770B1 publication Critical patent/KR101928770B1/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

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

Abstract

데이터 처리장치(2)는, 기록 프로그래스 프로토콜하에서 작동하도록 구성된 제1 프로토콜 도메인A와, 스누프 프로그래스 프로토콜하에서 작동하도록 구성된 제2 프로토콜 도메인B를 포함한다. 데드락 조건은, 상기 제1 도메인A로부터 제2 도메인B에 발행된 진행 기록 요구에 대한 기록 타겟 어드레스가, 상기 제2 도메인B로부터 제1 도메인A에 발행된 진행 스누프 요구에 대한 스누프 타겟 어드레스와 같은 경우 검출된다. 그 데드락 조건이 검출될 때, 상기 도메인 사이의 브릿지(4)는, 서비스된 상기 선택된 요구를 기다리지 않고 상기 데드락된 기록 및 스누프 요구 중 선택된 요구에 대한 조기 응답을 발행하기도 한다. 그 조기 응답은, 상기 선택된 요구를 발행한 상기 도메인에 상기 선택된 요구가 서비스된 것을 가리켜서, 다른 나머지 요구가 상기 발행중 도메인에 의해 서비스되는 것을 가능하게 한다.

Description

제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법{DATA PROCESSING APPARATUS HAVING FIRST AND SECOND PROTOCOL DOMAINS, AND METHOD FOR THE DATA PROCESSING APPARATUS}
본 발명은, 데이터 처리 분야에 관한 것이다. 보다 구체적으로, 본 발명은, 기록 요구와 스누프 요구를 핸들링하는 프로토콜이 서로 다른 제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치에 관한 것이다.
데이터 처리장치는, 다수의 장소에 동일한 데이터의 서로 다른 버전을 기억하여도 된다. 예를 들면, 2개의 디바이스가 각각 로컬 캐시를 갖고, 각 캐시는 동일한 어드레스에 관련된 데이터의 버전들을 메모리에 동시에 유지할 수 있다. 코히어런시 프로토콜(예를 들면, MESI 프로토콜)은, 동일한 데이터의 다수의 버전의 일관성을 확보하는데 사용되어도 된다. 상기 코히어런시 프로토콜은, 코히어런시를 유지하기 위해 기록 요구와 스누프(snoop) 요구를 사용하여도 된다. 예를 들면, 데이터 값의 로컬 버전을 기억하는 디바이스는, 메모리 등의 다른 장소에 상기 로컬 버전을 기록하는 요구에 기록요구를 발행하여도 된다. 그리고, 그 밖의 디바이스는, 또 다른 장소로부터 갱신된 로컬 버전에 액세스할 수 있다. 또는, 디바이스가 특정한 데이터 값에의 액세스를 필요로 하는 경우, 이들 디바이스들이 상기 로컬 버전을 기억중인지를 체크하여, 그럴 경우, 그 로컬 버전에의 액세스를 요구하기 위해, 다른 디바이스들에 스누프 요구를 발행하여도 된다. 따라서, 데이터 코히어런시는, 상기 기록 요구와 스누프 요구를 사용하여 유지될 수 있다.
본 발명의 일 국면에서 본 데이터 처리장치는,
기록 타겟 어드레스에 관련된 데이터의 로컬 버전이 다른 장소에 기록되는 것을 요구하는 기록 요구들을 발행하고, 스누프 타겟 어드레스에 관련된 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하도록 구성된 적어도 하나의 디바이스를 각각 포함하는 제1 프로토콜 도메인 및 제2 프로토콜 도메인; 및
상기 제1 프로토콜 도메인과 상기 제2 프로토콜 도메인의 사이에서 상기 기록 요구들과 상기 스누프 요구들을 전송하도록 구성된 브릿지를 구비하고,
상기 제1 프로토콜 도메인은, 진행(pending) 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 스누프 요구가 상기 진행 기록 요구가 서비스될 때까지 차단되는 기록 프로그래스(progress) 프로토콜하에서 작동하도록 구성되고,
상기 제2 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 기록 요구가 상기 진행 스누프 요구가 서비스될 때까지 차단되는 스누프 프로그래스 프로토콜하에서 작동하도록 구성되고,
상기 브릿지는, 상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구에 대한 상기 기록 타겟 어드레스가, 상기 제2 프로토콜 도메인으로부터 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 데드락 조건을 검출하도록 구성되고,
상기 브릿지는, 상기 데드락 조건을 검출할 때, 서비스될 선택된 요구를 기다리지 않고 상기 선택된 요구에 대한 조기 응답을 발행하도록 구성되고, 상기 선택된 요구는 상기 진행 기록 요구나 상기 진행 스누프 요구를 포함하고, 상기 조기 응답이, 상기 선택된 요구를 발행한 발행중 프로토콜 도메인에 상기 선택된 요구가 서비스된 것을 가리킨다.
동일한 타겟 어드레스에 관하여 스누프 요구와 기록 요구가 진행중일 경우, 상기 스누프 요구에 의해 액세스된 데이터의 상태는, 상기 스누프 요구를 서비스할 때 상기 기록 요구가 이미 서비스되었는지의 여부에 따라 다를 수도 있다. 따라서, 다른 프로토콜은, 상기 기록 요구와 상기 스누프 요구 중 어느쪽이 먼저 서비스되는지를 판정하는 서로 다른 규칙을 규정하기도 한다. 스누프 프로그래스 프로토콜에서, 상기 진행 기록 요구는 상기 진행 스누프 요구가 서비스될 때까지 일시 중지(stall)되고, 또한, 기록 프로그래스 프로토콜에서, 상기 진행 스누프 요구는 상기 기록 요구가 서비스될 때까지 일시 중지된다.
본 기술에 의해 인식한 것은, 데드락 조건이, 상기 기록 프로그래스 프로토콜을 이용한 제1 프로토콜 도메인과 상기 스누프 프로그래스 프로토콜을 이용한 제2 프로토콜 도메인을 갖는 장치에서 일어날 수 있다는 것이다. 상기 데드락 조건은, 상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구의 기록 타겟 어드레스가 상기 제2 처리에 의해 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구의 스누프 타겟 어드레스와 같은 경우에 일어난다. 이러한 조건에서, 상기 제1 프로토콜 도메인은, 상기 기록 프로그래스 프로토콜에 따라, 상기 진행 기록 요구가 서비스될 때까지 상기 진행 스누프 요구를 일시 중지시킨다. 그러나, 상기 진행 기록 요구는, 상기 스누프 프로그래스 프로토콜에 따라, 상기 진행 스누프 요구가 서비스될 때까지 상기 제2 프로토콜 도메인이 상기 진행 기록 요구를 일시 중지하기 때문에 서비스될 수 없다. 따라서, 각 프로토콜 도메인은, 상기 진행 기록 요구와 상기 진행 스누프 요구 양쪽이 서비스되지 않게 하는 다른쪽의 프로토콜 도메인을 기다린다.
이러한 문제를 해결하기 위해서, 상기 제1 프로토콜 도메인과 제2 프로토콜 도메인을 접속하는 브릿지는, 상기 데드락 조건이 일어났는지를 검출하기도 한다. 그 데드락 조건이 검출되는 경우, 상기 브릿지는, 서비스될 요구(조기 응답이 발행되는 요구를 "선택된 요구"라고 함)를 기다리지 않고 상기 진행 기록 요구나 상기 진행 스누프 요구에 대한 조기 응답을 발행하기도 한다. 상기 조기 기록 응답은, 상기 선택된 요구가 실제로 서비스되지 않았을지라도 상기 선택된 요구가 서비스된 상기 선택된 요구를 발행한 상기 발행중 프로토콜 도메인에 나타낸다. 상기 선택된 요구가 상기 발행중 프로토콜 도메인의 관점에서 서비스된 것처럼 보이므로, 상기 진행 기록 요구와 상기 진행 스누프 요구의 다른쪽이 더 이상 차단되지 않아서, 상기 발행중 프로토콜 도메인은 지금 다른쪽 요구를 서비스할 수 있다. 따라서, 상기 데드락이 해결될 수 있다.
기록 요구는 라이트 백(write back) 요구나 라이트 클린(write clean) 요구로 이루어진다. 라이트 백 요구를 발행하는 디바이스는, 다른 나머지 장소에 라이트 백중인 데이터의 그 로컬 버전을 무효로 한다. 따라서, 이 디바이스는 그 데이터에 더 이상 배타적 액세스를 하지 않고, 다른 디바이스들은 그 디바이스로 체크하지 않고 상기 데이터에 액세스하기도 한다.
한편, 라이트 클린 요구를 발행하는 디바이스는, 다른 나머지 장소에 라이트 백중인 데이터에 배타적 액세스를 유지하기도 한다. 상기 데이터의 로컬 버전은, 종종 상기 라이트 클린 요구를 발행한 상기 디바이스에 의해 유지되었을 것이다. 그러나, 일부의 경우에, 상기 디바이스는 상기 캐시내의 데이터를 무효로 하지만, 다른 디바이스가 상기 데이터의 대응한 버전을 기억중인지를 체크하기 위해 스누프 요구를 발행할 필요없이 상기 데이터를 상기 캐시내에 재반입되게 하기 위해서 배타적 액세스를 유지하여도 된다. 상기 디바이스가 배타적 액세스를 유지하지만, 다른 디바이스가 상기 데이터의 로컬 버전을 기억하기를 원하는 경우, 다른 나머지 디바이스가 상기 데이터에의 액세스를 요구하기 위해 스누프 요구를 상기 디바이스에 발행했을 것이다.
상기 브릿지가 상기 데드락을 비차단하기 위해 상기 조기 응답을 발행한 후, 상기 발행중 프로토콜 도메인은, 상기 조기 응답이 발행되었던 상기 선택된 요구와 같은 타겟 어드레스를 대상으로 하는 다른 선택된 요구를 발행할 수 있었다는 것이 가능하다. 예를 들면, 상기 선택된 요구가 상기 진행 기록 요구이면, 상기 제1 프로토콜 도메인은 같은 타겟 어드레스에 대한 다른 기록 요구를 발행할 수 있었고, 상기 선택된 요구가 상기 진행 스누프 요구이면, 상기 제2 프로토콜 도메인은 같은 타겟 어드레스에 대한 다른 스누프 요구를 발행할 수 있었다. 다른 선택된 요구가 발행되면, 새로운 선택된 요구는, 다른 나머지 요구의 처리를 한번 더 차단하여서, 상기 데드락 조건이 다시 일어나게 하기도 한다. 특히, 이것은, 라이트 클린 요구나 스누프 요구를 발행하는 상기 디바이스가 라이트 백 요구를 발행하는 디바이스보다 같은 타겟 어드레스에 대한 또 다른 기록 요구를 더 발행할 것 같기 때문에, 라이트 클린 요구와 스누프 요구를 갖는 이슈다.
이러한 문제를 해결하기 위해서, 상기 브릿지는, 상기 선택된 요구에 대한 조기 응답을 발행 후, 다른 선택된 요구가 상기 발행중 프로토콜 도메인에서 발행되었는지를 검출하여, 그럴 경우, 상기 발행중 프로토콜 도메인에 대한 다른 조기 응답을 발행하여도 된다. 상기 브릿지는, 상기 발행중 프로토콜 도메인이 같은 타겟 어드레스에 대한 다른 선택된 요구를 발행할 때마다, 다른 나머지 요구가 다른 나머지 프로토콜 도메인에 의해 반드시 서비스될 수 있도록, 조기 응답을 계속 발행하여도 된다.
상기 발행중 프로토콜 도메인은, 같은 어드레스를 대상으로 하는 최대의 M개의 연속적 선택된 요구를 발행하도록 구성되어도 된다(여기서, M은 정수). 그러므로, 결국, 상기 발행중 프로토콜 도메인은, 같은 타겟 어드레스를 대상으로 하는 다른 선택된 요구를 발행하는 것을 정지시켜, 다른 나머지 요구가 다른 프로토콜 도메인에 의해 서비스되게 한다.
상기 선택된 요구가 상기 진행 기록 요구이면, 검출중인 데드락에 따라, 상기 브릿지는, 상기 제1 프로토콜 도메인에서 상기 스누프 요구가 서비스되게 하기 위해서, 상기 기록 요구가 상기 제2 프로토콜 도메인에서 서비스된 것을 가리키는, 상기 제1 프로토콜 도메인에 대한 조기 기록 응답을 발행한다. 상기 스누프 요구가 서비스되면, 상기 제2 프로토콜 도메인은, 스누프 데이터를 포함하는 스누프 응답을 발행하여도 된다. 상기 스누프 응답을 수신할 때, 상기 브릿지는, 상기 스누프 응답에 관련된 스누프 데이터를 상기 진행 기록 요구에 관련된 기록 데이터와 병합하고, 그 병합 데이터를 제2 프로토콜 도메인에 송신하여도 된다. 상기 기록 데이터와 상기 스누프 데이터를 병합함으로써, 상기 스누프 응답은, 상기 기록 요구에 따라 기록되었을 데이터를 취득하는데 사용될 수 있어, 상기 데드락 조건을 생기게 한 상기 진행 기록 요구를 상기 제2 프로토콜 도메인이 별도로 처리할 필요가 없다. 이것은, 상기 데드락의 해결 후 제2 프로토콜 도메인에서 그 밖의 요구의 핸들링의 속도를 향상시킨다.
상기 선택된 요구는, 상기 데드락이 검출되는 상기 진행 기록 요구나 상기 진행 스누프 요구 중 어느 한쪽이어도 된다. 일부의 실시예에서, 상기 브릿지는, 데드락 조건이 검출될 때마다 상기 선택된 요구의 프레쉬(fresh) 선택을 행하여도 된다.
예를 들면, 상기 브릿지는, 상기 선택된 요구로서 상기 브릿지에 의해 최근에 검출되었던 상기 진행 기록 요구와 상기 진행 스누프 요구 중 한쪽을 선택하여도 된다. 이러한 해결방법이 의미하는 것은, 나중의 요구의 발행은, 보다 이른 요구를 핸들링하는 방식에 영향을 줄 수 없는데, 상기 나중의 요구에 대한 조기 응답에 의해 상기 나중의 요구가 상기 보다 이른 요구에 자리를 양보하게 하므로, 상기 보다 이른 요구가 정상적으로 처리될 수 있다는 것이다.
다른 실시예에서, 상기 선택된 요구는, 데드락이 검출된 상기 진행 스누프 요구와 상기 진행 기록 요구 중 소정의 한쪽이어도 된다. 예를 들면, 상기 브릿지는, 상기 데드락을 해결하고 상기 진행 스누프 요구가 상기 제1 프로토콜 도메인에 의해 서비스되게 하도록 상기 제1 프로토콜 도메인에 조기 기록 응답을 항상 발행하여도 되거나, 상기 진행 기록 요구가 상기 제2 프로토콜 도메인에 의해 서비스되게 상기 제2 프로토콜 도메인에 조기 스누프 응답을 항상 발행하여도 된다.
상기 데드락 조건은 다양한 방식으로 검출되어도 된다. 예를 들면, 상기 브릿지는, 상기 제1 프로토콜 도메인으로부터 발행된 스누프 요구들과 상기 제1 프로토콜 도메인으로부터 발행된 기록 요구들의 타겟 어드레스들을 감시하고, 어드레스 일치가 발견될 때 상기 데드락 조건을 기동하여서 상기 데드락을 자체 검출하여도 된다.
또는, 상기 제1 및 제2 프로토콜 도메인 중 한쪽은, 데드락 조건을 검출하고 그 데드락 조건이 검출되면 상기 브릿지에 신호를 발행하여도 된다. 그 신호에 응답하여, 상기 브릿지는, 상기 데드락 조건을 검출하고, 상기 선택된 요구에 대한 조기 응답을 발행하여도 된다. 이 때문에, 상기 스누프 요구의 어드레스와 상기 기록 요구의 어드레스간의 충돌을 상기 브릿지 자체가 실제로 식별하는 것이 필수적인 것은 아니다-"검출한다"란, 상기 데드락이 일어난 것을 가리키는 다른 디바이스로부터의 신호를 상기 브릿지가 수신하는 것을 포함하기도 한다.
상기 브릿지는, 상기 제2 프로토콜 도메인으로부터 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구들의 긴 열을 이루는 스누프 큐(queue)를 유지한다. 일부의 시스템에서, 상기 제1 및 제2 프로토콜 도메인 중 적어도 한쪽은 진행 스누프 요구들이 발행된 순서로 진행 스누프 요구들을 서비스하여도 된다. 이러한 시스템에서, 스누프 큐에서 가장 오래된 아웃스탠딩(outstanding) 스누프 요구가 차단되면, 다른 나머지 스누프 요구들은, 나중의 스누프 요구들에 관련된 타겟 어드레스가 진행 기록 요구에 의해 교착 상태에 빠지지 않는 경우에도 서비스될 수 없을 가능성도 있다. 따라서, 상기 브릿지는, 스누프 큐에서 가장 오래된 아웃스탠딩 스누프 요구에 관련된 데드락 조건을 해결하는 것을 우선시켜도 된다. 예를 들면, 상기 스누프 큐가 복수의 진행 스누프 요구를 갖는 경우, 상기 브릿지는 아직 스누프 응답을 수신하지 않은 스누프 큐에서 가장 오래된 스누프 큐에 대한 데드락 조건을 검출하는 것에 따라서만 조기 응답을 발행하여도 된다(그 조기 응답은, 어느 요구가 상기 선택된 요구인가에 좌우되어, 가장 오래된 스누프 요구에 따라, 또는 가장 오래된 스누프 요구와 출력하는 기록 요구에 따라, 발행될 것이다).
상기 브릿지는, 상기 제1 프로토콜 도메인으로부터 제2 프로토콜 도메인에 발행된 진행 기록 요구들을 버퍼링하는 기록 버퍼를 가져도 된다(일부의 실시예들에서, 상기 버퍼는 반대의 방향으로 진행하는 기록 요구들도 버퍼링하여도 된다). 일부의 예시에서, 상기 버퍼는 실제로 상기 진행 기록 요구들을 기억하고, 그 밖의 예시에서, 상기 버퍼는 실제로 상기 요구들을 기억하지 않고 상기 진행 기록 요구들을 추적하기 위한 데이터를 기억하여도 된다.
진행 기록 요구에 대한 조기 응답을 발행한 후, 동일한 기록 타겟 어드레스의 또 다른 기록 요구가 상기 제1 프로토콜 도메인에서 발행되고, 상기 기록 버퍼가 새로운 기록 요구를 버퍼링할 충분한 공간이 없으면 문제가 생길 수 있다. 예를 들면, 상기 조기 기록 응답을 기동한 상기 진행 기록 요구는 상기 버퍼에서 최후의 이용가능한 공간을 취할 수도 있다. 이 경우에, 상기 버퍼 공간의 부족은 상기 또 다른 기록 요구가 상기 제1 프로토콜 도메인으로부터 접수되지 않게 하여서, 상기 제1 프로토콜 도메인의 상기 기록 프로그래스 프로토콜은 상기 추가의 기록 요구가 상기 기록 버퍼상에서 접수될 때까지 상기 제1 프로토콜 도메인에 의해 상기 진행 스누프 요구를 계속 차단하게 할 수도 있다.
이러한 문제를 해결하기 위해서, 상기 브릿지는, 동일한 타겟 어드레스에 대해 상기 또 다른 기록 요구와 상기 진행 기록 요구를 병합하여, 양쪽의 기록 요구가 버퍼링되게 하여도 된다. 이 병합된 기록 요구는, 그 병합 요구에 관련된 데이터가 원래 상기 진행 기록 요구와 상기 또 다른 기록 요구를 순서적으로 실행하게 될 데이터와 같도록 된 요구다. 동일한 어드레스를 대상으로 하는 기록 요구들을 병합함으로써, 상기 또 다른 기록 요구는 상기 브릿지에 의해 접수될 수 있어, 상기 또 다른 기록 요구를 위한 조기 기록 응답을 수신할 제1 프로토콜 도메인은 상기 데드락을 해결하기 위해 상기 진행 스누프 요구를 서비스할 수 있다.
기록 버퍼는, 충돌하는 진행 스누프 요구에 대한 스누프 응답이 제1 프로토콜 도메인으로부터 수신될 때까지 데드락 조건이 검출되는 진행 기록 요구를 유지하도록 배치되어도 된다. 이렇게 하여, 상기 데드락을 생기게 한 상기 진행 기록 요구는, 스누프 요구가 서비스될 때까지 제1 프로토콜 도메인에서 발행한 나중의 기록 요구와 병합하는데 이용 가능한 채로 있다.
기록 요구들의 병합은, 상기 기록 버퍼에 의해, 타겟 어드레스에 대해 데드락 조건이 식별되었는지에 상관없이, 동일한 타겟 기록 어드레스에 대한 반복된 기록 요구들을 핸들링하는데도 사용된다. 예를 들면, 제1 프로토콜 도메인이 동일한 기록 타겟 어드레스에 대해 2개의 연속적인 기록 요구를 발행하면, 이들 요구는 상기 버퍼에서의 공간을 절약하기 위해 병합될 수 있다.
제1 프로토콜 도메인은 상기 제2 프로토콜 도메인에 발행된 최대 N개의 진행 기록 요구를 핸들링하도록 구성되어도 되고, 상기 기록 버퍼는 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 적어도 N개의 진행 기록 요구를 버퍼링하는 용량을 가져도 되고, 이때 N은 정수다. 적어도 제1 프로토콜 도메인에서 한번에 핸들링할 수 있을 만큼 많은 기록 요구들을 위한 버퍼 용량을 제공함으로써, 상기 버퍼는, 데드락 조건을 검출하기 위해서, 제1 프로토콜 도메인으로부터 발행된 각 진행 기록 요구의 기록 타겟 어드레스와 입력되는 스누프 요구의 스누프 타겟 어드레스를, 상기 브릿지가 비교 가능하게 한다.
일부의 예시에서, 상기 장치는, 상기 브릿지와 상기 제1 프로토콜 도메인의 사이에 연결된 기록 스테이징 버퍼를 구비하여도 된다. 상기 기록 스테이징 버퍼는, 제1 프로토콜 도메인에서 발행된 기록 요구를 수신하여, 그 기록 요구를 버퍼링하기 위한 기록 버퍼에 공간이 있으면 상기 브릿지에 보낸다. 이에 따라 상기 브릿지에서 메시지를 수신 가능한가를 판정하기 위해 상기 브릿지와 상기 제1 프로토콜 도메인의 사이에서 필요로 한 핸드쉐이크 시그널링의 양을 감소시킬 수 있다.
상기 데드락 조건이 검출되고 조기 기록 응답이 발행될 때(즉, 상기 선택된 요구가 진행 기록 요구일 때), 상기 브릿지는 상기 데드락을 일으킨 진행 기록 요구를 캔슬하여도 된다. 제2 프로토콜 도메인은, 그 기록 요구를 핸들링하기 위한 처리 자원(예를 들면, 버퍼 엔트리들)을 보유하고 있어도 되어서, 상기 기록 요구를 캔슬하는 것에 의해 이들 자원이 다른 요구에 재할당될 수 있고, 또한 상기 데드락이 미해결된 채로 있다. 그 캔슬된 기록 요구는, 상술한 것처럼, 그래도 상기 기록 데이터와 스누프 응답을 병합하여서 효과적으로 서비스될 수 있다.
상기 캔슬된 기록 요구는, 상술한 것처럼 나중의 기록 요구와 병합하는 것을 허용하기 위해서, 상기 진행 스누프 요구에 대한 스누프 응답이 제1 프로토콜 도메인으로부터 수신될 때까지 상기 기록 버퍼에 유지되어도 된다.
일부의 실시예에서는, 상기 브릿지가 제1 및 제2 프로토콜 도메인에의 별도의 엔터티이기는 하지만, 그 밖의 실시예에서는 상기 브릿지가 제1 또는 제2 프로토콜 도메인내의 디바이스의 일부로서 구현되어도 된다는 것을 알 것이다.
본 발명의 다른 국면에서 본 데이터 처리장치는,
기록 타겟 어드레스에 관련된 데이터의 로컬 버전이 다른 장소에 기록되는 것을 요구하는 기록 요구들을 발행하고, 스누프 타겟 어드레스에 관련된 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하기 위한 적어도 하나의 디바이스 수단을 각각 포함하는 제1 프로토콜 도메인 수단 및 제2 프로토콜 도메인 수단; 및
상기 제1 프로토콜 도메인 수단과 상기 제2 프로토콜 도메인 수단의 사이에서 상기 기록 요구들과 상기 스누프 요구들을 전송하기 위한 브릿지 수단을 구비하고,
상기 제1 프로토콜 도메인 수단은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 스누프 요구가 상기 진행 기록 요구가 서비스될 때까지 차단되는 기록 프로그래스 프로토콜하에서 작동하도록 구성되고,
상기 제2 프로토콜 도메인 수단은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 기록 요구가 상기 진행 스누프 요구가 서비스될 때까지 차단되는 스누프 프로그래스 프로토콜하에서 작동하도록 구성되고,
상기 브릿지 수단은, 상기 제1 프로토콜 도메인 수단으로부터 상기 제2 프로토콜 도메인 수단에 발행된 진행 기록 요구에 대한 상기 기록 타겟 어드레스가, 상기 제2 프로토콜 도메인 수단으로부터 상기 제1 프로토콜 도메인 수단에 발행된 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 데드락 조건을 검출하도록 구성되고,
상기 브릿지 수단은, 상기 데드락 조건을 검출할 때, 서비스될 선택된 요구를 기다리지 않고 상기 선택된 요구에 대한 조기 응답을 발행하도록 구성되고, 상기 선택된 요구는 상기 진행 기록 요구나 상기 진행 스누프 요구를 포함하고, 상기 조기 응답이, 상기 선택된 요구를 발행한 발행중 프로토콜 도메인 수단에 상기 선택된 요구가 서비스된 것을 가리킨다.
또 다른 국면에서 본 본 발명은, 기록 타겟 어드레스에 관련된 데이터의 로컬 버전이 다른 장소에 기록되는 것을 요구하는 기록 요구들을 발행하고, 스누프 타겟 어드레스에 관련된 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하도록 구성된 적어도 하나의 디바이스를 각각 포함하는 제1 프로토콜 도메인 및 제2 프로토콜 도메인을 구비하되, 상기 제1 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 스누프 요구가 상기 진행 기록 요구가 서비스될 때까지 차단되는 기록 프로그래스 프로토콜하에서 작동하고, 상기 제2 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 기록 요구가 상기 진행 스누프 요구가 서비스될 때까지 차단되는 스누프 프로그래스 프로토콜하에서 작동하는, 장치의 방법을 제공하고;
상기 방법은,
상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구에 대한 상기 기록 타겟 어드레스가, 상기 제2 프로토콜 도메인으로부터 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 데드락 조건을 검출하는 단계; 및
상기 데드락 조건을 검출할 때, 서비스될 선택된 요구를 기다리지 않고 상기 선택된 요구에 대한 조기 응답을 발행하는 단계로서, 상기 선택된 요구는 상기 진행 기록 요구나 상기 진행 스누프 요구를 포함하고, 상기 조기 응답이, 상기 선택된 요구를 발행한 발행중 프로토콜 도메인에 상기 선택된 요구가 서비스된 것을 가리키는, 본 단계를 포함한다.
본 발명의 또 다른 특정 국면 및 바람직한 국면들은 첨부하는 독립항 및 종속항에 기재되어 있다. 종속항의 특징은 독립항의 특징과 필요에 따라 조합되어도 되고, 청구항에 명백히 기재된 것들 이외의 조합으로 조합되어도 된다.
도 1은 제1 및 제2 프로토콜 도메인을 갖는 데이터 처리장치를 개략적으로 나타낸 것이고,
도 2는 제1 프로토콜 도메인의 기록 프로그래스 프로토콜의 일례를 나타내고,
도 3은 제2 프로토콜 도메인의 스누프 프로그래스 프로토콜의 일례를 나타내고,
도 4는 데드락 조건의 일례를 나타내고,
도 5는 그 데드락 조건을 해결하는 기술의 일례를 나타내고,
도 6a 및 6b는 가장 나중에 검출되는 진행 기록 요구와 진행 스누프 요구 중 한쪽에 대한 조기 응답을 발행하여서 데드락 조건을 해결하는 일례를 나타내고,
도 7은 데드락 조건을 해결하는 방법을 나타내고,
도 8은 기록 버퍼가 이미 꽉 찼을 때 데드락 조건이 검출된 진행 기록 요구와 같은 타겟 어드레스에 대한 다른 기록 요구를 상기 제1 프로토콜 도메인이 발행하는 경우에 일어날 수도 있는 이슈를 나타내고,
도 9는 같은 타겟 어드레스에 대한 다른 나머지 기록 요구와 상기 진행 요구를 병합하여서 도 8에 도시된 이슈를 해결하는 기술의 일례를 나타내며,
도 10은 도 9의 예에 따라 데드락 조건을 해결하는 방법을 나타낸다.
도 1은 제1 프로토콜 도메인A, 제2 프로토콜 도메인B 및 이 2개의 도메인을 링크하는 브릿지(4)로 이루어진 데이터 처리장치(2)를 나타낸 것이다. 각 프로토콜 도메인A,B는 버스(8)를 통해 서로 통신하는 몇몇의 디바이스(6)를 구비한다. 이 디바이스(6)는, 어떠한 종류의 처리 디바이스나 스토리지 디바이스로 이루어져도 되고, 마스터 디바이스들과 슬레이브 디바이스들을 구비하여도 된다. 각 도메인A, B는, 데이터 값의 로컬 버전을 다른 장소에 기록하기 위한 기록 요구들을 발행하고 상기 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하는 것이 가능한 적어도 하나의 디바이스를 구비하여도 된다. 상기 기록 요구들과 스누프 요구들은, 동일한 프로토콜 도메인A,B내에서 또는 서로 다른 프로토콜 도메인내에서 디바이스간에 교환되어도 된다.
브릿지(4)는 일 도메인에서의 디바이스로부터 타 도메인에서의 디바이스에 발행된 스누프 요구들의 긴 열을 이루는 스누프 큐(10)와, 일 도메인에서의 디바이스로부터 타 도메인에서의 디바이스에 발행된 기록 요구들을 버퍼링하는 기록 요구 버퍼(12)와, 그 기록 요구 버퍼(12)에 버퍼링된 기록 요구들에 관련된 데이터를 기억하는 기록 데이터 버퍼(14)를 구비한다. 또한, 기록 스테이징 버퍼(16)는, 기록 요구들이 상기 기록 요구 버퍼(12)에서 접수될 수 있기 전에 스테이징하기 위해서 상기 도메인A,B중 적어도 하나와 상기 브릿지(4) 사이에 설치된다.
도 1에서는 상기 브릿지(4)가 처리 도메인A와 처리 도메인B로부터 별개인 것처럼 도시되어 있지만, 일부의 실시예에서 상기 브릿지(4)의 기능은 도메인 A, B 중 한쪽의 도메인내의 디바이스(6)를 사용하여 구현되어도 된다는 것을 알 것이다.
제1 프로토콜 도메인A는 기록 프로그래스 프로토콜하에서 작동한다. 기록 프로그래스 프로토콜에서, 기록 요구가 기록 타겟 어드레스에 대해 진행중이고 스누프 요구도 같은 타겟 어드레스에 대해 진행중일 경우, 상기 진행 스누프 요구는 상기 기록 요구가 서비스될 때까지 차단된다. 도 2는 기록 프로그래스 프로토콜하에서 작동하는 도메인A의 디바이스들의 일례를 나타낸다. 그 디바이스들은, 2개의 마스터 디바이스(예를 들면, 프로세서)와, 슬레이브 디바이스(예를 들면, 메모리), 슬레이브 디바이스에 요구들을 라우팅하는 인터커넥트 또는 버스일 수도 있는 코히어런시의 포인트(POC)(일부의 시스템에서, 상기 인터커넥트나 버스는 데이터의 코히어런시를 관리할 책임이 있다-이 경우에 상기 인터커넥트/버스는 슬레이브 디바이스로서 마스터 디바이스들인 것처럼 보인다)를 구비한다.
도 2에서, 마스터 디바이스0은, 상기 코히어런시의 포인트에, 타겟 어드레스A에 관련된 로컬 데이터 값을 상기 코히어런시의 포인트를 거쳐 액세스 가능한 타겟 장소에 기록하기 위한 라이트 백(WB)이나 라이트 클린(write clean, WC) 요구를 발행한다. 한편, 다른 마스터 디바이스1로부터의 판독 요구에 따라, 상기 코히어런시의 포인트는 상기 마스터 디바이스0에, 동일한 타겟 어드레스A에 관한 스누프 요구를 발행한다. 기록 요구가 이미 타겟 어드레스A에 대해 진행중이므로, 스누프 요구는, 기록이 서비스되었다는 것을 나타내는, 기록 응답 신호가 상기 코히어런시의 포인트로부터 수신될 때까지 상기 마스터 디바이스0에 의해 차단된다. 그 기록이 서비스된 후에, 상기 스누프 요구는 비차단되고, 스누프 응답은 상기 코히어런시의 포인트에 발행되고 나서, 그 스누프된 데이터를 마스터1에 보낸다.
이와 대조하여, 상기 제2 프로토콜 도메인B는, 스누프 요구가 진행중일 때, 그 스누프 요구와 같은 타겟 어드레스를 대상으로 하는 기록 요구는 상기 스누프 요구가 서비스될 때까지 일시 중지되는 스누프 프로그래스 프로토콜하에서 작동한다. 도 3은 스누프 프로그래스 프로토콜하에서 작동하는 도메인B내의 디바이스들의 일례를 나타낸다. 타겟 어드레스B에 관련된 데이터의 로컬 버전에의 액세스를 요구하기 위해 스누프 요구가 마스터 디바이스0에 발행된다. 또한, 마스터 디바이스0은, 동일한 타겟 어드레스B에 관련된 데이터에 관해 코히어런시의 포인트에 기록 요구를 발행한다. 상기 스누프 프로그래스 프로토콜에 따라, 상기 기록 요구는, 어드레스B에 대한 스누프 요구가 진행중이기 때문에 서비스될 수 없다. 이 때문에, 상기 코히어런시의 포인트는, 기록 데이터용 요구를, 상기 스누프 응답이 마스터 디바이스0에 의해 상기 마스터 디바이스1에 발행될 때까지 연기하여도 된다. 마스터 디바이스0은, 상기 데이터 요구가 상기 코히어런시의 포인트로부터 수신될 때까지 상기 기록 데이터를 발행할 수 없다. 따라서, 상기 기록 요구는, 그 스누프 요구가 서비스될 때까지 서비스될 수 없다.
서로 다른 프로토콜은 기록 요구들과 스누프 요구들을 처리하는 서로 다른 방식을 규정한다는 것을 알 것이다. 예를 들면, 기록 응답, 기록 준비 및 스누프 응답의 신호들의 사용은, 서로 다른 프로토콜에서 서로 달라도 된다. 본 발명의 목적을 위해, 각 프로토콜에서 기록 요구들과 스누프 요구들을 핸들링하는 방식의 정확한 상세는, 한쪽의 도메인이 기록 프로그래스 프로토콜로 작동하고 다른쪽의 도메인이 스누프 프로그래스 프로토콜로 작동한다면, 중요하지 않다.
또한, 항상 기록 프로그래스 프로토콜 또는 스누프 프로그래스 프로토콜처럼 동작하는 프로토콜이 일부는 있지만, 그 밖의 프로토콜은 항상 이렇게 동작하지 않을 수도 있고, 예를 들면 특정한 조건하에서만 기록 프로그래스 프로토콜 또는 스누프 프로그래스 프로토콜로서 작동할 수도 있다. 이러한 프로토콜들에서, 본 기술은, 때로는 한쪽의 프로토콜이 기록 프로그래스 프로토콜로서 작동중이고 다른쪽의 프로토콜이 스누프 프로그래스 프로토콜로서 작동중일 때 적용될 수 있고 다른 때에 적용되지 않을 수도 있다. 그러므로, "스누프/기록 프로그래스 프로토콜하에서 작동하도록 구성된"이란, 상기 프로토콜 도메인이 항상 스누프/기록 프로그래스 프로토콜하에서 작동해야한다는 것을 의미하지는 않는다.
도 4는 기록 프로그래스 프로토콜하에서 작동하는 제1 프로토콜 도메인A내의 디바이스와 스누프 프로그래스 프로토콜하에서 작동하는 제2 프로토콜 도메인B내의 디바이스간에 통신하는 동안에 일어날 수 있는 데드락 조건의 일례를 나타낸다. 도 4에 도시된 것처럼, 제1 프로토콜 도메인A가 제2 프로토콜 도메인B에 기록 요구를 발행하고, 제2 프로토콜 도메인B가 제1 프로토콜 도메인A에 스누프 요구를 발행하는 경우에, 각 도메인은 그 수신된 요구를 차단할 것이다. 도메인A에서의 디바이스는, 동일한 타겟 어드레스X에 대한 상기 발행된 기록 요구가 서비스되지 않고 있기 때문에, 상기 기록 프로그래스 프로토콜에 따라 상기 타겟 어드레스X에 대해 상기 수신된 스누프 요구를 차단할 것이다. 도메인B에서의 디바이스는, 동일한 타겟 어드레스X에 대한 상기 발행된 스누프 요구가 서비스되지 않고 있기 때문에, 상기 스누프 프로그래스 프로토콜에 따라 상기 타겟 어드레스X에 대해 상기 수신된 기록 요구를 차단할 것이다. 따라서, 도메인A와 B의 양쪽은 자신의 처리를 행하기 전에 진행하도록 서로 대기함으로써, 데드락을 일으킨다.
도 5는 데드락을 해결할 수 있는 방법의 일례를 나타낸다. 상기 브릿지(4)는, 스누프 요구와 기록 요구 자체의 어드레스를 검사하여서, 또는 데드락 조건이 존재하는 것을 나타내는 프로토콜 도메인A,B 중 한쪽으로부터의 신호를 수신하여서, 상기 데드락 조건의 존재를 검출할 수 있다. 데드락의 검출시에, 상기 브릿지(4)는, 대응한 요구가 서비스되고 있다는 것을 나타내기 위해 상기 진행 기록 요구와 스누프 요구 중 한쪽에 대한 조기 응답을 발행한다. 도 5의 예시에서는, 상기 기록 요구가 실제로 제2 프로토콜 도메인B에 의해 서비스되지 않았을지라도, 상기 타겟 어드레스X에 대한 상기 진행 기록 요구가 서비스된 것을 나타내기 위해서 조기 기록 응답을 제1 프로토콜 도메인A에 보낸다. 제1 프로토콜 도메인A의 관점에서 보면, 상기 기록은 지금 서비스되고 있어서, 이는 스누프 요구를 비차단한다. 그 스누프 요구는 지금 제1 프로토콜 도메인A에 의해 서비스될 수 있다. 스누프 응답이 상기 브릿지(4)를 거쳐 발생되어 제2 프로토콜 도메인B에 보내진다. 그 스누프 응답이 (데드락을 일으킨 상기 진행 기록 요구에 따라 라이트 백되었을) 상기 타겟 어드레스 X에 대응한 최신의 데이터를 포함하는 것이 일반적이므로, 상기 기록 요구를 더 이상 실행하는 것이 필요하지 않다. 상기 진행 기록 요구의 기록 데이터가 상기 스누프 응답에 포함되지 않는 데이터를 포함하는 경우, 상기 브릿지는 그 기록 데이터와 상기 스누프 응답의 스누프 데이터를 병합한 후 그 응답을 제2 프로토콜 도메인B에 보낼 수 있다.
따라서, 기록 요구에 대한 조기 응답을 발행하는 것에 의해, 데드락이 해결될 수 있기 때문에, 코히어런시 프로토콜들의 충돌하에서 작동하는 도메인간에 호환 가능하게 통신할 수 있다.
마찬가지로, 상기 데드락은, 제2 프로토콜 도메인B에서 상기 진행 기록 요구가 처리될 수 있도록, 상기 스누프 요구가 제1 프로토콜 도메인A에서 서비스된 것을 가리키는, 제2 프로토콜 도메인B에 조기 스누프 응답을 발생하여서 해결될 수도 있었다.
상기 브릿지(4)는, 일부의 실시예에서, 상기 데드락 조건을 비차단하고 다른 나머지 요구를 계속 허용하도록, 항상 상기 기록 요구에 대한 조기 기록 응답을 보내거나, 항상 상기 스누프 요구에 대한 조기 스누프 응답을 보내기도 한다. 이러한 실시예들에서는, 상기 조기 응답을 어느 요구가 수신하는지를 미리 결정하고, 상기 브릿지가 어느 요구를 먼저 수신하는지에 상관없다.
그러나, 도 6a 및 6b에 도시된 것처럼, 다른 실시예에서, 상기 브릿지(4)는, 상기 브릿지(4)에 의해 가장 나중에 검출되는 상기 진행 스누프 요구와 상기 진행 기록 요구 중 한쪽에 대한 조기 응답을 발행하여도 된다. 상기 데드락이 검출되었던 요구들의 나중의 요구에 대한 조기 응답을 보냄으로써, 그 보다 이른 요구는 비차단되고 통상의 방식으로 처리되어도 된다. 이러한 해결방법이 의미하는 것은, 나중의 요구가 그 보다 이른 요구가 서비스되는 방식에 영향을 미칠 수 없다는 것이다.
도 6a에 도시된 것처럼, 제1 프로토콜 도메인A로부터의 상기 진행 기록 요구가 제2 프로토콜 도메인B로부터의 스누프 요구 Snp와 충돌하기 전에 상기 브릿지(4)에 의해 마주치는 경우, 조기 스누프 응답은, 스누프 요구가 제1 프로토콜 도메인A에서 서비스된 것을 나타내는, 제2 프로토콜 도메인B에 발행된다. 이것은, 기록 요구를 비차단하고, 그 기록 요구가 제2 프로토콜 도메인B에 의해 핸들링되는 것을 가능하게 한다.
그러나, 도 6a에 도시된 것처럼, 제2 프로토콜 도메인B는, 상기 진행 기록 요구WB를 한번 더 차단하는 동일한 어드레스를 대상으로 하는 다른 스누프 요구 Snp를 발행할 수 있었다. 이러한 이슈를 해결하기 위해서, 상기 브릿지(4)는, 제2 프로토콜 도메인이 동일한 어드레스를 대상으로 하는 다른 스누프 요구를 발생할 때마다 다른 조기 스누프 응답을 발행할 수 있다. 결국, 상기 제2 프로토콜 도메인B는, 동일한 어드레스를 대상으로 하는 스누프 요구들을 발행하는 것을 정지시켜서, 지금 상기 진행 기록 요구를 핸들링할 준비가 되어 있다. 제2 프로토콜 도메인B는, 상기 기록 요구에 관련된 기록 데이터를 수신할 준비가 되어 있는 것을 나타내기 위해서 기록 응답을 상기 브릿지(4)에 발행한다. 그리고, 상기 브릿지(4)는, 제1 프로토콜 도메인에 기록 응답B를 보내고, 응답에 있어서 상기 제1 프로토콜 도메인A는 기록 긍정 응답(acknowledge) 신호 WACK를 상기 브릿지(4)에 보낸다. 그
기록 긍정 응답신호 WACK에 따라, 상기 브릿지(4)는, 기록 데이터를 제2 프로토콜 도메인B에 전송한다.
한편, 도 6b는 제2 프로토콜 도메인B로부터의 스누프 요구Snp가, 제1 프로토콜 도메인A로부터의 기록 요구WB 이전에 상기 브릿지(4)에 의해 검출되는 일례를 나타낸다. 기록 요구WB가 가장 나중에 검출되었을 때, 상기 브릿지(4)는, (기록 요구WB가 서비스되지 않았을지라도) 상기 기록 요구WB가 제2 프로토콜 도메인B에서 서비스된 것을 나타내는, 조기 기록 응답B를 제1 프로토콜 도메인A에 발행한다. 이것은 스누프 요구Snp를 비차단하여서, 제1 프로토콜 도메인A는 스누프 응답Rsp를 상기 브릿지에 보낸다. 또한, 상기 조기 기록 응답B에 따라, 상기 제1 프로토콜 도메인A는 기록 긍정 응답 신호 WACK를 상기 브릿지(4)에 발행한다. 상기 브릿지는 조기 기록 응답B가 발행된 기록 요구에 대한 상기 기록 긍정 응답신호 WACK를 수신할 때, 상기 브릿지(4)는, 제2 프로토콜 도메인B에 송신된 병합된 기록/스누프 데이터를 발생하기 위해, 상기 기록 데이터 버퍼(14)에서의 대응한 기록 데이터와 상기 스누프 응답Rsp에 관련된 스누프 데이터를 병합한다. 그 병합된 데이터는, 기록 데이터와 스누프 데이터가 연속적으로 타겟 장소에 기록되었을 경우 일어났을 데이터다. 이렇게 상기 데이터를 병합함으로써, 상기 기록 요구와 상기 스누프 요구의 양쪽 요구는, 다른 요구를 발행할 필요없이 서비스될 수 있다.
도 7은 도 6a 및 6b의 실시예에 따라 데드락 조건을 해결하는 방법을 나타낸다. 단계 20에서, 데드락 조건은, 제1 프로토콜 도메인A로부터 제2 프로토콜 도메인B에 발행된 기록 요구와, 제2 프로토콜 도메인B로부터 제1 프로토콜 도메인A에 발행된 스누프 요구에 대해 검출되고, 이 양쪽의 요구는 같은 어드레스를 대상으로 한다. 단계 22에서, 상기 브릿지(4)는, 상기 스누프 요구와 기록 요구 중 어느 쪽이 먼저 검출되었는지를 판정한다. 다음에 검출된 요구는, 조기 응답이 발행된 상기 선택된 요구다.
상기 기록 요구가 먼저 검출되었을 경우(도 6a에 도시된 경우), 단계 24에서, 조기 스누프 응답은 제2 프로토콜 도메인B에 발행된다. 단계 26에서, 상기 브릿지(4)는, 다른 스누프 요구가 상기 조기 응답이 발행되었던 스누프 요구와 같은 타겟 어드레스에 대해 상기 제2 프로토콜 도메인B에 의해 발행되었는지를 검출한다. 검출되었을 경우, 상기 방법은 단계 24에 복귀하여, 다른 조기 스누프 응답이 제2 프로토콜 도메인B에 발행된다.
제2 프로토콜 도메인B가 동일한 타겟 어드레스에 대한 다른 스누프를 발행할 때마다, 결국 제2 프로토콜 도메인B가 동일한 어드레스에 대한 다른 스누프 요구를 발행하지 않을 때까지 다른 조기 스누프 응답이 발행된다. 이 시점에서, 상기 진행 기록 요구는 더 이상 차단되지 않아서, 제2 프로토콜 도메인B는, 상기 제2 프로토콜 도메인B가 기록 데이터를 수신할 준비가 되어 있는 것을 가리키는 준비신호를 상기 브릿지(4)에 발행한다. 상기 준비신호에 따라, 단계 28에서, 상기 브릿지(4)는, 기록 응답을 제1 프로토콜 도메인A에 발행한다. 기록 긍정응답 신호 WACK가 제1 프로토콜 도메인A로부터 수신될 때, 단계 30에서 상기 브릿지(4)는, 상기 진행 기록 요구에 관련된 기록 데이터 버퍼(14)로부터 기록 데이터 Data_I를 제2 프로토콜 도메인B에 송신한다. 상기 타겟 어드레스에 관련된 데이터가 지금 제2 프로토콜 도메인B에 제공되었으므로, 조기 응답이 발행되었던 스누프 요구를 지금 서비스할 필요가 없다.
한편, 단계 22에서 상기 스누프 요구가 상기 기록 요구전에 검출되었을 경우(도 6b에 도시된 경우), 상기 기록 요구는 상기 선택된 요구이고, 단계 32에서 상기 브릿지(4)는, (상기 기록 요구가 실제로 서비스되지 않을지라도) 상기 기록 요구가 제2 프로토콜 도메인B에서 서비스된 것을 가리키는, 조기 기록 응답을 제1 프로토콜 도메인A에 발행한다. 단계 34에서, 상기 브릿지(4)는, 동일한 어드레스에 대한 다른 기록이 수신되었는지를 판정한다. 수신되었을 경우, 단계 36에서, 새로운 기록 요구는 기록 요구 버퍼(12)에서 구 기록 요구와 병합되고 임의의 관련된 기록 데이터도 기록 데이터 버퍼(14)에서 병합되고, 단계 32에서 다른 조기 기록 응답은 상기 진행 스누프 요구가 한번 더 비차단되도록, 제1 프로토콜 도메인A에 발행된다.
결국, 제1 프로토콜 도메인A는, 같은 어드레스를 대상으로 하는 또 다른 기록 요구를 발행하지 않고, 상기 진행 스누프 요구에 대한 스누프 응답을 발행한다. 또한, 제1 프로토콜 도메인A는, 기록 요구에 관련된 기록 데이터 버퍼(14)에서의 데이터가 지금 제2 프로토콜 도메인B에 송신될 수 있는 것을 가리키는, 상기 조기 기록 응답에 따라 기록 긍정응답 신호 WACK를 발행한다. 상기 스누프 응답과 기록 긍정응답 신호가 수신될 때, 단계 38에서, 상기 브릿지(4)는 상기 스누프 응답 데이터와, 상기 데드락을 일으킨 상기 진행 기록 요구에 대한 기록 데이터를 병합한다. 단계 40에서, 상기 병합된 데이터를 포함하는 스누프 응답은, 제2 프로토콜 도메인B에 보낸다. 이렇게 데이터를 병합함으로써, 상기 스누프 요구가 필요한 데이터를 제2 프로토콜 도메인B에 전달하였으므로, 상기 조기 응답이 발행되었던 기록 요구를 서비스할 필요가 없다.
따라서, 데드락이 검출된 상기 스누프 요구들과 상기 기록 요구들 중 하나에 대한 조기 응답을 발행함으로써, 상기 데드락은 처리가 계속되도록 해결될 수 있다.
도 8은 상기 브릿지(4)의 기록 요구 버퍼(12)와 기록 데이터 버퍼(14)가 꽉 차질 때 일어날 수도 있는 이슈의 일례를 나타낸다. 상기 버퍼(12, 14)는, 유한수의 기록 요구를 위한 용량을 갖는다(도 8은, 버퍼들이 4개의 요구를 수용할 수 있지는 일례를 나타내지만, 실제로 기록 버퍼(12, 14)가 보다 클 수도 있다는 것을 알 것이다). 도 8에 도시된 것처럼, 제1 프로토콜 도메인A가 4개의 타겟 어드레스A, B, C, D에 대해 4개의 기록 요구 WriteClean-A 내지 WriteClean-D를 발행한 후, 상기 버퍼는 꽉 차있고, 어떠한 또 다른 기록 요구들도 접수할 수 없다. 어드레스A, B, C, D는, 동일한 어드레스나 서로 다른 어드레스이어도 된다.
도 8에 도시된 것처럼, 그 후, 상기 도메인B는, 스누프 타겟 어드레스A에 대한 스누프 요구 Snp-A를 발행하여도 된다. 어드레스A를 대상으로 하는 진행 기록 요구 WriteClean-A가 있으므로, 상기 데드락 조건이 검출되고, 상기 브릿지(4)는, 상기 데드락 조건을 해결하려고 하기 위해서 조기 기록 응답 B-A를 제1 프로토콜 도메인A에 발행하여도 된다(본 예시에서는, 상기 기록 요구가 상기 선택된 요구다).
그러나, 상기 기록 요구 WriteClean-A가 서비스된 것을 가리키는 조기 기록 응답B-A를 수신하면, 제1 프로토콜 도메인A가 동일한 어드레스A에 대한 다른 기록 요구 WriteClean-A를 발행하여도 되는 것이 가능하다. 이 경우에, 상기 스누프 요구 Snp-A는, 도메인A의 기록 프로그래스 프로토콜에 따라 새로운 기록 요구에 의해 차단되기 때문에 그래도 서비스될 수 없다. 게다가, 상기 브릿지(4)에서의 기록 버퍼(12)가 이미 꽉 차 있기 때문에, 번호5로 나타낸 상기 새로운 기록 요구는 기록 스테이징 버퍼(16)를 넘어 지나가지 않을 것이다. 이 때문에, 상기 프로토콜 도메인A는, 이 요구가 서비스중이 아니어서 동일한 타겟 어드레스를 대상으로 하는 스누프 요구 Snp-A를 차단할 때 반송하였다고 결정한다.
이러한 문제는, 동일한 어드레스에 대해 새로운 기록 요구와 그 보다 오래된 기록 요구를 상기 브릿지(4)가 병합하게 함으로써 해결될 수 있다. 병합된 기록은, 그 보다 오래된 기록 요구와 그 보다 새로운 기록 요구가 번갈아 행해질 경우 타겟 장소가 되는 데이터와 동등한 기록 데이터로 생성될 수 있다. 그 요구들을 병합함으로써, 나중의 기록 요구는 상기 버퍼에 접수될 수 있다. 그 후, 상기 브릿지(4)는 (다시, 제2 프로토콜 도메인A가 다른 기록 응답을 실제로 서비스하지 않았을지라도) 나중의 기록 요구가 서비스된 것을 나타내기 위해 상기 다른 조기 기록 응답을 제1 프로토콜 도메인A에 발행한다. 제1 프로토콜 도메인A의 디바이스들은, 동일한 타겟 어드레스를 대상으로 하는 유한수의 연속적인 기록 요구만을 발행하여도 된다. 이 때문에, 동일한 타겟 어드레스에 대한 다른 기록 요구가 발행될 때마다 조기 응답 메시지를 제1 프로토콜 도메인A에 계속해서 발행하고, 각 기록 요구와 상기 버퍼에서의 동일한 어드레스에 대한 그 보다 이른 요구를 병합함으로써, 결국 상기 제1 프로토콜 도메인A는 서로 다른 타겟 어드레스에 대한 새로운 기록 요구를 발행하여서, 데드락이 검출되었던 상기 스누프 요구를 비차단한다. 그리고, 그 스누프 요구는 서비스될 수 있다.
도 9는 도 8에 도시된 문제가 해결될 수 있는 방식의 일례를 나타낸다. 도 9는 원 문자에 대해 아래에 나타내고 기재된 다수의 동작을 나타낸다. 그 동작이 도 9에 기재되어 설명된 순서는 반드시 그 동작이 실제로 실행되었을 시간적 순서가 아니고-일부의 동작은 동시에 또는 서로 다른 순서로 행해져도 된다는 것을 알 것이다.
H: 제2 프로토콜 도메인B에서의 디바이스는, 타겟 어드레스A와 E를 각각 규정하는 2개의 판독동작 Rd-A, Rd-E를 발행한다. 상기 어드레스A와 E에 관련된 데이터의 버전이 제1 프로토콜 도메인내의 디바이스들에 의해 기억될 수 있었을 때, 상기 판독동작 Rd-A, Rd-E는 제2 도메인B로부터 제1 도메인A에 발행되도록 스누프 요구 Snp-A, Snp-E를 기동한다.
I: 제1 프로토콜 도메인A는 타겟 어드레스A, B, C, D를 각각 규정하는 4개의 기록 요구 WriteClean-A 내지 WriteClean-D를 발행한다. 또, 상기 어드레스A, B, C, D는 동일한 어드레스 또는 서로 다른 어드레스이어도 된다. 어드레스B, C, D가 어드레스A와 서로 다른 경우, 기록 요구 WriteClean-B 내지 WriteClean-D는, 데드락이 이들 요구에 대해 검출되지 않기 때문에 제2 도메인B에 의해 서비스될 수 있다. 어드레스B, C, D의 어떠한 어드레스도 어드레스A와 같은 경우, 대응한 기록 요구들은 어드레스A에 대한 진행 스누프 요구가 있기 때문에 서비스될 수 없다.
J: 제2 프로토콜 도메인B는, 동일한 타겟 어드레스A를 규정하는 기록 요구WriteClean-A와 스누프 요구Snp-A의 사이에서 데드락 조건이 일어나는 것을 검출하고, 신호 Cancel-A를 상기 브릿지(4)에 발행한다.
K: 제2 프로토콜 도메인B로부터 신호 Cancel-A를 수신하면, 상기 브릿지(4)는, 더 이상 서비스되지 않도록 데드락 조건을 검출하고 그 기록 요구WriteClean-A를 캔슬한다(필수적이지는 않지만, 상기 기록 요구를 캔슬하는 것은 다른 나머지 요구들을 서비스하기 위한 제2 프로토콜 도메인B에서 자원을 없앨 수 있다). 그러나, 상기 캔슬된 기록 요구WriteClean-A는, 필요한 경우 그 이후의 요구와 병합하는 것을 허용하기 위해 상기 버퍼내에 유지된다.
L: 상기 데드락 조건을 검출하면, 상기 브릿지(4)는, 기록요구WriteClean-A에 대한 조기 기록 응답B-A를 발행한다. 그 조기 기록 응답B-A를 수신하면, 제1 도메인A는 상기 기록이 제2 도메인B에서 서비스되어 있다고 결정한다.
조기 기록 응답B-A를 수신할 때, 제1 프로토콜 도메인A는, 데드락을 일으킨 상기 기록 요구와 같은 타겟 어드레스A를 규정하는 다른 기록 요구를 발행하고(도 9에서의 케이스 M), 서로 다른 타겟 어드레스를 규정하는 다른 기록 요구를 발행하거나(도 9에서의 케이스 P) 또는 상기 진행 스누프 요구를 서비스하여도 된다.
M: 조기 기록 응답B-A에 따라, 제1 프로토콜 도메인A가 그 데드락이 검출된 어드레스와 같은 타겟 어드레스A를 대상으로 하는 다른 기록 요구를 발행하면,
N: 상기 브릿지(4)는 새로운 기록 요구와 같은 타겟 어드레스A에 대한 이전의 기록 요구를 병합한다. 그 기록 데이터 버퍼(14)내의 병합된 데이터는, 원래의 기록 요구와 그 이후의 기록 요구가 순차적으로 행해졌을 경우 생기는 데이터에 대응한다.
O: 상기 브릿지(4)는 다른 조기 기록 응답B-A를 제1 프로토콜 도메인A에 보낸다. 따라서, 제1 프로토콜 도메인A는, 상기 기록이 서비스되어 있고, 다시, 같은 타겟 어드레스에 대한 다른 기록 요구를 발행하고(도 9에서의 케이스 M), 서로 다른 타겟 어드레스에 대한 기록 요구를 발행하거나(케이스 P) 스누프 요구를 핸들링하는지(케이스 Q)의 여부를 선택하여도 된다고 결정한다.
P: 상기 도메인A가 상기 데드락 조건을 일으킨 상기 진행 기록 요구 WriteClean-A의 타겟 어드레스와 서로 다른 타겟 어드레스를 규정하는 기록 요구 WriteClean-E를 발행하는 경우, 타겟 어드레스A의 데드락은, 그 어드레스A를 대상으로 하는 어떠한 진행 기록 요구도 더 이상 없기 때문에 해결된다. 따라서, 제1 프로토콜 도메인A는, 스누프 응답을 지금 자유롭게 서비스한다(도 9에 도시된 문자 Q).
Q: 상기 프로토콜 도메인A는, 결국 상기 스누프 요구Snp-A에 따라 스누프 응답 CRDATA-A를 발행한다. 스누프 응답은, 로컬 버전의 코히어런시 상태의 정보뿐만 아니라, 제1 프로토콜 도메인A내에 유지되어 있는 어드레스A에 관련된 데이터의 로컬 버전의 값도 포함한다.
R: 상기 브릿지(4)는, 스누프 응답을 수신하고, 스누프 응답에 관련된 상기 스누프 데이터와, 타겟 어드레스A에 대한 상기 병합된 기록 요구에 관련된 데이터를 병합한다.
S: 상기 브릿지(4)는, 상기 병합된 응답 데이터(스누프된 데이터-A)를 제2 프로토콜 도메인B에 보낸다.
T: 제2 프로토콜 도메인B는, 상기 수신된 스누프 데이터를 사용하여 판독 요구Rd-A를 서비스한다. 원래의 데드락을 일으킨 상기 기록 요구WriteClean-A나, 같은 타겟 어드레스를 규정하는 어떠한 방해 기록 요구WriteClean-A도 더 이상 실행할 필요가 없는데, 그 이유는 이들 요구에 관련된 기록 데이터가 스누프 데이터와 병합되어 있기 때문이다.
도 9는 데드락이 해결되었기 전에 2개의 조기 기록 응답B-A만이 필요하였던 예를 도시하고 있지만, 다른 경우에 있어서, 제1 프로토콜 도메인A는 데드락을 일으킨 기록 요구와 같은 타겟 어드레스를 대상으로 하는 또 다른 기록 요구를 반복적으로 발행하기도 한다는 것(즉, 도 9의 케이스 M이 수회 연속적으로 일어난다)을 알 것이다. 이 경우에, 상기 브릿지(4)는, 계속하여, 각 새로운 기록 요구와 같은 어드레스에 대한 이전의 기록 요구와의 병합을 행하고(문자 N), 결국 상기 제1 프로토콜 도메인A가 서로 다른 어드레스를 대상으로 하는 기록 요구를 발행하거나(케이스 P) 스누프 요구를 서비스(케이스 Q)할 때까지 조기 기록 응답을 발행한다(문자 0).
또한, 도 9의 예시에서, 문자 P에서 타겟 어드레스E에 대한 기록 요구 WriteClean-E의 발행은 문자 H에서 타겟 어드레스E에 대해 발행된 스누프 요구Snp-E의 서비스를 차단한다. 따라서, 다른 데드락 조건은 어드레스E에 대해 검출되어서, 도 9에 어드레스A에 대해 도시된 것처럼 같은 동작도 어드레스E에 대해 사용된다. 상기 데드락 조건이 하나보다 많은 어드레스에 대해 검출되는 경우, 상기 브릿지(4)는, 스누프 큐(10)의 헤드에 있는 스누프 요구에 관련된 데드락에서 시작하는, 데드락들을 하나씩 해결하기도 한다. 이것은, 일부의 프로토콜에서, 스누프 큐(10)에서 가장 오래된 스누프의 차단에 의해, 그 이후의 스누프 요구도 차단되기도 한다. 이러한 경우에, 상기 브릿지(4)는 상기 스누프 큐의 헤드에서 그 스누프에 대해 식별된 데드락 조건을 해결하는 것에 초점을 두기도 한다. 따라서, 나중의 스누프의 상태와 그것들의 나중의 스누프에 대한 데드락이 있는지의 여부에 관계없이, 상기 브릿지(4)는, 스누프 큐(10)의 헤드에서 상기 스누프에 대한 데드락들을 검출하고, 가장 오래된 스누프 요구에 대해 데드락이 검출되는 경우만 조기 기록 응답을 발행할 수 있다.
도 6a 및 6b에 도시된 예와 달리, 도 9는, 상기 브릿지(4)에서 상기 진행 기록 요구와 진행 스누프 요구 중 어느쪽이 먼저 도달하는지에 상관없이, 상기 진행 기록요구에 따라 조기 응답이 제1 프로토콜 도메인에 발행되도록, 상기 선택된 요구가 상기 진행 기록 요구가 되도록 미리 결정되는 예를 나타낸다.
도 9는, 상기 데드락 조건이 제2 프로토콜 도메인B에 의해 식별되고 상기 브릿지(4)가 상기 브릿지(4)에서 발행한 캔슬 신호 Cancel-A에 따라 데드락 조건을 검출하는 일례를 나타낸다. 그러나, 다른 실시예에서, 상기 브릿지(4)는, 제2 프로토콜 도메인B로부터 신호를 수신하지 않고, 데드락 조건 자체를 검출하여 그 데드락 조건 검출시에 상기 기록 요구WriteClean-A를 캔슬하여도 된다. 그 후, 상기 브릿지(4)는, 상기 기록 요구가 캔슬되는 것을 가리키는 신호를 제2 프로토콜 도메인B에 발행하여도 된다.
도 10은 도 9의 예시에 따른 데드락 조건을 검출하여 해결하는 방법을 나타낸다. 단계 50에서, 상기 데드락 조건은, 타겟 어드레스X를 대상으로 하는 기록 요구와 그 타겟 어드레스X를 대상으로 하는 스누프 요구에 대해 검출되고, 이때의 기록 요구는 제1 프로토콜 도메인A로부터 제2 프로토콜 도메인B에 발행되고, 상기 스누프 요구는 제2 프로토콜 도메인B로부터 제1 프로토콜 도메인A에 발행된다. 그 데드락 조건은, 어느 하나의 프로토콜 도메인A,B로부터의 신호에 따라 상기 브릿지(4)에 의해 직접적으로 또는 상기 브릿지(4)에 의해 간접적으로 검출되어도 된다.
그 데드락 조건이 검출되는 경우, 단계 60에서, 타겟 어드레스X에 대한 상기 기록이 상기 브릿지(4)에 의해 캔슬된다. 또한, 단계 70에서, 타겟 어드레스X의 기록 요구에 대한 조기 기록 응답은, 프로토콜 도메인A에 발행된다.
단계 80에서, 상기 브릿지(4)는, 타겟 어드레스X에 대한 스누프 응답이 수신되었는지를 판정한다. 수신되지 않았을 경우, 단계 90에서, 상기 브릿지는 다른 기록 요구가 제1 프로토콜 도메인A로부터 수신되었는지를 판정한다. 다른 기록 요구가 수신된 경우, 단계 100에서, 상기 브릿지(4)는, 다른 나머지 기록 요구에 대한 타겟 어드레스가 데드락이 검출된 타겟 어드레스X와 같은지를 판정한다. 그 타겟 어드레스가 어드레스X와 같지 않은 경우나, 단계 90에서 기록이 수신되지 않았었을 경우, 상기 브릿지(4)는, 단계 80에서 스누프 응답을 계속 대기한다.
그러나, 단계 100에서, 다른 나머지 기록 요구에 대한 타겟 어드레스가 데드락이 검출되는 타겟 어드레스X와 같다고 판정되는 경우, 단계 110에서, 상기 브릿지(4)는, 상기 버퍼가 이미 꽉 차 있는 경우에도 상기 버퍼에 새로운 기록이 접수될 수 있도록, 다른 나머지 기록 요구와 타겟 어드레스X에 대한 상기 진행 기록 요구를 병합한다. 단계 120에서, 상기 브릿지(4)는, (상기 기록 요구가 실제로 제2 프로토콜 도메인B에서 서비스되지 않을지라도) 상기 기록 요구가 서비스되는 제1 프로토콜 도메인A에 나타내기 위해서, 타겟 어드레스X에 대한 새로운 기록 요구에 대한 다른 조기 기록 응답을 발행한다. 이제 그 방법은 단계 80으로 복귀하고, 여기서 상기 브릿지는 제1 프로토콜 도메인A로부터의 스누프 응답을 다시 대기한다. 같은 타겟 어드레스X에 대한 새로운 요구가 수신될 때마다(단계 90 및 100), 새로운 요구는 같은 어드레스를 대상으로 하는 그 보다 이른 기록 요구와 병합되고, 조기 기록 응답은 다시 보내진다(단계 110 및 120).
단계 100에서 다른 나머지 기록 요구가 상기 진행 기록 요구와 같은 타겟 어드레스X를 규정하지 않는다는 것을 발견하면, 데드락은, 더 이상 상기 진행 스누프 요구와 같은 어드레스를 대상으로 하는 진행 기록 요구가 없으므로 파괴된다. 그러므로, 이제, 제1 프로토콜 도메인A는 스누프 요구를 처리하여도 된다.
스누프 응답이 단계 80에서 수신되는 경우, 단계 130에서 상기 브릿지(4)는, 스누프 응답에서 수신된 스누프 데이터와, 타겟 어드레스X에 대한 진행 기록 요구에 대한 버퍼링된 기록 데이터와의 병합을 행한다. 단계 140에서, 상기 병합된 데이터는, 제2 프로토콜 도메인B에 보내진다. 단계 150에서, 상기 진행 기록 요구에 대한 버퍼 할당은, 나머지 요구들에서 사용하는데 자유롭다.
본 명세서에서는 특정한 실시예들을 설명하였지만, 본 발명은 이것에 한정되지 않고, 본 발명의 범위내에서 여러 가지 변형 및 가산을 하여도 된다. 예를 들면, 아래의 종속항의 특징을 본 발명의 범위를 벗어나지 않고 독립항의 특징과 여러 가지로 조합할 수 있다.

Claims (20)

  1. 기록 타겟 어드레스에 관련된 데이터의 로컬 버전이 다른 장소에 기록되는 것을 요구하는 기록 요구들을 발행하고, 스누프 타겟 어드레스에 관련된 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하도록 구성된 적어도 하나의 디바이스를 각각 포함하는 제1 프로토콜 도메인 및 제2 프로토콜 도메인; 및
    상기 제1 프로토콜 도메인과 상기 제2 프로토콜 도메인의 사이에서 상기 기록 요구들과 상기 스누프 요구들을 전송하도록 구성된 브릿지를 구비하고,
    상기 제1 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 스누프 요구가 상기 진행 기록 요구가 서비스될 때까지 차단되는 기록 프로그래스(progress) 프로토콜하에서 작동하도록 구성되고,
    상기 제2 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 기록 요구가 상기 진행 스누프 요구가 서비스될 때까지 차단되는 스누프 프로그래스 프로토콜하에서 작동하도록 구성되고,
    상기 브릿지는, 상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구에 대한 상기 기록 타겟 어드레스가, 상기 제2 프로토콜 도메인으로부터 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 데드락 조건을 검출하도록 구성되고,
    상기 브릿지는, 상기 데드락 조건을 검출할 때, 서비스될 선택된 요구를 기다리지 않고 상기 선택된 요구에 대한 조기 응답을 발행하도록 구성되고, 상기 선택된 요구는 상기 진행 기록 요구나 상기 진행 스누프 요구를 포함하고, 상기 조기 응답이, 상기 선택된 요구를 발행한 발행중 프로토콜 도메인에 상기 선택된 요구가 서비스된 것을 가리키는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 기록 요구들은 라이트 백 요구들을 포함하고, 라이트 백 요구를 발행하는 디바이스는, 상기 다른 장소에 상기 로컬 버전을 기록한 후 상기 기록 타겟 어드레스에 관련된 상기 데이터의 상기 로컬 버전을 무효로 하도록 구성된, 데이터 처리장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 기록 요구들은 라이트 클린 요구들을 포함하고, 라이트 클린 요구를 발행하는 디바이스는, 상기 다른 장소에 상기 데이터의 상기 로컬 버전을 기록한 후 상기 기록 타겟 어드레스에 관련된 상기 데이터에의 배타적 액세스를 유지 가능하게 되는, 데이터 처리장치.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 브릿지는, 상기 선택된 요구에 대한 조기 응답을 발행 후, 상기 조기 응답이 발행되었던 상기 선택된 요구와 같은 타겟 어드레스에 대한 다른 선택된 요구를 상기 발행중 프로토콜 도메인이 발행하였는지를 검출하여, 그럴 경우, 상기 다른 선택된 요구에 대한 조기 응답을 상기 발행중 프로토콜 도메인에 발행하도록 구성되는, 데이터 처리장치.
  5. 제 4 항에 있어서,
    상기 발행중 프로토콜 도메인은, 같은 타겟 어드레스를 대상으로 하는 최대 M개의 연속적 선택된 요구를 발행하도록 구성되고, 여기서, M이 2이상의 자연수인, 데이터 처리장치.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 선택된 요구가 상기 제1 프로토콜 도메인에서 발행된 상기 진행 기록 요구이면, 상기 조기 응답을 상기 진행 기록 요구에 발행한 후 상기 제1 프로토콜 도메인으로부터 상기 진행 스누프 요구에 대한 스누프 응답을 수신할 때, 상기 브릿지는, 상기 스누프 응답에 관련된 스누프 데이터를 상기 진행 기록 요구에 관련된 기록 데이터와 병합하고, 그 병합 데이터를 제2 프로토콜 도메인에 송신하도록 구성되는, 데이터 처리장치.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 선택된 요구는, 상기 브릿지에 의해 가장 나중에 검출된 상기 진행 기록 요구와 상기 진행 스누프 요구 중 한쪽을 포함하는, 데이터 처리장치.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 선택된 요구는, 상기 진행 기록 요구와 상기 진행 스누프 요구 중 소정의 한쪽을 포함하는, 데이터 처리장치.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 제1 및 제2 프로토콜 도메인 중 한쪽은, 데드락 조건을 검출하고 그 데드락 조건이 검출되면 상기 브릿지에 신호를 발행하도록 구성되고, 상기 브릿지는 상기 신호의 수신에 따라 상기 데드락 조건을 검출하도록 구성되는, 데이터 처리장치.
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 브릿지는, 상기 제2 프로토콜 도메인으로부터 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구들의 긴 열을 이루는 스누프 큐를 유지하도록 구성되는, 데이터 처리장치.
  11. 제 10 항에 있어서,
    상기 스누프 큐가 복수의 진행 스누프 요구를 갖는 경우, 상기 브릿지는 상기 스누프 큐에서 가장 오래된 스누프 요구에 대한 데드락 조건을 검출할 때만 상기 선택된 요구에 대한 상기 조기 응답을 발행하도록 구성되는, 데이터 처리장치.
  12. 제 1 항 또는 제 2 항에 있어서,
    상기 브릿지는, 상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구들을 버퍼링하도록 구성된 기록 버퍼를 구비하는, 데이터 처리장치.
  13. 제 12 항에 있어서,
    상기 기록 버퍼에 버퍼링된 진행 기록 요구와 같은 타겟 기록 어드레스를 갖는 상기 제1 프로토콜 도메인으로부터 또 다른 기록 요구를 수신할 때, 상기 브릿지는 상기 또 다른 기록 요구와 상기 진행 기록 요구를 병합하도록 구성되는, 데이터 처리장치.
  14. 제 12 항에 있어서,
    상기 기록 버퍼는, 상기 진행 스누프 요구에 대한 스누프 응답이 제1 프로토콜 도메인으로부터 수신될 때까지 상기 데드락 조건이 검출되는 상기 진행 기록 요구를 유지하도록 구성되는, 데이터 처리장치.
  15. 제 12 항에 있어서,
    상기 제1 프로토콜 도메인은 최대 N개의 진행 기록 요구를 핸들링하도록 구성되고, 상기 기록 버퍼는 제1 프로토콜 도메인으로부터 발행된 적어도 N개의 진행 기록 요구를 버퍼링하는 용량을 갖고, 여기서 N은 2이상의 자연수인, 데이터 처리장치.
  16. 제 12 항에 있어서,
    상기 브릿지와 상기 제1 프로토콜 도메인의 사이에 연결된 기록 스테이징 버퍼를 구비하고, 상기 기록 스테이징 버퍼는, 상기 제1 프로토콜 도메인에서 발행된 진행 기록 요구를 수신하여, 그 진행 기록 요구를 버퍼링하기 위한 상기 기록 버퍼에 공간이 있으면 상기 브릿지에 상기 진행 기록 요구를 보내도록 구성되는, 데이터 처리장치.
  17. 제 1 항 또는 제 2 항에 있어서,
    상기 선택된 요구는 상기 데드락 조건이 검출되는 상기 진행 기록 요구이고, 상기 브릿지는 상기 진행 기록 요구에 대한 상기 조기 응답을 발행할 때 상기 진행 기록 요구를 캔슬하도록 구성되는, 데이터 처리장치.
  18. 제 17 항에 있어서,
    상기 브릿지는, 상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구들을 버퍼링하도록 구성된 기록 버퍼를 구비하고, 상기 기록 버퍼는 상기 진행 스누프 요구에 대한 스누프 응답이 상기 제1 프로토콜 도메인으로부터 수신될 때까지 상기 캔슬된 진행 기록 요구를 유지하도록 구성되는, 데이터 처리장치.
  19. 기록 타겟 어드레스에 관련된 데이터의 로컬 버전이 다른 장소에 기록되는 것을 요구하는 기록 요구들을 발행하고, 스누프 타겟 어드레스에 관련된 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하기 위한 적어도 하나의 디바이스 수단을 각각 포함하는 제1 프로토콜 도메인 수단 및 제2 프로토콜 도메인 수단; 및
    상기 제1 프로토콜 도메인 수단과 상기 제2 프로토콜 도메인 수단의 사이에서 상기 기록 요구들과 상기 스누프 요구들을 전송하기 위한 브릿지 수단을 구비하고,
    상기 제1 프로토콜 도메인 수단은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 스누프 요구가 상기 진행 기록 요구가 서비스될 때까지 차단되는 기록 프로그래스 프로토콜하에서 작동하도록 구성되고,
    상기 제2 프로토콜 도메인 수단은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 기록 요구가 상기 진행 스누프 요구가 서비스될 때까지 차단되는 스누프 프로그래스 프로토콜하에서 작동하도록 구성되고,
    상기 브릿지 수단은, 상기 제1 프로토콜 도메인 수단으로부터 상기 제2 프로토콜 도메인 수단에 발행된 진행 기록 요구에 대한 상기 기록 타겟 어드레스가, 상기 제2 프로토콜 도메인 수단으로부터 상기 제1 프로토콜 도메인 수단에 발행된 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 데드락 조건을 검출하도록 구성되고,
    상기 브릿지 수단은, 상기 데드락 조건을 검출할 때, 서비스될 선택된 요구를 기다리지 않고 상기 선택된 요구에 대한 조기 응답을 발행하도록 구성되고, 상기 선택된 요구는 상기 진행 기록 요구나 상기 진행 스누프 요구를 포함하고, 상기 조기 응답이, 상기 선택된 요구를 발행한 발행중 프로토콜 도메인 수단에 상기 선택된 요구가 서비스된 것을 가리키는, 데이터 처리장치.
  20. 기록 타겟 어드레스에 관련된 데이터의 로컬 버전이 다른 장소에 기록되는 것을 요구하는 기록 요구들을 발행하고, 스누프 타겟 어드레스에 관련된 데이터의 로컬 버전에의 액세스를 요구하는 스누프 요구들을 수신하도록 구성된 적어도 하나의 디바이스를 각각 포함하는 제1 프로토콜 도메인 및 제2 프로토콜 도메인을 구비하되, 상기 제1 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 스누프 요구가 상기 진행 기록 요구가 서비스될 때까지 차단되는 기록 프로그래스 프로토콜하에서 작동하고, 상기 제2 프로토콜 도메인은, 진행 기록 요구에 대한 상기 기록 타겟 어드레스가 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 경우, 상기 진행 기록 요구가 상기 진행 스누프 요구가 서비스될 때까지 차단되는 스누프 프로그래스 프로토콜하에서 작동하는, 장치의 방법으로서,
    상기 방법은,
    상기 제1 프로토콜 도메인으로부터 상기 제2 프로토콜 도메인에 발행된 진행 기록 요구에 대한 상기 기록 타겟 어드레스가, 상기 제2 프로토콜 도메인으로부터 상기 제1 프로토콜 도메인에 발행된 진행 스누프 요구에 대한 상기 스누프 타겟 어드레스와 같은 데드락 조건을 검출하는 단계; 및
    상기 데드락 조건을 검출할 때, 서비스될 선택된 요구를 기다리지 않고 상기 선택된 요구에 대한 조기 응답을 발행하는 단계로서, 상기 선택된 요구는 상기 진행 기록 요구나 상기 진행 스누프 요구를 포함하고, 상기 조기 응답이, 상기 선택된 요구를 발행한 발행중 프로토콜 도메인에 상기 선택된 요구가 서비스된 것을 가리키는, 조기 응답을 발행하는 단계를 포함하는, 방법.
KR1020147025925A 2012-03-02 2012-03-02 제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법 KR101928770B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/027359 WO2013130090A1 (en) 2012-03-02 2012-03-02 Data processing apparatus having first and second protocol domains, and method for the data processing apparatus

Publications (2)

Publication Number Publication Date
KR20140131965A KR20140131965A (ko) 2014-11-14
KR101928770B1 true KR101928770B1 (ko) 2018-12-13

Family

ID=45814696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147025925A KR101928770B1 (ko) 2012-03-02 2012-03-02 제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법

Country Status (6)

Country Link
US (1) US9372798B2 (ko)
JP (1) JP5941168B2 (ko)
KR (1) KR101928770B1 (ko)
CN (1) CN104145251B (ko)
GB (1) GB2514024B (ko)
WO (1) WO2013130090A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2539641B (en) * 2015-06-11 2019-04-03 Advanced Risc Mach Ltd Coherency between a data processing device and interconnect
US9990291B2 (en) * 2015-09-24 2018-06-05 Qualcomm Incorporated Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols
GR1008894B (el) * 2015-12-15 2016-11-14 Arm Limited Βελτιστοποιημενη συνεχης ροη σε μια μη διατεταγμενη διασυνδεση
US10503641B2 (en) * 2016-05-31 2019-12-10 Advanced Micro Devices, Inc. Cache coherence for processing in memory
US11159636B2 (en) * 2017-02-08 2021-10-26 Arm Limited Forwarding responses to snoop requests
US10394653B1 (en) * 2017-05-02 2019-08-27 Mellanox Technologies, Ltd. Computing in parallel processing environments
US11449489B2 (en) * 2017-11-09 2022-09-20 International Business Machines Corporation Split transaction coherency protocol in a data processing system
US11321354B2 (en) * 2019-10-01 2022-05-03 Huawei Technologies Co., Ltd. System, computing node and method for processing write requests
US11513962B2 (en) * 2020-10-13 2022-11-29 Arm Limited Draining operation to cause store data to be written to persistent memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120874A1 (en) 1999-09-23 2003-06-26 Deshpande Sanjay Raghunath Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US20050160209A1 (en) 2004-01-20 2005-07-21 Van Doren Stephen R. System and method for resolving transactions in a cache coherency protocol

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426765A (en) * 1991-08-30 1995-06-20 Compaq Computer Corporation Multiprocessor cache abitration
CA2109043A1 (en) * 1993-01-29 1994-07-30 Charles R. Moore System and method for transferring data between multiple buses
JPH0816475A (ja) 1994-06-30 1996-01-19 Toshiba Corp マルチプロセッサシステム
US5961623A (en) * 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
US6038651A (en) 1998-03-23 2000-03-14 International Business Machines Corporation SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum
US6487621B1 (en) * 1999-08-17 2002-11-26 Compaq Information Technologies Group, L.P. Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7769959B2 (en) * 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120874A1 (en) 1999-09-23 2003-06-26 Deshpande Sanjay Raghunath Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US20050160209A1 (en) 2004-01-20 2005-07-21 Van Doren Stephen R. System and method for resolving transactions in a cache coherency protocol

Also Published As

Publication number Publication date
JP5941168B2 (ja) 2016-06-29
US9372798B2 (en) 2016-06-21
JP2015512102A (ja) 2015-04-23
CN104145251A (zh) 2014-11-12
GB2514024A (en) 2014-11-12
WO2013130090A1 (en) 2013-09-06
US20150012713A1 (en) 2015-01-08
GB201411661D0 (en) 2014-08-13
KR20140131965A (ko) 2014-11-14
CN104145251B (zh) 2017-06-09
GB2514024B (en) 2020-04-08

Similar Documents

Publication Publication Date Title
KR101928770B1 (ko) 제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법
JP6087532B2 (ja) 同時保留中データアクセスリクエストのためのデータハザード処理
US6487643B1 (en) Method and apparatus for preventing starvation in a multi-node architecture
KR100274771B1 (ko) Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법
US8423720B2 (en) Computer system, method, cache controller and computer program for caching I/O requests
KR100371844B1 (ko) 데이타처리시스템
JP3575595B2 (ja) 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム
US20050160230A1 (en) System and method for responses between different cache coherency protocols
JP3696012B2 (ja) 書込み動作順序付けバスブリッジ
NO312610B1 (no) Datamaskin-system
JPH10289154A (ja) Smpバスの排他状態でのキャッシュ・ラインの共用を行う方法及び装置
JP3574031B2 (ja) 不均等メモリ・アクセス・システム内で無効化トランザクションの衝突によって生じるライブロックを避けるための方法およびシステム
US7533223B1 (en) System and method for handling memory requests in a multiprocessor shared memory system
US5991855A (en) Low latency memory read with concurrent pipe lined snoops
US5987544A (en) System interface protocol with optional module cache
US7797495B1 (en) Distributed directory cache
KR20210041485A (ko) 데이터 신호 경로 및 태그 신호 경로를 갖는 메모리 인터페이스
US6336169B1 (en) Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus
EP3800555B1 (en) An apparatus and method for handling cache maintenance operations
CN110083548B (zh) 数据处理方法及相关网元、设备、系统
JP2006301825A (ja) アドレス競合時のスタベーション防止方法およびチップセットおよびマルチプロセッサシステム
US20180335829A1 (en) Processing device and control method of processing device
US8051251B2 (en) Method and apparatus for setting status of cache memory
KR20160086746A (ko) 인터커넥트 및 인터커넥트의 작동방법
JP4452707B2 (ja) マルチプロセッサ装置及びそのメモリアクセス方法

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