KR20010031689A - 비-원자 연산동안 메모리에 배타적 접근을 제공하는분리된 잠금연산방법 - Google Patents

비-원자 연산동안 메모리에 배타적 접근을 제공하는분리된 잠금연산방법 Download PDF

Info

Publication number
KR20010031689A
KR20010031689A KR1020007004751A KR20007004751A KR20010031689A KR 20010031689 A KR20010031689 A KR 20010031689A KR 1020007004751 A KR1020007004751 A KR 1020007004751A KR 20007004751 A KR20007004751 A KR 20007004751A KR 20010031689 A KR20010031689 A KR 20010031689A
Authority
KR
South Korea
Prior art keywords
processor
message
lock
idle
cache
Prior art date
Application number
KR1020007004751A
Other languages
English (en)
Other versions
KR100381618B1 (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 KR20010031689A publication Critical patent/KR20010031689A/ko
Application granted granted Critical
Publication of KR100381618B1 publication Critical patent/KR100381618B1/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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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/0817Cache consistency protocols using directory methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Lock And Its Accessories (AREA)

Abstract

다중 프로세서(540)에 의해 접근되는 공유 메모리(110)에 있는 데이터에 대해 비-원자 연산을 수행하는 동안 교착상태를 방지하는 시스템 및 방법은 분할된 잠금을 실시할 메시지를 보낸다. 메시지를 수단으로 요청 프로세서(540)는 공유 메모리(110)에 대한 배타적 접근을 허가받아서 다른 프로세서(540)는 비-원자 연산이 종료될 때까지 동일 데이터에 접근할 수 없다. 교착상태 방지에 사용된 메시지는 분할된 잠금 요청, 잠금 메시지, 허가 메시지, 유휴 진행 메시지 및 유휴 해제 메시지를 포함한다. 상기 메시지를 사용함으로써 본 발명은 메모리(110)에 배타적 접근을 바라는 요청을 다중 프로세서(540)로부터 받고, 모든 요청을 순서지정하고 요청을 한 제 1 프로세서(540)에 배타적 접근을 허용한다.

Description

비-원자 연산동안 메모리에 배타적 접근을 제공하는 분리된 잠금연산방법{SPLIT LOCK OPERATION TO PROVIDE EXCLUSIVE ACCESS TO MEMORY DURING NON-ATOMIC OPERATIONS}
멀티프로세서 시스템은 자체 캐시 시스템을 갖는 여러 프로세서에 의해 공유되는 주기억장치를 포함한다. 캐시 기억장치는 호스트 프로세서와 주기억장치간의 버퍼이다. 캐시 기억장치는 가장 최근에 접근된 지령 또는 데이터를 저장하는 호스트 프로세서에 가까이 위치한 신속한 소형 기억장치이다. 캐시는 호스트 프로세서가 빈번히 요구하는 정보를 저장함으로써 시스템 성능을 향상시킨다. 캐시에 정보를 저장하고 주기억장치에 접근과 관련된 장시간 지연을 피함으로써 시스템 성능을 향상시킨다. 각 캐시 시스템은 다중 레벨의 캐시를 포함할 수 있다.(Intel사 p6프로세서는 2 레벨 캐시 기억장치를 가진다)
멀티프로세서는 데이터가 다중 프로세서에 의해 동시에 공유될 수 있도록 한다. 예컨대 두개의 프로세서 A와 B를 갖는 멀티프로세서 시스템은 두 프로세서의 각 캐시에 데이터 D를 동시에 저장할 수 있도록 한다. 그러나 멀티프로세서 시스템은 캐시 일관성 문제를 도입한다. 캐시 일관성 문제는 프로세서 A가 데이터 D를 변형시킬때 동시에 B가 데이터 D를 사용하는 경우에 발생한다. A가 데이터 D를 변형시키면 B의 캐시에 저장된 데이터 D는 더이상 타당하지 않다. 프로세서 B가 캐시로부터 D를 판독하면 잘못된 D값이 복귀되므로 이러한 상황은 일관성이 없다. 캐시 일관성은 A캐시에 저장된 변형된 데이터와 동일하게 될때까지 B가 데이터 D를 사용할 수 없게 함으로써 달성될 수 있다.
캐시 일관성을 보장하는 한가지 방법은 디렉토리 프로토콜 사용이다. 디렉토리 프로토콜은 프로세서가 특정 캐시 라인상에 실행할 수 있는 연산을 위한 기준으로서 작용함으로써 시스템내 모든 캐시의 일관성을 보장한다. 캐시라인은 메모리와 캐시간에 전달된 최소 데이터 단위이다. 캐시라인 변형이 허용되기 이전에 프로세서는 캐시라인에 대한 접근 권한을 가져야 한다. 이러한 접근은 다양한 형태(캐시라인 판독을 위한 접근이나 캐시라인 변형을 위한 접근)이며 오너쉽이라 칭한다. 간단한 2프로세서 시스템에서 캐시라인의 오너쉽은 메시지 시스템을 통해 획득되며, 프로세서 A는 현재 프로세서 B에 의해 소유되는 캐시라인의 특정 수준의 오너쉽(판독 또는 쓰기/변형)을 요청한다. 오너쉽 획득을 위해서 프로세서 B는 프로세서 A의 요구 메시지에 응답한다.
일반성은 캐시라인 간의 관계가 아니라 단일 캐시라인의 타당성과 관련된다. 예컨대 위에서 제시된 프로토콜에 따라서 제 1 프로세서(P1)가 제1값(V1) 쓰기를 하고 이에서 제 2값(V2)으로 필기를 하며, 제 2 프로세서(P2)가 과거값(V1)과 새로운 값(V2)을 포착할 수 있다. V1과 V2간의 관계를 메모리 일관성이라 부른다.
메모리 비일관성은 두가지 원인을 가진다. 첫째 V1으로 필기 오너쉽을 획득하는 P1과 V1값을 타당하지 않게 만드는 메시지를 수신하는 P2간에 지연이 있을 수 있다. 이것은 데이터 아이템의 오너쉽이 공유될 때(또는 읽기 전용)일어난다. 프로세서가 타당하지 않은 메시지를 수신할 때까지 특정 프로세서에 대해 쓰기가 이루어지지 못한다.
메모리 비일관성의 두번째 원인은 메모리가 분배될 때 일어난다. 이 경우에 한 메모리 서비스유닛은 다른 메모리 서비스유닛보다 분주하다. 이것은 요청된 순서와 동일한 순서로 접근될 필요가 없는 메모리를 가져온다. 게다가 성능 때문에 프로세서는 미리 데이터를 요구하고 필요할 때까지 데이터를 저장한다. 이것은 프로그램 순서와 상이한 순서로 데이터 아이템을 수득하게 된다. 메모리 일관성의 세부사항은 Computer Architecture a Quantitative Approach(2판, Morgan kanfmann publishers, 1996, 708-721, Hennessy & patterson)을 참조하시오.
메모리 일관성 확립에 사용되는 한가지 방법은 ″잠금″ 연산을 사용한다. 이 방법에서 쓰기 프로세서는 다른 프로세서가 데이터에 접근하는 것을 막기 위해서 공유 데이터를 ″잠그고″ 공유데이터를 쓰고 이후에 다른 프로세서에 의해 사용할 수 있도록 공유데이터를 ″잠금해제″ 한다. 유사한 방식으로 읽기 프로세서는 공유데이터를 ″잠그고″ 공유데이터를 읽고 이후에 공유데이터를 ″잠금해제″한다.
따라서 잠금 연산은 메모리를 동기화한다. 우선 잠금 연산이 출발장벽으로서 작용한다. 잠금 연산을 실행하는 프로세서는 그 밖의 다른 프로세서가 데이터를 써서 종료될 때까지 대기해야 한다. 쓰기가 수행되었는지 탐지하는 하드웨어 장치는 읽기 프로세서가 갱신 데이터를 가지도록 하며 쓰기 프로세서가 또다른 프로세서가 읽고 있는 데이터를 중복필기하지 않도록 한다.
잠금 연산은 종료 장벽으로서도 작용한다. 잠금 연산이 완료될 때까지 프로세서는 새로운 명령을 실행할 수 없다. 이것은 잠금 획득 전 읽기 프로세서가 구 데이터를 획득 및 저장하는 것을 방지한다.
프로세서가 제 2 프로세서에 의해 동시에 접근되는 데이터에 대해 비-원자 연산을 수행할 때 교착상태가 발생할 수 있다. 원자연산은 다른 프로세서가 동일 메모리 지점에 읽기 또는 쓰기를 하는 것을 방지하는 동안 한 프로세서가 메모리 지점에 읽기 또는 쓰기를 하는 연산이다. 비-원자 연산은 프로세서에 의해 작동되는 캐시라인이 연산 종료 전 또 다른 프로세서에 의해 쓰기 또는 판독될 수 있는 연산이다. 예컨대 비-원자 연산은 작동되는 데이터가 캐시라인 경계에서 교차할 때 발생할 수 있다. 즉, 변형된 데이터가 두개의 상이한 캐시라인에 위치된다. 예컨대 두개의 캐시라인이 데이터 접근을 위해서는 판독되어야 하도록 데이터가 캐시에 저장되고 연산은 캐시라인 경계를 교차한다. 데이터에 접근한 프로세서는 제 1 캐시라인에 대해 원자연산을 수행할 수 있지만 제 2 캐시라인은 여전히 또 다른 프로세서에 의해 접근될 수 있다.
교착상태 문제를 해결할 한가지 방법은 프로세서가 비-원자 연산을 시작할 경우 모든 다른 프로세서를 유휴상태로 만드는 것이다. 시스템은 시스템버스를 통해 다른 프로세서에 전송된 ″잠금″신호를 발생함으로써 이를 수행한다. ″잠금″신호는 ″잠금″이 표명되면 다른 프로세서가 버스에 접근하는 것을 방지한다. 예컨대 미국특허 4,488,217(Binder)는 복수의 데이터유닛과 공통버스를 포함한 데이터처리시스템을 발표한다. 데이터유닛은 다른 데이터 유닛이 공통버스를 포함한 데이터처리시스템을 발표한다. 데이터유닛은 다른 데이터유닛이 공통버스를 통해 데이터를 전달하는 것을 방지하도록 ″잠금″ 및 ″잠금해제″명령을 발생하는 장치를 포함한다. 그러나 멀티프로세서 시스템에서 이를 실시할 경우 시스템이 하나 이상의 버스를 포함하면 문제가 될 수 있다. 게다가 프로세서가 ″잠금″신호를 공급하는 장치를 제공하지 못하면 실시가 불가능하다.
필요한 것은 교착문제를 방지하도록 멀티프로세서 시스템에서 비-원자 연산을 수행하는 시스템과 방법이다.
발명의 요약
본 발명은 한 프로세서가 제 2 프로세서에 의해 동시에 접근될 수 있는 데이터에 대해서 비-원자 연산을 수행할 때 멀티프로세서 시스템에서 교착상태를 방지한다. 본 발명은 비-원자 연산이 종료될 때까지 다른 프로세서가 동일 데이터를 접근할 수 없도록 메모리에 프로세서 배타적 접근을 제공하도록 고안된 일련의 메시지를 포함한 분리된 잠금 연산을 통해서 교착상태를 방지한다. 교착상태를 피하기 위해서 본 발명에서 사용되는 메시지는 분리된 잠금 요청, 잠금 메시지, 허가 메시지, 유휴 진행 메시지 및 유휴 해제 메시지를 포함한다. 이러한 메시지를 사용하여 본 발명은 메모리에 배타적 접근을 위해 다중 프로세서로부터 요청하고 모든 요청을 순서지정하고 요청을 한 제 1 프로세서에 배타적 접근을 허용한다.
본 발명은 다중 프로세서 시스템, 특히 디렉토리 기초 캐시 메모리 시스템내에서 교착상태를 방지하는 방법에 관계한다.
도 1은 본 발명에 따른 시스템 플랫포옴 환경의 블록선도이다.
도 2는 메모리 저장장치를 보여준다.
도 3은 처리 모듈을 보여준다.
도 4는 I/O 모듈을 보여준다.
도 5는 하위-처리모듈을 보여준다.
도 6은 디렉토리 기초 메모리와 캐시시스템을 보여준다.
도 7은 본 발명에서 사용되는 3순위 캐시의 블록선도이다.
도 8을 본 발명에서 사용되는 메모리 저장장치의 블록선도이다.
도 9는 전체 분할된 잠금 연산의 순서도이다.
도 10은 분할된 잠금 요청 메시지 발생 순서도이다.
도 11-13은 본 발명의 작동 순서도이다.
* 부호설명
100 시스템처리플랫포옴 110 다중메모리 저장장치
120 처리모듈 130 MI버스
210 메모리 컨트롤러 220 메모리
230 데이터라인 310 하위처리모듈
320 I/O 모듈 330, 240 인터페이스
350 크로스바아 410 브릿지
420 주변장치 연결부 430 버스
510 3순위 캐시 520 버스
530 일관성 도메인 540 프로세서
550 2순위 캐시 560 버스
610 메모리디렉토리 620,630 캐시라인
612,642 상태 614,644 벡터
640 TLC디렉토리 650 SLC디렉토리
710 분할된 잠금요청 탐지기 720 메시지 발생기
716,717,718,719,734,736,737,738 신호
730 메시지 해독기 733 유휴 진행 컨트롤러
736 버스중재장치 810 MSU 메시지 탐지기
820 MSU 메시지 메모리 830 MSU 메시지 발생기
본 발명은 하드웨어, 소프트웨어 또는 이의 조합으로 설명될 수 있다. 본 발명의 기능을 수행하기 위해서 다양한 성분 및 단계가 하드웨어 또는 소프트웨어에서 실시된다.
도 1은 본 발명에서 사용되는 시스템 처리 플랫포옴(100)의 블록선도이다. 시스템 처리 플랫포옴(100)은 다중 처리시스템과 다중 메모리 저장장치에서 데이터 흐름을 관리하는데 유용하다. 시스템 처리 플랫포옴(100)은 하나 이상의 메모리저장장치(MSU,110)(MSU 110A와 MSU 110B로 도시됨)와 하나 이상의 처리모듈(POD,120)(POD 120A와 POD 120B로 도시됨)을 포함한다. 고객은 추가 MSU(110)와 POD(120)를 첨가함으로써 시스템 처리 플랫포옴(100)을 개선시킬 수 있다.
각 MSU(110)는 MSU인터페이스(MI)버스(130)(MI버스 130A,130B,130C,130D 로 도시됨)를 통해서 어드레스/기능과 데이터 버스를 갖는 점대점 인터페이스이다. MI버스(130)는 단방향 제어버스, 양방향 요청 버스 및 양방향 데이터 버스로 구성된다. 요청버스는 시스템 클록 주파수(SYSCLK)로 작동하고 데이터 버스는 시스템 클록 주파수의 두배에서 동기적인 소스를 작동시킨다. 선호되는 시스템 처리 플랫포옴(100)에서 시스템 클록 주파수는 100 메가헤르쯔(MHZ)이다.
POD(120)는 MSU(110)에서 한 MI버스(130)를 통해서 데이터에 직접 접근한다. 예컨대 MI버스(130)는 POD(120A)를 MSU(110A)에 직접 접근할 수 있도록 하며 MI버스(130C)는 POD(120A)를 MSU(110B)에 직접 접근하게 할 수 있다.
도 2의 MSU(110)는 메모리 컨트롤러(210)와 메모리(220)를 포함한다. 메모리(220)는 복수의 데이터 라인(230)을 포함한다. 각 데이터라인(230)은 시스템 플랫포옴(100)에서 MSU(110)와 POD(120)에 전달된 최소량의 데이터이다. 시스템 플랫포옴(100)에서 데이터라인(230)은 8 데이터단어 또는 64 바이트이다.
메모리 컨트롤러(210)는 메모리(220)의 메모리 관리자로서 작동한다. 메모리 컨트롤러(210)는 MI버스(130)를 통해 메모리 컨트롤러(210)는 각 데이터 라인(230)의 상태를 제어하고 모니터링한다.
도 3에 도시된 POD(120)는 크로스바아(350), 하나 이상의 하위 처리모듈(sub-POD)(sub-POD310A 와 sub-POD 310B 로 도시된), 및 하나 이상의 입/출력(I/O)모듈(320)(I/O 모듈 320A 와 I/O 모듈 320B 로 도시됨)을 포함한다. 시스템 플랫포옴(100)에서 각 POD(120)는 두개의 sub-POD(310)와 두개의 I/O 모듈(320)을 포함한다.
크로스바아(350)는 MI버스(130)를 통해 sub-POD(310) 및 I/O모듈(320)을 MSU(110)에 연결시킨다. sub-POD(sub-POD310A와 sub-POD 310B로 도시됨)는 인터페이스(330)(인터페이스 330A 와 인터페이스 330B로 도시됨)를 통해서 크로스바아(350)에 연결된다. 크로스바아(350)는 인터페이스(340)(인터페이스 340A와 인터페이스 340B로 도시됨)를 통해 I/O모듈(320)(I/O모듈320A와 I/O모듈 320B로 도시됨)에 연결된다. 시스템 플랫포옴(100)에서 MI버스(130)와 인터페이스(330)는 동일한 전송속도로 데이터를 전송한다. I/O모듈(320)과 크로스바아(350)간의 인터페이스(340)는 MI버스(130)및 인터페이스(330)와 유사한 구성을 가지지만 절반의 전송속도로 작동한다.
도 4에 도시된 I/O모듈(320)은 I/O모듈(320)에 연결된 하나 이상의 I/O디바이스와 POD(120)간에 인터페이스로 작용한다. I/O모듈(320)은 하나 이상의 주변장치 연결부(PCI)(PCI 420A, PCI 420B, PCI 420C로 도시됨)를 버스(430)(버스 430A, 버스 430B, 버스 430C로 도시됨)를 통해 상호 연결시키는 브릿지(410)를 포함한다. 브릿지(410)는 도 3에 도시된 바와 같이 POD(120)를 통해 크로스바아(350)에도 연결된다. 브릿지(410)는 버스(340)와 버스(330) 사이에서 스윗치로서 작용하여 POD(120)가 각 PCI(420)에 접근할 수 있도록 한다.
주변장치 상호연결부(PCI, 420)는 다양한 I/O 디바이스(도시안된)를 I/O모듈(320)에 연결시키는 I/O 버스이다. 선호되는 시스템 플랫포옴(100)에서 각 PCI(420)는 최대 4개의 디바이스를 지원할 수 있다. 이러한 디바이스로는 SCSI 컨트롤러, LAN 콘트롤러 또는 비디오 컨트롤러 등이 있다.
도 5에 도시된 sub-POD(310)는 3순위 캐시(TLC, 510)와 하나 이상의 일관성 도메인(530)(일관성 도메인 530A와 530B로 도시됨)을 포함한다. TLC(510)는 버스(520)(버스 520A와 520B로 도시됨)를 통해 각 일관성 도메인(530)에 연결된다. TLC(510)는 각 일관성 도메인(530)의 일관성을 유지시킨다.
각 일관성 도메인(530)은 두개이상의 2순위 캐시(SLC, 550)(일관성 도메인 530A 에서 SLC 550A 및 550B로 도시되고 일관성 도메인 530B 에서 SLC 550C 및 550D 로 도시됨)과 버스(560)(일관성 도메인 530A 에서 버스 560A 및 560B로 도시되고 일관성 도메인 530B 에서 버스 560C 및 버스 560D 로 도시됨)를 통해 각 SLC(550)에 연결된 프로세서(540)(일관성 도메인 530A 에서 프로세서 540A 및 540B 로 도시되고 일관성 도메인 530B 에서 프로세서 540C 및 540D 로 도시됨)을 포함한다. 각 버스 인터페이스(520)는 일관성 도메인(530)에서 최대 2개의 프로세서/SLC(540/550)를 지원한다. 프로세서(540)는 Deshutes 스타일 P6, Merced 스타일 P7, Voyager 스타일 2200 또는 Capricorn 스타일 A시리즈 명령 프로세서를 포함할 수 있다. 상기 4종류의 명령 프로세서는 당해 분야에서 공지이다.
각 일관성 도메인(530)에 있는 SLC(550)는 일관성 도메인 내에서 뿐만 아니라 자신들간의 일관성을 유지시킨다. 이것은 버스(520)를 공유하고 스누피-기초 일관성을 따름으로써 달성된다. 스누피-기초 일관성에 따르면 각 SLC(550)는 데이터 라인(230)의 상태를 확인하고 저장된 데이터 라인의 상태를 필요시 갱신하기 위해서 요청 버스(520)를 ″조사″한다. 스누피 프로토콜의 상세한 설명은 동시 출원된 ″디렉토리 기초 캐시 일관성 시스템″ (미국특허 출원 08/965,004, 97.11.5일 출원)에 포함된다.
POD(120)와 MSU(110)는 함께 작동하여서 일관성 있는 메모리 시스템을 생성한다. 한 구체예에서 시스템 플랫포옴(100)의 일관성 스킴은 디렉토리 기초 프로토콜이다. 도 6은 시스템 플랫포옴(100)에서 사용되는 디렉토리 기초 오너쉽 프로토콜을 보여준다. 메모리(220)와 각 수준의 캐시 (즉 TLC(510), SLC(550) 등)는 디렉토리 프로토콜이 일관성을 유지하게 한다. 도 6에서 메모리(220)는 메모리 디렉토리(610)를 가지며 TLC(510)는 TLC 디렉토리(640)를 가지며 SLC(550)는 SLC 디렉토리(650)를 가지며, SLC 디렉토리의 명칭은 MESI(변형된 배타적 공유 무효)이다.
각 캐시(510,550)는 캐시라인(TLC(510)에서 캐시라인(620)으로 도시되고 SLC(550)에서 캐시라인(630)으로 도시됨)이라 칭하는 데이터라인을 저장하는 메모리를 포함한다. 캐시라인은 하나 이상의 캐시(510,550)에 존재하는 데이터라인 사본이다. 사본은 데이터라인의 ″진짜 사본″일 수 있으며, 이 경우에 데이터는 특정 캐시내에서 변형되지 않아서 주기억장치에 있는 데이터와 동일하며, 데이터 라인의 ″변형된 사본″일 경우에 데이터는 특정 캐시내에서 변형되지만 주기억장치까지는 갱신되지 않는다.
디렉토리(610)에서 각 데이터 라인(230)에 대한 정보가 모니터링되고 상태(612) 및 벡터(614)를 사용하여 갱신된다. 상태(612)는 데이터라인(230)에 대해서 요청자에게 허가된 접근상태에 관한 정보를 유지한다. 이러한 상태는 데이터라인(230)이 메모리(220)에만 존재함을 나타낸다. 공유상태는 하나 이상의 POD(120)가 자유롭게 데이터라인(230)의 사본을 읽을 수 있음을 나타낸다. 배타적 상태는 단일 요청자만이 데이터라인(230)에 쓰기 접근이 허가됨을 나타낸다. 따라서 단일 요청자만이 데이터라인(230)을 변경할 권한을 가진다. 벡터(614)는 데이터라인이 존재하는 각 위치를 알려주는 포인터이다.
TLC 디렉토리(640)에서 각 캐시라인(620)에 대한 정보가 모니터링 되고 상태(642) 및 벡터(614)를 사용하여 갱신된다. 상태(640)는 캐시라인(620)의 상태에 관한 3가지 정보를 유지한다. 이러한 정보로는 소유권, 데이터 상태 및 버스 권리를 포함한다. 벡터(644)는 캐시(620)가 존재하는 하나 이상의 지점을 지적한다.
소유권은 전용권, 공유권 및 미지의 권한을 포함한다. 전용권은 TLC(510)가 캐시라인(62)에 대해 배타적 권한(즉, 쓰기접근)을 가지며 이러한 배타적 권한은 메모리(220)에 있는 데이터라인(620)을 공유함을 의미한다(즉, 읽기전용). 미지의 권한은 캐시라인(620)에 대한 소유권이 미지임을 의미한다.
TLC 디렉토리(640)에 대한 데이터 상태는 무 데이터, 변경된 데이터 또는 완전한 데이터를 포함한다. 무 데이터는 캐시라인(620)상에 데이터가 존재하지 않음을 나타낸다. 변경된 데이터는 캐시라인(620)상의 데이터가 변경되었음을 의미하고 메모리(220)에 필기되어야한다. 완전한 데이터는 캐시라인(620)상의 데이터가 변경되지 않았음을 의미한다.
버스권한은 버스(520A) 또는 버스(520B)중 하나에 권한이 허가되는지를 나타낸다. 버스 권한 역시 상태 및 벡터를 포함한다(상태와 벡터가 도시안됨). 버스 권한은 배타적 상태, 공유 상태 또는 미지상태를 포함한다. 배타적 권한은 배타적 소유권이 버스(520A)와 (520B)중 하나와 관련된 SLC(550)에 속함을 나타낸다. 공유권은 권한이 버스(520A)와 (520B) 둘다에 허가됨을 나타낸다. 미지의 권한은 어느 버스가 권한을 가지는지 모름을 의미한다.
SLC 디렉토리(650)에서 캐시라인(630)의 상태만이 유지된다. 상태는 변경된, 배타적, 공유된 또는 무효한 상태를 포함한다. 변경된 상태는 관련 SLC(550)중 하나가 캐시라인(630)상의 데이터에 대해 배타적 소유권을 획득하고 데이터가 변경되었음을 나타낸다. 배타적 상태는 관련 SLC(550)중 하나가 캐시라인(630)상의 데이터에 대해 배타적 소유권을 허가받고 데이터가 변경되지 않았음을 나타낸다. 공유상태는 관련 SLC(550)중 하나 이상이 캐시라인(630)상의 데이터에 대해 소유권을 공유함을 의미한다. 무효상태는 SLC(550)에 있는 캐시라인(630)에서 발견되는 데이터라인(230)사본이 또다른 디바이스에 있는 데이터라인(230)상에서 수행된 쓰기로 인하여 더 이상 유효하지 않음을 나타낸다.
캐싱 스킴은 프로세서(540)에 의해 필요한 시간을 단축시키고 메모리(220)에 있는 데이터라인(230)을 읽기 위해서 개발되었다. 시스템 플랫포옴(100)에서 사용되는 것과 같은 캐싱 시스템은 각 메모리(220), TLC(510) 및 SLC(550)내에 일관성 있는 데이터를 유지하여서 시스템 플랫포옴(100)이 적절하고 효율적으로 실행될 수 있도록 해야한다.
일관성은 당해 분야에서 잘 알려진 용어이며 다중 메모리와 처리 디바이스를 갖는 시스템에서 데이터 접근을 지배한다. 일관성있는 시스템은 다중 디바이스가 특정 데이터 라인(230)에 대해 쓰기접근을 하는 시스템이다. 다시 말하자면 일관성은 데이터라인 읽기가 가장 최근에 쓰여진 데이터 라인값을 복귀시키고 데이터라인의 쓰기가 읽기접근을 한 모든 디바이스에 의해 소유된 데이터라인의 모든 사본을 무효시킬 것을 요구한다.
처리 시스템 플랫포옴(100)에서 일관성은 POD(120)가 캐시(510,550)내에서 요청자중 하나가 캐시라인(620,630)을 변경할 수 있기 이전에 POD(120)는 MSU(110)로부터 이러한 데이터에 대한 전용권 허가를 얻어야 한다. 전용권이 허가되면 POD(120) 요청자는 MSU(110)와 상호작용 없이 캐시라인(620)변경을 허용받는다. POD(120)가 캐시라인(620)을 관통할 때 캐시라인(620)은 MSU(110)에 다시 쓰여진다.
MSU(110)는 TLC(510) 또는 I/O버스 인터페이스(340)상의 캐시라인(610)상태 정보를 추적한다. MSU(110)는 디렉토리 구조(610)를 사용함으로써 이를 행한다. 디렉토리(610)는 MSU(110), 특정 TLC(510) 또는 특정 I/O 버스 인터페이스(340)가 데이터라인(230)을 소유하는지에 대한 정보를 유지한다. 디렉토리(610)는 사본을 가지는지 또는 특정 I/O가 일관성있는 사본을 가지는지에 대한 정보를 유지한다. 또한 디렉토리(610)는 특정 데이터라인(230)이 수정 불가능한 오차를 가지는 지도 나타낸다.
시스템 플랫포옴(100)의 일관성 스킴은 주어진 시간에 단지 하나의 요청자만이 전용권을 가지게 하며 일관성을 캐시라인을 기초로 부과된다. 따라서 또다른 TLC(510) 또는 I/O버스 인터페이스(340)가 변경된 캐시라인(620,630)에 대한 전용권 또는 공유권을 가질 필요가 있다면 최초 전용권자에게 캐시라인(620,630)을 MSU(110)로 복귀시켜서 새로운 데이터를 요청자에게 보내도록 요구하는 것은 MSU(110)의 책임이다. 요청자가 캐시라인(620,630) 변경을 원한다면 최초의 소유권자는 캐시로부터 해당 캐시라인(620,630)을 무효시킨다. 최초 소유권자가 특정 캐시라인(620,630)에 다시 접근할 필요가 있다면 가장 나중 사본을 위해 MSU(110)로 돌아갈 것이다. 요청자가 데이터라인(230)을 읽기를 원한다면 최초 소유권자는 해당 캐시라인(620,630)의 사본을 유지할 수 있다. 어느 경우든 최초 소유권자는 해당 캐시라인(620,630)에서 특정 데이터를 변경할 특권을 잃어버리며 이를 위해서 다시 MSU(110)로부터 전용권을 요구해야 한다.
시스템 플랫포옴(100)의 일관성 스킴은 미국특허 출원 08/965,004(1997. 11. 5 일 출원)의 ″디렉토리 기초 캐시 일관성 시스템″에 발표된다.
본 발명은 다중 프로세서에 연결된 메모리 계층을 활용하는 시스템에 적용될 수 있다. 그러나 다중 레벨 캐싱이 본 발명을 실시하는데 필요하지 않다.
본 발명의 분할된 잠금은 프로세서(540)의 잠금 라인에 의존하지 않고 디렉토리 기초 다중처리시스템에서 교착상태를 방지한다. 분할된 잠금은 두개의 프로세서가 캐시라인 경계를 교차하는 동일 데이터에 동시 접근될 때 발생하는 교차상태를 방지하는 일련의 메시지를 통해 작동한다.
다음은 분할된 잠금연산 수행시 본 발명에 의해 사용된 다양한 메시지로 설명한다. 본 발명은 다음 메시지를 발생한다: 분할된 잠금 요청, 잠금 메시지, 허가메시지, 유휴 진행 메시지, 및 유휴 해제 메시지.
분할된 잠금 요청은 프로세서(540)에 의해 버스(520)를 경유하며 TLC(510)에 전송된다. 분할된 잠금 요청은 프로세서(540)가 분할된 잠금연산을 필요로 한다는 것을 TLC(510)에 알려준다. 한 프로세서가 하나 이상의 캐시라인에 저장된 데이터를 접근할 필요가 있을 때 분할된 잠금 연산이 필요하다.
분할된 잠금 요청에 대한 응답으로 TLC(510)에 의해 잠금 메시지가 발생된다. 잠금 메시지는 버스(330)를 통해 MSU(110)에 의해 허가 메시지가 발생된다. 허가 메시지가 각 TLC(510)에 의해 사용되어서 분할된 잠금 연산 수행을 허가받았는지 여부를 판정한다.
분할된 잠금 요청을 부여받지 않는 모든 TLC(510)에 의해 유휴 진행 메시지가 발생된다. 유휴 진행 메시지는 분할된 잠금 연산을 수행하는 특정 TLC(510)에 의해 사용되어서 그 밖의 다른 TLC(510)가 메모리에 접근할 수 없도록 한다.
분할된 잠금 요청을 부여받는 특정 TLC(510)에 의해 유휴 해제 메시지가 발생된다. 유휴 해제 메시지는 분할된 잠금 연산 종료 후 특정 TLC(510)에 의해 발생된다. 유휴 해제 메시지는 분할된 잠금 연산이 종결된 모든 TLC(510)에 신호를 주는데 사용된다.
다음은 TLC(510)를 포함한 기능성분을 설명한다. 도 7은 TLC(510)의 블럭선도로서 본 발명의 개념적인 블록이 동일한 하드웨어 또는 소프트웨어 모듈에 의해 수행될 수 있다.
TLC(510)는 분할된 잠금 요청 탐지기(710), 메시지 발생기(720), 메시지 해독기(730), 유휴 진행 컨트롤러(733) 및 버스 중재 장치(736)를 포함한다. 분할된 잠금 요청 탐지기(710)는 분할된 잠금 요청과 관련된 소스 식별자를 발생한다. 소스 식별자는 분할된 잠금 요청을 발생한 프로세서(540)를 식별한다. 분할된 잠금 요청 탐지기(710)가 탐지된 각 분할된 잠금요 청을 위해 신호(715)를 메시지 발생기(720)에 전송한다.
분할된 잠금 연산을 위해 메시지 발생기(720)는 잠금 메시지, 유휴 진행 메시지 및 유휴 해제 메시지를 발생한다. 게다가, 각 잠금 메시지는 해당 분할된 잠금 요청에서 나온 소스 식별자를 포함한다. 메시지 발생기(720)는 버스(330)를 통해 잠금 메시지를 MSU(110)에 전송한다.
버스(520)가 유휴상태가 된 이후에 메시지 발생기(720)는 유휴 진행 메시지를 발생한다. 유휴 진행 메시지는 각 TLC(510)에 전송된다. 게다가 각 유휴 진행 메시지는 이러한 메시지를 전송하는 특정 TLC(510)에 대한 소스 식별자를 포함한다. 유휴 진행 메시지는 분할된 잠금 연산을 수행중인 특정 TLC에 의해 수집된다.
분할된 잠금 연산을 수행하는 특정 TLC(510)가 분할된 잠금 연산 실행을 종료한 이후에 메시지 발생기(720)는 유휴 해제 메시지를 발생한다.
메시지 해독기(730)는 버스(330)를 통해서 MSU(110)로부터 수신된 메시지를 해독한다. 메시지 해독기(730)는 허가 메시지, 유휴 진행 메시지, 및 유휴 해제 메시지를 해독한다. 제 1 허가 메시지 해독 후 메시지 해독기(730)는 허가 메시지 내의 소스식별자를 프로세서(730)는 허가 메시지내의 소스식별자를 프로세서(540)로부터 수신된 제 1 분할된 잠금 요청과 관련된 소스식별자와 비교한다. 메시지 해독기(730)는 허가 메시지내의 소스식별자가 프로세서(540)로부터 수신된 제 1 분할된 잠금 요청과 관련된 소스식별자와 동일한지 여부를 나타내는 신호(710)를 전송한다.
메시지 해독기(730)는 버스(330)를 통해 수신된 유휴 진행 메시지를 탐지한다. 유휴 진행 메시지를 탐지하면 메시지 해독기(730)는 유휴 진행 컨트롤러(733)에 신호(719)를 전송한다.
메시지 해독기(730)는 버스(330)를 통해 수신된 유휴 해제 메시지를 탐지한다. 유휴 해제 메시지를 탐지하면 메시지 해독기(730)는 유휴 해제 컨트롤러(733)에 이를 나타내는 신호(719)를 전송한다.
유휴 진행 컨트롤러(733)는 버스(520)의 유휴상태를 개시 및 종료한다. 신호(716)수신시 유휴 진행 컨트롤러(733)는 유휴상태를 개시한다. 유휴 진행 컨트롤러(733)는 모든 다른 TLC(510)에서 나온 메시지를 검사한다. 모든 다른 TLC(510)로부터 유휴진행메시지를 수신하면 유휴진행컨트롤러(733)는 버스중재장치(736)에 신호를 보내 분할된 잠금 연산을 진행하게 한다. 신호(718) 수신시 유휴 진행 컨트롤러(733)는 버스 중재 장치(736)에 신호를 보내 버스(520)를 유휴상태로 만든다. 버스 중재 장치(736)는 버스(520)가 유휴상태가 된 이후에 유휴 진행 컨트롤러에 신호(737)를 전송한다. 게다가 유휴 진행 컨트롤러(733)는 메시지 발생기(720)에 신호를 보내 유휴 진행 메시지를 발생시킨다.
분할된 잠금 연산 종료 후 유휴 진행 컨트롤러(733)는 유휴상태를 종료한다. 버스 중재 장치(736)로부터 신호(734) 수신 후 유휴 진행 컨트롤러(733)는 유휴상태를 종료한다. 신호(734)는 분할된 잠금 연산이 종료되었음을 나타낸다. 신호(734) 수신 후 유휴 진행 컨트롤러(733)는 메시지 발생기(720)에 신호를 보내 유휴 진행컨트롤러(733)는 메시지 발생기(720)에 신호를 보내 유휴 해제 메시지를 발생시킨다. 그렇지 않으면 유휴 상태는 메시지 탐지기(730)에서 나온 신호(717)에 의해 종료된다. 신호(717)는 유휴 해제 메시지가 수신되었음을 나타낸다.
버스 중재 장치(736)는 버스(520)가 유휴상태가 된 이후에 유휴 진행 컨트롤러(733)에 신호(736)를 전송한다.
다음은 본 발명에 따른 MSU(110)의 기능성분을 설명한다. 도 8에서 MSU(110)는 MSU 메시지 탐지기(810), MSU 메시지 메모리(820) 및 MSU 메시지 발생기(830)을 포함한다. MSU(110)는 잠금 메시지, 유휴 진행 메시지 및 유휴 해제 메시지를 해독한다. 해독된 각 메시지 타입에 대해서 MSU(110)는 각 TLC(510)에 허가 메시지, 유휴 진행 메시지 및 유휴 해제 메시지를 보낸다. 모든 메시지 타입은 버스(130)를 통해 MSU(110)에 의해 수신된다. MSU 메시지 탐지기(810)는 메시지내의 연산코드를 해독함으로써 메시지 타입을 해독한다. 수신된 메시지와 관련된 소스식별자는 수신된 순서로 MSU 메시지 메모리(820)에 저장된다. MSU 메시지 발생기(830)는 MSU 메시지 메모리(820)내에 포함된 각 소스식별자에 대한 메시지 메모리(820)내에 포함된 각 소스식별자에 대한 메시지타입을 발생한다. MSU 메시지 발생기(830)에 의해 발생된 각 메시지는 조합된 소스식별자를 포함한다. 이후에 각 메시지는 버스(130)를 통해 시스템에 보내진다.
다음은 전체 분할된 잠금 연산 수행방식을 설명한다. 도 9의 단계(910)에서 특정프로세서(540)가 TLC(510)에 분할된 잠금 요청을 보낼 때 분할된 잠금 연산이 개시된다. 단계(920)에서 TLC(510)는 분할된 잠금 연산을 요청하는 프로세서(540)의 소스식별자를 포함한 잠금 메시지를 MSU(110)에 보낸다.
단계(924)에서 MSU(110)는 수신된 순서로 TLC(510)에 의해 보내진 각 잠금 메시지내에 포함된 소스식별자를 저장한다. 단계(926)에서 MSU(110)는 잠금 메시지가 수신된 순서는 모든 TLC(510)에 허가 메시지를 보낸다.
단계(930)에서 TLC(510)는 락커로서 선택되었는지 여부를 판정한다. 즉, 소스 식별자와 함께 MSU(110)로부터 복귀된 허가메시지는 특정 TLC(510)가 분할된 잠금 연산을 수행할 권한을 가지는지를 나타낸다. 락커로서 선택되었음을 TLC(510)가 판정하면 단계(940)로 진행한다. 그렇지 않으면 단계(950)로 진행한다.
단계(940)에서 TLC(510)는 프로세서(540)가 분할된 잠금 연산을 진행하도록 허용한다. 프로세서(540)가 연산을 종료할 때 TLC(510)는 유휴 해제 메시지를 전송하는데, 이것은 특정 TLC(510)에 대한 분할된 잠금 연산이 종료되었음을 나타낸다.
단계(950)에서 락커로서 선택 안된 TLC(510)는 버스(520)를 유휴상태가 되게한다. 버스(520)가 유휴상태가 된 이후에 TLC(510)는 락커에 유휴 진행 메시지를 전송하고 락커로부터 유휴 해제 메시지 수신을 기다린다. 유휴 해제 메시지가 수신되면 TLC(510)는 버스(520)를 유휴상태로부터 해제시킨다.
도 10은 잠금 메시지를 발생하는 분할된 잠금 연산을 보여주는 순서도이다. 단계(1010)에서 분할된 잠금 요청 탐지기(710)는 버스(520)를 통해 프로세서(540)에 의해 전송된 요청내의 연산코드 및 소스식별자를 해독한다. 단계(1020)에서 메시지 발생기(720)는 단계(1010)에서 해독된 분할된 잠금 요청의 소스식별자를 포함한 잠금 메시지를 MSU(110)에 전송한다. 단계(1030)에서 MSU(110)는 단계(1030)에서 전송된 각 잠금 메시지를 해독한다.
단계(1040)에서 각 잠금 메시지와 조합된 소스식별자가 MSU(110)에 의해 잠금 메시지가 해독된 순서는 MSU 메시지 발생기(830)는 MSU 메시지 메모리(820)에 저장된 각 소스식별자에 대해 허가 메시지를 전송한다. 허가 메시지는 잠금 메시지가 수신된 순서와 동일한 순서로 방송된다.
도 11은 프로세서(540)가 분할된 잠금 연산을 허가받았는지 여부를 판단하는 분할된 잠금 연산을 보여주는 순서도이다. 판단단계(1110)에서 메시지 해독기(730)는 MSU(110)에 의해 방송된 제 1 허가 메시지가 수신되었는지 여부를 탐지한다. 제 1 허가 메시지가 수신되지 않았다면 단계(1110)로 진행한다. 제 1 허가 메시지를 수신했으면 단계(1120)로 진행한다.
단계(1120)에서 메시지 해독기(730)는 제 1 허가 메시지내에 있는 소스식별자를 해독한다. 단계(1130)에서는 단계(1120)에서 해독된 소스식별자가 락커 Id에 적재된다. 락커 Id는 분할된 잠금 요구를 허가받은 TLC(510)를 식별한다. 락커 Id에 의해 식별된 TLC(510)가 락커로서 언급된다.
판단단계(1140)에서 락커 식별자는 TLC(510)에 의해 전송된 제 1 잠금 메시지와 조합된 소스식별자와 비교된다. 락커 식별자가 TLC(510)의 분할된 잠금 요구와 조합된 소스식별자와 동일하지 않을 경우 TLC(510)는 락커로서 선택되지 않는다. 락커 식별자가 TLC(510)의 분할된 잠금 요구와 조합된 소스식별자와 동일하면 TLC(510)는 락커로서 선택된다.
도 12는 락커로서 선택된 TLC(510)에 의해 수행된 분할된 잠금 연산을 보여주는 순서도이다. 단계(1210)에서 락커로서 지정된 TLC(510)는 버스중재장치(730)를 써서 버스(520)를 유휴상태로 만든다. 판단금지(1220)에서 락커는 락커로서 선택 안된 각 TLC(510)로부터 유휴 진행 메시지를 수신하기 위해서 대기한다. 단계(1230)가 분할된 잠금 연산을 필요로 하는 연산을 진행할 수 있도록 한다.
판단단계(1240)에서 락커는 프로세서(540)로 단계(1230)에서 허용된 연산을 종료하기를 기다린다. 단계(1250)에서 락커는 메시지 발생기(720)를 사용하며 MSU(110)에 유휴 해제 메시지를 전송한다. 단계(1260)에서 MSU(110)는 모든 TLC(510)에 유휴 해제 메시지를 보낸다.
도 13는 락커로서 선택 안된 TLC(510)에 의해 수행된 분할된 잠금 연산을 보여주는 순서도이다. 단계(1310)에서 버스 중재 장치(736)는 버스(520)가 유휴상태가 되게 한다. 버스(520)가 유휴상태가 되면 TLC(510)의 동의 없이는 메시지 발생기(720)는 락커에 유휴 진행 메시지를 전송한다. 유휴 진행 메시지는 유휴 진행 메시지를 전송하는 각 TLC(510)의 소스식별자를 포함한다.
판단단계(1330)에서 락커로서 선택 안된 모든 TLC(510)는 락커로 부터 유휴 해제 메시지를 받기를 기다린다. 유휴 해제 메시지를 락커로 부터 수신 받으면 TLC(510)가 버스(520)를 유휴상태로부터 해제시킬 때 단계(1340)로 진행한다.

Claims (24)

  1. 주기억장치(110), 주기억장치(110)에 연결된 하나 이상의 캐시(510),각 캐시(330)에 연결된 복수의 프로세서(540)를 포함하는 컴퓨터 캐싱 시스템(100)에서 비-원자 연산을 수행하는 동안 교착상태를 방지하는 방법에 있어서,
    요청 프로세서(540)에 의해 상기 요청 프로세서(540)가 주기억장치(110)에서 비-원자 연산을 수행하기를 바란다는 것을 나타내는 분할된 잠금 요청을 보내고(단계910); 상기 요청 프로세서(540)와 관련된 캐시(510)에 의해 상기 분할된 잠금 요청에 대한 응답으로 주기억장치(110)에 잠금 메시지를 보내고(단계920);
    상기 잠금 메시지에 대한 응답으로 주기억장치(110)에 의해 주기억장치(110)가 상기 분할된 잠금 요청을 허가한 잠금 프로세서(540)를 식별하는 허가 메시지를 보내고(단계926);
    상기 허가 메시지에 대한 응답으로 상기 잠금 프로세서(540)로서 식별되지 않은 각 프로세서(540)에 의해 유휴상태로 변화시키는 단계(단계1310)를 포함하는 교착상태 방지방법.
  2. 제 1항에 있어서, 허가 메시지를 보낸 후 상기 잠금 프로세서에 의해 비-원자 연산을 수행하는 단계를 더욱 포함하는 방법.
  3. 제 2항에 있어서, 상기 비-원자 연산 종료시 유휴 해제 메시지를 상기 잠금 프로세서로서 식별되지 않는 각 프로세서에 보내는 단계를 더욱 포함하는 방법.
  4. 제 3항에 있어서, 상기 유휴 해제 메시지를 보내는 단계가 상기 잠금 프로세서와 관련된 캐시에 의해 상기 주기억장치에 유휴 해제 메시지를 보내고; 상기 캐시에서 나온 유휴 해제 메시지에 대한 응답으로 주기억장치에 의해 유휴 해제 메시지를 상기 잠금 프로세서로서 식별되지 않은 각 프로세서에 보내는 단계를 더욱 포함함을 특징으로 하는 방법.
  5. 제 4항에 있어서, 상기 유휴 해제 메시지를 보내는 단계가 상기 비-원자 연산 종료시 상기 잠금 프로세서에 의해 상기 유휴 해제 메시지를 관련 캐시에 보내는 단계를 더욱 포함함을 특징으로 하는 방법.
  6. 제 4항에 있어서, 상기 유휴 해제 메시지를 보내는 단계가 상기 캐시에 의해 상기 비-원자 연산의 종료를 탐지하는 단계를 더욱 포함함을 특징으로 하는 방법.
  7. 제 2항에 있어서, 상기 비-원자 연산 수행전 상기 잠금 프로세서에 의해 상기 허가 메시지에서 식별 안된 각 프로세서를 대기하여 상기 유휴상태로 변화시키는 단계를 더욱 포함하는 방법.
  8. 제 7항에 있어서, 상기 허가 메시지에서 식별 안된 각 프로세서를 대기하여 상기 유휴상태로 변화시키기 이전에 상기 허가 메시지에서 식별 안된 각 프로세서에 의해 상기 유휴상태는 변화를 표시하는 유휴 진행 메시지를 보내는 단계를 더욱 포함하는 방법.
  9. 제 7항에 있어서, 상기 허가메시지에서 식별 안된 각 프로세서를 대기하여 상기 유휴상태로 변화시키기 이전에 상기 허가 메시지에서 식별 안된 각 프로세서와 관련된 캐시에 의해 상기 유휴상태는 변화를 표시하는 유휴진행메시지를 보내는 단계를 더욱 포함하는 방법.
  10. 제 9항에 있어서, 상기 유휴상태로 변화시키는 단계가 각 프로세서를 각 캐시에 연결시키는 데이터버스를 금지시키는 단계를 포함함을 특징으로 하는 방법.
  11. 제 9항에 있어서, 상기 유휴상태로 변화시키는 단계가 2개 이상의 프로세서를 각 캐시에 연결시키는 데이터 버스를 금지시키는 단계를 포함함을 특징으로 하는 방법.
  12. 제 11항에 있어서, 데이터 버스 금지 단계가 상기 각 캐시에 의해 상기 데이터 버스를 금지시키는 단계를 포함함을 특징으로 하는 방법.
  13. 제 3항에 있어서, 상기 허가 메시지에서 식별 안된 각 프로세서에 의해 유휴 해제 메시지를 대기하는 단계를 더욱 포함하는 방법.
  14. 제 13항에 있어서, 상기 유휴 해제 메시지에 대한 응답으로 상기 허가 메시지에서 식별 안된 각 프로세서에 의해 상기 유휴상태로부터 작동상태로 변화시키는 단계를 더욱 포함하는 방법.
  15. 제 11항에 있어서, 분할된 잠금 요청 메시지 발생후 주기억장치에 의해 상기 분할된 잠금 요청을 발생한 요청 프로세서를 식별하는 식별자를 저장하는 단계를 더욱 포함하는 방법.
  16. 제 15항에 있어서, 상기 식별자 저장단계가 상기 분할된 잠금 요청 메시지가 수신된 순서로 상기 분할된 잠금 요청을 발생한 요청 프로세서를 식별하는 식별자를 저장하는 단계를 포함함을 특징으로 하는 방법.
  17. 제 16항에 있어서, 상기 허가 메시지를 보내는 단계가 상기 분할된 잠금 요청에 대한 응답으로 허가 메시지를 보내는 단계를 더욱 포함하며, 상기 허가 메시지는 분할된 잠금 요청이 허가된 잠금 프로세서를 식별하며, 상기 허가 메시지는 상기 분할된 잠금 요청 메시지가 수신된 순서에 따라 보내짐을 특징으로 하는 방법.
  18. 제 17항에 있어서, 상기 허가 메시지를 보내는 단계가 상기 분할된 잠금 요청이 허가된 잠금 프로세서를 식별하고, 상기 허가 메시지를 상기 분할된 잠금 요청메시지가 수신된 순서에 따라 보내짐을 특징으로 하는 방법.
  19. 제 1항에 있어서, 상기 분할된 잠금 요청을 발생하기전 비-원자 연산이 필요한 요청프로세서의 상태를 탐지하는 단계를 더욱 포함하는 방법.
  20. 제 19항에 있어서, 상기 상태 탐지 단계가 상기 요청 프로세서와 관련된 캐시에 의해 비-원자 연산이 필요한 프로세서의 상태를 탐지하는 단계를 포함함을 특징으로 하는 방법.
  21. 주기억장치(110)와 두개 이상의 처리모듈(120)을 포함한 컴퓨터 캐싱 시스템(100)에서 사용되며 비-원자 연산 수행동안 교착상태를 방지하는 처리모듈(120)에 있어서,
    처리모듈(120)은 주기억장치(110)에서 비-원자 연산을 수행하도록 분할된 잠금 요청을 발생하는 프로세서(540); 상기 프로세서(540)와 주기억장치(110)사이에 연결된 캐시 메모리(510)를 포함하며;
    상기 캐시 메모리(510)는 상기 분할된 잠금 요청에 대한 응답으로 상기 주기억장치(110)에 보내지며 상기 프로세서(540)를 식별하는 잠금 메시지를 발생하는 수단(720),
    주기억장치(110)로부터 수신되며 비-잠금 프로세서(540)로서 프로세서(540)를 식별하는 허가 메시지에 대한 응답으로 상기 캐시(510)를 프로세서(540)에 연결시키는 버스(520)가 유휴상태가 되었음을 나타내는 유휴 진행 메시지 발생수단(733),
    주기억장치(110)로부터 수신되며 잠금 프로세서(540)로서 프로세서(540)를 식별하는 허가 메시지에 대한 응답으로 수행된 비-원자 연산 종료 후 유휴 해제 메시지를 발생하는 수단(720)을 포함함을 특징으로 하는 처리모듈(120).
  22. 제 21항에 있어서, 상기 비-잠금 프로세서와 관련된 모든 캐시가 각 버스를 유휴상태로 만들기를 기다리는 수단을 상기 캐시가 더욱 포함함을 특징으로 하는 처리모듈.
  23. 제 21항에 있어서, 상기 잠금 프로세서와 관련된 캐시가 유휴 해제 메시지를 보내기를 기다리는 수단을 상기 캐시가 더욱 포함함을 특징으로 하는 처리모듈.
  24. 주기억장치(110);
    주기억장치(110)에 연결된 하나 이상의 캐시(510); 및 상기 각 캐시(510)에 연결된 복수의 프로세서(540)를 포함하며 비-원자연산 결과 교착상태를 방지하는 시스템(100)에 있어서,
    상기 복수의 프로세서(540)가 요청 프로세서(540)와 조합된 캐시(510)에 보내질 분할된 잠금 요청 발생수단을 가지는 요청 프로세서(540)이며,
    상기 분할된 잠금 요청은 상기 요청프로세서(540)가 상기 주기억장치(110)에서 비-원자 연산수행을 바란다는 것을 나타내며,
    상기 요청 프로세서(540)와 관련된 캐시(510)가 상기 요청 프로세서(540)를 식별하며 상기 분할된 잠금 요청에 대한 응답으로 주기억장치(110)에 보내질 잠금 메시지 발생수단(720)을 포함하며,
    상기 주기억장치(110)는 각 캐시(510)에 보내질 잠금 메시지에 기초하여 허가 메시지를 발생하는 수단(830)을 포함하며, 상기 허가 메시지는 주기억장치(110)가 분할된 잠금 요청을 허가한 복수의 프로세서(540)중 하나를 잠금 프로세서(540)로서 식별하며,
    잠금 프로세서(540)와 관련 없는 각 캐시(510)는 각 캐시(510)와 관련된 버스(520)가 상기 허가메시지에 대한 응답으로 금지된 이후에 유휴 진행 메시지를 발생하는 수단(733)을 포함하며, 상기 잠금 프로세서(540)와 관련된 캐시(510)는 상기 잠금 프로세서(540)가 비-원자 연산을 종료한 이후에 유휴 해제 메시지를 발생하는 수단(720)을 포함함을 특징으로 하는 시스템.
KR10-2000-7004751A 1997-11-05 1998-11-04 비-원자 연산동안 메모리에 배타적 접근을 제공하는분리된 잠금연산방법 KR100381618B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/964,623 1997-11-05
US8/964,623 1997-11-05
US08/964,623 US6092156A (en) 1997-11-05 1997-11-05 System and method for avoiding deadlocks utilizing split lock operations to provide exclusive access to memory during non-atomic operations

Publications (2)

Publication Number Publication Date
KR20010031689A true KR20010031689A (ko) 2001-04-16
KR100381618B1 KR100381618B1 (ko) 2003-04-26

Family

ID=25508783

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7004751A KR100381618B1 (ko) 1997-11-05 1998-11-04 비-원자 연산동안 메모리에 배타적 접근을 제공하는분리된 잠금연산방법

Country Status (9)

Country Link
US (2) US6092156A (ko)
EP (1) EP1029271B1 (ko)
JP (1) JP3703716B2 (ko)
KR (1) KR100381618B1 (ko)
AT (1) ATE206219T1 (ko)
AU (1) AU1379299A (ko)
BR (1) BR9814845A (ko)
DE (1) DE69801842T2 (ko)
WO (1) WO1999023559A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114042B2 (en) 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336159B1 (en) 1997-06-25 2002-01-01 Intel Corporation Method and apparatus for transferring data in source-synchronous protocol and transferring signals in common clock protocol in multiple agent processing system
US6092156A (en) * 1997-11-05 2000-07-18 Unisys Corporation System and method for avoiding deadlocks utilizing split lock operations to provide exclusive access to memory during non-atomic operations
US6546439B1 (en) * 1998-12-09 2003-04-08 Advanced Micro Devices, Inc. Method and system for improved data access
US6263409B1 (en) * 1998-12-22 2001-07-17 Unisys Corporation Data processing system and method for substituting one type of request for another for increased performance when processing back-to-back requests of certain types
JP2001184295A (ja) * 1999-12-27 2001-07-06 Toshiba Corp 周辺装置および計算機システム
US6609171B1 (en) 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US6742160B2 (en) 2001-02-14 2004-05-25 Intel Corporation Checkerboard parity techniques for a multi-pumped bus
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
US6892258B1 (en) * 2001-10-26 2005-05-10 Lsi Logic Corporation Hardware semaphores for a multi-processor system within a shared memory architecture
US6986005B2 (en) * 2001-12-31 2006-01-10 Hewlett-Packard Development Company, L.P. Low latency lock for multiprocessor computer system
US7085889B2 (en) * 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
US6973548B1 (en) * 2003-06-20 2005-12-06 Unisys Corporation Data acceleration mechanism for a multiprocessor shared memory system
WO2005066805A1 (ja) 2003-12-26 2005-07-21 Fujitsu Limited 共通メモリアクセス方法及びそれを用いたマルチプロセッサ・システム
US7953932B2 (en) * 2008-02-13 2011-05-31 International Business Machines Corporation System and method for avoiding deadlocks when performing storage updates in a multi-processor environment
US8605099B2 (en) * 2008-03-31 2013-12-10 Intel Corporation Partition-free multi-socket memory system architecture
US9026993B2 (en) * 2008-06-27 2015-05-05 Microsoft Technology Licensing, Llc Immutable types in imperitive language
US9424013B2 (en) * 2008-12-29 2016-08-23 Oracle America, Inc. System and method for reducing transactional abort rates using compiler optimization techniques
US8799572B2 (en) * 2009-04-20 2014-08-05 Microsoft Corporation Sliding-window multi-class striping
US9569282B2 (en) 2009-04-24 2017-02-14 Microsoft Technology Licensing, Llc Concurrent mutation of isolated object graphs
US8103638B2 (en) * 2009-05-07 2012-01-24 Microsoft Corporation Partitioning of contended synchronization objects
US8695003B2 (en) 2009-12-29 2014-04-08 Microsoft Corporation Method for managing data accessibility by scheduling three types of executable agents associated with pre-defined access rights within a domain
US8566544B2 (en) * 2009-12-29 2013-10-22 Microsoft Corporation Compiler-enforced agent access restriction
US8316369B2 (en) 2009-12-29 2012-11-20 Microsoft Corporation Dataflow component scheduling using reader/writer semantics
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
US9098269B2 (en) * 2013-01-04 2015-08-04 Microsoft Technology Licensing, Llc System and method to ensure resource access safety with immutable object types
US10102000B2 (en) 2016-04-01 2018-10-16 Intel Corporation Apparatus and method for non-serializing split locks
CN111258644B (zh) * 2018-11-30 2022-08-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4000485A (en) * 1975-06-30 1976-12-28 Honeywell Information Systems, Inc. Data processing system providing locked operation of shared resources
US4488217A (en) * 1979-03-12 1984-12-11 Digital Equipment Corporation Data processing system with lock-unlock instruction facility
US4392196A (en) * 1980-08-11 1983-07-05 Harris Corporation Multi-processor time alignment control system
US4466059A (en) * 1981-10-15 1984-08-14 International Business Machines Corporation Method and apparatus for limiting data occupancy in a cache
US4441155A (en) * 1981-11-23 1984-04-03 International Business Machines Corporation Page controlled cache directory addressing
US4464717A (en) * 1982-03-31 1984-08-07 Honeywell Information Systems Inc. Multilevel cache system with graceful degradation capability
US4586133A (en) * 1983-04-05 1986-04-29 Burroughs Corporation Multilevel controller for a cache memory interface in a multiprocessing system
US4562536A (en) * 1983-06-30 1985-12-31 Honeywell Information Systems Inc. Directory test error mode control apparatus
US4686621A (en) * 1983-06-30 1987-08-11 Honeywell Information Systems Inc. Test apparatus for testing a multilevel cache system with graceful degradation capability
US4667288A (en) * 1983-06-30 1987-05-19 Honeywell Information Systems Inc. Enable/disable control checking apparatus
US5067071A (en) * 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
US4875155A (en) * 1985-06-28 1989-10-17 International Business Machines Corporation Peripheral subsystem having read/write cache with record access
JPS62194563A (ja) * 1986-02-21 1987-08-27 Hitachi Ltd バツフア記憶装置
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US4929940A (en) * 1988-11-18 1990-05-29 International Business Machines Corporation Collision crossbar switch
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5060136A (en) * 1989-01-06 1991-10-22 International Business Machines Corp. Four-way associative cache with dlat and separately addressable arrays used for updating certain bits without reading them out first
US4967414A (en) * 1989-01-06 1990-10-30 International Business Machines Corp. LRU error detection using the collection of read and written LRU bits
US5237670A (en) * 1989-01-30 1993-08-17 Alantec, Inc. Method and apparatus for data transfer between source and destination modules
JP2833062B2 (ja) * 1989-10-30 1998-12-09 株式会社日立製作所 キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
JP2826857B2 (ja) * 1989-12-13 1998-11-18 株式会社日立製作所 キャッシュ制御方法および制御装置
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
JPH04119445A (ja) * 1990-09-11 1992-04-20 Canon Inc 計算機システム
US5454082A (en) * 1991-09-18 1995-09-26 Ncr Corporation System for preventing an unselected controller from transferring data via a first bus while concurrently permitting it to transfer data via a second bus
US5283870A (en) * 1991-10-04 1994-02-01 Bull Hn Information Systems Inc. Method and apparatus for avoiding processor deadly embrace in a multiprocessor system
US5408629A (en) * 1992-08-13 1995-04-18 Unisys Corporation Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system
JPH06110781A (ja) * 1992-09-30 1994-04-22 Nec Corp キャッシュメモリ装置
JP2809961B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
JPH06314264A (ja) * 1993-05-06 1994-11-08 Nec Corp セルフ・ルーティング・クロスバー・スイッチ
US5499354A (en) * 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
FR2707774B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux.
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
US5572704A (en) * 1993-12-15 1996-11-05 Silicon Graphics, Inc. System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes
US5778441A (en) * 1994-03-01 1998-07-07 Intel Corporation Method and apparatus for accessing split lock variables in a computer system
WO1995025306A2 (en) * 1994-03-14 1995-09-21 Stanford University Distributed shared-cache for multi-processors
US5586274A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Atomic operation control scheme
US5490280A (en) * 1994-03-31 1996-02-06 Intel Corporation Apparatus and method for entry allocation for a resource buffer
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
JP2783164B2 (ja) * 1994-09-14 1998-08-06 日本電気株式会社 通信網
US5717942A (en) * 1994-12-27 1998-02-10 Unisys Corporation Reset for independent partitions within a computer system
US5838955A (en) * 1995-05-03 1998-11-17 Apple Computer, Inc. Controller for providing access to a video frame buffer in split-bus transaction environment
US5852718A (en) * 1995-07-06 1998-12-22 Sun Microsystems, Inc. Method and apparatus for hybrid packet-switched and circuit-switched flow control in a computer system
US5717897A (en) * 1996-09-09 1998-02-10 Unisys Corporation System for coordinating coherency of cache memories of multiple host computers of a distributed information system
US5802582A (en) * 1996-09-10 1998-09-01 International Business Machines Corporation Explicit coherence using split-phase controls
US5991819A (en) * 1996-12-03 1999-11-23 Intel Corporation Dual-ported memory controller which maintains cache coherency using a memory line status table
US6092156A (en) * 1997-11-05 2000-07-18 Unisys Corporation System and method for avoiding deadlocks utilizing split lock operations to provide exclusive access to memory during non-atomic operations
KR100582782B1 (ko) * 1998-08-28 2006-08-23 엘지엔시스(주) 캐쉬 일관성 유지 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114042B2 (en) 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
KR100641988B1 (ko) * 2003-05-22 2006-11-06 인터내셔널 비지네스 머신즈 코포레이션 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치
US7814281B2 (en) 2003-05-22 2010-10-12 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment

Also Published As

Publication number Publication date
AU1379299A (en) 1999-05-24
US6092156A (en) 2000-07-18
JP2001522087A (ja) 2001-11-13
WO1999023559A1 (en) 1999-05-14
KR100381618B1 (ko) 2003-04-26
US6389515B1 (en) 2002-05-14
JP3703716B2 (ja) 2005-10-05
BR9814845A (pt) 2000-10-03
EP1029271B1 (en) 2001-09-26
DE69801842D1 (de) 2001-10-31
ATE206219T1 (de) 2001-10-15
DE69801842T2 (de) 2002-04-11
EP1029271A1 (en) 2000-08-23

Similar Documents

Publication Publication Date Title
KR100381618B1 (ko) 비-원자 연산동안 메모리에 배타적 접근을 제공하는분리된 잠금연산방법
US6052760A (en) Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks
US6049845A (en) System and method for providing speculative arbitration for transferring data
US6189078B1 (en) System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
Katz et al. Implementing a cache consistency protocol
JP2501375B2 (ja) マルチプロセッサシステム
US7114042B2 (en) Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US6070231A (en) Method and apparatus for processing memory requests that require coherency transactions
JP3634932B2 (ja) データ完全性を維持するためのスピン・バッファおよび方法
EP0616709B1 (en) Semaphore bypass
JPH06119232A (ja) 共用データ記憶制御システム、マスター処理装置の設定方法、及びデータ複写方法
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
JPH0664567B2 (ja) 多重プロセッサシステム
EP0674273B1 (en) Atomic operation control scheme
Leijten et al. PROPHID: a data-driven multi-processor architecture for high-performance DSP
US6738869B1 (en) Arrangements for out-of-order queue cache coherency and memory write starvation prevention
Lucci et al. Reflective-memory multiprocessor
US11880304B2 (en) Cache management using cache scope designation
US11782836B1 (en) Multiprocessor system cache management with non-authority designation
KR100277446B1 (ko) 데이타 처리 시스템 내의 캐쉬 메모리 데이타를 추론적으로공급하기 위한 방법 및 장치
CN116685958A (zh) 一种访问数据的方法和装置
JPH0196746A (ja) キヤツシユ装置
Gupta et al. Reflective-Memory Multiprocessor
JPH0437948A (ja) 排他制御方式

Legal Events

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

Payment date: 20090408

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee