KR100981998B1 - 데이터 워드 내의 비트 삽입 - Google Patents

데이터 워드 내의 비트 삽입 Download PDF

Info

Publication number
KR100981998B1
KR100981998B1 KR1020067018123A KR20067018123A KR100981998B1 KR 100981998 B1 KR100981998 B1 KR 100981998B1 KR 1020067018123 A KR1020067018123 A KR 1020067018123A KR 20067018123 A KR20067018123 A KR 20067018123A KR 100981998 B1 KR100981998 B1 KR 100981998B1
Authority
KR
South Korea
Prior art keywords
register
shift
value
bits
data
Prior art date
Application number
KR1020067018123A
Other languages
English (en)
Other versions
KR20070028322A (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 KR20070028322A publication Critical patent/KR20070028322A/ko
Application granted granted Critical
Publication of KR100981998B1 publication Critical patent/KR100981998B1/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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Abstract

시프트 및 삽입 명령 SLI, SRI를 지원하고, 이 시프트 및 삽입 명령은 특정된 시프트 양으로 소스 데이터 값을 시프트한 후, 이 시프트인 비트 이외의 그 시프트된 값으로부터의 비트를 목적 값 내의 나머지 비트를 변경하지 않으면서, 목적 값에 삽입하는데 사용되는 데이터 처리 시스템(2)이 구비된다.
레지스터, 시프트, 소스 데이터, 픽셀.

Description

데이터 워드 내의 비트 삽입{INSERTING BITS WITHIN A DATA WORD}
본 발명은 데이터 처리 시스템에 관한 것이다. 특히, 본 발명은, 프로그램 제어 하에서 데이터 워드 내의 비트의 삽입에 관한 것이다.
데이터 처리 시스템에 있어서는, 단일 데이터 워드 내에 복수의 비트 필드를 함께 패킹하는 것이 공지되어 있다. 예로서, 16비트 데이터 워드 내에, 이들 중 2개는 5비트 길이이고, 하나는 6비트 길이인 레드와 그린 및 블루 값을 각각 표현하는 3개의 컬러 성분 값을 패킹하는 것이 바람직할 수 있다. 흔히, 이들 다른 성분 값은 분리되어 처리되고, 그 크기는 분리되어 계산된다. 이러한 계산 후, 픽셀-바이-픽셀 베이시스 상에서, 더 콤팩트한 형태로 기억되고 더 용이하게 조작될 수 있도록 분리 성분은 단일 데이터 워드 내에서 함께 어셈블링될 필요가 있다.
이러한 데이터 패킹을 달성하기 위해서, 하나의 가능한 해결책은, 목적 레지스터 내에 삽입되는 소스 레지스터 내의 비트 필드의 길이와, 비트 필드가 삽입되는 목적 레지스터 내의 위치 모두를 특정하는 프로그램 명령을 제공하는 것이다. 전형적으로, 이러한 명령은, 소스 레지스터와, 목적 레지스터, 비트 필드 길이 및 비트 필드 삽입 위치를 특정해야 한다. 이러한 방법으로 단일 명령 내에 4개의 분리 파라미터를 특정하는 것은, 명령 내에서 이용할 수 있는 명령 비트 공간에 대해서 바람직하게 않은 높은 요구를 하게 되고, 이들이 소비하는 명령 비트 공간에 의해 이러한 명령은 바람직하지 않게 된다.
US-A-4,569,016은, 호스트 프리미티브 명령 설정 컴퓨팅 시스템의 하나의 동작 머신 사이클 내에서, 빠르고 효과적인 완전한 시프트와, 머지(merge), 삽입 및 비트 정렬 기능을 수행하기 위한 메커니즘을 개시한다. 일반적으로, 회로는, 마스터의 제어 하에서 링 시프트를 수행한다. 또한, 회로는, 하나의 머신 사이클로 모두 실행할 수 있는 기본적으로 병렬인 회전과 마스크 및 머지 기능을 조합한다. 또한, 회로는, 십진 패킹 및 언패킹 기능뿐 아니라 플로팅 포인트 프리 시프트 및 노말리제이션 기능을 실행하기 위해 특히 유용한 프리미티브 동작인 마스크 명령과 함께 강력한 비트와 디지트 및 비트 회전의 대책을 허용한다.
본 발명의 일측면으로부터,
조작되는 데이터 값을 기억하도록 동작되는 복수의 레지스터와,
상기 복수의 레지스터 내에 기억된 하나 이상의 데이터 값에 따라 데이터 처리 동작을 수행하도록 동작되는 처리 로직과,
프로그램 명령에 응답하여, 상기 프로그램 명령에 의해 특정된 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하는 명령 디코더를 구비하고,
상기 명령 디코더는, 시프트 및 삽입 명령에 응답하여, 상기 처리로직이
N 비트 위치의 시프트 양만큼 제1레지스터 내에 기억된 제1데이터 값을 시프트하여 N 시프트인 비트를 포함하는 시프트된 값을 형성하고(단, N은 복수의 다른 비제로 값 중 하나를 갖고); 및
상기 N 시트프인 비트 이외의 상기 시프트된 값의 각 비트를, 제2레지스터 내에 기억된 제2데이터 값 내의 대응하는 비트 위치에, 상기 N 시프트인 비트에 대응하는 상기 제2데이터 값 내의 비트을 변경시키지 않은 채로, 삽입해서 결과를 형성함으로써,
주어진 결과 값을 갖는 상기 결과를 산출하는 시프트 및 삽입 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하고,
상기 시프트 및 삽입 명령은, 상기 제1레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하고,
상기 시프트 및 삽입 명령은, 상기 제2레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하는 것을 특징으로 하는 데이터 처리 장치를 제공한다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
본 발명은, 이러한 명령을 사용하는 것이 바람직한 대부분의 경우, 비트 필드 길이와 비트 필드 위치를 분리해서 특정할 수 있는 완전한 유연성이 요구되지 않게 한다. 대신, 소스 값에 적용되는 시프트 양을 특정하는 단일 파라미터는, 소 스 값의 비트가 목적 값에 기입되는 시작 위치를 제어한다. 목적 값 내에 기입된 비트는, 연관된 명령의 시프트 방향에 따라서, 시작 위치로부터 목적 값의 적합한 종단으로 연장된다. 이는, 다수의 비트가 궁극적으로 요구되기보다 삽입될 수 있게 한다. 그런데, 본 기술은, 대부분의 경우, 다수의 이러한 명령이 실행되고, 최종의 패킹 데이터 값이 요구되는 정확한 비트를 포함하도록 하나의 명령 내에 기입된 초과 비트를 다음 명령 내의 요구 데이터로 오버라이트하게 한다. 따라서, 동작의 패킹 타입이나 다른 비트 어셈블리 동작이, 바람직한 작은 명령 비트 공간 요구를 갖는 명령으로 달성될 수 있다. 상기된 본 발명의 표현은, 특정된 시프트 동작 및 특정된 삽입 동작으로 주어진 결과 값을 갖는 결과를 산출하는 시프트 및 삽입 명령으로 만들어진다. 이러한 시프트 및 삽입이 수행되는 것 같이 동일한 결과 값을 달성하기 위해 채용되는 실제 메커니즘이 변화될 수 있다. 이러한 변형 메커니즘 및 단계는 본 기술에 포함된다. 시프트 및 삽입 단계는, 요구된 최종 결과가 입력과 관련되는지를 표현하는 한 방법이지만, 입력과 출력 간의 동일한 관계가 다양한 다른 방법으로 달성되고 표현될 수 있다. 이들 대안은, 본 기술 내에 포함된다.
시프트 양은, 명령 내에서 특정된 레지스터 내에 기억된 값으로 특정되거나, 대안적으로, 바람직하게는 시프트 및 삽입 명령 자체 내에서 엔코드된 직접 값으로서 특정될 수 있다.
필드(선택적으로, 제1레지스터 및 제2레지스터 중 하나에 공유되는)를 특정하는 목적 레지스터도 사용될 수 있다.
삭제
본 기술의 시프트는 환경에 따라 우측 시프트나 좌측 시프트일 수 있고, 패킹이나 비트 삽입의 요구 형태일 수 있다.
바람직한 실시형태에 있어서 제1데이터 값과 제2데이터 값이 동일 비트 수를 가짐에도 불구하고, 제1데이터 값 및 제2데이터 값은 다른 비트 길이를 가질 수 있고, 다른 길이의 레지스터 내에 기억될 수 있다.
제1값의 시프트를 사용해서,
상기 제2데이터 값 내의 비트들 중 어느 것이 상기 시프트된 데이터 값 내의 대응하는 비트들로 대체되는지와 상기 제2데이터 값 내의 비트들 중 어느 것이 변경되지 않는지를 선택하기 위한 마스크 값을 형성하는 바람직한 방법에도 불구하고, 상기된 바와 같이, 입력과 출력 간의 관계는 다양한 다른 방법으로 실행될 수 있다. 바람직하게는, 이 마스크 값은, 스타팅 마스크에 따른 시프트나 마스크를 직접 형성하는 명령의 디코더와 같은 대안적인 기술로 형성될 수 있다.
본 발명은, 스칼라 처리 시스템 및 단일 명령 다중 데이터 패킷(SIMD) 처리 시스템 내에서 모두 바람직하게 사용될 수 있다.
본 발명의 다른 측면으로부터,
복수의 레지스터 내에서 조작되는 데이터 값을 기억하는 단계와,
상기 복수의 레지스터 내에 기억된 하나 이상의 데이터 값에 따라 데이터 처리 로직을 사용해서 데이터 처리 동작을 수행하는 단계와,
프로그램 명령에 응답하여, 명령 디코더를 사용해서 상기 프로그램 명령에 의해 특정된 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하는 단계를 구비하고,
상기 명령 디코더는, 시프트 및 삽입 명령에 응답하여, 상기 처리 로직이,
N 비트 위치의 시프트 양만큼 제1레지스터 내에 기억된 제1데이터 값을 시프트하여 N 시프트인 비트를 포함하는 시프트된 값을 형성하고(단, N은 복수의 다른 비제로 값 중 하나를 갖고); 및
상기 N 시트프인 비트 이외의 상기 시프트된 값의 각 비트를, 제2레지스터 내에 기억된 제2데이터 값 내의 대응하는 비트 위치에, 상기 N 시프트인 비트에 대응하는 상기 제2데이터 값 내의 비트를 변경시키지 않은 채로, 삽입해서 결과를 형성함으로써,
주어진 결과 값을 갖는 상기 결과를 산출하는 시프트 및 삽입 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하고,
상기 시프트 및 삽입 명령은, 상기 제1레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하고,
상기 시프트 및 삽입 명령은, 상기 제2레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하는 것을 특징으로 하는 데이터 처리 방법을 제공한다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
첨부 도면을 참조로 본 발명의 실시형태가 기재되는데,
도 1은 본 발명의 기술을 사용할 수 있는 타입의 데이터 처리 시스템을 개략적으로 나타내고,
도 2는 본 발명의 일례에 따른 3개의 다른 시프트 및 삽입 명령의 신택스를 개략적으로 나타내며,
도 3은 시프트 및 삽입 명령의 액션을 개략적으로 나타내고,
도 4는 시프트 및 삽입 동작을 위한 하드웨어 구성을 개략적으로 나타내며,
도 5는 스칼라 처리 시스템 내의 픽셀 값 패킹 동작의 예를 나타내고,
도 6은 단일 명령 다중 데이터 시스템 내의 픽셀 패킹 동작을 개략적으로 나타낸다.
도 1은 레지스터 뱅크(4), 멀티플라이어(6), 시프터(8) 및, 가산기(10)를 포함하는 적분 회로 형태일 수 있는 데이터 처리 시스템(2)을 개략적으로 나타낸다. 레지스터 뱅크(4), 멀티플라이어(6), 시프터(8) 및 가산기(10)는, 명령 디코더(12)에 의해 생성된 제어 신호의 제어 하에서, 요구 데이터 처리 동작을 실행하기 위한 처리 로직을 형성하도록 고려될 수 있다. 명령 디코더(12) 자체는, 명령 파이프라인(14)에 로드된 프로그램 명령에 응답한다. 전형적으로, 도 2의 데이터 처리 시스템이 다수의 소자를 포함하는 것은 명백하지만, 도면을 명확하게 하기 위해서 이들 소자는 생략한다. 동작시, 프로그램 명령은 명령 파이프라인(14)으로 인출되고, 이들이 명령 파이프라인(14) 내의 실행 스테이지에 도달할 때, 명령 디코더(12)에 의해 사용되어, 처리 로직(4, 6, 8, 10)의 다양한 소자가 요구 데이터 처리 동작을 실행하도록 형성되는 제어 신호를 생성한다. 전형적으로, 처리 로직은, 도 1에 나타낸 단순한 곱셈, 시프트 및 가산 동작 이외의 처리 동작을 제공하기 위한 다수의 또 다른 소자를 포함하게 된다.
도 2는 도 1의 데이터 처리 시스템(2)으로 지원될 수 있는 몇몇 예의 시프트 및 삽입 명령의 신택스를 나타낸다. 좌측 시프트 및 삽입 명령 SLI는, 목적 레지스터 dest를 특정하는 레지스터 필드와, 소스 레지스터 src를 특정하는 레지스터 필드 및, 직접 값 #imm을 특정하는 필드를 포함한다. 소스 레지스터는, 시프트된 후 목적 레지스터에 삽입되는 데이터 값을 포함하는데, 목적 레지스터 내의 몇몇 비트는 변경되지 않는다. 이하에 더 설명되는 바와 같이, 직접 값 #imm은, 삽입이 일어나기 전에, 소스 레지스터 값에 적용된 시프트 양을 특정하고, 삽입이 일어나는 위치를 효과적으로 특정한다.
도 2는 상기 명령의 우측 시프트 변형, 즉 SRI 명령을 나타낸다. 또한, 시프트 값이 제2소스 레지스터 src2에 의해 특정된 좌측 시프트된 명령의 변형도 나타낸다.
도 1에 도시된 바와 같이, 신택스와 정확한 형태의 명령은 일례일 뿐이고, 본 기술의 다른 실시형태는 다양한 삽입 표현과 신택스를 사용할 수 있다.
도 3은 시프트 및 삽입 동작의 일례를 나타낸다. 레지스터(16)는 소스 값을 포함한다. 이 소스 값은, 화소 값과 같은 데이터 부분(18)을 포함한다. 데이터 부분(18) 외측의 레지스터(16)의 부분은, 의미 없는 것을 나타내거나, 폐기되는 것이 바람직한 데이터 값의 소수부일 수 있다.
이 예에서, 레지스터(16) 내의 값은, 관련된 SRI 명령 내의 직접 필드 #imm으로 특정된 양만큼 우측 시프트된다. 레지스터의 좌측 종단에서, 시프트인 비트(shifted in bits)가 생성되는 시프트된 값에 도입된다. 이는, 정상 시프트 동작의 행동이다.
목적 값은 레지스터(20) 내에 유지되고, 시프트인 비트 이외의 시프트된 값의 부분은, 목적 값 내에 초기에 기억된 대응하는 비트를 대신해서 이 목적 값 내에 기입된다. 시프트된 값 내의 시프트인 비트에 대응하는 목적 값(20) 내의 비트 는 대체되지 않고, 변경되지 않는다. 최종 결과 값은, 시프트된 값으로부터 삽입된 비트가 이들 대응하는 위치에서 그 초기 비트를 대체함에 따라, 초기 목적 값을 포함한다. 현재의 예에 있어서는, 데이터 부분(18) 이외의 시프트된 값의 비트, 즉 비트 G 및 H가, 결과 값 내에 삽입되는 것을 볼 수 있다. 그 다음, 중요하면, 이들 원하지 않는 비트는, 후속하는 시프트 및 삽입 동작 내의 또 다른 비트 값으로, 필요에 따라 오버라이트할 수 있다.
도 4는 시프트 및 삽입 명령이 어떻게 수행되는 지에 관한 하드웨어 표현을 개략적으로 나타낸다. 소스 레지스터(22)는, 이 예에 있어서는 자체 값을 좌측 시프터(24)에 공급한다. 명령의 우측 시프트 변형을 위해서, 우측 시프트 회로가 대신 사용되는 것은 명백하다. 이 예에 있어서, 시프트 양은 직접 값 #4로 특정된다. 좌측 시프터(24)는, 그 4개의 가장 오른쪽 비트 위치에 4개의 시프트인 제로 값을 갖는 시프트된 값(26)을 생성한다. 시프트된 값(26)의 생성과 병렬로, 모두 1을 포함하는 스타팅 마스크 값(28)을 취하고, 이를 그 좌측 시프터(30)로 소스 값(22)에 적용되는 것과 동일하게 시프트시킴으로써, 마스크 값이 생성된다. 마스크 값으로의 시프트인 값은, 다시 제로이고, 이는 시프트된 마스크(32)로 귀결된다. 그 다음, 시프트된 마스크는, 시프트된 값(26)으로부터의 비트나 목적 값(36)으로부터의 비트를 선택해서 결과 값(38)으로 공급하는 다중 비트 멀티플렉서(34)에 공급되는 다중 비트 제어 신호로서 사용될 수 있다.
도 5는, 16비트 결과 값으로의 레드와 그린 및 블루 픽셀 값 성분의 스칼라 패킹 동작을 나타낸다. 제1동작은, 우측 시프트 및 삽입 명령을 사용하는 레드 및 그린 성분 값에 따라, 5비트 위치의 시프트 양으로 실행한다. 이는, 5비트 레드 성분 R5이 결과 내에서 변경되지 않게 하지만, 그린 성분 G6에 기입할 뿐 아니라, 그 나머지를 그 결과에 기입한다. 제2명령은, 조합된 레드 및 그린 성분을 취하고, 블루 성분 B5이 미리 삽입된 그린 성분 G6의 종단에 인접하고, 16비트 결과 값 내의 나머지 위치를 채우도록 11비트 위치의 시프트 양으로 우측 시프트 및 삽입 명령을 수행함으로써, 조합된 레드 및 그린 성분을 블루 성분 B5에 삽입한다.
도 6은 도 5에 도시된 바와 같이 동일 타입의 패킹 동작을 나타내지만, 단일 명령 다중 데이터(SMID) 시스템 내에서 수행된 경우이다. 인식된 바와 같이, 4세트의 픽셀 값이 2개의 SIMD 우측 시프트 및 삽입 명령을 사용해서 병렬로 함께 패깅될 수 있도록, SIMD 시스템 내의 각 데이터 레인에 따라, 동일한 시프트 및 삽입 동작이 분리되어 수행된다.

Claims (26)

  1. 조작되는 데이터 값들을 기억하도록 동작하는 복수의 레지스터와,
    상기 복수의 레지스터 내에 기억된 하나 이상의 데이터 값에 따라 데이터 처리 동작을 수행하도록 동작하는 처리 로직(6, 8, 10)과,
    프로그램 명령에 응답해서 상기 프로그램 명령에 의해 특정된 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하는 명령 디코더(12)를 구비하고,
    상기 명령 디코더는, 시프트 및 삽입 명령(SLI, SRI)에 응답하여, 상기 처리 로직이,
    제1레지스터(16) 내에 기억된 제1데이터 값(18)을 N 비트 위치의 시프트 양(#imm)만큼 시프트해서 N 시프트인 비트들을 포함하는 시프트된 값을 형성하고(단, N은 복수의 다른 비제로 값 중 하나를 갖고); 및
    상기 시프트 양에만 의존해서 선택되는 상기 N 시트프인 비트들 이외의 상기 시프트된 값의 모든 각 비트를, 제2레지스터(20) 내에 기억된 제2데이터 값 내의 대응하는 비트 위치에, 상기 N 시프트인 비트들에 대응하는 상기 제2데이터 값 내의 비트들을 변경시키지 않은 채로, 삽입하여 결과를 형성함으로써,
    주어진 결과 값을 갖는 상기 결과를 산출하는 시프트 및 삽입 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하고,
    상기 시프트 및 삽입 명령은, 상기 제1레지스터로서 사용하도록 레지스터 뱅크(4) 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하고,
    상기 시프트 및 삽입 명령은, 상기 제2레지스터로서 사용하도록 레지스터 뱅크(4) 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 시프트 및 삽입 명령은, 상기 N 비트 위치의 상기 시프트 양을 특정하는 직접 값을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 시프트 및 삽입 명령은, 목적 레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드(dest)를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  4. 제3항에 있어서,
    상기 목적 레지스터를 위한 상기 레지스터 특정 필드는, 상기 제1레지스터 및 제2레지스터 중 하나와 공유되는 것을 특징으로 하는 데이터 처리 장치.
  5. 제1항 또는 제2항에 있어서,
    상기 제1데이터 값은 오른쪽 시프트된 것을 특징으로 하는 데이터 처리 장치.
  6. 제1항 또는 제2항에 있어서,
    상기 제1데이터 값은 왼쪽 시프트된 것을 특징으로 하는 데이터 처리 장치.
  7. 제1항 또는 제2항에 있어서,
    상기 제1데이터 값과 상기 제2데이터 값은 동수의 비트를 갖는 것을 특징으로 하는 데이터 처리 장치.
  8. 제1항 또는 제2항에 있어서,
    상기 시프트 및 삽입 명령에 응답해서, 상기 처리 로직이 상기 제1데이터 값을 시프트하도록 동작하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제1항 또는 제2항에 있어서,
    상기 시프트 및 삽입 명령에 응답해서, 상기 처리 로직은, 상기 제2데이터 값 내의 비트들 중 어느 것이 상기 시프트된 데이터 값 내의 대응하는 비트들로 대체되는지와 상기 제2데이터 값 내의 비트들 중 어느 것이 변경되지 않는지를 선택하기 위한 마스크 값을 형성하도록 동작하는 것을 특징으로 하는 데이터 처리 장치.
  10. 제1항 또는 제2항에 있어서,
    상기 처리 로직이 단일 명령 다중 데이터 처리 로직이고, 상기 제1레지스터 및 상기 제2레지스터가 제1의 단일 명령 다중 데이터 레지스터 및 제2의 단일 명령 다중 데이터 레지스터의 각 부분이며, 상기 시프트 및 삽입 명령이 각 처리 레인에서 복수의 시프트 및 삽입 동작의 병렬 실행을 제어하도록 동작되는 것을 특징으로 하는 데이터 처리 장치.
  11. 제1항 또는 제2항에 있어서,
    상기 처리 로직이 스칼라 처리 로직인 것을 특징으로 하는 데이터 처리 장치.
  12. 조작되는 데이터 값들을 복수의 레지스터 내에 기억하는 단계와,
    상기 복수의 레지스터 내에 기억된 하나 이상의 데이터 값에 따라 처리 로직을 사용해서 데이터 처리 동작을 수행하는 단계와,
    프로그램 명령에 응답하여, 명령 디코더를 사용해서 상기 프로그램 명령에 의해 특정된 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하는 단계를 포함하고,
    상기 명령 디코더는, 시프트 및 삽입 명령에 응답하여,
    상기 처리 로직이, 제1레지스터 내에 기억된 제1데이터 값을 N 비트 위치의 시프트 양만큼 시프트해서 N 시프트인 비트들을 포함하는 시프트된 값을 형성하고(단, N은 복수의 다른 비제로 값 중 하나를 갖고); 및
    상기 처리 로직이 상기 시프트 양에만 의존해서 선택되는 상기 N 시트프인 비트들 이외의 상기 시프트된 값의 모든 각 비트를, 제2레지스터 내에 기억된 제2데이터 값 내의 대응하는 비트 위치에, 상기 N 시프트인 비트들에 대응하는 상기 제2데이터 값 내의 비트들을 변경시키지 않은 채로, 삽입하여 결과를 형성함으로써,
    주어진 결과 값을 갖는 상기 결과를 산출하는 시프트 및 삽입 데이터 처리 동작을 수행하도록 상기 처리 로직을 제어하며,
    상기 시프트 및 삽입 명령은, 상기 제1레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하고,
    상기 시프트 및 삽입 명령은, 상기 제2레지스터로서 사용하도록 상기 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  13. 제12항에 있어서,
    상기 시프트 및 삽입 명령은, 상기 N 비트 위치의 시프트 양을 특정하는 직접 값을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  14. 제12항 또는 제13항에 있어서,
    상기 시프트 및 삽입 명령은, 목적 레지스터로서 사용하도록 레지스터 뱅크 내의 레지스터를 특정하는 레지스터 특정 필드를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  15. 제14항에 있어서,
    상기 목적 레지스터를 위한 상기 레지스터 특정 필드는, 상기 제1레지스터 및 제2레지스터 중 하나와 공유되는 것을 특징으로 하는 데이터 처리 방법.
  16. 제12항 또는 제13항에 있어서,
    상기 제1데이터 값은 오른쪽 시프트된 것을 특징으로 하는 데이터 처리 방법.
  17. 제12항 또는 제13항에 있어서,
    상기 제1데이터 값은 왼쪽 시프트된 것을 특징으로 하는 데이터 처리 방법.
  18. 제12항 또는 제13항에 있어서,
    상기 제1데이터 값과 상기 제2데이터 값은 동수의 비트를 갖는 것을 특징으로 하는 데이터 처리 방법.
  19. 제12항 또는 제13항에 있어서,
    상기 시프트 및 삽입 명령에 응답해서, 상기 처리 로직이 상기 제1데이터 값을 시프트하도록 동작하는 것을 특징으로 하는 데이터 처리 방법.
  20. 제12항 또는 제13항에 있어서,
    상기 시프트 및 삽입 명령에 응답해서, 상기 처리 로직은, 상기 제2데이터 값 내의 비트들 중 어느 것이 상기 시프트된 데이터 값 내의 대응하는 비트들로 대체되는지와 상기 제2데이터 값 내의 비트들 중 어느 것이 변경되지 않는지를 선택하기 위한 마스크 값을 형성하도록 동작하는 것을 특징으로 하는 데이터 처리 방법.
  21. 제12항 또는 제13항에 있어서,
    상기 처리 로직이 단일 명령 다중 데이터 처리 로직이고, 상기 제1레지스터 및 상기 제2레지스터가 제1의 단일 명령 다중 데이터 레지스터 및 제2의 단일 명령 다중 데이터 레지스터의 각 부분이며, 상기 시프트 및 삽입 명령이 각 처리 레인에서 복수의 시프트 및 삽입 동작의 병렬 실행을 제어하도록 동작되는 것을 특징으로 하는 데이터 처리 방법.
  22. 제12항 또는 제13항에 있어서,
    상기 처리 로직이 스칼라 처리 로직인 것을 특징으로 하는 데이터 처리 방법.
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020067018123A 2004-03-10 2004-08-03 데이터 워드 내의 비트 삽입 KR100981998B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0405407.8 2004-03-10
GB0405407A GB2411978B (en) 2004-03-10 2004-03-10 Inserting bits within a data word

Publications (2)

Publication Number Publication Date
KR20070028322A KR20070028322A (ko) 2007-03-12
KR100981998B1 true KR100981998B1 (ko) 2010-09-13

Family

ID=32117417

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067018123A KR100981998B1 (ko) 2004-03-10 2004-08-03 데이터 워드 내의 비트 삽입

Country Status (11)

Country Link
US (1) US7350058B2 (ko)
EP (1) EP1723512A2 (ko)
JP (1) JP2007528545A (ko)
KR (1) KR100981998B1 (ko)
CN (1) CN100538624C (ko)
GB (1) GB2411978B (ko)
IL (1) IL177507A (ko)
MY (1) MY137200A (ko)
RU (1) RU2006135629A (ko)
TW (1) TWI322947B (ko)
WO (1) WO2005088441A2 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529918B2 (en) * 2006-07-21 2009-05-05 Broadcom Corporation System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor
JP4374363B2 (ja) * 2006-09-26 2009-12-02 Okiセミコンダクタ株式会社 ビットフィールド操作回路
GB2475653B (en) * 2007-03-12 2011-07-13 Advanced Risc Mach Ltd Select and insert instructions within data processing systems
EP2232361A1 (en) * 2007-12-05 2010-09-29 Sandbridge Technologies, Inc. Method and instruction set including register shifts and rotates for data processing
CN102348111A (zh) * 2010-07-30 2012-02-08 国家卫星气象中心 用于静止气象卫星数据广播的数据压缩结构识别码
US20120117360A1 (en) * 2010-11-09 2012-05-10 Texas Instruments Incorporated Dedicated instructions for variable length code insertion by a digital signal processor (dsp)
GB2485774A (en) 2010-11-23 2012-05-30 Advanced Risc Mach Ltd Processor instruction to extract a bit field from one operand and insert it into another with an option to sign or zero extend the field
US9823928B2 (en) * 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
CN111831335A (zh) * 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks
WO2014203034A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Signal processing device and method of performing a pack-insert operation
CN104899522B (zh) * 2015-06-09 2018-01-30 网易(杭州)网络有限公司 一种数据处理方法及装置
GB2540939B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US20170185402A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Instructions and logic for bit field address and insertion
CN105892993B (zh) * 2016-03-28 2019-02-15 龙芯中科技术有限公司 基于提取插入操作的重组方法、装置及微处理器
CN110912562A (zh) * 2018-09-18 2020-03-24 深圳市茁壮网络股份有限公司 一种浮点数据处理方法、装置及存储介质
CN109891756B (zh) * 2019-01-31 2023-03-28 香港应用科技研究院有限公司 可重置分段可缩放移位器
US10831479B2 (en) * 2019-02-20 2020-11-10 International Business Machines Corporation Instruction to move data in a right-to-left direction

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131030A1 (en) * 2001-10-29 2003-07-10 Intel Corporation Method and apparatus for parallel shift right merge of data

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US131030A (en) * 1872-09-03 Improvement in portable furnaces
US133682A (en) * 1872-12-03 Improvement in gates
FR2253415A5 (ko) * 1973-12-04 1975-06-27 Cii
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4876660A (en) 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
JPH0778735B2 (ja) 1988-12-05 1995-08-23 松下電器産業株式会社 キャッシュ装置と命令読出し装置
JPH05233281A (ja) 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5408670A (en) 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5481743A (en) 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
US5881302A (en) 1994-05-31 1999-03-09 Nec Corporation Vector processing unit with reconfigurable data buffer
US6009508A (en) 1994-06-21 1999-12-28 Sgs-Thomson Microelectronics Limited System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis
GB9412434D0 (en) 1994-06-21 1994-08-10 Inmos Ltd Computer instruction compression
GB9412487D0 (en) 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
US5761103A (en) 1995-03-08 1998-06-02 Texas Instruments Incorporated Left and right justification of single precision mantissa in a double precision rounding unit
GB9509983D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
GB9509987D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
GB9509988D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
GB9509989D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
GB9513515D0 (en) 1995-07-03 1995-09-06 Sgs Thomson Microelectronics Expansion of data
GB9514695D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics Combining data values
GB9514684D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics An arithmetic unit
JP3526976B2 (ja) 1995-08-03 2004-05-17 株式会社日立製作所 プロセッサおよびデータ処理装置
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5907865A (en) 1995-08-28 1999-05-25 Motorola, Inc. Method and data processing system for dynamically accessing both big-endian and little-endian storage schemes
AU6905496A (en) 1995-09-01 1997-03-27 Philips Electronics North America Corporation Method and apparatus for custom operations of a processor
US6088783A (en) 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5937178A (en) 1996-02-13 1999-08-10 National Semiconductor Corporation Register file for registers with multiple addressable sizes using read-modify-write for register file update
US6009191A (en) * 1996-02-15 1999-12-28 Intel Corporation Computer implemented method for compressing 48-bit pixels to 16-bit pixels
US5808875A (en) 1996-03-29 1998-09-15 Intel Corporation Integrated circuit solder-rack interconnect module
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5838984A (en) 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6173366B1 (en) 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5893145A (en) 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US5898896A (en) 1997-04-10 1999-04-27 International Business Machines Corporation Method and apparatus for data ordering of I/O transfers in Bi-modal Endian PowerPC systems
US5973705A (en) 1997-04-24 1999-10-26 International Business Machines Corporation Geometry pipeline implemented on a SIMD machine
US6047304A (en) 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
US6209017B1 (en) 1997-08-30 2001-03-27 Lg Electronics Inc. High speed digital signal processor
GB2329810B (en) 1997-09-29 2002-02-27 Science Res Foundation Generation and use of compressed image data
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US6085213A (en) 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and summing the products
US6144980A (en) 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
US6038583A (en) 1997-10-23 2000-03-14 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6269384B1 (en) 1998-03-27 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for rounding and normalizing results within a multiplier
US6223277B1 (en) 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US6223320B1 (en) 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6292888B1 (en) 1999-01-27 2001-09-18 Clearwater Networks, Inc. Register transfer unit for electronic processor
GB2352065B (en) 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
US6408345B1 (en) 1999-07-15 2002-06-18 Texas Instruments Incorporated Superscalar memory transfer controller in multilevel memory organization
US6546480B1 (en) 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6430684B1 (en) * 1999-10-29 2002-08-06 Texas Instruments Incorporated Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s)
US6748521B1 (en) 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131030A1 (en) * 2001-10-29 2003-07-10 Intel Corporation Method and apparatus for parallel shift right merge of data

Also Published As

Publication number Publication date
GB2411978B (en) 2007-04-04
MY137200A (en) 2009-01-30
EP1723512A2 (en) 2006-11-22
WO2005088441A2 (en) 2005-09-22
CN1926511A (zh) 2007-03-07
US7350058B2 (en) 2008-03-25
GB0405407D0 (en) 2004-04-21
GB2411978A (en) 2005-09-14
IL177507A0 (en) 2006-12-10
WO2005088441A3 (en) 2006-06-22
US20050204117A1 (en) 2005-09-15
KR20070028322A (ko) 2007-03-12
JP2007528545A (ja) 2007-10-11
RU2006135629A (ru) 2008-04-20
TW200530838A (en) 2005-09-16
IL177507A (en) 2010-12-30
CN100538624C (zh) 2009-09-09
TWI322947B (en) 2010-04-01

Similar Documents

Publication Publication Date Title
KR100981998B1 (ko) 데이터 워드 내의 비트 삽입
JP5897696B2 (ja) データ処理装置および方法
US9383999B2 (en) Conditional compare instruction
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
US20060149804A1 (en) Multiply-sum dot product instruction with mask and splat
TWI622934B (zh) 具有simd處理電路系統的資料處理裝置及處理資料的方法
EP1267257A2 (en) Conditional execution per data path slice
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
US9965275B2 (en) Element size increasing instruction
JP2002522821A (ja) データプロセッサとデータ処理方法
JP2004164163A (ja) Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム
JP5133491B2 (ja) 単一命令多数データ処理
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
JP5853177B2 (ja) データ処理装置、及びデータ処理方法
JP2002132497A (ja) 単一命令多重データ処理
JP2010134891A (ja) 画像処理プロセッサ
US7653674B2 (en) Parallel operations on multiple signed elements in a register
KR101149883B1 (ko) 데이터 처리 장치
KR20020021078A (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: 20130820

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140825

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 9