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

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

Info

Publication number
KR19990029295A
KR19990029295A KR1019980032701A KR19980032701A KR19990029295A KR 19990029295 A KR19990029295 A KR 19990029295A KR 1019980032701 A KR1019980032701 A KR 1019980032701A KR 19980032701 A KR19980032701 A KR 19980032701A KR 19990029295 A KR19990029295 A KR 19990029295A
Authority
KR
South Korea
Prior art keywords
bus
processors
block
data
subbuses
Prior art date
Application number
KR1019980032701A
Other languages
English (en)
Other versions
KR100420706B1 (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 KR19990029295A publication Critical patent/KR19990029295A/ko
Application granted granted Critical
Publication of KR100420706B1 publication Critical patent/KR100420706B1/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

Landscapes

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

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

가변폭 버스의 동시적인 액세스를 이용하는 다중프로세서 시스템에서 I/O 제어를 위한 방법 및 시스템
본 발명은 일반적으로 개선된 다중프로세서 데이터 처리 시스템(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 (9)

  1. 다수의 프로세서 및 다수의 서브 버스들(sub-buses)로 분할되는 공통 와이드 버스(a common wide bus)를 갖는 다중프로세서 시스템에서 사용하기 위한 I/O 제어 방법(input/output method)에 있어서,
    상기 다수의 프로세서 중 하나 이상의 프로세서에 의한 전송 요구(transfer request)에 응답하여, 목표 장치(target device)와 상기 다수의 프로세서 중 하나 이상의 프로세서를 매칭(matching)하는 단계와;
    상기 특정 프로세서로부터의 전송 요구에 응답하여, 상기 다수의 프로세서 중 특정 프로세서에 또는 특정 프로세서로부터 데이터를 전송하기 위해 상기 다수의 서브 버스 중 하나 이상의 서브 버스를 동시에 이용하는 단계와;
    상기 다수의 프로세서 중 여러개의 프로세서에 의한 전송 요구에 응답하여, 상기 다수의 프로세서 중 여러개의 프로세서 각각에 또는 여러개의 프로세서 각각으로부터 동시에 데이터를 전송하기 위해 상기 다수의 서브 버스 중 하나 이상의 서브 버스를 동시에 이용하는 단계
    를 포함하는 것을 특징으로 하는 I/O 제어 방법.
  2. 제 1 항에 있어서,
    소정의 데이터에 대한 상기 어드레스를 어드레스 큐(address queue)에 기록하는 단계를 더 포함하는 것을 특징으로 하는 I/O 제어 방법.
  3. 제 2 항에 있어서,
    상기 어드레스 큐가 가득 채워져 있다는 표시에 응답하여, 하나 이상의 상기 다수의 프로세서에 또는 하나 이상의 상기 다수의 프로세서로부터의 전송을 지연하는 단계를 더 포함하는 것을 특징으로 하는 I/O 제어 방법.
  4. 다수의 프로세서 및 다수의 서브 버스들로 분할되는 공통 와이드 버스(a common wide bus)를 갖는 다중프로세서 시스템에서 사용하기 위한 I/O 제어 시스템(input/output system)에 있어서,
    상기 다수의 프로세서 중 하나 이상의 프로세서에 의한 전송 요구에 응답하여, 목표 장치를 상기 다수의 프로세서 중 하나 이상의 프로세서와 매칭(matching)하기 위한 수단과;
    상기 특정 프로세서로부터의 전송 요구에 응답하여, 상기 다수의 프로세서 중 특정 프로세서에 또는 특정 프로세서로부터 데이터를 전송하기 위해 상기 다수의 서브 버스 중 하나 이상의 서브 버스를 동시에 이용하기 위한 수단과;
    상기 다수의 프로세서 중 여러개의 프로세서에 의한 전송 요구에 응답하여, 상기 다수의 프로세서 중 여러개의 프로세서 각각에 또는 여러개의 프로세서 각각으로부터 동시에 데이터를 전송하기 위해 상기 다수의 서브 버스 중 하나 이상의 서브 버스를 동시에 이용하기 위한 수단
    을 포함하는 것을 특징으로 하는 I/O 제어 시스템.
  5. 제 4 항에 있어서,
    소정의 데이터에 대한 어드레스를 각각의 전송 요구와 연관시키기 위한 수단을 더 포함하는 것을 특징으로 하는 I/O 제어 시스템.
  6. 제 4 항에 있어서,
    상기 다중프로세서 시스템은 다수의 목표 장치를 포함하고,
    상기 I/O 제어 시스템은 상기 다수의 목표 장치 중 특정 목표 장치를 식별하기 위해 각각의 전송 요구에 연관된 소정의 데이터에 대한 상기 어드레스를 이용하기 위한 수단을 더 포함하는 것을 특징으로 하는 I/O 제어 시스템.
  7. 제 6 항에 있어서,
    상기 다수의 목표 장치들 중 하나의 장치는 메모리를 포함하는 것을 특징으로 하는 I/O 제어 시스템.
  8. 제 6 항에 있어서,
    상기 다수의 목표 장치들 중 하나의 장치는 디스크 드라이브를 포함하는 것을 특징으로 하는 I/O 제어 시스템.
  9. 제 6 항에 있어서,
    상기 다수개의 목표 장치들 중 하나의 장치는 모뎀을 포함하는 것을 특징으로 하는 I/O 제어 시스템.
KR10-1998-0032701A 1997-09-18 1998-08-12 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서i/o제어를위한방법및시스템 KR100420706B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/933,156 US5930484A (en) 1997-09-18 1997-09-18 Method and system for input/output control in a multiprocessor system utilizing simultaneous variable-width bus access
US8/933,156 1997-09-18
US08/933,156 1997-09-18

Publications (2)

Publication Number Publication Date
KR19990029295A true KR19990029295A (ko) 1999-04-26
KR100420706B1 KR100420706B1 (ko) 2004-06-30

Family

ID=25463467

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US5930484A (ko)
KR (1) KR100420706B1 (ko)
CA (1) CA2245106C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100934227B1 (ko) * 2007-09-21 2009-12-29 한국전자통신연구원 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6202116B1 (en) * 1998-06-17 2001-03-13 Advanced Micro Devices, Inc. Write only bus with whole and half bus mode operation
US6622188B1 (en) * 1998-09-30 2003-09-16 International Business Machines Corporation 12C bus expansion apparatus and method therefor
US6721840B1 (en) 2000-08-18 2004-04-13 Triscend Corporation Method and system for interfacing an integrated circuit to synchronous dynamic memory and static memory
US6754760B1 (en) * 2000-08-21 2004-06-22 Xilinx, Inc. Programmable interface for a configurable system bus
US6622194B1 (en) * 2000-08-28 2003-09-16 Intel Corporation Efficient use of multiple buses for a scalable and reliable high-bandwidth connection
US6658525B1 (en) 2000-09-28 2003-12-02 International Business Machines Corporation Concurrent access of an unsegmented buffer by writers and readers of the buffer
US7349431B2 (en) * 2001-03-13 2008-03-25 Ipicom, Inc. Dynamic bandwidth allocation system
US7124410B2 (en) * 2002-01-09 2006-10-17 International Business Machines Corporation Distributed allocation of system hardware resources for multiprocessor systems
CN101263465B (zh) * 2005-09-14 2011-11-09 皇家飞利浦电子股份有限公司 用于总线仲裁的方法和系统
JP4845522B2 (ja) * 2006-01-30 2011-12-28 シャープ株式会社 システムバス制御装置、集積回路およびデータ処理システム
KR100813256B1 (ko) * 2006-06-23 2008-03-13 삼성전자주식회사 버스 중재 장치 및 방법
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) * 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

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
JPS61150059A (ja) * 1984-12-24 1986-07-08 Sony Corp デ−タ処理装置
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
FR2737029B1 (fr) * 1995-07-19 1997-09-26 Sextant Avionique Dispositif d'interface entre un calculateur a architecture redondante et un moyen de communication
US5822553A (en) * 1996-03-13 1998-10-13 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100934227B1 (ko) * 2007-09-21 2009-12-29 한국전자통신연구원 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치

Also Published As

Publication number Publication date
KR100420706B1 (ko) 2004-06-30
US5930484A (en) 1999-07-27
CA2245106C (en) 2002-08-06
CA2245106A1 (en) 1999-03-18

Similar Documents

Publication Publication Date Title
KR100420706B1 (ko) 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서i/o제어를위한방법및시스템
KR100420707B1 (ko) 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서버스중재를위한방법및시스템
KR100296718B1 (ko) 다중프로세서 시스템에서 가변폭 버스를 동시에 액세스하기 위한 방법 및 시스템
US5761464A (en) Prefetching variable length data
US6330647B1 (en) Memory bandwidth allocation based on access count priority scheme
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
US5524235A (en) System for arbitrating access to memory with dynamic priority assignment
US6006303A (en) Priority encoding and decoding for memory architecture
US5621902A (en) Computer system having a bridge between two buses with a direct memory access controller and an alternative memory access controller
US6636927B1 (en) Bridge device for transferring data using master-specific prefetch sizes
EP1163593B1 (en) Apparatus for communicating between multiple functional units in a computer environment
JP2002140289A (ja) 調整可能ワード・サイズ転送とアドレス配列/増加を備えたマイクロコントローラdmaオペレーション
EP1131732B1 (en) A direct memory access engine for supporting multiple virtual direct memory access channels
US5678064A (en) Local bus-ISA bridge for supporting PIO and third party DMA data transfers to IDE drives
EP0901080A1 (en) Arbitration system
US7080174B1 (en) System and method for managing input/output requests using a fairness throttle
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
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
JP3251903B2 (ja) プロセッサ・データをバースト転送する方法及びコンピュータ・システム
US6823421B2 (en) Method, apparatus, and system for maintaining conflict-free memory address space for input/output memory subsystems
JPH04280347A (ja) 高速バス装置
US6240474B1 (en) Pipelined read transfers

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