KR100420706B1 - 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서i/o제어를위한방법및시스템 - Google Patents
가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서i/o제어를위한방법및시스템 Download PDFInfo
- Publication number
- KR100420706B1 KR100420706B1 KR10-1998-0032701A KR19980032701A KR100420706B1 KR 100420706 B1 KR100420706 B1 KR 100420706B1 KR 19980032701 A KR19980032701 A KR 19980032701A KR 100420706 B1 KR100420706 B1 KR 100420706B1
- Authority
- KR
- South Korea
- Prior art keywords
- bus
- data
- processors
- block
- subbuses
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling 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)
- Bus Control (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
공통 와이드 버스(common wide bus)를 통해 시스템 메모리에 결합되어 있는 다중 프로세서를 가진 다중프로세서 시스템(multiprocessor system)에서의 입출력 제어를 위한 방법 및 시스템이 제공된다. 공통 와이드 버스는 선택된 프로세서에 의해 개별적으로 또는 그룹으로 액세스될 수 있는 다중 서브버스(multiple sub-buses)로 분할되고, 개별 서브버스들은 하나 이상의 전송 요구(transfer request)에 응답하여 다수의 프로세서에 의해서 동시에 액세스될 수 있다. 데이터 어드레스가 연관되어 있는 전송 요구에 응답하여, 특정 목표 장치가 식별된다. 그 다음, 데이터 어드레스가 어드레스 큐에 기입된다. 그 다음, 단일 프로세서로부터의 전송 요구에 응답하여, 단일 프로세서로/로부터 데이터를 전송하기 위해, 다수의 서브버스 중 하나 이상의 서브버스가 이용된다. 다수의 프로세서로부터의 전송 요구에 응답하여, 다수의 프로세서로/로부터 데이터를 동시에 전송하기 위해, 다수의 서브버스 중 하나 이상의 서브버스가 개별적으로 이용된다.
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)는 이 메모리로부터 유연-폭 데이터 버스(flexible-width data bus) 상으로 전송될 수 있는 가변 길이의 데이터 워드 형태의(in the form of data words of variable length) 데이터를 고체 메모리에 기록한다. 고체 메모리 내의 사용 가능한 기록 공간의 손실을 최소화할 수 있도록, 전체 버스 라인들 중에서 맵핑된 메모리 위치에 따라(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)을 제공하고자 하는 것이다.
본 발명의 다른 목적은 다중프로세서 데이터 처리 시스템에서의 입출력 제어를 위한 개선된 방법 및 시스템을 제공하고자 하는 것이다.
본 발명의 또 다른 목적은 다중프로세싱 시스템에서 다수의 프로세서에 의한 동시적인 가변-폭 버스 액세스를 입출력 제어를 위한 개선된 방법 및 시스템을 제공하고자 하는 것이다.
도 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)에서의 입출력 제어를 위한 방법 및 시스템이 제공된다. 공통 와이드 버스는 선택된 프로세서에 의해 개별적으로 또는 그룹으로 액세스될 수 있는 다중 서브버스(multiple sub-buses)로 분할되고, 개별 서브버스들은 하나 이상의 전송 요구(transfer request)에 응답하여 다수의 프로세서에 의해서 동시에 액세스될 수 있다. 데이터 어드레스가 연관되어 있는 전송 요구에 응답하여, 특정 목표 장치가 식별된다. 그 다음, 데이터 어드레스가 어드레스 큐에 기입된다. 그 다음, 단일 프로세서로부터의 전송 요구에 응답하여, 단일 프로세서로/로부터 데이터를 전송하기 위해, 다수의 서브버스 중 하나 이상의 서브버스가 이용된다. 다수의 프로세서로부터의 전송 요구에 응답하여, 다수의 프로세서로/로부터 데이터를 동시에 전송하기 위해, 다수의 서브버스 중 하나 이상의 서브버스가 개별적으로 이용된다.
본 발명의 상기 및 다른 목적, 특징 및 장점은 다음의 상세 설명으로부터 명백해 질 것이다.
본 발명의 신규한 특징은 특허청구범위에 기재한다. 그러나, 본 발명 자체, 양호한 사용 모드, 또 다른 목적 및 장점은 도면을 참조한 예시적 실시예에 대한 다음의 상세 설명으로부터 가장 잘 이해될 것이다.
도면, 특히 도 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 deviceaddress bus, 100), 데이터 버스(102) 및 제어 버스(104)는 제어 로직(92)의 제어 하에서 상기 도시된 주변 장치들 중의 하나로부터 선택적으로 데이터를 판독하거나 그 장치에 데이터를 기록하는데 이용된다.
전술한 각 버스 인터페이스 유니트 메모리 및 I/O 제어기(18)는 또한, 송신 어드레스 큐(send address queue, 84), 수신 어드레스 큐(receive address queue, 88), 송신 데이터 큐(86) 및 수신 데이터 큐(90)를 포함하는 다수의 큐를 포함한다. 상술한 바와 같이, 본 발명의 도시된 실시예에서 공통 와이드 버스(22)가 4개의 개별적인 서브버스 ― 하나 또는 그 이상의 서브버스가 주어진 트랜잭션에 대해 이용될 수 있음 ― 로 분할된다는 측면에서, 각 어드레스 또는 데이터 큐는 바람직하게는 4-웨이 멀티플렉스 시스템을 포함한다.
도시된 바와 같이, 하나 이상의 서브버스로부터의 어드레스 및 데이터는 어드레스/데이터인 버스(108)를 통해 그와 연관된 큐에 결합될 수 있으며, 각종 주변 장치로부터의 데이터는 데이터-아웃 버스(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 (7)
- 다수의 프로세서 및 다수의 서브 버스들(sub-buses)로 분할되는 공통 와이드 버스(a common wide bus)를 갖는 다중프로세서 시스템에서의 I/O 제어 방법 (input/output method)으로서,상기 다수의 프로세서 중 하나 이상의 프로세서에 의한 전송 요구(transfer request)에 응답하여, 목표 장치(target device)와 상기 다수의 프로세서 중 상기 하나 이상의 프로세서를 매칭(matching)하는 단계;특정 프로세서로부터의 전송 요구에 응답하여, 상기 다수의 프로세서 중 상기 특정 프로세서로 또는 상기 특정 프로세서로부터 데이터를 전송하기 위해 상기 다수의 서브버스 중 하나 이상의 서브버스를 동시에 이용하는 단계; 및상기 다수의 프로세서 중 여러개의 프로세서에 의한 전송 요구에 응답하여, 상기 다수의 프로세서 중 상기 여러개의 프로세서 각각으로 또는 여러개의 프로세서 각각으로부터 동시에 데이터를 전송하기 위해 상기 다수의 서브버스 중 하나 이상의 서브버스를 동시에 이용하는 단계를 포함하는 I/O 제어 방법.
- 제1항에 있어서, 소정의 데이터에 대한 어드레스를 어드레스 큐(address queue)에 기록하는 단계를 더 포함하는 I/O 제어 방법.
- 제2항에 있어서, 상기 어드레스 큐가 가득 채워져 있다는 표시에 응답하여, 상기 다수의 프로세서 중 하나 이상의 프로세서로의 또는 상기 다수의 프로세서 중 하나 이상의 프로세서로부터의 전송을 지연하는 단계를 더 포함하는 I/O 제어 방법.
- 다수의 프로세서 및 다수의 서브버스들로 분할되는 공통 와이드 버스를 갖는 다중프로세서 시스템을 위한 I/O 제어 시스템(input/output system)으로서,상기 다수의 프로세서 중 하나 이상의 프로세서에 의한 전송 요구에 응답하여, 목표 장치를 상기 다수의 프로세서 중 상기 하나 이상의 프로세서와 매칭하기 위한 수단;특정 프로세서로부터의 전송 요구에 응답하여, 상기 다수의 프로세서 중 상기 특정 프로세서로 또는 상기 특정 프로세서로부터 데이터를 전송하기 위해 상기 다수의 서브버스 중 하나 이상의 서브버스를 동시에 이용하기 위한 수단; 및상기 다수의 프로세서 중 여러개의 프로세서에 의한 전송 요구에 응답하여, 상기 다수의 프로세서 중 상기 여러개의 프로세서 각각으로 또는 여러개의 프로세서 각각으로부터 동시에 데이터를 전송하기 위해 상기 다수의 서브버스 중 하나 이상의 서브버스를 동시에 이용하기 위한 수단을 포함하는 I/O 제어 시스템.
- 제4항에 있어서, 소정의 데이터에 대한 어드레스를 각각의 전송 요구와 연관시키기 위한 수단을 더 포함하는 I/O 제어 시스템.
- 제4항에 있어서,상기 다중프로세서 시스템은 다수의 목표 장치를 포함하고,상기 I/O 제어 시스템은 각각의 전송 요구에 연관된 소정의 데이터에 대한 상기 어드레스를 이용하여 상기 다수의 목표 장치 중 특정 목표 장치를 식별하기 위한 수단을 더 포함하는 것을 특징으로 하는 I/O 제어 시스템.
- 제6항에 있어서, 상기 다수의 목표 장치들 중 하나의 장치는 메모리,디스크 드라이브 또는 모뎀을 포함하는 I/O 제어 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/933,156 | 1997-09-18 | ||
US8/933,156 | 1997-09-18 | ||
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990029295A KR19990029295A (ko) | 1999-04-26 |
KR100420706B1 true 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) |
Families Citing this family (46)
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 |
JP2009508247A (ja) * | 2005-09-14 | 2009-02-26 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | バス調停に関する方法及びシステム |
JP4845522B2 (ja) * | 2006-01-30 | 2011-12-28 | シャープ株式会社 | システムバス制御装置、集積回路およびデータ処理システム |
KR100813256B1 (ko) * | 2006-06-23 | 2008-03-13 | 삼성전자주식회사 | 버스 중재 장치 및 방법 |
KR100934227B1 (ko) * | 2007-09-21 | 2009-12-29 | 한국전자통신연구원 | 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치 |
US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
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 |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
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 |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
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 |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in 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 |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in 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 |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues 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 |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication 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 |
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 |
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 |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation 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 |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
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 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0721114A (ja) * | 1993-06-21 | 1995-01-24 | Hitachi Ltd | マルチプロセッサシステムの共有メモリ制御装置 |
Family Cites Families (5)
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 | デ−タ処理装置 |
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 |
-
1997
- 1997-09-18 US US08/933,156 patent/US5930484A/en not_active Expired - Fee Related
-
1998
- 1998-08-12 KR KR10-1998-0032701A patent/KR100420706B1/ko not_active IP Right Cessation
- 1998-08-14 CA CA002245106A patent/CA2245106C/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0721114A (ja) * | 1993-06-21 | 1995-01-24 | Hitachi Ltd | マルチプロセッサシステムの共有メモリ制御装置 |
Also Published As
Publication number | Publication date |
---|---|
KR19990029295A (ko) | 1999-04-26 |
CA2245106C (en) | 2002-08-06 |
US5930484A (en) | 1999-07-27 |
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 | |
JP3699833B2 (ja) | メモリアーキテクチャーのための優先符号化及び復号化 | |
US5655151A (en) | DMA controller having a plurality of DMA channels each having multiple register sets storing different information controlling respective data transfer | |
US5524235A (en) | System for arbitrating access to memory with dynamic priority assignment | |
US5828856A (en) | Dual bus concurrent multi-channel direct memory access controller and method | |
US6636927B1 (en) | Bridge device for transferring data using master-specific prefetch sizes | |
US5621902A (en) | Computer system having a bridge between two buses with a direct memory access controller and an alternative memory access controller | |
US7171526B2 (en) | Memory controller useable in a data processing system | |
US5805927A (en) | Direct memory access channel architecture and method for reception of network information | |
EP1012734B1 (en) | Address translation in computer bus bridge devices | |
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 | |
US5249297A (en) | Methods and apparatus for carrying out transactions in a computer system | |
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 | |
US6161153A (en) | Method for sharing data buffers from a buffer pool | |
US7310717B2 (en) | Data transfer control unit with selectable transfer unit size | |
US6327636B1 (en) | Ordering for pipelined read transfers | |
JP5058116B2 (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
US6823421B2 (en) | Method, apparatus, and system for maintaining conflict-free memory address space for input/output memory subsystems |
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 |