KR19990029294A - 가변폭 버스의 동시적인 액세스를 이용하는 다중프로세서시스템에서 버스중재를 위한 방법 및 시스템 - Google Patents

가변폭 버스의 동시적인 액세스를 이용하는 다중프로세서시스템에서 버스중재를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR19990029294A
KR19990029294A KR1019980032700A KR19980032700A KR19990029294A KR 19990029294 A KR19990029294 A KR 19990029294A KR 1019980032700 A KR1019980032700 A KR 1019980032700A KR 19980032700 A KR19980032700 A KR 19980032700A KR 19990029294 A KR19990029294 A KR 19990029294A
Authority
KR
South Korea
Prior art keywords
bus
processors
buses
block
sub
Prior art date
Application number
KR1019980032700A
Other languages
English (en)
Other versions
KR100420707B1 (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 KR19990029294A publication Critical patent/KR19990029294A/ko
Application granted granted Critical
Publication of KR100420707B1 publication Critical patent/KR100420707B1/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling 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

Abstract

공통 와이드 버스(common wide bus)를 통해 시스템 메모리에 결합되어 있는 다중 프로세서를 가진 다중프로세서 시스템(multiprocessor system)에서의 개선된 버스 액세스(enhanced bus access)를 위한 방법 및 시스템이 제공된다. 공통 와이드 버스는 선택된 프로세서에 의해 개별적으로 또는 그룹으로 액세스될 수 있는 다중 서브버스(multiple sub-buses)로 분할되거나, 개별 서브버스들은 다수의 프로세서에 의해서 동시에 액세스될 수 있다. 각각의 프로세서는 하나 이상의 계류중인 트랜잭션(one or more pending transactions)에 응답하여, 최대 허용된 수의 서브버스들(maximum-permitted number of sub-buses)에 대한 요구를 버스 중재 로직(bus arbitration logic)에 대해 출력한다. 특정 프로세서에 대해 허가된 서브버스의 수가 그 프로세서의 계류중인 트랜잭션의 수와 동일한 경우에는, 모든 계류중인 트랜잭션이 개개 서브버스에서 병렬로 수행된다. 허가된 서브버스의 수가 계류중인 트랜잭션의 수보다 적은 경우에는, 계류중인 트랜잭션들이 우선 순위(priority order)로 수행된다. 마지막으로, 허가된 서브버스의 수가 계류중인 트랜잭션의 수보다 많은 경우에는, 선택된 트랜잭션들이 병렬로 서브버스를 통해 수행되어, 그들 트랜잭션의 속도가 크게 개선된다.

Description

가변폭 버스의 동시적인 액세스를 이용하는 다중프로세서 시스템에서 버스중재를 위한 방법 및 시스템
본 발명은 일반적으로 개선된 다중프로세서 데이터 처리 시스템(multiprocessor data processing system)에 관한 것으로서, 특히 다중프로세서 시스템에서 버스 액세스(bus access)를 위한 개선된 방법 및 시스템에 관한 것이다. 더욱 구체적으로, 본 발명은 또한, 다중프로세서 시스템에서 다수의 프로세서에 의한 동시적인 가변-폭 버스 액세스(simultaneous variable-width bus access by multiple processors)를 위한 개선된 방법 및 시스템에 관한 것이다.
다중프로세싱 시스템은 프로그램들을 동시에 실행하는 둘 이상의의 상호연결된 프로세싱 유니트를 이용하는 컴퓨팅 시스템(computing system)이다. 이러한 시스템의 목적은 단일 시스템 내에서 다중 프로세스를 동시적으로 수행함으로써 속도 또는 컴퓨팅 능력(computing power)을 증대시키고자 하는 것이다.
이러한 시스템에서는, 거의 동일한 다수의 프로세서가 공통 버스를 통해 시스템 메모리 또는 다른 I/O 장치에 결합되는 경우가 종종 있다. 따라서, 다중 프로세서를 가장 효율적으로 사용하기 위해서는 버스 또는 다중 버스 유니트 설비를 공유해야만 한다.
이러한 시스템에서는, 시스템을 통한 액세스를 최소의 지연으로 수행하는 것이 바람직하다. 대량의 데이터 전달을 위해서는 큰 시스템 버스 대역폭(bandwidth)이 필요할 수도 있는 반면에 다른 프로세스들을 위해서는 소량의 데이터만이 필요할 수도 있다. 예를 들어, 명령 캐시 미스(instruction cache miss)는 대량의 데이터에 대한 빠른 액세스를 필요로 하며, 그렇지 않으면 명령 스톨(instruction stalls)이 나타날 수도 있다. 이와는 달리, 테스트 및 세트(test and set) 동작은 1 또는 2 바이트의 데이터만을 필요로 할 수도 있다.
프로세서들이 대량 또는 소량의 데이터에 대한 액세스를 필요로 한다는 사실과 프로세서들과 선택된 주변 장치들 간의 버스 크기가 상이하다는 사실로 인해 가변-폭 버스가 어느 정도 개발되었다. 예를 들어, 미국 특허 제5,300,811호에 개시된 집적 회로는 소프트웨어 명령에 의해 데이터 버스의 유효 비트 폭(effective bit width of a data bus)을 변화시킬 수 있다. 따라서, 동적 버스 사이징(dynamic bus sizing)에 의해 8-비트, 16-비트, 32-비트 등의 폭을 이용함으로써 외부 데이터 버스를 액세스할 수 있는 마이크로프로세서가 제공된다.
미국 특허 제5,408,628호에 개시된 고체 데이터 레코더(solid-state data recorder)는 고체 메모리를 이용하여 이 메모리로부터 전송될 수도 있는 가변 길이의 데이터 워드 형태의(in the form of data words of variable length) 데이터를 유연-폭 데이터 버스(flexible-width data bus) 상에 기록한다. 고체 메모리 내의 사용가능한 기록 공간의 손실을 최소화할 수 있도록 메모리와 버스 라인 간에 가변 길이 데이터 워드를 전달하기 위해, 버스 라인들을 맵핑된 메모리 위치에 따라(in accordance with the mapped-out memory locations) 전체 버스 라인들 중에서 선택한다.
미국 특허 제5,515,507호는 서로 다른 워드 크기를 가질 수도 있는 서브시스템들과 프로세서가 통신할 수 있게 데이터가 풀워드 또는 하프워드(full words or half words)로서 전달될 수 있도록 하는 마이크로시퀀서 버스 제어기 시스템(microsequencer bus controller system)을 위한 다중-폭 데이터 버스(multiple-width data bus)를 개시하고 있다.
미국 특허 제5,423,009호에 또한 개시되고 있는 동적 사이징 버스 제어기 (dynamic sizing bus controller)는 선정된 물리적 버스 폭의 호스트 버스(host bus)를 가진 호스트 장치(host- device)와 다수의 가능한 논리적 버스 폭 중 하나의 가변 폭을 갖는 슬레이브 버스(slave bus)를 가진 슬레이브 장치(slave device)와 함께 이용될 수도 있다. 마지막으로, 미국 특허 제5,394,528호는 전달될 데이터의 가변 크기에 따라 데이터 액세스가 발생될 수 있게 하는 버스 사이징 기능을 가진 데이터 프로세서를 개시하고 있다.
이들 시스템의 대다수는 버스 폭이 동적으로 변경될 수 있게 하는 기법을 개시하고 있지만, 이들 시스템 중의 그 어느 것도 다중프로세서 시스템에서 다수의 프로세서의 가변 데이터 액세스 요건을 다루는 개념에 관한 것이 아니다.
따라서, 다중프로세서 시스템의 다수의 프로세서가 공통 와이드 버스의 전부 또는 일부(all or a portion of a common wide bus)를 이용해서 그 시스템에서 효과적으로 또한 효율적으로 데이터를 액세스할 수 있게 하는 시스템이 필요하다.
따라서, 본 발명의 한가지 목적은 개선된 다중프로세서 데이터 처리 시스템(multiprocessor data-processing system)을 제공하고자 하는 것이다.
본 발명의 다른 목적은 다중프로세서 데이터 처리 시스템에서 버스 액세스(bus access)를 위한 개선된 방법 및 시스템을 제공하고자 하는 것이다.
본 발명의 또다른 목적은 다중프로세싱 시스템(multiprocessing system)에서 다수의 프로세서에 의한 동시적인 가변-폭 버스 액세스(simultaneous variable-width bus access by multiple processors)를 위한 개선된 방법 및 시스템을 제공하고자 하는 것이다.
도 1은 본 발명의 방법 및 시스템에 따라 구현될 수 있는 다중프로세서 시스템에 대한 상위 수준 블록도.
도 2는 도 1에 도시한 다중프로세서 시스템 중 하나의 프로세서에 대한 상위 수준 블록도.
도 3은 도 2에 도시한 프로세서의 버스 인터페이스 유니트에 대한 상위 수준 블록도.
도 4는 도 1에 도시한 다중프로세서 시스템의 메모리 및 I/O 제어기에 대한 상위 수준 블록도.
도 5는 본 발명의 방법 및 시스템에 따라 다중프로세서 시스템에 의한 가변 폭 버스 액세스를 위한 제어 시퀀스를 도시한 상위 수준 논리 흐름도.
도 6은 본 발명의 방법 및 시스템에 따라 가변 폭 버스 중재를 위한 제어 시퀀스를 도시한 상위 수준 논리 흐름도.
도 7은 본 발명의 방법 및 시스템에 따른 메모리 및/또는 I/O 장치 가변 폭 버스 액세스를 위한 제어 시퀀스를 도시하는 상위 수준 논리 흐름도.
도면의 주요부분에 대한 부호의 설명
10 : 다중프로세서 시스템
12, 14, 16 : CPU
18 : 메모리 및 I/O 제어기
20 : 버스 중재 로직
22 : 공통 와이드 버스
24, 26, 28, 30 : 서브버스
32 : 제어 버스
34, 38, 42 : 버스 요구 라인
36, 40, 44 : 버스 허가 라인
48 : 버스 인터페이스 유니트
50 : 명령 캐시
52 : 데이터 캐시
54 : 실행 유니트
58 : 어드레스 큐
60 : 데이터 아웃 큐
62 : 데이터 인 큐
64 : 제어 로직
66 : 어드레스 버스
68 : 데이터 인 버스
70 : 데이터 아웃 버스
72, 74, 76, 78 : 멀티플렉스
84 : 송신 어드레스 큐
86 : 송신 데이터 큐
88 : 수신 어드레스 큐
90 : 수신 데이터 큐
92 : 제어 로직
94 : 메모리
96 : 디스크 드라이브
98 : 모뎀
100 : 목표 장치 어드레스 버스
102 : 목표 장치 데이터 버스
104 : 목표 장치 제어 버스
108 : 어드레스/데이터 인 버스
110 : 데이터 아웃 버스
상기한 목적들은 이제 설명하는 바와 같이 달성된다.
공통 와이드 버스(common wide bus)를 통해 시스템 메모리에 결합되는 다수의 프로세서를 가진 다중프로세서 시스템(multiprocessor system)에서 향상된 버스 액세스(enhanced bus access)를 위한 방법 및 시스템이 제공된다. 공통 와이드 버스는 선택된 프로세서에 의해 개별적으로 또는 그룹으로 액세스될 수 있는 다수의 서브버스(multiple sub-buses)로 분할되거나, 개별 서브버스들은 다수의 프로세서에 의해서 동시적으로 액세스될 수 있다. 각각의 프로세서는, 하나 이상의 계류중인 트랜잭션(one or more pending transactions)에 응답하여, 최대 허용된 수의 서브버스들(maximum-permitted number of sub-buses)에 대한 요구를 버스 중재 로직(bus arbitration logic)에 출력한다. 특정 프로세서에 대해 허가된 서브버스의 수가 그 프로세서의 계류중인 트랜잭션의 수와 동일한 경우에는, 모든 계류중인 트랜잭션이 개개의 서브버스에서 병렬로 수행된다. 허가된 서브버스의 수가 계류중인 트랜잭션의 수보다 적은 경우에는, 계류중인 트랜잭션들이 우선 순위(priority order)로 수행된다. 마지막으로, 허가된 서브버스의 수가 계류중인 트랜잭션의 수보다 많은 경우에는, 선택된 트랜잭션들이 병렬로 다수의 서브버스를 통해 수행되어, 이들의 트랜잭션 속도가 크게 개선된다.
본 발명의 상기 및 다른 목적, 특징 및 장점은 다음의 상세 설명으로부터 명백해 질 것이다.
본 발명의 신규한 특징은 특허청구범위에 기재한다. 그러나, 본 발명 자체, 양호한 사용 모드, 또다른 목적 및 장점은 도면을 참조한 예시적 실시예에 대한 다음의 상세 설명으로부터 가장 잘 이해될 것이다.
도면, 특히 도 1을 참조하면, 본 발명의 방법 및 시스템에 따라 구현될 수 있는 다중프로세서 시스템(10)에 대한 상위 수준 블록도가 도시된다. 도시된 바와 같이, 다중프로세서(10)는 CPU(12), CPU(14) 및 CPU(16)를 포함하는 다수의 프로세서를 포함한다. 각 중앙 처리 유니트는 공통 와이드 버스(22)를 통해 메모리 및 I/O 제어기(18)와 상호접속된다. 도시된 바와 같이, 공통 와이드 버스(22)는 서브버스(24), 서브버스(26), 서브버스(28) 및 서브버스(30)로 분할된다. 또한, 제어 버스(32)가 공통 와이드 버스(22)의 일부를 형성한다.
더욱 상세히 설명되는 바와 같이, 버스 중재 로직(20)은, 제각기 버스 요구 라인(bus request lines)(34, 38, 42) 및 버스 허가 라인(bus grant lines)(36, 40, 44)을 통해서 CPU(12), CPU(14) 및 CPU(16)에 결합된다. 본 발명의 도시된 실시예에서, 각 서브버스(24, 26, 30)는 64-비트 버스를 포함한다.
도 2를 참조하면, 도 1에 도시된 CPU(12)에 대한 상위 수준 블럭도(high level block diagram)가 도시되어 있다. 도시된 바와 같이, CPU(12)는 서브버스(24, 26, 28, 30)에 결합된 버스 인터페이스 유니트(48)를 포함한다. 또한, 버스 인터페이스 유니트(48)는 제어 버스(32)와 버스 요구 라인(34) 및 버스 허가 라인(36)에 결합된다.
CPU(12)의 일부를 형성하는 각종 실행 유니트(54)와 버스 인터페이스 유니트(48) 사이에는 명령 캐시(50) 및 데이터 캐시(52)가 배치된다. 각종 명령 및 데이터를 캐시 내에 저장하고 사용 정보(usage information)에 입각해서 갱신하는 방식은 당업자에게는 잘 알려진 것으로서 본 명세서의 일부를 구성하지 않는다.
도 3을 참조하면, 도 2에 도시한 버스 인터페이스 유니트(48)를 상세히 도시한 상위 수준 블럭도가 도시된다. 도시된 바와 같이, 각 서브버스(24, 27, 28, 30)는 표준 I/O 드라이버(standard I/O drivers)를 통해서 데이터-인 버스(data-in bus)(68)에 결합된다. 데이터-인 버스(68)는 데이터-인 큐(data-in queue)(62)에 결합된다. 본 발명의 도시된 실시예에 따르면, 공통 와이드 버스(22)의 일부를 형성하는 4개의 개별적인 서브버스를 사용하므로, 당업자라면 본 발명의 개시 내용의 참조로부터 알 수 있듯이, 데이터-인 큐(62)가 바람직하게는 4-웨이 멀티플렉스 회로(four-way multiplex circuit)를 포함함으로써 하나, 둘, 셋 또는 네 개의 서브 버스를 통해 데이터가 버스 인터페이스 유니트(48) 내에서 개별적으로 또는 동시에 수신될 수 있게 된다.
어드레스 큐(58) 및 데이터-아웃 큐(60)는 또한 제각기 어드레스 버스(66) 및 데이터-아웃 버스(70)에 결합되며, 또한 4-웨이 멀티플렉스 회로를 포함한다. 이 회로는 상세히 설명되는 바와 같이, 버스 인터페이스 유니트(48)가 공통 와이드 버스(22)의 하나 이상의 서브버스를 선택적으로 이용할 수 있게 한다.
어드레스 버스(66) 및 데이터-아웃 버스(70)는 각 서브버스에 멀티플레스(72, 74, 76, 78)를 통해 결합되어 데이터 또는 어드레스가 공통 와이드 버스(22)를 형성하는 하나 이상의 서브버스에 출력될 수 있게 한다.
도 4를 참조하면, 도 1에 도시한 바와 같이, 다중프로세서 시스템(10)의 메모리 및 I/O 제어기(18)에 대한 상위 수준 블럭도가 도시되어 있다. 도시된 바와 같이, 메모리 및 I/O 제어기(18)는 또한 각 서브버스(24, 26, 28, 30), 제어 버스(32) 및 각 버스 허가 라인(36, 40, 44)에 결합된다.
메모리 및 I/O 제어기(18)는 다중프로세서 시스템(10)을 다양한 주변 장치, 예를 들면, 메모리(94), 디스크 드라이브(96) 및 모뎀(98)에 결합하는데 이용될 수 있다. 메모리 및 I/O 제어기(18) 내에서 목표 장치 어드레스 버스(target device address bus, 100), 데이터 버스(102) 및 제어 버스(104)는 제어 로직(92)의 제어 하에서 상기 도시된 주변 장치들 중의 하나로부터 선택적으로 데이터를 판독하거나 그 장치에 데이터를 기록하는데 이용된다.
전술한 각 버스 인터페이스 유니트 메모리 및 I/O 제어기(18)는 또한, 송신 어드레스 큐(send address queue, 84), 수신 어드레스 큐(receive address queue, 88), 송신 데이터 큐(86) 및 수신 데이터 큐(90)를 포함하는 다수의 큐를 포함한다. 상술한 바와 같이, 본 발명의 도시된 실시예에서 공통 와이드 버스(22)가 4개의 개별적인 서브버스 ― 하나 또는 그 이상의 서브 버스가 주어진 트랜잭션에 대해 이용될 수 있음 ― 로 분할된다는 측면에서, 각 어드레스 또는 데이터 큐는 바람직하게는 4-웨이 멀티플렉스 시스템을 포함한다.
도시된 바와 같이, 하나 이상의 서브버스로부터의 어드레스 및 데이터는 어드레스/데이터 버스(1108)를 통해 그와 연관된 큐에 결합될 수 있으며, 각종 주변 장치로부터의 데이터는 데이터-아웃 버스(110)를 통해 하나 이상의 서브버스에 결합될 수 있다.
다음, 도 5를 참조하면, 본 발명의 방법 및 시스템에 따른 다수의 프로세서에 의한 가변 폭 버스 액세스의 제어 시퀀스(control sequence for variable-width bus access)를 도시하는 상위 수준 논리 흐름도가 도시되어 있다. 도 1에 도시된 바와 같이, 다수의 프로세서는 다중프로세서 시스템(10)의 일부를 형성하며, 도 5에 도시된 프로세스는 다중프로세서 시스템(10) 내의 임의의 프로세서의 동작에 근거하여 구현될 수 있다.
도시된 바와 같이, 프로세스는 블럭(120)에서 개시되어 블럭(122)으로 진행된다. 블럭(122)에서는, 선택된 프로세서에 대한 버스 인터페이스 유니트의 어드레스 큐 내에 임의의 계류중인 트랜잭션(any pending transactions)이 있는 지를 판단한다. 계류중인 트랜잭션이 없다고 판단되면, 연관된 어드레스 큐 내에 계류중인 트랜잭션이 존재하게 될 때까지 이 프로세스가 단순 반복된다.
계속해서 블럭(122)을 참조하면, 프로세서의 어드레스 큐 내에 계류중인 트랜잭션이 있는 경우에, 그 프로세서는 블럭(124)으로 진행된다. 블럭(124)에서는, 최대 수의 허용된 시스템 버스(the maximum number of allowed system sub-buses)에 대한 요구를 버스 중재 로직(도 1의 20)에 출력한다. 이 요구는 버스 중재 로직(20)에 의해 검토되며, 소정의 우선순위 계획(the desired prioritization scheme)에 따라 하나 이상의 서브버스(24, 26, 28, 30)가 요구 프로세서(the requesting processor)에 허가된다.
이제 블럭(126)을 참조하면, 이 블럭에서는, 허가된 버스의 수가 요구된 버스의 수와 동일한 지를 판단한다. 동일하지 않으면, 프로세스는 블럭(128)으로 진행된다. 블럭(128)에서는, 둘 이상의 서브버스를 이용하여 병렬로 다수의 트랜잭션을 수행한다. 선택된 프로세서의 어드레스 큐 내에 있는 계류중인 트랜잭션의 수가 허가된 버스의 수보다 많으면, 하위-우선순위 트랜잭션(lower-priority transactions)은 다음의 이용가능한 버스가 허가될 때까지 지연될 것이다. 그 후, 프로세스는 반복을 위해 블럭(122)으로 복귀된다.
계속해서 블럭(126)을 참조하면, 허가된 서브버스의 수가 요구된 서브버스의 수와 동일하다고 판단된 경우에 프로세스는 블럭(130)으로 진행된다. 블럭(130)에서는, 특정 프로세서의 어드레스 큐 내에 계류중인 트랜잭션의 수가 허가된 버스의 수와 동일한 지를 판단하고, 동일한 경우에는 프로세스가 블럭(132)으로 진행된다. 블럭(132)에서, 모든 트랜잭션을 병렬로 수행하며 이때 각 트랜잭션은 공통 와이드 버스(22)의 개별적인 서브버스를 이용한다. 그 다음, 프로세스는 반복적인 형태로 블럭(122)에 복귀한다.
계속해서 블럭(130)을 참조하면, 이 블럭에서, 계류중인 트랜잭션의 수가 허가된 버스의 수와 동일한 경우에, 프로세스가 블럭(134)으로 진행된다. 블럭(134)에서는, 소위 와이드(wide) 모드를 사용해서 가능한 많은 트랜잭션을 수행한다. 즉, 허가된 서브버스의 수가 4개인데 3개의 트랜잭션만이 계류중인 경우에는, 하나의 트랜잭션은 두개의 개별적인 서브버스를 소위 와이드(wide) 모드로 이용해서 수행하고 나머지 트랜잭션은 개별적으로 수행되며, 이러한 각각의 트랜잭션은 단일의 서브버스를 이용하게 된다. 그 다음, 프로세스는 반복적인 형태로 블럭(122)으로 복귀된다.
이제, 도 6을 참조하면, 본 발명의 방법 및 시스템에 따른 가변 폭 버스 중재를 위한 제어 시퀀스를 도시하는 상위 수준 논리 흐름도가 도시되어 있다. 도시된 바와 같이, 이 프로세스는 블럭(142)에서 개시되어 블럭(142)으로 진행된다. 블럭(142)에서는, 다중프로세서 시스템(10) 내의 각 중앙 처리 유니트의 우선순위를 판단한다. 다음, 프로세스는 블럭(144)으로 진행된다.
블럭(144)에서는, 버스 요구가 다중프로세서 시스템(10) 내의 하나 이상의 처리 유니트로부터 나오는 그와 연관된 버스 요구 라인 상에서 검출되었는 지를 판단한다. 검출되지 않았다고 판단되면, 버스 요구가 발생할 때까지 이 프로세스는 단순히 반복된다.
계속해서 블럭(144)을 참조하면, 버스 요구가 발생한 경우에 프로세스가 블럭(148)으로 진행된다. 블럭(148)에서는, 요구된 버스의 수가 그 요구를 발생한 처리 유니트에 대한 버스의 최대 수보다 많은 지를 판단한다. 많다고 판단되면, 프로세스는 블럭(150)으로 진행된다. 블럭(150)에서는, 버스 요구가 다중프로세싱 시스템(10) 내의 다른 처리 유니트로부터 나오는 지를 판단한다. 다른 버스 요구가 있다고 판단되면, 프로세스는 블럭(152)으로 진행된다. 블럭(152)에서는, 현재 서비스를 받고 있는 처리 유니트에 대해 지정된 최대 수의 버스를 허가한다.
다시 블럭(148)을 참조하면, 요구된 버스의 수가 서비스를 받고 있는 처리 유니트에 대한 버스의 최대 수보다 많지 않다고 판단된 경우에는, 프로세스는 블럭(156)으로 진행된다. 블럭(156)에서는, 허가된 버스의 수가 시스템 내의 서브버스의 총 수보다 적은 지를 판단한다. 적지 않으면, 프로세스는 블럭(142)으로 복귀되어 다음 프로세서 우선순위를 판단하고 다른 서브버스에 대한 액세스를 허가한다.
다시 블럭(150)을 참조하면, 요구된 버스의 수가 서비스를 받고 있는 처리 유니트에 대해 허용된 버스들의 최대 수보다 많고 버스가 다른 처리 유니트에 의해 요구되지 않았다고 판단된 경우에, 프로세스는 블럭(154)으로 진행된다. 블럭(154)에서는, 요구된 수의 버스를 서비스를 받고 있는 프로세서에 허가한다.
블럭(156)을 참조하면, 이 블럭에서, 허가된 버스의 수가 시스템 내의 서브버스의 총 수보다 적다고 판단된 경우에는, 프로세스는 블럭(158)으로 진행된다. 블럭(158)에서는, 다중프로세서 시스템(10) 내의 모든 프로세서가 서비스를 받았는 지를 판단하여, 그러한 경우에는 프로세스가 블럭(142)으로 복귀되어 다른 프로세서로부터의 버스 요구를 기다린다. 이와는 달리, 모든 프로세서가 서비스를 받지 못한 경우에는, 프로세스가 블럭(160)으로 진행된다. 블럭(160)에서는, 서비스를 위한 다음 프로세서를 선택하며, 프로세스는 그 다음 반복을 위해 연결선(162, 146)을 통해 복귀되어 상술한 바와 같은 버스에 대한 요구를 분석한다.
당업자라면 상술한 바로 부터 알 수 있듯이, 전술한 버스 중재 로직 시스템을 이용함으로써, 전술한 바와 같이 서브버스들로 분할된 공통 와이드 버스를 통해 시스템 메모리에 결합되는 다중프로세서 시스템 내의 다수의 프로세서는 선정된 우선순위 계획에 따라서 하나 이상의 서브버스를 이용하여 시스템 메모리를 액세스할 수 있으며, 다수의 서브버스를 이용하여 시스템 메모리를 동시에 액세스할 수도 있다.
마지막으로, 도 7을 참조하면, 본 발명의 방법 및 시스템에 따른 메모리 및/또는 I/O 장치 가변 폭 버스 액세스를 위한 제어 시퀀스를 도시하는 상위 수준 논리 흐름도가 도시되어 있다. 도시된 바와 같이, 이 프로세스는 블럭(170)에서 개시되어 블럭(172)으로 진행된다. 블럭(172)에서는, 전송 개시가 선언되었는지와(transfer start has been asserted) 전송을 위한 어드레스가 하나 이상의 목표 장치의 어드레스와 일치하는 지를 판단한다. 그러하지 않은 경우에는, 프로세스가 반복적인 형태로 복귀되어 전달 개시의 선언을 기다린다. 블럭(172)을 계속 참조하면, 전달 개시가 선언되었고 어드레스가 목표 장치와 일치하는 경우에, 프로세스는 블럭(174)으로 진행된다. 블럭(174)에서는, 전송이 판독 트랜지션인지 또는 기록 트랜잭션인지를 판단한다. 블럭(174)을 계속 참조하면, 트랜잭션이 판독 트랜잭션인 경우에 프로세스가 블럭(176)으로 진행된다. 블럭(176)에서, 송신 어드레스 큐가 가득 채워져 있는 지를 판단하여, 그러한 경우에는 프로세스가 블럭(178)으로 진행되어 트랜잭션을 지연시킨다.
한편, 송신 어드레스가 채워지지 않은 경우에는, 프로세스가 블럭(180)으로 진행된다. 블럭(180)에서, 송신 어드레스를 송신 어드레스 큐 내로 래칭하고(latching), 목표 장치(들)로부터 정보를 판독하며, 그 정보를 송신 데이터 큐 내에 저장한다. 그런 후, 프로세스는 블럭(182)으로 진행된다. 블럭(182)에서는, 상술한 바와 같이 하나 이상의 시스템 서브버스를 통해 송신 데이터 큐로부터의 정보를 출력한다. 그 다음에 프로세스는 반복적인 형태로 블럭(172)으로 복귀된다.
다시 블럭(174)을 참조하면, 전송 개시가 기록 트랜잭션인 경우에는, 프로세스가 블럭(184)으로 진행된다. 블럭(184)에서는, 수신 어드레스 큐가 가득 채워져 있는 지를 판단하여, 그러한 경우에는 전술한 바와 같은 식으로 프로세스가 블럭(186)으로 진행되어 수신 어드레스 큐가 더 이상 가득 채워지지 않을 때까지 트랜잭션을 지연시킨다.
블럭(184)을 계속 참조하면, 수신 어드레스가 채워지지 않은 경우에는, 프로세스가 블럭(188)으로 진행된다. 블럭(188)에서는, 수신 어드레스를 수신 어드레스 큐 내에 래칭하고, 수신 데이터 큐의 적당한 버퍼들 내로 정보를 래칭한다. 그런 후, 프로세스는 블럭(190)으로 진행된다. 블럭(190)에서는, 상술한 바와 같이 수신 데이터 큐의 적당한 버퍼들로부터의 정보를 적당한 목표 장치로 출력한다.
당업자라면 상술한 바로부터 알 수 있듯이, 다수의 서브버스로 분할되는 공통 와이드 버스를 이용함으로써 특정 트랜잭션에 의해 이용되는 버스의 폭을 효율적으로 변화시켜 전송을 위한 가장 효율적인 버스 폭을 이용하여 데이터 전송이 이루어질 수 있고 또한 공통 와이드 버스의 개별적인 부분들을 이용하여 다수의 프로세서가 시스템 메모리를 동시에 액세스할 수 있는 기법이 제공되어 다중프로세서 시스템 내의 데이터 전송이 매우 효율적으로 이루어진다.
본 발명에 의하면, 다중프로세서 시스템 내의 다중 프로세서가 공통 와이드 버스를 이용하여 다중프로세서 시스템 내에서의 데이터 액세스를 효과적이고도 효율적으로 수행할 수 있다.

Claims (4)

  1. 다수의 프로세서 및 지정된 갯수의 서브 버스로 분할되는 공통 와이드 버스(a common wide bus)를 갖는 다중프로세서 시스템에서 사용하기 위한 버스 중재 방법(bus arbitration method)에 있어서,
    상기 다수의 프로세서 각각에 대한 동시적인 버스 요구(bus requests)의 최대 개수 - 상기 최대 갯수는 상기 지정된 갯수 이하임- 를 지정하는 단계와;
    상기 다수의 프로세서로부터의 버스 요구를 검출하는 단계와;
    상기 다수의 프로세서 중 특정 프로세서에 의해 발생된 선택된 갯수의 서브 버스에 대한 버스 요구에 응답하여, 상기 선택된 갯수가 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 지정된 상기 최대 갯수 이하이면 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 상기 선택된 갯수의 상기 서브 버스에 대한 동시적 액세스를 허가하는 단계; 및
    상기 다수의 프로세서 중 특정 프로세서에 의해 발생된 선택된 갯수의 서브 버스에 대한 버스 요구에 응답하여, 상기 선택된 갯수가 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 지정된 상기 최대 갯수 이상이고 상기 다수의 프로세서 중 어떤 프로세서도 버스 요구를 발생시키지 않으면 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 상기 선택된 갯수의 상기 서브 버스에 대한 동시적 액세스를 허가하는 단계
    를 포함하는 것을 특징으로 하는 버스 중재 방법.
  2. 다수의 프로세서 및 지정된 갯수의 서브 버스로 분할되는 공통 와이드 버스(a common wide bus)를 갖는 다중프로세서 시스템에서 사용하기 위한 버스 중재 시스템(bus arbitration system)에 있어서,
    상기 다수의 프로세서 각각에 대한 동시적인 버스 요구(bus requests)의 최대 갯수 - 상기 최대 갯수는 상기 지정된 갯수 이하임- 를 지정하기 위한 수단과;
    상기 다수의 프로세서로부터의 버스 요구를 검출하는 수단과;
    상기 다수의 프로세서 중 특정 프로세서에 의해 발생된 선택된 갯수의 서브 버스에 대한 버스 요구에 응답하여, 상기 선택된 갯수가 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 지정된 상기 최대 갯수 이하이면 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 상기 선택된 갯수의 상기 서브 버스에 대한 동시적 액세스를 허가하기 위한 수단; 및
    상기 다수의 프로세서 중 특정 프로세서에 의해 발생된 선택된 갯수의 서브 버스에 대한 버스 요구에 응답하여, 상기 선택된 갯수가 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 지정된 상기 최대 갯수 이상이고 상기 다수의 프로세서 중 어떤 프로세서도 버스 요구를 발생시키지 않으면 상기 다수의 프로세서 중 상기 특정 프로세서에 대해 상기 선택된 갯수의 상기 서브 버스에 대한 동시적 액세스를 허가하기 위한 수단
    을 포함하는 것을 특징으로 하는 버스 중재 시스템.
  3. 제 2 항에 있어서,
    상기 다수의 프로세서로부터의 버스 요구를 검출하기 위한 상기 수단은 지정된 우선 순위로 상기 다수의 프로세서로부터의 버스 요구를 검출하기 위한 수단을 포함하는 것을 특징으로 하는 버스 중재 시스템.
  4. 제 3 항에 있어서,
    이전의 버스 요구가 상기 지정된 갯수의 서브 버스보다 더 적은 갯수의 서브 버스를 이용하는 것에 응답하여, 상기 다수의 프로세서 중 이후의 프로세서로부터의 버스 요구를 검출하기 위한 수단을 더 포함하는 것을 특징으로 하는 버스 중재 시스템.
KR10-1998-0032700A 1997-09-18 1998-08-12 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서버스중재를위한방법및시스템 KR100420707B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/933,155 US5901294A (en) 1997-09-18 1997-09-18 Method and system for bus arbitration in a multiprocessor system utilizing simultaneous variable-width bus access
US8/933,155 1997-09-18
US08/933,155 1997-09-18

Publications (2)

Publication Number Publication Date
KR19990029294A true KR19990029294A (ko) 1999-04-26
KR100420707B1 KR100420707B1 (ko) 2004-06-30

Family

ID=25463466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0032700A KR100420707B1 (ko) 1997-09-18 1998-08-12 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서버스중재를위한방법및시스템

Country Status (3)

Country Link
US (1) US5901294A (ko)
KR (1) KR100420707B1 (ko)
CA (1) CA2245037A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3123413B2 (ja) 1995-11-07 2001-01-09 株式会社日立製作所 コンピュータシステム
US6253269B1 (en) * 1998-12-22 2001-06-26 3Com Corporation Bus arbiter system and method for managing communication buses
US6253270B1 (en) * 1998-12-30 2001-06-26 Intel Corporation Method and apparatus for arbitrating ownership of an interface between hub agents
US6725307B1 (en) * 1999-09-23 2004-04-20 International Business Machines Corporation Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system
US6513091B1 (en) 1999-11-12 2003-01-28 International Business Machines Corporation Data routing using status-response signals
US6557069B1 (en) 1999-11-12 2003-04-29 International Business Machines Corporation Processor-memory bus architecture for supporting multiple processors
US6526469B1 (en) 1999-11-12 2003-02-25 International Business Machines Corporation Bus architecture employing varying width uni-directional command bus
US6643752B1 (en) * 1999-12-09 2003-11-04 Rambus Inc. Transceiver with latency alignment circuitry
US7266634B2 (en) 2000-01-05 2007-09-04 Rambus Inc. Configurable width buffered module having flyby elements
US7356639B2 (en) 2000-01-05 2008-04-08 Rambus Inc. Configurable width buffered module having a bypass circuit
US7404032B2 (en) * 2000-01-05 2008-07-22 Rambus Inc. Configurable width buffered module having switch elements
US6502161B1 (en) * 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US7363422B2 (en) 2000-01-05 2008-04-22 Rambus Inc. Configurable width buffered module
US7010642B2 (en) * 2000-01-05 2006-03-07 Rambus Inc. System featuring a controller device and a memory module that includes an integrated circuit buffer device and a plurality of integrated circuit memory devices
US6247100B1 (en) 2000-01-07 2001-06-12 International Business Machines Corporation Method and system for transmitting address commands in a multiprocessor system
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US20040078608A1 (en) * 2001-04-02 2004-04-22 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
JP3508857B2 (ja) * 2001-07-31 2004-03-22 日本電気株式会社 ノード間データ転送方法およびデータ転送装置
KR100513398B1 (ko) * 2003-01-08 2005-09-09 삼성전자주식회사 듀얼프로세서의 아이피 공유장치 및 그방법
WO2005048115A2 (en) 2003-11-13 2005-05-26 Koninklijke Philips Electronics N.V. Electronic data processing circuit that transmits packed words via a bus
US7562271B2 (en) * 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
US7464225B2 (en) * 2005-09-26 2008-12-09 Rambus Inc. Memory module including a plurality of integrated circuit memory devices and a plurality of buffer devices in a matrix topology
US11328764B2 (en) 2005-09-26 2022-05-10 Rambus Inc. Memory system topologies including a memory die stack
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US20090228612A1 (en) * 2008-03-06 2009-09-10 Barinder Singh Rai Flexible Bus Interface and Method for Operating the Same
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4085448A (en) * 1976-10-04 1978-04-18 International Business Machines Corporation Data communication bus structure
US4941086A (en) * 1984-02-02 1990-07-10 International Business Machines Corporation Program controlled bus arbitration for a distributed array processing system
CA2051029C (en) * 1990-11-30 1996-11-05 Pradeep S. Sindhu Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5528765A (en) * 1993-03-15 1996-06-18 R. C. Baker & Associates Ltd. SCSI bus extension system for controlling individual arbitration on interlinked SCSI bus segments
JPH0721114A (ja) * 1993-06-21 1995-01-24 Hitachi Ltd マルチプロセッサシステムの共有メモリ制御装置
US5619726A (en) * 1994-10-11 1997-04-08 Intel Corporation Apparatus and method for performing arbitration and data transfer over multiple buses

Also Published As

Publication number Publication date
CA2245037A1 (en) 1999-03-18
US5901294A (en) 1999-05-04
KR100420707B1 (ko) 2004-06-30

Similar Documents

Publication Publication Date Title
KR100420707B1 (ko) 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서버스중재를위한방법및시스템
KR100420706B1 (ko) 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서i/o제어를위한방법및시스템
KR100296718B1 (ko) 다중프로세서 시스템에서 가변폭 버스를 동시에 액세스하기 위한 방법 및 시스템
US6330647B1 (en) Memory bandwidth allocation based on access count priority scheme
US5761464A (en) Prefetching variable length data
JP3699833B2 (ja) メモリアーキテクチャーのための優先符号化及び復号化
US5524235A (en) System for arbitrating access to memory with dynamic priority assignment
US5655151A (en) DMA controller having a plurality of DMA channels each having multiple register sets storing different information controlling respective data transfer
US5828856A (en) Dual bus concurrent multi-channel direct memory access controller and method
US6026464A (en) Memory control system and method utilizing distributed memory controllers for multibank memory
EP1163593B1 (en) Apparatus for communicating between multiple functional units in a computer environment
US6636927B1 (en) Bridge device for transferring data using master-specific prefetch sizes
JP2002140289A (ja) 調整可能ワード・サイズ転送とアドレス配列/増加を備えたマイクロコントローラdmaオペレーション
KR970049655A (ko) 직접메모리접근(dma) 제어장치
KR20010080515A (ko) 다수의 가상 직접 메모리 접근 채널들을 지원하기위한직접 메모리 접근 엔진
EP0901080B1 (en) Arbitration system
US5249297A (en) Methods and apparatus for carrying out transactions in a computer system
US7080174B1 (en) System and method for managing input/output requests using a fairness throttle
US6928525B1 (en) Per cache line semaphore for cache access arbitration
US5933613A (en) Computer system and inter-bus control circuit
US7310717B2 (en) Data transfer control unit with selectable transfer unit size
US6327636B1 (en) Ordering for pipelined read transfers
EP0192578A2 (en) A multiple bus system including a microprocessor having separate instruction and data interfaces and caches
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
JPH04280347A (ja) 高速バス装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20020415

Effective date: 20031229

S901 Examination by remand of revocation
S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070205

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee