KR100226695B1 - 양방향 기능 확인 흐름을 갖는 파이프라인 구조 - Google Patents
양방향 기능 확인 흐름을 갖는 파이프라인 구조 Download PDFInfo
- Publication number
- KR100226695B1 KR100226695B1 KR1019960055790A KR19960055790A KR100226695B1 KR 100226695 B1 KR100226695 B1 KR 100226695B1 KR 1019960055790 A KR1019960055790 A KR 1019960055790A KR 19960055790 A KR19960055790 A KR 19960055790A KR 100226695 B1 KR100226695 B1 KR 100226695B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- functional unit
- functional
- stage
- pipeline
- Prior art date
Links
- 230000002457 bidirectional effect Effects 0.000 title abstract description 10
- 239000000284 extract Substances 0.000 claims abstract description 4
- 239000000872 buffer Substances 0.000 claims description 72
- 230000006870 function Effects 0.000 abstract description 55
- 238000012546 transfer Methods 0.000 abstract description 6
- 230000003139 buffering effect Effects 0.000 abstract description 4
- 238000012790 confirmation Methods 0.000 abstract description 3
- 238000000034 method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 235000014121 butter Nutrition 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
본 발명은 양방향 기능 확인 흐름을 갖는 파이프라인 구조에 관한 것으로서, 입력된 테이터스트림으로부터 기능유닛식별자를 추출하여 데이터를 어느 기능유닛으로 전달할 지에 대해 결정한 후, 데이터를 출력하는 제 1, 제 2, 제 3 기능유닛판정수단(500A,500B,500C)과; 상기 제 1, 제 2 기능유닛판정수단(500A,500B)으로부터 데이터를 입력받아 버퍼링을 수행하는 제 1 인터페이스수단(600A); 상기 제 2, 제 3 기능유닛판정수단(500B, 500C)으로부터 데이터를 입력받아 버퍼링을 수행하는 제 2 인터페이스 수단(600B); 상기 제 1 인터페이스수단(600A)으로부터 데이터를 입력받아 독립적인 기능을 수행하는 복수개의 제 1 기능 유닛(700A-1~700A-n); 및 상기 제 2 인터페이스수단(600B)으로부터 데이터를 입력받아 독립적인 기능을 수행하는 복수개의 제 2 기능유닛(700B-1~700B-n)으로 구성되며, 본 발명에 따르면 복수개의 기능유닛을 양방향으로 구비하고, 다수의 기능 흐름 파이프라인내에 있는 다수의 스테이지에서 기능유닛식별자를 가지고 어느 기능유닛에 데이터를 전달해야 할지를 순차적으로 판단하여 적절한 기능유닛을 선택한 후, 데이터를 양방향의 인터페이스를 통해 전달하므로써 하드웨어의 병렬성을 효율적으로 증가시켜 어플리케이션의 요구를 충족시킬 뿐만 아니라 동시에 하드웨어적인 제한을 극복할 수 있다.
Description
본 발명은 파이프라인 구조에 관한 것으로서, 특히 병렬로 배열된 복수개의 기능 유닛(Function Unit : FU)을 양방향으로 구비하고, 다수개의 기능 흐름 파이프라인(Function Flow Pipeline : FFP)내에 있는 다수개의 스테이지(stage)에서 기능 유닛 식별자(Function Unit Identifier : FU Id.)를 가지고 어느 기능 유닛에 데이터를 전달해야 할 지를 순차적으로 판단하여 적절한 기능 유닛을 선택한 후, 데이터를 양방향의 인터페이스를 통해 전달하므로써 하드워에어의 병렬성을 효율적으로 증가시킨 양방향 기능 확인 흐름을 갖는 파이프라인 구조에 관한 것이다.
일반적으로, 파이프라이닝(pipelining)은 디지탈 컴퓨터에서 시간적인 병렬화(temporal parallelism)를 실현하는 수단을 제공한다. 컴퓨터에서 파이프라인이라는 개념은 생산 공장에서의 생산 라인 개념과 유사하다.
파이프라이닝을 수행하기 위해서는, 입력 프로세스를 일련의 서브 프로세스들(asequence of subprocess)로 세분해야 하는데, 상기 일련의 서브 프로세스를 각각은 파이프라인에서 다른 스테이지들과 동시에 동작하는 특정 하드웨어 스테이지에 의해 수행된다. 연속적인 프로세스들은 파이프내에서 흐름이 형성되고, 서브 프로세스 레벨에서 중칩 방식(overlapper fashion)으로 수행된다. 이와 같은 파이프라 방식은 디지탈 컴퓨터의 처리량을 놀라을 정도로 향상시키게 된다.
이어서, 파이프라인 프로세서의 분류에 대해서 살펴보면, 다양한 형태의 파이프 라인 프로세서들은 프로세싱 레벨 및 파이프라인 구성과 제어 전략에 따라 분류된다.
우선, Handler는 프로세싱 레벨에 따라 산술 파이프라이닝(arithmeticpipeling), 인스트럭션 파이프라이닝(instruction), 프로세서 파이프라이닝(processor pipelining)로 분류하였다.
도 1은 산술 파이프라이닝을 설명하기 위한 도면으로서, 도 1에 도시된 바와 길이 컴퓨터의 산술 논리유닛들은 다양한 데이터 포맷들내에서 파이프라인 동작을 수행하기 위해 분리되어 있다. 여기서, S는 스테이지를 나타내고, L은 래치를 나타낸다. 널리 알려진 산술 파이프라인의 예로는 Star-100에서 사용되는 4-스페테이지 파이프, TI-A에서 사용되는 8-스테이지 파이프, Cray-1에서 사용되는 14 이상의 파이프라인 스테이지, Cyber-205°에서 파이프당 26 이상의 스테이지 등이 있다.
도 2은 일스트럭션 파이프라이닝을 설명하기 위한 도면으로서, 인스트럭션 스트림의 수행은 계속해서 일어나는 인스트럭션의 훼치, 디코드 그리고 오퍼랜드 훼치와 함께 현재 인스트럭션의 수행을 중첩시킴으로써 파이프라인화가 이루어진다. 이러한 기술은 또한 "인스트럭션 룩어헤드(instruction lookahead)"로 알려져 있다. 거의 모든 고성능 컴퓨터들은 인스트럭션 수행 파이프라인이 갖추어져 있다.
도 3은 프로세서 파이프라이닝을 설명하기 위한 도면으로서, 도 3에 도시된 바와 같이 프로세서 파이프라이닝은 일련의 프로세서들에 의해 동일 데이터 스트림을 파이프라인 프로세싱하는 것을 말하는데, 상기 프로세서들은 각각의 특정한 태스크들을 처리한다. 데이터 스트림은 메모리 블록내에 저장된 결과와 함께 첫번째 프로세서를 통과하는데, 이 데이터 스트림은 또한 두 번째 프로세서에 의해 받아들일 수 있다. 그때, 두 번째 프로세서는 세 번째 프로세서로 수행된 결과를 통과시킨다.
그리고, Ramamoorthy와 Li는 파이프라인 구성과 제어 전략에 따라 단일기능(Unifunction)/다기능(Multifunction) 파이프라인, 정적(Static)/동적(Dynamic)과 이프라인 스칼라(Scalar)/벡터(vector) 파이프라인으로 분류하였다.
우선 단일기능/다기능 파이프라인에 대해서 살펴보면, 고정된 전용 기능을 갖는 파이프라인 유닛은 "단일 기능적(unifunctional)"이라고 부른다. Cray-1은 다양한 스칼라, 벡터, 고정 소수점 및 부동 소수점 동작을 위해 12 단일 기능 파이프 라인 유닛을 갖는다. 그리고, 다기능 파이프는 파이프라인내에 스테이지들의 다른 세브세트(subsec)를 상호 연결하므로써 다른 시간에 또는 동시에 다른 기능들을 수행할 수 있다. T1-ASC는 4개의 다기능 파이프라인 프로세서들을 갖는데, 그들 각각은 다른 시간에 많은 산술 논리 동작을 재구성할 수 있다.
그리고, 정적/동적 파이프라인을 살펴보면, 정적 파이프라인은 한 번에 단지 하나의 기능적 구성을 추정할 수 있다. 정적 파이프라인은 단일 기능적이거나 다기능적이다. 단지 같은 형태의 인스트럭션이 계속적으로 수행된다면 정적인 파이프내에서 파이프라이닝은 가능해진다. 정적인 파이프라인에 의해 수행된 기능은 자주 변해서는 안된다. 한편, 동적 파이프라인 프로세서는 동시에 존재하는 여러개의 기능적 구성이 허용된다. 이러한 관점에서 동적 파이프라인은 다기능적이어야 한다. 동적인 구성인 정적인 파이프라인에서 보다 훨씬 더 정교한 제어와 시퀀싱 메카니즘이 요구된다. 대부분의 컴퓨터는 단일 기능적이거나 다기능적인 정적인 파이프들을 갖추고 있다.
또한, 인스트럭션 또는 데이터 형태에 의존하는 파이프라인 프로세서를 또한 스칼라 파이프라인과 벡터 파이프라인으로 분류된다. 스칼라 파이프라인은 "D0" 루프의 제어하에 일련의 스칼라 오퍼랜드를 처리한다. 작은 "D0" 루프내의 인스트럭션 버퍼로 미리 훼치(Prefetch)된다. 반복되는 스칼라 인스트럭션을 위해 요구된 스칼라 오퍼랜드를 파이프라인에 오퍼랜드를 계속적으로 공급하기 위해 데이터 캐쉬(data cach)로서 옮겨진다. IBM 시스템/360 모델 91은 스칼라 파이프라인을 갖춘 장치의 전형적인 예이다. 하지만, 모델 91에는 캐쉬가 존재하지 않는다. 한편, 벡터 파이프라인은 벡터 오퍼랜드에 대한 벡터 인스트럭션을 처리하기 위하여 특별히 설계된다. 벡터 인스트럭션을 갖는 컴퓨터는 벡터 프로세서라고 부르며, 이러한 프로세서의 설계는 스칼라 파이프라인의 설계로부터 확장된 것이다. 벡터 파이프라인내에 있는 벡터 오퍼랜드의 처리는 스칼라 파이프라인 내에서 처럼 소프트웨어의 제어하에 있다가 보다는 오히려 펄웨어(firmware)와 하드웨어의 제어하에 있다.
이어서, 선형 파이프라이닝(inear pipelining)에 대해서 살펴보면 다음과 같다.
일정한 지연을 가지는 파이프라인에 있어서, 모든 태스크(컴퓨터로 처리되는 일의 최소 단위)들은 모든 스테이션내에서 동일한 처리 시간을 갖는다. 이상적인 생산 라인내의 스테이션들은 충분한 자원 사용과 함께 동시적으로 수행된다. 그러나, 실질적으로 연속적인 스테이션들은 동일한 지연을 갖지 않는다. 생산 라인의 최적의 분배는 많은 요인에 의해 영향을 받는데, 그러한 요인으로는 워킹 유니트의 질(효율성과 수용성), 요구되는 처리 속도와 전체 생산 라인의 비용 등이 있다.
주어진 태스크 T에 대한 서브 태스크(subtask)들의 집합(T1, T2, ……Tk)의 선행 관계를 보면, 선행하는 태스크 T1(i<j)가 끝나기 전까지는 후행하는 태스크 Tj가 시작되지 않음을 나타낸다. 모든 서브 태스크들의 상호 의존도는 선행 그래프(precedence graph)를 형성하며, 선형 파이프라인(Linera pipeline)은 선형 선행 그래프에 따라 일련의 서브 태스크들을 처리할 수 있다.
도 4은 선형 파이프라인 프로세서의 기본 구조로도서, L은 래치, C는 클럭 그리고 Si는 i번째 스테이지를 나타낸다.
도 4에 도시된 파이프라인은 일련의 처리 스테이즈들(a cascade of processing stages)로 구성되고, 상기 스테이지들은 파이프를 통해 흐르는 데이터 스트럼에 대한 연산(arithmetic) 또는 논리(logic) 동작을 수행하는 순수한 조합 회로(combinational circuit)이다. 또한, 상기 스테지들은 고속 인터페이스 래치들에 의해 분리된다. 이러한 래치들은 스테이지들간의 즉각적인 결과를 유지하고 있기 위한 빠른 레지스터들이다. 인접 스테이지들간의 정보 흐름은 동시적으로 모든 래치에 인가되는 공통 클럭에 의해 제어된다.
이어서, 선형 파이프라인의 클럭 기간(Clock period), 속도 증가(Speedup), 효율성(Efficiency), 처리량(Throughput)등에 대해서 살펴보기로 한다.
1) 클럭 기간(Clock period)
각 스태이지 Si내에 있는 논리회로는 τ1라고 표시되는 시간 지연을 갖는다. 그리고, 각 인터페이스 래치의 시간 지연을 τ1라고 하면, 선형 파이프라인의 클럭기간을 다음 식과 같이 나타낼 수 있다.
클럭 기간의 역수는 파이프라인 프로세서의 주파수 f=1/τ로 표현된다.
도 5는 선형 파이프라인의 중첩 동작을 설명하기 위한 4-스테이지 파이프라인 프로세서의 공간-시간 다이어그램으로서, X축은 시간을 나타내고, Y축은 공간을 나타내며, Tl는 i번째 태스크(task)내에 있는 j번째 서브태스크(subtask)를 나타낸다.
일단, 파이프가 채워지면 스테이지 수에 독립하는 클럭 기간당 하나의 결과를 출력하게 된다. 이상적으로 k 스테이지를 갖는 선형 파이프라인은 Tk=k+(n-1) 클럭 기간내에 n 태스크를 처리할 수 있는데, 여기서 k 사이클은 파이프라인을 채우거나 첫 번째 태스크의 수행을 완료하기 위해 사용되며, n-1 사이클은 나머지 n-1 태스크들을 완료하기 위해 요구된다. 상기와 같은 수의 태스크들은 Tl=n*k 시간 지연내에서 동일 기능을 갖는 넌-파이프라인(nonpipeline) 프로세서에서 수행될 수 있다.
2) 속도 증가(Speedup)
동일한 넌-파이프라인 프로세서에 대한 k-스테이지 선형 파이프라인 프로세서의 속도 증가(Speedup)는 다음 식과 같이 청의할 수 있다.
선형 파이프라인에 제공할 수 있는 최대 속도 증가는 k이며, 여기서 k는 파이프내의 스테이지 수이다. 이러한 최대 속도 증가는 인스트럭션(instructions) 인터럽트(interrupts), 프로그램 브랜치(program branch) 그리고 다른 요인들 간의 데이터 의존도 때문에 봔벽하게 성취될 수는 없다. 순서없는 인스트럭션 수행에 의해 발생된 대기상태는 많은 파이프라인 사이클을 소모시킨다.
상기 수학식 1에서 클럭 기간을 정의하고, 상기 수학식 2에서 속도 증가를 정의한 후에, 선형 파이프라인 프로세서의 수행 능력을 측정하기 위한 두 개의 단위를 살펴보면 도 5에 도시된 공간-시간 다이어그램내의 시간 간격(time interval)과 스테이지 공간(stage space)이 있는데, 이러한 시간 간격과 스테이지 공간의 산물을 시간-공간 스팬(time-space span)이라고 한다. 주어진 시간-공간 스팬은 비지(busy) 상태 또는 아이들(idle) 상태에 존재할 수 있지만, 두 상태 동시에 존재할 수는 없다. 이러한 개념은 파이프라인의 성능을 측정하는데 사용된다.
3) 효율성(efficliency)
선형 파이프라인의 효율성은 모든 비지(busy) 그리고 아이들(idle) 시간-공간 스팬의 합에 해당하는 전체 시간-공간 스팬에 대한 비지(busy) 시간-공간 스팬의 백분율에 의해 측정된다. 즉, 파이프라인의 효율성은 다음 식과 같이 정의될 수 있다.
여기서, n은 태스크(즉, 인스트럭션)의 수를 나타내며, k는 파이프라인 스테이지의 수를 나타내고 τ는 선형 파이프라인의 클럭 기간을 나타낸다. n → ∞일 때 η → 1이 되는데, 이것은 파이프라인을 통해 진행되는 태스크의 수가 커지면 커질수록 파이프라인의 효율성이 좋아진다는 것을 의미한다. 그리고, 수학식 2와 수학식 3으로부터 η=Sk/k을 얻어 낼 수 있으며, 이러한 것은 이상적인 속도 증가 k에 대한 실제적인 속도 증가의 비율로서 선형 파이프라인의 효율성을 다른 관점에서 제공한다. 파이프라인의 안정 상태에서 n ≫ k이면, 효율성 η가 1로 접근해야 한다. 그러나, 이러한 이상적인 경우는 프로그램 브랜치, 인터럽트, 데이터 의존도와 다른 요인등 때문에 모든 시간이 유지되지 않는다.
4) 처리량(Throughput)
처리량은 단위 시간당 파이프라인에 의해 완료될 수 있는 결과(태스크)의 수로 정의되는데, 이러한 비율은 파이프라인의 계산 증력을 반영한다. 즉, 처리량은 다음식과 같이 정의된다.
여기서, n은 관찰 기간 kτ+(n-1)τ 동안 진행된 태스크의 총 수와 같다. 이상적인 경우, η → 1일 때 ω=1/τ=f이고, 이것은 선형 파이프라인의 최대 처리량이 주파수와 동일하다는 것을 의미하며, 그 주파수는 클럭 기간당 하나의 출력 결과와 일치한다.
도 6은 종래의 이중 기능 확인 흐름을 갖는 파이프라인의 구조도로서, 종래의 파이프라인 구조는 제 1 기능 유닛 판정수단(100)과; 제 2 기능 유닛 판정수단(200); 인터페이스 수단(300); 및 복수개의 기능 유닛(400-1~400-n)으로 구성되어 있다.
여기서, 상기 제 1 기능 유닛 판정수단(100)은 다수개의 제 1 스테이지(제 1-1 스테이지, 제 1-2 스테이지, 제 1-3 스테이지, 제 1-4 스테이지…)로 구성되어 있고, 상기 제 2 기능 유닛 판정수단(200)도 다수개의 제 2 스테이지(제 2-1 스테이지, 제 2-2 스테이지, 제 2-3 스테이지, 제 2-4 스테이지…)로 구성되어 있으며, 각각의 스테이지는 순차적으로 기능 유닛 선택 동작을 수행하는데, 즉 메모리(도시하지 않음)로부터 입력된 데이터 스트림(기능 유닛 식별자, 데이터로 구성)중 기능 유닛 식별자(Function Unit Identifier : FU Id.)를 추출하여 데이터를 어느 기능 유닛으로 전달할 지에 대해 판단한 후, 인터페이스 수단(300)으로 데이터를 출력한다.
그리고, 상기 인터페이스 수단(300)은 다수개의 버퍼(300-1~300-n)로 구성되어 있으며, 상기 제 1 기능 유닛 판정수단(100) 또는 상기 제 2 기능 유닛 판정수단(200)으로부터 데이터를 입력받아 임시 저장하였다가 복수개의 기능 유닛(400-1~400-n)으로 그 데이터를 전달한다.
또한, 상기 복수개의 기능 유닛(400-1~400-n)중 각각의 기능 유닛은 상기 인터페이스 수단(300)으로부터 데이터를 입력받아 독립적인 기능을 수행한다.
한편, 어플리케이션에 따라 사용 빈도수가 많은 기능 유닛이 존재하게 되는데, 이러한 빈도수는 어플리케이션에 따라 결정되며, 그 빈도수에 따라 기능 유닛을 다양하게 구비할 필요가 있다. 예를 들어 상기 복수개의 기능 유닛(400-1~400-n)중 제 1 기능 유닛(400-1)의 수를 두 개로 한다든지 아니면, 제 3 기능 유닛(400-3)의 수를 세 개로 하는 등이다. 그런데, 상술한 바와 같은 종래의 파이프 라인 구조는 기능 유닛을 단방향으로 갖추고 있기 때문에, 기능 유닛의 수에 따라 상기 제 1 기능 유닛 판정수단(100) 또는 상기 제 2 기능 유닛 판정수단(200)내의 스테이지 수가 증가된다는 문제점이 있다.
이에 본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로, 병렬로 배열된 복수개의 기능 유닛을 양방향으로 구비하고, 다수개의 기능 흐름 파이프라인(Function Flow Pipeline: FFP)내에 있는 다수개의 스테이지에서 기능 유닛 식별자(FU Id.)를 가지고 어느 기능 유닛에 데이터를 전달해야 할 지를 순차적으로 판단하여 적절한 기능 유닛을 선택한 후, 데이터를 양방향의 인터페이스를 통해 전달하므로써 하드웨어의 병렬성을 효율적으로 증가시킨 양방향 기능 확인 흐름을 갖는 파이프라인 구조를 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 양방향 기능 확인 흐름을 갖는 파이프라인 구조는, 입력된 데이터 스트림으로부터 기능 유닛 식별자를 추출하에 데이터를 어느 기능 유닛으로 전달할 지에 대해 결정한 후, 데이터를 출력하는 제 1 기능 유닛 판정수단, 제 2 기능 유닛 판정수단 및 제 3 기능 유닛 판정수단과; 상기 제 1 기능 유닛 판정 수단과 상기 제 2 기능 유닛 판정 수단으로부터 데이터를 입력받아 버퍼링을 수행하는 제 1 인터페이스 수단; 상기 제 2 기능 유닛 판정 수단과 상기 제 3 기능 유닛 판정 수단으로부터 데이터를 입력받아 버퍼링을 수행하는 제 2 인터페이스 수단; 상기 제 1 인터페이스 수단으로부터 데이터를 입력받아 독립적인 기능을 수행하는 복수개의 제 1 기능 유닛; 및 상기 제 2 인터페이스 수단으로부터 데이터를 입력받아 독립적인 기능을 수행하는 복수개의 제 2 기능 유닛으로 구성된 것을 특징으로 한다.
상기와 같은 본 발명에 따르면 병렬로 배열된 복수개의 기능 유닛을 양방향으로 구비하고, 다수개의 기능 흐름 파이프라인내에 있는 다수개의 스테이지에 기능 유닛 식별자를 가지고 어느 기능 유닛에 데이터를 전달해야 할 지를 순차적으로 판단하여 적절한 기능 유닛을 선택한 후, 데이터를 양방향의 인터페이스를 통해 전달하므로써 하드웨어의 병렬성을 효율적으로 증가시킬 수 있다.
제1도는 산술 파이프라이닝을 설명하기 위한 도면.
제2도는 인스트럭션 파이프라이닝을 설명하기 위한 돈면.
제3도는 프로세서 파이프라이닝을 설명하기 위한 도면.
제4도는 선형 파이프라인 프로세서의 기본 구조도.
제5도는 선형 파이프라인의 중첩 동작을 설명하기 위한 4-스테이지 파이프라인 프로세서의 공간-시간 다이어그램.
제6도는 종래의 이중 기능 확인 흐름을 갖는 파이프라인의 구조도.
제7도는 본 발명에 따른 양방향 기능 확인 흐름을 갖는 파이프라인의 구조도이다.
<도면의 주요부분에 대한 부호의 설명>
100 : 제1기능 유닛 판정수단 100-1~100-n : 다수개의 스테이지
200 : 제2기능 유닛 판정수단 200-1~200-n : 다수개의 스테이지
300 : 인터페이스 수단 300-1~300-n : 다수개의 버퍼
400-1~400-n : 복수개의 기능 유닛 500A : 제1기능 유닛 판정수단
500A-1~500A-n : 다수개의 스테이지
500B : 제2기능 유닛 판정수단 500B-1~500B-n : 다수개의 스테이지
500C : 제3기능 유닛 판정수단 500C-1~500C-n : 다수개의 스테이지
600B : 제1인터페이스 수단 600A-1~600A-n : 다수개의 버퍼
600B : 제2인터페이스 수단 600B-1~600B-n : 다수개의 버퍼
700A-1~700A-n : 복수개의 기능 유닛
700B-1~700B-n : 복수기의 기능 유닛
S : i 번째 스테이지 L : 래치
C : 클럭 Mi: i 번째 메모리 블록
Proc, n : n번째 프로세서 Ti: i 번째 태스크중 j 번째 서브태스크
도 7은 본 발명에 따른 양방향 기능 확인 흐름을 갖는 파이프라인의 구조도로서, 본 발명의 파이프라인 구조는 제 1 기능 유닛 판정수단(500A)과; 제 2 기능 유닛 판정수단(500B); 제 3 기능 유닛 판정수단(500C); 제 1 인터페이스 수단(600A); 제 2 인터페이스 수단(600B); 복수개의 제 1 기능 유닛(700A-1~700A-n); 및 복수개의 제 2 기능 유닛(700B-1~700B-n)으로 구성되어 있다.
여기서, 상기 제 1 기능 유닛 판정수단(500A)은 다수개의 제 1 스테이지(제 1-1 스테이지, 제 1-2 스테이지, 제 1-3 스테이지, 제 1-4 스테이지 … 제 1-n 스테이지)가 직렬로 연결되어 있고, 상기 제 2 기능 유닛 판정수단(500B)도 다수개의 제 2 스테이지(제 2-1 스테이지, 제 2-2 스테이지, 제 2-3 스테이지, 제 2-4 스테이지 … 제 2-n 스테이지)가 직렬로 연결되어 있으며, 또한 상기 제 3 기능 유닛 판정 수단(500C)도 다수개의 제 3 스테이지(제 3-1 스테이지, 제 3-2 스테이지, 제 3-3 스테이지, 제 3-4 스테이지 … 제 3-n 스테이지)가 직렬로 연결되어 있는 파이프 라인 구조들로서 기능 흐름 파이프라인(Function Flow Pipeline: FFP)이라고 부르며, 각각의 스테이지는 순차적으로 기능 유닛 선택 동작을 수행하는데, 즉 메모리(도시하지는 않음)로부터 입력된 데이터 스트림(기능 유닛 식별자, 데이터로 구성)중 기능 유닛 식별자(Function Unit Identifier: FU Id.)를 추출하여 데이터를 어느 기능 유닛으로 전달할 지에 대해 판단한 후, 데이터를 출력한다. 일반적인 파이프라인은 데이터의 처리를 향상시키기 위해 사용하지만, 여기서의 기능 흐름 파이프 라인(FPP)은 데이터의 전달을 위해서 사용한다. 상기 제 1 기능 유닛 판정수단(500A)과 제 3 기능 유닛 판정수단(500C)의 각 스테이지는 한방향으로 데이터를 전달하는 반면, 상기 제 2 기능 유닛 판정수단(500B)의 각 스테이지는 양방향으로 데이터를 전달한다.
그리고, 상기 제 1 인터페이스 수단(600A)은 다수개의 버퍼(600A-1~600A-n)가 병렬 구조로 배열되어 있다. 즉, 제 1-1 버퍼(600A-1), 제 1-2 버퍼(600A-2), 제 1-3 버퍼(600A-3), 제 1-4 버퍼(600A-4) … 제 1-n 버퍼(600A-n: 도시하지 않음)등이 병렬로 배열되어 있다. 또한, 상기 제 2 인터페이스 수단(600B)은 다수개의 버퍼(6000B-1~600B-n)가 병렬 구조로 배열되어 있다. 즉, 제 2-1 버퍼(600A-1), 제 2-2 버퍼(600A-2), 제 2-3 버퍼(600A-3), 제 2-4 버퍼(600A-4) … 제 2-n 버퍼(600B-n: 도시하지 않음)등이 병렬로 배열되어 있다.
한편, 상기 복수개의 제 1 기능 유닛(700A-1~700A-n)과 상기 복수개의 제 2 기능 유닛(700B-1~700B-n)은 레이턴시(Latency) 크기의 순서에 따라 병렬로 배열되어 있는데, 이때 레이턴시는 클럭의 수로 나타나며 클럭의 수가 많이 필요한 기능 유닛부터 순서대로 상단에 배열한다. 상기 복수개의 제 1 기능 유닛(700A-1~700A-n)중 각각의 기능 유닛은 상기 제 1 인터페이스 수단(600A)의 각 버퍼로부터 데이터를 입력받아 독립적인 기능을 수행하고, 상기 복수개의 제 2 기능 유닛(700B-1~700B-n)중 각각의 기능 유닛은 상기 제 2 인터페이스 수단(600B)의 각 버퍼로부터 데이터를 입력받아 독립적인 기능을 수행한다.
이어서, 상기와 같이 구성되는 본 발명의 실시예에 대한 동작을 살펴보기로 한다.
도 7에 도시된 제 1 기능 유닛 판정수단(500A)의 4개의 스테이지 즉, 제 1-1 버퍼(500A-1), 제 1-2 버퍼(500A-2), 제 1-3 버퍼(500A-3) 및 제 1-4 버퍼(500A-4)로 이루어져 있다고 가정하고, 제 2 기능 유닛 판정수단(500B)이 4개의 스테이지 즉, 제 2-1 버퍼(500B-1), 제 2-2 버퍼(500B-2), 제 2-3 버퍼(500B-3) 및 제 2-4 버퍼(500B-4)로 이루어져 있다고 가정하고, 제 3 기능 유닛 판정수단(500B)이 4개의 스테이지 즉, 제 3-1 버퍼(500C-1), 제 3-2 버퍼(500C-2), 제 3-3 버퍼(500C-3) 및 제 3-4 버퍼(500C-4)로 이루어져 있다고 가정하고, 이때 각 스테이지는 입력되는 데이터 스트림으로부터 기능유닛 식별자에 해당하는 비트들을 추출하여 해당 기능 유닛을 판별하는 비트추출 기능을 포함한다.
그리고, 제 1 인터페이스 수단(600A)이 4개의 버퍼, 즉 제 1-1 버퍼(600A-1), 제 1-2 버퍼(600A-2), 제 1-3 버퍼(600A-3), 제 1-4 버퍼(600A-4)로 이루어져 있다고 가정하고, 제 2 인터페이스 수단(600B)이 4개의 버퍼 즉, 제 2-1 버퍼(600B-1), 제 2-2 버퍼(600B-2), 제 2-3 버퍼(600B-3), 제 2-4 버퍼(600B-4)로 이루어져 있다고 가정하고, 이때 각 버퍼는 입력되는 데이터를 각 기능유닛의 동작타이밍에 맞추어 일시적으로 저장하는 기능을 수행한다.
또한, 복수개의 제 1 기능 유닛(700A)이 4개의 기능 유닛 즉, 제 1-1 기능 유닛(700A-1), 제 2-2 기능 유닛(700A-2), 제 1-3 기능 유닛(700A-3), 제 1-4 기능 유닛(700A-4)로 이루어져 있다고 가정하고, 제 2 기능 유닛 판정수단(700B)이 4개의 유닛 즉, 제 2-1 기능 유닛(700B-1), 제 2-2 기능 유닛(700B-2), 제 2-3 기능 유닛(600B-3), 제 2-4 기능 유닛(700B-4)로 이루어져 있다고 가정하자.
이러한 경우, 상위 3 비트 혹은 하위 3 비트로 구성되는 기능 식별자(FU Id.)와 그외 13 비트의 필요한 데이터러 구성된 일련의 16 비트 데이터 스트림이 메모리(도시하지 않음)로부터 입력되는 것을 예로 들 경우, 기능 유닛 식별자(FU Id.)가 '000'인 경우 제 1-1 기능유닛(700A-1), '001' 인 경우 제 1-2 기능유닛(700A-2), '010' 인 경우 제 1-3 기능유닛(700A-3), '011' 인 경우 제 1-4 기능유닛(700A-4), '100' 인 경우 제 2-1 기능유닛(700B-1), '101' 인 경우 제 2-2 기능유닛(700B-2), '110' 인 경우 제 2-3 기능유닛(700B-3), '111'인 경우 제 2-4 기능유닛(700B-4)에 해당하는 데이터로 판단한다.
1) 우선, 메모리(도시하지 않음)로부터 기능 유닛 식별자(FU Id.)와 필요한 데이터로 구성된 일련의 데이터 스트림이 제 1 기능 유닛 판정수단(500A)의 제 1-1 스테이지(500A-1)로 입력되면, 제 1-1 스테이지(500A-1)에서는 3 비트의 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 1-1 기능 유닛(700A-1)에서 필요로 하는 데이터인지에 대해 판단한다. 상기 제 1-1 스테이지(500A-1)에서의 판단결과, 기능 유닛 식별자(FU Id.)가 '000'으로서 입력된 데이터가 상기 제 1-1 기능 유닛(700A-1)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-1 버터(600A-1)로 전달하여 일시적으로 저장시키고, 그렇지 않은 경우에는 다음 제 1-2 스테이지(500A-2)로 넘어간다. 이때, 상기 제 1-1 버퍼(600A-1)로 일시적으로 저장된 데이터는 상기 제 1-1 기능 유닛(700A-1)으로 전달되어 독립된 기능을 수행하게 된다.
제 1-2 스테이지(500A-2)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 1-2 기능 유닛(700A-2)이 필요로 하는 데이터인 지에 대해 판단한다. 상기 제 1-2 스테이지(500A-2)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '001'로서 상기 제 1-2 기능 유닛(700A-2)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-2 버퍼(600A-2)로 전달하여 일시적으로 저장시키고, 그렇지 않은 경우에는 다음 제 1-3 스테이저(500A-3)로 넘어간다. 이때, 상기 제1-2 버퍼(600A-2)에 일시적으로 저장된 데이터는 상기 제 1-2 기능 유닛(700A-2)으로 전달되어 독립된 기능을 수행하게 된다.
제 1-3 스테이지(500A-3)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 1-3 기능 유닛(700A-3)이 필요로 하는 데이터인 지에 대해 판단한다. 상기 제 1-3 스테이지(500A-3)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '010'로서 상기 제 1-3 기능 유닛(500A-3)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-3 버퍼(600A-3)로 전달하여 일시적으로 저장시키고, 그렇지 않은 경우에는 다음 제 1-4 스테이저(500A-4)로 넘어간다. 이때, 상기 제1-2 버퍼(600A-3)에 일시적으로 저장된 데이터는 상기 제 1-3 기능 유닛(700A-3)으로 전달되어 독립된 기능을 수행하게 된다.
마지막으로 제 1-4 스테이지(500A-4)에서는 상기 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 기능 제 1-4 유닛(700A-4)이 필요로 하는 데이터인 지에 대해 판단한다. 상기 제1-3 스테이지(500A-3)에서 넘어온 데이터가 상기 제 1-1, 제 1-, 제 1-3 기능 유닛(700A-1, 700A-2, 700A-3)에서 필요로 하는 데이터가 아닌 경우에는 결국, 기능 유닛 식별자(FU Id.)가 '011'로서 제 1-4 기능 유닛(700A-4)에서 필요로 하는 데이터에 해당하므로 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-4 버퍼(600A-4)로 전달하여 일시적으로 저장한다. 이때, 상기 제 1-4 버퍼(600A-4)에 일시적으로 저장된 데이터는 상기 제 1-4 기능 유닛(700A-4)으로 전달되어 독립된 기능을 수행하게 된다.
2) 한편, 메모리(도시하지 않음)로부터 기능 유닛 식별자(FU Id.)와 필요한 데이터로 구성된 일련의 데이터 스트림이 제 2 기능 유닛 판정수단(500B)의 제 2-1 스테이지(500B-1)로 입력되면, 제 2-1 스테이지(500B-1)에서는 3 비트의 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이타가 제 1-1 기능 유닛(700A-1)에서 필요로 하는 데이터인지 아니면 제 2-1 기능 유닛(700B-1)에서 필요로 하는 데이터인지에 대해 판단한다. 상기 제 2-1 스테이지(500B-1)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '000'로서 입력된 데이터가 상기 제 1-1 기능 유닛(700A-1)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-1 버퍼(600A-1)로 전달하여 일시적으로 저장하고, 기능 유닛 식별자(FU Id.)가 '100'로서 입력된 데이터가 상기 제 2-1 기능 유닛(700B-1)이 필요로 하는 데이터인 경우에는 그 테이터를 제 2 인터페이스 수단(600B)의 제 2-1 버퍼(600B-1)로 전달하여 일시적으로 저장하며, 상기 두 경우에 모두 해당하지 않는 경우에는 다음 제 2-2 스테이지(500B-2)로 넘어간다. 이때, 상기 제 1-1 버퍼(600A-1) 또는 상기 제 2-1 버퍼(600B-1)에 저장된 데이터는 상기 제 1-1 기능 유닛(700A-1) 또는 상기 제 2-1 기능 유닛(700B-1)으로 전달되어 독립된 기능을 수행하게 된다.
제 2-2 스테이지(500B-2)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이타가 제 2-2 기능 유닛(700A-2)에서 필요로 하는 데이터인지 아니면 제 2-2 기능 유닛(700B-2)에서 필요로 하는 데이터인지에 대해 판단한다. 상기 제 2-2 스테이지(500B-2)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '001'로서 입력된 데이터가 상기 제 1-2 기능 유닛(700A-2)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-2 버퍼(600A-2)로 전달하여 일시적으로 저장하고, 기능 유닛 식별자(FU Id.)가 '101'로서 입력된 데이터가 상기 제 2-2 기능 유닛(700B-2)이 필요로 하는 데이터인 경우에는 그 테이터를 제 2 인터페이스 수단(600B)의 제 2-2 버퍼(600B-2)로 전달하여 일시적으로 저장하며, 상기 두 경우에 모두 해당하지 않는 경우에는 다음 제 2-3 스테이지(500B-3)로 넘어간다. 이때, 상기 제 1-2 버퍼(600A-2) 또는 상기 제 2-2 버퍼(600B-2)에 저장된 데이터는 상기 제 1-2 기능 유닛(700A-2) 또는 상기 제 2-2 기능 유닛(700B-2)으로 전달되어 독립된 기능을 수행하게 된다.
제 2-3 스테이지(500B-3)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이타가 제 1-3 기능 유닛(700A-3)에서 필요로 하는 데이터인지 아니면 제 2-3 기능 유닛(700B-3)에서 필요로 하는 데이터인지에 대해 판단한다. 상기 제 2-3 스테이지(500B-3)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '010'로서 입력된 데이터가 상기 제 1-3 기능 유닛(700A-3)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-3 버퍼(600A-3)로 전달하여 일시적으로 저장하고, 기능 유닛 식별자(FU Id.)가 '110'로서 입력된 데이터가 상기 제 2-3 기능 유닛(700B-2)이 필요로 하는 데이터인 경우에는 그 테이터를 제 2 인터페이스 수단(600B)의 제 2-3 버퍼(600B-3)로 전달하여 일시적으로 저장하며, 상기 두 경우에 모두 해당하지 않는 경우에는 다음 제 2-4 스테이지(500B-4)로 넘어간다. 이때, 상기 제 1-3 버퍼(600A-3) 또는 상기 제 2-3 버퍼(600B-3)에 저장된 데이터는 상기 제 1-3 기능 유닛(700A-3) 또는 상기 제 2-3 기능 유닛(700B-3)으로 전달되어 독립된 기능을 수행하게 된다.
마지막으로 제 2-4 스테이지(500B-4)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이타가 제 1-4 기능 유닛(700A-4)에서 필요로 하는 데이터인지 아니면 제 2-4 기능 유닛(700B-4)에서 필요로 하는 데이터인지에 대해 판단한다. 상기 제 2-4 스테이지(500B-4)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '011'로서 입력된 데이터가 상기 제 1-4 기능 유닛(700A-4)이 필요로 하는 데이터인 경우에는 그 데이터를 제 1 인터페이스 수단(600A)의 제 1-4 버퍼(600A-4)로 전달하여 일시적으로 저장하고, 기능 유닛 식별자(FU Id.)가 '111'로서 입력된 데이터가 상기 제 2-4 기능 유닛(700B-4)이 필요로 하는 데이터인 경우에는 그 테이터를 제 2 인터페이스 수단(600B)의 제 2-4 버퍼(600B-4)로 전달하여 일시적으로 저장한다. 이때, 상기 제 1-4 버퍼(600A-4) 또는 상기 제 2-4 버퍼(600B-4)에 저장된 데이터는 제 1-4 기능 유닛(700A-4) 또는 상기 제 2-4 기능 유닛(700B4)으로 전달되어 독립된 기능을 수행하게 된다.
3) 1)에서와 마찬가지로 메모리(도시하지 않음)로부터 기능 유닛 식별자(FU Id.)와 필요한 데이터로 구성된 일련의 데이터 스트림이 제 3 기능 유닛 판정수단(500C)의 제 3-1 스테이지(500C-3)로 입력되면, 제 3-1 스테이지(500C-1)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 2-1 기능 유닛(700B-1)에서 필요로 하는 데이터인 지에 대해 판단한다. 상기 제 3-1 스테이지(500C-1)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '100'로서 입력된 데이터가 상기 제 1-2 기능 유닛(700B-1)이 필요로 하는 데이터인 경우에는 그 데이터를 제 2 인터페이스 수단(600B)의 제 2-1 버퍼(600B-1)로 전달하여 일시적으로 저장하고, 그렇지 않은 경우에는 다음 제 3-2 스테이지(500C-2)로 넘어간다. 이때, 상기 제 2-1 버퍼(600C-1)에 저장된 데이터는 상기 제 2-1 기능 유닛(700C-1)으로 전달되어 독립된 기능을 수행하게 된다.
제 3-2 스테이지(500C-2)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 2-2 기능 유닛(700C-2)이 필요로 하는 데이터인 지에 대해 판단한다. 상기 제 3-2 스테이지(500C-2)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '101'로서 상기 제 2-2 기능 유닛(700C-2)이 필요로 하는 데이터인 경우에는 그 데이터를 제 2 인터페이스 수단(600B)의 제 2-2 버퍼(600B-2)로 전달하여 일시적으로 저장하고, 그렇지 않은 경우에는 다음 제 3-3 스테이지(500C-3)로 넘어간다. 이때, 상기 제 2-2 버퍼(600B-2)에 저장된 데이터는 상기 제 2-2 기능 유닛(700B-2)으로 전달되어 독립된 기능을 수행하게 된다.
제 3-3 스테이지(500C-3)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 2-3 기능 유닛(700B-3)이 필요로 하는 데이터인 지에 대해 판단한다. 상기 제 3-3 스테이지(500C-3)에서의 판단 결과, 기능 유닛 식별자(FU Id.)가 '110'로서 상기 제 2-3 기능 유닛(700C-3)이 필요로 하는 데이터인 경우에는 그 데이터를 제 2 인터페이스 수단(600B)의 제 2-3 버퍼(600B-3)로 전달하여 일시적으로 저장하고, 그렇지 않은 경우에는 다음 제 3-4 스테이지(500C-4)로 넘어간다. 이때, 상기 제 2-3 버퍼(600B-3)에 저장된 데이터는 상기 제 2-3 기능 유닛(700B-3)으로 전달되어 독립된 기능을 수행하게 된다.
마지막으로 제 3-4 스테이지(500C-4)에서는 기능 유닛 식별자(FU Id.)를 분석하여 입력된 데이터가 제 2-4 기능 유닛(700B-4)이 필요로 하는 데이터인 지에 대해 판단한다. 상기 제 3-3 스테이지(500C-3)에서 넘어온 데이터가 상기 제 2-1, 제 2-2, 제 2-3 기능 유닛(700B-1, 700B-2, 700B-3)에서 필요로 하는 데이터가 아닌 경우에는 결국, 기능 유닛 식별자(FU Id.)가 '111'로서 제 2-4 기능 유닛(700B-4)에서 필요로 하는 데이터에 해당하므로 그 데이터를 제 2 인터페이스 수단(600B)의 제 2-4 버퍼(600B-4)로 전달하여 일시적으로 저장한다. 이때, 상기 제 2-4 버퍼(600B-4)으로 전달되어 독립된 기능을 수행하게 된다.
한편, 4개의 제 1 기능 유닛(700A-1, 700A-2, 700A-3, 700A-4)과 4 개의 제 2 기능 유닛(700A-1, 700A-2, 700A-3, 700A-4)이 동일한 레이턴시(Latency) 즉, 동일한 클럭의 수를 필요로 한다면, 제 1-4 기능 유닛(700A-1) 또는 제 2-4 기능 유닛(700B-4)은 제 1-1 기능 유닛(700A-1) 또는 제 2-1 기능 유닛(700A-1)보다 항상 3개의 스테이지 후에 동작을 수행하게 되므로 문제가 발생할 수 있다.
상기에서 서술된 실시예는 모든 점에서 예시에 불과한 것이고, 이를 한정적으로 해석해서는 안되며, 단지 본 발명의 진정한 정신 및 범위내에서 존재하는 변형예는 모두 본 발명의 청구 범위에 속하는 것이다.
이상에서 살펴본 바와 같이 본 발명에 따르면 병렬로 배열된 복수개의 기능 유닛을 양방향으로 구비하고, 다수개의 기능 흐름 파이프라인내에 있는 다수개의 스테이지에서 기능 유닛 식별자를 가지고 어느 기능 유닛에 데이터를 전달해야 할 지를 순차적으로 판단하여 적절한 기능 유닛을 선택한 후, 데이터를 양방향의 인터페이스를 통해 전달하므로써 하드웨어의 병렬성을 효율적으로 증가시켜 어플리케이션의 요구를 충족시킬 뿐만 아니라 동시에 하드웨어적인 제한을 극복할 수 있다는데 그 효과가 있다.
Claims (5)
- 다수개의 스테이지가 직렬로 연결되며, 각 스테이지에서는 순차적으로 입력된 데이터 스트림으로부터의 기능 유닛 식별자를 추출하여 데이터를 어느 기능 유닛으로 전달할 지에 대해 결정한 후, 전달할 데이터를 한방향으로 출력하는 제 1 기능 유닛 판정수단(500A); 다수개의 스테이지가 직렬로 연결되며, 각 스테이지에서는 입력된 데이터 스트림으로부터 기능 유닛 식별자를 추출하여 데이터를 어느 기능 유닛으로 전달할 지에 대해 결정한 후, 전달할 데이터를 양방향으로 출력하는 제 2 기능 유닛 판정수단(500B); 다수개의 스테이지가 직렬로 연결되며, 각 스테이지에서는 입력된 데이터 스트림으로부터 기능 유닛 식별자를 추출하여 데이터를 어느 기능 유닛으로 전달할 지에 대해 결정한 후, 전달할 데이터를 한방향으로 출력하는 제 3 기능 유닛 판정수단(500C); 상기 제 1 기능 유닛 판정 수단(500A)과 상기 제 2 기능 유닛 판정 수단(500B)으로부터 데이터를 입력받아 해당 기능유닛에서의 동작 타이밍에 따라 일시적으로 저장하는 제 1 인터페이스 수단(600A); 제 2 기능 유닛 판정 수단(500B)과 상기 제 3 기능 유닛 판정 수단(500C)으로부터 데이터를 입력받아 해당 기능유닛에서의 동작 타이밍에 따라 일시적으로 저장하는 제 2 인터페이스 수단(600B); 상기 제 1 인터페이스 수단(600A)으로부터 데이터를 입력받아 독립적인 기능을 수행하는 복수개의 제 1 기능 유닛(700A-1~700A-n); 및 상기 제 2 인터페이스 수단(600B)으로부터 데이터를 입력받아 독립적인 기능을 수행하는 복수개의 제 2 기능 유닛(700B-1~700B-n)으로 구성된 양방향 기능 확인 흐름을 갖는 파이프라인 구조.
- 제1항에 있어서, 상기 제 1 인터페이스 수단(600A)이 병렬 구조로 배열된 다수개의 버퍼(600A-1~600A-n)로 구현된 것을 특징으로 하는 양방향 기능 확인 흐름을 갖는 파이프라인 구조.
- 제1항에 있어서, 상기 제 2 인터페이스 수단(600B)이 병렬 구조로 배열된 다수개의 버퍼(600B-1~600B-n)로 구현된 것을 특징으로 하는 양방향 기능 확인 흐름을 갖는 파이프라인 구조.
- 제1항에 있어서, 상기 복수개의 제 1 기능 유닛(700A-1~700A-n)이 레이턴시의 크기에 따라 병렬 구조로 배열된 것을 특징으로 하는 양방향기능 확인 흐름을 갖는 파이프 라인 구조.
- 제1항에 있어서, 상기 복수개의 제 2 기능 유닛(700B-1~700B-n)이 레이턴시의 크기에 따라 병렬 구조로 배열된 것을 특징으로 하는 양방향기능 확인 흐름을 갖는 파이프 라인 구조.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960055790A KR100226695B1 (ko) | 1996-11-20 | 1996-11-20 | 양방향 기능 확인 흐름을 갖는 파이프라인 구조 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960055790A KR100226695B1 (ko) | 1996-11-20 | 1996-11-20 | 양방향 기능 확인 흐름을 갖는 파이프라인 구조 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980037091A KR19980037091A (ko) | 1998-08-05 |
KR100226695B1 true KR100226695B1 (ko) | 1999-10-15 |
Family
ID=19482716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960055790A KR100226695B1 (ko) | 1996-11-20 | 1996-11-20 | 양방향 기능 확인 흐름을 갖는 파이프라인 구조 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100226695B1 (ko) |
-
1996
- 1996-11-20 KR KR1019960055790A patent/KR100226695B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980037091A (ko) | 1998-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220107911A1 (en) | Apparatuses, methods, and systems for operations in a configurable spatial accelerator | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
EP1019806B1 (en) | Data processor with parallel decoding and execution of data and address instructions | |
JP3575617B2 (ja) | コンピュータシステム | |
US20190303297A1 (en) | Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator | |
US20190303153A1 (en) | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
US10678724B1 (en) | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator | |
EP0813145B1 (en) | Pipelined instruction dispatch unit in a superscalar processor | |
GB2471067A (en) | Shared resource multi-thread array processor with heterogeneous function blocks | |
GB2287108A (en) | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path | |
US11481223B2 (en) | Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions | |
CN112074810B (zh) | 并行处理设备 | |
KR100226695B1 (ko) | 양방향 기능 확인 흐름을 갖는 파이프라인 구조 | |
Wang et al. | Implementing precise interruptions in pipelined RISC processors | |
US20030172248A1 (en) | Synergetic computing system | |
US20030120883A1 (en) | Electronic processing device and method of pipelining in such a device | |
KR100221326B1 (ko) | 계층 버퍼 구조를 갖는 파이프라인 시스템 | |
US7698535B2 (en) | Asynchronous multiple-order issue system architecture | |
KR100230846B1 (ko) | 이중 기능 흐름 파이프라인 구조 | |
KR100221325B1 (ko) | 스위치를 이용한 이중 기능 흐름 파이프라인 구조 | |
KR100226694B1 (ko) | 복수 파이프라인 구조 및 복수 파이프라이닝 방법 | |
KR19980037092A (ko) | 이중 기능 확인 흐름을 갖는 파이프라인 구조 | |
US11416261B2 (en) | Group load register of a graph streaming processor | |
CN112579168B (zh) | 指令执行单元、处理器以及信号处理方法 | |
KR19980037093A (ko) | 셔플 파이프라인 구조 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120702 Year of fee payment: 14 |
|
LAPS | Lapse due to unpaid annual fee |