KR101645001B1 - Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법 - Google Patents

Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법 Download PDF

Info

Publication number
KR101645001B1
KR101645001B1 KR1020090013532A KR20090013532A KR101645001B1 KR 101645001 B1 KR101645001 B1 KR 101645001B1 KR 1020090013532 A KR1020090013532 A KR 1020090013532A KR 20090013532 A KR20090013532 A KR 20090013532A KR 101645001 B1 KR101645001 B1 KR 101645001B1
Authority
KR
South Korea
Prior art keywords
instruction
condition
execution
instructions
vliw
Prior art date
Application number
KR1020090013532A
Other languages
English (en)
Other versions
KR20100094214A (ko
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 삼성전자주식회사
Priority to KR1020090013532A priority Critical patent/KR101645001B1/ko
Priority to US12/706,006 priority patent/US8601244B2/en
Publication of KR20100094214A publication Critical patent/KR20100094214A/ko
Priority to US14/064,497 priority patent/US9342480B2/en
Application granted granted Critical
Publication of KR101645001B1 publication Critical patent/KR101645001B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

조건 실행(predicated execution)을 지원하는 VLIW 명령어 생성 장치 및 방법과 생성된 VLIW 명령어를 처리하는 VLIW 프로세서 및 방법이 개시된다. 일 실시예에 따르면 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들이 생성된다. VLIW 프로세서는 인스트럭션 번들을 디코딩하고, 디코딩 결과 추출되는 조건 실행을 나타내는 값에 따라서 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 실행한다.
VLIW, 인스트럭션, 조건 실행, 번들, 인스트럭션 세트 아키텍처

Description

VLIW 명령어 생성 장치 및 그 방법과 VLIW 명령어를 처리하는 VLIW 프로세서 및 그 방법{Apparatus and method for generating VLIW instruction and VLIW processor and method for processing VLIW instruction}
본 발명의 하나 이상의 양상은 인스트럭션 처리에 관한 것으로, 더 상세하게는 VLIW 프로세서에서 실행될 인스트럭션의 처리에 관한 것이다.
VLIW(Very Long Instruction Word, VLIW) 프로세서는 복수의 인스트럭션을 병렬적으로 수행하기 위한 복수의 연산 장치들을 포함하고, 입력된 인스트럭션을 복수의 연산 장치들에 분배하여 전체 인스트럭션 수행 시간을 단축시킬 수 있는 컴퓨터 구조이다. 소프트웨어 프로그램이 VLIW 프로세서 상에서 실행되기 위해, 소프트웨어 프로그램은 다수의 인스트럭션을 하나의 긴 명령, 즉 소위 VLIW 명령어로 변환되어야 한다.
VLIW 프로세서에서 수행될 명령어를 컴파일링하는 컴파일러는 최적 병렬화에 의해 프로그램을 실행하는데 필요한 시간을 최소화하고자 한다. 그러나, 데이터 의존성(data dependency), 분기 명령에 의한 제어종속(control dependency), 자원 충돌(resource conflict) 등에 의해 인스트럭션 병렬화가 제한된다. 그중에서도 대표적인 제한 요인이 분기 명령(branch instruction)이다. 조건 분기 명령인 경우에는 조건을 판정하는 동안 처리시간이 지연되어 지속적인 파이프라인 처리를 방해하는 요인으로 작용한다.
따라서, 분기 명령에 의한 성능 제한을 극복하려는 많은 연구가 진행되고 있는데, 그 중의 하나로서 조건 실행(predicated execution) 방법이 있다. 조건 실행을 지원하는 컴파일러는 분기 명령을 이용하지 않고 조건적으로 실행되는 인스트럭션이 실행되도록 명령어를 컴파일한다. 상세하게는, 조건에 따라서 인스트럭션이 실행 여부를 결정하여, 분기 명령을 제거한다. 예를 들어, 조건부 실행에서 해당 조건이 참(true)이면 그 명령을 실행하고, 그렇지 않으면(false) 그 명령을 실행하지 않는다. 그러나, 이러한 조건 실행을 지원하기 위해서는 비조건부 명령어들(non-predicated instructions)을 포함한 모든 명령어 코드들도 조건부 명령어들(predicated instructions)로 생성되어야 한다.
조건 실행을 지원하는 VLIW 명령어를 효율적으로 생성하는 장치 및 방법이 제안된다.
일 실시예에 따라 생성된 조건 실행을 지원하는 VLIW 명령어를 처리하는 장치 및 방법이 제안된다.
일 양상에 따른, VLIW 명령어 생성 장치는, 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행(predicated execution)을 나타내는 값을 포함하는 인스트럭션 번들을 생성한다.
일 실시예에 따르면, 조건 실행을 나타내는 값은 프리디킷 레지스터 파일의 인덱스일 수 있다. 다른 실시예에 따르면, 조건 실행을 나타내는 값은 컨디션 비트일 수 있다.
다른 양상에 따른 VLIW 명령어 세트 생성 방법은, 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 생성한다.
또 다른 양상에 따른 VLIW 프로세서는 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 페치하는 명령어 페치부; 인스트럭션 번들을 디코딩하는 디코더; 및 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 수행하기 위한 명령어 수행부를 포함하고, 명령어 수행부는 조건 실행을 나타내는 값에 따라서 복수 개의 인스트럭션을 실행한다.
일 실시예에 따르면, 명령어 수행부는, 인덱스별 프리디킷 값을 저장하는 프리디킷 레지스터 파일; 및 인스트럭션 번들에 포함된 프리디킷 레지스터 파일의 인덱스에 의해 지시되는 프리디킷 값에 따라 복수 개의 인스트럭션을 병렬적으로 수행하는 복수 개의 연산 유닛을 포함할 수 있다. 복수 개의 연산 유닛은 프리디킷 레지스터 파일의 인덱스에 의해 지시되는 프리디킷 값이 특정 값으로 설정되는 경우에 복수 개의 인스트럭션을 병렬적으로 수행할 수 있다.
다른 실시예에 따르면, 명령어 수행부는, 컨디션 비트를 저장하는 프로세서 상태 레지스터; 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 프로세서 상태 레지스터에 저장된 컨디션 비트를 비교하는 비교부; 및 비교 결과에 따라 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 수행하는 복수 개의 연산 유닛을 포함한다. 복수 개의 연산 유닛은 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 프로세서 상태 레지스터에 저장된 컨디션 비트가 일치하는 경우 복수 개의 인스트럭션을 병렬적으로 수행할 수 있다.
또 다른 양상에 따른 VLIW 프로세서의 명령어 처리 방법은, 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 페치하는 단계; 인스트럭션 번들을 디코딩하는 단계; 및 디코딩 결과 해석된 조건 실행을 나타내는 값에 따라서 복수 개의 인스트럭션을 병렬적으로 수행하는 단계를 포함한다.
일 실시예에 따르면, 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 VLIW 명령어로 생성하여 VLIW 명령어를 효율적으로 구성할 수 있으며, 생성된 VLIW 명령어를 효율적으로 처리할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 실시예에 따른 VLIW 명령어 생성 장치를 나타내는 블록도이다.
일 실시예에 따른 VLIW 명령어 생성 장치(100)는 메모리(110) 및 컴파일러(120)를 포함한다. 메모리(110)는 외부 메모리로 존재할 수도 있다.
메모리(110)는 일 실시예에 따른 VLIW 명령어를 생성하기 위한 인스트럭션 세트 아키텍처(Instruction Set Architecture, ISA) 인코딩 맵을 저장한다. ISA 인코딩 맵은 각 명령어별 인스트럭션 구조를 정의한다. 전형적으로, 인스트럭션 구조에는 연산 코드, 2개의 피연산자 레지스터 인덱스, 결과 값이 저장될 레지스터 인덱스가 포함되며, 인스트럭션 종류에 따라 세부 요소는 달라질 수 있다.
입력되는 소프트웨어 프로그램을 복수 개의 연산 유닛을 포함하는 VLIW 프로세서에서 수행되도록 하기 위하여, 컴파일러(120)는 다수의 인스트럭션을 VLIW 인스트럭션 번들(bundle)로 변환하여 VLIW 명령어를 생성한다. 번들은 VLIW 프로세서에 병렬적으로 실행되는 n개의 인스트럭션을 의미한다. 컴파일러(120)는 메모리(110)에 저장된 ISA 인코딩 맵을 참조하여 VLIW 명령어(또는 VLIW 인스트럭션 번들)을 생성한다. 생성된 VLIW 명령어는 메모리(110)의 소정 영역에 저장되고, VLIW 프로세서(도시되지 않음)로부터 페치되어 실행될 수 있다.
도 2a 및 도 2b는 종래 기술에 따른 인스트럭션 세트 아키텍처 및 VLIW 명령 어를 간략하게 나타낸 도면이다.
도 2a는 간략화된 ISA 인코딩 맵(10)을 나타낸 것으로, 모든 인스트럭션의 몇 개의 비트가 조건 실행(pred)을 나타내기 위하여 지정(reservation)되어 있음을 나타낸다. 도 2b는 3개의 연산 유닛을 가지는 VLIW 프로세서에서 병렬적으로 수행되기 위한 3개의 인스트럭션을 포함하는 VLIW 명령어(20)를 나타낸다.
예를 들어, 하나의 인스트럭션 비트가 32 비트이고, 조건 실행을 나타내기 위한 값이 5비트를 차지하고 있는 경우를 도 2b에서 VLIW 인스트럭션 번들은 총 96비트이고, 그 중 조건 실행을 나타내는 값을 위해 15비트가 이용된다. 즉, 번들 당 약 15%를 조건 실행을 위한 부분이 차지하고 있다. 그러나, VLIW 프로세서에서 실행되는 명령어의 일부만이 분기 명령에 대응되는 조건 실행이 필요한 데 비하여, 모든 명령어에 조건 실행을 나타내는 값을 위한 부분을 두는 것은 제한된 VLIW 명령어를 사용하는데 있어서 비효율적이다.
일 실시예에 따르면, VLIW 명령어 생성 장치(100)는 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 VLIW 명령어로서 생성한다.
도 3a 및 도 3b는 각각 일 실시예에 따른 VLIW 명령어 구조를 나타낸 도면이다.
도 3a 및 도 3b에 도시된 바와 같이, 일 실시예에 따른 VLIW 명령어는 인스트럭션 단위로 조건 실행을 나타내는 값을 포함하는 도 2b의 VLIW 명령어 구조와 달리 번들 단위로 조건 실행을 나타내는 값을 포함한다.
도 3a는 일 실시예에 따라 조건 실행을 나타내는 값이 프리디킷 레지스터 파일(Predicate Register File, PRF)의 인덱스(pred)로 인코딩된 예를 나타낸다. 프리디킷 레지스터 파일은 인덱스별 프리디킷 값을 저장하고 있으며, 소정의 인덱스가 입력되면 입력된 인덱스에 해당되는 프리디킷 값이 출력되도록 구성된다. 도 3a에 도시된 바와 같이, 일 실시예에 따른 VLIW 명령어는 번들 단위로 포함된 프리디킷 레지스터의 인덱스 및 병렬적으로 수행되기 위한 복수 개의 인스트럭션을 포함한다. 컴파일러는 조건을 계산하는 명령어의 결과값을 PRF에 저장하고, 저장된 결과값을 이용하도록 명령어를 인코딩할 수 있다.
PRF의 인덱스(pred)의 폭(width)는 PRF에 포함된 프리디킷 레지스터의 개수에 따라 정해질 수 있다.
도 3b에는 다른 실시예에 따라 조건 실행을 나타내는 값이 컨디션 비트(condition bit)로 인코딩된 예를 나타낸다. 도 3b에 도시된 바와 같이, 일 실시예에 따른 VLIW 명령어는 번들 단위로 포함된 컨디션 비트 및 병렬적으로 수행되는 복수 개의 인스트럭션을 포함한다. 컨디션 비트를 포함하는 필드의 폭은 컨디션의 개수에 의해 정해질 수 있다.
컨디션 비트는 소정의 조건 명령어(Condition Operation)가 실행되면 생성되는 조건이 수행된 결과 값을 의미한다. 예를 들어, if (a<100) c=0; 이라는 프로그램이 있다면, 조건(a<100)을 계산하기 위한 소정의 명령어에 의하여 생성된 값이 컨디션 비트가 된다. 이 값에 따라서 참이면 c에 0을 넣고, 아니면 c=0은 수행되지 않는다.
프로세서 상태 레지스터(Processor Status Register, PSR)에 저장된 레지스터 값은 프로세서의 상태를 나타내는 복수 개의 플래그, 예를 들어, N(Negative), Z(Zero), C(Carry), O(Overflow)를 포함한다. PSR에서는 소정의 조건 명령어가 수행되면, 이에 따라 플래그들의 값이 결정되도록 정해져 있는데, 이 플래그들의 값이 컨디션 비트에 대응할 수 있다. 예를 들어, EQ 코드의 경우에는 비교 후 같으면 Z 플래그가 설정될 수 있다.
일 실시예에 따르면, PSR의 특정 위치에 조건의 실행 결과를 나타내는 컨디션 비트를 저장하고, 저장된 컨디션 비트와 입력되는 인스트럭션의 컨디션 비트를 비교하여, 비교 결과 일치하는 경우에만 인스트럭션이 수행되도록 할 수 있다.
도 4는 일 실시예에 따른 VLIW 프로세서를 나타내는 블록도이다.
일 실시예예 따른 VLIW 프로세서는 명령어 페치부(410), 디코더(420) 및 명령어 수행부(430)를 포함한다.
명령어 페치부(410)는 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 명령어 메모리(도시되지 않음)로부터 페치한다. 디코더(420)는 인스트럭션 번들을 디코딩한다. 명령어 수행부(430)는 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 수행한다.
명령어 수행부(430)는 조건 실행을 나타내는 값에 따라서 복수 개의 인스트럭션을 실행하거나 실행하지 않는다. 명령어 수행부(430)는 복수 개의 인스트럭션을 병렬적으로 실행하기 위한 복수 개의 연산 유닛 외에, 멀티플렉서, 조건 실행을 나타내는 값에 따라 명령어의 실행 여부를 결정하기 위한 레지스터, 연산 수행 결과를 저장하는 레지스터 파일이 더 포함될 수 있다.
명령어 수행부(430)가 PRF를 포함하고, 조건 실행을 나타내는 값이 PRF의 인덱스로 인코딩된 VLIW 명령어가 페치되는 경우, VLIW 명령어의 디코딩 결과 추출되는 PRF의 인덱스에 따라 PRF에 포함된 프리디킷 값이 선택된다. 선택된 프리디킷 값에 따라서, 명령어 수행부(430)가 명령을 실행하거나 실행하지 않을 수 있다.
이를 위해 연산 유닛들 디스에이블하도록 하거나, 연산 유닛들에 NOP들을 삽입하여 명령을 실행하지 않도록 할 수 있다. 다른 방법으로, 명령어 수행부(430)의 복수의 연산 유닛들은 매 싸이클마다 인스트럭션을 실행하지만, 프리디킷 값에 따라 연산 실행 결과를 저장하기 위한 레지스터 파일(도시되지 않음)로 기록할 지 여부가 결정되도록 할 수 있다. 예를 들어, 프리디킷 값이 1인 경우에는 명령어 수행부(430)는 연산 유닛의 연산 수행 결과를 레지스터 파일에 기록하며, 프리디킷 신호가 0인 경우에는 실제로 아무 연산도 수행되지 않는 경우와 같이 연산 유닛의 연산 수행 결과를 레지스터 파일에 기록하지 않을 수 있다.
명령어 수행부(430)가 프리디킷 레지스터 파일을 포함하지 않는 경우, 프로세서의 상태를 나타내는 프로세서 상태 레지스터(Processor Status Register, PSR)를 이용할 수 있다. 조건 실행을 나타내는 값이 컨디션 비트로 인코딩된 VLIW 명령어가 페치되는 경우, 명령어 수행부(430)는 VLIW 명령어의 디코딩 결과 추출되는 컨디션 비트와 PSR의 특정 위치에 지정된 컨디션 비트를 비교하고, 비교 결과에 따라 명령을 실행하거나 실행하지 않을 수 있다.
구현예에 따라, 명령어 수행부(430)는 복수의 연산 유닛들은 매 싸이클마다 인스트럭션을 실행하지만, 비교 결과에 따라 연산 실행 결과가 레지스터 파일로 기록할 지 여부가 결정되도록 할 수 있다. 예를 들어, VLIW 명령어의 디코딩 결과 추출되는 컨디션 비트와 PSR의 특정 위치에 지정된 컨디션 비트를 비트가 일치하는 경우에는 연산 유닛의 연산 수행 결과가 레지스터 파일에 기록되며, 일치하지 않는 경우에는 연산 유닛의 연산 수행 결과가 레지스터 파일에 기록되지 않을 수 있다.
도 5는 일 실시예에 따른 VLIW 명령어에 따른 연산 유닛의 동작을 나타내는 도면이다.
도 5에서 상위 블록(510)은 조건 분기 인스트럭션의 일 예를 나타낸다. x가 y보다 작은 조건이 만족되면 블록 1의 인스트럭션이 수행되고, 만족되지 않으면 블록 2의 인스트럭션이 수행된다.
하위 블록(520)은 컴파일러에 의해 조건 실행 방법에 따라 2개의 인스트럭션이 병렬적으로 수행될 수 있는 2개의 연산 유닛을 포함하는 VLIW 프로세서에서 이용하기 위하여 생성된 VLIW 명령어를 나타낸다. 조건(condition)에 의해 x와 y를 비교한 결과가 레지스터 p0에 저장된다.
x가 y보다 작은 조건이 만족되면 p0에 저장된 값이 <p0>이 되고, 이 경우 블록 1의 인스트럭션은 실행되고 실행 결과는 레지스터에 저장되고, 블록 2의 인스트럭션은 의미없는 실행이 된다. x가 y보다 작은 조건이 만족되지 않으면 p0에 저장된 값은 <~p0>가 되고, 이 경우 블록 1의 인스트럭션은 의미없는 실행이 되어 결과 값이 레지스터에 기록되지 않으며, 블록 2의 인스트럭션은 실행되고 실행 결과 값 이 레지스터에 저장된다.
도 2b에 도시된 바와 같이 명령어 단위로 조건 실행을 나타내는 값이 포함된 VLIW 번들의 경우에는 VLIW 프로세서의 각 연산 유닛마다 조건 실행을 나타내는 값을 평가하는 과정이 필요하다. 이에 비해, 일 실시예에 따르면, 조건 실행을 나타내는 값이 번들 단위로 포함된 VLIW 번들의 경우에는 VLIW 프로세서에서 각 연산 유닛마다 조건 실행을 나타내는 값을 평가할 필요가 없다.
또한, 모든 인스트럭션이 조건값을 위한 인덱스(pred) 정보 또는 컨디션 비트를 인코딩하기 위한 필드를 지정해 놓지 않아도 되게 때문에, 동일한 너비를 가지는 인스트럭션의 경우 다른 필드 값으로 활용이 가능하다. 일예로, 만약에 절약된 비트 필드를 명령어 코드를 지정하는 비트 필드로 사용할 경우, 더 많은 명령어를 정의하여 사용할 수 있다. 다른 예로는, 절약된 비트 필드를 피연산자를 위한 비트 필드로 사용할 경우, 기존에 사용했던 레지스터 파일보다 더 많은 피연산자용 레지스터를 가지는 레지스터 파일을 사용할 수 있다.
도 6은 다른 실시예에 따른 VLIW 프로세서를 나타내는 블록도이다.
도 6은 VLIW 프로세서에 PRF가 있으며, 조건 실행을 나타내는 값이 PRF의 인덱스인 VLIW 명령어가 페치되는 경우의 VLIW 프로세서를 나타낸다.
VLIW 프로세서(600)는 명령어 메모리(112)로부터 VLIW 명령어를 페치한다. 명령어 메모리(112)는 캐쉬 또는 외부 메모리일 수 있다. VLIW 프로세서(600)는 명령어 페치부(610), 디코더(620) 및 명령어 수행부(630)를 포함한다. 명령어 수행부(630)는, PRF(632) 및 복수 개의 연산 유닛(634, 636)을 포함한다. 도시되지 않았으나, 연산 유닛(634, 636)의 연산 수행 결과 값을 저장하기 위한 레지스터 파일이 더 포함될 수 있다.
명령어 페치부(610)는 조건 실행을 나타내는 값으로 PRF의 인덱스가 번들 단위로 포함된 VLIW 명령어(30)를 페치한다. 디코더(620)는 VLIW 명령어(30)를 디코딩한다.
PRF의 인덱스를 나타내는 값을 인덱스별 프리디킷 값을 저장하는 PRF(632)에 전달하면, 전달된 인덱스를 가지는 프리디킷 값이 선택되어 PRF(632)으로부터 출력된다. 복수 개의 연산 유닛(634, 636)은 인스트럭션 번들에 포함된 PRF(632)의 인덱스에 의해 지시되는 프리디킷 값에 따라 복수 개의 인스트럭션을 병렬적으로 수행한다. 복수 개의 연산 유닛(634, 636)은 PRF(632)의 인덱스에 의해 지시되는 프리디킷 값이 특정 값으로 설정되는 경우에 예를 들어, 프리디킷 값이 0인 경우 복수 개의 인스트럭션을 병렬적으로 수행할 수 있다.
도 7은 또 다른 실시예에 따른 VLIW 프로세서를 나타내는 블록도이다.
도 7은 VLIW가 PRF을 포함하지 않고 조건 실행을 나타내는 값이 컨디션 비트인 VLIW 명령어가 페치되는 경우, 프로세서의 상태를 나타내는 프로세서 상태 레지스터(PSR)를 이용하여 인스트럭션 실행 여부를 결정하는 VLIW 프로세서(700)를 나타낸다.
VLIW 프로세서(700)는 명령어 메모리(114)로부터 VLIW 명령어를 페치한다. 명령어 메모리(114)는 캐쉬 또는 외부 메모리일 수 있다. VLIW 프로세서(700)는 명령어 페치부(710), 디코더(720) 및 명령어 수행부(730)를 포함한다. 명령어 수 행부(730)는, PSR(732), 비교부(734) 및 복수 개의 연산 유닛(736, 738)을 포함한다.
명령어 페치부(710)는 조건 실행을 나타내기 위해 인코딩된 컨디션 비트가 번들 단위로 포함된 VLIW 명령어(40)를 페치한다. 디코더(720)는 VLIW 명령어(40)를 디코딩한다.
VLIW 명령어의 디코딩 결과 추출되는 컨디션 비트 및 PSR(732)의 특정 위치에 지정된 컨디션 비트는 비교부(734)로 전달되고, 비교부(734)는 추출된 컨디션 비트 및 PSR(732)의 특정 위치에 지정된 컨디션 비트를 비교한다. 일 실시예에 따르면, 비교부(734)의 비교 결과 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 컨디션 비트가 일치하는 경우 복수 개의 연산 유닛(736, 738)은 복수 개의 인스트럭션을 병렬적으로 수행한다.
도 8은 일 실시예에 따른 VLIW 명령어 처리 방법을 나타내는 순서도이다.
병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 페치한다(S 810). 인스트럭션 번들을 디코딩한다(S 820). 디코딩 결과 해석된 조건 실행을 나타내는 값에 따라서 복수 개의 인스트럭션을 병렬적으로 수행한다(S 830).
조건 실행을 나타내는 값은 PRF의 인덱스인 경우, 인스트럭션 번들에 포함된 PRF의 인덱스에 의해 지시되는 프리디킷 값에 따라 인덱스별 프리디킷 값을 저장하는 PRF에서 프리디킷 값을 선택되고, 선택된 프리디킷 값에 따라 복수 개의 인스트럭션이 병렬적으로 수행된다. PRF의 인덱스에 의해 지시되는 프리디킷 값이 특정 값으로 설정되는 경우 복수 개의 인스트럭션이 병렬적으로 수행될 수 있다.
조건 실행을 나타내는 값이 컨디션 비트인 경우, 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 PSR에 포함된 컨디션 비트를 비교하고, 비교 결과에 따라 인스트럭션 번들에 포함된 복수 개의 인스트럭션이 병렬적으로 수행될 수 있다. 이 경우 복수 개의 인스트럭션은 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 PSR에 포함된 컨디션 비트가 일치하는 경우 병렬적으로 수행될 수 있다.
일 실시예에 따르면, 병렬적으로 실행되는 복수 개의 인스트럭션인 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 VLIW 명령어로 생성하여 VLIW 명령어를 효율적으로 구성할 수 있으며, 생성된 VLIW 명령어를 효율적으로 처리할 수 있다.
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에 서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
도 1은 일 실시예에 따른 VLIW 명령어 생성 장치를 나타내는 블록도이다.
도 2a 및 도 2b는 종래 기술에 따른 인스트럭션 세트 아키텍처 및 VLIW 명령어를 간략하게 나타낸 도면이다.
도 3a 및 도 3b는 각각 일 실시예에 따른 VLIW 명령어 구조를 나타낸 도면이다.
도 4는 일 실시예에 따른 VLIW 프로세서를 나타내는 블록도이다.
도 5는 일 실시예에 따른 VLIW 명령어에 따른 연산 유닛의 동작을 나타내는 도면이다.
도 6은 다른 실시예에 따른 VLIW 프로세서를 나타내는 블록도이다.
도 7은 또 다른 실시예에 따른 VLIW 프로세서를 나타내는 블록도이다.
도 8은 일 실시예에 따른 VLIW 명령어 처리 방법을 나타내는 순서도이다.

Claims (20)

  1. VLIW 명령어 생성 장치로서,
    병렬적으로 실행되는 복수 개의 인스트럭션을 인스트럭션 번들로 변환하여, 상기 인스트럭션 번들 단위로 조건 실행(predicated execution)을 나타내는 값을 포함하는 인스트럭션 번들을 VLIW 명령어로서 생성하는 컴파일러; 및
    상기 생성된 VLIW 명령어를 저장하는 메모리;를 포함하는 장치.
  2. 제1항에 있어서,
    상기 조건 실행을 나타내는 값은 프리디킷 레지스터 파일의 인덱스인 장치.
  3. 제1항에 있어서,
    상기 조건 실행을 나타내는 값은 컨디션 비트인 장치.
  4. VLIW 명령어 생성 방법으로서,
    컴파일러가 병렬적으로 실행되는 복수 개의 인스트럭션을 인스트럭션 번들로 변환하는 단계;
    상기 컴파일러가 상기 인스트럭션 번들 단위로 조건 실행을 나타내는 값을 포함하는 인스트럭션 번들을 VLIW 명령어로서 생성하는 단계; 및
    상기 생성된 VLIW 명령어를 저장하는 단계;를 포함하는 방법.
  5. 제4항에 있어서,
    상기 조건 실행을 나타내는 값은 프리디킷 레지스터 파일의 인덱스인 방법.
  6. 제4항에 있어서,
    상기 조건 실행을 나타내는 값은 컨디션 비트인 방법.
  7. 인스트럭션 번들은 병렬적으로 실행되는 복수 개의 인스트럭션을 포함하고, 조건 실행을 나타내는 값이 인스트럭션 번들 단위로 인코딩된 VLIW 명령어를 페치하는 명령어 페치부;
    상기 인스트럭션 번들을 디코딩하는 디코더; 및
    상기 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 수행하기 위한 명령어 수행부를 포함하고,
    상기 명령어 수행부는 상기 조건 실행을 나타내는 값에 따라서 상기 복수 개의 인스트럭션을 실행하는 VLIW 프로세서.
  8. 제7항에 있어서,
    상기 조건 실행을 나타내는 값은 프리디킷 레지스터 파일의 인덱스인 VLIW 프로세서.
  9. 제8항에 있어서,
    상기 명령어 수행부는,
    인덱스별 프리디킷 값을 저장하는 프리디킷 레지스터 파일; 및
    상기 인스트럭션 번들에 포함된 프리디킷 레지스터 파일의 인덱스에 의해 지시되는 프리디킷 값에 따라 상기 복수 개의 인스트럭션을 병렬적으로 수행하는 복 수 개의 연산 유닛을 포함하는 VLIW 프로세서.
  10. 제9항에 있어서,
    상기 복수 개의 연산 유닛은 상기 프리디킷 레지스터 파일의 인덱스에 의해 지시되는 프리디킷 값이 특정 값으로 설정되는 경우에 상기 복수 개의 인스트럭션을 병렬적으로 수행하는 VLIW 프로세서.
  11. 제7항에 있어서,
    상기 조건 실행을 나타내는 값은 컨디션 비트인 VLIW 프로세서.
  12. 제11항에 있어서,
    상기 명령어 수행부는,
    컨디션 비트를 저장하는 프로세서 상태 레지스터;
    상기 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 프로세서 상태 레지스터에 저장된 컨디션 비트를 비교하는 비교부; 및
    비교 결과에 따라 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 수행하는 복수 개의 연산 유닛을 포함하는 VLIW 프로세서.
  13. 제12항에 있어서,
    상기 복수 개의 연산 유닛은 디코딩된 인스트럭션 번들에 포함된 컨디션 비 트와 프로세서 상태 레지스터에 저장된 컨디션 비트가 일치하는 경우 복수 개의 인스트럭션을 병렬적으로 수행하는 VLIW 프로세서.
  14. VLIW 프로세서의 명령어 처리 방법으로서,
    인스트럭션 번들은 병렬적으로 실행되는 복수 개의 인스트럭션을 포함하고, 조건 실행을 나타내는 값이 인스트럭션 번들 단위로 인코딩된 VLIW 명령어를 페치하는 단계;
    상기 인스트럭션 번들을 디코딩하는 단계; 및
    상기 디코딩 결과 해석된 상기 조건 실행을 나타내는 값에 따라서 상기 복수 개의 인스트럭션을 병렬적으로 수행하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 조건 실행을 나타내는 값은 프리디킷 레지스터 파일의 인덱스인 방법.
  16. 제15항에 있어서,
    상기 인스트럭션을 실행하는 단계는,
    인덱스별 프리디킷 값을 저장하는 프리디킷 레지스터 파일에서 상기 프리디킷 레지스터 파일의 인덱스에 의해 지시되는 프리디킷 값에 따라 프리디킷 값을 선택하는 단계; 및
    상기 선택된 프리디킷 값에 따라 상기 복수 개의 인스트럭션을 병렬적으로 수행하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    복수 개의 인스트럭션을 병렬적으로 수행하는 단계는, 상기 프리디킷 레지스터 파일의 인덱스에 의해 지시되는 프리디킷 값이 특정 값으로 설정되는 경우에 수행되는 방법.
  18. 제14항에 있어서,
    상기 조건 실행을 나타내는 값은 컨디션 비트인 방법.
  19. 제18항에 있어서,
    상기 인스트럭션을 실행하는 단계는,
    상기 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 프로세서 상태 레지스터에 저장된 컨디션 비트를 비교하는 단계; 및
    상기 비교 결과에 따라 상기 인스트럭션 번들에 포함된 복수 개의 인스트럭션을 병렬적으로 수행하는 단계를 포함하는 방법.
  20. 제19항에 있어서,
    상기 복수 개의 인스트럭션을 병렬적으로 수행하는 단계는, 상기 디코딩된 인스트럭션 번들에 포함된 컨디션 비트와 상기 컨디션 비트가 일치하는 경우 수행되는 방법.
KR1020090013532A 2009-02-18 2009-02-18 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법 KR101645001B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020090013532A KR101645001B1 (ko) 2009-02-18 2009-02-18 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
US12/706,006 US8601244B2 (en) 2009-02-18 2010-02-16 Apparatus and method for generating VLIW, and processor and method for processing VLIW
US14/064,497 US9342480B2 (en) 2009-02-18 2013-10-28 Apparatus and method for generating VLIW, and processor and method for processing VLIW

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090013532A KR101645001B1 (ko) 2009-02-18 2009-02-18 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법

Publications (2)

Publication Number Publication Date
KR20100094214A KR20100094214A (ko) 2010-08-26
KR101645001B1 true KR101645001B1 (ko) 2016-08-02

Family

ID=42560887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090013532A KR101645001B1 (ko) 2009-02-18 2009-02-18 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법

Country Status (2)

Country Link
US (2) US8601244B2 (ko)
KR (1) KR101645001B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101118593B1 (ko) * 2008-12-03 2012-02-27 한국전자통신연구원 Vliw 명령어 처리 장치 및 방법
JP6378515B2 (ja) * 2014-03-26 2018-08-22 株式会社メガチップス Vliwプロセッサ
US10402199B2 (en) 2015-10-22 2019-09-03 Texas Instruments Incorporated Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US11599360B2 (en) 2020-12-14 2023-03-07 Cognitive Science & Solutions, Inc. AI synaptic coprocessor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060004996A1 (en) 2004-04-23 2006-01-05 Gonion Jeffry E Macroscalar processor architecture

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6910123B1 (en) * 2000-01-13 2005-06-21 Texas Instruments Incorporated Processor with conditional instruction execution based upon state of corresponding annul bit of annul code
US7096343B1 (en) * 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
GB2367406B (en) * 2000-06-13 2002-06-05 Siroyan Ltd Predicated execution of instructions in processors
US6931632B2 (en) * 2001-11-08 2005-08-16 Hewlett-Packard Development Company, L.P. Instrumentation of code having predicated branch-call and shadow instructions
JP3801545B2 (ja) * 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
US20040205326A1 (en) * 2003-03-12 2004-10-14 Sindagi Vijay K.G. Early predicate evaluation to reduce power in very long instruction word processors employing predicate execution
US20060230257A1 (en) 2005-04-11 2006-10-12 Muhammad Ahmed System and method of using a predicate value to access a register file
AT503171A2 (de) * 2006-01-16 2007-08-15 On Demand Microelectronics Gmb Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
US20090327674A1 (en) * 2008-06-27 2009-12-31 Qualcomm Incorporated Loop Control System and Method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060004996A1 (en) 2004-04-23 2006-01-05 Gonion Jeffry E Macroscalar processor architecture

Also Published As

Publication number Publication date
US20140052960A1 (en) 2014-02-20
US20100211759A1 (en) 2010-08-19
KR20100094214A (ko) 2010-08-26
US8601244B2 (en) 2013-12-03
US9342480B2 (en) 2016-05-17

Similar Documents

Publication Publication Date Title
US6799263B1 (en) Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
KR101417597B1 (ko) 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제
US9632775B2 (en) Completion time prediction for vector instructions
US9389868B2 (en) Confidence-driven selective predication of processor instructions
KR20100132032A (ko) 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법
US20100205405A1 (en) Static branch prediction method and code execution method for pipeline processor, and code compiling method for static branch prediction
KR101645001B1 (ko) Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
JP4864840B2 (ja) マイクロプロセッサ
US9442734B2 (en) Completion time determination for vector instructions
JP3977931B2 (ja) データプロセッサにおける条件分岐実行を制御するための方法および装置
US9569273B2 (en) Apparatus and method for controlling execution of a single thread by multiple processors
TWI515651B (zh) 用以增加指令集密度的編碼技術
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
KR102688577B1 (ko) 전자 장치, vliw 프로세서 및 그 제어 방법들
JP2001243070A (ja) プロセッサ及び分岐予測方法並びにコンパイル方法
JP4828409B2 (ja) タイムステーショナリプロセッサにおける条件動作のためのサポート
US9201657B2 (en) Lower power assembler
KR101099828B1 (ko) 프로세싱 시스템, 이 프로세싱 시스템에 의해서 인스트럭션의 집합을 실행하는 vliw 프로세서, 방법 및 컴퓨터 판독가능한 저장 매체
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体
JP2000081982A (ja) コンパイラ、プロセッサおよび記録媒体
CN116069602B (zh) 一种最坏情况执行时间分析方法和装置
CN216527140U (zh) 一种分支预测的装置及处理器
JP2005149297A (ja) プロセッサおよびそのアセンブラ
CN114035848A (zh) 一种分支预测的方法、装置及处理器
JP2006004234A (ja) マイクロプロセッサにおける命令実行制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20190619

Year of fee payment: 4