KR20140001910A - 데이터 처리장치 및 방법 - Google Patents

데이터 처리장치 및 방법 Download PDF

Info

Publication number
KR20140001910A
KR20140001910A KR1020137013056A KR20137013056A KR20140001910A KR 20140001910 A KR20140001910 A KR 20140001910A KR 1020137013056 A KR1020137013056 A KR 1020137013056A KR 20137013056 A KR20137013056 A KR 20137013056A KR 20140001910 A KR20140001910 A KR 20140001910A
Authority
KR
South Korea
Prior art keywords
value
bits
data element
bitfield
data
Prior art date
Application number
KR1020137013056A
Other languages
English (en)
Other versions
KR101834174B1 (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 KR20140001910A publication Critical patent/KR20140001910A/ko
Application granted granted Critical
Publication of KR101834174B1 publication Critical patent/KR101834174B1/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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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
    • 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
    • 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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping

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)
  • Advance Control (AREA)
  • Electrotherapy Devices (AREA)
  • User Interface Of Digital Computer (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

데이터 처리장치(2)는, 처리회로(4)와 명령어 디코더(6)를 구비한다. 비트필드 조작 명령어는, 상기 처리장치(2)를 제어하여 적어도 하나의 결과 데이터 요소를 대응한 제1 및 제2 소스 데이터 요소 src1, src2로부터 생성한다. 각 결과 데이터 요소는, 상기 대응한 제1 소스 데이터 요소 src1의 비트필드에 대응한 일부분을 포함한다. 삽입된 비트필드 bf보다 고위인 상기 결과 데이터 요소의 비트들은, 상기 명령어에서 특정한 제어값에 따라, 제로값을 갖는 비트들로 이루어진 제1 전위값, 상기 대응한 제2 소스 데이터 요소src2의 일부의 값을 갖는 제2 전위값, 및 상기 제1 소스 데이터 요소src1의 비트필드bf의 부호 확장에 대응한 제3 전위값 중 하나로서 선택된 전위값p를 갖는다.

Description

비트 필드 조작 명령어를 갖는 데이터 처리장치 및 방법{DATA PROCESSING APPARATUS HAVING BIT FIELD MANIPULATION INSTRUCTION AND METHOD}
본 발명은 데이터 처리 분야에 관한 것이다.
데이터 처리 시스템에서의 데이터 값은, 다수의 인접 비트의 값이 나머지 데이터 값과 독립적으로 흥미로운 경우도 있다. 이러한 인접 비트들의 그룹을 비트필드라고 할 수 있고, 그 그룹내의 상기 인접 비트의 수를 그것의 폭이라고 할 수 있다. 예를 들면, RGB색값을 나타내는 데이터 값은, 적색, 녹색 및 청색 성분을 각각 나타내는 비트필드를 포함하기도 한다. 상기 비트필드를 포함한 데이터 값을 조작하여 그 주변과 상기 비트필드를 분리하는 것이 바람직한 경우도 있다. 예를 들면, 상기 RGB색값의 녹색성분만을 추출 또는 대체하고 싶기도 하다. 본 기술은, 처리장치를 제어하여 아주 다양한 상이한 종류의 비트필드 조작을 행할 수 있는 비트필드 조작 명령어를 효율적으로 인코딩하고자 한다.
본 출원에서 표기법 <X:Y>는, 비트 위치 X에서의 최상위 비트부터 비트 위치 Y에서의 최하위 비트까지 확장하는 인접 비트들의 그룹을 가리킨다. <X:Y>로 기재된 그룹의 폭은 X-Y+1 비트다. 예를 들면, 표현식 <4:0>은, 비트 위치 4 내지 0에서의 폭 5비트의 그룹을 가리키고, 여기서 비트<4>는 비트<0>보다 위의 비트다. 이때, 상기 표기법 <X:Y>는, 기억순서가 중요도의 순서와 같을 필요는 없으므로, 기억장소내의 비트의 어떠한 특별한 기억순서를 의미하지는 않는다(예를 들면, 빅 엔디언(big-endian) 또는 리틀 엔디언(little-endian) 방식이 사용되어도 된다).
본 출원에서는 전위 0b 뒤에 일련의 1과 0을, 수치를 이진법으로 나타낸 것이다. 예를 들면 0b110은 수치 6을 십진법으로 나타낸 것이다.
본 발명의 일 국면에서 본 데이터 처리장치는,
처리 연산을 행하는 처리회로;
프로그램 명령어에 응답하여 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코더를 구비하고;
상기 프로그램 명령어는, 적어도, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값, 및 제어값을, 식별하는 비트필드 조작 명령어를 포함하고;
상기 제어값은 비트필드 폭W, 소스 비트 위치A 및 결과 비트 위치B를 가리키는 정보를 포함하고, 여기서 1≤W≤N, 0≤A≤(N-W) 및 0≤B≤(N-W)이고;
상기 명령어 디코더는, 상기 비트필드 조작 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 적어도 하나의 결과 데이터 요소로 이루어진 결과 데이터 값을 생성하고, 각 결과 데이터 요소는 대응한 제1 소스 데이터 요소와 대응한 제2 소스 데이터 요소에 해당하고, 각 결과 데이터 요소는:
(a) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 비트<B+W-1:B>; 및
(b) B+W<N이면, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 전위(prefix)값, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트 값을 갖는 제2 전위값, 및 (iii) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는 제3 전위값 중 하나로서 선택된 전위값에 대응한 비트 값을 갖는 비트<N-1:B+W>로 이루어진, N비트<N-1:0>를 갖는다.
상기 데이터 처리장치에는, 처리회로와, 비트필드 조작 명령어에 응답하여 상기 처리회로를 제어해서 비트필드 조작 연산을 행하는 명령어 디코더가 구비되어 있다. 상기 비트필드 조작 명령어는, 적어도, 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값과, 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값을, 식별한다. 상기 비트필드 조작 명령어에 응답하여, 상기 처리회로는 적어도 하나의 결과 데이터 요소로 이루어진 결과 데이터 값을 생성하도록 제어된다. 제1 소스 데이터 요소, 제2 소스 데이터 요소 및 결과 데이터 요소 각각은, N비트<N-1:0>를 갖는다.
각 N비트 결과 데이터 요소는, 제1 소스 데이터 값의 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 W비트<B+W-1:B>를 포함한다. 따라서, 각 결과 데이터 요소는, 상기 대응한 제1 소스 데이터 요소로부터 추출된 W비트 비트필드를 포함한다. 소스 비트 위치A는 제1 소스 데이터 요소내의 상기 비트필드의 최하위 비트의 위치를 가리키고, 결과 비트 위치B는 결과 데이터 요소내의 상기 비트필드의 최하위 비트를 가리키고, 비트필드 폭W는 비트필드가 포함한 비트의 수를 가리킨다. 수량 A, B 및 W는 1≤W≤N, O≤A≤N-W 및 O≤B≤N-W의 범위내에 있고, 상기 비트필드 조작 명령어내의 제어값에 의해 식별된다. 상기 제어값은, A, B 및 W를 직접 식별하거나, A, B 및 W를 얻는데 사용될 수 있는 임의의 세트의 파라미터를 사용하여 간접적으로 식별하여도 된다. 이때, 상기 제어값은 비트필드 조작 명령어 인코딩내에서 일련의 연속 비트일 필요는 없지만, 명령어 인코딩 전체에 걸쳐 분포된 비트들의 하나 이상의 그룹을 포함하여도 된다.
상기 제어값이 상기 B+W<N을 가리키는 경우, 각 결과 데이터 요소는, 상기 결과 데이터 요소내의 비트필드의 최상위 비트<B+W-1>보다 위의 비트<N-1:B+W>로 이루어진 전위부를 포함한다. 본 기술은 상기 전위부의 비트값을 설정하기 위한 다른 선택사항을 제공한다. 상기 비트필드 조작 명령어의 제어값은, 특별한 비트필드 조작을 위해 무슨 전위부를 사용할 것인지를 가리키는 정보를 포함한다. 상기 제어값에 따라, 상기 전위값은 제1 전위값, 제2 전위값 및 제3 전위값 중 하나로서 선택된다.
상기 제1 전위값은 각각 제로값을 갖는 비트로 이루어진다. 상기 제1 전위값이 선택될 때, 각 결과 데이터 요소는 대응한 소스 데이터 요소로부터 추출된 비트필드를 포함하되, 그 비트필드보다 높은 임의의 상위비트가 제로로 설정되어 있다. 이는, 상기 비트필드의 값이 따로따로 처리될 수 있는 상기 소스 데이터 요소의 비트필드를 상기 소스 데이터 요소의 다른 부분에서 분리하는데 유용할 수 있다.
상기 제2 전위값은 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트값을 갖는다. 따라서, 상기 제2 전위값이 선택될 때, 상기 비트필드 조작은, 제2 소스 데이터 요소의 임의의 보다 상위의 비트가 변경되지 않고 있는 상태에서 상기 제1 소스 데이터 요소의 비트필드를 상기 제2 소스 데이터 요소내에 삽입하는 것과 같은 결과를 발생한다. 이는, 2개 이상의 데이터의 일부분을 단일 데이터 값에 결합하는데 유용할 수 있다. 예를 들면, 결합된 RGB색값은, 상기 제2 전위 형태의 비트필드 조작 명령어를 사용하여 상기 RGB성분 중 하나를 포함하는 데이터 값내에 다른 2개의 성분에 대응한 비트필드를 삽입함으로써 별개의 RGB성분값으로부터 집합될 수 있다.
상기 제3 전위값은 상기 대응한 제1 소스 데이터 요소의 비트 <A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는다. 이는, 부호값을 나타내는 비트필드에 유용한데, 그 이유는, 상기 부호 확장이 상기 결과 데이터 요소내에 포함될 때 상기 제1 소스 데이터 요소의 비트필드의 부호를 유지하기 때문이다. 예를 들면, 상기 제1 소스 데이터 요소로부터 추출된 비트필드<A+W-1:A>가 음수를 나타내고 있던 경우, 상기 제3 전위값이 제공한 부호 확장은 상기 결과 데이터 요소 내의 상기 비트필드의 음의 부호를 유지한다.
상기 제1, 제2 및 제3 전위값 중 적절한 전위값을 선택함으로써, 상이한 종류의 비트필드 조작은, 동일한 비트필드 조작 명령어에 의해 인코딩될 수 있다. 단일의 비트필드 조작 명령어가 다수의 상이한 조작 연산을 제공할 수 있으므로, 상기 명령어 세트의 인코딩 공간을 효율적으로 사용한다. 당업자가 안 것은, 상기 비트필드 조작 명령어를 구현하기 위한 하드웨어가 아주 다양한 상이한 형태를 가져도 되고, 상기 처리회로와 명령어 디코더는 상술한 형태의 적어도 하나의 결과 데이터 요소를 갖는 결과 값을 생성하는 임의의 종류의 하드웨어를 구비하여도 된다는 것이다.
상기 제3 전위값의 부호 확장 비트의 형태는 상기 데이터 값에 사용된 부호 표시의 종류에 따라 서로 다르다. 그렇지만, 일례에서, 제3 전위값은 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1>의 비트값을 각각 갖는 비트로 이루어져도 된다. 많은 이진의 부호달린 숫자 표시에 있어서, 데이터 값이 양 또는 음의 값인지를 가리키는 부호 비트는, 상기 데이터 값의 최상위 비트다. 상기 제1 소스 데이터 요소로부터 추출된 비트필드의 최상위 비트는, 상기 제3 전위값의 비트의 각각에 복제함으로써 비트<A+W-1>등이고, 상기 추출된 비트필드의 부호는 상기 결과 데이터 값내에 그 비트필드를 삽입할 때 유지된다.
상기 제어값이 제로보다 커지게 결과 비트 위치B를 규정하면, 상기 결과 데이터 요소는 상기 비트필드의 최하위 비트<B>보다 하위의 적어도 하나의 비트 <B-1:0>를 포함한 후위(suffix)부를 갖는다. 상기 제어값에 따라, 상기 후위값은, 제로값을 각각 갖는 비트로 이루어진 제1 후위값과, 상기 대응한 제2 소스 데이터 요소의 비트<B-1:0>의 비트값을 갖는 제2 후위값 중 하나로서 선택되어도 된다. 상기 제1 후위값을 선택함으로써, 상기 비트필드는, 제로값을 갖는 하위비트를 갖는 결과 데이터 요소내에 분리될 수 있다. 상기 제2 후위값을 사용함으로써, 상기 비트필드 조작은, 상기 제2 소스 데이터 요소의 하위비트가 변경되지 않은 상태에서 상기 제2 소스 데이터 요소내에 상기 제1 소스 데이터 요소의 비트필드를 효율적으로 삽입한다.
후술한 예시들에서는, 상기 제2 전위값이 선택될 때 상기 제2 후위값이 선택되고, 상기 제1 및 제3 전위값 중 하나가 선택될 때 상기 제1 후위값이 선택되는 명령어 인코딩을 설명하였지만, 상기 제1, 제2 및 제3 전위값 중 하나와 상기 제1 및 제2 후위값 중 하나와의 어떠한 임의의 결합도 사용하여도 된다는 것을 알아야 할 것이다.
데이터 처리장치는, 상기 처리회로에 의해 처리하기 위한 데이터 값을 기억하는 복수의 기억장소를 구비하여도 되고;
상기 비트필드 조작 명령어는, 적어도, 상기 제1 소스 데이터 값을 기억하는 제1 소스 기억장소와, 목적지(destination) 기억장소를 식별하고;
상기 명령어 디코더는, 상기 비트필드 조작 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해서 상기 결과 데이터 값을 상기 목적지 기억장소에 기억한다.
상기 비트필드 조작 명령어의 일례에서, 상기 명령어는, 적어도, 상기 제1 소스 데이터 값을 기억하는 제1 소스 기억장소와, 상기 생성된 결과 데이터 값을 기억하는 목적지 기억장소를 식별한다. 상기 기억장소의 예로는, 상기 처리회로에 의해 처리하기 위한 데이터를 기억하는 레지스터, 메모리 장소, 또는 임의의 다른 데이터 스토어(store)이어도 된다.
선택적으로, 상기 비트필드 조작 명령어는 상기 제2 소스 데이터 값을 기억하는 제2 소스 기억장소를 특정하여도 되거나, 상기 제2 소스 데이터 값은 상기 명령어내에 직접 식별된 즉시값이어도 된다.
이와는 달리, 일례에서, 상기 제2 소스 데이터 값은, 상기 비트필드 조작 명령어의 실행에 앞서 목적지 기억장소에 있는 데이터 값이어도 된다. 이 경우에, 상기 결과 데이터 값은, 상기 목적지 기억장소내에 상기 제2 소스 데이터 값을 겹쳐 쓴다. 상기 비트필드 조작 명령어의 제어값은 상기 제2 전위값과 상기 제2 후위값이 선택되는 값인 경우, 상기 비트필드 조작의 결과는, 상기 제1 소스 데이터 값으로부터의 비트필드가 상기 목적지 기억장소의 그 밖의 비트가 변경되지 않은 상태에서 상기 목적지 기억장소내에 삽입되는 결과다.
일부의 처리장치에 의해, 기억장소(예를 들면, 레지스터)가 복수의 상이한 기억장소 사이즈의 기억장소로서 액세스될 수도 있다. 그 때문에, 상기 비트필드 조작 명령어의 제어값은, 상기 제1 소스 기억장소와 목적지 기억장소의 기억장소 사이즈를 식별하기 위한 정보를 포함하여도 된다. 상기 기억장소는 상이한 방식으로 구현되어도 된다. 일례에서는, 사이즈가 상이한 물리적으로 별개의 기억장소(예를 들면, 64비트의 기억장소의 일 그룹과 32비트의 기억장소의 다른 그룹)가 있어도 된다. 또는, 기억장소 사이즈가 다른 공통 세트의 기억장소를 액세스 가능하기도 하다. 예를 들면, 상기 64비트의 기억장소는 64비트 데이터 액세스와 32비트 데이터 액세스가 실시되어도 된다. 상기 64비트 기억장소의 32비트 데이터 액세스시에, 상기 기억장소의 비트들 중 32비트만이 판독될 수 있거나, 이와는 달리 상기 기억장소의 64비트 모두가 판독되지만 그 비트들 중 32비트가 상기 데이터 값의 임의의 추가의 처리를 행하기 전에 폐기되어도 된다. 32비트 데이터 값이 64비트의 기억장소에 기록되는 경우와 마찬가지로, 그 밖의 32비트는, 일부의 소정값으로 설정되어도 되거나, 32비트 데이터의 부호확장 또는 그대로 설정되어도 된다.
일부의 실시예들에서, 상기 제1 소스 데이터 값, 상기 제2 소스 데이터 값 및 상기 결과 데이터 값내에 포함된 상기 하나 이상의 데이터 요소는, 복수의 상이한 데이터 요소 사이즈 중에서 선택된 데이터 요소 사이즈 N을 갖는다. 이 경우에, 또한, 상기 비트필드 조작 명령어의 제어값은 직접 또는 간접적으로 상기 데이터 요소 사이즈 N을 식별하기 위한 정보를 포함하여도 된다. 가변 데이터 요소 사이즈를 제공하는 것은, 예를 들면 단일 명령 다중 데이터(SIMD) 처리 연산에 유용할 수 있고, 여기서 상기 비트필드 조작은 상기 제1 소스 데이터 값, 제2 소스 데이터 값 및 결과 데이터 값 내에 다중 세트의 대응한 데이터 요소에 병렬로 적용된다.
상기 제1 소스 데이터 요소와 상기 결과 데이터 요소내에 상기 비트필드의 위치를 가리키는 비트 위치A와 B는, 비트필드 조작 명령어의 제어값에 의해 식별된다. 상기 비트필드 조작 명령어의 일례에서, 상기 제어값은 A와 B의 어떠한 임의의 값을 식별하여서, 상기 소스 데이터 요소내의 어떠한 위치로부터의 비트필드는 상기 결과 데이터 요소내의 어떠한 위치에도 복사될 수 있다.
그렇지만, 일례에서는, 상기 비트필드 조작 명령어를, 상기 소스 비트 위치A와 상기 결과 비트 위치B 중 하나의 값이 제로이도록 인코딩한다. 본 기술에 의해 안 것은, 가장 일반적으로 원하는 형태의 비트필드 조작 연산에 대해서, 상기 소스 비트 위치A와 상기 결과 비트 위치B의 적어도 하나가 제로이다는 것이다. A와 B중 하나를 제로와 같도록 설정함으로써, A와 B 중 논제로만이 상기 제어값에 의해 식별될 필요가 있어, 그 명령어 인코딩은 보다 효율적이다. 상기 비트필드 명령어 형태의 명령어에 있어서, A=0 및 B>0이어서, 상기 소스 데이터 요소의 최하위 부분 <W-1:0>에 위치된 비트필드는, 상기 결과 데이터 요소의 임의의 부분 <B+W-1:B>에 삽입된다. 상기 비트필드 추출 형태의 명령어에서, A≥0과 B=0이어서, 비트필드는 상기 소스 데이터 요소의 임의의 부분 <A+W-1:A>로부터 추출되어 상기 결과 데이터 요소의 최하위 부분 <W-1:0>에 복사된다. 상기 추출 및 삽입형태의 명령어는, 비트필드 조작의 가장 일반적인 형태를 충족시킨다. 그럼에도 불구하고, A와 B 양쪽의 논제로 값을 요구한 비트필드 조작을 원하는 경우, 이 비트필드 조작은, 소스 비트필드를 상기 소스값의 임의의 위치A로부터 추출하여 일시 기억장소의 최하위 부분에 복사하는 비트필드 추출 형태의 명령어와, 상기 비트필드를 상기 일시 기억장소의 상기 최하위 부분으로부터 획득하여 이 비트필드를 결과값내의 상기 임의의 위치B에 삽입하는 비트필드 삽입 형태의 명령어와로 이루어진 2개의 비트필드 조작 명령어를 사용하여, 계속 실행될 수 있다.
일례에서, 상기 데이터 처리장치는, 상기 제어값이, 상기 비트필드 폭W, 상기 소스 비트 위치A 및 상기 결과 비트 위치B를 결정하기 위해 최상위 비트 위치S와 요소 회전 파라미터R을 특정하고;
S≥R인 경우, 상기 소스 비트 위치A=R과 상기 결과 비트 위치B=0, 상기 비트필드 폭W=(S+1)-R, 및 상기 비트필드 조작 명령어는, 상기 비트필드 추출형태를 갖고;
S<R인 경우, 상기 소스 비트 위치A=0과 상기 결과 비트 위치B=N-R, 상기 비트필드 폭W=S+1, 및 상기 비트필드 조작 명령어는, 상기 비트필드 삽입형태를 갖도록, 구성되어도 된다.
이러한 상기 비트필드 조작 명령어의 인코딩은, 2개의 파라미터 S와 R은, 적어도, (a) 상기 비트필드 조작 명령어가 비트필드 추출형태나 비트필드 삽입형태, (b) 상기 제1 소스 데이터 요소내의 상기 비트필드의 위치를 가리키는 상기 소스 비트 위치A, (c) 상기 결과 데이터 요소내에 상기 비트필드의 위치를 가리키는 상기 결과 비트 위치B, 및 (d) 상기 비트필드가 포함한 비트의 수를 가리키는 상기 비트필드 폭W를 갖는지를, 식별하기에 충분하기 때문에, 특히 효율적이다.
상기 비트필드 삽입형태와 상기 비트필드 추출형태 양쪽의 형태일 경우에, 최상위 비트 위치S는 상기 제1 소스 데이터 요소내의 상기 비트필드의 최상위 비트의 비트 위치를 나타내고, 상기 요소 회전 파라미터R은 상기 소스 비트 위치A를 상기 결과 비트 위치B로 이동하였을 경우 각 소스 데이터 요소를 우회전하는 비트 위치의 수를 나타낸다. 상기 비트필드 삽입형태일 경우, R은 상기 제1 소스 데이터 요소내의 상기 비트필드의 최하위 비트의 비트 위치를 나타내는 한편, 상기 비트필드 추출형태일 경우에는, (N-R)의 값은 상기 결과 데이터 요소내의 상기 비트필드의 최하위 비트 위치를 식별한다(여기서, N은 데이터 요소 사이즈다).
상기 요소 회전 파라미터R은 상기 소스 비트 위치A를 상기 결과 비트 위치B로 이동하였을 경우 각 소스 데이터 요소를 우회전하는 비트 위치의 수를 나타내지만, 상기 결과 데이터 요소를 상기 제1 소스 데이터 요소로부터 생성할 때 실제로 우회전을 하는 것이 필수적인 것은 아니다. 예를 들면, 그 우회전 대신에 동일한 좌회전을 사용하여도 되거나, 실제로 회전을 하지 않고 상기 결과 데이터 요소를 생성하여도 된다.
일례에서, 상기 최상위 비트 위치S는, 비트필드 부호비트 파라미터S를 포함하여도 된다. 상기 제1 소스 데이터 요소가 부호 달린 데이터 값일 경우, 상기 최상위 비트 위치S는 상기 제1 소스 데이터 요소내의 상기 부호 비트의 위치도 식별한다(추가로 상술한 (a) 내지 (d)의 항목도 식별한다).
상기 데이터 처리장치는, 상기 제어값이 가변수의 비트로 각각 이루어진 제1 부분과 제2 부분을 포함하고;
상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 비트필드 조작 명령어에 응답하여, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 결정하고, 상기 제1 부분이 포함한 상기 비트의 수에 의거하여:
(a) 상기 적어도 하나의 제1 소스 데이터 요소, 상기 적어도 하나의 제2 소스 데이터 요소 및 상기 적어도 하나의 결과 데이터 요소의, 데이터 요소 사이즈N; 및
(b) 상기 제2 부분의 어느 비트가 상기 최상위 비트 위치S와 상기 회전 파라미터R을 가리키는지를, 결정하도록 구성되어도 된다.
상기 데이터 요소 사이즈N이 클수록, R과 S의 가능값이 커진다. 이 때문에, R과 S를 나타내는데 필요한 비트의 수는, 특별한 연산을 위해 선택된 상기 데이터 요소 사이즈N에 따라 달라질 것이다. R과 S의 최대 가능값을 식별하기에 충분한 고정수의 비트를 상기 제어값내에 할당하는 것이 가능할 것이지만, 상기 제어값에 각각이 가변길이를 갖는 제1 부분과 제2 부분을 제공함으로써 보다 효율적인 인코딩이 행해질 수 있다. 상기 제어값의 비트는, 사용되는 데이터 요소 사이즈N에 따라 상기 제1 부분 또는 상기 제2 부분 중 어느 한쪽에 가변적으로 할당될 수 있다. 가변길이 제1 부분의 사이즈를 검출함으로써, 상기 데이터 처리장치는, 데이터 요소 사이즈N과, 상기 제2 부분의 어느 비트가 상기 최상위 비트 위치S와 회전 파라미터R을 나타내는지를 식별할 수 있다.
일부의 실시예들에서, 상기 제1 및 제2 소스 데이터 값내의 대응한 제1 및 제2 소스 데이터 요소와 같은 순서로 상기 결과 데이터 요소가 배치된 상기 결과 데이터 값을 생성하여도 된다.
그러나, 그 밖의 실시예는, 상기 제1 소스 데이터 값이 복수의 제1 소스 데이터 요소를 포함하는 경우와, 상기 제2 소스 데이터 값이 복수의 제2 소스 데이터 요소를 포함하는 경우와, 상기 결과 데이터 값이 복수의 결과 데이터 요소를 포함하는 경우에, 상기 제어값이 상기 복수의 결과 데이터 요소를 상기 결과 데이터 값내에 배치하는 순서를 가리키기 위한 데이터 요소 배치(ordering) 정보를 갖도록 구성되어도 된다.
따라서, 상기 비트필드 조작 명령어는, 필요한 경우 데이터 요소 재배치를 구현하는데 사용될 수도 있다. 예를 들면, 2개의 결과 데이터 요소 A와 B를 갖는 결과 데이터 값은, 대응한 제1 소스 데이터 요소 A'와 B'를 갖는 제1 소스 데이터 값과 대응한 제2 소스 데이터 요소 A"와 B"를 갖는 제2 소스 데이터 값에 의거하여 생성되어도 된다. 그 후, 상기 제어값이 가리킨 데이터 요소 배치정보는, 상기 결과 데이터 요소가 순서AB(소스 데이터 값에서 상기 대응한 소스 데이터 요소의 순서에 대응함) 또는 반대의 순서BA로 배치되는지를 특정하여도 된다.
이때, 상기 비트필드 조작 명령어는, 필요한 경우, 그 데이터 값에 관해 비트필드 조작을 행하지 않을 경우에도, 데이터 값내에 데이터 요소의 재배치를 구현하는데 사용되어도 된다. 이것은, 상기 비트필드 폭W을 데이터 요소 사이즈N과 같게 설정하여서 행해질 수 있어, 상기 비트필드 조작 명령어는 상기 제1 소스 데이터 값 전체를 상기 결과 데이터 값에 복사하는 효과를 가지고, 이때의 상기 결과 데이터 값내의 데이터 요소는 상기 데이터 요소 배치정보에 따라 재배치되어 있다. 따라서, 본 기술은, 비트필드 조작뿐만 아니라 데이터 요소의 재배치도 구현할 수 있는 다기능 명령어를 제공한다.
일례의 실시예에서, 상기 데이터 처리장치는, 상기 제1 소스 데이터 값이 복수의 제1 소스 데이터 요소를 포함하고, 상기 제2 소스 데이터 값이 복수의 제2 소스 데이터 요소를 포함하고, 상기 결과 데이터 값이 복수의 결과 데이터 요소를 포함하는 경우, 상기 결과 데이터 값은,
(a) 상기 제1 소스 데이터 값에서 상기 대응한 제1 소스 데이터 요소의 순서와, 상기 제2 소스 데이터 값에서 상기 대응한 제2 소스 데이터 요소의 순서에 대응하게 배치된 상기 결과 데이터 요소를 포함한 중간값을 생성하고,
(b) 상기 중간값내의 상기 결과 데이터 요소에 관해 적어도 하나의 재배치(reordering) 반복을 행하여 상기 제1 데이터 값을 생성함으로써 얻어진 제1 데이터 값과 동일하고;
각 재배치 반복은, 상기 데이터 요소 배치 정보의 대응한 비트가 소정의 값을 갖는지를 결정하는 것과, 상기 데이터 요소 배치 정보의 상기 대응한 비트가 상기 소정의 값을 갖는 경우 상기 중간값내의 비트들로 이루어진 그룹의 쌍을 교환하는 것을 포함하도록, 구성되어도 된다.
일례에서, 상기 교환된 상기 중간값내의 비트들로 이루어진 그룹의 쌍은 비트들로 이루어진 그룹의 인접한 쌍을 포함한다.
상기 데이터 요소 재배치를 구현하는 일 방식은, (a) 상기와 같은 비트필드 조작 연산을 사용하여, 상기 제1 및 제2 소스 데이터 값내의 상기 대응한 제1 및 제2 소스 데이터 요소와 같은 순서로 상기 비트필드 조작으로 생기는 상기 결과 데이터 요소를 배치하는 중간값을 생성하였을 경우와, (b) 상기 중간값에 일련의 하나 이상의 재배치 반복을 적용하여 제1 데이터 값을 생성한 경우에, 생성되는 상기 제1 데이터 값과 동일한 형태로 상기 결과 데이터 값을 생성하는 방식이고, 각 재배치 반복은 상기 데이터 요소 배치 정보의 대응한 비트가 소정의 값을 갖는 경우 상기 중간값내의 비트들로 이루어진 그룹의 쌍을 교환하는 것을 포함한다.
이때, 상기 결과 데이터 값은, 실제로 상술한 것과 같은 (a) 및 (b)의 단계를 행하여서 생성될 필요는 없다. 일부의 구현에 있어서, 상기 처리회로는, 한번의 연산으로, 상기 비트필드 조작 연산을 상기 제1/제2 소스 데이터 값에 의거하여 행하고 상기 결과 데이터 값내의 원하는 순서로 상기 결과 데이터 요소도 배치한, 최종의 결과값을 생성하여도 된다. 따라서, 상술한 중간값이 상기 처리회로로 생성될 필요는 없거나, 상기 처리회로가 실제로 상기 재배치 반복을 행할 필요는 없다. 상기 최종의 결과 데이터 값은, 상기 중간값에 관해 그 재배치 반복을 행하는 것으로부터 생기는 상기 제1 데이터 값과 같은 값을 갖는다.
일부의 실시예에서 상기 재배치 반복은 임의의 수의 비트를 갖는 비트들로 이루어진 그룹의 쌍을 교환하여도 되지만, 상기 데이터 배치 정보의 인코딩과, 상기 결과 데이터 값을 생성하기 위한 하드웨어 구성은, 상기 비트들로 이루어진 그룹이 상기 데이터 요소 사이즈N의 배수인 비트의 수를 포함하는 경우 간략화될 수 있다. 예를 들면, 재배치 반복은, 하나의 데이터 요소의 쌍을 교환하거나, 2개, 4개 이상의 데이터 요소들로 이루어진 그룹의 쌍을 교환하여도 된다.
일례에서, 상기 비트들로 이루어진 그룹은, 적어도 하나의 재배치 반복의 상이한 것들에 대한 상이한 수의 비트들을 포함하여도 된다. 상이한 그룹 사이즈의 비트들로 이루어진 그룹(또는 데이터 요소)을 교환하는 일련의 재배치 반복에 의해, 데이터 요소의 가능한 광범위한 구성을 상기 결과 데이터 값내에 제공할 수 있다.
상기 데이터 처리장치는, 상기 제어값이 각각 가변수의 비트를 포함하는 제1 부분과 제2 부분을 포함하고;
상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 비트필드 조작 명령어에 응답하여, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 결정하고, 상기 제1 부분이 포함한 상기 비트의 수에 의거하여:
(a) 상기 적어도 하나의 제1 소스 데이터 요소, 상기 적어도 하나의 제2 소스 데이터 요소 및 상기 적어도 하나의 결과 데이터 요소의, 데이터 요소 사이즈N; 및
(b) 상기 제2 부분의 어느 비트가 상기 데이터 요소 배치 정보를 가리키는지를, 결정하도록 구성되어도 된다.
상술한 파라미터 S와 R과 마찬가지의 방식으로, 상기 데이터 요소 배치 정보는, 각각 가변수의 비트를 갖는 상기 제1 부분과 상기 제2 부분을 사용하여 인코딩되어도 된다. 이것은, 데이터 요소 배치 정보가 상기 데이터 값내에 데이터 요소가 얼마나 많이 있는지에 좌우되는 다수의 비트를 필요로 하는 것이 일반적이기 때문에 유용하다(데이터 요소의 수가 클수록, 가능한 재배치 순열의 수가 커진다). 데이터 요소의 수는, 상기 데이터 요소 사이즈N에 좌우되어서, 데이터 요소 배치 정보를 나타내는데 필요한 비트의 수는 상기 데이터 요소 사이즈N과 반대로 변화하기도 한다(데이터 요소 사이즈가 클수록, 가능한 재배치 순열의 수가 적어진다). 따라서, 상기 비트필드 파라미터 S와 R에 대해 상술한 것과 같은 상기 제어값의 인코딩 방식도 마찬가지로 상기 데이터 요소 배치 정보를 효율적인 방식으로 나타내는데 사용될 수 있다.
본 발명의 다른 국면에서 본 데이터 처리장치는,
처리 연산을 행하는 처리수단;
프로그램 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코딩 수단을 구비하고;
상기 프로그램 명령어는, 적어도, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값, 및 제어값을, 식별하는 비트필드 조작 명령어를 포함하고;
상기 제어값은 비트필드 폭W, 소스 비트 위치A 및 결과 비트 위치B를 가리키는 정보를 포함하고, 여기서 1≤W≤N, 0≤A≤N-W 및 0≤B≤N-W이고;
상기 명령어 디코딩 수단은, 상기 비트필드 조작 명령어에 응답하여, 상기 처리수단을 제어하기 위한 제어신호를 생성해 적어도 하나의 결과 데이터 요소로 이루어진 결과 데이터 값을 생성하되, 각 결과 데이터 요소는 대응한 제1 소스 데이터 요소와 대응한 제2 소스 데이터 요소에 해당하고, 각 결과 데이터 요소는:
(a) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 비트<B+W-1:B>; 및
(b) B+W<N이면, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 전위(prefix)값, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트 값을 갖는 제2 전위값, 및 (iii) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는 제3 전위값 중 하나로서 선택된 전위값에 대응한 비트 값을 갖는 비트<N-1:B+W>로 이루어진, N비트<N-1:0>를 갖는다.
본 발명의 또 다른 국면에서 본, 처리연산을 행하는 처리장치의 데이터 처리 방법은,
적어도, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값, 및 제어값을 식별하는 비트필드 조작 명령어에 응답하여, 상기 처리장치를 제어하기 위한 제어신호를 생성해, 각각 N비트<N-1:0>를 갖는 대응한 제1 소스 데이터 요소와 대응한 제2 소스 데이터 요소에 각각 해당하는 적어도 하나의 결과 데이터 요소로 이루어진, 결과 데이터 값을 생성하는 단계를 포함하고,
상기 제어값은 비트필드 폭W, 소스 비트 위치A 및 결과 비트 위치B를 가리키는 정보를 포함하고, 여기서 1≤W≤N, 0≤A≤N-W 및 0≤B≤N-W이고, 각 결과 데이터 요소는:
(a) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 비트<B+W-1:B>; 및
(b) B+W<N이면, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 전위값, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트 값을 갖는 제2 전위값, 및 (iii) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는 제3 전위값 중 하나로서 선택된 전위값에 대응한 비트 값을 갖는 비트<N-1:B+W>로 이루어진다.
본 발명의 또 다른 국면에서 본 데이터 처리장치는,
처리 연산을 행하는 처리회로;
프로그램 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코더를 구비하고;
상기 프로그램 명령어는, 복수의 데이터 사이즈로부터 선택된 선택 데이터 사이즈를 가리키는 제1 부분과, 상기 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 갖는 적어도 하나의 제어 파라미터를 가리키는 제2 부분을 갖는, 제어값을 특정하는 적어도 하나의 명령어를 포함하고, 상기 제1 부분과 상기 제2 부분 각각이 가변수의 비트를 갖고;
상기 명령어 디코더는 상기 적어도 하나의 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 선택 데이터 사이즈와 상기 적어도 하나의 제어 파라미터에 따라 대응한 처리 연산을 행하고;
상기 적어도 하나의 명령어를 처리할 때, 상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하도록 구성되고, 상기 제1 부분이 포함한 상기 비트의 수에 따라, (a) 상기 선택 데이터 사이즈와, (b) 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분을 구성하는지를 식별하도록 구성된다.
상술한 것처럼, 상기 비트필드 조작 명령어는, 상기 비트필드 조작이 실시되는 상기 데이터 요소의 사이즈를 가리키는 선택 데이터 요소 사이즈와 관련되어도 된다. 상기 비트필드 조작 연산을 제어하기 위한 제어 파라미터는 상기 데이터 요소 사이즈에 따라 가변수의 비트를 가져서, 상술한 것처럼 가변길이 제1 및 제2 부분을 사용한 인코딩 방식은 이들 제어 파라미터를 효율적인 방식으로 식별하는데 사용될 수 있다.
또한, 이러한 타입의 상기 제어값의 인코딩은, 복수의 데이터 사이즈중에서 선택된 데이터 사이즈와, 상기 선택된 데이터 사이즈에 의존한 다수의 비트를 갖는 적어도 하나의 제어 파라미터에 의존한, 처리 연산과 관련된 다른 종류의 명령어에 사용되어도 된다. 이러한 명령어에 대해서, 상기 명령어는, 각각 가변수의 비트를 갖는 제1 부분과 제2 부분을 갖는 제어값을 특정하여도 된다. 상기 제1 부분이 포함한 비트의 수를 식별함으로써, 상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 선택된 데이터 사이즈를 결정할 수 있고, 또 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 나타내는 상기 제2 부분에 해당하는지를 식별할 수 있다. 이러한 형태의 명령어 인코딩은, 여러 가지 타입의 명령어에 적용될 수 있고, 상기 선택 데이터 사이즈에 따라 달라지는 비트의 수를 갖는 효율적인 제어 파라미터 인코딩 방식을 제공한다.
이때, "부분"이란, 굳이 상기 제어값내의 비트들로 이루어진 연속적인 부분을 나타낼 필요는 없고, 비트들의 비트 위치가 인접하지 않은 경우에도 상기 제어값의 비트들로 이루어진 어떠한 임의의 그룹을 말하기도 한다.
상기 이용가능한 명령어 세트가 상기 제어값의 공통 인코딩 포맷을 각각 사용해서 제어 파라미터와 상기 명령어와 관련된 데이터 사이즈를 식별하는 복수의 상이한 종류의 명령어를 포함하는 실시예들에 있어서, 상기 제어값을 디코딩하는 하드웨어의 일부를 상이한 종류의 명령어에 대해 재사용할 수 있으므로, 상기 명령어 디코더 및/또는 처리회로를 더욱 효율적으로 만들 수 있다.
이러한 기술은, 제2 부분의 비트의 수가 상기 선택 데이터 사이즈에 따라 감소될 때 상기 제1 부분의 비트의 수가 상기 선택 데이터 사이즈에 따라 증가하는 경우에 특히 유용하다. 상기 제2 부분의 비트의 수가 감소될 때 상기 제1 부분의 비트의 수가 증가하거나 이와 반대로 행함으로써, 상기 제1 부분은 상기 제2 부분에 의해 상기 선택 데이터 사이즈를 가리키는데 필요하지 않은 제어값의 어떠한 비트도 사용할 수 있다. 따라서, 상기 제어값의 총 사이즈는, 상기 선택 데이터 사이즈와 관계없이 동일한 사이즈를 유지할 수 있고, 이때의 상기 제어값의 상이한 비트는 필요한 경우 상기 사용되는 특별한 데이터 사이즈에 따라 상기 제1 부분 또는 상기 제2 부분에 할당된다.
일례에서, 상기 제어값의 상기 제1 부분은, 적어도 상기 복수의 데이터 사이즈의 서브세트에 대해서, 상기 제1 부분이, 적어도, 제1상태의 제1비트와, 제2상태의 X개의 나머지 비트로 이루어지도록 인코딩되어도 되고, 여기서 X는 0이상의 가변 정수이고;
상기 명령어 디코더와 상기 처리회로 중 상기 적어도 하나는, 상기 제어값의 소정 부분내의 상기 제1비트의 비트 위치에 따라 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하도록 구성된다.
이 예에서, 상기 제1 부분은, 제1상태(예를 들면, "0"상태나 "1"상태)의 적어도 하나의 비트를 포함한다. 상기 제1 부분의 제로, 하나 이상의 나머지 비트는, 제2상태(예를 들면, 상기 "0"상태와 "1"상태이외의 상태)를 갖는다. 일례에서, 상기 제2상태를 갖는 상기 제1 부분의 상기 제로, 하나 이상의 비트는, 소정의 데이터 사이즈에 대해 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분에서 필요로 하지 않는 상기 제어값의 비트 위치를 채우기 위한 "패딩"비트로서 효과적으로 사용되어도 된다. 상기 제2상태를 갖는 비트의 수에 따라, 상기 제1상태를 갖는 비트의 위치가 달라질 수 있다. 그 후, 데이터 사이즈는, 제1상태를 갖는 비트의 비트 위치에 의거하여 식별될 수 있다.
상기 제1상태를 갖는 제1비트의 비트 위치에 의거한 제1 부분의 사이즈(와 이에 따라 상기 선택 데이터 사이즈)를 검출하는 기술은, 여러 가지 구현에 있어서 상기 이용가능한 데이터 사이즈가 2의 거듭제곱으로 상승할 수 있어서, 상기 제1상태를 갖는 상기 비트의 비트 위치가 상기 선택 데이터 사이즈에 사용된 상기 특정한 2의 거듭제곱으로 상관되는 경우도 있을 수 있으므로 특히 유용하다.
제1상태를 갖는 상기 제1 부분의 비트의 비트 위치를 식별하는 이 기술은, 데이터 요소 사이즈를 식별하는데만 사용된 기술일 필요는 없다. 또한, 상기 선택 데이터 사이즈를 식별하기 위한 또 다른 정보를 제공하는 적어도 하나의 추가 비트이어도 된다.
본 제어값 인코딩 기술을 사용하여 단일의 제어 파라미터만을 나타내는 것이 가능하고, 본 기술은 복수의 제어 파라미터가 있는 경우에 특히 유용하다. 이 경우에, 상기 적어도 하나의 명령어를 처리할 때, 상기 명령어 디코더 또는 상기 처리회로는, 상기 제1 부분이 포함한 비트의 수에 따라, 상기 제2 부분의 어느 비트가 상기 복수의 제어 파라미터의 각각을 가리키는지를 식별하도록 구성되어도 된다.
그리고, 복수의 제어 파라미터가 있는 경우, 본 인코딩 기술은, 상기 제어 파라미터가, 적어도, 상기 선택 데이터 사이즈가 증가함에 따라 증가하는 다수의 비트를 갖는 제1 제어 파라미터와, 상기 선택 데이터 사이즈가 증가함에 따라 감소하는 다수의 비트를 갖는 제2 제어 파라미터를 포함하는 경우 특히 유용하다. 이 경우에, 그래서 상기 제2 부분은, 비트들을 상기 선택 데이터 사이즈에 따라 상기 제1 제어 파라미터 또는 제2 제어 파라미터에 할당한 상기 제1 및 제2 제어 파라미터를 가리키는 서브(sub)부분을 포함하기도 한다. 상기 선택 데이터 사이즈가 증가함에 따라 비트의 수가 증가하는 하나의 제어 파라미터와 상기 선택 데이터 사이즈가 증가함에 따라 비트의 수가 감소하는 또 다른 제어 파라미터와의 짝짓기(pairing)는 상기 제어값을 효율적으로 인코딩하게 되는데, 그 이유는, 소정의 데이터 사이즈에 대한 상기 제1 제어 파라미터를 가리키는데 불필요한 비트가 상기 제2 제어 파라미터를 가리키는데 재할당될 수 있고, 또 이와 반대로도 될 수 있기 때문이다.
상기와 같이, 본 인코딩 기술은, 광범위한 상이한 타입의 명령어에 적용되어도 된다. 본 기술이 특히 유용한 일 타입의 명령어로는, 적어도 하나의 소스 데이터 요소를 갖는 소스 데이터 값을 식별하는 단일 명령 다중 데이터(SIMD) 명령어가 있다. 적어도 하나의 SIMD 명령어에 대해서, 상기 선택 데이터 사이즈는 상기 적어도 하나의 소스 데이터 요소의 데이터 요소 사이즈를 가리키고, 대응한 처리 연산은 상기 소스 데이터 값내의 각 소스 데이터 요소에 관해 선택된 처리 연산을 병렬로 수행하는 것을 포함한다. 상기 대응한 처리 연산을 제어하기 위한 제어 파라미터는 상이한 데이터 요소 사이즈에 대해 허용 범위가 서로 달라도 되어서, 이 제어 파라미터의 비트의 수는 상기 데이터 요소 사이즈에 따라 달라지기도 한다. 이에 따라서, 본 인코딩 기술을 사용하여 상기 제어값 내의 상기 선택 데이터 요소 사이즈와 가변 길이 제어 파라미터 모두를 효율적으로 인코딩할 수 있다.
본 제어값 인코딩 기술을 적용하여도 되는 하나의 특별한 예의 SIMD명령어는, 상기 대응한 처리 연산이, 상기 소스 데이터 값의 대응한 소스 데이터 요소에 각각 해당하는 적어도 하나의 결과 데이터 요소를 포함하는 결과 데이터 값을 생성하는 것을 포함하는 비트필드 조작 명령어이고;
각 결과 데이터 요소는, 상기 대응한 소스 데이터 요소내의 연속적인 비트로 이루어진 소스 비트필드의 비트값에 대응하는 비트값을 갖는 결과 비트필드를 포함하고;
상기 적어도 하나의 제어 파라미터는, 상기 소스 비트필드와 상기 결과 비트필드가 포함한 비트의 수, 상기 대응한 소스 데이터 요소내의 상기 소스 비트필드의 위치, 및 상기 결과 데이터 요소내의 상기 결과 비트필드의 위치를 가리킨다.
따라서, 상기 제어값은, 상기 비트필드 조작 명령어에 대해 상기 데이터 요소 사이즈를 식별하는 다수의 비트를 갖는 제1 부분과, 상기 비트필드 폭, 상기 소스 데이터 요소내의 상기 비트필드의 위치, 및 상기 결과 데이터 요소내의 상기 결과 비트필드의 위치를 가리키는 제어 파라미터를 식별하는 제2 부분을 갖는다. 데이터 요소 사이즈가 클수록, 상기 비트필드 폭과, 상기 소스 및 상기 결과 데이터 요소 내의 상기 비트필드 위치와의 가능한 값이 커지기 때문에, 이들 파라미터를 가리키는데 필요한 비트의 수가 커진다. 따라서, 본 제어값 인코딩 기술은, 이들 파라미터를 가리키는데 유용하다.
또한, 상기 비트필드 조작 명령어는, 상기 결과 데이터 요소가 상기 결과값내에 배치된 순서를 식별하는 데이터 요소 배치(ordering) 파라미터를 특정하여도 된다. 마찬가지로, 사이즈가 가변하는 상기 제1 및 제2 부분을 사용한 본 인코딩 기술은, 상기 데이터 요소 배치 파라미터를 식별하는데 사용되어도 된다.
본 인코딩 기술을 적용하여도 되는 또 다른 타입의 명령어는, 소스 데이터 값을 식별하며, 대응한 처리 연산이 상기 소스 데이터 값과, 상기 제어값에 의거하여 결정된 제2 데이터 값에 대해 논리연산을 행한 결과와 같은 결과 데이터 값을 생성하는 것을 포함하는 비트단위의 논리 명령어다.
상기 제2 데이터 값은, 논리연산을 사용하여 상기 소스 데이터 값과 결합하기 위한 마스크 값이라고 생각될 수 있다. 이 경우의 상기 선택 데이터 사이즈는 상기 제2 데이터 값내의 반복패턴의 비트들로 이루어진 다수의 비트를 가리키고, 상기 적어도 하나의 제어 파라미터는 상기 반복패턴의 비트들의 비트값들을 식별하는 정보를 가리킨다. 따라서, 이 경우에, 상기 선택 데이터 사이즈가 꼭 데이터 요소 사이즈는 아니지만 상기 제2 데이터 값내의 상기 반복패턴의 비트의 사이즈를 가리킨다. 상기 반복패턴의 비트의 사이즈가 클수록, 상기 제어 파라미터에서 그들의 비트의 비트값을 식별하는데 필요한 비트의 수가 커지기 때문에, 상기 제어 파라미터는 그 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 가질 것이다. 따라서, 본 인코딩 기술은 이러한 파라미터를 가리키는데 유용하다.
상기 비트단위의 논리 명령어와 관련된 논리연산은, 다수의 상이한 타입의 논리연산을 포함하기도 한다. 예를 들면, 이 논리연산은, AND연산, OR연산 및 배타적 OR(XOR)연산 중 하나를 포함하기도 한다.
이때, 상기 비트단위의 논리 명령어는, 굳이 상기 처리회로를 제어하여, 실제로 상기 반복패턴의 비트를 갖는 상기 제2 데이터 값을 생성해 상기 소스 데이터 값과 제2 데이터 값에 대해 논리연산을 적용할 필요는 없다. 상기 처리회로는, 상기 논리연산을 사용하여 상기 제2 데이터 값을 생성해 상기 소스 데이터 값과 결합한 경우에 얻어질 결과와 동일한 결과 데이터 값을, 단일 결합연산으로 생성하기 위한 하드웨어를 구비하여도 되는 것이 가능하다. 그 제2 데이터 값이 실제로 이러한 연산의 어떠한 단계에도 존재하는 것이 불필요하다.
본 발명의 또 다른 국면에서 본 데이터 처리장치는,
처리 연산을 행하는 처리수단;
프로그램 명령어에 응답하여, 상기 처리수단을 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코딩 수단을 구비하고;
상기 프로그램 명령어는, 복수의 데이터 사이즈로부터 선택된 선택 데이터 사이즈를 가리키는 제1 부분과, 상기 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 갖는 적어도 하나의 제어 파라미터를 가리키는 제2 부분을 갖는, 제어값을 특정하는 적어도 하나의 명령어를 포함하고, 상기 제1 부분과 상기 제2 부분 각각이 가변수의 비트를 갖고;
상기 명령어 디코딩 수단은, 상기 적어도 하나의 명령어에 응답하여, 상기 처리수단을 제어하기 위한 제어신호를 생성해 상기 선택 데이터 사이즈와 상기 적어도 하나의 제어 파라미터에 따라 대응한 처리 연산을 행하고;
상기 적어도 하나의 명령어를 처리할 때, 상기 명령어 디코딩 수단과 상기 처리수단 중 적어도 하나는, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하도록 구성되고, 상기 제1 부분이 포함한 상기 비트의 수에 따라, (a) 상기 선택 데이터 사이즈와, (b) 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분을 구성하는지를 식별하도록 구성된다.
또한, 본 발명의 또 다른 국면에서 본, 프로그램 명령어에 응답하여 처리 연산을 행하는 처리장치의 데이터 처리 방법은,
복수의 데이터 사이즈로부터 선택된 선택 데이터 사이즈를 가리키는 제1 부분과, 상기 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 갖는 적어도 하나의 제어 파라미터를 가리키는 제2 부분을 갖는, 제어값을 특정하는 적어도 하나의 명령어를 수신하되, 상기 제1 부분과 상기 제2 부분 각각이 가변수의 비트를 갖는 단계;
상기 적어도 하나의 명령어에 응답하여, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하는 단계;
상기 제1 부분이 포함한 상기 비트의 수에 따라, (a) 상기 선택 데이터 사이즈와, (b) 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분을 구성하는지를 식별하는 단계; 및
상기 처리장치를 제어하여 상기 선택 데이터 사이즈와 상기 적어도 하나의 제어 파라미터에 따라 대응한 처리 연산을 행하는 단계를 포함한다.
또한, 본 발명은, 컴퓨터에 의해 실행될 때, 상술한 예들 중 임의의 예에 따라 상기 데이터 처리장치에 따른 명령어 실행 환경을 제공하는 컴퓨터 프로그램에 의해 제공된 가상 머신을 제공한다. 예를 들면, 가상 머신으로, 상술한 명령어의 중 하나를 포함하는 프로그램과 상기 명령어를 실행하기 위한 하드웨어와의 상호작용 견본을 만들어도 된다. 상기 가상 머신을 실행하는 호스트 컴퓨터는, 자신이 상기 명령어를 실행 가능한 디코딩 및 처리 하드웨어를 가질 필요는 없고, 상기 명령어의 처리를 시뮬레이션하는 상기 가상 머신을 실행할 수 있도록 충분한 처리자원을 포함한다.
본 발명의 상기 목적 및 다른 목적, 특징 및 이점은, 첨부도면과 관련지어 나타내어질 이하의 예시적 실시예들의 상세한 설명으로부터 명백해질 것이다:
도 1은 데이터 처리장치를 개략적으로 도시한 것이고;
도 2는 비트필드 조작 명령어의 인코딩 예시도;
도 3은 비트필드 조작 연산의 예시도;
도 4는 비트필드 조작을 적용하여서 소스 데이터 요소로부터 결과 데이터 요소를 생성하는 예시도;
도 5는 상기 비트필드 조작 명령어내의 제어 필드의 인코딩 예시도;
도 6은 비트필드 삽입 형태의 비트필드 조작 명령어와 비트필드 추출 형태의 비트필드 조작 명령어의 예시도;
도 7은 상기 비트필드 조작 명령어내의 제어값에 따라 상기 결과 데이터 요소의 상이한 전위와 후위 부분을 선택하는 예시도;
도 8a는 상기 제어값내에 인코딩된 재배치 정보에 따라 상기 결과 데이터 값내의 데이터 요소를 재배치하는 제1 예시도;
도 8b는 데이터 요소를 재배치하는 제2 예시도;
도 9는 비트필드 조작 명령어의 처리방법을 도시한 것이며;
도 10은 제어필드를 디코딩하여 제어 파라미터의 값들을 얻는 방법을 도시한 것이며;
도 11은 공통 제어 필드 인코딩을 상기 비트필드 조작 명령어와 공유하는 비트단위의 논리 명령어의 인코딩 예시도;
도 12는 상기 비트단위의 논리 명령어의 상기 제어 필드의 인코딩 예시도;
도 13은 소스 데이터 값을 논리연산을 사용하여 결합하기 위한 마스크 값의 예시도;
도 14는 상기 비트단위의 논리 명령어의 제어하에 행해져도 되는 상이한 종류의 논리 연산을 도시한 것이고;
도 15는 비트단위의 논리 명령어를 처리하는 방법의 예시도;
도 16은 가상 머신 구현의 예시도다.
도 1은 처리회로(4), 명령어 디코더(6), 일렬로 늘어선 레지스터(8) 및 메모리 시스템(10)을 구비한 데이터 처리장치(2)를 개략적으로 도시한 것이다. 메모리 시스템(10)은, 하나 이상의 캐쉬나 메모리 디바이스를 구비한다. 처리회로(4)는, 가산기(12), 곱셈기(14) 및 쉬프터(16) 등의 다수의 처리소자를 구비한다. 데이터를 처리할 때, 상기 명령어 디코더(6)는, 프로그램 명령어에 응답하여, 상기 처리회로(4)를 제어하기 위한 제어신호를 생성해 상기 레지스터(8)에 기억된 데이터를 처리하여 처리결과를 상기 레지스터(8)에 기억한다. 또한, 상기 명령어 디코더(6)의 제어하에, 상기 데이터 처리장치(2)는, 상기 레지스터(8)와 상기 메모리 시스템(10)의 사이에서 데이터를 전송하도록 제어되어도 된다.
상기 레지스터(8)는, 다수의 상이한 레지스터 액세스 사이즈를 사용하여 액세스 가능하다. 상기 레지스터가 64비트로 이루어진 경우, 예를 들면 상기 레지스터는 64비트 액세스 또는 32비트 액세스가 이루어져도 된다. 상기 명령어 디코더(6)에서 디코딩한 명령어는, 소정의 처리연산에 사용되게 선택된 레지스터 액세스 사이즈를 특정하는 정보를 포함하기도 한다.
도 1의 예시에서는, 레지스터 뱅크(8)에 기억된 데이터를 처리하여 그 레지스터(8)에 되돌아가서 데이터를 처리한 결과를 기억하는 것으로서 상기 처리회로(4)가 도시되어 있지만, 그 레지스터(8) 대신에 어떠한 다른 종류의 기억장소를 사용하여도 된다는 것을 알 것이다. 일반적으로, 상기 데이터 처리장치(2)와 처리회로(4)는 도 1에 도시되지 않은 다른 소자를 구비하여도 된다.
도 2는 상기 처리장치(2)를 제어하여 비트필드 조작 연산을 행하는 비트필드 조작 명령어BF의 인코딩 예시도다. 상기 비트필드 조작 명령어는, 상기 명령어의 비트<28:23>에 위치된 오피코드(opcode)에 의해 식별되고, 다음의 필드를 포함한다:
· Rn: 제1 소스 데이터 값src1을 기억하는 상기 레지스터 뱅크(8)의 일 레지스터를 식별하는 소스 레지스터 필드.
· Rd: 처리결과가 기억될 상기 레지스터 뱅크(8)의 목적지 레지스터를 식별하는 목적지 레지스터 필드. 또한, 그 목적지 레지스터 필드Rd는 상기 비트필드 조작 명령어의 실행에 앞서 상기 목적지 레지스터에 기억된 값인 제2 소스 데이터 값src2를 식별한다.
· sf: 상기 소스 레지스터와 목적지 레지스터에 사용되는 상기 선택된 액세스 사이즈M을 식별하는 레지스터 액세스 사이즈 필드. 도 2의 예에 있어서, 상기 레지스터 사이즈 필드sf는 단일의 사이즈 표시(size-indicating) 비트를 포함하고, 이때 그 사이즈 표시 비트의 제1상태가 제1 액세스 사이즈(예를 들면, 64비트)를 가리키고, 상기 사이즈 필드의 제2상태가 제2 액세스 사이즈(예를 들면, 32비트)를 가리킨다. 그렇지만, 2개보다 많은 상이한 액세스 사이즈는, 원하는 경우, 비트필드 조작 명령어 인코딩의 보다 많은 비트를 상기 레지스터 액세스 사이즈 필드sf에 할당함으로써 제공될 수 있었다.
● opc: 상기 비트필드 조작의 타입을 상기 처리회로(4)에 의해 행해지게 제어하는 제어값을 가리키는 서브(sub)오피코드 필드.
● control13:
○ 제1 소스 데이터 값src1, 제2 소스 데이터 값src2, 및 상기 비트필드 조 작 명령어의 처리동안에 생성되는 결과 데이터 값의, 데이터 요소의 데이 터 요소 사이즈N; 및
○ 상기 비트필드 조작 연산의 국면들을 상기 처리회로(4)에 의해 행해지게 제어하는 그 밖의 다수의 제어 파라미터를, 식별하는 제어 필드.
이하, 상기 control13 필드의 인코딩의 일례를, 도 5를 참조하여 설명하겠다.
또한, 데이터 요소의 수는, 상기 sf와 control13 필드로부터 얻어질 수 있다. 데이터 요소의 수는 상기 제1 및 제2 소스 데이터 값src1, src2 각각의 내부에 있고, 상기 결과 데이터 값은 M/N이고, 여기서 M은 상기 선택된 레지스터 액세스 사이즈이고, N은 데이터 요소 사이즈다.
상기 sf, opc 및 control13 필드는, 총괄적으로 상기 비트필드 조작 연산의 국면을 제어하기 위한 제어값을 형성하는 것이라 하기도 한다.
도 2의 인코딩 예에 의해 밝혀진 것은 상기 비트필드 조작 명령어를 실행하기 전에 상기 목적지 레지스터에 기억된 값으로서 상기 제2 소스 데이터 값src2가 식별된다는 것이지만, 그 밖의 실시예에서, 별개의 레지스터 필드는, 상기 제2 소스 데이터 값src2를 기억하는 상기 목적지 레지스터이외의 레지스터를 식별하도록 구성되어도 된다는 것을 알 것이다.
도 3은 비트필드 조작 연산의 예시도다. 상기 비트필드 조작 명령어의 실행에 앞서 상기 레지스터Rn에 기억된 M비트의 값인 제1 소스값src1은, N비트를 각각 갖는 M/N 데이터 요소를 갖는다. 마찬가지로, 상기 목적지 레지스터Rd에 기억된 상기 M비트의 제2 소스 값src2도, N비트를 각각 갖는 M/N 데이터 요소를 포함한다.
상기 비트필드 조작 명령어에 응답하여, 상기 처리회로(4)는, 상기 소스값src1,src2의 데이터 요소에 대응한 M/N 결과 데이터 요소를 갖는 결과 데이터 값을 생성한다. 각 결과 데이터 요소는, 상기 제1 소스 데이터 값src1내에 W비트로 이루어진 비트필드(bf)에 대응하는 값들을 갖는 W비트를 포함한다. 상기 제1 소스 데이터 값src1내의 상기 비트필드의 위치와 상기 결과 데이터 값내의 상기 비트필드의 위치는, 상기 비트필드 조작 명령어의 제어값에 의거하여 제어되어도 된다. 각 결과 데이터 요소에 대해서, 상기 삽입된 비트필드보다 하위의 어떠한 비트도 후위값s의 값을 취하고, 상기 비트필드보다 상위의 상기 결과 데이터 요소의 어떠한 비트도 전위값p의 값을 취한다. 상기 결과 데이터 요소는, 목적지 레지스터Rd에 기억된다.
따라서, 상기 비트필드 조작 명령어의 영향은, 상기 제1 소스값src1의 각 데이터 요소내의 주어진 위치로부터 비트필드를 추출하는 것이고, 상기 결과값의 대응한 데이터 요소내에 각 추출된 비트필드를 삽입하는 것이고, 이때의 목적지 레지스터의 그 밖의 비트(만약에 있다면)는 전위값과 후위값을 취한다.
도 4는 상기 비트필드 조작 연산을 정량적으로 규정할 수 있는 방식의 예시도다. 도 4는 대응한 결과 데이터 요소를 생성하기 위해서 단일의 소스 데이터 요소에 적용되는 비트필드 조작 연산의 예시도다. 상기 소스 및 결과 데이터 값이 2개이상의 데이터 요소를 갖는 경우, 각 소스 데이터 요소에 그 연산을 적용하여 대응한 결과 데이터 요소를 생성할 수 있다.
상기 명령어 디코더(6)는, 상기 비트필드 조작 명령어에 응답하여, 상기 결과 데이터 요소의 비트<B+W-1:B>가 상기 제1 소스값src1의 상기 대응한 소스 데이터 요소의 비트<A+W-1:A>를 포함하는 비트필드bf의 값을 취한다. 파라미터A는 상기 제1 소스 데이터 값src1로부터 추출되는 상기 비트필드의 시작 비트 위치를 가리키고, 파라미터B는 상기 비트필드가 상기 결과 데이터 요소내에 놓이는 시작 비트 위치를 가리킨다. W는 상기 비트필드bf가 포함한 비트의 수를 가리킨다. A, B 및 W는, 1≤W≤N, 0≤A≤N-W 및 0≤B≤N-W의 범위내에서 임의의 정수값을 갖고, 여기서, N은 상기 데이터 요소가 포함한 비트의 수다.
도 4는 상기 비트필드 위치 값A와 B가 상기 소스 데이터 요소와 결과 데이터 요소내에 각각 어떠한 비트 위치의 값도 각각 취할 수 있는 비트필드 조작의 일반적인 형태를 도시한 것이다. 상기 비트필드 조작 명령어의 제어값내에 A, B 및 W를 직접 인코딩하는 것이 가능하다.
그러나, 특별한 실시예에서는, 도 5와 도 6에 도시된 것처럼, 상기 control13 필드의 제어 인코딩을 사용하여 A, B 및 W를 간접적으로 식별한다.
도 5는 상기 비트필드 조작 명령어의 상기 control13 필드의 인코딩 예시도다. 상기 control13 필드는, 각각 가변수의 비트를 갖는 제1 부분(30)과 제2 부분(32)으로 이루어진 13비트<12:0>를 갖는다. 상기 control13 필드는, 데이터 요소 사이즈N, 회전 파라미터R, 최상위 비트 위치S 및 반전정보V를 식별한다. 상기 회전 파라미터R과 최상위 비트 위치S는, 도 6을 참조하여 후술하는 것처럼, 상기 소스 데이터 요소src1로부터 추출되는 상기 비트필드의 위치 및 사이즈와, 상기 결과 데이터 요소내에 상기 비트필드를 삽입하는 위치를 결정한다. 상기 반전정보V는, 도 7을 참조하여 후술하는 것처럼, 상기 결과 데이터 요소내에 데이터 요소가 배치되는 순서를 규정한다.
상기 control13 필드의 제1 부분(30)은 가변수의 비트를 포함한다. 이 예에서, 상기 제1 부분(30)은, 제로뿐만아니라 상기 control13 필드의 비트<12>도 포함하고, 상기 control13 필드의 비트<5:0> 중 하나이상의 비트 포함한다. 상기 제1 부분(30)이 포함한 비트의 수를 검출함으로써, 상기 데이터 요소 사이즈N이 식별될 수 있다.
상기 control13 필드의 제2 부분(32)은 회전 파라미터R, 최상위 비트 위치S 및 반전정보V를 나타내는 가변수의 비트를 갖는다. 상기 control13 필드의 어느 비트는, 어느 파라미터가 소정의 명령어에 사용된 특별한 데이터 요소 사이즈N에 좌우되는지를 나타낸다. 상기 명령어 디코더(6) 또는 상기 처리회로(4)는, 상기 제2 부분(32)의 어느 비트가 상기 제1 부분(30)에서 식별된 비트의 수에 의거하여 R, S 및 V 각각을 나타내는지를 식별한다.
예를 들면, 상기 control13 필드의 비트<12>와 <5>의 값이 0인 경우, 이것은 상기 데이터 요소 사이즈N이 32비트인 것을 가리킨다. 따라서, 상기 명령어 디코더(6) 또는 상기 처리회로(4)는, 또한 상기 회전 파라미터R이 상기 control13 필드의 비트<10:6>의 값을 갖고, 이 사이즈 파라미터가 상기 control13 필드의 비트<4:0>의 값을 갖고, 상기 반전 정보V의 이진값이 0bv00000인 것을 결정할 수 있고, 여기서의 v는 상기 control13 필드의 비트<11>의 값이다. 마찬가지로, 그 밖의 데이터 요소 사이즈에 대해서, 상기 파라미터 N, R, S 및 V는 도 5에 도시된 방식으로 상기 control13 필드로부터 결정될 수 있다.
상기 control13 필드는 상기 R 및 V 파라미터를 나타내는 서브부분(비트<11:6>)을 포함한다. 상기 데이터 요소 사이즈N이 클수록, 상기 회전 파라미터R에 필요한 비트의 수가 커지고, 반전 정보V에 필요한 비트의 수가 적어진다. 따라서, 상기 control13 필드의 비트<11:6>는, 도 5에 도시된 방식으로 이들 파라미터간에 공유된다. 이와 다른 데이터 요소 사이즈N에 대해서는, 상기 회전 파라미터R 또는 상기 반전 정보V를 가리키도록 상기 서브부분의 비트들을 할당한다. 마찬가지로, 상기 제1 부분(30)과, 최상위비트 위치S를 가리키는 제2 부분(32)의 일부는, 이들 값마다 사용된 비트의 수가 상기 데이터 요소 사이즈N이 증가 또는 감소함에 따라 역방향으로 달라지므로 고정수의 비트를 공유할 수 있다. 어떠한 소정의 데이터 요소 사이즈에 대해서는, 하나의 파라미터에 필요하지 않은 비트들을 사용하여 또 다른 파라미터를 가리키므로, 상기 데이터 요소 사이즈의 일부의 값에 대한 어떠한 파라미터도 가리키지 않는 비트는 남아있지 않아서, 상기 control13 필드의 인코딩은 N, R, S 및 V의 파라미터를 효율적으로 나타낸다.
이하, 상기 control13 필드의 해석을 도 10을 참조하여 보다 상세히 설명하겠다.
도 6은 비트필드 위치 파라미터R과 최상위 비트 위치S에 따라 행해진 비트필드 조작 연산의 예시도다. 상기 소스 비트필드 시작 위치A, 결과 비트필드 시작 위치B 및 비트필드 폭W 모두는, 파라미터S와 R로부터 얻어질 수 있다.
상기 비트필드 조작 연산은 파라미터S와 R간의 관계에 따라 2가지의 또 다른 형태를 갖는다. 상기 비트필드 추출형태BFX의 명령어에 응답하여, 상기 처리회로(4)는, 상기 제1 소스 데이터 요소src1내의 선택된 위치에 위치된 비트필드bf를 추출하여 상기 대응한 결과 데이터 요소의 최하위 부분에 기록하도록 제어된다. 상기 비트필드 삽입형태BFI의 명령어에 응답하여, 상기 처리회로(4)는 상기 제1 소스 데이터 요소src1의 최하위 부분에 위치된 비트필드를 복사하여 상기 대응한 결과 데이터 요소내의 선택된 위치에 삽입하도록 제어된다.
도 6의 상부에 도시된 것처럼, S≥R인 경우, 상기 비트필드 조작 명령어는 비트필드 추출형태BFX를 갖는다. 상기 비트필드 추출형태의 명령어의 경우, 상기 회전 파라미터R은 상기 제1 소스 데이터 요소src1내의 비트필드bf의 최하위 비트의 위치를 가리키고, 최상위 비트 위치S는 제1 소스 데이터 요소src내의 비트필드bf의 최상위 비트의 위치를 가리킨다. 따라서, 상기 소스 비트필드 시작 위치A는 회전 파라미터R이고, 상기 결과 비트필드 시작 위치B는 제로이며, 상기 비트필드 폭W=S+1-R이다. 이것이 의미하는 것은, 상기 비트필드 추출형태BFX의 명령어에 응답하여, 상기 결과 데이터 요소의 비트<S-R:0>는 상기 대응한 제1 소스 데이터 요소src1의 비트<S:R>와 같게 설정된다.
한편, S<R인 경우, 상기 비트필드 조작 명령어는, 도 6의 하부에 도시된 것처럼, 비트필드 삽입형태BFI를 취한다. 이 경우에, 상기 소스 비트필드 시작 위치A는 제로이고, 상기 결과 비트필드 시작 위치B=N-R이며, 비트필드 폭W=S+1이다. 따라서, 상기 비트필드 삽입형태의 명령어에 있어서, 상기 결과 데이터 요소의 비트<N-R+S:N-R>은 제1 소스 데이터 요소src1의 비트<S:0>와 같게 설정된다.
상기 소스 비트필드 시작 위치A와 상기 결과 비트필드 시작 위치B 중 적어도 하나를 제로와 같게 제한함으로써, 도 5의 인코딩은, 2개의 파라미터R,S만이 수행되는 비트필드 조작을 식별하기 위한 3개의 파라미터A, B, W를 인코딩할 수 있으므로 효율적으로 된다. (도 4에 도시된 예와 같이) 논제로 소스 시작 비트 위치A로부터 논제로 결과 비트 위치B로 비트필드를 기록하는 보다 일반적인 비트필드 조작 연산을 원하는 경우, 이는, 비트필드 추출형태BFX의 명령어 후에 상기 비트필드 삽입형태BFI의 명령어를 실행하여서 실현될 수 있다.
도 6은 상기 비트필드 추출형태BFX의 비트필드 조작 명령어에 있어서, 상기 비트필드bf가 상기 결과 데이터 요소의 최하위 부분에 기록되어서, 그 결과 데이터 요소는 전위부를 갖지만 후위부는 갖지 않는 것을 도시한 것이다. 또한, 일부의 R값과 S값에 대해서는 전위부가 없어도 된다. 이와 대조하여, 상기 비트필드 삽입형태BFI의 명령어에 대해서는, 결과 데이터 요소의 임의의 부분에 상기 비트필드를 삽입하여도 되어서, 그 결과 데이터 값은 전위부와 후위부 양쪽을 가져도 된다(R과 S의 값은, 그 결과 P이터 요소가 전위부와 후위부의 어느쪽도 아니거나, 한쪽 또는 양쪽을 포함하는지를 제어할 것이다). 일반적으로, 상기 결과 데이터 요소는, B+W<N인 경우 전위부(비트<N-1:B+W>)를 포함하고, B>0인 경우 후위부(비트<B-1:0>)를 포함할 것이다. 상기와 같이, 상기 비트필드 조작 명령어는, 서브오피코드 필드opc를 포함한다. opc필드는, 상기 처리회로(4)를 제어하여 전위값 또는 후위값의 선택된 형태를 생성한다. 도 7은 상이한 상기 opc필드의 값에 대해 선택될 수도 있는 상이한 종류의 전위값과 후위값을 도시한 것이다.
상기 서브오피코드 필드opc의 값이 0b00일 때, 상기 전위부p는 비트필드bf의 부호 확장이고, 후위부s의 비트들의 값은 제로이다. 상기 부호확장비트는, 상기 결과 데이터 요소내에 삽입될 때 비트필드bf의 부호가 확실하게 보존되는 값을 갖는다. 일반적으로, 상기 전위부의 부호확장비트는, 각각 비트필드bf의 최상위 비트의 값과 같다(즉, 각각은 제1 소스 데이터 요소의 비트<S>와 같다). 그렇지만, 전위부p내의 부호확장비트의 정확한 특징은, 비트필드bf에 사용된 특별한 부호 표시에 좌우될 것이다. 서브오피코드 필드를 0b00으로 설정함으로써, 비트필드 조작 명령어를 사용하여, 부호 달린 데이터 값을 포함한 비트필드를 상기 제1 소스 데이터 요소로부터 추출하여, 이 값을 상기 비트필드의 부호를 보존하면서 상기 결과 데이터 요소의 일부에 복사할 수 있다.
서브오피코드 필드의 값이 0b01일 때, 상기 결과 데이터 요소의 전위부와 후위부는 제2 소스 데이터 요소src2의 대응한 비트들의 값을 취한다. 따라서, 이러한 형태의 명령어는, 상기 제1 소스 데이터 요소src1로부터, 제2 소스 데이터 요소src2의 그 밖의 비트를 그대로 유지하면서 상기 제2 소스 데이터 요소src2내의 위치에 비트필드bf를 삽입하는데 영향을 미친다. 도 2에 도시된 예에서, 상기 제2 소스 데이터 요소src2는, 비트필드 조작 명령어의 실행에 앞서 목적지 레지스터Rd에 기억된 값이어서, opc=01일 경우, 상기 명령어는 그 밖의 비트를 그대로 유지하면서 상기 제1 소스 데이터 요소src1의 비트필드를 목적지 레지스터Rd의 소정의 위치에 효과적으로 삽입한다.
서브오피코드 필드의 값이 0b10일 때, 상기 전위부와 후위부의 비트 각각의 값은 제로이다. 따라서, 이러한 종류의 명령어에 대해서, 상기 제1 소스 데이터 요소src1의 비트필드는 결과 데이터 요소에 제로들로 분리되어 둘러싸인다.
도 7의 예에서, 서브오피코드 필드opc에 대한 Ob11의 값이 미정의되지만, 그 밖의 기능성은 그 Ob11의 값과 관련될 수 있다는 것을 알 것이다.
상술한 것처럼, 상기 control13 필드는, 상기 결과 데이터 값내의 데이터 요소의 배치를 제어하는 반전 정보V를 가리킨다. 도 8a는 반전 정보V에 따라 재배치 데이터 요소의 일례를 개략적으로 도시한 것이다. 상기 결과 데이터 값은, 상술한 것과 같은 비트필드 조작을 사용하여 생성되고 상기 제1 및 제2 소스 데이터 값내의 대응한 데이터 요소의 순서에 대응한 순서로 상기 데이터 요소를 포함하는 중간 결과 데이터 값이 상기 반전 정보V에 따라 제어된 일련의 재배치 반복이 이루어졌을 경우 생성될 값과 같다. 각 재배치 반복은, 비트들로 이루어진 그룹이 데이터 값내에 재배치되는 입도를 가리키는 특별한 그룹 사이즈와 관련되어 있고, 또 상기 반전 정보V의 대응한 비트와도 관련되어 있다. 각 재배치 반복은, 상기 반전 정보V의 상기 대응한 비트가 소정의 값을 갖는지를 결정하여, 그 대응한 비트가 상기 소정의 값을 갖는 경우, 상기 결과 데이터 값내에서 상기 대응한 그룹 사이즈의 비트들로 이루어진 그룹의 인접 쌍의 위치를 교환하는 것을 포함한다. 이하 설명된 예들에서는, "1" 값을 상기 반전 정보V의 소정값으로서 사용하지만, 그렇게 하지 않고 "0" 값을 사용할 수 있었다.
도 8a는 결과 데이터 값을 생성하기 위해서 중간 결과에 적용되는 일련의 재배치 반복의 예시도다. 재배치 반복 0에 있어서, 상기 중간결과의 인접 비트의 쌍의 위치는, 반전 정보V<5:0>의 비트V<0>의 값이 1일 경우 교환된다. 즉, 그 중간 결과의 비트<0>이 비트<1>로 교환되고, 마찬가지로 비트<3>과 <2>도 교환되고, 비트<5>와 <4>등도 교환된다. 한편, 비트 V<0>의 값이 0일 경우, 그 교환은 행해지지 않는다.
마찬가지로, 도 8a에 도시된 재배치 반복 1에 대해서는, 이전의 반복의 결과내에서 2비트로 이루어진 인접 그룹의 위치는 상기 반전 정보V의 대응한 비트 V<1>의 값이 1일 경우 교환된다. 따라서, 비트<1:0>은 비트<3:2>로 교환되고, 비트<7:6>은 비트<5:4>등으로 교환된다. 그렇지 않은 경우, V<1>=0일 경우, 상기 이전의 반복의 결과의 비트들은 그대로 유지된다.
마찬가지로, 연속적인 재배치 반복마다, 비트들로 이루어진 그룹의 인접 쌍은, 상기 반전 정보V의 대응한 비트의 값이 1일 경우 위치가 교환되고, 이때 재배치 반복마다 그룹 사이즈는 2의 거듭제곱으로 상승한다. 도 8a에 도시된 연산은, 예를 들면, i번째 재배치 반복은, 상기 반전 정보의 대응한 비트 V<i>의 값이 1일 경우 2i 비트로 이루어진 인접 그룹의 쌍의 위치를 교환하고, 그 대응한 비트V<i>의 값이 0일 경우 2i비트로 이루어진 그룹의 쌍의 위치를 교환하지 않는, 일련의 재배치 반복으로서 요약될 수 있다. i번째 재배치 반복이 비트들로 이루어진 그룹의 위치를 교환해야 하는지를 나타내기 위해 상기 반전 정보V의 비트<i>를 사용하는 것이 간편하지만, 상기 반전 정보V의 비트들과 상기 재배치 반복간의 상이한 대응관계도 사용할 수 있다. 재배치 반복의 총수는, 데이터 요소가 얼마나 많이 존재하는지에 좌우된다. 예를 들면 도 8a에 도시된 반복 5는, 단일 그룹의 32비트만 있어서 한 쌍의 32비트의 그룹을 교환할 수 없기 때문에 32비트의 데이터 값일 경우에 행해지지 않을 것이다.
도 8a는 비트의 수가 1,2,4 등인 비트들의 그룹의 위치를 교환할 수 있는 경우의 예시도다. 일부의 예에서는, 상기 데이터 요소 사이즈의 배수에 해당하는 비트들로 이루어진 그룹만을 위치 교환할 수 있도록, 상기 비트필드 조작 명령어를 인코딩하여도 된다. 이러한 예는 도 8b에 도시되어 있다.
도 8b는 64비트 데이터 값이 8개의 8비트 데이터 요소 A-H를 포함하는 경우의 예시도다. 도 5에 도시된 예에서는, 상기 데이터 요소 사이즈N보다 작은 비트들로 이루어진 그룹을 교환하기 위해 재배치 반복에 해당하는 상기 반전 정보V<5:0>의 임의의 비트에 제로값을 놓도록, 상기 control13 필드를 인코딩한다. 따라서, 상기 control13 필드는, 상기 데이터 요소 사이즈N이상인 비트들로 이루어진 그룹의 교환(swapping)을 가리키는 상기 반전 정보V의 비트들의 값만을 가리킨다. 예를 들면, 도 8b에 도시된 것과 같은 8비트의 데이터 요소 사이즈에 대해서는, 상기 반전 정보의 비트V<2:0>을, 도 8a에 도시된 것과 같은 1, 2 및 4비트들로 이루어진 그룹을 교환하기 위한 재배치 반복 0, 1 및 2가 행해지지 않아야 되는 것을 가리키기 위해서 0으로 설정한다. 상기 반전 정보V의 비트<5:3>는, 상기 control13 필드내에, 재배치 반복 3, 4 및 5가 8, 16 및 32비트들로 이루어진 인접한 그룹의 위치를 교환하게 행해져야 하는지의 여부를 가리키도록 인코딩된다.
도 8b는 상기 제1 및 제2 소스 데이터 값src1, src2가, 초기에 특정한 기억순서가 문자 A 내지 H로 나타낸 것과 같은 데이터 요소 A-H로 이루어진 모양을 도시한 것이다. 데이터 요소 재배치를 행하지 않은 경우, 비트필드 조작 명령어를 상기 소스 데이터 값에 적용하는 것은, 상기 결과 데이터 요소를 상기 소스 데이터 값내의 데이터 요소의 순서에 해당한 A, B, C, ...,H의 순서로 배치한 결과 데이터 값을 산출한다(도 8b에 도시된 중간결과를 참조).
그러나, 상기 반전 정보V의 제어하에, 상기 명령어 디코더(6)는, 상기 처리회로(4)를 제어하여, 최종의 결과 데이터 값을 생성할 때 데이터 요소 재배치를 적용할 수 있다. 상기 반전 정보V의 비트<2:0>의 값이 0일 때, 수행된 제1 재배치 반복은 비트 V<3>과 관련되어 있다. 도 8b에 의해 밝혀진 것은, 비트 V<3>의 값이 1일 경우, 8비트로 이루어진 인접 그룹(즉, 인접 데이터 요소)이 위치 교환되는 것과는 달리, 상기 중간값은 변화되지 않는다는 것이다. 그래서, 또 다른 재배치 반복은, 16비트로 이루어진 인접 그룹(즉, 2개의 데이터 요소의 인접 그룹)의 위치를, 비트 V<4>의 값이 1일 경우 교환한다. 그리고 나서, 추가의 재배치 반복은, 32비트로 이루어진 인접 그룹(즉, 4개의 데이터 요소의 인접 그룹)을, 비트 V<5>의 값이 1일 경우 교환한다. 상기 반전 정보 V의 비트에 따라 비트들로 이루어진 사이즈가 다른 그룹을 선택적으로 교환 또는 비교환함으로써, 상이한 순서의 데이터 요소는 상기 결과 데이터 값내에 구성될 수 있다. 예를 들면, 도 8b의 하부의 표에는, 재배치 정보 V<5:3>의 상이한 값에 대한 도 8b의 재배치 반복으로 생기는 상이한 데이터 요소 배치를 도시한 것이다. 따라서, 비트들로 이루어진 사이즈가 다른 그룹의 인접 쌍의 위치를 각각 교환하는, 연속적인 재배치 반복을 적용함으로써, 광범위한 데이터 요소 배치가 상기 결과 값내에서 산출될 수 있다는 것을 알 수 있다.
이때, 상기 데이터 처리회로(4)가 실제로 상기 비트필드 조작 연산을 사용하여 상기 중간결과를 생성한 후, 상기 일련의 재배치 반복을 상기 중간결과에 적용하여 그 결과 데이터 값을 생성하는 것이 불필요하다. 데이터 처리회로(4)는, 데이터 요소를 재배치하는 것과 동시에 상기 비트필드 조작을 적용하도록 구성됨으로써, 상기 소스 데이터 요소의 비트필드가 각 결과 데이터 요소내에 포함되고, 결과 데이터 요소가 어떠한 중간결과도 산출하지 않고서 상기 반전 정보V에 대응한 순서로 배치되는 결과 데이터 값을 생성한다. 상기 결과 데이터 값은, 상기 중간결과에 재배치 반복을 적용한 경우 얻어질 상기 결과와 같은 값일뿐이다.
도 9는 도 2의 예시와 같이 인코딩된 비트필드 조작 명령어를 처리하는 예시도다. 이때, 도 9는 일련의 방법 단계를 도시한 흐름도를 나타내었지만, 실제로, 상기 명령어를 구현하기 위한 하드웨어는, 서로 병렬로 몇몇의 단계를 수행하거나, 유사한 결과를 산출하는 그 밖의 단계를 수행하여도 된다(본 출원에 도시된 그 밖의 흐름도에 대해서도 마찬가지다).
단계50에서, 상기 명령어 디코더(6)는 상기 서브오피코드 필드opc의 값을 검사한다. 상기 서브오피코드 필드opc의 값이 0b00일 경우, 상기 방법이 단계52로 진행되어 상기 결과 데이터 값을 제로값으로 초기화한다. 그리고나서, 부울양(Boolean quantity) 확장은, 단계54에서 TRUE값(비트필드 조작을 적용할 때, 상기 전위값이 상기 추출된 비트필드의 부호 확장으로 설정되는 것을 가리킴)으로 설정된다.
한편, 단계50에서 상기 서브오피코드 필드opc의 값이 Ob01이라고 판정되는 경우, 단계56에서는 상기 결과 데이터 값을 상기 제2 소스 데이터 값src2의 값으로 초기화한다(이렇게 하여 각 결과 데이터 요소는, 비트값이 상기 제2 소스 데이터 값src2의 대응한 데이터 요소에 대응하는 전위부 및/또는 후위부를 갖는다). 그리고, 단계58에서는, 상기 전위부를 생성할 때 부호 확장이 행해지지 않는 것을 가리키는 FALSE값으로 상기 부울양 확장을 설정한다.
이와는 달리, 단계50에서 상기 서브오피코드 필드opc의 값이 Ob10이라고 판정되는 경우, 단계60에서는 그 결과 값을 제로값으로 설정하고, 단계62에서는 상기 부울값 확장을 FALSE값으로 설정한다. 따라서, 각 결과 데이터 요소가 생성될 때, 상기 삽입된 비트필드이외의 어떠한 비트도 제로값을 갖고 비트필드의 부호 확장을 행하지 않을 것이다.
단계50에서 상기 서브오피코드 필드opc의 값에 상관없이, 상기 방법이 단계64로 진행되어, 상기 비트필드 조작 명령어의 제어필드 control13을 디코딩하여 상기 회전 파라미터R, 최상위 비트 위치S, 반전 정보V 및 데이터 요소 사이즈N을 식별하도록, 함수 TRIDECODE(control13)를 행한다. 이하, 상기 TRIDECODE 함수를 도 10에 대해서 설명하겠다.
단계64에서 R, S, V 및 N의 값을 식별한 경우, 단계66에서는, 상기 최상위 비트 위치S가 회전 파라미터R이상인지를 판정한다. S가 R이상인 경우, 단계68에서는, 소스 비트필드 위치값A를 R과 같게 설정하고, 결과 비트필드 위치값B를 0과 같게 설정하며, 비트필드 폭W를 S+1-R과 같게 설정한다(즉, 비트필드 조작은 비트필드 추출형태BFX를 갖는다). 한편, 단계66에서 S가 R미만이라고 판정되는 경우, 상기 명령어는 비트필드 삽입형태BFI를 가져서, 단계70에서는 소스 비트필드 위치값A를 0으로 설정하고, 상기 결과 비트필드 위치값B를 N-R로 설정하며, 비트필드 폭W를 S+1로 설정한다.
단계72에서, 상기 명령어가 비트필드 삽입형태BFI 또는 비트필드 추출형태BFX를 갖는지에 상관없이, 상기 처리회로(4)는 각 데이터 요소가 상기 대응한 제1 소스 데이터 요소src1의 비트<A+W-1:A>와 같은 비트<B+W-1:B>를 갖는 결과 데이터 값을 생성한다. 이 단계에 의해 확실한 것은, 상기 제1 소스 데이터 요소의 목표 비트필드가 상기 결과 데이터 요소내의 원하는 위치에 복사된다는 것이다. 상기 결과 데이터 요소의 나머지 비트의 값들은 계속하여 단계52, 56 및 60 중 한 단계에서 초기화된 것과 같다.
그 후, 단계74에서 상기 부울량 확장이 TRUE이고 B+W<N인지의 여부를 판정한다. 확장이 TRUE이고 B+W<N인 경우, 이것은, 상기 결과 데이터 요소내의 전위부<N-1:B+W>가 있고 상기 서브오피코드 필드opc가 상기 비트필드에 부호 확장을 적용한 것을 가리킨 것을 나타낸다. 이 경우에, 단계76에서, 상기 처리회로(4)는 각 결과 데이터 요소의 비트<N-1:B+W>를, 상기 소스 데이터 요소src1로부터 복사된 비트필드내의 부호 비트의 값으로 설정한다(즉, 제1 소스 데이터 요소의 비트<S>는 결과 데이터 요소내의 전위부의 각 비트에 복제된다). 이것은, 상기 제1 소스 데이터 요소src1로부터 추출된 비트필드의 부호를 보존하는데 영향을 미친다. 한편, 단계74에서 상기 부울량 확장이 FALSE인 경우에는, 단계76을 생략하고서, 그 결과 데이터 요소의 전위부는 그것의 이전값(단계60에서 설정된 것과 같은 제로값이나, 단계56에서 설정된 것과 같은 제2 소스 데이터 요소src2의 이전값)을 유지한다. B+W=N일 경우, 전위부가 없는 경우와 같이 단계76을 또 생략한다.
단계78에서는, 예를 들면 도 8a와 도 8b를 참조하여 설명한 것처럼, 비트필드 조작 명령어의 상기 control13 필드로부터 식별된 상기 반전 정보V에 근거하여 상기 결과 데이터 값내의 결과 데이터 요소의 재배치를 적용한다. 이때, 일부의 하드웨어 구현에 있어서, 이 단계는 단계72에서의 결과 데이터 요소의 생성과 병렬로 행해져도 된다.
따라서, 상기 비트필드 조작 명령어의 제어하에, 각 결과 데이터 요소가 상기 대응한 제1 소스 데이터 요소src1내의 원하는 위치<A+W-1:A>로부터 취득된 비트필드를 구비하고; 상기 결과 데이터 요소내의 비트필드에 인접하는 전위부와 후위부가 제로값으로 설정되며; 선택적으로, 상기 결과내에 결과 데이터 요소를 재배치하는 것도 행하는, 결과 데이터 값을 생성한다. 따라서, 상기 비트필드 조작 명령어는, 일반적인 인코딩내에서는 보다 광범위하게 비트 필드를 조작한다.
게다가, 상기 비트필드 조작 명령어는, 상기 비트필드가 제1 소스 데이터 요소src1 전체에 해당하도록 상기 파라미터S와 R을 적절한 값으로 설정함으로써, 데이터 요소 재배치 명령어로서도 사용될 수 있다. 이 경우에, 상기 결과 데이터 요소는, 상기 대응한 제1 소스 데이터 요소와 같지만, 상기 반전 정보V에 따라 상기 결과 데이터 값내에 재배치된다.
도 10은, 도 9의 단계64에 도시된 것처럼(그리고, 후술하듯이, 도 15의 단계160에서) TRIDECODE함수를 사용한 상기 control13 필드의 디코딩 예시도다. 상기 control13 필드는, 상기 명령어 디코더(6), 상기 처리회로(4), 또는, 상기 명령어 디코더(6)와 상기 처리회로(4)의 조합에 의해 디코딩되어도 된다. 후술하듯이, 상기 control13 필드는, 상이한 종류의 명령어에 사용되어도 된다. 도 10을 참조하여 언급된 "데이터 사이즈"는, 도 2-도9를 참조하여 설명한 비트필드 조작 명령어의 데이터 요소 사이즈N에 해당하고, 도 11-도 15를 참조하여 설명한 비트단위의 논리 명령어의 패턴 반복 사이즈N에 해당한다.
도 10의 단계100에서는, 상기 파라미터V<5:0>를 0b000000의 모두 제로값으로 초기화한다. 이것은 반드시 상기 control13 필드내에 인코딩되지 않은 반전 정보V의 임의의 값을 제로값으로 취하도록 하여서, 반드시 대응한 재배치 반복을 수행하지 않도록 할 것이다.
단계102에서는, 상기 control13 필드의 비트<12>와 상기 control13 필드의 비트<5:0>의 역을 연결시켜서 임시값temp<6:0>을 결정하고, temp<6:0>내에 "1"값을 갖는 최고(최상위)비트의 비트위치로서 길이 파라미터를 결정한다. temp<6:0>의 값은, 제1부분(30)이 존재할 수 있는 상기 control13 필드의 일부의 비트값을 나타낸다. 데이터 사이즈가 64비트이면, "1"값을 갖는 최상위 비트는 temp<6:0>의 비트<6>이어서 len=6이다. 그 밖의 데이터 사이즈에 대해서는, temp<6:0>내의 최고 "1"비트는 상기 control13 필드의 비트<5:0>내의 최고 "0"의 위치에 해당하여서, N=32,16,8,4,2,1 각각에 대해 len=5,4,3,2,1,0이다(도 5 및 도 12 참조). 이에 따라, 길이 파라미터len은 상기 제1부분(30)의 사이즈의 표시임으로써, 데이터 사이즈N과 상기 R, S 및 V 파라미터의 인코딩 포맷을 도 10의 단계104-114에서 결정할 수 있다. 상기 control13 필드의 디코딩시에 임시값temp를 생성할 필요가 없고, 일부의 실시예에서 단일의 연산에 의해, 상기 len파라미터를 상기 control13 필드의 값으로부터 직접 결정하여도 된다.
도 10의 단계104에서는, len비트위치만큼 값0b1을 왼쪽으로 이동시켜서 상기 데이터 사이즈N을 결정한다. 예를 들면, len=2라면, 2만큼 0b1의 값을 왼쪽으로 이동시키는 것에 의해 값0b100, 즉 4비트의 데이터 사이즈N이 된다. 따라서, 상기 데이터 사이즈N은 2len과 같다. 이렇게 하여, 상기 control13 필드의 제1부분(30)의 사이즈는, 도 5 및 도 12에 도시된 것처럼 대응한 데이터 사이즈N에 대해 서로 연관될 수 있다.
도 10의 단계106에서는, 상기 길이 파라미터len이 0인지 아닌지를 판정한다. len=0이면, 단계108에서는, 회전 파라미터R과 최상위 비트 위치S를 0으로 설정한다. 이것은 1비트의 데이터 요소 사이즈에 해당하므로, 각 제1 소스 데이터 요소src1의 단일 비트를 상기 대응한 결과 데이터 요소src2에 복사하는, 가능한 하나의 비트필드 조작만을 적용하여도 되어서, N=1일 경우, 어떠한 회전 파라미터R 및 최상위 비트 위치 파라미터S도 필요하지 않다(이때, 이 경우에 상기 control13 필드의 인코딩은 상기 반전 정보V와 상기 제1부분(30)을 가리키는 대신에 R, S를 가리키는데 다른 방법으로 사용되는 비트들을 사용한다).
단계106에서 상기 길이 파라미터가 제로가 아니면, 단계110에서는, 상기 회전 파라미터R을 상기 control13 필드의 비트<len+5:6>의 값을 갖는 부호 없는 정수로 설정하고, 상기 최상위 비트 위치S를 상기 control13 필드의 비트<len-1:0>의 값을 갖는 부호 없는 정수로 설정한다. 이는, 도 5 및 도 12에 도시된 것처럼 상기 control13 필드의 인코딩에 해당한다.
단계112에서는 상기 길이 파라미터가 6미만인지를 판정한다. 6미만일 경우, 단계114에서는 반전정보V의 비트<5:len>을 상기 control13 필드의 비트<11:len+6>과 같게 설정한다. 상기 반전 정보의 비트<len-1:0>은 도 10의 단계100에서 초기화된 것과 같은 그들의 제로값을 유지한다. 또, 이것은 도 5에 도시된 것과 같은 상기 control13 필드의 인코딩에 해당한다.
한편, 단계112에서 len=6이면, 데이터 사이즈는, 도 5의 예에 대해서 64비트 데이터 값 전체의 사이즈에 해당한 최대 데이터 요소 사이즈인 64비트다. len=6이면, 단일의 데이터 요소를 데이터 값내에 배치하는 한 방식일뿐이기 때문에 데이터 요소를 재배치할 수 없다. 따라서, 도 10의 단계114는 len=6이면 생략되어서, 상기 재배치 정보V가 계속 단계100에서 설정된 것과 같이 0과 같게 된다.
끝으로, 단계116에서, 파라미터 R, S, V 및 N의 상기 결정된 값은 상기 control13 필드를 포함하는 명령어를 처리할 때 상기 처리회로(4)에서 사용하기 위해 복귀된다.
도 5에 도시된 것과 같은 상기 control13 필드의 인코딩은, 비트필드 조작 명령어뿐만 아니라 그 밖의 타입의 명령어에도 사용될 수 있다. 상기 control13 필드의 인코딩은, 데이터 사이즈로 이루어진 그룹의 선택 데이터 사이즈와, 그 선택된 데이터 사이즈에 따라 달라지는 비트의 수를 갖는 적어도 하나의 제어 파라미터를 특정하는, 어떠한 종류의 명령어에도 유용하다. 상기 비트필드 조작 명령어는, SIMD 명령어의 예다. 마찬가지로, 상기 control13 인코딩은, 데이터 요소 사이즈와, 그 데이터 요소 사이즈에 따라 달라지는 비트의 수를 갖는 적어도 하나의 다른 파라미터를 특정하는, 또 다른 명령어에도 사용되어도 된다.
도 11은 상기 control13 인코딩을 사용하는 명령어의 또 다른 예인 비트단위의 논리 명령어LOGIC를 도시한 것이다. 상기 비트단위의 논리 명령어의 상기 control13 필드는, 도 12에 도시된 것처럼 인코딩된다. 도 5와 도 12를 비교하여 밝혀진 것은, 상기 R 및 S 파라미터는, 비트필드 조작 명령어BF에 관해 비트단위의 논리 명령어LOGIC에 대해 마찬가지로 식별되고, 패턴 반복 사이즈N은 상기 데이터 요소 사이즈N이 도 5의 비트필드 조작 명령어에 대해 식별된 것과 같은 방식으로 비트단위 논리 명령어에 대해 식별된다는 것이다. 상기 비트단위의 논리 명령어는 상기 반전 정보V와 같지 않아서, 비트필드 조작 명령어BF의 반전 정보V를 나타내는 상기 control13 필드의 상기 반전 정보V를 나타내는 상기 control13 필드의 비트는, 비트단위의 논리 명령어LOGIC에 대해 상기 control13 필드의 인코딩에 미사용된다. 그 밖의 실시예에서, 도 12에서 x로서 도시된 상기 미사용 비트는 또 다른 파라미터를 나타낼 수 있다는 것을 알 것이다.
도 13 및 도 14는 비트단위의 논리 명령어LOGIC의 기능을 도시한 것이다. 그 명령어는, 제1 소스 데이터 값src1을 기억하는 소스 레지스터Rn을 식별한다. 상기 비트단위의 논리 명령어의 서브오피코드 필드opc는 상기 제1 소스 데이터 값src1과 마스크 데이터 값에 적용되는 논리연산의 타입을 가리킨다. 예를 들면, 그 논리연산은, 도 14에 도시된 것처럼, AND연산, OR연산, 또는 배타적 OR(XOR)연산 중 하나이어도 된다.
상기 명령어 디코더(6)는, 상기 처리회로(4)를 제어하기 위한 제어신호를 생성하여서 상기 제1 소스 데이터 값src1과 상기 마스크 데이터 값(마스크)를 상기 선택된 논리연산에 의해 조합하여서 결과값을 생성함으로써 상기 논리 명령어에 응답한다. 마스크 데이터 값은, 논리 명령어의 상기 control13 필드로부터 식별된 것처럼 상기 선택된 데이터 사이즈N과 상기 파라미터R, S를 사용하여 결정된 값이다.
상기 마스크 데이터 값은 비트들로 이루어진 반복 패턴을 포함한다. 상기 반복 패턴의 반복의 단위는, 상기 control13 파라미터에 의해 식별된 상기 선택된 데이터 사이즈N이다. 각 반복 패턴은, S+1비트가 "1"값을 갖고 그 밖의 비트가 "0"값을 갖는 N비트들로 구성된다. 상기 반복 패턴은, 1값을 각각 갖는 (S+1)비트가 (상위비트가 "0"값을 갖는) 상기 패턴의 최하위 끝에 위치되면 생길 값과 동등하고, 그래서, 그 패턴은 R비트 위치만큼 오른쪽으로 회전되었다. 그 밖의 실시예에서, 상기 회전 파라미터R은 우회전이라기보다는 좌회전의 양을 가리킬 수 있었다는 것을 알 것이다. 상기 반복패턴은, 도 13에 도시된 것처럼 마스크 데이터 값 전체에 걸쳐 M/N번 반복된다(여기서 M은 상기 src1과 마스크 데이터 값이 포함한 비트의 수이다). 따라서, 상기 control13 필드내에 인코딩된 N, R 및 S의 값은, 다양한 상이한 마스크가, 논리연산을 이용한 소스 데이터 값src1과 조합하기 위해 생성되는 것을 가능하게 한다.
마스크값은, 도 14에 도시된 것처럼 비트단위의 AND연산, OR연산, 또는 배타적 OR(XOR)연산 중 하나를 사용하여 소스 데이터 값src1과 조합된다. 상기 논리연산은, 예를 들면, 데이터 값의 특별한 부분의 비트값을 테스트, 설정, 클리어 또는 반전하는데 사용되거나, 데이터 값의 특별한 부분을 분리하는데 사용될 수 있다. 이때, 그 마스크 데이터 값은, 상기 처리회로(4)에서 실제로 생성되지 않는 대신에, 상기 처리회로(4)는 상기 마스크와 상기 소스 데이터 값src1을 상기 논리연산을 사용하여 조합하기 위한 결과와 같은 형태를 갖는 최종의 결과를 간단히 생성하여도 된다.
도 15는 도 11-도 14에 도시된 형태의 비트단위의 논리 명령어를 처리하는 방법을 나타낸다. 단계150에서는, 상기 서브오피코드 필드opc의 값을 판정한다. 상기 서브오피코드 필드의 값이 0b00이면, 단계152에서는 논리연산을 AND연산이라고 판정한다. 상기 서브오피코드 필드opc의 값이 0b01이면, 단계154에서는 논리연산을 OR연산이라고 판정한다. 상기 서브오피코드 필드opc의 값이 0b10이면, 논리연산은 단계156에서 판정된 것과 같은 배타적OR(XOR)연산이다. Ob11의 opc값은 본 예에서는 보류되어 있지만, 또 다른 실시예에서는, 상이한 형태의 논리연산에 할당될 수 있다.
상기 서브오피코드 필드opc의 값에 상관없이, 단계160에서는, 도 10을 참조하여 설명한 것과 같은 TRIDECODE함수를 사용한 상기 control13 필드로부터 상기 파라미터 R, S, V 및 N을 결정한다. 이 경우에 N은, 상기 소스 데이터 값에 적용되는 마스크 내에 상기 반복 패턴의 사이즈를 나타낸다. S+1은 상기 마스크 값내의 "1"비트의 수를 가리킨다. R은 마스크 값내의 "1"비트의 위치를 가리킨다. 논리 명령어에 대해서, 상기 비트필드 조작 명령어에 사용된 반전 정보V는 중요한 것은 아니어서, TRIDECODE함수에 의해 복귀된 V의 값은 상기 논리연산의 결과를 산출할 때 무시된다.
단계162에서는, 비트의 반복 패턴을 결정한다. 상기 반복 패턴은, "0"의 값을 갖는 비트<N-1:S+1>와 "1"의 값을 갖는 비트<S:0>를 구비한, 비트<N-1:0>로서 초기화된다. 단계164에서는, 비트의 반복 패턴을, R비트 위치만큼 회전한다(필요한 경우 오른쪽 또는 왼쪽으로 회전하지만, 도 13의 실시예에서는 오른쪽으로 회전한다).
단계166에서, 마스크 데이터 값은, 상기 회전된 M/N번의 비트의 반복 패턴을 마스크 전체에 걸쳐 복제함으로써 형성되고, 여기서, M은 이러한 특별한 처리연산에 사용된 데이터 값 사이즈다. 예를 들면, M은 비트단위의 논리 명령어의 sf필드에 의해 식별된 레지스터 액세스 사이즈에 의거하여 결정되어도 된다. 그 후, 단계168에서는, 상기 제1 소스 데이터 값src1과 상기 마스크 데이터 값을 상기 단계152, 154, 156 중 하나의 단계에서 선택된 논리 연산을 사용하여 결합하는 결과로서, 상기 결과 데이터 값을 생성한다.
또한, 도 15의 단계는, 일례일뿐이며, 직렬이라기보다는 병렬로 수행되어도 된다. 또한, 단계166에서 기재된 마스크 값은, 실제로 상기 처리회로(4)에 의해 생성되지 않는 대신에, 상기 처리회로(4)는 비트단위의 논리 명령어의 상기 소스 데이터 값src1과 상기 control13 필드로부터 단계168에서의 상기 결과 데이터 값을 직접 생성하여도 된다.
따라서, 상이한 명령어는, 상기 control13 필드의 동일한 포맷을 사용하여 연관 처리 연산을 제어하기 위한 파라미터를 가리키기도 한다. 공통 인코딩을 사용하여 도 5 및 도 12의 예에 도시된 것과 같은 상이한 종류의 명령어에 대한 파라미터를 가리킴으로써, 이들 명령어를 디코딩 및 처리하기 위한 하드웨어의 일부를 공유할 수 있어, 상기 처리회로(4)와 명령어 디코더(6)의 복잡성이 감소될 수 있다.
이하에는 상기 비트필드 조작 명령어와 상기 비트단위의 논리 명령어에 대응한 연산을 가리키는 의사코드를 예시하고 있다. 의사코드에 나타낸 연산은 예들일뿐, 처리장치(2)의 하드웨어가 이들 단계를 실제로 수행하기 위한 소자를 구비하는 것이 불필요하다. 실제로, 의사코드에 나타낸 일부의 단계는, 일련의 순서적 단계로서라기 보다는 서로 병렬로 행해져도 된다. 그럼에도 불구하고, 상기 의사코드는, 그 의사코드에 나타낸 처리단계들의 결과와 동일한 결과 데이터 값을 생성하기 위한 하드웨어 실시예를 당업자가 생성 가능하기에 충분할 것이다. 상기 의사코드에서, 파라미터 "from", "to", "width" 및 "size"는 상기와 같이 상기 파라미터 A, B, W 및 N에 각각 대응한다. 그 파라미터 "데이터사이즈"는 상기와 같이 상기 소스 및 결과 데이터 값의 사이즈 M을 가리킨다. "R[n]" 및 "R[d]"란, 소스 레지스터Rn, 목적지 레지스터Rd를 각각 나타낸다. 상기 의사코드에서, '110'등의 단일 인용 마크내의 1들과 0들로 이루어진 시퀀스는, 연속적 비트들로 이루어진 스트링을 이진법으로 나타낸다. 함수UInt는, 비트들로 이루어진 스트링을 그들이 나타내는 부호없는 정수값으로 변환하여서, UInt('110')는 6값을 반환한다.
상기 의사코드의 제1부분은, 상기 control13 필드를 디코딩하기 위한 TRIDECODE함수의 일례를 가리킨다. 상기 의사코드는 도 10의 연산에 대응한다. 이때, TRIDECODE함수는, 상기 비트필드 조작 명령어와 상기 비트단위의 논리 명령어 모두의 처리에서 나중에 사용된다.
Figure pct00001
Figure pct00002
상기 의사코드의 다음 부분은, 상기 비트필드 조작 명령어의 디코딩 및 실행에 해당한다:
Figure pct00003
Figure pct00004
Figure pct00005
Figure pct00006
Figure pct00007
상기 의사코드의 다음 부분은, 상기 비트단위의 논리 명령어를 디코딩 및 처리하는 기능을 가리킨다:
Figure pct00008
Figure pct00009
Figure pct00010
Figure pct00011
상기 의사코드의 다음 부분은, 상기 control13 인코딩을 사용하여도 되는 또 다른 종류의 명령어의 일례를 가리킨다. 추출 명령어는 다수의 결과 데이터 요소를 포함한 데이터 값이 되고, 각 결과 데이터 요소는 제1 소스 오퍼랜드(오퍼랜드1)의 대응한 제1 소스 데이터 요소와 제2 소스 오퍼랜드(오퍼랜드2)의 대응한 제2 소스 데이터 요소를 연결시켜서 형성된 값의 선택된 부분에 대응한다. 본 예시에서의 상기 control13 값은 데이터 요소 사이즈와, 상기 연결된 제1 및 제2 소스 데이터 요소의 일부가 상기 결과 데이터 요소에 포함되는지를 나타내는 값 "lsb"을 규정한다. 상기 데이터 요소 사이즈와 "lsb"값은, TRIDECODE함수로부터 복귀된 N과 S의 값에 대응하고, TRIDECODE함수에 의해 복귀된 V와 R의 값은 무시된다.
Figure pct00012
Figure pct00013
도 16은 사용될 수도 있는 가상 머신 구현을 도시한 것이다. 상술한 실시예들은 관련된 하드웨어 지원 기술의 특정한 처리를 연산하기 위한 장치 및 방법의 관점에서 본 발명을 구현하였지만, 하드웨어 디바이스의 소위 가상 머신 구현을 제공하는 것도 가능하다. 이들 가상 머신 구현은 가상 머신 프로그램(240)을 지원하는 호스트 운영체계(220)를 실행하는 호스트 프로세서(220)상에서 실행한다. 일반적으로, 아주 강력한 프로세서를 사용하여 합리적인 속도로 실행하는 가상 머신 구현을 제공하지만, 이러한 접근법은 특정한 상황에서, 이를테면 호환성 또는 재사용 목적을 위해 또 다른 프로세서 고유의 코드를 실행하기를 바라는 경우에 정당화되어도 된다. 가상 머신 프로그램(240)은, 상기 가상 머신 프로그램(240)에 의해 모델링되는 상기 디바이스인 실제의 하드웨어에서 제공하는 애플리케이션 프로그램 인터페이스와 같은 애플리케이션 프로그램(260)에 애플리케이션 프로그램 인터페이스를 제공한다. 이렇게 하여, 상술한 메모리 접근의 제어를 포함한 프로그램 명령어는, 가상 머신 프로그램(240)을 사용한 애플리케이션 프로그램(260)내에서 실행되어 그 가상 머신 하드웨어와의 상호작용을 모델링하여도 된다.
본 발명의 예시적 실시예들을 첨부도면을 참조하여 상세히 설명하긴 하였지만, 본 발명은 상세한 실시예들에 한정되지 않고, 첨부된 청구항에 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자라면 여러 가지 변경 및 변형을 실시할 수 있다는 것을 알 수 있다.

Claims (32)

  1. 데이터 처리장치로서,
    처리 연산을 행하는 처리회로;
    프로그램 명령어에 응답하여 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코더를 구비하고;
    상기 프로그램 명령어는, 적어도, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값, 및 제어값을, 식별하는 비트필드 조작 명령어를 포함하고;
    상기 제어값은 비트필드 폭W, 소스 비트 위치A 및 결과 비트 위치B를 가리키는 정보를 포함하고, 여기서 1≤W≤N, 0≤A≤N-W 및 0≤B≤N-W이고;
    상기 명령어 디코더는, 상기 비트필드 조작 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 적어도 하나의 결과 데이터 요소로 이루어진 결과 데이터 값을 생성하되, 각 결과 데이터 요소는 대응한 제1 소스 데이터 요소와 대응한 제2 소스 데이터 요소에 해당하고, 각 결과 데이터 요소는:
    (a) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 비트<B+W-1:B>; 및
    (b) B+W<N이면, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 전위값, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트 값을 갖는 제2 전위값, 및 (iii) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는 제3 전위값 중 하나로서 선택된 전위값에 대응한 비트 값을 갖는 비트<N-1:B+W>로 이루어진, N비트<N-1:0>를 갖는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 제3 전위값은 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1>의 비트 값을 각각 갖는 비트들을 포함하는, 데이터 처리장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    B>0이면, 각 결과 데이터 요소는, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 후위값과, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<B-1:0>의 비트 값을 갖는 제2 후위값 중 하나로서 선택된 후위값에 대응한 비트 값을 갖는 비트<B-1:0>를 더 포함하는, 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 처리회로에 의해 처리하기 위한 데이터 값을 기억하는 복수의 기억장소를 구비하고;
    상기 비트필드 조작 명령어는, 적어도, 상기 제1 소스 데이터 값을 기억하는 제1 소스 기억장소와, 목적지 기억장소를 식별하고;
    상기 명령어 디코더는, 상기 비트필드 조작 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해서 상기 결과 데이터 값을 상기 목적지 기억장소에 기억하는, 데이터 처리장치.
  5. 제 4 항에 있어서,
    상기 제2 소스 데이터 값은, 상기 비트필드 조작 명령어의 실행에 앞서 상기 목적지 기억장소에 기억된 데이터 값인, 데이터 처리장치.
  6. 제 4 항 또는 제 5 항에 있어서,
    상기 복수의 기억장소는 복수의 상이한 기억장소 사이즈의 기억장소로서 액세스 가능하고, 상기 제어값은 상기 제1 소스 기억장소와 상기 목적지 기억장소의 기억장소 사이즈를 식별하기 위한 정보를 포함하는, 데이터 처리장치.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 제1 소스 데이터 요소, 상기 적어도 하나의 제2 소스 데이터 요소 및 상기 적어도 하나의 결과 데이터 요소는 복수의 상이한 데이터 요소 사이즈 중에서 선택된 데이터 요소 사이즈 N을 갖고, 상기 제어값은 상기 데이터 요소 사이즈 N을 식별하기 위한 정보를 포함하는, 데이터 처리장치.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 비트필드 조작 명령어는, 상기 소스 비트 위치 A=0 및 상기 결과 비트 위치 B>0일 경우 비트필드 삽입형태를 갖고, 상기 소스 비트 위치 A≥0 및 상기 결과 비트 위치 B=0일 경우 비트필드 추출형태를 갖는, 데이터 처리장치.
  9. 제 8 항에 있어서,
    상기 제어값은, 상기 비트필드 폭W, 상기 소스 비트 위치A 및 상기 결과 비트 위치B를 결정하기 위해 최상위 비트 위치S와 회전 파라미터R을 특정하고;
    S≥R인 경우, 상기 소스 비트 위치A=R과 상기 결과 비트 위치B=0, 상기 비트필드 폭W=(S+1)-R, 및 상기 비트필드 조작 명령어는 상기 비트필드 추출형태를 갖고;
    S<R인 경우, 상기 소스 비트 위치A=0과 상기 결과 비트 위치B=N-R, 상기 비트필드 폭W=S+1, 및 상기 비트필드 조작 명령어는 상기 비트필드 삽입형태를 갖는, 데이터 처리장치.
  10. 제 9 항에 있어서,
    상기 제어값은 가변수의 비트로 각각 이루어진 제1 부분과 제2 부분을 포함하고;
    상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 비트필드 조작 명령어에 응답하여, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 결정하고, 상기 제1 부분이 포함한 상기 비트의 수에 의거하여:
    (a) 상기 적어도 하나의 제1 소스 데이터 요소, 상기 적어도 하나의 제2 소스 데이터 요소 및 상기 적어도 하나의 결과 데이터 요소의, 데이터 요소 사이즈N; 및
    (b) 상기 제2 부분의 어느 비트가 상기 최상위 비트 위치S와 상기 회전 파라미터R을 가리키는지를, 결정하는, 데이터 처리장치.
  11. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 제1 소스 데이터 값이 복수의 제1 소스 데이터 요소를 포함하는 경우와, 상기 제2 소스 데이터 값이 복수의 제2 소스 데이터 요소를 포함하는 경우와, 상기 결과 데이터 값이 복수의 결과 데이터 요소를 포함하는 경우에, 상기 제어값은 상기 복수의 결과 데이터 요소를 상기 결과 데이터 값내에 배치하는 순서를 가리키기 위한 데이터 요소 배치(ordering) 정보를 포함하는, 데이터 처리장치.
  12. 제 11 항에 있어서,
    상기 제1 소스 데이터 값이 복수의 제1 소스 데이터 요소를 포함하고, 상기 제2 소스 데이터 값이 복수의 제2 소스 데이터 요소를 포함하고, 상기 결과 데이터 값이 복수의 결과 데이터 요소를 포함하는 경우, 상기 결과 데이터 값은,
    (a) 상기 제1 소스 데이터 값에서 상기 대응한 제1 소스 데이터 요소의 순서와, 상기 제2 소스 데이터 값에서 상기 대응한 제2 소스 데이터 요소의 순서에 대응하게 배치된 상기 결과 데이터 요소를 포함한 중간값을 생성하고,
    (b) 상기 중간값내의 상기 결과 데이터 요소에 관해 적어도 하나의 재배치(reordering) 반복을 행하여 상기 제1 데이터 값을 생성함으로써 얻어진, 제1 데이터 값과 동일하고;
    각 재배치 반복은, 상기 데이터 요소 배치 정보의 대응한 비트가 소정의 값을 갖는지를 결정하는 것과, 상기 데이터 요소 배치 정보의 상기 대응한 비트가 상기 소정의 값을 갖는 경우 상기 중간값내의 비트들로 이루어진 그룹의 쌍을 교환하는 것을 포함하는, 데이터 처리장치.
  13. 제 12 항에 있어서,
    상기 중간값내의 상기 비트들로 이루어진 그룹은, 상기 적어도 하나의 제1 소스 데이터 요소, 상기 적어도 하나의 제2 소스 데이터 요소 및 상기 적어도 하나의 결과 데이터 요소의, 데이터 요소 사이즈N의 배수인 비트의 수를 포함하는, 데이터 처리장치.
  14. 제 12 항 또는 제 13 항에 있어서,
    상기 비트들로 이루어진 그룹은, 상기 적어도 하나의 재배치 반복의 상이한 것들에 대한 상이한 수의 비트들을 포함하는, 데이터 처리장치.
  15. 제 11 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 제어값은 각각 가변수의 비트를 포함하는 제1 부분과 제2 부분을 포함하고;
    상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 비트필드 조작 명령어에 응답하여, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 결정하고, 상기 제1 부분이 포함한 상기 비트의 수에 의거하여:
    (a) 상기 적어도 하나의 제1 소스 데이터 요소, 상기 적어도 하나의 제2 소스 데이터 요소 및 상기 적어도 하나의 결과 데이터 요소의, 데이터 요소 사이즈N; 및
    (b) 상기 제2 부분의 어느 비트가 상기 데이터 요소 배치 정보를 가리키는지를, 결정하는, 데이터 처리장치.
  16. 데이터 처리장치로서,
    처리 연산을 행하는 처리수단;
    프로그램 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코딩 수단을 구비하고;
    상기 프로그램 명령어는, 적어도, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값, 및 제어값을, 식별하는 비트필드 조작 명령어를 포함하고;
    상기 제어값은 비트필드 폭W, 소스 비트 위치A 및 결과 비트 위치B를 가리키는 정보를 포함하고, 여기서 1≤W≤N, 0≤A≤N-W 및 0≤B≤N-W이고;
    상기 명령어 디코딩 수단은, 상기 비트필드 조작 명령어에 응답하여, 상기 처리수단을 제어하기 위한 제어신호를 생성해 적어도 하나의 결과 데이터 요소로 이루어진 결과 데이터 값을 생성하되, 각 결과 데이터 요소는 대응한 제1 소스 데이터 요소와 대응한 제2 소스 데이터 요소에 해당하고, 각 결과 데이터 요소는:
    (a) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 비트<B+W-1:B>; 및
    (b) B+W<N이면, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 전위값, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트 값을 갖는 제2 전위값, 및 (iii) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는 제3 전위값 중 하나로서 선택된 전위값에 대응한 비트 값을 갖는 비트<N-1:B+W>로 이루어진, N비트<N-1:0>를 갖는, 데이터 처리장치.
  17. 처리연산을 행하는 처리장치의 데이터 처리 방법으로서,
    적어도, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제1 소스 데이터 요소로 이루어진 제1 소스 데이터 값, 각각 N비트<N-1:0>를 갖는 적어도 하나의 제2 소스 데이터 요소로 이루어진 제2 소스 데이터 값, 및 제어값을 식별하는 비트필드 조작 명령어에 응답하여, 상기 처리장치를 제어하기 위한 제어신호를 생성해, 각각 N비트<N-1:0>를 갖는 대응한 제1 소스 데이터 요소와 대응한 제2 소스 데이터 요소에 각각 해당하는 적어도 하나의 결과 데이터 요소로 이루어진, 결과 데이터 값을 생성하는 단계를 포함하고,
    상기 제어값은 비트필드 폭W, 소스 비트 위치A 및 결과 비트 위치B를 가리키는 정보를 포함하고, 여기서 1≤W≤N, 0≤A≤N-W 및 0≤B≤N-W이고, 각 결과 데이터 요소는:
    (a) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>에 대응한 비트 값을 갖는 비트<B+W-1:B>; 및
    (b) B+W<N이면, 상기 제어값에 따라, (i) 각각 제로값을 갖는 비트들로 이루어진 제1 전위값, (ii) 상기 대응한 제2 소스 데이터 요소의 비트<N-1:B+W>의 비트 값을 갖는 제2 전위값, 및 (iii) 상기 대응한 제1 소스 데이터 요소의 비트<A+W-1:A>의 부호 확장에 대응한 비트 값을 갖는 제3 전위값 중 하나로서 선택된 전위값에 대응한 비트 값을 갖는 비트<N-1:B+W>로 이루어진, 데이터 처리 방법.
  18. 컴퓨터에 의해 실행될 때, 청구항 1 내지 15 중 어느 한 항에 청구된 것과 같은 데이터 처리장치에 따른 명령어 실행 환경을 제공하는 컴퓨터 프로그램에 의해 제공된 가상 머신.
  19. 데이터 처리장치로서,
    처리 연산을 행하는 처리회로;
    프로그램 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코더를 구비하고;
    상기 프로그램 명령어는, 복수의 데이터 사이즈로부터 선택된 선택 데이터 사이즈를 가리키는 제1 부분과, 상기 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 갖는 적어도 하나의 제어 파라미터를 가리키는 제2 부분을 갖는, 제어값을 특정하는 적어도 하나의 명령어를 포함하고, 상기 제1 부분과 상기 제2 부분 각각이 가변수의 비트를 갖고;
    상기 명령어 디코더는 상기 적어도 하나의 명령어에 응답하여, 상기 처리회로를 제어하기 위한 제어신호를 생성해 상기 선택 데이터 사이즈와 상기 적어도 하나의 제어 파라미터에 따라 대응한 처리 연산을 행하고;
    상기 적어도 하나의 명령어를 처리할 때, 상기 명령어 디코더와 상기 처리회로 중 적어도 하나는, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하도록 구성되고, 상기 제1 부분이 포함한 상기 비트의 수에 따라, (a) 상기 선택 데이터 사이즈와, (b) 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분을 구성하는지를 식별하도록 구성된, 데이터 처리장치.
  20. 제 19 항에 있어서,
    상기 제2 부분의 비트의 수가 상기 선택 데이터 사이즈에 따라 감소될 때 상기 제1 부분의 비트의 수는 상기 선택 데이터 사이즈에 따라 증가하는, 데이터 처리장치.
  21. 제 19 항 또는 제 20 항에 있어서,
    적어도 상기 복수의 데이터 사이즈의 서브세트에 대해서, 상기 제1 부분이, 적어도, 제1상태의 제1비트와, 제2상태의 X개의 나머지 비트로 이루어지고, 여기서 X는 0이상의 가변 정수이고;
    상기 명령어 디코더와 상기 처리회로 중 상기 적어도 하나는, 상기 제어값의 소정 부분내의 상기 제1비트의 비트 위치에 따라 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하도록 구성된, 데이터 처리장치.
  22. 제 21 항에 있어서,
    상기 제1 부분은, 상기 선택 데이터 사이즈를 식별하기 위한 또 다른 정보를 제공하는 적어도 하나의 추가의 비트를 포함하는, 데이터 처리장치.
  23. 제 19 항 내지 제 22 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 제어 파라미터는 복수의 제어 파라미터를 포함하고,
    상기 적어도 하나의 명령어를 처리할 때, 상기 명령어 디코더와 상기 처리회로 중 상기 적어도 하나는, 상기 제1 부분이 포함한 비트의 수에 따라, 상기 제2 부분의 어느 비트가 상기 복수의 제어 파라미터의 각각을 가리키는지를 식별하도록 구성되는, 데이터 처리장치.
  24. 제 23 항에 있어서,
    상기 복수의 제어 파라미터는, 적어도, 상기 선택 데이터 사이즈가 증가함에 따라 증가하는 다수의 비트를 갖는 제1 제어 파라미터와, 상기 선택 데이터 사이즈가 증가함에 따라 감소하는 다수의 비트를 갖는 제2 제어 파라미터를 포함하고,
    상기 제2 부분은, 상기 제1 제어 파라미터 및 상기 제2 제어 파라미터를 가리키는 서브(sub)부분을 포함하고, 상기 명령어 디코더와 상기 처리회로 중 상기 적어도 하나는, 상기 제1 부분이 포함한 상기 비트의 수에 따라, 상기 제2 부분의 어느 비트가 상기 제1 제어 파라미터를 가리키는지와 상기 서브부분의 어느 비트가 상기 제2 제어 파라미터를 가리키는지를 식별하는, 데이터 처리장치.
  25. 제 19 항 내지 제 24 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 명령어는, 적어도 하나의 소스 데이터 요소를 갖는 소스 데이터 값을 식별하는 적어도 하나의 단일 명령 다중 데이터(SIMD) 명령어를 포함하고;
    상기 적어도 하나의 SIMD 명령어에 대해서, 상기 선택 데이터 사이즈는 상기 적어도 하나의 소스 데이터 요소의 데이터 요소 사이즈를 가리키고, 상기 대응한 처리 연산은 상기 소스 데이터 값의 상기 적어도 하나의 소스 데이터 요소 각각에 관해 선택된 처리 연산을 수행하는 것을 포함한, 데이터 처리장치.
  26. 제 25 항에 있어서,
    상기 적어도 하나의 SIMD명령어는 비트필드 조작 명령어를 포함하고, 상기 비트필드 조작 명령어에 대해:
    상기 대응한 처리 연산은, 상기 소스 데이터 값의 대응한 소스 데이터 요소에 각각 해당하는 적어도 하나의 결과 데이터 요소를 포함한 결과 데이터 값을 생성하는 것을 포함하며;
    각 결과 데이터 요소는, 상기 대응한 소스 데이터 요소내의 연속적인 비트로 이루어진 소스 비트필드의 비트값에 대응하는 비트값을 갖는 결과 비트필드를 포함하고;
    상기 적어도 하나의 제어 파라미터는, 상기 소스 비트필드와 상기 결과 비트필드가 포함한 비트의 수, 상기 대응한 소스 데이터 요소내의 상기 소스 비트필드의 위치, 및 상기 결과 데이터 요소내의 상기 결과 비트필드의 위치를 가리키는, 데이터 처리장치.
  27. 제 26 항에 있어서,
    상기 비트필드 조작 명령어에 대해, 상기 소스 데이터 값이 복수의 소스 데이터 요소를 포함하고 상기 결과 데이터 값이 복수의 결과 데이터 요소를 포함하는 경우, 상기 적어도 하나의 제어 파라미터는 상기 복수의 결과 데이터 요소가 상기 결과 데이터 값내에 배치되는 순서를 가리키는 데이터 요소 배치 파라미터를 포함하는, 데이터 처리장치.
  28. 제 19 항 내지 제 27 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 명령어는 소스 데이터 값을 식별하는 비트단위의 논리 명령어를 포함하고, 상기 비트단위의 논리 명령어에 대해:
    상기 대응한 처리 연산은, 상기 소스 데이터 값과, 상기 제어값에 의거하여 결정된 제2 데이터 값에 대해 논리연산을 적용한 결과와 같은 결과 데이터 값을 생성하는 것을 포함하고;
    상기 선택 데이터 사이즈는 상기 제2 데이터 값내의 반복패턴의 비트들로 이루어진 다수의 비트를 가리키고;
    상기 적어도 하나의 제어 파라미터는 상기 반복패턴의 비트들의 비트값들을 식별하는 정보를 가리키는, 데이터 처리장치.
  29. 제 28 항에 있어서,
    상기 비트단위의 논리연산은, AND연산, OR연산 및 배타적 OR연산 중 하나를 포함하는, 데이터 처리장치.
  30. 데이터 처리장치로서,
    처리 연산을 행하는 처리수단;
    프로그램 명령어에 응답하여, 상기 처리수단을 제어하기 위한 제어신호를 생성해 상기 처리연산을 행하는 명령어 디코딩 수단을 구비하고;
    상기 프로그램 명령어는, 복수의 데이터 사이즈로부터 선택된 선택 데이터 사이즈를 가리키는 제1 부분과, 상기 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 갖는 적어도 하나의 제어 파라미터를 가리키는 제2 부분을 갖는, 제어값을 특정하는 적어도 하나의 명령어를 포함하고, 상기 제1 부분과 상기 제2 부분 각각이 가변수의 비트를 갖고;
    상기 명령어 디코딩 수단은, 상기 적어도 하나의 명령어에 응답하여, 상기 처리수단을 제어하기 위한 제어신호를 생성해 상기 선택 데이터 사이즈와 상기 적어도 하나의 제어 파라미터에 따라 대응한 처리 연산을 행하고;
    상기 적어도 하나의 명령어를 처리할 때, 상기 명령어 디코딩 수단과 상기 처리수단 중 적어도 하나는, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하도록 구성되고, 상기 제1 부분이 포함한 상기 비트의 수에 따라, (a) 상기 선택 데이터 사이즈와, (b) 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분을 구성하는지를 식별하도록 구성된, 데이터 처리장치.
  31. 프로그램 명령어에 응답하여 처리 연산을 행하는 처리장치의 데이터 처리 방법으로서,
    복수의 데이터 사이즈로부터 선택된 선택 데이터 사이즈를 가리키는 제1 부분과, 상기 선택 데이터 사이즈에 따라 달라지는 다수의 비트를 갖는 적어도 하나의 제어 파라미터를 가리키는 제2 부분을 갖는, 제어값을 특정하는 적어도 하나의 명령어를 수신하되, 상기 제1 부분과 상기 제2 부분 각각이 가변수의 비트를 갖는 단계;
    상기 적어도 하나의 명령어에 응답하여, 상기 제어값의 상기 제1 부분이 포함한 비트의 수를 식별하는 단계;
    상기 제1 부분이 포함한 상기 비트의 수에 따라, (a) 상기 선택 데이터 사이즈와, (b) 상기 제어값의 어느 비트가 상기 적어도 하나의 제어 파라미터를 가리키는 상기 제2 부분을 구성하는지를 식별하는 단계; 및
    상기 처리장치를 제어하여 상기 선택 데이터 사이즈와 상기 적어도 하나의 제어 파라미터에 따라 대응한 처리 연산을 행하는 단계를 포함하는, 데이터 처리 방법.
  32. 컴퓨터에 의해 실행될 때, 청구항 19 내지 29 중 어느 한 항에 청구된 것과 같은 데이터 처리장치에 따른 명령어 실행 환경을 제공하는 컴퓨터 프로그램에 의해 제공된 가상 머신.
KR1020137013056A 2010-11-23 2011-09-29 데이터 처리장치 및 방법 KR101834174B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1019798.6A GB2485774A (en) 2010-11-23 2010-11-23 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
GB1019798.6 2010-11-23
PCT/GB2011/051841 WO2012069798A1 (en) 2010-11-23 2011-09-29 Data processing apparatus having bit field manipulation instruction and method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177027796A Division KR101900236B1 (ko) 2010-11-23 2011-09-29 데이터 처리장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140001910A true KR20140001910A (ko) 2014-01-07
KR101834174B1 KR101834174B1 (ko) 2018-03-05

Family

ID=43467131

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137013056A KR101834174B1 (ko) 2010-11-23 2011-09-29 데이터 처리장치 및 방법
KR1020177027796A KR101900236B1 (ko) 2010-11-23 2011-09-29 데이터 처리장치 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177027796A KR101900236B1 (ko) 2010-11-23 2011-09-29 데이터 처리장치 및 방법

Country Status (10)

Country Link
US (3) US9207937B2 (ko)
EP (2) EP2603851B1 (ko)
JP (2) JP5703385B2 (ko)
KR (2) KR101834174B1 (ko)
CN (2) CN103229139B (ko)
GB (1) GB2485774A (ko)
IL (1) IL225036A (ko)
MY (1) MY164432A (ko)
TW (1) TWI520058B (ko)
WO (1) WO2012069798A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150137388A (ko) 2014-05-29 2015-12-09 삼성에스디에스 주식회사 데이터 처리 시스템 및 방법
KR20170097616A (ko) * 2014-12-23 2017-08-28 인텔 코포레이션 벡터 비트 뒤집기를 수행하기 위한 방법 및 장치

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20130159667A1 (en) * 2011-12-16 2013-06-20 Mips Technologies, Inc. Vector Size Agnostic Single Instruction Multiple Data (SIMD) Processor Architecture
CN111831334B (zh) * 2011-12-23 2024-05-24 英特尔公司 经改进的插入指令的装置和方法
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
CN107220029B (zh) 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
WO2013101018A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Dot product processors, methods, systems, and instructions
US9081607B2 (en) * 2012-10-24 2015-07-14 International Business Machines Corporation Conditional transaction abort and precise abort handling
CN103973600B (zh) * 2013-02-01 2018-10-09 德克萨斯仪器股份有限公司 用于分组处理旋转掩码合并和寄存字段指令的方法及装置
WO2014203035A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Signal processing device and method of performing a bit-expand operation
US20150186137A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for vector bit test
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
CN104991758B (zh) * 2015-07-27 2017-11-21 中国科学院自动化研究所 一种位域覆盖装置及操作方法
US9733899B2 (en) * 2015-11-12 2017-08-15 Arm Limited Lane position information for processing of vector
US20170177354A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Vector-Based Bit Manipulation
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
CN105892993B (zh) * 2016-03-28 2019-02-15 龙芯中科技术有限公司 基于提取插入操作的重组方法、装置及微处理器
EP3336692B1 (en) 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
EP3336691B1 (en) * 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
EP3602383A4 (en) * 2017-03-21 2021-05-19 Tora Holdings, Inc. SECURE ORDER AGREEMENT THROUGH DISTRIBUTION OF DATA AND PROCESSING OVER SEVERAL SEGREGATED CALCULATION NODES
US10514914B2 (en) * 2017-08-29 2019-12-24 Gsi Technology Inc. Method for min-max computation in associative memory

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4520439A (en) * 1981-01-05 1985-05-28 Sperry Corporation Variable field partial write data merge
US4617641A (en) * 1983-10-19 1986-10-14 Hitachi, Ltd. Operation unit for floating point data having a variable length exponent part
JPS6266377A (ja) * 1985-09-19 1987-03-25 Fujitsu Ltd マスクパタ−ン生成方式
JP2674301B2 (ja) 1990-10-31 1997-11-12 富士通株式会社 ビット転記方式
US5423010A (en) * 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
JP3203401B2 (ja) * 1993-05-21 2001-08-27 三菱電機株式会社 データ処理装置
JP3452655B2 (ja) 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
JPH07175651A (ja) * 1993-09-27 1995-07-14 Hitachi Ltd ディジタル信号処理プロセッサおよびそれを用いて命令をフェッチし復号する方法
JP2682469B2 (ja) 1994-09-20 1997-11-26 日本電気株式会社 命令コード符号化方式
US6738793B2 (en) 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
JP3433588B2 (ja) 1995-10-19 2003-08-04 株式会社デンソー マスクデータ生成回路及びビットフィールド操作回路
JPH11272546A (ja) 1998-03-23 1999-10-08 Nec Corp 可変長レジスタ装置
JP2000099327A (ja) 1998-09-28 2000-04-07 Mitsubishi Electric Corp 計算機
US6308253B1 (en) * 1999-03-31 2001-10-23 Sony Corporation RISC CPU instructions particularly suited for decoding digital signal processing applications
JP2001251349A (ja) * 2000-03-06 2001-09-14 Fujitsu Ltd パケットプロセッサ
US6625724B1 (en) * 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6678806B1 (en) 2000-08-23 2004-01-13 Chipwrights Design, Inc. Apparatus and method for using tagged pointers for extract, insert and format operations
GB0024312D0 (en) * 2000-10-04 2000-11-15 Advanced Risc Mach Ltd Single instruction multiple data processing
DE10314928A1 (de) 2003-04-02 2004-11-04 Infineon Technologies Ag Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung
CN1898873A (zh) * 2003-12-18 2007-01-17 汤姆森特许公司 用于将n比特字代码转换为m比特字并且m小于n的方法和器件
EP1545010A1 (en) * 2003-12-18 2005-06-22 Deutsche Thomson-Brandt GmbH Method and device for transcoding N-bit words into M-bit words with M smaller N
US7370180B2 (en) * 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US7315937B2 (en) * 2004-10-01 2008-01-01 Mips Technologies, Inc. Microprocessor instructions for efficient bit stream extractions
US7885992B2 (en) * 2006-06-22 2011-02-08 Honeywell International Inc. System and method for implementing irregular data formats
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セミコンダクタ株式会社 ビットフィールド操作回路
US7895419B2 (en) * 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US8352528B2 (en) * 2009-09-20 2013-01-08 Mimar Tibet Apparatus for efficient DCT calculations in a SIMD programmable processor
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150137388A (ko) 2014-05-29 2015-12-09 삼성에스디에스 주식회사 데이터 처리 시스템 및 방법
KR20170097616A (ko) * 2014-12-23 2017-08-28 인텔 코포레이션 벡터 비트 뒤집기를 수행하기 위한 방법 및 장치

Also Published As

Publication number Publication date
TWI520058B (zh) 2016-02-01
JP5703385B2 (ja) 2015-04-15
EP2648091A1 (en) 2013-10-09
JP2014500546A (ja) 2014-01-09
CN104915182A (zh) 2015-09-16
CN104915182B (zh) 2017-12-01
KR101834174B1 (ko) 2018-03-05
IL225036A (en) 2017-06-29
GB2485774A (en) 2012-05-30
CN103229139B (zh) 2016-06-08
US20160026465A1 (en) 2016-01-28
JP5897696B2 (ja) 2016-03-30
KR20170118946A (ko) 2017-10-25
US20170153891A1 (en) 2017-06-01
WO2012069798A1 (en) 2012-05-31
EP2603851A1 (en) 2013-06-19
US20120131312A1 (en) 2012-05-24
US9619225B2 (en) 2017-04-11
JP2015097099A (ja) 2015-05-21
KR101900236B1 (ko) 2018-09-19
GB201019798D0 (en) 2011-01-05
EP2648091B1 (en) 2014-10-29
TW201235937A (en) 2012-09-01
US9207937B2 (en) 2015-12-08
US10521232B2 (en) 2019-12-31
MY164432A (en) 2017-12-15
EP2603851B1 (en) 2017-08-16
CN103229139A (zh) 2013-07-31

Similar Documents

Publication Publication Date Title
KR20140001910A (ko) 데이터 처리장치 및 방법
KR100991984B1 (ko) 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법
KR101099467B1 (ko) 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법
CN103562854B (zh) 用于对齐寄存器的系统、装置和方法
KR20130100900A (ko) 조건부 비교 명령
US6601158B1 (en) Count/address generation circuitry
CN107851013B (zh) 数据处理装置和方法
CN107851016B (zh) 向量算术指令
CN107851022B (zh) 向量长度查询指令
CN110914801B (zh) 在数据处理设备中的向量交叉
CN105404588B (zh) 处理器和其中生成数据存储操作的一个或多个地址的方法
GB2617829A (en) Technique for handling data elements stored in an array storage
WO2023199014A1 (en) Technique for handling data elements stored in an array storage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant