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

데이타처리시스템 Download PDF

Info

Publication number
KR100371844B1
KR100371844B1 KR1019950003485A KR19950003485A KR100371844B1 KR 100371844 B1 KR100371844 B1 KR 100371844B1 KR 1019950003485 A KR1019950003485 A KR 1019950003485A KR 19950003485 A KR19950003485 A KR 19950003485A KR 100371844 B1 KR100371844 B1 KR 100371844B1
Authority
KR
South Korea
Prior art keywords
module
bus
transaction
queue
main memory
Prior art date
Application number
KR1019950003485A
Other languages
English (en)
Other versions
KR950033892A (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 KR950033892A publication Critical patent/KR950033892A/ko
Application granted granted Critical
Publication of KR100371844B1 publication Critical patent/KR100371844B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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

Abstract

공유 버스 시스템은 하나의 버스와 이 버스에 연결된 클라이언트 모듈 세트를 구비한다. 각 클라이언트 모듈은 트랜잭션을 버스를 통하여 다른 클라이언트 모듈로 전송하고, 처리를 위하여 다른 클라이언트 모듈로부터 버스를 통해 트랜잭션을 수신할 수 있다. 각 모듈은 처리를 위하여 모듈이 수신한 트랜잭션을 저장하기 위한 큐를 가진다. 버스 제어기는 모듈의 큐가 오버플로우되지 않도록 버스를 통해 전송될 수 있는 트랜잭션 유형을 제한한다.

Description

데이타 처리 시스템{QUEUE-BASED PREDICTIVE FLOW CONTROL MECHANISM}
본 발명은 공유 버스(shared bus)를 구비한 컴퓨터 시스템에 관한 것으로,특히 공유 버스에 발생되는 트랜잭션(transactions)의 제어에 관한 것이다.
컴퓨터 시스템은 통상적으로 프로세서, 메모리 및 입력/출력 장치와 같은 다수의 구성요소와, 그리고, 두가지 혹은 그 이상의 구성요소 간에 정보를 전송하기위한 공유 버스를 구비한다. 전형적으로, 구성요소는, 각각이 하나 혹은 그 이상의 프로세서, 메모리 및/혹은 입력/출력 장치를 포함할 수 있는 구성요소 모듈(component modules)의 형태로 버스에 연결된다. 정보는 버스 사이클(bus cycle) 동안 구성요소 모듈간에 버스를 통하여 전송되고, 각 버스 사이클은 선택한 모듈이 버스를 통한 제한된 정보량을 전송 혹은 구동(drive)할 수 있는 시간주기이다. 모듈은 통상적으로 트랜잭션을 버스를 통하여 다른 모듈로 전송하여, 데이타의 판독 및 기록과 같은 동작을 수행한다.
컴퓨터 시스템의 하나의 부류는 시스템상에서 실행되는 두개 혹은 그 이상의 주 프로세서 모듈 (혹은 하나 혹은 그 이상의 모듈 및 하나 혹은 그 이상의 일관성 입/출력 모듈(coherent input/output modules))과, 모든 프로세서 및 일관성 입/출력 모듈에 의해 사용되는 공유 주 메모리(shared main memory)를 가진다. 주 메모리는 통상적으로 주 메모리 제어기를 통하여 버스에 연결된다. 다수의 경우에, 하나 혹은 그 이상의 프로세서는 또한, 캐시 메모리(cache memory)를 구비하여 신속한 액세스(access)를 위하여 최근에 사용된 데이타값을 저장한다.
통상적으로, 데이타 항목이 주 메모리에 저장될 때에, 캐시 메모리는 빈번히 사용되는 데이타 및 어드레스(address)를 저장한다. 프로세서(processor)가 메모리의 어드레스로부터 데이타를 탐색할 때, 데이타와 관련된 어드레스를 사용하여 캐시 메모리로부터 데이타를 요청한다. 캐시 메모리는 그 어드레스와 관련된 데이타를 보유하는 지를 알기 위하여 검사(check)한다. 보유하는 경우, 캐시 메모리는 직접, 요청된 데이타를 프로세서로 반환한다. 캐시 메모리가 원하는 정보를 포함하지 않는 경우에는(즉, "캐시 부재(cache miss)"가 발생될 때), 캐시는 주 메모리로부터 데이타를 요청하고, 데이타를 기다리는 동안 프로세서를 멈춘다. 캐시 메모리는 주 RAM 메모리보다 신속하므로, 이러한 전략은 개선된 시스템 성능을 제공한다.
프로세서의 각각이 캐시 메모리를 구비하는 공유 메모리 멀티-프로세서 컴퓨터(shared memory multi-processor computer)의 경우에 있어서 상황은 다소 복잡해진다. 이러한 컴퓨터에서, 가장 최근의 데이타가 하나 혹은 그 이상의 캐시 메모리 혹은 주 메모리에 저장될 수 있다. 프로세서상에서 실행되는 소프트웨어(software)는 측정 어드레스와 관련된 데이타의 가장 최근의 값을 사용해야만 한다. 따라서, "캐시 일관성 방안(cache coherency scheme)"은 특정 어드레스에 대한 데이타의 모든 사본(copy)이 동일함을 보장할 수 있도록 구현되어야 한다.
전형적인 라이트백(write-back) 일관성 방안에 있어서, 모듈이 데이타를 요청할 때, 캐시 메모리를 구비한 각 모듈은 그의 캐시 메모리의 "일관성 검사(coherency check)"를 수행하여, 요청된 어드레스와 관련된 데이타를 가지는 지의 여부를 판정하고, 그의 일관성 검사의 결과를 보고한다(report). 또한, 각 모듈은 통상적으로 주 메모리 및 다른 캐시 메모리에 저장된 동일한 어드레스와 관련된 데이타에 관하여, 그의 캐시 메모리에 저장된 데이타의 상태(status)를 보고한다. 예를 들면, 모듈은 그의 데이타가 "전용(private)"(즉, 데이타값이 단지 이 모듈에서만 사용가능한 경우)인지 혹은 데이타가 "공유"(즉, 데이타가 동시에 하나 혹은 그 이상의 캐시 메모리에 상주할 수 있는 경우)인지를 보고할 수 있다. 또한, 모듈은 그의 데이타가 "클린(clean)"(즉, 주 메모리에 저장된 동일한 어드레스와 관련된 데이타가 동일한 경우)인지 혹은 "더티(dirty)"(즉, 데이타가 획득된 후 변경된 경우)인지를 보고할 수 있다.
각 모듈이 수행한 일관성 검사의 결과는 선택된 프로세서에 의해 분석되며, 가장 최근의 데이타가 데이타를 요청했던 모듈로 제공된다. "일관성 트랜잭션(coherent trsnsaction)"은 메모리 어드레스와 관련된 데이타가 다른 캐시에 저장되었는지의 여부를 알기 위하여, 그리고, 현재 데이타임을 증명하기 위하여, 다른 캐시에 관한 검사를 요청하는 트랜잭션이다. 메모리로부터/로의 대부분의 판독 및 다소의 기록은 일관성 트랜잭션이다. 당업자라면, 종래의 판독 전용과 같은 다수 유형의 일관성 트랜잭션과, 종래의 라이트백과 같은 비일관성 트랜잭션(non-coherent transactions)을 알고 있을 것이다.
종래의 일관성 방안에 있어서, 일관성 검사의 결과를 보고할시에 모듈과, 어떻게 메모리 요청을 만족시킬 것인가에 대한 마지막 판정을 행하는 일관성 프로세서 간에 상당한 통신량이 요구된다. 요구되는 일관성 검사는 캐시 메모리를 가지는 각 모듈에 통지되어야 하며. 각 모듈은 그의 일관성 검사 결과를 일관성 프로세서로 보고해야 한다. 통신량이 감소되더라도, 종래의 일관성 검사의 처리 및 그 결과를 보고하는 수단은 종종 저속이다. 일관성 검사는 모듈간 통신(inter-module communications)동안 모듈에 의해 사용되는 공유 버스의 효과적인대역폭(bandwidth)을 감소시키지 않는 방식으로 수행되어야 한다.
메모리 대기시간 지연(memory latency delays)의 여파를 줄이기 위하여, 다수의 종래 버스는 분할 트랜잭션(split transaction) 버스이다. 즉, 트랜잭션은 버스상에 배치된 후에 즉시 처리될 필요가 없다. 예를 들면, 버스상에 메모리 판독 트랜잭션이 발생된 후에, 판독을 발생시킨 모듈은 버스를 포기함으로써, 다른트랜잭션이 버스를 사용할 수 있도록 허용한다. 요청된 데이타가 사용가능할때, 판독에 응답하는 모듈은 버스를 제어하여, 데이타를 전송한다. 공유 버스시스템에서 모듈은 종종, 응답 모듈이 제공할 수 있는 것보다 더 신속하게, 혹은, 다른 모듈이 일관성 검사를 수행할 수 있는 것보다 더 신속하게 트랜잭션을 개시할 수 있다. 예를 들면, 입력/출력 장치는 종종 마이크로프로세서보다 저속으로 동작하므로, 입력/출력 장치를 버스와 연결시키는 모듈은 저속으로 응답할 수도 있다. 유사하게, 주 메모리의 액세스는 비교적 저속이므로, 프로세서 모듈은 주 메모리로부터 판독할 수 있는 것보다 더 신속하게 데이타를 요청할 수 있다. 또한, 모듈의 일관성 검사 프로세서는 다른 동작으로 사용중일 수 있으므로, 캐시 일관성 검사는 저속일 수 있다. 따라서, 종종, 트랜잭션을 적절히 처리하거나 혹은 일관성 검사를 수행하기 위하여, 극히 짧은 시간에 과도한 양의 트랜잭션을 개시할 때, 모듈에 의한 새로운 트랜잭션의 개시를 감속시키거나, 혹은, 트랜잭션의 오버플로우(overflow)를 처리할 필요가 있다.
트랜잭션 오버플로우를 처리하는 전형적인 종래기법은, 소정 유형의 과도한 양의 트랜잭션이 너무 급하게 개시되는 상황을 처리하기 위하여 "사용-중지" 메카니즘("busy-abort" mechanism)을 사용한다. 트랜잭션에 대한 응답 모듈이 즉시 응답할 수 없는 새로운 트랜잭션 요청을 발견할 때, 응답 모듈은 그 때(예를 들면, 입력/출력 모듈이 점유되거나, 혹은 캐시 메모리를 구비한 프로세서 모듈이 충분히 신속하게 일관성 검사를 수행할 수 없는 경우) 트랜잭션을 제공할 수 없음을 나타내는 "사용-중지" 신호를 다시 전송한다. 그 다음, 요청 모듈은 그의 요청을 중지하고, 차후에 다시 시도한다. 이러한 해결 방안에 있어서, 요청 모듈은 "사용-중지" 응답을 수신할 모든 가능성이 소멸될 때까지 트랜잭션 정보를 유지해야 하므로, 설계상의 복잡도는 더욱 증가된다. 또한, 두개의 트랜잭션을 특정 순서로 실행해야 하는 경우, 두번째 트랜잭션은 통상적으로, "사용-중지' 응답을 수신할 모든 가능성이 소멸될 때까지 발생될 수 없다. 마지막으로, 중지된 트랜잭션 결과는 처리의 지연을 발생시키며, 버스 시간을 소비한다.
또다른 해결 방안은, 응답 모듈이 트랜잭션을 처리할 수 있는지의 여부를 확인하기 위하여, 각 트랜잭션후에 모듈들간에 핸드세이킹(handshaking)을 요구하는 것이다. 또한, 이러한 해결 방안은 처리를 지연시키고, 불필요한 설계의 복잡도를 증가시킨다.
따라서, 즉시 처리할 때마다 불필요한 처리 지연이나 시스템 설계의 복잡도가 더욱 부가되는 컴퓨터 시스템에서 다수의 트랜잭션을 처리하는 수단이 필요하다.
따라서, 본 발명의 목적은 즉시 모두를 처리할 때마다 불필요한 지연이 부가되는 다수의 트랜잭션을 처리하는 컴퓨터 시스템에 흐름 제어 메카니즘(flowcontrol mechanism)을 제공하는데 있다.
본 발명의 다른 목적은 핸드세이킹 혹은 사용/중지 신호(busy/abort signals)를 사용할 필요가 없는 컴퓨터 시스템에 흐름 제어 메카니즘을 제공하는데 있다.
본 발명의 또다른 목적은 즉시 모두를 처리할 때마다 시스템상에 불필요한 설계 복잡도가 부가되는 다수의 트랜잭션을 처리하는 컴퓨터 시스템에 흐름 제어 메카니즘을 제공하는 데 있다.
당업자라면, 다음의 본 발명의 상세한 설명 및 바람직한 실시예, 첨부 도면, 그리고, 특허 청구 범위로부터 본 발명의 상기 및 기타 다른 목적들을 명백히 알수 있을 것이다.
광범위하게 말하면, 본 발명은 버스와, 버스에 연결된 다수의 클라이언트 모듈(client modules)을 가지는 공유 버스 시스템에 관한 것이다. 각 클라이언트 모듈은 버스를 통하여 다른 클라이언트 모듈로 트랜잭션을 전송하고 다른 클라이언트 모듈로부터 버스를 통하여 트랜잭션을 수신할 수 있다. 각 모듈은 또한, 큐(queue)를 구비하여, 처리를 위하여 수신한 트랜잭션을 명시하는 정보를 저장한다. 또한, 버스 시스템은 버스를 통해 전송되는 트랜잭션 유형을 제한하는 수단을 가지는 제어기를 구비한다. 하나의 모듈에서의 큐가 사전결정된 자유 공간량(predetermined amount of free space)보다 작은 공간을 가질 때, 버스 제어기는 버스를 통하여 전송될 수 있는 트랜잭션을 제한하여, 그 큐에서 공간을 펼요로하는 트랜잭션이 발생되지 못하도록 만든다.
각 클라이언트 모듈은 바람직하게, 캐시 메모리와, 버스를 통하여 전송되는 일관성 트랜잭션을 검출하고, 트랜잭션에 대하여 그의 캐시 메모리의 일관성 검사를 수행하는 수단과, 그리고, 일관성 검사의 결과를 보고하는 일관성 버스를 구비한다.
각 클라이언트 모듈은 바람직하게, 일관성 트랜잭션에 대하여 일관성 검사가 수행될 때까지 버스상에서 검출되는 일관성 트랜잭션을 저장하는 일관성 큐를 가진다. 큐는 트랜잭션을 중지할 필요없이 전형적인 트랜잭션 발생을 수용하기에 충분할 정도로 크다.
또한, 공유 버스 시스템은 바람직하게, 버스에 연결된 주 메모리 제어기를 가진다. 주 메모리 제어기는 일관성 라인(coherency lines)의 각각에 연결되어, 클라이언트 모듈이 보고하는 일관성 검사의 결과를 수신한다. 주 메모리 제어기는 클라이언트 선택사양 라인(client option line)을 구비하여, 클라이언트 선택사양 신호를 각각의 클라이언트 모듈로 전송하여, 각 사이클동안 버스를 통해 전송할수 있는 트랜잭션 유형을 알려준다. 주 메모리는 각 일관성 큐에 저장되어진 일관성 트랜잭션의 수를 추적하며(track), 클라이언트 선택사양 신호를 전송하여 트랜잭션이 하나의 일관성 큐의 오버플로우를 발생시키는 버스를 통해 전송되지 못하도록 만든다.
본 발명은, 트랜잭션을 처리할 수 없을 때 공유 버스 시스템의 구성요소 모듈이 트랜잭션을 발생하지 못하도록 하는 예언적 흐름 제어 메카니즘(predictive flow control mechanism)을 포함한다. 따라서, 본 발명은 트랜잭션이 발생된 후에이러한 트랜잭션을 중지할 필요가 없다. 이것은, 소정 사이클동안 버스상에 허용되어진 트랜잭션의 유형을 표시하는 신호를 각 모듈로 전송하고, 처리할 수 없는 트랜잭션을 허용하지 않음으로써 성취된다.
이들 결과를 성취하기 위하여, 본 발명은 먼저, 버스를 통한 메모리 시스템과 개별 모듈간에 요구되는 통신량을 감소시키는 방식으로 캐시 일관성 검사의 로드를 분산시킨다(distribute). 일관성 검사에 관여해야 하는 버스상의 각 처리 모듈은 버스를 감시하고(즉, 버스상에서 세세히 캐내거나(snoop) 혹은 도청하고(eavesdrop)), 모듈의 일관성 검사를 요구하는 일관성 트랜잭션 요청을 검출하는 회로를 포함한다. 따라서, 중앙 메모리 프로세서는 캐시 일관성 검사 요청을 각종 모듈로 전송하는 작업을 할 필요가 없다. 이것은 또한, 중앙 메모리 처리 시스템과 각종 모듈간의 연결의 수를 감소시킨다.
두번째, 일관성 검사에 관여해야 하는 버스상의 각 모듈은 큐를 구비하여 아직 완료되지 않은 캐시 일관성 검사 작업을 저장한다. 이 버퍼링(buffering)은 캐시 일관성 검사 시스템이 보다 효과적인 대역폭으로 동작하도록 허용한다. 또한, 큐는 캐시 일관성 검사 트랜잭션이 핸드세이킹 혹은 버스-사용 프로토콜 혹은 하드웨어없이도 손실되지 않도록 보장한다.
마지막으로, 중앙 메모리 처리 시스템은 각종 큐의 상태를 감시하고, 버스에 배치된 트랜잭션 유형을 제약하는 신호를 제공하여 큐가 오버플로우되지 않도록 보장한다. 또한, 이 트랜잭션 제약 시스템(transaction restriction system)은 다른 유형의 트랜잭션이 손실되지 않음을 보장할 때에도 사용될 수 있다.
예언적 흐름 제어 메카니즘은 3가지 주 트랜잭션 큐 세트를 사용한다. 먼저, 캐시 메모리를 가지는 각 모듈은 캐시 일관성 큐를 구비하여, 캐시 일관성 검사가 수행될 수 있을 때까지 버스상에 발생되는 일관성 트랜잭션을 보류(hold)한다. 두번째로, 각 입력/출력 모듈은 입력/출력 큐를 구비하여, 처리가 가능할 때까지 입력/출력 트랜잭션을 보류(hold)한다. 입력/출력 트랜잭션은 입력/출력 장치로부터/로 데이타를 판독 및 기록할 필요가 있는 트랜잭션을 포함한다. 바람직한 실시예에서, 소정의 메모리 어드레스는 입력/출력 위치를 지정하고, 따라서, 이들 어드레스로 전송되는 트랜잭션은 입력/출력 트랜잭션으로 언급된다. 마지막으로, 주 메모리 제어기는 메모리 큐를 구비하여, 일관성 검사가 완료되고, 주 메모리 판독 및 기록 트랜잭션을 처리할 수 있을 때까지 이러한 트랜잭션을 보류한다. 모든 큐는 오버플로우없이 전형적인 트랜잭션 발생 속도를 처리하도록 설계된다.
주 메모리 제어기는 각각의 큐의 상태의 정보를 수신 및 처리하는 중앙 위치(central location)로서 동작한다. 주 메모리 제어기는 버스상에 개시될 수 있는 트랜잭션 유형을 표시하는 "클라이언트 선택사양" 신호를 모듈로 전송함으로써, 오버플로우하지 않도록 보장한다. 예를 들면, 입력/출력 큐가 가득차는(full)경우, 주 메모리 제어기는 입력/출력 트랜잭션이 허용되지 않음을 표시하는 클라이언트 선택사양 신호를 전송할 것이다. 일관성 큐가 가득차는 경우, 주 메모리 제어기는 일관성 검사를 요구하는 더 이상의 트랜잭션을 허용하지 않을 것이다.
각 유형의 큐의 가득찬/빈 상태(full/empty status)를 추적하는데 상이한 절차가 사용된다. 캐시 일관성 큐에 대하여, 캐시 메모리를 구비한 각 모듈은 발생된트랜잭션에 대하여 버스를 감시하고, 선입선출(first-in first-out) 순서로 일관성 검사동안 그의 일관성 큐의 일관성 트랜잭션을 저장한다. 일관성 검사의 결과는 주 메모리 제어기로 보고된다. 또한, 주 메모리 제어기는 일관성 트랜잭션에 대한 버스를 감시하고, 이 일관성 트랜잭션의 트랙(track)을 유지하고, 그리고, 각 모듈이 수행하는 일관성 검사의 결과를 수신한다. 따라서, 주 메모리 제어기는, 소정 모듈로부터 수신된 일관성 검사 응답의 수와 일관성 트랜잭션의 수를 비교함으로써, 각 모듈의 캐시 일관성 큐가 가득찬 상태를 알 수 있다. 입력/출력 큐의 경우에 있어서, 입력/출력 모듈은 그의 입력/출력 큐가 임계적으로(critically) 가득찼을 때 신호를 주 메모리 제어기로 전송한다. 주 메모리 제어기는 종래의 방식으로 그 자신의 메모리 큐의 트랙을 유지할 수 있다.
큐는 이벤트(event)시에 전형적인 트랜잭션 발생 속도(transaction issue rates)를 처리하는데 사용되며, 단순히 흐름 제어 메카니즘을 지원하기 위하여 부가되지는 않으므로, 흐름 제어 메카니즘은 하드웨어적 측면에서 효과적이다. 또한, 버스 대역폭(bus bandwidth)은 트랜잭션의 수용을 보장한 이후로부터 다수 번이라기보다, 일단 트랜잭션이 단지 발생된 이후부터 보존된다.
제 1 도에 도시된 바와 같이, 예언적 흐름 제어 메카니즘을 컴퓨터 시스템(10)과 관련하여 설명하였다. 예언적 흐름 제어 메카니즘을 설명하기에 앞서, 컴퓨터 시스템(10)의 동작을 자세히 기술할 것이다. 컴퓨터 시스템(10)의 기본동작은 본 발명에서 중요하지는 않지만, 예언적 흐름 제어 메카니즘의 동작을 설명하기에 앞서 다소 상세히 설명하는 것이 유용할 것이다.
컴퓨터 시스템(10)은 버스(12)와 이 버스(12)에 연결된 다수의 구성요소를 가지는 멀티프로세서 컴퓨터이다. 구성요소는 주 메모리 제어기(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에 도시된 신호를 지원한다.
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_IO인 경우, I/O 트랜잭션을 제외한 모든 트랜잭션이 허용된다. 흐름 제어가 정상적으로 ANY_TRANS를 허용하는 경우, ATOMIC CLIENT_OP가 STOP_MOST를 단정하는 클라이언트에 직접 응답하여 발생된다. ATOMIC CLIENT_OP가 STOP_MOST를 단정하는 클라이언트가 버스(12)상의 다수의 연속 트랜잭션을 수행하도록 허용한다. 모든 다른 클라이언트가 ATOMIC이 단정된 사이클동안 버스를 얻는 경우, 이러한 모든 다른 클라이언트는 단지 초기에 전송된 트랜잭션에 응답하여 허용되거나, 혹은 이전에 보유한 전용-더티 캐시 라인을 라이트백한다. 또한, 호스트는 통상적으로, 모든 클라이트를 RET_ONLY 클라이언트 선택사양 신호를 사용하여 응답형 트랜잭션으로 제한할 수 있다. 따라서, 아토믹 소유자가 있을 때, 아토믹 소유자에 대하여 유효한 클라이언트 선택사양 신호는 ANY_TRANS이고, 모든 다른 클라이언트에 대하여 유효한 클라이언트 선택사양 신호는 RET_ONLY이다. ATOMIC 클라이언트 선택사양 신호는 본 발명에 필요없다는 것을 이해할 것이다.
각 모듈이 캐시 메모리를 가지는 가지는 시스템에 대한 일관성 방안에 관련하여 소정 실시예에서 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가지 주트랜잭션 큐 세트가 전형적인 트랜잭션 속도를 처리하는데 사용된다. 주 메모리 제어기(14)는 각각의 큐의 가득찬/빈 상태를 감시하고, 큐가 오버플로우하지 않도록 클라이언트 선택사양 신호를 발생한다. 컴퓨터 시스템(10)에 사용되는 3가지 유형의 큐는 후에 기술될 것이며, 이는 주 메모리 제어기(14)가 큐의 가득찬/빈 상태의 트랙을 유지하는 수단이다. 마지막으로, 적절한 클라이언트 선택사양 신호를 발생하는 이 정보의 사용이 설명될 것이다.
이제, 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)는 주 메모리로부터 데이타를 제공할 것이다. 클라이언트 모듈이 데이타의 전용-더티 사본을 가지는 경우, 이 클라이언트 모듈은 데이타를 제공할 것이며, 주 메모리 제어기(14)는 새로운 데이타값을 가지도록 주 메모리를 갱신할 것이다. 바람직한 실시예에서, 주 메모리 제어기(14)는 트랜잭션에 응답시에 다소의 지연도 없도록 충분히 신속하게 일관성 응답을 수신한다.
주 메모리 제어기(14)는 메모리 큐, CCC 큐 및 I/O 큐를 포함하는 모든 큐의 현재의 가득찬/빈 상태 정보를 수신 및 처리하는 중앙 위치로서 서비스한다. 보다 상세히 후술하는 바와 같이, 각 유형의 큐를 추적하는 데에 상이한 절차가 사용된다.
내부 주 메모리 큐에 관하여, 주 메모리 제어기(14)는 내부적으로 그의 메모리 큐의 가득찬 상태의 트랙을 유지시킨다. 이것은 종래의 방식으로 행해질 수 있다.
I/O 큐에 관하여, 각 I/O모듈은 그의 I/O 큐 상태를 주 메모리 제어기(14)로 보고한다. I/O 모듈은 그들 자신의 I/O 큐를 감시하고, I/O 큐가 임계적으로 가득찰 때 전용 STOP_IO 신호를 주 메모리 제어기(14)로 단정한다. 큐에서의 모든 나머지 엔트리가 대략, 모든 모듈에게 그 유형의 트랜잭션의 발생을 중지(stop)시키는 데 필요한 시간에, 그 큐를 목표로한 최대 허용 발생 속도로 발생되는 새로운 트랜잭션에 의해 채워질 수 있는 경우, 큐는 임계적으로 가득차게 된다.
CCC 큐에 있어서. 주 메모리 제어기(14)는 버스상에 발생된 알관성 트랜잭션의 수를 검출하고. 각 모듈이 대응하는 일관성 트랜잭션의 수의 트랙을 유지함으로써, 간접적으로 각 모듈의 CCC 큐의 가득찬 상태를 감시한다. 특히, 주 메모리 제어기(14)는 발생된 모든 일관성 트랜잭션을 수신한다. 전술한 바와 같이, 캐시를 구비한 각 모들은 또한, 각 일관성 트랜잭션을 수신하고, 수신된 일관성 트랜잭션에 대한 그의 캐시 일관성 검사의 결과를 주 메모리 제어기(14)로 전송한다. 응답은 각 모듈로부터 주 메모리 제어기(14)로의 전용 버스인 COH 라인(42 내지 52)을 통하여 주 메모리 제어기(14)로 전송된다. 따라서, 주 메모리 제어기(14)는 발생된 일관성 트랜잭션의 수와, 그 모듈로부터 수신된 캐시 일관성 응답을 비교함으로써, 모듈의 CCC 큐에 남아있는 일관성 트랜잭션의 수를 결정할 수 있다.
처리는 "스코어보드(scoreboard)"상에 발생되는 것으로 간주될 수 있다. 일관성 트랜잭션은 발생되면 보드상에 배치되어, 트랜잭션이 각 모듈의 CCC 큐에 있음을 표시한다. 주 메모리 제어기는 이러한 트랜잭션에 대하여 버스를 감시한다. 주 메모리 제어기(14)는 COH 라인상의 각 모듈로부터 일관성 응답을 수신하고, 주 메모리 제어기(14)는 모듈의 응답을 기록하고, 포인터(pointer)를 그 모듈이 처리할 다음 CCC 요청으로 이동시키고, 그 모듈의 CCC 큐에서 리스트된 트랜잭션의 수를 1만큼 감소시킨다. 또한, 주 메모리 제어기(14)는 소정의 일관성 트랜잭션에 대한 모든 일관성 응답을 수신했을 시기를 알고 있으므로, 일관성 트랜잭션에 응답하는 시기와 방법을 안다.
당업자라면, 스코어보드대신에, 주 메모리 제어기(14)로 STOP_IO와 유사하지만 CCC 큐가 임계적으로 가득참을 표시하는 전용 신호를 단정할 수 있음을 알 수있을 것이다. 그러나, 스코어보드 방안은 일관성 방안의 목적을 위하여 이미 전송된 일관성 응답을 사용하므로, 하드웨어적 측면에서 보다 효율적이다.
각종 큐의 상태를 근거로하여, 주 메모리 제어기(14)는 CLIENT_OP 버스를 사용하여, 큐를 오버로드(overload)하는 트랜잭션이 발생되지 못하게 만든다. 버스(12)에 대한 중재와 관련하여 전술한 바와 같이, 호스트 모듈로서 동작하는 주 메모리 제어기(14)는 안전하게 개시될 수 있는 트랜잭션의 유형을 표시하는 CLIENT_OP 버스상의 모든 다른 모듈로 신호를 전송한다. 모듈이 버스에 대한 중재를 획득(win)할 때, 중재 획득자(arbitration winner)가 개시할 수 있는 트랜잭션(혹은 반환)을 조사하기 위하여 중재 상태동안 CLIENT_OP 버스상에 구동된 인코딩(encoding)을 검사한다. 가능한 CLIENT_OP 신호는 전술한 테이블 1에 요약되어 있다.
흐름 제어에 관련된 CLIENT_OP 신호는 ANY_TRANS, NO_IO, RET_ONLY 및 NONE_ALLOWED이다. 모든 큐가 충분한 공간을 가지며, 주 메모리 제어기(14)가 버스의 제어를 획득하려고 하지 않는 경우, 주 메모리 제어기(14)는 발생될 수 있는 트랜잭션의 유형을 표시하는 ANY_TRANS 인코딩을 구동시킬 것이다. I/O 모듈이 그의 STOP_IO 신호를 단정하는 경우, 주 메모리 제어기(14)는 적어도 하나의 I/O 큐가 임계적으로 가득참을 알 것이며, 주 메모리 제어기(14)는 I/O 트랜잭션을 제외한 트랜잭션이 발생될 수 있음을 표시하는 NO_IO 인코딩을 구동할 것이다.
주 메모리 제어기(14)는 하나 혹은 그 이상의 CCC 큐가 임계적으로 가득차거나 혹은 그자신의 메모리 큐가 새로운 판독 트랜잭션을 처리할 수 없는 경우, 주메모리 제어기(14)는 중재 획득자가 단지 초기 트랜잭션(earlier transactions)에 응답을 발생하거나 혹은 전용 더티 캐시 라인의 라이트백을 수행함을 표시하는 RET_ONLY 인코딩을 구동할 것이다. 또한, 새로운 I/O 트랜잭션은 허가되지 않는다.
주 메모리 제어기(14)가 그자신의 메모리 큐가 새로운 기록 트랜잭션을 처리할 수 없음을 검출하는 경우, NONE_ALLOWED를 구동하여 새로운 트랜잭션의 개시를 금지한다. 새로운 트랜잭션이 허용되지 않으므로, 모든 큐는 오버플로우되지 않는다. 결국, 그 내부 메모리 처리는 메모리 큐를 해제시키고(relieve), 캐시 일관성 검사는 CCC 큐를 해제할 것이므로, 더 많은 허용가능한 CLIENT_OP 인코딩이 발생될 수 있다.
이제 제 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), 메모리 기록 큐(176) 및 스코어보드(178)를 포함한다. 프로세서 및 입력/출력 모듈은 프로세서 모듈(120)과 입력/출력 모듈(116)의 요소와 동일한 요소를 각각 포함하는 것이 도시되지 않았다는 것을 이해해야 할 것이다.
동작에 있어서, 입력/출력 모듈 혹은 프로세서 모듈에 의해 발생되는 일관성 트랜잭션이 버스(112)로 전송된다. 일관성 트랜잭션은 각 모듈에 의해 검출되고, 각 클라이언트 모듈의 CCC 큐와 스코어보드상에 배치된다. CCC 큐(164, 168)에 저장된 일관성 트랜잭션은 FIFO 순서로 각각 메모리 캐시(166, 170)에 대하여 검사되고, 그 결과는 라인(152, 142)상의 주 메모리 제어기(114)로 각각 보고된다. 모든 모듈이 당면한 트랜잭션에 대하여 보고할 때까지, 결과는 스코어보드상에 저장된다. 주 메모리 제어기(114)는 스코어보드(178)에 리스트된 일관성 트랜잭션의 수에 대하여 라인(142, 152)상에 대응하는 일관성 트랜잭션의 수를 비교하여, CCC 큐(164, 168)의 가득찬/빈 상태를 결정한다.
예를 들면, 버스(112)에 발생된 일관성 메모리 판독은 모들(116, 120)에 의해 검출되고, 일관성 검사를 위하여 그들의 CCC 큐에 배치된다. 일관성 검사의 결과는 데이타의 전용 더티 사본을 가진다. 모든 모듈이 보고될 때, 주 메모리 제어기(114)는 데이타를 요청 모듈에 제공하고, 각 모듈이 그 일관성 트랜잭션에 응답하는 것을 그의 스코어보드상에 표시하고, 입력되는 트랜잭션을 위한 자유 공간으로서 이 스코어보드 라인을 표시한다.
입력/출력 장치로의 기록과 같은 입력/출력 트랜잭션은 입력/출력 큐(162)를 통하여 입력/출력 버스(160)로 전송된다. 입력/출력 모듈(116)은 입력/출력 큐(162)의 상태를 감시하고, 입력/출력 큐(162)가 임계적으로 가득찰때, 입력/출력 모듈(116)은 그 정보를 라인(158)을 통해 주 메모리 제어기(114)로 보고한다. 예를 들면, 프로세서 모듈이 입력/출력 모듈(116)로 데이타를 기록중이라면, 트랜잭션은 큐(162)를 채우고, STOP_IO 신호를 발생시킨다. 주 메모리 제어기(114)는 NO_IO 클라이언트 선택사양 신호를 발생할 것이다.
주 메모리 제어기(114)는 또한, 바람직하게, 메모리 판독 큐 및 메모리 기록 큐인 그 자신의 메모리 큐, 큐(174) 및 글(176)의 상태를 감시한다. 따라서, 주 메모리 제어기(114)는 오버플로우할 수 있는 컴퓨터 시스템(100)내의 모든 큐의 가득찬/빈 상태와 관련된 정보를 가진다. 주 메모리 제어기가 그의 메모리 큐가 임계적으로 가득차 있다고 검출하는 경우, NONE_ALLOWED 클라이언트 선택사양 신호를 발생시킨다. 이전에 발생된 메모리 트랜잭션이 처리됨에 따라, 메모리 큐는 비기 시작하며, 더 많은 허용가능한 클라이언트 선택사양 신호가 발생될 수 있다.
통상적으로, 모든 큐의 가득찬/빈 상태에서, 주 메모리 제어기(114)에 사용가능한 정보를 근거로, 주 메모리 제어기(114)내의 프로세서(172)는 사용가능한 사이클에서 큐의 오버플로우없이 발생될 수 있는 트랜잭션의 유형을 결정한다. 전술한 바와 같이, 프로세서(172)는 CLIENT_OP 신호를 발생해야 하는지의 여부를 결정하여, 다음 사용가능한 버스 사이클동안 큐의 오버플로우를 발생시키지 않는 트랜잭션만이 허용된다. 전술한 바와 같이, 중재 획득자는 단지 CLIENT_OP 신호에의해 허용되는 트랜잭션을 발생할 것이다. 따라서, 트랜잭션을 중지할 필요가 없으며, 모듈간의 핸드세이킹이 필요없다.
예를 들면, 입력/출력 큐(162)가 임계적으로 점차 가득차게 된다고 가정하자 입력/출력 모듈(116)은 데이타를 수신중이며, 입력/출력 장치로의 다른 기록은 버스(112)를 통하여 입력/출력 모듈(116)로 전송되고, 입력/출력 큐(162)에 배치된다. 그 큐(162)가 임계적으로 가득찼다고 검출하면, 입력/출력 모듈(116)은 STOP_IO 신호를 주 메모리 제어기(114)로 전송한다. 주 메모리 제어기(114)가 STOP_IO 신호에 응답하여 NO_IO 클라이언트 신호를 구동할 때까지, 입력/출력 큐(162)는 다수의 사이클동안 계속 트랜잭션을 수신한다. NO_IO 클라이언트 선택사양 신호를 근거로, 다음 버스 소유자는 입력/출력 장치로 트랜잭션을 구동하지 않을 것이다.
다른 예를 들면, 주 메모리 제어기(114)는 하나 혹은 그 이상의 일관성 큐가 임계적으로 가득차고 있다고 (그의 스코어보드를 사용하여) 검출할 수 있다. 주 메모리 제어기(114)는 RET_ONLY 클라이언트 선택사양 신호를 구동할 것이다. 버스 소유자는 더 이상의 일관성 트랜잭션을 구동하지 않을 것이다. 그러나, 데이타 반환 및 일관성 검사 응답은 허용될 것이다. 따라서, CCC 큐는 결국 비게 되기 시작할 것이며, 보다 많은 허용가능한 클라이언트 선택사양 신호가 발생될 것이다.
용어 "버스(들)" 및 "라인(들)"은 전술한 하나 혹은 그 이상의 각종 전기적 경로 세트를 표시하기 위하여 상세한 설명에서 사용되었다. 당업자라면, 용어 "버스" 및 "라인"은 상호 배타적이거나 혹은 그들 자신을 제한하려는 것이 아님을 이해해야 할 것이다. 예를 들면, 항목 "LONG_TRANS 버스"가 사용되는 동안, LONG_TRANS 버스는 종래의 공유 버스, 즉, 신호가 하나 이상의 모듈로 전송될 수 있는 하나의 전기적 경로로 구성될 수 있다. 유사하게, 항목 "CLIENT_OP 버스"와 "CLIENT_OP 라인"은 전술한 바와 같이, 호스트에 의해 단지 구동되는 하드웨어 라인 세트를 표시하기 위하여 교체가능하도록 사용된다.
당업자라면, 전술한 설명 및 첨부 도면으로부터 본 발명의 각종 변형을 명백히 알 수 있을 것이다. 따라서, 본 발명은 단지 다음의 특허 청구 범위의 범주에 의해서만 제한된다.
제 1 도는 본 발명에 따라 흐름 제어 메카니즘을 사용하는 컴퓨터 시스템의 일실시예를 도시한 블록도,
제 2 도는 본 발명에 따라 흐름 제어 메카니즘을 사용하는 컴퓨터 구성요소 및 큐를 도시한 도면,
도면의 주요 부분에 대한 부호의 설명
10, 100 : 컴퓨터 시스템 14, 114 : 주 메모리 제어기
16, 18, 116 : I/O모듈 20, 22, 24, 26 : 프로세서 모듈
112 : 버스 120 : 프로세서
162, 164, 168, 174, 176 : 큐
160 : I/O버스
166, 170 : 캐시 메모리
178 : 스코어보드

Claims (4)

  1. 데이타 처리 시스템에 있어서,
    물리적으로 분리된 위치들 간에 정보를 전송하기 위한 다수의 신호 전도체를 갖는 버스(bus)와,
    상기 버스에 연결되며, 각각이 상기 모듈에 의해 혹은 다른 모듈에 의해 수행될 트랜잭션을 명시하는 정보를 전송 및 수신하기 위한 수단과, 상기 모듈에 의해 수신되어 처리되는 상기 트랜잭션을 명시하는 정보를 저장하기 위한 큐(queue)를 포함하는 다수의 모듈과,
    상기 모듈로부터 분리되어, 상기 모듈에 의해 상기 버스상에서 전송될 수 있는 상기 트랜잭션의 유형을 표시하는 신호를 상기 버스상에 발생하는 버스 제어기와,
    상기 모듈로부터 분리되어, 상기 모듈 중 하나의 모듈의 큐가 사전결정된 자유 공간량(predetermined amount of free space)보다 작은 공간을 가지고 있음을 결정하고, 상기 버스 제어기로 하여금 상기 버스상에서 전송될 수 있는 트랜잭션을 제한하도록 하여 상기 글 내에 공간을 필요로 트랜잭션이 발생되지 못하도록 하는 수단- 상기 결정하는 수단은 상기 큐 내의 자유 공간량을 표시하는, 상기 모듈로부터의 소정의 신호를 참조하지 않고서 상기 결정을 수행함- 을 포함하는
    데이타 처리 시스템.
  2. 제 1 항에 있어서,
    상기 모듈 중 적어도 하나의 모듈은,
    메모리와,
    상기 메모리에서의 명시된 단어(word)의 존재 및 상기 단어 상태의 검사(check)를 요구하는 일관성 트랜잭션(coherent transaction)을 상기 버스상에서 검출하고, 상기 검사를 명시하는 정보가 상기 모듈에 포함된 상기 큐에 저장되도록 하는 수단과,
    상기 일관성 트랜잭션에 명시된 상기 데이타 단어의 존재 및 상태를 위해 상기 메모리를 검사하는 수단과,
    상기 검사 수단에 의해 수행된 상기 검사 중 최종 검사의 결과를 표시하는 신호를 전송하는 수단을 포함하고,
    상기 결정 수단은 상기 검사를 수행하는 각 모듈로부터 상기 전송된 신호를 수신하기 위한 수단을 더 포함하는
    데이타 처리 시스템.
  3. 제 1 항에 있어서,
    상기 모듈 중 적어도 하나의 모듈은 상기 모듈 내의 상기 큐에서의 공간량(the amount of space)을 결정하기 위한 수단과, 상기 결정된 공간량이 사전결정된 공간량보다 작음을 표시하는 신호를 발생하여 이 신호를 상기 버스 제어기로 전송하기 위한 수단을 포함하는 데이타 처리 시스템.
  4. 데이타 처리 시스템에 있어서,
    물리적으로 분리된 위치들 간에 정보를 전송하기 위한 다수의 신호 전도체를 갖는 버스와,
    상기 버스에 연결되며, 각각이 상기 모듈에 의해 혹은 다른 모듈에 의해 수행될 트랜잭션을 명시하는 정보를 전송 및 수신하기 위한 수단과, 상기 모듈에 의해 수신되어 처리되는 상기 트랜잭션을 명시하는 정보를 저장하기 위한 큐를 포함하는 다수의 모듈과,
    상기 모듈로부터 분리되어, 상기 모듈에 의해 상기 버스상에서 전송될 수 있는 상기 트랜잭션의 유형을 표시하는 신호를 상기 버스상에 발생하는 버스 제어기와,
    상기 모듈로부터 분리되어, 상기 모듈 중 하나의 모듈의 큐가 사전결정된 자유 공간량보다 작은 공간을 가지고 있음을 결정하고, 상기 버스 제어기로 하여금 상기 버스상에서 전송될 수 있는 트랜잭션을 제한하도록 하여 상기 큐 내에 공간을 필요로 트랜잭션이 발생되지 못하도록 하는 수단과,
    주 메모리(main memory)-상기 주 메모리는 상기 주 메모리에 의한 응답을 요구하는 인스트럭션을 저장하기 위한 큐를 포함하고, 상기 결정 수단은, 상기 모듈 내의 상기 큐 각각에서 각 슬롯에 대한 하나의 위치를 가져 일관성 트랜잭션 정보를 저장하는 버퍼를 더 포함함-를 포함하는
    데이타 처리 시스템.
KR1019950003485A 1994-02-24 1995-02-23 데이타처리시스템 KR100371844B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/201,185 US6182176B1 (en) 1994-02-24 1994-02-24 Queue-based predictive flow control mechanism
US08/201,185 1994-02-24
US8/201,185 1994-02-24

Publications (2)

Publication Number Publication Date
KR950033892A KR950033892A (ko) 1995-12-26
KR100371844B1 true KR100371844B1 (ko) 2003-04-07

Family

ID=22744823

Family Applications (1)

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

Country Status (6)

Country Link
US (2) US6182176B1 (ko)
EP (1) EP0674272B1 (ko)
JP (1) JPH07306810A (ko)
KR (1) KR100371844B1 (ko)
DE (1) DE69424272T2 (ko)
TW (1) TW253947B (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528766A (en) * 1994-03-24 1996-06-18 Hewlett-Packard Company Multiple arbitration scheme
US5761444A (en) * 1995-09-05 1998-06-02 Intel Corporation Method and apparatus for dynamically deferring transactions
US6240479B1 (en) * 1998-07-31 2001-05-29 Motorola, Inc. Method and apparatus for transferring data on a split bus in a data processing system
US6836829B2 (en) * 1998-11-20 2004-12-28 Via Technologies, Inc. Peripheral device interface chip cache and data synchronization method
US6732208B1 (en) * 1999-02-25 2004-05-04 Mips Technologies, Inc. Low latency system bus interface for multi-master processing environments
US6460133B1 (en) * 1999-05-20 2002-10-01 International Business Machines Corporation Queue resource tracking in a multiprocessor system
US6728253B1 (en) * 1999-09-24 2004-04-27 International Business Machines Corporation Mixed queue scheduler
US6529990B1 (en) * 1999-11-08 2003-03-04 International Business Machines Corporation Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system
US6651124B1 (en) * 2000-04-28 2003-11-18 Hewlett-Packard Development Company, L.P. Method and apparatus for preventing deadlock in a distributed shared memory system
US6748505B1 (en) * 2000-07-11 2004-06-08 Intel Corporation Efficient system bus architecture for memory and register transfers
US6804736B2 (en) * 2000-11-30 2004-10-12 Hewlett-Packard Development Company, L.P. Bus access arbitration based on workload
US6631440B2 (en) * 2000-11-30 2003-10-07 Hewlett-Packard Development Company Method and apparatus for scheduling memory calibrations based on transactions
US20030095447A1 (en) * 2001-11-20 2003-05-22 Koninklijke Philips Electronics N.V. Shared memory controller for display processor
US6862646B2 (en) * 2001-12-28 2005-03-01 Thomas J. Bonola Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
US7546399B2 (en) * 2002-03-25 2009-06-09 Intel Corporation Store and forward device utilizing cache to store status information for active queues
US7024499B2 (en) * 2003-01-21 2006-04-04 Red Hat, Inc. Cache only queue option for cache controller
WO2004107180A1 (ja) * 2003-05-30 2004-12-09 Fujitsu Limited マルチプロセッサシステム
US7165131B2 (en) * 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
US7723249B2 (en) * 2005-10-07 2010-05-25 Sulzer Metco (Us), Inc. Ceramic material for high temperature service
US7603503B1 (en) 2006-09-18 2009-10-13 Nvidia Corporation Efficiency based arbiter
US7949813B2 (en) * 2007-02-06 2011-05-24 Broadcom Corporation Method and system for processing status blocks in a CPU based on index values and interrupt mapping
US8019910B2 (en) * 2007-07-31 2011-09-13 Hewlett-Packard Development Company, L.P. Transaction flow control in PCI express fabric
JP5104139B2 (ja) * 2007-09-07 2012-12-19 富士通株式会社 キャッシュシステム
US8275902B2 (en) * 2008-09-22 2012-09-25 Oracle America, Inc. Method and system for heuristic throttling for distributed file systems
US20130054896A1 (en) * 2011-08-25 2013-02-28 STMicroelectronica Inc. System memory controller having a cache
JP2016173798A (ja) * 2015-03-18 2016-09-29 ルネサスエレクトロニクス株式会社 半導体装置
US10423358B1 (en) * 2017-05-31 2019-09-24 FMAD Engineering GK High-speed data packet capture and storage with playback capabilities

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257374A (en) * 1987-11-18 1993-10-26 International Business Machines Corporation Bus flow control mechanism
GB8814633D0 (en) * 1987-11-18 1988-07-27 Ibm Bus flow control mechanism
US5204954A (en) * 1987-11-18 1993-04-20 International Business Machines Corporation Remote storage management mechanism and method
US5265235A (en) * 1990-11-30 1993-11-23 Xerox Corporation Consistency protocols for shared memory multiprocessors
US5195089A (en) * 1990-12-31 1993-03-16 Sun Microsystems, Inc. Apparatus and method for a synchronous, high speed, packet-switched bus

Also Published As

Publication number Publication date
DE69424272D1 (de) 2000-06-08
JPH07306810A (ja) 1995-11-21
EP0674272B1 (en) 2000-05-03
DE69424272T2 (de) 2000-11-30
US6304932B1 (en) 2001-10-16
TW253947B (en) 1995-08-11
KR950033892A (ko) 1995-12-26
US6182176B1 (en) 2001-01-30
EP0674272A1 (en) 1995-09-27

Similar Documents

Publication Publication Date Title
KR100371844B1 (ko) 데이타처리시스템
KR100371845B1 (ko) 데이타처리시스템
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
KR100194253B1 (ko) 메시 데이터 코히어런시 프로토콜 이용 방법 및 멀티프로세서 시스템
US5426765A (en) Multiprocessor cache abitration
US6012120A (en) Method and apparatus for providing DMA transfers between devices coupled to different host bus bridges
US5353415A (en) Method and apparatus for concurrency of bus operations
US6128711A (en) Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
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
US6021456A (en) Method for communicating interrupt data structure in a multi-processor computer system
US6330630B1 (en) Computer system having improved data transfer across a bus bridge
EP1215584A2 (en) Highly pipelined bus architecture
JP3696012B2 (ja) 書込み動作順序付けバスブリッジ
US5765196A (en) System and method for servicing copyback requests in a multiprocessor system with a shared memory
WO1994008297A9 (en) Method and apparatus for concurrency of bus operations
KR100263633B1 (ko) 각종프로세서와버스프로토콜에적용가능한범용구조를제공하는컴퓨터시스템
JPH08249231A (ja) マルチプロセッサ・システムにおける古いデータの処理システム及び方法
US5987544A (en) System interface protocol with optional module cache
US6601145B2 (en) Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls
US6862646B2 (en) Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
KR20210040257A (ko) 캐시 유지보수 동작을 처리하는 장치 및 방법
US6021474A (en) Apparatus and method of snooping processors and look-aside caches
KR0130737B1 (ko) 데이터 처리 장치에서 메모리로부터 다중 프로세서로의 데이터 전송 효율을 향상시키기 위한 방법 및 장치
US6009482A (en) Method and apparatus for enabling cache streaming
US6889343B2 (en) Method and apparatus for verifying consistency between a first address repeater and a second address repeater

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