KR19980079675A - 의사 랜덤 우선 순위를 이용한 데이터 처리 시스템에서의 공유리소스에 대한 액세스 제어 방법 및 시스템 - Google Patents
의사 랜덤 우선 순위를 이용한 데이터 처리 시스템에서의 공유리소스에 대한 액세스 제어 방법 및 시스템 Download PDFInfo
- Publication number
- KR19980079675A KR19980079675A KR1019980003467A KR19980003467A KR19980079675A KR 19980079675 A KR19980079675 A KR 19980079675A KR 1019980003467 A KR1019980003467 A KR 1019980003467A KR 19980003467 A KR19980003467 A KR 19980003467A KR 19980079675 A KR19980079675 A KR 19980079675A
- Authority
- KR
- South Korea
- Prior art keywords
- requesters
- request
- requester
- access
- resource
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
본 발명은 데이터 처리 시스템에서 공유 리소스에 대한 액세스를 제어하는 방법 및 시스템에 관한 것이다. 이 방법에 따르면, 리소스에 대한 다수의 액세스 요구는 리소스를 공유하는 다수의 리퀘스터에 의해 발생된다. 리퀘스터 각각에는 현재의 우선 순위가 할당되고, 적어도 가장 높은 현재 우선 순위는 리퀘스터의 이전 우선 순위에 대하여 실질적으로 랜덤하게 결정된다. 리퀘스터의 현재 우선 순위 따라, 리소스에 대한 액세스 요구가 승인된다. 하나의 실시예에서, 승인된 요구에 대응하는 리퀘스터에는 그의 요구가 승인된 것이 신호되고, 거부된 요구에 대응하는 리퀘스터에는 그의 요구가 승인되지 않는 것이 신호된다.
Description
본 발명은 일반적으로 데이터 처리 방법 및 시스템에 관한 것으로, 특히 데이터 처리 시스템에서 공유 리소스(shared resouce)에 대한 액세스를 제어하는 방법 및 시스템에 관한 것이다. 더 구체적으로, 본 발명은 다수의 리퀘스터(requestor)의 이전 우선 순위(priority)에 대하여 실질적으로 랜덤하게 적어도 최고 우선 순위가 다수의 리퀘스터 중 하나에 할당되는 데이터 처리 시스템에서 다수의 리퀘스터에 의한 공유 리소스에 대한 액세스를 제어하는 방법 및 시스템에 관한 것이다.
데이터 처리 시스템에서는 리소스로부터 서비스 또는 리소스에 대한 액세스를 요구하는 다수의 디바이스가 하나의 리소스를 공유하는 것이 일반적이다. 이들 예에서, 리소스에 대한 액세스를 제어하는 일부 방법은 데이터 처리 시스템의 유효 동작을 촉진하는 방식으로 디바이스가 공유 리소스에 대한 액세스를 얻는 것을 보장하도록 구현되어야 한다.
종래 데이터 처리 시스템에서는 공유 리소스에 대한 액세스를 조정하는 것이 공유 리소스로부터의 서비스 또는 그것에 대한 액세스를 요구할 수 있는 디바이스 각각에 고정된 우선 순위를 할당하는 것에 의해 달성되는 일이 많았다. 그러한 고정(fixed) 우선 순위 방식은 어느 액세스 요구를 승인하는가를 결정하는 단순하고 효과적인 방법은 제공하지만, 특히 높은 우선 순위 디바이스가 빈번한 액세스 요구를 발생할 때 낮은 우선순위 디바이스 및 동작에 적절한 액세스를 할당하는 것에는 실패하는 일이 많았다. 이러한 문제를 해소하기 위해, 일부 종래 데이터 처리 시스템은 공유 리소스에 대한 액세스가 다수의 디바이스 각각에 순차적으로 또한 순환적으로 부여되는 라운드 로빈(round robin) 리소스 할당 방식을 구현한다. 그러나, 라운드 로빈 리소스 할당 메카니즘의 구현은 그 자신의 부수적인 문제를 갖는다. 먼저, 높은 우선 순위 디바이스 및 동작이 지연될 수 있으므로, 중요한 타이밍 경로에 대기 시간(latency)이 발생되어 전체 시스템 성능이 떨어진다. 두 번째로, 더 상세하고 실험적인 데이터는 라운드 로빈 등의 리소스 액세스를 할당하는 결정적 방법이 지속 로크(live locks)를 일으키거나 또는 다른 처리 또는 디바이스에 의한 공유 리소스에 대한 액세스는 효과적으로 방지하지만, 공유 리소스에 대한 액세스를 획득하기 위한 요구 타이밍이 겨우 몇 개의 처리 또는 디바이스에게만 허용되는 상황을 일으킬 수 있다는 것을 나타낸다.
따라서, 명확한 바와 같이, 데이터 처리 시스템 내에서 공유 리소스에 대한 액세스를 제어하는 개선된 방법 및 시스템을 제공하는 것이 요망된다. 특히, 높은 우선 순위 및 낮은 우선 순위 디바이스에게 공유 리소스에 대한 적절한 액세스를 허용하는 공유 리소스에 대한 액세스를 제어하는 방법 및 시스템을 제공하는 것이 요망된다. 또한, 대기 시간을 승인하는 요구를 최소화하는 것이 요망된다. 또한, 지속 로크를 최소화하기 위해서는 실질적으로 비결정적 방식으로 동작하도록 공유 리소스에 대한 액세스를 제어하는 방법 및 시스템이 요망된다.
본 발명의 하나의 목적은 개선된 데이터 처리 방법 및 시스템을 제공하는 것이다.
본 발명의 다른 목적은 데이터 처리 시스템에서 공유 리소스에 대한 액세스를 제어하는 개선된 방법 및 시스템을 제공하는 것이다.
본 발명의 또 다른 목적은 적어도 가장 높은 우선 순위가 다수의 리퀘스터의 이전 우선 순위에 대하여 실질적으로 랜덤하게 다수의 리퀘스터 중 하나에 할당되고, 데이터 처리 시스템에 있어서 다수의 리퀘스터에 의한 공유 리소스에 대한 액세스를 제어하는 방법 및 시스템을 제공하는 것이다.
도 1은 본 발명이 유리하게 사용될 수 있는 데이터 처리 시스템의 일부 또는 데이터 처리 시스템의 제1 예시적인 실시예를 도시한 도면.
도 2는 도 1에 도시한 의사 랜덤 발생기 및 리소스 컨트롤러를 상세히 도시한 블록도.
도 3은 도 1에 도시한 데이터 처리 시스템의 예시적인 실시예에 있어서, 리퀘스터를 포함하는 요구 큐를 도시한 도면.
도 4는 도 1에 도시한 데이터 처리 시스템에 있어서 리퀘스터에 의한 공유 리소스에 대한 액세스 요구 및 리소스 컨트롤러에 의한 요구의 응답의 상대적 타이밍을 도시한 타이밍도.
도 5는 리퀘스터가 버스 마스터이고, 리소스 컨트롤러가 버스 아비터이며, 공유 리소스가 공유 시스템 버스인 본 발명에 따른 데이터 처리 시스템의 제2 예시적인 실시예를 도시한 도면.
도 6은 도 5에 도시한 버스 아비터를 상세히 도시한 블록도.
* 도면의 주요부분에 대한 부호의 설명
10 : 데이터 처리 시스템 12 내지 18 : 리퀘스터
20 : 리소스 컨트롤러 22 : 공유 리소스
24 : 의사 랜덤 발생기 30 : 시프트 레지스터
40 : 디코더 42 : 제어 레지스터
54 : 성능 모니터 100 : 큐
상기 목적은 다음과 같이 달성된다. 데이터 처리 시스템에서 공유 리소스에 대한 액세스를 제어하는 방법 및 시스템이 마련된다. 이 방법에 따르면, 리소스에 대한 다수의 액세스 요구는 리소스를 공유하는 다수의 리퀘스터에 의해 발생된다. 리퀘스터 각각에는 현재의 우선 순위가 할당되고, 적어도 가장 높은 현재의 우선 순위는 리퀘스터의 이전 우선 순위에 대하여 실질적으로 랜덤하게 결정된다. 리퀘스터의 현재의 우선 순위에 따라, 리소스에 대한 액세스 요구가 승인된다. 하나의 실시예에서, 승인된 요구에 대응하는 리퀘스터에는 그의 요구가 승인된 것이 신호되고, 거부된 요구에 대응하는 리퀘스터에는 그의 요구가 승인되지 않은 것이 신호된다.
본 발명의 상기 및 그 밖의 목적, 특징 및 효과는 다음의 상세한 설명에서 명확하게 될 것이다.
이하, 첨부 도면에 따라, 본 발명의 실시예를 설명한다. 도 1은 본 발명의 제1 예시적인 실시예에 따른 데이터 처리 시스템을 도시하고 있다. 도시한 바와 같이, 예를 들면, 컴퓨터 시스템, 프로세서 또는 메모리 서브시스템을 포함할 수 있는 데이터 처리 시스템(10)은 리퀘스터(12) 내지 (18) 및 생략 기호로 나타낸 선택 추가 리퀘스터를 구비한다. 리퀘스터(12) 내지 (18) 각각은 요구 출력 신호(request output signal)와 응답(acknowledge) 및 승인(grant)/재시행(retry) 입력 신호에 의해 리소스 컨트롤러(20)에 결합된다. 리소스 컨트롤러(20)는 공유 시스템 버스, L2 캐쉬 디렉토리 또는 프로세서를 포함하여 데이터 처리 시스템(10)의 어떠한 리소스라도 포함할 수 있는 공유 리소스(22)에 대하여 리퀘스터(12) 내지 (18)에 의한 액세스를 제어한다. 데이터 처리 시스템(10)은 리퀘스터(12) 내지 (18)에 의해 발생된 요구를 포함하여, 데이터 처리 시스템(10)내의 선택된 이벤트를 감시하고 계수하는 성능 모니터(performance monitor)(54)를 구비한다.
도 1에 도시한 바와 같이, 동시에 승인될 수 있는 공유 리소스(22)에 대한 액세스(또는 서비스) 요구의 수는 리퀘스터(12) 내지 (18)에 의해 발생될 수 있는 가능한 요구의 수보다 적다. 따라서, 리소스 컨트롤러(20)가 공유 리소스(22)에 대하여 동시에 승인될 수 있는 액세스 요구보다 많은 액세스 요구를 수신할 때, 리소스 컨트롤러(20)는 우선 순위 순서에 따라 리퀘스터(12) 내지 (18)중 선택된 리퀘스터의 요구 만을 승인한다. 예를 들면 고정 또는 라운드 로빈 우선 순위 순서에 따라 결정적 방식으로 공유 리소스에 대한 액세스를 할당하는 종래 데이터 처리 시스템과는 반대로, 리소스 컨트롤러(20)는 의사 랜덤 발생기(pseudo-random generator)(24)로부터의 입력을 사용하여 실질적으로 비결정 방식으로 적어도 가장 높은 우선 순위를 리퀘스터(12) 내지 (18) 중 하나에 할당한다.
도 2는 데이터 처리 시스템(10) 내의 의사 랜덤 발생기(24) 및 리소스 컨트롤러(20)를 상세히 도시한 블록도이다. 의사 랜덤 발생기(24)는 데이터 처리 시스템(10)의 각 클럭 사이클 동안 40비트 의사 랜덤 비트 패턴을 발생하기 위해 사용되는 40비트 시프트 레지스터(30)를 포함한다. 도시한 바와 같이, 시프트 레지스터(30)의 비트 1, 18, 20 및 39는 AND 게이트(34)의 하나의 입력에 접속된 1 비트 출력을 발생하는 XNOR 게이트(32)의 입력으로서 기능한다. AND 게이트(34)는 데이터 처리 시스템(10)의 구성 요소의 동작을 동기시키기 위해 사용되는 클럭 펄스를 공급하는 클럭 신호(36)에 결합된 제2 입력 및 시프트 레지스터(30)의 비트 0에 접속된 출력을 갖는다. 파워 온 리셋(power-on reset : POR)동안, 시프트 레지스터(30)는 모두 제로로 초기화된다. 그후, XNOR 게이트(32)는 비트 1, 18, 20 및 39의 값에 대하여 배타적 NOR 연산을 실행한다. XNOR 게이트(32)의 최종 1비트 출력이 클럭 신호(36)가 하이로 될 때 시프트 레지스터(30)의 비트 0으로 시프트되고, 비트 0 내지 38의 값이 오른쪽으로 시프트되어(비트 39는 버림), 사이클마다 상이한 비트 패턴이 발생된다. 도 2는 양호한 값의 분포를 갖는 의사 랜덤 비트 패턴을 발생하기 위해 시프트 레지스터(30)의 특정 비트를 사용하는 의사 랜덤 발생기(24)의 실시예를 도시하고 있지만, 다른 비트 조합 및 비트수를 사용할 수도 있다는 것을 알아야 한다. 또한, 시프트 레지스터(30)에 의해 발생된 비트 패턴이 데이터 처리 시스템(10)의 오퍼페이팅 라이프(operating life)에 걸쳐 진실로 비결정적으로 되도록, 예를 들면, 80 비트를 포함하는 더 큰 시프트 레지스터를 사용할 수 있다. 또한, 클럭 신호(36)에 대하여 비동기로 시프트 레지스터(30)를 샘플링하는 것에 의해 비결정적 비트 패턴을 얻을 수도 있다.
각 클럭 사이클 동안, 시프트 레지스터(30) 내의 소정의 비트의 값은 리퀘스터(12) 내지 (18)중 하나에 가장 높은 우선 순위를 할당하기 위해 소정의 비트에 의해 지시된 상태를 사용하는 리소스 컨트롤러(20)에 의해 샘플링된다. 리소스 컨트롤러(20)에 공급되는 비트값의 개수가 구현-특정적(implementation-specific)이고, 소망 우선순위 가중치 세분성(desired priority weight granularity)에 의존하는 것에 유의하는 것은 중요하다. 도 2에 도시한 예시적인 실시예에서, 4개의 소정 비트, 예를 들면, 비트 3, 7, 27 및 34의 값은 각 클럭 사이클 동안 리소스 컨트롤러(20)에 대한 16개의 가능한 상태 중 하나의 지시(indication)가 마련되도록 사용된다. 4 비트 입력에 의해 지시된 상태가 디코더(40)에 의해 디코드되어, 1로 설정된 하나의 비트의 비트 위치에 의해 디코드된 상태를 나타내는 16 비트값이 발생된다.
리소스 컨트롤러(20)는 리퀘스터(12) 내지 (18) 중 하나에 각각 대응하는 4개의 16 비트 필드를 구비하는 소프트웨어-액세스가능(software-accessible) 제어 레지스터(42)를 더 구비한다. 제어 레지스터(42)는 제어 레지스터(42)의 비트 필드 각각 내에 대응하는 비트를 설정하는 것에 의해 리퀘스터(12) 내지 (18) 중 하나에 16개의 가능한 상태 각각을 할당하기 위해 데이터 처리 시스템(10)내에서 실행되는 소프트웨어에 의해 기록된다. 리소스 경쟁을 피하기 위해, 제어 레지스터(42)의 하나의 필드에서만 주어진 비트 위치를 1로 설정할 수 있다.
리퀘스터(12) 내지 (18) 각각에는 제어 레지스터(42)의 필드 A 내지 D 각각 내에 동일한 수의 비트를 설정하는 것에 의해 동일한 우선순위 가중치가 할당될 수 있다. 또한, 리퀘스터(12) 내지 (18) 각각에는 제어 레지스터(42)의 대응 필드에 더 크거나 적은 수의 비트를 설정하는 것에 의해 더 크거나 적은 우선순위 가중치가 선택적으로 주어질 수 있다. 따라서, 리퀘스터 A(12)에게 상대적으로 더 큰 우선순위 가중치를 주기 위해, 제어 레지스터(42)의 필드 A 내에 다수의 비트를 설정하는 것에 의해 다수의 상태가 리퀘스터 A(12)에 할당될 수 있다. 비록 리퀘스터(12) 내지 (18) 중 특정한 하나의 리퀘스터에게 그 리퀘스터에 다수의 상태를 할당하는 것에 의해 더 큰 우선 순위 가중치가 부여될 수 있더라도, 의사 랜덤 발생기(24)에 의해 발생된 의사 랜덤 비트 패턴에 따라 어떤 주어진 사이클에서 리퀘스터(12) 내지 (18)중 어떤 리퀘스터에 가장 높은 우선 순위를 할당할 수 있다. 따라서, 다수의 상태를 할당하는 것은 어떤 주어진 사이클에서 리퀘스터에게 가장 높은 우선 순위가 할당되는 것을 보장하지는 않지만, 리퀘스터에게 가장 높은 우선 순위가 할당될 가능성을 개선하기는 한다.
리소스 컨트롤러(20)는 제어 레지스터(42)와 동일한 구성 및 기능을 갖는 제어 레지스터(52)도 구비한다. 소프트웨어에 의해 프로그램될 수 있는 제어 레지스터(42)와는 반대로, 제어 레지스터(52)는 데이터 처리 시스템(10) 내에서 발생하는 이벤트에 따라 성능 모니터(5)에 의해 기록될 수 있다. 성능 모니터(54)는 큐 엔트리, 클럭 사이클, 캐쉬내 미스(misses in cache), 특정 실행 유닛에 디스패치된 명령 및 오예측된 분기(mispredicted branches) 등의 데이터 처리 시스템(10) 내의 미리 정해진 이벤트를 감시하고 계수한다. 그러한 감시에 따라, 성능 모니터(54)는 리퀘스터(12) 내지 (18) 각각에 더 크거나 적은 우선순위 가중치가 할당되도록 제어 레지스터(52)를 동적으로 갱신할 수 있다.
도 3은 데이터 처리 시스템(10)의 예시적인 실시예에서 리퀘스터(12) 내지 (18) 중 하나를 포함하는 큐(100)를 도시하고 있다. 큐(100)는 예를 들면 디렉토리 기록을 저장하는 큐 또는 L2 캐쉬내에 캐스트아웃(castout) 큐를 포함할 수 있다. 도시한 바와 같이, 큐(100)는 초과하면, 성능 모니터(54)가 큐(100)의 우선순위 가중치를 높이게 하는 임계값을 지정하는 관련된 하이 워터 마크(high water mark)(102)를 갖는다. 미해결된 채로 있는 특정 리퀘스터에 의한 요구 횟수 등의 데이터 처리 시스템(10) 내의 선택된 이벤트를 감시하는 것에 의해 또한 감시된 이벤트에 따라 리퀘스터의 우선순위 가중치를 조정하는 것에 의해, 성능 모니터(54)는 데이터 처리 시스템(10) 내에서 실시간 최적 리소스 관리를 제공한다.
도 2를 다시 참조하면, 제어 레지스터(42, 52)의 대응 비트 필드는 멀티플렉서(60) 내지 (66)중 하나에 입력된다. 예를 들면, 제어 레지스터를 설정하는 것에 의해 공유 리소스(22)에 대한 액세스의 성능 모니터 동적 제어가 인에이블되면, 성능 모니터(54)는 멀티플렉서(60) 내지 (66)의 출력으로서 제어 레지스터(52)의 필드의 값을 선택하는 선택 신호(56)를 표명(assert)한다. 또한, 공유 리소스에 대한 액세스의 성능 모니터 동적 제어가 인에이블되지 않으면, 선택 신호(56)는 표명되지 않고, 멀티플렉서(60) 내지 (66)는 출력으로서 제어 레지스터(42)의 필드의 값을 선택한다. 도시한 바와 같이, 멀티플렉서(60) 내지 (66)의 16 비트 출력은 AND 게이트(70) 내지 (76)을 사용하여 디코더(40)의 16 비트 출력과 각각 개별적으로 AND된다. AND 게이트(70) 내지 (76) 각각에 의한 16 비트 출력이 OR 게이트(80) 내지 (86) 중 하나를 사용하여 OR되어, 현재 사이클 동안 리퀘스터(12) 내지 (18) 중 어느 리퀘스터에 가장 높은 우선순위를 승인하는가를 나타내는 4개의 1 비트 신호가 발생된다. 도 2에 도시한 바와 같이, 1 비트 신호 각각은 AND 게이트(90) 내지 (96) 중 하나를 사용하여 대응하는 요구 신호와 AND된다. AND 게이트(90) 내지 (96) 각각의 출력은 승인 (1) 또는 재시행 (0) 신호로서 리퀘스터(12) 내지 (18) 중 대응하는 하나의 리퀘스터로 전달된다.
당업자라면 이해할 수 있듯이, 주어진 사이클에서 가장 높은 우선순위가 부여된 리퀘스터는 그 사이클동안 공유 리소스(22)에 대한 액세스 요구를 발생할 수 없다(또는 큐됨). 따라서, 리소스 컨트롤러(20)는 가장 높은 우선 순위의 할당이 승인 신호를 발생하지 않는 것을 나타내는 NOR 게이트(97)에 응답하여 리퀘스터(12) 내지 (18) 중 하나에 적어도 하나의 종속(subsidiary) 우선 순위를 할당하는 우선순위 할당 로직(98)을 구비한다. 우선 순위 할당 로직(98)은 방법론 중 어느 하나 또는 그의 조합을 사용하여 종속 우선순위를 할당할 수 있다. 예를 들면, 우선 순위 할당 로직(98)은 하나 이상의 의사 랜덤, 고정, 라운드 로빈, 공정성 또는 기타의 우선 순위 할당 방법론을 채용할 수 있다. 종속 우선 순위를 결정하기 위해 어떤 방법을 사용하는가에 관계없이, 우선 순위 할당 로직(98)은 현재 사이클에서 공유 리소스(22)에 대한 액세스가 승인된 리퀘스터에 승인 신호를 전송한다.
도 4는 리퀘스터(12) 내지 (18)중 하나에 의한 요구의 발생과 리소스 컨트롤러(20)로 부터의 승인 신호 사이의 타이밍 관계를 설명하는 타이밍도이다. 도시한 바와 같이, 리퀘스터(12) 내지 (18) 중 하나는 시간 T0에서 요구 신호를 표명한다. 이어서, 시간 T1에서, 리소스 컨트롤러는 응답 신호를 표명하는 것에 의해 요구에 응답한다. 또한, 공유 리소스(22)에 대한 액세스 요구가 승인되면, 시간 T1에서 리소스 컨트롤러는 승인 신호를 표명한다. 시간 T1에서 리퀘스터에 의해 승인 신호가 수신되지 않으면, 리퀘스터는 응답 신호를 재시도로서 해석한다. 그후, 시간 T2에서, 리퀘스터는 공유 리소스(22)에 대한 액세스 승인에 응답하여 또는 더 이상 유효하지 않은 요구에 응답하여, 요구를 제거할 수 있다. 또한, 재시행 신호의 수신에 응답하여, 리퀘스터는 요구를 계속 표명할 수 있다.
리퀘스터(12) 내지 (18)는 재시행 신호의 연속 수신에 응답하여 다수의 동작을 지원하도록 구현될 수 있다. 먼저, 리퀘스터(12) 내지 (18)는 프로그램가능한(즉, 소프트웨어 지정) 횟수 동안만 특정 요구를 재시행하도록 구성될 수 있다. 또한, 리퀘스터는 요구를 재시행하는 의사 랜덤 횟수를 확인하도록 시프트 레지스터(30)의 선택된 비트를 액세스할 수 있다. 예를 들면, 최대 31번의 재시행이 허용되는 실시예에서, 시프트 레지스터(30)의 5개 비트는 특정 요구를 재시행하는 횟수를 결정하기 위해 첫 번째 재시행 신호의 수신에 따라 리퀘스터에 의해 판독될 수 있다. 또한, 공유 리소스(22)에 대한 최적의 액세스 제어가 요망되면, 성능 모니터(54)는 예를 들면 다른 리퀘스터에 의한 미해결 요구수에 따라 특정 요구에 허용된 재시행 횟수를 동적으로 설정할 수 있다.
데이터 처리 시스템(10)은 일단 최대 요구 재시행 횟수에 도달하면 요구를 취급하는 다수의 상이한 방법을 마찬가지로 구현할 수 있다. 예를 들면, 리퀘스터(12) 내지 (18)는 일단 최대 재시행 횟수에 도달하면 프로그램가능한 기간 동안 요구를 제거할 수 있다. 또한, 요구는 시프트 레지스터(30)내의 소정의 비트를 액세스하는 것에 의해 결정된 의사 랜덤하게 선택된 기간 동안 제거될 수 있다. 예를 들면, 시프트 레지스터(30) 내의 5개 비트가 사용되는 예시적인 실시예에서, 요구는 5개 비트에 의해 지정된 다수의 클럭 사이클 동안 제거될 수 있다. 또한, 공유 리소스(22)에 대한 최적의 액세스 제어가 요망되면, 성능 모니터(54)는 리퀘스터(12) 내지 (18)가 최대 횟수 동안 재시행되었던 요구를 제거해야 하는 사이클수를 동적으로 설정하도록 구성될 수 있다.
도 5는 본 발명에 따른 데이터 처리 시스템의 제2 예시적인 실시예를 도시하고 있다. 도시한 바와 같이, 데이터 처리 시스템(200)은 각각 공유 시스템 버스(222)에 결합되어 각각 시스템 버스(222)의 마스터로 될 수 있는(즉, 버스 트랜잭션(bus transactions)을 시작할 수 있음) 리퀘스터(212) 내지 (218)을 구비한다. 리퀘스터(212) 내지 (218)에 의해 발생된 시스템 버스(222)의 소유권 요구는 의사 랜덤 발생기(224)에 의해 발생된 우선 순위 신호(230) 내지 (236)에 응답하여 버스 아비터(bus arbiter)(220)에 의해 중재된다. 리퀘스터(212) 내지 (218)중 각각의 하나에 각각 대응하는 우선 순위 신호(230) 내지 (236)는 의사 랜덤하게 결정된 구간만큼 이격된 의사 랜덤 주기 펄스를 각각 포함한다. 중요한 것은 한번에 우선 순위 신호(230) 내지 (236)중 하나만이 논리 로우로 될 수 있다는 것이다.
도 6은 도 5의 버스 아비터(220)를 상세히 도시하고 있다. 도시한 바와 같이, 버스 아비터(220)는 리퀘스터(212) 내지 (218)중 하나에 각각 대응하는 트랜지스터(250) 내지 (256)를 구비한다. 트랜지스터(250) 내지 (256) 각각은 그의 관련 리퀘스터의 요구 라인에 접속된 소스, 우선 순위 신호(230) 내지 (236)중 대응하는 하나의 신호에 접속된 게이트 및 승인 라인으로서 관련 리퀘스터에 접속된 드레인을 갖는다. 동작시, 우선 순위 신호(230) 내지 (236)는 요구하고 논리적 로우 우선 순위 신호를 갖는 리퀘스터에게 시스템 버스(222)의 소유권이 승인되도록 리퀘스터(212) 내지 (218)로부터 수신된 요구를 게이트(gate)하기 위해 사용된다.
상술한 바와 같이, 본 발명은 데이터 처리 시스템에서 공유 리소스에 대한 액세스를 제어하는 개선된 방법 및 시스템을 제공한다. 본 발명의 방법 및 시스템은 지속 로크를 피하고 하나의 리퀘스터가 공유 리소스를 독점하는 것을 방지하기 위해 비결정적으로 다수의 리퀘스터 중 하나에게 적어도 가장 높은 우선 순위를 할당한다. 모든 리퀘스터에게 공유 리소스에 대한 액세스를 획득하는 기회가 부여되지만, 본 발명은 높은 우선 순위 리퀘스터가 공유 리소스에 대한 액세스를 획득할 가능성이 더 높게 되는 것을 보장하기 위해, 소프트웨어 또는 하드웨어의 제어하에, 리퀘스터에게 다양한 우선순위 가중치가 부여되는 것을 허용한다.
이상 본 발명자에 의해 이루어진 발명을 상기 실시예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위내에서 여러 가지로 변경가능한 것은 물론이다.
Claims (25)
- 데이터 처리 시스템에서 공유 리소스에 대한 액세스를 제어하는 방법에 있어서, 다수의 현재 우선 순위 중 적어도 가장 높은 현재 우선 순위가 다수의 리퀘스터의 이전 우선 순위에 대하여 실질적으로 랜덤하게 할당되도록, 상기 다수의 리퀘스터 중 각각의 하나의 리퀘스터에 다수의 현재 우선 순위 각각을 할당하는 단계 및 상기 다수의 리퀘스터로부터의 상기 공유 리소스에 대한 하나 이상의 액세스 요구의 수신에 응답하여, 상기 공유 리소스에 대한 상기 하나 이상의 액세스 요구 중에서 선택된 요구를, 상기 다수의 리퀘스터의 상기 현재 우선 순위에 따라 승인하는 단계를 포함하는 공유 리소스 액세스 제어 방법.
- 제 1항에 있어서, 상기 할당하는 단계는, 실질적으로 랜덤한 비트 패턴을 발생하는 단계 및 상기 실질적으로 랜덤한 비트 패턴에 따라 상기 다수의 리퀘스터 중 하나에 상기 가장 높은 현재 우선 순위를 할당하는 단계를 더 포함하는 공유 리소스 액세스 제어 방법.
- 제 2항에 있어서, 상기 실질적으로 랜덤한 비트 패턴은 1 또는 0의 값을 각각 갖는 다수의 비트를 포함하고, 상기 할당하는 단계는 상기 다수의 비트 전부 보다 적은 값에 따라 상기 다수의 리퀘스터 중 하나에 상기 가장 높은 현재 우선 순위를 할당하는 단계를 포함하는 공유 리소스 액세스 제어 방법.
- 제 1항에 있어서, 상기 다수의 리퀘스터 중에서 상기 선택된 요구를 발생한 리퀘스터에게 상기 선택된 요구가 승인되었다는 것을 신호하는 단계를 더 포함하는 공유 리소스 액세스 제어 방법.
- 제 1항에 있어서, 상기 선택된 요구를 승인하는 단계는 요구를 거부하는 단계를 포함하고, 상기 방법은 상기 다수의 리퀘스터 중에서 상기 거부된 요구를 발생한 특정 리퀘스터에게 상기 거부된 요구가 승인되지 않았다는 것을 신호하는 단계를 더 포함하는 공유 리소스 액세스 제어 방법.
- 제 5항에 있어서, 상기 신호하는 단계는 상기 특정 리퀘스터에 재시행 신호를 전송하는 단계를 포함하는 공유 리소스 액세스 제어 방법.
- 제 6항에 있어서, 상기 특정 리퀘스터에 의한 상기 재시행 신호의 수신에 응답하여, 상기 특정 리퀘스터에 의해 상기 공유 리소스 요구를 다시 발생하는 단계를 더 포함하는 공유 리소스 액세스 제어 방법.
- 제 7항에 있어서, 상기 공유 리소스 요구를 다시 발생하는 단계는 재시행 신호의 연속 수신에 응답하여 실질적으로 랜덤하게 선택된 횟수만 상기 특정 리퀘스터에 의해 실행되는 공유 리소스 액세스 제어 방법.
- 제 8항에 있어서, 실질적으로 랜덤하게 선택된 기간 동안 상기 특정 리퀘스터에 의한 상기 공유 리소스 요구를 그후에 제거하는 단계를 더 포함하는 공유 리소스 액세스 제어 방법.
- 제 1항에 있어서, 상기 할당하는 단계는 상기 공유 리소스에 대한 액세스를 각각 승인하기 전에 실행되는 공유 리소스 액세스 제어 방법.
- 제 1항에 있어서, 상기 할당하는 단계는 각각이 상기 다수의 리퀘스터 중 각각의 하나에 대응하고 액티브 또는 인액티브 상태에 있는 다수의 신호를 발생하는 단계를 포함하고, 상기 승인하는 단계는 상기 액티브 상태에 있는 대응 신호를 가진 각 리퀘스터에 의한 상기 공유 리소스에 대한 액세스를 방지하는 단계를 포함하는 공유 리소스 액세스 제어 방법.
- 제 11항에 있어서, 상기 다수의 신호 중 각 신호는 실질적으로 랜덤하게 선택된 기간 동안 상기 액티브 상태에 있고, 실질적으로 랜덤하게 선택된 기간 동안 상기 인액티브 상태에 있는 공유 리소스 액세스 제어 방법.
- 리소스, 상기 리소스를 공유하며, 상기 리소스에 대한 액세스 요구를 발생하기 위한 수단을 각각 구비한 다수의 리퀘스터, 다수의 현재 우선 순위 중에서 적어도 가장 높은 우선 순위가 상기 다수의 리퀘스터의 이전 우선 순위에 대하여 실질적으로 랜덤하게 할당되도록 상기 다수의 리퀘스터의 각각의 하나에 상기 다수의 현재 우선 순위 각각을 할당하기 위한 수단 및 상기 다수의 리퀘스터로부터의 상기 공유 리소스에 대한 하나 이상의 액세스 요구의 수신에 응답하여, 상기 공유 리소스에 대한 상기 하나 이상의 액세스 요구 중에서 선택된 요구를 상기 다수의 리퀘스터의 상기 현재 우선 순위에 따라 승인하기 위한 수단을 포함하는 시스템.
- 제 13항에 있어서, 상기 할당하기 위한 수단은, 실질적으로 랜덤한 비트 패턴을 발생하기 위한 수단 및 상기 실질적으로 랜덤한 비트 패턴에 따라 상기 다수의 리퀘스터 중 하나에 상기 가장 높은 현재 우선 순위를 할당하기 위한 수단을 포함하는 시스템.
- 제 14항에 있어서, 상기 실질적으로 랜덤한 비트 패턴은 1 또는 0의 값을 각각 갖는 다수의 비트를 포함하고, 상기 할당하기 위한 수단은 상기 다수의 비트 전부 보다 적은 값에 따라 상기 다수의 리퀘스터 중 하나에 상기 가장 높은 현재 우선 순위를 할당하기 위한 수단을 포함하는 시스템.
- 제 13항에 있어서, 상기 다수의 리퀘스터 중에서 상기 선택된 요구를 발생한 리퀘스터에게 상기 선택된 요구가 승인되었다는 것을 신호하기 위한 수단을 더 포함하는 시스템.
- 제 16항에 있어서, 상기 선택된 요구를 승인하기 위한 수단은 요구를 거부하기 위한 수단을 포함하고, 상기 신호하기 위한 수단은 상기 다수의 리퀘스터 중에서 상기 거부된 요구를 발생한 특정 리퀘스터에게 상기 거부된 요구가 승인되지 않았다는 것을 신호하기 위한 수단을 더 포함하는 시스템.
- 제 17항에 있어서, 상기 다수의 리퀘스터 중에서 상기 거부된 요구를 발생한 특정 리퀘스터에게 상기 거부된 요구가 승인되지 않았다는 것을 신호하기 위한 수단은 상기 특정 리퀘스터로 재시행 신호를 전송하기 위한 수단을 포함하는 시스템.
- 제 18항에 있어서, 상기 다수의 리퀘스터 각각은 재시행 신호의 수신에 응답하여, 상기 공유 리소스에 대한 요구를 다시 발생하기 위한 수단을 더 포함하는 시스템.
- 제 19항에 있어서, 상기 공유 리소스에 대한 요구를 다시 발생하기 위한 수단은 재시행 신호의 연속 수신에 응답하여 실질적으로 랜덤하게 선택된 횟수만 상기 공유 리소스에 대한 요구를 다시 발생하기 위한 수단을 포함하는 시스템.
- 제 13항에 있어서, 상기 할당하기 위한 수단 및 상기 액세스를 승인하기 위한 수단은 함께 리소스 컨트롤러를 형성하는 시스템.
- 제 13항에 있어서, 상기 할당하기 위한 수단은 각각이 상기 다수의 리퀘스터 중 각각의 하나에 대응하고 액티브 상태 또는 인액티브 상태에 있는 다수의 신호를 발생하는 신호 발생기를 포함하고, 상기 승인하기 위한 수단은 상기 액티브 상태에 있는 대응 신호를 갖는 각 리퀘스터에 의한 상기 리소스에 대한 액세스를 방지하기 위한 수단을 포함하는 시스템.
- 제 22항에 있어서, 상기 할당하기 위한 수단 및 상기 승인하기 위한 수단은 함께 버스 아비터(bus arbiter)를 형성하고, 상기 리소스는 공유 버스인 시스템.
- 제 22항에 있어서, 상기 다수의 신호 중 각 신호는 실질적으로 랜덤하게 선택된 기간 동안 상기 액티브 상태에 있고, 실질적으로 랜덤하게 선택된 기간 동안 상기 인액티브 상태에 있는 시스템.
- 제 13항에 있어서, 상기 다수의 리퀘스터의 수는 동시에 승인될 수 있는 요구의 수보다 큰 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/839,436 US5935234A (en) | 1997-04-14 | 1997-04-14 | Method and system for controlling access to a shared resource in a data processing system utilizing pseudo-random priorities |
US8/839,436 | 1997-04-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980079675A true KR19980079675A (ko) | 1998-11-25 |
KR100291121B1 KR100291121B1 (ko) | 2001-06-01 |
Family
ID=25279724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980003467A KR100291121B1 (ko) | 1997-04-14 | 1998-02-06 | 의사랜덤우선순위를이용한데이터처리시스템에서의공유리소스에대한액세스제어방법및시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5935234A (ko) |
JP (1) | JPH10301907A (ko) |
KR (1) | KR100291121B1 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6662216B1 (en) * | 1997-04-14 | 2003-12-09 | International Business Machines Corporation | Fixed bus tags for SMP buses |
US6167478A (en) * | 1998-10-05 | 2000-12-26 | Infineon Technologies North America Corp. | Pipelined arbitration system and method |
US6493354B1 (en) * | 1998-11-11 | 2002-12-10 | Qualcomm, Incorporated | Resource allocator |
US6986137B1 (en) * | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US6651125B2 (en) * | 1999-09-28 | 2003-11-18 | International Business Machines Corporation | Processing channel subsystem pending I/O work queues based on priorities |
US7124224B2 (en) * | 2000-12-22 | 2006-10-17 | Intel Corporation | Method and apparatus for shared resource management in a multiprocessing system |
US7272848B1 (en) | 2001-02-13 | 2007-09-18 | Network Appliance, Inc. | Method for device security in a heterogeneous storage network environment |
US8966081B1 (en) | 2002-02-13 | 2015-02-24 | Netapp, Inc. | Method for device security in a heterogeneous storage network environment |
US7814050B2 (en) | 2002-10-22 | 2010-10-12 | Brocade Communications Systems, Inc. | Disaster recovery |
US7308510B2 (en) * | 2003-05-07 | 2007-12-11 | Intel Corporation | Method and apparatus for avoiding live-lock in a multinode system |
KR100626362B1 (ko) * | 2003-05-23 | 2006-09-20 | 삼성전자주식회사 | 고속 대역폭의 시스템 버스를 중재하기 위한 중재기, 중재기를 포함하는 버스 시스템 및 버스 중재 방법 |
US7120714B2 (en) * | 2003-05-27 | 2006-10-10 | Intel Corporation | High-speed starvation-free arbiter system, rotating-priority arbiter, and two stage arbitration method |
US7350003B2 (en) * | 2003-09-25 | 2008-03-25 | Intel Corporation | Method, system, and apparatus for an adaptive weighted arbiter |
US7174406B1 (en) * | 2003-12-16 | 2007-02-06 | Emc Corporation | System and method for arbitrating access to a shared resource |
US20050262281A1 (en) * | 2004-05-21 | 2005-11-24 | Nayak Prakash H | Managing a shared resource |
US7917906B2 (en) | 2004-07-02 | 2011-03-29 | Seagate Technology Llc | Resource allocation in a computer-based system |
US8015565B2 (en) * | 2005-11-21 | 2011-09-06 | International Business Machines Corporation | Preventing livelocks in processor selection of load requests |
US7747803B2 (en) * | 2007-11-28 | 2010-06-29 | International Business Machines Corporation | Device, system, and method of handling delayed transactions |
US7752369B2 (en) * | 2008-05-09 | 2010-07-06 | International Business Machines Corporation | Bounded starvation checking of an arbiter using formal verification |
US8370553B2 (en) * | 2010-10-18 | 2013-02-05 | International Business Machines Corporation | Formal verification of random priority-based arbiters using property strengthening and underapproximations |
DE102011106103A1 (de) * | 2011-06-09 | 2012-12-13 | Texas Instruments Deutschland Gmbh | Elektronische Vorrichtung und Verfahren zur Verarbeitung von Unterbrechungsanforderungen gemäß einem Prioritätsschema |
US9563590B2 (en) * | 2014-03-17 | 2017-02-07 | Nxp Usa, Inc. | Devices with arbitrated interface busses, and methods of their operation |
US20180109469A1 (en) * | 2016-10-17 | 2018-04-19 | International Business Machines Corporation | Systems and methods for controlling process priority for efficient resource allocation |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4470112A (en) * | 1982-01-07 | 1984-09-04 | Bell Telephone Laboratories, Incorporated | Circuitry for allocating access to a demand-shared bus |
DE3480303D1 (en) * | 1984-06-29 | 1989-11-30 | Ibm | Arbitration device for access to a shared resource |
JP2511588B2 (ja) * | 1990-09-03 | 1996-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | デ―タ処理ネットワ―ク、ロックを獲得させる方法及び直列化装置 |
JP2625589B2 (ja) * | 1991-04-22 | 1997-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセッサ・システム |
US5440752A (en) * | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US5265223A (en) * | 1991-08-07 | 1993-11-23 | Hewlett-Packard Company | Preservation of priority in computer bus arbitration |
US5247677A (en) * | 1992-05-22 | 1993-09-21 | Apple Computer, Inc. | Stochastic priority-based task scheduler |
EP0602858A1 (en) * | 1992-12-18 | 1994-06-22 | International Business Machines Corporation | Apparatus and method for servicing interrupts in a multiprocessor system |
US5515516A (en) * | 1994-03-01 | 1996-05-07 | Intel Corporation | Initialization mechanism for symmetric arbitration agents |
US5706446A (en) * | 1995-05-18 | 1998-01-06 | Unisys Corporation | Arbitration system for bus requestors with deadlock prevention |
US5717872A (en) * | 1996-01-11 | 1998-02-10 | Unisys Corporation | Flexible, soft, random-like counter system for bus protocol waiting periods |
-
1997
- 1997-04-14 US US08/839,436 patent/US5935234A/en not_active Expired - Fee Related
-
1998
- 1998-02-06 KR KR1019980003467A patent/KR100291121B1/ko not_active IP Right Cessation
- 1998-04-09 JP JP10097771A patent/JPH10301907A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JPH10301907A (ja) | 1998-11-13 |
KR100291121B1 (ko) | 2001-06-01 |
US5935234A (en) | 1999-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100280563B1 (ko) | 데이터 프로세싱 시스템에 있어서 공유 자원에 대한 액세스를제어하기 위한 방법 및 시스템 | |
KR100291121B1 (ko) | 의사랜덤우선순위를이용한데이터처리시스템에서의공유리소스에대한액세스제어방법및시스템 | |
US6006303A (en) | Priority encoding and decoding for memory architecture | |
US6976109B2 (en) | Multi-level and multi-resolution bus arbitration | |
EP0439987B1 (en) | Arbitration system limiting high priority successive grants | |
US5740380A (en) | Method and system for apportioning computer bus bandwidth | |
US5931924A (en) | Method and system for controlling access to a shared resource that each requestor is concurrently assigned at least two pseudo-random priority weights | |
EP0524682A1 (en) | A centralized backplane bus arbiter for multiprocessor systems | |
KR100932359B1 (ko) | 고주파수 중재자를 통해 사이클마다 복수의 버스 중재를수행하는 스위치 매트릭스 시스템 | |
US7174552B2 (en) | Method of accessing a resource by a process based on a semaphore of another process | |
US5274785A (en) | Round robin arbiter circuit apparatus | |
US10740269B2 (en) | Arbitration circuitry | |
US5509125A (en) | System and method for fair arbitration on a multi-domain multiprocessor bus | |
US5761446A (en) | Livelock avoidance | |
US6212589B1 (en) | System resource arbitration mechanism for a host bridge | |
US5894562A (en) | Method and apparatus for controlling bus arbitration in a data processing system | |
US6467032B1 (en) | Controlled reissue delay of memory requests to reduce shared memory address contention | |
US20170010986A1 (en) | Adaptive Resource Management in a Pipelined Arbiter | |
US6279066B1 (en) | System for negotiating access to a shared resource by arbitration logic in a shared resource negotiator | |
US6826644B1 (en) | Peripheral component interconnect arbiter implementation with dynamic priority scheme | |
US7099974B2 (en) | Method, apparatus, and system for reducing resource contention in multiprocessor systems | |
US5758104A (en) | Random delay subsystems | |
US7130947B2 (en) | Method of arbitration which allows requestors from multiple frequency domains | |
US5826045A (en) | Arbitration parking apparatus and method for a split transaction bus in a multiprocessor computer system | |
US7325082B1 (en) | System and method for guaranteeing transactional fairness among multiple requesters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20060216 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |