KR101449732B1 - 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법 - Google Patents

계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법 Download PDF

Info

Publication number
KR101449732B1
KR101449732B1 KR1020127026019A KR20127026019A KR101449732B1 KR 101449732 B1 KR101449732 B1 KR 101449732B1 KR 1020127026019 A KR1020127026019 A KR 1020127026019A KR 20127026019 A KR20127026019 A KR 20127026019A KR 101449732 B1 KR101449732 B1 KR 101449732B1
Authority
KR
South Korea
Prior art keywords
instruction
sub
instructions
packet
execution unit
Prior art date
Application number
KR1020127026019A
Other languages
English (en)
Other versions
KR20120139773A (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 퀄컴 인코포레이티드
Publication of KR20120139773A publication Critical patent/KR20120139773A/ko
Application granted granted Critical
Publication of KR101449732B1 publication Critical patent/KR101449732B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

계층적 VLIW(very ling instruction word) 패킷을 프로세싱하는 시스템 및 방법이 개시된다. 특정 실시예에서, 명령들을 프로세싱하는 방법이 개시된다. 방법은 명령들의 계층적 VLIW 패킷을 수신하는 단계, 및 명령이 단일 명령인지의 여부 또는 명령이 복수의 서브-명령들을 포함하는 서브패킷을 포함하는지의 여부를 결정하기 위해 패킷으로부터의 명령을 디코딩하는 단계를 포함한다. 방법은 또한, 명령이 서브패킷을 포함한다는 결정에 응답하여, 서브-명령들 각각을 실행하는 단계를 포함한다.

Description

계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법{SYSTEM AND METHOD OF PROCESSING HIERARCHICAL VERY LONG INSTRUCTION PACKETS}
본 개시내용은 일반적으로 계층적인 매우 긴 명령어를 인코딩하는 것에 관련된다.
기술의 진보들은 더 작고 더 강력한 컴퓨팅 디바이스들을 초래하였다. 예를 들어, 휴대용 무선 전화들, 개인 디지털 정보 단말(PDA)들, 및 소형, 경량 및 사용자에 의해 용이하게 운반되는 페이징 디바이스들과 같은 무선 컴퓨팅 디바이스들을 포함하는 다양한 휴대용 개인 컴퓨팅 디바이스들이 현재 존재한다. 더 구체적으로, 셀룰러 전화들 및 인터넷 프로토콜(IP) 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 전달할 수 있다. 추가로, 많은 이러한 무선 전화들은 여기에 포함되는 다른 타입들의 디바이스들을 포함한다. 예를 들어, 무선 전화는 또한 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 레코더 및 오디오 파일 플레이어를 포함할 수 있다. 또한, 이러한 무선 전화들은 인터넷에 액세스하기 위해 사용될 수 있는 웹 브라우저 애플리케이션과 같은 소프트웨어 애플리케이션들을 포함하는 실행가능한 명령들을 프로세싱할 수 있다. 따라서, 이러한 무선 전화들은 상당한 컴퓨팅 용량들을 포함할 수 있다.
컴퓨팅 속도를 높이고, 프로그램 사이즈 및 결과적인 프로그램 저장 요구를 감소시키기 위해, 명령들을 더욱 효율적으로 패킹하는 것이 유용할 것이다. 명령들을 더욱 효율적으로 패킹함으로써, 명령 캐시 사이즈가 감소할 수 있거나, 동일한 명령 캐시 사이즈가 더 많은 명령들을 보유할 수 있다.
특정 실시예에서, 명령들을 프로세싱하는 방법이 개시된다. 방법은 명령들의 패킷을 수신하는 단계를 포함한다. 패킷은 명령이 단일 명령인지의 여부 또는 명령이 복수의 서브-명령들을 포함하는 서브패킷을 포함하는지의 여부를 결정하기 위해 디코딩될 수 있는 적어도 하나의 명령을 포함한다. 방법은 또한, 명령이 서브패킷을 포함한다는 결정에 응답하여 서브-명령들 각각을 실행하는 단계를 포함한다.
또 다른 특정 실시예에서, 명령을 프로세싱하는 방법은 명령들의 패킷을 수신하는 단계를 포함하며, 여기서 패킷은 제1 파스 값을 가지는 제1 명령 및 제2 파스 값을 가지는 제2 명령을 포함한다. 방법은 제1 명령을 제1 실행 유닛에 라우팅하는 단계, 및 제2 명령을 제1 서브-명령 및 제2 서브-명령을 포함하는 서브패킷 명령으로서 식별하는 단계를 포함한다. 방법은 또한 제1 서브-명령을 제2 실행 유닛에 라우팅하는 단계를 포함한다.
또 다른 특정 실시예에서, 프로세서가 개시된다. 프로세서는 명령들의 패킷을 수신하기 위한 디코더를 포함한다. 디코더는 명령이 제1 서브-명령 및 제2 서브-명령을 포함하는 제1 서브패킷 명령인지의 여부를 결정하기 위해 상기 패킷 내의 명령을 디코딩하도록 동작한다. 프로세서는 또한 명령을 실행하기 위한 또는 제1 서브-명령을 실행하기 위한 유닛을 포함한다.
개시된 실시예들 중 적어도 하나에 의해 제공되는 일 특정한 장점은 명령들이 더 밀도 있게 패킹되므로 명령 캐시 사이즈가 감소할 수 있다는 점이다. 명령들의 효율적인 패킹에 대한 장점은 동일한 양의 캐시 내에 더 많은 명령들을 저장하는 능력이다. 개시된 실시예들 중 적어도 하나에 의해 제공되는 또 다른 장점은 각각의 패킷이 더 높은 밀도의 명령들을 포함하므로 메모리로부터의 코드를 패치하기 위해 요구되는 에너지의 감소이며, 이는 프로그램을 실행하기 위한 명령들을 리트리브하기 위한 호출들의 전체 수의 감소를 초래한다.
본 개시내용의 다른 양상들, 장점들 및 특징들은 후속하는 섹션들: 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용, 및 특허청구범위를 포함하는 전체 출원의 리뷰 이후 명확해질 것이다.
도 1은 파이프라이닝된 프로세서에 입력되는 VLIW(very long instruction word: 매우 긴 명령어) 패킷의 특정 예시적인 실시예의 블록도이다.
도 2는 서브-패킷 명령을 포함하는 VLIW 패킷의 특정 예시적인 실시예의 블록도이다.
도 3은 서브-패킷 명령을 포함하는 VLIW 패킷을 프로세싱하는 파이프라이닝된 프로세서의 특정 예시적인 실시예의 블록도이다.
도 4는 서브-패킷 명령을 포함하는 VLIW 패킷을 프로세싱하는 파이프라이닝된 프로세서의 또 다른 특정 예시적인 실시예의 블록도이다.
도 5는 서브-패킷 명령을 포함하는 VLIW 패킷을 프로세싱하는 파이프라이닝된 프로세서의 또 다른 특정 예시적인 실시예의 블록도이다.
도 6은 서브-패킷 명령을 포함하는 VLIW 패킷을 프로세싱하는 파이프라이닝된 프로세싱 유닛의 또 다른 특정 예시적인 실시예의 블록도이다.
도 7은 서브-패킷 명령을 포함하는 VLIW 패킷을 프로세싱하는 방법의 특정 예시적인 실시예의 흐름도이다.
도 8은 서브-패킷 명령을 포함하는 VLIW 패킷을 프로세싱하는 방법의 또 다른 특정 예시적인 실시예의 흐름도이다.
도 9는 서브-명령들을 포함하는 VLIW 패킷들을 프로세싱하기 위한 디지털 신호 프로세서를 포함하는 무선 장치의 블록도이다.
도 1을 참조하면, VLIW(very long instruction word) 패킷의 특정 예시적인 실시예가 개시된다. VLIW 패킷(102)은 제1 명령(110), 제2 명령(112), 및 제N 번째 명령(114)까지 추가 명령들을 포함하는 N개 명령들을 포함한다. 파이프라이닝된 프로세서(100)의 패치(fetch) 스테이지(102)에서, VLIW 패킷(102)은 초기에 저장소(미도시)로부터 패치되고, 파이프라이닝된 프로세서(100)의 디코딩 스테이지(104)에 입력된다.
디코딩 스테이지(104)에서, 명령(114)은 서브 명령들(116 및 118)을 포함하는 서브패킷 명령으로서 식별된다. 디코딩 스테이지(104)로부터, VLIW 패킷(102) 내의 복수의 N개 명령들은 실행 스테이지(106)로 진행한다. 실행 스테이지(106)는 실행 유닛들(120, 122, 124 및 126)을 포함하는 M개의 실행 유닛들을 포함한다. 특정 예시적인 실시예에서, M은 N을 초과할 수 있다. 또 다른 특정 예시적인 실시예에서, M은 N보다 더 작을 수 있다. 또 다른 특정 예시적인 실시예에서, M은 N과 동일할 수 있다.
실행 스테이지(106)에서, 제1 명령(104)은 실행 유닛(120)으로 입력된다. 제2 명령(112)은 실행 유닛(122)으로 입력된다. 제1 서브-명령(116)은 실행 유닛(124)으로 입력되고, 제2 서브-명령(118)은 실행 유닛(126)으로 입력된다. 특정 예시적인 실시예에서, VLIW 패킷(102) 내의 다른 명령들 각각은 실행 스테이지(106)에서 대응하는 실행 유닛에 입력될 수 있다.
특정 예시적인 실시예에서, VLIW 패킷(108) 내의 명령들 중 하나 이상은 둘 이상의 서브-명령들을 포함하는 서브-패킷 명령들이다. 하나 이상의 서브-명령 패킷들을 포함하는 VLIW 패킷은 계층적 VLIW로서 지칭된다. 도 1에 도시된 예시적 실시예에서, 서브-명령들(116 및 118) 각각은 상이한 실행 유닛에 입력되고, 서브-명령들(116 및 118)은 동시에 실행된다. 대안적으로, 서브-명령들(116 및 118) 각각은 서브-명령들(116 및 118) 모두를 실행하는 단일 실행 유닛에 라우팅될 수 있다.
특정 예시적인 실시예에서, VLIW 패킷은 다수의 서브패킷 명령들을 포함하고, 각각의 서브패킷 명령은 둘 이상의 서브-명령들을 포함한다. 특정 예시적인 실시예에서, 서브패킷 명령은 명령들의 서브-서브-패킷(미도시)을 식별하기 위해 디코딩될 수 있고, 여기서, 서브-서브패킷은 서브-서브-명령들로서 지칭되는 복수의 명령들을 포함한다. 또 다른 특정 예시적인 실시예에서, VLIW 패킷의 각각의 명령은 하나 이상의 네스트(nest)된 명령들을 포함하는 매우 긴 명령어를 포함하고, 상기 하나 이상의 네스트된 명령들 중 적어도 하나는 둘 또는 그보다 많은 서브-명령들을 포함하는 서브-패킷 명령이다.
실행 스테이지(106)에서 M개의 실행 유닛들이 존재한다. 수 M이 명령들(110, 112) 및 서브-명령들(116 및 118)을 포함하는 VLIW 패킷의 각각의 명령을 수용할 만큼 충분히 큰 경우, M은 N보다 더 크고, VLIW 패킷(108)의 명령들 모두는 동시에 실행될 수 있다. VLIW 패킷(108) 내의 모든 명령들의 동시 프로세싱에 대한 장점은 VLIW 패킷(108) 내에 포함되는 명령들 중 일부의 순차적 프로세싱에 비해 더 빠른 프로세싱이다.
도 2를 참조하면, VLIW 패킷의 특정 예시적인 실시예가 개시되고 일반적으로 200으로 표기된다. VLIW 패킷(200)은 명령들(202, 204, 206 및 208)을 포함한다. 명령들(202, 204, 206 및 208) 각각은 통상적으로 고정된 수의 비트들을 포함한다. 예를 들어, 명령들(202, 204, 206 및 208) 각각은 32비트를 포함할 수 있다. 명령들 각각은 파스 필드를 포함할 수 있다. 특정 예시적인 실시예에서, 파스 필드는 2개의 비트들을 포함한다. 특정 예시적인 실시예에서, 제1 파스 값은 제1 명령의 2개의 인접한 내부 비트들에 저장되고, 제2 파스 값은 제2 명령의 2개의 인접한 내부 비트들에 저장된다. 예를 들어, 01의 파스 값은 명령(206)의 2개의 인접한 내부 비트들에 저장되고, 00의 파스 값은 명령(208)의 2개의 인접한 내부 비트들에 저장된다. 특정 예시적인 실시예에서, 파스 필드는 대응하는 명령의 가장 중심 비트들에 위치된다. 파스 필드들의 예로서, 명령(202)은 10의 저장된 값을 가지는 파스 필드를 포함하고, 명령(204)은 01의 저장된 값을 가지는 파스 필드(212)를 포함하고, 명령(206)은 01의 저장된 값을 가지는 파스 필드(214)를 포함하고, 명령(208)은 00의 저장된 값을 가지는 파스 필드(216)를 포함한다.
파스 필드는 명령이 패킷-종단(end-of-packet) 명령인지의 여부에 대한 표시자일 수 있다. 특정 예에서, 10의 파스 필드는 패킷이 패킷-종단이 아님을 표시하고, 또한 패킷이 하드웨어 루프의 종단에 있음을 표시한다. 특정 예시적인 예에서, 01의 값을 가지는 파스 필드는 패킷 종단이 아닌 명령을 표시한다. 특정 예시적인 예에서, 11의 값을 가지는 파스 필드는 패킷 종단 명령을 표시한다. 특정 실시예에서, 00의 값을 가지는 파스 필드를 가지는 명령은 또한 패킷 종단 명령을 표시한다. 00의 값을 가지는 파스 필드를 가지는 명령은 또한 명령이 서브-패킷 명령임을 표시한다. 서브-패킷 명령은 둘 이상의 서브-명령들을 포함하는 명령이다.
예를 들어, 명령(208)은 00의 값을 가지는 파스 필드(216)를 포함한다. 따라서, 명령(208)은 서브-패킷 명령이며, 또한, 패킷 종단 명령이다. 명령(208)의 상세 다이어그램(도 2의 하위 부분)을 보면, 제1 서브-명령(218) 및 제2 서브-명령(220)은 명령(208) 내에 포함된다. 제1 서브-명령(218)은 A로 라벨링된 데이터를 포함하고, 제2 서브-명령(220)은 B로 라벨링된 데이터를 포함한다.
서브-명령들(218 및 220)에 추가하여, 명령(208)은 제1 명령 클래스 필드(222) 및 제2 명령 클래스 필드(224)를 포함한다. 명령 클래스 필드들(222 및 224)은 로드, 저장, 산술 등과 같은 명령의 타입을 표시할 수 있다. 명령 클래스 필드들(222 및 224)의 컨텐츠는 파이프라이닝된 프로세서의 디코딩 스테이지에서 유용할 수 있다.
특정 예시적인 실시예에서, 명령(208)은 32비트를 포함하고, 각각의 서브-명령(218 및 220)은 13비트를 포함하고, 파스 필드(216)는 2비트를 포함하고, 제1 명령 클래스 필드(222)는 3비트를 포함하고, 제2 명령 클래스 필드(224)는 1비트를 포함한다.
특정 예시적인 실시예에서, 서브-명령들(218 및 220)은 파이프라이닝된 프로세서의 실행 스테이지에서 동시에 실행된다. 또 다른 특정 예시적인 실시예에서, 서브-명령들(218 및 220)은 파이프라이닝된 프로세서의 실행 스테이지에서 직렬로 실행된다.
도 3을 참조하면, 파이프라이닝된 프로세서의 특정 예시적인 실시예가 개시되며 일반적으로 300으로 표기된다. 파이프라이닝된 프로세서(300)는 복수의 스테이지들을 포함한다. 도 3은 3개의 스테이지들: 패치 스테이지(302), 디코딩 스테이지(304) 및 실행 스테이지(306)를 도시한다. 예시적인 실시예들에서, 파이프라이닝된 프로세서(300)는 후기입(write-back) 스테이지와 같은 다른 스테이지들을 포함할 수 있다. 특정 예시적인 예에서, 명령 패킷(308)은 패치 스테이지(302)에서 패치된다. 명령 패킷(308)은 디코딩 스테이지(304)에서 디코딩되고, 이후, 명령 패킷(308) 내에 포함된 복수의 명령들은 실행 스테이지(306)에서 송신되고, 여기서 명령들 각각이 실행된다.
특정 예시적인 예에서, 명령 패킷(308)은 명령들(202, 204, 206 및 208)을 포함한다. 특정 예시적인 실시예에서, 명령 패킷(308)은 프로세서(300)와 연관된 밀착 커플링된 메모리(미도시)로부터 리트리브된다. 또 다른 특정 예시적인 실시예에서, 명령 패킷은 프로세서(300)와 연관된 명령 캐시(미도시)로부터 리트리브된다. 특정 예시적인 실시예에서, 명령 패킷(308)의 명령들(202, 204, 206 및 208) 각각은 동일한 사이즈를 가진다(즉, 동일한 개수의 비트들을 포함한다). 특정 예시적인 실시예에서, 명령들(202, 204, 206 및 208) 각각은 32비트 사이즈를 가진다.
특정 예시적인 실시예에서, 명령 패킷(308)은 VLIW(very long instruction word) 패킷이다. VLIW 패킷(308) 내의 명령들 중 하나, 예를 들어, 명령(208)은 제1 서브-명령(218) 및 제2 서브-명령(220)을 포함하는 서브-패킷 명령이다. 명령들(202, 204, 206 및 208) 각각은 파스 필드를 포함한다. 명령(202)은 도 3에 도시된 예에서 명령(202)이 패킷 종단 명령이 아니며, 명령(202)이 하드웨어 루프 종단 명령임을 나타내는 10의 값을 가지는 파스 필드(210)를 포함한다. 명령들(204 및 206)은 대응하는 파스 필드들(212 및 214)을 가지며, 이들 각각은 대응하는 명령이 패킷 종단 명령이 아님을 나타내는 01의 값을 가진다. 명령(208)은 서브 패킷 명령이며, 명령(208)이 서브패킷 명령임을 나타내며, 또한 명령(208)이 패킷 종단 명령임을 나타내는 00의 값을 가지는 파스 필드(216)를 포함한다. 특정 예시적인 실시예에서, 명령(208)은 각각이 명령(316)보다 더 작은(즉, 더 작은 비트들의 수를 포함하는) 사이즈를 가지는 2개의 서브-명령들(218 및 220)을 포함한다.
디코딩 스테이지(304)에서, VLIW 명령 패킷(308)은 명령들(202, 204, 206) 및 서브-명령들(218 및 220)로 디코딩된다. 각각의 명령은 명령이 실행가능한 명령인지 또는 다수의 서브-명령들을 포함하는 서브패킷 명령인지의 여부를 결정하기 위해 평가될 수 있다. 예를 들어, 파스 필드(220)의 컨텐츠는 서브패킷 명령을 표시하는 정의된 값에 비교될 수 있다. 서브패킷 명령들로서 표시되지 않는 명령들은 실행 스테이지로 즉시 라우팅될 수 있다. 서브패킷 명령들인 것으로 결정되는 명령들은 이들의 컴포넌트 서브-명령들(예를 들어, 서브-패킷 명령들(218 및 220))로 디코딩될 수 있다. 일부 실시예들에서, 서브-명령들은 이후 병렬로 실행 스테이지(306)에 라우팅된다. 서브-명령들은 단일 실행 유닛에서 또는 다수의 실행 유닛들에서 병렬로 실행될 수 있다. 다른 실시예들에서, 서브-명령들은 직렬로 라우팅된다. 명령 스테이지(306)는 사용가능한 프로세서 자원들에 기초하여 병렬로 또는 직렬로 서브-명령들을 실행할지의 여부를 결정하도록 구성될 수 있다.
실행 단계(306)로 이동하면, 특정 예시적인 실시예에서, 디코딩 스테이지를 떠나는 명령들 각각은 대응하는 실행 유닛에 입력된다. 명령들(202)은 실행 유닛(330)에 입력되고, 명령(204)은 실행 유닛(332)에 입력되고, 명령(206)은 실행 유닛(334)에 입력되고, 서브-명령(218)은 실행 유닛(336)에 입력되고, 서브-명령(220)은 실행 유닛(338)에 입력된다. 특정 예시적인 실시예에서, 명령들(202, 204, 206, 218 및 220) 모두는 동시에 실행된다. 도 3의 예시적인 실시예에서, 실행 유닛들(334, 336 및 338)은 로드 및 저장 명령들과 같은 데이터 캐시-관련 명령들을 실행하는 반면, 실행 유닛들(330 및 332)은 산술 실행 유닛들, 예를 들어, 산술 논리 유닛(ALU)이다. 실행 이후에, 각각의 실행 유닛의 출력은 후기입 스테이지(미도시) 동안 결과들을 제공하도록 진행한다.
특정 실시예에서, VLIW 패킷 내의 모든 명령들은 병렬로 실행될 수 있다. 예를 들어, 모든 명령들은 프로세서(300)에 의해 병렬로 실행될 수 있거나, 그렇지 않은 경우, 실패가 발생할 것이다. 또 다른 특정 실시예에서, 서브-명령(예를 들어, 218 또는 220)은, 프로세서(300)가 명령들(202, 204, 206) 및 서브-명령들(218 및 220)을 병렬로 실행하기에 충분한 자원들을 가지지 않는 경우, VLIW 패킷 내의 다른 명령들이 실행된 이후 실행될 수 있다.
특정 실시예에서, VLIW 패킷 내의 명령들의 위치는 어느 실행 유닛이 명령을 수신할지를 결정한다. 예를 들어, 도 3에서, 명령(202)은 VLIW 패킷(308)의 제1 명령이며 실행 유닛(330)에 라우팅되고, 제2 명령(204)은 실행 유닛(332)에 라우팅되고, 제3 명령(206)은 실행 유닛(334)에 라우팅된다.
따라서, VLIW 패킷은 어느 명령들을 병렬로 프로세싱할지, 그리고 어느 실행 유닛에 각각의 명령이 라우팅될지를 프로세서에 표시할 수 있다. 이러한 실시예들에서, 프로세서는 다수의 사이클들에 걸쳐 단일 패킷 내의 명령들을 프로세싱하도록, 또는 VLIW 패킷 내의 명령의 위치에 의해 표시되는 실행 유닛이 아닌 실행 유닛에 명령을 라우팅하도록 허가되지 않을 수 있다.
서브-명령들을 포함하는 VLIW 패킷 내에 패킹된 명령들의 전체 수가 서브-명령들 없는 VLIW 패킷 내에 패킹된 명령들의 전체 수보다 더 클 수 있으므로, 프로그램 명령들에 대한 메모리로의 패치들의 전체 수가 감소할 수 있고, 결과적으로 컴퓨팅 시간 효율성이 증가한다. 각각의 패치가 에너지 비용을 가지므로, 패치들의 전체 수의 감소는 프로그램의 실행과 연관된 감소한 전력 소모를 초래할 수 있다.
도 4를 참조하면, 파이프라이닝된 프로세서의 특정 예시적인 실시예가 개시되며 일반적으로 400으로 표기된다. 파이프라이닝된 프로세서(400)는 패치 스테이지(402), 디코딩 스테이지(404) 및 실행 스테이지(406)를 포함한다. 후기입 스테이지를 포함하는 파이프라인의 추가 스테이지들은 도시되지 않는다. 패치 스테이지(402)에서, VLIW(very long instruction word) 명령(408)은 명령 캐시 또는 다른 메모리와 같은 메모리로부터 패치된다. VLIW 명령(408)은 4개 명령들(202, 204, 206 및 208)을 포함한다. 명령(202)은 10의 값을 가지는 파스 필드(210)를 포함하고, 명령(204)은 01의 값을 가지는 파스 필드(212)를 포함하고, 명령(206)은 01의 값을 가지는 파스 필드(214)를 포함하고, 명령(208)은 00의 값을 가지는 파스 필드(216)를 포함한다. 파스 필드들(210, 212 및 214)은 이들의 대응하는 명령들이 패킷 종단 명령들이 아님을 표시하는 값들을 가진다. 00의 값을 가지는 파스 필드(216)는 명령(208)이 서브-패킷 명령이며, 명령(208)이 패킷 종단 명령임을 표시한다. 명령(208)은 제1 서브-명령(218) 및 제2 서브-명령(220)을 포함한다. 제1 서브-명령(218)은 A에 의해 표시되는 데이터를 포함하고, 제2 서브-명령(220)은 B에 의해 표시되는 데이터를 포함한다.
디코딩 스테이지(404)로 진행하면, VLIW 패킷(408)은 명령들(202, 204, 206) 각각 및 2개의 서브-명령들(218 및 220)로 분리된다. 실행 스테이지(406)로 진행하면, 4개의 실행 유닛들(430, 432, 434 및 436)이 존재한다. 특정 예시적인 실시예에서, 실행 유닛들(430 및 432)은 산술 명령들(문자 X로 표기됨)을 실행하고, 실행 유닛들(434 및 432)은 데이터 로드 및 저장 실행 유닛들(문자 D로 표기됨)이다. 특정 예시적인 예에서, 명령(202)은 실행 유닛(430)에서 실행되고, 명령(204)은 실행 유닛(432)에서 실행되고, 명령(206)은 실행 유닛(434)에서 실행되고, 제1 서브-명령(218)은 실행 유닛(436)에서 실행된다. 명령들(202, 204, 206) 및 제1 서브-명령(218)은 동시에 실행될 수 있다. 제1 서브-명령(218)이 실행 유닛(436)에서 실행된 이후, 제2 서브-명령(220)은 후속하는 클록 사이클 동안 실행 유닛(436)에서 실행된다. 따라서, 도 4에 도시된 예에서, 서브-명령들(218 및 220)은 실행 유닛(436)에서 직렬로 실행된다. 또 다른 특정 예시적인 예(도 4에 미도시됨)에서, 실행 유닛(436)은 서브-명령들(218 및 220) 모두의 동시 실행을 가능하게 하도록 구성된다. 이러한 구성에서, 명령들(202, 204, 206, 218 및 220)은 동시에 실행될 수 있다.
도 5에 예시된 또 다른 특정 예시적인 예에서, 파스 필드가 아닌, 즉 210, 212, 214 또는 216 내에 있지 않은 표시자 필드(502)는 특정 명령이 서브-패킷 명령이라는 표시자로서 역할을 할 수 있다. 예를 들어, 명령(204)은, 세팅되는 경우, 명령(204)이 제1 서브-명령 C(504) 및 제2 서브-명령 D(506)를 포함한다는 서브-패킷 명령임을 표시하는 표시자 필드(502)를 포함할 수 있다. 대안적으로, VLIW 패킷(408) 내의 각각의 명령은 서브-패킷 표시자 필드를 포함할 수 있다. 서브-패킷 명령(204)은 디코딩 스테이지(404)에서 디코딩될 수 있고, 서브-명령들(504 및 506)이 이후 실행될 수 있다. 도 5에 도시된 특정 예시적인 예에서, 프로세서(500)는 2개의 서브-명령들을 동시에 실행하여, 서브-명령들(504 및 506)이 명령들(202, 206) 및 서브-명령(218)과 동시에 실행되게 하도록 구성되는 실행 유닛(532)을 포함한다. 또 다른 특정 예시적인 예(도 4 및 도 5에 미도시됨)에서, 실행 유닛들(432 및 436) 각각은 2개의 서브-명령들을 동시에 실행하여, 서브-명령들(218 및 220) 및 서브-명령들(504 및 506)이 명령들(202 및 206)과 동시에 실행되게 하도록 구성된다.
도 6을 참조하면, 파이프라이닝된 프로세서의 특정 예시적인 실시예가 개시되며 일반적으로 600으로 표기된다. 파이프라이닝된 프로세서(600)는 제어 유닛(606) 및 실행 유닛들(608, 610, 612 및 614)을 포함한다. 제어 유닛(606)은 디코더(616) 및 범용 레지스터 파일들(620)을 포함한다.
동작시, 복수의 명령들을 포함하는 VLIW 패킷과 같은 명령들의 패킷이 리트리브되고, 버스(634)를 통해 제어 유닛에 공급된다. 디코더(616)는 명령들의 패킷 내의 다수의 명령들을 디코딩하도록 동작가능하다. VLIW 패킷은 디코더(616)에서 개별 명령들로 언패킹(unpack)된다. VLIW 패킷은 명령(202), 명령(204), 및 서브-명령(218) 및 서브-명령(220)을 포함하는 서브-패킷 명령을 포함하는 복수의 명령들을 포함한다. 특정 예시적인 실시예에서, 서브-명령들(218 및 220)은, 각각이 이들이 VLIW 패킷 내에 패킹되는 서브-패킷 명령보다 사이즈가 더 작은(즉, 더 적은 비트들을 포함하는) 명령들이다.
디코더(616)에서 VLIW 패킷을 디코딩한 이후, 디코딩된 명령들은 실행 스테이지로 송신된다. 명령들(202, 204, 218 및 220) 각각은 대응하는 실행 유닛에 입력된다. 도 6에 도시된 바와 같이, 명령(202)은 명령 유닛(614)에서 실행되고, 명령(204)은 명령 유닛(612)에서 실행되고, 서브-명령(218)은 실행 유닛(610)에서 실행되고, 서브-명령(220)은 명령 유닛(608)에서 실행된다. 따라서, 도 6에 도시된 예에서, 명령들(202, 204, 218 및 220)은 동시에 실행된다. 실행 이후에, 실행 유닛들(608, 610, 612 및 614) 각각의 출력은 범용 레지스터 파일들(620)에 기입된다. 실행 유닛들(608, 610, 612 및 614)의 출력은 또한 버스(634)를 통해 저장 메모리에 송신될 수 있다.
도 7을 참조하면, 명령들을 라우팅하는 방법의 특정 예시적인 실시예가 도시되고 일반적으로 700으로 표기된다. 제1 파스 값을 가지는 제1 명령 및 제2 파스 값을 가지는 제2 명령을 포함하는 명령들의 패킷이 710에서 수신된다. 예를 들어, 도 3에서, 명령(206)은 01의 제1 파스 값을 가지는 파스 필드(214)를 가지고, 명령(208)은 00의 제2 파스 값을 가지는 파스 필드(216)를 가진다. 특정 예시적인 실시예에서, 명령들의 패킷은 VLIW 패킷이다. 예를 들어, 도 3에서, 패킷(308)은 VLIW 패킷이다. 720에서, 제1 명령은 제1 실행 유닛에 라우팅된다. 예를 들어, 도 3에서, 명령(206)은 실행 유닛(334)에 라우팅된다. 730으로 진행하면, 제2 명령은 제1 서브-명령 및 제2 서브-명령을 포함하는 서브-패킷 명령으로서 식별된다. 예를 들어, 도 3에서, 명령(208)은 파스 필드(216) 내의 제2 파스 값 00에 의해 서브패킷 명령으로서 식별된다. 명령(208)은 제1 서브-명령(218) 및 제2 서브-명령(220)을 포함한다. 740으로 진행하면, 제1 서브-명령은 제2 명령 유닛에 라우팅된다. 예를 들어, 도 3에서, 제1 서브-명령(218)은 명령 유닛(336)에 라우팅된다. 750으로 진행하면, 제2 서브-명령은 제3 실행 유닛에 라우팅될 수 있다. 예를 들어, 도 3에서, 제2 서브-명령(220)은 명령 유닛(338)에 라우팅된다. 선택적으로, 760에서, 제1 서브-명령, 제2 서브-명령, 및 제1 명령은 동시에 실행된다. 예를 들어, 도 3에서, 명령(206) 및 서브 명령들(218 및 220)은 동시에 실행된다. 방법은 770에서 종료한다. 다른 실시예들에서, 제2 서브-명령은 제1 서브-명령과 직렬로 실행되도록 제2 명령 유닛에 라우팅될 수 있다.
도 8을 참조하면, 명령들을 실행하는 방법의 특정 예시적인 실시예가 개시되며, 일반적으로 800으로 표기된다. 810에서, 제1 명령을 포함하는 명령들의 패킷이 수신된다. 예를 들어, 도 3에서, 패킷(308)은 명령(208)을 포함한다. 820에서 제1 명령이 디코딩된다. 830에서, 제1 명령이 서브-패킷 명령인지의 여부에 대한 결정이 이루어진다. 제1 명령이 복수의 서브-명령들을 포함하는 제1 서브-패킷 명령인 것으로 결정되는 경우, 방법은 블록(840)으로 진행한다. 예를 들어, 도 3에서, 명령(208)은 제1 서브-명령(218) 및 제2 서브-명령(220)을 포함하는 서브-패킷 명령이다. 제1 명령은 제1 명령을 서브-패킷 명령으로서 식별하고 제1 명령의 패킷 종단 상태를 표시하는 파스 표시자를 포함한다. (패킷 내의 명령들 중 임의의 명령은 자신의 파스 표시자의 값을 통해, 서브-패킷 명령으로서, 또는 서브-패킷 명령을 식별하는 대안적인 방법을 통해, 디코딩 동안 식별될 수 있다.) 예를 들어, 도 3에서, 명령(208)은 00의 값을 가지고, 명령(208)을 서브-패킷 명령으로서 식별하고, 명령(208)은 패킷 종단 명령임을 표시하는 파스 표시자(216)를 포함한다. 블록(840)에서, 복수의 서브-명령들 각각이 실행된다. 예를 들어, 도 3에서, 제1 서브-명령(218) 및 제2 서브-명령(220)이 실행된다. 특정 예시적인 실시예에서, 복수의 서브-명령들 모두가 동시에 실행된다. 예를 들어, 도 3에서, 제1 서브-명령(218) 및 제2 서브-명령(220)이 동시에 실행된다. 결정 블록(830)으로 돌아가면, 제1 명령이 서브-패킷 명령이 아닌 경우, 850에서 제1 명령이 실행된다. 예를 들어, 도 3에서, 디코딩 스테이지(304)에서, 명령(206)이 서브-패킷 명령이 아님이 결정되고, 명령(206)은 디코딩 스테이지(304)로부터 자신이 실행되는 실행 스테이지(306)로 진행한다고 결정된다. 방법은 860에서 종료한다.
도 9를 참조하면, 서브-명령들을 포함하는 VLIW 패킷을 프로세싱하기 위한 디지털 신호 프로세서를 포함하는 무선 디바이스의 특정 예시적인 실시예의 블록도가 도시되며 일반적으로 900으로 표기된다. 디바이스(900)는 VLIW 패킷(964) 내에 복수의 명령들을 프로세싱하기 위한 프로세서, 예를 들어, 디지털 신호 프로세서(DSP)(910)를 포함한다. VLIW 패킷(964)은 명령들(966, 968, 970 및 972)을 포함한다. VLIW 패킷(964)은 복수의 서브패킷 명령들을 포함하는 계층적 명령 패킷이다. VLIW 패킷(964)은 계층 내에서 명령들의 3개 레벨들을 포함한다. 각각의 서브패킷 명령은 복수의 서브-명령들을 포함한다. 예를 들어, 명령(972)은 서브-명령들(974 및 976)을 포함하는 서브패킷 명령(계층의 제2 레벨)이다. 서브-명령(974)은 서브-서브-명령들(978 및 980)을 포함하는 서브-서브패킷 명령(계층의 제3 레벨)이고, 서브-명령(976)은 서브-서브-명령들(982 및 984)을 포함하는 서브-서브패킷 명령(계층의 제3 레벨)이다.
DSP(910)의 디코딩 스테이지에서, VLIW 패킷(964)은 명령들(966, 968, 970 및 972)로 디코딩된다. 서브패킷 명령(972)은 서브-명령들(974 및 976)로 디코딩된다. 서브-명령(974)은 서브-서브-명령들(978 및 980)로 디코딩되고, 서브-명령(976)은 서브-서브 명령들(982 및 984)로 디코딩된다. 대안적인 예에서, DSP(910)는 도 3-5 중 하나 이상에 따라, 그리고 도 6 및 7의 방법들 중 하나 이상, 또는 이들의 임의의 조합에 따라 명령들(966, 968, 970, 978, 980, 982 및 984)을 프로세싱한다.
도 9는 또한 디지털 신호 프로세서(910) 및 디스플레이(928)에 커플링되는 디스플레이 제어기(926)를 도시한다. 코더/디코더(CODEC)(934)는 또한 디지털 신호 프로세서(910)에 커플링될 수 있다. 스피커(936) 및 마이크로폰(938)은 CODEC(934)에 커플링될 수 있다.
도 9는 또한 무선 제어기(940)가 디지털 신호 프로세서(910) 및 무선 안테나(942)에 커플링될 수 있음을 표시한다. 특정 실시예에서, DSP(910), 디스플레이 제어기(926), 메모리(932), CODEC(934) 및 무선 제어기(940)가 시스템-인-패키지 또는 시스템-온-칩 디바이스(922)에 포함된다. 특정 실시예에서, 입력 디바이스(930) 및 전원(944)은 시스템-온-칩 디바이스(922)에 커플링된다. 더욱이, 특정 실시예에서, 도 9에 예시된 바와 같이, 디스플레이(928), 입력 디바이스(930), 스피커(936), 마이크로폰(938), 무선 안테나(942) 및 전원(944)이 시스템-온-칩 디바이스(922) 외부에 있다. 그러나, 디스플레이(928), 입력 디바이스(930), 스피커(936), 마이크로폰(938), 무선 안테나(942) 및 전원(944) 각각은 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스(922)의 컴포넌트에 커플링될 수 있다.
당업자는 여기서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 구성들, 모듈들, 회로들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합들로서 구현될 수 있음을 추가로 이해할 것이다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명백하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들 및 단계들이 이들의 기능성의 견지에서 일반적으로 전술되었다. 이러한 기능성이 하드웨어로 구현되는지 소프트웨어로 구현되는지의 여부는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자는 각각의 특정 애플리케이션에 대해 다양한 방식들로 설명된 기능성을 구현할 수 있지만, 이러한 구현 결정들은 본 개시내용의 범위로부터 이탈을 야기하는 것으로서 해석되지 않아야 한다.
여기서 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 프로그램가능 판독-전용 메모리(PROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전기적 소거가능 판독-전용 메모리(EEPROM), 레지스터들, 하드 디스크, 이동식 디스크, 컴팩트 디스크 판독-전용 메모리(CD-ROM), 또는 당해 기술분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장매체로부터 정보를 판독하고, 저장 매체에 정보를 기입할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 주문형 집적 회로(ASIC)에 상주할 수 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말에 이산 컴포넌트들로서 상주할 수 있다.
개시된 실시예들의 이전 설명은 당업자로 하여금 개시된 실시예들을 제작 또는 사용하게 하도록 제공된다. 이들 실시예들에 대한 다양한 수정들은 당업자에게 자명할 것이며, 여기서 정의된 원리들은 본 개시내용의 범위로부터 벗어남이 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 개시내용은 여기서 도시된 실시예들에 제한되도록 의도되는 것이 아니라, 후속하는 청구항들에 의해 정의되는 바와 같은 원리들 및 신규한 특징들에 부합하는 가능한 최광의의 범위에 따라야 한다.

Claims (25)

  1. 명령들을 프로세싱하는 방법으로서,
    명령들의 패킷을 수신하는 단계 ― 상기 패킷은 복수의 명령들을 포함함 ―;
    상기 명령이 단일 명령인지 여부 또는 상기 명령이 복수의 서브-명령들을 포함하는 서브패킷인지 여부를 결정하기 위해 각각의 명령을 디코딩하는 단계 ― 상기 각각의 명령은 상기 명령이 서브패킷인지 여부 그리고 상기 명령이 패킷-종단(end-of-packet) 명령인지 여부를 식별하는 파스(parse) 식별자를 포함함 ―; 및
    상기 명령이 서브패킷이라는 결정에 응답하여, 상기 서브-명령들의 각각을 실행하는 단계
    를 포함하는, 명령들을 프로세싱하는 방법.
  2. 제1항에 있어서,
    상기 명령들의 패킷은 다수의 서브패킷들을 포함하는, 명령들을 프로세싱하는 방법.
  3. 제1항에 있어서,
    상기 명령들의 제1 서브-서브패킷을 식별하기 위해 상기 복수의 서브-명령들의 제1 서브패킷을 디코딩하는 단계를 더 포함하는, 명령들을 프로세싱하는 방법.
  4. 제1항에 있어서,
    상기 디코딩은 상기 복수의 명령들을 디코딩하도록 동작가능한 디코더에 의해 수행되는, 명령들을 프로세싱하는 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 복수의 명령들 중 하나의 명령은 명령의 타입을 식별하기 위해 사용되는 명령 클래스 필드를 포함하는, 명령들을 프로세싱하는 방법.
  7. 제1항에 있어서,
    상기 패킷은 VLIW(very long instruction word) 패킷인, 명령들을 프로세싱하는 방법.
  8. 삭제
  9. 제1항에 있어서,
    상기 복수의 서브-명령들의 각각은 제1 실행 유닛에서 실행되는, 명령들을 프로세싱하는 방법.
  10. 제1항에 있어서,
    상기 복수의 서브-명령들 중 제1 서브-명령은 제1 실행 유닛에서 실행되고, 상기 복수의 서브-명령들 중 제2 서브-명령은 제2 실행 유닛에서 실행되는, 명령들을 프로세싱하는 방법.
  11. 제10항에 있어서,
    상기 서브-명령들 중 상기 제1 서브-명령 및 상기 제2 서브-명령은 동시에 실행되는, 명령들을 프로세싱하는 방법.
  12. 제1항에 있어서,
    상기 패킷의 각각의 명령은 VLIW(very long instruction word) 명령을 포함하는, 명령들을 프로세싱하는 방법.
  13. 명령들을 프로세싱하는 방법으로서,
    명령들의 패킷을 수신하는 단계 ― 상기 패킷은 제1 명령 및 제2 명령을 포함하고, 각각의 명령은 상기 명령이 서브패킷인지 여부 그리고 상기 명령이 패킷-종단(end-of-packet) 명령인지 여부를 식별하는 파스(parse) 식별자를 포함함 ―;
    상기 제1 명령을 제1 실행 유닛으로 라우팅하는 단계;
    상기 제2 명령을 제1 서브-명령 및 제2 서브-명령을 포함하는 서브-패킷 명령으로서 식별하는 단계; 및
    상기 제1 서브-명령을 제2 실행 유닛으로 라우팅하는 단계
    를 포함하는, 명령들을 프로세싱하는 방법.
  14. 삭제
  15. 삭제
  16. 제13항에 있어서,
    상기 명령 유닛들 각각은 산술 실행 유닛 또는 로드/저장 데이터 유닛을 포함하는, 명령들을 프로세싱하는 방법.
  17. 제13항에 있어서,
    상기 제1 서브-명령 및 상기 제2 서브-명령을 동시에 실행하는 단계를 더 포함하는, 명령들을 프로세싱하는 방법.
  18. 제13항에 있어서,
    상기 제2 서브-명령을 제3 실행 유닛으로 라우팅하는 단계를 더 포함하는, 명령들을 프로세싱하는 방법.
  19. 프로세서로서,
    명령들의 패킷을 수신하기 위한 디코더 ― 상기 패킷은 복수의 명령들을 포함하고, 각각의 명령은 상기 명령이 서브패킷인지 여부 그리고 상기 명령이 패킷-종단(end-of-packet) 명령인지 여부를 식별하는 파스(parse) 식별자를 포함하고, 상기 디코더는 상기 명령이 제1 서브-명령 및 제2 서브-명령을 포함하는 서브-패킷 명령인지 여부를 결정하기 위해 각각의 명령을 디코딩하도록 동작함 ― ; 및
    상기 명령을 실행하거나 또는 상기 제1 서브-명령을 실행하기 위한 제1 실행 유닛을 포함하는, 프로세서.
  20. 제19항에 있어서,
    상기 제2 서브-명령을 실행하기 위한 제2 실행 유닛을 더 포함하는, 프로세서.
  21. 삭제
  22. 제19항에 있어서,
    상기 복수의 명령들 중 각각의 명령은 동일한 크기를 가지는, 프로세서.
  23. 제22항에 있어서,
    상기 제1 서브-명령 및 상기 제2 서브-명령의 각각과 연관된 크기는 상기 명령과 연관된 크기보다 더 작은, 프로세서.
  24. 삭제
  25. 제19항에 있어서,
    상기 제1 서브-명령 및 상기 제2 서브-명령의 각각과 연관된 크기는 상기 명령과 연관된 크기보다 더 작은, 프로세서.
KR1020127026019A 2010-03-03 2011-03-02 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법 KR101449732B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/716,359 US9678754B2 (en) 2010-03-03 2010-03-03 System and method of processing hierarchical very long instruction packets
US12/716,359 2010-03-03
PCT/US2011/026815 WO2011109476A1 (en) 2010-03-03 2011-03-02 System and method of processing hierarchical very long instruction packets

Publications (2)

Publication Number Publication Date
KR20120139773A KR20120139773A (ko) 2012-12-27
KR101449732B1 true KR101449732B1 (ko) 2014-10-13

Family

ID=43827510

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127026019A KR101449732B1 (ko) 2010-03-03 2011-03-02 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법

Country Status (7)

Country Link
US (1) US9678754B2 (ko)
EP (1) EP2542963B1 (ko)
JP (2) JP2013521577A (ko)
KR (1) KR101449732B1 (ko)
CN (1) CN102822794B (ko)
TW (1) TW201203104A (ko)
WO (1) WO2011109476A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620957B2 (en) * 2015-10-22 2020-04-14 Texas Instruments Incorporated Method for forming constant extensions in the same execute packet in a VLIW processor
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor
CN110381051A (zh) * 2019-07-12 2019-10-25 苏州浪潮智能科技有限公司 一种报文解析的方法、系统、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060259740A1 (en) 2005-05-13 2006-11-16 Hahn Todd T Software Source Transfer Selects Instruction Word Sizes

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2835103B2 (ja) 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP2806359B2 (ja) 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
US8583895B2 (en) 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US5890009A (en) 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
JP3578883B2 (ja) 1997-01-31 2004-10-20 三菱電機株式会社 データ処理装置
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6101592A (en) 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
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
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6356950B1 (en) 1999-01-11 2002-03-12 Novilit, Inc. Method for encoding and decoding data according to a protocol specification
US6385757B1 (en) 1999-08-20 2002-05-07 Hewlett-Packard Company Auto design of VLIW processors
US6564264B1 (en) * 1999-12-08 2003-05-13 At&T Corp. System, apparatus and method for automatic address updating of outgoing and incoming user messages in a communications network
US6658551B1 (en) 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
US7096343B1 (en) 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
US7181595B1 (en) 2000-05-11 2007-02-20 Mindspeed Technologies, Inc. Method for decoding composite VLIW packets utilizing a tree structure
KR100464406B1 (ko) 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
EP1367484B1 (en) 2002-05-31 2013-07-24 STMicroelectronics Limited Instruction encoding
US7523295B2 (en) 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7526633B2 (en) 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7590824B2 (en) 2005-03-29 2009-09-15 Qualcomm Incorporated Mixed superscalar and VLIW instruction issuing and processing method and system
US20070266229A1 (en) * 2006-05-10 2007-11-15 Erich Plondke Encoding hardware end loop information onto an instruction
US8775777B2 (en) 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8665996B2 (en) * 2008-04-01 2014-03-04 Qualcomm Incorporated Efficient parallel sub-packet decoding using multiple decoders

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060259740A1 (en) 2005-05-13 2006-11-16 Hahn Todd T Software Source Transfer Selects Instruction Word Sizes

Also Published As

Publication number Publication date
CN102822794A (zh) 2012-12-12
KR20120139773A (ko) 2012-12-27
US20110219212A1 (en) 2011-09-08
JP2013521577A (ja) 2013-06-10
WO2011109476A1 (en) 2011-09-09
EP2542963A1 (en) 2013-01-09
EP2542963B1 (en) 2016-02-24
JP2014238859A (ja) 2014-12-18
TW201203104A (en) 2012-01-16
CN102822794B (zh) 2016-08-03
US9678754B2 (en) 2017-06-13

Similar Documents

Publication Publication Date Title
US6968445B2 (en) Multithreaded processor with efficient processing for convergence device applications
US8868888B2 (en) System and method of executing instructions in a multi-stage data processing pipeline
KR101697548B1 (ko) Fifo 로드 명령
EP2734918B1 (en) Table call instruction for frequently called functions
US8843730B2 (en) Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
US20100077187A1 (en) System and Method to Execute a Linear Feedback-Shift Instruction
KR101449732B1 (ko) 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법
US8707013B2 (en) On-demand predicate registers
US8874884B2 (en) Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
US20130042091A1 (en) BIT Splitting Instruction
US20120117360A1 (en) Dedicated instructions for variable length code insertion by a digital signal processor (dsp)

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: 20170929

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 6