KR100371845B1 - 데이타처리시스템 - Google Patents

데이타처리시스템 Download PDF

Info

Publication number
KR100371845B1
KR100371845B1 KR1019950003487A KR19950003487A KR100371845B1 KR 100371845 B1 KR100371845 B1 KR 100371845B1 KR 1019950003487 A KR1019950003487 A KR 1019950003487A KR 19950003487 A KR19950003487 A KR 19950003487A KR 100371845 B1 KR100371845 B1 KR 100371845B1
Authority
KR
South Korea
Prior art keywords
bus
transaction
data
module
transactions
Prior art date
Application number
KR1019950003487A
Other languages
English (en)
Other versions
KR950033893A (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 KR950033893A publication Critical patent/KR950033893A/ko
Application granted granted Critical
Publication of KR100371845B1 publication Critical patent/KR100371845B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

일관성 방안은 버스, 주 메모리, 버스를 통하여 수신된 트랜잭션에 응답하여 주 메모리를 액세스하기 위한 주 메모리 제어기, 그리고, 버스에 연결되는 프로세서 모듈을 구비한 시스템에 사용된다. 각 프로세서 모듈은 캐시 메모리를 구비하고, 버스를 통하여 다른 프로세서 모듈 및 주 메모리 제어기로 일관성 트랜잭션을 전송할 수 있다. 각 프로세서 모듈은 버스상에 발생되는 일관성 트랜잭션을 검출하고, 각 일관성 트랜잭션에 대하여 캐시 일관성 검사를 수행한다. 각 프로세서 모듈은 버스상에 발생되는 모든 트랜잭션을 저장하고, 선입선출 순서로 트랜잭션에 대하여 일관성 검사를 수행하기 위하여 일관성 큐를 구비한다. 모듈이 버스를 통하여 일관성 트랜잭션을 전송할 때, 그 자신의 트랜잭션을 그 자신의 일관성 큐에 배치시킨다.

Description

데이타 처리 시스템{IMPROVED ORDERED COHERENCY SCHEME}
본 발명은 컴퓨터 시스템에 관한 것으로, 특히 하나 이상의 프로세서가 캐시메모리(cache memory)를 가지는 공유 메모리 멀티프로세서 컴퓨터(shared memory multiprocessor computers)에 관한 것이다.
컴퓨터 시스템은 통상적으로 프로세서, 메모리 및 입력/출력 장치와 같은 구성 요소와, 둘 이상의 구성 요소간에 정보를 전송하기 위한 공유 버스(shared bus)를 구비한다. 구성요소는 통상적으로 각각이 하나 이상의 프로세서, 메모리 및/혹은 입력/출력 장치를 포함할 수 있는 구성요소 모듈(component modules)의 형태로 버스에 연결된다. 정보는 버스 사이클(bus cycle)동안 버스를 통해 구성요소 모듈간에 전송되고, 각 버스 사이클은 모듈이 버스 제어를 가지고, 버스를 통하여 제한된 정보량을 전송 혹은 구동(drive)할 수 있는 시간주기이다. 주어진 시간동안 버스 제어를 갖는 모듈을 버스 소유자라 한다.
구성요소 모듈은 통상적으로, "판독" 및 "기록" 트랜잭션(transaction) 등을 완료하기 위하여 하나 이상의 사이클을 취하는 "트랜잭션"의 형태로, 버스를 경유하여 서로 통신한다. 예를 들면, 전형적인 판독 트랜잭션에 있어서, 모듈은 획득할 필요가 있는 데이타를 식별하고 식별된 데이타가 전송되도록 요청하는 주 메모리 제어기 혹은 다른 모듈로 버스를 통해 신호를 전송한다. 그 다음. 응답 모듈(responding module)은 요청을 처리하고 하나 이상의 후속 사이클동안 데이타를 반환한다. 많은 종래의 버스는 요청에 이어 즉시 응답할 필요가 없는 "분할 트랜잭션(split transactions)"을 수용한다. 예를 들면, 모듈이 판독 트랜잭션을 시작한 후, 모듈은 버스 제어를 포기함으로써, 응답 모듈이 요청된 데이타를 반환할 준비가 될 때까지 버스는 다른 목적으로 사용될 수 있다. 그때, 응답 모듈은 버스제어를 얻어 요청된 데이타를 요청 모듈로 전송한다.
다수의 컴퓨터 시스템에 있어서, 시스템상의 소프트웨어 실행은 주 매모리를 공유하는 두 개 이상의 프로세서 모듈에 의해 실행된다. 주 프로세서는 통상적으로 공유 버스에 직접 연결된다. 주 메모리는 통상적으로 주 메모리 제어기를 통하여 버스에 연결된다. 프로세서가 주 메모리로부터 데이타를 판독하거나 혹은 주 메모리로 데이타를 기록하려는 경우, 주 메모리 제어기와 통신해야 한다. 이러한 유형의 시스템을 종종 "공유 메모리 멀티프로세서(shared memory multiprocesor)" 시스템이라 한다.
또한 프로세서 모듈 혹은 입력/출력 모듈은 캐시 메모리를 구비할 수 있는데, 캐시 메모리는 모듈의 신속한 액세스 동안 빈번히 사용되는 데이타를 저장한다. 통상적으로, 캐시 메모리는 빈번히 사용되는 데이타 및 이러한 데이타 항목들이 주 메모리에 저장되는 어드레스(address)를 저장한다. 모듈이 메모리의 어드레스로부터 데이타를 탐색할 때, 데이타와 관련된 어드레스를 사용하여 캐시 메모리로부터 데이타를 요청한다. 캐시 메모리는 그 어드레스와 관련된 데이타를 보유하는지를 알기 위하여 검사(check)한다. 보유하는 경우, 캐시 메모리는 요청된 데이타를 프로세서로 직접 반환하는 것이 가능하다. 캐시 메모리가 원하는 정보를 포함하지 않는 경우에는(즉, "캐시 부재(cache miss)"가 발생될 때), 통상적으로 정규 메모리 액세스가 발생된다. 캐시 메모리는 전형적으로, 주 메모리(통상적으로 RAM) 액세스가 마이크로프로세서 속도에 비하여 저속일 때 유용하다. 캐시 메모리는 주 RAM 메모리보다 빠르다.
프로세서의 각각이 캐시 메모리를 구비하는 공유 메모리 멀티-프로세서 시스템(shared memory multi-processor system)의 경우에 있어서 상황은 다소 복잡해진다. 이러한 시스템에서, 특정 트랜잭션에 필요한 데이타가 하나 이상의 캐시 메모리 및/또는 주 메모리에 저장될 수 있다. 캐시 메모리의 데이타는 프로세서에 의해 운영되어, 주 메모리에 저장된 값과 상이한 값으로 된다. 통상적으로, 프로세서상에서의 소프트웨어 실행은 특정 어드레스와 관련된 데이타의 가장 최근의 값을 사용하는 것이 필요하다. 따라서, 프로세서가 다른 프로세서에 의해 사용될 수 있는 데이타를 탐색할 때마다, 현재 데이타가 확실히 프로세서에 제공되는 되도록 하는 처리인 "캐시 일관성 기법(cache coherency scheme)"을 구현하는 것이 필요하다.
전형적인 일관성 기법에서, 데이타가 모듈에 의해 요청될 경우, 캐시 메모리를 가지는 각 모듈은 그 캐시 메모리의 "일관성 검사(coherency check)"를 수행하여, 요청된 어드레스와 관련된 데이타를 가지는 지의 여부 및 그의 일관성 검사의 결과를 보고할 것인지(report)를 결정한다. 또한, 각 모듈은 통상적으로, 주 메모리와 다른 캐시 메모리에 저장된 동일한 주소와 연관된 데이타에 관하여 그의 캐시 메모리에 저장된 데이타의 트랙을 보존하고, 해당 데이타의 상태를 보고한다. 예를 들면, 모듈은 그의 데이타가 "전용(private)"(즉, 데이타값이 단지 이 모듈에서만 사용가능한 경우)인지 혹은 데이타가 "공유"(즉, 데이타가 동시에 하나 혹은 그 이상의 캐시 메모리에 상주할 수 있는 경우)인지를 보고할 수 있다. 또한, 모듈은 그의 데이타가 "크린(clean)"(즉, 주 메모리에 저장된 동일한 어드레스와 관련된 데이타와 동일한 경우)인지 혹은 "더티(dirty)"(즉, 데이타가 획득된 후에 운영되는데이타인 경우)인지를 보고할 수 있다. 통상적으로, 단지 데이타의 하나의 전용-더티 사본만이 주어진 시간에 허용된다. "일관성 트랜잭션(coherent transaction)"은 모든 메모리의 검사를 요청하여 요청된 프로세서로 전송될 데이타의 소오스를 결정하는, 예를 들면, 메모리 판독과 같은 트랜잭션이다.
일관성 트랜잭션은 통상적으로 사용가능한 버스 사이클동안 발생될 수 있다. 그러나, 몇몇 모듈들은 내부적으로 사용중일 수 있어, 트랜잭션에 대한 일관성 검사를 즉시 수행할 수 없을 수도 있으며, 캐시 일관성 검사를 완료하는데 다수의 사이클이 걸릴 수도 있다. 일관성 트랜잭션이 발생될 수 있는 속도(rate)를 수용하기 위하여, 모듈은 종종 캐시 일관성 큐(cache coherency queue)를 구비하여 일관성 검사를 수행할 수 있을 때까지 일관성 트랜잭션을 저장한다.
각 모듈이 수행한 일관성 검사의 결과는 분석되고, 가장 최근의 데이타가 데이타를 요청했던 모듈로 제공된다. 예를 들면, 캐시 메모리가 요청된 데이타의 사본을 가지지 않는 경우, 주 메모리에 의해 데이타가 제공될 것이다. 모듈이 전용-더티 사본을 가지는 경우, 이 모듈이 통상적으로 데이타를 제공할 것이다. 데이타가 제공될 때, 각 모듈은 전형적으로, 그의 캐시 메모리의 데이타를 갱신(update)한다. 예를 들면. 데이타의 전공-더티 사본은 주 메모리로 복사되고. 이것은 클린 사본이 될 수 있다.
모듈의 캐시 일관성 하드웨어에서의 지연은 멀티-프로세서 시스템에서 순서(ordering) 문제를 일으킬 수 있다. 전술한 바와 같이, 하드웨어는 특정 데이타 요청에 대하여 가장 최근에 갱신된 버전의 데이타가 제공되도록 보장해야 한다.이것은, 버스에 발생되는 트랜잭션에 응답하여 필연적으로 지연(delay)이 있게 되므로, 강하게 파이프라인된 시스템(pipelined system)에서는 어려울 수 있다.
하나의 모듈은 제 2 모듈이 동일한 라인의 더티 사본을 되기록하는 것과 동시에 특정 데이타 라인의 일관성 판독을 발생하는 경우, 하나의 잠재적인 문제가 발생된다. 더티 사본은 가장 최근에 갱신된 것이므로, 일관성 판독에 응답하여 제공되어야 한다. 그러나, 메모리가 기록을 실행하기 전에 판독에 응답하고, 제 2 모듈(즉, 라인의 더티 사본을 되기록하는 모듈)은 이미 라인을 "포기"했으므로 일관성 검사를 수행할 때 충돌(conflicts)을 검출하지 않는 경우, 원래의 요청자는 메모리로부터 잘못된 "진부한(stale)" 데이타를 얻을 것이다. 프로세서가 부정확한 데이타상에서 동작할 때, 이 "순서" 문제는 분명히 잘못된 결과를 발생시킬 수 있다.
종래의 시스템은 각종 기법을 사용하여 전술한 순서 문제를 피할 수 있었다. 각 종래 기법은 단점을 가진다. 몇몇 시스템에서는, 동시에 단지 하나의 일관성 트랜잭션만이 발생되도록 하며, 제 1 일관성 트랜잭션상에서 모든 일관성 보고가 완료될 때까지 새로운 일관성 트랜잭션은 발생될 수 없다. 이 기법은 트랜잭션을 적절한 순서로 처리하고, 사용가능한 버스 대역폭(bandwidth)을 감소시켜 성능을 제한하는 대신에 새로운 일관성 트랜잭션의 제공을 보장한다.
다른 시스템은 새로운 트랜잭션을 발생하기 전에 모듈이 잠재적 충돌에 대하여 미해결의 트랜잭션을 검사할 것을 요구한다. 예를 들면, 프로세서가 캐시 라인의 되기록을 발생하기 전에, 프로세서는 동일한 라인의 미해결의 일관성 판독이 없다는 것을 확인하기 위하여 검사한다. 또한, 이러한 제약은 잠재적 트랜잭션 발생속도(issue rate)를 감속시켜, 성능을 제한하고, 모듈의 복잡도(complexity)를 증가시킨다.
따라서, 일관성 트랜잭션이 발생될 수 있는 속도(rate)를 제약하지 않고, 각 모듈이 그 자신의 속도(rate)로 캐시 일관성 검사를 처리할 수 있는 파이프라인 분할 트랜잭션 버스를 위한 일관성 방안이 필요하다.
따라서, 본 발명의 목적은 개선된 순서화 일관성 방안(ordered coherency scheme)을 제공하는데 있다.
본 발명의 다른 목적은 트랜잭션의 발생시에 트랜잭션 순서를 근거로 하는 순서화 일관성 방안을 제공하는데 있다.
본 발명의 또 다른 목적은 일관성 트랜잭션에 과도한 대기 시간을 부가하지 않는 순서화 일관성 방안을 제공하는데 있다.
본 발명의 또 다른 목적은 각 모듈이 그 자신의 속도(pace)로 일관성 검사에 응답케 하는 순서화 일관성 검사를 제공하는데 있다.
당업자라면, 다음의 본 발명의 상세한 설명 및 바람직한 실시예, 첨부 도면, 그리고, 특허 청구 범위로부터 본 발명의 상기 및 기타 다른 목적들을 명백히 알 수 있을 것이다.
광범위하게 말하면, 본 발명은 순서화 일관성 방안을 포함한다. 일관성 방안은 버스, 주 메모리, 버스를 통하여 수신한 트랜잭션에 응답하여 주 메모리를 액세스하기 위한 주 메모리 제어기, 그리고, 버스에 연결된 다수의 프로세서 모듈을 구비한 시스템에 사용된다. 각 프로세서 모듈은 캐시 메모리를 가지며, 버스를 통하여 다른 프로세서 모듈 및 주 메모리 제어기로 일관성 트랜잭션을 전송할 수 있다. 각 프로세서 모듈은 버스상에 발생되는 일관성 트랜잭션을 검출하고, 일관성 트랜잭션의 각각에 대하여 캐시 일관성 검사를 수행하는 수단을 구비한다. 각 프로세서 모듈은, 버스상에 발생되는 모든 일관성 트랜잭션을 저장하고, 선입선출 순서(first-in first-out order)로 저장된 트랜잭션에 대하여 일관성 검사를 수행하기 위한 일관성 큐를 구비한다.
모듈이 버스를 통하여 일관성 트랜잭션을 전송할 때, 그 자신의 큐에 그 자신의 트랜잭션을 배치한다. 따라서, 각 모듈은 정확히 동일한 순서로 일관성 트랜잭션을 처리한다.
메모리 제어기는 잠재적 충돌에 대하여, 최근에 발생된 일관성 판독을 고려하여 최근에 발생된 캐시 기록을 검사하고, 일관성 메모리 이미지(image)를 유지하기 위해 트랜잭션을 재배열시킨다.
본 발명은 버스상에 발생되는 트랜잭션의 순서로 트랜잭션 순서를 정의하고, 그 정의를 유지하는데 필요한 동작을 행함으로써, 순서 문제를 피할 수 있다는 관점을 근거로 한다. 모듈 캐시는 일관성 검사를 처리하고, 버스상에 발생되었던 트랜잭션의 순서대로 그 자신의 일관성 트랜잭션 처리함에 의해 정의된 순서를 유지한다. 또한, 이전에 보유한 전용-더티 캐시 데이타(Private-Dirty cache data)의 되기록은 일관성 메모리 시스템내의 데이타의 위치를 변경하도록 감시되어, 캐시 되기록은 대략 동시에 발생되는 동일한 위치에 대한 판독전에 처리된다.
본 발명은 하나 이상의 프로세서가 캐시 매모리를 가지는 공유 메모리 멀티 플렉서 시스템에 사용되는 순서화 일관성 방안을 포함한다. 각 모듈은 일관성 트랜잭션에 대하여 일관성 검사를 처리하고, 또한, 트랜잭션이 시스템 버스상에 발생되는 순서대로 그 자신의 트랜잭션을 처리한다.
캐시 메모리를 가지는 각 프로세서 혹은 다른 구성요소 모듈은 캐시 일관성 큐를 구비하여, 발생되는 일관성 트랜잭션을 저장한다. 트랜잭션이 버스상에 발생될 때, 캐시 매모리를 구비한 각 모듈은 버스상의 트랜잭션을 검출하고 그의 캐시 일관성 큐에 트랜잭션을 배치시킨다. 캐시 일관성 큐에서 트렌잭션상의 캐시 일관성 검사는 선입선출 순서로 수행된다. 각 모듈은 그 자신의 속도(pace)로 캐시 일관성 검사를 수행하고, 다수의 캐시 일관성 검사는 동시에 진행될 수 있다. 각 모듈은 주 메모리 제어기고 그의 캐시 일관성 검사의 결과를 전송하고, 이 주 메모리 제어기는 트랜잭션을 발생하는 모듈에게 현재 데이타 및 일관성 정보를 제공한다.
순서를 유지시키기 위하여, 일관성 트랜잭션을 발생하는 각 모듈은 그 자신의 일관성 큐에 그 자신의 트랜잭션을 배치시킨다. 따라서, 모듈은 그 자신의 트랜잭션이 실행되기 전에, 이전에 발생된 모든 일관성 트랜잭션상에 일관성 검사를 수행한다. 각 모듈이 버스상에 발생되는 트랜잭션을 동일한 순서로 그의 일관성 큐로 배치하므로, 각 모듈은 동일한 순서로 발생되는 트랜잭션을 알 수 있을 것이다.
메모리 제어기는 잠재적 충돌에 대하여, 최근에 발생된 일관성 판독을 고려하여 최근에 발생된 캐시 기록을 검사하고, 일관성 메모리 이미지를 유지시키기 위해 트랜잭션을 재배열시킨다. 캐시 기록은 초기의 일관성 판독 트렌잭션과 충돌하는 경우, 메모리 제어기는 캐시 기록이 일관성 판독 트랜잭션 전에 처리되도록 재배열하여, 주 메모리 데이타가 판독을 처리하기 전에 확실히 갱신되도록 한다.
본 발명에 따르는 순서화 일관성 방안은 전형적인 컴퓨터 시스템(10)과 관련하여 기술된 것이다. 순서화 일관성 방안을 논의하기 전에, 컴퓨터 시스템(10)의 동작을 상세히 이해하는 것이 좋을 것이다.
컴퓨터 시스템(10)은 버스(12)와 이 버스(12)에 연결되는 다수의 구성요소를 구비한 멀티프로세서 컴퓨터(multiprocessor computer)이다. 구성요소는 주 메모리 제어기(14), 입력/출력 모듈(16, 18) 및 프로세서 모듈(20, 22, 24 및 26)을 포함한다. 구성요소는 버스(12)를 통하여 트랜잭션을 상호 전송한다.
보다 상세히 기술하면, 주 메모리 제어기(14)는 "호스트 모듈(host modules)"로 간주될 수 있고, 나머지 구성요소는 "클라이언트 모듈(client modules)"로서 간주될 수 있다. 주 메모리 제어기/호스트 모듈은 소정 사이클동안, 만약 있다면, 버스에 허용되는 트랜잭션 유형을 명시하는 클라이언트 선택사양 신호를 각 클라이언트 모듈로 전송한다. 소정 사이클 동안의 버스 소유자(bus owner)는 단지, 그 사이클을 제어하는 클라이언트 선택사양 신호가 허용하는 유형의 트랜잭션만을 개시할 수 있다. 또한, 다음 사용가능한 사이클동안의 버스 소유자는 각 클라이언트 모듈로부터의 중재 신호(arbitration signals)과 함께, 클라이언트 선택사양 신호를 근거로 한 중재와, 현재 버스 소유자에 의해 전송되어진 버스의 제어를 유지할 필요가 있는지의 여부를 표시하는 신호에 의해 결정된다.
프로세서(20, 22, 24 및 26)는 컴퓨터 시스템(10)의 주 프로세서이고, 시스템에 대한 소프트웨어는 모든 프로세서상에서 동시에 실행된다. 프로세서 모듈(20, 22, 24 및 26)은 각 모듈을 나머지 프로세서 모듈로 연결시키는 중재 신호 전송(즉, ARB) 라인(28, 30, 32 및 34)을 각각 제어한다. 프로세서가 버스(12)를 사용하기를 원하는 경우, 그의 ARB 라인을 통해 다른 프로세서 모듈로 사전결정된 신호를 전송하는데, 이 ARB 라인은 다음 사용가능한 버스 사이클동안 버스 소유자를 결정하기 위한 중재에 사용된다.
입력/출력 모듈(16, 18)은 컴퓨터 시스템(10)과 입력/출력 장치(도시되지 않음)간에 인터페이스(interface)를 제공한다. 입력/출력 모듈(16, 18)의 각각은 입력/출력 어댑터(input/output adaptor)를 포함한다. 입력/출력 모듈(16, 18)은 ARB 라인(36, 38)을 각각 제어한다. 입력/출력 모듈이 버스(12)를 사용하기를 원할 때, 중재에 사용되는 ARB 라인상의 나머지 클라이언트 모듈로 사전결정된 신호를 전송한다.
주 메모리 제어기(14)는 종래의 방식으로 주 메모리(도시되지 않음)로부터 정의를 판독하고. 주 메모리에 정보를 저장할 책임이 있다. 주 메모리 제어기(14)는 직접 혹은 종래의 버스를 통하여 메모리와 인터페이스된다. 전술한 바와 같이, 주 메모리 제어기(14)는 또한, 바람직하게, 버스를 제어하기 위한 호스트 모듈로서 제공된다. 주 메모리 제어기(14)는 각 클라이언트 모듈에 직접 연결된 CLIENT_OP(40)를 제어한다. 주 메모리 제어기(14)는 다음 사용가능한 버스 사이클 동안 버스(12)에 배치될 수 있는 트랜잭션 유형을 표시하는 신호를 CLIENT_OP 라인(40)을 통해 각 클라이언트 모듈로 전송한다.
버스(12)는 고성능 프로세서-메모리-I/O 상호연결 버스이다. 버스(12)는 분할 트렌잭션 버스이다. 예를 들면, "판독(READ)" 트랜잭선이 버스(12)에 발생된후, "판독"을 발생했던 모듈은 버스를 포기하여, 다른 모듈이 다른 트랜잭션을 위하여 이 버스를 사용하도록 허용한다. 요청된 데이타가 사용가능할 때, "판독" 에 대한 응답 모듈은 버스를 중재하여 데이타를 전송한다. "기록(WRITE)" 트랜잭션은 분할되지 않으므로, 마스터(master)는 어드레스 사이클 후에 즉시 "기록" 데이타를 전송한다.
버스(12)는 주로 데이타 전송과 관련된 적어도 3개의 버스, 즉, ADDR_DATA 버스, MASTER_ID 버스 및 TRANS_ID 버스를 포함함이 바람직하다. 또한, 버스(12)는 버스(12)의 제어에 대한 중재와 관련되는 LONG_TRANS 버스를 포함한다.
ADDR_DATA 버스는 어드레스 정보 및 데이타를 전송하는데 사용된다. ADDR_DATA 버스가 어드레스-관련 정보를 전송할 때 사이클을 어드레스 사이클이라 하며, ADDR_DATA 버스가 데이타를 전송할 때 사이클을 데이타 사이클이라 한다. 예를 들면, 기록 트랜잭션은 통상적으로 하나 혹은 그 이상의 데이타 사이클에 바로 후속하는 하나의 어드레스 사이클을 가진다. 판독 트랜잭션은 통상적으로 판독을 위하여 탐색(seek)되어지는 어드레스를 표시하기 위하여. 버스 소유자에 의해 사용되는 하나의 어드레스 사이클을 가진다. 이 어드레스 사이클 다음 소정 시간후에, 요청에 응답하는 모듈이 데이타를 요청하는 모듈로 전송하는 하나 이상의 데이타 사이클이 후속된다. 또한, 어드레스-관련 정보 혹은 데이타가 전송되지 않는 유휴사이클(idle cycles)이 발생될 수 있다.
MASTER_ID 및 TRANS_ID 버스는 함께 사용되므로, 분할 트랜잭션에 대한 반환 데이타는 원래의 트랜잭션과 유일하게(uniquely) 관련될 수 있다. 각 분할 트랜잭션 "판독"은 MASTER_ID 버스상의 MASTER_ID 신호와 TRANS_ID 버스상의 TRANS_ID 신호에 의해 식별되는데, 이들 신호는 트랜잭션을 발생하는 모듈을 식별하며, 그 트랜잭션과 그 모듈이 전송하는 다른 트랜잭션을 구별한다. 예를 들면, 분할 트랜잭션의 판독은 MASTER_ID 신호와 TRANS_ID 신호의 고유 조합으로 전송된다. 그러면, MASTER_ID와 TRANS__ID가 요청된 데이타의 반환에 수반되어, 반환 데이타는 적절한 트랜잭션괴 상호관련된다. 트랜잭션 순서는 트랜잭션의 식별에 중요하지 않으므로, 이러한 메카니즘에서는 트랜잭션이 발생되었던 순서와 다른 순서로 다시 복귀될 수 있다. 고유 식별을 하기 위해서는, 소정 시간에 하나의 모듈로부터 소정 트랜잭션 ID를 가지는 단지 하나의 트랜잭션만이 돌출될 수가 있다. 그러나, 트랜잭션은 MASTER_ID 의해 구별될 수 있으므로, 두개 혹은 그 이상의 분리된 모듈이 동시에 동일한 트랜잭션 ID를 사용할 수도 있다.
긴 트랜잭션(long transaction)이 완료될 때까지, 현재의 버스 소유자는 LONG_TRANS를 사용하여 버스(12)의 제어를 유지한다. 예를 들면, 일련의 사이클동안, 모듈은 상당량의 데이타를 기록할 필요가 있을 수 있다. 보다 상세히 후술하는 바와 같이, LONG_TRANS가 단정(assert)될 때, 다른 드랜잭션은 보다 높은 수선순위의 클라이언트 혹은 호스트에 의한 데이타의 중간으로 삽입될 수 없다.
바람직한 실시예에서, CLIENT_OP 버스는 테이블 1에 도시된 신호를 지원한다.
테이블 1
ANY_TRANS, HOST_CONTROL, ONE_CYCLE 및 NONE_ALLOWED 클라이언트 선택사양 신호는 상대적으로 간단하다. ANY_TRANS의 CLIENT_OP는 적절한 사이클동안 트랜잭션이 허용됨을 표시한다. HOST_CONTROL의 CLIENT_OP는 호스트가 적절한 사이클동안 버스를 제어함을 표시한다. ONE_CYCLE 클라이언트 선택사양 신호는 단지 하나의 사이클 트랜잭션이 허용됨을 표시한다. NONE_ALLOWED 클라이언트 선택사앙 신호는 허용되는 트랜잭션이 없음을 표시할 때 사용된다.
RET_ONLY 클라이언트 선택사양 신호는 이전에 보유한 전용-더티 캐시 라인(private-dirty cache lines)을 단지 반환(되기록)하거나, 혹은 이전 트랜잭션에 대한 응답이 허용됨을 표시한다. 예를 들면, 프로세서(24)가 프로세서(20)의 캐시에서의 전용-더티인 캐시 라인의 일관성 판독을 발생하는 경우, 프로세서(20)는 캐시-캐시 사본(cache-to-cache copy)으로 그 캐시 라인을 제공할 수 있다. 캐시-캐시 사본은 일관성 판독에 응답하므로, 캐시-캐시 사본 트랜잭션은 RET_ONLY 클라이언트 선택사양 신호의 영향하에 개시될 수 있다. 유사하게, 데이타 반환은 I/O 판독 트랜잭션에 응답하므로, I/O 모듈(16)은 초기 I/O 판독 트랜잭션으로부터 데이타를 반환할 수 있다.
NO_IO 및 ATOMIC 클라이언트 선택사양 신호는 입력/출력 모듈(16, 18)과 관련이 있다. 제 1 도에 도시된 바와 같이, 입력/출력 모듈(16, 18)은 바람직하게, STOP_IO 라인(58, 60)을 각각 제어하여, 모듈이 더 이상의 입력/출력 트랜잭션을 수용할 수 없음을 나타내는 신호를 메모리 제어기(14)로 전송한다. 또한, 입력/출력 모듈(16. 18)은 바람직하게, STOP_MOST 라인(62, 64)을 각각 제어하여, 메모리 제어기(14)로 그리고, 상호간에 신호를 전송하여 메모리 시스템을 효과적으로 제어한다.
호스트는 STOP_IO 신호를 수신할 때, 그다음, 호스트는 NO_IO 신호를 단정할것이다. CLIENT_OP가 NO_I0인 경우, I/O 트랜잭션을 제외한 모든 트렌잭션이 허용된다. 흐름 제어가 정상적으로 ANY_TRANS를 허용하는 경우, ATOMIC CLIENT_OP가STOP_MOST를 단정하는 클라이언트에 직접 응답하여 발생된다. ATOMIC CLIENT_OP가 STOP_MOST를 단정하는 클라이언트가 버스(12)상의 다수의 연속 트랜잭션을 수행하도록 허용한다. 모든 다른 클라이언트가 ATOMIC이 단정된 사이클동안 버스를 얻는 경우, 이러한 모든 다른 클라이언트는 단지 초기에 전송된 트랜잭션에 응답하여 허용되기나, 혹은 이전에 보유한 전용-더티 캐시 라인을 재기록한다. 또한, 호스트는 통상적으로, 모든 클라이트를 RET_ONLY 클라이언트 선택사양 신호를 사용하이 요청 모듈로의 데이타 반환 및 종래의 데이타 되기록과 같이 응답형 트랜잭션으로 모든 클라이언트를 제한할 수 있다. 따라서, 아토믹 소유자(atomic owner)가 있을 때, 아토믹 소유자에 대하여 유효한 클라이언트 선택사양 신호는 ANY_TRANS이고, 모든 다른 클라이언트에 대하여 유효한 클라이언트 선택사양 신호는 RET_ONLY이다.
각 모듈이 캐시 메모리를 가지는 시스템에 대한 일관성 방안에 관련하여 소정 실시예에서 SHAR_RTN 클라이언트 선택사양 신호가 사용된다. 각 클라이언트 모듈(프로세서와 입력/출력)은 캐시 메모리를 구비하고, 적어도 하나의 일관성 트랜잭션 신호 전송 라인(즉, COH 라인)을 제어하여, 메모리 제어기(14)로 신호를 전송하여 메모리 제어기(14)가 하나 혹은 그 이상의 캐시 메모리에 지장될 수 있는 데이타의 판독 및 기록과 관련된 일관성 트랜잭션을 조정하도록 함으로써. 가장 최근의 데이타가 프로세서에 의해 사용된다. 입력/출력 모듈(20, 22, 24 및 26)은 COH 라인(42, 44, 46 및 48)을 각각 제어한다. 입력/출력 모듈(16)은 COH 라인(50, 52)을 제어한다. 입력/출력 모듈(18)은 COH 라인(54, 56)을 제어한다. SHAR_RTN 신호는 주 메모리 제어기가 공유 상태를 가지는 데이타를 반환하려는 것을 표시한다.
3가지 주 트랜잭션 세트는 전형적인 트랜잭션 속도(transaction rates)를 처리하는데 사용된다. 주 메모리 제어기(14)는 각 큐의 가득찬/빈 상태(full/empty status)를 감시하고, 큐가 오버플로우(overflow)하지 않도록 막는 클라이언트 선택사양 신호를 발생한다. 전술한 컴퓨터 시스템(10)은 3가지 유형의 큐를 사용한다.
먼저, 각 입력/출력(I/O) 모듈은 I/O 장치 혹은 I/O 버스로 전송하기 위하여 버스(12)로부터 입력/출력 모듈의 지시되는 트랜잭션을 보류하는 입력/출력 큐를 가진다. I/O 버스 및/혹은 I/O 장치가 트랜잭션을 처리할 수 있을 때까지, I/O 장치로 지시된 프로세서 판독 및 기록은 대기할 것이다. 이러한 큐는 통상적으로, 트렌잭션이 버스(12)상에 전송될 수 있는 속도(rate)를 처리할 필요가 있다. 전형적으로. I/O 버스가 20 MHz보다 작은 주파수를 가지는 동안, 버스(12)는 60 내지 120 MHz의 주파수를 가진다. 따라서, 트랜잭션은 I/O 버스 혹은 I/O 모듈에 의해 처리될 수 있는 것보다 더 신속하게 I/O 모듈로 전송될 수 있다.
두번째, 주 메모리 제어기(14)는 주 메모리 판독 및 기록 트랜잭션을 보류하는 하나 혹은 그 이상의 메모리 큐를 가진다. 판독 혹은 기록이 메모리에서 수행될 때까지, 이들 메모리-관련 트랜잭션은 메모리 큐에 저장된다. 바람직하게, 독립된 큐들이 판독 및 기록에 사용된다. 일관성 검사가 완료될 때까지 일관성 판독 혹은 기록은 수행될 수 없다.
마지막으로, 캐시 메모리를 구비하고 프로세서 및 입력/출력 모듈을 포함하는 각 모듈은 캐시 일관성 큐를 구비함으로써, 선입선출(FIFO) 순서로 일관성 트랜잭션을 저장한다. 일관성 트랜잭션은 (판독과 같은) 트랜잭션으로, 요청된 데이타가 다른 캐시에 있는지의 여부를 조사하거나, 혹은 캐시가 갱신됨을 증명하기 위하여 다른 캐시를 검사할 필요가 있다. 이러한 트랜잭션은 버스(12)상에 개시된 트랜잭션에 대한 어드레스 사이클동안 전송되어진 신호에 의해 표시된다. 캐시 메모리를 구비한 각 모듈은 버스를 감시하고, 일관성 트랜잭션을 CCC 큐로 참조되는 그의 캐시 일관성 큐로 로드(load)시킨다. 모듈이 그의 캐시를 검사할 때까지 특정 모듈의 CCC 큐에서 대기하고, 그 일관성 검사의 결과를 주 메모리 제어기(14)로 보고한다. 주 메모리 제어기(14)는 모든 모듈이 일관성 검사의 결과를 보고할 때까지 대기하고, 그다음, 일관성 트랜잭션에 응답한다. 클라이언트 모듈이 데이타의 전용-더티 사본을 가지지 않는 경우, 주 메모리 제어기(14)는 주 메모리로부터 데이타를 제공할 것이다. 클라이언트 모듈이 데이타의 전용-더티 사본을 가지는 경우, 이 클라이언트 모듈은 데이타를 제공할 것이며, 주 메모리 제어기(14)는 새로운 데이타 값을 가지도록 주 메모리를 갱신할 것이다. 이것은 하나의 트랜잭션으로 수행된다. 트랜잭션의 어드레스 사이클은 캐시-캐시 사본이 후속하는 요청 모듈을 표시한다. 주 메모리 제어기는 주 메모리로의 기록을 요구함에 따라 동일한 어드레스를 번역한다(interpret). 따라서. 요청 모듈과 주 메모리 제어기의 모두는 버스로부터 데이타를 얻고, 그것에 따라서 동작한다. 어드레스 및 데이타 사이클에 사용되는 MASTER_ID와 TRANS_ID는 원래의 일관성 판독 트랜잭션에서와 동일하므로, 데이타 사이클은 정상적인 메모리 반환동안에서와 동일하다.
주 메모리 제어기(14)는 메모리 큐, CCC 큐 및 I/O 큐를 포함하는 모든 큐의 현재 가득찬/빈 상태상의 정보를 수신 및 처리하는 중앙 위치(central location)로서 동작한다. 각 유형의 큐를 추적하는데 상이한 절차가 사용된다. 내부 주 메모리 큐에 있어서, 주 메모리 제어기(14)는 그의 메모리 큐의 가득한 상태의 트랙을 유지한다. I/O 큐에 있어서, 각 I/O 모듈은 그들의 I/O 큐가 임계적으로 가득찰 때(critically full) 전용 STOP_IO 신호를 주 매모리 제어기(14)로 단정시킴으로써, 그의 I/O 큐의 상태를 주 메모리 제어기(14)로 보고한다.
CCC 큐에 있어서, 주 메모리 제어기(14)는 버스상에 발생된 일관성 트랜잭션의 수를 검출하고, 각 모듈이 대응하는 일관성 트랜잭션의 수의 트랙을 유지함으로써, 간접적으로 각 모듈의 CCC 큐의 가득찬 상태를 감시한다. 특히, 주 메모리 제어기(14)는 발생된 모든 일관성 트랜잭션을 수신한다. 전술한 바와 같이, 캐시를 구비한 각 모듈은 또한, 각 일관성 트랜잭션을 수신하고, 수신된 일관성 트랜잭션에 대한 그의 캐시 일관성 검사의 결과를 주 메모리 제어기(14)로 전송한다. 응답은 각 모듈로부터 주 메모리 제어기(14)로의 전용 버스인 COH 라인(42 내지 52)을 통하여 주 메모리 제어기(14)로 전송된다. 따라서, 주 메모리 제어기(14)는 발생된 일관성 트랜잭션의 수와, 그 모듈로부터 수신된 캐시 일관성 응답을 비교함으로써, 모듈의 CCC 큐에 남아있는 일관성 트랜잭션의 수를 결정할 수 있다.
처리는 "스코어보드(scoreboard)"상에 발생되는 것처럼 나타날 수 있다. 일관성 트랜잭션은 발생되면 보드상에 배치되어, 트랜잭션이 각 모듈의 CCC 큐에 있음을 표시한다. 주 메모리 제어기는 이러한 트랜잭션에 대하여 버스를 감시한다. 주 메모리 제어기(14)는 COH 라인상의 각 모듈로부터 일관성 응답을 수신하고, 주 메모리 제어기(14)는 모듈의 응답을 기록하고, 포인터(pointer)를 그 모듈이 처리할 다음 CCC 요청으로 이동시키고, 그 모듈의 CCC 큐에서 리스트된 트랜잭션의 수를 1만큼 감소시킨다. 또한, 주 메모리 제어기(14)는 소정의 일관성 트랜잭션에 대한 모든 일관성 응답을 수신했을 시기를 알고 있으므로, 일관성 트랜잭션에 응답하는 시기와 방법을 안다.
각종 큐의 상태를 근거로 하여, 주 메모리 제어기(14)는 CLIENT_OP 버스를 사용하여, 큐를 오버로드(overload)하는 트랜잭션이 발생되지 못하게 만든다. 버스(12)에 대한 중재와 관련하여 전술한 바와 같이, 호스트 모듈로서 동작하는 주 메모리 제어기(14)는 안전하게 개시될 수 있는 트랜잭션의 유형을 표시하는 CLIENT_OP 버스상의 모든 다른 모듈로 신호를 전송한다. 모듈이 버스에 대한 중재를 획득(win)할 때, 중재 획득자(arbitration winner)가 시작할 수 있는 트랜잭션(혹은 반환)을 조사하기 위하여 중재 상태동안 CLIENT_OP 버스상에 구동된 인코딩(encoding)을 검사한다.
이제 제 2 도를 참조하여 본 발명에 따르는 흐름 제어 메카니즘을 가지는 컴퓨터 시스템의 동작을 보다 상세히 기술할 것이다. 제 2 도는 컴퓨터 시스템(100)의 주요 요소를 도시하고 있는데, 이 요소는 제 1 도의 컴퓨터 시스템(10)과 관련하여 기술된 요소에 기능적으로 대응한다. 컴퓨터 시스템(100)은 버스(112), 주 메모리(115)에 연결된 주 메모리 제어기(114), 프로세서 모듈(120). CLIENT_OP 라인(140), 일관성 "COH" 라인(142, 152), 그리고, STOP_IO 라인(158)을 구비한다. 이들 요소는 제 1 도와 관련하여 기술된 버스(12), 주 메모리 제어기(14), 입력/출력 모듈(16), CLIENT_OP 라인(40), COH 라인(42, 52) 및 STOP_IO 라인(58)에 각각대응한다. 제 1 도와 관련하여 기술되었던 이들 요소의 양상 및 상호관계는 다시 기술하지 않을 것이다.
명료한 설명을 위하여, 제 2 도는 하나의 프로세서 모듈 및 하나의 입력/출력 모듈을 도시한다. 모듈(120)과 동일한 부가적인 프로세서 모듈과 모듈(116)과 동일한 부가적인 입력/출력 모듈은 제 1 도에 도시된 방식과 동일하게 버스(112)에 연결된다.
제 1 도와 관련하여 기술된 이들 요소들을 제외하고, 컴퓨터 시스템(100)은 종래의 방식으로 입력/출력 모듈(116)에 연결된 입력/출력 버스(160)를 포함한다. 또한, 입력/출력 모듈(116)은 입력/출력 큐(162), CCC 큐(164) 및 메모리 캐시(166)를 포함한다. 프로세서 모듈(120)은 또한, CCC 큐(168) 및 메모리 캐시(170)를 포함한다. 주 메모리 제어기(114)는 메모리 제어 프로세서(172), 적어도 하나의 메모리 큐(174) 및 스코어보드(178)를 포함한다. 프로세서 및 입력/출력 모듈은 프로세서 모듈(120)과 입력/출력 모듈(116)의 요소와 동일한 요소를 각각 포함하는 것이 되지 않았다는 것을 이해할 것이다.
동작에 있어서, 입력/출력 모듈 혹은 프로세서 모듈에 의해 발생되는 일관성 트랜잭션이 버스(112)로 전송된다. 일관성 트랜잭션은 각 모듈에 의해 검출되고, 각 클라이언트 모듈의 CCC 큐와 스코어 보트상에 배치된다. CCC 큐(164, 168)에 저장된 일관성 트랜잭션은 FIFO 순서로 각각 메모리 캐시(166, 170)에 비하여 검사되고, 그 결과는 라인(152, 142)상의 주 메모리 제어기(114)로 각각 보고된다. 모든 모듈이 당면한 트랜잭션에 대하여 보고할 때까지, 결과는 스코어보드상에 저장된다. 주 메모리 제어기(114)는 스코어보드(178)에 리스트된 일관성 트랜잭션의 수에 대하여 라인(142, 152)상에 대응하는 일관성 트랜잭션의 수를 비교하여, CCC 큐(l64, 168)의 가득찬/빈 상태를 결정한다.
예를 들면, 버스(112)에 발생된 일관성 메모리 판독은 모듈(116, 120)에 의해 검출되고, 일관성 검사를 위하여 그들의 CCC 큐에 배치된다. 일관성 검사의 결과는 데이타의 전용 더티 사본을 가진다. 모든 모듈이 보고될 때, 주 메모리 제어기(114)는 데이타를 요청 모듈에 제공하고, 각 모듈이 그 일관성 트랜잭션에 응답하는 것을 그의 스코어보드상에 표시하고, 입력되는 트랜잭션을 위한 자유 공간으로서 이 스코어보드 라인을 표시한다.
입력/출력 장치로의 기록과 같은 입력/출력 트랜잭션은 입력/출력 큐(162)를 통하여 입력/출력 버스(160)로 전송된다. 입력/출력 모듈(116)은 입력/출력 큐(162)의 상태를 감시하고, 입력/출력 큐(162)가 임계적으로 가득찰 때, 입력/출력모듈(116)은 그 정보를 라인(l58)을 통해 주 메모리 제어기(114)로 보고한다. 예를 들면, 프로세서 모듈(20)이 입력/출력 모듈(116)로 데이타를 기록중이라면, 트랜잭션은 큐(162)를 채우고, STOP_IO 신호를 발생시킨다. 주 메모리 제어기(114)는 NO_IO 클라이언트 선택사양 신호를 발생할 것이다.
주 메모리 제어기(114)는 또한 그 자신의 메모리 큐의 상태를 감시한다. 주 메모리 제어기가 그의 메모리 큐가 임계적으로 가득차 있다고 검출하는 경우, NONE_ALLOWED 클라이언트 선택사양 신호를 발생한다. 이전에 발생된 메모리 트랜잭션이 처리됨에 따라, 메모리 큐는 비워지기 시작하며, 더 많은 허용가능한 클라이언트 선택사양 신호가 발생될 수 있다.
통상적으로, 모든 큐의 가득찬/빈 상태에서, 주 메모리 제어기(114)에 사용가능한 정보를 근거로, 주 메모리 제어기(114)내의 프로세서(172)는 사용가능한 사이클에서 큐의 오버플로우없이 발생될 수 있는 트랜잭션의 유형을 결정한다. 메모리 제어 프로세서(172)는 CLIENT_OP 신호를 발생해야 하는지의 여부를 결정하여, 다음 사용 가능한 버스 사이클동안 큐의 오버플로우를 발생시키지 않는 트랜잭션만이 허용된다. 중재 획득자는 단지 CLIENT_OP 신호에 의해 허용되는 트랜잭션을 발생할 것이다. 따라서, 트랜잭션을 중지할 필요가 없으며, 모듈간의 핸드셰이킹이 필요없다.
예를 들면, 입력/출력 큐(162)가 임계적으로 점차 가득차게 된다고 가정하자. 입력/근력 모듈(116)은 데이타를 수신중이며, 입력/출력 장치로의 다른 기록은 버스(112)를 통하여 입력/출력 모듈(116)로 전송되고. 입력/출력 큐(162)에 배치된다. 그 큐(162)가 임계적으로 가득찼다고 검출하면, 입력/출력 모듈(116)은 STOP_IO 신호를 주 메모리 제어기(114)로 전송한다. 주 메모리 제어기(114)는 NO_IO 클라이언트 선택사양 신호를 구동시키고, 다음 버스 소유자는 입력/출력 장치로 트랜잭션을 구동시키지 않을 것이다.
다른 예를 들면, 주 메모리 제어기(114)는 하나 혹은 그 이상의 일관성 큐가 임계적으로 가득차고 있다고 (그의 스코어보드를 사용하여) 검출할 수 있다. 주 메모리 제어기(114)는 RET_ONLY 클라이언트 선택사양 신호를 구동할 것이다. 버스 소유자는 더 이상의 일관성 트랜잭션을 구동하지 않을 것이다. 그러나, 데이타 반환및 일관성 검사 응답은 허용될 것이다. 따라서. CCC 큐는 결국 비게 되기 시작할 것이며, 보가 많은 허용가능한 클라이언트 선택사양 신호가 발생될 것이다.
이제, 본 발명의 순서화 일관성 방안을 기술할 것이다. 전술한 바와 같이, 캐시 메모리를 구비한 각 클라이언트 모듈은 버스상에 각 일관성 트랜잭션이 발생된 후에 그의 캐시상에 일관성 검사를 수행할 필요가 있다. 따라서, 모듈은 일관성 트랜잭션에 대하여 버스를 감시한다. 버스상에 발생되는 일관성 트랜잭션은 그 모듈에 의해 발생되는 일관성 트랜잭션을 포함하는 그 모듈의 일관성 큐로 배치된다. 소정의 다른 모듈의 트랜잭션이 일관성 큐의 헤드(head)에 도달할 때, 모듈은 그 트랜잭션에 대하여 캐시 일관성 검사를 수행하고, 그다음, 그 트랜잭션에 대한 캐시 일관성 상태를 그의 COH 라인을 통하여 주 메모리 제어기로 보고한다. 모듈 자신의 트랜잭션이 일관성 큐의 헤드에 도달할 때, 모듈은 트랜잭션을 발생하는 동안 그의 캐시를 갱신하고, 데이타 반환이 여전히 보류(pending)중이라는 것을 알리기 위하여 라인을 표시한다. 또한, 모듈은 캐시 일관성 상태를 그의 COH 라인을 통하여 주 메모리 제어기로 보고하지만, 항상 검사가 완료되고 충돌이 발견되지 않았음들 나타내는 COH_OK(후술한 내용을 참조)를 신호로 보낸다.
주 메모리 제어기는 독립된 캐시 일관성 상태 보고를 수신하여, 후술하는 방식으로 일관성 트랜잭션 요청에 대한 완료된 캐시 일관성 상태를 판정한다.
각 캐시 라인의 상태는 "무효(Invalid)", "공유(Shared)", "전용-더티(Private-Dirty)" 혹은 "전용-클린(Private-Clean)"의 4가지 방식중의 하나로 정의된다. "공유" 라인은 동시에 하나 이상의 모듈의 캐시에 상주할 수 있는 라인이다. 정의에 의하여, 모든 공유 라인은 클린이다. 시스템에서는 항상 데이타 캐시에 라인의 단지 하나의 전용 사본만이 허용된다. "전용" 라인은 클린 혹은 더티일 수 있다.
보다 상세히 후술하는 바와 같이, 각 모듈은 다음의 신호를 사용하여 COH 라인을 통해 보고한다.
테이블 2
클라이언트가 능동적으로 일관성 상태를 보고하지 않을 때마다. 클라이언트는 그의 COH 버스상에 COH_NOP를 구동시킨다. 클라이언트가 일관성 상태 보고를 할 준비가 되어 있을 때, 그의 일관성 검사의 결과에 따라 하나의 버스 사이클동안 COH_SHARED, COH_COPYOUT 혹은 COH OK를 구동시킨다.
보고 모듈이 요청된 데이타 라인 전용-더티를 가지고 일관성 트랜잭션이 판독 혹은 플러시(flush) 트랜잭션이었던 경우, 보고 모듈은 버스를 통하여 후속 트랜잭션에서의 요청 모듈로 데이타를 제공할 것임을 명시하기 위하여 COH_COPYOUT을 구동시킨다. 모듈이 COH_COPYOUT 상태를 전송하는 경우, 모듈은 그 라인 아웃(line out)을 기록해야 한다.
보고 클라이언트(reporting client)가 요청된 라인의 공유 혹은 전용-더티 사본을 가지고, 라인의 사본을 유지할 예정인 경우, 보고하는 클라이언트는 요청 모듈이 공유로서 그의 사본을 표시해야 하다는 것을 명시하기 위하여, COH_SHARED을 구동시킬 것이다. 보고하는 모듈이 현재 전용-클린 사본을 가지는 경우, 공유인 사본을 표시할 것이다. 하나 이상의 클라이언트는 COH_SHARED 상태를 전송할 수 있다. 응답시에, 주 메모리 제어기가 데이타를 반환하기 위하여 버스를 중재할 때, 라인이 CLIENT_OP 버스상에서 SHARED_RTN 인코딩을 사용하여 공유로 표시되어야 함을 요청 모듈에게 통고할 것이다.
보고 클라이언트가 라인을 제공하지 않으며, 라인의 공유 사본을 유지하지 않는 경우, 클라이언트는 일관성 검사를 수행했으며, 보고할 것이 없다는 것을 나타내는 COH_OK를 구동시킬 것이다. 보고 모듈이 사본을 가지지 않는 경우, 혹은 일관성 트랜잭션의 결과로서 그의 사본 무효를 표시하려할 때, 혹은 보고 모듈이 일관성 트랜잭션을 발생했을 때, COH_OK가 발생된다.
주 메모리 제어기는 전술한 스코어보드를 사용하여 일관성 응답의 트랙을 유지한다. 각 모듈이 특정 트랜잭션에 대한 보고된 일관성 상태를 가질 때, 주 메모리 제어기는 신호를 분석하고, 가장 최근의 데이타가 요청 모듈로 전송되게 한다. 모듈이 라인의 전용-더티 사본을 가지지 않는 경우, 주 메모리 제어기는 데이타가 사용가능한 전용인지 혹은 공유인지의 여부에 대한 상태와, 데이타를 공급할 것이다. 그렇지 않으면, 전용-더티 데이타를 가지는 모듈이 캐시-캐시 사본 트렌잭션에서 데이타를 공급할 것이므로, 주 메모리는 이 트랜잭션에 대하여"잊어버릴(forget)" 수 있고, 여기서, 트랜잭션은 비일관성(noncoherent) 캐시 되기록 트랜잭션으로 주 메모리 제어기에 의해 처리되므로, 필요한 메모리 갱신을 수행한다.
하나 이상의 일관성 검사가 동시에 진행될 수 있다. 동시적인 검사의 수는 일관성 트랜잭션의 진행을 감시하는 CCC 트랜잭션 큐의 깊이(depth)에 의해 제한된다.
전술한 바와 같이, 일관성 트랜잭션은 발생되는 대로 검출되고, 선입선출 순서로 일관성 검사동안 각 모듈의 일관성 큐에 배치된다. 또한, 각 큐는 그 자신의 트랜잭션을 발생되는 대로 그 자신의 큐에 배치시키고, 큐의 헤드에 도달할 때까지 그 자신의 트랜잭션에 대한 일관성 검사의 수행을 대기한다. 따라서, 각 클라이언트는 일관성 트랜잭션이 버스상에 발생되었던 순서와 정확하게 동일한 순서로 각 일관성 트랜잭션에 대한 일관성 검사에 응답을 전송할 것이다.
주 메모리 제어기는 데이타의 공급을 야기시키기 전에, 모든 일관성 검사가 완료될 때까지(트랜잭션을 발생했던 모듈에 의한 검사를 포함) 대기한다. 따라서, 일관성 트랜잭션은 통상적으로 그들이 발생되는 순서와 동일한 순서로 완료될 것이다.
바람직한 실시예에서, 전용-더티 캐시 데이타의 비일관성 기록은 특변한 경우로서 처리되고, 이러한 기록은 캐시 되기록으로 불린다. 캐시 되기록에 부가적으로, 바람직한 실시예는 일관성 판독, 비일관성 판독, 일관성 기록 및 비캐시 비일관 기록(non-cache non-coherent writes)을 포함하는 트랜잭션 부류를 인식한다.바람직한 실시예는 캐시 되기록과 정규 비일관성 기록을 구별하기 위하여 특정 트랜잭션 인코딩을 사용한다. 또한, 전술한 캐시-캐시 사본 트랜잭션은 더티 캐시 데이타를 가지는 메모리를 갱신시에 부작용이 있을 때 캐시 되기록으로서 처리된다. 캐시 되기록외의 모든 트랜잭션은 버스(12)에 발생되었던 논리적 순서로 처리되어야 한다. 캐시 되기록은 시스템의 파이프라인 및 분할 트랜잭션 특성에 의해 지정된다, 예를 들면, 프로세서(20)는 소정 어드레스에 대한 판독을 발생할 수 있다. 그 다음에 즉시, 프로세서(22)는 동일한 어드레스로 캐시 되기록을 발생할 수 있지만, 프로세서(22)는 캐시 되기록을 발생한 후에만 프로세서(20)의 판독에 일관성 검사를 수행한다. 캐시 되기록이 다른 트랜잭션으로서 처리된다면, (프로세서(22)가 이미 버스로 기록되었으므로) 프로세서(22)는 프로세서(20)에 의해 요청되는 데이타의 사본을 가지지 않는다는 것을 표시하지만, 주 메모리 제어기(114)는 프로세서(22)의 기록전에 프로세서(20)의 판독이 있었음을 알 수 있고, 따라서, 먼저 판독을 실행하고 주 메모리 제어기로부터 진부한 데이타를 반환한다.
이것을 막기 위하여. 메모리 판독에 이어 동일한 어드레스로 캐시 되기록이 후속하는 이벤트(event)시에, 주 메모리 제어기(114)는 기록되는 데이타는 사실은 판독을 성취하기 위하여 반환되어야 하는 데이타라는 것을 가정한다. 따라서, 캐시 되기록은 판독에 앞서 효과적으로 재배열된다. 당업자라면, 입력/출력 DMA 기록에 관하여 캐시 되기록의 순서에 거의 동일한 논의가 적용된다는 것을 명백히 알 수 있을 것이다.
판독을 실행하고 요청된 데이타를 반환하는 시간은 시스템 성능에 직접 영향을 미치므로 최소로 유지되어야 한다. 이와 반대로, 기록은 중요하지 않다. 기록을 저장할 영역이 있는 한, 기록의 실행이 편리할 때까지 혹은 기록의 실행이 순서를 유지할 필요가 있을 때까지 보다 중요한 판독을 위하여 연기될 수 있다.
최대 성능(최소 판독 대기 시간)을 위하여, 주 메모리 제어기(14)는 이론적인 판독 실행을 수행한다. 주 메모리 제어기(14)가 버스(112)를 통하여 판독 요청을 수신할 때, 아직, 동일한 어드레스로의 후속 캐시 되기록이 있을 것인가 혹은 다른 캐시로부터의 캐시-캐시 사본에 의해 성취될 것인지를 알지 못한다. 사실은, 주 메모리 제어기(114)는 이미 큐잉된 동일한 어드레스로 기록을 가질 수 있지만, 검사할 시간을 가지지는 못한다. 이들 모두의 경우에 있어서, 판독은 가능한 신속하게 메모리로 전송된다. 주 메모리로부터의 데이타 판독이 잘못되었다고 판정되는 경우, 데이타는 버려지고, 필요하다면 메모리로부터 재판독된다.
판독과 캐시 되기록을 실행하기 위하여 전술한 절차의 구현은 전술한 바와 같은 주 메모리 제어기(114)에서 주 큐(대기 큐)(175), 2차 큐(준비 큐)(176) 및 판독 큐(정상 판독 큐)(174)를 포함하는 3개의 FIFO 메모리 큐에 의해 성취된다. 모든 판독은 판독 큐(174)에 들어간다. 판독 큐의 헤드에서의 트랜잭션은 가능한 신속하게 메모리로 발생된다. 비일관성 캐시 되기록외의 모든 트랜잭션은 주 큐(175)에 들어간다. 판독은 판독 큐(174)와 주 큐(175)의 모두에 들어간다는 사실에 주목해야 한다. 캐시 되기록은 직접 2차 큐(176)로 들어감으로써, 주 큐에서의 다른 판독 및 되기록을 무시하도록 한다. 상세히 후술하는 바와 같이, 이것은, 다른 트랜잭션후에 캐시 기록이 버스(112)상에 발생될 수 있을 지라도, 판독 및 DMA기록에 앞서 효과적으로 캐시 되기록이 순서화되도록 한다.
데이타가 사용가능하고 요구되는 일관성 검사가 완료되었으며, 또한 데이타가 정확하다고 가정시에, 주 큐(175)의 헤드에서의 트랜잭션이 판독인 경우, 대응하는 데이타가 버스(112)를 통하여 반환된다. 기록이 정확한 데이타를 포함했던 기록에 앞서 판독이 실행되었을 경우, 데이타는 잘못될 수 있다.
진부한 데이타(stale data)에 대한 검사는 다음과 같다. 기록이 매모리로 발생될 때마다, 그의 어드레스는 주 큐에 제공된 모든 판독의 어드레스에 비하여 비교된다. 이들이 매칭(matching)된다면, (판독은 이전에 메모리로 발생될 수 있으므로) 진부한 데이타를 수신할 수 있다는 것을 표시하는 그 판독에 대하여 플래그(flag)가 설정된다. 또한, 판독이 주 큐의 헤드에 있고, 버스(112)를 통하여 데이타를 반환할 준비가 될 때마다, 그의 어드레스는 2차 큐에서의 모든 기록의 어드레스와 비교된다. 이들이 매칭된다면, 판독은 수신된 진부한 데이타를 가지는 것으로 추정된다. 이들 어느 경우든지, 판독은 메모리로 재발생되어야 한다. 이러한 재발생은 2차 큐로 판독을 복사하고, 그다음, 2차 큐의 모든 트랜잭션을 (순서대로) 메모리로 발생시킴으로써 성취된다. 이러한 판독의 재발생이 완료되기까지, 판독에 앞서 논리적으로 배열되어야 하는 모든 기록은 이미 메모리로 발생되었을 것이므로, 판독동안 정호가한 데이타가 수신될 것이다.
주 큐의 헤드에서의 트랜잭션이 기록(일관성 기록 혹은 비일관성 기록)인 경우, (다시 요구되는 일관성 검사가 완료된다고 가정시에) 주 큐로부터 2차 큐로 전송된다. 결국, 기록이 2차 큐의 헤드에 도달한 후에 소정 시간에 메모리로 발생될것이다. 이것은 다른 기록에 관련된 비일관성 캐시 되기록의 순서화를 보장한다.
당업자라면, 전술한 설명 및 첨부 도면으로부터 본 발명의 각종 변형을 명백히 알 수 있을 것이다. 따라서, 본 발명은 단지 다음의 특허 청구 범위의 범주에 의해서만 제한된다.
제 1 도는 본 발명에 따라 강하게 순서화된 일관성 방안을 사용하는 컴퓨터 시스템의 하나의 실시예를 도시한 블럭도,
제 2 도는 본 발명에 따라 강하게 순서화된 일관성 방안을 사용하는 컴퓨터 시스템의 구성요소를 도시하는 블럭도.
도면의 주요 부분에 대한 부호의 설명
10, 100 : 컴퓨터 시스템 14, 114 : 주 메모리 제어기
16, 18, 116 : I/O 모듈 20, 22, 24, 26 : 프로세서 모듈
112 : 버스 120 : 프로세서
162, 164, 168, 174, 175, 176 : 큐
160 : I/O 버스
166, 170 : 캐시 메모리
178 : 스코어보드

Claims (4)

  1. 데이터 처리시스템에 있어서,
    처리 모듈(processing modules)에 의해 수행될 트랜잭션(transactions)을 명시하는 정보를 전송 및 수신하기 위한 버스(bus)로서, 상기 처리 모듈이 연결되는 상기 버스와,
    상기 버스에 연결되어, 상기 버스 상에서 전송되는 트랜잭션을 제공하기 위한 메모리 제어기- 상기 트랜잭션은 상기 버스 상에서 한번에 하나가 발생됨으로써 상기 트랜잭션에 대한 순서를 정의하고, 상기 메모리 제어기에 연결된 중앙 메모리에 정상 저장된 데이타가 상기 버스 상에 위치되도록 함으로써 상기 메모리 제어기가 상기 트랜잭션을 제공하기 전에 일관성 검사를 요구하는 트랜잭션을 포함하며, 상기 데이타는 상기 데이타가 저장되는 상기 중앙 메모리 내의 위치를 명시하는 메모리 어드레스에 의해 식별됨- 와,
    상기 버스에 연결된 다수의 처리 모듈- 상기 처리 모듈 각각은 일관성 검사수단을 포함하여 상기 처리 모듈과 관련된 메모리에 저장된 데이타에 대해 일관성검사를 수행하고, 상기 일관성 검사로부터의 결과를 상기 메모리 제어기에 보고(report)하며, 상기 일관성 검사 각각은 상기 버스 상에 발생된 트랜잭션에 대응하고, 상기 일관성 검사는 상기 트랜잭션이 상기 버스 상에 발생되었던 순서대로 수행되며, 상기 메모리 제어기는 상기 일관성 검사 수단 각각이 일관성 검사를 요구하는 상기 트랜잭션 중 하나를 제공하기 전에 보고할 때까지 대기함- 을 포함하는 데이타 처리 시스템.
  2. 제 1 항에 있어서,
    상기 처리 모듈 각각은, 상기 처리 모듈에 포함된 상기 일관성 검사 수단에 의해 수행될 일관성 검사를 명시하는 정보를 저장하기 위한 큐를 포함하는 데이타 처리 시스템.
  3. 제 1 항에 있어서,
    상기 처리 모듈 각각은, 일관성 검사를 요구하는 상기 버스 상의 트랜잭션을 검출하고, 일관성 검사를 요구하는 상기 트랜잭션 중 하나의 검출에 응답하여 일관성 검사를 시작하는 수단을 포함하는 데이타 처리 시스템.
  4. 제 1 항에 있어서,
    상기 주 메모리 제어기에 의해 제공된 상기 트랜잭션은 상기 중앙 메모리 내의 명시된 메모리 어드레스로부터 데이타를 요청하는 판독 트랜잭션과, 상기 상기중앙 메모리 내의 상기 명시된 메모리 어드레스로 데이타를 전송하는 기록 트랜잭션을 포함하고, 상기 주 메모리 제어기는 상기 판독 트랜잭션 전에 상기 기록 트랜잭션이 수행되도록 하는 수단을 포함하는 데이타 처리 시스템.
KR1019950003487A 1994-02-24 1995-02-23 데이타처리시스템 KR100371845B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/201,463 1994-02-24
US8/201,463 1994-02-24
US08/201,463 US5530933A (en) 1994-02-24 1994-02-24 Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus

Publications (2)

Publication Number Publication Date
KR950033893A KR950033893A (ko) 1995-12-26
KR100371845B1 true KR100371845B1 (ko) 2003-04-03

Family

ID=22745920

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950003487A KR100371845B1 (ko) 1994-02-24 1995-02-23 데이타처리시스템

Country Status (6)

Country Link
US (1) US5530933A (ko)
EP (1) EP0669578B1 (ko)
JP (1) JP3640997B2 (ko)
KR (1) KR100371845B1 (ko)
DE (1) DE69423874T2 (ko)
TW (1) TW260770B (ko)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504874A (en) * 1993-09-29 1996-04-02 Silicon Graphics, Inc. System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions
US5813028A (en) * 1993-10-12 1998-09-22 Texas Instruments Incorporated Cache read miss request invalidation prevention method
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US5657472A (en) * 1995-03-31 1997-08-12 Sun Microsystems, Inc. Memory transaction execution system and method for multiprocessor system having independent parallel transaction queues associated with each processor
US5787476A (en) 1995-05-05 1998-07-28 Silicon Graphics, Inc. System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US6108735A (en) * 1995-09-29 2000-08-22 Intel Corporation Method and apparatus for responding to unclaimed bus transactions
US5659710A (en) * 1995-11-29 1997-08-19 International Business Machines Corporation Cache coherency method and system employing serially encoded snoop responses
US5701422A (en) * 1995-12-13 1997-12-23 Ncr Corporation Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses
US5673413A (en) * 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
US5829035A (en) * 1995-12-22 1998-10-27 Apple Computer, Inc. System and method for preventing stale data in multiple processor computer systems
US5717900A (en) * 1996-01-26 1998-02-10 Unisys Corporation Adjusting priority cache access operations with multiple level priority states between a central processor and an invalidation queue
US5765196A (en) * 1996-02-27 1998-06-09 Sun Microsystems, Inc. System and method for servicing copyback requests in a multiprocessor system with a shared memory
EP0832459B1 (en) * 1996-03-15 2005-06-29 Sun Microsystems, Inc. Split transaction snooping bus and method of arbitration
US5960179A (en) * 1996-07-01 1999-09-28 Sun Microsystems, Inc. Method and apparatus extending coherence domain beyond a computer system bus
US5790822A (en) * 1996-03-21 1998-08-04 Intel Corporation Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
US6055590A (en) * 1996-06-05 2000-04-25 Compaq Computer Corporation Bridge circuit comprising independent transaction buffers with control logic adapted to store overflow data in second buffer when transaction size exceeds the first buffer size
US6035362A (en) * 1996-06-05 2000-03-07 Goodrum; Alan L. Storing data associated with one request while continuing to store data associated with a previous request from the same device
US5903906A (en) * 1996-06-05 1999-05-11 Compaq Computer Corporation Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written
US5872939A (en) * 1996-06-05 1999-02-16 Compaq Computer Corporation Bus arbitration
US6108741A (en) * 1996-06-05 2000-08-22 Maclaren; John M. Ordering transactions
US5872941A (en) * 1996-06-05 1999-02-16 Compaq Computer Corp. Providing data from a bridge to a requesting device while the bridge is receiving the data
US6021480A (en) * 1996-06-05 2000-02-01 Compaq Computer Corporation Aligning a memory read request with a cache line boundary when the request is for data beginning at a location in the middle of the cache line
US6052513A (en) * 1996-06-05 2000-04-18 Compaq Computer Corporation Multi-threaded bus master
US6075929A (en) * 1996-06-05 2000-06-13 Compaq Computer Corporation Prefetching data in response to a read transaction for which the requesting device relinquishes control of the data bus while awaiting data requested in the transaction
US5987539A (en) * 1996-06-05 1999-11-16 Compaq Computer Corporation Method and apparatus for flushing a bridge device read buffer
US5796605A (en) * 1996-07-02 1998-08-18 Sun Microsystems, Inc. Extended symmetrical multiprocessor address mapping
US5805839A (en) * 1996-07-02 1998-09-08 Advanced Micro Devices, Inc. Efficient technique for implementing broadcasts on a system of hierarchical buses
US5963978A (en) * 1996-10-07 1999-10-05 International Business Machines Corporation High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators
JP3210590B2 (ja) 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
US5802355A (en) * 1996-12-10 1998-09-01 International Business Machines Corporation Multi-processor system using processors of different speeds
US5926840A (en) * 1996-12-18 1999-07-20 Unisys Corporation Out-of-order fetching
US5764932A (en) * 1996-12-23 1998-06-09 Intel Corporation Method and apparatus for implementing a dual processing protocol between processors
US6138192A (en) * 1996-12-31 2000-10-24 Compaq Computer Corporation Delivering a request to write or read data before delivering an earlier write request
FR2759178B1 (fr) * 1997-02-05 1999-04-09 Sgs Thomson Microelectronics Circuit de gestion de memoire dans un environnement multi-utilisateurs avec requete et priorite d'acces
US6055608A (en) * 1997-04-14 2000-04-25 International Business Machines Corporation Method and system for speculatively sourcing cache memory data within a multiprocessor data-processing system
US5944805A (en) * 1997-08-21 1999-08-31 Advanced Micro Devices, Inc. System and method for transmitting data upon an address portion of a computer system bus during periods of maximum utilization of a data portion of the bus
US6154816A (en) * 1997-10-24 2000-11-28 Compaq Computer Corp. Low occupancy protocol for managing concurrent transactions with dependencies
US6085294A (en) * 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
US6122714A (en) * 1997-10-24 2000-09-19 Compaq Computer Corp. Order supporting mechanisms for use in a switch-based multi-processor system
US6108752A (en) * 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
US6003106A (en) * 1998-05-27 1999-12-14 International Business Machines Corporation DMA cache control logic
US6085293A (en) * 1998-08-17 2000-07-04 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
KR100582782B1 (ko) * 1998-08-28 2006-08-23 엘지엔시스(주) 캐쉬 일관성 유지 방법
US6546429B1 (en) * 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6067603A (en) * 1998-10-01 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6167492A (en) 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
US6636939B1 (en) * 2000-06-29 2003-10-21 Intel Corporation Method and apparatus for processor bypass path to system memory
US6647466B2 (en) 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US7015921B1 (en) * 2001-12-31 2006-03-21 Apple Computer, Inc. Method and apparatus for memory access
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US8055492B2 (en) * 2002-01-10 2011-11-08 International Business Machines Corporation Non-unique results in design verification by test programs
JP3791433B2 (ja) * 2002-02-27 2006-06-28 日本電気株式会社 システム、制御処理装置、およびシステム制御方法
US7103728B2 (en) * 2002-07-23 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for memory migration in distributed-memory multi-processor systems
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
US7051163B2 (en) * 2002-10-03 2006-05-23 Hewlett-Packard Development Company, L.P. Directory structure permitting efficient write-backs in a shared memory computer system
US6895476B2 (en) * 2002-10-03 2005-05-17 Hewlett-Packard Development Company, L.P. Retry-based late race resolution mechanism for a computer system
US6892290B2 (en) * 2002-10-03 2005-05-10 Hewlett-Packard Development Company, L.P. Linked-list early race resolution mechanism
US7024520B2 (en) * 2002-10-03 2006-04-04 Hewlett-Packard Development Company, L.P. System and method enabling efficient cache line reuse in a computer system
US6898676B2 (en) * 2002-10-03 2005-05-24 Hewlett-Packard Development Company, L.P. Computer system supporting both dirty-shared and non-dirty-shared data processing entities
US7003635B2 (en) * 2002-10-03 2006-02-21 Hewlett-Packard Development Company, L.P. Generalized active inheritance consistency mechanism having linked writes
US7000080B2 (en) * 2002-10-03 2006-02-14 Hewlett-Packard Development Company, L.P. Channel-based late race resolution mechanism for a computer system
US6990559B2 (en) * 2002-10-03 2006-01-24 Hewlett-Packard Development Company, L.P. Mechanism for resolving ambiguous invalidates in a computer system
EP1426866A1 (en) * 2002-12-06 2004-06-09 Sun Microsystems, Inc. A method to reduce memory latencies by performing two levels of speculation
WO2004107180A1 (ja) * 2003-05-30 2004-12-09 Fujitsu Limited マルチプロセッサシステム
US7503048B1 (en) 2003-08-18 2009-03-10 Cray Incorporated Scheduling synchronization of programs running as streams on multiple processors
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7735088B1 (en) 2003-08-18 2010-06-08 Cray Inc. Scheduling synchronization of programs running as streams on multiple processors
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
US7366873B1 (en) 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7519771B1 (en) 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US7437521B1 (en) 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
JP2005128963A (ja) * 2003-10-27 2005-05-19 Toshiba Information Systems (Japan) Corp 記憶制御装置及びdma転送が可能な制御システム
US7478769B1 (en) 2005-03-09 2009-01-20 Cray Inc. Method and apparatus for cooling electronic components
US20070186052A1 (en) * 2006-02-07 2007-08-09 International Business Machines Corporation Methods and apparatus for reducing command processing latency while maintaining coherence
US7512723B2 (en) * 2006-12-29 2009-03-31 Freescale Semiconductor, Inc. Queued interface devices, multi-core peripheral systems, and methods for sharing a peripheral in a multi-core system
JP5100176B2 (ja) 2007-03-29 2012-12-19 株式会社東芝 マルチプロセッサシステム
US8131941B2 (en) * 2007-09-21 2012-03-06 Mips Technologies, Inc. Support for multiple coherence domains
US20090089510A1 (en) * 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US9513959B2 (en) * 2007-11-21 2016-12-06 Arm Limited Contention management for a hardware transactional memory
US8392663B2 (en) * 2007-12-12 2013-03-05 Mips Technologies, Inc. Coherent instruction cache utilizing cache-op execution resources
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
US8429353B2 (en) * 2008-05-20 2013-04-23 Oracle America, Inc. Distributed home-node hub
US8108584B2 (en) 2008-10-15 2012-01-31 Intel Corporation Use of completer knowledge of memory region ordering requirements to modify transaction attributes
WO2013095475A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction
US9196347B2 (en) 2013-03-14 2015-11-24 International Business Machines Corporation DRAM controller for variable refresh operation timing
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10303603B2 (en) * 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
KR20210123555A (ko) * 2020-04-03 2021-10-14 에스케이하이닉스 주식회사 메모리 시스템
US20230032137A1 (en) * 2021-08-02 2023-02-02 Red Hat, Inc. Efficient dirty page expiration
CN116527555B (zh) * 2023-06-20 2023-09-12 中国标准化研究院 一种跨平台数据互通一致性测试方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4473880A (en) * 1982-01-26 1984-09-25 Intel Corporation Arbitration means for controlling access to a bus shared by a number of modules
US4768148A (en) * 1986-06-27 1988-08-30 Honeywell Bull Inc. Read in process memory apparatus
DE68924306T2 (de) * 1988-06-27 1996-05-09 Digital Equipment Corp Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
EP0388574B1 (en) * 1989-03-23 1994-06-15 International Business Machines Corporation Method and apparatus for distributed queue multiple access in a communication system
US5345578A (en) * 1989-06-30 1994-09-06 Digital Equipment Corporation Competitive snoopy caching for large-scale multiprocessors
CA2051209C (en) * 1990-11-30 1996-05-07 Pradeep S. Sindhu Consistency protocols for shared memory multiprocessors
US5406504A (en) * 1993-06-30 1995-04-11 Digital Equipment Multiprocessor cache examiner and coherency checker

Also Published As

Publication number Publication date
JPH07281956A (ja) 1995-10-27
DE69423874D1 (de) 2000-05-11
US5530933A (en) 1996-06-25
DE69423874T2 (de) 2000-11-16
EP0669578A3 (en) 1995-11-15
EP0669578B1 (en) 2000-04-05
JP3640997B2 (ja) 2005-04-20
EP0669578A2 (en) 1995-08-30
TW260770B (ko) 1995-10-21
KR950033893A (ko) 1995-12-26

Similar Documents

Publication Publication Date Title
KR100371845B1 (ko) 데이타처리시스템
KR100371844B1 (ko) 데이타처리시스템
KR100360064B1 (ko) 고도로파이프라인된버스구조
US5353415A (en) Method and apparatus for concurrency of bus operations
US5787486A (en) Bus protocol for locked cycle cache hit
US5572702A (en) Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency
JP3787155B2 (ja) ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル
US5463753A (en) Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
EP0681240B1 (en) Duplicate cache tag memory system
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
US6018792A (en) Apparatus for performing a low latency memory read with concurrent snoop
US5732244A (en) Multiprocessor with split transaction bus architecture for sending retry direction to other bus module upon a match of subsequent address bus cycles to content of cache tag
US5659709A (en) Write-back and snoop write-back buffer to prevent deadlock and to enhance performance in an in-order protocol multiprocessing bus
WO1994008297A9 (en) Method and apparatus for concurrency of bus operations
KR980010805A (ko) 범용 컴퓨터 구조용 프로세서 서브시스템
KR20010050269A (ko) 멀티프로세서 시스템에서 캐쉬 코히어런시 유지 방법
US5519838A (en) Fast pipelined distributed arbitration scheme
KR100310399B1 (ko) 프로세서 인터페이스 버스를 통해 데이터를 전달하기 위한 방법 및 장치
US5933612A (en) Deadlock avoidance in a split-bus computer system
US5991855A (en) Low latency memory read with concurrent pipe lined snoops
US5586274A (en) Atomic operation control scheme
US6601145B2 (en) Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls
US6021474A (en) Apparatus and method of snooping processors and look-aside caches
KR0130737B1 (ko) 데이터 처리 장치에서 메모리로부터 다중 프로세서로의 데이터 전송 효율을 향상시키기 위한 방법 및 장치
JP2003030131A (ja) 分割トランザクション・スヌーピング・バスおよび調停方法

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20080128

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee