KR20090042320A - 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법 - Google Patents

스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법 Download PDF

Info

Publication number
KR20090042320A
KR20090042320A KR1020097005421A KR20097005421A KR20090042320A KR 20090042320 A KR20090042320 A KR 20090042320A KR 1020097005421 A KR1020097005421 A KR 1020097005421A KR 20097005421 A KR20097005421 A KR 20097005421A KR 20090042320 A KR20090042320 A KR 20090042320A
Authority
KR
South Korea
Prior art keywords
vector
scalar
processor
instruction
register
Prior art date
Application number
KR1020097005421A
Other languages
English (en)
Other versions
KR101072707B1 (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 KR20090042320A publication Critical patent/KR20090042320A/ko
Application granted granted Critical
Publication of KR101072707B1 publication Critical patent/KR101072707B1/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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터를 가지는 레지스터 파일을 포함하는 프로세서 디바이스가 개시된다. 상기 프로세서 디바이스는 스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터를 사용한다. 또한 비교 연산은 상기 조합 조건 코드 레지스터에 결과 비트들을 저장할 수 있고, 조건부 연산은 조건을 평가하기 위해 조건 코드 레지스터 비트들을 사용할 수 있다.

Description

스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법{SYSTEM AND METHOD OF PROCESSING DATA USING SCALAR/VECTOR INSTRUCTIONS}
본 발명은 일반적으로는 데이터를 처리하는 시스템 및 방법에 관한 것이며, 더 구체적으로는 벡터 및 스칼라 연산들을 처리하는 시스템 및 방법에 관한 것이다.
기술에서의 진보로 더 소형화되고 더 강력한 개인용 컴퓨팅 디바이스들이 초래되었다. 예를 들어, 무선 컴퓨팅 디바이스들을 포함한 다양한 휴대용 개인 컴퓨팅 디바이스들, 예를 들어, 소형이고, 경량이며, 사용자들에 의해 용이하게 운반되는 페이징 디바이스들, 개인 휴대용 정보 단말기(PDA), 휴대용 무선 전화들이 현재 존재한다. 더 구체적으로, 셀룰러 폰이나 IP 폰과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 통신할 수 있다. 추가로, 많은 이러한 무선 전화들은 거기에 통합된 다른 타입들의 디바이스들을 포함한다. 예를 들어, 무선 전화는 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 레코더, 및 오디오 파일 플레이어를 포함할 수 있다. 또한 이러한 무선 전화들은 인터넷을 액세스하는데 사용될 수 있는 웹 인터페이스를 포함할 수 있다. 따라서, 이들 무선 전화들은 상당한 컴퓨팅 기능(capability)들을 포함한다.
통상적으로, 이들 디바이스들이 더 소형화되고 더 강력해짐에 따라, 이들은 더더욱 자원 제약적이 되고 있다. 예를 들어, 스크린 사이즈, 사용가능한 메모리 및 파일 시스템 공간의 양, 입력 및 출력 용량은 상기 디바이스의 작은 사이즈로 인해 제한될 것이다. 더욱이, 배터리 사이즈, 상기 배터리에 의해 제공되는 전력량, 및 상기 배터리의 수명 역시 제한된다. 디바이스의 배터리 수명을 증가시키는 한 방법은 더 적은 전력을 소모하는 프로세서들을 설계하는 것이다.
특정 타입들의 프로세서들은 벡터 프로세싱을 위한 벡터 아키텍처를 사용하는 것이다. 벡터 아키텍처를 사용하는 프로세서들은 벡터로 동작하는 하이-레벨 연산들, 즉, 데이터의 선형 어레이들을 제공한다. 벡터 프로세싱은 명령을 한번 패치(fetch) 시키고, 이후 서로 다른 데이터를 사용하여 상기 명령을 다수번 실행시킨다. 이는 프로그램을 실행하는데 요구되는 에너지가 감소될 것을 요구하는데, 왜냐하면 인자들 중 특히 각각의 명령이 더 적은 횟수만큼 패치될 필요가 있기 때문이다. 또한, 벡터 아키텍처를 사용하는 프로세서들은 보통 다수의 연산들이 동시에 이루어지도록 하여 상기 연산들 사이의 병렬화(parallelism)를 생성하게 한다.
반면, 다른 타입들의 프로세서들은 스칼라 프로세싱을 위한 스칼라 아키텍처를 사용한다. 스칼라 프로세싱은 명령이 실행될 때마다 데이터 및 명령을 패치시킨다. 명령이 다수번 실행될 것을 요구하는 루프를 실행할 때, 스칼라 아키텍쳐를 사용하는 프로세서는 상기 명령을 다수번 패치시킬 것이다.
벡터 프로세싱은 데이터의 큰 세트에 대해 동일한 연산이 수행될 것을 요구 하는 작업들을 위해 바람직하다. 그러나, 벡터 아키텍처를 가지는 프로세서는 스칼라 조건들을 고려하지 않거나 또는 스칼라 결과를 획득하지 않는다. 다수의 비디오 스트림들을 처리하도록 기대되는 비디오 디바이스에 있어서, 스칼라 연산들은 프로세서가 선형 스케일링 성능 요건을 가지는 경우 유용하다. 이러한 이유로, 기존의 프로세서들은 멀티미디어 프로세싱을 위해 스칼라 아키텍처를 사용한다. 병렬화의 부족으로, 이러한 접근법은 프로세서가 매우 빨리 동작할 것을 요구하는데 이는 전력 소모의 측면에서 비효율적이다.
따라서, 스칼라 조건들을 고려하는 벡터 연산들을 처리하는 방법 및 개선된 처리 시스템을 제공하는 것이 유리하다.
프로세서 디바이스가 개시되며, 스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터를 포함하는 제어 레지스터, 및 둘 모두 조합 조건 코드 레지스터를 사용하는 스칼라 및 벡터 명령들을 실행하기 위한 적어도 하나의 명령 실행 유닛을 포함한다.
특정 실시예에서, 프로세서 디바이스는 메모리 유닛 및 상기 메모리 유닛에 응답하는 시퀀서(sequencer)를 포함한다. 상기 명령 실행 유닛은 상기 시퀀서에 응답한다. 또한, 또다른 특정 실시예에서, 상기 프로세서 디바이스는 조합 조건 코드 레지스터를 사용하는 스칼라 연산을 위한 명령 및 상기 조합 조건 코드 레지스터를 사용하는 벡터 연산을 위한 명령을 가지는 메모리 유닛을 포함한다. 또다른 실시예에서, 상기 프로세서 디바이스는 스칼라 비교 연산을 포함한다. 또다른 실시예에서, 상기 프로세서 디바이스는 벡터 비교 연산을 포함한다.
또다른 실시예에서, 프로세서 디바이스는 상기 조합 조건 코드 레지스터에 기초하여 조건부로 실행되는 스칼라 연산을 포함한다. 또다른 실시예에서, 상기 프로세서 디바이스는 입력으로서 상기 조합 조건 코드 레지스터에서 사용하는 스칼라 연산을 포함한다.
또다른 실시예에서, 프로세서 디바이스는 조합 조건 코드 레지스터에서의 결과에 기초하여 조건부로 실행되는 벡터 연산을 포함한다. 특정 실시예에서, 상기 프로세서 디바이스는 벡터 비교 연산의 결과를 저장하기 위해 조합 조건 코드 레지스터를 사용하는 벡터 비교 연산을 포함한다.
특정 실시예에서, 프로세서 디바이스는 바이트, 하프-워드(half-word), 워드, 및 더블 워드로 동작들을 수행하는 명령 실행 유닛들을 포함한다.
본원에 개시된 상기 실시예들 중 하나 이상의 이점들은 프로세서 디바이스의 성능을 실질적으로 향상시키는 것을 포함할 수 있다. 또다른 이점은 상기 프로세서 디바이스에 대한 더 낮은 전력 사용을 제공하는 것을 포함할 수 있다.
본 발명의 다른 양상들, 이점들, 및 특징들은 다음 섹션들 : 도면의 간단한 설명, 실시예, 및 청구항들을 포함한, 전체 명세서의 리뷰 이후에 명백해질 것이다.
본원에 설명된 실시예들의 양상들 및 이점들은 첨부 도면들과 연관하여 설명될 때 다음 상세한 설명을 참조하여 더 자명해질 것이다.
도 1은 일 예시적인 디지털 신호 프로세서의 블록도이다.
도 2는 일 예시적인 명령의 일반적인 도면이다.
도 3은 벡터 비교 명령의 일반적인 도면이다.
도 4는 벡터 하프-워드 비교 명령의 일반적인 도면이다.
도 5는 벡터 멀티플렉서 명령의 일반적인 도면이다.
도 6은 스칼라 연산을 실행하는 방법의 흐름도이다.
도 7은 스칼라 조건부 연산을 실행하는 방법의 흐름도이다.
도 8은 벡터 연산을 실행하는 방법의 흐름도이다.
도 9는 벡터 조건부 연산을 실행하는 방법의 흐름도이다.
도 10은 디지털 신호 프로세서를 포함하는 휴대용 통신 디바이스의 블록도이다.
도 11은 디지털 신호 프로세서를 포함하는 일 예시적인 셀룰러 폰의 블록도이다.
도 12는 디지털 신호 프로세서를 포함하는 일 예시적인 무선 인터넷 프로토콜 전화의 블록도이다.
도 13은 디지털 신호 프로세서를 포함하는 일 예시적인 PDA(portable digital assistant)의 블록도이다.
도 14는 디지털 신호 프로세서를 포함하는 일 예시적인 오디오 파일 플레이어의 블록도이다.
도 1은 프로세서(100)의 일 예시적이며 비제한적인 실시예의 블록도를 예시한다. 특정 실시예에서, 프로세서(100)는, 예컨대 매우 다양한 신호, 이미지, 및 비디오 처리 어플리케이션들에 대한 고성능 및 저전력의 범용 DSP와 같은, 디지털 신호 프로세서(DSP)이다.
특정 실시예에서, 프로세서(100)는 DSP 발신 명령 세트와 스칼라 명령 세트를 조합한다. 이러한 실시예에서, 프로세서(100)는 고정-포인트 데이터에 대한 연산을 제공하는, 제거 명령 세트 컴퓨터(Reduced Instruction Set Computer : RISC)와 유사한, 완전한 그리고 직교인 스칼라 명령 세트를 포함한다. 스칼라 명령들은 더 나은 유연성 및 성능을 달성하기 위해, 직교이며 RISC-류가 되도록 설계된다. 또한, 상기 프로세서(100)는 다양한 DSP 연산들을 제공하기 위한 벡터 명령 세트를 포함한다. 상기 조합은 신호 처리 어플리케이션들을 위한 연산들의 풍부한 세트를 제공한다.
특정 실시예에서, 프로세서(100)는 고정-포인트 데이터에 대한 연산들, 부분적 스케일링, 포화, 반올림, 단일 정밀도(single precision), 더블 정밀도(double precision), 복소수, 벡터 하프-워드, 및 벡터 바이트 연산들을 포함하는 M-타입 연산들을 지원한다. 특정 실시예에서, 프로세서(100)는 스칼라 시프트, 벡터 시프트, 치환(permute), 비트 관리, 결정(predicate) 연산들을 포함하는 S-타입 연산들을 지원한다. 특정 실시예에서, 상기 프로세서(100)는 산술 논리 유닛(ALU), 치환, 벡터 바이트, 벡터 하프-워드, 및 벡터 워드 연산들을 포함하는 ALU64 연산들을 지원한다. 특정 실시예에서, 프로세서(100)는 가산, 감산, 32-비트 데이터 상 에서 포화 없는 부정(negate), 스칼라 32-비트 비교, 조합 하프-워드, 조합 워드, 시프트 하프워드, 멀티플렉서(MUX), 연산 없음(Nop), 부호 및 제로 확장 바이트들을 포함하는 ALU64 연산들, 및 즉시 전달 및 레지스터를 지원한다. 특정 실시예에서, 상기 프로세서(100)는 제어 레지스터 전달 명령들과 같은 제어 레지스터 연산들을 지원한다.
도 1에 예시된 바와 같이, 프로세서(100)는 버스(106)를 통해 시퀀서(104)와 연결된 메모리(102)를 포함한다. 특정 실시예에서, 상기 메모리(102)는 통합형 메모리 모델이다. 특정 실시예에서, 버스(106)는 128-비트 버스이고, 시퀀서(104)는 32비트 길이를 가지는 메모리(102)로부터 명령들을 검색하도록 구성된다. 상기 시퀀서(104)는 제 1 명령 실행 유닛(136), 제 2 명령 시행 유닛(138), 제 3 명령 실행 유닛(140) 및 제 4 명령 실행 유닛(142)에 연결된다. 도 1은 각각의 명령 실행 유닛(136,138,140,142)이 범용 레지스터 파일(144)에 연결될 수 있음을 표시한다. 상기 범용 레지스터 파일(144)은 또한 제어 레지스터 파일(110) 및 메모리(102)에 연결될 수 있다.
특정 실시예에서, 상기 범용 레지스터 파일(144)은 단일 레지스터들로서, 혹은 정렬된 64-비트 쌍들로서 액세스될수 있는 32개의 32비트 레지스터들을 유지하는 단일 통합형 레지스터 파일이다. 특정 실시예에서, 범용 레지스터 파일(144)은 포인터, 스칼라, 벡터, 및 누적기 데이터를 유지한다. 상기 범용 레지스터 파일(144)은 어드레스 생성, 스칼라 산술, 벡터 산술을 포함하는 범용 계산을 위해 사용될 수 있다. 특정 실시예에서, 상기 범용 레지스터 파일은 로드/저장을 위한 어드레스들을 포함하는, 명령들의 오퍼랜드들, 수치 명령들을 위한 데이터 오퍼랜드들, 및 벡터 명령들을 위한 벡터 오퍼랜드들을 제공한다.
특정 실시예에서, 상기 메모리(102)는 데이터 및 명령들을 모두 유지하는 단일 32비트 어드레스 공간을 가지는 통합형 바이트-어드레스지정가능 메모리이며, 리틀 에디안 모드(Little Edian Mode)로 동작하되, 메모리 내 최하 어드레스 바이트는 레지스터의 최하위 바이트로 유지된다. 동작동안, 시퀀서(104)는 상기 메모리(102)로부터 명령들을 패치할 수 있다.
프로세서(100)의 동작동안 명령들은 시퀀서(104)에 의해 메모리로부터 패치되고, 지정된 명령 실행 유닛(136,138,140,142)에 의해 전송되며, 명령 실행 유닛(136,138,140,142)에서 실행된다. 명령들은 스칼라 및 벡터 명령들, 예를 들어, 스칼라 및 벡터 비교 연산들, 스칼라 조건부 연산들, 및 벡터 멀티플렉서 연산들을 포함할 수 있다. 특정 실시예들에서, 시퀀서(104)는 4개의 32-비트 명령들을 한번에 패치시킬 수 있고, 명령 실행 유닛들(136,138,140,142)과 병렬로 4개의 명령들을 생성(issue)할 수 있다. 명령들은 다양한 타입들의 1 내지 4개 명령들의 패킷들로 병렬 실행을 위해 그룹화될 수 있다. 가변 길이의 패킷들은 프로그램에서 자유롭게 믹스될 수 있다. 각각의 명령 실행 유닛(136,138,140,142)의 결과들은 범용 레지스터 파일(144)에 기록될 수 있다. 특정 실시예서 상기 프로세서(100)는 매 사이클마다 메모리로부터 레지스터들로의 2개의 64-비트 더블 워드들의 이동을 지원한다.
특정 실시예에서, 상기 프로세서(100)는 컴파일러 요건들(needs) 및 DSP 어 플리케이션 요건들 모두에 테일러형태로 붙은(tailered) 어드레스지정 모드들의 완전한 세트를 특징으로 하는 로드/저장 아키텍쳐를 가질 수 있다. 선형, 순환형 버퍼들,및 비트 반전 어드레스 지정이 지원될 수 있다. 로드들 및 저장치들은 바이트(8비트), 하프워드(16비트), 워드(32비트), 및 더블 워드(64비트)에 대해 사인형(signed) 혹은 언사인형(unsigned)일 수 있다. 특정 실시예에 있어서, 상기 프로세서(100)는 두 개의 병렬 로드들 혹은 하나의 로드 및 하나의 저장을 병렬로 지원한다.
특정 실시예에서, 상기 명령 실행 유닛(136)은 벡터 시프트/치환/산술 논리 유닛(ALU) 유닛이고, 명령 실행 유닛(138)은 벡터 곱셈/ALU 유닛이고, 명령 실행 유닛(140)은 로드/ALU 유닛이고, 그리고 명령 실행 유닛(142)은 로드/저장/ALU 유닛이다.
특정 실시예에서, 32비트 제어 레지스터들의 세트는 전용 특징부들로의 액세스를 제공한다. 제어 레지스터들은 예컨대 제어 레지스터 파일(110)과 같은 단일 제어 레지스터 파일로 논리적으로 그룹화될 수 있다. 이들 제어 레지스터들은 스칼라 및 벡터 연산들의 결과를 유지할 수 있는, 결정 레지스터들(120)과 같은 조합 결정 레지스터를 포함할 수 있다. 결정 레지스터는 조건 코드 레지스터와 유사어이다. 상기 제어 레지스터 파일(110)은 또한 루프 레지스터들(112,114,116,118) 및 수정자 레지스터들(124,126), 사용자 상태 레지스터(USR)(128), 프로그램 카운터(PC) 레지스터(130), 및 사용자 일반 포인터 레지스터(132)를 포함할 수 있다. 특정 실시예에서, 상기 제어 레지스터 파일(110)은 예비 레지스터들, 예컨대 예비 레지스터들(122 및 134)을 포함한다. 특정 실시예에서, 명령들은 제어 레지스터 파일(110) 및 범용 레지스터 파일(144) 사이에서 레지스터들을 전달하는데 이용가능하다. 특정 실시예에서, 결정 레지스터들(120)는 4개의 8비트 결정 레지스터들이다.
특정 실시예에서, 도 6 및 도 8에 대해 아래에서 설명되는 바와 같이, 비교 명령들은 결정 레지스터(120)에 비트들을 설정할 수 있다. 상기 비교 명령들은 결정 레지스터들(120)에 비교 연산들의 결과를 저장할 수 있다. 특정 실시예에서, 비교 명령들은 벡터 및 스칼라 비교 명령들을 포함한다. 스칼라 비교 명령들은 비교-대-즉시 및 레지스터-레지스터 비교 형태들 모두에서 사용가능하다.
특정 실시예에서, 상기 결정 레지스터들(120)에 저장된 비트들은 도 7 및 도 8에 대해 설명된 바와 같이, 특정 명령들을 조건부로 실행하기 위해 사용될 수 있다. 특정 실시예에서, 비교 명령의 결과들은 결정 레지스터들(120) 중 하나에 저장되고, 이후 조건부 명령들에 대한 조건 비트들로서 사용된다. 예를 들어, 분기 명령들 및 멀티플렉서(MUX) 명령들과 같은 벡터 명령들은 상기 결정 레지스터들(120)의 프라이머리(primary) 소비자들이다. 그러나, 특정 스칼라 명령들 역시 조건 비트들로서 상기 결정 레지스터들(120)에 저장된 비트들을 사용할 수 있다. 특정 실시예에서, 상기 결정 레지스터들(120)을 사용하는 스칼라 연산들만이 상기 벡터 연산들이 더 많은 비트들을 검사하는 동안 최하위 비트를 검사한다.
예를 들어, 특정 실시예에서, 점프-투-어드레스(jump-to-address), 점프-투-어드레스-프롬-레지스터(jump-to-address-from-register), 호출-서브루틴, 및 호출 -서브-루틴-프롬-레지스터와 같은 명령들은 결정 레지스터들(120)에 저장된 비트들을 사용한다. 상기 점프-투-어드레스 명령 및 점프-투-어드레스-프롬-레지스터 명령은 프로그램 흐름을 변경하는데 사용된다. 상기 호출-서브루틴 명령 및 상기 호출-서브루틴-프롬-레지스터 명령은 서브루틴으로 프로그램 흐름을 변경하는데 사용된다.
특정 실시예에서, 프로세서(100)는 결정 레지스터들(120)을 관리하고 이동시키기 위한 명령들의 세트를 가진다. 상기 명령들은 AND,OR,NOT, 및 NOR를 포함하는 논리 명령들을 포함한다. 또한, 포함된 추가 명령들은 결정상의 논리적 감소(logical-reductions-on-predicates)이다. 제 1 결정상의 논리적 감소 명령은 소스 결정 레지스터 내 하위 8비트 중 임의의 비트가 설정되는 경우 0xff로 결정 목적지 레지스터를 설정하고, 그렇지 않은 경우, 상기 목적지 결정 레지스터는 0x00으로 설정된다. 또다른 명령은 소스 결정 레지스터 내 하위 8비트 모두가 설정되는 경우, 결정 목적지 레지스터를 0xff로 설정하고, 그렇지 않은 경우, 목적지 결정 레지스터는 0x00으로 설정된다.
특정 실시예에서, 프로세서(100)는 제로-오버헤드(zero-overhead) 하드웨어 루프들을 지원한다. 사용시 매우 적은 제약들을 가지는 내포가능한(nestable) 루프 머신들의 두 세트가 존재한다. 소프트웨어 분기들은 결정 분기 메커니즘을 통해 동작한다. 명시적인 비교 명령들은 결정 비트를 생성한다. 생성된 비트는 조건부 분기 명령들에 의해 사용된다. 조건 및 무조건 점프들, 및 서브루틴 호출들은 PC 관련 및 레지스터 간접 형태 모두로 지원된다.
특정 실시예에서, 프로세서(100)는, 프로세서(100)가 제 1 명령이 완료되기 전에 제 2 명령을 실행하기 시작하는, 파이프라인을 지원한다.
도 2는 프로세서(100)에 의해 실행될 수 있는 일 예시적인 명령인, 벡터 감소 곱 하프워드 명령(200)에 대한 도면을 예시한다. 도 2에 예시된 바와 같이, 제 1 64비트 벡터(202)의 하프-워드(미도시) 및 제 2 64비트 벡터(204)의 하프워드는 206에서 곱해진다. 중간 곱들(212)은 이후 208에서 함께 더해진다. 전체 64-비트 결과는 목적지 레지스터(210)에 저장된다. 특정 실시예에서, 목적지 레지스터(210)에 저장된 64-비트 결과는 208에서 선택적으로 더해진다. 명령(200)은 명령 실행 유닛(138)에 의해 실행될 수 있다. 특정 실시예에서, 상기 명령 유닛(138)은 단일 정밀도(16x16), 더블 정밀도(32x32 및 32x16), 벡터, 및 복소 데이터에 대한 연산을 지원하는 벡터 곱-누산기(MAC) 유닛이다. 바람직하게는, 상기 명령 실행 유닛(138)은 스칼라 및 패킹된 벡터 데이터 모두에 대해 다양한 DSP 연산들을 수행할 수 있다. 더욱이, 상기 실행 유닛(138)은 자동 스케일링, 포화 및 반올림을 지원하는 명령 형태들을 지원할 수 있다.
도 3은, 프로세서(100)에 의해 실행될 수 있는 일 예시적인 명령인 벡터 비교 명령(300)의 도면을 예시한다. 도 3에서 예시된 바와 같이, 제 1 64-비트 벡터(302) 및 제 2 64-비트 벡터(304)는 306에서 비교된다. 벡터(302) 및 벡터(304)의 각각의 엘리먼트가 비교되며, 참/거짓(true/false) 결과들의 비트 벡터(308)가 생성된다. 상기 참/거짓 결과들의 비트 벡터(308)의 각각의 비트는 비교 출력값에 따라 0 또는 1로 설정된다. 특정 실시예에서, 상기 참/거짓 결과들의 비트 벡 터(308)는 결정 레지스터들(120) 중 하나에 저장된다.
도 4는 프로세서(100)에 의해 실행될 수 있는 일 예시적인 명령인 벡터 하프-워드 비교 명령(400)의 다이어그램을 예시한다. 도 4에 예시된 바와 같이, 제 1 64비트 벡터(402)의 하프 워드(미도시) 및 대응하는 제 2 64-비트 벡터(404)의 하프워드(미도시)는 406에서 비교된다. 벡터(402) 및 벡터 (404)의 각각의 하프 워드가 비교되고, 참/거짓 결과들의 비트 벡터(408)가 생성된다. 하프-워드 비교를 위해 참/거짓 결과들의 비트 벡터(408)의 2개 비트들은 각각의 비교 출력에 따라 0 또는 1로 설정된다. 유사한 방식으로, 워드 비교를 위해, 결과 벡터의 4개 비트들은 각각의 비교 출력에 따라 0 또는 1로 설정된다. 특정 실시예에서, 참/거짓 결과들의 비트 벡터(408)는 결정 레지스터들(120) 중 하나에 저장된다.
도 5는 프로세서(100)에 의해 실행될 수 있는, 일 예시적인 명령인 벡터 MUX 명령(500)의 도면을 예시한다. 도 5에서 예시된 바와 같이, 제 1 64-비트 벡터(502)의 각각의 엘리먼트 및 제 2 64-비트 벡터(504)의 각각의 대응하는 엘리먼트는 506에서 조건적으로 선택된다. 벡터(502)의 각각의 바이트 및 벡터(504)에서의 대응하는 바이트에 대해, 대응 비트(210)는 조건 비트로서 사용된다. 특정 실시예에서, 비트들(510)은 결정 레지스터들(120) 중 하나에 저장된다. 상기 조건 비트(510)는 MUX 연산의 결과를 결정한다. 상기 MUX는 벡터(502) 또는 벡터(504) 중 하나로부터 바이트의 값을 선택하고 따라서 두 벡터들 간의 엘리먼트 단위(element-wise) 선택을 수행하도록 동작한다. 상기 벡터 MUX 명령은 결과들의 바이트 벡터(508)를 생성한다. 특정 실시예에 있어서, 결정 레지스터들(120) 중 하나의 하위 8 비트들 각각에 대해, 비트가 설정되는 경우, 상기 결과(508)의 대응 바이트들은 벡터(502)로부터의 대응 바이트로 설정된다. 그렇지 않은 경우, 상기 결과(508)의 대응 바이트는 상기 벡터(504)로부터의 대응 바이트로 설정된다. 특정 실시예에서, 결과들(508)의 바이트 벡터는 범용 레지스터(144) 내 목적지 레지스터(미도시)에 저장된다.
도 6은 스칼라 연산을 실행하는 방법의 흐름도를 예시한다. 스칼라 명령은 예컨대 명령 실행 유닛들(136,138,140,142) 중 하나와 같은, 명령 실행 유닛에 의해 602에서 수신될 수 있다. 이후 스칼라 명령은 604에서 명령 실행 유닛에 의해 실행된다. 상기 명령 실행으로부터의 결과 비트들은 이후 606에서 결과 레지스터에 설정된다. 특정 실시예에 있어서, 상기 결과 비트들은 결정 레지스터들(120) 중 하나에 설정된다. 특정 실시예에서, 상기 명령은 스칼라 비교 명령이며, 여기서 스칼라 비교 명령은 결정 레지스터들(120) 중 하나에 있는 모든 비트를 참(true) 비교에 대해 1로 설정하고, 결정 레지스터들(120) 중 하나에 있는 모든 비트를 거짓(false) 비교에 대해 0으로 설정한다.
도 7은 스칼라 조건부 연산을 실행하는 방법 및 흐름도를 예시한다. 스칼라 조건부 명령은, 예컨대 명령 실행 유닛들(136,138,140,142) 중 하나와 같은 명령 실행 유닛에 의해, 702에서 수신될 수 있다. 명령 실행 유닛은 704에서 상기 스칼라 조건 명령이 실행되어야 할지의 여부를 결정한다. 특정 실시예에 있어서, 704에서, 상기 결정은 결정 레지스터들(120) 중 하나에서 최하위 비트를 검사함으로써 이루어진다. 만약 상기 결정이 실행되지 않는 경우, 스칼라 조건 연산은 710에서 실행되지 않는다. 만약 상기 결정이 실행되는 경우, 상기 스칼라 조건 연산은 이후 706에서 명령 실행 유닛에 의해 실행된다. 명령 실행으로부터의 결과 비트는 이후 708에서 결과 레지스터에 설정된다.
도 8은 벡터 연산을 실행하는 방법의 흐름도를 예시한다. 특정 실시예에서, 벡터 연산은 벡터 비교 연산이다. 벡터 명령은 802에서, 명령 실행 유닛들(136,138,140,142) 중 하나와 같은 명령 실행 유닛에 의해 수신될 수 있다. 이후 벡터 명령은 804에서 명령 실행 유닛에 의해 실행된다. 상기 명령 실행으로부터의 결과 비트들은 806에서 결과 레지스터에 설정된다. 특정 실시예에 있어서, 상기 결과 비트들은 결정 레지스터들(120) 중 하나에 설정된다.
특정 실시예에서, 상기 프로세서(100)는 동등 비교, 사인형(signed) 부등 비교, 언사인형(unsigned) 부등 비교를 포함하는 비교 연산들의 3가지 형태들을 지원한다. 이들 3가지 형태들은 사인형 및 언사인형 값들의 모든 비교치들을 생성하기에 충분한다. 각각의 비교의 출력은 어느 경우든 사용될 수 있는 참 혹은 거짓 값을 생성한다. 추가적으로, 레지스터 오퍼랜드들은 또다른 비교를 생성하기 위해 반전될 수 있다. 오퍼랜드들을 스와핑하고 그 결과들의 양 측면들 모두를 사용함으로써, 사인형 및 언사인형 비교들의 풀 컴플리먼트(full compliment)를 수행할 수 있다.
도 9는 벡터 조건부 연산을 실행하는 방법의 흐름도를 예시한다. 특정 실시예에서, 벡터 조건 연산은 벡터 MUX 연산이다. 벡터 조건부 연산은 명령 실행 유닛들(136,138,140,142)과 같은 명령 실행 유닛에 의해 902에서 수신될 수 있다. 명령 실행 유닛은 904에서 비트들(510)과 같은 조건 비트들의 세트를 획득한다. 특정 실시예에서, 획득된 비트들은 결정 레지스터들(120) 중 하나로부터 온 것이다. 이후 상기 획득된 비트들은 벡터 조건 명령이 실행될 때, 906에서, 상기 명령 실행 유닛에 의해 사용된다. 이후 상기 명령 실행으로부터의 결과 비트들이 908에서 결과 레지스터에 설정된다. MUX 명령들의 소스 오퍼랜드들을 스와핑함으로써, 상기 결과들의 두 측면들이 형성될 수 있다.
예를 들어, 벡터 MUX 연산에서, 제 1 벡터 내 각각의 바이트 및 제 2 비트 내 대응하는 바이트는 대응하는 조건 비트 벡터를 사용하여 조건부로 선택된다. 특정 실시예에 있어서, 상기 조건 비트들은 결정 레지스터들(120) 중 하나에 저장된다. 상기 MUX는 상기 제 1 벡터 또는 상기 제 2 벡터로부터 바이트 값을 선택하고, 따라서 두 벡터들 간에 엘리먼트 단위 바이트 선택을 수행하도록 동작한다. 상기 벡터 MUX 명령은 결과들의 바이트 벡터를 생성한다. 특정 실시예에서, 결정 레지스터들 중 하나의 하위 8 비트들 각각에 대해, 비트가 설정되는 경우, 그 결과의 대응하는 바이트가 상기 제 1 벡터로부터 대응하는 바이트로 설정된다. 그렇지 않은 경우, 상기 결과의 대응 바이트는 상기 제 2 벡터로부터의 대응 바이트로 설정된다. 특정 실시예에서, 결과들의 바이트 벡터는 범용 레지스터(144)의 목적지 레지스터(미도시)에 저장된다.
특정 실시예에서, 프로세서(100)는 조건부 선언들 사용하여 루프들을 벡터화하기 위해 벡터 조건부 명령들을 사용한다. 예를 들어, 스칼라 명령 루프에서, 스칼라 명령이 패치되고 상기 루프의 각각의 연속적인 반복을 위해 실행된다. 벡터 조건 명령에 있어서, 상기 루프는 상기 명령이 한번 패치되어 상기 벡터에 대해 실행되도록 상기 조건부 연산들과 대체될 수 있다. 예를 들어, 후속하는 C-코드 루프는 명령 및 데이터를 8번 패치한다:
Figure 112009015796247-PCT00001
이러한 C-코드 루프는 상기 명령 및 데이터를 바람직하게는 한번 패치하는 2개의 벡터 연산들로써 대체될 수 있다. 상기 예시적인 C-코드 루프를 벡터화하기 위해, 2개의 벡터 연산들이 실행된다. 먼저, 비교 연산은 벡터 A 내 바이트들과 0을 비교하도록 실행되고 그 결과 비트들은 레지스터, 바람직하게는 결정 레지스터들(120) 중 하나에 저장한다. 두번째로, 벡터 MUX 연산은 벡터 B 및 벡터 C의 바이트들 사이에서 선택하기 위한 조건 비트들로서 벡터 A 비교 결과를 사용하도록 실행된다. 벡터 MUX 연산의 결과들은 레지스터에 저장될 수 있다. 따라서, 명령들 및 데이터가 더 적은 횟수로 패치되기 때문에, 벡터 조건 연산들은 상기 프로세서로 하여금 조건 선언들을 가지는 루프들보다 더 빨라지고, 더 효율적이 되며 더 적은 전력을 소모하는 것을 허용한다.
도 10은 일반적으로 1020으로 표기된 휴대용 통신 디바이스의 일 예시적이고 비-제한적인 실시예를 예시한다. 도 10에서 예시된 바와 같이, 상기 휴대용 통신 디바이스는 디지털 신호 프로세서(1024)를 포함하는 온-칩 시스템(1022)을 포함한다. 특정 실시예에 있어서, 상기 디지털 신호 프로세서(1024)는 도 1에 도시되고 본원에서 설명되는 프로세서이다. 도 10에 예시된 바와 같이, DSP(1024)는 스칼라 연산들 및 벡터 연산들을 위한 조합 결정 레지스터(1090)를 포함한다. 특정 실시예에서, 비교 연산들은 결정 레지스터(1090)에 결과들을 저장하고 조건 연산들은 조건부 비트들로서, 예를 들어 전술된 벡터 MUX 명령에, 상기 저장된 비교 결과들을 사용한다. 도 10은 또한 디지털 신호 프로세서(1024) 및 디스플레이(1028)에 연결된 디스플레이 제어기(1026)를 도시한다. 더욱이, 입력 디바이스(30)는 디지털 신호 프로세서(1024)에 연결된다. 도시된 바와 같이, 메모리(1032)는 디지털 신호 프로세서(1024)에 연결된다. 추가적으로, 코더/디코더(CODEC)(1034)는 디지털 신호 프로세서(1024)에 연결된다. 스피커(1036) 및 마이크로폰(1038)은 CODEC(1034)에 연결될 수 있다.
도 10은 또한 무선 제어기(1040)가 디지털 신호 프로세서(1024) 및 무선 안테나(1042)에 연결될 수 있음을 표시한다. 특정 실시예에서, 전원(1044)은 온-칩 시스템(1002)에 연결된다. 더욱이, 특정 실시예에서, 도 10에 예시된 바와 같이, 디스플레이(1026), 입력 디바이스(1030), 스피커(1036), 마이크로폰(1038), 무선 안테나(1042), 및 전원(1044)은 온-칩 시스템(1022)에 대해 외부에 있다. 그러나, 각각은 온-칩 시스템(1022)의 컴포넌트에 연결된다.
특정 실시예에서, 디지털 신호 프로세서(1024)는 휴대용 통신 디바이스(1020)의 다양한 컴포넌트들에 의해 요구되는 동작들 및 기능을 실행하는데 필요한 프로그램 스레드들과 연관된 명령들을 처리하기 위해 인터리빙된 멀티스레딩을 사용한다. 예를 들어, 무선 통신 세션이 무선 안테나를 통해 설정되는 경우 사용자가 마이크로폰(1038)으로 말할 수 있다. 사용자의 음성을 나타내는 전자 신호들 은 인코딩될 CODEC(1034)로 전송될 수 있다. 디지털 신호 프로세서(1024)는 상기 CODEC(1034)으로 하여금 상기 마이크로폰으로부터의 전자 신호들을 인코딩하도록 데이터 처리를 수행할 수 있다. 추가적으로, 무선 안테나(1042)를 통해 수신된 인입 신호들은 무선 제어기(1040)에 의해 CODEC(1034)으로 전송될 수 있고, 스피커(1036)로 전송될 수 있다. 상기 디지털 신호 프로세서(1024)는 또한 무선 안테나(1042)를 통해 수신된 신호를 디코딩할 때 CODEC(1034)에 대한 데이터 처리를 수행할 수 있다.
또한, 무선 통신 세션 이전, 동안, 혹은 이후에, 디지털 신호 프로세서(1024)는 입력 디바이스(1030)로부터 수신된 입력들을 처리할 수 있다. 예를 들어, 무선 통신 세션동안, 사용자는 휴대용 통신 디바이스(1020)의 메모리(1032) 내에 포함된 웹 브라우저를 통한 인터넷 서핑을 위해 디스플레이(1028) 및 입력 디바이스(1030)를 사용할 수 있다. 디지털 신호 프로세서(1024)는 휴대용 통신 디바이스(1020) 및 거기에 포함된 다양한 컴포넌트들의 동작을 효율적으로 제어하기 위해, 본원에 설명된 바와 같이, 입력 디바이스(1030), 디스플레이 제어기(1026), 디스플레이(1028), CODEC(1034), 및 무선 제어기(1040)에 의해 사용되는 다양한 프로그램 스레드들을 인터리빙할 수 있다. 다양한 프로그램 스레드들과 연관된 명령들중 많은 명령들이 하나 이상의 클록 사이클들 동안 동시에 실행된다. 따라서, 낭비되는 클록 사이클들로 인한 전력 및 에너지 소모는 실질적으로 감소된다.
도 11을 참조하면, 셀룰러 폰의 예시적이며 비-제한적인 실시예가 도시되며 일반적으로 1120으로 표기된다. 도시된 바와 같이, 셀룰러 폰(1120)은 함께 연결 된 아날로그 기저대역 프로세서(1126) 및 디지털 기저대역 프로세서(1124)를 포함하는 온-칩 시스템(1122)을 포함한다. 특정 실시예에서, 디지털 기저대역 프로세서(1124)는 디지털 신호 프로세서, 예컨대 도 1에 도시되고 본원에 설명된 프로세서이다. 도 11에 예시된 바와 같이, DSP(1124)는 스칼라 연산들 및 벡터 연산들을 위한 조합 결정 레지스터(1190)를 포함한다. 특정 실시예에서, 비교 연산들은 조합 결정 레지스터(1190)에 결과들을 저장하고, 조건부 연산들은 저장된 비교 결과들을, 조건 비트들로서, 예를 들어, 전술된 벡터 MUX 명령에서 사용한다. 도 11에 표시된 바와 같이, 디스플레이 제어기(1128) 및 터치스크린 제어기(1130)는 디지털 기저대역 프로세서(1124)에 연결된다. 차례로, 온-칩 시스템(1122)에 대해 외부에 있는 터치 스크린 디스플레이(1132)는 디스플레이 제어기(1128) 및 터치스크린 제어기(1130)에 연결된다.
도 11은 비디오 인코더(1134), 예를 들어, PAL(phase alternating line) 인코더, SECAM(sequential couleur a memoire) 인코더, NTSC(national television system(s) committee) 인코더가 디지털 기저대역 프로세서(1124)에 연결됨을 추가로 표시한다. 추가로, 비디오 증폭기(1136)는 비디오 인코더(1134) 및 터치스크린 디스플레이(1132)에 연결된다. 또한, 비디오 포트(1138)는 비디오 증폭기(1136)에 연결된다. 도 11에 도시된 바와 같이, 범용 직렬 버스(USB) 제어기(1140)는 디지털 기저대역 프로세서(1124)에 연결된다. 또한 USB 포트(1142)는 상기 USB 제어기(1140)에 연결된다. 메모리(1144) 및 가입자 식별 모듈(SIM) 카드(1146)는 또한 디지털 기저대역 프로세서(1124)에 연결될 수 있다. 추가적으로, 도 11에 도시된 바와 같이, 디지털 카메라(1148)가 디지털 기저대역 프로세서(1124)에 연결될 수 있다. 일 예시적인 실시예에서, 디지털 카메라(1148)는 전하-결합 소자(CCD) 카메라 혹은 상보형 금속-산화 반도체(CMOS) 카메라이다.
도 11에 추가로 예시된 바와 같이, 스테레오 오디오 CODEC(1150)은 아날로그 기저대역 프로세서(1126)에 연결될 수 있다. 더욱이, 오디오 증폭기(1152)는 스테레오 오디오 CODEC(1150)에 연결될 수 있다. 일 예시적인 실시예에서, 제 1 스테레오 스피커(1154) 및 제 2 스테레오 스피커(1156)는 오디오 증폭기(1152)에 연결된다. 도 11은 마이크로폰 증폭기(1158) 역시 스테레오 오디오 CODEC(1150)에 연결될 수 있음을 나타낸다. 추가적으로, 마이크로폰(1160)은 마이크로폰 증폭기(1158)에 연결될 수 있다. 특정 실시예에서, 주파수 변조(FM) 라디오 튜너(1162)는 스테레오 오디오 CODEC(1150)에 연결될 수 있다. 또한 FM 안테나(1164)는 FM 라디오 튜너(1162)에 연결된다. 추가적으로, 스테레오 헤드폰(1166)은 스테레오 오디오 CODEC(1150)에 연결될 수 있다.
도 11은 무선 주파수(RF) 트랜시버(1168)가 아날로그 기저대역 프로세서(1126)에 연결될 수 있음을 추가로 표시한다. RF 스위치(1170)는 RF 트랜시버(1168) 및 RF 안테나(1172)에 연결될 수 있다. 도 11에 도시된 바와 같이, 키패드(1174)는 아날로그 기저대역 프로세서(1126)에 연결될 수 있다. 또한, 마이크로폰이 있는 모노 헤드셋(1176)은 아날로그 기저대역 프로세서(1126)에 연결될 수 있다. 추가적으로, 바이브레이터 디바이스(1178)는 아날로그 기저대역 프로세서(1126)에 연결될 수 있다. 도 11은 또한 온-칩 시스템(1126)에 연결될 수 있다. 특정 실시예에서, 전원(1180)은 전력을 요구하는 셀룰러 폰(1120)의 다양한 컴포넌트들에 전력을 제공하는 직류(DC) 전원이다. 추가적으로, 특정 실시예에서, 상기 직류 전원은 AC 전원에 연결되는 교류(AC) - DC 변압기로부터 유도되는 DC 전원 혹은 재충전가능한 DC 배터리이다.
특정 실시예에서, 도 11에 도시된 바와 같이, 터치스크린 디스플레이(1132), 비디오 포트(1138), USB 포트(1142), 카메라(1148), 제 1 스테레오 스피커(1154), 제 2 스테레오 스피커(1156), 마이크로폰, FM 안테나(1164), 스테레오 헤드폰(1166), RF 스위치(1170), RF 안테나(1172), 키패드(1174), 모노 헤드셋(1176), 바이브레이터(1178), 전원(1180)은 온-칩 시스템(1122)에 대해 외부에 있다. 더욱이, 특정 실시예에서, 디지털 기저대역 프로세서(1124)는, 셀룰러 폰(1120)과 연관된 서로 다른 컴포넌트들 중 하나 이상과 연관된 다양한 프로그램 스레드들을 처리하기 위해, 본원에서 설명된 바와 같이, 인터리빙된 멀티스레딩을 사용할 수 있다.
도 12를 참조하면, 무선 인터넷 프로토콜(IP) 전화의 일 예시적이고 비제한적인 실시예가 도시되고 일반적으로 1200으로 표기된다. 도시된 바와 같이, 무선 IP 전화(1200)는 디지털 신호 프로세서(DSP)(1204)를 포함하는 온-칩 시스템(1202)을 포함한다. 특정 실시예에서, 상기 DSP(1204)는 도 1에서 도시되고 본원에 설명된 프로세서이다. 도 12에 예시된 바와 같이, DSP(1204)는 스칼라 연산 및 벡터 연산을 위한 조합 결정 레지스터(1290)를 포함한다. 특정 실시예에서, 비교 연산들은 조합 결정 레지스터(1290)에 결과들을 저장하고, 조건 연산들은 예를 들어, 전술된 바와 같은 벡터 MUX 명령에, 조건 비트들로서 저장된 비교 결과들을 사용한 다. 도 12에 예시된 바와 같이, 디스플레이 제어기(1206)는 DSP(1204)에 연결되고, 디스플레이(1208)는 디스플레이 제어기(1206)에 연결된다. 일 예시적인 실시예에서, 디스플레이(1208)는 액정 디스플레이(LCD)이다. 도 12는 추가적으로 키패드(1210)가 DSP(1204)에 연결될 수 있음을 도시한다.
도 12에 추가적으로 도시된 바와 같이, 플래시 메모리(1212)는 DSP(1204)에 연결될 수 있다. 동기적 동적 랜덤 액세스 메모리(SDRAM)(1214), 정적 랜덤 액세스 메모리(SRAM(1216), 및 전기적 소거가능한 프로그램 가능 판독 전용 메모리(EEPROM)(1218)가 DSP(1204)에 연결될 수 있다. 도 12는 또한 발광 다이오드(LED)(1220)가 DSP(1204)에 연결될 수 있음을 도시한다. 추가적으로, 특정 실시예에서, 음성 CODEC(1222)은 DSP(1204)에 연결될 수 있다. 증폭기(1224)는 음성 CODEC(1222)에 연결될 수 있고, 모노 스피커(1226)는 증폭기(1224)에 연결될 수 있다. 도 12는 추가적으로, 모노 헤드셋(1228)이 음성 CODEC(1222)에 연결될 수 있음을 표시한다. 특정 실시예에서, 모노 헤드셋(1228)은 마이크로폰을 포함한다.
도 12는 또한 무선 근거리망(WLAN) 기저대역 프로세서(1230)가 DSP(1204)에 연결될 수 있음을 예시한다. RF 트랜시버(1232)는 WLAN 기저대역 프로세서(1230)에 연결될 수 있고, RF 안테나(1234)는 RF 트랜시버(1232)에 연결될 수 있다. 특정 실시예에서, 블루투스 제어기(1236)는 또한 DSP(1204)에 연결될 수 있고, 블루투스 안테나(1238)는 제어기(1236)에 연결될 수 있다. 도 12는 또한 USB 포트(1240)가 DSP(1204)에도 연결될 수 있음을 나타낸다. 더욱이, 전원(1242)은 온-칩 시스템(1202)에 연결되고 상기 온-칩 시스템(1202)을 통해 무선 IP 전화(1200) 의 다양한 컴포넌트들에 전력을 제공한다.
특정 실시예에서, 도 12에 나타난 바와 같이, 디스플레이(1208), 키패드(1210), LED(1220), 모노 스피커(1226), 모노 헤드셋(1228), RF 안테나(1234), 블루투스 안테나(1238), USB 포트(1240), 전원(1242)은 온-칩 시스템(1202)에 대해 외부에 있다. 그러나, 이들 컴포넌트들 각각은 상기 온-칩 시스템의 하나 이상의 컴포넌트들에 연결된다. 또한, 특정 실시예에서, 디지털 신호 처리기(1204)는 IP 전화(1200)와 연관된 서로 다른 컴포넌트들 중 하나 이상과 연관된 다양한 프로그램 스레드들을 처리하기 위해, 본원에 설명된 바와 같이, 인터리빙된 멀티스레딩을 사용할 수 있다.
도 13은 일반적으로 1300으로 표기된 개인 휴대용 정보 단말기(PDA)의 일 예시적이고 비제한적인 실시예를 예시한다. 도시된 바와 같이, PDA(1300)는 디지털 신호 프로세서(1304)를 포함하는 온-칩 시스템(1302)을 포함한다. 특정 실시예에서, DSP(1304)는 도 1에 도시되고 본원에 설명되는 프로세서이다. 도 13에 예시된 바와 같이, DSP(1304)는 스칼라 연산 및 벡터 연산을 위한 조합 결정 레지스터(1390)를 포함한다. 특정 실시예에서, 비교 연산들은, 예를 들어, 벡터 MUX 명령에서, 조건 비트들로서 저장된 비교 결과들을 사용한다. 도 13에 도시된 바와 같이, 터치스크린 제어기(1306) 및 디스플레이 제어기(1308)는 DSP(1304)에 연결된다. 추가적으로, 터치스크린 디스플레이는 터치스크린 제어기(1306) 및 디스플레이 제어기(1308)에 연결된다. 도 13은 또한 키패드(1312)가 DSP(1304)에 연결될 수 있음을 표시한다.
도 13에 추가로 도시된 바와 같이, 플래시 메모리(1314)는 DSP(1304)에 연결될 수 있다. 또한 판독 전용 메모리(ROM)(1316), 동적 랜덤 액세스 메모리(DRAM), 전기적 소거가능한 프로그램 가능 판독 전용 메모리(EEPROM)는 DSP(1304)에 연결될 수 있다. 도 13은 또한 적외선 데이터 연관(infrared data association: IrDA) 포트(1322)가 DSP(1304)에 연결될 수 있음을 도시한다. 추가적으로, 특정 실시예에서, 디지털 카메라(1324)는 DSP(1304)에 연결될 수 있다.
도 13에 도시된 바와 같이, 특정 실시예에서, 스테레오 오디오 CODEC(1326)는 DSP(1304)에 연결될 수 있다. 제 1 스테레오 증폭기(1328)는 스테레오 오디오 CODEC(1326)에 연결될 수 있고, 제 1 스테레오 스피커(1330)는 제 1 스테레오 증폭기(1328)에 연결될 수 있다. 추가적으로, 마이크로폰 증폭기(1332)는 스테레오 오디오 CODEC(1326)에 연결될 수 있고, 마이크로폰(1334)은 마이크로폰 증폭기(1332)에 연결될 수 있다. 도 13은 추가적으로 제 2 스테레오 증폭기(1336)가 스테레오 오디오 CODEC(1326)에 연결될 수 있고, 제 2 스테레오 스피커(1338)가 제 2 스테레오 증폭기(1336)에 연결될 수 있음을 도시한다. 특정 실시예에서, 스테레오 헤드폰(1340)은 또한 스테레오 오디오 CODEC(1326)에 연결될 수 있다.
도 13은 또한 802.11 제어기(1342)가 DSP(1304)에 연결될 수 있고, 802.11 안테나(1344)가 802.11 제어기(1342)에 연결될 수 있음을 예시한다. 또한, 블루투스 제어기(1346)는 DSP(1304)에 연결될 수 있고, 블루투스 안테나(1348)는 블루투스 제어기(1346)에 연결될 수 있다. 도 13에 도시된 바와 같이, USB 제어기(1350)는 DSP(1304)에 연결될 수 있고, USB 포트(1352)는 USB 제어기(1350)에 연결될 수 있다. 또한, 스마트카드(1354), 예를 들어 멀티미디어 카드(MMC) 도는 보안 디지털 카드(SD)는 DSP(1304)에 연결될 수 있다. 추가적으로, 도 13에 도시된 바와 같이, 전원(1356)은 온-칩 시스템(1302)에 연결될 수 있고, 온-칩 시스템(1302)을 통해 PDA(1300)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
특정 실시예에서, 도 13에 표시된 바와 같이, 디스플레이(1310), 키패드(1312), IrDA 포트(1322), 디지털 카메라(1324), 제 1 스테레오 스피커(1330), 마이크로폰(1334), 제 2 스테레오 스피커(1338), 스테레오 헤드폰(1340), 802.11 안테나(1344), 블루투스 안테나(1348), USB 포트(1352), 및 전원(1350)은 온-칩 시스템(1302)에 대해 외부에 있다. 그러나, 이들 컴포넌트들 각각은 상기 온-칩 시스템 상의 하나 이상의 컴포넌트들에 연결된다. 추가적으로, 특정 실시예에서, 디지털 신호 프로세서(1304)는, 개인 휴대용 정보 단말기(1300)와 연관된 서로 다른 컴포넌트들 중 하나 이상과 연관된 다양한 프로그램 스레드들을 처리하기위해, 인터리빙된 멀티스레딩을 사용할 수 있다.
도 14를 참조하면, 동영상 전문가 그룹 오디오 계층-3(MP3) 플레이어와 같은 오디오 파일 플레이어의 일 예시적이고 비제한적인 실시예가 도시되며, 일반적으로 1400으로 표기된다. 도시된 바와 같이, 오디오 파일 플레이어(1400)는 디지털 신호 프로세서(DSP)(1404)를 포함하는 온-칩 시스템(1402)을 포함한다. 특정 실시예에서, DSP(1404)는 도 1에 도시된 프로세서이며, 본원에 설명된다. 도 14에 예시된 바와 같이, DSP(1404)는 스칼라 연산 및 벡터 연산을 위한 조합 결정 레지스터(1490)를 포함한다. 특정 실시예에서, 비교 연산들은 조합 결정 레지스터(1490) 에 결과들을 저장하고, 조건 연산들은, 예를 들어 전술된 바와 같은 벡터 MIX 명령들에서, 조건 비트들로서 상기 저장된 비교 결과들을 사용한다. 도 14에 예시된 바와 같이, 디스플레이 제어기(1406)는 DSP(1404)에 연결되고, 디스플레이(1408)는 디스플레이 제어기(1406)에 연결된다. 일 예시적인 실시예에서, 디스플레이(1408)는 액정 디스플레이(LCD)이다. 도 14는 추가적으로 키패드(1410)가 DSP(1404)에 연결될 수 있음을 도시한다.
도 14에 추가로 도시된 바와 같이, 플래시 메모리(1412) 및 판독 전용 메모리(ROM)(1414)은 DSP(1404)에 연결될 수 있다. 추가적으로, 특정 실시예에서, 오디오 CODEC(1416)은 DSP(1404)에 연결될 수 있다. 증폭기(1418)는 오디오 CODEC(1416)에 연결될 수 있고, 모노 스피커(1420)는 증폭기(1418)에 연결될 수 있다. 도 14는 추가적으로, 마이크로폰 입력(1422) 및 스테레오 입력(1424) 역시 오디오 CODEC(1416)에 연결될 수 있음을 표시한다. 특정 실시예에서, 스테레오 헤드폰(1426)은 또한 오디오 CODEC(1416)에 연결될 수 있다.
도 14는 또한 USB 포트(1428) 및 스마트 카드(1430)가 DSP(1404)에 연결될 수 있음을 표시한다. 추가적으로, 전원(1432)은 온-칩 시스템(1402)에 연결될 수 있고, 온-칩 시스템(1402)을 통해 오디오 파일 플레이어(1400)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
특정 실시예에서, 도 14에 예시된 바와 같이, 디스플레이(1408), 키패드(1410), 모노 스피커(1420), 마이크로폰 입력(1422), 스테레오 입력(1424), 스테레오 헤드폰(1426), USB 포트(1428), 및 전원(1432)은 온-칩 시스템(1402)에 대해 외부에 있다. 그러나, 이들 컴포넌트들 각각은 온-칩 시스템 상의 하나 이상의 컴포넌트들에 결합된다. 또한, 특정 실시예에서, 디지털 신호 프로세서(1404)는, 오디오 파일 플레이어(1400)와 연관된 서로 다른 컴포넌트들 중 하나 이상과 연관된 다양한 프로그램 스레드들을 처리하기 위해, 본원에서 설명된 바와 같이, 인터리빙된 멀티스레딩을 사용할 수 있다.
본원에 설명된 시스템들 및 방법들은 감소된 복잡도, 비용, 및 전력 소모를 제공한다. 예를 들어, 스칼라 및 벡터 연산들 모두에 대해 동일한 결정 레지스터가 동작하도록 하는 것은 요구되는 결정 레지스터들의 개수를 감소시킴으로써 상기 프로세서의 복잡도 및 비용을 감소시킨다. 또한, 범용 레지스터들을 사용하는 것이 아니라, 개별 레지스터 파일을 가지는 것은 프로세서의 비용, 복잡도, 및 소모되는 전력을 감소시킨다. 또한, 본원에 설명된 시스템들 및 방법들은 개선된 성능을 제공한다.
당업자는 본원에서 개시된 실시예들과 연관하여 설명된 다양한 예시적인 논리 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 혹은 이들 둘의 조합으로 구현될 수 있음을 추가로 이해한다. 하드웨어 및 소프트웨어의 이러한 상호교환가능성을 명확하게 예시하고자, 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들 및 단계들이 그들의 기능의 측면에서 일반적으로 전술되었다. 이러한 기능이 하드웨어로 구현될지 소프트웨어로 구현될지의 여부는 전체 시스템에 부과된 설계 제약들 및 특정 어플리케이션에 의존한다. 당업자는 각각의 특정 어플리케이션에 대해 다양한 방식들로 상기 설명된 기능들을 구현할 수 있지만, 이러한 구현 결정이 본 발명의 범위로부터 벗어남을 야기하는 것으로 해석되지 않아야 한다.
본원에 개시된 실시예들과 연관하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 혹은 이 둘의 조합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, PROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 이동식 디스크, CD-ROM, 또는 당해 기술분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 이러한 프로세서가 상기 저장 매체로부터 정보를 판독하고 상기 저장 매체에 정보를 기록할 수 있도록 상기 프로세서에 결합된다. 대안적으로, 저장 매체는 프로세서에 일체화될 수 있다. 상기 프로세서 및 상기 저장 매체는 ASIC에 상주할 수 있다. 상기 ASIC은 컴퓨팅 디바이스 혹은 사용자 터미널에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 혹은 사용자 터미널 내 이산 컴포넌트들로서 상주할 수 있다.
개시된 실시예들의 이전 설명은 당업자가 본 발명을 제작하거나 사용할 수 있을 정도로 제공된다. 이들 실시예들에 대한 다양한 수정들은 당업자들에게 자명할 것이며, 본원에서 한정된 포괄 원리들은 본 발명의 사상 또는 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 본원에 나타난 실시예들에 제한되는 것으로 의도되는 것이 아니라, 후속하는 청구항들에 의해 정의되는 바와 같은 신규한 특징들 및 원리들에 부합하는 가장 넓은 범위에 따라야 한다.

Claims (38)

  1. 프로세서 디바이스로서,
    스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터를 포함하는 제어 레지스터; 및
    둘 모두가 상기 조합 조건 코드 레지스터를 사용하는 스칼라 및 벡터 명령들 을 실행하기 위한 적어도 하나의 명령 실행 유닛을 포함하는,
    프로세서 디바이스.
  2. 제1항에 있어서,
    메모리 유닛;
    상기 메모리 유닛에 응답하는 시퀀서(sequencer)를 추가로 포함하고,
    적어도 하나의 명령 실행 유닛은 상기 시퀀서에 응답하는,
    프로세서.
  3. 제2항에 있어서,
    상기 메모리 유닛은,
    상기 조합 조건 코드 레지스터를 사용하는 스칼라 연산을 위한 명령; 및
    상기 조합 조건 코드 레지스터를 사용하는 벡터 연산을 위한 명령을 포함하는,
    프로세서.
  4. 제3항에 있어서,
    상기 스칼라 연산은 스칼라 비교 연산인,
    프로세서.
  5. 제3항에 있어서,
    상기 벡터 연산은 벡터 비교 연산인,
    프로세서.
  6. 제2항에 있어서,
    스칼라 및 벡터 연산들을 위한 4개의 8비트 조합 조건 코드 레지스터들을 추가로 포함하는,
    프로세서.
  7. 제3항에 있어서,
    상기 스칼라 연산은 상기 조합 조건 코드 레지스터에 기초하여 조건부로 실행되는,
    프로세서.
  8. 제3항에 있어서,
    상기 스칼라 연산은 입력으로서 상기 조합 조건 코드 레지스터를 사용하는,
    프로세서.
  9. 제3항에 있어서,
    상기 벡터 연산은 상기 조합 조건 코드 레지스터에 기초하여 조건부로 실행되는,
    프로세서.
  10. 제1항에 있어서,
    상기 벡터 비교 연산은 벡터 비교 연산의 결과를 저장하기 위해 상기 조합 조건 코드 레지스터를 사용하는,
    프로세서.
  11. 제10항에 있어서,
    상기 벡터 연산은 64-비트 벡터 멀티플렉서 명령이며, 상기 조합 조건 코드 레지스터는 8-비트 레지스터인,
    프로세서.
  12. 제3항에 있어서,
    상기 벡터 연산은 각각의 엘리먼트 결과를 4개의 조합 조건 코드 레지스터 비트들로 복제하는 워드 비교 연산인,
    프로세서.
  13. 제2항에 있어서,
    벡터 연산을 위한 명령들은 루프형 알고리즘들을 대신하여 사용되는,
    프로세서.
  14. 제1항에 있어서,
    상기 제어 레지스터는 루프 레지스터들, 수정자 레지스터들, 사용자 상태 레지스터, 프로그램 카운터 레지스터, 및 사용자 일반 포인터 레지스터를 포함하는,
    프로세서.
  15. 제6항에 있어서,
    멀티스레딩(multithreading)은 동시적인 연산들을 수행하기 위해 프로그램 스레드들과 연관된 명령들을 처리하기 위해 사용되는,
    프로세서.
  16. 제6항에 있어서,
    파이프라이닝(pipelining)은 명령들을 처리하기 위해 사용되는,
    프로세서.
  17. 제6항에 있어서,
    상기 적어도 하나의 명령 실행 유닛은 바이트, 하프-워드(half-word), 워드, 및 더블 워드로 연산들을 수행하는,
    프로세서.
  18. 데이터를 처리하는 방법으로서,
    조합 스칼라 및 벡터 조건 코드 레지스터를 사용하여 비교 연산을 위한 명령을 실행하는 단계; 및
    상기 조합 스칼라 및 벡터 조건 코드 레지스터를 사용하여 조건 연산을 위한 명령을 실행하는 단계를 포함하는,
    방법.
  19. 제18항에 있어서,
    상기 비교 연산은 스칼라 비교 연산인,
    방법.
  20. 제19항에 있어서,
    명령 실행 유닛에서 스칼라 비교 연산을 위한 명령을 수신하는 단계; 및
    상기 조합 스칼라 및 벡터 조건 코드 레지스터에 상기 스칼라 비교 연산의 결과들을 저장하는 단계를 추가로 포함하는,
    방법.
  21. 제18항에 있어서,
    상기 조건 연산은 스칼라 조건 연산인,
    방법.
  22. 제21항에 있어서,
    명령 실행 유닛에서 스칼라 조건 연산을 위한 명령을 수신하는 단계;
    상기 조합 스칼라 및 벡터 조건 코드 레지스터로부터 적어도 하나의 조건 코드 비트를 평가하는 단계;
    상기 스칼라 조건 연산을 위한 명령이 실행되어야 하는지의 여부를 결정하는 단계; 및
    상기 결정에 따라, 상기 스칼라 조건 연산의 결과들을 레지스터에 저장하는 단계를 추가로 포함하는,
    방법.
  23. 제18항에 있어서,
    상기 비교 연산은 벡터 비교 연산인,
    방법.
  24. 제23항에 있어서,
    명령 실행 유닛에서 벡터 비교 연산을 위한 명령을 수신하는 단계; 및
    상기 조합 스칼라 및 벡터 조건 코드 레지스터에 상기 벡터 비교 연산의 결과들을 저장하는 단계를 추가로 포함하는,
    방법.
  25. 제18항에 있어서,
    상기 조건 연산은 벡터 조건 연산인,
    방법.
  26. 제25항에 있어서,
    명령 실행 유닛에서 벡터 조건 연산을 위한 명령을 수신하는 단계;
    상기 조합 스칼라 및 벡터 조건 코드 레지스터로부터 적어도 하나의 조건 코드 비트를 사용하는 단계 - 사용된 비트는 벡터 조건 연산에 사용됨 - ; 및
    상기 벡터 조건 연산의 결과들을 레지스터에 저장하는 단계를 추가로 포함하는,
    방법.
  27. 제19항에 있어서,
    상기 조건 연산은 벡터 조건 연산인,
    방법.
  28. 프로세서를 위한 명령 세트로서,
    조합 조건 코드 레지스터를 사용하여 스칼라 연산을 수행하기 위한 명령; 및
    상기 조합 조건 코드 레지스터를 사용하여 벡터 연산을 수행하기 위한 명령을 포함하는,
    명령 세트.
  29. 제28항에 있어서,
    상기 스칼라 연산을 수행하기 위한 명령은 스칼라 비교 연산인,
    명령 세트.
  30. 제28항에 있어서,
    상기 스칼라 연산을 수행하기 위한 명령은 스칼라 조건 연산인,
    명령 세트.
  31. 제28항에 있어서,
    상기 벡터 연산을 수행하기 위한 명령은 벡터 비교 연산인,
    명령 세트.
  32. 제28항에 있어서,
    상기 벡터 연산을 수행하기 위한 명령은 벡터 조건 연산인,
    명령 세트.
  33. 프로세서로서,
    스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터; 및
    스칼라 및 벡터 조건 연산들에 적합한 벡터 멀티플렉서 연산을 실행하기 위한 실행 유닛을 포함하는,
    프로세서.
  34. 무선 통신 디바이스로서,
    안테나;
    상기 안테나에 동작가능하게 연결된 트랜시버;
    메모리 유닛; 및
    상기 메모리 유닛에 연결되고 상기 트랜시버에 응답하는 디지털 신호 프로세서 - 상기 디지털 신호 프로세서는 스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터를 포함하는 제어 레지스터; 및 둘 모두가 상기 조합 조건 코드 레지스터를 사용하는 스칼라 및 벡터 명령들을 실행하기 위한 적어도 하나의 명령 실행 유 닛을 포함함 - 를 포함하는,
    무선 통신 디바이스.
  35. 제34항에 있어서,
    상기 디지털 신호 프로세서에 연결된 비디오 코더/디코더(CODEC);
    상기 디지털 신호 프로세서에 연결된 블루투스 제어기;
    상기 블루투스 제어기에 연결된 블루투스 안테나;
    상기 디지털 신호 프로세서에 연결된 무선 근거리망 매체 접근 제어(WLAN MAC) 기저대역 프로세서를 추가로 포함하는,
    휴대용 통신 디바이스.
  36. 제34항에 있어서,
    상기 디지털 신호 프로세서에 연결된 스테레오 코더/디코더(CODEC);
    상기 디지털 신호 프로세서에 연결된 802.11 제어기;
    상기 802.11 제어기에 연결된 802.11 안테나;
    상기 디지털 신호 프로세서에 연결된 블루투스 제어기;
    상기 블루투스 제어기에 연결된 블루투스 안테나;
    상기 디지털 신호 프로세서에 연결된 범용 직렬 버스(USB) 제어기; 및
    상기 USB 제어기에 연결된 USB 포트를 추가로 포함하는,
    휴대용 통신 디바이스.
  37. 오디오 파일 플레이어로서,
    디지털 신호 프로세서;
    상기 디지털 신호 프로세서에 연결된 오디오 코더/디코더(CODEC);
    상기 디지털 신호 프로세서에 연결된 멀티미디어 카드;
    상기 디지털 신호 프로세서에 연결된 범용 직렬 버스(USB)를 포함하고,
    상기 디지털 신호 프로세서는,
    스칼라 및 벡터 연산들을 위한 조합 조건 코드 레지스터를 포함하는 제어 레지스터; 및
    둘 다 상기 조합 조건 코드 레지스터를 사용하는 스칼라 및 벡터 명령들을 실행하기 위한 적어도 하나의 명령 실행 유닛을 포함하는,
    오디오 파일 플레이어.
  38. 프로세서 디바이스로서,
    조합 조건 코드 레지스터를 사용하는 스칼라 연산을 수행하기 위한 명령을 실행하기 위한 수단; 및
    상기 조합 조건 코드 레지스터를 사용하는 벡터 연산을 수행하기 위한 명령을 실행하기 위한 수단을 포함하는,
    프로세서 디바이스.
KR1020097005421A 2006-08-18 2007-08-15 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법 KR101072707B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/506,584 US7676647B2 (en) 2006-08-18 2006-08-18 System and method of processing data using scalar/vector instructions
US11/506,584 2006-08-18

Publications (2)

Publication Number Publication Date
KR20090042320A true KR20090042320A (ko) 2009-04-29
KR101072707B1 KR101072707B1 (ko) 2011-10-11

Family

ID=38749041

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097005421A KR101072707B1 (ko) 2006-08-18 2007-08-15 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법

Country Status (6)

Country Link
US (2) US7676647B2 (ko)
EP (2) EP2273359B1 (ko)
JP (3) JP2010501937A (ko)
KR (1) KR101072707B1 (ko)
CN (2) CN103207773B (ko)
WO (1) WO2008022217A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101496597B1 (ko) * 2010-09-24 2015-02-26 인텔 코오퍼레이션 반도체 칩 상에서 구현되는 벡터 논리 감소 연산
KR20150105199A (ko) * 2014-03-07 2015-09-16 에이알엠 리미티드 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US8191056B2 (en) * 2006-10-13 2012-05-29 International Business Machines Corporation Sparse vectorization without hardware gather/scatter
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
FR2935059B1 (fr) * 2008-08-12 2012-05-11 Groupe Des Ecoles De Telecommunications Get Ecole Nationale Superieure Des Telecommunications Enst Procede de detection d'anomalies dans un circuit de cryptographie protege par logique differentielle et circuit mettant en oeuvre un tel procede
US8745360B2 (en) * 2008-09-24 2014-06-03 Apple Inc. Generating predicate values based on conditional data dependency in vector processors
US9952875B2 (en) * 2009-08-07 2018-04-24 Via Technologies, Inc. Microprocessor with ALU integrated into store unit
US9606802B2 (en) 2011-03-25 2017-03-28 Nxp Usa, Inc. Processor system with predicate register, computer system, method for managing predicates and computer program product
KR101595637B1 (ko) * 2011-04-01 2016-02-18 인텔 코포레이션 벡터 친숙형 명령어 형식 및 그의 실행
WO2013095338A1 (en) * 2011-12-19 2013-06-27 Intel Corporation Simd integer multiply-accumulate instruction for multi-precision arithmetic
CN104011794B (zh) 2011-12-21 2016-06-08 杜比国际公司 具有并行架构的音频编码器
US9588764B2 (en) * 2011-12-23 2017-03-07 Intel Corporation Apparatus and method of improved extract instructions
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US9557993B2 (en) 2012-10-23 2017-01-31 Analog Devices Global Processor architecture and method for simplifying programming single instruction, multiple data within a register
US9619229B2 (en) * 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
US9804839B2 (en) * 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US9390058B2 (en) * 2013-09-24 2016-07-12 Apple Inc. Dynamic attribute inference
US9367309B2 (en) 2013-09-24 2016-06-14 Apple Inc. Predicate attribute tracker
KR102179385B1 (ko) 2013-11-29 2020-11-16 삼성전자주식회사 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체
US10296489B2 (en) 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle
JP6616608B2 (ja) * 2015-07-16 2019-12-04 ルネサスエレクトロニクス株式会社 半導体装置
US10691463B2 (en) 2015-07-30 2020-06-23 Futurewei Technologies, Inc. System and method for variable lane architecture
US10956439B2 (en) * 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
GB2548600B (en) 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
US10572263B2 (en) 2016-03-31 2020-02-25 International Business Machines Corporation Executing a composite VLIW instruction having a scalar atom that indicates an iteration of execution
CN111176608A (zh) * 2016-04-26 2020-05-19 中科寒武纪科技股份有限公司 一种用于执行向量比较运算的装置和方法
US10761979B2 (en) * 2016-07-01 2020-09-01 Intel Corporation Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
CN109313552A (zh) * 2016-07-27 2019-02-05 英特尔公司 用于复用向量比较的系统和方法
WO2018022525A1 (en) * 2016-07-27 2018-02-01 Intel Corporation System and method for multiplexing vector mask matches
US10162603B2 (en) * 2016-09-10 2018-12-25 Sap Se Loading data for iterative evaluation through SIMD registers
KR102659495B1 (ko) 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
US10705847B2 (en) 2017-08-01 2020-07-07 International Business Machines Corporation Wide vector execution in single thread mode for an out-of-order processor
US11409525B2 (en) * 2018-01-24 2022-08-09 Intel Corporation Apparatus and method for vector multiply and accumulate of packed words
CN108388446A (zh) 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
US10871549B2 (en) * 2018-05-18 2020-12-22 Qualcomm Incorporated Proximity detection using adaptive mutual coupling cancellation
CN109032666B (zh) * 2018-07-03 2021-03-23 中国人民解放军国防科技大学 一种用于向量处理的确定断言活跃元素个数的方法和装置
US10908880B2 (en) * 2018-10-19 2021-02-02 Knowles Electronics, Llc Audio signal circuit with in-place bit-reversal
US11507374B2 (en) * 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11327862B2 (en) 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
US11340904B2 (en) 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
CN112256330B (zh) * 2020-11-03 2021-11-09 中国人民解放军军事科学院国防科技创新研究院 用于加速数字信号处理的risc-v指令集扩展方法
CN113590193B (zh) * 2021-07-12 2024-03-22 苏州仰思坪半导体有限公司 一种运算装置、方法、介质及计算设备
CN115951936B (zh) * 2023-01-17 2023-05-26 上海燧原科技有限公司 向量化编译程序的芯片适配方法、装置、设备及介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6224366A (ja) * 1985-07-03 1987-02-02 Hitachi Ltd ベクトル処理装置
US5086498A (en) * 1987-01-23 1992-02-04 Hitachi, Ltd. Parallel computer with asynchronous communication facility
JPS63198130A (ja) * 1987-02-13 1988-08-16 Nec Corp ル−プ最適命令列選択方式
JP2793342B2 (ja) * 1990-08-09 1998-09-03 株式会社東芝 演算処理装置
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
DE69519449T2 (de) * 1994-05-05 2001-06-21 Conexant Systems Inc Raumzeigersdatenpfad
US5802375A (en) * 1994-11-23 1998-09-01 Cray Research, Inc. Outer loop vectorization
JPH09198374A (ja) 1996-01-23 1997-07-31 Hitachi Ltd ベクトル処理装置
US6035390A (en) * 1998-01-12 2000-03-07 International Business Machines Corporation Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6249861B1 (en) * 1998-12-03 2001-06-19 Sun Microsystems, Inc. Instruction fetch unit aligner for a non-power of two size VLIW instruction
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
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
US6871298B1 (en) * 1999-11-12 2005-03-22 Obsidian Software, Inc. Method and apparatus that simulates the execution of paralled instructions in processor functional verification testing
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
US7089402B2 (en) * 2001-12-12 2006-08-08 Canon Kabushiki Kaisha Instruction execution control for very long instruction words computing architecture based on the free state of the computing function units
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7263109B2 (en) * 2002-03-11 2007-08-28 Conexant, Inc. Clock skew compensation for a jitter buffer
WO2003100602A2 (en) * 2002-05-24 2003-12-04 Koninklijke Philips Electronics N.V. A scalar/vector processor
US6963341B1 (en) * 2002-06-03 2005-11-08 Tibet MIMAR Fast and flexible scan conversion and matrix transpose in a SIMD processor
JP3958662B2 (ja) * 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
US7196708B2 (en) * 2004-03-31 2007-03-27 Sony Corporation Parallel vector processing
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US20060095732A1 (en) * 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101496597B1 (ko) * 2010-09-24 2015-02-26 인텔 코오퍼레이션 반도체 칩 상에서 구현되는 벡터 논리 감소 연산
KR20150105199A (ko) * 2014-03-07 2015-09-16 에이알엠 리미티드 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법

Also Published As

Publication number Publication date
US7676647B2 (en) 2010-03-09
US20080046683A1 (en) 2008-02-21
JP2010501937A (ja) 2010-01-21
US20100118852A1 (en) 2010-05-13
JP5680697B2 (ja) 2015-03-04
EP2273359B1 (en) 2015-11-11
EP2273359A1 (en) 2011-01-12
WO2008022217A1 (en) 2008-02-21
JP2013175218A (ja) 2013-09-05
EP2062134A1 (en) 2009-05-27
CN103207773A (zh) 2013-07-17
JP6073385B2 (ja) 2017-02-01
US8190854B2 (en) 2012-05-29
KR101072707B1 (ko) 2011-10-11
CN103207773B (zh) 2015-11-18
CN101501634A (zh) 2009-08-05
EP2062134B1 (en) 2016-02-10
CN101501634B (zh) 2013-05-29
JP2015111428A (ja) 2015-06-18

Similar Documents

Publication Publication Date Title
KR101072707B1 (ko) 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법
US9235418B2 (en) Register files for a digital signal processor operating in an interleaved multi-threaded environment
US7584233B2 (en) System and method of counting leading zeros and counting leading ones in a digital signal processor
US20060230253A1 (en) Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment
US8688761B2 (en) Arithmetic logic and shifting device for use in a processor
US7849466B2 (en) Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
US20060230257A1 (en) System and method of using a predicate value to access a register file
KR100955555B1 (ko) 디지털 신호 프로세서에서 2의 보수 연산들을 수행하는시스템 및 방법

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 9