KR20100108509A - 레지스터 명령 필드를 인코딩하는 방법 - Google Patents

레지스터 명령 필드를 인코딩하는 방법 Download PDF

Info

Publication number
KR20100108509A
KR20100108509A KR1020107009746A KR20107009746A KR20100108509A KR 20100108509 A KR20100108509 A KR 20100108509A KR 1020107009746 A KR1020107009746 A KR 1020107009746A KR 20107009746 A KR20107009746 A KR 20107009746A KR 20100108509 A KR20100108509 A KR 20100108509A
Authority
KR
South Korea
Prior art keywords
bits
registers
register
group
instruction
Prior art date
Application number
KR1020107009746A
Other languages
English (en)
Inventor
메이안 모두길
Original Assignee
샌드브리지 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌드브리지 테크놀로지스, 인코포레이티드 filed Critical 샌드브리지 테크놀로지스, 인코포레이티드
Publication of KR20100108509A publication Critical patent/KR20100108509A/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/3016Decoding the operand specifier, e.g. specifier format

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)

Abstract

본 발명에 따른 방법은 x 비트를 가지는 레지스터 명령 필드에 의해 레지스터를 선택한다. 레지스터의 제 1 그룹은 2y개까지의 레지스터를 포함하고, 레지스터의 제 2 그룹은 2z개까지의 레지스터를 포함한다. 여기서, y 및 z는 1 이상이고, x보다 작거나 같다. 이 방법은 x 비트로 명령 필드를 인코딩하는 단계를 포함하고, 여기서, x 비트 중 y 비트는 제 1 그룹의 레지스터를 지정하고, x 비트 중 z 비트는 제 2 그룹의 레지스터를 지정한다. 상기 명령 필드의 y 비트에 의해 지정된 제 1 그룹의 레지스터와 상기 명령 필드의 z 비트에 의해 지정된 제 2 그룹의 레지스터가 선택된다.

Description

레지스터 명령 필드를 인코딩하는 방법{Method of Encoding Register Instruction Fields}
본 발명은 명령 인코딩에 관한 것으로, 더 구체적으로는 레지스터 명령 필드를 인코딩하는 방법에 관한 것입니다.
일반적으로, 레지스터를 지정할 수 있는 소정 개수의 필드가 존재하도록 명령이 설계된다.
이러한 설계 파라미터는 고정된 명령 워드 사이즈를 가지는 아키텍처에 관해 참(true)을 유지한다. 예를 들어 RISC(Reduced Instruction Set Computing) 아키텍쳐는 고정된 명령 워드 사이즈에 의존한다. 또한, 이는 일반적으로 CISC(Complex Instruction Set Computing) 아키텍처에도 마찬가지로 참(true)이다. 이외의 다른 예들도 본 발명이 속하는 분야의 기술자에 이해될 수 있다. 예를 들면, ARM(Advanced RISC Machine) 아키텍처에서, 네 개까지의 레지스터 필드가 지정될 수 있다. POWER(Performance Optimization With Enhanced RISC) 아키텍처에서는, 레지스터 필드가 세 개까지 지정될 수 있다. 알파 아키텍처에서는, 세 개까지의 레지스터 필드가 지정될 수 있다. 그러나 종종 추가 레지스터가 필요하다.
본 발명이 속하는 분야의 기술자가 이해할 수 있는 바와 같이, 서로 다른 "추가 레지스터"는 전용 레지스터(dedicated register), 하드 코드화 레지스터(hard coded register), 및 레지스터 쌍(register pairs)을 포함한다.
"추가 레지스터"의 일 유형은 전용 레지스터(dedicated register)이다. 전용 레지스터는 특별한 목적을 가진 레지스터의 유형이다. 예를 들어, 원래의 POWER 아키텍처는 64 비트 결과를 생성하기 위해 두 개의 32 비트 값을 곱하도록 설계된 명령을 포함했다. POWER 아키텍처에 의해 사용된 레지스터가 32 비트 값이었기 때문에, 네 개의 레지스터가 계산에 필요했다. 즉, 두 개의 입력 레지스터와 두 개의 출력 레지스터가 필요하였다. POWER 아키텍처는 곱의 상위 32 비트가 특별한 목적의 MQ(Multiplier/Quotient) 레지스터로 보내지도록 특정된다.
"추가 레지스터"의 제 2 유형은 하드 코드화 레지스터(hard coded register)로 알려져 있다. 하드 코드화 레지스터는 복수의 예가 존재하는 특정한 레지스터이다. 일 예는 PowerPC 아키텍처에 관한 것이다. PowerPC 아키텍처에는, 8 개의 조건 필드 레지스터가 존재한다. 이러한 아키텍처에서, 명령이 산술적 연산(예를 들면, 덧셈(add))을 수행할 때, 네 개의 레지스터(두 개의 입력 레지스터(각 입력 값에 대해 하나씩), 하나의 출력 정수 레지스터), 그리고 하나의 입력 조건 필드가 필요하다. 본 발명이 속하는 분야의 기술자가 이해할 수 있는 바와 같이, 이러한 유형의 명령들이 항상 조건 필드 레지스터에 '0'을 기록한다.
제 3 유형의 "추가 레지스터"는 레지스터 쌍이다. POWER2 아키텍처는 레지스터 쌍의 개념 정의를 돕는다. POWER2 아키텍처 내의 저장 쿼드(quad) 명령에 대해, 두 개의 입력 정수 레지스터 및 두 개의 입력 플로팅 포인트 레지스터가 필요하다. 두 개의 입력 레지스터는 어드레스를 연산한다. 두 개의 입력 플로팅 포인트 레지스터는 값의 저장이 가능하다. 두 개의 플로팅 포인트 레지스터를 지정하는 대신에, 하나의 레지스터만이 그 명령에 지정된다. 그 레지스터 및 다음의 더 큰 레지스터는 메모리로 저장된다.
그러나, 종래 기술은 적합하게 명령 인코딩을 처리하지 못한다. 더구나, 종래 기술은 그 외의 결함 중에서, 레지스터 명령 필드를 인코딩하는 적합한 방법을 제공하지 못한다.
본 발명은 종래 기술상의 하나 이상의 문제점을 처리하도록 제공된다.
따라서, 하나의 기술적 측면에서, 본 발명은 오버로딩 필드 인코딩을 처리한다.
일 실시예에서, 오버로딩 필드 인코딩을 처리하기 위해, 본 발명은 x 비트를 가지는 제 1 레지스터 명령 필드에 의해 레지스터를 선택하는 방법을 제공한다. 2y 개까지의 레지스터를 가지는 제 1 그룹의 레지스터와 2z개 까지의 레지스터를 가지는 제 2 그룹의 레지스터가 선택된다. 이 실시예에서, y 및 z는 1 이상이고, x 이하이다. 다르게 설명하면, 1≤y≥x 이고 1≤z≥x 이다. 이러한 방법은 x 비트를 가지는 제 1 명령 필드를 인코딩하는 단계를 포함한다. 여기서, y 비트(이는 x 비트의 서브세트 임)가 제 1 그룹의 레지스터를 지정한다. z 비트(x 비트의 서브세트 임)는 제 2 그룹의 레지스터를 지정한다. 이 방법은 제 1 그룹의 레지스터(제 1 명령 필드의 y 비트에 의해 지정됨) 및 제 2 그룹의 레지스터(제 1 명령 필드의 z 비트에 의해 지정됨)를 선택한다. 이러한 실시예에서, 일반적으로 y 또는 z 중 하나가 x와 같고, 나머지는 x보다 작거나 같다.
본 발명의 일 실시예에서, x 및 y가 3 비트일 수 있고, z는 2 비트일 수 있다.
다른 실시예에서, 명령 워드가 세 개의 레지스터 명령 필드를 가질 수 있다.
또 다른 실시예에서, 이 방법은 동일한 명령 워드 내의 하나 이상의 레지스터 명령 필드를 오버로드(overload) 하기 위해 수행될 수 있다.
그 외에 다른 실시예들이 이 명세서에 첨부된 도면 및 이하의 설명으로부터 이해될 수 있음은 본 발명이 속하는 분야의 기술자에게 자명하다.
지금부터 본 발명이 이 명세서에 첨부된 도면에 관하여 설명된다.
도 1은 3-비트 필드를 사용한, RPU 비교 명령에 대한 인코딩을 나타내는 도면이며, 두 개의 입력 벡터 레지스터와 출력 마스크 레지스터가 이용되고, RPU 비교 명령은 본 발명에서 사용될 수 있는 하나의 명령 타입이다.
도 2는 rmax 명령의 포맷을 나타내는 도면으로, rmax 명령은 본 발명과 함께 사용하도록 고려된 하나의 아키텍처에 의해 구현될 수 있다.
도 3 및 4는 흐름도 형태의 도면으로, 본 발명에 따른 방법의 하나의 실시예를 표현한다.
이하에서 하나 이상의 실시예에 관련하여 본 발명이 설명될 것이다. 설명된 본 발명의 실시예는 어떠한 방식으로든 본 발명을 제한하고자 하는 의도는 아니다. 반대로, 실시예는 예시로서, 본 발명의 범위 및 폭을 설명하고자 하는 것이다. 본 발명이 속하는 분야의 기술자는 다음의 실시예에 의해 표현된 것과 같은 본 발명의 등가물 및 변형예를 이해할 것이라 예상된다. 본 발명은 이러한 등가물 및 변형예를 포함하는 것이다.
예로서, SBX2 아키텍처는 인코딩 및 실행에 대한 본 발명의 방법을 설명하는 데 사용될 것이다. SBX2 아키텍처는 미국 유타주, 솔트 레이크 시티의 Systronix, Inc.에 의해 제조된 비디오 인터페이스(입력/출력 장치)이다. 본 발명이 SBX2 아키텍처와 관련하여 설명되었으나, 본 발명은 이러한 구체적인 아키텍처에만 적용될 수 있는 것이 아니다. 분명하게 알 수 있는 바와 같이, 본 발명은 이외의 다른 아키텍처에서 구현될 수 있으며, 이러한 다른 아키텍처가 본 발명의 범위 내에 포함된다.
SXB2에 관하여, RPU(Ray Processing Unit) 명령 워드가 21 비트 길이다. RPU 명령 워드는 3-비트 레지스터 명령 필드를 위한 스페이스(공간)를 포함한다. 이용가능한 세 개의 레지스터 카테고리가 존재한다: (1) 8개의 벡터 레지스터, (2) 4개의 마스크 레지스터, 그리고 (3) 4개의 누산기 레지스터.
본 발명에 속하는 분야의 기술자가 이해할 수 있는 바와 같이, RPU 벡터 합산 명령은 두 개의 입력 레지스터와 하나의 출력 벡터 레지스터를 지정한다. RPU 비교 명령은 두 개의 입력 벡터 레지스터와 하나의 출력 마스크 레지스터를 지정한다. 세 개의 3-비트 필드를 사용한, 이러한 레지스터의 인코딩이 도 1에 도시된다. 도시된 바와 같이, 벡터 레지스터 타깃(VRT:vector register target) 필드가 8개의 레지스터 중 하나를 지정하기 위해 3 비트를 필요로 하는 반면, 마스크 레지스터 타깃(MRT:mask register target)은 네 개의 레지스터 타깃 중 하나를 지정하는 데 2 비트를 필요로 한다. VRA 및 VRB는 두 개의 벡터 레지스터 입력이 식별되게 한다.
SBX2 아키텍처는 rmax 명령을 포함한다. rmax 명령은 두 개의 벡터 레지스터 입력을 요하며, 이는 도 1의 VRA 및 VRB로 식별된다. 벡터 내의 각 성분 위치에 관하여, rmax 명령은 두 개의 벡터의 최댓값을 선택하고 이 최댓값을 벡터 출력에 기록한다. 추가로, rmax 명령은 1/0을 마스크 레지스터 출력으로 그 성분 위치에 기록한다. 따라서, rmax 명령은 두 개의 타깃-벡터 레지스터 및 마스크 레지스터-를 지정한다. 이미 이해할 수 있는 바와 같이, rmax 명령은 단 세 개의 필드만을 이용하여 네 개의 레지스터를 설계할 것을 요한다.
SBX2 아키텍처에서의 이러한 예에 관하여, 본 발명의 방법은 타깃 레지스터 필드를 "오버로드(overload)"한다. 이는 본 발명에 따른 방법이 벡터와 마스크 레지스터 타깃 양자를 지정하기 위해 타깃 레지스터 필드를 사용한다는 것을 의한다. 타깃 레지스터 필드의 3 비트가 모두 VRT 레지스터를 지정하는 데 사용되고, 타깃 레지스터 필드의 하위 2 비트가 MRT 레지스터를 지정하는 데 사용된다. rmax 명령의 포맷이 도 2에 도시된다. 도시된 바와 같이 VRT 레지스터 필드의 MRT 부분이 설계된다. 언급한 바와 같이, VRT 레지스터의 MRT 부분은 마스크 레지스터 타깃(MRT)을 지정하도록 오버로드된 하위 2 비트를 점유한다.
본 발명에 대하여, rmax동작의 예가 이하의 코드 세그먼트 #1에 제공된다. 코드 세그먼트 #1은 rmax 명령에 대한 단지 하나의 가능 표현인 것임에 주의한다.
코드 세그먼트 #1
mrt ㆍvrt ( 1 : 0 )
for ( i = 0 ; i < 1 6 ; i + + )
if (vr [vra]i > vr [vrb]i )
vr [vrt]i ㆍvr [vra]i
mr [mrt]i ㆍ1
else
vr [vrt]i ㆍvr [vrb]i ,
mr[mrt]i ㆍ0
코드 세그먼트 #1에서, "vrt"는 타깃 레지스터(VRT)를 지정하는 것이며, "mrt"는 마스크 레지스터(MRT)를 지명하는 VRT 어드레스의 최하위 2 비트이다.
타깃 레지스터(VRT)의 모든 성분이 두 개의 입력 벡터 레지스터(VRA 및 VRB)의 성분의 대응 성분별-최대값(element-wise)으로 설정된다. RVA 내의 대응하는 성분이 VRB 내의 성분보다 큰 경우에, 벡터 마스크 레지스터(MRT)의 하위 16 비트가 1로 설정된다. rmax 명령의 실행 후에, 타깃 벡터 마스크 레지스터(MRT)의 상위 16 비트가 불확정 상태(undefined)가 된다.
이러한 접근법은 추가 레지스터를 지정하기 위해 이전에 사용된 접근법에 비해 몇몇 이점을 가진다. 첫 번째로, 이는 유연성을 가지도록 한다. 마스크 레지스터가 rmax 명령의 타깃으로 사용될 수 있기 때문에, 마스크 레지스터 타깃을 재사용해야만 하기 전에 네 개까지 rmax 동작을 연속으로 수행하는 것이 가능하다. 두 번째로, 이러한 접근법은 디코딩을 간편하게 한다. 명령이 지정될 셋 이상의 레지스터를 필요로 할 때에도, 마스크 타깃 레지스터 및 벡터 타깃 레지스터가 명령 워드에서 항상 동일한 비트를 지정할 수 있다.
오버로딩(overloading)의 다른 예는 RPU 곱(multiply)을 포함하고, 시프트 및 회전 명령으로 포화되는 것을 감소시킨다. 이러한 연산이 이하의, 코드 세그먼트 #2와 같이 표현될 수 있다.
코드 세그먼트 #2
act = vrt(l:0)
shift (vrt, act, 0)
rotate (vra, 1)
t = 0
for(i=0; i<16; i++)
t = vr[vra]i * vr[vrb]i + t
acr[act]31-0 = saturate32(t ㆍ 0)
코드 세그먼트 #2에 관하여, "act"는 VRT 어드레스의 하위 2비트이고, 누산기(ACT)를 지정하는 것이다.
본 발명의 이러한 실시예에서, 입력 레지스터(VRA 및 VRB)의 모든 성분이 서로 곱해지고, 이 곱(product)이 더해진다. 합산 결과가 일 위치(one position)만큼 시프트되고, 이어서 포화된다(saturated). 이러한 연산의 결과가 누산기(ACT)의 하위 32 비트로 기록된다. ACT 내의 값은 이어서 레지스터(VRT)로 시프트되고, 이는 0인 "acsh" 필드를 이용한 rshift 명령의 동작과 유사하게, "s" 및 "act"를 연결함으로써 형성된다.
본 발명에 따른 방법에 관하여, 각각의 예가 단일 레지스터 명령 필드 그리고 특히 출력 레지스터 명령 필드의 오버로드를 사용하였으나, 임의의 레지스터 명령 필드가 오버로드될 수 있다. 나아가, 하나 이상의 레지스터 명령 필드가 동일한 명령 워드에 오버로드될 수 있다. 또한 본 발명이 속하는 분야의 기술자가 이해할 수 있는 바와 같이, 나머지 변형예가 본 발명의 범위에 포함되도록 고려된다.
본 발명에 따른 오버로드된 필드 인코딩하는 방법이 넓은 범위의 다양한 프로세스 알고리즘, 기술 및 아키텍처를 포함하도록 일반화될 수 있다. 위에 언급한 바와 같이, 본 발명은 특정한 아키텍처에 한정되는 것이 아니다. 수행될 연산에 이용될 수 있는 레지스터 명령 필드의 수보다 지정하는데 더 많은 레지스터가 필요한 경우에, 본 발명의 오버로딩 방법이 이용될 수 있다.
일반적인 관점에서, 본 발명의 오버로딩 방법은 x 비트를 가지는 레지스터 명령 필드에 의해 레지스터를 선택한다. 제 1 그룹의 레지스터가 2y 개까지의 레지스터를 포함한다. 제 2 그룹의 레지스터는 2z 개까지의 레지스터를 포함한다. 변수인 y 및 z는 1 이상이나 x 보다는 작거나 같다. 이 방법은 x 비트로 명령 필드를 인코딩하는 단계를 포함하며, 여기서, x 비트 중 y 비트는 제 1 그룹의 레지스터를 지정하고, x 비트 중 z 비트는 제 2 그룹의 레지스터를 지정한다. 제 1 그룹의 레지스터가 명령 필드의 y 비트에 의해 지정되고, 제 2 그룹의 레지스터가 명령 필드의 z 비트에 의해 지정된다.
이제부터 본 발명의 일반적인 방법(10)을 개괄적으로 그리는 흐름도를 제공하는, 도 3 및 4를 참조한다.
방법(10)은 단계(12)에서 시작한다. 단계(14)에서, 방법(10)은 명령 워드의 x 비트를 이용하여 레지스터 명령 필드를 정의하도록 진행된다. 단계(16)에서, 방법(10)은 단지 2y 개의 레지스터를 포함하는 제 1 그룹의 레지스터를 정의한다. 단계(18)에서, 방법(10)은 단지 2z 개의 레지스터를 포함하는 제 2 그룹의 레지스터를 정의한다. 단계(20)에서, 방법(10)은 x 비트를 이용하여 제 1 명령 필드를 인코딩한다. 여기서, x 비트 중 y 비트는 제 1 그룹의 레지스터를 지정하고, x 비트 중 z 비트는 제 2 그룹의 레지스터를 지정한다. 이어서, 방법(10)은 단계(24)로 진행하여, 여기서, 제 1 명령 필드의 y 비트에 의해 지정된 제 1 그룹의 레지스터가 선택된다. 단계(26)에서, 방법(10)은 y 비트를 이용하여 제 1 그룹의 레지스터를 인코딩한다. 단계(28)에서, 방법(10)은 제 1 명령 필드의 z 비트에 의해 지정된 제 2 그룹의 레지스터를 선택한다. 단계(30)에서, 방법(10)은 y 비트를 이용하여 제 1 그룹의 레지스터를 인코드한다. x, y 및 z는 정수이고, y 및 z는 1 이상이며, y 및 z는 x 보다 작거나 같다. 방법(10)은 단계(32)에서 종료한다. 도 3 및 4에 관하여, "A"는 도면 사이의 연속성을 부여하는 커넥터(22)를 나타낸다.
앞의 내용으로부터 알 수 있는 바와 같이, y는 x와 동일할 수 있고, z는 x 이하일 수 있다. 택일적으로, y는 z보다 클 수 있다. 또한, y가 z와 동일할 수 있다.
이 명세서에 언급한 바와 같이, x 및 y는 3 비트일 수 있으며, z는 2 비트일 수 있다.
마지막으로, 명령 워드가 복수의 레지스터 명령 필드를 가질 수 있으며, 인코딩 및 선택 단계는 레지스터 명령 필드 중 둘 이상의 필드에서 수행될 수 있다.
본 발명의 명세가 상세히 설명 및 표현되었으나, 이는 단지 표현 및 예시일 분이며, 제한으로 받아들여서는 안 된다는 것을 명확히 이해해야 한다. 반면에, 위에 언급한 바와 같이, 위에 설명한 실시예 및 구현예가 본 발명의 예를 들려는 것이며 본 발명을 제한하려는 것이 아니다.

Claims (12)

  1. 명령 워드에서 x 비트를 가지는 레지스터 명령 필드에 의해 레지스터를 선택하는 방법에 있어서,
    레지스터의 제 1 그룹은 2y개까지의 레지스터를 포함하고, 레지스터의 제 2 그룹은 2z개까지의 레지스터를 포함하며, y 및 z는 1 이상이고 x 이하이며, 이 방법은:
    x 비트로 제 1 명령 필드를 인코딩하는 단계로서, 여기서, x 비트 중 y 비트는 제 1 그룹의 레지스터를 지정하고, x 비트 중 z 비트는 제 2 그룹의 레지스터를 지정하는, 인코딩하는 단계; 그리고
    상기 제 1 명령 필드의 y 비트에 의해 지정된 제 1 그룹의 레지스터와 상기 제 1 명령 필드의 z 비트에 의해 지정된 제 2 그룹의 레지스터를 선택하는 단계
    를 포함하되,
    x, y, 및 z는 정수인 것을 특징으로 하는 레지스터 선택 방법.
  2. 제 1 항에 있어서,
    y는 x와 같고, z는 x 이하인 것을 특징으로 하는 레지스터 선택 방법.
  3. 제 1 항에 있어서,
    y는 z보다 큰 것을 특징으로 하는 레지스터 선택 방법.
  4. 제 1 항에 있어서,
    y는 z와 동일한 것을 특징으로 하는 레지스터 선택 방법.
  5. 제 1 항에 있어서,
    x 및 y는 3 비트이고, z는 2 비트인 것을 특징으로 하는 레지스터 선택 방법.
  6. 제 1 항에 있어서,
    상기 명령 워드는 복수의 레지스터 명령 필드를 포함하고, 상기 인코딩하는 단계 및 선택하는 단계는 둘 이상의 레지스터 명령 필드에서 수행되는 것을 특징으로 하는 레지스터 선택 방법.
  7. 하나 이상의 레지스터를 오버로딩하는 방법에 있어서, 상기 방법은:
    명령 워드에서 x 비트로 레지스터 명령 필드를 정의하는 단계;
    2y개 이상의 레지스터를 포함하는 레지스터의 제 1 그룹을 정의하는 단계;
    2z개 이상의 레지스터를 포함하는 레지스터의 제 2 그룹을 정의하는 단계;
    x 비트로 제 1 명령 필드를 인코딩하는 단계로서, x 비트 중 y 비트는 제 1 그룹의 레지스터를 지정하고, x 비트 중 z 비트는 제 2 그룹의 레지스터를 지정하는 것이 특징인, 인코딩하는 단계;
    상기 제 1 명령 필드의 y 비트에 의해 지정된 제 1 그룹의 레지스터를 선택하는 단계;
    y 비트로 제 1 그룹의 레지스터를 인코딩하는 단계;
    상기 제 1 명령 필드의 z 비트에 의해 지정된 제 2 그룹의 레지스터를 선택하는 단계; 그리고
    z 비트로 제 1 그룹의 레지스터를 인코딩하는 단계로서, 상기 z 비트는 y비트의 일부 또는 전부를 오버로딩하는 것이 특징인, 인코딩하는 단계를 포함하되,
    x, y, 및 z는 정수이고, y 및 z는 1 이상이고, y 및 z 는 x보다 작거나 같은 것을 특징으로 하는 레지스터 오버로딩 방법.
  8. 제 7 항에 있어서,
    y는 x 와 동일하고, z는 x 이하인 것을 특징으로 하는 레지스터 오버로딩 방법.
  9. 제 7 항에 있어서,
    y는 z보다 큰 것을 특징으로 하는 레지스터 오버로딩 방법.
  10. 제 7 항에 있어서,
    y는 z와 동일한 것을 특징으로 하는 레지스터 오버로딩 방법.
  11. 제 7 항에 있어서,
    x 및 y는 3 비트이고, z는 2 비트인 것을 특징으로 하는 레지스터 오버로딩 방법.
  12. 제 7 항에 있어서,
    상기 명령 워드는 복수의 레지스터 명령 필드를 가지고, 상기 인코딩하는 단계 및 선택하는 단계는 둘 이상의 레지스터 명령 필드에서 수행되는 것을 특징으로 하는 레지스터 오버로딩 방법.
KR1020107009746A 2007-11-05 2008-08-28 레지스터 명령 필드를 인코딩하는 방법 KR20100108509A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US98545807P 2007-11-05 2007-11-05
US60/985,458 2007-11-05

Publications (1)

Publication Number Publication Date
KR20100108509A true KR20100108509A (ko) 2010-10-07

Family

ID=39926502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107009746A KR20100108509A (ko) 2007-11-05 2008-08-28 레지스터 명령 필드를 인코딩하는 방법

Country Status (4)

Country Link
US (1) US20100241834A1 (ko)
EP (2) EP2602710A1 (ko)
KR (1) KR20100108509A (ko)
WO (1) WO2009061547A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
KR20100120133A (ko) * 2008-01-30 2010-11-12 샌드브리지 테크놀로지스, 인코포레이티드 멀티-프로세서 동기화를 활성화하는 방법
EP2245529A1 (en) * 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
CN102027456A (zh) * 2008-03-13 2011-04-20 阿斯奔收购公司 用于通过停用有效阵列实现功率节省的方法
KR20110050665A (ko) 2008-08-06 2011-05-16 아스펜 액퀴지션 코포레이션 정지가능하고 재시작가능한 dma 엔진
US20130305020A1 (en) 2011-04-01 2013-11-14 Robert C. Valentine Vector friendly instruction format and execution thereof
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US20180173527A1 (en) * 2016-12-15 2018-06-21 Optimum Semiconductor Technologies, Inc. Floating point instruction format with embedded rounding rule

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5774726A (en) * 1995-04-24 1998-06-30 Sun Microsystems, Inc. System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler
JP5052713B2 (ja) * 1998-10-09 2012-10-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 条件付き命令を備えるベクトルデータプロセッサ
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US6675291B1 (en) * 1999-05-31 2004-01-06 International Business Machines Corporation Hardware device for parallel processing of any instruction within a set of instructions
GB2363869B (en) * 2000-06-20 2004-06-23 Element 14 Inc Register addressing
US6968445B2 (en) * 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US6842848B2 (en) * 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
EP1623307B1 (en) * 2003-05-09 2015-07-01 QUALCOMM Incorporated Processor reduction unit for accumulation of multiple operands with or without saturation
US7428567B2 (en) * 2003-07-23 2008-09-23 Sandbridge Technologies, Inc. Arithmetic unit for addition or subtraction with preliminary saturation detection
US7251737B2 (en) * 2003-10-31 2007-07-31 Sandbridge Technologies, Inc. Convergence device with dynamic program throttling that replaces noncritical programs with alternate capacity programs based on power indicator
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
EP2069947A4 (en) * 2006-09-26 2013-10-09 Qualcomm Inc APPLICATION OF MATRIX INVERSION SOFTWARE IN A WIRELESS COMMUNICATION SYSTEM
US8332452B2 (en) * 2006-10-31 2012-12-11 International Business Machines Corporation Single precision vector dot product with “word” vector write mask
US9110726B2 (en) * 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
US20080177980A1 (en) * 2007-01-24 2008-07-24 Daniel Citron Instruction set architecture with overlapping fields
KR20100052491A (ko) * 2007-08-31 2010-05-19 샌드브리지 테크놀로지스, 인코포레이티드 가입자 및 엔터티 사이의 자동화된 상호작용을 위한 방법, 장치 및 구조

Also Published As

Publication number Publication date
WO2009061547A1 (en) 2009-05-14
EP2602710A1 (en) 2013-06-12
EP2210171A1 (en) 2010-07-28
US20100241834A1 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
KR20100108509A (ko) 레지스터 명령 필드를 인코딩하는 방법
JP6339164B2 (ja) ベクトルフレンドリ命令フォーマット及びその実行
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
US5864703A (en) Method for providing extended precision in SIMD vector arithmetic operations
US8271571B2 (en) Microprocessor
US20060149804A1 (en) Multiply-sum dot product instruction with mask and splat
EP2435906B1 (en) Dsp engine with implicit mixed operands
TWI525538B (zh) 超級乘加(super madd)指令技術
JPH04172533A (ja) 電子計算機
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
TWI559219B (zh) 用於選擇向量運算之元素的裝置及方法(二)
JP4686435B2 (ja) 演算装置
US6889242B1 (en) Rounding operations in computer processor
JP5853177B2 (ja) データ処理装置、及びデータ処理方法
EP1634163B1 (en) Result partitioning within simd data processing systems
US7047396B1 (en) Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
JP2000322235A (ja) 情報処理装置
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
JP3723115B2 (ja) 単一命令多重データ処理
GB2410097A (en) Constant generation in floating point processing
JP4901891B2 (ja) 画像処理プロセッサ
JPH05274143A (ja) 複合条件処理方式
US9250898B2 (en) VLIW processor, instruction structure, and instruction execution method
US20030037088A1 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly

Legal Events

Date Code Title Description
N231 Notification of change of applicant
N234 Change of applicant [patent]: notification of change of applicant and registration of full transfer of right
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right