KR20050119125A - 프로세서 - Google Patents

프로세서 Download PDF

Info

Publication number
KR20050119125A
KR20050119125A KR1020057017363A KR20057017363A KR20050119125A KR 20050119125 A KR20050119125 A KR 20050119125A KR 1020057017363 A KR1020057017363 A KR 1020057017363A KR 20057017363 A KR20057017363 A KR 20057017363A KR 20050119125 A KR20050119125 A KR 20050119125A
Authority
KR
South Korea
Prior art keywords
register file
data
processor
type conversion
conversion
Prior art date
Application number
KR1020057017363A
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 KR20050119125A publication Critical patent/KR20050119125A/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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 or 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 or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 매우 긴 인스트럭션 워드(VLIW) 프로세서에 관한 것으로, 이 프로세서는 다수의 실행 유닛(101,103,105)과, 레지스터 파일(109,111,113)과, 실행 유닛과 레지스터 파일을 결합하는 통신 네트워크(117)를 포함한다. 애플리케이션 특정 VLIW 프로세서, 즉 특정 범위의 애플리케이션을 취급하도록 설계된 VLIW 프로세서의 경우에, VLIW 프로세서의 통신 네트워크는 모든 유형의 데이터 변환을 지원할 수 없다. 따라서, 이러한 VLIW 프로세서 상에 실행될 몇몇 애플리케이션에 대해 소정의 데이터 유형 변환은 불가능하다고 판명날 수 있다. VLIW 프로세서의 아키텍쳐에 유형 변환 유닛(107)을 통합함으로써, 임의의 필요로 하는 데이터 유형 변환이 수행될 수 있다. 부분적으로 접속된 네트워크(117)의 경우, 통신 장치(129) 또한 아키텍쳐에 통합되어, 모든 실행 유닛이 유형 변환 유닛에 값을 전달할 수 있고, 또한 유형 변환 유닛이 분배 레지스터 파일의 임의의 세그먼트에 값을 전달할 수 있게 된다.

Description

프로세서{TYPE CONVERSION UNIT IN A MULTIPROCESSOR SYSTEM}
본 발명은 다수의 실행 유닛, 이 실행 유닛에 의해 액세스가능한 레지스터 파일 및 실행 유닛과 레지스터 파일을 결합하는 통신 네트워크를 포함하는 프로세서에 관한 것이다.
높은 성능의 컴퓨팅의 증가에 대한 지속적인 요구로 인해 소정 형태의 동시 프로세싱이 도입되었는데, 예를 들어 병렬법(parallelism)이 프로세서 아키텍쳐에 도입되었다. 높은 성능을 달성함에 있어 널리 사용되는 개념은 인스트럭션 레벨의 병렬법을 도입하는 것인데, 여기서 다수의 인스트럭션을 동시에 다소 실행하는 다수의 실행 유닛이 프로세서 아키텍쳐에 제공된다. 두 개의 주요 개념이 채택되었는데, 하나는 몇몇 프로그램 쓰레드가 실행 유닛에 의해 액세스 가능한 멀티쓰레딩 개념이고, 다른 하나는 실행 유닛의 기능에 대응하는 인스트럭션 묶음이 인스트럭션 세트에 제공되는 매우 큰 인스트럭션 워드(Very Large Instruction Word; VLIW) 개념이다.
매우 큰 인스트럭션 워드(VLIW) 프로세서의 경우에, 다수의 인스트럭션은 소위 VLIW 인스트럭션으로 지칭되는 하나의 긴 인스트럭션으로 패키지화된다. VLIW 프로세서는 다수의 독립적인 실행 유닛을 사용하여 이들 다수의 인스트럭션을 동시에 실행한다. 프로세서는 인스트럭션 레벨 병렬법을 프로그램에 이용하고 따라서 둘 이상의 인스트럭션을 동시에 수행하는 것을 허용한다. 소프트웨어 프로그램이 VLIW 프로세서 상에서 수행되도록 하기 위해, 이 프로그램은 VLIW 인스트럭션 세트로 변환되어야 한다. 컴파일러는 병렬법을 최적화함으로써 프로그램을 수행하는데 필요로 하는 시간을 최소화하도록 한다. 단일 VLIW 인스트럭션에 할당된 인스트럭션은 동시에 수행될 수 있다는 제약하에서 또한 데이터 의존성 제약 하에서 컴파일러는 인스트럭션을 VLIW 인스트럭션으로 조합한다. 인스트럭션 인코딩은 데이터 정적 VLIW 프로세서 또는 시간 정적 VLIW 프로세서 각각에 대해 두 개의 상이한 방식으로 이루어질 수 있다. 데이터 정적 VLIW 프로세서의 경우에, 주어진 데이터 항목에 대해 수행될 주어진 파이프라인의 동작과 관련된 정보는 상이한 VLIW 인스트럭션의 다수의 인스트럭션에 걸쳐 확산되어, 상기 파이프라인의 프로세서를 프로그램에 나타낸다.
가장 높은 레벨의 프로그래밍 언어에서, 다수의 데이터-유형이 사용될 수 있다. 프로그래밍 언어로서 C를 사용하는 프로그램에서, 데이터 유형은 흔히 또 다른 데이터-유형으로 암시적으로 변환되거나 또는 명시적으로 또 다른 데이터 유형으로 바뀌어진다. 프로그램이 실행되는 경우, 실제 유형 변환은 VLIW 프로세서의 네트워크에서 또는 실행 유닛의 출력측에서 수행될 수 있다. 애플리케이션 특정 VLIW 프로세서, 즉 특정 범위의 애플리케이션을 처리하도록 설계된 VLIW 프로세서의 경우에, VLIW 프로세서 또는 실행 유닛의 네트워크는 모든 데이터 유형 변환에 대해 필요로 하는 유형 변환 하드웨어를 제공하지 않을 수 있다. 따라서, 소정의 데이터 유형 변환은 이러한 VLIW 프로세서 상에 실행될 몇몇 애플리케이션에 대해 수행될 수 없다는 것을 알 수 있다.
US 6,460,135 호는 입/출력 실행 유닛, 계산 실행 유닛, 복수의 데이터 레지스터, 인스트럭션 제어기 및 상호접속 구조체를 포함하는 마이크로프로세서를 개시한다. 인스트럭션 제어기는 인스트럭션 워드를 디코딩하고 연산 코드를 입/출력 실행 유닛 또는 계산 유닛에 전송한다. 유형 정보 레지스터는 데이터 레지스터와 연관될 수 있고 정보 레지스터는 데이터 유형 및 대응 데이터 레지스터에 저장된 데이터의 유효 비트 폭을 나타내는 유형 정보를 보유한다. 인스트럭션 워드는 실행 결과의 유형 정보, 즉 데이터 유형 계산에 사용되는 데이터의 유형 정보와는 무관한 유효 비트 폭을 나타낸다. 두 개의 피연산자를 필요로 하는 연산의 실행 동안, 계산 실행 유닛은 두 개의 피연산자의 유형 정보를 비교하고, 불일치하는 경우, 인터럽트가 발생되고 이어서 데이터는 정확한 유형으로 변환되고 이러한 변환은 소프트웨어로 이루어진다. 입/출력 실행 유닛이 입/출력 인스트럭션을 수행해야 하는 경우, 이 유닛은 유형 정보 레지스터에 저장된 유형 정보와 인스트럭션 워드의 유형 정보를 비교한다. 불일치하는 경우, 그 역시 인터럽트가 발생되고 이어서 데이터 또한 정확한 유형으로 변환되고 이러한 변환은 소프트웨어로 이루어진다.
종래의 프로세서의 단점은, 이후에 소프트웨어로 수행되어야 하는 유형 변환을 개시하기 위해 인터럽트가 발생되어야 한다는 것이다. 그 결과, 프로세서의 전체적인 성능은 실질적으로 감소될 수 있다.
도 1은 본 발명에 따른 다수의 실행 유닛을 포함하는 프로세서를 도시하는 도면.
본 발명의 목적은 애플리케이션 특정 멀티프로세서 시스템에서, 특히 이들 시스템의 가요성을 증가시키는 애플리케이션 특정 VLIW 프로세서에서 수행될 수 있는 데이터 유형 변환의 범위를 증가시키는 것이다.
이러한 목적은 앞서 설명한 종류의 프로세서로 달성되는데, 이 프로세서는 복수의 실행 유닛의 실행 유닛과 레지스터 파일 사이에 상기 데이터를 전달하는 경우 데이터의 유형을 변환하는 변환 장치를 더 포함한다. 통신 네트워크가 필요로 하는 데이터 유형 변환을 지원하지 않는 경우, 유형 변환은 변환 장치에 의해 수행될 수 있다. 변환 장치가 넓은 범위의 유형 변환을 수행함으로써, 애플리케이션 특정 멀티프로세서 시스템의 가요성은 증가될 수 있는데, 그 이유는 그 밖의 애플리케이션, 즉 최초 범위의 애플리케이션 밖의 애플리케이션이 멀티프로세서 시스템에서 또한 실행될 수 있기 때문이다.
본 발명의 실시예는 레지스터 파일이 분배 레지스터 파일(distributed register file)이고, 통신 네트워크는 실행 유닛과 분배 레지스터 파일의 선택된 부분을 결합하는 부분적으로 접속된 통신 네트워크인 것을 특징으로 한다. 분배된 레지스터 파일의 장점은 레지스터 파일 세그먼트 당 보다 적은 판독 및 기록 포트를 필요로 하여, 보다 작은 레지스터 파일 대역폭을 야기한다는 것이다. 또한, 분배된 레지스터 파일에서의 레지스터 어드레싱은 중앙 레지스터 파일과 비교해 볼 때 보다 적은 비트를 필요로 한다. 부분적으로 접속된 통신 네트워크는 특히 다수의 실행 유닛의 경우 완전히 접속된 통신 네트워크와 비교해 볼 때 코드 크기 및 전력 소비 측면에서 보다 저가이다.
본 발명의 실시예는 변환 장치는 변환 레지스터 파일 및 변환 유닛을 포함하며, 이 변환 레지스터 파일은 변환 유닛에 의해 액세스가능한 것을 특징으로 한다. 실행 유닛의 결과가 레지스터 파일의, 그러나 상이한 데이터 유형을 갖는 몇몇 레지스터에 기록되어야 하는 경우, 이 데이터는 변환 레지스터 파일에 기록될 수 있다. 이어서, 변환 유닛은 변환 레지스터 파일로부터 데이터를 판독할 수 있고, 이 데이터를 필요로 하는 유형으로 변환할 수 있으며, 그 결과를 각 요청에 대해 적절한 레지스터에 기록할 수 있다.
본 발명의 실시예는 프로세서가 실행 유닛, 변환 유닛, 분배 레지스터 파일 및 변환 레지스터 파일을 결합하는 통신 장치를 더 포함하는 것을 특징으로 한다. 부분적으로 접속된 통신 네트워크의 경우에, 모든 실행 유닛 또는 유형 변환 유닛 출력에서 모든 실행 유닛 또는 유형 변환 유닛 입력으로 통신 경로가 존재한다는 것이 보장될 수 없다. 그 결과, 실행 유닛은 데이터를 변환 유닛에 전달할 수 없다. 통신 장치는 실행 유닛 출력에서 변환 유닛으로 데이터 전송, 또한 변환 유닛에서 실행 유닛 입력으로의 데이터 전송- 이 경우 이것은 통신 네트워크를 통해서는 가능하지 않음 -을 허용한다.
본 발명의 바람직한 실시예는 통신 장치가 모든 유형의 프로그래밍 언어를 지원한다는 것을 특징으로 한다. 이 실시에의 장점은 그 유형과는 상관없이 또한 통신 네트워크 또는 통신 장치 그 자체에 의한 임의의 중간 변환을 필요로 하지 않고 모든 데이터가 데이터 유형 변환을 위해 변환 장치에 전송될 수 있다는 것이다.
본 발명의 실시예는 통신 장치가 모든 실행 유닛, 변환 유닛, 분배 레지스터 파일의 모든 부분 및 변환 레지스터 파일을 결합한다는 것을 특징으로 한다. 이 실시예의 장점은 모든 실행 유닛이 통신 장치를 통해 데이터를 변환 레지스터 파일로 전송할 수 있고, 이 변환 유닛은 항상 통신 장치를 통해 데이터를 모든 레지스터 파일 세그먼트에 전송할 수 있다는 것이다.
본 발명의 실시예는 변환 유닛이 복수의 실행 유닛의 실행 유닛 중 하나의 일부분이라는 것을 특징으로 한다. 이 실시예의 장점은 별도의 실행 유닛이 필요로 하지 않아 부가적인 실리콘 영역 및 통신 접속부를 절약할 수 있다는 것이다.
도 1을 참조하면, 개략적인 블록도가 다수의 실행 유닛(101,103 및 105), 레지스터 파일 세그먼트(109,111,113)를 포함하는 분배된 레지스터 파일을 포함하는 VLIW 프로세서를 도시하고 있다. 프로세서는 또한 변환 장치(135)를 구비한다. 변환 장치(135)는 변환 레지스터 파일(115) 및 유형 변환 유닛(107)을 포함한다. 레지스터 파일 세그먼트(109)는 실행 유닛(101 및 103)에 의해 액세스가능하고, 레지스터 파일 세그먼트(111 및 113)는 실행 유닛(105)에 의해 액세스가능하며 변환 레지스터 파일(115)은 유형 변환 유닛(107)에 의해 액세스가능하다.
프로세서는 또한 실행 유닛(101,103 및 105)과 분배 레지스터 파일 세그먼트(109,111,113)의 선택분과 변환 레지스터 파일(115)을 결합하는 부분적으로 접속된 네트워크(17)를 구비한다. 이 부분적으로 접속된 네트워크(117)는 또한 변환 장치(135)와 선택된 분배 레지스터 파일 세그먼트(109,111 및 113)와 결합한다. 부분적으로 접속된 네트워크(117)는 멀티플렉서(119,121,123,125 및 127)를 포함한다. 프로세서는 특정 범위의 애플리케이션을 취급하고, 부분적으로 접속된 네트워크(117)는 이러한 목적으로 설계되는데, 즉 프로세서의 설계 동안 실행 유닛에서 분배 레지스터 파일 세그먼트로의 접속은 그 실행 유닛이 그 범위 내의 애플리케이션의 실행 동안 값을 레지스터 파일 세그먼트에 기록해야 하는 경우 부분적으로 접속된 네트워크를 통해 이루어진다. 특히, 다수의 실행 유닛의 경우, 모든 실행 유닛을 모든 분배 레지스터 파일 세그먼트로 직접 접속을 통해 접속하는 것은 실리콘 영역 및 멀티플렉싱 오버헤드 측면에서 너무 비용이 많이 들 것이다. 설계 시간 동안 또한 실행 유닛(101,103 및 105) 사이의, 부분적으로 접속된 네트워크(117)의 일분인 접속, 및 유형 변환 유닛(107)과 분배 레지스터 파일 세그먼트(109,111 및 113) 사이의, 부분적으로 접속된 네트워크(117)의 일부인 접속은 고정된다. 부분적으로 접속된 네트워크(117)는 또한 그 자체가 다수의 데이터 유형 변환을 지원하고, 지원되는 그러한 유형 변환은 프로세서의 설계 동안 고정된다.
프로세서에 의한 애플리케이션의 실행 동안, 데이터 유형 변환은 이 프로세서의 의해 실행되어야 할 것이다. 예를 들어, 실행 유닛(101)은 비부호화된 고정된 소수점 수(unsigned fixed point number)의 형태를 갖는 출력을 생성하는데, 이 소수점 수는 16 비트를 포함하며, 그 중 15 비트는 소수점 뒤에 배치되며, 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(111)에 기록되어야 한다. 실행 유닛(105)은 이 데이터 출력을 연산을 위한 입력으로서 사용할 것이나, 이 입력은 비부호화된 고정된 수이어야 하는데, 이 수는 32 비트를 포함하며 그 중 31 비트는 소수점 뒤에 배치된다. 따라서, 데이터의 유형은 변환되어야 할 것이다. 이 경우, 부분적으로 접속된 네트워크는 이러한 데이터 유형 변환을 지원하며, 16 비트를 포함하는 비부호화된 고정된 소수점 수는 멀티플렉서(123)에 의해 32 비트를 포함하는 비부호화된 고정된 소수점 수로 암시적으로 변환된다.
프로세서가 최초에 설계된 범위 밖에 있는 애플리케이션을 실행하는 경우, 필요한 데이터 유형 변환은 프로세서에 의해 암시적으로 수행될 수 없다. 예를 들어, 실행 유닛(103)은 비부호화된 고정된 소수점 수의 형태를 갖는 데이터 출력을 생성하는데, 이 소수점 수는 16 비트를 포함하며, 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(113)에 기록되어야 한다. 실행 유닛(105)은 32비트를 포함하는 부동 소수점 수로서, 이들 데이터를 연산을 위한 입력 데이터로서 필요로 한다. 그러나, 멀티플렉서(125)는 데이터 유형을 비부호화된 고정된 소수점 수에서 부동 소수점 수로 변환할 수 없다. 이 경우, 실행 유닛(103)은 부분적으로 접속된 네트워크(117)를 통해 데이터를 변환 레지스터 파일(115)에 기록한다. 유형 변환 유닛(107)은 레지스터 파일 세그먼트(115)로부터 데이터를 판독하고, 이 유닛은 데이터의 유형을, 전용 인스트럭션을 실행함으로써 비부호화된 고정된 소수점 수를 부동 소수점 수로 변환한다. 이어서, 변환 유닛(107)은 부동 소수의 형태를 갖는 데이터를 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(113)에 기록한다. 이제 데이터는 실행 유닛(105)에 대해 정확한 데이터 유형으로 이용가능하다.
또 다른 가능성은, 프로세서에 대해 최초에 설계된 범위 밖에 있는 애플리케이션의 실행 동안, 실행 결과는 둘 이상의 실행 유닛에 의해 입력 데이터로서 사용되고, 이들 실행 유닛은 상이한 데이터 유형을 필요로 하는 것이다. 동일한 동작을 두 번 수행하고, 상이한 유형을 갖는 출력 결과를 생성하는 것은 실행 유닛이 내부 상태를 포함하는 경우엔 가능하지 않다. 예를 들어, 내부 누적 레지스터를 구비한 곱셈 누적 유닛은 상이한 출력 결과를 야기할 것이다. 예를 들어, 실행 유닛(105)은 32 비트를 포함하는 비부호화된 고정된 소수점 수의 형태를 갖는 출력 데이터를 생성하고, 이들 데이터는 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(109)에 두 번 기록되어야 하는데, 한번은 16 비트를 포함하는 비부호화된 고정된 소수점 수로서, 한번은 32 비트를 포함하는 부동 소수점 수로서 기록되어야 한다. 이어서, 이들 데이터는 제각각 실행 유닛(101 및 103)에 대한 입력 데이터로서 요구된다. 그러나, 부분적으로 접속된 네트워크(117)는 필요로 하는 데이터 유형 변환 모두를 수행할 수 없다. 실행 유닛(105)은 그의 출력 데이터를 부분적으로 접속된 네트워크(117)를 통해 변환 레지스터 파일에 기록한다. 실행 유닛(107)은 변환 레지스터 파일(115)로부터 데이터를 판독하고, 그 데이터를 32 비트를 포함하는 비부호화된 고정된 소수점 수에서 16 비트를 포함하는 비부호화된 고정된 소수점 수로 변환하며, 이 변환된 데이터를 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(109)에 기록한다. 다음으로, 실행 유닛(115)은 변환 레지스터 파일(115)로부터 데이터를 다시 판독하고, 이 데이터를 32 비트를 포함하는 비부호화된 고정된 소수로부터 32 비트를 포함하는 부동 소수로 변환하며, 이 변환된 데이터를 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(109)에 기록한다. 이어서, 이들 데이터는 실행 유닛(101 및 103)에 의해 레지스터 파일 세그먼트(109)로부터 판독될 수 있고 또 다른 프로세싱에 사용될 수 있다.
프로세서 상에서 실행되는 몇몇 애플리케이션에 대해, 실행 유닛(101,103 및 105)으로부터 변환 레지스터 파일(115)로의 데이터 기록, 또는 유형 변환 유닛(107)에서 레지스터 파일 세그먼트(109,111 및 113)로의 데이터 기록은 두 단계 이상을 필요로 할 수 있다. 예를 들어, 실행 유닛(101)은 부동 소수점 수 유형의 출력 데이터를 생성하고, 이 데이터는 비부호화된 고정된 소수점 수로서 레지스터 파일 세그먼트(111)에 기록되어야 하고, 실행 유닛(105)에 의해 수행되는 연산에 대한 입력 데이터로서 사용되어야 한다. 그러나, 부분적으로 접속된 네트워크는 이러한 유형 변환을 지원하지 않는다. 유형 변환은 유형 변환 유닛(107)에 의해 수행될 수 있지만, 실행 유닛(101)은 그의 출력 데이터를 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(115)에 직접 기록할 수 없지만, 또 다른 루트를 통해서는 가능하다. 가능한 또 다른 루트는 실행 유닛(101)이 그의 출력 데이터를 암시적인 데이터 유형 변환없이 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(111)에 기록하는 것이다. 실행 유닛(105)은 레지스터 파일 세그먼트(111)로부터 출력 데이터를 판독하고, 이들 출력 데이터를 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(115)에 기록한다. 이어서, 유형 변환 유닛(107)은 레지스터 파일 세그먼트(115)로부터 출력 데이터를 판독하고 필요로 하는 데이터 유형 변환을 수행한다. 유형 변환 유닛(107)은 그 데이터를 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(111)에 직접 기록할 수 없지만, 또 다른 루트를 통해서는 가능하다. 하나의 가능성은, 유형 변환 유닛(107)이 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(109)에 데이터를 기록하는 것이다. 이어서, 부분적으로 접속된 네트워크(117)를 통해, 레지스터 파일 세그먼트(111)에 데이터를 기록하는 실행 유닛(101)에 의해 레지스터 파일 세그먼트(109)로부터 출력 데이터가 판독된다. 프로그램의 컴파일 동안 데이터가 실행 유닛에 의해 변환 레지스터 파일로 또는 유형 변환 유닛에 의해 레지스터 파일 세그먼트로 직접 기록될 수 없다고 컴파일러가 검출하는 경우, 컴파일러는 또 다른 루트를 결정할 것이며 필요로 하는 부가적인 인스트럭션을 프로그램에 삽입할 것이다.
부분적으로 접속된 네트워크(117)가 요구되는 유형 변환을 수행할 수 없는 경우, 유형 변환 유닛(107)은 이러한 유형 변환을 수행할 수 있고 변환된 데이터를 부분적으로 접속된 네트워크를 통해 적절한 레지스터 파일 세그먼트에 기록할 수 있다. 그 결과, 프로세서는 프로세서에 대해 최초에 설계된 범위 밖의 애플리케이션을 여전히 실질적으로 수행할 수 있어서, 프로세서의 가요성을 증가시킬 수 있다. 이러한 애플리케이션의 컴파일 동안, 컴파일러는 필요로 하는 데이터 유형 변환이 네트워크에 의해 암시적으로 수행될 수 없다는 것을 검출할 것이고, 부분적으로 접속된 네트워크(117)를 통해 데이터를 유형 변환 유닛(107)에 전송하여 이 유형 변환 유닛(107)에 의해 필요로 하는 데이터 유형으로 데이터를 변환하고, 부분적으로 접속된 네트워크(117)를 통해 필요로 하는 레지스터 파일 세그먼트에 변환된 데이터를 전송하는 부가적인 인스트럭션을 프로그램에 도입한다. 유형 변환 유닛(107)에 의해 수행되는 명시적인 유형 변환은 당업자에게 잘 알려져 있는 바와 같이 하나 이상의 연산 수단에 의해 구현될 있다. 예를 들어, 비부호화된 고정된 소수점 수 유형만을 사용하는 경우, 좌측 이동 연산, 우측 이동 연산 및 AND 연산만으로 족할 것이다. 부호화된 고정된 소수점 수 유형의 경우, 부호 비트의 변화를 막기 위해 최상위 비트로서의 비트를 우측 이동 연산의 경우에 더할 수 있다.
또 다른 실시예에서, 통신 네트워크(117)는 완전히 접속된 통신 네트워크일 수 있는데, 즉 모든 실행 유닛(101,103 및 105) 및 유형 변환 유닛(107)이 모든 분배 레지스터 파일 세그먼트(109,111 및 113)와 변환 레지스터 파일(115)에 결합된다. 비교적 소수의 실행 유닛의 경우에, 완전히 접속된 통신 네트워크의 오버헤드는 비교적 적을 것이다.
또 다른 실시예에서, 프로세서는 또한 기능 유닛(101,103 및 105), 유형 변환 유닛(107), 모든 분배 레지스터 파일 세그먼트(109,11 및 113) 및 변환 레지스터 파일(115)을 결합하는 통신 장치(129)를 포함한다. 통신 장치(129)는 부분적으로 접속된 네트워크(117)와 멀티플렉서(119,121,123,125 및 127)를 공유한다. 통신 장치는 실행될 애플리케이션이 기록되는 프로그래밍 언어에 대해 모든 데이터 유형을 지원한다.
몇몇 경우에, 부분적으로 접속된 네트워크(117)는 필요로 하는 유형 변환을 암시적으로 수행할 수 없다는 것이 판명날 수 있다. 그에 더하여, 유형 변환 유닛(107)의 변환 레지스터 파일(115)에 데이터를 기록, 또는 유형 변환 유닛(107)으로부터의 데이터를 레지스터 파일 세그먼트(109,111 및 113)에 기록하는 또 다른 루트는 다수의 단계를 필요로 할 수 있으며 심지어는 존재하지 않는다. 이들 경우에, 통신 장치(129)는 실행 유닛(101,103 및 105), 유형 변환 유닛(107), 분배 레지스터 파일 세그먼트(109,111 및 113) 및 변환 레지스터 파일(115) 간의 값 전달을 허용하나 이것은 부분적으로 접속된 네트워크(117)를 통해서는 가능하지 않다. 이러한 방식으로, 실행 유닛(101,103,105)의 각 출력과 유형 변환 유닛(107) 사이와, 실행 유닛(101,103 및 105)의 각 입력과 유형 변환 유닛(107) 사이의 통신 경로는 존재하도록 보장된다. 예를 들어, 실행 유닛(101)은 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(115)에 직접 결합되지 않지만, 직접적인 결합은 통신 장치(129)를 통해서만 존재한다. 그러나, 가능하다면, 부분적으로 접속된 네트워크(117)를 통한 실행 유닛, 유형 변환 유닛 및 레지스터 파일 간의 직접 통신이 바람직하다.
예를 들어, 실행 유닛(101)은 32 비트를 포함하는 비부호화된 고정된 소수로서 결과 데이터를 생성하고, 이들 데이터는 레지스터 파일 세그먼트(111)에 기록되어 이어서 실행 유닛(105)에 의해 사용되며, 이는 입력 데이터로서 부동 소수의 데이터를 필요로 한다. 실행 유닛(101)은 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(111)에 직접 데이터를 기록할 수 없는데, 그 이유는 그것은 이러한 유형의 데이터 변환을 지원하지 않기 때문이다. 실행 유닛(101)은 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(115)에 출력 데이터를 직접 기록할 수 없는데, 그 이유는 이러한 접속은 존재하지 않기 때문이다. 그에 더하여, 유형 변환 유닛(107)은 부분적으로 접속된 네트워크(117)를 통해 레지스터 파일 세그먼트(111)에 데이터를 또한 직접 기록할 수 없는데, 그 이유는 이러한 접속은 존재하지 않기 때문이다. 컴파일러는 프로그램 컴파일 동안 이들 문제를 검출하고, 통신 장치(129)를 통해 데이터 전송을 결정하며, 이들 데이터 전송을 수행하는 적절한 인스트럭션을 프로그램에 삽입한다. 실행 유닛(101)은 출력 데이터를 통신 장치(129)를 통해 레지스터 파일 세그먼트(115)에 기록한다. 이어서, 유형 변환 유닛(107)은 변환 레지스터 파일(115)로부터 데이터를 판독하고 이 데이터 유형을 부동 소수로 변환한다. 이어서, 유형 변환 유닛(107)은 통신 장치(129)를 통해 데이터를 레지스터 파일 세그먼트(111)에 기록한다. 또 다른 실시예에서, 데이터는 실행 유닛(101,103 및 105)으로부터 부분적으로 접속된 네트워크(117)를 통해 변환 레지스터 파일(115)로 기록될 수 있고 이어서 통신 장치(129)를 통해 유형 변환 유닛(107)에서 레지스터 파일 세그먼트(109, 111 및 113)에 기록될 수 있다. 또 다른 실시예에서, 데이터는 실행 유닛(101,103 및 105)으로부터 통신 장치(129)를 통해 변환 레지스터 파일(115)로 기록될 수 있고 이어서 부분적으로 접속된 네트워크(117)를 통해 유형 변환 유닛(107)에서 레지스터 파일 세그먼트(109, 111 및 113)에 기록될 수 있다.
바람직하게, 통신 장치(129)는 제 1 대기시간(latency)으로 통신하도록 구성되고, 부분적으로 접속된 통신 네트워크(117)는 제 2 대기시간으로 통신하도록 구성되며, 제 1 대기시간은 제 2 대기시간을 초과한다. 이 실시예의 장점은 통신 장치(129)를 통한 통신이 속도-제한 단계가 되지 않도록 방지하여, 프로세서가 최대 클록 주파수로 실행될 수 있게 해준다는 것이다. 또한, 높은 처리량이 달성된다. 보통, 통신 장치(129)는 소정 형태의 공유 통신 메카니즘을 포함한다. 따라서, 통신 장치(129)를 통한 통신은 그의 제어 로직에 의해, 특히 다수의 실행 유닛의 경우에 속도가 느려질 수 있다. 통신 장치를 통해 통신이 각각이 하나의 클록 싸이클로 발생되는 몇 개의 순차적 단계로 나뉘어지게 되면, 하나의 통신 단계의 대기시간을 낮게 유지하게 된다. 이것은 통신 장치를 통한 통신을 막게 되어 프로세서의 클록 주파수를 제한한다. 모든 개별 단계의 대기시간의 합인, 통신 장치를 통한 통신의 총 대기시간은 부분적으로 접속된 통신 네트워크를 통한 통신의 대기시간보다 길게 될 것이다. 그러나, 통신 장치(129)를 통한 통신의 보다 긴 대기시간은 프로세서의 전체적인 성능에 거의 영향을 미치지 않을 것인데, 그 이유는 주요 통신은 부분적으로 접속된 통신 네트워크(117)를 통해 이루어지게 될 것이기 때문이다.
바람직한 실시예에서, 통신 장치(129)는 멀티플렉서(131) 및 전역 버스(133)를 포함하는데, 멀티플렉서는 기능 유닛(101,103 및 105), 유형 변환 유닛(107), 및 전역 버스(133)를 결합하고, 전역 버스(133)는 멀티플렉서(131)와 모든 분배 레지스터 파일 세그먼트(109,11 및 113) 및 변환 레지스터 파일(115)을 결합한다. 다수의 기능 유닛(101,103 및 105), 및 유형 변환 유닛(107)이 전역 버스(133)에 결합되고 이들 기능 유닛 및 유형 변환 유닛은 전역 버스를 시간 다중화하는 반면, 부분적으로 접속된 네트워크(117)는 하니의 실행 유닛 또는 변환 유닛을 하나의 레지스터 파일 세그먼트 또는 변환 레지스터 파일에 결합한다는 점에서, 전역 버스(133)는 부분적으로 접속된 네트워크(117)와는 다르다. 전역 버스의 장점은 실리콘 영역의 측면에서 오버헤드가 완전히 접속된 통신 네트워크에 비교해 볼 때 비교적 낮다는 것이다.
실행 유닛 또는 유형 변환 유닛은 유형 변환 유닛(107)의 경우에서와 같이 하나의 레지스터 파일 세그먼트에, 또는 실행 유닛(105)의 경우에서와 같이 다수의 레지스터 파일 세그먼트에 결합될 수 있고, 또는 다수의 기능 유닛은 기능 유닛(101 및 103)의 경우에서와 같이 하나의 레지스터 파일 세그먼트에 결합될 수 있다. 레지스터 파일 세그먼트는 변환 레지스터 파일(115)의 경우에서와 같이 하나의 실행 유닛에, 또는 레지스터 파일 세그먼트(109)의 경우에서와 같이 다수의 실행 유닛에 결합될 수 있다. 레지스터 파일 세그먼트와 실행 유닛 간의 결합 정도는 실행 유닛이 수행해야 하는 연산의 유형에 따라 달라진다.
도 1에 도시된 실시예에서, 부분적으로 접속된 네트워크(117) 및 통신 장치(129)는 멀티플렉서(119,121,123,125 및 127)와 같은 몇몇 리소스를 공유한다. 다른 실시예에서, 보다 많은 리소스가 공유될 수 있고, 또는 리소스가 공유되지 않는다.
다른 실시예에서, 유형 변환 유닛(107)은 실행 유닛(101,103 및 105)과 이 실행 유닛의 대응 레지스터 파일 세그먼트의 일부인 레지스터 파일 세그먼트(115) 중 하나의 일부일 수 있다.
수퍼스칼라 프로세서는 또한 VLIW 프로세서의 경우에서와 같이 다수의 연산을 동시에 수행할 수 있는 다수의 발행 슬롯을 포함한다. 그러나, 프로세서 하드웨어 그 자체는 어느 연산 의존성이 존재하는 지를 실시간으로 결정하고 리소스 충돌이 발생하지 않도록 하면서 이들 의존성에 기초하여 어느 연산을 동시에 실행할 지를 결정한다. 이 단락에서 설명한 VLIW 프로세서에 대한 실시예의 원리는 또한 수퍼스칼라 프로세서에도 적용된다. 일반적으로, VLIW 프로세서는 수퍼스칼라 프로세서에 비교해 보다 많은 실행 유닛을 구비할 수 있다. VLIW 프로세서의 하드웨어는 수퍼스칼라 프로세서에 비교해 덜 복잡하여, 보다 나은 스케일가능 아키텍쳐를 야기한다. 특히, 실행 유닛의 수 및 각 실행 유닛의 복잡성은 본 발명을 사용하여 달성될 수 있는 이점의 양을 결정할 것이다.
위에서 설명한 실시예는 본 발명을 제한하기보다는 예시적일 뿐이며, 당업자라면 첨부한 청구항의 범주를 벗어나지 않고서 다수의 또 다른 실시예를 설계할 수 있을 것이다. 청구항에서, 괄호 사이에 삽입된 참조 부호는 청구항을 제한하는 것으로 해석되어서는 안된다. "포함하는"이라는 말은 청구항에서 나열된 것 이외의 소자 또는 단계의 존재를 배제하지는 않는다. 소자 앞의 "하나의"라는 단어는 이러한 소자의 복수의 존재를 배제하지 않는다. 몇몇 수단을 열거한 장치 항에서, 이들 몇몇 수단들은 하나 및 동일한 항목의 하드웨어를 통해 구현될 수 있다. 소정의 수단들이 상호 상이한 종속항에 인용된다는 단순한 사실이 이들 측정의 조합이 바람직하게 사용될 수 없다는 것을 나타내지는 않는다.

Claims (7)

  1. 프로세서에 있어서,
    다수의 실행 유닛(101,103,105)과,
    상기 실행 유닛에 의해 액세스가능한 레지스터 파일(109,111,113)과,
    상기 실행 유닛과 상기 레지스터 파일을 결합하는 통신 네트워크(117)
    를 포함하되, 상기 프로세서는 상기 다수의 실행 유닛의 실행 유닛과 상기 레지스터 파일 사이에 데이터를 전송하는 경우 상기 데이터의 유형을 변환하는 변환 장치(135)를 더 포함하는
    프로세서.
  2. 제 1 항에 있어서,
    상기 레지스터 파일(109,111,113)은 분배 레지스터 파일(distributed register file)이고,
    상기 통신 네트워크(117)는 상기 실행 유닛과 상기 분배 레지스터 파일의 선택된 부분을 결합하는 부분적으로 접속된 통신 네트워크인
    프로세서.
  3. 제 2 항에 있어서,
    상기 변환 장치(135)는 변환 레지스터 파일(115) 및 변환 유닛(107)을 포함하되, 상기 변환 레지스터 파일은 상기 변환 유닛에 의해 액세스가능한 프로세서.
  4. 제 3 항에 있어서,
    상기 프로세서는 상기 실행 유닛(101,103,105), 상기 변환 유닛(107), 상기 분배 레지스터 파일(109,111,113) 및 상기 변환 레지스터 파일(115)을 결합하는 통신 장치(129)를 더 포함하는 프로세서.
  5. 제 4 항에 있어서,
    상기 통신 장치(129)는 프로그래밍 언어의 모든 데이터 유형을 지원하는 프로세서.
  6. 제 4 항에 있어서,
    상기 통신 장치(129)는 모든 실행 유닛(101,103,105), 상기 변환 유닛(107), 상기 분배 레지스터 파일(109,111,113)의 모든 부분, 및 상기 변환 레지스터 파일(115)을 결합하는 프로세서.
  7. 제 6 항에 있어서,
    상기 변환 유닛(107)은 상기 다수의 실행 유닛(101,103,105)의 상기 실행 유닛 중 하나의 일부인 프로세서.
KR1020057017363A 2003-03-19 2004-03-17 프로세서 KR20050119125A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03100708.1 2003-03-19
EP03100708 2003-03-19

Publications (1)

Publication Number Publication Date
KR20050119125A true KR20050119125A (ko) 2005-12-20

Family

ID=33016974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057017363A KR20050119125A (ko) 2003-03-19 2004-03-17 프로세서

Country Status (6)

Country Link
US (1) US20060179285A1 (ko)
EP (1) EP1606705A2 (ko)
JP (1) JP2006520957A (ko)
KR (1) KR20050119125A (ko)
CN (1) CN1761941A (ko)
WO (1) WO2004084064A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100947446B1 (ko) * 2002-03-28 2010-03-11 엔엑스피 비 브이 Vliw 프로세서

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727435B (zh) * 2008-10-28 2012-01-25 北京芯慧同用微电子技术有限责任公司 一种超长指令字处理器
KR101700405B1 (ko) 2010-03-22 2017-01-26 삼성전자주식회사 레지스터, 프로세서 및 프로세서 제어 방법
CN108055041B (zh) * 2017-12-22 2021-06-29 苏州中晟宏芯信息科技有限公司 一种数据类型转换电路单元及装置
CN109543845B (zh) * 2018-09-17 2020-04-14 合肥本源量子计算科技有限责任公司 单量子比特逻辑门的转化方法及装置
CN112394989A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 无符号转半精度浮点指令处理装置、方法及相关产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0652521B2 (ja) * 1988-11-30 1994-07-06 株式会社日立製作所 情報処理システム
US5878266A (en) * 1995-09-26 1999-03-02 Advanced Micro Devices, Inc. Reservation station for a floating point processing unit
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US6253311B1 (en) * 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
JP3123047B2 (ja) * 1998-10-02 2001-01-09 日本電気株式会社 マイクロプロセッサ
WO2001042903A1 (fr) * 1999-12-07 2001-06-14 Hitachi, Ltd. Appareil et systeme de traitement de donnees

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100947446B1 (ko) * 2002-03-28 2010-03-11 엔엑스피 비 브이 Vliw 프로세서

Also Published As

Publication number Publication date
US20060179285A1 (en) 2006-08-10
WO2004084064A3 (en) 2005-08-04
EP1606705A2 (en) 2005-12-21
JP2006520957A (ja) 2006-09-14
WO2004084064A2 (en) 2004-09-30
CN1761941A (zh) 2006-04-19

Similar Documents

Publication Publication Date Title
US8458677B2 (en) Generating code adapted for interlinking legacy scalar code and extended vector code
EP0782071B1 (en) Data processor
US7020763B2 (en) Computer processing architecture having a scalable number of processing paths and pipelines
US5748950A (en) Method and apparatus for providing an optimized compare-and-branch instruction
US5537606A (en) Scalar pipeline replication for parallel vector element processing
US20050010743A1 (en) Multiple-thread processor for threaded software applications
CN111767080A (zh) 用于可配置空间加速器中的操作的设备、方法和系统
US20070011441A1 (en) Method and system for data-driven runtime alignment operation
US9213677B2 (en) Reconfigurable processor architecture
US7228401B2 (en) Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
CN111527485B (zh) 存储器网络处理器
KR101780303B1 (ko) 시스템 호출을 위한 강건하고 높은 성능의 명령어들
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US7779240B2 (en) System and method for reducing power consumption in a data processor having a clustered architecture
KR20050119125A (ko) 프로세서
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US7287151B2 (en) Communication path to each part of distributed register file from functional units in addition to partial communication network
CN112379928B (zh) 指令调度方法以及包括指令调度单元的处理器
US6304958B1 (en) Microcomputer having data execution units mounted thereon
CN114327635A (zh) 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
EP4155977A1 (en) Image instruction processing method and apparatus
US20230153114A1 (en) Data processing system having distrubuted registers
JP3102399B2 (ja) データ処理装置及び方法
Biedermann et al. A methodology for invasive programming on virtualizable embedded MPSoC architectures

Legal Events

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