[go: up one dir, main page]

KR19980086609A - 동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어 - Google Patents

동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어 Download PDF

Info

Publication number
KR19980086609A
KR19980086609A KR1019980013431A KR19980013431A KR19980086609A KR 19980086609 A KR19980086609 A KR 19980086609A KR 1019980013431 A KR1019980013431 A KR 1019980013431A KR 19980013431 A KR19980013431 A KR 19980013431A KR 19980086609 A KR19980086609 A KR 19980086609A
Authority
KR
South Korea
Prior art keywords
instruction
lock
resource
processor
plo
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
KR1019980013431A
Other languages
English (en)
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 KR19980086609A publication Critical patent/KR19980086609A/ko
Abandoned legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Abstract

블록화 심볼(blocking symbol)을 포함하는 PLO(perform locked operation) 명령을 컴퓨터 시스템의 다수 프로세서의 각각에서 실행함으로써 컴퓨터 시스템의 다수 프로세서중의 어느 것에 의해서도 변경될 수도 있는 데이터 구조의 코히어런스(coherence)를 제어한다. 블록화 심볼은 PLD 명령 인스턴스(PLD instruction instance)가 그의 실행 프로세서에 의해 호출될 때 그로부터 추출된다. 그 다음, 프로세서는 하드웨어-마이크로코드(hardware-microcode:H-M)를 사용하여 블록화 심볼을 해싱(hashing)함으로써 보호 저장장치 내의 로크 필드(a lock field in protected storage) 위치를 생성한다. PLO 명령의 블록화 심볼은 PLO 명령을 제공하는 소프트웨어에 의해서 컴퓨터 자원 유니트(computer resource unit)와 연관되며, 그 후에 블록화 심볼은 그에 대한 해싱 동작을 통해 컴퓨터 자원 유니트를 보호된 로크와 연관시킨다. 프로세서가 블록화 심볼에 대한 로크를 획득한 후 실행 PLO 명령 인스턴스가 블록화 심볼과 연관된 자원 유니트를 액세스하고 변경할 수 있게 해야 한다. 블록화 심볼은 동일한 블록화 심볼을 사용하여 동일한 자원에 대해 다수의 프로세서가 발생시키는 PLO 명령 액세스 요구를 직렬화시킴으로써 PLO 동작을 제어하여 한 순간에 하나의 PLO 명령 인스턴스만이 자원을 배타적으로 액세스할 수 있도록 한다.

Description

동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어
본 발명은 다수의 프로세서에 의해 발생하는 저장장치 액세스에 대한 동시의 실행 요구를 직렬화하는(serializing simultaneously executing requests) 새로운 방법을 제공한다. 본 발명은 동일한 데이터 유니트의 액세싱을 위한 명령 실행에 대한 동시적인 프로세서 요구(simultaneous processor requests)를 직렬화한다. 컴퓨터 시스템에서의 동작에 직렬화가 중요한 경우, 본 발명은 충돌하는 동시적인 요구들을 생성할 수도 있는 모든 명령 내에 동일한 심볼(symbol)을 소프트웨어가 삽입하도록 함으로써 소프트웨어에 의해 직렬화가 제어될 수 있게 한다. 동시적 실행 명령 내에 동일한 블록화 심볼(blocking symbol)을 사용하면 그들의 프로세서는 동시에 발생하는 명령을 직렬로 실행하게 된다. 이러한 프로세서 실행 직렬화가 필수적인 한가지 상황은 동일한 집합의 데이터 요소들의 데이터 완전성(data integrity)을 서로에 대해 유지시키기 위해서 이들 데이터 요소를 동시에 액세스하고/변경하기 위한 요구들이 있는 경우에 발생한다. 이 경우, 다수의 프로세서에 의해 동시에 실행되는 동일한 집합의 데이터 요소에 대한 동시적인 변경 요구들을 조정하지 않으면, 데이터 요소 내용을 그 집합내에서 예측할 수 없게 되며, 따라서 신뢰할 수 없기 때문이다.
오늘날 컴퓨터 시스템에서 프로세스들을 병렬로 실행하는 것은 일반적인 것으로서, 본 출원에서 다루고자 하는 직렬화 문제는 종래의 컴퓨터 시스템에서도 다루어졌으나 종래의 기법은 효율적이지 못했거나 본 발명에 의해 얻을 수 있는 시스템 동작의 효율성을 얻을 수 없었다. 문제는 공유 데이터(shared data)를 병렬로 액세스하고 변경할 수 없는 상황 및 프로세스들을 직렬로 실행하여 컴퓨터 시스템에서 데이터의 완전성을 보존해야 하는 상황이 간혹 존재한다는 것이다. 본 발명은 이들 유형의 상황을 처리하고 컴퓨터 시스템의 데이터 구조에 포함된 공유 데이터의 완전성을 보존하고자 하는 것이다. 데이터 구조는 본 명세서에서 컴퓨터 시스템의 “자원(resource)”으로서 언급되는데, 이것에는 예를 들어 데이터 파일(data file), 임의의 유형의 큐(queue), 데이터 임시 보유용 버퍼, 변경가능한 프로그램 등, 즉 병렬 프로세스에 의해 변경될 수 있는 임의의 컴퓨터 데이터 구조가 포함된다.
다수의 프로세스에 의한 자원(다수의 프로세서에 의해 실행되는 프로그램)의 사용을 직렬화한다는 것은 한 시점에서 단지 하나의 프로세스가 자원을 사용하며 어떤 프로세스에 의한 사용이 어떤 다른 프로세스에 의한 사용과 뒤섞이지 않게 됨을 의미한다. 직렬화는 통상적으로 일관된 결과 및 일관된 뷰(consistent results and consistent view)를 제공하기 위해 필요하다. 컴퓨터 시스템의 주 저장장치내 위치에 대한 인출 및 저장 액세스(fetch and store accesses to locations)는 직렬화가 필요할 수도 있는 중요한 경우이다.
첫 번째 예로서, 프로세스 1이 위치 X와 Y에서 각각 값 A와 B를 저장하고 프로세스 2는 위치 X와 Y에서 각각 값 C와 D를 저장하는 경우, X와 Y의 최종 내용은 A및 B 이거나 C및 D 이어야 하며, A및 D 또는 C및 B이어서는 안된다.
두 번째의 예로서, 위치 X 및 Y가 A 및 B를 각각 포함하고 프로세스 1이 X 및 Y에 C 및 D를 각각 저장하고 프로세스 2가 위치 X 및 Y로부터 인출하는 경우, 프로세스 2는 A 및 D나 C 및 B가 아닌 A 및 B나 C 및 D를 인출하여야 한다.
세 번째의 예로서, 프로세스 1 및 2가 위치 Z로부터 인출하는 경우, 또한 인출된 값은 선정된 값 P이기 때문에 프로세스 1이 위치 Z에 Q를 저장하고 프로세스 2가 위치 Z에 R을 저장하면, 프로세스 1은 위치 Z가 Q를 포함한다는 결론을 내리고 프로세스 2는 위치 Z가 R을 포함한다는 결론을 내린다.
이 세 번째의 예는 본 발명과 동일한 양수인에게 양도된 브라운(Brown)등의 미국 특허 세 번째,886,525 호에서 다루어지고 있다. 이 미국 특허 세 번째,886,525 호는 비교 및 교체(Compare and Swap:CS) 명령을 개시한다. CS는 레지스터내의 첫 번째 피연산자(operand) 및 세 번째 피연산자와 저장장치의 특정된 어드레스의 두 번째 피연산자를 가진다. CS는 첫 번째 피연산자와 두 번째 피연산자를 비교하여 그들이 동일하면 세 번째 피연산자를 두 번째 피연산자 위치에 저장하고 그들이 동일함을 조건 코드(condition code) 0으로 나타낸다. 첫 번째 피연산자와 두 번째 피연산자가 동일하지 않으면 CS는 제2 피연산자를 제1 피연산자 레지스터에 로드하고 그들이 다르다는 것을 조건 코드 1로 나타낸다. CS는, 두 번째 피연산자가 인출되는 시점과 CS가 조건 코드를 0 또는 1로 설정함으로써 완료하는 시점 사이에서, 또 다른 프로세서가 실행하는 어떠한 다른 명령도 두 번째 피연산자 위치에 저장하거나 그로부터 인출할 수 없다는 새로운 특징을 가지며, 이 효과는 프로세서의 캐쉬(cache)에서 제2 피연산자가 위치를 포함하는 라인을 CS에 의해 로킹함으로써 달성된다. 이 CS의 신규 특징을 인터로크-업데이트 레퍼런스(interlocked-update reference)라 한다.
세 번째 예에서, 양자의 프로세스들이 CS에 의해 위치 Z에 대한 인출 및 저장을 행하면, 그들 프로세스중의 하나만이 값 P를 인출하게 되고 그 프로세스만이 위치 Z에 저장하게 된다.
CS 명령은 첫 번째 및 두 번째 예에 적용될 수 없는데, 그 이유는 이들 예의 X 및 Y는 다른 캐쉬 라인들에 있을 가능성이 매우 큰 두 개의 상이한 저장 위치이기 때문이다. 프로세서들은 두 개의 캐쉬 라인을 각각 로크할 수 없는데, 이는 그렇게 하면 교착상태(deadlock)에 이르기 때문이다. 예를 들어, 프로세서 1이 X를 포함하는 라인을 로크한 상태에서 Y를 포함하는 라인을 로크하려고 하면, 프로세서 2는 Y를 포함하는 라인을 로크한 상태에서 X를 포함하는 라인을 로크하려고 할 수도 있다. 따라서, 어떠한 프로세서도 동작을 진행할 수 없게 된다.
첫 번째 및 두 번째 예는 프로그램된 로크에 의해서 사실상 다루어진다. 간단하게 프로그램된 로크는 세 번째 예에 대해 설명한 CS 명령에 의해 구현될 수 있다. 이 예에서, 두 번째 피연산자 위치는 로크를 나타낼 수 있으며, 선정된 값 P는 로크가 현재 유지되지 않고 있다는 의미를 가질 수 있다. 프로세스 1 또는 2가 CS를 사용하여 P를 그 프로세스에 대한 세 번째 피연산자 값 (1에 대해 Q 또는 2에 대해 R)으로 대체하면, 그 프로세스는 로크를 획득하여 프로그래밍 규칙에 의해서 첫 번째 또는 두 번째 예의 위치 X 및 Y를 액세스할 수 있게 된다. 다른 프로세스는 프로그래밍 규칙에 의해 그 프로세스가 로크를 획득할 때까지는 X 및 Y를 액세스할 수 없게 된다. 이 다른 프로세스는 첫 번째 프로세스(이것은 1 또는 2일 수도 있음)가 Z의 내용을 P로 대체할 때까지 로크를 획득할 수 없다.
이제, 위치 Z가 나타내는 로크를 기다리는 동안에 프로세스가 무엇을 해야 하는 지의 문제가 실제로 발생한다. 어떤 경우에서 실제적인 해결책은 프로세스가 로크를 “스핀 로크(spin lock)”로서 취급하는 것, 즉 프로세스가 로크를 획득할 때까지 CS 명령 (로크에 대한 스핀)을 반복적으로 실행하는 것이다. 그러나, 이 해결책은 그 프로세스를 실행하는 프로세서의 시간적 낭비를 가져오며, 로크가 장시간 동안 유지되지 않도록 할 수 있는 경우에만 실용적이다. 일반적인 경우, 로크는 매우 장시간 동안 유지될 수 있는데, 그 이유는 그 로크를 유지하는 프로세스가 첫 번째 또는 두 번째 예의 위치 X 또는 Y를 액세스할 때, 예를 들어 페이지 폴트(page fault)와 같은 상황에 직면할 수도 있기 때문이다. 이로 인해, 제어 프로그램이 페이지 폴트를 해결하기 위하여 프로세스가 인터럽트된다. 이러한 작업에는 오랜 시간이 소요되기 때문에, 제어 프로그램은 상기 프로세스를 디스패치(undispatch)하지 않는 대신에 다른 프로세스를 디스패치할 수도 있다. 제어 프로그램은 심지어는 그 프로세스를 포함하는 어드레스 공간을 교체해 버릴 수도 있다(may swap out). 따라서, 사실상 스핀 로크는 페이지 폴트가 발생할 수 없음을 아는 경우 및 프로세서가 I/O 인터럽트와 같은 다른 비동기 인터럽트로 인해 디스에이블되는 경우에만 실용적이다.
일반적인 경우, 로크가 유지되는 때 무엇을 해야 하는 지의 문제에 대한 해결책은 제어 프로그램 서비스를 사용하는 것이다. 예를 들어, 로크는 이벤트 제어 블록(event control block:ECB)에 의해 나타낼 수 있으며, 로크가 유지되고 있음을 알게된 프로세스는 ECB를 특정하는 대기 서비스(Wait service)를 호출할 수 있으며, 이로 인해 상기 프로세스는 디스패치되지 않게 되고, 로크를 보유하는 프로세스는 동일한 ECB를 특정하는 사후 서비스(Post service)를 호출함으로써 로크를 해제할 수 있고, 이로 인해 제1 프로세스가 재차 디스패치되기에 적합한 프로세스 큐(queue of processes)에 배치된다. 이들 서비스를 사용하기 위해서는 아주 많은 시간이 소요될 수 있으므로, 간단한 CS 명령의 수준을 넘어선 어느 정도의 하드웨어 지원 방법(hardware-assisted method)을 이용하여 로킹을 제공함으로써 자원 사용을 직렬화하는 것이 바람직하다.
본 발명의 양수인에게 양도된 아놀드(Arnold)의 미국 특허 제 5,081,572 호에는 전술한 첫 번째 및 두 번째 예에서 사용하기 위한 비교 및 교체 분리(Compare and Swap Disjoint:CSD)와 비교 및 적재(Compare and Load:CL)가 개시되어 있다. CSD 및 CL은 두 개의 위치에 대해 인터로크-업데이트 레퍼런스를 수행한다. 실제, 아놀드의 인터로크-업데이트 레퍼런스를 구현하는 방법은 CSD 또는 CL 명령을 실행하는 프로세서 이외의 모든 프로세서를 중지시키는 것이다. 그러나, 이 방법은 중지된 프로세서의 시간적 낭비가 상당하며 비효율적이다.
프로그램된 로크를 교체하는 또 다른 방법은 컴퓨터 명령의 부분집합을 로킹 클래스(locking class)로 분류하여 그 클래스내의 명령을 사용함으로써 보호할 일반적인 유형의 자원에 대한 액세스를 제어하는 것이다. 이것은 본 발명의 양수인에게 양도된 르메이르(Lemaire) 등의 미국 특허 제 5,333,297 호 및 베게스나(Vegesna) 등의 미국 특허 제 5,488,729 호에 개시되고 있다. 그러나, 이들 중의 그 어느 것도 본 발명의 기본적인 구성요소인 블록화 심볼(blocking symbol)을 개시하지 않고 있다. 르메이르 등의 특허에서는 컴퓨터 명령 부분집합들을 로킹 클래스들로 분류하는데, 이들 각각의 로킹 클래스는 특정의 연산 코드(operation code)에 의해 식별되며 컴퓨터 시스템에서 일반적 유형의 자원에 대해 전용되며, 그 유형은 그들의 명령 연산 코드에 의해서 표시된다. 베게스나 등의 특허는 명령을 실행할 실행 유니트에 따라서 명령을 분류하는 것으로서, 이 방법은 르메이르 등의 특허에서의 명령 분류와는 다른 유형의 명령 분류 방법이다. 르메이르 등의 특허에서는 연산 코드에 의해서 판단되는 각각의 명령 클래스 이중-스레스드 큐(double-threaded queue)와 같은 명령 클래스에 연관된 일반적인 유형의 자원의 데이터를 미세하게 변경할 수 있도록 설계되어 있다. 르메이르 등의 특허에 개시된 명령 분류 방법을 사용하는데 있어서, 로킹 클래스의 어떤 명령을 다수의 프로세서로 이루어진 CEC(Central Electronic Complex)의 임의의 다른 프로세서에 대해 실행중인 경우에 그 동일한 로킹 클래스의 임의의 다른 명령을 현재 사용되지 않는 자원에 대해 실행할 수 없다는 것이 심한 제약 요인이다. 이러한 로크는 각 프로세서의 하드웨어-마이크로코드(hardware-microcode)에 제공되며 각 프로세서로부터 분리된 집중식(centralized) 하드웨어-마이크로코드 저장장치 영역에는 제공되지 않는다. 자원에 대한 로크는 각 프로세서의 하드웨어에 복제되며, 각 로크의 이들 다수의 복사본들 간의 로크의 상태를 조정하기 위해 프로세서간 통신이 필요하다.
본 발명에서는 인터로크-업데이트 레퍼런스나 자원의 액세싱을 위한 명령의 클래스를 사용하지 않으므로, 본 발명은 그들의 결함으로부터 영향을 받지 않는다. 본 발명에 의해서 행해지는 자원 직렬화에서는, 다수 프로세서중의 하나만이 르메이르 특허의 명령 클래스를 실행하여 한 순간에 하나의 자원이 액세스될 수 있게 하는 르메이르 특허의 제약요인이 없다. 반면에, 본 발명에서는, 각각 프로세서가 다른 블록화 심볼을 사용하는 다른 자원을 액세싱하는 한, 또한 그 심볼에 유일한 로크가 할당되도록 구현되는 한, 다수의 프로세서가 병렬로 다수의 자원을 동시에 액세스할 수 있다. 본 발명은 (어떠한 종래기술에서도 찾아 볼 수 없는) 블록화 심볼을 사용하여 자원들을 식별하고 그들에 대한 액세스 직렬화를 제어하는 것이다. 본 발명에서는, 새로운 유형의 명령으로 블록화 심볼을 사용하여 시스템 유저 (예를 들면, 프로그래머 및 프로그램)가 어떠한 종래기술에 의한 기법보다도 더욱 정확하게 액세스 제어를 행하고 또한 더욱 높은 병행성으로 자원을 액세싱하고 또한 더욱 높은 세분성(granularity)로 자원을 액세싱할 수 있게 한다.
(르메이르 등의 특허에서 행해지는) 명령의 로크 분류에서는 이러한 명령 클래스를 사용하도록 컴퓨터 구조를 설계하는 시점에서 자원 유형마다 이에 연관된 명령 클래스를 연관시킨다(bind). 컴퓨터의 제조를 위한 컴퓨터 설계가 공개되기 전에 구조적 결정이 이루어져야 한다. 따라서, 르메이르 특허의 로크 분류된 명령방식으로 구축된 컴퓨터는 이후에 구조적으로 변경되지 못할 수 있으며, 이로 인해 컴퓨터 시스템에 차후 설치될 자원과 로크의 소프트웨어 연관이 불가능해질 수 있다. 최근의 컴퓨터 시스템에서는, 새로운 프로그램들이 개발되고 많은 구형 프로그램이 변경되고 있으므로, 직렬화할 자원들을 프로그램마다 시간에 따라 정의하거나 변경해야 할 것이다. 본 출원의 발명에서는, 어떠한 세분성의 자원에도 로크를 소프트웨어적으로 연관시킬 수 있는데, 이것은 새로이 부가된 자원의 직렬화된 액세싱을 제어하는데 사용가능하다. 로크는, 예를 들어 프로그램에 의해서 동적으로 선택되고 기계(machine)에 특정된다. 기계는 프로그램에 의해서 특정되는 블록화 심볼이 나타내는 자원에 대한 동작을 직렬화한다.
또한, 본 발명에서는 르메이르 등의 특허에서 행해지는 바와 같이 각각의 다른 프로세서에 신호를 보내는 각 프로세서의 명령 실행 초기화 시점에서 발생하는 CPU간의 프로세서간 버스상에서의 CPU간의 통신(inter-CPU communication broadcasts)을 필요로 하지 않는다.
본 발명은 CEC에서 자원의 유저(users of resources)가 자원의 변경을 제어하게 함으로써 그 변경이 자원의 데이터 완전성(data integrity)에 영향을 미치지 않게 하는 새로운 방법을 제공하는 것이다. 본 발명은 프로그램과 프로세서 간에 새로운 유형의 인터페이스를 이용하는 새로운 유형의 명령을 제공함으로써 자원의 유저가 블록화 심볼(blocking symbol)을 특정하고 사용할 수 있게 하여 자원에 대한 유저 액세스의 하드웨어-시행 직렬화(hardware-enforced serialization)를 획득하고 제어하는 한편, 직렬화된 이용을 포함하여, CEC의 다른 프로세서들이 다른 블록화 심볼에 의해 제어되는 다른 자원을 동일한 유형의 명령을 사용하여 액세스하고 사용할 수 있도록 다른 자원의 동시 이용을 가능하게 하기 위한 것이다.
본 발명에서는 새로운 유형의 단일 명령의 단일 실행 인스턴스(instance)를 사용하여 블록화 심볼에 의해서 새로운 방식으로 제어되는 자원을 로킹하고(lock), 변경하고, 또한 언로킹한다(unlock). 자원은 본 발명의 단일 실행 인스턴스 전후에 있어서는 언로킹된 상태에 있다. 중요한 것은 동일 자원의 직렬화 상태는 본 발명의 임의의 명령에 대한 임의의 단일 실행 인스턴스 동안에만 존재한다는 것이다. 따라서, 모든 다른 시점에서는 자원이 언로킹된 상태에 있을 수 있다
소프트웨어 로킹을 이용하는 경우, 로크의 획득 및 그 로크의 해제는 두 개의 개별적인 기계 명령에서 발생하여야 한다. 이들 두 명령 사이에서, 소프트웨어는 자원의 직렬화에 요구되는 계산 단계를 수행한다. 이것은 로크 획득과 로크 해제 사이에서 소프트웨어 오류나 프로세서의 장애가 발생할 수도 있음을 의미한다. 즉, 로크가 유지된 채로 해제되지 않을 경우가 존재하여 전체적인 시스템 장애를 야기할 수도 있다. 이러한 부적절한 상황으로부터의 시스템 복원을 위해, 일반적으로 운영 시스템은, 로크의 승인 및 해제를 위한 로크 매니저 서비스(lock manager service)를 제공하고, 시험중인 로크를 기록하며, 소프트웨어 에러로 인한 것인지 또는 하드웨어 에러로 인한 것인지에 관계없이, 종료되거나 재시작되는 프로그램에 의해서 유지되는 로크를 해제함으로서 복원을 수행한다. 로크 조작을 위한 시스템 서비스를 호출하면 실행되는 기계 명령의 프로그램 경로 길이를 상당히 추가시키게 되는데, 로크의 획득 및 해제를 위해 문제 상태(problem state)로부터 감시 상태(supervisor state)로 또한 감시 상태로부터 문제 상태로의 변경이 요구되는 문제 상태 프로그램의 경우에 특히 그러하다.
본 발명은 프로그래머가 유저 결정(user-determined) 블록화 심볼을 데이터 완전성이 보존되어야 하는 각각의 자원 또는 일군의 자원과 연관시킬 수 있게 하는 방법을 제공한다. 모든 CEC 유저는 프로그램으로 작성된 본 발명에 따른 유형의 모든 명령에 동일한 블록화 심볼을 사용하여 그 심볼과 연관된 자원을 변경하는 액세스를 직렬화한다. 다수의 프로세서가 동일한 자원을 동시에 액세스하는 명령 인스턴스를 실행할 때마다(자원에 대한 액세스는 본 발명에 의해 규정되는 유형의 명령에 동일한 블록화 심볼을 사용함으로써 제어된다), 다수 프로세서의 관련된 자원에 대한 액세스는 직렬화되어 한 순간에 하나의 프로세서 인스턴스가 자원을 액세스할 수 있게 한다. 다수의 프로세서가 그들의 동시적인 실행 인스턴스 동안 다른 블록화 심볼을 사용하는 한, 어떠한 자원의 충돌도 존재하지 않으며 그들 프로세서는 그들의 필요한 자원을 동시에 액세스할 수도 있다.
도 1은 본 발명의 양호한 실시예를 포함하는 컴퓨터 시스템을 도시한 도면.
도 2는 도 1에 도시한 해싱 테이블의 로크 필드 세트를 도시한 도면.
도 3은 본 발명의 방법을 호출하는 명령의 일반적인 표현을 도시한 도면.
도 4 및 5는 본 발명을 포함하는 다수 프로세서중 어떤 프로세서의 하드웨어-마이크로코드에 대한 양호한 동작 방법의 플로우챠트로서, 여기서 상호충돌 PLO 명령 인스턴스들은 필요한 자원이 이용가능하게 될 때까지 지연되어 각 상호충돌 인스턴스는 그의 동작을 성공적으로 완료할 수 있게 된다.
도 6 및 7은 본 발명을 포함하는 다수 프로세서중 어떤 프로세서의 하드웨어-마이크로코드에 대한 다른 동작 방법의 플로우챠트로서, 여기서 어떤 상호충돌 PLO 명령 인스턴스들은 다른 PLO 명령 인스턴스가 배타적으로 사용하는 필요한 자원으로 인해서 성공적으로 완료되지 못하고서 종료되며 그 종료된 PLO 명령 인스턴스가 필요한 자원이 이용가능하게 될 때 차후의 명령 인스턴스에서 그의 프로그램에 의해 차후 반복될 수도 있다.
* 도면의 주요부분에 대한 부호의 설명
2 : 저장장치 제어기
3 : 소프트웨어 공유 저장장치
4 : 보호 저장장치
5 : 프로세서 공유 마이크로코드 영역
6 : DASD(직접 액세스 디바이스)
7 : I/O(입/출력) 디바이스
8 : HLT(해싱 로크 테이블)
본 발명에 의해 제공되는 특정 유형의 명령은 그의 단일 실행 인스턴스가 여러 유형의 동작 기능을 수행할 수 있게 한다. 이들 동작 기능의 각각은 자원 데이터 완전성의 직렬화 보호를 얻기 위해 블록화 심볼을 사용한다. 본 발명에 대해 설명한 실시예에서, 이 명령 유형은 “로크 연산 수행(Perform Locked Operation:PLO)” 명령이라고 불리운다. 본 발명의 상세한 실시예에서, PLO 블록화 심볼은 소프트웨어 프로그램이 토큰(token) (블록화 심볼)을 선택하는 것을 강조하기 위해 프로그램 로크 토큰(Program Lock Token:PLT)이라고 불리운다. 본 발명의 직렬화 제어에서는, 로크를 사용하는 프로그램을 비롯한 모든 소프트웨어로부터 보호 목적으로 감추어진 자원에 대한 로크를 설정하기 위해서 본 발명에 따른 명령 유형의 각 실행 인스턴스에 의해 호출되는 하드웨어-마이크로코드를 사용한다. 소프트웨어 프로그램은 로크를 직접 감시하거나 제어할 수 없다. 로크는 프로그램-프로세서 인터페이스의 일부가 아니라 일 실시예에서 내부적으로 사용되어 블록화 심볼의 필요한 직렬화를 가능하게 하는 것이다.
따라서, 임의의 프로세서상에서 임의의 PLO 명령을 실행하는 임의의 프로세서의 하드웨어-마이크로코드는 그밖의 다른 프로세서(들)상에서 실행되는 PLO 명령(들)에 의해 블록화 심볼과 연관된 특정 자원에 대한 모든 다른 액세스 요구를 직렬화한다. 직렬화는 PLO 명령 실행의 하나의 인스턴스에 대해 지속되며, 이 동안 PLO 명령은 비연속 위치 또는 연속 위치에서 자원의 변경을 수행할 수도 있다. PLO 명령은 다른 프로세서들 상에서 실행되는 동일 블록화 심볼을 특정하는 다른 PLO 명령에 대해 단위 동작(atomic operation)으로서 비연속 위치에 대해 다수의 저장 동작을 수행한다.
자원 유니트는 블록화 심볼에 연관되어 있으며, 이 자원 유니트는, 큐(queue), 소프트웨어 메시지 버퍼(software message buffer), 제어 유니트, 디스크 드라이브(disk drive) 등과 같은 통상적인 유형의 CEC의 하나 이상의 소프트웨어 또는 하드웨어 엔티티(entity)일 수도 있다. 자원 유니트 및 이에 대응하는 블록화 심볼은 자원과 연관된 블록화 심볼에 의해 각 PLO 명령에서 특정된다.
동일한 명령 인스턴스들이 서로 다른 블록화 심볼들을 갖는 한, 동일한 PLO 명령 유형은 충돌없이 다른 프로세서들 상에서 동일한 또는 다른 기능을 실행하는 동시의 인스턴스들을 가질 수도 있다. 그러나, 이들 PLO 명령이 다른 기능을 갖는지 아닌지에 상관없이, 서로 다른 프로세서 상에서 실행되는 다수의 동시적인 PLO 명령 인스턴스가 동일한 블록화 심볼을 갖는 경우에는 충돌이 존재할 것이며, 따라서 자원에 대한 다른 변경을 블록화 심볼을 이용하여 제어하는 것이 필요하다.
본 발명의 하드웨어-마이크로코드에 의해서 설정되고 사용되는 로크는 블록화 심볼에 의해서 제어되는 자원에 대해 일 대 일 관계를 가질 수도 있고 그럴 필요가 없을 수도 있다. 즉, 본 발명은 (하나의 블록화 심볼과 연관된) 하나의 자원 또는 (상응하는 갯수의 블록화 심볼과 연관된) 임의의 갯수의 다수 자원에 대해 단일의 로크가 사용되게 할 수 있다. 즉, 본 발명이 사용하는 임의의 하나의 로크는 블록화 심볼에 의해서 또는 다수의 블록화 심볼에 의해서 사용될 수도 있다. 다수의 블록화 심볼에 각각 연관된 다수의 자원에 대해 하나의 로크를 사용하면, 한 순간에 (이들 블록화 심볼들 중 연관된 심볼을 이용하는) 이들 자원중의 하나만이 로크를 사용할 수 있다. 하나의 로크에 다수의 블록화 심볼이 대응되는 이러한 관계는 상기 로크에 의해 제어되는 다수 블록화 심볼 집합과 연관된 모든 자원을 사용하는데 있어서 직렬화의 효과를 갖는다.
프로그램-규정(program-defined) 데이터 구조를 직렬화하기 위해 프로그래머에 의해서 자유롭게 특정되기 때문에, 최근의 고성능 컴퓨터 시스템에서 사용가능성이 클 수도 있다. 컴퓨터 시스템에 의해서 제공되는 물리적 로크에 대한 심볼의 과도한 수행(over-commitment)은 그같은 상황을 다루기 위한 필수적인 설계적 절충사안이다. 성능에 미치는 영향은 충분한 수의 로크 및 양호한 해싱 알고리즘(hashing algorithm)에 의해 최소화된다.
결과적으로, 허용된 PLO 명령의 실행 인스턴스 동안, 자원에 대한 액세스의 방지는 예를 들면 다른 프로세서(들)상에서 실행되는 다른 명령 스트림에 동일한 블록화 심볼을 사용하며 동시 실행되는 PLO 명령 인스턴스에 이용된다. 본 발명의 PLO 직렬화는 PLO 명령의 동시 실행에만 적용되며, 본 발명은 (소프트웨어 직렬화 또는 다른 유형의 마이크로코드-제어 직렬화와 같이) 자원에 동시에 이용되는 비-PLO 직렬화기법에 의해서 제어되는 액세스에 대해서는 자원을 직렬화하지 않는다. PLO 명령은 자신의 사용 규칙에 따르는 프로그램에 대해 협력적인 직렬화 기능을 제공한다. 따라서, 본 발명은, 그의 상당한 장점이 얻어질 수 있다면, 자원을 액세스할 수 있는 모든 소프트웨어 프로그램에서 자원에 대해 사용되는 유일한 직렬화 기법임에 틀림없다. 달리 말해서, 특정 자원을 액세싱하는 모든 프로그램은 제어되는 자원에 대한 액세스 직렬화를 실행시키기 위한 유일한 수단으로서 본 발명의 PLO 명령을 배타적으로 사용해야 한다.
그러나, 본 발명의 PLO 기법은 자원마다 배타적으로(per resource exclusive basis) 다른 소프트웨어 직렬화 기법과 호환성을 갖는다. 이는 다른 소프트웨어 직렬화 기법이 그들의 데이터 완전성을 보장하기위해 동일한 CEC에서 다른 자원에 대해 사용될 수도 있음을 의미한다. 즉, PLO 기법을 자원에 대해 배타적으로 사용하는 경우에만 자원의 데이터 완전성을 유지하기 위해 PLO 기법에 의존할 수 있으나, PLO 기법에 의존하지 않는 다른 자원은 그들의 데이터 완전성을 유지하기 위해 다른 기법을 계속 사용할 수도 있다. 따라서, 본 발명의 PLO 기법이 CEC에서 사용되는 유일한 직렬화 기법일 필요는 없다. 종래의 소프트웨어 로킹 기법을 사용하는 어떠한 자원도 소프트웨어 로크에 의해 계속 직렬화될 수 있으나, PLO 명령과 소프트웨어 로크간에 어떠한 공통부분(intersection)도 없기 때문에 PLO 명령은 동일한 자원에 대해 소프트웨어 로킹과 함께 사용될 수 없다. 그럼에도 불구하고, 자원의 데이터 완전성에 대한 염려가 없는 경우에는 혼합된 기법(본 발명의 PLO 명령 및 다른 기법)을 자원과 함께 사용할 수도 있으므로, 데이터 완전성의 유지를 위해 PLO 명령에 반드시 의존할 필요는 없다. PLO 기법을 어떤 자원에 대해 다른 직렬화 기법과 혼합하는 경우에, 프로그래머는 그 혼합이 자원에 대해 요구되는 데이터 완전성을 확실하게 제공하도록 해야 한다.
따라서, 본 발명에서는 자원의 데이터 완전성을 확실하게 하려는 경우 본 발명의 PLO 기법을 자원마다 배타적으로 적용해야만 한다. 따라서, 각각의 PLO 명령 실행 인스턴스 동안, CEC의 다른 프로세서(들)상에서 실행하는 PLO 명령의 모든 다른 인스턴스가 블록화 심볼과 연관된 자원을 액세싱하는 것이 방지된다. 이렇게 PLO 블록화 심볼에 의해서 제어되는 자원 수정 방식은 자원의 모든 액세싱을 제어하기 위해 PLO 명령을 배타적으로 사용하여 자원에 저장된 데이터의 완전성 (코히어런스(coherence))을 확실하게 한다.
프로그래머는 CEC에서 사용되는 모든 PLO 블록화 심볼에 값들을 할당하기 위해 PLO 명령을 사용하여 임의의 CEC에서 사용할 프로토콜(protocol)을 확정한다. 액세스가 직렬화되어야 하는 각각의 서로 다른 자원 유니트들을 나타내기 위해 서로 다른 나타내기 위해 다른 값을 할당한다. 프로토콜은 그것이 자원 유니트에 대한 유일의 블록화 심볼을 선택하는 한 자원 유니트에 대한 PLO 블록화 심볼로서 수치 값(numerical values)을 임의로 선택할 수도 있으며, 어떠한 PLO 자원 유니트를 액세싱하는 모든 소프트웨어는 모든 PLO 명령에 그들 유일의 블록화 심볼을 사용한다. 블록화 심볼과 연관된 자원 유니트는 소프트웨어 프로토콜 할당에 의해서 결정되는 단일의 컴퓨터 자원이나 다수의 컴퓨터 자원을 포함하기 위한 유연성을 갖는다(예를 들면, 자원 유니트는 단일의 큐나 다수의 큐일 수도 있다.). 따라서, 자원 세분성(granularity)은 시스템 유저에 의해서 결정된다. 즉, 블록화 심볼 값에 자원을 할당하기 위한 프로토콜 선택은 PLO 기법이 다루는 자원 세분성을 결정한다. 프로세서는 블록화 심볼의 프로그래밍 의미나 블록화 심볼이 수반하는 세분성을 알지 못한다. 각 PLO 명령에서 지정된 블록화 심볼은 어떤 자원이 PLO 명령에 의해 데이터 완전성 보호를 받고 PLO 명령 실행에 의해 시행되는 자원 세분성인 가를 결정한다. 동일한 자원 유니트를 액세싱하고 그 자원 유니트에서 데이터를 수정할 수 있는 CEC의 PLO 명령의 모든 실행에서 동일한 블록화 심볼을 사용하여야 한다. 프로세서는 블록화 심볼의 프로그래밍 의미나 블록화 심볼이 보호하는 액세스의 세분성을 알지 못한다. 프로세서는 심볼 자체에 대해서만 직렬화를 행한다. 이후 본 명세서에서, 자원이란 용어는 이 문단에서 규정하는 “자원 유니트”를 명명하기 위해 사용된다.
종래의 소프트웨어 로킹 방법은 자원에 대한 로크 필드, 예를 들면 큐 로크 필드의 어드레스를 알고 사용해야 한다. 반면에, PLO 블록화 심볼을 사용하는 소프트웨어는 어떤 로크 필드의 어드레스를 알거나 사용할 필요가 없다. PLO 기법에서는 그의 블록화 심볼을 어떤 특정 위치에 저장해야만 할 필요가 없으며, 소프트웨어 로크 필드나 소프트웨어 프로토콜 로크 위치가 없다. 소프트웨어 로크와는 달리, 블록화 심볼은 특정한 위치에서 소프트웨어에 대해 액세스가능해야만 하는 것은 아닌데, 이것이 프로토콜 위치에서 소프트웨어에 의해 액세스되어야 하는 종래의 소프트웨어 로크와 비교되는 블록화 심볼의 주요한 차이점이다. 따라서, 블록화 심볼은 이들에 연관된 자원에 대한 어떠한 어드레스 관계도 없이 임의적으로 선택되거나, 약간의 어드레스 관계가 블록화 심볼 프로토콜을 결정하기 위한 프로그램에 의해 사용될 수도 있다.
CEC에서 사용하는 모든 프로그램에서 PLO 명령을 배타적으로 사용하여 복잡한 프로그램 데이터 구조에 대한 다수 인출 및 저장 동작의 단위성(atomicity)을 획득함으로써 시스템 성능을 상당히 개선할 수 있다. 종래의 소프트웨어 프로그램은 그가 사용하는 종래의 소프트웨어 로크를 (본 명세서에서 전술한 자원마다의 PLO 배타적 규칙에 따라) 본 발명의 PLO 명령으로 완전히 교체하도록 재작성되거나 재편집될 수도 있다.
또한, 본 발명의 PLO가 PLO 명령 실행의 단일 인스턴스 동안 액세스된 자원의 비연속적인 위치에서 데이터 변경의 완전성을 보장함을 인식하는 것이 중요하다. PLO 명령 실행의 각 단일 인스턴스 동안, 그 PLO 명령을 발생시키는 소프트웨어는 그 프로그램에 대해 실행될 특정 PLO 인스턴스의 기간 중에 특정된 변경을 위해서 연관된 자원을 배타적으로 제어한다. PLO 인스턴스 동안의 자원의 배타적 제어는 프로세서가 중앙 하드웨어-마이크로코드(H-M) 저장 영역의 지정된 블록화 심볼에 대한 H-M 로크가 나타내는 이용가능한 상태를 찾음으로써 자원에 대한 경합(contention)이 없음을 알게 될 때 시작하며, 어떠한 충돌도 없는 경우 PLO 명령에 의해서 특정되는 자원이 배타적으로 변경될 수 있고, 그후에 실행 인스턴스가 종료된다. 따라서, 인스턴스의 개시 후에 경합이 검출되고, 인스턴스는 경합이 종료되었음이 표시될 때까지 계속 대기 상태에 있을 수도 있으며, 그 후에 인스턴스는 자원에 대한 그의 배타적인 특정 변경을 수행하고, 최종적으로 그 인스턴스를 종료한다.
본 발명의 PLO 명령을 사용하는데 있어서의 중요한 장점은 다른 PLO 명령에 대해 시행되는 자원에 대한 각 로크아웃(lockout)의 기간이 매우 짧다는 점이다. 직렬화가 발생할 각 로크아웃은 PLO 명령 실행의 단일 인스턴스에 대해서만 존재한다. PLO 인스턴스가 완료되자 마자, 자원은 다른 PLO 인스턴스에 의해 변경될 수 있으므로, 하나의 PLO 명령 인스턴스로부터 다음의 PLO 명령 인스턴스로 아주 신속한 스위칭이 이루어질 수도 있다. 이것은 명령 실행의 많은 수 (수백)의 인스턴스에 대해 단일의 로크된 상태를 유지해야만 하는 소프트웨어 로크에 의해서는 가능하지 않다. 이러한 소프트웨어 로크와 비교되는 본 발명에서는 특정된 블록화 심볼에 의해서 제어되는 자원에 대한 명령 실행의 한 인스턴스에 대해서만 로크된 상태를 유지한다.
또한, 본 발명의 PLO 명령이 비-특권(non-privileged) 명령어일 수도 있음을 이해하는 것이 중요하다. 이러한 PLO 명령은 비-특권 프로그램으로부터 추출될 수 있는데, 이것은 명령의 실행을 위해 프로세서 제어를 감시(supervisor) 프로그램으로 스위칭해야만 하는 높은 시스템 오버헤드(high system overhead)를 피할 수 있게 한다. 이와는 비교적으로, 종래의 소프트웨어 로킹은 (많은 수의 명령을 사용하여) 감시상태에서 실행되는 로킹 제어 프로그램에 의해서 자주 행해진다. 시스템 자원을 변경하기 위해, 종래의 비-감시 프로그램은 자원을 변경하거나 액세스 로크를 승인할 수도 있는 감시 프로그램으로 프로세서 제어를 스위칭해야 한다. 감시 프로그램은 (큐 앵커(anchor)와 같은) 로크 위치를 액세스하고, 그의 로크 상태를 하나씩 검사하고, 언로크 상태의 발견시 로크 상태를 획득한 후에, 자원을 변경하고, 또는 그 로크를 바로 승인한다. 그리고 최종적으로, 감시 프로그램은 프로세서 제어를 요구 비-특권 프로그램으로 다시 되돌려 그 비-특권 프로그램이 떠난 지점 (감시 서비스를 호출한 지점)부터 계속될 수 있게 한다. 반면에, 본 발명은 그 대신에 PLO 명령 실행의 단일 인스턴스를 대신 사용함으로써 이같이 복잡한 종래기술의 시나리오를 피할 수 있다.
자원에 대한 블록화 심볼의 프로토콜 결정은 프로세서가 사용하는 하드웨어-마이크로코드에 의한 제한조건없이 PLO 명령에 대한 소프트웨어 레벨에서 행해진다. 블록화 심볼은 사람이 임의적으로 할당 (예를 들면, 블록화 심볼들을 서로 다르게 할당)하는 것에 의해서나 선정된 알고리즘을 사용하는 것에 의해서 선택될 수도 있다. 블록화 심볼이 소프트웨어 PLO 명령에서 지정되기 전에 따라서 이 심볼이 프로세서에 의해서 사용되기 전에 블록화 심볼을 자원에 할당한다. 따라서, 소프트웨어는 어떤 블록화 심볼이 어떤 자원과 관련이 있는 지를 알고, 또한 자원의 위치를 알게 되는데, 이는 그 소프트웨어가 각 PLO 명령에 자원을 액세싱하기 위한 피연산자를 제공하기 때문이다.
본 발명에 대해 설명한 각 실시예는 CEC에서 PLO 명령을 실행하는 모든 프로세서가 사용하는 보호 저장장치(protected storage)내에 마이크로코드 공유 영역(microcode shared area)을 제공한다. 마이크로코드 공유 영역은 소프트웨어 프로그램에 보이지 않는데(transparent to software programs), 그 이유는 이 저장장치 영역이 PLO 명령을 사용하는 소프트웨어 프로그램으로부터 보호되며 그 프로그램에 의해서 어드레싱될 수 없기 때문이다. 공유 마이크로코드 영역의 PLO 로크 필드는 얼마나 많은 프로세서가 PLO 명령을 동시에 실행하는 가에 관계없이 동시에 실행되는 PLO 명령에 동일한 블록화 심볼을 사용하는 다수의 프로세서를 조정할 수 있게 한다.
양호한 실시예의 동작 방법에서, 임의의 PLO 명령에 대한 전체적인 처리는 PLO 명령을 포함하는 소프트웨어를 실행하는 프로세서의 각각에 의해서 행해진다. CEC의 보호 저장장치의 마이크로코드 공유 영역은 PLO 명령 실행의 지원에 필요한 마이크로코드를 포함하며, 보호 저장장치의 로크 필드는 CEC에서 PLO 명령을 실행하는 모든 프로세서에 의해서 액세스되고 사용된다. 본 명세서에 개시된 원리에 의해, 당업자는 해싱 및 로크 조작을 하드웨어 기능으로서 수행하는 실시예가 가능함을 예상할 수 있을 것이다.
본 명세서에서 설명한 실시예는 PLO 로크 엔트리의 테이블을 포함하는 CEC의 보호 저장장치에 위치한 하드웨어-마이크로코드(H-M)를 사용하여 제각기 PLO 블록화 심볼에 대해서 잘 알려진 유형의 해싱(hashing)동작을 수행하는 하나 이상의 프로세서를 가진다. 보호 저장장치는 하드웨어-마이크로코드에 대해서만 액세스가능하며 소프트웨어 명령에 의해 어드레스될 수 없다. 각 PLO 로크 엔트리 (PLO 엔트리)는 CEC에서 실행되는 PLO 명령에서 사용가능한 하나 이상의 블록화 심볼에 의해 지정된 하나 이상의 자원 유니트와 연관된다. 이들 PLO 로킹 엔트리의 각각의 크기는 두가지 상태 즉 이용가능한(언로킹된) 상태 및 로킹된 상태 중의 하나로 설정가능한 단일 비트(이것은 L 비트라고 할 수도 있음) 만큼 작을 수도 있다.
PLO 블록화 심볼은 PLO 명령 실행 인스턴스가 호출되는 경우에 PLO 명령을 실행하는 프로세서에 의해서 추출되며, 그 다음 블록화 심볼은 집중식의 보호 저장장치의 H-M 로크 필드 어드레스로 변환된다.
양호한 실시예에서, 각 프로세서는 프로세서 상에서 각 PLO 명령을 실행하는데 필요한 모든 H-M 처리를 수행한다. 프로세서가 현재 실행 PLO 명령 블록화 심볼에 대한 해싱 결과의 생성을 완료하면, 프로세서는 위치를 찾은 PLO 엔트리의 로크를 획득하여 PLO 실행 인스턴스가 연관된 자원에 변경을 수행할 수 있도록 한다.
본 명세서에서 설명한 본 발명의 양호한 실시예는 하나 이상의 블록화 심볼을 이에 대응하는 PLO 로크 엔트리와 연관시키는 하드웨어-마이크로코드를 가진다 (로크 엔트리는 동일한 로크의 위치를 찾는 이들 소프트웨어-프로토콜-규정 블록화 심볼의 각각에 의해서 제어되는 자원과 연관되어 있다). 이 연관은 보호 저장장치의 PLO 엔트리가 각각의 연관된 자원에 대한 데이터 코히어런스 로킹 기능(data a coherence locking function)을 수행할 수 있게 한다. 각 블록화 심볼과 PLO 엔트리중의 한 엔트리간의 PLO 연관성은 블록화 심볼에 대한 요구 프로세서의 H-M에 의해 수행되는 선정된 해싱 동작에 의해 본 명세서의 양호한 실시예에서 구현된다. (실행 소프트웨어에는 보이지 않는) H-M 해싱 연산은 할당가능한 PLO 블록화 심볼의 각각에 대해 해싱 결과를 제공하는 임의의 해싱 알고리즘을 사용할 수도 있다. 예를 들면, 해싱 동작은 블록화 심볼에 선정된 비트 위치 부분집합을 사용할 수도 있으며, 산술 및/또는 배타적-논리합(exclusive-OR) 기능을 비트 값들에 적용하여 필요한 해싱 결과를 생성한다. 각 블록화 심볼에 대한 해싱 결과는 H-M 영역에 서로 다른 PLO 엔트리의 위치를 찾는다. 어떤 해싱 알고리즘은 해싱 결과를 집중식 H-M 영역의 연관된 PLO 엔트리의 저장위치로 변환하기 위한 테이블을 포함할 수도 있다.
블록화 심볼의 수는 로크의 수보다 상당히 많을 수도 있는데, 이는 다수의 블록화 심볼을 동일한 로크에 대해 해싱할 수도 있기 때문이다. 따라서, 블록화 심볼의 어떤 것들은 동일한 해싱 결과를 갖고 동일한 로크의 위치를 찾는다. 동일한 로크에 대한 다수 블록화 심볼의 해싱은 어떠한 코히어런스 문제도 야기하지 않으나, 시스템 성능을 저하시킨다. 그 이유는 다수의 자원을 나타내는 다수 블록화 심볼집합중의 어느 한 심볼을 해싱함으로써 얻을 수 있는 하나의 해싱 결과를 사용하여 하나의 로크를 액세스하는 경우, 동일한 물리적 로크의 사용시에 우발적인 충돌이 있을 수도 있으며, 이때 다수 자원중의 하나만이 로크되고 동시에 직렬로 액세스될 수 있기 때문이다. 그러므로, CEC는 로크와 블록화 심볼간의 일대일 관계없이 임의의 갯수의 로크와 블록화 심볼을 가질 수 있다. 경험에 비추어 볼 때, 하드웨어-마이크로코드 설계자는 그의 기계를 사용할 계산 환경에 대해 최적 수의 로크 및 최상의 해싱 알고리즘을 선택해야 할 것이다.
각각의 유일한 블록화 심볼은 모든 프로세서에 대한 동일한 PLO 로크 엔트리에 대해 항상 해싱될 것이기 때문에, PLO 엔트리에 블록화 심볼을 저장할 필요가 없다. 각 프로세서가 필요한 H-M 로크를 획득하고 그를 해제하는 것을 비롯하여, 각 PLO 명령 인스턴스에 대한 H-M 처리를 수행하게 함으로써, 실행중인 프로세서의 프로세서 식별자(processor identifier:PID)를 PLO 엔트리에 저장할 필요가 없게 된다. 따라서, 양호한 실시예에서는, PLO 엔트리에 의해 액세스를 시도하는 프로세서의 프로세서 식별자 및/또는 블록화 심볼을 각 PLO 엔트리에 저장할 지의 여부는 선택사양적이다. 집중식 보호 저장장치의 각 PLO는 적어도 L 필드를 갖는데, 이것은 셋 오프(set off) 시에는 제각기의 PLO 엔트리에 대한 이용가능한 상태를 나타내며 셋 온(set on) 시에는 현재 PLO 명령을 실행하는 자원에 대한 배타적인 액세스를 허용하는 연관된 자원에 대한 로크 상태를 나타낸다.
다수 실행 프로세서중의 하나가 그가 생성한 해싱 결과를 사용하여 필요한 PLO 엔트리의 위치를 찾는 경우, 상기 위치에 배치된 PLO 엔트리의 로크 필드에 대해 그 프로세서는 동일한 H-M 로크로 해싱되는 동일한 블록화 심볼 또는 다른 심볼을 사용하여 임의의 PLO 명령 인스턴스를 동시에 실행하는 또 다른 프로세서와 경합한다. 다수 프로세서의 경합은 액세스된 PLO 엔트리의 로크 필드에 대한 단위 검사(atomic testing) 및 세팅을 필요로 한다.
따라서, 위치를 찾은 PLO 엔트리에서 로크 필드를 얻기 위한 단위적 동작은 경합 프로세서중의 어떤 것이 그의 블록화 심볼과 연관된 자원을 배타적으로 액세스하게 되는 가를 결정한다. 단위적 동작은 동일한 블록화 심볼을 사용하여 다수의 동시적인 PLO 요구들간의 충돌의 모호성을 해결하며, 자원의 데이터 완전성에 대한 동시적인 손상 가능성을 피한다. 어떠한 단위적 동작도 사용하지 않는다면, 경합하는 프로세서들은 L 비트를 동시에 검사하고 그 비트가 이용가능한 상태로 되어 있음을 알게된다. 그후에 이들 프로세서 각각은 연관된 자원을 액세스하기 위해 자신이 선택될 수 있다고 추측한 결과를 상기 L비트를 동시에 세팅할 수도 있으며, 이로 인해 이들 프로세서가 자원의 변경을 동시에 저장할 수 있게 되어, 한순간에 단 하나의 프로세서만이 자원을 변경할 수 있다는 코히어런스 규칙을 위반하게 된다. 이 예서의 코히어런스 문제는 종래 기술의 비교 및 교체(CS) 단위동작에 의해서 해결된다. 선택적으로, 종래기술에서 볼 수 있는 검사 및 세팅 명령도 또한 보호 각각의 실행 PLO 명령에 대해 사용하여 H-M 로크를 얻을 수 있다. 따라서, 둘 이상의 프로세서가 로크에 대해 동시에 경합할 때 경합중인 프로세서들이 CS 단위 동작을 사용하여, 어떤 프로세서가 연관된 자원을 배타적으로 액세스할 수 있는 다음 프로세서가 될지를 결정한다.
단위적 동작은 어떤 프로세서가 상기 위치를 찾은 PLO 엔트리와 연관된 자원에 대한 PLO 실행 인스턴스를 완료할 다음의 프로세서 인가를 결정한다. 경합하는 프로세서가 없는 경우, 단독 요구 프로세서는 그의 PLO 인스턴스를 완료하게 된다. 경합하는 프로세서가 있는 경우, 그들 프로세서는 L 필드의 상태를 동시에 검사할 수도 있다. 임의의 프로세서가 검사하는 동안, 그 프로세서는 L 필드가 이용가능한 상태에 있는지 또는 로크 상태에 있는지를 알게 된다. L 필드가 이용가능한 상태에 있는것으로 밝혀지면, 단위 동작은 그들 프로세서중의 하나가 L 필드를 로크된 상태로 설정하고 이에 따라 그 프로세서가 PLO 실행 인스턴스를 완료하도록 선택되어 PLO 실행을 계속할 수 있게 된다. 또 다른 프로세서는 로크 필드를 검사하여 로크된 상태라고 판단하며, 이에 따라 프로세스는 PLO 실행의 나머지를 진행하지 않는다. L 필드가 로크 상태에 있음을 발견한 어떠한 프로세서도 단위적 동작에 의해서 선택되지 않으며, 그 프로세서는 〔1〕그의 PLO 실행 인스턴스를 종료하고 이를 프로그램에 다시 보고하거나 〔2〕L 필드가 이용가능한 상태로 발견될 때까지 L 필드에 대한 단위 검사를 계속 수행하는 지연 루프(delay loop)에 진입할 수도 있다. 그후에, 그 프로세서는 연관된 자원을 배타적으로 액세스하여 PLO 실행 인스턴스를 완료할 수 있게 된다. 따라서, PLO 인스턴스를 실행하는 임의의 프로세서가 연관된 자원에 대한 배타적 액세스로부터 지연될 수도 있는데, 이것은 다른 프로세서에서 실행하는 이전 PLO 인스턴스가 완료하여 PLO 엔트리의 L 상태가 이용가능한 상태로 리세트될 때까지 지속된다. 그 다음, 요구 프로세서는 자원에 대한 배타적 수정 권리를 획득하여 PLO 인스턴스를 완료할 수 있다.
다수의 PLO 엔트리가 H-M 영역에 존재하는 경우, 다수의 프로세서는 여러 다른 PLO 엔트리를 액세스하기 위해 여러 다른 블록화 심볼을 사용하여 PLO 명령 인스턴스를 동시에 실행할 수 있으며, 이에 따라 프로세스는 여러 다른 자원을 동시에 액세스할 수 있다. 그러나, 다수의 프로세서가 동일한 블록화 심볼을 사용하여 PLO 명령 인스턴스를 실행하려고 하는 경우, 그들은 동일한 자원에 대해 동일한 PLO 엔트리로의 해싱을 수행하게 되고 이에 따라 그들이 직렬화되어, 한순간에 하나의 요구 PLO 명령만이 연관된 자원의 액세스를 위한 배타적인 권리를 가질 수 있게 된다.
요약하면, PLO 엔트리 내의 로크 필드 L은 PLO 명령을 실행하는 각 프로세서의 H-M에 의해서 개별적으로 검사되며, 한순간에 하나의 프로세서만이 로크 비트 L을 그의 로크된 상태로 설정하고 그 세팅한 프로세스에 연관된 자원의 변경을 위한 현재의 배타적 권리를 부여할 수 있도록 한다. 각 PLO 인스턴스의 완료시, L 필드는 이용가능한 상태로 설정되며, 그런 후 L 필드가 이용가능한 상태에 있음을 발견한 제 1의 프로세서는 개별적으로 L 필드를 로크된 상태로 세팅할 수 있게 되며, 그 프로세서는 실행 인스턴스를 완료하기 위해 연관된 자원을 변경하기 위한 배타적 권리를 부여받으며, 그밖의 다른 경합 프로세서들은 PLO 인스턴스의 완료를 지연시키거나 PLO 인스턴스를 중지시키게 된다. 따라서, 임의의 프로세서에 의한 비교 및 교체단위 동작은 각 PLO 실행 인스턴스의 초기 부분 중에 발생하며, 이것은 그 프로세서가 개별적으로 L 필드를 로크 상태로 세팅하고 PLO 명령 실행 인스턴스를 완료할 수 있게 될 때까지 지연되는 루프일 수도 있다.
PLO 충돌은 거의 발생하지 않을 것으로 예상되지 않고 충돌하는 PLO의 인스턴스의 시간은 길어질 것으로 예상되나 이 드물게 예상되는 지연이 단기간으로 유지해야 하는 PLO 실행 인스턴스의 평균 길이에 많은 영향을 끼쳐서는 안되고 매우 단기간으로 유지되어야 한다.
본 발명으로서 간주되는 주제는 특허청구범위에서 특히 지적되고 명백하게 청구된다. 본 발명의 상기 및 기타 다른 목적, 특징 및 장점은 도면을 참조한 다음의 상세한 설명으로부터 자명하게 될 것이다.
도 1에는 본 발명의 양호한 실시예를 포함하는 컴퓨터 시스템(CEC)의 적절한 부분이 도시되어 있다. 이 CEC는 다수의 중앙 프로세서(예를 들면, CPU)(1 내지 N)를 구비하는데, 이들 프로세서의 각각은 데이터 및 제어 버스(1B 내지 NB)에 의해서 개별적으로 소프트웨어 공유 저장장치(software shared storage)(3)에 접속된다. 이들 CEC 각 프로세서는 그가 실행할 수 있는 각 명령을 수행하는 하드웨어 및 마이크로코드(hardware and microcode:H-M)를 포함한다. 각 프로세서를 단일의 반도체 칩상에 제조할 수도 있고, 또는 다수의 프로세서를 단일의 반도체 칩상에 제조할 수도 있고, 또는 단일의 프로세서를 다수의 반도체 칩으로 제조할 수도 있다. CEC의 일례서는 IBM S/390 시스템이 있을 수 있는데, 이 시스템의 모델로서는 1개 내지 10개의 프로세서를 가진 여러 다른 것들이 있다.
본 발명은 하나 이상의 프로세서를 가진 CEC에 적용되는데, 그 이유는 본 발명은 공유 저장장치(3)내의 동일 자원을 동시에 액세스하려고 하는 여러 프로세서들 간의 충돌을 다루는 것이기 때문이다. 하지만, 본 발명은 단일의 프로세서 및 저장장치를 가진 CEC에서도 그의 역할을 정확하게 행할 것이다.
CEC 저장장치는 모든 프로세서(1-N)에 의해 사용되며, 이 저장장치는 시스템의 주 저장장치일 수도 있고 또는 CEC에 접속되어 종종 두 번째 레벨 또는 L2 캐시(cache)라고 불리우는 유형의 공유 하드웨어 캐시(a shared hardware cache)일 수도 있다. 이 CEC 저장장치는 DRAM(동적 랜덤 액세스 메모리:dynamic random access device) 칩들로 구성된다. 이 저장장치는 그의 내용을 DASD(직접 액세스 디바이스:direct access device)(6) 및 I/O 디바이스(입/출력 디바이스:input/output device))(7)로부터 수신하고 그들에 저장한다. 이 CEC 저장장치는 저장장치 제어기(2)를 통해 프로세서(1-N)에 의해서 액세스된다.
이 실시예에서, CEC 저장장치는 두 개의 섹션(section), 즉, 소프트웨어 프로그램 및 데이터를 포함하는 소프트웨어 공유 저장장치(3)와 프로세서(1-N)가 사용하는 H-M 정보만을 포함하는 보호 저장장치(protected storage)(4)로 분할된다. 소프트웨어 공유 저장장치(3)는 컴퓨터 시스템에서 모든 소프트웨어 프로그램이 사용하는 명령 및 데이터를 포함하는 공지된 주 컴퓨터 메모리로서, 이 소프트웨어 공유 저장장치(3)는 잘 알려진 유형의 소프트웨어 자원(resource)(A 내지 Z)을 포함한다. 이들 자원으로서는 어떤 복잡한 컴퓨터 시스템에서의 동작을 가능케 하는데 필요한 소프트웨어 구조인 프로그램, 큐(queue), 버퍼(buffer) 등이 있다. 이 CEC에서, 자원은 CEC의 유저(user)들간에서 공유될 수 있는 것이다. CEC 유저에는 CEC에서 실행되는 어떠한 유형의 프로그램도 포함되며, 프로그래머를 비롯한 프로그램 소유자가 포함된다.
소프트웨어 공유 저장장치(3) 및 보호 저장장치(4)의 양자는 액세스를 위해 프로세서(1-N)중의 어떤 것이 저장장치 제어기(2)에 보낸 어드레스에 의해서 액세스된다.
양호한 실시예에서, 보호 저장장치(4)는 IBM S/390 CEC의 각각에서 볼 수 있는 잘 알려진 HSA(하드웨어 시스템 영역:hardware system area)로서, 이것은 소프트웨어 공유 저장장치(3)도 포함하나 여러 다른 절대 어드레스 위치(absolute address location)를 가진 동일집합의 DRAM (same set of DRAMs)에 있는 보호 섹션이다. 소프트웨어 공유 저장장치(3) 및 보호 저장장치(4)의 양자는 저장장치 제어기(2)로의 동일 버스(1B-NB)에 의해서 액세스된다. 저장장치 제어기(2)에 보내지는 특정의 절대 어드레스에 의해서 H-M 저장장치(4)에 대한 액세싱 보호(accessing protection)가 얻어진다. 이들 특정의 어드레스는 그 어드레스의 위치로서 H-M 저장장치(4)를 식별한다. 소프트웨어 프로그램은 소프트웨어 저장장치 어드레스를 위해 이들 특정의 절대 어드레스를 액세싱하거나 이용할 수 없다.
본 발명은 분할된(partitioned) CEC에도 적용된다. CEC는 독립적인 동작 분할부분(partition)들로 분할된 하드웨어 및 소프트웨어 자원을 구비할 수 있는데, 분할부분은 배타적 부분집합의 CEC 하드웨어 및 소프트웨어(exclusive subset of the CEC hardware and software) 배타적인 부분집합을 포함하며, 예를 들면 IBM MVS(다중 가상 저장장치:multiple virtual storage) 운영 시스템 및/또는 VM(가상 기계:virtual machine) CMS(대화식 모니터 시스템:conversational monitor system) 제어 프로그램과 같은 운영 시스템을 포함한다. 하나의 운영 시스템이 각 분할부분에 제공된다. 이들 각각의 운영 시스템은 그의 분할부분의 자원 부분집합만을 액세스할 수 있으며, 그밖의 다른 분할부분의 자원들은 액세스할 수 없다.
분할된 CEC에서, 각 분할부분은 그 자신의 공유 메모리(3)를 가지는데, 이 메모리는 CEC내의 그밖의 다른 분할부분의 공유 메모리(3)로부터 분리된 별개의 것이다. 분할부분의 운영 시스템은 제각기의 분할부분내의 공유 메모리(3)만을 액세스할 수 있다. 따라서, 각 분할부분의 소프트웨어 저장장치(3)는 자신의 자원 집합(A-Z)를 갖는데, 이 자원 집합은 그밖의 분할부분의 자원 집합(A-Z)와는 다를 수도 있고 관련이 없을 수도 있다.
모든 분할부분에 대해 단 하나의 보호 저장장치(4)만이 필요한데, 이는 그 보호 저장장치(4)가 모든 분할부분에서의 소프트웨어 운영 시스템 또는 그들 시스템하에서 동작하는 프로그램에 의한 액세싱에 이용될 수 없기 때문이다. 분할된 CEC의 각 프로세서는 모든 분할부분에서 소프트웨어 저장장치(3)를 액세스할 수 있으므로, CEC의 각 프로세서가 그의 분할부분들간에서 공유될 수 있게 된다. 그러나, 하나 이상의 프로세서가 임의의 분할부분에 전용되게 할 수도 있다. 프로세서를 공유하게 되면 어떠한 데이터 완전성(integrity)의 문제도 없게 되는데, 이는 프로세서의 액세스가 그 프로세서가 현재 서비스하고 있는 분할부분에 할당된 저장장치의 한 부분에 제한되기 때문이다.
전술한 종래기술의 특징 및 특성은 본 발명을 후술하는 양호한 실시예에서 볼 수 있을 것이다.
각 프로세서(1-N)는 그가 실행하는 각 명령의 연산 코드를 검출하고, H-M을 통상의 방식으로 사용하여 명령에 대한 연산 코드를 검출하며, H-M을 통상의 방식으로 사용하여 명령을 실행한다. 따라서, 각 PLO 명령이 프로세서(1-N)중 어느 하나의 프로세서에 의해, 통상의 방식으로 된 소프트웨어 프로그램의 실행 명령 스트림에서 검출된다.
도 1에서, 프로세서 공유 마이크로코드 영역(processor shared microcode area)(5)이 보호 저장장치(4)내에 도시되어 있는데, 이것은 PLO 블록화 심볼(blocking symbol)을 처리하는 프로세서 즉 프로세서(1-N)를 포함하는 프로세서들이 액세스하고 사용하는 마이크로코드를 저장하기 위한 것이다. 프로세서 공유 마이크로코드 영역(5)은 현재 호출된 PLO 명령에서 액세스된 블록화 심볼(BLS)을 해싱하기 위해서 사용되는 해싱기능을 수행하도록 프로세서를 제어하기 위한 마이크로코드화 알고리즘(microcode algorithm)을 포함한다. 프로세서들중의 어느 것도 PLO 명령 실행 인스턴스 동안 블록화 심볼(BLS)을 언제든지 처리할 수 있다. 도 1의 경우, BLS-1 내지 BLS-N은 현재의 PLO 명령 실행 인스턴스에서 프로세서 1 내지 프로세서 N이 처리하고 있는 임의의 블록화 심볼을 나타낸다. 물론, PLO 명령이 아닌 그밖의 다른 명령을 현재 실행하고 있는 프로세서는 어떠한 BLS도 처리하지 않을 것이다.
현재 PLO 명령 인스턴스를 실행하고 있는 임의의 프로세서는 도 1의 H-M 보호 저장장치(4)내에 있는 프로세서 공유 마이크로코드 영역(5)내의 판독전용(read-only) 마이크로코드를 액세싱할 것이다. 프로세서 공유 마이크로코드 영역(5)은 임의의 PLO 명령 실행 인스턴스에 대한 여러 다른 기능을 수행하는데 요구되는 임의의 프로세서를 제어하기 위한 마이크로코드를 포함한다. 프로세서 공유 마이크로코드 영역(5)은 현재의 블록화 심볼로부터의 해싱 결과를 생성하기 위해 프로세서를 제어하기 위한 해싱 알고리즘을 또한 포함한다. 해싱 알고리즘은 종래기술분야에 공지되어 있다. 본 발명의 해싱 처리는 해싱 결과에 연관된 PLO 엔트리(entry)에 대한 절대 어드레스을 생성하는 처리과정에서 해싱 결과를 그에 연관된 PLO 엔트리 위치로 변환하기 위한 방향지정 테이블(redirection table)(도시 안함)을 선택적으로 포함하거나, 해싱 결과를 PLO 엔트리 테이블의 어드레스에 대한 간단한 인덱스로서 사용할 수도 있다. PLO 엔트리는 도 2에서 해싱 로크 테이블(hashing lock table:HLT)(8)로 도시되는데, 이 해싱 로크 테이블은 임의의 프로세서(1-N)이 임의의 블록화 심볼을 획득하여 사용하고 있는 모든 PLO 로크를 포함한다. (도 2에 도시된) HLT(8)는 PLO 로크 엔트리(L1-Lk)를 포함하여 그 각각은 로크 비트 L을 포함한다.
도 3에는 임의의 프로세서(1-N)에 의해 실행중인 소프트웨어 프로그램(an executing software program)으로부터 호출되는 각 PLO 명령의 포맷이 도시된다. 이 도시된 각 PLO 명령에 대한 포맷은 다음과 같은 필드(field), 즉, 연산 코드 필드와, (블록화 심볼이나 블록화 심볼의 위치를 찾기 위한 어드레스를 포함하는) 블록화 심볼 필드와, 비교 및 교체 기능, 비교 및 교체 이중(Compare and Swap double) 기능, 비교 및 교체 삼중(Compare and Swap triple) 기능 등과 같은) PLO 명령의 수행방법을 제어하기 위한 특정 기능 코드를 포함하는 기능 코드 필드와, PLO 명령내의 특정된 기능을 실행하는데 필요한 모든 다른 피연산자(operand)를 포함하는 파라미터 리스트(parameter list)에 대한 포인터(pointer)를 포함하기 위한 피연산자 파라미터 필드를 포함한다. 임의적으로, 피연산자 파라미터 리스트는 블록화 심볼 피연산자나 FC 피연산자, 또는 이들 양자를 포함할 수도 있으며, 이렇게 하는 경우 파라미터 리스트내의 파라미터들은 도 3에 도시한 바와 같은 PLO 명령 포맷 내에 직접 위치한 필드 내에 제공되지 않을 것이다.
도 4 및 5는 소프트웨어 프로그램이 호출한 각 PLO 명령을 실행하기 위해 임의의 프로세서(1-N)가 실행하는 스텝(11 내지 25)을 이용하는 PLO 프로세스의 양호한 실시예를 나타낸다. 각각의 호출된 PLO 명령은 명령 기능 코드에 의해 특정된 저장장치 액세스가 수행되기 이전에 도 2의 해시 로크 테이블(8)에서 연관된 로크를 획득하기 위한 요구로서 프로세스에 의해 처리된다. 이 실시예에서 주목해야 할 것은 PLO 명령, 블록화 심볼, 해싱 및 테이블 8의 로크 필드에 대한 모든 처리는 현재의 PLO 명령을 실행하는 프로세서에 의해서 행해진다는 점이다. 즉, 이 실시예에서 동일한 프로세서가 도 4 및 5의 모든 스텝을 수행한다.
스텝(11)은 PLO 명령을 액세스하기 위해 프로세서의 명령 카운터 세팅을 사용하는 것을 나타낸 것으로서, 이 PLO 명령은 실행중인 소프트웨어 프로그램의 현재 명령이 된다. 스텝(11)에서 현재 명령 실행 인스턴스를 호출하면, 프로세서는 그 명령내의 연산 코드를 검출하고, 프로세서가 PLO 동작을 수행하여야 할 필요가 있음을 감지한다. 스텝(12)은 프로세서가 현재 PLO 명령에서 또는 이 PLO 명령의 연산 코드가 가리키는 바와 같은 그 PLO 명령의 피연산자의 위치에서, 현재 블록화 심볼을 액세싱함을 나타낸다. 다음 스텝(13)에서, 프로세서는 프로세서 공유 마이크로코드 영역(5)에 저장된 마이크로코드화 해싱 알고리즘을 사용하여 현재 블록화 심볼에 대한 해싱 동작을 수행한다. 해싱 결과는 해싱 동작으로부터 프로세서에 의해 얻어지며, 이로부터 보호 저장장치(4)의 HLT(8)에서 연관된 PLO 로크 엔트리의 위치를 찾기 위한 스텝(14)에서 절대 어드레스가 얻어진다.
현재의 PLO 명령 실행 인스턴스는 현재의 블록화 심볼이 나타내는 자원에 대한 배타적 액세스를 요구한다. 따라서, 현재의 PLO 인스턴스가 이시점에서의 요구 PLO 명령 실행 인스턴스이다.
요구 PLO 실행 명령 인스턴스에 대해 얻어진 절대 어드레스는 현재 처리되고 있는 블록화 심볼과 연관된 PLO 로크 엔트리의 위치를 찾는데 사용되며, PLO 엔트리내의 어드레싱된 로크 비트 L은 스텝(16)을 위해 액세스된다. L 비트에 대한 검사 동작이 시작되는데, 이는 L비트가 현재의 블록화 심볼과 연관된 자원을 이용가능한 상태로 또는 로크 상태중 어느 상태로 표시하고 있는지를 판단하기 위한 것이다. L이 로크된 상태를 나타내면, 그 자원이 현재 다른 프로세서의 제어 하에 있거나 다른 블록화 심볼이 동일한 로크 엔트리로 해싱됨으로써 요구 PLO 인스턴스에 대한 PLO 프로세스를 현재 실행하고 있는 프로세서는 그 자원을 액세스할 수 없게 된다. 요구하는 프로세서에 대한 PLO 프로세스는 다음의 두가지 방법중의 하나, 즉, 〔1〕도 4 및 5의 양호한 실시예에 도시된 방법으로서, L 비트가 이용가능한 상태로 발견될 때까지 스텝(16)을 여러번 실행하는 스핀 루핑(spin looping)을 수행하기 위해 스텝(16)의 시작 시점으로 복귀하는 분기(17)를 사용하여 현재의 PLO 인스턴스를 지연시키는 방법이나 〔2〕도 6 및 7에 도시된 다른 방법으로서, 현재의 PLO 명령 인스턴스에 의해서 규정되는 기능을 수행하지 않고 스텝(21)에서 종료하는 방법을 가진다. 스텝(21)은 조건 코드를 생성하여, 조건 코드에 의해 표시되는 바와 같이, 실패된(failed) 명령 인스턴스를 프로세서 프로그램에 다시 보고함으로써 프로세서는 다음 명령 인스턴스를 초기화한다. 상기한 〔2〕방법의 경우, 프로그램은 L이 이용가능한 상태로 되기를 기대하며, PLO 명령을 또 다른 인스턴스로서 차후에 재실행할 수 있다. 상기한 〔1〕 및 〔2〕방법의 차이점을 제외하면, 도 6 및 7은 도 4 및 5에 도시한 것과 동일한 스텝들을 포함한다.
스텝(16)은 L을 검사하여 L이 이용가능한 상태로 발견될 때마다 L을 요구 PLO 명령을 위해 L을 로크된 상태로 세팅하기 위한 단위 동작(atomic operation)을 필요로 한다. 상기 단위 동작 동안, 요구 프로세서만이 액세스된 L 필드의 상태를 검사하고 변경할 수 있다. 단위 동작은 당해 기술분야에서 잘 알려진 것이며, 이는 예를 들면 하나의 프로세서가 L 비트를 포함하는 저장장치를 배타적으로 제어하게 함으로써 행해질 수도 있다.
스텝(19)은 연관된 L 필드가 요구 프로세서에 의해서 로크된 상태로 세팅될 때 시작된다. 스텝(19)은 PLO 명령내의 FC 피연산자를 액세스하여 해석하며 그 명령 실행 인스턴스 동안 연관된 자원에 대해 수행될 기능을 결정한다. 다음, 스텝(22)은 현재의 블록화 심볼과 연관된 자원을 액세스하며, 이제 현재의 실행 인스턴스는 그 자원을 변경할 수 있는 배타적 권리를 갖는다.
다음, 스텝(23)은 현재의 PLO 명령에서 지적된 파라미터 리스트내의 피연산자를 사용하여 현재 PLO 명령내의 기능 코드가 필요로 하는 자원에 대한 모든 동작을 수행하며, 프로세서는 현재의 FC에 대해 특정된 동작들을 수행하는데 필요한 자원의 변경을 행할 수도 있다. 프로세서가 FC에 의해 요구되는 모든 동작을 수행했으면, 스텝(24)에서는 L 필드를 이용가능한 상태로 세팅하여 자원을 언로킹(unlocking)함으로써, 연관된 자원이 다른 PLO 실행 인스턴스에 의해 배타적으로 액세스될 수 있도록 한다. 현재의 PLO 명령 인스턴스에 대한 실행이 이제 완전하게 종료된다. 마지막으로, 스텝(25)이 수행되는데, 이 스텝에서 현재의 프로세서는 그의 명령 카운터를 다음 명령 어드레스로 증가시켜 다음 소프트웨어 명령 실행 인스턴스를 개시한다.
이제까지 본 발명의 양호한 실시예들을 설명하였으나, 당업자라면, 특허청구범위에 속하는 각종 변경 및 변형이 가능함을 알 수 있을 것이다. 이들 특허청구범위는 본 명세서에 개시한 발명을 적절하게 보호하고자 하는 것으로 해석되어야 한다.
본 발명에 의하면, CEC에서 자원의 유저가 자원의 변경을 제어함으로써 그 변경이 자원의 데이터 완전성에 영향을 미치지 않게 된다. 또한, 프로그램들 간에 새로운 유형의 인터페이스를 이용하는 새로운 유형의 명령을 제공함으로써 자원의 유저가 블록화 심볼을 특정하고 사용할 수 있게 하여 자원에 대한 유저 액세스의 하드웨어-시행 직렬화를 획득하고 제어하는 것이 가능하게 되는 한편, 액세스를 위해 동일한 유형의 명령을 사용하고 다른 블록화 심볼에 의해 제어되는 다른 자원을 사용할 수도 있는 CEC의 다른 프로세스들에 의한 다른 자원의 직렬화된 사용을 포함하여 동시적인 사용이 가능하게 된다.

Claims (18)

  1. 여러 다른 프로세서(different processors)상에서의 다수 명령 실행 인스턴스(multiple instruction execution instances)에 의한 동시적인 액세스 시도(simultaneous access attempts)로부터 컴퓨터 시스템 자원의 완전성(the integrity of resources in a computer system)을 보호하기 위한 방법에 있어서,
    ① 블록화 심볼(blocking symbol)을 컴퓨터 시스템의 컴퓨터 자원과 소프트웨어적으로 연관시키는(software associating) 단계와,
    ② 상기 블록화 심볼을 특정 유형의 자원 로크 명령(resource lock instruction:PLO)의 피연산자(operand)로서 배치시키고(locating), PLO 명령에 대한 실행 인스턴스에 의해서 액세스되거나 변경될 연관된 자원내의 장소(places)를 특정하기 위해 각 특정 유형의 자원 로크 명령내에 다른 피연산자들을 배치하는 단계와,
    ③ 상기 블록화 심볼과 연관된 자원에 대한 변경을 행하는 모든 프로그램 내의 상기 특정 유형의 자원 로크 명령에 대한 명령 인스턴스를-상기 명령 인스턴스는 상기 블록화 심볼을 지점함- 배타적으로 실행(exclusively executing)하여 단계와,
    ④ 상기 PLO 명령 인스턴스에 의해 이용되는 상기 블록화 심볼과 연관된 로크 필드(lock field)의 위치를 알아내기 위해 각 특정 유형의 자원 로크 명령의 실행 동안 보호 저장장치(protected storage)를 액세싱하는 단계와,
    ⑤ 액세스된 로크 필드의 상태를 검사하여 상기 로크 필드와 연관되어 있는 자원이 상기 프로그램에 의해 사용될 수 있음을 나타내는 이용가능한 상태에 있는지 또는 상기 로크 필드와 연관된 자원이 상기 프로그램에 의해 사용될 수 없음을 나타내는 로크된 상태에 있는지를 판단하는 단계와,
    ⑥ 상기 ⑤의 검사 단계에서 상기 로크 필드가 이용가능한 상태로 발견되면, 상기 컴퓨터 시스템의 다른 프로세서의 동시발생 명령 실행 인스턴스에 의한 상기 자원의 어떠한 변경도 방지하기 위해 상기 로크 필드를 상기 로크된 상태로 세팅하되 상기 ⑤의 검사 단계와 단위적으로(atomically) 행하는 단계와,
    ⑦ 상기 자원내의 어느 위치든지 배타적으로 액세싱하고, 상기 로크 필드가 상기 로크된 상태에 있는 한 상기 명령 실행 인스턴스 동안 상기 특정 유형의 자원 로크 명령에서 지정된 위치들의 내용을 처리하는 단계와,
    ⑧ 상기 명령 실행 인스턴스 동안의 상기 처리가 완료되면 상기 로크 필드를 이용가능한 상태에 리세팅하는 단계를 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  2. 첫 번째 항에 있어서, 상기 ⑦의 위치들을 배타적으로 액세싱하는 단계는 상기 컴퓨터 시스템의 저장장치 내에 있는 소프트웨어 자원 내의 비연속 위치들의 내용을 알아내고 처리하는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  3. 첫 번째 항에 있어서, 로크 필드를 검사하여 상기 로크 필드가 이용가능한 상태로 발견될 때까지 상기 명령 실행 인스턴스 동안 상기 자원에 대한 어떠한 변경도 지연시키는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  4. 첫 번째 항에 있어서, 각 프로세서에 의해 수행되는 상기 방법은, 하드웨어-마이크로코드 서브-프로세스(hardware-microcode sub-process)를 실행하는 상기 프로세서에 의해서 상기 ⑤의 로크 검사 단계를 수행하는 단계와, 상기 로크 필드가 상기 명령 실행 인스턴스 동안 상기 자원의 어떠한 변경도 지연시키기 위한 상기 로크된 상태로 발견되면 상기 로크 필드가 상기 이용가능한 상태로 발견될 때까지 상기 서브-프로세스에서 루핑(looping)하는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  5. 세 번째 항에 있어서, 각 프로세서에 의해 수행되는 상기 방법은, 상기 로크 필드를 검사하여 상기 로크 필드가 상기 로크된 상태로 발견되면 상기 명령 실행 인스턴스를 종료하는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  6. 세 번째 항에 있어서, 상기 ①의 연관시키는 단계는, 상기 보호 저장장치 내에서 상기 로크 필드의 위치를 알아내기 위한 어드레스를 생성하기 위해 상기 블록화 심볼에 대한 해싱 연산(hashing operation)을 수행하는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  7. 제 6항에 있어서, 상기 ①의 연관시키는 단계는, 상기 특정 유형의 자원 로크 명령에 대한 상기 해싱 연산을 실행할 수 있는 각 프로세서에 의해 액세스가능한 위치에 해싱 마이크로코드를 배치하는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  8. 제 7항에 있어서, 상기 ①의 연관시키는 단계는, 각 블록화 심볼을 컴퓨터 자원과 연관시키는 단계와, 각 로크 필드를 하나 이상의 블록화 심볼에 할당하는 단계와, 상기 하나 이상의 블록화 심볼중의 어느 하나의 심볼이 상기 특정 유형의 자원 로크 명령에 의해 사용될 하나의 명령 실행 인스턴스 동안 상기 하나 이상의 블록화 심볼 각각을 상기 로크 필드로 해싱하는 단계를 더 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  9. 컴퓨터 시스템에서 다수 프로세서 상에서 실행되는 소프트웨어 프로그램의 명령 실행 인스턴스에 의해 액세스 가능한 자원의 완전성을 보호하기 위한 방법에 있어서, 각 프로세서에 의해 수행되는 상기 방법은
    ① 소프트웨어 프로그램의 상기 명령 실행 인스턴스의 시작을 호출하기 위해 명령을 프로세서에 의해 액세싱하는 단계와,
    ② 상기 실행 인스턴스 동안 상기 컴퓨터 시스템의 자원을 배타적으로 액세스하기 위한 특정 요구가 있는 지를 상기 명령의 피연산자코드로부터 판단하는 단계와,
    ③ 상기 ②의 결정 단계에서 상기 명령이 블록화 심볼을 사용하고 있다고 판단된 경우에 상기 명령의 피연산자로부터 블록화 심볼을 획득하는 단계와,
    ④ 상기 컴퓨터 시스템의 보호 저장장치내에 로크 필드의 위치를 발생시키기 위해 상기 블록화 심볼에 대한 해싱 연산을 수행하는 단계 ― 상기 로크는 상기 명령에 의해 배타적인 액세스가 요구되는 자원과 연관되어 있음, 상기 로크 필드는 상기 해싱 연산에 의해 상기 블록화 심볼과 연관되어 있음― 와,
    ⑤ 상기 수행 단계에 의해 액세스된 상기 로크 필드가 이용가능한 상태인지 또는 로크된 상태인지를 검사하는 단계와,
    ⑥ 상기 ⑤의 검사 단계에서 상기 로크 필드가 상기 이용가능한 상태로 발견되면 상기 로크 필드를 상기 로크된 상태로 세팅하되 상기 ⑤의 검사 단계와 단위적으로 행하는 단계 ― 상기 프로세서가 상기 로크 필드를 검사하고 세팅하는 동안 상기 컴퓨터 시스템의 모든 다른 프로세서는 상기 로크 필드의 액세싱을 시도할 수 없음― 와,
    ⑦ 상기 프로세서가 상기 로크 필드를 세팅함으로써 의해 상기 자원에 대한 배타적 액세스를 가능케 하는 단계와,
    ⑧ 상기 명령에 대한 기능 코드에 의해 요구되는 비연속 저장 장치 위치에 대한 모든 액세스를 상기 실행 인스턴스의 나머지 동안 상기 자원에 대해 상기 프로세서에 의해서 실행하는 단계와,
    ⑨ 상기 로크 필드를 상기 이용가능한 상태로 리세팅하는 단계와,
    ⑩ 다음 명령의 실행을 상기 프로세서에 의해 호출하는 단계
    를 포함하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  10. 제 9항에 있어서, 상기 프로세서는 상기 ⑤의 검사 단계에서 상기 로크 필드가 상기 로크 상태로 발견되면, 상기 프로세서는 상기 로크 비트가 언로킹된 (이용가능한) 상태로 판단될 때까지 상기 검사 단계를 반복하는 단계와, 상기 검사 단계에서 상기 로크 필드가 상기 이용가능한 상태로 발견되는 경우에 상기 로크 필드를 상기 로크된 상태로 세팅하되 상기 검사 단계와 단위적으로 행하는 단계 ― 상기 프로세서가 상기 로크 필드를 검사하고 세팅하는 동안 상기 컴퓨터 시스템의 모든 다른 프로세서는 상기 로크 필드의 액세싱을 시도할 수 없음 ― 와, 상기 프로세서가 상기 로크 필드를 세팅함으로써 상기 자원에 대한 배타적 액세스를 가능케 하는 단계와, 상기 명령에 대한 기능 코드에 의해 요구되는 모든 동작을 상기 실행 인스턴스의 나머지 동안 상기 자원에 대해 상기 프로세서에 의해서 수행하는 단계와, 상기 로크 필드를 상기 이용가능한 상태로 리세팅하는 단계와, 다음 명령의 실행을 상기 프로세서에 의해 호출하는 단계를 수행하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  11. 제 10항에 있어서, 상기 ⑤의 검사 단계에서 상기 로크 필드가 상기 로크 상태로 발견되면, 상기 프로세서는, 상기 검사 단계에서 상기 로크 비트가 상기 로크 필드와 연관된 자원이 상기 프로세서에 의해 배타적으로 액세싱될 수 없음을 나타내는 상기 로크된 상태로 판단된 경우에 상기 실행 인스턴스를 종료하는 단계를 또한 수행하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  12. 제 11항에 있어서, 상기 소프트웨어 프로그램은 상기 실행 인스턴스의 종료 후에 다른 실행 인스턴스에 대한 명령을 다시 호출하는 단계를 수행하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  13. 컴퓨터 시스템의 다수 프로세서 상에서 실행되는 소프트웨어 프로그램의 명령 실행함으로써 액세스가능한 자원의 완전성을 보호하기 위한 방법에 있어서,
    ① 상기 컴퓨터 시스템 상에 로크 연산 수행(Perform Locked Operation:PLO) 명령을 포함하는 소프트웨어 프로그램을 설치하는 단계 ― 상기 PLO 명령은 상기 컴퓨터 시스템의 연관된 자원에 대한 액세스를 제어하는데 사용되는 블록화 심볼 피연산자를 포함함 ― 와,
    ② 상기 PLO 명령의 실행에 의해서만 변경되는 각 자원 유니트에 대해 유일한 블록화 심볼을 상기 컴퓨터 시스템의 프로그래머에 의해서 할당하는 단계와,
    ③ 상기 블록화 심볼에 할당된 상기 자원 유니트를 변경하기 위한 각 PLO 명령 내에 피연산자를 상기 소프트웨어 프로그램에 의해 제공하는 단계와,
    ④ 상기 블록화 심볼과 연관된 상기 자원 유니트를 액세싱하기 위한 PLO 명령을 포함하는 소프트웨어 프로그램을 상기 컴퓨터 시스템의 다수의 프로세서에 의해서 실행하는 단계와,
    ⑤ 연관된 블록화 심볼이 할당된 자원 유니트들 중의 하나의 유니트를 참조하기 위해 상기 프로세서에 의한 모든 액세스 시도를 제어하기 위한 PLO 명령을 배타적으로 사용하고, 상기 동일한 자원 유니트에 대한 액세스를 시도하는 모든 PLO 명령에 의해 상기 동일한 블록화 심볼을 사용하는 단계와,
    ⑥ 상기 컴퓨터 시스템의 보호 저장장치 위치 내에 하나 이상의 로크 필드를 구성하는 단계 ― 상기 로크 필드는 PLO 명령을 실행하는 상기 컴퓨터 시스템의 모든 프로세서에 의해 액세스가능함 ― 와,
    ⑦ 실행중인 PLO 명령내의 상기 블록화 심볼에 대한 로크 필드를 상기 프로세서에 의해서 획득하는 단계와,
    ⑧ 상기 로크 필드의 상태를 검사하고, 상기 로크 필드가 이용가능한 상태로 검사된 경우에 상기 로크 필드를 로크 상태로 세팅함으로써 로크를 획득하되 상기 검사단계와 단위적으로 행하는 단계와,
    ⑨ 상기 로크 필드가 로크된 상태에 세팅된 동안 상기 프로세서에 의해서 상기 자원을 액세싱하고 변경하는 단계와,
    ⑩ 상기 프로세서가 상기 PLO 명령의 실행을 완료한 후에 상기 로크 필드를 이용가능한 상태로 세팅하는 단계를 포함하는 하는 컴퓨터 시스템의 자원 완전성 보호 방법.
  14. 컴퓨터 시스템에 저장된 데이터가 상기 컴퓨터 시스템의 다수 프로세서 상에서 실행되는 프로그램의 소프트웨어 명령 실행에 의해 액세스가능한 경우에 상기 데이터의 완전성을 보호하기 위한 방법에 있어서,
    ① 상기 컴퓨터 시스템의 프로세서들에 의해 실행가능한 특정 명령내의 블록화 심볼을 프로그램에 의해 지정하는 단계와,
    ② 상기 동일한 블록화 심볼을 이용하는 동시적인 특정 명령 인스턴스들에 대한, 여러 다른 프로세서에 의한 실행 시도를 직렬화함으로써, 한번에 상기 동시적인 특정 명령 인스턴스들 중에서 하나의 인스턴스만이 실행되도록 하는 단계를 포함하는 컴퓨터 시스템의 데이터 완전성 보호 방법.
  15. 제 14항에 있어서, 상기 직렬화된 특정 명령 인스턴스들 중의 허용된 하나를 상기 허용된 특정 명령 인스턴스에서 지정되어 있는 다수의 비연속 위치― 상기 비연속 위치는 상기 특정 명령 인스턴스에 의해 상기 블록화 심볼과 연관된 자원내에 있음 ―를 액세싱하는 상기 프로세서들중 하나의 프로세서에 의해 실행하는 단계 를 더 포함하는 컴퓨터 시스템의 데이터 완전성 보호 방법.
  16. 제 15항에 있어서, 상기 블록화 심볼과 상기 컴퓨터 시스템의 보호 저장장치내의 제어 필드를 연관시키는 단계와, 상기 블록화 심볼을 가진 허용된 특정 명령 인스턴스의 실행을 시작할 때에 상기 제어 필드를 상기 로크된 상태로 세팅하고, 상기 실행 인스턴스의 종료시에 상기 제어 필드를 이용가능한 상태로 리세팅하는 단계와, 상기 제어 필드가 로크된 상태로 세팅되어 있는 동안 상기 허용된 특정 명령 인스턴스가 상기 허용된 특정 명령 인스턴스의 하나 이상의 피연산자에 지정되어 있는 비연속 위치에서 자원을 배타적으로 액세스할 수 있도록 하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 완전성 보호 방법.
  17. 제 16항에 있어서, 상기 제어 필드에 대한 제어를 얻기 위해 각 프로세서의 하드웨어-마이크로코드 내부 제어를 작동시키는 단계와, 하드웨어-시행 단위 동작(hardware-enforced atomic operation)에 의해서 상기 보호 저장장치 위치 내의 상기 제어 필드의 상태에 대한 제어를 단위적으로 얻기 위해 각 프로세서의 상기 하드웨어-마이크로코드 내부 제어를 이용하는 단계 ― 상기 하드웨어-시행 단위 동작은 특정 명령 인스턴스들을 동시에 실행하는 상기 프로세서들 중의 하나만이 한 번에 상기 제어 필드에 대한 제어를 얻을 수 있게 함 ― 와, 상기 프로세서가 허용된 특정 명령 인스턴스 내에 지정된 동작을 수행하는 동안 상기 프로세서가 상기 제어 필드에 대한 제어를 얻음으로써 상기 허용된 특정 명령 인스턴스의 실행을 완료하는 단계와 상기 허용된 특정 명령 인스턴스의 완료시까지 상기 제어 필드의 제어를 필요로 하는 그 밖의 모든 동시적인 특정 명령 인스턴스들의 모든 다른 것에 대한 실행의 완료를 지연시키는 단계를 더 포함하는 컴퓨터 시스템의 데이터 완전성 보호 방법.
  18. 제 15항에 있어서, 상기 제어 필드와 연관된 블록화 심볼을 가진 임의의 특정 명령 인스턴스를 실행하는 각 프로세서에 의해서 로크 프로세서에 요구하는 단계와, 다수의 프로세서가 상기 동일한 블록화 심볼을 사용하여 다수의 특정 명령 인스턴스에 대해 동시적인 요구를 하지 않는 한, 특정 명령 인스턴스에 대한 상기 허용된 지정 명령에서 특정된 위치의 자원에 대한 배타적인 액세스를 임의의 요구 프로세서에 상기 로크 프로세서에 의해서 승인하는 단계와, 상기 동일한 블록화 심볼을 사용하는 상기 다수의 프로세서중의 하나를 상기 로크 프로세서에 의해 선택하여 상기 선택된 프로세서가 그의 특정 명령 인스턴스에 대한 처리를 완료할 수 있도록 하는 단계와, 상기 선택된 프로세서가 그의 특정 명령 인스턴스를 완료할 때까지 그밖의 모든 동시적인 특정 명령 인스턴스들에 대한 실행의 완료를 지연시키는 단계를 더 포함하는 컴퓨터 시스템의 데이터 완전성 보호 방법.
KR1019980013431A 1997-05-28 1998-04-15 동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어 Abandoned KR19980086609A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/864,402 US5893157A (en) 1997-05-28 1997-05-28 Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
US8/864,402 1997-05-28

Publications (1)

Publication Number Publication Date
KR19980086609A true KR19980086609A (ko) 1998-12-05

Family

ID=25343194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980013431A Abandoned KR19980086609A (ko) 1997-05-28 1998-04-15 동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어

Country Status (3)

Country Link
US (1) US5893157A (ko)
JP (1) JPH1115793A (ko)
KR (1) KR19980086609A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101366965B1 (ko) * 2009-04-17 2014-02-24 노키아 코포레이션 프로세스간 통신을 통해 자원들을 공유하는 방법, 장치 및 컴퓨터 프로그램 제품

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6223335B1 (en) * 1998-12-09 2001-04-24 Sun Microsystems, Inc. Platform independent double compare and swap operation
US6976260B1 (en) 1999-09-24 2005-12-13 International Business Machines Corporation Method and apparatus for serializing a message queue in a multiprocessing environment
JP2002041304A (ja) * 2000-07-28 2002-02-08 Hitachi Ltd 論理区画の予備リソース自動付与方法及び論理区画式計算機システム
US7328263B1 (en) * 2001-01-30 2008-02-05 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
US7089555B2 (en) 2001-06-27 2006-08-08 International Business Machines Corporation Ordered semaphore management subsystem
US7454753B2 (en) * 2001-06-27 2008-11-18 International Business Machines Corporation Semaphore management subsystem for use with multi-thread processor systems
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US7406690B2 (en) * 2001-09-26 2008-07-29 International Business Machines Corporation Flow lookahead in an ordered semaphore management subsystem
US7143414B2 (en) 2001-09-26 2006-11-28 International Business Machines Corporation Method and apparatus for locking multiple semaphores
US8234089B2 (en) * 2002-11-07 2012-07-31 National Instruments Corporation Auto-scheduling of tests
US7103766B2 (en) * 2002-12-20 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for making BIOS routine calls from different hardware partitions
US7127587B2 (en) * 2003-12-11 2006-10-24 International Business Machines Corporation Intent seizes in a multi-processor environment
EP1566744A1 (en) * 2004-02-19 2005-08-24 Sap Ag Optimising lock granularity using range locking
US8561071B2 (en) * 2005-07-11 2013-10-15 International Business Machines Corporation Process instance serialization
US7392335B2 (en) * 2006-02-10 2008-06-24 Oracle International Corporation Anticipatory changes to resources managed by locks
US7624237B2 (en) * 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US7600063B2 (en) * 2006-09-15 2009-10-06 Oracle International Corporation Techniques for improved read-write concurrency
JP4941103B2 (ja) * 2007-05-25 2012-05-30 トヨタ自動車株式会社 マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
EP2015174B1 (en) * 2007-06-21 2018-03-14 Imsys AB Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store
WO2011104823A1 (ja) 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US8452948B2 (en) * 2010-06-28 2013-05-28 International Business Machines Corporation Hybrid compare and swap/perform locked operation queue algorithm
US10394760B1 (en) * 2015-04-16 2019-08-27 Western Digital Technologies, Inc. Browsable data backup
US10496607B2 (en) * 2016-04-01 2019-12-03 Tuxera Inc. Systems and methods for enabling modifications of multiple data objects within a file system volume

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4851990A (en) * 1987-02-09 1989-07-25 Advanced Micro Devices, Inc. High performance processor interface between a single chip processor and off chip memory means having a dedicated and shared bus structure
US5081572A (en) * 1988-10-28 1992-01-14 Arnold Michael E Manipulation of time-ordered lists and instructions therefor
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
JP3206914B2 (ja) * 1989-11-09 2001-09-10 インターナショナル、ビジネス、マシーンズ、コーポレーション 多重プロセッサ・システム
JP2575543B2 (ja) * 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
JP2673390B2 (ja) * 1991-03-13 1997-11-05 三菱電機株式会社 マルチポートメモリ
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JPH0784851A (ja) * 1993-09-13 1995-03-31 Toshiba Corp 共有データ管理方法
JPH07262140A (ja) * 1994-03-16 1995-10-13 Nec Corp 排他制御装置
US5574922A (en) * 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5636361A (en) * 1994-12-22 1997-06-03 International Business Machines Corporation Multi-processor computer system having dual memory subsytems for enabling concurrent memory access thereto by more than one processor
US5696939A (en) * 1995-09-29 1997-12-09 Hewlett-Packard Co. Apparatus and method using a semaphore buffer for semaphore instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101366965B1 (ko) * 2009-04-17 2014-02-24 노키아 코포레이션 프로세스간 통신을 통해 자원들을 공유하는 방법, 장치 및 컴퓨터 프로그램 제품

Also Published As

Publication number Publication date
US5893157A (en) 1999-04-06
JPH1115793A (ja) 1999-01-22

Similar Documents

Publication Publication Date Title
KR19980086609A (ko) 동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어
US5966543A (en) Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US8739163B2 (en) Critical path deterministic execution of multithreaded applications in a transactional memory system
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
US8145817B2 (en) Reader/writer lock with reduced cache contention
KR100270591B1 (ko) 컴퓨터 시스템 내의 데이터 자원의 액세싱를 직렬화하기 위한블록화 심볼 제어에 관련된 프로세서
US20030115476A1 (en) Hardware-enforced control of access to memory within a computer using hardware-enforced semaphores and other similar, hardware-enforced serialization and sequencing mechanisms
US5499356A (en) Method and apparatus for a multiprocessor resource lockout instruction
US8140834B2 (en) System, method and computer program product for providing a programmable quiesce filtering register
JP4866864B2 (ja) マルチ・プロセッサ環境において共有されるリソースへのアクセスを管理する方法およびプログラム
US12393371B2 (en) Process isolation for a processor-in-memory (“PIM”) device
US20080276256A1 (en) Method and System for Speeding Up Mutual Exclusion
US20060212876A1 (en) High performance synchronization of accesses by threads to shared resources
US8074274B2 (en) User-level privilege management
JP2024500779A (ja) アドレスマッピング認識型タスク処理機構
US7725643B1 (en) Methods and systems for detecting and avoiding an address dependency between tasks
US10346196B2 (en) Techniques for enhancing progress for hardware transactional memory
US9021483B2 (en) Making hardware objects and operations thread-safe
JP3598282B2 (ja) コンピュータ、その制御方法及びその制御方法を記録した記録媒体
MacKinnon Advanced function extended with tightly-coupled multiprocessing
US7996848B1 (en) Systems and methods for suspending and resuming threads
JP2001256065A (ja) 排他制御方法及び計算機システム
Ebrahimian Amiri et al. Designing a low-level virtual machine for implementing real-time managed languages
Nishi Process Barrier for Predictable and Repeatable Concurrent Execution

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19980415

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19980929

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 19980415

Comment text: Patent Application

PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20000628

NORF Unpaid initial registration fee
PC1904 Unpaid initial registration fee