KR20050107402A - 캐시로 쓰기 데이터를 삽입하기 위한 방법 및 장치 - Google Patents
캐시로 쓰기 데이터를 삽입하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20050107402A KR20050107402A KR1020057013789A KR20057013789A KR20050107402A KR 20050107402 A KR20050107402 A KR 20050107402A KR 1020057013789 A KR1020057013789 A KR 1020057013789A KR 20057013789 A KR20057013789 A KR 20057013789A KR 20050107402 A KR20050107402 A KR 20050107402A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- cache
- data element
- write
- processing unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 26
- 238000012545 processing Methods 0.000 claims abstract description 64
- 239000000872 buffer Substances 0.000 claims description 49
- 239000000523 sample Substances 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 32
- 238000003780 insertion Methods 0.000 claims description 25
- 230000037431 insertion Effects 0.000 claims description 25
- 238000010586 diagram Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 239000012536 storage buffer Substances 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000001427 coherent effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013479 data entry Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
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)
- Communication Control (AREA)
Abstract
데이터 프로세싱 시스템(100, 600)이 캐시(124, 624) 및 하위-레벨 메모리 시스템(170, 650)을 포함하는 메모리 계층을 가진다. 특수한 삽입에 의한 쓰기 속성을 가지는 데이터 요소가 Ethernet 제어기와 같은 데이터 생성기(160, 640)로부터 수신된다. 상기 데이터 요소는 하위-레벨 메모리 시스템(170, 650)을 액세스함이 없이 상기 캐시(124, 624)에 포워딩된다. 다음으로 상기 캐시(124, 624) 내에서, 상기 데이터 요소를 포함하는 적어도 하나의 캐시 라인이 업데이트된다.
Description
본 발명은 일반적으로 데이터 프로세싱 시스템에 관한 것으로, 더욱 상세히는 캐시를 구비하는 데이터 프로세싱 시스템에 관한 것이다.
컴퓨터 시스템의 성능을 증대시키기 위한 공지된 방법은 캐시로 알려진 로컬, 고속 메모리를 포함하는 것이다. 캐시는 일단 중앙 처리 유닛(CPU)이 특정 어드레스에서 데이터 요소를 액세스하면, 다음번 액세스는 인접한 어드레스에 될 것이기 때문에 시스템의 성능을 증가시킨다. 상기 캐시는 저속의 메인 메모리 또는 하위-레벨 캐시로부터 데이터의 요청된 조각 부근에 위치한 데이터를 인출하고, 저장한다. 매우 고성능 컴퓨터 시스템에서는, 다수의 캐시들이 계층적으로 위치될 수 있다. 상기 CPU와 가장 가까운 캐시는 상위-레벨 또는 "L1" 캐시로 알려져 있는데, 이 캐시는 상기 계층에서 최상위-레벨 캐시이며, 일반적으로 가장 빠르다. 반면에 일반적으로 느린 캐시들이 상기 계층에서 "L2", 등등으로 시작하여 메인 메모리에 연결된 가장 낮은 레벨의 캐시까지 내림 차순으로 위치된다.
캐시는 데이터를 저장 및 폐기시 특정한 정책을 따른다. 예를 들면, 많은 프로세서들은 상기 CPU에 의해서 쓰기되는 메모리 위치에 대응하는 캐시 라인이 상기 캐시 내에 저장될 것이라고 지시하는 "얼로케이트-온-라이트(allocate-on-write)"를 따른다. 일반적으로 캐시들은 일단 모든 위치들이 채워지면 새로운 데이터 요소를 위한 룸을 만들기 위해 어느 위치를 폐기할 것인지를 결정하는 LRU(least-recently-used: 최소 최근 사용)으로 알려진 정책을 따른다.
캐시들은 일반적으로 상기 시스템 전체의 데이터 일관성을 유지하기 위해 상기 캐시 라인의 상태를 나타내는 다중 상태 비트들을 포함한다. 하나의 공통 일관성 프로토콜은 "MOESI" 프로토콜로 알려져 있다. 이 프로토콜에 따르면 각각의 캐시 라인은 상기 라인이 어느 MOESI 상태로 있는지를 나타내는 상태 비트를 포함하고, 상기 상태는 상기 캐시 라인이 수정되었다 라는(M), 상기 캐시 라인이 독점됨(E), 또는 공유됨(S), 또는 상기 캐시 라인이 타당하지 않다 라는(I) 것을 나타내는 비트들을 포함한다. 소유된(O) 상태는 상기 라인이 하나의 캐시에서 수정되고, 다른 캐시들 내에 공유된 사본들이 존재할 수 있고, 그리고 메모리 내의 데이터가 스테일(stale)한 것을 나타낸다.
일반적인 구성에서, 모든 캐시들은 동일한 집적 회로 내의 CPU와 결합되고, 메인 메모리는 오프-칩으로 위치된다. 메인 메모리는 시스템 내에서 가장 느리지만, 저렴한 메모리이며, 고가는 아니나 상대적으로 느린 DRAM(dynamic random access memory) 칩으로 구성될 수 있다. 이 특징은 상기 오프-칩 DRAM 메인 메모리를 액세스하는데 있어서 병목현상을 초래하는데, 가능한 한 이러한 병목현상을 회피하는 것이 바람직하다. 더욱이, 최근에 마이크로프로세서 속도는 DRAM 액세스 속도에 비해 빠르게 증가하여 왔으며, 소위 "메모리 월(memory wall)"이라는 병목현상을 복잡하게 하였다. 필요한 것은 시스템 성능을 증가시키기 위해서 상기 메인 메모리 액세스 요구들을 감소시킬 수 있는 방법 및 데이터 프로세서이다. 그러한 방법 및 데이터 프로세서가 본 발명에 의해서 제공되는데, 이에 대한 특징 및 이점들이 첨부된 도면과 함께 다음의 설명으로부터 명확하게 이해될 수 있을 것이다.
본 발명이 첨부된 도면과 함께 하기에 설명되며, 여기서 동일 부호는 동일한 요소들을 의미한다.
도 1은 종래 기술에서 알려진 프로브-기반 데이터 프로세싱 시스템에서 데이터 및 제어 신호들의 흐름과 관련된 시간 도이다.
도 2는 본 발명을 따르는 프로브-기반 데이터 프로세싱 시스템에서 데이터 및 제어 신호들의 흐름과 관련된 시간 도이다.
도 3은 본 발명을 따르는 다중 프로세서를 갖는 프로브-기반 데이터 프로세싱 시스템의 블록 도이다.
도 4는 본 발명을 따르는 싱글 프로세서를 갖는 프로브-기반 데이터 프로세싱 시스템의 블록 도이다.
도 5는 삽입에 의한 쓰기 동작을 수행하는 동안 데이터 흐름을 나타내는 도 4의 데이터 프로세싱 시스템의 블록 도이다.
도 6은 메모리 제어기를 포함하는 도 4의 데이터 프로세싱 시스템의 일 부분에 대한 블록 도이다.
도 7은 캐시를 포함하는 도 4의 중앙 처리 유닛의 일 부분에 대한 블록 도이다.
도 8은 삽입에 의한 쓰기 패킷을 생성하는데 사용될 수 있는 HyperTransport 패킷의 인코딩 테이블을 나타낸다.
도 9는 본 발명을 따르는 디렉토리-기반 데이터 프로세싱 시스템에서 데이터 및 제어 신호들의 흐름과 관련된 시간 블록 도이다.
도 10은 본 발명을 따르는 디렉토리-기반 데이터 프로세싱 시스템의 블록 도이다.
도 11은 도 10의 디렉토리/메모리 제어기의 엔트리를 나타낸다.
본 발명은 일 태양에서 캐시 및 하위-레벨 메모리 시스템을 포함하는 메모리 계층을 구비하는 데이터 프로세싱 시스템에서 사용하기 위한 방법을 제공한다. 특수한 삽입에 의한 쓰기 속성을 갖는 데이터 요소가 데이터 생성기로부터 수신된다. 상기 데이터 요소는 상기 하위-레벨 메모리 시스템을 액세스함이 없이 상기 캐시에 포워딩된다. 결과적으로 상기 캐시에서 상기 데이터 요소를 포함하는 적어도 하나의 캐시 라인이 업데이트된다.
또 다른 태양에서, 본 발명은 중앙 처리 유닛 및 관련 캐시를 각각 포함하는 다수의 노드들을 갖는 데이터 프로세싱 시스템에서 사용하기 위한 방법을 제공한다. 데이터 요소와 관련된 삽입에 의한 쓰기 패킷이 데이터 생성기로부터 수신된다. 상기 데이터 요소가 미리 결정된 상태로 상기 디렉토리에 이미 제시되었는지 여부를 알아보기 위해 디렉토리가 검사된다. 만약 상기 데이터 요소가 상기 미리 결정된 상태로 상기 디렉토리 내에 제시되지 않았다면, 디렉토리 엔트리가 상기 데이터 요소를 위해 생성되고, 상기 데이터 요소는 하위-레벨 메모리 시스템에 쓰기 된다. 만약 상기 데이터 요소가 상기 미리 결정된 상태로 상기 디렉토리에 제시되었다면, 상기 데이터 요소는 상기 하위-레벨 메모리 시스템을 액세스함이 없이 상기 데이터 요소의 소유자인 캐시에 포워딩된다.
또 다른 태양에서, 본 발명은 캐시를 포함하는 중앙 처리 유닛, 호스트 브리지(host bridge), 그리고 메모리 제어기를 구비하는 데이터 프로세서를 제공한다. 상기 중앙 처리 유닛은 프로브 프리페치(probe prefetch)를 수신함에 응답하여 프리페치 읽기를 개시하도록 된다. 상기 호스트 브리지는 상기 중앙 처리 유닛에 연결되고, 데이터 요소에 대한 삽입에 의한 쓰기 패킷을 데이터 생성기로부터 수신하도록 된다. 메모리 제어기는 상기 중앙 처리 유닛 및 상기 호스트 브리지에 연결되고, 하위-레벨 메모리 시스템에 연결되도록 되어 있으며, 그리고 상기 중앙 처리 유닛에 연결된 출력부을 가진다. 상기 메모리 제어기는 버퍼를 포함하며, 상기 호스트 브리지로부터의 데이터를 상기 버퍼 내에 저장한다. 상기 메모리 제어기는 상기 데이터 요소를 수신함에 응답하여 상기 프로브 프리페치를 상기 중앙 처리 유닛에 제공하고, 그리고 상기 중앙 처리 유닛으로부터의 상기 프리페치 읽기에 응답하여서는 상기 버퍼로부터 상기 데이터 요소를 제공한다.
또 다른 태양에서, 본 발명은 캐시를 포함하는 중앙 처리 유닛, 호스트 브리지, 그리고 디렉토리/메모리 제어기를 포함하는 데이터 프로세서를 제공한다. 상기 호스트 브리지는 상기 중앙 처리 유닛에 연결되고, 데이터 생성기로부터 데이터 요소에 대한 삽입에 의한 쓰기 패킷을 수신한다. 상기 디렉토리/메모리 제어기는 상기 중앙 처리 유닛 및 상기 호스트 브리지에 연결되며, 하위 레벨 메모리 시스템에 연결되도록 되며, 그리고 상기 중앙 처리 유닛에 연결된 출력부를 가진다. 상기 디렉토리/메모리 제어기는 삽입에 의한 쓰기 패킷에 응답하여 상기 데이터 요소와 관련된 라인의 캐시 상태가 미리 결정된 상태로 있는지 여부를 확인하기 위해 자신의 디렉토리를 검사한다. 만약 그러한 경우, 상기 디렉토리/메모리 제어기는 상기 하위 레벨 메모리 시스템에 액세스함이 없이 상기 캐시 내에 저장하기 위해 상기 데이터를 상기 중앙 처리 유닛에 전송한다.
또 다른 태양에서, 본 발명은 캐시를 포함하는 중앙 처리 유닛, 호스트 브리지, 그리고 포워딩하기 위한 수단을 포함하는 데이터 프로세서를 제공한다. 상기 호스트 브리지는 상기 중앙 처리 유닛에 연결되며, 데이터 생성기로부터 데이터 요소에 대한 삽입에 의한 쓰기 패킷을 수신하도록 된다. 상기 포워딩하기 위한 수단은 상기 중앙 처리 유닛, 상기 호스트 브리지, 그리고 하위-레벨 메모리 시스템에 연결되며, 그리고 상기 하위-레벨 메모리 시스템을 액세스함이 없이 상기 캐시에 저장하기 위해 상기 중앙 처리 유닛에 상기 데이터 요소를 포워딩한다.
도 1은 종래 기술에서 알려진 프로브-기반 데이터 프로세싱 시스템에서 데이터 및 제어 신호들의 흐름과 관련된 시간 도(10)를 나타낸다. 도 1에서 나타난 바와 같이, 수직 축은 시간이 상단에서 하단으로 흐르는 것으로 시간을 나타낸다. 도 1은 3개의 디바이스들(노드들)을 수평 방향을 따라 배치된 수직선들로 나타낸다. "노드 C"로 명칭된 첫 번째 노드는 데이터 생성기이다. 예를 들면, 노드 C는 데이터 통신 채널의 수신기와 같은 입력/출력 디바이스에 대응될 수 있다. 예를 들면, 노드 C는 데이터의 흐름을 돕기 위해 관련 다이렉트 메모리 액세스(DMA) 제어기를 구비할 수 있다. "노드 B"로 명칭 된 두 번째 노드는 하위-레벨 메모리 시스템이며, 메인 메모리 및 가능한 한 하나 이상의 하위-레벨 캐시들을 포함한다. "노드 A"로 명칭 된 세 번째 노드는 애플리케이션을 수행하는 중앙 처리 유닛처럼 캐시를 구비하는 데이터 소비자이다. 데이터 통신 콘텍스트에서, 노드 C는 데이터를 프레임으로 수신할 것이고, 상기 데이터를 노드 B에서의 메모리에 저장할 것이고, 그로 인해 상기 애플리케이션 프로그램에 의해서 명령된 바에 따라 데이터가 사용되는 곳인 노드 A에서의 프로세서가 데이터를 이용할 수 있게 된다.
이제부터는 데이터 및 제어 신호들의 흐름에 대해서 설명한다. 첫 번째로 노드C에서의 I/O 디바이스는 통신 링크를 통하여 데이터 프레임을 수신한다. 노드 C에서의 상기 관련 DMA 제어기는 화살표 12에 나타난 바와 같이 메모리 위치에 DMA 쓰기 동작을 수행함으로써 상기 데이터 프레임에 대한 데이터를 쓰기 한다. 시간 주기(14) 동안, 노드 B에서의 상기 메모리 제어기는 상기 데이터를 상기 메모리에 쓰기하고, 그리고 동시에 화살표 16에 나타나 바와 같이 노드 A에 무효화 프로브를 발행한다. 이 무효화 프로브는 노드 A에서의 상기 캐시에 상기 데이터가 수정될 것이라는 것을 알리고, 만약 노드 A가 관련 캐시 라인 또는 라인들의 사본을 가지고 있다면, 라인 또는 라인들을 무효 상태 상태로 두라고 알린다. 노드 A는 화살표 18에 나타난 바와 같이 프로브 응답으로 응답한다. 다음으로, 노드 A에서 실행되는 상기 애플리케이션 소프트웨어는 화살표 20에 의해 나타난 바와 같이 상기 데이터에 대한 읽기 요청을 개시할 것이다. 노드 B에서의 상기 메모리 제어기는 시간 주기(22) 동안 상기 데이터를 읽고, 그 시간 이후에 화살표(24)에 나타난 바와 같이 노드 A에 상기 데이터를 제공한다. 마지막으로 노드 A는 시간 주기(26) 동안 상기 캐시 라인 채우기를 완료한다.
주목할 사항으로서, 이러한 종래 동작은 메인 메모리에 대한 하나의 쓰기와 하나의 읽기를 요구하며, 따라서 상기 시간 주기들(14 및 22) 동안, 각기 상기 메인 메모리 버스를 차지한다. 높은 대역폭 통신 프로토콜을 구현할 수 있는 시스템에 대해서도, 이 동작은 빈번히 반복될 것이고, 이용가능한 대역폭의 상당한 부분을 낭비한다. 최근 몇 해 동안, 메인 메모리 속도는 증대되어 왔음에도, 프로세서 속도만큼 빠르지 않기에, 이러한 동작을 위해 필요한 상기 메인 메모리 버스 대역폭을 감소시키는 것이 바람직하다.
메인 메모리 버스 대역폭 요구를 감소시키기 위해서, 본 발명은 상기 통신 동작이 특수한 경우로서, 상기 데이터가 상기 프로세서의 캐시에서 단독으로 동작될 수 있는 경우로 구현하여, 상기 메인 메모리에 데이터를 저장할 필요를 거의 제거하였다. 더욱 상세히는 데이터 통신 수신 버퍼는 일반적으로 상기 데이터 생성기가 데이터를 쓰기 위한, 그리고 입력/출력 드라이버가 프로토콜 헤더 정보를 읽기(소비자 1) 위한, 그리고 상기 애플리케이션 프로그램이 페이로드(payload) 데이터를 읽기(소비자 2) 위한 대상인 일반적으로 메모리 내의 원형 버퍼이다. 메인 메모리에 상기 데이터를 저장하지 않기 위해서, 본 발명은 그러한 상태를 신호하고, 메인 메모리에 대한 액세스를 거의 발생하지 못하게 하는 방법 및 대응 데이터 프로세싱 시스템을 발명하였다. 이는 수신 데이터 패킷 내의 특수한 삽입에 의한 쓰기 속성을 인식하고, 상기 메인 메모리 액세스를 억제하고, 상기 CPU의 캐시에 상기 데이터를 직접 포워딩하고, 상기 캐시 라인을 특정한 상태로 둠으로써 그것에 응답하게 하는 데이터 프로세서의 간단한 변형으로 구현될 수 있다. 그러한 방법은 본 발명을 따르는 프로브-기반 데이터 프로세싱 시스템에서의 데이터 및 제어 신호와 관련된 시간 도(50)를 나타내는 도 2를 참조로 하여 이해될 수 있다. 도 1에 대한 것과 같이, 수직 축은 시간을 나타내는데, 여기서 시간은 상단에서 하단으로 흐르며, 수평 축은 전술된 것과 동일한 3개의 노드들을 나타낸다.
상기 동작은 노드 C에서의 상기 I/O 디바이스와 노드 B에서의 상기 메인 메모리 간의 "삽입에 의한 쓰기" 패킷으로 알려진 특수한 DMA 쓰기 요청(52)으로 개시된다. 이 특수한 쓰기 요청에 응답하여 노드 B에서의 상기 메모리 제어기는 시간 주기(54) 동안 디렉토리 읽기를 수행하고, 그리고 이어서 화살표(56)에 의해 나타난 바와 같이, 스누프 프리페치(snoop prefetch)로 알려진 브로드캐스트 프로브 프리페치를 노드A와, 그리고 노드 A에서의 상기 캐시 내로 삽입될 데이터의 존재를 상기 다른 모든 프로세서들에게 알리기 위해서 상기 시스템 내의 모든 다른 프로세서들에게도 전송한다. 이미 상기 메모리 어드레스를 자신의 로컬 캐시에 할당했던 노드 A는 화살표(58)에 나타난 프로브 응답으로 응답한다. 데이터는 상기 메모리 제어기에서의 저장 버퍼에 유지되고, 하위 레벨 메모리 시스템에 대한 쓰기는 지연된다. 다음으로, 노드 A에서의 상기 데이터 프로세서는 화살표(60)에 나타난 바와 같이 프리페치 읽기를 노드 B에 전송한다. 노드 B의 상기 메모리 제어기는 시간 주기(62) 동안 상기 저장 버퍼로부터 상기 데이터 요소를 읽고, 화살표(64)에 나타난 바와 같이 노드A에 상기 데이터를 전송함으로써 응답한다. 만약 노드 A에서의 상기 데이터 프로세서가 상기 프리페치 읽기를 정상적으로 전송할 수 있다면, 노드 B에서의 상기 메모리 제어기는 메인 메모리를 전혀 액세스함이 없이, 상기 데이터를 전송할 수 있을 것이다. 그러나 만약 상기 프로세서가 상기 프리페치 읽기를 전송하기 전에 모든 다른 버퍼가 가득 찼을 때에도 정상적인 쓰기 요청을 만족시키려 하는 목적과 같은 또 다른 목적을 위해 노드 B에서의 상기 메모리 제어기가 상기 저장 버퍼를 재사용할 필요가 있다면, 상기 메모리 제어기는 상기 데이터를 대신에 메모리에 쓰기할 것이다. 마지막으로 노드 A는 시간 주기(66) 동안 상기 캐시 라인 채우기를 완료한다. 다음으로, 상기 데이터가 노드 A에서 사용될 때, 상기 캐시 라인은 LRU(least recently used)와 같은 상기 캐시의 할당 해제 정책을 사용하여 프로세싱의 정상적인 흐름 동안 할당 해제를 위해 이용가능하게 될 것이다. 상기 데이터 요소는 단 한 번만 상기 프로세서에 의해서 사용되기 때문에, 상기 라인은 상기 캐시에서 수정되지 않을 것이고, 상기 라인을 상기 메인 메모리에 라이트 백(write back)을 할 필요가 없게 될 것이다. 따라서, 이 방법은 일반적으로 메인 메모리에 대한 쓰기를 제거하며, 그리고 디렉토리 읽기를 수행하고, 읽기 버퍼 동작들을 수행하기 위해서 단지 노드 B에서의 상기 메모리 제어기에 대한 작은 대역폭만을 소모하게 된다.
도 3은 본 발명을 따르는 멀티 프로세서를 갖는 프로브-기반 데이터 프로세싱 시스템(80)의 블록 도를 나타낸다. 데이터 프로세싱 시스템(80)은 HyperTransport 통신 프로토콜의 소위 일관성 형태를 사용하여 링 방식으로 각기 연결되며, "A", "B", "C", 그리고 "D"라고 명칭된 싱글 프로세서들(81-84)을 포함한다. 도 3에서 나타난 바와 같이, 프로세서들(81-84)은 HyperTransport 프로토콜의 소위 비-일관성 형태를 사용하여 직접 방식으로 상기 프로세서들(81-84) 중 각각의 하나에 개별적으로 연결되며, "I/O A", "I/O B", "I/O C", 그리고 "I/O D"라 명칭되고, 상기 프로세서들과 관련된 I/O 제어기들(85-88)의 형태인 대응 데이터 생성기를 갖는다. 또한, 각각의 프로세서들(81-84)과 연결된 로컬 메모리(91-94)가 존재한다. HyperTransport 프로토콜은 프로세싱이 상기 링 주변의 다양한 지점으로 분산되도록 한다. 예를 들면, I/O 제어기(87)는 자신과 연결된 로컬 프로세서(83)에 삽입에 의한 쓰기 동작을 개시할 수 있고, 그리고 프로세서(83) 내의 홈 노드에서의 상기 메모리 제어기는 상기 프로세서의 로컬 캐시 내의 데이터를 위해서뿐만 아니라 시스템 내의 모든 캐시를 위해서도 일관성 HyperTransport를 사용하여 프로브를 전송한다. 또 다른 예에서는, 상기 I/O 드라이버 또는 애플리케이션은 또 다른 프로세서(81) 상에서 실행될 수 있고, 상기 데이터에 대한 홈 노드는 프로세서(82)와 같은 또 다른 프로세서일 수 있다. 도 3에서 나타난 바와 같이, I/O 제어기(87)는 실제로 삽입에 의한 쓰기 패킷을 프로세서(83)에 전송하는 것일 수 있다.
도 4는 본 발명을 따르는 싱글 프로세서를 구비하는 프로브-기반 데이터 프로세싱 시스템(100)의 블록 도이다. 데이터 프로세싱 시스템(100)은 일반적으로 싱글-칩 마이크로프로세서(120) 형태의 데이터 프로세서, 입력/출력(I/O) 디바이스(160), 그리고 DRAM(170)을 포함한다. 마이크로프로세서(120)는 하기에 더욱 상세히 기술될 바와 같이 일반적으로 CPU(122), 메모리 제어기(126), "XBAR"(128)로 명칭된 크로스바 스위치, 그리고 HyperTrasnport를 위한 "HT"로 각기 명칭 된 3개의 호스트 브릿지들(130, 140, 150)을 포함한다. CPU(122)는 소위 x86 명령어 세트의 명령어를 실행하도록 된 프로세서이다. 상기 x86 명령어 세트는 미국, 캘리포니아, 산타 클레라에 위치한 인텔 코퍼레이션에 의해서 처음 제조된 8086의 명령어 세트를 기초로 한다. 그러나 CPU(122)는 파이프 라이닝 및 수퍼스칼라 설계를 포함하는 x86 프로그램의 고-성능 실행을 위해 많은 정교한 기능들을 포함한다. CPU(122)는 빈번히 사용되는 데이터의 저장을 위해 적어도 하나의 캐시(124)를 포함한다. 바람직한 태양에서 CPU는 실제로 2 개의 L1 캐시들과 L2 캐시를 포함하는데, 여기서 2개의 L1 캐시들 중 하나는 명령어를 위한 것이고, 다른 하나는 데이터를 위한 것이고, 상기 L2 캐시는 명령어 및 데이터 스트림에 의해서 공유된다. 이 태양에서, 공유된 L2 캐시는 삽입에 의한 쓰기 속성이 제공되는 데이터를 저장할 것이다. 그러나 본 발명은 적어도 하나의 캐시를 갖는 어떠한 CPU에 대해서도 적용가능하다.
메모리 제어기(126)는 마이크로프로세서(120)와 DRAM(170)간의 데이터 전송을 위한 메커니즘이다. 상기 메모리 제어기(126)는 메모리 액세스를 개시 및 종료하는 작업을 CPU(122)로부터 언로딩한다. 상기 메모리 제어기(126)는 DRAM(170)에 대한 외부 버스의 효율적인 사용을 가능하게 하는 내부 큐를 포함한다. 다른 실시예에서, DRAM(170)은 하나 이상의 추가적 캐시들을 포함하는 하위-레벨 메모리 시스템 및 메인 메모리, SRAM, 비휘발성 메모리, 또는 등등에 의해서 대체될 수 있다.
XBAR(128)는 마이크로프로세서(120)에 대한 내부 버스들을 서로 함께 연결하기 위해 설계된 스위칭/멀티플렉서 회로이다.
호스트 브리지들(130, 140, 150)은 각각의 출력 채널들(134, 142, 152)을 통하여, 그리고 각각의 내부 채널들(130, 140, 150)을 통하여 마이크로프로세서(120)에 대한 외부 디바이스들과 연결된다. 호스트 브리지들(130, 140, 150) 각각은 ⓒ 2001 HyperTransport 기술 컨소시엄, HyperTransport™ I/O 링크 사양서, 버젼 1.03을 따르며, 1600MHz 데이터 속도를 사용할 시에는 3.2GB/sec의 성능을 달성할 수 있다. HyperTransport 기술은 와이어의 2개의 독립형 단방향 전선 세트들 상에서 구현되는 패킷-기반 링크이다. 따라서 예를 들면 호스트 브리지(130)는 출력 연결(132) 및 입력 연결(134)을 통하여 I/O 디바이스(160)과 통신한다. HyperTransport 링크는 일반적으로 P2P(point-to-point)로서, 2개의 장치들을 연결한다. HyperTransport 링크들의 체인(chain)들은 또한 I/O 채널로서 사용될 수 있고 I/O 디바이스들 및 브리지를 호스트 시스템에 연결한다.
상기 HyperTransport 링크는 고-성능이며, 측정가능한 상호연결을 CPU, 메모리, 그리고 I/O 디바이스들 사이에서 달성하기 위해 설계된 것이다. 상기 HyperTransport 링크는 매우 고 데이터 속도를 달성하기 위해 온-다이 디퍼런셜 터미네이션(differential termination)으로서 로우 스윙 디퍼런셜 시그널링(low swing differential signaling)을 사용한다. 상기 HyperTransport 링크는 측정가능한 대역폭을 달성하기 위해 측정가능한 주파수 및 데이터 폭을 사용한다.
I/O 디바이스(160)는 데이터 생성기로서 기능하는 입력/출력 디바이스이다. 상술 된 실시예에서, I/O 디바이스(160)는 "Ethernet"으로 일반적으로 언급되는 것으로서, IEEE 802.3 위원회의 도움 아래 IEEE(Institude of electrical and Electronics Engineers)에 의해 표준화된 LAN 통신 프로토콜을 구현하는 제어기이다. 그러나 본 발명은 그 외의 다른 데이터 생성기에도 적용가능하다.
동작시 I/O 디바이스(160)는 상기 Ethernet 프로토콜을 수행하는 동안 주기적으로 프레임들을 수신할 것이다. 프레임이 수신될 때, I/O 디바이스(160) 내의 DMA 제어기는 특수한 삽입에 의한 쓰기 패킷을 전송함으로써 데이터를 캐시(124)에 쓰기할 것이다. 이러한 경우에, 상기 데이터 프레임은 2개의 부분으로 구성되는데, 하나는 프로토콜 헤더 정보를 가지며, 다른 하나는 페이로드 데이터를 가진다. 또 다른 실시예에서, 하나의 마이크로프로세서는 헤더 정보를 처리하는데 책임을 질 수 있고, 다른 프로세서는 상기 페이로드 데이터를 소비한다. 그러나 도 4에 나타난 상기 하나의 프로세서 시스템에서, I/O 드라이버와 애플리케이션 프로그램 모두는 CPU(120) 상에서 실행된다.
상기 DMA 쓰기는 입력(134)을 통하여 HyperTransport 프로토콜을 사용하여 수행된다. 호스트 브리지는 데이터를 수신하고, 상기 데이터를 XBAR(128)를 통하여 메모리 제어기(126)에 제공하는데 책임을 진다. 이어서, 메모리 제어기는 상기 패킷의 삽입에 의한 쓰기 속성을 인식하고, 상기 데이터를 로컬 버퍼에 저장한다. 메모리 제어기(126)는 상기 캐시(124)에 쓰기 되어질 데이터의 존재를 상기 CPU(122)에 알리기 위해서 프로브를 상기 CPU(122)에 전송한다. CPU(122)로부터의 후속하는 프리페치 읽기 신호에 응답하여, 메모리 제어기(126)는 DRAM(170)에 쓰기 및 DRAM(170)으로부터 후속하는 읽기를 수행함이 없이 캐시(124) 내에 저장하기 위해 CPU(122)에 상기 데이터를 포워딩한다.
이 동작은 삽입에 의한 쓰기 동작을 수행하는 동안 데이터의 흐름을 나타내는 도 4의 데이터 프로세싱 시스템(100)의 블록 도(180)를 나타내는 도 5를 참조로 하여 더욱 잘 이해될 수 있다. 도 5는 데이터의 흐름을 점선으로 나타낸다. 따라서, 상기 데이터 흐름은 I/O 디바이스(160)에서 호스트 브리지(130) 방향으로 시작해서, XMAR(128)를 통하여 메모리 제어기(126)로 갔다가, 마지막으로 상기 XBAR(128)을 통하여 상기 메모리 제어기(126)로부터 CPU(122)에 도달한다.
메모리 제어기(126) 내에서 삽입에 의한 쓰기 동작이 되는 동안 데이터의 흐름은 메모리 제어기(126)를 포함하는 도 4의 데이터 프로세싱 시스템(100)의 부분에 대한 블록 도를 나타내는 도 6에서 더욱 상세히 기술된다. 상기 메모리 제어기(126)는 일반적으로 읽기 요청 버퍼들의 세트(222), 쓰기 요청 버퍼들의 세트(224), 멀티플렉서(226), DRAM 제어기(228), 드라이버(230), 쓰기 데이터 버퍼(242), 요청 정렬 버퍼(262), 제어 블록(264), 드라이버들(244, 246), 읽기 데이터 버퍼(248), 그리고 멀티플렉서(250)를 포함한다. 상기 메모리 제어기(126)가 XBAR(128)로부터 메모리 액세스 요청을 수신할 때, 상기 메모리 제어기(126)는 상기 요청을 읽기 요청 버퍼(222)에 위치시키거나, 적절하게 쓰기 요청 버퍼(224), 그리고 요청 정렬 버퍼(262)에 위치시킨다. 이러한 버퍼들은 상기 액세스들에 대한 어드레스 및 시퀀스 정보를 저장한다. 이어서, 제어 블록(264)이 요청들이 버퍼들(222 및 224)에서 나와 읽혀지고, DRAM 제어기(228)에 제공되는 순서를 제어한다. 이 메커니즘은 상기 메모리 제어기(126)가 더 오래된 쓰기를 통과시키는 읽기 정책을 구현할 수 있게 하는데, 이는 상기 정책이 성능을 증가시키기 때문이다. 만약 액세스 요청이 쓰기 액세스인 경우, 쓰기 버퍼(242) 내의 대응 버퍼는 메모리에 쓰기가 될 상기 데이터를 메모리에 저장한다. 제어 블록(264)은 요청 정렬 버퍼(262)를 사용하여 상기 액세스들을 적절하게 정렬한다. 드라이버(230)는 어드레스들을 DRAM(170)에 출력한다. 쓰기 데이터는 버퍼(242)로부터 나와 읽혀지고, 그리고 드라이버(244)에 의해서 대응 어드레스를 갖는 DRAM 데이터 버스로 향하게 된다. 읽기 동작 동안에, 읽기 입력 데이터는 입력 드라이버(246)를 통하여 DRAM(170)으로부터 수신되고, 읽기 데이터 버퍼(248)에 저장된다. 상기 제어 블록(264)은 멀티플렉서(250)의 제 2 입력을 선택함으로써 저장된 상기 읽기 데이터를 XBAR(128)를 통하여 CPU(122)에 전송되도록 한다.
삽입에 의한 쓰기 패킷을 수신함에 응답하여, 상기 메모리 제어기(126)는 버퍼들(224 및 242)에 각기 쓰기 어드레스 및 쓰기 데이터를 저장한다. 상기 쓰기 버퍼는 쓰기들을 동일한 어드레스와 결합하고, 모든 읽기들을 스누핑(snooping)한다. 중요한 것으로서, 읽기 비트가 상기 쓰기 버퍼 내에서 적중할 때, 상기 데이터는 상기 멀티플렉서(250)를 통하여 XBAR(128)로 반환되고, 상기 쓰기 버퍼 엔트리는 할당 해제된다. 만약 상기 쓰기 버퍼가 채워져 있고, 상기 프리페치 읽기가 상기 메모리 제어기(126)에 도달하기 전에 상기 쓰기 동작이 수행되는 경우, 상기 메모리 제어기(126)는 DRAM(170)으로부터 상기 데이터의 읽기를 단순히 진행시킬 것이다. 그러나 사실상 DRAM(170)에 상기 데이터를 저장하는 것은 상기 쓰기 버퍼가 충분히 크게 만들어져 있을 때는 흔히 발생할 것으로 예상되지 않는다.
도 7은 캐시(124)를 포함하는 도 4의 중앙 처리 유닛(122)의 부분(300)에 대한 블록 도이다. 상기 부분(300)은 프리페치기(302), 로드/저장 유닛(304), 멀티플렉서(306), 프로브 버퍼(308), 미처리 요청 버퍼(310), 희생(victim) 버퍼(312), 프로브 응답 데이터 버퍼(314), 멀티플렉서(316), 읽기 응답 데이터 버퍼(318), 저장 데이터 버퍼(320), 멀티플렉서(322)를 포함한다. 프로브들은 XBAR(128)로부터 수신되고, 그리고 버퍼(308)에 저장된다. 처리시, 프로브들은 상기 멀티플렉서(306)를 통하여 캐시(124)로부터의 읽기 요청을 낳는다. 만약 상기 데이터가 상기 캐시 내에 제공된다면, 이는 프로브 적중을 낳는다. 상기 캐시(124)에 대한 프로브-개시 액세스에 부가하여, 상기 멀티플렉서(306)는 또한 로드/저장 유닛(304)에 의해서 생성된 캐시 읽기 요청을 캐시(124)의 읽기 입력에 제공한다. 쓰기의 경우, 로드/저장 유닛(304)은 어드레스를 상기 캐시(124)의 쓰기 포트에 제공하고, 상기 저장 데이터를 저장 버퍼(320)에 위치시키는데, 여기서 상기 데이터 저장 버퍼는 멀티플렉서(322)를 통하여 캐시(124)에 입력된다. 또한, 상기 캐시(124)는 하위 레벨 메모리 시스템에 대한 읽기의 결과로서 읽기 응답 데이터를 수신하고, 그리고 그러한 데이터를 읽기 응답 데이터 버퍼(318)에 저장하는데, 여기서 상기 데이터는 멀티플렉서(322)의 제 1 입력을 통하여 상기 캐시(124)의 쓰기 데이터 포트에 입력된다.
삽입에 의한 쓰기 패킷에 응답하여 발행된 프로브 프리페치는 점선으로 나타난 경로를 따라 프로브 버퍼를 통하여 프리페치기(302)로 들어간다. 상기 프리페치 프로브에 응답하여, 먼저 CPU(122)는 프로브 응답 데이터 버퍼(314)를 통하여 프로브 응답을 발행하고, 이어서 상기 메모리 제어기(126)에 프리페치 로드를 발행한다. 상기 프리페치 읽기 데이터가 반환될 때, 상기 데이터는 버퍼(318)에 저장되고, 그 후에 멀티플렉서(322)의 첫 번째 입력을 통하여 상기 캐시(124)로 쓰기 되고, 그리고 적절한 캐시 라인에 수정됨(M) 상태로 인스톨된다. 그 후에 상기 I/O 드라이버 소프트웨어에 의해서 조만간에 사용될 것이다. 상기 라인은 LRU와 같은 상기 캐시의 정상적인 대체 정책을 사용하여 상기 라인이 할당해제될 때 상기 메모리에 쓰기가 될 것임을 보장하기 위해 M 상태로 인스톨되는 것이다.
테이블 1은 다수 타입의 프로브들 및 상기 프로브들과 관련되어 있으면서 마이크로프로세서(120)에서 이용가능한 응답을 나타낸다.
테이블 I
프로브 타입 | 삽입속성 | 적중 | 희생상태 | 희생(victim)라이트백(writeback) | 인스톨 상태 | DRAM쓰기됨 | 액션 |
프로브무효화 | N | N | 변화없음 | Y | 삽입 없음 | ||
프로브무효화 | Y | MOES | N | I | Y | 삽입 없음 | |
프로브 | 프리페치 | N | ESI | N | M | N | 캐시 내의희생 라인무효화,캐시 내에 라인 인스톨 |
프로브 | 프리페치 | N | MO | Y | M | N | 쓰기되돌림 희생,캐시 내에 라인인스톨 |
프로브 | 프리페치 | Y | MOESI | N | M | N | 캐시 내의라인 업데이트 |
프로브 | 프리페치 적중 | Y | MOES | N | M | N | 캐시 내의라인 업데이트 |
프로브 | 프리페치적중 | N | N | 변화없음 | Y | 캐시 내의라인이 아님 |
메모리 제어기(126)는 삽입에 의한 쓰기 패킷에 응답하여 "프리페치" 속성 세트를 갖는 프로브를 발행한다. 상기 캐시(124)에 의해서 행해진 상기 액션은 테이블 1에 나타난 바와 같이, 희생 상태에 따라 변화된다.
도 8은 I/O 디바이스(160)가 삽입에 의한 쓰기 패킷을 형성할 수 있게 하는 HyperTransport 패킷(200)의 블록 도를 나타낸다. 사용되는 패킷의 구조는 어드레스를 갖는 요청 패킷으로 알려져 있다. 상기 패킷은 4개의 바이트 길이를 가지며, 추가적인 4개의 바이트 어드레스 확장을 갖는다. 본 발명에 따라서, I/O 디바이스(160)는 하기에 더 기술될 바와 같이 새로운 삽입에 의한 쓰기 인코딩을 커맨드 필드로 부가함으로써 삽입에 의한 쓰기 속성을 신호한다.
이 패킷과 관련된 다양한 필드가 하기에 설명된다. SeqID[3:0](Bit-time 0의 연속 비트들 7 및 6dmf Bit-time 1의 비트들 6 및 5와 연쇄(concatenating)시킴)은 명령된 스퀀스의 부분으로서 디바이스에 의해 발행되었고, 그리고 가상 채널 내에서 강하게 주문된 요청들의 그룹을 태깅(tagging)하기 위해서 사용된다. 0이 아닌 SeqID 필드와 일치하는 동일한 I/O 스트림 및 가상 채널 내의 모든 요청들은 반드시 그들의 순서가 유지되도록 해야한다. 0x0의 SeqID 값은 트랜잭션이 시퀀스의 부분이 아님을 의미하기 위해 예약되었다. 이 값을 갖는 트랜잭션들은 HyperTransport 표준의 챕터 6 내에 설명된 바와 같이 다른 이유로 인해 순서가 정해질 수 있더라도, 어떠한 시퀀스-순서 제약도 가지지 않는다.
Cmd[5:0] 필드는 HyperTransport 프로토콜 내의 다양한 커맨드들을 시그널링하기 위해서 사용된다. 2001 HyperTransport 표준은 Cmd[5:0]의 다양한 인코딩을 정의하고, 다른 인코딩들을 예약하고 있다. 테이블 II는 상기 정의되고, 예약된 인코딩을 보여준다.
테이블 II
코드 | VChan | 커맨드 | 설명/옵션 | 패킷 타입 |
000000 | - | NOP | 널(null) 패킷, 특정 흐름 제어 정보 포함 | Info |
000001 | Reserved-HOST | |||
000010 | NPC | 플러쉬(Flush) | 플러쉬 포스트 쓰기 | Request |
0000110001xx | ||||
x01xxxx01xxx | NPCorPC(Bit 5) | Wr(sized) | 쓰기 요청[5] 요청이 프스트 되었는지 여부를 정의함: 0: 포스트안함 1: 포스트됨[2] 데이터 길이를 정의함: 0: 바이트 1: 더블워드(doubleword)[1] 대역폭/지연을 정의함:요구사항: 0: 정상(Nornal) 1: 등시성(Isochronous)[0] 액세스가 호스트 캐시 일관성을 요구하는지 여부를 나타냄(액세스가 호스트 메모리에 대한 것이 아닌 경우는 무시): 0: 비일관성 1: 일관성 | Req/Addr/Data |
01xxxx01xxxx | NPC | Rd(sized) | 읽기 요청[3] 요청에 대한 순서화 요구사항을 정의 0: 응답이 포스트된 요구사항들을 통과시키지 않을 수 있음 1: 응답이 포스트된 요청들을 통과시킬 수 있음[2] 데이터 길이 정의: 0: 바이트 1: 더블워드(doubleword)[1] 대역폭/지연 정의 요구사항: 0: 정상 1: 등시성(Isochronous)[0] 액세스가 호스트 캐시 일관성을 요구하는지 여부를 나타냄(액세스가 호스트 메모리에 대한 것이 아닌 경우는 무시) 0: 비일관성 1: 일관성 | Req/Addr |
100xxx | Reserved-I/O | |||
110000 | R | RdResponse | 읽기 응답 | Resp/Data |
110001110010 | Reserved-HOST | |||
110011 | R | TgtDone | 요청의 소스에 타겟이 수행됐음을 알림 | Response |
11010x | Reserved-HOST | |||
11010x | Reserved-HOST | |||
11011x | Reserved-I/O | |||
11100x | Reserved-HOST | |||
11100x | Reserved-HOST | |||
11100x | Reserved-HOST | |||
111010 | PC | Broadcast | 메시지를 브로드캐스트 | Req/Addr |
111011 | Reserved-HOST | |||
111100 | PC | Fence | 포스트된 요청들을 건너띔(fence) | Request |
111101 | NPC | Atomic RMW | 자동 읽기-수정-쓰기 | Req/Addr/Data |
111110 | Reserved-I/O | |||
111111 | - | Sync/Error | 동기화 및 에러 패킷을 연결 | Info |
PassPW는 동일한 I/O 스트림의 포스트된 요청 채널에서 패킷들을 통과시키기 위해서 이 패킷이 허용됨을 나타낸다. 반면에, 이 패킷은 반드시 그것들 다음 순서로 유지되어야 한다. 이 비트는 표준 개인용 컴퓨터 인터페이스(PCI)와 같은 HyperTransport 기술의 순서화 모델을 유지하기 위해서 클리어 되어야 한다. PCI와 같은 순서화를 요구하지 않는 시스템들은 고성능을 위해서 PassPW를 설정할 것이다.
UnitID[4:0] 필드는 트랜잭션에서의 참여자를 식별하기 위해서 사용된다. 모든 패킷들이 구성의 종단에서 호스트 브리지로 또는 호스트 브리지로 전송되기 때문에, 소스 또는 목적지 노드가 수반된다. 0 값은 호스트 브리지의 UnitID를 위해 예약되었다. UnitID에 대해 더욱 상세히 살펴보기 위해 2001 HyperTransport 표준의 섹션 4.2를 참고할 수 있다. 다중 논리 I/O 스트림을 갖는 노드들은 다중 UnitID 값들을 소유할 수 있다.
HyperTransport 프로토콜은 비트 타임(bit times) 2 및 3 동안에 전송되는 2개의 바이트들을 커맨드별로 예약하였다.
Addr[39:2]는 상기 요청에 의해서 액세스 되는 더블워드(doubleword) 어드레스를 나타낸다. 모든 어드레스 비트들이 모든 요청 타입에 포함되는 것은 아니다. 미세단위가 요구되는 경우, 바이트 마스크들이 사용된다.
I/O 디바이스(160)는 바람직하게는 "Reserved-I/O"로 마크된 Cmd[5:0] 필드 정의들 중 임의의 하나를 사용함으로써 삽입에 의한 쓰기 요청을 신호한다. 그러나 게다가, I/O 디바이스들에 대해서 예약된 커맨드 인코딩이 거의 존재하지 않기 때문에, 새로운 삽입에 의한 쓰기 패킷이 바람직하게는 단지 하나의 Reserved-I/O 커맨드 인코딩을 사용함으로써 다른 새로운 패킷 포맷과 결합된다. 이 목적은 다른 새로운 패킷 타입들 사이를 차별하기 위해 부가적 조건들을 인코딩하는 4-비트 SeqID 필드를 사용함으로써 달성된다.
도 9는 본 발명을 따르는 디렉토리-기반 데이터 프로세싱 시스템에서 데이터 및 제어 신호의 흐름과 관련된 시간 도(500)이다. 이 실시예에서, 노드 B에서의 하위 레벨 메인 메모리 시스템은 디렉토리-기반 캐시 일관성 프로토콜을 유지한다. 이전의 데이터 생성기와 같이, 하위 레벨 메모리 시스템 및 캐시를 구비한 프로세서는 개별 노드들에 전부 위치된다.
화살표(502)에 의해 나타난 바와 같이 노드 C에서의 데이터 생성기가 삽입에 의한 쓰기를 제공함에 응답하여, 노드 B의 디렉토리/메모리 제어기는 시간 주기(504) 동안 프로세서의 관련 캐시 또는 캐시들(하기에 더 설명됨) 내의 어드레스 지정된 라인의 존재에 대해 자신의 디렉토리를 검사한다. 통신 수신기를 위해 사용되는 원형 버퍼의 경우와 같이, 만약 엔트리가 이미 그러한 캐시 또는 캐시들에 할당되었었고, 그리고 특정한 상태(수정됨 또는 독점됨)로 있는 경우, 상기 메모리 제어기는 노드 A의 캐시 내에 삽입될 데이터의 존재를 노드 A에 알리기 위해 화살표(506)에 의해 나타난 것처럼 프로브 프리페치를 노드 A에 전송한다. 그러나 도 2와는 다르게, 도 9의 디렉토리-기반 시스템은 시스템 내의 모든 프로세서들 가운데 어느 프로세서가 상기 데이터를 캐싱하였는지를 추적하고, 그리고 상기 지시받은 프리페치를 브로드캐스팅 하는 대신에 상기 데이터의 소유자에게 전송한다. 노드 A(데이터의 소유자)는 화살표(508)에 의해 나타난 바와 같이 프로브 응답으로 응답한다. 데이터는 상기 메모리 제어기에서의 저장 버퍼에 유지되고, 하위 레벨 메모리 시스템에 대한 쓰기는 지연된다. 다음으로, 노드 A의 상기 데이터 프로세서는 화살표(510)에 나타난 바와 같이 프리페치 읽기를 노드 B에게 전송한다. 노드 B의 상기 메모리 제어기는 시간 주기(512) 동안 상기 저장 버퍼로부터 상기 데이터 요소를 읽어냄으로써, 그리고 화살표(514)에 나타난 바와 같이 노드 A에 상기 데이터를 전송함으로써 응답한다. 만약 노드 A의 상기 데이터 프로세서가 프리페치 읽기를 정상적으로 전송할 수 있는 경우, 노드 B의 상기 메모리 제어기(126)는 메인 메모리를 전혀 액세스함이 없이 상기 데이터를 전송할 수 있다. 그러나 만약 노드 B의 상기 메모리 제어기는 상기 프로세서가 상기 프리페치 읽기를 전송하기 전에 모든 다른 쓰기 버퍼가 채워질 때에도 정상적인 쓰기 요청을 충족시키려 하는 목적과 같은, 다른 목적을 위해서 상기 저장 버퍼를 재사용할 필요가 있다면, 상기 메모리 제어기는 대신에 메모리에 상기 데이터를 쓰기할 것이다. 마지막으로 노드 A가 시간주기(516) 동안 상기 캐시 라인 채우기를 완료한다. 이어서 상기 데이터가 노드 A에서 사용될 때, 상기 캐시 라인은 LRU(least recently used)와 같은 캐시의 할당 해제 정책을 사용하여 프로세싱의 정상적인 흐름 동안 할당해제를 위해 이용가능하게 될 것이다. 상기 데이터 요소가 단 한 번 상기 프로세서에 의해서 사용되기 때문에, 상기 라인은 캐시 내에서 수정되지 않을 것이고, 상기 메인 메모리로 상기 라인을 라이트 백(write back)할 필요도 전혀 없다. 따라서, 이 방법은 메인 메모리에 대한 어떠한 쓰기도 제거하고, 상기 디렉토리 읽기를 수행하고, 상기 버퍼 동작을 읽기 위해서 노드의 상기 메모리 제어기에 대한 작은 대역폭만을 사용하게 된다.
도 10은 본 발명을 따르는 디렉토리-기반 데이터 프로세싱 시스템(600)에 대한 블록 도를 나타낸다. 데이터 프로세싱 시스템(600)은 시스템 상호 연결(602)에 의해서 모두 연결된 N개의 노드들을 포함한다. 도 10에서는 각기 "노드 1", "노드 2", "노드 3", 그리고 "노드 4"로 명칭 된 노드들(604, 606, 608, 610, 612)을 포함하는 예시적 노드들을 나타낸다. 일 예시로서 노드(608)가 하기에 더욱 상세히 나타난다. 노드(608)는 각기 캐시들(624 및 628)을 갖는 2개의 CPU 코어들(622 및 626), "XBAR"로 명칭된 크로스바 스위치(630), "HT"로 명칭된 I/O 제어기(621), 네트워크 인터페이스(634), 그리고 디렉토리/메모리 제어기(636)를 갖는 마이크로프로세서를 포함한다. I/O 제어기(632)는 소위 비-일관성 HyperTransport 프로토콜을 구현한다. 네트워크 인터페이스(634)는 시스템 상호연결(602)에 연결되며, 소위 일관성 HyperTransport 프로토콜을 구현한다. 디렉토리/메모리 제어기(636)는 DRAM(650) 형태인 하위 레벨 메모리 시스템에 연결된다.
동작시 노드(608)는 캐시 일관성 비-단일 메모리 액세스("CC NUMA": cache coherent non-uniform memory access) 아키텍처를 구현한다. 노드(608)와 같은 시스템에서 각각의 노드는 프로세서(620)처럼 캐시를 구비한 CPU들, DRAM 제어기, 디렉토리 제어기, I/O 디바이스를 갖는 프로세서들을 포함한다. 노드(608)는 쓰기 데이터가 이미 수정됨(M) 또는 독점됨(E) 상태로 캐싱 되었을 때, 상기 데이터를 자신의 로컬 캐시들 중 하나에 직접, 또는 시스템 상호연결(602)을 통하여 또 다른 노드에 위치한 캐시에 간접적으로 삽입할 수 있다. 상기 데이터를 저장하는 캐시는 후속하는 이 캐시 라인에 대한 읽기 또는 쓰기 요청을 충족시킬 책임이 있다. 이 캐싱 메커니즘의 목적은 도 9에서 나타난 바와 같이 상기 라인이 이미 캐시 내에 제공되었고, 상기 캐시 내에 이미 제공된 데이터를 업데이트할 때, DRAM 메모리 대역 요구를 줄이고, 시스템 내의 어떠한 캐시에 DMA 쓰기 데이터를 전송 전송하기 위한 것이다.
노드(608)는 상기 디렉토리에 제공된 각각의 라인에 대한 3가지의 기본 상태를 지원한다. 무효(I) 상태는 상기 라인이 시스템 내의 어떠한 캐시에 라도 캐싱 되지 않았음을 나타낸다. I 상태인 라인에 대한 읽기 요청은 하위 레벨 메모리 시스템으로 액세스 되도록 한다. 캐싱 되지 않음(U) 상태는 상기 라인이 상기 하위 레벨 메모리 시스템으로 라이트 백(write back)된 읽기-전용 액세스를 위해 캐싱 에이전트(cashing agent)에 의해서 읽기가 완료되었고, 시스템 어디에서도 캐싱 되지 않음을 나타낸다. 수정됨/독점됨(ME) 상태는 상기 라인이 읽기/쓰기 액세스를 위해 캐싱 에이전트에 의해서 읽기가 완료되었음을 나타낸다. 특정한 캐시 라인에 대한 디렉토리 엔트리가 ME 상태일 때, 상기 캐싱 에이전트는 자신의 로컬 캐시 내에 E 상태 또는 M 상태로 상기 데이터를 가진다. 만약 상기 캐싱 에이전트가 E 상태인 라인을 가지는 경우, 자신의 상기 라인의 사본에 대한 읽기/쓰기 허가를 가지만, 상기 라인에 아직 쓰기 되지는 않은 것이다. 만약 상기 캐싱 에이전트가 M 상태인 라인을 가지는 경우, 그것은 자신의 상기 라인의 사본에 대한 읽기-쓰기 허가를 가지고, 그것은 상기 데이터를 이미 완료한 것이다. 상기 캐싱 에이전트가 자시의 캐시 내에 M 상태인 라인을 가질 때, 메모리 내의 상기 데이터는 스테일(stale)인 것이다. 상기 라인이 처음으로 상기 캐싱 에이전트에 E 상태로 인스톨되고, 이어서 상기 라인이 수정될 때 M 상태로 바뀐다. 정확하게는 상기 시스템 내의 하나의 노드가 상기 라인에 대한 읽기/쓰기 액세스를 가진다. 디렉토리에서 ME 상태인 라인에 대한 어떠한 읽기 요청일지라도 시스템 내의 가장 최근 날짜의 사본이 어디에 있는지를 알아보기 위해서 먼저 검사되어야만 한다. 만약 가장 최근의 데이터가 상기 프로세서 캐시에 있다면, 상기 프로세서는 상기 라인을 반드시 제공해야만 한다. 만약 상기 프로세서가 E 상태인 캐시 라인을 가지는 경우, 상기 라인은 상기 프로세서 캐시 내에서 무효로 (I 상태로 됨)되고, 그리고 상기 메모리 에이전트에 의해서 제공된다.
ME 상태의 라인이 읽기 되는 경우, 상기 디렉토리 엔트리는 메모리 내의 상기 데이터가 스테일임을 나타내고, 또한 공유자가 존재한다는 것을 나타내기 위해서, 소유됨(O) 상태로 바뀐다.
캐시가 데이터의 읽기 전용 사본을 가지는 경우, 어떠한 데이터 엔트리도 할당되지 않는다. 디렉토리 엔트리의 부재는 라인이 상기 시스템 내에 캐싱 될 수 있음을 나타낸다. 따라서, 부족한 디렉토리 캐시 내에서 부적중된 저장내용은 공유된 사본들을 무효로하기 위해서 모든 캐시들에게 프로브를 브로드캐스팅한다.
디렉토리의 이용가능성은 상기 데이터의 존재를 검사하기 위해서 시스템 내의 모든 캐시들이 필요하게 되는 브로드캐스트 프로브들을 전송함이 없이도, 도 9의 노드 A, 노드 B, 노드 C, 그리고 노드 D가 구별되는 더 일반적인 경우를 프로세서(620)가 지원할 수 있게 한다. 프로세서(620)가 어느 라인이 현재 캐시 되었는지를 결정하기 위해서 디렉토리/메모리 제어기(636) 내의 디렉토리를 사용한다. 만약 상기 라인이 캐싱 되었고, M 또는 E 상태로 있는 경우, I/O 디바이스(640)로부터의 데이터는 적절한 캐시에 위치된다. 그렇지 않은 경우, 메모리에 쓰기 된다.
더욱 상세히는 디렉토리/메모리 제어기(636)는 이 메커니즘을 지원하기 위해서 새로운 디렉토리 상태들을 구현한다. I/O 제어기(632)가 디렉토리 엔트리 없이 라인에 대한 삽입에 의한 쓰기 패킷을 수신함에 응답하여, 디렉토리/메모리 제어기(636)는 DRAM(650)에 쓰기한다. 캐시 엔트리의 축출(즉, U 또는 I 엔트리로 대체) 없이 디렉토리 엔트리가 생성될 수 있는 경우 및 단지 그런 경우라면, 상기 디렉토리 엔트리는 새로운 상태, 쓰기됨(W) 상태로 생성된다. 디렉토리 엔트리의 "소프트 할당"은 상기 캐시에서 작업중인 세트를 비우는 쓰기 삽입으로 인해 성능 문제를 야기할 가능성을 피하기 위한 경우에서 사용된다. 상기 CPU가 이어서 상기 라인을 읽기 하는 경우, 상기 라인은 또 다른 새로운 상태, 즉 예약(R) 상태로 인스톨되고, 그리고 상기 디렉토리 엔트리는 W 상태에서 R 상태로 바뀐다. 상기 R 상태로 인스톨된 라인에 대한 후속하는 쓰기는 상기 프로세서 캐시로 직접적으로 삽입되고, 메인 메모리에 대한 쓰기를 수행함이 없이도 상기 디렉토리 엔트리는 또 다른 새로운 디렉토리 상태, 즉 수정됨(M) 상태로 바뀐다. 상기 프로세서는 자신의 캐시 내에 R 엔트리를 덮어쓰기할 때마다, 대체 통지를 제공한다.
도 11은 도 10의 디렉토리/메모리 제어기(636) 내의 엔트리(650)를 나타낸다. 엔트리(650)와 같은 각각의 엔트리는 3개의 필드를 갖는데: TAG 필드(652), STATE 필드(654), 그리고 OWNER 필드(656)가 그것이다. 상기 TAG 필드는 디렉토리 엔트리를 물리적 어드레스에 대응시키기 위해서 사용된다. 상기 OWNER 필드는 상기 라인이 ME 또는 O 상태로 있을 때 소유자를 나타낸다. 3개의 부가적인 디렉토리 상태들이 이 삽입에 의한 쓰기 메커니즘을 구현하는데 사용되는데: W 상태, R 상태, M 상태가 그것이다. STATE 필드에 의해서 나타나는 디렉토리 상태의 완전한 세트가 하기의 테이블 III에 나열되어 있으며, 새로운 상태들은 기울임 서체로 표시하였다.
테이블 III
상태 | 약어 | 설명 |
Invalid | I | 캐싱되지 않음 또는 클린(clean) 캐싱된 사본 |
Written | W | 캐싱되지 않음. 라인이 데이터 생성기에 의해 메인 메모리로 최근에 쓰기됨 |
Reservation | R | 데이터의 클린 사본 하나가 프로세서의 캐시에 정확하게 존재함. 대체 통지가 요구됨 |
Modified | M | 라인이 소유자의 캐시에서 수정됨. 메모리 내의 데이터는 스테일(stale)한 것임 |
Modified orExclusive | ME | 라인이 수정되었거나, 소유자에 독점적임. |
Owned | O | 라인이 공유되었으나 메모리는 스테일(stale)한 것임소유자에서의 O상태로 라인이 대체로 라이트백(writeback) 되어야 함. |
Uncached | U | M 라인이 라이트 백 되었거나, 또는 E 라인이 대체되어, 상기 라인이 시스템 내의 어디에서도 캐싱되었다고 보장할 수 없음. |
상기 디렉토리-기반 메커니즘을 지원하기 위해서, 하나의 부가적인 프로세서 캐시 상태-R 상태-가 도입되었다. 프로세서 캐시 상태들의 완전한 세트들이 테이블 IV에 나열되어 있으며, 여기서 새로운 상태는 기울임 서체로 표시하였다
테이블 IV
상태 | 약어 | 설명 |
Invalid | I | 캐싱되지 않음 또는 클린(clean) 캐싱된 사본 |
Reservation | R | 데이터의 클린 사본 하나가 프로세서의 캐시에 정확하게 존재함. 대체 통지가 요구됨 |
Modified | M | 라인이 소유자의 캐시에서 수정됨.메모리 내의 데이터는 스테일(stale)한 것임. |
Exclusive | E | 라인이 소유자에게 독점적임. 소유자는 버스 트랜잭션을 일으키지 않고 데이터를 수정할 권한을 가짐 |
Shared | S | 라인은 읽기전용임. 공유된 사본들이 존재할 수 있음.메인 메모리 내의 데이터가 업-투-데이트(up-to-date) 한 것임 |
삽입에 의한 쓰기의 전술한 논의는 HyperTransport 프로토콜에 특유한 것이라는 것을 분명히 해야한다. 그러나 본 발명의 다른 실시예에서, 삽입에 의한 쓰기 상태의 시그널링의 다른 방법이 사용될 수 있다. 예를 들면, 비트 필드들의 특수한 인코딩, 기존의 또는 부가적인 입력/출력 핀들, 그리고 기타 등등이 상기 삽입에 의한 쓰기 상태를 시그널링하는데 사용될 수도 있다. 상기 삽입에 의한 쓰기 시그널링은 I/O DMA 읽기 요청 패킷에서 예약되었거나, 벤더별 필드를 사용함으로써 PCI, PCI-X, PCIE와 같은 다른 I/O 버스들 상에서 달성될 수 있다.
본 발명이 바람직한 실시예의 문맥으로 기술하였으나, 다양한 변형이 당업자에게는 자명한 것이다. 예를 들면, 개시된 방법을 사용하는 데이터 프로세싱 시스템은 메인 메모리 및 하위-레벨 캐시에 직접 인터페이싱하는 시스템에 적용될 수 있다. 더욱이, 본 발명은 하나 이상의 상위-레벨 캐시에도 적용될 수 있다. 메인 메모리는 DRAM, SRAM, 비휘발성 메모리, 또는 어떤 다른 타입의 메모리를 사용하여 구성될 수 있다. 더욱이, 프리페치 읽기를 대기하는 동안 데이터를 일시적으로 저장하는 방법들이 다수 존재할 수 있다. 따라서, 본 발명의 사상 내에서 본 발명의 모든 변형들을 포함하기 위해서 청구범위가 작성되었다.
Claims (10)
- 캐시(124, 624) 및 하위-레벨 메모리 시스템(170, 650)을 포함하는 메모리 계층을 갖는 데이터 프로세싱 시스템(100, 600)에서의 한 방법으로서,데이터 요소와 관련된 삽입에 의한 쓰기 속성을 갖는 상기 데이터 요소를 데이터 생성기(160, 640)로부터 수신하는 단계(52, 502)와;상기 하위-레벨 메모리 시스템(170, 650)을 액세스함이 없이 상기 데이터 요소를 상기 캐시(124, 624)에 포워딩하는 단계(54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514)와; 그리고상기 캐시(124, 624)에서, 상기 데이터 요소를 포함하고 있는 적어도 하나의 캐시 라인을 업데이팅(66, 516)하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1항에 있어서,상기 데이터 요소를 수신하는 단계(52, 502)는 HyperTransport™ I/O 링크 사양서, 버젼 1.03과 실질적으로 호환되는 링크를 사용하여 상기 삽입에 의한 쓰기 속성과 함께 상기 데이터 요소를 수신하는 단계(52,502)를 포함하는 것을 특징으로 하는 방법.
- 제 3항에 있어서,상기 수신하는 단계(52, 502)는 요청 패킷 내의 예약된 커맨드 필드 인코딩에서 상기 삽입에 의한 쓰기 속성을 검출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 1항에 있어서,상기 포워딩하는 단계(54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514)는 상기 데이터 요소를 버퍼(242) 내에 일시적으로 저장하는 단계(54, 504)를 포함하는 것을 특징으로 하는 방법.
- 제 4항에 있어서,상기 방법은 상기 포워딩하는 단계(54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514)가 수행되기 전에 상기 데이터 프로세싱 시스템(100, 600)이 다른 목적을 위해 상기 버퍼(242)를 필요로 하는지 여부에 조건적으로 의존하여 상기 포워딩하는 단계(54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514)를 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 4항에 있어서, 상기 포워딩하는 단계(54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514)는프로브 프리페치(probe prefetch)를 상기 캐시(124, 624)에 연결된 중앙 처리 유닛(122, 622)에 전송하는 단계와;상기 프로브 프리페치(124, 624)에 응답하여 상기 중앙 처리 유닛(122, 622)에 의해 읽기 요청을 발행하는 단계와;상기 읽기 요청에 응답하여 상기 데이터 요소를 상기 캐시(124, 624)에 전송하는 단계와; 그리고상기 버퍼(242)로부터 상기 데이터 요소를 제거하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 캐시(124, 624)를 포함하는 중앙 처리 유닛(122, 622)과;상기 중앙 처리 유닛(122, 622)에 연결되고, 데이터 생성기(160, 640)로부터 데이터 요소에 대한 삽입에 의한 쓰기 패킷을 수신하도록 된 호스트 브리지(130, 632)와; 그리고상기 중앙 처리 유닛(122, 622), 상기 호스트 브리지(130, 632), 및 하위-레벨 메모리 시스템(170, 650)에 연결되며, 상기 하위-레벨 메모리 시스템(170, 650)을 액세스함이 없이 상기 데이터 요소를 상기 캐시(124, 624) 내에 저장하기 위해 상기 중앙 처리 유닛(122, 622)에 포워딩하기 위한 수단들(126, 636)을 포함하는 것을 특징으로 하는 데이터 프로세서(120).
- 제 7항에 있어서,상기 중앙 처리 유닛(122)은 프로브 프리페치를 수신함에 응답하여 프리페치 읽기를 개시하도록 되어 있고, 상기 포워딩하기 위한 수단(126)은 버퍼(242)를 구비하는 메모리 제어기(126)를 포함하며, 여기서 상기 메모리 제어기(126)는 상기 호스트 브리지로부터의 상기 데이터 요소를 상기 버퍼(242) 내에 저장하고, 상기 데이터 요소를 수신함에 응답하여 상기 프로브 프리페치를 상기 중앙 처리 유닛(122)에 제공하고, 그리고 상기 중앙 처리 유닛(122)으로부터의 상기 프리페치 읽기에 응답하여 상기 버퍼(242)로부터 상기 데이터 요소를 제공하는 것을 특징으로 하는 데이터 프로세서(120).
- 제 7항에 있어서,상기 포워딩하기 위한 수단(126)은 디렉토리/메모리 제어기(636)를 포함하며, 여기서 상기 디렉토리/메모리 제어기(636)는 상기 삽입에 의한 쓰기 패킷에 응답하여 상기 데이터 요소와 관련된 라인의 캐시 상태가 미리 결정된 상태로 있고, 그리고 상기 캐시(624)에 의해 소유되고 있는지 여부를 확인하기 위해 자신의 디렉토리를 검사하며, 그리고 만일 그러한 경우, 상기 하위 레벨 메모리 시스템(650)을 액세스함이 없이 상기 데이터 요소를 상기 캐시(624) 내에 저장하기 위해 상기 중앙 처리 유닛(122, 622)에 전송하는 것을 특징으로 하는 데이터 프로세서(120).
- 제 7항에 있어서,상기 호스트 브리지(130)는 HyperTransport™ 링크 사양서, 버젼 1.03과 실질적으로 호환될 수 있는 링크를 사용하여 상기 데이터 생성기(160, 640)에 연결되도록 된 것을 특징으로 하는 데이터 프로세서(120, 620)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/353,216 US7155572B2 (en) | 2003-01-27 | 2003-01-27 | Method and apparatus for injecting write data into a cache |
US10/353,216 | 2003-01-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050107402A true KR20050107402A (ko) | 2005-11-11 |
KR101089810B1 KR101089810B1 (ko) | 2011-12-12 |
Family
ID=32736135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057013789A KR101089810B1 (ko) | 2003-01-27 | 2003-12-22 | 캐시로 쓰기 데이터를 삽입하기 위한 방법 및 장치 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7155572B2 (ko) |
JP (1) | JP4663329B2 (ko) |
KR (1) | KR101089810B1 (ko) |
CN (1) | CN100424656C (ko) |
AU (1) | AU2003300342A1 (ko) |
DE (1) | DE10394081B4 (ko) |
GB (1) | GB2413879B (ko) |
TW (1) | TWI341462B (ko) |
WO (1) | WO2004070519A2 (ko) |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019704A1 (en) * | 2002-05-15 | 2004-01-29 | Barton Sano | Multiple processor integrated circuit having configurable packet-based interfaces |
US7334102B1 (en) | 2003-05-09 | 2008-02-19 | Advanced Micro Devices, Inc. | Apparatus and method for balanced spinlock support in NUMA systems |
JP4508608B2 (ja) * | 2003-11-13 | 2010-07-21 | 株式会社日立製作所 | 統合キャッシュを備えた記憶装置アダプタ |
US7231470B2 (en) * | 2003-12-16 | 2007-06-12 | Intel Corporation | Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system |
US7373466B1 (en) * | 2004-04-07 | 2008-05-13 | Advanced Micro Devices, Inc. | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer |
US7366845B2 (en) * | 2004-06-29 | 2008-04-29 | Intel Corporation | Pushing of clean data to one or more processors in a system having a coherency protocol |
US20060004965A1 (en) * | 2004-06-30 | 2006-01-05 | Tu Steven J | Direct processor cache access within a system having a coherent multi-processor protocol |
US7290107B2 (en) * | 2004-10-28 | 2007-10-30 | International Business Machines Corporation | Direct deposit using locking cache |
US7395375B2 (en) * | 2004-11-08 | 2008-07-01 | International Business Machines Corporation | Prefetch miss indicator for cache coherence directory misses on external caches |
US9026744B2 (en) | 2005-03-23 | 2015-05-05 | Qualcomm Incorporated | Enforcing strongly-ordered requests in a weakly-ordered processing |
US20070094432A1 (en) * | 2005-10-24 | 2007-04-26 | Silicon Integrated Systems Corp. | Request transmission mechanism and method thereof |
CN100396059C (zh) * | 2006-03-03 | 2008-06-18 | 清华大学 | 分裂式网络处理器控制信息高速缓冲存储器 |
JP2007241612A (ja) * | 2006-03-08 | 2007-09-20 | Matsushita Electric Ind Co Ltd | マルチマスタシステム |
US8009566B2 (en) * | 2006-06-26 | 2011-08-30 | Palo Alto Networks, Inc. | Packet classification in a network security device |
WO2008056410A1 (fr) * | 2006-11-07 | 2008-05-15 | Hitachi Software Engineering Co., Ltd. | Procédé de commande de traitement de données, processeur d'informations et système de commande de traitement de données |
US20080109604A1 (en) * | 2006-11-08 | 2008-05-08 | Sicortex, Inc | Systems and methods for remote direct memory access to processor caches for RDMA reads and writes |
US7774554B2 (en) * | 2007-02-20 | 2010-08-10 | International Business Machines Corporation | System and method for intelligent software-controlled cache injection |
US7752395B1 (en) * | 2007-02-28 | 2010-07-06 | Network Appliance, Inc. | Intelligent caching of data in a storage server victim cache |
US8594085B2 (en) | 2007-04-11 | 2013-11-26 | Palo Alto Networks, Inc. | L2/L3 multi-mode switch including policy processing |
US20080295097A1 (en) * | 2007-05-24 | 2008-11-27 | Advanced Micro Devices, Inc. | Techniques for sharing resources among multiple devices in a processor system |
US20110004732A1 (en) * | 2007-06-06 | 2011-01-06 | 3Leaf Networks, Inc. | DMA in Distributed Shared Memory System |
US20090006668A1 (en) * | 2007-06-28 | 2009-01-01 | Anil Vasudevan | Performing direct data transactions with a cache memory |
US7856530B1 (en) * | 2007-10-31 | 2010-12-21 | Network Appliance, Inc. | System and method for implementing a dynamic cache for a data storage system |
GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
GB2454809B (en) * | 2007-11-19 | 2012-12-19 | St Microelectronics Res & Dev | Cache memory system |
US7865668B2 (en) * | 2007-12-18 | 2011-01-04 | International Business Machines Corporation | Two-sided, dynamic cache injection control |
US8510509B2 (en) * | 2007-12-18 | 2013-08-13 | International Business Machines Corporation | Data transfer to memory over an input/output (I/O) interconnect |
US8099557B2 (en) * | 2008-02-26 | 2012-01-17 | Globalfoundries Inc. | Push for sharing instruction |
US8347037B2 (en) * | 2008-10-22 | 2013-01-01 | International Business Machines Corporation | Victim cache replacement |
US8209489B2 (en) * | 2008-10-22 | 2012-06-26 | International Business Machines Corporation | Victim cache prefetching |
US8117397B2 (en) * | 2008-12-16 | 2012-02-14 | International Business Machines Corporation | Victim cache line selection |
US8225045B2 (en) * | 2008-12-16 | 2012-07-17 | International Business Machines Corporation | Lateral cache-to-cache cast-in |
US8499124B2 (en) * | 2008-12-16 | 2013-07-30 | International Business Machines Corporation | Handling castout cache lines in a victim cache |
US8489819B2 (en) * | 2008-12-19 | 2013-07-16 | International Business Machines Corporation | Victim cache lateral castout targeting |
US8873556B1 (en) | 2008-12-24 | 2014-10-28 | Palo Alto Networks, Inc. | Application based packet forwarding |
US8769664B1 (en) | 2009-01-30 | 2014-07-01 | Palo Alto Networks, Inc. | Security processing in active security devices |
US8719499B2 (en) * | 2009-02-10 | 2014-05-06 | International Business Machines Corporation | Cache-line based notification |
US8949540B2 (en) * | 2009-03-11 | 2015-02-03 | International Business Machines Corporation | Lateral castout (LCO) of victim cache line in data-invalid state |
US8285939B2 (en) * | 2009-04-08 | 2012-10-09 | International Business Machines Corporation | Lateral castout target selection |
US8327073B2 (en) * | 2009-04-09 | 2012-12-04 | International Business Machines Corporation | Empirically based dynamic control of acceptance of victim cache lateral castouts |
US8312220B2 (en) * | 2009-04-09 | 2012-11-13 | International Business Machines Corporation | Mode-based castout destination selection |
US8347036B2 (en) * | 2009-04-09 | 2013-01-01 | International Business Machines Corporation | Empirically based dynamic control of transmission of victim cache lateral castouts |
US20110228674A1 (en) * | 2010-03-18 | 2011-09-22 | Alon Pais | Packet processing optimization |
US9037810B2 (en) | 2010-03-02 | 2015-05-19 | Marvell Israel (M.I.S.L.) Ltd. | Pre-fetching of data packets |
US9189403B2 (en) * | 2009-12-30 | 2015-11-17 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US8327047B2 (en) | 2010-03-18 | 2012-12-04 | Marvell World Trade Ltd. | Buffer manager and methods for managing memory |
AU2010201718B2 (en) * | 2010-04-29 | 2012-08-23 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
US8751714B2 (en) * | 2010-09-24 | 2014-06-10 | Intel Corporation | Implementing quickpath interconnect protocol over a PCIe interface |
US9098203B1 (en) | 2011-03-01 | 2015-08-04 | Marvell Israel (M.I.S.L) Ltd. | Multi-input memory command prioritization |
US8695096B1 (en) | 2011-05-24 | 2014-04-08 | Palo Alto Networks, Inc. | Automatic signature generation for malicious PDF files |
US9047441B2 (en) | 2011-05-24 | 2015-06-02 | Palo Alto Networks, Inc. | Malware analysis system |
DE112011105911T5 (de) * | 2011-12-01 | 2014-09-11 | Intel Corporation | Server mit Switch-Schaltungen |
US9268732B2 (en) | 2012-06-08 | 2016-02-23 | Advanced Micro Devices, Inc. | Tunnel suitable for multi-segment communication links and method therefor |
JP6028470B2 (ja) * | 2012-08-31 | 2016-11-16 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理装置の制御方法 |
US9218291B2 (en) | 2013-07-25 | 2015-12-22 | International Business Machines Corporation | Implementing selective cache injection |
KR102238650B1 (ko) * | 2014-04-30 | 2021-04-09 | 삼성전자주식회사 | 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법 |
JP6248809B2 (ja) * | 2014-05-23 | 2017-12-20 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN103995786B (zh) * | 2014-06-04 | 2017-05-17 | 龙芯中科技术有限公司 | 高速缓存一致性消息的传输方法和装置 |
US9594521B2 (en) | 2015-02-23 | 2017-03-14 | Advanced Micro Devices, Inc. | Scheduling of data migration |
US9792210B2 (en) * | 2015-12-22 | 2017-10-17 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
JP6565729B2 (ja) * | 2016-02-17 | 2019-08-28 | 富士通株式会社 | 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法 |
US10042762B2 (en) | 2016-09-14 | 2018-08-07 | Advanced Micro Devices, Inc. | Light-weight cache coherence for data processors with limited data sharing |
EP3835959A4 (en) * | 2018-08-24 | 2021-11-10 | Huawei Technologies Co., Ltd. | DATA PRE-EXTRACTION PROCESS AND DEVICE |
US11429526B2 (en) * | 2018-10-15 | 2022-08-30 | Texas Instruments Incorporated | Credit aware central arbitration for multi-endpoint, multi-core system |
US10761986B2 (en) | 2018-10-23 | 2020-09-01 | Advanced Micro Devices, Inc. | Redirecting data to improve page locality in a scalable data fabric |
US11036658B2 (en) | 2019-01-16 | 2021-06-15 | Advanced Micro Devices, Inc. | Light-weight memory expansion in a coherent memory system |
CN110727612B (zh) * | 2019-09-09 | 2021-01-15 | 无锡江南计算技术研究所 | 一种基于精确预取的计算缓存装置 |
US11914517B2 (en) | 2020-09-25 | 2024-02-27 | Advanced Micro Devices, Inc. | Method and apparatus for monitoring memory access traffic |
US11874783B2 (en) | 2021-12-21 | 2024-01-16 | Advanced Micro Devices, Inc. | Coherent block read fulfillment |
US20240078197A1 (en) * | 2022-09-01 | 2024-03-07 | Advanced Micro Devices, Inc. | Locality-based data processing |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4197580A (en) | 1978-06-08 | 1980-04-08 | Bell Telephone Laboratories, Incorporated | Data processing system including a cache memory |
US4503497A (en) * | 1982-05-27 | 1985-03-05 | International Business Machines Corporation | System for independent cache-to-cache transfer |
AU642753B2 (en) | 1990-07-24 | 1993-10-28 | Mitsubishi Petrochemical Company Limited | Halogen-containing compounds, herbicidal composition containing the same as an active ingredient, and intermediary compounds therefor |
JPH04190436A (ja) * | 1990-11-26 | 1992-07-08 | Mitsubishi Electric Corp | マイクロプロセッサ内蔵キャッシュメモリ回路 |
JPH04195576A (ja) * | 1990-11-28 | 1992-07-15 | Nec Corp | キャッシュメモリ方式 |
US5375216A (en) | 1992-02-28 | 1994-12-20 | Motorola, Inc. | Apparatus and method for optimizing performance of a cache memory in a data processing system |
US5535116A (en) | 1993-05-18 | 1996-07-09 | Stanford University | Flat cache-only multi-processor architectures |
US5579503A (en) * | 1993-11-16 | 1996-11-26 | Mitsubishi Electric Information Technology | Direct cache coupled network interface for low latency |
CA2148186A1 (en) * | 1994-05-04 | 1995-11-05 | Michael T. Jackson | 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 |
US5553265A (en) | 1994-10-21 | 1996-09-03 | International Business Machines Corporation | Methods and system for merging data during cache checking and write-back cycles for memory reads and writes |
US6101574A (en) * | 1995-02-16 | 2000-08-08 | Fujitsu Limited | Disk control unit for holding track data in non-volatile cache memory |
JP3889044B2 (ja) | 1995-05-05 | 2007-03-07 | シリコン、グラフィクス、インコーポレイテッド | 不均一メモリ・アクセス(numa)システムにおけるページ移動 |
US5680576A (en) | 1995-05-05 | 1997-10-21 | Silicon Graphics, Inc. | Directory-based coherence protocol allowing efficient dropping of clean-exclusive data |
US5850534A (en) * | 1995-06-05 | 1998-12-15 | Advanced Micro Devices, Inc. | Method and apparatus for reducing cache snooping overhead in a multilevel cache system |
US5829028A (en) | 1996-05-06 | 1998-10-27 | Advanced Micro Devices, Inc. | Data cache configured to store data in a use-once manner |
JP3782178B2 (ja) * | 1996-11-26 | 2006-06-07 | 富士通株式会社 | 情報処理装置 |
US5829025A (en) * | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
US5996048A (en) * | 1997-06-20 | 1999-11-30 | Sun Microsystems, Inc. | Inclusion vector architecture for a level two cache |
US6044438A (en) * | 1997-07-10 | 2000-03-28 | International Business Machiness Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems |
US6223258B1 (en) | 1998-03-31 | 2001-04-24 | Intel Corporation | Method and apparatus for implementing non-temporal loads |
US6212568B1 (en) | 1998-05-06 | 2001-04-03 | Creare Inc. | Ring buffered network bus data management system |
JP2000082011A (ja) * | 1998-05-13 | 2000-03-21 | Axis Ab | Dmaユニットによる改良されたメモリ・アクセスをする方法及びコンピュ―タ・システム |
US6490654B2 (en) | 1998-07-31 | 2002-12-03 | Hewlett-Packard Company | Method and apparatus for replacing cache lines in a cache memory |
US6654953B1 (en) * | 1998-10-09 | 2003-11-25 | Microsoft Corporation | Extending program languages with source-program attribute tags |
US6108764A (en) * | 1998-12-17 | 2000-08-22 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention |
US6631401B1 (en) * | 1998-12-21 | 2003-10-07 | Advanced Micro Devices, Inc. | Flexible probe/probe response routing for maintaining coherency |
US6442666B1 (en) | 1999-01-28 | 2002-08-27 | Infineon Technologies Ag | Techniques for improving memory access in a virtual memory system |
US6502171B1 (en) | 1999-08-04 | 2002-12-31 | International Business Machines Corporation | Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data |
US6549961B1 (en) | 1999-10-27 | 2003-04-15 | Infineon Technologies North America Corporation | Semaphore access in a multiprocessor system |
US6427188B1 (en) * | 2000-02-09 | 2002-07-30 | Hewlett-Packard Company | Method and system for early tag accesses for lower-level caches in parallel with first-level cache |
US6751684B2 (en) | 2000-12-21 | 2004-06-15 | Jonathan M. Owen | System and method of allocating bandwidth to a plurality of devices interconnected by a plurality of point-to-point communication links |
US7017008B2 (en) | 2000-12-29 | 2006-03-21 | Intel Corporation | Method and apparatus for optimizing data streaming in a computer system utilizing random access memory in a system logic device |
JP4822598B2 (ja) * | 2001-03-21 | 2011-11-24 | ルネサスエレクトロニクス株式会社 | キャッシュメモリ装置およびそれを含むデータ処理装置 |
US20030014596A1 (en) * | 2001-07-10 | 2003-01-16 | Naohiko Irie | Streaming data cache for multimedia processor |
US7100001B2 (en) * | 2002-01-24 | 2006-08-29 | Intel Corporation | Methods and apparatus for cache intervention |
US6912612B2 (en) * | 2002-02-25 | 2005-06-28 | Intel Corporation | Shared bypass bus structure |
US6839816B2 (en) * | 2002-02-26 | 2005-01-04 | International Business Machines Corporation | Shared cache line update mechanism |
US20040019704A1 (en) * | 2002-05-15 | 2004-01-29 | Barton Sano | Multiple processor integrated circuit having configurable packet-based interfaces |
US6944719B2 (en) * | 2002-05-15 | 2005-09-13 | Broadcom Corp. | Scalable cache coherent distributed shared memory processing system |
JP2004005287A (ja) * | 2002-06-03 | 2004-01-08 | Hitachi Ltd | コプロセッサを搭載したプロセッサシステム |
US7062610B2 (en) * | 2002-09-30 | 2006-06-13 | Advanced Micro Devices, Inc. | Method and apparatus for reducing overhead in a data processing system with a cache |
US8533401B2 (en) * | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
-
2003
- 2003-01-27 US US10/353,216 patent/US7155572B2/en not_active Expired - Lifetime
- 2003-12-22 WO PCT/US2003/041180 patent/WO2004070519A2/en active Application Filing
- 2003-12-22 KR KR1020057013789A patent/KR101089810B1/ko not_active IP Right Cessation
- 2003-12-22 CN CNB2003801092922A patent/CN100424656C/zh not_active Expired - Lifetime
- 2003-12-22 AU AU2003300342A patent/AU2003300342A1/en not_active Abandoned
- 2003-12-22 GB GB0516391A patent/GB2413879B/en not_active Expired - Lifetime
- 2003-12-22 DE DE10394081T patent/DE10394081B4/de not_active Expired - Lifetime
- 2003-12-22 JP JP2004568047A patent/JP4663329B2/ja not_active Expired - Lifetime
-
2004
- 2004-01-19 TW TW093101344A patent/TWI341462B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2004070519A3 (en) | 2005-08-04 |
GB2413879A (en) | 2005-11-09 |
TW200421089A (en) | 2004-10-16 |
AU2003300342A1 (en) | 2004-08-30 |
TWI341462B (en) | 2011-05-01 |
GB0516391D0 (en) | 2005-09-14 |
JP2006513510A (ja) | 2006-04-20 |
JP4663329B2 (ja) | 2011-04-06 |
KR101089810B1 (ko) | 2011-12-12 |
WO2004070519A2 (en) | 2004-08-19 |
CN100424656C (zh) | 2008-10-08 |
CN1754158A (zh) | 2006-03-29 |
US7155572B2 (en) | 2006-12-26 |
DE10394081B4 (de) | 2013-05-29 |
DE10394081T5 (de) | 2011-12-29 |
GB2413879B (en) | 2006-08-16 |
AU2003300342A8 (en) | 2004-08-30 |
US20040148473A1 (en) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101089810B1 (ko) | 캐시로 쓰기 데이터를 삽입하기 위한 방법 및 장치 | |
US6944719B2 (en) | Scalable cache coherent distributed shared memory processing system | |
US7171521B2 (en) | Coherent shared memory processing system | |
KR101497002B1 (ko) | 스누프 필터링 메커니즘 | |
KR100548908B1 (ko) | 중앙 집중형 스누프 필터링 방법 및 장치 | |
US6948035B2 (en) | Data pend mechanism | |
US7062610B2 (en) | Method and apparatus for reducing overhead in a data processing system with a cache | |
US7814286B2 (en) | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer | |
KR100308323B1 (ko) | 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템 | |
KR101014394B1 (ko) | 통합 디렉토리 및 프로세서 캐시를 구비한 컴퓨터 시스템 | |
US20020053004A1 (en) | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links | |
KR20050070013A (ko) | 원격 캐쉬 존재 정보를 저장하는 프로세서 캐쉬를 구비한컴퓨터 시스템 | |
US20030217235A1 (en) | Ambiguous virtual channels | |
US7062609B1 (en) | Method and apparatus for selecting transfer types | |
US6629213B1 (en) | Apparatus and method using sub-cacheline transactions to improve system performance | |
CN116615721A (zh) | 用于在分层高速缓存电路内传输数据的方法和装置 | |
US6757793B1 (en) | Reducing probe traffic in multiprocessor systems using a victim record table | |
EP1363188B1 (en) | Load-linked/store conditional mechanism in a cc-numa (cache-coherent nonuniform memory access) system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
E90F | Notification of reason for final refusal | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |