KR20020021078A - 데이터 처리 시스템 및 복수의 부호 데이터 값의 산술연산 수행방법 - Google Patents

데이터 처리 시스템 및 복수의 부호 데이터 값의 산술연산 수행방법 Download PDF

Info

Publication number
KR20020021078A
KR20020021078A KR1020017006107A KR20017006107A KR20020021078A KR 20020021078 A KR20020021078 A KR 20020021078A KR 1020017006107 A KR1020017006107 A KR 1020017006107A KR 20017006107 A KR20017006107 A KR 20017006107A KR 20020021078 A KR20020021078 A KR 20020021078A
Authority
KR
South Korea
Prior art keywords
bit
value
data
bit field
sign
Prior art date
Application number
KR1020017006107A
Other languages
English (en)
Inventor
듀크스트라윌코
Original Assignee
맥케이 데이비드 니겔
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB9825537A external-priority patent/GB2343969A/en
Application filed by 맥케이 데이비드 니겔, 에이알엠 리미티드 filed Critical 맥케이 데이비드 니겔
Publication of KR20020021078A publication Critical patent/KR20020021078A/ko

Links

Classifications

    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01NINVESTIGATING OR ANALYSING MATERIALS BY DETERMINING THEIR CHEMICAL OR PHYSICAL PROPERTIES
    • G01N33/00Investigating or analysing materials by specific methods not covered by groups G01N1/00 - G01N31/00
    • G01N33/48Biological material, e.g. blood, urine; Haemocytometers
    • G01N33/50Chemical analysis of biological material, e.g. blood, urine; Testing involving biospecific ligand binding methods; Immunological testing
    • G01N33/68Chemical analysis of biological material, e.g. blood, urine; Testing involving biospecific ligand binding methods; Immunological testing involving proteins, peptides or amino acids
    • G01N33/6803General methods of protein analysis not limited to specific proteins or families of proteins
    • G01N33/6842Proteomic analysis of subsets of protein mixtures with reduced complexity, e.g. membrane proteins, phosphoproteins, organelle proteins
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Urology & Nephrology (AREA)
  • Chemical & Material Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Hematology (AREA)
  • Immunology (AREA)
  • Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Cell Biology (AREA)
  • Biotechnology (AREA)
  • Biochemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Microbiology (AREA)
  • Analytical Chemistry (AREA)
  • Medicinal Chemistry (AREA)
  • Food Science & Technology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 복수 "p"의 부호 "n-비트" 데이터 값에 관한 산술 연산을 수행하기 위한 데이터 처리 시스템, 및 이러한 데이터 처리 시스템 운용 방법을 제공한다. 본 발명의 기술은, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 그 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 그 복합 값을 형성하는 인코딩 연산을 수행하여서 p n-비트 필드를 포함하는 복합 값으로서 그 복수의 부호 n-비트 데이터 값을 인코딩 하는 단계를 포함한다. 그리고, 산술 연산은, 그 복합 값에 적용하여 p n-비트 필드를 포함하는 인코딩된 결과를 산출하고, 그 인코딩된 결과를 디코딩 하여, 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하고 그 인코딩 단계 동안 인접한 부호 확장시킨 데이터 값의 가산에 의해 일어난 임의 결과에 대해 정정하는 디코딩 연산을 적용하여서 p 최종 결과를 산출하여서, 상기 각 최종 결과는 대응하는 부호 n-비트 데이터 값에 대한 산술 연산의 적용을 나타낸다. 본 발명에 따라, 2개 또는 그 이상의 부호 데이터 값들을 복합 값으로 인코딩 하여서, 그들이 마치 SIMD 명령어인 것처럼 표준 명령어를 사용하여 그 복합 값을 처리한다. 이는 2개의 인접한 데이터 값간의 오버플로우 및 언더플로우를 갖는 문제점을 해결하는 부호 데이터 값들의 특정 인코딩에 의해 가능해진다. 이 인코딩은 표준 명령어를 사용 가능하게 하므로, SIMD 확장을 사용하는 많은 이점은, 별도의 하드웨어 비용 또는 SIMD 기술을 요하는 새로운 명령어 없이 달성할 수 있다.

Description

데이터 처리 시스템 및 복수의 부호 데이터 값의 산술 연산 수행방법{A DATA PROCESSING SYSTEM AND METHOD FOR PERFORMING AN ARITHMETIC OPERATION ON A PLURALITY OF SIGNED DATA VALUES}
많은 데이터 값에 동시에 적용하려는 산술 연산을 가능하게 하기 위해서, 단일 명령 다중 데이터(Single Instruction Multiple Data, SIMD) 명령어는, 단일 명령어가 각 필드가 별도의 데이터 값을 포함하면서 많은 필드로 구성되는 복합 데이터 값에 적용되는 부분에서 개발되어 왔다.
이러한 SIMD 명령어를 지원하기 위해서, SIMD 연산을 그 복합 데이터 값에 적용하는 동안 복합 데이터 값의 각 필드에 있는 데이터 값이 서로 상호작용하지 않는 것을 보장하는 특정 SIMD 하드웨어를 제공하는 것이 필요하다. 예를 들면, 일반적으로, 인텔사의 MMX 하드웨어 및 SA-1500 코프로세서와 같은 SIMD 확장은, 폭넓은 레지스터로 하여금 독립 고정 크기의 서브-필드로 분할되게 한다. 예를 들면, 이러한 레지스터는 64비트로 폭이 넓어서, 3개의 8-비트 값, 4개의 16-비트 값 또는 2개의 32-비트 값을 포함한다. 보통, 이들 레지스터에 관해 동작하는 SIMD 명령어는, A=B op C형의 3-오퍼랜드 명령어이지만, 그들은 각 서브-필드에 관해 병렬로 동작한다.
예를 들면, 4개의 16-비트 값을 포함하는 2개의 64-비트 SIMD 레지스터의 가산은, 각 레지스터의 4개의 서브-필드에 관해 동작하는 4번의 가산이 된다. 그 64-비트 결과는 입력의 대응 필드의 합인 4개의 16-비트 값을 포함한다.
이때의 SIMD 접근법은, 데이터, 예를 들어 8 또는 16-비트 데이터와 같은 일련의 동작을 대량의 데이터에 관해 여러 번 수행해야 하는 경우에 특히 유용하다. 64-비트 레지스터가 SIMD 명령어를 이용하여서 8개의 독립한 8-비트 데이터 세트까지 사용하는 예를 병렬로 처리할 수 있으면, 상당한 처리 속도 향상을 달성할 수 있다. 이러한 SIMD 명령어가 유용한 하나의 특정 영역은, 많은 이산 여현 변형(Discrete Cosine Transformation, DCT) 연산을 수행할 필요가 있는 JPEG 또는 MPEG 압축 및/또는 해제의 영역이다. 각 DCT는 부호 데이터에 관해 수행된 일련의 가산 및 곱셈으로 구성되어, SIMD 명령어의 사용으로 처리속도를 매우 향상시킬 수 있다는 것을 알 수 있다.
그러나, 많은 SIMD 명령어의 사용으로 생기는 많은 단점이 있다. 먼저, 상술한 것처럼, SIMD 명령어를 정확히 동작시킬 수 있도록, 특정 하드웨어는, SIMD 연산이 적용될 경우, 레지스터의 여러 가지 서브-필드에 있는 데이터 값이 상호간에분리되어 있는 것을 보장하도록 요구된다. 또한, 이 하드웨어를 사용하도록 새로운 SIMD 명령어를 정의할 필요가 있다. 이로 인해, 바람직하지 않은 명령어를 식별하기 위해 요구된 명령어 비트 공간을 증가시킨다.
(발명의 요약)
제 1 국면에 따른 본 발명은, 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하되, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 그 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 그 복합 값을 형성하는 인코딩 연산을 수행하여서 p n-비트 필드를 포함하는 복합 값으로서 그 복수의 부호 n-비트 데이터 값을 인코딩 하는 단계와, 그 산술 연산을 그 복합 값에 적용하여 p n-비트 필드를 포함하는 인코딩된 결과를 산출하는 단계와, 그 인코딩된 결과를 디코딩 하여, 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하고 그 인코딩 단계 동안 인접한 부호 확장시킨 데이터 값의 가산에 의해 일어난 임의 결과에 대해 정정하는 디코딩 연산을 적용하여서 p 최종 결과를 산출하는 단계를 포함하되, 상기 각 최종 결과는 대응하는 부호 n-비트 데이터 값에 대한 산술 연산의 적용을 나타내는, 데이터 처리 시스템 운용 방법을 제공한다.
본 발명에 따라, 2개 또는 그 이상의 부호 데이터 값들을 복합 값으로 인코딩 하여서, 그들이 마치 SIMD 명령어인 것처럼 표준 명령어를 사용하여 그 복합 값을 처리한다. 이는 2개의 인접한 데이터 값간의 오버플로우 및 언더플로우를 갖는문제점을 해결하는 부호 데이터 값들의 특정 인코딩에 의해 가능해진다. 이 인코딩은 표준 명령어를 사용 가능하게 하므로, SIMD 확장을 사용하는 많은 이점은, 별도의 하드웨어 비용 또는 SIMD 기술을 요하는 새로운 명령어 없이 달성할 수 있다.
본 발명에 따라, 복수 p의 부호 n-비트 데이터 값들은, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 그 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값들을 가산하여 복합 값을 형성하는 인코딩 연산을 수행하여서 p n-비트 필드를 포함한 복합 값으로서 인코딩된다. 이 인코딩으로, 각각의 팩형 값이 최소/최대 범위(예를 들면, 16-비트 필드의 값이 -32768 내지 +32767 범위 내로 유지되어야 함) 내로 유지하는 한, 예를 들어 상수만큼 가산, 감산, 곱셈과 같은 많은 연산과 좌로 시프팅 연산이 사용된다.
본 발명에 따라, 그 인코딩은 부호 데이터 값이 적용된다. 본 발명의 인코딩이 각 부호 데이터 값을 그 복합 값의 최상위 비트까지 부호 확장시키는 연산을 적용하는 것을 포함하므로, 명백한 것은, 복합 값의 각각의 n-비트 필드와 정렬시킨 여러 가지 부호 데이터 값의 가산이, 잠재적으로 여러 가지 데이터 값 사이의 일부 상호 작용이 될 것이라는 것이다. 예를 들어, 바람직한 실시예에서는, 특정 부호 데이터 값을 부호 확장시킴으로써, 그 부호 확장시킨 데이터 값이 양일 경우 다른 데이터 값에 효과가 없지만, 그 부호 확장시킨 데이터 값이 음일 경우 이는 그 복합 값으로부터 그 복합 값의 다음 n 상위비트를 나타내는 인접 데이터 값과 정렬시킨 값 1을 감산하는 효과가 있을 것이다.
따라서, 이 잠재적인 상호작용으로 인해, 그러한 인코딩으로부터 일어나는 복합 값으로의 산술 연산 적용이, 각 부호 n-비트 데이터 값으로의 산술 연산 적용으로부터 차례로 일어날 개개의 결과로부터 얻어질 수 있는 결과를 산출하지 않을 것이라는 것을 기대하므로, 이 인코딩을 적용하는 것은 완전히 반직관적이다. 그러나, 기대와는 반대로, 본 발명의 인코딩 기술을 사용하여서, 산술 연산의 적용으로, 용이하게 얻은 개개의 최종 결과로부터 인코딩된 결과를 산출한다는 것을 알 수 있다. 필요로 하는 모든 것은, 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안에 인접 부호 확장시킨 데이터 값의 가산으로 일어난 임의 결과에 대해 정정해야 한다. 따라서, 바람직한 실시예에서, 필요로 하는 모든 것은, 인코딩된 결과의 인접한 n 하위 비트를 나타낸 인접한 n-비트 필드의 데이터가 음일 경우, 그 인코딩된 결과의 특정 n-비트 필드와 정렬시킨 값 1을, 그 인코딩된 결과에 다시 가산해야 한다.
선택된 구현으로, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 복합 값을 형성한, 복합 값을 산출할 경우 그 인코딩 연산을 구현할 수 있는 많은 다른 방법이 있다는 것을 알 것이다. 예를 들면, 각 부호 데이터 값을 부호 확장시키기에 앞서 각 부호 데이터 값을 각각의 n-비트 필드와 정렬할 필요는 없고, 또한, 어떤 정렬 처리가 일어나기에 앞서 먼저 각 부호 데이터 값을 부호 확장시킬 수 있다.
또한, 본 발명의 일 실시예에서, 인코딩 연산은, 첫 번째 n-비트 필드가 중간 값의 n 최하위 비트를 포함하고, p번째 n-비트 필드가 중간 값의 n 최상위 비트를 포함하는 중간 값의 각각의 n-비트 필드에 상기 복수의 n-비트 데이터 값을 할당하는 단계와, p-1번째 내지 첫 번째 n-비트 필드의 경우, p-1번째 n-비트 필드에서 시작하고, n-비트 필드가 음인 데이터 값인지를 판단하여, 그럴 경우 중간 값으로부터 n 상위 비트를 나타낸 인접한 n-비트 필드와 정렬된 논리 값 1을 감산하여서 새로운 중간 값을 발생하는 단계를 포함하되, 첫 번째 n-비트 필드가 처리되었을 때 상기 중간 값이 상기 복합 값이다.
이와 유사하게, 그 디코딩 연산은, 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안에 인접 부호 확장 데이터 값의 가산에 의해 일어난 임의 결과를 정정하는 최종 결과를 산출하는 경우 많은 다른 방법으로 구현할 수 있다는 것을 알 것이다. 예를 들면, 본 발명의 바람직한 실시예에서, 그 인코딩된 결과의 첫 번째 n-비트 필드는 그 인코딩된 결과의 n 최하위 비트를 포함하고, 그 인코딩된 결과의 p-번째 n-비트 필드는 그 인코딩된 결과의 n 최상위 비트를 포함하고, 그 디코딩 연산은, 첫 번째 n-비트 필드 내지 p-1번째 n-비트 필드의 경우, 첫 번째 n-비트 필드에서 시작하는 단계와, n-비트 필드에 있는 데이터가 음인지를 판단하는 단계와, 이 판단에 의해 음일 경우, 그 인코딩된 결과에 n 상위 비트를 나타낸 인접 n-비트 필드와 정렬된 논리 값 1을 가산하여서 새로운 인코딩된 결과를 발생하는 단계를 포함하되, p-1 번째 n-비트 필드가 처리되었을 때에, 각 n-비트 필드는 상기 p 최종 결과 중의 하나를 포함한다.
인코딩 연산과 디코딩 연산을 고려하였지만, 선택된 구현에 의거한 인코딩연산 및/또는 디코딩 연산은 하나 또는 그 이상의 명령어로 구성할 수 있다는 것을 당업자는 알 수 있을 것이다.
바람직한 실시예에서, 산술 연산은, 하나 또는 그 이상의 복합 값의 함수이고, 각 복합 값은 복수의 부호 n-비트 데이터 값을 인코딩하고, 각 복합 값은 대응하는 복수의 부호 n-비트 데이터 값에 상기 인코딩 단계를 적용하여서 발생된다. 따라서, 그 산술 연산이 가산 A=A1+A2와 가산 B=B1+B2를 수행하기를 바랄 경우, 본 발명의 바람직한 실시예에 따라 2개의 복합 값 C1과 C2가 산출될 것이고, 이때, C1은 A1및 B1의 인코딩이고, C2는 A2및 B2의 인코딩이어서, 그 산술 연산은 2개의 복합 값 C1과 C2의 가산을 수행하여 그 결과 C=C1+C2를 산출할 것이다. 그래서, 그 결과 A와 B는, 산술 연산의 결과 C를 디코딩 하여서 얻어진다. 위의 연산을 간단하게 설명하였지만, 2개 이상의 데이터 값은 복합 값의 발생에 관련되어 있고 산술 연산은 2개 이상의 복합 값에 적용된다는 것을 당업자는 알 수 있을 것이다. 또한, 사실, 그 산술 연산은 복수의 연산을 포함한다는 것을 알 수 있을 것이다.
바람직한 실시예에서, 부호 데이터 값은 2의 보수 포맷이다.
많은 다른 산술 연산은, 본 발명의 인코딩 기술로부터 일어나는 복합 값에 적용할 수도 있다는 것을 알 수 있을 것이다. 그러나, 본 발명의 일 실시예에서, 산술 연산은, 하나 또는 그 이상의 이산 여현 변형(DCT) 연산을 포함하고, 각 DCT 연산은 하나 또는 그 이상의 복합 값의 함수이고, 각 복합 값은 복수의 부호 n-비트 데이터 값을 인코딩하고, 각 복합 값은 대응하는 복수의 부호 n-비트 데이터 값에 상기 인코딩 단계를 적용하여서 발생된다. DCT 연산이 적용되는 하나의 특정 영역은, JPEG 또는 MPEG 압축 또는 해제의 영역이고, 본 발명의 바람직한 실시예에 따른 기술이 JPEG 또는 MPEG 압축 또는 해제를 수행할 경우 특히 이점이 있다는 것을 알았다.
제 2 국면에 따른 본 발명은, 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하되, 산술 연산을 적용하기 위한 프로세서와, 그 복수의 부호 n-비트 데이터 값을 기억하기 위한 기억장치를 포함하고, 그 프로세서가, 산술 연산을 실행하기에 앞서, 그 기억장치에서 복수의 부호 n-비트 데이터 값을 검색하고, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 복합 값을 형성하는 인코딩 연산을 실행하여서 복수의 부호 n-비트 데이터 값을 p n-비트 필드를 포함한 복합 값으로서 인코딩하도록 구성되고, 상기 복합 값이 기억장치에 기억되고, 그 프로세서가 산술 연산을 복합 값에 적용하여 p n-비트 필드를 포함한 인코딩된 결과를 산출하여, 기억장치에 그 인코딩된 결과를 기억하도록 구성되며, 그 프로세서가 산술 연산의 적용에 이어서 그 인코딩된 결과를 디코딩 하여 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안 인접 부호 확장 데이터 값의 가산으로 일어난 임의 결과를 정정하는 디코딩 연산을 수행하여서 p 최종 결과를 산출하도록 더 구성됨에 따라서, 각 최종 결과는 대응한 부호 n-비트 데이터 값으로의 산술 연산의 적용을 나타내는, 데이터 처리 시스템을 제공한다.
바람직한 실시예에서, 프로세서는 인코딩 및 디코딩 연산을 실행하도록 구성된 시프터 및 산술 논리장치(ALU)를 구비한다. 이들은, 전형적인 프로세서 내에 있는 표준 하드웨어 소자이어서, 그 프로세서 내에 그것이 인코딩 및 디코딩 연산을 제어 가능하게 하는데 특정 하드웨어가 필요 없다. 그러나, 원하는 경우, 인코딩 및/또는 디코딩 연산을 제어하기 위해 특정 하드웨어를 제공할 수 있다.
그 부호 n-비트 데이터 값, 복합 값 및 그 인코딩된 결과를 기억시키는데 사용된 기억장치는, 예를 들어 메모리 또는 레지스터 뱅크와 같은 다양한 형태를 가질 수도 있고, 실제로 서로 다른 물리적 기억소자는 그 부호 n-비트 데이터 값, 복합 값 및 인코딩된 결과를 기억시키는데 사용될 수도 있다. 그러나, 바람직한 실시예에서, 그 기억장치는, 프로세서에 의해 사용된 데이터 값을 기억하기 위한 레지스터 뱅크이다. 따라서, 그 인코딩 연산을 수행하기에 앞서, 관련된 부호 n-비트 데이터 값은 메모리로부터 레지스터 뱅크 내로 판독되어서, 그 인코딩 연산, 산술 연산 및 디코딩 연산은 레지스터 뱅크에 있는 적절한 데이터 값의 조작에 의해 일어난다.
제 3 국면에 따른 본 발명은, 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하도록 구성된 데이터 처리 시스템용 인코딩/디코딩 관리장치를 제공하되, 이 인코딩/디코딩 관리장치가, 그 데이터 처리 시스템에 의해 산술 연산을 적용하기에 앞서 그 복수의 부호 'n-비트' 데이터 값을 복합 값으로서 인코딩 하여 인코딩 결과를 발생하고, 연속적으로 그 인코딩된 결과를 디코딩 하여 p최종 결과를 산출하고, 그 인코딩/디코딩 관리장치가, 동작상 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 복합 값을 형성하는 인코딩 연산을 수행하여서 복수의 부호 n-비트 데이터 값을 p n-비트 필드를 포함한 상기 복합 값으로서 인코딩 하도록 구성된 인코더와, 동작상 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안 인접 부호 확장 데이터 값의 가산에 의해 일어난 임의 결과를 정정하는 디코딩 연산을 적용하여서 상기 p 최종 결과를 산출하도록 구성된 디코더를 구비하여서, 각 최종 결과는 대응한 부호 n-비트 데이터 값으로의 산술 연산의 적용을 나타낸다.
제 4 국면에 따른 본 발명은, 데이터 처리 시스템을 운용하기 위한 컴퓨터 판독 가능 메모리의 컴퓨터 프로그램 제품을 제공하되, 산술 연산을 적용하기에 앞서 복수 'p'의 부호 'n-비트' 데이터 값을 복합 값으로서 인코딩 하여 인코딩된 결과를 발생하고, 연속적으로 그 인코딩된 결과를 디코딩 하여 p 최종 결과를 산출하고, 상기 컴퓨터 프로그램 제품은, 동작상 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 복합 값을 형성하는 인코딩 연산을 수행하여서 복수의 부호 n-비트 데이터 값을 p n-비트 필드를 포함한 상기 복합 값으로서 인코딩 하도록 구성된 인코더와, 동작상 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안 인접 부호 확장 데이터 값의 가산에 의해 일어난 임의 결과를 정정하는 디코딩 연산을 적용하여서 상기 p 최종 결과를 산출하도록 구성된 디코더를 구비하여서, 각 최종 결과는 대응한 부호n-비트 데이터 값으로의 산술 연산의 적용을 나타낸다.
본 발명은 데이터 처리 시스템 및 복수의 부호 데이터 값의 산술 연산 수행방법에 관한 것으로, 특히 산술 연산을 개별적으로 각기 부호 데이터 값에 적용할 필요 조건을 회피하는 기술에 관한 것이다.
이하, 첨부도면들을 참조하여 본 발명의 바람직한 실시예를 설명하겠다.
도 1은 인코딩 및 디코딩 연산을 수행하기 위해 본 발명의 실시예에서 사용된 프로세서 코어의 소자를 나타낸 블록도,
도 2는 본 발명의 제 1 실시예에 따른 인코딩 연산을 나타낸 흐름도,
도 3은 본 발명의 제 2 실시예에 따른 인코딩 연산을 나타낸 흐름도,
도 4는 본 발명의 바람직한 실시예에 따라 사용된 디코딩 연산을 나타낸 흐름도이다.
도 1은 본 발명의 바람직한 실시예에 따라 복수 p의 부호 n-비트 데이터 값에 관한 산술 연산을 수행하도록 구성된 표준 프로세서 코어(10)의 구성요소를 나타낸 블록도이다. 이 코어(10)에 의해 실행되는 명령어는, 경로(70)를 거쳐 명령어 파이프라인(80)내로 전달된다. 또한, 이 프로세서 코어에 의해 사용되는 데이터 값은, 일반적으로 복수의 레지스터를 포함하는 레지스터 뱅크(20)내로 로딩된다. 도 1에서, 그 데이터 값은 경로(35)를 거쳐 캐시(30)로부터 레지스터(20)내로 로딩되지만, 그 데이터 값을 캐시(30)로부터 직접 로딩할 필요가 없지만, 이와는 달리 그 프로세서 코어(10)를 포함하는 데이터 처리 시스템에 의해 제공된 다른 메모리로부터 로딩될 수 있다.
도 1에서는, 레지스터(20)가 복수의 레지스터를 구비한 것처럼 도시되어 있고, 각 레지스터는 길이 32비트이고 4개의 8-비트 필드로 구성되어 있다. 그러나, 이 레지스터는 길이 32비트일 필요가 없고, 사용될 수 있는 다른 전형적인 레지스터 크기는 64비트 및 128비트가 있다.
명령 디코더(40)는, 파이프라인(80)으로부터 명령어를 판독하고, 그 프로세서 코어내의 하드웨어에 의해 적용되는 연산 내에서 명령어들을 디코딩 하도록 구성되어 있다. 따라서, 예로서, 명령 디코더(40)가, 수행하려고 하는 시프트 연산을 요구하는 명령어를 디코딩할 경우, 시프트 로직(60)에 신호를 제공하여 그 시프트 로직에 명령하여 필요한 시프트 연산을 수행한다. 또한, 명령 디코더는 레지스터 뱅크(20)에 신호를 보내어 그 오퍼랜드 데이터 값(들)이 그 레지스터 뱅크에서 시프트 로직(60)으로 출력되게 한다. 일반적으로, 그 오퍼랜드 데이터 값이 시프트되면, 그 시프트된 값은 시프트 로직(60)에 의해 레지스터 뱅크(20)로 복귀되어, 그 레지스터 중 하나에 저장될 것이다.
또한, 명령 디코더(40)가 곱셈 또는 가산과 같은 산술 연산을 디코딩할 경우, 산술 논리장치(ALU)(50)에 신호를 보내어 그 ALU가 필요한 산술 연산(들)을 수행하게 한다. 또한, 명령 디코더는 레지스터 뱅크(20)와 접촉하여 그 필요한 오퍼랜드 데이터 값이 레지스터 뱅크(20)에서 ALU(50)로 전달되게 하고, 그 산술 연산(들) 완료에 따라, ALU(50)는 일반적으로 그 결과의 데이터 값(들)을 레지스터 뱅크(20)로 다시 저장할 것이다.
도 1의 상기 설명은, 그 설명된 프로세서 코어(10)의 표준 소자 동작의 개요를 제공한다. 본 발명의 바람직한 실시예에 따라, 이 표준 코어(10)는, 복수의 부호 n-비트 데이터 값에 관한 산술 연산을 수행하도록 구성되고, 이하, 이를 달성하기 위해 바람직한 실시예에서 사용된 기술을 도 2 내지 도 4를 참조하여 더욱 상세히 설명하겠다.
바람직한 실시예의 기술은, 2의 보수 포맷으로 부호 데이터 값에 적용되고, 이들은 그 값이 양 또는 음이 되게 하는 부호 비트를 갖는 데이터 값이다. 따라서, 부호 8-비트 데이터 값의 예를 생각해보면, 이는 -128 내지 +127의 값의 범위에 있다.
본 발명의 제 1 실시예에서 이용한 인코딩 기술에 따라, 그 부호 데이터 값은 "부호 확장된"것이다. 16-비트 데이터 값의 예를 생각해보면, 이를, 예를 들면 16번 복사의 부호 비트(예: 16-비트 데이터 값의 예를 고려한 비트 15)를 비트 16 내지 31에 두어서 32-비트 데이터 값까지 부호 확장시킬 수 있다. 따라서, 예를 들면, 16-비트 부호 값 -32767이 16진법으로 0x8001이고, 그 표기법을 식별하는 기호 "0x"는 16진수이다. 이 수를 32-비트까지 부호 확장시킴으로써, 0xFFFF8001이 되고, 16진 값 "8"은 16-비트 값의 4개의 최상위 비트가 2진 포맷으로 "1000"인 것을 나타내어서, 그 부호 비트는 "1"이다.
본 발명의 바람직한 실시예에 따라, 산술 연산의 적용에 앞서 복수의 부호 n-비트 데이터 값을 인코딩 한다. 본 발명의 제 1 실시예서 사용된 인코딩 기술을 도 2를 참조하여 더 설명하겠다. 단계 200에서는, 캐시(30)로부터 복수의 n-비트데이터 값을 레지스터 뱅크(20)의 소정 레지스터로 로딩한다. 그리고, 단계 210에서는, 각 부호 데이터 값을 "m"비트까지 부호 확장시키고, 이때 m은 복수의 n-비트 데이터 값을 인코딩하기 위해 사용되는 복합 값의 길이이다. 이 부호 확장 처리는 ALU(50) 또는 시프트 로직(60)에 의해 수행할 수도 있다. 바람직하게는, 이 부호 확장된 데이터 값들을 레지스터 뱅크의 "m" 비트 레지스터에 기억시킨다.
단계 220에서는, 첫 번째 n-비트 데이터 값을 그 복합 값의 n 최하위 비트로서 할당한다. 그리고, 단계 230에서는, 변수 X를 1로 설정하고, 단계 240에서는 다음 부호 확장된 n-비트 데이터 값을 시프트 로직(60)에 의해 레지스터 뱅크(20)의 레지스터로부터 검색하고, Xn 비트만큼 좌로 시프트 한다. 바람직하게는, 이 단계에서는, 시프트된 것과 같은 데이터 값을 레지스터 뱅크(20)의 선택 레지스터에 재기록한다.
이 단계에 이어서, 단계 250으로 그 처리를 진행하여, 그 값 Xn이 m인지를 판단한다. 이 계산은, 복합 값으로 인코딩 하려는 모든 n-비트 데이터 값이 시프트 되어서 그들을 그 복합 값의 각각의 n-비트 필드와 정렬시키는지를 효과적으로 판단한다. Xn이 m이 아닐 경우, 그 처리는 단계 260으로 진행하고, 이때 X를 1만큼 증가시키고서 단계 240으로 복귀한다. 이 새로 증가된 X값을 가지면, 다음 n-비트 데이터 값을 Xn 비트만큼 좌로 시프트 시키고, Xn이 m인 것을 판단할 때까지 각 n-비트 값에 대해 순서적으로 이 처리를 반복한다. 이 단계에서, 모든 n-비트 데이터 값은, m 비트까지 부호 확장되고, 시프트 되어 복합 값의 각각의 n-비트 필드와 정렬된다. 따라서, 단계 270에서는, ALU(50)에 의해 이 부호 확장되고 시프트된 데이터 값을 레지스터 뱅크(20)로부터 검색함과 동시에 가산하여 복합 값을 형성한다. 그리고, 그 결과를, 할당된 레지스터에 기억하기 위한 레지스터 뱅크(20)에 출력하여 그 복합 값을 유지한다. 이 때에, 인코딩 연산을 완료하고서, 그 처리를 인코딩 연산이 종료되는 단계 280으로 진행한다.
당업자는, 도 2에서 설명된 것과 같은 아주 똑같은 순서로 연산 시퀀스를 수행할 필요는 없다는 것을 알 것이다. 예를 들면, 각 n-비트 데이터 값을 그 복합 값을 할당된 레지스터의 각각의 n-비트 필드와 정렬시키기 위해서 단계 220 내지 260에 구체화된 시프팅 처리를, 데이터 값의 임의 부호 확장에 앞서 수행할 수 있다. 이 경우에, 모든 데이터 값이 그 각각의 n-비트 필드와 정렬되어 있으면, 각 데이터 값은 복합 값의 최상위 비트까지 부호 확장된다(즉, 길이 m이고, 비트 0 내지 m-1로 구성되는 복합 값의 경우, 각 데이터 값이 비트 m-1까지 부호 확장됨). 이 부호 확장 연산에 이어서, 처리는 단계 270으로 진행하고, 그 값이 동시에 가산된다.
또한, 종료할 때까지 가산 단계를 지나가는 것보다는, 데이터 값이 부호 확장되어 시프트될 때마다 가산을 수행하는 것이 가능하다. 예를 들어, 제 2 데이터 값을 n 비트만큼 좌로 시프트 시키고 부호 확장시킬 경우, 제 3 데이터 값을 부호 확장시키고 시프트 시키기 전에 제 1 부호 확장 데이터 값에 직접 가산할 수 있다. 그리고, 제 3 데이터 값이 부호 확장되고 2n 비트만큼 좌로 시프트 되어 있을 경우, 그 값을 모든 n-비트 데이터 값이 복합 값으로 인코딩 되어 있을 때까지 이전 가산 등의 결과에 가산할 수 있다.
도 2를 참조하여 설명된 인코딩 기술을 더 설명하기 위해, 이제 예를 들어 설명하되, 2개의 16-비트 값 a 및 b를 32-비트 워드 c로 인코딩할 것이다. 이때의 인코딩을 다음 식:
c=SignExtend(a)+(b<<16)
로 나타낼 수 있다.
따라서, 먼저, a는 32비트까지 부호 확장되어 있고, b는 a의 부호 확장 버전의 상위 16비트에 가산된다. 바람직한 실시예에서, a가 양수일 경우, 그 부호 비트(즉, 비트 15)는 0이고, 이에 따라서 부호 확장은 0을 비트 16 내지 31에 가산하는 것을 포함한다. 따라서, 이 처리는, c의 상부 16비트로 나타낸 b의 값에 영향을 미치지 않을 것이다. 그러나, a가 음수일 경우, 부호 비트는 1이고, 따라서 1을 비트 16 내지 31에 가산한다. 이는, a가 음수일 경우 b는 c로 인코딩될 때 1만큼 효율적으로 감소된다는 것을 의미한다. 예를 들어, a=-2이고 b=10일 경우, 0x0009FFFE인 c=-2+(10<<16)이다. 따라서, 하위 16비트가 -2를 나타내지만, 상위 16비트는 원하는 +10 대신에 +9를 나타낸다.
상기 수행된 인코딩 처리는, 그 인코딩이 도 2를 참조하여 설명한 처리인 복합 값을 산출하는 한, 실제로 부호 확장 및 시프팅 기능을 직접 수행할 필요는 없다는 것을 알 것이다. 예를 들면, 동일한 복합 값이 되는 또 다른 인코딩 기술이 도 3에 도시되어 있다. 도 3의 처리에 따라, 먼저, 복합 값으로 인코딩하려고 하는 p n-비트 데이터 값을, 그 복합 값을 위해 할당된 m-비트 레지스터의 연속적인 n-비트 필드로 로딩하되, 이때 m=p×n이다. 따라서, 복합 값이 4개의 8-비트 데이터값을 나타내고 있는 경우, m=32이고, 그 복합 값을 32-비트 레지스터에 기억시킬 것이다. 이 단계에서, 각 데이터 값은, 레지스터의 각각의 n-비트 필드에 두고, 어떠한 데이터 값도 서로 중복하지 않는다는 점에서, 그들을 종래 기술 SIMD 접근법을 사용할 때처럼 묶는다.
그러나, 이 실시예의 인코딩 기술에 따라, 본 처리는 단계 310으로 진행하고, 이때의 변수 X는 p-1로 설정한다. 그리고, 단계 320에서는, x번째 n-비트 필드에 있는 데이터 값이 음(negative)인지를 판단한다. 따라서, 4개의 8-비트 데이터 값을 복합 값으로 인코딩 하는 상기 예를 고려하면, 단계 320에서는 첫 번째 반복에 관해 세 번째 n-비트 필드가 음인지를 판단한다. 이때의 필드가 음이 아닐 경우, 상술한 것처럼, 그 데이터 값은 복합 값에 있는 다른 데이터 값에 영향을 미치지 않을 것이고, 따라서 이 처리는 변수 X=1인지를 판단하는 단계 340으로 직접 진행한다. X가 1일 경우 그 인코딩 처리는 종료하고, 따라서 인코딩 연산을 종료하는 단계 360으로 진행한다. 그러나, X가 1이 아닐 경우, 그 처리는 X를 1만큼 감소시키는 단계 350으로 진행하고서, 단계 320으로 그 처리를 진행한다.
단계 320에서는, X 번째 n-비트 필드의 데이터 값이 음인 것으로 판단될 경우, 이 처리는 단계 330으로 진행하고, 이때 1은 x+1 번째 n-비트 필드와 정렬되어서 그 레지스터 내용으로부터 감산된다. 따라서, 상기 예를 고려하면, 2번째 반복에 관해 두 번째 n-비트 필드의 데이터 값이 음인 것으로 판단될 경우, 단계 330에서는, 논리값 1이 세 번째 n-비트 필드의 데이터 값의 최하위 비트와 정렬되어, 그 레지스터 내용으로부터 감산된다.
이 처리는, 단계 340에서, 복합 값의 n 최하위 비트를 나타내는 데이터 값의 부호가 평가되고 임의 필요한 감산이 수행되었을 시점에, X=1인 것을 판단할 때까지 반복한다. 그래서, 이 처리는 단계 360으로 진행하여 그 인코딩 연산을 종료한다.
그 인코딩 처리가 수행되면, 그 m-비트 복합 값을 n-비트 데이터 값을 제어하도록 만들어진 알고리즘에서 사용하여서, 4개의 8-비트 데이터 값이 32-비트 복합 값으로 인코딩된 예를 고려하면, 32-비트 레지스터를 사용하는 표준 8-비트 알고리즘을, 그 복합 값이 실제로 4개의 보다 작은 데이터 값을 인코딩한다는 사실을 고려하기 위해 요구되는 특정 하드웨어 없이 그 복합 값에 적용할 수 있다. 그래서, 상술한 특정 인코딩 기술은, 일반 명령어가 마치 SIMD 명령어인 것처럼 사용되게 하지만, SIMD 명령어를 제어하는데 필요로 하는 특정 하드웨어를 추가할 필요성이 없다는 것을 알 수 있다. 이는, 그 알고리즘을 복합 값이라기 보다는 직접 그들에게 적용시킨 복합 값으로 인코딩된 개개의 n-비트 값이 오버플로우하거나 언더플로우하지 않았을 경우 적용된다는 것을 알았다.
상기 설명이 주어진 경우, 인코딩 단계는, 부호 확장 때문에 기껏해야 하나만큼 첫 번째 필드를 제외하고는 각각에서 그 값을 감소시킬 수 있다는 것이 명백하다. 이는 최소 음의 값으로 필드를 언더플로우할 수 있지만, 이는 중요하지 않다. 예를 들면, 선행하는 16비트 필드가 양일 경우, 그 값 -32768..32768은 변경되지 않은 현재 필드에 표시되는 반면에, 그 선행 필드가 음일 경우, -32768은 현재 필드에서 +32767로 표시되어 있고, -32767..32767은 현재 필드에 -32768..32766로서 표시되어 있다. 그래서, 이 인코딩은 각 필드에 모든 가능한 값을 표시하는 능력을 잃어버리지 않고, 인코딩 단계가 복귀 변경되지 않은 원래의 값으로 된 후 디코딩 단계를 수행한다. 이때의 인코딩 구성은, 그 값이 음일 경우 그 다음으로부터 '1'을 '빌리는(borrowing)' 하나의 필드로서 나타내어질 수 있다. 필드가 양에서 음의 값으로 부호를 변경할 경우, 1을 다른 방향에서 다음 필드로부터 빌린다(또한, 빌림(borrow)을 하지 않는 디코딩 동안).
인코딩 기술이 도움이 된다는 것을 증명하기 위해서, 그 기술은 이하의 설명에서 2개의 값을 하나의 인코딩된 값으로 인코딩하고서 가산을 하는데 사용할 것이다. 단일 가산의 디코딩된 결과가 원래의 값에 관해 2개의 독립된 가산을 한 것과 같은 결과를 산출한 것을 설명하겠다. 이 증명(proof)은 용이하게 다수의 값으로 확장한다. 또한, 상수와의 곱셈과 좌로 시프팅(2의 양의 제곱과의 곱셈임)은 가산용 증명으로부터 얻을 수 있는 것이 된다. 그 증명이 인코딩 및 디코딩 단계의 적절한 이해를 위해 필요하지 않지만, 그 인코딩된 값에 관해 적용된 산술 연산이 본 발명을 실용적인 목적을 위해 유용하게 하는 유용한 결과를 구성하는 것을 보이도록 제공된다.
먼저, 값 A, B는 인코딩 연산을 A1, A2 및 B1, B2에 각각 적용하는 결과로서 정의된다. R은 A 및 B에 관해 적용한 산술 가산 연산의 결과이고, R1, R2는 디코딩 R 후의 결과이다.
그 목적은 R1=A1+B1 및 R2=A2+B2를 증명하는데 있다.
A=인코드(A1,A2)
B=인코드(B1,B2)
R=A+B
R1,R2=디코드(R)
[-N/2..N/2-1] 범위의 2개의 부호 확장 값의 인코딩은 아래와 같이 정의된다:
인코드(X,Y)=X+Y*N
이때, N은 2(필드의 비트폭인 log(N))의 제곱이다.
디코드는 인코드의 역으로, 수학적으로 아래와 같이 정의된다:
디코드1(Z)=SEXT(Z mod N) 디코드2(Z)=SEXT((Z/N)+((Z mod N)/(N/2)))디코드(Z)=디코드1(Z), 디코드2(Z).
'/'로서 나타낸 나눗셈(division) 연산자는, 정수 나눗셈을 규정하고 마이너스 무한대에 대해 라운드(round)한다.
또한, 나눗셈의 나머지를 돌려주는 모듈로 연산자는 'mod'로 나타낸다. 이 모듈로 결과는, 항상 분모로서 동일 부호이고, 0 내지 분모-1(따라서, A의 부호와 상관없는 B*(A/B)+A mod b==A)의 범위이다.
log(N)비트 값을 [-(N/2)..(N/2)-1] 범위의 완전 폭 부호 값(full width signed value)까지 부호 확장하는 부호 확장 연산자는, 'SEXT'로 나타낸다. SEXT(X mod N)==SETX(X) 즉, X가 부호 확장 전에 유효 범위 밖에 있을 경우, X의 log(N) 비트만, 부호 확장 값을 범위 내에서 형성하기 위한 X가 사용된다고 가정한다. 또한, X가 [-(N/2)..(N/2)-1] 범위에 있을 경우 SETX(X)==X라고 가정한다.
먼저, 디코드(인코드())는 특정 범위내의 값에 대한 항등식임을 증명한다. 우리는 이 증명을 제 1 값이 양 또는 음일 경우에 대해 독립된 증명에 의해 세 부분, 제 1 인코딩된 값에 대한 하나와, 제 2 인코딩된 값에 대한 둘로 나눈다.
X=디코드1(인코드(X,Y))에 대한 증명:
디코드 1(인코드(X,Y))==인코드 디코드1의 정의(X+Y*N)
==디코드1의 정의
SEXT((X+Y*N) mod N)
==산술:(X+Y*N) mod N==X mod N SEXT(X mod N)
==산술:X mod N==X([0..(N/2)-1]에서의 X로서)
SEXT(X)
==SEXT 정의
X
X가 양일 경우 Y=디코드2(인코드(X,Y))에 대한 증명:
디코드2(인코드(X,Y))==인코드 디코드2의 정의(X+Y*N)
==디코드2의 정의
SEXT((X+Y*N)/N+(((X+Y*N) mod N)/(N/2)))
==산술:(X+Y*N) mod N==X mod N SEXT((X+Y*N)/N+((X mod N)/(N/2)))
==산술:[0..(N/2)-1]에서의 X로서 (X+Y*N)/N==Y mod N (X는 Y로 변경하지 못함)
SEXT(Y mod N+((X mod N)/(N/2)))
==산술: [0..(N/2)-1]에서의 X, 그래서 X mod N==X
SEXT(Y mod N+(X/(N/2)))
==산술: [0..(N/2)-1]에서의 X, 그래서 X/N==0
SEXT(Y mod N)
==SEXT 정의
Y
X가 음일 경우 Y=디코드2(인코드(X,Y))에 대한 증명:
디코드2(인코드(X,Y))==인코드 디코드2의 정의(X+Y*N)
==디코드2의 정의
SEXT((X+Y*N)/N+(((X+Y*N) mod N)/(N/2)))
==산술:(X+Y*N) mod N==X mod N SEXT((X+Y*N)/N+((X mod N)/(N/2)))
==산술:[-(N/2)..-1]에서의 X로서 (X+Y*N)/N==(Y-1) mod N (X는 Y로부터 1을 빌림)
SEXT((Y-1) mod N+((X mod N)/(N/2)))
==산술: [-(N/2)..-1)에서의 X, 그래서 X mod N==X+N
SEXT((Y-1) mod N+((X+N)/(N/2)))
==산술:[N-(N/2)..N-1]에서 X+N 및 N 짝수, 그래서 (X+N)/(N/2)==1
SEXT((Y-1) mod N+1)
==SETX 정의
SEXT(((Y-1) mod N+1) mod N)
==산술:(A mod N) mod N==A(이중 모듈로는 중복임) SEXT(Y mod N)
==SEXT 정의
Y
이제, 가산이 오버플로우하지 않을 경우 R1=A1+A2와 R2=B1+B2인 것을 증명한다:
R1, R2
==R1,R2 디코드의 정의(R)
==R 디코드의 정의(A+B)==A와 B 디코드의 정의(인코드(A1,A2)+인코드(B1,B2))
==인코드 디코드의 정의((A1+A2*N)+(B1+B2*N))
==+와 * 디코드의 교환 가능성(commutativity)((A1+B1)+(A2+B2)*N)
==인코드 디코드의 정의(인코드(A1+B1, A2+B2))
==범위내의 값일 경우 디코드(인코드) 일치(identity)(이는 A1+B1 또는 A2+B2가 오버플로우하지 않을 경우임)
A1+B1, A2+B2
상기 제약을 따르는 알고리즘은, 복합 값으로 인코딩될 때에 그 데이터 값의 정확한 조작이 되고, 이에 따라서, 산술 연산 또는 산술 연산의 시퀀스를 적용하는 경우 필요로 하는 모든 것은, 원래의 인코딩 처리에 의해 일어난 임의 결과에 대해 정정하는 디코딩 연산을 적용하는데 있다. 인코딩 동안에 일어나는 이들 결과에 대해 정정하기 위해 본 발명의 바람직한 실시예에서 사용된 디코딩 기술을 도 4를 참조하여 설명한다.
단계 400에서는, 변수 X를 1로 설정한다. 그리고, 단계 410에서는, X번째 n-비트 필드에 있는 데이터 값이 음인지를 판단한다. 이에 따라서, 첫 번째 반복 중에 복합 값의 n 최하위 비트를 나타낸 첫 번째 n-비트 필드가 음인지를 판단한다. 그 값이 음일 경우, 그 처리는 단계 420으로 진행하여, 그 값 1을 x+1번째 n-비트 필드와 정렬하여서 레지스터 내용에 가산한다. 따라서, 예로서, 그 첫 번째 n-비트 필드가 음일 경우, 1을 두 번째 n-비트 필드의 최하위 비트와 정렬시켜 레지스터 내용에 가산한다. 그리고, 이 처리는 단계 430으로 진행하여, X=p-1인지를 판단한다. 단계 410에서는 X 번째 n-비트 필드가 음이 아니었다고 판단하였을 경우, 그 처리는 단계 420을 경유하기보다는 단계 430으로 직접 진행한다.
X가 p-1이 아닐 경우, 그 처리는 단계 450으로 진행하여, X를 1만큼 증가시킨다. 그리고, 디코드 처리가 완료한 시점인 X가 p-1일 때까지 반복하여 판단하여서, 단계 440으로 진행하여 디코드 연산을 종료한다.
2개의 16-비트 값 a와 b를 32-비트 복합 값으로 인코딩한 상기 예를 고려하면, 이어지는 C 코드 플래그먼트(fragment)를 도 4에 나타낸 디코딩 연산을 산출하는데 사용할 수 있다(ANSI 표준 규칙을 적용하는 것으로 가정함):
a= c & 65535;//a 추출
(a<0)c+=1<<16일 경우;//음 a에 의해 생긴 감소를 취소
b=c>>16;//b 추출
그 값 65535는 1로 설정된 최하위 16비트와, 0으로 설정된 최상위 16비트를 가진다. 따라서, AND 연산을 c와 65535의 입력에 의거하여 적용할 때, 그 값 65535는 그 출력이 값 a이도록 효과적으로 마스크로서의 일을 한다. 상기 계산의 두 번째 라인에 설명된 것처럼, a가 0미만(즉, 음)인 것으로 판단될 경우, c를 c+(16비트만큼 좌로 시프트된 1)로 변경한다. 따라서, 이는, b를 포함하는 복합 값의 필드의 최하위 비트에 1을 가산한다. b를 추출하기 위해서, 모든 것은 16비트만큼 c를 우로 시프트 하여 그 결과를 출력하는 것이 필요하고, 이것이 b의 정정 값이 될 것이다.
바람직한 실시예의 인코딩 및 디코딩 기술을 설명한 예를 다음 코드를 참조하여 설명하여, 본 발명에 따라 4개의 8-비트 부호 정수를 팩킹(pack)하여 32-비트 정수로부터 어떻게 언팩킹(unpack)할 수 있는지를 입증한다. 이 예는, 먼저 각 배열의 값을 별도로 함께 가산하는 표준 접근법을 사용하고서 본 발명의 바람직한 실시예에 따른 접근법을 사용하여 4개의 배열에 있는 값들을 가산하는 구성으로 되어 있다.
다음 C 코드는, 32-비트 레지스터가 4개의 독립 8-비트 값을 포함하고, 이 레지스터 내용은 그 인코딩된 복합 값을 산출하도록 조작되는 본 발명의 실시예에따라 사용된 인코딩 연산을 나타낸다:
#include<stdio.h>
// following two lines are dependent on compiler
typedef signed char int8;//this defines a type 'int8' which is a signed 8-bit number
typedef int word;//this defines a type 'word' which is a 32-bit signed integer
//encode a 32 bit containing 4 independent 8-bit values into 4 combined values
word sign_encode(word x)
{
x-=(x<<1) & (1<<24);//if negative, subtract one
x-=(x<<1) & (1<<16);
x-=(x<<1) & (1<<8);
return x;
}
식 x-=(x<<1) & (1<<24), AND 연산 (x<<1) 및 (1<<24)이, 논리 값 1과 논리적으로 AND된 세 번째 n-비트 필드에 있는 데이터 값의 최상위 비트(즉, 부호 비트)가 된다고 생각하면, 상술한 것처럼 그 데이터 값이 양일 경우0을 산출하고, 데이터 값이 음일 경우 1을 산출한다. 관련된 시프팅으로 인해, 실제로 그 결과는 4번째 8-비트 필드에 있는 데이터 값의 최하위 비트와 일치하고, 그 식은 x가 AND 연산의 결과 x-가 되는 것을 정의한다. 따라서, 이것의 결과는, 세 번째 8-비트 필드에 있는 데이터 값이 음일 경우 네 번째 8-비트 필드와 정렬된 값 1을 32-비트 레지스터의 내용으로부터 감산시킨다는 것을 알 수 있다. 다음의 두 식은 유사한 감산을 수행하지만 1을 세 번째 및 두 번째 n-비트 필드와 각각 정렬시킨다는 것을 알 수 있다.
다음의 코드는, 32-비트 레지스터의 내용을 변환하여 4개의 독립 결과 데이터 값을 포함시키기 위한 적절한 디코딩 연산을 나타낸다:
//decode a 32-bit word containing 4 combined 8-bit values into 4 independent values
word sign_decode(word x)
{
x+=(x<<1) & (1<<8);// if negative, add one
x+=(x<<1) & (1<<16);
x+=(x<<1) & (1<<24);
return x;
}
상술한 인코딩 처리의 설명의 경우, 상기 디코딩 식이 레지스터 내용에 다시 가산되어 인코딩 연산에 의해 생긴 임의 결과에 대해 정정하는 1이 된다.
4개의 8-비트 부호 값을 32 비트 워드로 팩킹하는 다른 인코딩 기술은, 다음의 코드로 나타낸다:
//pack 4 8-bit signed values into a 32-bit word
word pack(int8 a, int8 b, int8 c, int8 d)
{
return(word)a+((word)b<<8)+((word)c<<16)+((word)d<<24);
}
위 식에 따라, 값 a, b, c 및 d를 워드(즉, 32비트)길이로 부호 확장시키고, 값 b를 8비트만큼 좌로 시프트 시키고, 값 c를 16비트만큼 좌로 시프트 시키고, 값 d를 24비트만큼 좌로 시프트 시키고, 그 부호 확장시키고 시프트된 값을 동시에 가산하여 팩 워드를 형성한다.
4개의 독립 결과 데이터 값을 산출하는 적절한 디코딩 연산은 다음 코드에 의해 나타낸다:
//unpack a 32-bit word into 4 8-bit signed values
void unpack(word x, int8*a, int8*b, int8*c, int8*d)
{
x=sign_decode(x)
*a=x;
*b=x>>8;
*c=x>>16;
*d=x>>24;
}
위 식에 따르면, 먼저, 32 비트 워드는 본 발명의 바람직한 실시예에 따라 디코딩 연산을 적용하여서 디코딩 되어서, 그 워드가 우로 시프트 되어, 포인터 a, b, c 및 d가 각각 가리키는 기억 위치에 있는 값을 기억하기 전에 하위 8비트와 i번째 8-비트 필드가 정렬된다.
다음 코드는, 상술한 표준 접근법과 본 발명의 바람직한 실시예의 접근법을 사용하여 다수의 값을 가산하는 예이다:
#define SIZE 8//this defines that each array contains 8 values
int8 A[SIZE], B[SIZE], C[SIZE], D[SIZE];//this defines that arrays A, B, C&D
contain 8-bit integers
word E[SIZE];//this defines that array E contains words(i.e. 32-bits)
int8 serial_sum8(int8*p)//this defines a serial sum operation for 8-bit integers
{
return p[0]+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7];
}
word parallel_sum8(word*p)//this defines a parallel sum operation for 32-bit words
{
return p[0]+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7];
}
int main(void)//program starts
{
int i; //a variable "i" is defined
int8 resa, resb, resc, resd;//this defines that results resa, resb,
resc, resd are 8-bit integers
word res;//this defines that the result "res" is a 32-bit word
//Initialize A, B, C and D
for(i=0;i<SIZE:i++)//loop is defined for i=0 to SIZE in order to generate arbitrary contents for arrays A, B, C and D for the sake of illustration
{
A[i]=i-10;
B[i]=-i*3+10;
C[i]=i+5;
D[i]=i*i-5*i+1;
}
//standard approach
resa=serial_sum8(A);
resb=serial_sum8(B);
resc=serial_sum8(C);
resd=serial_sum8(D);
printf("Results 1:%d%d%d%d\n", resa, resb, resc, resd);
//approach of preferred embodiments
for(i=0;i<SIZE;i++)
E[i]=pack(A[i],B[i],C[i],D[i]);//pack data first using encoding
technique of present invention
res=parallel_sum8(E);
unpack(res, &resa, &resb, &resc, &resd);
printf("Results 2:%d%d%d%d\n", resa, resb, resc, resd);
return 1;
}
위 두 조각의 코드가 런(run)하면, 표준 접근법과 바람직한 실시예 접근법에대해 인쇄된 결과는 동일하다. 그러나, 이 표준 접근법은 28 가산을 필요로 하는 한편, 바람직한 실시예의 접근법은 7 가산만을 필요로 한다. 그러나, 팩킹 및 언팩킹은 약 100 연산을 가산하여 그 처리 단계가 꽤 복잡할 경우 최고의 이득을 달성한다. 8x8 DCT에서는, 약 450 가산을 64 데이터 값마다 필요로 하므로 중요한 이득을 달성한다.
상기 설명의 경우, 본 발명의 바람직한 실시예는, 논-SIMD 명령어(즉, 표준 명령어)가 복합 값에 관해 사용되게 하고, 그 결과를 고려하여 디코딩 되게 하여 각 구성 데이터 값에 대해 그 알고리즘을 개별적으로 적용하는 일련의 결과들을 산출하다. 이는 상당히 처리 속도가 향상된다. 이 기술이 특히 이롭다는 것을 발견할 수 있는 하나의 특정 필드는, 많은 DCT 연산을 수행할 필요가 있고 각 DCT 연산이 부호 데이터에 관해 수행된 일련의 가산과 곱셈으로 구성되어 있는 JPEG 또는 MPEG 압축 및 해제의 필드이다. 예를 들면, 일반적인 DCT를 8-비트 부호 데이터에 관해 수행하여 16-비트를 출력할 수도 있다. 그 중간 결과를 적절히 비교함과 동시에 16-비트 부호 정수를 사용하여 DCT를 정확하게 계산하는 것이 가능하다. 본 발명의 바람직한 실시예의 기술을 사용함으로써, 2개의 16-비트 DCT 계산을, 표준 32-비트 산술 명령어를 사용하여 32-비트에 관해 병렬로 수행할 수 있다. 통상의 DCT 알고리즘을 변경 없이 적용한 후, 전처리 단계를 수행하여 2개의 DCT용으로 사용된 데이터를 하나의 복합 값으로 인코딩 한다. 이 결과를 2개의 DCT 결과로 디코딩 한다. 이러한 인코딩 및 디코딩이 특히 효율적인 연산(ARM 프로세서 코더를 사용하여, 인코딩 하는데 하나의 명령어를 필요로 하고(ADD C, A, B, LSL#16), 디코딩 하는데 3개의 명령어를 필요로 하며(MOVS B, C, ASR#16, SUB A, C, B, LSL#16에 뒤이은 ADC B, B,#0))이므로, 실제로 JPEG에서 팩킹을 무료로 할 수 있고, DCT 계산은 거의 두 배만큼 빨라진다는 것을 알 수 있다.
여기서는 특정 실시예를 설명하였지만, 이에 본 발명을 한정하는 것이 아니고 본 발명에 많은 변형 및 추가를 본 발명의 범위 내에서 하는 것을 알 것이다. 예를 들면, 이하의 독립항의 다양한 특징의 조합을 본 발명의 범위로부터 벗어나지 않고 종속항의 특징으로 할 수 있다.

Claims (21)

  1. 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하되, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 그 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 그 복합 값을 형성하는 인코딩 연산을 수행하여서 p n-비트 필드를 포함하는 복합 값으로서 그 복수의 부호 n-비트 데이터 값을 인코딩 하는 단계와,
    그 산술 연산을 그 복합 값에 적용하여 p n-비트 필드를 포함하는 인코딩된 결과를 산출하는 단계와,
    그 인코딩된 결과를 디코딩 하여, 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하고 그 인코딩 단계 동안 인접한 부호 확장시킨 데이터 값의 가산에 의해 일어난 임의 결과에 대해 정정하는 디코딩 연산을 적용하여서 p 최종 결과를 산출하는 단계를 포함하되,
    상기 각 최종 결과는 대응하는 부호 n-비트 데이터 값에 대한 산술 연산의 적용을 나타내는, 데이터 처리 시스템 운용 방법.
  2. 제 1 항에 있어서,
    상기 인코딩 연산은,
    첫 번째 n-비트 필드가 중간 값의 n 최하위 비트를 포함하고, p번째 n-비트필드가 중간 값의 n 최상위 비트를 포함하는 중간 값의 각각의 n-비트 필드에 상기 복수의 n-비트 데이터 값을 할당하는 단계와,
    p-1번째 내지 첫 번째 n-비트 필드의 경우, p-1번째 n-비트 필드에서 시작하고, n-비트 필드가 음인 데이터 값인지를 판단하여, 그럴 경우 중간 값으로부터 n 상위 비트를 나타낸 인접한 n-비트 필드와 정렬된 논리 값 1을 감산하여서 새로운 중간 값을 발생하는 단계를 포함하되,
    첫 번째 n-비트 필드가 처리되었을 때 상기 중간 값이 상기 복합 값인 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 인코딩된 결과의 첫 번째 n-비트 필드는 그 인코딩된 결과의 n 최하위 비트를 포함하고, 그 인코딩된 결과의 p-번째 n-비트 필드는 그 인코딩된 결과의 n 최상위 비트를 포함하며, 상기 디코딩 연산은,
    첫 번째 n-비트 필드 내지 p-1번째 n-비트 필드의 경우, 첫 번째 n-비트 필드에서 시작하는 단계와, n-비트 필드에 있는 데이터가 음인지를 판단하는 단계와, 이 판단에 의해 음일 경우, 그 인코딩된 결과에 n 상위 비트를 나타낸 인접 n-비트 필드와 정렬된 논리 값 1을 가산하여서 새로운 인코딩된 결과를 발생하는 단계를 포함하되,
    상기 p-1 번째 n-비트 필드가 처리되었을 때에, 각 n-비트 필드는 상기 p 최종 결과 중의 하나를 포함하는 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  4. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 산술 연산은, 하나 또는 그 이상의 복합 값의 함수이고, 각 복합 값은 복수의 부호 n-비트 데이터 값을 인코딩하고, 각 복합 값은 대응하는 복수의 부호 n-비트 데이터 값에 상기 인코딩 단계를 적용하여서 발생되는 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  5. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 산술 연산은, 복수의 연산을 포함하는 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  6. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 부호 데이터 값은, 2의 보수 포맷인 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  7. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 산술 연산은, 하나 또는 그 이상의 이산 여현 변형(DCT) 연산을 포함하고, 각 DCT 연산은 하나 또는 그 이상의 복합 값의 함수이고, 각 복합 값은 복수의 부호 n-비트 데이터 값을 인코딩하고, 각 복합 값은 대응하는 복수의 부호 n-비트 데이터 값에 상기 인코딩 단계를 적용하여서 발생되는 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  8. 제 7 항에 있어서,
    JPEG 또는 MPEG 압축 또는 해제를 수행하기 위해 상기 하나 또는 그 이상의 DCT 연산을 적용하는 것을 특징으로 하는 데이터 처리 시스템 운용 방법.
  9. 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하되,
    산술 연산을 적용하기 위한 프로세서와,
    그 복수의 부호 n-비트 데이터 값을 기억하기 위한 기억장치를 포함하되,
    상기 프로세서가, 산술 연산을 실행하기에 앞서, 그 기억장치에서 복수의 부호 n-비트 데이터 값을 검색하고, 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 복합 값을 형성하는 인코딩 연산을실행하여서 복수의 부호 n-비트 데이터 값을 p n-비트 필드를 포함한 복합 값으로서 인코딩 하도록 구성되고, 상기 복합 값이 기억장치에 기억되고,
    상기 프로세서가 산술 연산을 복합 값에 적용하여 p n-비트 필드를 포함한 인코딩된 결과를 산출하여, 기억장치에 그 인코딩된 결과를 기억하도록 구성되며,
    상기 프로세서가 산술 연산의 적용에 이어서 그 인코딩된 결과를 디코딩 하여 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안 인접 부호 확장 데이터 값의 가산으로 일어난 임의 결과를 정정하는 디코딩 연산을 수행하여서 p 최종 결과를 산출하도록 더 구성되고,
    각 최종 결과는 대응한 부호 n-비트 데이터 값으로의 산술 연산의 적용을 나타내는, 데이터 처리 시스템.
  10. 제 9 항에 있어서,
    상기 프로세서는, 인코딩 및 디코딩 연산을 실행하도록 구성된 시프터 및 산술 논리장치(ALU)를 구비한 것을 특징으로 하는 데이터 처리 시스템.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 기억장치는, 상기 프로세서에 의해 사용된 데이터 값을 기억하기 위한 레지스터 뱅크인 것을 특징으로 하는 데이터 처리 시스템.
  12. 제 9 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 인코딩 연산은, 첫 번째 n-비트 필드가 중간 값의 n 최하위 비트를 포함하고, p번째 n-비트 필드가 중간 값의 n 최상위 비트를 포함하는 중간 값의 각각의 n-비트 필드에 상기 복수의 n-비트 데이터 값을 할당하도록 구성되고, p-1번째 내지 첫 번째 n-비트 필드의 경우, p-1번째 n-비트 필드에서 시작하고, n-비트 필드가 음인 데이터 값인지를 판단하여, 그럴 경우 중간 값으로부터 n 상위 비트를 나타낸 인접한 n-비트 필드와 정렬된 논리 값 1을 감산하여서 새로운 중간 값을 발생하도록 구성되어서, 첫 번째 n-비트 필드가 처리되었을 때 상기 중간 값이 상기 복합 값인 것을 특징으로 하는 데이터 처리 시스템.
  13. 제 9 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 인코딩된 결과의 첫 번째 n-비트 필드는 그 인코딩된 결과의 n 최하위 비트를 포함하고, 그 인코딩된 결과의 p-번째 n-비트 필드는 그 인코딩된 결과의 n 최상위 비트를 포함하며, 상기 디코딩 연산은, 첫 번째 n-비트 필드 내지 p-1번째 n-비트 필드의 경우, 첫 번째 n-비트 필드에서 시작하고, n-비트 필드에 있는 데이터가 음인지를 판단하고, 이 판단에 의해 음일 경우, 그 인코딩된 결과에 n 상위 비트를 나타낸 인접 n-비트 필드와 정렬된 논리 값 1을 가산하여서 새로운 인코딩된 결과를 발생하도록 구성되어서, 상기 p-1 번째 n-비트 필드가 처리되었을 때에, 각 n-비트 필드는 상기 p 최종 결과 중의 하나를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  14. 제 9 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 산술 연산은, 하나 또는 그 이상의 복합 값의 함수이고, 각 복합 값은 복수의 부호 n-비트 데이터 값을 인코딩하고, 각 복합 값은 대응하는 복수의 부호 n-비트 데이터 값에 상기 인코딩 연산을 적용하여서 발생되는 것을 특징으로 하는 데이터 처리 시스템.
  15. 제 9 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 산술 연산은, 복수의 연산을 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  16. 제 9 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 부호 데이터 값은, 2의 보수 포맷인 것을 특징으로 하는 데이터 처리 시스템.
  17. 제 9 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 산술 연산은, 하나 또는 그 이상의 이산 여현 변형(DCT) 연산을 포함하고, 각 DCT 연산은 하나 또는 그 이상의 복합 값의 함수이고, 각 복합 값은 복수의 부호 n-비트 데이터 값을 인코딩하고, 각 복합 값은 대응하는 복수의 부호 n-비트 데이터 값에 상기 인코딩 연산을 적용하여서 발생되는 것을 특징으로 하는 데이터 처리 시스템.
  18. 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하도록 구성된 데이터 처리 시스템용 인코딩/디코딩 관리장치를 제공하되, 상기 인코딩/디코딩 관리장치가, 그 데이터 처리 시스템에 의해 산술 연산을 적용하기에 앞서 그 복수의 부호 'n-비트' 데이터 값을 복합 값으로서 인코딩 하여 인코딩 결과를 발생하고, 연속적으로 그 인코딩된 결과를 디코딩 하여 p최종 결과를 산출하고, 상기 인코딩/디코딩 관리장치는,
    동작상 각 부호 데이터 값을 각각의 n-비트 필드와 정렬시키고, 각 부호 데이터 값을 복합 값의 최상위 비트까지 부호 확장시키고, 그 정렬시키고 부호 확장시킨 데이터 값을 가산하여 복합 값을 형성하는 인코딩 연산을 수행하여서 복수의 부호 n-비트 데이터 값을 p n-비트 필드를 포함한 상기 복합 값으로서 인코딩하도록 구성된 인코더와,
    동작상 그 인코딩된 결과의 각 n-비트 필드로부터 데이터를 추출하여 인코딩 단계 동안 인접 부호 확장 데이터 값의 가산에 의해 일어난 임의 결과를 정정하는 디코딩 연산을 적용하여서 상기 p 최종 결과를 산출하도록 구성된 디코더를 구비하여,
    각 최종 결과는 대응한 부호 n-비트 데이터 값으로의 산술 연산의 적용을 나타내는, 데이터 처리 시스템용 인코딩/디코딩 관리장치.
  19. 첨부도면을 참조하여 실제로 상술한 것처럼 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하기 위한 데이터 처리 시스템.
  20. 첨부도면을 참조하여 실제로 상술한 것처럼 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하기 위한 데이터 처리 시스템 운용 방법.
  21. 첨부도면을 참조하여 실제로 상술한 것처럼 복수 'p'의 부호 'n-비트' 데이터 값에 관한 산술 연산을 수행하도록 구성된 데이터 처리 시스템용 인코딩/디코딩 관리장치.
KR1020017006107A 1998-11-20 1999-09-30 데이터 처리 시스템 및 복수의 부호 데이터 값의 산술연산 수행방법 KR20020021078A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9825537A GB2343969A (en) 1998-11-20 1998-11-20 A data processing apparatus and method for performing an arithemtic operation on a plurality of signed data values
GB9825537.5 1998-11-20
PCT/GB1999/003255 WO2000031623A1 (en) 1998-11-20 1999-09-30 A data processing system and method for performing an arithmetic operation on a plurality of signed data values

Publications (1)

Publication Number Publication Date
KR20020021078A true KR20020021078A (ko) 2002-03-18

Family

ID=10842824

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017006107A KR20020021078A (ko) 1998-11-20 1999-09-30 데이터 처리 시스템 및 복수의 부호 데이터 값의 산술연산 수행방법

Country Status (4)

Country Link
JP (1) JP2002530775A (ko)
KR (1) KR20020021078A (ko)
DE (1) DE69910245T2 (ko)
IL (1) IL142151A0 (ko)

Also Published As

Publication number Publication date
IL142151A0 (en) 2002-03-10
DE69910245T2 (de) 2004-06-09
JP2002530775A (ja) 2002-09-17
DE69910245D1 (de) 2003-09-11

Similar Documents

Publication Publication Date Title
US5644522A (en) Method, apparatus and system for multiply rounding using redundant coded multiply result
US5640578A (en) Arithmetic logic unit having plural independent sections and register storing resultant indicator bit from every section
US5634065A (en) Three input arithmetic logic unit with controllable shifter and mask generator
US6032170A (en) Long instruction word controlling plural independent processor operations
US5465224A (en) Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs
US5696959A (en) Memory store from a selected one of a register pair conditional upon the state of a selected status bit
KR100445542B1 (ko) 프로세서의커스텀오퍼레이션들을위한방법및장치
US6116768A (en) Three input arithmetic logic unit with barrel rotator
US6098163A (en) Three input arithmetic logic unit with shifter
US5960193A (en) Apparatus and system for sum of plural absolute differences
US5596763A (en) Three input arithmetic logic unit forming mixed arithmetic and boolean combinations
US5600847A (en) Three input arithmetic logic unit with mask generator
US5606677A (en) Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
US6016538A (en) Method, apparatus and system forming the sum of data in plural equal sections of a single data word
US5420809A (en) Method of operating a data processing apparatus to compute correlation
US5493524A (en) Three input arithmetic logic unit employing carry propagate logic
US6067613A (en) Rotation register for orthogonal data transformation
US5644524A (en) Iterative division apparatus, system and method employing left most one&#39;s detection and left most one&#39;s detection with exclusive or
US6026484A (en) Data processing apparatus, system and method for if, then, else operation using write priority
US5712999A (en) Address generator employing selective merge of two independent addresses
US5512896A (en) Huffman encoding method, circuit and system employing most significant bit change for size detection
US6338135B1 (en) Data processing system and method for performing an arithmetic operation on a plurality of signed data values
US5974539A (en) Three input arithmetic logic unit with shifter and mask generator
US8700688B2 (en) Polynomial data processing operation
US5689695A (en) Conditional processor operation based upon result of two consecutive prior processor operations

Legal Events

Date Code Title Description
A201 Request for examination
SUBM Surrender of laid-open application requested