KR20050089084A - 클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어수준 병렬성 프로세서에서의 버스 액세스 방법 - Google Patents

클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어수준 병렬성 프로세서에서의 버스 액세스 방법 Download PDF

Info

Publication number
KR20050089084A
KR20050089084A KR1020057012338A KR20057012338A KR20050089084A KR 20050089084 A KR20050089084 A KR 20050089084A KR 1020057012338 A KR1020057012338 A KR 1020057012338A KR 20057012338 A KR20057012338 A KR 20057012338A KR 20050089084 A KR20050089084 A KR 20050089084A
Authority
KR
South Korea
Prior art keywords
bus
cluster
clusters
switching means
instruction level
Prior art date
Application number
KR1020057012338A
Other languages
English (en)
Inventor
도스 레이스 모레이라 오를란도 엠 피레스
안드레이 테레츠코
아츠 빅토르 엠 지 반
Original Assignee
코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리즈케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Publication of KR20050089084A publication Critical patent/KR20050089084A/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Abstract

본 발명의 기본적인 생각은 스위치를 개방/폐쇄함으로써 버스를 소형의 독립 세그먼트로 분할하기 위해서, 버스를 따라 스위치를 부가하는 것이다. 클러스터 명령어 수준 병렬성 프로세서는, 적어도 하나의 레지스터 파일(RF)과 적어도 하나의 기능 유닛(FU)을 각각이 포함하는 복수의 클러스터(C1-C6)와, 상술한 클러스터(C1-C6)를 접속하며, 복수의 세그먼트(100a, 100b, 100c)를 포함하는 버스 수단과, 인접 버스 세그먼트(100a, 100b, 100c) 사이에 배열되어 있는 스위칭 수단(200)을 포함한다. 상술한 스위칭 수단(200)은 인접 버스 세그먼트(100a, 100b, 100c)를 접속 또는 접속 해제하는데 사용된다. 또한, 클러스터 명령어 수준 병렬성 프로세서에서 버스(100)에 액세스하는 방법이 도시되어 있다. 상술한 버스(100)는 상술한 버스(100)를 따르는 적어도 하나의 스위칭 수단(200)을 포함한다. 클러스터는 소스 레지스터와 전송 워드에 기초한 전송 동작 또는 목적지 소스 레지스터와 전송 워드에 기초한 수신 동작을 수행할 수 있다. 그 다음, 상술한 스위칭 수단은 상술한 전송 워드에 따라서 개방/폐쇄된다.

Description

클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법{A METHOD FOR ACCESSING A BUS IN A CLUSTERED INSTRUCTION LEVEL PARALLELISM PROCESSOR}
본 발명은 클러스터 명령어 수준 병렬성 프로세서와, 그 클러스터 명령어 수준 병렬 처리 프로세서에서 버스에 액세스하는 방법에 관한 것이다.
명령어 수준 병렬성(Instruction Level Parallelism : ILP) 프로세서 분야에서의 하나의 주요 문제점은 레지스터 파일 리소스의 범위성(scalability)이다. 과거에는, ILP 아키텍처는, 현재 실행되고 있는 모든 병렬성의 결과를 유지하기 위한 다수의 레지스터의 필요성을 제거하기 위해서, 중앙 집중 리소스 주변에 설계하였다. 중앙 집중 레지스터 파일의 이용으로, 기능 유닛간의 데이터 공유를 용이하게 하며, 레지스터 할당 및 스케줄링을 단순화한다. 그러나, 상당수의 포트를 가진 거대 모놀리식 레지스터 파일은 프로세서의 주기 시간을 구축하고 제한하는데 어려움이 있기 때문에, 이러한 단일의 중앙 집중 레지스터의 범위성은 제한된다.
VLSI 기술과 컴퓨터 아키텍처 분야에서의 최근 개발은, 특정 분야에서는 탈 중앙 집중 구성이 바람직할 수 있음을 제안하고 있다. 미래의 프로세서의 성능은 연산 제한보다는 통신 제한에 의해 제한될 수 있음이 예측된다. 이러한 문제점에 대한 하나의 해결책은, 대기 시간뿐만 아니라 통신 속도에도 악영향을 주는 긴 배선을 피하기 위해서, 리소스를 분할하여 이들 리소스를 프로세서 전체에 물리적으로 분배하는 것이다. 이는 클러스터에 의해 달성될 수 있다. 클러스터 프로세서에서, 기능 유닛과 레지스터 파일 등의 몇몇 리소스는 개별적인 클러스터에 걸쳐 분배된다. 특히, 클러스터 ILP 아키텍처에 있어서, 각각의 클러스터는 기능 유닛 세트와 로컬 레지스터를 포함한다. 클러스터 프로세서 배후의 주요 아이디어는 주기적으로 상호 동작하는 연산부를 동일 클러스터 상에 할당하는 것이며, 거의 통신할 수 없거나 이들 통신이 절대적이지 않는 연산부는 상이한 클러스터 상에 할당된다. 그러나, 문제점은 소프트웨어 레벨(레지스터에의 변수 할당 및 스케줄링)뿐만 아니라 하드웨어 레벨(배선 및 로직) 상에서 상호 클러스터 통신(Inter-Cluster-Communication : ICC)을 조정하는 방법이다.
가장 광범위하게 사용되는 ICC 방법은 완전 포인트간 접속 토포로지이며, 즉, 2개의 클러스터 각각은 데이터의 교환을 가능하게 하는 전용 배선을 가지고 있다. 한편으로는, 완전 접속을 가진 포인트간 ICC는 명령어 스케줄링을 단순화하지만, 다른 한편으로는, 필요한 배선의 양 : N(N-1)(N은 클러스터의 개수임)으로 인해 범위성이 제한된다. 따라서, 배선의 2차 성장(quadratic growth)은 범위성을 2-10 클러스터로 제한한다.
추가로, 포인트 간 ICC에 있어서 부분 접속 네트워크를 이용하는 것이 또한 가능하다. 여기서, 클러스터는 다른 모든 클러스터(풀 접속)에 접속되지 않지만, 예를 들어, 인접한 클러스터에 거의 접속된다. 배선 복잡성이 감소될 수 있지만, 프로세서를 프로그래밍하기 위한 문제점이 증가할 수 있으며, 이 문제점은 기존의 자동 스케줄링 및 할당 툴에 의해 만족스럽게 해결되지 않는다.
다른 ICC 방법은 글로벌 버스 접속이다. 상술한 완전 포인트 간 접속 포토로지 ICC 방법에 비해 하드웨어 리소스를 훨씬 덜 필요로 하면서, 클러스터는 버스를 통해 서로 완전 접속되어 있다. 추가로, 이러한 방법에 의해, 값이 다중 전송될 수 있으며, 즉, 동일 값이 동시에 몇몇 클러스터에 전송될 수 있거나, 환언하면, 몇몇 클러스터가 버스를 동시에 판독함으로써 동일 값을 획득할 수 있다. 또한, 이 방법은 정적인 스케줄링을 기초로 하기 때문에, 아비터(arbiter) 또는 제어 신호가 전혀 필요하지 않다. 버스는 공유 리소스를 구성하고 있기 때문에, 통신 대역폭을 매우 저속인 것으로서 제한하는 사이클 당 1 전송을 수행하는 것이 가능하다. 또한, ICC의 대기 시간은 버스의 전파 지연으로 인해 증가할 수 있다. 대기 시간은 ICC 방법을 이용하여 프로세서의 범위성을 제한하는 클러스터의 개수 증가에 따라 또한 증가할 것이다.
제한된 통신 대역폭의 문제점은 다중 버스를 이용함으로써 부분적으로 극복될 수 있으며, 여기서, ICC에 있어서 1개의 버스 대신에 2개의 버스가 사용된다. 이는 통신 대역폭을 증가시킬 수 있지만, 버스의 대기 시간을 감소시키지 않고 하드웨어 오버헤드를 또한 증가시킬 수 있다.
다른 ICC 통신 방법에서는 로컬 버스가 사용된다. 이러한 ICC 방법은 부분 접속의 통신 방법이다. 그러므로, 로컬 버스는 한번에 모두는 아니지만 특정 양의 클러스터를 단지 접속한다. 이러한 방법의 단점은, 예를 들어, 상이한 로컬 버스에 접속된 클러스터 간에 하나의 값이 전송된다면, 1 사이클 내에서 직접 전송되는 것이 아니라 최소한 2 사이클이 필요하기 때문에, 프로그래밍하는 것이 어렵다는 것이다.
따라서, 기존의 ICC 방법의 장점 및 단점은 다음과 같이 요약될 수 있다. 포인트 간 토포로지는 높은 대역폭을 가지고 있지만, 배선의 복잡성은 클러스터의 개수의 제곱으로 증가한다. 다중 전송, 즉, 하나의 값을 몇몇 다른 클러스터에 전송하는 것은 가능하지 않다. 다른 한편으로는, 복잡성은 클러스터의 개수에 따라 선형으로 증가하고 다중 전송을 가능하게 하기 때문에, 버스 토포로지가 낮은 복잡성을 가지지만, 낮은 대역폭을 갖는다. ICC 방법은 완전 접속 또는 부분 접속될 수 있다. 완전 접속 방법은 높은 대역폭과 낮은 소프트웨어 복잡성을 갖지만, 높은 배선 복잡성이 존재하며, 이는 보다 덜 크기 조정가능하다. 부분 접속 방법은 낮은 하드웨어 복잡성과 함께 양호한 범위성을 구성하고 있지만, 낮은 대역폭과 높은 소프트웨어 복잡성을 갖는다.
따라서, 본 발명의 목적은, 상술한 버스의 대기 시간을 감소시키고, 기초가 되는 프로그래밍 시스템의 복잡성을 과도하게 증가시키지 않으면서, 클러스터 ILP 프로세서의 ICC 방법 내에서 버스의 대역폭을 개선하는 것이다.
이러한 문제점은 청구항 1에 따른 ILP 프로세서와 청구항 5의 클러스터 명령어 수준 병렬성 프로세서에서 버스에 액세스하는 방법에 의해 해결된다.
본 발명의 기본적인 생각은 스위치를 개폐함으로써 보다 작은 독립 세그먼트로 버스를 분할하기 위해서 버스에 따라 스위치를 부가하는 것이다.
본 발명에 따르면, 클러스터 명령어 수준 병렬성 프로세서는 복수의 클러스터(C1-C4), 복수의 버스 세그먼트(100a, 100b, 100c)를 구비한 버스 수단(100)과, 인접 버스 세그먼트(100a, 100b, 100c) 사이에 배열된 스위칭 수단(200a, 200b)을 포함한다. 상술한 버스 수단(100)은 상술한 클러스터(C1-C4)를 접속하는데 사용되며, 각각이 적어도 하나의 레지스터 파일(RF)과 적어도 하나의 기능 유닛(FU)을 포함한다. 상술한 스위칭 수단(200)은 인접한 버스 세그먼트(100a, 100b, 100c)를 접속 및 접속 해제하는데 사용된다.
버스를 상이한 세그먼트로 분할함으로써, 하나의 버스 세그먼트 내의 버스의 대기 시간은 개선된다. 그럼에도 불구하고, 총 버스의 전체 대기 시간, 즉, 폐쇄된 모든 스위치는 클러스터의 개수에 따라 선형으로 증가하고 있지만, 로컬 또는 인접 클러스터 간의 데이터 이동은 상이한 버스 세그먼트, 즉 상이한 스위치에 걸친 이동보다 낮은 대기 시간을 가질 수 있다. 버스 ICC의 글로벌 상호 접속 조건으로 인한 로컬 통신, 즉, 이웃 클러스터 간의 저속 다운은, 스위치를 개방함으로써 피할 수 있으며, 이로써, 낮은 대기 시간을 가진 보다 짧은 버스, 즉 버스 세그먼트가 달성될 수 있다. 또한, 스위치를 포함하는 것이 값싸며 구현하기 용이하며, 버스의 가용 대역폭을 증가시키면서, 완전 접속 ICC를 포기하지 않고 긴 버스에 의해 발생되는 대기 시간 문제점을 개선할 수 있다.
본 발명의 일측면에 따르면, 상술한 버스 수단(100)은 적어도 2개의 버스를 포함하는 다중 버스이며, 이는 통신 대역폭을 증가시킬 수 있다.
또한, 본 발명은 클러스터 명령어 수준 병렬성 프로세서에서 버스(100)에 액세스하는 방법에 관한 것이다. 상술한 버스(100)는 상술한 버스(100)를 따르는 적어도 하나의 스위칭 수단(200)을 포함한다. 클러스터(C1-C4)는 소스 레지스터와 전송 워드에 기초한 전송 동작 또는 소스 레지스터와 전송 워드에 기초한 수신 동작을 수행할 수 있다. 그 다음, 상술한 스위칭 수단(200)은 상술한 전송 워드에 따라서 개방/폐쇄된다.
소프트웨어 관점에서, 분할 또는 세그먼트 버스의 스케줄링은 글로벌 버스 ICC에 비해 훨씬 복잡하지 않으며, 스위치를 제어하기 위해서는 몇몇 로직 게이트가 거의 필요하다.
본 발명의 다른 측면에 따르면, 상술한 전송 워드는 전송 동작에 대한 전송 방향과 수신 동작에 대한 수신 방향을 나타내며, 데이터 이동의 방향에 따라 스위치를 제어할 수 있다.
본 발명은 도면을 참조하여 보다 상세히 설명될 것이다.
도 1은 포인트간 상호 클러스터 통신 ICC 방법을 도시하는 도면,
도 2는 버스를 통한 ICC 방법을 도시하는 도면,
도 3은 다중 버스를 통한 ICC 방법을 도시하는 도면,
도 4는 로컬 버스를 통한 ICC 방법을 도시하는 도면,
도 5는 제 1 실시예에 따른 세그먼트 버스를 통한 ICC 방법을 도시하는 도면,
도 6은 제 2 실시예에 따른 세그먼트 버스를 통한 ICC 방법을 도시하는 도면,
도 7은 제 3 실시예에 따른 세그먼트 버스를 통한 ICC 방법을 도시하는 도면.
가장 광범위하게 사용되는 ICC 방법은 완전 포인트간 접속 포토로지이며, 즉, 2개의 클러스터 각각은 데이터 교환을 가능하게 하는 전용 배선을 가지고 있다. 4개의 클러스터를 가진 전형적인 ILP 프로세서가 도 1에 도시되어 있다.
도 2는 글로벌 버스 접속을 가진 다른 ICC 방법을 도시한다. 클러스터는 버스를 통해 서로 완전 접속되어 있으며, 도 1에 도시된 ICC 방법에 비해 하드웨어 리소스를 훨씬 적게 필요로 한다. 추가로, 이러한 방법에 의해 값을 다중 전송, 즉, 동일 값이 동시에 몇몇 클러스터로 전송되거나, 환언하면, 몇몇 클러스터가 버스를 동시에 판독함으로써 동일 값을 획득할 수 있다.
제한된 통신 대역폭의 문제점은 도 3에 도시된 다중 버스를 이용함으로써 부분적으로 극복될 수 있으며, 여기서, 하나의 버스 대신에 2개의 버스가 ICC용으로 사용된다. 이는 통신 대역폭을 증가시킬 수 있지만, 버스의 대기 시간을 감소시키지 않고 하드웨어 오버헤드를 또한 증가시킬 수 있다.
도 4는 로컬 버스를 이용하는 다른 ICC 통신 방법을 도시한다. 이러한 ICC 방법은 부분 접속 통신 방법이다. 따라서, 로컬 버스는 한번에 모두는 아니지만 특정양의 클러스터를 거의 접속할 수 있으며, 예를 들어, 클러스터 1 내지 3은 하나의 로컬 버스에 접속되며, 클러스터 2 내지 4는 제 2 로컬 버스에 접속된다. 이러한 방법의 단점은, 클러스터 1에서 클러스터 4로 값이 전송되면, 1 사이클 내에서 직접 전송될 수 있는 것은 아니지만 적어도 2 사이클이 필요하기 때문에, 프로그래밍하는 것이 어렵다는 것이다.
도 5는 제 1 실시예에 따른 세그먼트 버스를 통한 상호 클러스터 통신 ICC 방법을 도시한다. 상술한 ICC 방법은 VLIW 프로세서에 포함될 수 있다. 이 방법은 버스(100)와 버스를 세그먼트하는 하나의 스위치(200)를 통해 서로 접속된 4개의 클러스터(C1-C4)를 포함한다. 스위치(200)가 개방되면, 1 사이클 내에서 클러스터 1(C1)와 클러스터 2(C2) 사이에서 데이터 이동이 수행될 수 있으며, 및/또는 클러스터 3(C3)와 클러스터 4(C4) 사이에서 다른 데이터 이동이 수행될 수 있다. 다른 한편으로, 스위치(200)가 폐쇄되면, 클러스터 1(C1) 또는 클러스터 2(C2)로부터 클러스터 3(C3) 또는 클러스터 4(C4)로 1 사이클 내에서 데이터가 이동될 수 있다.
이러한 방법을 이용하여, 클러스터와 스위치의 개수와 같은 하드웨어 리소스의 범위성이 도 2에 도시된 기존의 ICC의 경우와 마찬가지로 선형이다.
제 1 실시예에 따른 ICC 방법이 단일 버스(100)를 단지 도시하고 있지만, 본 발명의 이론은 도 3에 도시된 다중 버스 ICC 방법 및 도 4에 도시된 로컬 버스를 이용하는 ICC 방법에 용이하게 적용될 수 있다. 단지 몇몇 스위치(200)가, 분할 또는 세그먼트 버스를 달성하기 위해서, 다중 버스 또는 로컬 버스에 포함될 필요가 있다.
도 6은 제 2 실시예에 따른 세그먼트 버스를 통한 상호 클러스터 통신 ICC 방법을 도시한다. 여기서, 스위치 제어 뿐만 아니라, 클러스터(C1-C4)가 보다 상세히 도시되어 있다. 각각의 클러스터(C1-C4)는 레지스터 파일(RF)과 기능 유닛(FU)을 포함하며, 단지 비트 당 3개의 OR 게이트(G)로 구성된 인터페이스를 통해 하나의 비트 버스(100)에 접속되어 있다. 대안으로, AND, NAND 또는 NOR 게이트(G)가 인터페이스로서 사용될 수 있다. 그러나, 각각의 클러스터(C1-C4)는 1 이상의 레지스터 파일(RF)과 하나의 기능 유닛(FU)을 분명히 포함할 수 있다. 기능 유닛(FU)은 임의의 버스 동작에 전용으로 동작하는 특수 기능 유닛(FU)일 수 있다. 또한, 버스에 기록하는 몇몇 기능 유닛이 있을 수 있다.
레지스터 파일의 바이패스 로직은, 본 발명에 따른 분할 또는 세그먼트 버스의 이해를 위해서는 필수적인 것이 아니기 때문에, 도시하지 않고 있다. 버스 워드의 1 비트만이 도시되어 있지만, 버스는 원하는 워드 크기를 가질 수 있음이 분명하다. 또한, 제 2 실시예에 따른 버스는 비트 당 2개의 와이어로 구현된다. 하나의 와이어는 좌측에서 우측으로 버스의 값을 이송하며, 다른 와이어는 우측에서 좌측으로 버스의 값을 이송한다. 그러나, 버스의 다른 구현이 또한 가능하다.
버스 분할 스위치는 각각의 버스 라인에 있어서 단지 몇몇 MOS 트랜지스터(M1, M2)로 구현될 수 있다.
버스의 액세스 제어는 local_mov 또는 global_mov 동작을 출력함으로써 클러스터(C1-C4)에 의해 수행될 수 있다. 이들 동작의 인수는 소스 레지스터와 타겟 레지스터이다. local_mov 동작은 버스 분할 스위치를 개방함으로써 버스의 세그먼트를 단지 이용하며, global_mov 동작은 버스 분할 스위치(200)를 폐쇄함으로써 전체 버스(100)를 이용한다.
대안으로, 다중 전송을 가능하게 하기 위해서, 데이터를 이동시키는 동작은, 1 이사의 레지스터, 즉, 상이한 클러스터(C1-C4)에 속하는 타겟 레지스터의 리스트를 수용할 수 있다. 이는 1 비트 벡터에서 레지스터/클러스터 마스크에 의해 또한 구현될 수 있다.
도 7은 본 발명의 제 3 실시예에 따른 세그먼트 버스를 통한 상호 클러스터 통신 ICC 방법을 도시한다. 도 7은 6개의 클러스터(C1-C6)와, 3개의 세그먼트(100a, 100b, 100c)를 구비한 버스(100)와, 2개의 스위치(200a, 200b)를 도시하며, 즉, 2개의 클러스터는 각각의 버스 세그먼트에 연관되어 있다. 분명하게, 클러스터, 스위치 및 버스 세그먼트의 개수는 이러한 예로부터 가변할 수 있다. 스위치(200) 뿐만 아니라, 클러스터(C1-C6), 클러스터의 인터페이스 및 버스(100)는 도 6을 참조하여 제 2 실시예에 기술된 바와 같이 구현될 수 있다. 제 3 실시예에서, 스위치는 디폴트에 의해 폐쇄되는 것으로 간주된다.
버스 액세스는 전송 동작 또는 수신 동작에 의해 클러스터(C1-C6)에 의해 수행될 수 있다. 클러스터가 데이터를 전송, 즉, 버스를 통해 다른 클러스터로 데이터를 이동시킬 필요가 있는 경우에, 상술한 클러스터는 전송 동작을 수행하며, 여기서, 상술한 전송 동작은 2개의 인수, 즉, 소스 레지스터와 전송 방향, 즉, 데이터가 전송되는 방향을 갖는다. 전송 방향은 '좌' 또는 '우'일 수 있으며, 다중 전송을 위해서 '모두', 즉 '좌'와 '우'일 수 있다.
예를 들어, 클러스터 3(C3)가 데이터를 클러스터 1(C1)로 이동할 필요가 있으면, 소스 레지스터, 즉, 이동된 데이터가 저장되는 레지스터 중 하나와의 전송 동작을 출력하고, 데이터가 이동되는 방향을 인수로서 표시하는 전송 방향을 출력할 것이다. 여기서, 전송 방향은 좌측이다. 따라서, 클러스터 5(C5) 및 클러스터 6(C6)과의 버스 세그먼트(200b)는 이러한 데이터 이동을 필요로 하지 않기 때문에, 클러스터 4(C4)와 클러스터 5(C5) 사이의 스위치(200b)는 개방될 것이다. 환언하면, 클러스터가 전송 동작을 출력할 때, 전송 방향의 반대측에 가장 근접하게 배열된 스위치가 개방되고, 이로써, 데이터 이동을 수행하는데 실제로 필요한 세그먼트만으로, 즉, 전송 클러스터와 수신 클러스터 사이의 세그먼트로 버스의 이용이 제한된다.
클러스터 3(C3)은 클러스터 1(C1) 및 클러스터 6(C6)로 동일 데이터를 전송, 즉 다중 전송할 필요가 있다면, 전송 방향은 "모두"일 수 있다. 따라서, 클러스터 3과 6 사이의 모든 스위치(200b) 뿐만 아니라, 클러스터 2와 클러스터 1 사이의 모든 스위치(200a)는 폐쇄된 상태로 유지될 것이다.
다른 실시예에 따르면, 클러스터 3(C3)가 클러스터 1(C1)로부터 데이터를 수신할 필요가 있다면, 목적지 레지스터, 즉 수신된 데이터가 저장되는 레지스터와의 수신 동작과, 데이터가 인수로서 수신되는 방향을 표시하는 수신 방향을 출력할 것이다. 여기서, 수신 방향은 좌측이다. 따라서, 클러스터 5(C5) 및 클러스터 6(C6)을 갖는 버스 세그먼트(100c)가 이러한 데이터 이동에 필요하지 않기 때문에, 클러스터 4(C4)와 클러스터 5(C5) 사이의 스위치(200b)는 개방될 것이다. 환언하면, 클러스터가 수신 동작을 출력을 할 때, 수신 방향의 반대측에 가장 근접하게 배열된 스위치는 개방되고, 이로써, 데이터 이동을 수행하는데 실제 필요한 세그먼트만으로, 즉, 전송 클러스터와 수신 클러스터 사이의 세그먼트로 버스의 이용이 제한된다.
다중 전송을 준비하기 위해서, 수신 방향은 또한 지정되지 않을 수 있다. 따라서, 모든 스위치는 폐쇄 상태로 유지될 수 있다.
제 3 실시예를 기반으로 하는 제 4 실시예에 따르면, 스위치는 디폴트 상태를 갖지 않는다. 또한, 스위치(200)를 프로그래밍하기 위한 스위치 구성 워드가 제공된다. 상술한 스위치 구성 워드는 어느 스위치(200)가 개방되고 어는 스위치가 폐쇄되는지를 결정한다. 각각의 사이클에서 전송/수신 동작과 같은 정상적인 동작으로 출력될 수 있다. 따라서, 제 3 실시예에 따라서 기술된 바와 같이, 전송/수신 방향을 인수로서 가진 전송/수신 동작에 의한 버스 액세스와 대조적으로, 전송/수신 동작과 스위치 구성 워드에 의해 버스 액세스가 수행된다.

Claims (11)

  1. 적어도 하나의 레지스터 파일과 적어도 하나의 기능 유닛을 각각이 포함하는 복수의 클러스터와,
    상기 클러스터를 접속하며, 복수의 세그먼트를 포함하는 버스 수단과,
    인접 버스 세그먼트 사이에 배열되어 있으며, 인접 버스 세그먼트를 접속 또는 접속 해제하는 스위칭 수단
    을 포함하는 클러스터 명령어 수준 병렬성 프로세서.
  2. 제 1 항에 있어서,
    각각의 클러스터는 적어도 하나의 버스 세그먼트에 결합되어 있는 클러스터 명령어 수준 병렬성 프로세서.
  3. 제 1 항 또는 제 2 항에 있어서,
    2 이상의 클러스터는 동일 버스 세그먼트에 결합되어 있는 클러스터 명령어 수준 병렬성 프로세서.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 버스 수단은 적어도 2개의 버스를 포함하는 다중 버스인 클러스터 명령어 수준 병렬성 프로세서.
  5. 클러스터 명령어 수준 병렬성 프로세서에서 버스 - 상기 버스는 상기 버스를 따르는 적어도 하나의 스위칭 수단을 포함함 - 에 액세스하는 방법에 있어서,
    소스 레지스터와 전송 워드를 기초로 하여 전송 동작을 수행하는 단계 및/또는,
    목적지 소스 레지스터와 전송 워드를 기초로 하여 수신 동작을 수행하는 단계와,
    상기 전송 워드에 따라서 상기 스위칭 수단을 개방/폐쇄하는 단계
    를 포함하는 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
  6. 제 5 항에 있어서,
    상기 전송 워드는 상기 전송 동작에 대한 전송 방향과 상기 수신 동작에 대한 수신 방향을 나타내는 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
  7. 제 6 항에 있어서,
    상기 스위칭 수단의 디폴트 상태는 폐쇄되는 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
  8. 제 7 항에 있어서,
    상기 전송 방향 또는 상기 수신 방향의 반대 방향으로 상기 전송 동작 또는 상기 수신 동작을 수행하는 클러스터에 가장 근접한 상기 스위칭 수단 중 하나는 개방되는 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
  9. 제 6 항에 있어서,
    상기 전송 방향 또는 상기 수신 방향은 좌, 우 또는 모두인 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
  10. 제 9 항에 있어서,
    상기 전송 방향 또는 수신 방향이 모든 방향인 경우에, 스위칭 수단은 개방되지 않는 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
  11. 제 5 항에 있어서,
    상기 전송 워드는 스위치 구성 워드를 나타내며, 상기 스위칭 수단은 상기 구성 워드에 따라서 개방/폐쇄되는 클러스터 명령어 수준 병렬성 프로세서에서의 버스 액세스 방법.
KR1020057012338A 2002-12-30 2003-11-28 클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어수준 병렬성 프로세서에서의 버스 액세스 방법 KR20050089084A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02080588 2002-12-30
EP02080588.3 2002-12-30

Publications (1)

Publication Number Publication Date
KR20050089084A true KR20050089084A (ko) 2005-09-07

Family

ID=32668861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057012338A KR20050089084A (ko) 2002-12-30 2003-11-28 클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어수준 병렬성 프로세서에서의 버스 액세스 방법

Country Status (8)

Country Link
US (1) US20060095710A1 (ko)
EP (1) EP1581862A2 (ko)
JP (1) JP2006512655A (ko)
KR (1) KR20050089084A (ko)
CN (1) CN1732436A (ko)
AU (1) AU2003283672A1 (ko)
TW (1) TW200506722A (ko)
WO (1) WO2004059467A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2465929A (en) * 2007-10-03 2010-06-09 Nortel Networks Ltd Providing an abstraction layer in a cluster switch that includes plural switches

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7475176B2 (en) * 2006-01-31 2009-01-06 Broadcom Corporation High bandwidth split bus
US9781062B2 (en) * 2014-01-08 2017-10-03 Oracle International Corporation Using annotations to extract parameters from messages
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
EP3144820A1 (en) 2015-09-18 2017-03-22 Stichting IMEC Nederland Inter-cluster data communication network for a dynamic shared communication platform
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
CN111061510B (zh) * 2019-12-12 2021-01-05 湖南毂梁微电子有限公司 一种可扩展的asip结构平台及指令处理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0494056A3 (en) * 1990-12-31 1994-08-10 Ibm Dynamically partitionable and allocable bus structure
US5862359A (en) * 1995-12-04 1999-01-19 Kabushiki Kaisha Toshiba Data transfer bus including divisional buses connectable by bus switch circuit
US5887138A (en) * 1996-07-01 1999-03-23 Sun Microsystems, Inc. Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
GB2359162B (en) * 1998-11-10 2003-09-10 Fujitsu Ltd Parallel processor system
US6334177B1 (en) * 1998-12-18 2001-12-25 International Business Machines Corporation Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system
US6662260B1 (en) * 2000-03-28 2003-12-09 Analog Devices, Inc. Electronic circuits with dynamic bus partitioning
US6978459B1 (en) * 2001-04-13 2005-12-20 The United States Of America As Represented By The Secretary Of The Navy System and method for processing overlapping tasks in a programmable network processor environment
US6957318B2 (en) * 2001-08-17 2005-10-18 Sun Microsystems, Inc. Method and apparatus for controlling a massively parallel processing environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2465929A (en) * 2007-10-03 2010-06-09 Nortel Networks Ltd Providing an abstraction layer in a cluster switch that includes plural switches
US7751329B2 (en) 2007-10-03 2010-07-06 Avaya Inc. Providing an abstraction layer in a cluster switch that includes plural switches

Also Published As

Publication number Publication date
JP2006512655A (ja) 2006-04-13
EP1581862A2 (en) 2005-10-05
CN1732436A (zh) 2006-02-08
TW200506722A (en) 2005-02-16
AU2003283672A8 (en) 2004-07-22
US20060095710A1 (en) 2006-05-04
WO2004059467A3 (en) 2004-12-29
WO2004059467A2 (en) 2004-07-15
AU2003283672A1 (en) 2004-07-22

Similar Documents

Publication Publication Date Title
KR20050089084A (ko) 클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어수준 병렬성 프로세서에서의 버스 액세스 방법
US10282338B1 (en) Configuring routing in mesh networks
US8737392B1 (en) Configuring routing in mesh networks
US8151088B1 (en) Configuring routing in mesh networks
EP0271492A1 (en) A data processing device
WO2011115327A1 (ko) 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
KR100951856B1 (ko) 멀티미디어 시스템용 SoC 시스템
US9720865B1 (en) Bus sharing scheme
JPH10222458A (ja) 接続装置
Ahuja S/Net: A high-speed interconnect for multiple computers
EP3008608B1 (en) Collaboration server
US6567909B2 (en) Parallel processor system
US6597692B1 (en) Scalable, re-configurable crossbar switch architecture for multi-processor system interconnection networks
US4763247A (en) Multiprocessor system formed by microprocessor matrix
JP2009282917A (ja) サーバ間通信機構及びコンピュータシステム
KR100207598B1 (ko) 상호연결망으로서 파이브 채널을 사용한 클러스터시스템
KR100662471B1 (ko) 시스템 온 칩 구조 및 데이터 전송 방법
US20040044822A1 (en) Computer I/O switching means based on network links
KR20050095599A (ko) 클러스터된 ilp 프로세서
KR20040101343A (ko) Vliw 프로세서
Aust et al. Real-time processor interconnection network for fpga-based multiprocessor system-on-chip (mpsoc)
Jones Throughput Expansion with FET Based Crossbar Switching
Seceleanu et al. Arbitration for the segmented bus architecture
FI115929B (fi) Suorittimen väylä ja suoritin
JP2000082017A (ja) デ―タの伝送および経路選択を制御する方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid