KR19980018874A - 파이프라인 방식 프로세서 (processor with pipelining-structure) - Google Patents
파이프라인 방식 프로세서 (processor with pipelining-structure) Download PDFInfo
- Publication number
- KR19980018874A KR19980018874A KR1019970040002A KR19970040002A KR19980018874A KR 19980018874 A KR19980018874 A KR 19980018874A KR 1019970040002 A KR1019970040002 A KR 1019970040002A KR 19970040002 A KR19970040002 A KR 19970040002A KR 19980018874 A KR19980018874 A KR 19980018874A
- Authority
- KR
- South Korea
- Prior art keywords
- unit
- arithmetic
- processor
- comparison
- units
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 17
- 239000000872 buffer Substances 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 28
- 238000000034 method Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 claims description 2
- 238000013500 data storage Methods 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000001351 cycling effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008030 elimination Effects 0.000 description 4
- 238000003379 elimination reaction Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
특히, 슈퍼스케일 아키텍처를 가진 파이프라인 방식 프로세서는 구성 가능한 논리 유니트, 명령 메모리, 디코더 유니트, 인테페이스 수단, 프로그램 가능 구조 버퍼, 정수/어드레스 명령 버퍼, 정수 레지스터 파일의 내용을 연산하기 위한, '프로그램 가능 구조를 가진 기능 유니트'로서 구현된, 멀티플렉서에 의해 접속된 다수의 데이터 접속부를 가진, 멀티플렉서 제어되는 s-패러다임 유니트(s-유니트)를 포함하며, 상기 s-유니트는 프로그램의 실행시간 동안 다이내믹 신규 구성/프로그래밍을 위해 프로그램 가능 하드웨어 구조를 포함하며, 상기 기능 유니트의 내부에, 2개의 입력 버스상의 2개의 오퍼랜드를 산술 및/또는 논리 연산하여 하나의 출력 버스상에 하나의 결과를 생성시키기 위한 다수의 산술 유니트, 2개의 입력 버스 및 하나의 출력 비트를 가진 다수의 비교 유니트, 상기 산술 유니트, 상기 비교 유니트 및 상기 레지스터 파일 사이에 제공되며 다수의 입력 버스 및 하나 또는 2개의 출력 버스를 가진 다수의 멀티플렉서, 및 하나의 입력 비트 및 다수의 출력 비트를 가진 다수의 디멀티플렉서를 포함한다.
Description
본 발명은 구성 가능한 논리 유니트, 명령 메모리, 디코더 유니트 및 인테페이스 수단을 포함하는 특히, 슈퍼스케일 아키텍처를 가진 파이프라인 방식 프로세서에 관한 것이다.
이러한 마이크로 아키텍처는 마이크로 컴퓨터에서 명령 레벨에 대한 최고의 병렬화률을 구현해야 한다.
마이크로 컴퓨터에서 중앙의 산술 유니트는 주로 프로세서로 이루어진다. 상기 프로세서는 이하에서 개별 프로세서, 예컨대 마이크로 프로세서 시스템의 구성 부분이 아니거나 또는 명령 병렬화의 의미에서 어떤 역할도 하지 않는 마이크로 프로세서를 의미한다.
상기 프로세서는 일반적으로 폰-노이만(von Neumann) 모델에 따라 설계된다. 상기 모델은 하바드(Harvard) 모델에서 코드 및 데이터 메모리 영역을 분리하기 위해 사용되는(거기서 상기 메모리는 분리되며 상이한 액세스 경로를 가짐) 반면, 폰-노이만 및 하바드 모델 그리고 그것의 변형예에는 명령 흐름의 엄격한 처리 및 결과 순차성이 적용된다. 상기 모델의 예외는 데이터 흐름에 의해 제어되는 즉, 제어 흐름에 의해 제어되지 않는 데이터 흐름 컴퓨터를 형성한다.
명령 흐름의 순차적 처리를 유지하면서, 처음에는 프로세서 설계의 간소화를 위한 명령 세트의 감소만을 포함했던 소위 RISC-아키텍처의 도입은 프로세서의 시스템 클록 당 하나의 명령에 대한 속도를 진척시켰다. 이것은 프로세서의 마이크로 프로그램을 고정 결선된 하드웨어 및 광범위한 파이프라이닝-조치로 대체함으로써 이루어졌다. 프로세서 내부에서 표면상의 병렬화에도 불구하고, 클록 당 하나의 명령을 가진 최대 명령 레이트 및 처리 및 결과의 순차성이 얻어졌다.
또한, 다이내믹적으로 구성가능한 게이트-어레이를 기술한 미국 특허 제 5 361 373호, 및 간행물 'Highperformance computing using a reconfigurable accelerator' in CONCURRENCY: Practice and Experience, 제 8권 (6), 429 443(1996 , 7-8월)이 선행기술에 속한다. 후자는 프로그램의 특별한 루프를 신속하게 처리하기 위해 프로그램 시작 시점(!)에서 완전히 로딩되는 재구성가능한 산술-논리 유니트(rALU)를 포함하는 순수한 코프로세서를 기술한다. 이것은 컴파일러에서 많은 비용을 필요로 한다. 그것의 완전한 기록 가능성에 의해 상기 계산 유니트는 훨씬 더 복잡한 명령을 받는다. 새로운 컴파일링은 호환성이 없다.
본 발명의 목적은 처리시 보다 큰 병렬화가 이루어짐으로써, 마이크로 컴퓨터가 그것의 처리 속도를 증가시킬 수 있게 하는 것이다.
도 1은 통상의 슈퍼스케일 프로세서의 전형적인 조직을 나타낸 블록도.
도 2는 본 발명에 따른 마이크로아키텍처를 나타낸 블록도.
도 3은 기능 유니트의 기본 구조를 나타낸 블록도.
도 4는 멀티플렉서의 구조를 나타낸 블록도.
도 5는 2개의 코드의 비교.
도 6은 어셈블러 코드의 데이터 흐름 변환.
도 7은 C-소오스 코드.
도 8은 제 1 최적화에서 어셈블러 코드.
도 9는 어셈블링을 위한 제어 그래프.
도 10은 제 2 최적화에서 어셈블러 코드.
도 11은 도 10의 어셈블러 코드의 데이터 흐름 변환.
도 12는 제 3 최적화에서 어셈블러 코드.
*도면의 주요 부분에 대한 부호의 설명*
10, 36: 인터페이스 수단 16: 명령 메모리
18: 디코더 유니트 24: 정수 레지스터 파일
30: 프로그램 가능 구조 버퍼 32: 정수/어드레스 명령 버퍼
30, 58: 멀티플렉서 46: 디멀티플렉서
50: 산술 유니트 52: 비교 유니트
프로세서 부문에서 작년의 최신 개발에서는 클록 당 평균 1 이상의 명령을 가진 처리속도가 얻어진다. RISC 및 CISC 아키텍처(Complex Instruction Set Computer)로서 '수퍼스케일' 프로세서는 순차적 처리 순서를 더 이상 허용하지 않는 속도를 제공한다. 프로세서 내부 구성에서의 광범위한 조치에 의해, 다수의 명령 및 그것에 관련된 동작이 병렬로 이루어질 수 있고, 순차적 처리의 의미에서 결과 및 중단 가능성이 보장된다.
슈퍼스케일 프로세서의 이러한 마이크로 아키텍처의 예는 간행물 Proceedings of the IEEE, 제 83권, 12호, 페이지 1609, James E, Smith의 The Microarchitecture of Superscalar Processors에 제시된다. 상기 간행물은 슈퍼스케일 프로세서의 동작에 대한 개요를 제공한다.
동일한 간행물에서 상기 논문 다음에 이어지는, 페이지 1625의 Compiler Technology for Future Microprocessors, Wen-Mai W. Hwu 등 저에는 관련 컴파일러 기술이 제시된다.
그러나, 모든 최신 기술에서 공통적으로 결과의 순차성 유지와 동일한 의미인 결과 안전성은 명령의 평면에서 처리 병렬화에 의해 생기는 실제 및 가상 장애, 소위 해저드의 검출 및 해결을 포함한다. 실제 해저드는 판독 후 쓰기(RAW)에서 생기는데, 그 이유는 하나의 값이 선행 쓰기 직후 계산을 위한 출력 베이스로서 판독될 수 있기 때문이다. 이러한 시퀀스는 서로 병렬로 처리될 수 없는 반면, 가상 해저드 쓰기 후 판독 및 쓰기 후 쓰기는 소위 레지스터 리네이밍에 의해 제거될 수 있다.
슈퍼스케일 프로세서는 특별하게 설계된 어셈블러 프로그램, 및 최적화된 프로그램을 제공하는 적합한 컴파일러 기술에 의해 그것의 이론적 퍼포먼스를 최상으로 이용하도록 동작될 수 있다.
최대 명령 레이트를 증가시키려는 상기 목적은 청구범위 제 1항의 특징을 가진 마이크로 프로세서에 의해 달성된다. 청구범위 종속항은 바람직한 실시예를 제시한다.
특히, 이하에서는 슈퍼스케일 아키텍처의 노력이 계속되고 프로그램 가능 구조 -구조적 프로그래밍이라고도 함- 의 도입에 의해 개선됨으로써 현재 존재하는 기술의 이용시 현저히 높은 처리 속도가 얻어지는 마이크로 프로세서가 설명된다. 이것을 위해 먼저, 아키텍처를 설명한 다음, 그것으로부터 결과되는 어셈블러 및 컴파일러 조치를 설명한다. 그리고 나서, 몇몇 실시예에서 명령의 강력한 병렬화에 의한 속도 이득을 계산한다.
두번째 장점은 판독 후 쓰기-해저드가 적합한 방식으로 해결될 수 있다는 것이다. 판독 후 쓰기는 부가의 계산 흐름을 유지시키기 위해, 계산 후에 결과가 액세스되어야 한다는 것을 의미한다. 그러나, 하기에 설명된 s-패러다임 유니트의 경우에는 상기 결과가 저장되기 전에 주어지고, 구조 내에서 이미 정확한 값으로 계속 이용될 수 있다. 이것은 지금까지의 변형예에서 저장을 위한 실행 클록의 이득과 동일한 의미이다.
새로운 구조적 조치에 중점을 두며 s-패러다임 컴퓨터, 및 마이크로 프로세서를 동작시키는 s-패러다임 모델을 설명한다.
s-패러다임 모델의 설명
s-패러다임 모델은 기본적으로 임의의 프로세서 내부의 실행 유니트에 적용될 수 있는데, 그 이유는 단지 상기 유니트에서만 von-Neumann-모델과 다르며, von-Neumann-모델의 전형적인 특징인 제어 흐름을 기초로 하는 명령의 실행은 이것과 관련없기 때문이다. 모델의 출력을 명확히 나타내기 위해, 하기에서는 범용성의 제한없이 s-패러다임-모델을 종래 방식의 슈퍼스케일 프로세서와 관련해서 그리고 비교해서 나타낸다.
도 1은 부동 소수점-유니트의 의도적인 생략시 슈퍼스케일 프로세서의 구성을 나타낸다. 컴퓨터의 정수부에 대한 실행 유니트의 하기 특성이 부동 소수점-유니트 1:1로 전송될 수 있다.
프로세서의 내부에서, 정수-레지스터-파일, 기능 유니트 및 리-오더 및 코밋 유니트(re-order and commit unit)는 새로운 유니트, 즉 s-유니트로 대체된다. 상기 유니트는 하기에서 상세히 설명된다. 부가로, 몇몇 다른 유니트에서는 하기에 설명되는 변경이 필요하다. 먼저, 도 1의 동작을 간략히 설명한다.
메모리 인터페이스(10)는 외부 코드 및 데이터 메모리 영역(메인 메모리 L-2-캐시 등. 도시되지 않음)에 대한 접속부를 형성한다. 명령의 측에서 명령은 프리디코딩(predecoding)을 하는 명령 캐시(14)내로 저장된다. 프리디코딩은 후속하는 단계의 보다 신속한 처리를 위해 부가의 정보가 발생되어야 하고, 그렇지 않으면 그것이 생략될 수 있는 경우에 바람직하다. 그 경우에 명령은 프리디코딩을 하는 명령 캐시(14)에 저장된다. 프리디코딩은 후속 단계의 보다 신속한 처리를 위해 부가의 정보가 발생되어야 하는 경우에 바람직하다: 상기 부가정보는 그밖의 경우에는 생략될 수 있다. 그 경우, 명령은 처리 전에 직접 메모리로서 명령 캐시(14)에 및/또는 명령 버퍼(16)에 저장된다. 따라서, 후자의 경우에는 명령이 이미 처리 상태에 놓인다. 도 1은 선행기술에 상응한다.
후속하는 '디코드, 리네임 및 디스패치' 유니트(18)는 슈퍼스케일 아키텍쳐 내부에서 명령을 기능 유니트(22)의 다수의 실행 부분 유니트로 분배하고 정수 레지스터 파일(24)로부터 레지스터에 할당한다. 가상의 해저드를 피하기 위해, 상기 할당은 레지스터 리네이밍에 의해 이루어져야 한다. 기능 유니트(22)는 경우에 따라 데이터 캐시와 긴밀하게 상호작용함으로써, 필요한 오퍼랜드가 로딩될 수 있다. 다수의 명령이 병렬로 실행된 후, 결과가 레지스터내에 놓여, 새로이 배치되거나 또는 특히 유효한 것으로서 특성화되어야 한다(re-order and commit unit).
끝으로, 조건부 및 비조건부 분기(conditional and non-conditional branch)의 처리가 여기에 도시된 부분의 외부에서 실행되는 모델을 설명한다. 이것을 위해 조치, 예컨대 조건부로 실행되는 '분기 예측'이 이루어진다. 상기 분기 예측은 비실행시 지연을 야기시킨다.
도 1에 어둡게 도시된 선행기술에 따른 블록이 본 발명에 따라 도 2에 도시된 바와 같이 다르게 구성된다.
도시된 바와 같이, 프로그램 가능 구조 버퍼(30), 정수/어드레스 명령 버퍼(32), 및 프로그램 가능 구조를 가진 기능 유니트(34)와 정수 레지스터 파일(24)을 포함하는 유니트가 제공된다.
s-패러다임-모델은 하기 4 부류의 기계 명령을 인식한다:
- 제어 흐름을 제어하기 위한 분기 및 점프 명령,
- 레지스터와 메모리 영역 사이의 데이터 전송을 위한 로딩/저장 명령,
- 계산을 위한 산술 및 논리 명령,
- 가장 넓은 의미에서 제어 흐름을 제어하기 위해 사용되는 NO Operation, Wait, Stop 등과 같은 그밖의 명령.
제어 흐름을 제어하기 위한 명령 부류는 지금까지와 같이 그대로 두기 때문에 표준에 따라 슈퍼스케일 컴퓨터에서 실행되는 한편, 로딩/저장 명령 및 산술/논리 명령은 새로운 자리를 차지한다.
로딩/저장 명령은 하나 또는 다수의 로딩/저장 파이프라인에 의해 정수 레지스터 파일(24) 및 데이터 메모리(캐시 36, 메인 메모리) 사이의 데이터 전송을 위해 사용된 다음, 지금까지와 같이 처리되거나, 또는 산술/논리 명령에 부가되어 s-패러다임-모델의 전술한 핵심 부분내로 통합된다. 이것에 대한 결정은 CPU의 시스템 설계자가 한다. 이에 반해, 프로세서의 레지스터들 사이의 데이터 전송을 야기시키는 이동 명령은 기본적으로 상기 모델에 속한다.
산술/논리 명령(및 부가된 로딩/저장 명령)은 그것의 프로그래밍 시퀀스에 따라 연속하는 하드웨어 연산의 구조로 변환된다. 이러한 목적을 위해, 본 발명에 따른 마이크로 컴퓨터에서 기능 유니트는 프로그램 가능 구조 및 고정 결선된 산술/논리 연산(및 경우에 따라 로딩/저장 파이프라인과 같은 액세스 기능)을 제공하고, 이것들은 구조에 의해 서로 연산될 수 있고 구조화의 순서로 처리될 수 있다.
상응하는 동작은 도 3에서 설명된다. 거기서 기능 유니트(22)의 부분 유니트 및 레지스터 파일(24)(도 3에 어둡게 표시됨)은 다수의 데이터 접속부 및 멀티플렉서(40)에 의해 접속된다. 데이터 접속부는 내부 데이터 버스 폭을 가진 버스로 구현되고(예컨대 32 비트), 예외는 비트라인(점선으로 표시됨)으로 구현된 조건 코드를 형성한다. 기능 유니트의 내부에는 5 타입의 부분 유니트가 존재한다:
- 종래의 산술 논리 유니트(ALU)와 혼동되어서는 안되는 산술 유니트(AU, 타입 A)(50; 51). 산술 유니트(AU 50; 51)는 예컨대 2개의 정수를 가산할 수 있는, 구성가능한 하나 또는 소수의 연산을 포함한다. 입력이 적합하게 결선되고 결과가 스위칭 네트워크 내부에서 계속 사용될 수 있으면, 산술 유니트는 결과를 그것의 출력에 제공한다. 산술 유니트(AU 50; 51)는 2개의 입력 버스 및 하나의 출력 버스, 경우에 따라 구성 가능성(연산의 선택, 극단의 경우 ALU에 따라) 및 조건부 비트를 특징으로 한다. 몇몇 경우에, 예컨대 승산의 경우 계산을 가능하게 하기 위해 출력 버스의 폭이 다를 수 있다.
- 멀티플렉서 다음에 접속된 비교 유니트(CoU, 타입 B)(52). 연산의 조건부 실행을 위해, 여기서는 조건 코드 비트가 CoU 52에서 구성가능한 비교에 의해 발생된다. 비교는 3개의 구성 비트를 사용할 때 ,=,,=,!=,==,참 또는 거짓에 설정될 수 있다. CoU는 2개의 입력 버스, 출력 비트 및 구성 가능성을 특징으로 한다.
- AUs 및 CoU의 입력에 전체 처리 폭의 2개의 입력값을 제공하는 멀티플렉서(MulC, 타입 C)(40). 이것을 위해, 멀티플렉서는 소수의 입력 및 2개의 출력으로 구성된 소수의 구성 비트를 필요로 한다. MulC 유니트는 2개의 출력 버스를 특징으로 한다.
- 레지스터 파일(24) 앞에 제공된 멀티플렉서(MulD, 타입 D)(58). 레지스터에 결과치를 제공하기 위해, 단 하나의 출력 버스 및 구성 비트의 절반만이 필요하다. 따라서, MulD는 그것의 출력 라인의 수가 MulC와 다르다.
- 비교(CoU)의 결과를 대응하는 AU에 전달하기 위한 디멀티플렉서(Demul, 타입 E)(46). 소오스를 선택하는 멀티플렉서(58)와는 달리, 목표를 선택한다.
부분 유니트 사이의 접속은 전체적으로 이용될 수 있는 구성 비트의 수에 따라 완전히 또는 부분적으로 실행될 수 있다. 다음 장에 있는 예시 아키텍처에서는 완전한 접속가능성이 나타나고, 그것으로부터 필요한 비트의 수가 계산된다.
본 발명에 따라 구조화가능한 기능 유니트의 의미는 구조를 프로그램의 한 (베이스 또는 슈퍼) 블록에서 기계 명령에 따라 적응시키는 것이다. 상기 블록은 분기 명령을 사용하지 않거나(베이스 블록) 또는 단지 드물게 사용하는(슈퍼 블록) 것을 특징으로 한다. 즉, 제어 흐름에서 결정적으로 또는 적어도 높은 확률로 결정될 수 있는 것을 특징으로 한다. 상기 블록의 문제점 및 어셈블러 및 컴파일러 기술에 대한 그것의 영향에 관한 것은 다음 장 기계 명령...에서 상세히 설명된다.
프로그래밍은 s-패러다임 모델에서 부분 유니트에 대한 구성 비트의 로딩에 의해 이루어진다. 이것은 프로그램 가능 구조 버퍼에 일시 기억되고 블록의 처리시 s-유니트(S)내로 로딩된다. s-유니트는 그것에 의해 상응하게 구조화되고 블록을 처리할 수 있다. 처리는 레지스터 내용 및 경우에 따라 메모리 내용(적합한 로딩/저장-파이프라인이 이용될 수 있는 경우)의 산술 및 논리 연산에만 관련되는 한편, 모든 다른 명령, 특히 로딩/저장 및 제어 흐름 명령은 통상적인 바와 같이 실행된다.
구성 비트는 어셈블러에서 생성되거나(컴파일 시간을 기초로 한 생성), 또는 CPU에서 실행 시간에 기능적으로 확장된 프로그램 가능 구조 버퍼에 의해 생성될 수 있다(실행 시간을 기초로 한 생성).
본 발명에 따른 마이크로 컴퓨터의 실행 유니트의 실시예
고정 결선된 AU(50;51) 및 CoU(52), 및 상기 부분 유니트들 사이의 구성가능한 경로를 가진 s-유니트(S)의 구조는 먼저 멀티플렉서가 상기 구성의 프로그램 가능 소자인지를 결정한다. 특히 AU(50;51)의 고정 결선이 선택됨으로써, 로딩되는 비트의 수가 가급적 적게 유지된다. 유연화의 부가 단계에서 AU(50;51)가 프로그래밍될 수 있다. 즉, NAND-게이트와 논리합 정규형(DNF)과 같은 간단한 구조로 구성되도록 구현될 수 있다. 따라서, 거의 임의의 기능이 AU(50; 51)에 이미 통합될 수 있다.
산술 유니트(50;51)는 예컨대 하기 기능을 포함한다:
- 가산, 감산, 승산, 제산과 같은 산술 연산,
-AND, OR, XOR, NOT, 보수와 같은 논리 연산,
- 좌우로의 산술 또는 논리 시프트와 같은 시프트 기능,
- 입력 비트에 따른 조건부 데이터 전송(2 경로-멀티플렉서, 실행시간에 MulC 및 MulD-부분 유니트와는 다르게 스위칭될 수 있음).
구조, 즉 2가지 타입의 멀티플렉서를 프로그래밍하기 위한 베이스는 RAM-셀에 있다. 이것은 매우 신속한 구성을 보장하는 반면, EEPROM과 같은 다른 기술은 보다 긴 시간을 필요로 하고 프로그램 가능 AU의 사용을 위해 사용될 수 있다. n 비트에 의해 2n경로가 접속되므로, 32 입력의 경우 하나의 MulC에 대해 2 x 5 비트가, 하나의 MulD에 대해 5 비트가 구성을 위해 필요할 것이다. 상기 멀티플렉서의 기본적인 구조는 도 4에 도시된다.
가능한 구체적인 모델 아키텍처에서는 하기 부분 유니트 및 레지스터가 구현된다:
- 조건 코드-비트에 의해 가산을 수행하거나(참) 또는 제 1 워드를 변동없이 통과시키는(거짓) 4개의 가산기(AU),
- 2 비트로 구성가능하며 AND, OR, XOR 및 2-보수 형성을 하는 논리 유니트(AU),
- 승산기(AU),
- 제산기(AU),
- 2개의 비트에 의해 좌우로 그리고 산술적으로/논리적으로 구성되는 시프트-기능 유니트(AU),
- 제어 입력에 있는 하나의 비트에 의해 2개의 입력 버스 중 하나를 출력에 인가시키는 2개의 동적 경로-멀티플렉서(AU). 상기 멀티플렉서는 멀티플렉서 타입 C 또는 D와 혼동되어서는 안되는데, 그 이유는 여기에 제공된 부분 유니트가 선택을 동적으로 접속시키기 때문이다,
- 3개의 비트에 의해 8개의 비교 방식(CoU)(52)으로 구성가능하며 각각 하나의 비트 출력을 가진 6개의 비교 유니트,
- 예컨대 24 물리적 레지스터의 풀(pool)에서 레지스터 리네이밍 마다 식별되는 12개의 논리 레지스터 (R0) 내지 (R11),
- 명령 코드로 코딩된 상수가 블록의 처리 동안 저장되는 4개의 상수 레지스터(C0) 내지 (C3).
이것은 s-유니트(S)의 내부에 총 32개의 접속될 부분을 준다. 완전한 접속 가능성이 요구되면, 멀티플렉서는 5 또는 2 x 5 비트로 구성되어야 한다. 모든 유니트의 접속을 위해, 10개의 타입 C 멀티플렉서, 12개의 타입 D 멀티플렉서 및 6개의 타입 E 디멀티플렉서가 필요하다. 비교 연산에 의한 컨디셔닝이 AU에만 관련된다고 가정되기 때문에, 디멀티플렉서는 구성을 위해 단 3개의 비트를 필요로 한다. 따라서, 구성 비트의 총수(멀티플렉서 및 구성가능한 AU에 대한)가 200 비트 이하이다.
모델은 평가 특성을 가진 별도의 AU에 의해 가능한 플래그의 처리까지 확장될 수 있다. 산술 연산시 오버 플로를 방지하거나 또는 검출하기 위해 충분한 치수의 데이터 버스 및 상응하는 평가 유니트가 필요하다. 상기 데이터 버스 및 평가 유니트는 명확성을 위해 생략한다.
기계 명령, 에셈블러 프로그래밍 및 컴파일러 구성에 대한 s-패러다임 모델의 결과
본 발명에 따른 마이크로 컴퓨터는 ALU의 병렬 인스턴트화를 기초로 하는 슈퍼스케일 아키텍처와 매우 유사하게 동작한다. 상기 아키텍처의 최상 이용을 위해, 어셈블러 코딩의 범주에서 가급적 큰 블록 형성이 중요하다.
여기서 베이스 블록은 예컨대 조건부 분기 명령에 의한 분기를 포함하지 않는 명령의 시퀀스를 의미한다. 이러한 베이스 블록은 종래의 컴파일러 기술에서 비교적 짧기 때문에, 내부 평행성의 이용이 적어진다.
최근에는 Smith의 전술한 간행물에 나타나는 바와 같이, 개선된 이용을 가능하게 하는 다수의 컴파일러 스트래티지가 개발되고 있다. 한 방법은 일반적인 경우에 하나의 루프에서 통과하며 상기 동작과 관련해서 적합한 블록으로 여겨지는 슈퍼 블록을 생성하는 것이다. 결정 비트에 의해 샐행되거나 또는 스킵되는 조건부 명령의 도입이 더 중요해진다. 상기 결정 비트는 비교에 의해 생성된 다음, 제어 흐름을 결정하도록, 즉 경계 조건 하에서 분기를 대체하도록 작용할 수 있다.
이러한 조건부 명령 실행, 즉 예측된 실행(predicated execution)을 사용하기 위한 예는 도 5에 도시된 C 및 어셈블러의 시퀀스에 의해 주어질 수 있다.
상기 예는 종래의 방식으로 레지스터를 비교적 최상으로 이용하면서 조건부 값 할당을 변환시키는 슈우도-CPU에서 나타난다. 그러나, 여기서 발생하는 점프 명령(ble)(branch if less or equal)은 경우에 따라 제어 흐름에서의 분기를 의미하고, 이것은 조건부 명령 실행을 수행 및 이용할 때는 필요치 않다. 여기서, r0 0 이면, 하나의 비트가 레지스터(p1)에 세팅되고, 그밖의 경우에는 삭제되고 조건부 movp-명령이 p1에 관련되며 서로 관여하지 않으므로, 이것이 단 하나의 경로만이 동작될 수 있는 부가실행 하드웨어로 양호하게 변환된다.
간단한 예는 조건부 명령에 의한 가속에 대한 증명으로 간주될 수 없다; 그러나, 전술한 Smith의 간행물과 같은 많은 간행물에서는 상기 기계 명령이 슈퍼스케일 마이크로 프로세서의 실행 유니트 내부의 흐름에 매우 바람직하게 작용하는 것으로 나타났다. 하드웨어로의 변환은 도 6에 어셈블러 코드에 대한 데이터 흐름 변환으로 도시되어 있는 바와 같이, 다이내믹 멀티플렉서 및 비교기에 의해 이루어질 수 있다.
변환은 보다 큰 것에 대해 컨디셔닝된 비교기(60), 및 비교 상에 의해 2개의 흘러 들어오는 데이터 스트림으로부터 선택을 수행하는 다이내믹 멀티플렉서(62)를 상기 실행 블록에 할당함으로써 이루어진다. 로딩/ 저장 명령은 지금까지의 형태로 유지되고 도시되지 않는다. 부가로 비교값, 여기서는 0이 레지스터(C0)(상수에 대한)에 로딩되어야 한다.
본 발명에 따른 마이크로 컴퓨터의 기계 명령 세트에 대해 부가로 하기 명령이 주어진다:
PEQ Dest, 소오스, 목표 비트 (동일)
PNE Dest, 소오스, 목표 비트 (동일하지 않음)
PGE Dest, 소오스, 목표 비트 (크거나 같음)
PGT Dest, 소오스, 목표 비트 (큼)
PLE Dest, 소오스, 목표 비트 (작거나 같음)
PLT Dest, 소오스, 목표 비트 (작음)
조건 비트의 세트에 대한 상기 명령 세트의 확장은 물론 가능하다. 이것과 더불어 상기 조건 비트가 평가될 수 있고, 이것은 조건부 이동 및 산술/논리 명령의 도입에 의해 이루어질 수 있다. 따라서, 이하에서는 본 발명에 따른 마이크로 컴퓨터의 모델 아키텍처에 대해, 모든 이동 명령에 하나의 조건이 주어지고(movp), 조건이 충족되지 않으면 제 1 연산 오퍼랜드가 통과되도록 산술/논리 명령이 실행되는 것으로 가정한다. 하기 연산의 경우에는
addp 목표, 오퍼랜드_1, 오퍼랜드_2, 예측_비트
예측_비트가 삭제되면 오퍼랜드_1가 목표 레지스터내로 로딩되고, 그렇지 않으면 오퍼랜드_1 및 오퍼랜드_2의 합이 로딩된다.
본 발명에 따른 마이크로 컴퓨터에서 스루풋을 증가시키는 부가 방법은 슈퍼스케일 마이크로 컴퓨터에 대한 것에 상응한다. 이것에는 어셈블러 또는 C(고수준 언어에 대한 예로서)에서의 프로그래밍에 대한 것이 속한다:
- 제어 흐름 구조없이 큰 블록을 만들기 위한 명령의 조건부 실행의 이용,
- 최대 리소스까지 루프의 언롤링,
- (컴파일-시간) 레지스터 리네이밍에 의한 의존도 분석 및 의존도의 제거.
이것이 슈퍼스케일 아키텍처에 대한 최적의 것을 야기시킨 후에, 기존의 블록이 재차 분석되고 구조적 프로그래밍으로 변환된다. 이러한 변환은 컴파일 시간에 이루어질 수 있으며, 목표 시스템에서 실리콘을 이용하지 않고 집중적인 분석을 하는 것이 바람직하다. 구조적 프로그래밍은 기존의 의존도 분석에 의해 그리고 특히 제거에 의해 지지됨으로써, 명령이 데이터 흐름으로 그리고 구조로 변환될 수 있다. 이 경우, 상기 구조는 비동기로 디자인할 때 하드웨어 구조화에 불필요한 사이클 또는 피드백을 갖지 않는다.
퍼포먼스 이득은 슈퍼스케일 마이크로 프로세서의 고전적 아키텍처에 비해 2가지 장점을 이용함으로써 얻어진다. 지금까지의 아키텍처내에서 증가된 ALU가 분리됨으로써, 개별 부품이 서로 독립적으로 이용될 수 있다. 프로그램 가능 구조 내부에서 실행 시간은 결과가 한 클록내에서 데이터 흐름 경로와 무관하게 주어질 정도로 짧게 유지된다는 가정하에서, 이것은 평균적으로 보다 양호한 이용 및 보다 짧은 실행 시간을 제공한다.
그러나, s-유니트내에서 실행 시간의 제어 및 측정은 하드웨어 구현의 중심점을 차지한다. 이것에 대해 하기 방법이 제공된다:
- 구조적으로 프로그램 가능한 하드웨어가 설계되고 최대 허용 클록과 매칭됨으로써, 모든 경우에 s-유니트내의 실행 시간은 한 클록 후에 결과가 레지스터에 저장될 수 있도록 설계된다.
- 모든 경우에 비동기적으로 서로 연산되는(모든 경우에 동기화는 레지스터에서 이루어지는데, 그 이유는 의존도의 제거가 필요하기 때문이다) 하드 웨어는 사이클링시 준비 신호를 제공한다. 상기 신호는 레지스터로의 전달을 제어한다. 이러한 형태는 경우에 따라 보다 높은 클록 레이트를 허용한다. 예컨대, 일반적인 경우에는 사이클링을 위해 하나의 클록이 필요하고, 예외의 경우에는 2개의 클록이 필요하다.
이하에서, 예시 프로그램이 분석되고, 변환되며 슈퍼스케일 아키텍처에 대해 최적화된다. 상기 기계 프로그램의 실행시 속도는 본 발명에 따른 마이크로 컴퓨터와 비교해서 표시된다. 상기 예는 결과가 비교될만하게 형성될 수 있도록 하기 위해 J. Smith의 상기 간행물로부터 빼냈다.
예시 프로그램
하드웨어의 구조적 프로그래밍에 의한 병렬화 가능성 및 컴파일러 기술의 상호 작용은 간단한 C-루프에서 증명될 수 있다. 코드 생성을 위해 한편으로는 적어도 12개의 레지스터, 조건부 명령문, 및 모든 능력을 가진 2개의 ALU를 포함하는 슈퍼스케일 마이크로 프로세서를 기초로 하고, 다른 한편으로는 s-유니트의 전술한 모델을 이용한다. 상기 과정에서는 하기 단계가 수행된다:
1. C-소오스 코드가 비-슈퍼스케일 아키텍처에 대해 최적화된 컴파일러에 의해 변환된다.
2. 블록 크기가 조건부 점프를 조건부 명령문으로 대체함으로써 커진다.
3. 각각 2개의 루프가 큰 루프로 통합된다(루프 언롤링).
4. 얻어진 루프에 대해 (컴파일 시간) 레지스터 리네이밍이 의존도 분석에 의해 수행된다.
최적화의 모든 단계에 있어, 지금까지의 구성을 가진 슈퍼스케일 아키텍처와 본 발명에 따른 마이크로 컴퓨터 사이를 비교할 때 최고 단계에 대한 병렬화 정도 또는 필요한 클록의 수가 제시된다.
도 7에는 C-소오스 코드가 도시된다. 프로그램은 할당 루프에서 어레이 a[]에 따른 어레이 b[]에 있으며, 여기서는 특히 판독 후 쓰기 의존도가 분석되어야 한다.
상기 코드에서 관심사는 액세스되는 어드레스의 순서인데, 그 이유는 할당이 루프 b[i] + b[i+1]의 일부에서 이루어지므로, 제 1액세스의 제 2 요소가 제 2 루프의 제 1 요소와 동일하다. 통상의 아키텍처에 대해 설계된 최적화 컴파일러를 가진 C-소오스 코드의 변환은 도 8에 도시된 어셈블러 리스팅을 제공한다.
도 9에 도시된 바와 같은 제어 흐름 그래프는 상기 코드가 통과하는 경로를 나타낸다. 컴파일러 자체가 어셈블러 코드를 최적화하므로, 몇개의 베이스 블록이 생긴다(도 8에 선으로 분리됨). 연속하는 명령(1) 및 (2)은 예컨대 여기에 판독 후 쓰기 해저드가 존재한다는 것을 의미한다: 먼저 r1이 기록된 다음 0과의 비교를 위해 독출된다. 의존도는 병렬 실행을 불가능하게 한다. 실제 사이클에 대한 갭은 병렬 동작을 실행할 수 있는 슈퍼스케일 아키텍처에 관련된다. 하나의 루프의 계산에는 최대 6 사이클이 소요되므로(메인 메모리로의 데이터 전송에 2사이클을 가정하면), 그 부분(then part)에 대해 9개의 명령이 통과할 때 1.5 명령/사이클이 실행된다.
그밖의 부분(else part)에 대한 블록(L4)의 1:1 복사, 명령문의 순서 변경 및 조건부 분기를 메모리 명령의 조건부 실행으로 대체에 의해, 베이스 블록의 확장이 이루어질 수 있다. 관련 에셈블러 리스팅(도 10)은 4 사이클로의 하나의 루프의 가속을 나타낸다(최후의 분기가 정확히 예측된다고 가정할 때).
루프 당 스루풋은 상기 조치에 의해 슈퍼스케일 아키텍처에 있어 2 명령/클록으로 증가된다. s-패러다임-유니트(S)가 임의의 스위칭 네트워크를 하나의 클록내에 처리할 수 있다고 가정하면, 본 발명에 따른 마이크로 컴퓨터에서의 구현은 조건부 값 할당을 포함한 모든 계산에 하나의 클록을 필요로 하고, 루프 당 사이클링이 3 클록으로 단축되며, 스루풋은 2.66 명령/클록이다.
도 11은 s-유니트(S)의 구조를 나타낸다. 외부 메모리와의 통신에 사용되는 로딩/저장 명령도 마찬가지로 유효 어드레스에 대한 산술 계산을 해야한다. 기본적으로 S-유니트의 가산기가 어드레스 가산에 이용될 수 있음에도 불구하고, 이것은 여기에 도시되지 않는다.
여기에 도시된 최적화의 마지막 단계는 2개의 루프 사이클링을 하나로(루프 언롤링) 통합 및 후속하는 의존도 분석 및 제거에 의해 퍼포먼스을 개선시킨다. 이러한 최적화는 2개의 부분 루프의 독립적인 병렬 처리가 가능한 경우, 스루풋을 증가시킨다. 따라서, 상기 방법은 의존도를 제거하기 위해 컴파일-시간 레지스터 리네이밍을 이용한다.
도 12에는 최적화[1]에 따른 결과가 도시된다.
2개의 루프의 병렬 처리에 의해 처리시간이 (이전의) 간단한 루프 당 평균적으로 2 클록으로 감소되고, 3.75 명령/클록의 병렬화가 이루어진다. 이것은 슈퍼스케일 아키텍처에 적용되며, 본 발명에 따른 마이크로 컴퓨터는 구체적인 모델에서(본 발명에 따른 마이크로 컴퓨터의 실행 유니트의 실시예에서 설명됨) 부가의 증가를 제공한다.
어드레스 계산을 도외시하고 2중 루프에서 4번의 가산 및 2번의 조건부 할당이 이루어진다. 상기 리소스는 특히 루프 사이클링에 대한 가산 능력을 가진 모델로 존재한다. 따라서, 스위칭 네트워크가 상기 블록을 클록 동안 안정하게 통과한다는 가정하에, 가산 및 값 할당의 전체 블록이 하나의 클록 동안 수행될 수 있다. 간단한 루프 당 평균 처리시간이 5 명령/클록의 레이트를 나타내는 3 클록이다.
따라서, 전체적으로 구조적 프로그래밍이 첫번째로 절차 프로그램의 중앙 처리 부재, 즉 CPU내로 도입된다. 실행 유니트의 새로운 개념에 대한 제한 하에서, 제한된 리소스를 가진 구체적인 모델이 설계되었다. 상기 모델은 지금까지의 슈퍼스케일 아키텍처에 비해 현저히 개선된 퍼포먼스를 제공하는 것으로 나타났다. 실시예에서 처리시간은 25 내지 33% 단축되었다.
본 발명에 의해 처리시 보다 큰 병렬화가 이루어짐으로써, 마이크로 컴퓨터가 그것의 처리 속도를 증가시킬 수 있다.
Claims (4)
- 구성가능한 논리 유니트, 명령 메모리(16), 디코더 유니트(18) 및 인테페이스 수단(10, 36)을 포함하는 특히, 슈퍼스케일 아키텍처를 가진 파이프라인 방식 프로세서에 있어서,- 논리 유니트로서 작용하는 프로그램 가능 구조 버퍼(30),- 정수/어드레스 명령 버퍼(32),- 데이터 저장 인터페이스 수단(36)과의 직접 통신을 위한 정수 레지스터 파일(24),- 정수 레지스터 파일(24)의 내용을 연산하기 위한, '프로그램 가능 구조를 가진 기능 유니트'(34)로서 구현된, 멀티플렉서를 통해 접속된 다수의 데이터 접속부를 가진, 멀티플렉스 제어되는 s-패러다임 유니트(s-유니트)(30, 34, 32, 24),상기 s-유니트(30, 34, 32, 24)는 프로그램의 실행시간 동안 다이내믹 신규 구성/프로그래밍을 위해 프로그램 가능 하드웨어 구조를 포함하며,상기 기능 유니트(34)의 내부에- 2개의 입력 버스의 2개의 오퍼랜드를 산술 및/또는 논리 연산하여 하나의 출력 버스상에 하나의 결과를 생성시키기 위한 다수의 산술 유니트(50),- 2개의 입력 버스 및 하나의 출력 비트를 가진 다수의 비교 유니트(52),- 상기 산술 유니트(50), 상기 비교 유니트(52) 및 상기 레지스터 파일(24) 사이에 제공되며, 다수의 입력 버스 및 하나 또는 2개의 출력 버스를 가진 다수의 멀티플렉서(40, 58), 및- s-유니트 내부에서 목표 선택시 비교(CoU)의 결과를 산술 유니트(50)에 공급하기 위한, 하나의 입력 비트 및 다수의 출력 비트를 가진 다수의 디멀티플렉서(46)를 포함하는 것을 특징으로 하는 프로세서.
- 제 1항에 있어서, 정수 레지스터 파일(24)로서 또는 이것에 부가해서 적합한 연산을 하는 부동 소수점 레지스터 파일을 포함하는 것을 특징으로 하는 프로세서.
- 제 1항 또는 2항에 있어서, 산술 유니트 및 비교 유니트가 프로그램 실행 동안 명령의 한 블록에 대해 그것의 기능면에서 다이내믹적으로 구성될 수 있고 프로그래밍될 수 있는 것을 특징으로 하는 프로세서.
- 제 1항 내지 3항 중 어느 한 항에 따른 파이프라인 방식 프로세서로 고속 계산을 하기 위한 방법에 있어서,- s-유니트에서 가급적 큰 블록 형성 후에 어셈블러 코딩, 및'결정'-비트에 의해 실행되거나 또는 스킵되는 조건부 명령의 도입의 범주에서- 부분 유니트에 대한 구성 비트가 '프로그램 가능 구조 버퍼'에 일시 기억되고 블록의 처리시 s-유니트내로 로딩되며,상기 결정 비트는 비교에 의해 제어 흐름을 결정하므로, 다이내믹 멀티플렉서(산술 유니트의 서브 타입) 및 비교기에서 최상의 데이터 흐름 변환이 이루어지는 것을 특징으로 하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19634031.4 | 1996-08-23 | ||
DE19634031A DE19634031A1 (de) | 1996-08-23 | 1996-08-23 | Prozessor mit Pipelining-Aufbau |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980018874A true KR19980018874A (ko) | 1998-06-05 |
KR100316078B1 KR100316078B1 (ko) | 2002-01-12 |
Family
ID=7803454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970040002A KR100316078B1 (ko) | 1996-08-23 | 1997-08-22 | 파이프라인방식프로세서 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6061367A (ko) |
EP (1) | EP0825540B1 (ko) |
JP (1) | JPH10105402A (ko) |
KR (1) | KR100316078B1 (ko) |
DE (2) | DE19634031A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100731371B1 (ko) * | 1999-02-15 | 2007-06-21 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0978792A1 (en) * | 1998-08-05 | 2000-02-09 | Italtel s.p.a. | Programmable architecture computer |
DE19843663A1 (de) * | 1998-09-23 | 2000-03-30 | Siemens Ag | Konfigurierbarer Hardware-Block |
DE19843640A1 (de) | 1998-09-23 | 2000-03-30 | Siemens Ag | Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks |
US6237085B1 (en) * | 1998-12-08 | 2001-05-22 | International Business Machines Corporation | Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation |
US7200842B1 (en) * | 1999-02-02 | 2007-04-03 | Sun Microsystems, Inc. | Object-oriented instruction set for resource-constrained devices |
EP1069513A1 (de) * | 1999-07-15 | 2001-01-17 | Infineon Technologies AG | Programmgesteuerte Einheit |
US6754801B1 (en) | 2000-08-22 | 2004-06-22 | Micron Technology, Inc. | Method and apparatus for a shift register based interconnection for a massively parallel processor array |
US6359827B1 (en) | 2000-08-22 | 2002-03-19 | Micron Technology, Inc. | Method of constructing a very wide, very fast distributed memory |
US6754802B1 (en) | 2000-08-25 | 2004-06-22 | Micron Technology, Inc. | Single instruction multiple data massively parallel processor systems on a chip and system using same |
US6912626B1 (en) | 2000-08-31 | 2005-06-28 | Micron Technology, Inc. | Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner |
TW567695B (en) * | 2001-01-17 | 2003-12-21 | Ibm | Digital baseband system |
EP1431872A1 (en) * | 2002-12-19 | 2004-06-23 | Alcatel | A digital signal processor with reconfigurable data path |
US9047094B2 (en) * | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
US8484441B2 (en) * | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
GB2414474A (en) * | 2004-05-24 | 2005-11-30 | Bw Technologies Ltd | Device for purifying fluids, in particular water |
US11150721B2 (en) * | 2012-11-07 | 2021-10-19 | Nvidia Corporation | Providing hints to an execution unit to prepare for predicted subsequent arithmetic operations |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0417861B1 (en) * | 1989-09-12 | 1998-06-10 | Koninklijke Philips Electronics N.V. | Dynamically reconfigurable signal processor and processor arrangement |
US5361373A (en) * | 1992-12-11 | 1994-11-01 | Gilson Kent L | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US5485629A (en) * | 1993-01-22 | 1996-01-16 | Intel Corporation | Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
TW305973B (ko) * | 1995-02-15 | 1997-05-21 | Siemens Ag | |
US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
-
1996
- 1996-08-23 DE DE19634031A patent/DE19634031A1/de not_active Withdrawn
-
1997
- 1997-08-20 JP JP9238917A patent/JPH10105402A/ja not_active Withdrawn
- 1997-08-21 DE DE59710022T patent/DE59710022D1/de not_active Expired - Lifetime
- 1997-08-21 EP EP97114501A patent/EP0825540B1/de not_active Expired - Lifetime
- 1997-08-22 KR KR1019970040002A patent/KR100316078B1/ko not_active IP Right Cessation
- 1997-08-25 US US08/918,282 patent/US6061367A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100731371B1 (ko) * | 1999-02-15 | 2007-06-21 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체 |
Also Published As
Publication number | Publication date |
---|---|
US6061367A (en) | 2000-05-09 |
DE19634031A1 (de) | 1998-02-26 |
EP0825540B1 (de) | 2003-05-07 |
DE59710022D1 (de) | 2003-06-12 |
JPH10105402A (ja) | 1998-04-24 |
EP0825540A1 (de) | 1998-02-25 |
KR100316078B1 (ko) | 2002-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100316078B1 (ko) | 파이프라인방식프로세서 | |
US5958048A (en) | Architectural support for software pipelining of nested loops | |
JP2928695B2 (ja) | 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 | |
US7594102B2 (en) | Method and apparatus for vector execution on a scalar machine | |
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
US5233694A (en) | Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously | |
US8677330B2 (en) | Processors and compiling methods for processors | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
US5884060A (en) | Processor which performs dynamic instruction scheduling at time of execution within a single clock cycle | |
US9329866B2 (en) | Methods and apparatus for adapting pipeline stage latency based on instruction type | |
US7200738B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
US20030120882A1 (en) | Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor | |
US4739470A (en) | Data processing system | |
US11314516B2 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
US20030120900A1 (en) | Apparatus and method for a software pipeline loop procedure in a digital signal processor | |
US5590359A (en) | Method and apparatus for generating a status word in a pipelined processor | |
US20030154469A1 (en) | Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
US20030120905A1 (en) | Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor | |
US20030212881A1 (en) | Method and apparatus to enhance performance in a multi-threaded microprocessor with predication | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
US5841998A (en) | System and method of processing instructions for a processor | |
US20030120899A1 (en) | Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor | |
US20030182511A1 (en) | Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor | |
CN118550545A (zh) | 指令依赖的gpgpu编译器与流水线的处理方法 |
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 | ||
LAPS | Lapse due to unpaid annual fee |