KR20020012616A - 록의 시작 및 끝을 요구하는 데에 버스 커맨드 코드포인트들을 최소로 이용하는 방법 - Google Patents

록의 시작 및 끝을 요구하는 데에 버스 커맨드 코드포인트들을 최소로 이용하는 방법 Download PDF

Info

Publication number
KR20020012616A
KR20020012616A KR1020017016514A KR20017016514A KR20020012616A KR 20020012616 A KR20020012616 A KR 20020012616A KR 1020017016514 A KR1020017016514 A KR 1020017016514A KR 20017016514 A KR20017016514 A KR 20017016514A KR 20020012616 A KR20020012616 A KR 20020012616A
Authority
KR
South Korea
Prior art keywords
lock
processor
command
bridge
processors
Prior art date
Application number
KR1020017016514A
Other languages
English (en)
Other versions
KR100687822B1 (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 KR20020012616A publication Critical patent/KR20020012616A/ko
Application granted granted Critical
Publication of KR100687822B1 publication Critical patent/KR100687822B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

록을 설정 및 해제하기 위한 토글 커맨드, 즉 록토글을 이용하는 시스템 및 방법이 개시된다. 예시적인 컴퓨터 시스템에서, 하나 또는 그 이상의 프로세서들(110A;110B)은 각각 버스 브리지(130)에 결합된다. 록토글 커맨드는 프로세서(110A)로부터의 록 요구 및 언록 요구를 시스템 코히런시 포인트, 예를 들어 버스 브리지(130)로 전달하는 데에 이용된다. 시스템 코히런시 포인트는 록이 설정되거나 해제될 때 애크날러쥐 신호를 보낸다. 록이 액티브할 때, 다른 프로세서들은 적어도 록이 저지되었던 메모리 위치들에서의 액세스를 저지받는다. 따라서, 록들이 시스템 코히런시 포인트에 설정되어, 유익하게는 비공유 버스 시스템에서 록킹 기능을 허용할 수도 있게 된다. 록토글 커맨드의 이용은 유익하게는 다른 포인트들은 다른 이용을 위해 남겨두면서, 단일 커맨드 코드 포인트를 이용할 수 있게 한다.

Description

록의 시작 및 끝을 요구하는 데에 버스 커맨드 코드 포인트들을 최소로 이용하는 방법{MINIZING USE OF BUS COMMAND CODE POINTS TO REQUEST THE START AND END OF A LOCK}
컴퓨터 시스템들, 특히 메모리 또는 I/O(입/출력) 공간들을 동시에 액세스할 수도 있는 다중 프로세서들을 포함하는 컴퓨터 시스템들에서는, 메모리로의 어타믹(atomic) 액세스가 다른 시스템 장치에 의해 방해를 받지 않는 것을 보장하기 위한 어떠한 메커니즘을 필요로 한다. 예를 들어, 제 1 시스템 장치는 메모리-기반 변수(variable)의 경우에서 처럼, 메모리 내의 한 위치를 판독한 다음 그 동일한 메모리 위치에 새로운 값을 기록하기를 원할 수도 있다. 제 1 시스템 장치가 메모리 위치 오퍼레이션들을 끝마치기 전에 제 2 시스템 장치가 동일한 메모리 위치를 판독 및/또는 기록하지 못하도록 시스템을 "록"시키기 위한 어떠한 메커니즘이 필요하게 되었다. 일반적으로, 록 오퍼레이션은 주어진 메모리 장치로부터 주어진 메모리 위치 또는 범위까지 하나 또는 그 이상의 기록 주기들이 뒤따르는 하나 또는 그 이상의 판독 주기들의 시퀀스로서 규정될 수도 있다. 록 오퍼레이션을 포함하는 시퀀스 동안 다른 어떠한 장치도 주어진 메모리 위치로 액세스하지 못한다.
x86 프로세서들에서, 록킹 기능은 LOCK 접두사를 이용하는 특정 명령들에 제공된다. 다른 특정 명령들은 메모리 판독 및 기록이 록될 것을 지정한다. 또한, 록 오퍼레이션들은 페이지 테이블 갱신들 및 인터럽트 애크날러쥐 주기들을 포함할 수도 있다는 것을 유념하자. x86 하드웨어에서, 록킹은 전형적으로 x86 프로세서 상의 LOCK# 핀을 통하여 구현되어 왔다. 록 오퍼레이션을 수행하는 프로세서는 록 오퍼레이션을 포함하는 판독들 및 기록들의 시퀀스 동안 LOCK# 핀을 표명한다. x86 프로세서들은 일반적으로 메모리로의 프로세서 액세스가 단일의 공유 프로세서 버스를 통하여 제공되는 컴퓨터 시스템들 내에 설계되기 때문에, LOCK# 핀 표명은 공유 버스 리소스를 록킹 프로세서에 전용시키는 데에 이용된다. 공유 버스가 록되는 동안 버스 리소스를 공유하는 다른 프로세서들은 공유 버스를 액세스하는 것을 저지받기 때문에, 다른 프로세서들은 판독들 및 기록들의 원자 시퀀스를 인터럽트할 수 없게 된다.
불행히도, 공유 버스 시스템들은 몇 가지의 단점들을 갖는다. 예를 들어, 공유 버스에 다수의 장치들이 부착되기 때문에, 버스는 전형적으로 비교적 높은 주파수에서 작동한다. 이러한 다중 부착은 버스 상에서 신호를 구동시키는 장치에 높은 용량성 부하를 제시하며, 다중 부착 포인트들은 고주파수들에 대하여 비교적 복잡한 전송 라인 모델을 제시한다. 따라서, 주파수는 낮게 유지되며, 공유 버스 상에서 이용가능한 대역폭 또한 이와 유사하게 비교적 좁다. 좁은 대역폭은 유용한 대역폭에 의해 성능이 한정될 수도 있기 때문에, 공유 버스에 부가적인 장치들을 부착하는 데에 방해가 될 수도 있다.
공유 버스 시스템의 다른 단점은 더 많은 장치들로의 확장가능성의 부족이다. 상기 설명한 바와 같이, 대역폭의 양은 고정되며 (그리고 부가적인 장치들이 버스의 작동가능한 주파수를 감소시키는 경우에는 줄어들 수도 있다.) 일단 버스에 (직접적으로 또는 간접적으로) 부착된 장치들의 대역폭 조건들이 버스의 유용한 대역폭을 초과하게 되면, 장치는 버스로의 액세스를 시도할 때 빈번하게 불안정해질 것이다. 따라서, 컴퓨터 시스템의 전체적인 성능이 감소될 수도 있다.
x86 프로세서들은 작동 주파수 및 전체적인 성능을 계속하여 증가하였기 때문에, 공유 컴퓨터 버스 컴퓨터 시스템 모델은 그 성능의 한계에 도달하게 되었다. 따라서, 비공유 버스 시스템에 록 기능을 제공하는 방법이 필요하게 되었다.
본 발명은 통신 인터페이스에 관한 것으로서, 특히 록 상태의 시작 또는 끝을 요구하기 위한 록토글 커맨드(locktoggle command)에 관한 것이다.
도 1은 프로세서들을 브리지에 결합시키는 개별적인 버스들을 갖는 두 개의 프로세서들을 포함하는 컴퓨터 시스템의 일 실시예의 블록도이다.
도 2는 하나 또는 그 이상의 록 트랜잭션들을 처리하도록 구성된 도 1의 프로세서들 및 브리지의 일 실시예의 블록도이다.
도 3은 도 2의 프로세서와 브리지 간의 상호작용의 실시예의 흐름도이다.
도 4는 도 2의 컴퓨터 시스템 내에서 록 오퍼레이션들을 수행하기 위한 방법의 일 실시예의 흐름도이다.
도 5는 도 1의 브리지의 오퍼레이션들의 일 실시예의 흐름도이다.
도 6은 도 1의 컴퓨터 시스템 내에서의 프로세서-개시된 커맨드들에 대한 포맷의 일 실시예의 블록도이다.
도 7은 도 1의 컴퓨터 시스템 내에서 메모리 코히런시를 유지하고 데이터를 이동시키기 위해 브리지에 의해 이용되는 커맨드들에 대한 포맷의 일 실시예의 블록도이다.
본 발명은 다양한 변경들 및 변형적인 형태들을 가질 수 있지만, 특정한 실시예들이 도면에 예로서 도시되어 상세히 설명될 것이다. 하지만, 본 발명은 도면들 및 상세한 설명에 개시된 특정한 형태에 한정되지 않으며, 첨부된 청구항들에 의해 규정되는 본 발명의 원리 및 범위 내의 모든 변경들, 등가물들 및 변형들을 포함한다는 것을 유념하자.
상기 제기한 문제들은 록을 설정하고 해제하기 위한 토글 커맨드, 즉 록토글을 이용하는 시스템 및 방법에 의해 대부분 해결된다. 예시적인 컴퓨터 시스템에서, 하나 또는 그 이상의 프로세서들 각각은 개별적인 고속 연결부들을 통하여 버스 브리지에 연결되는데, 일 실시예에서 이는 각각의 소스-동기 록 라인들을 갖는 한 쌍의 단방향 어드레스 버스들 및 부수적인 소스-동기 클록 라인들을 갖는 양방향 데이터 버스들을 각각 포함한다. 록토글 커맨드는 프로세서로부터의 록 요구 및 언록 요구를 시스템 코히런시 포인트, 예를 들어 버스 브리지로 전송하는 데에 이용된다. 시스템 코히런시 포인트는 록이 설정 또는 해제되는 때를 알린다. 록이 액티브한 동안, 다른 프로세서들은 록이 시작되었던 메모리 위치들을 액세스하는 것을 억제받는다. 따라서, 시스템 코히런시 포인트에 록들이 설정되는데, 이는 유익하게는 비공유 버스 시스템 내에 록킹 기능을 허용할 수도 있다. 또한, 록토글 커맨드를 이용하게 되면 유익하게는, 다른 포인트들은 다른 사용들에 유용하도록 하면서 단일 커맨드 코드 포인트를 이용하도록 허용할 수도 있다.
대체적으로 말하여, 디코드 유닛, 로드/저장 유닛, 및 시스템 인터페이스 컨트롤러를 포함하는 프로세서가 고려된다. 디코드 유닛은 록을 지정하는 하나 또는 그 이상의 제 1 명령들을 수신하여 디코드하도록 결합된다. 디코드 유닛은 하나 또느 그 이상의 제 1 명령들에 응답하여 록 표시를 발생시키도록 구성된다. 로드/저장 유닛은 디코드 유닛으로부터 록 표시 및 하나 또는 그 이상의 제 1 명령들을 수신하도록 결합된다. 로드/저장 유닛은 하나 또는 그 이상의 제 1 명령들을 실행을 위해 선택하고 이에 응답하여 제 1 록토글 커맨드 요구를 전송하도록 구성된다. 시스템 인터페이스 컨트롤러가 로드/저장 유닛과 버스 사이에 결합된다. 시스템 인터페이스 컨트롤러는 로드/저장 유닛으로부터의 제 1 록토글 커맨드 요구를 수신하고, 이에 응답하여 제 1 록토글 커맨드를 발생시키도록 구성된다. 로드/저장 유닛은 또한 하나 또는 그 이상의 제 1 명령들의 실행에 응답하여 제 2 록토글 커맨드 요구를 전송하도록 구성된다. 시스템 인터페이스 컨트롤러는 또한 로드/저장 유닛으로부터 제 2 록토글 커맨드 요구를 수신하고, 이에 응답하여 제 2 록토글 커맨드를 발생시키도록 구성된다.
또한, 하나 또는 그 이상의 프로세서들을 컴퓨터 시스템 내에 결합시키는 브리지가 고려된다. 대체적으로 말하여, 브리지는 하나 또는 그 이상의 프로세서들중제 1 프로세서로부터 다수의 커맨드들을 수신하도록 결합된 제 1 입력 포트와, 제 1 입력 포트에 결합된 제 1 프로세서 큐와, 록 상태를 저장하도록 구성된 록 레지스터와, 그리고 제 1 프로세서 큐 및 록 레지스터에 결합된 제어 로직을 포함한다. 제 1 입력 포트는 상기 하나 또는 그 이상의 프로세서들중 제 1 프로세서로부터 다수의 커맨드들을 제 1 프로세서 큐로 전송하도록 구성된다. 제 1 프로세서 큐는 하나 또는 그 이상의 프로세서들중 제 1 프로세서로부터의 다수의 커맨드들을 저장하도록 구성된다. 하나 또는 그 이상의 프로세서들중 제 1 프로세서로부터의 다수의 커맨드들은 록토글 커맨드를 포함한다. 제어 로직은 제 1 프로세서 큐로부터, 하나 또는 그 이상의 프로세서들중 제 1 프로세서로부터의 다수의 커맨들을 제거하도록 구성된다. 제 1 프로세서 큐로부터의 록토글 커맨드의 제거에 응답하여, 제어 로직은 록 상태를 체크하도록 구성된다. 제어 로직은 또한, 록 상태가 록의 결여를 나타내는 경우에는, 하나 또는 그 이상의 프로세서들중 제 1 프로세서에 대한 록을 나타내는 록 상태를 설정하도록 구성된다. 제어 로직은 또한, 록 상태가 록을 나타내는 경우에는, 록의 결여를 나타내는 록 상태를 설정하도록 구성된다.
또한, 컴퓨터 시스템이 고려된다. 대체적으로 말하여, 컴퓨터 시스템은 하나 또는 그 이상의 프로세서들과, 이 하나 또는 그 이상의 프로세서들에 결합된 브리지를 포함한다. 브리지는 하나 또는 그 이상의 프로세서들로부터 수신된 커맨드드를 실행하도록 구성된다. 하나 또는 그 이상의 프로세서들 각각은 록을 나타내는 록을 나타내도록 록 상태가 설정될 것을 요구하는 록토글 커맨드를 브리지로 전송하도록 구성된다. 브리지는 하나 또는 그 이상의 프로세서들중 제 1 프로세서로부터의 록토글 커맨드의 수신에 응답하여 록 상태를 체크하도록 구성된다. 제어 로직은 또한, 록 상태가 록의 결여를 나타내는 경우에는 하나 또는 그 이상의 프로세서들중 제 1 프로세서에 대한 록을 나타내는 록 상태를 설정하고, 록 상태가 록을 나타내는 경우에는 록의 결여를 나타내는 록 상태를 설정하도록 구성된다.
또한, 하나 또는 그 이상의 프로세서들 및 시스템 장치를 포함하는 컴퓨터 시스템을 작동시키는 방법이 고려된다. 대체적으로 말하여, 이 방법은 하나 또는 그 이상의 프로세서들중 제 1 프로세서의 제 1 록토글 커맨드를 시스템 장치로 제공하는 단계를 포함한다. 이 방법은 또한 제 1 록토글 커맨드에 응답하여 시스템 장치 내의 록 상태의 표시를 체크한다. 이 방법은 또한 록 상태 표시의 체크에 응답하여 제 1 프로세서에 의한 록을 나타내기 위해 록 상태를 설정하는 단계와, 록 상태가 록의 결여를 나타내는 지를 결정하는 단계를 포함한다. 이 방법은 또한 록 상태 표시의 체크에 응답하여 록의 결여를 나타내기 위해 록 상태를 설정하는 단계와, 록 상태가 록을 나타내는 지를 결정하는 단계를 포함한다.
본 발명의 다른 목적들 및 장점들이 첨부 도면을 참조하여 설명되는 하기의 상세한 설명으로부터 좀 더 명확해질 것이다.
도 1은 일반화된 컴퓨터 시스템의 일 실시예의 블록도를 도시한다. 제 1 프로세서(110A) 및 제 2 프로세서(110B)는 각각 개별적인 프로세서 버스들을 통하여 브리지(130)에 결합된다. 제 1 프로세서(110A) 및 제 2 프로세서(110B)는 바람직하게는 그들 각각의 프로세서 버스들을 이용하여 메모리 및 I/O 오퍼레이션들을 수행하도록 구성된다. 일 실시예에서, 프로세서들(110A 및 110B)은 x86 명령 세트 구조를 실행한다. 다른 실시예들은 모든 적절한 명령 세트 구조를 실행할 수도 있다. 브리지(130)는 또한 메모리(140)에 결합된다. 메모리(140)는 바람직하게는 다른 시스템 장치들 뿐 아니라, 제 1 프로세서(110A) 및 제 2 프로세서(110B)에 액세스가능한 데이터 및 명령들을 저장하도록 구성된다. 메모리(140)는 SDRAM(동기 다이내믹 임의 접속 메모리), RDRAM(램버스 DRAM)[RDRAM 및 RAMBUS는 램버스 인코포레이티드의 등록 상표들임], 또는 다른 모든 적절한 메모리 타입으로 구성될 수도 있다. 어드밴스드 그래픽스 포트 장치(AGP)(150)가 또한 브리지(130)에 선택적으로 결합된다. 도시된 바와 같이, 주변 구성 요소 상호연결(PCI) 버스(160)가 또한 브리지(130)에 결합된다. 다양한 I/O가 구성 요소들이 PCI 버스(160)에 결합될 수도 있다.
가령 산업 표준 구조(ISA) 버스와 같은 레거시 버스를 포함하는 컴퓨터 시스템의 실시예들에서, 브리지(130)는 종종, PCI 버스(160)와 사우쓰브리지로서 일컬어지는 레거시 버스 간의 브리지(미도시)를 갖는 노쓰브리지(130)로서 일컬어진다는 것을 유념하자. 또한, 도시된 실시예에서, 브리지(130)는 컴퓨터 시스템에 대한 시스템 마스터라는 것을 유념하자. 도시된 실시예가 두 개의 프로세서들(110A 및 110B)을 포함하기는 하지만, 바람직한 경우 컴퓨터 시스템 내에 어떤 수의 프로세서(110)가 포함될 수도 있다는 것을 유념하자.
도시된 실시예에서, 시스템 마스터인 브리지(130)는 프로세서들(110A 및 110B), 메모리(140), AGP 장치(150), 및 PCI 버스 등 간의 통신을 조정한다. 브리지(130)는 다른 프로세서(110A 또는 110B), AGP 장치(150), 또는 PCI 버스(160) 상의 PCI 장치 등에 의해 액세스되는 메모리 위치들에 대하여 프로세서(110A) 및/또는 프로세서(110B)를 조사함으로써, 컴퓨터 시스템의 장치들 간의 데이터 전송을 위한 코히런시를 유지한다.
도 2는 도 1의 일반화된 컴퓨터 시스템의 특정한 구성 소자들의 일 실시예의 블록도를 도시한다. 제 1 프로세서(11A)의 많은 구성 요소들, 프로세서 버스 구성 요소들(126A 및 128A), 뿐 아니라 브리지(130)가 도시된다.
도시된 바와 같이, 프로세서(110A)는 L/S 커맨드 버스 및 록 신호 라인을 통하여 로드/저장 유닛(114)에 결합된 디코드 유닛(112)을 포함한다. 로드/저장 유닛(114)은 어드레스 및 데이터 버스, 록토글 요구 신호 라인 및 록토글 승인 신호 라인을 통하여 시스템 인터페이스 컨트롤러(116)에 결합된다. 시스템 인터페이스 컨트롤러(116)는 리소스 카운터(118)(A-카운터) 및 커미트 카운터(119)(C-카운터)를 포함한다. 제 1 프로세서(110A) 및 제 2 프로세서(110B)는 각각 개별적인 프로세서 버스들을 통하여 브리지(1340)에 결합된다. 각 프로세서 버스는 전용 소스-동기 클록 라인들(126)을 갖는 양방향 데이터 버스와, 각각 관련된 소스-동기 클록 라인(128)을 갖는 단방향 어드레스 인 및 어드레스 아웃 라인들(어드레스 버스)를 포함한다. 제 1 프로세서(110A)와 브리지(130) 간의 프로세서 버스는 적어도 제 1 입력 포트를 통하여 브리지(130)를 결합시키는, 데이터 버스(126A) 및 어드레스 버스(128A)를 포함한다. 제 2 프로세서(110B)와 브리지(130) 간의 프로세서 버스는 적어도 제 2 입력 포트를 통하여 브리지(130)를 결합시키는, 데이터 버스(126B) 및 어드레스 버스(128B)를 포함한다. 브리지(130)는 제 1 프로세서(110A)로부터의 커맨드들을 저장하도록 전용되는 제 1 프로세서 큐(134A) 및 제 2 프로세서(110B)로부터의 커맨드들을 저장하도록 전용되는 제 2 프로세서 큐(134B)를 포함한다. 메모리(140)가 또한 브리지(130)에 결합된다.
일반적으로, 록이 표시되지 않을 때의 컴퓨터 시스템의 오퍼레이션은 다음과 같다. 제 1 프로세서(110A)의 디코드 유닛(112)이 명령들을 수신하여 디코드한다. 디코드 유닛(112)은 메모리 오퍼레이션들(메모리로의 로드 또는 저장을 지정하는 명령들)을 로드/저장 유닛(114)으로 전달한다. 로드/저장 유닛(114)은 메모리 오퍼레이션들을 내부 데이터 캐시(미도시)로 전달하며, 시스템 서비스를 요구하는 메모리 오퍼레이션들을 시스템 인터페이스 컨트롤러(116)로 전달한다. 시스템 인터페이스 컨트롤러(116)는 어드레스 버스들(128A) 및 데이터 버스(126A)를 이용하여 브리지(130)와 같은 시스템 장치로 오퍼레이션들을 전달한다. 좀 더 특정하게 설명하면, 시스템 인터페이스 컨트롤러(116)는 어드레스 버스들(128A)의 어드레스 아웃 부분을 통하여 어드레스 및 커맨드 정보를 전송한다. 브리지(130)는 어드레스 버스들(128A)의 어드레스 인 부분 상에서의, 해당하는 데이터 전송 준비를 신호한다. 이후, 해당하는 데이터가 데이터 버스(126A)를 통하여 전송된다.
브리지(130)로 전송되는 대부분의 커맨드들에 대하여, 시스템 인터페이스 컨트롤러(116)는 리소스 카운터(118)(A-카운터) 및 커미트 카운터(119)(C-카운터)를 증가시킨다. 브리지(130) 내의 제어 로직(136)은 제 1 프로세서(110A) 및 제 2 프로세서(110B)로부터 커맨드들을 수신한 다음, 커맨드들을 각각의 큐 프로세서 A 큐(134A) 및 프로세서 B 큐(134B) 내에 위치시킨다. 제어 로직(136)은, 가령 라운드 로빈 또는 마지막으로 액세스된 알고리즘을 따르는 것과 같은 미리규정된 프로토콜에 의해 규정된 순서로 프로세서 A 큐(134A) 및 프로세서 B 큐(134B)로부터의 커맨드들을 이동시킨다. 프로세서(110B)는 동일한 방식으로 작동한다. 특정한 커맨드들은 리소스 카운터(118) 및/또는 커미트 카운터(119)에 의해 트랙되지 않을 수도 있음을 유념하자. 트랙되지 않는 예시적인 커맨드들은 특정한 프로브 응답들, 특정한 버퍼 플러쉬들, 비 오퍼레이션 커맨드들(NOPs), 및 특별한 블록 메모리 커맨드들을 포함할 수도 있다.
가령 프로세서 A 큐(134A)로부터의 커맨드를 이동시킴으로써, 큐 엔트리를 자유롭게 하는 것에 응답하여, 제어 로직(136)은 각 프로세서(110A)의 시스템 인터페이스 컨트롤러(116)에 애크날러쥐 신호를 보낸다. 시스템 인터페이스 컨트롤러(116)는 브리지(130)로부터의 애크날러쥐 신호의 수신에 응답하여 리소스 카운터(118)를 감소시킨다. 시스템 마스터의 역할을 하는 브리지(130)가 특정한 프로세서 커맨드에 대한 코히런시 포인트에 도달하게 되면, 제어 로직(136)은 커미트 신호를 적절한 시스템 인터페이스 컨트롤러(116)로 전송한다. 시스템 인터페이스 컨트롤러(116)는 브리지(130)로부터의 커미트 신호의 수신에 응답하여 커미트 카운터(119)를 감소시키도록 구성된다. 바람직한 실시예에서, 프로세서(110)는 커미트 신호와 어떤 특정한 프로세서 커맨드를 관련시키지 않는 다는 것을 유념하자. 브리지(130)는 어떠한 하나의 프로세서 커맨드가 코히런시 포인트에 도달할 때 커미트 신호를 단순히 돌려보낸다. 애크날러쥐 및 커미트 신호는 어드레스 버스(128A)의 어드레스 인 부분 상의 어드레스 인 커맨드의 일부가 될 수도 있다.
일 실시예에서, 프로세서들(110A 및 110B)은 리소스 카운터(118) 및/또는 커미트 카운터(119) 내의 값이 소정의 값에 도달할 때, 브리지(130)로 새로운 커맨드들을 전송하는 것을 중지시키도록 구성된다. 리소스 카운터(118)는 각 프로세서(110)로 하여금 얼마나 많은 커맨드들이 브리지(130)에 의해 애크날러쥐되지 않고 브리지(130)로 전송되었는 지를 추적할 수 있게 한다. 커미트 카운터(119)는 각 프로세서(110)로 하여금, 아직 코히런시 포인트에 도달하지 않은, 브리지(130)로 전송된 미해결(outstanding) 커맨드들의 수를 제한하게 할 수 있다.
많은 실시예들에서, 리소스 카운터(118)의 이용 및 해석이 다르다는 것을 유념하자. 일 실시예에서, 4-엔트리 공통 프로세서 큐(134)는 두 개의 더 큰 큐들을 공급하는데, 이들 중 하나는 판독을 위한 것이며 다른 하나는 기록을 위한 것이다. 애크날쥐 한계(아직 애크날러쥐되지 않은 프로세서(110) 발생 커맨드들의 수에 대한 한계)는 4로 설정된다. 다른 실시예에서는, 한 프로세서 큐(134)가 판독 및 기록을 보유한다. A-비트는 공통 큐 엔트리가 할당 해제될 때(deallocated), 브리지(130)로부터 프로세서(110)로 되돌려진다.
대체적으로 말하여, 하나 또는 그 이상의 프로세서들(100)중 제 1 프로세서(110A)가 메모리(140)로의 어타믹 액세스, 또는 록을 요구하는 하나 또는 그 이상의 다른 모든 오퍼레이션들을 원할 때, 제 1 프로세서(110A)는 제 1 록토글 커맨드를, 가령 브리지(130)와 같은 시스템 마스터로 전송한다. 특정한 환경하에서 록토글 커맨드 이후 특정한 커맨드들이 전송될 수도 있음에도 불구하고, 제 1 프로세서(110A)는 전형적으로 제 1 록토글 커맨드가 전달되고 록이 표시될 때 까지 브리지(130)로 더 이상의 커맨드들을 전송하는 것을 억제한다. 브리지(130)는 제 1 록토글 커맨드에 이를 때 까지 하나 또는 그 이상의 프로세서 큐(134)로부터 커맨드들을 선택한다. 제 1 록토글 커맨드 실행시, 브리지(130)는 록 레지스터(132) 내의 록 상태를 검사하고, 제 1 프로세서(110A)에 대한 록을 시작하며, 록토글 커맨드 전달시 제 1 프로세서(110A)에 통지한다. 록 상태가 제 1 프로세서(110A)에 대한 록을 나타내는 동안, 브리지(130)는 다른 모든 프로세서들(110)로부터의 커맨드들을 무시한다. 제 1 프로세서(110A)는 록을 지정한 하나 또는 그 이상의 명령들을 실행을 위해 브리지(130)로 전송한다. 이후, 제 1 프로세서(110A)는 제 2 록토글 커맨드를 브리지(130)로 전송하여 록 상태를 언록으로 설정한다. 록을 지정한 명령들을 완료하고 제 2 록토글 커맨드를 실행한 후, 브리지(130)는 제 2 프로세서(110A)에 록 상태가 다시 언록으로 설정되었음을 통지한다. 이후, 브리지(130)는 소정의 프로토콜에 따라 하나 또는 그 이상의 큐들(134) 전부로부터 커맨드들을 선택하는 단계로 되돌아간다.
도시된 시스템에서, 소스-동기 클록이 관련된 데이터와 동일한 방향으로 전송된다. 소스-동기 클록 및 그의 관련 데이터가 함께 수신된다. 또한, "소스-동기 클록"은 "전송 클록(forwarded clock)"으로 일컬어진다는 것을 유념하자. 또한, 예시적인 실시예에서 소스-동기 클록킹이 도시되기는 하였지만, 컴퓨터 시스템에 적절한 모든 클록킹 메커니즘이 이용될 수도 있음을 유념하자. 데이터 버스(126A) 및 어드레스 버스들(128A) 또한 단지 예시적으로 제시된 것일 뿐이다. 도 2에도시된 컴퓨터 시스템의 작동에 관련된 많은 세부사항들은 이하 도 3 내지 5의 설명과 관련하여 제공된다.
도 3은, 가령 도 1 및 2에 도시된 컴퓨터 시스템과 같은 컴퓨터 시스템에서 록 오퍼레이션들을 수행하기 위한 전체적인 오퍼레이션들의 흐름도의 일 실시예를 도시한다. 도 3에 도시된 오퍼레이션들이 흐름도의 형태로 도시되기는 하였지만, 도 3의 많은 연산들은 다른 순서로 이루어지거나, 또는 전혀 이루어지지 않을 수도 있음을 유념하자.
미해결된 어떠한 록도 없기 때문에, 하나 또는 그 이상의 프로세서들(110)중 제 1 프로세서(110A)는 브리지(130)에 록토글 커맨드를 제공하여 록을 시작하게 한다. 제 1 프로세서(110A)는 또한 리소스 카운터(118) 및 커미트 카운터(119)를 증가시키며, 어떠한 실시예들이 추론적인(speculative) 커맨드들의 시작을 선택할 수도 있음에도 불구하고, 일반적으로 다른 커맨드들을 시작하지 못하게 한다. 브리지(130)는 록토글 커맨드를 적절한 프로세서 큐(134) 내에 버퍼링한다(단계 415). 브리지는 록토글 커맨드가 이루어질 때 까지 하나 또는 그 이상의 프로세서 큐들(134)로부터 요구된 오퍼레이션들을 수행한다(단계 420). 대부분의 다른 오퍼레이션들과 유사하게, 브리지(130)는 록토글 커맨드가 프로세서 큐(134A)로부터 제거될 때, 애크날러쥐 신호(예를 들어, A-비트)를 적절한 프로세서(110A)로 전송한다. 프로세서(110A)는 A-비트를 수신하고 리소스 카운터(118)를 감소시킨다(단계 430).
브리지(130)는, 예를 들어 하기의 도 5와 관련하여 설명되는 바와 같이 록토글 커맨드를 처리한다(단계 435). 브리지(130)는 록이 설정될 때 커미트 신호(예를들어, C-비트)를 프로세서(110A)로 전송한다(단계 440). 프로세서(110A)는 C-비트를 수신하고 커미트 카운터(119)를 감소시킨다(단계 445). 일단 커미트 카운터(119)가 제로가 되면, 프로세서(110A)는 록이 설정되었음을 통지받는다. 이후, 프로세서(110A)는 록이 액티브한 동안 수행될 하나 또는 그 이상의 커맨드들을 브리지(130)로 전송하며, 이후 제 2 록토글 커맨드를 전송한다(단계 450). 브리지(130)는 록이 액티브한 동안 하나 또는 그 이상의 커맨드들을 처리한다(단계 455). 이후, 브리지(130)는 록을 취소하기 위해 제 2 록토글 커맨드를 처리한다(단계 460). 제 2 록토글 커맨드는 제 1 록토글 커맨드와 유사한 방법으로 처리된다.
도 4는 록 오퍼레이션들을 수행하기 위하여 브리지(130)와 상호 작용을 하는 도 2의 프로세서들(110A 및 110B)중 제 1 프로세서(110A)의 오퍼레이션의 흐름도의 일 실시예를 도시한다. 도 4에 나타낸 오퍼레이션들은 단지 예시적인 것이며, 도시된 오퍼레이션 흐름도의 일부가 아닌 프로세서(110) 또는 브리지(130)의 부가적인 특징들 또는 오퍼레이션들을 포함하지 않는다. 도 4에 도시된 오퍼레이션들이 흐름도의 형태로 도시되기는 하였지만, 도 4의 다양한 오퍼레이션들이 다른 순서로 일어나거나, 또는 일어나지 않을 수도 있다는 것을 유념하자.
디코드 유닛(112)은 록을 지정하는 하나 또는 그 이상의 명령들을 확인한다(단계 310). 다음으로, 디코드 유닛(112)은 로드/저장 유닛(114)에 록을 지정하는 하나 또는 그 이상의 메모리 연산들을 알린다(단계 315). 좀 더 명확하게 설명하면, 디코드 유닛(112)은 하나 또는 그 이상의 메모리 연산들을 로드/저장 유닛(114)로 전송하며 록 신호를 표명한다. 로드/저장 유닛(114)은 메모리 연산들및 해당하는 록 요구를 버퍼링한다(단계 320). 록 요구가 가장 오래된 미해결 오퍼레이션일 때, 로드/저장 유닛(114)은 시스템 인터페이스 컨트롤러(116)에 록토글 요구를 한다(단계 325).
시스템 인터페이스 컨트롤러(116)는 브리지(130)에 록을 위한 제 1 록토글 커맨드를 제공한다(단계 330). 시스템 인터페이스 컨트롤러(116)는 브리지(130)가 제 1 록토글 커맨드를 실행할 때 까지 기다린다(단계 335). 시스템 인터페이스 컨트롤러(116)는 브리지(130)에 제 1 록토글 커맨드를 제공하는 것에 이어서, 록토글 승인 신호를 로드/저장 유닛(114)로 되돌려준다(단계 340).
로드/저장 유닛(114)은 시스템 인터페이스 컨트롤러(116)로부터의 록토글 승인 신호의 수신에 응답하여, 록을 지정하는 하나 또는 그 이상의 오퍼레이션들을 수행한다(단계 345). 로드/저장 유닛(114)은 시스템 인터페이스 컨트롤러(116)에 록을 해제하기 위한 제 2 록 요구를 전송한다(단계 350). 시스템 인터페이스 컨트롤러(116)는 브리지(130)에 언록을 위한 제 2 록토글 커맨드를 제공한다(단계 355). 시스템 인터페이스 컨트롤러(116)는 로드/저장 유닛(114)으로부터의 (언록을 위한) 제 2 록토글 요구의 수신에 응답하여 언록을 위한 제 2 록토글 커맨드를 브리지(130)에 제공한다. 시스템 인터페이스 컨트롤러(116)는 브리지(130)가 언록을 위한 록토글 커맨드를 실행할 때 까지 기다린 다음(단계 360), 록토글 승인 신호를 되돌려준다.
도 5는 제어 로직(136)이 많은 프로세서 큐들(134)로부터 커맨드들을 제거할 때 브리지(130)의 오퍼레이션들의 하이 레벨 흐름도의 일 실시예를 도시한다. 도 5에 도시된 오퍼레이션들이 흐름도의 형태로 도시되기는 하였지만, 도 5의 다양한 오퍼레이션들은 다른 순서로 이루어질 수도 있으며, 또는 전혀 이루어지지 않을 수도 있음을 유념하자.
제어 로직(136)은 먼저 어떠한 미해결 록들이 있는 지를 확인하기 위한 체크를 한다(결정 블록 510). 미해결 록들은 록 레지스터(132) 내에 록 상태에 의해 표시되거나, 또는 바람직한 경우, 록 상태를 나타내는 다른 수단에 의해 표시될 수도 있다. 좀 더 특정하게는, 록 레지스터(132) 내의 록 상태는 노록(no lock), 프로세서(110A)에 대한 록, 또는 프로세서(110B)에 대한 록을 나타낼 수도 있다. 록 상태의 다른 엔코딩들은, 바람직한 경우, 모든 수의 프로세서들(110)에 대한 록들을 나타낼 수도 있다. 미해결 록이 있다면, 제어 로직(136)은 록을 발생시켰던 프로세서 큐로부터만 커맨드들을 선택한다(단계 515). 제어 로직(136)은 록토글 커맨드인지를 알아보기 위해 커맨드를 검사한다(결정 블록 520). 만일 커맨드가 록토글 커맨드라면, 제어 로직(136)은 미해결 록을 재설정한다(단계 525). 제어 로직(136)은 현존하는 록이 있으며 록토글 커맨드가 실행된다면, 록 상태를 노록으로 설정한다. 제어 로직(136)은 이제 브리지(130)의 정상적인 동작을 계속하여 수행한다.
만일 결정 블록(520)에서 커맨드가 록토글 커맨드가 아니라면, 브리지(130)는 록이 계속되도록 하면서 선택된 커맨드를 처리한다(단계 530).
만일 결정 블록(510)에서 어떠한 미해결 록들도 없다면, 제어 로직(136)은 어떠한 적절한 프로세서 큐(134)로부터 적절한 커맨드를 선택한다(단계 535). 어떤 커맨드들인지, 그리고 어떤 큐(134)로부터인지를 결정하기 위한 프로토콜은 바람직한 모든 적절한 프로토콜이 될 수도 있다. 제어 로직(136)은 결정 블록(540)에서 커맨드가 록토글 커맨드인지를 확인하기 위한 체크를 한다. 만일 커맨드가 록토글 커맨드라면, 제어 로직은 가령 해당하는 프로세서(110)에 대한 록을 나타내기 위해 록 레지스터(132)의 록 상태를 설정하는 것과 같이, 록을 설정한다(단계 545).
만일 결정 블록(540)에서 커맨드가 록토글 커맨드가 아니라면, 제어 로직(136)은 단순히 선택된 커맨드를 처리한다(단계 530).
도 6은 도 1의 컴퓨터 시스템 내에서의, 본원에서는 SysAddOut 커맨드 포맷으로서 일컬어지는, 프로세서-개시된 커맨드들에 대한 포맷의 일 실시예의 블록도를 도시한다. 바람직한 실시예에서, SysAddOut 커맨드 포맷은 프로세서(110)가 록토글 커맨드 뿐 아니라 무 데이터 이동, 및 캐시-블록 상태 변화 방송에 의한 판독, 기록, 프로브 응답을 위해 시스템(130)으로 커맨드들을 발생시킬 때에 이용된다. SysAddOut 커맨드 포맷은 바람직하게는 프로세서 어드레스 버스(128)의 어드레스 아웃 라인들의 라인들 [14:2]#을 통하여 전송된다.
도시된 바와 같이, SysAddOut 커맨드 포맷은 전송 클록 신호의 라이징 및 폴링 에지 상에서 클록되는 일 실시예에서, 두 개의 완전 전송 클록 주기들을 통한 네 개의 비트-타임즈 스프레드를 포함한다. 도 6에서 ADDRESS로 표시된 물리적인 어드레스의 많은 비트들은 네 개의 비트-타임 주기들을 통하여 분배된다. 다른 커맨드 필드들은 M1 비트, COMMAND[4:l0] 필드, M2 비트, MASK[7:0] 비트, CH 필드, ID[2:0] 필드, 및 RV 비트를 포함한다.
도시된 바와 같이, 비트-타임 0은 M1 비트, COMMAND[4:0] 필드, 및 ADDRESS의 일부를 포함한다. M1 비트는 초기의 프로브 미스(miss) 표시자이다. M1이 [1]로 설정된다면, 이 프로세서(110)에 의해 수신된 가장 오래된 프로브가 결과적으로 미스가 된다. 프로브가 비트-타임 0이 된다면 M1이 표명된다. COMMAND[4:0] 필드는 시스템(130)에 프로세서(110)로부터의 커맨드 엔코딩을 나타내는 데에 이용된다. COMMAND[4:0] 필드의 다양한 엔코딩들은 판독, 기록, 프로브 응답들 등을 나타낸다. 한 특정 엔코딩은 록토글 커맨드를 나타낸다.
도시된 바와 같이, 비트-타임 1은 ADDRESS의 다른 부분을 포함한다.
도시된 바와 같이, 비트-타임 2는 M2 비트, MASK[7:0] 필드, CH 필드, 및 ID[2:0] 필드를 포함한다. M2 비트는 최근의 프로브 미스 표시자 또는 캐시 히트 확인이다. M2가 [1]로 설정된다면, 이 프로세서(110)에 의해 수신된 가장 오래된 프로브는 결과적으로 미스가 된다. 프로브가 비트-타임 0 이후, 그리고 비트-타임 2 이전에 정되었다면, M2가 표명된다. M2는 또한, 프로브 히트를 나타내지만 어떠한 데이터 이동도 없음을 나타내는 CH 비트를 확인한다. MASK[7:0] 필드는 데이터 전송 마스크이다. MASK[7:0] 필드는 모든 하위-캐시 블록 커맨드들(바이트, LW, QW)에 이용되며, 데이터 버스(128)의 어떠한 바이트(예를 들어, 8비트), 롱 워드들(예를 들어, 16 비트), 또는 쿼드워드들(예를 들어, 32 비트)이 요구된 데이터 전송에 대하여 유효한지를 나타낸다. CH 비트는 캐시 히트 비트이다. 어떠한 데이터 이동도 없음에 의해 프로세서 캐시 히트 내에 야기되는 가장 오래된 미해결 프로브가 필요한 경우, 캐시 히트 비트는 [예를 들어, 1]로 설정된다. 캐시 히트 비트가 설정될 때에는 M2 비트가 설정된다. ID[2:0] 필드는 버퍼 확인 필드이다.ID[2:0] 필드는 미스 어드레스 버퍼(MAB), 빅팀 데이터 버퍼(VDB), 또는 COMMAND[4:0] 필드 내의 커맨드에 해당하는 기록 데이터 버퍼(WDB) 엔트리를 지정한다. ID[2:0] 필드는 커맨드에 따라 WDB 또는 VDB를 암시적으로 맵핑한다.
도시된 바와 같이, 비트-타임 3은 RV 비트 및 ADDRESS의 다른 부분을 포함한다. RV 비트는 COMMAND[4:0] 필드 내의 추론적인 커맨드들을 유효하게 하는 판독 유효 비트이다.
도 7은 도 1의 컴퓨터 시스템 내에서, 본원에서는 SysAddIn 커맨드 포맷으로 일컬어지는, 메모리 코히런시를 유지하고 데이터를 이동시키기 위해 시스템-개시된 커맨드들에 대한 포맷의 일 실시예의 블록도이다. 바람직한 실시예에서, SysAddIn 커맨드 포맷은 브리지(130)가 프로세서(110)의 캐시들을 프로브하고 프로세서(110)로(부터의) 데이터 이동을 개시하기 위해 프로세서(110)로 커맨드들을 발생시켰을 때에 이용된다. SysAddIn 커맨드 포맷은 바람직하게는 프로세서 어드레스 버스(128)의 어드레스 인 라인들의 라인들 [14:2]#을 통하여 전송된다.
도시된 바와 같이, SysAddIn 커맨드 포맷은 전송 클록 신호의 라이징 및 폴링 에지 상에서 클록되는 일 실시예에서, 두 개의 완전 전송 클록 주기들을 통한 네 개의 비트-타임즈 스프레드를 포함한다. 도 7에서 ADDRESS로 표시된 물리적인 어드레스는 네 개의 비트-타임 주기들을 통하여 분배된다. 나머지 커맨드 필드들은 프로브 타입 PROBE[4:0] 필드, 시스템 데이터 커맨드 SYSDC[4:0] 필드, 해제 빅팀 버퍼 RVB 비트, 해제 프로브 버퍼 RPB 비트, 애크날러쥐 A-비트, 버퍼 확인 번호 ID[3:0] 필드, 및 커미트 C-비트를 포함한다.
프로브 타입 PROBE[4:0] 필드는 프로세서(110)가 데이터를 브리지(130)로 되돌려야 하는 상태를 나타내며, 프로브가 캐시-블록 히트로 끝난다면, 프로세서에 대한 캐시 상태는 캐시 블록을 변경시켜야 한다. 시스템 데이터 커맨드 SYSDC[4:0] 필드는 프로세서로/로부터의 데이터 이동을 제어한다. 프로브 타입 PROBE[4:0] 필드 및 시스템 데이터 커맨드 SYSDC[4:0] 필드의 다양한 엔코딩이 고려된다. RVB 비트는 표명될 때 프로세서(110)에 ID[3:0] 필드에 해당하는 VDB 또는 WDB 엔트리를 해제하라는 신호를 보낸다. RPB 비트는 표명될 때 프로세서에 ID[2:0]에 해당하는 VDB 내의 프로브 데이터 엔트리들을 해제하라는 신호를 보낸다.
애크날러쥐 비트는 프로세서-발생 커맨드를 애크날러쥐한다. 이후, 프로세서는 리소스 카운터를 감소시킨다. 버퍼 확인 번호 필드는 기록을 위한 RVB 및 RPB 비트들과 관련된 버퍼 ID 및 버퍼 해제 커맨드들을 확인한다. ID[3]는 WDB 엔트리를 나타내도록 세트되는 반면, 제거되는 ID[3]는 VDB 엔트리를 나타낸다. 프로세서-발생 커맨드가 코히런시 포인트에 이를 때를 나타내기 위해 커미트 비트가 시스템(130)에 의해 표명된다.
바람직한 실시예에서, 프로세서 버스(126A 및 128A)는 매사츄세츠주 매이너드의 디지털 장비 주식회사로부터의 EV6 버스의 변형과 호환가능하다. EV6 버스는 ALPHA 프로세서에 대하여 설계되었으며, 또한 디지털 장비 주식회사로부터 상업적으로 제조된다. 록토글 커맨드는 바람직하게는, 프로세서가 프로세서(110)일 때 록 또는 언록을 요구하기 위해 MB 코드 포인트를 이용하는데, 이는 메모리 베리어 트랜잭션이 프로세서들(110A 및 110B)에 의해 수행되지 않기 때문이다. 따라서, 록토글 커맨드는 프로세서(110)로 하여금 EV6 버스를 이용하고 ALPHA 프로세서와의 호환성을 여전히 유지할 수 있게 한다.
당업자들에게 있어서, 상기 설명을 완전히 이해했다면 본 발명의 다양한 변경들 및 변형들이 가능하다는 것은 명백할 것이다. 하기의 청구항들은 이러한 모든 변경들 및 변형들을 포함한다.
본 발명은 일반적으로 프로세서들 및 컴퓨터 시스템들에 적용가능하다.

Claims (10)

  1. 하나 또는 그 이상의 프로세서들(110A;110B)과;
    상기 하나 또는 그 이상의 프로세서들(110A;110B)에 결합된 브리지(130)를 포함하며;
    상기 하나 또는 그 이상의 프로세서들(110A;110B)중 제 1 프로세서는 상기 브리지(130)에 록토글 커맨드를 전송하도록 구성되고, 상기 브리지(130)는 상기 하나 또는 그 이상의 프로세서들(110A;110B)중 상기 제 1 프로세서로부터 상기 록토글 커맨드를 수신하는 것에 응답하여, 록 상태가 록의 결여를 나타내는 경우에는 상기 하나 또는 그 이상의 프로세서들(110A;110B)중 상기 제 1 프로세서에 대한 록을 나타내는 록 상태를 설정하고, 상기 록 상태가 상기 하나 또는 그 이상의 프로세서들(110A;110B)중 상기 제 1 프로세서에 대한 상기 록을 나타내는 경우에는 상기 록 상태를 상기 록의 결여를 나타내도록 설정하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 브리지(130)는 상기 록 상태가 상기 하나 또는 그 이상의 프로세서들(110A;110B)중 상기 제 1 프로세서에 대한 상기 록을 나타내는 동안, 상기 하나 또는 그 이상의 프로세서들(110A;110B)중 상기 제 1 프로세서로부터 수신된 커맨드들 만을 실행하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제 1 항에 있어서, 상기 브리지는 상기 록 상태를 저장하도록 구성된 록 레지스터(132)를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제 1 항에 있어서, 상기 하나 또는 그 이상의 프로세서들(110A;110B) 각각은:
    상기 록을 지정하는 제 1 하나 또는 그 이상의 명령들을 수신하여 디코드하도록 결합된 디코드 유닛(112)과, 여기서 상기 디코드 유닛(112)은 상기 제 1 하나 또는 그 이상의 명령들에 응답하여 록 표시를 발생시키도록 구성되며;
    상기 디코드 유닛(112)으로부터 상기 록 표시 및 상기 제 1 하나 또는 그 이상의 명령들을 수신하도록 결합된 로드/저장 유닛(114)과, 여기서 상기 로드/저장 유닛(114)은 실행을 위해 상기 제 1 하나 또는 그 이상의 명령들을 선택하고, 이에 응답하여 상기 록토글 커맨드에 대한 제 1 요구를 전송하도록 구성되며;
    상기 로드/저장 유닛(114)과 버스(126A;128A) 사이에 결합된 시스템 인터페이스 컨트롤러(116)를 포함하며, 상기 시스템 인터페이스 컨트롤러(116)는 상기 로드/저장 유닛(114)로부터 상기 록토글 커맨드에 대한 상기 제 1 요구를 수신하도록 구성되며, 상기 제 1 록토글 커맨드에 대한 상기 요구의 수신에 응답하여 상기 제 1 록토글 커맨드를 발생시키도록 구성되고;
    상기 로드/저장 유닛(114)은 상기 제 1 하나 또는 그 이상의 명령들의 실행에 응답하여 상기 록토글 커맨드에 대한 제 2 요구를 전송하도록 구성되며, 상기 시스템 인터페이스 컨트롤러(116)는 상기 로드/저장 유닛으로부터 상기 록토글 커맨드에 대한 상기 제 2 요구를 수신하고, 상기 록토글 커맨드에 대한 상기 제 2 요구의 수신에 응답하여 상기 제 2 록토글 커맨드를 발생시키도록 구성되는 것을 특징으로 컴퓨터 시스템.
  5. 제 1 항에 있어서, 상기 로드/저장 유닛(114)은 상기 록토글 커맨드에 대한 상기 제 1 요구가 가장 오래된 미해결 오퍼레이션이 될 때 까지, 상기 록토글 커맨드에 대한 상기 제 1 요구를 버퍼링하도록 구성되며;
    상기 시스템 인터페이스 컨트롤러(116)는 상기 제 1 록토글 커맨드가 실행되는 때를 상기 로드/저장 유닛(114)에 통지하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  6. 하나 또는 그 이상의 프로세서들(110A;110B) 및 브리지(130)를 포함하는 컴퓨터 시스템 작동 방법으로서,
    상기 하나 또는 그 이상의 프로세서들(110A;110B)중 제 1 프로세서(110A)로부터의 제 1 록토글 커맨드를 상기 브리지(130)로 전달하는 단계와;
    상기 제 1 록토글 커맨드에 응답하여 상기 제 1 프로세서(110A)에 의한 록을 나타내는 록 상태를 설정하고, 상기 록 상태가 록의 결여를 나타낸다는 것을 결정하는 단계와; 그리고
    상기 제 1 록토글 커맨드에 응답하여 상기 록 상태를 상기 록의 결여를 나타내도록 설정하고, 상기 록 상태가 상기 제 1 프로세서(110A)에 의한 상기 록을 나타낸다는 것을 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서, 상기 록 상태가 상기 제 1 프로세서에 대한 상기 록을 나타내는 동안, 상기 하나 또는 그 이상의 프로세서들(110A;110B)중 제 2 프로세서(110B)로부터의 커맨드들의 처리를 억제하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서,
    상기 록 상태를 상기 록을 나타내도록 설정하는 것에 응답하여, 상기 제 1 프로세서(110A)로부터의 상기 록을 지정하는 상기 하나 또는 그 이상의 커맨드들을 상기 브리지(130)로 전송하는 단계와; 그리고
    상기 제 1 프로세서(110A)로부터의 상기 록을 지정하는 상기 하나 또는 그 이상의 커맨드들을 상기 브리지(130)로 전송하는 단계에 이어서, 상기 제 1 프로세서(110A)로부터의 제 2 록토글 커맨드를 상기 브리지(130)로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 록 상태를 저장하도록 구성된 록 레지스터(132)와; 그리고
    상기 록 레지스터에 결합되고, 제 1 프로세서(110A)로부터 록토글 커맨드를 수신하도록 결합되는 제어 로직(136)을 포함하며, 상기 제어 로직(136)은 상기 록토글 커맨드에 응답하여 상기 록 레지스터 내에서의 상기 록 상태를 상기 제 1 프로세서(110A)에 의한 록을 나타내도록 설정하고 록 상태가 록의 결여를 나타낸다는 것을 결정하도록 구성되고, 그리고 상기 제어 로직(136)은 상기 록토글 커맨드에 응답하여 상기 록 상태를 상기 록의 결여를 나타내도록 설정하고, 상기 록 상태가 상기 제 1 프로세서(110A)에 의한 록을 나타낸다는 것을 결정하는 것을 특징으로 하는 버스 로직.
  10. 록 요구 및 록 해제 요구를 검출하도록 구성된 로드/저장 유닛(114)과, 여기서 상기 로드/저장 유닛(114)은 상기 록 요구 또는 상기 록 해제 요구에 응답하여 록 토글 요구를 발생시키도록 구성되며; 그리고
    상기 로드/저장 유닛(114)에 결합되며, 상기 록 토글 요구에 응답하여 록토글 커맨드를 전송하도록 구성된 시스템 인터페이스 컨트롤러(116)를 포함하는 것을 특징으로 하는 마이크로프로세서.
KR1020017016514A 1999-06-23 2000-01-11 로크의 시작 및 끝을 요구하는 데에 버스 커맨드 코드 포인트들을 최소로 이용하는 방법 KR100687822B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/339,351 US6430639B1 (en) 1999-06-23 1999-06-23 Minimizing use of bus command code points to request the start and end of a lock
US09/339,351 1999-06-23

Publications (2)

Publication Number Publication Date
KR20020012616A true KR20020012616A (ko) 2002-02-16
KR100687822B1 KR100687822B1 (ko) 2007-02-28

Family

ID=23328620

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017016514A KR100687822B1 (ko) 1999-06-23 2000-01-11 로크의 시작 및 끝을 요구하는 데에 버스 커맨드 코드 포인트들을 최소로 이용하는 방법

Country Status (6)

Country Link
US (1) US6430639B1 (ko)
EP (1) EP1190331B1 (ko)
JP (1) JP4565786B2 (ko)
KR (1) KR100687822B1 (ko)
DE (1) DE60002077T2 (ko)
WO (1) WO2000079404A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973543B1 (en) * 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US6934806B2 (en) * 2002-09-23 2005-08-23 International Business Machines Corporation Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system
US7076680B1 (en) * 2003-03-14 2006-07-11 Sun Microsystems, Inc. Method and apparatus for providing skew compensation using a self-timed source-synchronous network
DE102006055513A1 (de) * 2006-05-24 2007-11-29 Robert Bosch Gmbh Kommunikationsbaustein
DE102007063291A1 (de) * 2007-12-27 2009-07-02 Robert Bosch Gmbh Sicherheitssteuerung
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US10572387B2 (en) * 2018-01-11 2020-02-25 International Business Machines Corporation Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer
US11163688B2 (en) 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5175837A (en) 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
JP2830116B2 (ja) * 1989-07-27 1998-12-02 日本電気株式会社 マルチプロセッサシステムにおけるロック制御機構
US5615373A (en) * 1993-08-26 1997-03-25 International Business Machines Corporation Data lock management in a distributed file server system determines variable lock lifetime in response to request to access data object
DE69435090T2 (de) 1993-12-01 2009-06-10 Marathon Technologies Corp., Stow Rechnersystem mit Steuereinheiten und Rechnerelementen
US5586253A (en) 1994-12-15 1996-12-17 Stratus Computer Method and apparatus for validating I/O addresses in a fault-tolerant computer system
US5706446A (en) * 1995-05-18 1998-01-06 Unisys Corporation Arbitration system for bus requestors with deadlock prevention
US6560682B1 (en) 1997-10-03 2003-05-06 Intel Corporation System and method for terminating lock-step sequences in a multiprocessor system
US9919801B2 (en) * 2015-04-10 2018-03-20 B/E Aerospace, Inc. Articulating foot well divider for adjacent parallel passenger seats

Also Published As

Publication number Publication date
DE60002077D1 (de) 2003-05-15
WO2000079404A1 (en) 2000-12-28
EP1190331B1 (en) 2003-04-09
US6430639B1 (en) 2002-08-06
DE60002077T2 (de) 2004-03-04
JP2003527652A (ja) 2003-09-16
EP1190331A1 (en) 2002-03-27
JP4565786B2 (ja) 2010-10-20
KR100687822B1 (ko) 2007-02-28

Similar Documents

Publication Publication Date Title
US6012120A (en) Method and apparatus for providing DMA transfers between devices coupled to different host bus bridges
US6128711A (en) Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
KR100360064B1 (ko) 고도로파이프라인된버스구조
US6473849B1 (en) Implementing locks in a distributed processing system
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
US5983326A (en) Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5572703A (en) Method and apparatus for snoop stretching using signals that convey snoop results
US5860159A (en) Multiprocessing system including an apparatus for optimizing spin--lock operations
US6681283B1 (en) Coherent data apparatus for an on-chip split transaction system bus
US6021456A (en) Method for communicating interrupt data structure in a multi-processor computer system
US8037253B2 (en) Method and apparatus for global ordering to insure latency independent coherence
US5991819A (en) Dual-ported memory controller which maintains cache coherency using a memory line status table
US5893153A (en) Method and apparatus for preventing a race condition and maintaining cache coherency in a processor with integrated cache memory and input/output control
US6292860B1 (en) Method for preventing deadlock by suspending operation of processors, bridges, and devices
US7523260B2 (en) Propagating data using mirrored lock caches
US20030217115A1 (en) Load-linked/store conditional mechanism in a CC-NUMA system
US5659709A (en) Write-back and snoop write-back buffer to prevent deadlock and to enhance performance in an in-order protocol multiprocessing bus
JPH1031625A (ja) マルチ・プロセッサ・システムにおける改良されたコピーバック性能のためのライトバック・バッファ
US20220114098A1 (en) System, apparatus and methods for performing shared memory operations
US6970963B2 (en) Apparatus and method for synchronizing multiple accesses to common resources
KR100687822B1 (ko) 로크의 시작 및 끝을 요구하는 데에 버스 커맨드 코드 포인트들을 최소로 이용하는 방법
US5778441A (en) Method and apparatus for accessing split lock variables in a computer system
US6862646B2 (en) Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
US6934806B2 (en) Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system

Legal Events

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

Payment date: 20130130

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140204

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150120

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 13