KR101056553B1 - 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템 - Google Patents

마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101056553B1
KR101056553B1 KR1020097004432A KR20097004432A KR101056553B1 KR 101056553 B1 KR101056553 B1 KR 101056553B1 KR 1020097004432 A KR1020097004432 A KR 1020097004432A KR 20097004432 A KR20097004432 A KR 20097004432A KR 101056553 B1 KR101056553 B1 KR 101056553B1
Authority
KR
South Korea
Prior art keywords
register unit
data
bit
instruction
shifting
Prior art date
Application number
KR1020097004432A
Other languages
English (en)
Other versions
KR20090042293A (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 KR20090042293A publication Critical patent/KR20090042293A/ko
Application granted granted Critical
Publication of KR101056553B1 publication Critical patent/KR101056553B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30018Bit or string 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

단일 명령의 실행 동안에 예를 들어, 디지털 신호 프로세서와 같은 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템이 개시된다. 레지스터 파일 구조의 소스 레지스터 유닛 내에 있는 데이터를 시프팅 및 라운딩시키기 위한 명령이 프로세싱 유닛 내에 수신된다. 명령은 오른쪽 시프트 연산에 대한 비트량을 나타내는 시프팅 비트 값을 포함하고, 후속하여 명령 내에 포함되는 시프팅 비트 값으로부터 단일 비트를 감산함으로써 계산되는 인코딩된 비트 값만큼 소스 레지스터 유닛 내의 데이터를 오른쪽으로 시프트시키도록 실행된다. 미리 결정된 비트 확장은 시프트된 데이터에 인접한 비워진 비트 위치들 내에 추가로 삽입된다. 후속하여 시프트된 데이터상에 가산적인 연산이 수행되고, 결과 데이터를 획득하기 위하여 시프트된 데이터에 유니터리 정수 값이 가산된다. 최종적으로, 결과 데이터는 단일 비트 값만큼 오른쪽으로 시프트되고, 미리 결정된 비트 확장은 목적지 레지스터 유닛 내에 저장될 최종 라운딩된 데이터 결과들을 획득하기 위하여 비워진 비트 위치 내에 삽입된다.

Description

마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템{METHOD AND SYSTEM TO PERFORM SHIFTING AND ROUNDING OPERATIONS WITHIN A MICROPROCESSOR}
본 발명은 일반적으로 마이크로프로세서들에 관한 것으로서, 특히, 단일 명령의 실행 동안에 예를 들어, 디지털 신호 프로세서와 같은 마이크로프로세서 내에서 시프팅 및 라우닝 연산들을 수행하기 위한 방법 및 시스템에 관한 것이다.
통상적으로, 컴퓨터 시스템들은 하나 이상의 마이크로프로세서 디바이스들을 포함하고, 각각의 마이크로프로세서 디바이스는 컴퓨터 시스템의 메모리 내에 저장된 값들에 대하여 연산들을 수행하고, 컴퓨터 시스템의 전체 연산을 관리하도록 구성된다. 이러한 컴퓨터 시스템들은 또한 예를 들어 사운드 카드들 및/또는 비디오 카드들과 같은 다양한 멀티미디어 디바이스들을 더 포함할 수 있으며, 각각의 멀티미디어 디바이스는 각각의 개별 멀티미디어 디바이스 내에서의 복잡한 수학적 계산들을 수행하는, 예를 들어, 디지털 신호 프로세서들(DSP들)과 같은 하나 이상의 프로세서들을 추가로 포함한다.
디지털 신호 프로세서(DSP)는 통상적으로 예를 들어, 하나 이상의 산술 논리 유닛들(ALU), 하나 이상의 MAC(multiply-and-accumulate) 유닛들, 및 DSP 내에서 명령들의 세트에 의하여 특정되는 연산들을 수행하도록 구성된 다른 기능 유닛들과 같은, 그러한 수학적 계산들을 수행하도록 특별히 구성되는 하드웨어 실행 유닛들을 포함한다. 그러한 연산들은 예를 들어, 산술 연산들, 논리 연산들, 및 다른 데이터 프로세싱 연산들을 포함할 수 있으며, 각각의 연산은 명령들의 연관된 세트에 의하여 정의된다.
일반적으로, DSP 내의 실행 유닛들은 실행 유닛들 및 메모리에 연결되는 레지스터 파일로부터 데이터 및 피연산자(operand)들을 판독하고, 명령 연산들을 수행하며, 레지스터 파일로 결과들을 저장한다. 레지스터 파일은 다수의 레지스터 유닛들을 포함하며, 각각의 레지스터 유닛은 두 개의 인접 레지스터 유닛들의 정렬된 쌍들로서 또는 단일 레지스터로서 액세스가능하다. 각각의 레지스터 유닛 내에서, 실행 유닛들은 예를 들어, 공지된 시프팅 및 라운딩 모듈들을 사용하는 특정 데이터 시프팅 및 라운딩 연산들을 수행할 수 있다.
단일 명령의 실행 동안에 예를 들어, 디지털 신호 프로세서와 같은 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템이 개시된다. 일 실시예에서, 레지스터 파일 구조의 소스 레지스터 유닛 내에 있는 데이터를 시프팅 및 라운딩시키기 위한 명령이 프로세싱 유닛 내에서 수신된다. 명령은 오른쪽 시프트 연산에 대한 비트량을 표시하는 시프팅 비트 값을 포함하고, 후속하여 명령 내에 포함되는 시프팅 비트 값으로부터 단일 비트를 감산함으로써 계산되는 인코딩된 비트 값만큼 소스 레지스터 유닛 내의 데이터를 오른쪽으로 시프트시키도록 실행된다. 미리 결정된 비트 확장(extension)은 시프트된 데이터에 인접한 비워진 비트 위치들 내에 추가로 삽입된다.
후속하여, 일 실시예에서, 시프트된 데이터에 대하여 가산 연산이 수행되고, 결과 데이터를 획득하기 위하여 시프트된 데이터에 유니터리 정수 값이 가산된다. 최종적으로, 결과 데이터는 단일 비트 값만큼 오른쪽으로 추가적으로 시프트되고, 미리 결정된 비트 확장은 목적지 레지스터 유닛 내에 저장될 최종 라운딩된 데이터 결과들을 획득하기 위하여 비워진 비트 위치 내에 삽입된다.
도 1은 명령들의 세트가 실행될 수 있는 디지털 신호 프로세싱 시스템의 블럭도이다.
도 2는 디지털 신호 프로세싱 시스템 내의 일반적 레지스터 구조의 일 실시예를 도시하는 블럭도이다.
도 3은 매우 긴 명령 워드(VLIW: Very Long Instrucion Word) 디지털 신호 프로세싱 시스템 아키텍쳐의 일 실시예를 도시하는 블럭도이다.
도 4는 디지털 신호 프로세싱 시스템의 레지스터 유닛 내에서 데이터를 시프트 및 라운딩하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 5는 도 4와 관련하여 개시되는, 디지털 신호 프로세싱 시스템의 레지스터 유닛 내에서 데이터를 시프트 및 라운딩하기 위한 방법을 도시하는 블럭도이다.
도 6은 디지털 신호 프로세싱 시스템의 레지스터 유닛 내에서 데이터를 시프트 및 라운딩하기 위한 명령의 일 실시예의 블럭도이다.
단일 명령의 실행 동안에 예를 들어, 디지털 신호 프로세서(DSP)와 같은 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템이 개시된다. 하기에서 상세히 개시되는 시스템은 실행 유닛 내에서 라운딩 모듈을 필요로 하지 않고 DSP가 레지스터 유닛 내에서 데이터 시프팅 및 라운딩 연산들을 수행하는 것을 가능하게 하는 알고리즘이며, 따라서, DSP 내에서 저렴하고 간소화된 데이터 조작 연산들을 수행한다. 시스템은 DSP와 관련하여 하기에 상세히 개시되나, 시스템이 마이크로프로세서 디바이스 또는 단일 명령의 실행 동안에 데이터를 시프팅 및 라운딩할 수 있는 임의의 다른 프로세싱 유닛을 사용하여 구현될 수 있다는 것을 이해해야 한다.
통상적으로, DSP 내의 프로세싱 유닛은 DSP 내에서 명령들의 세트에 의하여 특정되는 연산들을 수행하도록 구성된다. 그러한 연산들은 예를 들어, 산술 연산들, 논리 연산들, 및 다른 데이터 프로세싱 연산들을 포함할 수 있으며, 각각의 연산들은 명령들의 연관된 세트에 의하여 정의되고, 예를 들어 프로세싱 유닛 내의 개별 모듈들에 의하여 수행되는 데이터 시프팅 및 라운딩 연산들의 연속으로서 구현된다.
일 실시예에서, 프로세싱 유닛은 레지스터 파일 구조의 소스 레지스터 유닛 내에 있는 데이터를 시프트시키고, 다음 정수 값으로 데이터를 라운딩하기 위한 명령을 수신한다. 명령은 오른쪽 시프트 연산자 및 라운딩 연산자를 포함하고, 추가로 소스 레지스터 유닛에 대한 인코딩 정보, 데이터 결과들을 저장하기 위한 목적지 레지스터 유닛에 대한 인코딩 정보, 및 오른쪽 시프트 연산을 위한 비트량을 표시하는 시프팅 비트 값을 특정한다.
일 실시예에서, 프로세싱 유닛은 추가로 명령 내에 특정된 시프팅 비트 값으로부터 단일 비트(single bit)를 감산함으로써 계산되는 인코딩된 비트 값만큼 소스 레지스터 유닛 내에서 데이터에 대하여 최초 산술 오른쪽 시프트를 수행하기 위한 명령을 실행한다. 미리 결정된 비트 확장은 추가로 시프트된 데이터에 인접한 비워진 비트 위치들 내에 삽입되고, 비트 확장은 프로세싱된 데이터의 양 또는 음 부호(positive or negative sign)를 보존(preserve)한다.
후속하여, 일 실시예에서, 명령은 결과 데이터를 획득하기 위하여 시프트된 데이터에 유니터리 정수 값을 가산함으로써 시프트된 데이터에 대하여 가산 연산을 수행한다. 최종적으로, 명령은 단일 비트 값만큼 결과 데이터에 대하여 추가의 오른쪽 시프팅 연산을 수행하고, 목적지 레지스터 유닛 내에 저장될 최종 라운딩된 데이터 결과들을 획득하기 위하여 비워진 비트 위치로 미리 결정된 비트 확장을 삽입한다.
도 1은 명령들의 세트가 실행될 수 있는 디지털 신호 프로세싱 시스템의 블럭도이다. 도 1에 도시된 바와 같이, 디지털 신호 프로세싱 시스템(100)은 프로세싱 유닛(110), 메모리(150), 및 메모리(150)에 프로세싱 유닛(110)을 연결하는 하나 이상의 버스들(160)을 포함한다.
메모리(150)는 예를 들어, VLIW 컴파일러에 의하여 생성되는 VLIW 패킷들의 형태로 데이터 및 명령들을 저장하고, 각각의 VLIW 패킷은 하나 이상의 명령들을 포함한다. 패킷의 각각의 명령은 통상적으로 미리 결정된 폭을 가지며, 메모리(150)내에서 특정 어드레스를 가져, 패킷의 제1 명령은 통상적으로 패킷의 마지막 명령보다 낮은 메모리 어드레스를 갖는다. 메모리에 대한 어드레싱 방식들은 본 기술 분야의 당업자들에게 공지되어 있으며, 본 명세서에서는 상세히 논의되지 않는다. 메모리(150)의 명령들은 버스들(160)을 통해 프로세싱 유닛(110)으로 로딩된다.
프로세싱 유닛(110)은 하나 이상의 파이프라인들(140)을 통해 하나 이상의 레지스터 파일 구조들(120)에 연결되는 중앙 프로세싱 유닛 코어(130)를 더 포함한다. 프로세싱 유닛(110)은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 등을 더 포함할 수 있다.
레지스터 파일(120)은 도 2와 관련하여 하기에 보다 상세히 개시되며, 범용 계산들을 지원하는 일반적 레지스터 유닛들의 세트 및 예를 들어, 하드웨어 루프들, 예측들 및 다른 특별한 피연산자들과 같은 특별한 목적의 기능들을 지원하는 제어 레지스터 유닛들의 세트를 더 포함한다.
도 2는 디지털 신호 프로세싱 시스템 내의 일반적 레지스터 구조의 일 실시예를 도시하는 블럭도이다. 도 2에 개시되는 바와 같이, 일 실시예에서 레지스터 파일(120) 내의 일반적 레지스터 파일 구조(200)는 예를 들어, 32개의 32-비트 폭 레지스터 유닛들(210)과 같은 다수의 레지스터 유닛들을 포함하며, 각각의 레지스터 유닛은 두 개의 인접한 레지스터 유닛들(210)의 정렬된 쌍들(220) 또는 단일 레지스터로서 액세스될 수 있다.
일반적 레지스터 유닛들(210)은 적절한 명령에 기초하여 다수의 이름들로서 지칭될 수 있다. 예를 들어, 레지스터 유닛들(210)은 각각 R0, R1, ..., R30, 및 R31로서 지칭될 수 있다. 또한, 레지스터 유닛들(R0 및 R1)은 R1:0으로서 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있다. 유사하게, 레지스터 유닛들(R2 및 R3)은 R3:2로서 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있고, 레지스터 유닛들(R28 및 R29)은 R29:28로서 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있으며, 레지스터 유닛들(R30 및 R31)은 R31:30로서 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있다.
일 실시예에서, 일반적 레지스터 유닛들(210)은 예를 들어, 어드레스 생성, 스칼라 산술, 및 벡터 산술과 같은 일반적 계산 목적을 위해 사용되며, 명령들을 로딩/저장하기 위한 어드레스들, 수(numeric) 명령들에 대한 데이터 피연산자들, 및 벡터 명령들에 대한 벡터 피연산자들을 포함하는 명령들에 대한 모든 피연산자들을 제공한다. 각각의 레지스터 유닛(210)은 레지스터 유닛(210)의 높은 부분에 위치되는 데이터를 포함하는 최상위 하프 워드(most significant half word) 유닛, 및 레지스터 유닛(210)의 낮은 부분에 위치되는 데이터를 포함하는 최하위 하프 워드(least significant half word) 유닛을 더 포함한다. 예를 들어, 32-비트 폭 레지스터 유닛(210)을 고려하면, 레지스터 유닛(210)의 최상위 하프 워드 유닛 및 최하위 하프 워드 유닛은 모두 16-비트 폭 유닛들이다.
도 3은 VLIW(Very Long Instruction Word) 디지털 신호 프로세싱 시스템 아키텍쳐의 일 실시예를 보여주는 블럭도이다. VLIW 시스템 아키텍쳐(300)는 명령 로드 버스(320), 데이터 로드 버스(322), 및 데이터 로드/저장 버스(324)를 통해 디지털 신호 프로세서(DSP)(330)에 연결되는 메모리(310)를 포함한다.
일 실시예에서, 메모리(310)는 예를 들어, 1개 내지 4개의 명령들을 갖는 VLIW 패킷들의 형태로 데이터 및 명령들을 저장한다. 메모리(310) 내에 저장된 명령들은 명령 로드 버스(320)를 통해 DSP(330)에 로딩된다. 일 실시예에서, 각각의 명령은 4 워드 폭을 갖는 128-비트 명령 로드 버스(320)를 통해 DSP(330)에 로딩되는 32-비트 워드 폭을 갖는다. 일 실시예에서, 메모리(310)는 통합된 바이트-어드레서블 메모리(unified byte-addressable memory)이고, 명령들 및 데이터 모두를 저장하는 32-비트 어드레스 공간을 가지며, 리틀-엔디안(little-endian) 모드에서 동작한다.
일 실시예에서, DSP(330)는 시퀀서(335), 4개 프로세싱 또는 실행 유닛들(345)에 대한 4개 파이프라인들(340), 예를 들어, 도 2와 관련하여 상세히 기술되는 일반적 레지스터 파일 구조(200)와 같은 일반적 레지스터 파일 구조(350)(다수의 일반적 레지스터 유닛들을 포함하는), 및 제어 레지스터 파일 구조(360)를 포함한다. 시퀀서(335)는 메모리(310)로부터 명령들의 패킷들을 수신하고, 명령 내에 포함된 정보를 사용하여 각각의 수신된 패킷의 각각의 명령에 대한 개별 실행 유닛(345) 및 적절한 파이프라인(340)을 결정한다. 패킷의 각각의 명령에 대한 이러한 결정을 수행한 이후, 시퀀서(335)는 적절한 실행 유닛(345)에 의한 프로세싱을 위하여 적절한 파이프라인(340)으로 명령들을 입력한다.
일 실시예에서, 실행 유닛들(345)은 벡터 시프트 유닛, 벡터 MAC 유닛, 로드 유닛, 및 로드/저장 유닛을 더 포함한다. 벡터 시프트 유닛(345)은 예를 들어, Shift & Add/Sub 연산들, Shift & Logical 연산들, Permute 연산들, Predicate 연산들, Bit Manipulation, 및 Vector Halfword/Word 시프트들과 같은 S-타입(Shift-Unit) 명령들, 64-비트 Arithmetic & Logical 연산들, 32-비트 Logical 연산들, Pernute 연산들과 같은 A64-타입(64-비트 Arithmetic) 명령들, 32-비트 Arithmetic 연산들과 같은 A32-타입(32-비트 Arithmetic) 명령들, Jump/Call PC-관련 연산들과 같은 J-타입(Jump) 명령들, Control Register 이송들, Hardware Loop 셋업과 같은 CR-타입(Control Register) 명령들을 실행한다. 벡터 MAC 유닛(345)은 예를 들어, single Precision, Double Precision, Complex, 및 Vector Byte/Halfword 명령들과 같은 M-타입(Multiply Unit) 명령들, A64-타입 명령들, A32-타입 명령들, J-타입 명령들, 및 Jump/Call Register 연산들과 같은 JR-타입(Jump Register) 명령들을 실행한다. 로드 유닛(345)은 메모리(310)로부터 일반적 레지스터 파일 구조(350)로 데이터를 로딩하고, 예를 들어, 로드-타입 및 A32-타입 명령들을 실행한다. 로드/저장 유닛(345)은 데이터를 일반적 레지스터 파일 구조(350)로부터 다시 메모리(310)로 로딩 및 저장하고, 예를 들어, 로드-타입, 저장-타입, 및 A32-타입 명령들을 실행한다.
명령을 수신하는 각각의 실행 유닛(345)은 4개 실행 유닛들(345)에 의하여 공유되는 일반적 레지스터 파일 구조(350)를 사용하여 명령을 수행한다. 명령에 의하여 요구되는 데이터는 64-비트 데이터 로드 버스(322)를 통해 일반적 레지스터 파일 구조(350)로 로딩된다. 패킷의 명령들이 실행 유닛들(345)에 의하여 수행된 이후, 결과 데이터는 일반적 레지스터 파일 구조(350)에 저장되고, 그 후, 64-비트 데이터 로드/저장 버스(324)를 통해 메모리(310)에 로딩되고 저장된다. 통상적으로, 패킷의 1개 내지 4개의 명령들은 하나의 클럭 사이클에서 4개 실행 유닛들(345)에 의하여 명렬로 수행되고, 여기서 하나의 명령의 최대치는 각각의 클럭 사이클동안 파이프라인(340)에 의하여 수신되고 프로세싱된다.
일 실시예에서, 실행 유닛(345)은 또한 대응 명령을 실행하기 위하여 제어 레지스터 파일 구조(360)를 사용할 수 있다. 제어 레지스터 파일 구조(360)는 예를 들어, 변경자, 상태, 및 예측 레지스터 유닛들과 같은 특별한 레지스터 유닛들의 세트를 포함한다.
도 4는 디지털 신호 프로세싱 시스템(100)의 레지스터 유닛 내에 있는 데이터를 시프트 및 라운딩하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 도 4의 실시예에 도시된 바와 같이, 프로세싱 블럭(410)에서, 디지털 신호 프로세싱 시스템(300)의 소스 레지스터 유닛(210) 내에 저장되는 데이터를 시프트시키고, 추가로 다음 정수값으로 데이터 결과들을 라운딩하기 위한 명령이 수신된다. 일 실시예에서, DSP(330) 내의 실행 유닛(345)은 하기에 상세히 개시되는 바와 같이 명령을 수신하고 추가로 명령을 실행한다.
예를 들어, 미리 결정된 인자(factor)에 의한 나눗셈 이후 다음으로 더 높은 정수 값으로의 나눗셈 결과의 라운딩과 목적지 레지스터 유닛 내에 최종 라운딩된 데이터 결과들의 저장과 같은, 저장된 데이터에 대한 산술 연산을 구현하기 위하여 명령이 실행될 수 있다. 대안적으로, 예를 들어, 다른 산술 연산들, 논리 연산들, 또는 데이터 프로세싱 연산들과 같은, 다른 수학적 계산들을 구현하기 위하여 명령이 실행될 수 있다. 일 실시예에서, 명령은 소스 레지스터 유닛(210) 내에 저장되는 데이터에 대하여 오른쪽 시프트 연산을 수행하는데 필요한 비트들의 개수를 특정하는 시프팅 비트 값을 포함한다.
프로세싱 블럭(420)에서, 시프팅 비트 값보다 낮은 인코딩된 비트 값에 기초한 데이터 시프팅이 수행된다. 일 실시예에서, 인코딩된 비트 값은 시프팅 비트 값으로부터 단일 비트를 감산함으로써 계산되고, 오른쪽 시프트 연산을 수행하기 위하여 필요한 즉시 비트(immediate bit)들의 개수를 특정한다.
일 실시예에서, 실행 유닛(345)은 일반적 레지스터 파일 구조(350)와 통신하고, 소스 레지스터 유닛(210)을 식별한다. 그 다음에, 실행 유닛(345)은 인코딩된 비트 값을 계산하고, 인코딩된 비트 값에 기초하여 소스 레지스터 유닛(210) 내에 저장되는 데이터에 대하여 산술적 오른쪽 시프트 연산을 수행한다. 데이터 시프팅 연산에 후속하여, 실행 유닛(345)은 추가로 레지스터 유닛(210) 내의 시프트된 데이터에 인접한 비워진 비트 위치들에 미리 결정된 비트 확장을 삽입한다. 미리 결정된 비트 확장은 레지스터 유닛(210) 내에 저장되는 데이터의 양 또는 음 값을 보존하고, 저장된 데이터의 각각의 양 또는 음 부호를 위하여 비트 값들의 0 또는 1 연속으로서 삽입된다.
프로세싱 블럭(430)에서, 레지스터 유닛 내의 시프트된 데이터로의 유니터리 정수 값의 가산이 수행된다. 일 실시예에서, 실행 유닛(345)은 결과 데이터를 획득하기 위하여 예를 들어, 레지스터 유닛(210) 내의 시프트된 데이터로의 양의 +1 값의 32-비트 가산과 같은, 시프트된 데이터에 대한 가산 연산을 수행한다.
프로세싱 블럭(440)에서, 단일 비트 값에 의한 추가의 데이터 시프팅이 수행된다. 일 실시예에서, 실행 유닛(345)은 최종 라운딩된 데이터 결과들을 획득하기 위하여 단일 비트만큼 결과 데이터에 대하여 제2 오른쪽 시프팅 연산을 수행한다. 데이터 시프팅 연산에 후속하여, 실행 유닛(345)은 추가로 레지스터 유닛(210) 내의 비워진 비트 위치에 미리 결정된 1-비트 확장을 삽입한다. 일 실시예에서, 미리 결정된 비트 확장은 레지스터 유닛(210) 내에 저장되는 결과 데이터의 양 또는 음 값을 보존하고, 0 또는 1 값으로서 삽입된다.
도 5는 도 4와 관련하여 개시되는 데이터를 시프트 및 라운딩하기 위한 방법을 도시하는 블럭도이다. 도 5에 도시되는 바와 같이, 소스 레지스터 유닛(Rs)(510)은 일반적 레지스터 파일 구조(200)로부터 식별되고 검색된다.
일 실시예에서, 결과 목적지 레지스터 유닛(RD)(520)으로 소스 레지스터 유닛(Rs)(510) 내의 데이터를 시프트 및 라운딩하기 위한 명령은 다음과 같다:
RD = asr(RS, #U): rnd
여기서 "asr"은 산술적 오른쪽 시프트 연산자이고, "#U"는 산술적 오른쪽 시프트 연산을 위한 시프팅 비트 값이며, "rnd"는 라운딩 연산자이다. 일 실시예에서, 상기 명령의 연관된 작용은 RD = ((RS >> (#U - 1)) + 1) >> 1로서 표현될 수 있으며, 이는 소스 레지스터 유닛(Rs)(510)의 데이터가 먼저 명령 내에 포함되는 시프팅 비트 값(#U)보다 단일 비트만큼 낮은 인코딩된 비트 값(#U - 1)만큼 오른쪽으로 시프트되고, 그 후, +1 정수 값이 결과 데이터를 획득하기 위하여 시프트된 데이터에 가산되며, 최종적으로, 결과 데이터는 다시 목적지 레지스터 유닛(RD)(520) 내에 저장될 최종 라운딩된 데이터 결과들을 획득하기 위하여 단일 비트만큼 오른쪽으로 시프트된다.
일 실시예에서, 소스 레지스터 유닛(Rs)(510) 내의 데이터가 예를 들어, 이진 표현 0111을 갖는 숫자 7과 같은 정수 값이고, 그리고 그러한 데이터에 대하여 수행될 산술 연산이 시프팅 비트 값 1만큼 오른쪽으로 시프팅 연산을 수행한 후 최종 라운딩된 정수 값 4를 획득하기 위하여 결과 데이터 7/2 = 3.5에 대하여 라운딩 연산을 수행하는 2에 의한 나눗셈이면, 명령은 RD = asr(0111, #U): rnd로서 표현될 수 있다. 도 5에 보여지는 바와 같이, 명령의 실행시, 예를 들어, 정수 값 7의 이진 표현 0111과 같은 소스 레지스터 유닛(Rs)(510) 내의 데이터(511)는 원하는 시프트량으로부터 1을 감산함으로써 계산되는 인코딩된 비트 값에 기초하여 오른쪽으로 시프트된다. #1의 원하는 시프트에 대하여, 인코딩된 값은 #0이어야만 한다. 그 다음에, 미리 결정된 비트 확장(513)은 시프트된 데이터(512)에 인접한 비워진 비트 위치들 내에 삽입된다. 이러한 경우에, 인코딩된 비트 값은 0이기 때문에 삽입은 필요치 않다.
그 후, 32-비트 가산 연산이 시프트된 데이터(512)에 대하여 수행되고, 결과 데이터(514)를 획득하기 위하여 +1 값이 시프트된 데이터(512)에 가산된다. 일 실시예에서, 시프트된 데이터(512)는 여전히 0111의 이진 표현을 갖는 7 값이고, 가산에 후속하여, 결과 데이터(514)는 1000의 이진 표현을 갖는 7 + 1 = 8이다.
최종적으로, 결과 데이터(514)는 추가로 단일 비트만큼 오른쪽으로 시프트되고, 미리 결정된 비트 확장이 목적지 레지스터 유닛(520) 내의 최종 데이터를 획득하기 위하여 비워진 비트 위치 내에 삽입된다. 일 실시예에서, 이진 표현 1000은 추가로 단일 비트만큼 오른쪽으로 시프트되고, 0 값의 미리 결정된 1-비트 확장이 최초 데이터(511)의 양의 양상을 보존하기 위하여 비워진 비트 위치 내에 삽입되어, 목적지 레지스터 유닛(RD)(520) 내에 저장될 최종 라운딩된 정수 값인 숫자 4를 나타내는 이진 표현 0100을 초래한다.
도 6은 디지털 신호 프로세싱 시스템의 레지스터 유닛 내에 있는 데이터를 시프트 및 라운딩하기 위한 명령의 일 실시예에 대한 블럭도이다. 도 6에 도시된 바와 같이, 일 실시예에서, 도 5와 관련하여 기술된 명령은 예를 들어, 목적지 레지스터 유닛(RD)을 인코딩하기 위하여 필요한 정보를 포함하는 5-비트 필드(610), 실행될 명령을 식별하기 위하여 필요한 마이너(minor) 연산 코드 정보를 포함하는 3-비트 필드(620), 추가의 인코딩을 위해 준비되는 비어 있는(empty) 6-비트 필드(625), 패킷/루프 파싱(parsing) 비트 정보를 포함하는 2-비트 필드(630), 소스 레지스터 유닛(Rs)을 인코딩하기 위하여 필요한 정보를 포함하는 5-비트 필드(640), 실행될 명령을 식별하기 위하여 필요한 메이저(major) 연산 코드 정보를 포함하는 3-비트 필드(650), 미리 결정된 시프팅 비트 값을 포함하는 1-비트 필드(660), 데이터 결과들에 대한 목적지 정보를 포함하는 1-비트 필드(670), 소스 및 목적지 레지스터 유닛들의 개별적인 레지스터 타입들(32-비트 또는 64-비트 폭)과 관련된 정보를 포함하는 1-비트 필드들(680 및 685), 및 명령 클래스 정보를 포함하는 4-비트 필드(690)와 같은, 다수의 필드들을 포함하며 이는 전체 32 비트이다. 그러나, 대안적으로, 다른 부가적인 필드들이 또한 본 발명의 범위를 벗어나지 않고 상기 명령들의 인코딩 내에 포함될 수 있다.
본 기술분야의 당업자들은 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있다는 것을 이해할 수 있을 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 지시들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압, 전류, 전자기파, 자기장 또는 입자들, 광 필드 또는 입자들, 또는 이들의 임의의 조합으로 표현될 수 있다.
당업자들은 또한 여기에서 제시된 실시예들과 관련하여 기술된 다양한 예시적인 논리 블록들, 모듈들, 회로들 및 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 모두의 결합으로서 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 그들의 기능적 관점에서 기술되었다. 이러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과된 설계 제약들에 의존한다. 당업자는 이러한 기능들을 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 구현할 수 있으나, 이러한 구현 결정들은 본 발명의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.
여기에서 제시된 실시예들과 관련하여 기술된 다양한 예시적인 논리 블록들, 모듈들 및 회로들은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 또는 다른 프로그래밍가능 로직 장치, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 여기에서 기술된 기능들을 수행하도록 설계된 것들의 조합을 통해 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있으며, 대안적으로 이러한 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수 있다. 프로세서는 또한 DSP 및 마이크로프로세서, 다수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로 프로세서들, 또는 임의의 다른 이러한 구성의 조합과 같이 계산 장치들의 조합으로서 구현될 수 있다.
여기에서 제시되는 실시예들과 관련하여 기술된 알고리즘 또는 방법의 단계들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어에서, 또는 이들의 조합에 의해 직접 구현될 수 있다. 이러한 실시예들이 소프트웨어 프로그램들로서 또는 소프트웨어 프로그램들을 지원하기 위하여 사용될 수 있으며, 이는 임의의 형태의 프로세서 또는 프로세싱 코어(컴퓨터의 CPU와 같은)상에서 실행되거나 또는 그렇지 않으면 기계 또는 컴퓨터 판독가능 매체상에서 또는 기계 또는 컴퓨터 판독가능 매체내에서 구현 또는 실현될 수 있다는 것을 이해해야 한다. 기계 판독가능 매체는 기계(예를 들어, 컴퓨터)에 의하여 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독가능 매체는 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 휴대용 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체를 포함한다. 예시적인 저장 매체는 프로세서에 연결될 수 있으며, 그러한 프로세서는 저장 매체로부터 정보를 판독하고 저장 매체로 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서의 구성요소일 수 있다. 프로세서 및 저장 매체는 ASIC 에 위치할 수 있다. ASIC은 사용자 단말에 위치할 수 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말 내에 이산 컴포넌트들로서 존재할 수 있다.
개시된 실시예들에 대한 앞의 설명은 당업자로 하여금 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 당업자에게 명백할 것이며, 여기에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 벗어나지 않고 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기에서 제시된 실시예들에 제한되는 것이 아니라 여기에서 기술된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (33)

  1. 컴퓨터 판독가능 매체로서,
    상기 매체내에 포함되는 다수의 실행가능 명령들의 명령을 포함하고, 상기 명령은, 프로세싱 시스템에서 실행될 때, 상기 프로세싱 시스템이 상기 명령의 부호없는(unsigned) 시프팅 비트 값으로부터 1을 감산함으로써 결정되는 인코딩된 비트 값에 기초하여 레지스터 파일 구조의 소스 레지스터 유닛 내의 데이터를 시프트시키고, 추가로 다음(next) 정수 값으로 상기 데이터를 라운딩시키도록 하는, 컴퓨터 판독가능 매체.
  2. 제1항에 있어서,
    상기 명령의 실행은 추가로 상기 프로세싱 시스템이 상기 인코딩된 비트 값에 기초하여 상기 소스 레지스터 유닛 내의 데이터를 시프트시키고, 결과 데이터를 획득하기 위하여 시프트된 데이터에 유니터리(unitary) 정수 값을 가산하고, 상기 부호없는 시프팅 비트 값의 부호에 독립적으로 단일(single) 비트 값만큼 상기 결과 데이터를 시프트시키도록 하는, 컴퓨터 판독가능 매체.
  3. 제2항에 있어서,
    상기 명령의 실행은 추가로 상기 프로세싱 시스템이 상기 시프트된 데이터에 인접한 비워진(vacated) 비트 위치들 내에 미리 결정된 비트 확장(extension)을 삽입하도록 하는, 컴퓨터 판독가능 매체.
  4. 제2항에 있어서,
    상기 명령의 실행은 추가로 상기 프로세싱 시스템이 목적지 레지스터 유닛 내의 최종 데이터를 획득하기 위하여 상기 결과 데이터에 인접한 비워진 비트 위치 내에 미리 결정된 비트 확장을 삽입하도록 하는, 컴퓨터 판독가능 매체.
  5. 제1항에 있어서,
    상기 소스 레지스터 유닛은 32-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 컴퓨터 판독가능 매체.
  6. 제1항에 있어서,
    상기 소스 레지스터 유닛은 64-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 컴퓨터 판독가능 매체.
  7. 삭제
  8. 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법으로서,
    상기 방법은,
    상기 프로세서에서 실행가능 명령을 수신하는 단계; 및
    상기 실행가능 명령내의 부호없는 시프팅 비트 값으로부터 1을 감산함으로써 결정되는 인코딩된 비트 값에 기초하여 레지스터 파일 구조의 소스 레지스터 유닛 내의 데이터를 시프트시키고 추가로 다음 정수 값으로 상기 데이터를 라운딩하기 위하여 상기 프로세서에서 상기 실행가능 명령을 실행하는 단계를 포함하는,
    프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  9. 제8항에 있어서, 상기 실행 단계는,
    상기 인코딩된 비트 값에 기초하여 상기 소스 레지스터 유닛 내의 데이터를 시프트시키는 단계;
    결과 데이터를 획득하기 위하여 상기 시프트된 데이터에 유니터리 정수 값을 가산하는 단계; 및
    목적지 레지스터 유닛 내에 저장되는 최종 데이터를 획득하기 위하여 단일 비트 값만큼 상기 결과 데이터를 시프트시키는 단계를 더 포함하는, 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  10. 제9항에 있어서,
    상기 실행 단계는 상기 시프트된 데이터에 인접한 비워진 비트 위치들 내에 미리 결정된 비트 확장을 삽입하는 단계를 더 포함하는, 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  11. 제9항에 있어서,
    상기 실행 단계는 상기 최종 데이터를 획득하기 위하여 상기 결과 데이터에 인접한 비워진 비트 위치 내에 미리결정된 비트 확장을 삽입하는 단계를 더 포함하는, 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  12. 제8항에 있어서,
    상기 소스 레지스터 유닛은 32-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  13. 제8항에 있어서,
    상기 소스 레지스터 유닛은 64-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  14. 삭제
  15. 집적 회로로서,
    명령들을 포함하는 패킷들을 저장하기 위한 메모리; 및
    상기 메모리에 연결되고, 프로세싱 유닛 및 상기 프로세싱 유닛에 연결되는 레지스터 파일 구조를 포함하는 프로세서를 포함하고,
    상기 프로세싱 유닛은, 실행가능 명령을 수신하고, 상기 실행가능 명령의 부호없는 시프팅 비트 값으로부터 1을 감산함으로써 결정되는 인코딩된 비트 값에 기초하여 레지스터 파일 구조의 소스 레지스터 유닛내의 데이터를 시프트시키고 추가로 다음 정수 값으로 상기 데이터를 라운딩시키기 위하여 상기 실행가능 명령을 실행하는,
    집적 회로.
  16. 제15항에 있어서,
    상기 프로세싱 유닛은 추가로 상기 인코딩된 비트 값에 기초하여 상기 소스 레지스터 유닛 내에서의 데이터의 시프팅을 수행하고, 결과 데이터를 획득하기 위하여 상기 시프트된 데이터에 유니터리 정수 값의 가산을 수행하고, 목적지 레지스터 유닛 내에 저장되는 최종 데이터를 획득하기 위하여 단일 비트 값만큼 상기 결과 데이터의 시프팅을 수행하는, 집적 회로.
  17. 제16항에 있어서,
    상기 프로세싱 유닛은 추가로 상기 시프트된 데이터에 인접한 비워진 비트 위치들 내에 미리 결정된 비트 확장을 삽입하는, 집적 회로.
  18. 제16항에 있어서,
    상기 프로세싱 유닛은 추가로 상기 최종 데이터를 획득하기 위하여 상기 결과 데이터에 인접한 비워진 비트 위치 내에 미리 결정된 비트 확장을 삽입하는, 집적 회로.
  19. 제15항에 있어서,
    상기 소스 레지스터 유닛은 32-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 집적 회로.
  20. 제15항에 있어서,
    상기 소스 레지스터 유닛은 64-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 집적 회로.
  21. 삭제
  22. 실행가능 명령을 수신하기 위한 수단; 및
    상기 명령 내에 저장되는 부호없는 시프팅 비트 값으로부터 1을 감산함으로써 결정되는 인코딩된 비트 값에 기초하여 레지스터 파일 구조의 소스 레지스터 유닛 내의 데이터를 시프트시키고, 추가로 다음 정수 값으로 데이터를 라운딩시키도록 상기 실행가능 명령을 실행하기 위한 수단을 포함하는,
    장치.
  23. 제22항에 있어서,
    상기 인코딩된 비트 값에 기초하여 상기 소스 레지스터 유닛 내의 데이터를 시프트시키기 위한 수단;
    결과 데이터를 획득하기 위하여 상기 시프트된 데이터에 유니터리 정수 값을 가산하기 위한 수단; 및
    목적지 레지스터 유닛 내에 저장되는 최종 데이터를 획득하기 위하여 단일 비트 값만큼 상기 결과 데이터를 시프트시키기 위한 수단을 더 포함하는, 장치.
  24. 제23항에 있어서,
    상기 시프트된 데이터에 인접한 비워진 비트 위치들 내에 미리 결정된 비트 확장을 삽입하기 위한 수단을 더 포함하는, 장치.
  25. 제23항에 있어서,
    상기 최종 데이터를 획득하기 위하여 상기 결과 데이터에 인접한 비워진 비트 위치 내에 미리 결정된 비트 확장을 삽입하기 위한 수단을 더 포함하는, 장치.
  26. 제23항에 있어서,
    상기 소스 레지스터 유닛은 32-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 장치.
  27. 제23항에 있어서,
    상기 소스 레지스터 유닛은 64-비트 폭 레지스터 유닛이고, 결과 목적지 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 장치.
  28. 삭제
  29. 제8항에 있어서, 상기 실행가능 명령은 나눗셈 명령인, 프로세서에서 시프팅 및 라운딩 연산을 수행하기 위한 방법.
  30. 제15항에 있어서, 상기 실행가능 명령은 나눗셈 명령인, 집적회로.
  31. 제22항에 있어서, 상기 실행가능 명령은 나눗셈 명령인, 장치.
  32. 제1항에 있어서, 상기 다수의 실행가능 명령들은 하나 이상의 실행가능 명령들을 가진 매우 긴 명령 워드 패킷(very long instruction word packet)을 포함하며, 상기 하나 이상의 실행가능 명령이 시퀀서에 의하여 수신될때 상기 시퀀서는 하나 이상의 대응하는 파이프라인들 및 하나 이상의 대응하는 실행 유닛들에 각각의 실행가능 명령을 전달하며, 상기 하나 이상의 실행가능 명령들은 하나의 클록 사이클에서 병렬로 전달되며, 상기 하나 이상의 실행가능 명령은 상기 하나 이상의 대응하는 실행 유닛들이 상기 레지스터 파일 구조의 소스 레지스터 유닛내의 데이터를 시프트시키도록 하는, 컴퓨터 판독가능 매체.
  33. 제33항에 있어서, 상기 매우 긴 명령 워드 패킷은 1개 내지 4개의 실행가능 명령들을 포함하며, 상기 시퀀서는 4개의 대응하는 파이프라인들 중 하나에 그리고 4개의 대응하는 실행 유닛들 중 하나에 각각의 실행가능 명령을 전달하는, 컴퓨터 판독가능 매체.
KR1020097004432A 2006-08-02 2007-07-27 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템 KR101056553B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/498,604 US7949701B2 (en) 2006-08-02 2006-08-02 Method and system to perform shifting and rounding operations within a microprocessor
US11/498,604 2006-08-02
PCT/US2007/074639 WO2008016856A1 (en) 2006-08-02 2007-07-27 Method and system to perform shifting and rounding operations within a microprocessor

Publications (2)

Publication Number Publication Date
KR20090042293A KR20090042293A (ko) 2009-04-29
KR101056553B1 true KR101056553B1 (ko) 2011-08-11

Family

ID=38695493

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097004432A KR101056553B1 (ko) 2006-08-02 2007-07-27 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US7949701B2 (ko)
EP (1) EP2074509B1 (ko)
KR (1) KR101056553B1 (ko)
AT (1) ATE548692T1 (ko)
WO (1) WO2008016856A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9823928B2 (en) * 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6099158A (en) 1996-08-07 2000-08-08 Sun Microsystems, Inc. Apparatus and methods for execution of computer instructions
US20050125641A1 (en) 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for moving data between registers and memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999801A (en) * 1988-07-15 1991-03-12 Fujitsu Limited Floating point operation unit in division and square root operations
US5844827A (en) * 1996-10-17 1998-12-01 Samsung Electronics Co., Ltd. Arithmetic shifter that performs multiply/divide by two to the nth power for positive and negative N
US5930159A (en) * 1996-10-17 1999-07-27 Samsung Electronics Co., Ltd Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result
US6243728B1 (en) * 1999-07-12 2001-06-05 Sony Corporation Of Japan Partitioned shift right logic circuit having rounding support
US6889242B1 (en) * 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US20060218380A1 (en) * 2005-03-24 2006-09-28 Stexar Corporation Add-shift-round instruction with dual-use source operand for DSP

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6099158A (en) 1996-08-07 2000-08-08 Sun Microsystems, Inc. Apparatus and methods for execution of computer instructions
US20050125641A1 (en) 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for moving data between registers and memory

Also Published As

Publication number Publication date
ATE548692T1 (de) 2012-03-15
US7949701B2 (en) 2011-05-24
WO2008016856A1 (en) 2008-02-07
KR20090042293A (ko) 2009-04-29
EP2074509A1 (en) 2009-07-01
US20080034189A1 (en) 2008-02-07
EP2074509B1 (en) 2012-03-07

Similar Documents

Publication Publication Date Title
CN107408040B (zh) 配置成利用无序执行对可变长度向量进行操作的向量处理器
KR100563219B1 (ko) 혼합 벡터/스칼라 레지스터 파일
KR100505799B1 (ko) 코프로세서 데이터 액세스 제어
KR100500890B1 (ko) 디지탈 신호처리용 집적회로구조
KR101048234B1 (ko) 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템
KR100563220B1 (ko) 재순환 레지스터 파일
US7127593B2 (en) Conditional execution with multiple destination stores
US8051226B2 (en) Circular buffer support in a single instruction multiple data (SIMD) data processor
JP5559297B2 (ja) ハードウェアエンドループ情報の命令へのコード化
JP2007533006A (ja) 複合命令形式および複合オペレーション形式を有するプロセッサ
US8127117B2 (en) Method and system to combine corresponding half word units from multiple register units within a microprocessor
US6430684B1 (en) Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s)
US8707013B2 (en) On-demand predicate registers
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
KR101056553B1 (ko) 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템
KR20000048531A (ko) 데이터 처리장치에서의 입력 오퍼랜드 제어
JPH11353305A (ja) ベクトルレジスタのアドレス指定
JP2002517038A (ja) 再循環レジスタファイル
KR20000048530A (ko) 데이터 처리장치 레지스터

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 9