KR100455011B1 - 정값화처리및포화연산처리로이루어진라운딩처리를적합하게행할수있는프로세서 - Google Patents

정값화처리및포화연산처리로이루어진라운딩처리를적합하게행할수있는프로세서 Download PDF

Info

Publication number
KR100455011B1
KR100455011B1 KR1019970064288A KR19970064288A KR100455011B1 KR 100455011 B1 KR100455011 B1 KR 100455011B1 KR 1019970064288 A KR1019970064288 A KR 1019970064288A KR 19970064288 A KR19970064288 A KR 19970064288A KR 100455011 B1 KR100455011 B1 KR 100455011B1
Authority
KR
South Korea
Prior art keywords
value
instruction
register
bit integer
result
Prior art date
Application number
KR1019970064288A
Other languages
English (en)
Other versions
KR19980042913A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=18121299&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100455011(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마츠시타 덴끼 산교 가부시키가이샤 filed Critical 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR19980042913A publication Critical patent/KR19980042913A/ko
Application granted granted Critical
Publication of KR100455011B1 publication Critical patent/KR100455011B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 ROM 등에 기억된 명령열에 따른 처리를 행하는 프로세서에 관한 것으로, 부호부 데이터를 부호없는 데이터로 변환하는 정값화(正値化) 처리와, 적당한 비트에서 라운딩하는 포화연산처리를 고속으로 실행하기 위하여, 정값화 포화연산명령『MCSST D1』이 해독된 경우 적화결과 전용 레지스터(6)는 보유값을 패스(P1) 상으로 출력한다. 비교회로(22)는 적화결과 전용 레지스터(6)의 보유값과, 32비트 부호부 정수(0x000000FF)의 대소를 비교한다. 정부 판별회로(23)는 적화결과 전용 레지스터(6)에 의하여 보유되는 값의 제 8비트째가 온인지를 판정한다. 멀티플렉서(24)는 적화결과 전용 레지스터(6)의 보유값, 정수발생회로(21)가 발생한 최대값『0x0000_0000』, 정값화 포화연산명령『MCSST D1』이 발생한 제로값『0x0000_0000』중 어느 하나를 데이터 버스(18) 상으로 출력한다.

Description

정값화 처리 및 포화연산처리로 이루어진 라운딩 처리를 적합하게 행할 수 있는 프로세서{PROCESSOR WHICH CAN FAVORABLY EXECUTE A ROUNDING PROCESS COMPOSED OF POSITIVE CONVERSION AND SATURATED CALCULATION PROCESSING}
본 발명은 ROM 등에 기억된 명령열에 따른 처리를 행하는 프로세서에 관한 것이다.
최근, 프레임내 부호화, 필드내 부호화, 움직임 보상 예측 등으로 압축된 동화상 데이터나, 정지화상 데이터, 음성 데이터 등 다양한 종류의 데이터를 대화적으로 재생할 수 있는 애플리케이션 소프트웨어가 보급될 조짐을 보이고 있다. 그리고, 이러한 소프트웨어의 개발을 보다 효과적으로 행할 수 있는 멀티미디어 지향의 프로세서에 대한 수요가 갑자기 높아지고 있다. 멀티미디어 지향 프로세서란, 화상이나 음성 데이터 등의 압축/신장처리의 프로그래밍을 보다 용이하게 할 수 있도록 아키텍쳐가 특화된 프로세서이다. 화상 데이타를 처리할 때 특히 고속화처리가 요청되는 것은, N×N개의 행렬상의 성분을 갖는 압축 데이터와, N×N개의 행렬상의 성분을 갖는 계수 데이터의 행렬곱 연산이다. N×N개의 행렬상의 성분을 갖는 압축 데이터의 대표적인 것으로서는, MPEG에 규정된 가로 16 × 세로 16의 휘도 성분으로 이루어진 휘도 블록, 가로 8 × 세로 8의 청색 차이성분으로 이루어진 청색 차이블록(Cb 블록), 가로 8 × 세로 8의 적색 차이성분으로 이루어진 적색 차이블록(Cr 블록)을 필두로 들 수 있다. 그리고, 이러한 압축 데이터에 대한 행렬곱 연산은 MPEG, JPEG의 화상 압축방식에 있어서, 역 DCT의 근사계산을 행할 때에 특히 높은 빈도로 행해진다.
행렬곱 연산의 고속화를 도모한 종래의 멀티미디어 지향 프로세서에 대하여 설명하기로 한다. 종래의 멀티미디어 지향 프로세서의 기본적인 아키텍쳐로서는, 하드웨어 구성으로 적화(積和)결과 전용 레지스터(이하 MCR로 약기하는 경우가 있음)가 설치되고, 명령체계로는 적화값을 전송하는 전송명령『MOV MCR,**』이 설정되어 있다.
상기 멀티미디어 지향 프로세서의 하드웨어 구성도의 일례를 도 1에 도시한다. 도 1에 있어서, 산술논리 연산회로(61)는 압축 데이터를 구성하는 성분(Fij)과, 계수행렬을 구성하는 성분(Gji)의 승산을 승산명령에 따라서 행한다. 그와 더불어 적화결과 전용레지스터(62)가 보유하는 적화값을 인출하여 승산결과(Gji*Fij)와 인출된 적화값을 가산하고, 가산 후, 가산결과를 적화결과 전용레지스터(62)에 보유시킨다. 산술논리 연산회로(61)가 상기 동작을 반복함으로써 적화결과 전용레지스터(62)에는 지금까지의 적화값이 축적된다. 승산이 소정회수 행해지면, 프로그래머는 적화값 전송명령을 발행한다. 전송명령의 발행에 의해 적화결과 전용레지스터(62)의 축적값을 범용 레지스터로 전송하여, 이것을 1행 1열의 행렬곱 결과로서 이용한다. 동일한 처리를 N×N회 반복하면, N×N 압축 데이터와 N×N 계수행렬의 행렬곱 연산이 종료된다.
그런데, 현 상태의 멀티미디어 지향 프로세서를 이용할 때, 프로그래머가 고심하는 것은 적화값의 보정을 위한 정값화(正値化) 처리 및 포화 연산처리이다.
정값화 처리란, 적화값이 부(負)의 수일 때 이것을 제로(0)값 혹은 정(正)의 값으로 라운딩하는 처리를 말한다. 일반적으로, 압축 데이터는 전후 데이터와의 상대값을 나타내는 부호부 데이터로서 표현된다. 따라서, 압축 데이터의 각 성분과 소정계수의 적화값은 부의 수로서 나타나는 경우가 있다. 한편, 디스플레이, 스피커 등의 재생계 하드웨어는 부호없는 데이터밖에 처리할 수 없으므로, 적화값을 이용할 때는 적절하게 정값화 처리를 행할 필요가 있다.
포화 연산처리란, 적화값이 소정범위를 초과하는 경우(포화하는 경우)에 이것을 소정값으로 라운딩하는 처리를 말한다. 즉, 압축 데이터의 적화(積和)의 반복에 있어서, 전송시에 발생된 비트 오류를 포함한 성분을 적화한 경우, 적화값이 이론값을 상당히 초과할 가능성이 높아진다. 한편, 재생계 하드웨어는 부호없는 데이터로서 표현 가능한 유효 비트수, 예를 들면 8비트와 같이 물리적으로 제약되어 있으므로, 적화값을 유효비트로 라운딩하는데 포화 연산처리가 필요하게 된다.
이러한 정값화 처리 및 포화 연산처리를 실현하기 위하여 적화값 보정용의 서브루틴을 이용하여 적화값을 보정하는 것이 종래부터 행하여져 왔다. 적화값 보정루틴의 일례를 다음과 같이 설명하기로 한다. 상기 일례에 있어서, 레지스터폭, 연산기의 연산폭은 32비트이다. MCR도 32비트폭을 갖지만, 그 적화값은 부호부 16비트 정수로 표현되고 있다. 재생계 하드웨어가 이용할 수 있는 데이터는 부호없는8비트 정수로 표현되어야만 한다. 또한, 본 루틴을 사용할 때의 결정으로서는 연산결과의 저장용으로 데이터 레지스터(D0)를 이용하는 것으로 한다. 각 명령은 2 오퍼랜드 표기이고, 좌변, 우변의 오퍼랜드를 각각 제 1 오퍼랜드, 제 2 오퍼랜드라 칭한다. 제 2 오퍼랜드는 전송명령의 전송장소의 지정과, 연산결과의 저장장소의 지정을 겸하고 있다.
명령1 : MOV MCR,D0
명령2 : CMP OxFFFF_8000,DO
명령3 : BCC CARRY
명령4 : MOV 0x0000_0000,D0
명령5 : BRA END
CARRY :
명령6 : CMP OxO000_00FF,D0
명령7 : BCS END
명령8 : MOV OxO000_00FF,D0
END : (정값화 포화 연산처리의 종료)
상기 루틴의 각 명령을 순서대로 설명하면 우선 명령1『MOV MCR, DO』에 있어서, 적화결과 전용레지스터(MCR)의 보유값을 데이터 레지스터(D0)로 전송한다. 명령2『CMP 0xFFFF_8000,D0』는 데이터 레지스터(D0)와 『0xFFFF_8000』을 비교한다(『0x』는 16진수의 수치인 것을 나타낸다). 여기에서의 비교는 제 2 오퍼랜드에서 지시되는 레지스터(D0)의 보유값으로부터 제 1 오퍼랜드에서 즉치(卽値)로서 기술되는 『OxFFFF_8000』을 뺌으로써 행해진다.
명령2의 즉치『0xFFFF_8000』의 제 16 비트는 부호부 16비트 정수에 있어서의 부호비트이고, D0 레지스터의 보유값이 『0xFFFF_8000』보다 큰 것은 MCR에 축적되는 적화값이 부의 수로 표현되는 것을 나타낸다.
반대로, 레지스터(D0)의 보유값이『0xFFFF_8000』보다 작은 것은, MCR에 축적되는 적화값이 정수로 표현되는 것을 나타낸다. 이와 같이, 적화값이 정수라면 자리수 내림이 일어나 플래그 레지스터에 있어서의 캐리 플래그가 세트된다.
명령3에 있어서의 『BCC』의 『B』는 분기명령 『Branch(분기)』의 의미이고, 『CC』는 『Carry Clear(캐리 크리어)』의 의미이다.
비교 결과, 레지스터(D0)의 값이 『0xFFFF_8000』보다 작은 경우, 라벨 『CARRY』가 부여된 명령(6)으로 분기한다.
비교 결과, 레지스터(D0)의 값이『0xFFFF_8000』보다 큰 경우, 명령4 『MOV 0x0000_0000,D0』에 있어서 레지스터(D0)에 제로를 전송함으로써, 적화값을 제로로 보정한다. 보정 후, 명령5의 무조건 분기명령 『BRA END』에 있어서, 정값화 처리의 종료를 나타내는 END 라벨로 분기함으로써 정값화 처리를 종료한다.
이상은 레지스터(D0)의 보유값이 부의 수인 경우의 동작이다. 계속해서, 레지스터(D0)의 보유값이 『0x0000_00FF』를 초과한 경우의 동작에 대하여 설명하기로 한다. 0x0000_0OFF를 하회하는 경우는, 명령6 『CMP OxO000_0OFF,D0』에 있어서, 레지스터(D0)의 값을 OxOOOO_OOFF와 비교한다. 여기에서의 비교는 제 2 오퍼랜드에서 지시되는 레지스터(D0)의 보유값으로부터 제 1 오퍼랜드에서 즉치로서 기술되는 0x0000_00FF를 뺌으로써 행해진다. 레지스터(D0)의 보유값이 0x0000_00FF보다 작은 경우는 자리수 내림이 일어나 플래그 레지스터에 있어서의 캐리 플래그가 세트된다.
명령7 『BCS END』에 있어서의『CS』는『Carry Set(캐리 세트)』의 의미이다. 캐리 플래그가 세트되면 명령2로부터 라벨 『END』로의 분기를 행한다.
캐리 플래그가 세트되어 있지 않으면, 명령7에서의 분기는 행해지지 않고 명령8로 분기하고, 명령8의 전송명령『MOV OxOOOO_OOFF, DO』에 있어서 레지스터(D0) 에 OxOO00_00FF를 전송함으로써 연산결과를 0x0000_00FF로 보정하고, 포화연산을 종료한다.
그런데, 상기 적화값의 보정에 있어서 문제인 것은, 1회의 적화값 보정에 관하여 여덟개의 명령이 삽입되어 코드량이 비약적으로 증대하는 점이다. 소프트웨어를 정보기기에 내장하기 위하여 프로그램을 미리 ROM에 기억시킨 경우는, 코드량이 증대함에 따라 ROM의 실장량도 증가하고, 제조 비용이 상승된다. 디지털 비디오 플레이어, 전자수첩, 워드 프로세서를 개발하는 많은 가전전기 제조업자는 독자적인 신장처리 프로그램의 실장에 의해 타사와의 차별화를 도모하고자 하지만, 현 상태의 신장처리 프로그램 실장은 ROM의 실장량 증대에 따른 제조비용 향상이라는 폐해에 저지되어 침투도는 좋지 않다.
또, 1회의 적화 보정으로 여덟개의 명령을 실행하는 것은 실행시간의 면에서 막대한 문제이다. 예를 들면, 도 2에 도시된 바와 같이, 역 DCT의 근사 계산을 행하기 위해 8×8 성분으로 된 압축 데이터(Fij)(i,j=1,2,3,4.5…8)와, 8×8의 계수행렬(Gji)(i,j=1,2,3,4,5…8)의 행렬곱 Hij(i,j=1,2,3,4,5…8)를 산출하는 경우, 행렬곱 성분 H21의 산출을 위하여 산술 연산회로는 압축 데이터의 1열째 성분 F11, F21, F31, F41, F51, F61, F71, F81과 계수행렬의 1행째 성분 G11, G12, G13, G14, G15, G16, G17, G18과 승산결과의 적화 처리를 행하고, 적화값에 대하여 정값화 포화 연산처리를 실시한다. 계속해서, 행렬곱 성분 H12의 산출을 위하여 산술 연산회로는 압축 데이터의 2열째 성분 F12, F22, F32, F42, F52, F62, F72, F82와 계수행렬의 1행째 성분 G11, G12, G13, G14, G15, G16, G17, G18의 승산결과의 적화처리를 행하고, 적화값에 대하여 정값화 포화 연산처리를 실시한다.
동일한 적화 및 정값화 포화 연산처리를 행하여 다른 성분 H31, H41, H51, H61, H71, H81…을 얻을 필요가 있으나, 행렬곱(Hij)(i,j=1,2,3,4,5…8)의 성분수는 64개이므로, 상기 정값화 포화 연산처리를 위한 적화값 보정루틴의 실행은 합계 64회도 행해지게 된다. 적화값 보정루틴 중에는 분기명령(명령3, 명령5, 명령7)이 존재하여 본 적화값 보정루틴의 실행시에는 부의 수 발생, 포화의 유무에 불구하고 반드시 분기가 발생하기 때문에, 상기 64회의 적화값 보정루틴의 반복은 결코 자연스러운 것은 아니다. 프로세서가 파이프 라인처리의 도입에 의해 적화의 고속화를 행하자고 하는 경우에는, 상기 3가지 분기명령의 실행을 위해 처리효율이 현저히 저하된다.
행렬곱 연산을 고속화하기 위해서는 행렬곱 연산을 실현하는 전용회로를 내장시키면 된다고 생각할 수 있다. 그러나, 행렬곱 연산 전체를 전용회로로 실현하면 하드웨어 규모가 현저히 증대하는 동시에 프로그래머가 기술한 프로그램대로 다양한 처리를 행한다는 프로세서 특유의 범용성이 손상되게 된다. 프로세서 특유의 범용성이 손상되면, 가령 독자적인 신장처리 프로그램으로 프로세서를 제어시키고 싶다는 바람이 있어도 이러한 수요에 부응하지 못하는 결과를 초래하게 된다.
본 발명의 목적은 정값화 처리 및 포화 연산처리로 이루어진 라운딩 처리를 보다 고속으로 행할 수 있고, 또한, 라운딩 처리를 위한 코드량의 증가를 최저한으로 억제시킬 수 있는 프로세서를 제공하기 위한 것이다.
도 1은 종래기술에 있어서, 적화결과 저장용 레지스터(62)가 설치되는 적화결과 저장용 레지스터(61)를 도시한 도면.
도 2는 8×8 성분으로 이루어진 행렬의 행렬곱을 취하는 상태를 설명하기 위한 설명도.
도 3은 본 발명의 제 1 실시예에 따른 프로세서의 구성도.
도 4는 본 발명의 제 1 실시예에 따른 연산처리장치의 구성도.
도 5는 본 발명의 제 1 실시예에 따른 행렬곱 서브루틴을 구성하는 명령열을 도시한 도면.
도 6은 적화기능부 승산명령 『MACCB D0,D1』의 명령 포맷도.
도 7은 정값화 포화연산명령『MCSST』의 명령 포맷도.
도 8의 (a)는 32비트폭에 있어서의 승수, 피승수, 적화값, 행렬곱 성분의 표현을 도시한 도면.
도 8의 (b)는 정값화 포화연산회로(3)가 어떠한 적화값을 라운딩하는지를 나타내는 설명도.
도 9는 정수 발생회로(21), 제로값 발생회로(25)의 출력값의 조합과, 멀티플렉서(24)의 출력 관계를 나타내는 진리값표를 도시한 도면.
도 10은 32×32 비트의 승산 적화기로 8×8 비트의 승산을 행하는 경우의 데이터의 흐름을 설명하기 위한 설명도.
도 11은 32×32 비트의 승산 적화기로 8×8 비트의 승산을 행하는 경우의 데이터의 흐름을 설명하기 위한 설명도.
도 12a는 도 3에 도시된 프로세서의 내부에 의해 행해지는 파이프라인 처리의 일례도.
도 12b는 도 3에 도시된 프로세서의 내부에 의해 행렬곱 서브루틴이 파이프라인 처리에 의해 실행되는 상태를 도시한 도면.
도 13은 본 발명의 제 1 실시예의 응용예에 따른 정값화 포화연산명령 『MCSST』의 명령 포맷도.
도 14는 본 발명의 제 1 실시예의 응용예에 따른 연산처리장치의 내부를 도시한 도면.
도 15는 본 발명의 제 2 실시예에 따른 연산처리장치의 구성도.
도 16은 정값화 포화연산부 승산명령 『MULBSST Dm, Dn』의 명령 포맷도.
* 도면의 주요 부분에 대한 부호의 설명 *
1 : 레지스터 파일 2 : 산술논리 연산회로
3 : 정값화 포화연산회로 4, 5 : 부호확장회로
6 : 적화결과 전용 레지스터 11 : ROM
12 : 명령판독회로 13 : 디코더
14 : 연산처리장치 21 : 정수발생회로
22 : 비교회로 23 : 정부판별회로
24 : 멀티플렉서 25 : 제로값 발생회로
상기 목적은 명령열 중의 명령을 순차적으로 해독하여 실행하는 프로세서에 있어서, 명령열에서의 몇개의 명령은 조작할 값의 저장 장소의 지정을 포함하고, 다음으로 해독할 명령에 당해 명령이 보정명령인 취지의 조작내용 지정이 존재하면 이것을 검출하는 검출수단과, 다음에 해독할 명령으로부터 보정명령인 취지의 조작 내용 지정이 검출되면 당해 명령에 있어서의 조작할 값의 저장 장소에 저장된 부호있는 m비트 정수값을 부호없는 s비트 정수의 범위(s<m)로 라운딩하는 라운딩 수단을 구비하는 프로세서에 의해 달성된다. 이상의 프로세서에 의하면, 값의 라운딩 처리가 명령열에 포함되는 보정 명령의 검출시에 한번에 행해지므로, 라운딩 처리를 위하여 프로그래머가 기술하는 명령량은 1명령으로 완료된다.
라운딩 처리가 하나의 보정명령에 기초하여 한번에 행해지므로, 1회당 실행시간이 매우 짧고, 예를 들어 연산값의 라운딩 처리가 데이터의 신장처리에 있어서 빈번하게 필요하게 되어도 이들의 처리가 원인으로 데이터의 신장시간이 늘어나지는 않는다.
라운딩 처리의 실행에는 보정명령을 실행하면 되므로, 프로세서가 파이프라인 처리의 도입에 의해 적화의 고속화를 하고자 하는 경우, 파이프라인을 함부로 혼란시키지는 않는다. 따라서, 적은 하드웨어의 추가로써 명령열의 코드사이즈의 축소와 명령열 실행의 고속화를 도모할 수 있다.
여기에서, 명령열 중의 명령을 순차적으로 해독하여 실행하는 프로세서에 있어서, 명령열에서의 몇개의 명령은 조작할 값의 저장장소를 포함하고, 다음에 해독할 명령에 당해 명령이 연산을 행하는 취지의 지정이 존재하면 이것을 검출하는 제 1 검출수단과, 연산을 행하는 취지의 지정 외에 연산결과의 라운딩을 행하는 취지의 지정이 다음에 해독할 명령에 포함되어 있으면 이것을 검출하는 제 2 검출수단과, 제 1 검출수단에 의해 연산을 행하는 취지의 지정이 검출되면 연산을 행하는 취지의 지정에 따라 m비트 정수값을 이용한 연산을 행하는 연산수단과, 제 2 검출수단에 의해 라운딩을 행하는 취지의 지정이 검출되면 m비트 정수값을 이용하여 연산결과를 부호없는 s비트 정수의 범위(s<m)로 라운딩하는 라운딩 수단을 구비하여도 된다.
본 프로세서에 의하면, 부호부 연산결과에 대한 라운딩 처리를 행하는 보정명령을 준비함으로써 연산처리와 라운딩 처리의 2가지 처리를 1단계로 처리할 수 있고, 이로써 정값화 포화연산처리가 연산처리와 동일한 단계에서 실행된다. 따라서, 정값화 포화연산처리의 실행단계의 수를 실질적으로 0으로 할 수 있다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부도면과 관련한 다음의 상세한 설명을 통해 보다 분명해질 것이다.
( 제 1 실시예 )
이하, 본 발명의 제 1 실시예에 대하여 도면을 참조하여 설명하기로 한다. 도 3은 제 1 실시예에 있어서의 프로세서의 내부 구성도로서, 도 3에 도시된 바와 같이 본 프로세서는 ROM(11), 명령 판독회로(12), 디코더(13), 연산 실행장치(14), 어드레스 버스(17) 및 데이터 버스(18)로 구성되고, 어드레스 버스(17), 데이터 버스(18)를 통하여 RAM(10)과 접속된다.
RAM(l0)은 8×8의 행렬상의 성분으로 된 압축 데이터(Fij)(i,j= 1,2,3,4,5…8)와, 8×8의 행렬상의 성분으로 된 계수 데이터(Gji)(i,j= 1,2,3,4,5…8)를 미리 기억한다. 만일, 해독장소의 i행 j열의 어드레스가 어드레스 버스(17)로 출력되면, 기억된 데이터 중 그 어드레스에서 지시되는 데이터를 데이터 버스(18)로 출력한다. 또, 연산 실행장치(14)가 8×8의 행렬상의 성분으로 된 압축 데이터(Fij)와, 8×8의 계수 데이터(Gji)의 행렬곱 Hij(i,j=1,2,3,4,5…8)의 i행 j열 성분을 산출하여 기입장소의 i행 j열 어드레스가 어드레스 버스(17)로 출력되면 데이터 버스(18)로 전송되는 i행 j열 성분을 그 어드레스에서 지시하는 기억영역에 기입한다. 이와 같이 하여 기입된 행렬곱 Hij는 역 DCT의 근사계산으로 이용되고, 소정 처리가 실시된 후에 도시되지 않은 재생계 하드웨어가 이용된다. 또, Fij 및 Gji는 하위로부터 8비트째를 부호비트로 할당한 부호부 8비트 정수로서 표현된다.
ROM(l1)은 RAM(l0)이 기억하는 압축 데이터의 신장처리 프로그램을 기억하고, 판독장소 어드레스가 명령판독회로(12)로부터 출력되면 기억되어 있는 신장처리 프로그램 중 그 어드레스에서 지시되는 명령을 데이터 버스(18)로 출력한다.ROM(11)에 기억되어 있는 신장처리 프로그램은 전송명령, 연산명령, 분기명령 등 복수 종류의 명령이 혼재하여 이루어진다. 연산명령은 산술연산명령, 적화기능부 승산명령, 논리연산명령의 종별로 크게 분류된다. 가산명령, 감산명령, 승산명령을 비롯한 산술연산명령은 각각 제 1 오퍼랜드, 제 2 오퍼랜드를 갖는다. 제 1 오퍼랜드는 즉치지정 및 레지스터 직접지정이라는 2 종류의 어드레싱 모드를 갖는다. 이에 대하여, 제 2 오퍼랜드의 어드레싱 모드는 레지스터 직접지정 뿐이다. 이것은 제 2 오퍼랜드가 연산결과 저장장소의 지정을 겸하기 때문이다. 가산명령 『ADD imm, D1』의 일례로 말하면, 제 1 오퍼랜드는 즉치 imm으로 되고, 제 2 오퍼랜드는 레지스터명 D1으로 된다. 제 2 오퍼랜드는 연산결과의 저장장소로서 지정되기 때문에, 『ADD D0,D1』의 경우는 레지스터(D0)와 레지스터(D1)의 가산결과가 레지스터(D1)에 저장된다.
본 실시예에 있어서, 신장처리 프로그램은 8×8의 행렬성분으로 된 압축 데이터(Fij)와, 8×8의 행렬성분으로 된 계수 데이터(Gji)로부터 8×8 성분을 갖는 행렬곱(Hij)을 생성하는 행렬곱 서브루틴을 포함하고, 이 행렬곱 서브루틴은 주로 적화기능부 승산명령 『MACCB Dm,Dn』및 정값화 포화연산명령『MCSST Dm』으로 구성되는 것은 특필하여야 한다.
8×8 성분으로 된 압축 데이터(Fij)(i,j=1,2,3,4,5…8)와, 8×8의 계수행렬(Gji)(i,j=1,2,3,4,5…8)의 행렬곱(Hij)을 산출하는 경우를 고려하기로 한다. 이 경우, 당해 행렬곱의 1행 1열 성분 H11을 산출하기 위해서는 다음의 수학식 1의 계산을 행할 필요가 있다.
H11=G11*F11+G12*F21+G13*F31+G14*F41+G15*F51+G16*F61+G17*F71+G18*F81
상기 수학식 1은 『Gji*Fij(i,j=1,2,3,4,5…8)』을 단항식으로 하고, 이들 단항식의 대수합을 취하는 다항식이지만, 이 단항식의 연산과, 대수합이 본 행렬곱 서브루틴에서는 적화기능부 승산명령 『MACCB Dm,Dn』을 반복하여 기동하는 루프문(상기 루프문을 적화루프라 함)으로 표현되고 있다.
도 5는 행렬곱 서브루틴의 일례도이다. 또, 도 5에 있어서의 각 명령의 개략은 그 오른쪽의 설명문(선두에 #기호가 배치된 문)에 기입한다. F_ENTRY는 RAM(10)에 있어서 압축 데이터가 저장된 영역의 선두에 붙여진 라벨이고, G_ENTRY는 RAM(10)에 있어서 계수 데이터가 저장된 영역의 선두에 붙여진 라벨이다. H_ENTRY는 RAM(10)에서 행렬곱이 저장된 영역의 선두에 붙여진 라벨이다. 명령1:『MOV F_ENTRY,A0』, 명령2:『MOV G_ENTRY,A1』, 명령3:『MOV H_ENTRY,A2』는 어드레스 F_ENTRY, 어드레스 G_ENTRY, 어드레스 H_ENTRY를 각각 어드레스 레지스터 A0, 어드레스 레지스터 A1, 어드레스 레지스터 A2로 전송하는 전송명령이다.
이상의 전송명령에 의해 어드레스 레지스터 A0, A1, A2는 8×8개의 성분을 갖는 압축 데이터, 계수 데이터, 행렬곱 데이터의 판독장소 어드레스를 지정하는데 이용된다.
명령4:『MOV INIT,D2』는 데이터 레지스터 D2에 반복회수의 초기값 INIT를 설정하는 것이고, 명령5:『MOV (A0),D0』는 어드레스 레지스터지에 의해 지시된 어드레스로부터 계수 데이터(Fij)를 데이터 레지스터(D0)로 판독하는 것이다. 명령6:『MOV (A1),D1』은 어드레스 레지스터(A1)에 의해 지시된 어드레스로부터 계수 데이터(Gji)를 데이터 레지스터(D1)로 판독하는 것이다. 명령7:『MACCB D0,D1』은 데이터 레지스터(D0), 데이터 레지스터(D1) 및 적화결과 저장용 레지스터(6)를 이용한 적화기능부의 승산명령이고, 명령8:『CMP NUMBER,D2』는 데이터 레지스터(D2)에 저장된 반복회수로부터 반복총수(NUMBER)를 빼는 연산을 행함으로써 반복회수의 상한 체크를 행하는 명령이다.
명령9:『BCS LP1_NEXT』는 명령8:『CMP NUBMER,D2』에 있어서의 감산 결과 캐리 플래그가 온 되면 라벨 LP1_NEXT가 붙여진 명령13:『INC D2』로 분기하는 조건부 분기명령이다.
명령10:『MCSST D1』은 캐리 플래그가 오프인 경우에만 정값화 처리 및 포화연산처리(이하 이들을 정리하여 정값화 포화연산처리라 함)를 행하는 명령이다.
명령13:『INC D2』는 데이터 레지스터(D2)에 저장된 반복회수를 1 증가시키는 가산명령이고, 명령14:『INC A0』는 어드레스 레지스터 A0에 저장된 계수 데이터의 판독장소 어드레스를 1 증가시키는 가산명령이다. 명령15:『ADD ROW1,A1』은 어드레스 레지스터 A1에 저장된 계수 데이터의 판독장소 어드레스에 1행수 ROW1을 가산하는 가산이다. 명령16:『BRA LP1_START』는 라벨 LP1_START로 분기하는 무조건 분기명령이다.
라벨 LP1_START가 붙은 명령5:『MOV (A0),D0』∼명령12:『BRA LP1_END』로 이루어진 명령렬에 의해 단항식의 연산이 이루어져 연산결과의 대수합이 취해진다.
라벨 LP1_NEXT가 붙여진 명령13:『INC D2』∼명령16:『BRA LP1_START』로 이루어진 명령렬에 의해 1행 성분 × 1열 성분의 행렬곱이 일단 완료되면 압축 데이터의 판독장소를 다음 행으로 이동시키고, 계수 데이터의 판독장소를 다음 열로 이동시킨다. 그와 동시에 데이터 레지스터 D2에 저장된 반복수를 가산한다.
도 6은 적화기능부 승산명령 『MACCB Dm,Dn』의 포맷도로서, 도 6에 도시된 바와 같이 적화기능부 승산명령 『MACCB Dm,Dn』은 1비트 길이의 적화값 저장장소의 지정필드, 1비트 길이의 대수합 연산내용의 지정필드, 1비트 길이의 단항식 연산내용 지정필드, 2비트 길이의 승수 판독장소 지정필드 및 2비트 길이의 피승수 판독장소 지정필드를 포함한다.
승수 판독장소 지정필드 및 피승수 판독장소 지정필드는 『00』『01』『10』『11』이 기입됨으로써, 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터 D2 및 적화결과 전용 레지스터(6)의 어느 하나로부터 승수(Fij), 피승수 Gji 의 판독장소 레지스터를 지정한다.
1비트 길이의 단항식 연산내용 지정필드는 승수(Fij), 피승수(Gji)의 단항식 연산 내용을 지정한다. 즉, 본 필드에 『1』이 기입되면 승수(Fij), 피승수(Gji)의 단항식 연산의 내용으로 한 승수(Fij), 피승수(Gji)의 승산 『Gji*Fij』가 지정된다.
적화값의 저장장소의 지정필드는 『1』이 설정되고, 이로써 적화값의 저장장소로서 MCR(후술하는 적화결과 전용 레지스터(6)의 것임.)이 지정된다. 1비트 길이의 대수합의 연산내용의 지정필드는 『1』이 기입됨으로써 승산결과 『Gji*Fij』와 적화결과 전용 레지스터(6)에 저정된 적화값의 가산연산인 대수합을 지정한다.
『G11*F11+G12*F21+G13*F31…』의 적화를 행할 때 주의해야 할 점은 압축 데이터의 성분(Fij)의 전송시에 비트 오류가 생기면 『G11*F11+G12*F21+G13*F31…』의 적화값이 재생계에서 재생되지 않는 이론값과 크게 차이가 나는 수치로 되어 있는 것이다. 이러한 우려가 있기 때문에, 행렬곱 서브루틴은 적화기능부 승산명령『MACCB D0,D1』의 기동을 반복하는 루프처리의 종료후에 정값화 포화연산명령『MCSST Dm』을 배치하고, 적화값에 대한 정값화 포화연산처리를 행하도록 한다.
정값화 포화연산 처리명령 『MCSST Dm』의 연산코드의 포맷을 도 7에 도시한다. 도 7에 도시된 바와 같이, 정값화 포화연산 처리명령 『MCSST Dm』은 정값화, 포화폭(라운딩폭) 지정필드와, 정값화 포화연산 결과의 저장장소 지정필드를 포함한다.
라운딩폭 필드는 『01』『10』『11』이 기입됨으로써, 정값화 포화연산처리의 라운딩폭을 24비트 정의 값, 16비트 정의 값, 8비트 정의 값 중 어느 하나를 지정한다.
저장장소 지정필드는 『00』『01』『10』『11』이 기입됨으로써 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터(D2), 데이터 레지스터(D3) 중 어느 하나로부터 정값화 포화연산처리의 저장장소 레지스터를 지정한다.
이와 같이 ROM(11)에 기억된 신장처리용 프로그램은 행렬곱 서브루틴에 필요한 다항식의 단항식 연산 및 대수합 연산이 적화기능부 승산명령『MACCB Dm,Dn』에 의해 기술되고, 다항식의 적화의 정값화 포화연산처리가 정값화 포화연산명령『MCSST Dm』을 이용하여 기술되기 때문에 알고리즘이 매우 간단하다. 이들의 명령은프로세서만으로 표현되기 때문에 ROM(11)에 있어서, 신장처리용 프로그램이 차지하는 메모리 사이즈는 매우 적다.
이상으로 ROM(11)에 기억된 명령열에 대한 설명을 마친다. 계속해서 도 3에 도시된 프로세서의 구성요소에 대하여 설명하기로 한다.
도 3의 구성도에 있어서의 명령 판독회로(12)는 판독장소 어드레스를 차례로 생성하여 어드레스 버스로 출력하는 프로그램 카운터를 구비하고, ROM(11)으로부터 데이터 버스(18)로 출력되는 명령을 디코더(13)로 판독한다.
디코더(13)는 데이터 버스(18)로부터 판독된 명령이 복수개 축적되는 명령버퍼와, 명령버퍼에 축적된 명령 중 해독 대상으로 되는 것을 보유하는 명령 레지스터를 구비하고, 명령 레지스터에 저장된 명령의 내용을 해독하여 그 명령을 실현하는 제어를 연산실행장치(14)에 대하여 행한다. 여기에서 말하는 제어 중 특히 설명이 필요한 것은 후술하는 레지스터 출력제어(1), 연산 실행제어(2), 정수 발생제어(3)이다.
레지스터 출력제어(1)란, 명령 판독회로(12)에 의하여 판독된 산술연산명령, 논리연산명령, 적화기능부 승산명령의 제 1, 제 2 오퍼랜드에 의하여 지시된 레지스터의 보유값을 출력하는 연산실행장치(14)를 제어하는 것이다. 연산 실행제어(2)란, 산술연산명령, 논리연산명령, 적화기능부 승산명령에 의해 지시되는 연산내용을 실행하는 연산실행장치(14)를 제어하는 것이고, 정수 발생제어(3)란, 정값화 포화연산명령을 행하기 위한 최대값과 제로값을 발생하는 연산실행장치(14)를 제어하는 것이다. 레지스터 출력제어(1) 및 연산 실행제어(2)는 디코더(13)가 산술연산명령, 논리연산명령, 적화기능부 승산명령을 해독했을 때에 행해지고, 레지스터 출력제어(1) 및 정수 발생제어(3)는 디코더(13)가 정값화 포화연산명령을 해독했을 때에 행해진다. 연산 실행제어(2)가 발생하는 것은 적화기능부 승산명령의 해독시이고, 정수 발생제어(3)가 발생하는 것은 정값화 포화연산명령의 해독시이므로, 연산 실행제어(2)와 정수 발생제어(3)는 서로 배타적인 관계에 있다.
어드레스 버스(17)는 32비트폭을 갖고, 명령 판독회로(12)가 출력하는 판독장소 어드레스를 전송한다.
데이터 버스(18)는 32비트폭을 갖고, RAM(10)이 데이터를 출력하면 즉, RAM(10)으로부터 데이터가 출력되면 압축 데이터(Fij), 계수 데이터(Gji), 행렬곱 데이터(Hij)를 전송한다.
연산처리장치(14)는 레지스터 파일, 산술논리 연산회로를 구비하며 디코더(13)에 의한 제어에 따른 연산처리를 행한다.
여기에서 주의해야할 점은 명령 판독회로(12)는 명령판독 스테이지, 디코더(13)는 명령해독 스테이지를 행하고, 연산처리장치(14)는 연산실행 스테이지, 메모리 기입스테이지, 레지스터 기입 스테이지를 행하도록 구성된다. 그리고, 이들 5가지의 스테이지는 5단의 파이프라인을 실현한다. 명령 판독회로(12)는 그 전 명령의 실행완료를 기다리지 않고, 다음 명령이 디코더(13)에 의한 해독 스테이지로 들어간 단계에서 다음 명령의 판독을 개시한다. 디코더(13)도 마찬가지이고, 그 전 명령의 실행완료를 기다리지 않고, 다음 명령이 연산처리장치(14)에 의한 연산실행 스테이지에 들어간 단계에서 다음 명령의 해독을 개시한다. 이들 처리에 의해, 프로세서는 도 12a에 도시된 바와 같은 명령판독 스테이지, 명령해독 스테이지, 실행 스테이지, 메모리 액세스 스테이지, 레지스터 기입 스테이지라는 5단 스테이지로 이루어진 파이프라인에 의해 ROM(11)에 저장된 명령열을 처리한다.
프로세서의 구성요소의 설명은 이상으로 마치고, 계속해서 연산처리장치(14)의 내부구성을 중심으로 설명하기로 한다. 연산실행장치(14)의 내부구성을 도 4에 도시한다. 도 4에 도시된 바와 같이 연산실행장치(14)는 레지스터 파일(1), 산술논리 연산회로(2), 정값화 포화연산회로(3), 부호확장회로(4), 부호확장회로(5), 적화결과 전용 레지스터(6), 제 1 내부버스(15) 및 제 2 내부버스(16)로 구성된다. 이들 구성요소와 디코더(13) 사이에는 상술한 제어(1)(2)(3)을 위한 제어신호선이 온통 둘러쳐져 있으나, 간략을 기하기 위해 그 도시는 생략하고 있다.
레지스터 파일(1)은 4개의 32비트폭의 데이터 레지스터(D0∼D3), 3개의 32비트폭의 어드레스 레지스터(A0∼A2)를 구비한다. 레지스터 출력제어(1)에 있어서, 1개 혹은 2개의 레지스터명이 디코더(13)에 의해 지시되면, 레지스터 파일(1)은 부여된 레지스터명의 레지스터의 보유값을 패스(C2, C3)를 통하여 제 1 내부버스(15) 및 제 2 내부버스(16) 상으로 출력한다. 또, 레지스터 파일(1)은 데이터 버스(18) 상으로 전송되는 값을 패스(C1)를 통하여 보유한다.
제 1 내부버스(15)는 32비트폭을 갖고, 레지스터 파일(1)이 출력한 32비트 길이의 보유값을 산술논리 연산회로(2)로 전송한다.
제 2 내부버스(16)는 32비트폭을 갖고, 레지스터 파일(1)이 출력한 32비트 길이의 보유값을 산술논리 연산회로(2)로 전송한다.
부호 확장회로(4)는 제 1 내부버스(15)를 통하여 레지스터 파일(1)로부터 전송되는 데이터 레지스터의 보유값이 부의 수인 경우, 부호확장을 행한다. 본 실시예에 있어서 승수, 피승수는 부호부 8비트 수치로 규정되어 있으므로, 부호 확장회로(4)는 8비트 길이의 부의 수의 부호확장을 행한다. 예를 들면, 제 1 내부버스(15)로부터 전송되는 보유값이 8비트 부의 수『0x0000_0080』이면 8비트째의 부호를 9비트∼32비트로 확장하여 『0xFFFF_FF80』으로서 산술논리 연산회로(2)로 출력한다.
부호 확장회로(5)는 제 2 내부버스(16)를 통하여 레지스터 파일(1)로부터 전송되는 데이터 레지스터의 보유값이 부의 수인 경우, 부호확장을 행한다. 본 실시예에 있어서 승수, 피승수는 부호부 32비트 수치로 규정되어 있으므로, 부호 확장회로(5)는 8비트 길이의 부의 수의 부호확장을 행한다. 부호확장의 방법은 부호 확장회로(4)와 마찬가지이다.
산술논리 연산회로(2)는 32비트폭의 모든 가산기, 승산기, 바렐시프터(barrel shifter) 등으로 구성되고, 디코더(13)에 의한 연산 실행제어(2)에 기초하여 연산을 행한다. 여기에서, 산술논리 연산회로(2)의 입력단은 부호 확장회로(4), 적화결과 전용 레지스터(6)의 출력단과 접속되어 있기 때문에 연산 실행제어(2)에 기초한 연산은 부호 확장회로(4)로 출력되는 레지스터의 32비트 길이의 보유값과, 적화결과 전용 레지스터(6)로 출력되는 레지스터의 32비트 길이의 보유값을 대상으로 하여 행해진다.
적화기능부 승산명령『MACCB Dm,Dn』의 해독시에는 산술논리 연산회로(2)는부호 확장회로(4)로부터 출력되는 32비트 길이의 값과 부호 확장회로(5)로부터 출력되는 32비트 길이의 값의 승산을 행하고, 64비트 길이의 승산결과를 출력한다. 또, 패스(P1) 상으로 전송되는 32비트 길이의 값과, 64비트 승산결과의 하위 32비트의 가산을 행하고, 가산후, 32비트 길이의 가산결과를 패스(P2) 상으로 출력한다.
또, 적화기능부 연산명령『MACCB D0,D1』의 해독시에 있어서 제 1 내부버스(15) 및 제 2 내부버스(16)에는 적화기능부 승산명령『MACCB D0,D1』의 제 1 오퍼랜드 및 제 2 오퍼랜드로서 지정된 판독장소 레지스터의 보유값이 전송되어 있으므로 산술논리 연산회로(2)에 의해 데이터 레지스터(D0)의 보유값과 데이터 레지스터(D1)의 보유값의 승산이 행해진다. 또, 적화기능부 승산명령『MACCB D0,D1』의 해독시에 있어서, 패스(P1)에는 적화결과 전용 레지스터(6)의 보유값이 전송되므로, 데이터 레지스터(D0)와 데이터 레지스터(D1)의 승산결과는 패스(P1) 상의 적화결과 전용 레지스터(6)의 보유값과 가산된다. 이와 같이 산출된 가산결과는 패스(P2) 상으로 출력된다.
적화결과 전용 레지스터(6)는 지금까지의 적화에 있어서의 적화값을 보유하고, 적화기능부 승산명령이 해독되면 그 보유값을 패스(P1) 상으로 출력한다. 패스(P1) 상의 보유값과 승산결과의 가산이 산술논리 연산회로(2)에 의해 행해지면 패스(P2) 상에 가산결과가 새롭게 출력되지만, 적화결과 전용 레지스터(6)는 출력된 가산결과를 래치하여 이것을 새로운 적화값으로서 보유한다. 또, 적화값 저장용 레지스터(6)는 산술논리 연산회로(2)에 의해 산출된 승수(Fij), 피승수(Gji)의 승산결과를 부호부 16비트 수치로서 보유한다.
정값화 포화 연산명령『MCSST』가 해독된 경우는 적화결과 전용 레지스터(6)는 보유값을 패스(P2) 상으로 출력한다.
정값화 포화 연산회로(3)는 부호부 16비트 수치로 표현되는 적화결과 전용 레지스터(6)의 보유값을 정(正)의 8비트 정수로 라운딩하는 실장회로이다. 도 8의 (a) 및 (b)는 정값화 포화 연산회로(3)에 의한 라운딩 처리를 설명하기 위한 설명도이다. 도 8의 (a)에 있어서 상단은 32비트폭에 있어서의 승수, 피승수의 표현을 나타낸다. 즉, 검게 칠한 제 8 비트를 부호비트로 할당함으로써 해칭한 7비트를 이용하여 -127∼+127의 승수(Fij), 피승수(Gji)가 표현되어 있다.
중단은 32비트폭에 있어서의 적화 결과의 표현을 나타낸다. 즉, 검게 칠한 제 16비트를 부호비트로 할당함으로써 해칭한 15비트를 이용하여 -32767∼+32767의 범위에서 적화값이 표현되어 있다.
하단은 프로세서의 32비트폭에 있어서의 행렬곱 성분의 표현을 나타낸다. 즉, 해칭한 제 1 비트∼제 8 비트를 부호비트 없는 것으로 이용함으로써 0∼+255의 범위에서 행렬곱 성분(Hij)이 표현되어 있다.
도 8의 (b)에 있어서, 좌단의 그래프는 레지스터가 보유하는 승수, 피승수가 취할 수 있는 범위를 나타내고, 정부(正負)마다 8비트의 범위를 갖는다. 중앙의 그래프는 적화결과 전용 레지스터(6)가 보유하는 적화값이 취할수 있는 범위를 나타내고, 정부마다 16비트의 범위를 갖는다. 좌단의 그래프는 행렬곱(Hij)이 취할 수 있는 범위, 즉 재생계 하드웨어가 재생가능한 8비트 정수의 범위이다.
또, 적화값이 취할 수 있는 범위를 정부마다 16비트로 하는 것은 라운딩 오차의 누적을 피하기 위함이다. 즉, 부호있는 8비트의 값을 취하는 승수(Fij), 피승수(Gji)의 승수결과를 적화할 때 행렬곱(Hij)의 범위가 8비트이기 때문으로서, 승산이 행해질 때마다 승산결과를 8비트로 라운딩하면 라운딩 오차가 승산회수만큼 배증된다. 라운딩 오차의 배증을 피하는 의미에서 적화결과 저장용 레지스터(6)는 적화결과를 16비트로 하고, 1행×1열분의 승산이 완료된 단계에서 정값화 보정처리를 행하고 있다.
중앙에 나타낸 적화결과 전용 레지스터(6)의 보유값을 우단에 나타낸 8비트 정의 값으로 라운딩하기 위하여 정값화 포화연산회로(3)는 참조부호(y1)로 지시하는 범위(정수로서 상한 0x000000FF를 초과하는 범위)를 0x000000FF로 라운딩한다.
또, 정값화 포화연산회로(3)는 참조부호(y2)로 지시하는 범위(부의 수의 범위)를 0x00000000로 라운딩한다.
정값화 포화연산회로(3)의 내부 구성을 도 4의 점선(y8) 내에 나타낸다. 도 4의 점선(y8)으로 나타낸 바와 같이, 정값화 포화연산회로(3)는 정수발생회로(21), 비교회로(22), 정부 판별회로(23), 멀티플렉서(24) 및 제로(0)값 발생회로(25)로 이루어진다. 이들 구성요소에는 디코더(13)로부터의 제어선이 접속되어 있으나, 복잡하기 때문에 생략하고 있다.
정수 발생회로(21)는 명령 판독회로(12)에 의해 판독된 명령이 정값화 포화연산명령『MCSST』이면 디코더(13)가 해독한 경우, 당해 명령의 정값화 폭-포화폭 지정필드의 내용에 따라 8비트 부호없는 수치, 16비트 부호없는 수치, 24비트 부호없는 수치의 정의 최대값을 발생한다. 정값화 폭-포화폭 지정필드의 지정내용이 8비트인 경우, 8비트 부호없는 수치의 최대값인 32비트 부호부 정수 0x000000FF를 멀티플렉서(24)로 출력한다. 정값화폭-포화폭 지정필드의 지정내용이 16비트인 경우, 16비트 부호없는 수치의 최대값인 32비트 부호부 정수 0x0000FFFF를 멀티플렉서(24)로 출력하고, 정값화 폭-포화폭 지정필드의 지정내용이 24비트인 경우, 24비트 부호없는 수치의 최대값인 32비트 부호부 정수 0x00FFFFFF를 멀티플렉서(24)로 출력한다.
비교회로(22)는 적화결과 전용 레지스터(6)에 의하여 보유되어 있는 값과, 정수 발생회로(21)에 의해 출력된 최대값의 대소를 비교한다. 상기 비교는 정수발생회로(21)에 의해 출력된 최대값으로부터 적화결과 전용 레지스터(6)에 보유되어 있는 값을 빼고, 뺀 결과, 자리수 교체가 발생하였는지의 여부를 검지함으로써 행해진다. 여기에서, 정값화 폭-포화폭 지정필드의 지정내용이 8비트인 경우, 적화결과 저장용 레지스터(6)의 보유값으로부터 8비트 부호없는 수치의 최대값인 32비트 부호부 정수 0x000000FF를 뺀다. 또, 정값화 폭-포화폭 지정필드의 지정내용이 16비트인 경우, 적화결과 저장용 레지스터(6)의 보유값으로부터 16비트 부호없는 수치의 최대값인 32비트 부호부 정수 0x0000FFFF를 뺀다. 정값화 폭-포화폭 지정필드의 지정내용이 24비트인 경우, 적화결과 저장용 레지스터(6)의 보유값으로부터 24비트 부호없는 수치의 최대값인 32비트 부호부 정수 0x00FFFFFF를 뺀다.
이와 같은 감산 결과 자리수 교체가 검지되고, 적화값 저장용 레지스터(6)가 보유하는 값이 최대값을 상회한다고 판정된 경우는 논리값『1』을 멀티플렉서(24)로 출력한다. 적화값 저장용 레지스터(6)가 보유하는 값이 최대값과 같거나 혹은 이것을 하회한다고 판정된 경우는 논리값『0』을 멀티플렉서(24)로 출력한다.
정부 판별회로(23)는 적화결과 전용 레지스터(6)에 의하여 보유된 값의 부호비트가 온 인지를 판정한다. 여기에서, 정값화 포화연산명령『MCSST』의 정값화 폭-포화폭 지정필드의 지정에는 24비트 부호없는 수치, 16비트 부호없는 수치, 8비트 부호없는 수치의 3가지가 있고, 필드 지정 여하에 의하여 부호비트의 위치가 바뀐다. 그래서, 정부 판별회로(23)는 정값화 포화연산명령『MCSST』의 정값화 폭-포화폭 지정필드의 지정에 따라 온을 판정할 비트를 변경한다.
여기에서, 정부 판별회로(23)는 정값화 포화연산명령『MCSST』의 정값화 폭-포화폭 지정필드의 지정이 24비트 부호없는 수치이면 하위로부터 제 24비트째가 온인지를 판정하고, 정값화 포화연산명령『MCSST』의 정값화 폭-포화폭 지정필드의 지정이 16비트 부호없는 수치라면 하위로부터 제 16비트째가 온인지를 판정한다. 정값화 포화연산명령『MCSST』의 정값화 폭-포화폭 지정필드의 지정이 8비트 부호없는 수치라면 하위로부터 제 8비트째가 온인지를 판정한다. 이 판정은 적화결과 전용 레지스터(6)에 축적되어 있는 적화값을 정값화 포화연산명령『MCSST』의 정값화 폭-포화폭 지정필드의 지정에 따른 값으로서 표현한 경우, 부의 수로서 표현될지의 판정을 의미한다. 부의 수인 경우는 논리값『1』을 멀티플렉서(24)로 출력한다. 보유되어 있는 값이 제로 혹은 정의 수인 경우는 논리값『0』을 멀티플렉서(24)로 출력한다.
제로값 발생회로(25)는 해독결과가 정값화 포화연산처리명령『MCSST』이면정수『0x0000 0000』을 발생한다.
멀티플렉서(24)는 비교회로(22) 및 정부 판별회로(23)로부터 출력된 논리값의 조합에 따라 정수 발생회로(21)가 발생한 최대값, 제로값 발생회로(25)가 발생한 제로값『0x0000 0000』, 적화결과 전용 레지스터(6)에 의하여 보유되어 있는 레지스터 파일(1)의 보유값 중 어느 하나를 선택적으로 출력한다.
여기에서, 비교회로(22)로부터 출력되는 논리값을 논리값 x, 정부 판별회로(23)로부터 출력되는 논리값을 논리값 y로 하면 이들 논리값의 조합과 멀티플렉서(24)로부터의 출력값의 대응관계는 도 9의 진리값표와 같이 표현된다(또, 도 9의 진리값표에서는 정수 발생회로(21)가 발생한 최대값을 『0x0000_00FF』로 함.).
도 9의 진리값표에 의하면, 비교회로(22)의 출력이 『0』이고, 정부 판별회로(23)의 출력이 『0』인 경우, 멀티플렉서(24)는 적화결과 전용 레지스터(6)의 보유값을 출력한다.
비교회로(22)의 출력이 『1』이고, 정부 판별회로(23)의 출력이 『0』인 경우, 멀티플렉서(24)는 정수 발생회로(21)가 발생한 최대값 『0x0000_00FF』를 출력한다.
비교회로(22)의 출력이 『0』이고, 정부 판별회로(23)의 출력이 『1』인 경우, 멀티플렉서(24)는 제로값 발생회로(25)가 발생한 제로값『0x0000_0000』을 출력한다. 비교회로(22)의 출력이 『1』이고, 정부 판별회로(23)의 출력이 『1』인 경우, 멀티플렉서(24)는 제로값 발생회로(25)가 발생한 제로값 『0x0000_0000』을 출력한다.
도 10 및 도 11은 연산처리장치(14)에 있어서의 데이터의 흐름을 도시한 설명도이다. 도 10에 있어서, 데이터 레지스터(D0) 및 데이터 레지스터(D1)를 승수, 피승수의 판독 장소로 지정한 적화기능부 승산명령 『MACCB D0,D1』을 디코더(13)가 해독하였다고 하자. 이 경우, 레지스터 파일(1)에 저장되어 있는 데이터 레지스터(D0)의 보유값『0x0000007F』 및 데이터 레지스터(D1)의 보유값『0x00000070』이 제 1 내부버스(15) 및 제 2 내부버스(16)를 전송하여 부호확장회로(4) 및 부호확장회로(5)에 부여된다. 부호확장회로(4) 및 부호확장회로(5)로부터 출력된 32비트 수치끼리의 승산을 산술논리 연산회로(2)(여기에서 산술논리 연산회로(2)의 동작은 승산이므로, 도 10, 도 11에서는 산술논리 연산회로(2)를 『승산기』로 기술함)는 행하고, 그 승산결과인 64비트 수치『0x0000_0000_0000_3790』의 하위 32비트『0x0000_3790』을 적화결과 저장용 레지스터(6)로 출력한다. 정값화 포화연산명령『MCSST D1』의 해독에 의해 적화결과 저장용 레지스터(6)가 그 보유값을 정값화 포화연산회로(3)로 출력하면 정값화 포화연산회로(3)는 그 32비트『0x0000_3790』가 부호없는 8비트 수치의 최대값『0x000000FF』보다 큰 것을 판정하고, 부호없는 8비트 수치의 최대값『0x000000FF』를 데이터 버스(18)를 통하여 레지스터 파일(1) 내의 데이터 레지스터(D1)에 보유시킨다.
도 11에 있어서 데이터 레지스터(D0) 및 데이터 레지스터(D1)를 승수, 피승수의 판독장소로 지정한 적화기능부 승산명령『MACCB D0,D1』을 디코더(13)가 해독하였다고 하자. 이 경우, 레지스터 파일(1)에 저장되어 있는 데이터 레지스터(D0)의 보유값『0x0000007F』 및 데이터 레지스터(D1)의 보유값 『0x00000080』이 제 1내부버스(15) 및 제 2 내부버스(16)를 전송하여 부호확장회로(4) 및 부호확장회로(5)에 부여된다. 데이터 레지스터(D1)의 보유값『0x00000080』은 8비트 수치의 부의 수이기 때문에 부호확장회로(5)는 데이터 레지스터(D1) 의 보유값『0x00000080』의 8비트째의 부호비트를 9비트∼32비트로 확장하여 『0xFFFF_FF80』으로서 산술논리 연산회로(2)로 출력한다.
부호확장회로(4)로부터 출력된 데이터 레지스터(D0)의 32비트 길이의 보유값『0x0000007F』와 부호확장회로(5)에 의해 확장된 32비트 수치『0xFFFF_FF80』의 승산을 산술논리 연산회로(2)는 행하고, 그 승산결과인 64비트 수치『0xFFFF_FFFF_FFFF_C080』의 하위 32비트『FFFF_C080』을 적화결과 저장용 레지스터(6)로 출력한다. 정값화 포화연산명령『MCSST D1』의 해독에 의해 적화결과 저장용 레지스터(6)가 그 보유값을 정값화 포화연산회로(3)로 출력하면, 정값화 포화연산회로(3)는 그 32비트『FFFF_C080』이 부호부 16비트 수치의 부의 수인 것을 판정하고, 8비트 수치의 제로값『0x00000000』을 데이터 버스(18)를 통하여 레지스터 파일(1) 내의 데이터 레지스터(D1)에 보유시킨다.
이상과 같이 구성된 프로세서가 행렬곱 서브루틴에 기초하여 동작하는 상태를 다음과 같이 설명하기로 한다. 명령 판독회로(12)에 의해 행렬곱 서브루틴에 포함되는 전송명령이 디코더(13) 내의 명령버퍼 내로 판독되고, 디코더(13)가 판독된 명령5:『MOV (A0),D0』을 해독한다. 이 명령5:『MOV (A0),D0』은 어드레스 레지스터(A0)를 이용하여 판독장소를 지정한 레지스터 간접 참조를 이용하여 RAM(10)으로부터의 데이터 판독을 지시하는 전송명령이고, 이에 기초하여 RAM(10)에 기억되어있는 8×8의 행렬형상 성분으로 된 압축 데이터(Fij)의 1행 1열 성분(F11)이 데이터 레지스터(D0) 상에 판독된다. 명령5:『MOV (A0),D0』의 후에 배치되어 있는 명령6:『MOV (A1),D1』의 실행에 의해 8×8의 계수 데이터(Gji)의 1행 1열 성분(G11)이 데이터 버스(18)를 통하여 레지스터 파일(1) 내의 데이터 레지스터(D1) 상에 판독된다.
행렬곱 서브루틴에는 명령5:『MOV (A0),D0』 및 명령6:『MOV (A1),D1』에 계속하여 명령 7로서 적화기능부 승산명령『MACCB D0,D1』이 나열되고, 이것이 명령판독회로(12)에 의해 디코더(13) 내의 명령버퍼 내로 판독되며, 디코더(13)가 판독된 적화기능부 승산명령『MACCB D0,D1』을 해독한다. 해독결과에 기초하여 데이터 레지스터(D0) 및 데이터 레지스터(D1)에 보유되어 있는 F11, G11이 제 1 내부버스(15) 및 제 2 내부버스(16) 상으로 전송된다.
적화기능부 승산명령『MACCB D0,D1』의 해독시에 있어서 제 1 내부버스(15) 및 제 2 내부버스(16)에는 적화기능부 승산명령『MACCB D0,D1』의 제 1 오퍼랜드 및 제 2 오퍼랜드로서 지정된 판독장소 레지스터의 보유값(F11, G11)이 전송된다. 이들은 부호확장회로(4) 및 부호확장회로(5)에 의해 출력되고, 산술논리 연산회로(2)에 의해 데이터 레지스터(D0)의 보유값과 데이터 레지스터(D1)의 보유값의 승산이 행해진다. 승산결과 『G11*F11』은 적화결과 전용 레지스터(6)로 전송되고, 적화결과 전용 레지스터(6)에 의해 보유된다.
적화결과 전용 레지스터(6)에 승산결과『G11*F11』이 저장되면 명령8:『CMP NUMBER,D2』 및 명령9:『BCS LP1_NEXT』의 실행에 의해 라벨 LP1_NEXT로 분기하고,명령13:『ADD 1,D2』를 해독한다. 상기 명령13:『ADD 1,D2』는 반복회수를 증가시키는 것이다. 명령13:『ADD 1,D2』의 실행 후, 명령14:『ADD 1,A0』 및 명령15:『ADD ROW1,A1』은 ROM(11)에 있어서의 판독장소 어드레스를 다음 열 및 다음 행으로 이행시킬 목적으로 배치된다. 이들 명령의 증가에 의해 압축 데이터(Fij)의 판독장소 어드레스는 2행 1열로 되고, 계수 데이터(Gji)의 판독장소 어드레스는 1행 2열로 된다.
판독장소 어드레스의 증가 후, 명령14:『ADD 1,A0』 및 명령15:『ADD ROW1,A1』의 직후에 배치되는 명령16:『BRA LP1_START』를 해독한다.
상기 명령16:『BRA LP1_START』의 분기장소 어드레스는 라벨 LP1_START가 붙여진 명령5:『MOV (A0),D0』이고, 명령16:『BRA LP1_START』에 의한 분기에 의해 명령5:『MOV (A0),D0』, 명령6:『MOV (A1),D1』이 재차 판독된다.
판독된 전송명령에 의해 RAM(10)에 기억되어 있는 8×8의 행렬상의 성분으로 된 압축 데이터의 2행 1열 성분(F21)이 데이터 레지스터(D0) 상에 판독되고, 8×8의 계수 데이터의 1행 2열 성분(G12)이 데이터 버스(18)를 통하여 레지스터 파일(1) 내의 데이터 레지스터(D1) 상에 판독된다.
행렬곱 서브루틴에는 전송명령에 이어 적화기능부 승산명령『MACCB D0,D1』이 나열되고, 이것이 명령판독회로(12)에 의해 디코더(13) 내의 명령버퍼 내로 판독되며, 디코더(13)에 의해 판독된 적화기능부 승산명령『MACCB D0,D1』이 해독된다. 해독결과에 기초하여 데이터 레지스터(D0) 및 데이터 레지스터(D1)의 보유값이 제 1 내부버스(15) 및 제 2 내부버스(16) 상으로 전송된다.
적화기능부 승산명령『MACCB D0,D1』의 해독시에 있어서 제 1 내부버스(15) 및 제 2 내부버스(16)에는 적화기능부 승산명령『MACCB D0,D1』의 제 1 오퍼랜드 및 제 2 오퍼랜드로서 지정된 판독장소 레지스터의 보유값이 전송된다. 이들은 행렬성분(G12, F21)이고, 산술논리 연산회로(2)에 의해 데이터 레지스터(D0)의 보유값(G12)과, 데이터 레지스터(D1)의 보유값(F21)의 승산이 행해진다. 한편, 적화결과 전용 레지스터(6)에는 지금까지의 적화에 있어서의 단항식의 연산결과 『G11*F11』이 저장된다. 적화값 저장용 레지스터(6)는 적화기능부 승산명령『MACCB D0,D1』의 해독에 의해 그 보유값을 패스(P1) 상으로 출력한다.
패스(P1)에는 적화결과 전용 레지스터(6)의 보유값이 전송되므로, 데이터 레지스터(D0)- 데이터 레지스터(D1) 의 승산결과『G12*F21』은 패스(P1) 상의 적화결과 전용 레지스터(6)의 보유값과 가산된다. 가산결과는 패스(P2) 상으로 출력된다.
패스(P1) 상의 보유값『G11*F11』과 승산결과『G12*F21』의 가산이 산술논리 연산회로(2)에 의해 행해지면 패스(P2) 상에 가산결과『G11*F11+G12*F21』이 새롭게 출력되지만, 적화결과 전용 레지스터(6)는 출력된 가산결과를 출력하여 적화값『G11*F11+G12*F21』로서 보유한다.
이상의 처리가 8×8의 행렬형상 성분으로 이루어진 압축 데이터(Fij)의 제 1열의 모든 성분, 8×8의 계수 데이터(Gji)의 제 1 행의 모든 성분에 대하여 반복된다. 상기 반복에 의해, 『G11*F11 + G12*F21 + G13*F31 + G14*F41 + G15*F51 + G16*F61 + G17*F71 + G18*F81』이라는 적화연산이 완료되고, 적화값이 적화결과 전용 레지스터(6)에 얻어진다. 여기에서 주의해야 할 것은 RAM(10)에 기억되어 있는F31은 실제로는 전송시에 비트오류를 일으키기 때문에 적화결과 전용 레지스터(6)에 보유되어 있는 적화값은 재생계 하드웨어가 재생가능한 범위를 상당히 초과한 수치(『0x000078FF』)로 표현되는 점이다.
그러나, ROM(11) 내의 행렬곱 서브루틴은 이와 같은 비트오류를 염두에 두고, 적화기능부 승산명령『MACCB D0,D1』의 반복을 행하는 루프문의 뒤에 정값화 포화연산명령『MCSST D1』을 배열하고 있다.
ROM(11)에 있어서 루프문의 뒤에 배열되어 있는 정값화 포화연산명령『MCSST D1』이 디코더(13) 내의 명령버퍼로 판독되면 정값화 포화연산명령『MCSST D1』이 디코더(13)에 의해 해독된다.
정값화 포화연산명령『MCSST D1』이 해독된 경우는 적화결과 전용 레지스터(6)는 보유값 (0x000078FF)를 패스(P1) 상으로 출력한다.
패스(P1)로의 출력이 행해지면 디코더(13)에 의해 비교회로(22)가 기동된다. 비교회로(22)는 적화결과 전용 레지스터(6)의 보유값과, 32비트 부호부 정수(0x000000FF)의 대소를 비교한다. 이 경우, 적화결과 전용 레지스터(6)의 보유값이 최대값(0x000000FF)을 상회하므로 논리값『1』을 멀티플렉서(24)로 출력한다.
정부 판별회로(23)는 적화결과 전용 레지스터(6)에 의하여 보유되는 값의 하위로부터 16비트째가 온인지를 판정한다. 이 판정은 적화결과 전용 레지스터(6)에 축적되어 있는 적화값이 부의 수인지의 판정을 의미한다. 보유값(0x000078FF)의 2진수 표현은 (0000_0000 0000_0000 0111_1000 1111_1111)이고, 하위로부터 16비트째는 『0』이므로 논리값『0』을 멀티플렉서(24)로 출력한다.
이 때, 정수 발생회로(21) 및 제로값 발생회로(25)에 의해 상한값『0x0000_00FF』 및 제로값 『0x0000_0000』가 발생되고 있으나, 멀티플렉서(24)는 상한값, 제로값, 적화결과 전용 레지스터(6)의 보유값 중 어느 하나를 비교회로(22) 및 정부 판별회로(23)로부터 출력된 논리값의 조합에 의해 선택적으로 출력한다. 이 경우는 비교회로(22)의 출력이 『1』이고, 정부 판별회로(23)의 출력이 『0』이므로, 멀티플렉서(24)는 정수 발생회로(21)가 발생한 최대값『0x0000_00FF』를 데이터 버스(18) 상으로 출력한다.
디코더(13)의 제어에 의해 데이터 버스(18) 상으로 출력된 보유값은 정값화 포화연산명령『MCSST D1』의 오퍼랜드에서 지정되는 데이터 레지스터(D1)로 전송되어 데이터 레지스터(D1)에 의해 보유된다. 보유된 보유값은 행렬곱(Hij)의 1행 1열째의 성분(H11)로서 RAM(10) 내에 기입된다.
압축 데이터(Fij)의 제 1열의 모든 성분과, Gji의 제 1행의 모든 성분의 적화 연산이 종료된다. 계속해서, 압축 데이터(Fij)의 제 2열의 모든 성분과, Gji 의 제 1 행의 모든 성분에 대해서의 적화 연산이 행해지고, 『G11*F12 + G12*F22 + G13*F32 + G14*F42 + G15*F52 + G16*F62 + G17*F72 + G18*F82』라는 적화연산이 완료되고, 적화값이 적화결과 전용 레지스터(6)에 얻어진 것으로 한다.
여기에서 유의해야할 것은 RAM(10)에 기억되어 있는 F32는 실제로는 전송시에 비트 오류를 일으키고, 적화결과 전용 레지스터(6)에 기억되어 있는 적화값은 재생계 하드웨어가 재생 불가능한 부의 수(『0x000086FF』)로 표현되는 점이다.
ROM(11)은 루프문의 뒤에 배열되는 정값화 포화연산명령『MCSST D1』을ROM(11)으로부터 디코더(13) 내의 명령버퍼에 판독하면 정값화 포화연산명령『MCSST D1』의 오퍼랜드가 디코더(13)에 의해 해독된다.
정값화 포화연산명령『MCSST D1』이 해독된 경우는 적화결과 전용 레지스터(6)는 보유값(0x000086FF)를 패스(P1) 상으로 출력한다.
패스(P1)로의 출력이 행해지면 디코더(13)에 의해 비교회로(22)가 기동된다. 비교회로(22)는 적화결과 전용 레지스터(6)의 보유값과, 32비트 부호부 정수(0x000000FF)의 대소를 비교한다. 이 경우, 적화결과 전용 레지스터(6)의 보유값이 최대값(0x000000FF)을 상회하므로, 논리값『1』을 멀티플렉서(24)로 출력한다.
정부 판별회로(23)는 적화결과 전용 레지스터(6)에 의해 보유되어 있는 값의 제 16비트째가 온인지를 판정한다. 이 판정은 적화결과 전용 레지스터(6)에 축적되어 있는 적화값이 부의 수인지의 판정을 의미한다. 보유값(0x000086FF)의 2진수 표현은 (0000_0000 0000_0000 1000_0110 1111_1111)이고, 16비트째는 『1』이므로 논리값『1』을 멀티플렉서(24)로 출력한다.
이 때, 정수 발생회로(21) 및 제로값 발생회로(25)에 의해 상한값『0x0000_00FF』 및 제로값 『0x0000_0000』이 발생되고 있으나, 멀티플렉서(24)는 이것이나 혹은 적화결과 전용 레지스터(6)의 보유값을 비교회로(22), 정부 판별회로(23)로부터 출력된 논리값의 조합에 의해 선택적으로 출력한다. 이 경우는 비교회로(22)의 출력이 『1』이고, 정부 판별회로(23)의 출력이 『1』이므로, 멀티플렉서(24)는 정수 발생회로(21)가 발생한 최대값『0x0000_0000』을 데이터 버스(18) 상으로 출력한다.
디코더(13)의 제어에 의해 데이터 버스(18) 상으로 출력된 보유값은 정값화 포화연산명령『MCSST D1』의 오퍼랜드에서 지정되는 데이터 레지스터(D1)로 전송되고, 데이터 레지스터(D1)에 의해 보유된다. 보유된 값은 행렬곱(Hij)의 1행 2열째의 성분(H12)으로서 ROM(11) 내에 기입된다.
동일한 행렬곱 성분의 기입이 반복되어 행렬곱 결과가 RAM(10) 내에 얻어지고, 상기 행렬곱 결과를 역DCT의 근사 계산결과로서 이용함으로써 압축 데이터의 신장처리가 이루어진다.
도 12b는 프로세서가 기계어 명령을 명령판독 스테이지, 명령해독 스테이지, 실행 스테이지, 메모리 액세스 스테이지, 레지스터 기입 스테이지 라는 5단 스테이지로 이루어진 파이프라인에 의해 행렬곱 루틴을 실행하는 상태를 나타낸다. 디코더(13)에 의한 명령10:『MCSST D1』의 명령판독 스테이지는 그 전의 기계어 명령인 명령9:『BCS LP1_NEXT』의 명령해독 스테이지와 동시에 행해진다. 명령8:『CMP NUMBER,D2』에 있어서는 데이터 레지스터 D2에 저장된 반복회수로부터 총 회수(NUMBER)를 빼는 연산이 행해지므로, 감산 결과 캐리 플래그가 온이 되면 명령13:『ADD 1,D2』로 분기하기 위한 명령10:『MCSST D1』의 실행 스테이지로의 이행을 중단한다.
이에 대하여 캐리 플래그가 오프이면 명령9:『BCS LP1_NEXT』의 실행 스테이지와 동시에 명령10:『MCSST D1』의 해독 스테이지가 행해진다. 계속해서, 명령9:『BCS LP1_NEXT』의 메모리 기입 스테이지와 동시에 명령10:『MCSST D1』의 실행 스테이지가 행해진다. 1행성분 × 1열성분의 행렬곱 결과에 대한 정값화 포화연산처리는 그 전에 위치하는 명령의 메모리 기입 스테이지에서 실행되므로 파이프라인을 혼란시키지 않고 행해지는 것을 알 수 있다.
이와 같이 정값화 포화연산회로(3)를 내장한 프로세서는 1행성분×1열성분의 행렬곱 결과에 대하여 성분을 높은 빈도로 행할 필요가 있어도 기계어 프로그램에 있어서 정값화 포화연산 보정처리가 1명령으로서 실현되므로 파이프라인이 혼란되지 않는다. 따라서, 프로세서 전체의 처리를 고속화할 수 있다.
이상과 같이 본 실시예에 의하면, 적화값의 정값화 연산처리를 위한 전용명령에 의해 적화결과 전용 레지스터(6) 내에 얻어진 적화값에 정값화 포화연산처리를 실시하므로, 화상 데이터, 음성 데이터의 신장처리에 필요하게 되는 행렬곱 근사 계산의 애플리케이션 프로그램을 보다 간편하게 코딩할 수 있고, 그 코드량도 매우 적어진다. 상기 코드량이 경감되기 때문에 프로그램을 ROM에 실장하는 경우는 그 실장량을 경감시킬 수 있다.
또, 적화값의 정값화 포화연산처리는 적화결과 전용 레지스터(6)에 저장되어 있는 적화값에 대한 정값화 처리와 포화연산처리를 동시에 행하기 때문에 고속이다. 정값화 포화연산처리는 행렬곱 연산에 있어서의 1행성분×1열성분의 계산시에 필요하고, 8×8행열 끼리의 행렬곱에 있어서는 64회의 정값화 포화연산처리의 실행이 필요하게 되지만, 상기와 같이 정값화처리 및 포화연산처리는 매우 자연스럽게 행해지므로, 1회당 정값화 포화연산처리가 단시간에 완료된다. 이와 같이 정값화 포화연산처리가 단시간에 완료되므로, 막대한 수의 행렬곱의 반복이 필요하게 되는 화상 데이터, 음성 데이터의 신장처리를 보다 고속화시킬 수 있다.
또, 정값화 포화연산회로(3)를 실장함으로써 분기명령을 이용하지 않고 정값화 처리-포화연산처리를 기술할 수 있으므로, 프로세서의 내부가 파이프라인에 의한 고속화를 실행하는 경우에 파이프라인을 혼란시키지 않고 명령열의 고속화를 도모할 수 있을 뿐 아니라 고성능 파이프라인의 실행에 의한 명령열 실행이 고속화를 도모할 수 있다.
또한, 행렬곱 연산을 실행하는 전용회로를 내장하지 않고 정값화 포화연산처리가 행해지므로, 프로세서 특유의 범용성은 존재한다. 따라서, 독자적인 신장처리 프로그램으로서 프로세서를 제어시키고자 하는 소망에 부응할 수 있다.
( 제 1 실시예의 응용예 )
본 응용예는 정값화 포화연산명령『MCSST』에 의한 정값화 포화연산처리의 판독 장소에 데이터 레지스터(D0)∼데이터 레지스터(D2)를 지정하고, 연산결과의 저장 장소에 적화결과 저장용 레지스터(6)를 지정하는 것이다. 본 응용예에 있어서의 정값화 포화연산명령 『MCSST』의 명령포맷을 도 13에 도시한다. 도 13에 있어서의 정값화 포화연산명령(MCSST)은 판독장소 지정필드를 갖고, 『11』『00』『10』『01』의 값을 기입함으로써 적화값의 판독장소를 적화결과 저장용 레지스터(6), 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터(D2) 중 어느 하나로 변경할 수 있다.
저장장소 지정필드는 『11』『00』『01』『10』이 기입됨으로써 적화결과 저장용 레지스터(6), 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터(D2) 중 어느 하나를 저장장소로 지정한다.
정값화 포화연산명령『MCSST』의 명령포맷을 개변하였으므로, 도 4에 도시한 연산처리장치(14)의 내부는 도 14에 도시된 바와 같이 변경된다. 도 14에 있어서 연산처리장치(14)에 추가된 변경점은 패스(C6), 패스(C7), 패스(C8) 및 셀렉터(30)가 추가되어 있는 점이다.
패스(C6)는 제 2 내부버스(16)로서 전송되는 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터(D2)의 보유값을 정값화 포화연산회로(3)로 전송하기 위한 패스이다.
패스(C7)도 패스(C6)와 마찬가지로 제 1 내부버스(15)로서 전송되는 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터 D2의 보유값을 정값화 포화연산회로(3)로 전송하기 위한 패스이다.
셀렉터(30)는 패스(C6) 및 패스(C7)로서 전송되는 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터(D2)의 보유값, 적화결과 저장용 레지스터(6)의 보유값 중 어느 하나를 정값화 포화연산명령 『MCSST』에 있어서의 저장장소 필드의 지정에 기초하여 선택적으로 정값화 포화연산회로(3) 내의 비교기(22)로 출력한다.
패스(C8)는 패스(C4)를 통하여 정값화 포화연산회로(3)로부터 데이터 버스(18)로 출력되는 정값화 포화연산회로(3)의 처리결과를 적화결과 저장용 레지스터(6)로 전송하기 위한 패스이다.
이상의 간단한 추가에 의해 본 응용예에서는 정값화 포화연산명령『MCSST』의 기능확장을 실현할 수 있다.
( 제 2 실시예 )
제 2 실시예는 산술논리 연산회로(2)에 의한 승산시에 있어서, 승산결과에 대한 정값화 포화연산처리를 행하는 실시예이다. 승산결과의 정값화 포화연산처리를 행하기 위하여 제 2 실시예에서는 도 15의 내부 구성도에 도시된 바와 같이 산술논리 연산회로(2)가 출력한 승산결과에 대하여 정값화 포화연산을 행하도록 정값화 포화연산회로(3)가 산술논리 연산회로(2)의 출력단과 패스(P3)를 통하여 접속된다. 이와 같이 접속된 정값화 포화연산회로(3)를 기동하기 위하여, 본 실시예에서는 ROM(11)에 기억되어 있는 압축 데이터 신장 프로그램은 다음의 『MULBSST Dm,Dn』을 포함한다.
『MULBSST Dm,Dn』이란, 승산결과에 대한 정값화 포화연산처리를 확장기능으로서 지정한 승산명령이다. 즉, Dm 레지스터와 Dn 레지스터의 하위 8비트를 이용하여 승산을 행하고, 승산결과인 부호부 16비트 수치에 대하여 8비트의 정값화 포화연산처리를 정값화 포화연산회로(3)에 명령한다.
도 16은 정값화 포화연산부 승산명령『MULBSST Dm,Dn』의 포맷도이고, 『MULBSST Dm,Dn』은 도 16에 도시된 바와 같이 2비트 길이의 단항식의 연산내용 지정필드와, 2비트 길이의 승수 판독장소 지정필드와, 2비트 길이의 피승수 판독장소 지정필드 및 정값화 포화연산 결과의 저장장소 지정필드를 포함한다.
정값화 포화연산 처리필드는 『01』『10』『11』이 기입됨으로써 정값화 포화연산처리의 라운딩 폭을 24비트 정의 값, 16비트 정의 값, 8비트 정의 값 중 어느 하나로 지정한다.
승수 판독장소 지정필드 및 피승수 판독장소 지정필드는 『00』『01』『10』『11』이 기입됨으로써 데이터 레지스터(D0), 데이터 레지스터(D1) , 데이터 레지스터(D2) 및 적화결과 전용 레지스터(6) 중 어느 하나로부터 승수(Fij), 피승수(Gji)의 판독 장소 레지스터를 지정한다.
정값화 포화연산부 승산명령『MULBST Dm,Dn』이 실행되면 레지스터 파일(1)은 제 1 오퍼랜드 및 제 2 오퍼랜드에서 지시되는 레지스터명의 보유값을 출력한다. 다음에 연산회로(2)는 레지스터 Dm과 Dn의 값을 승산하고, 그 승산결과를 출력한다. 상기 승산결과에 대한 정값화 포화연산처리가 제 1 실시예와 같은 정값화 포화연산회로(3)에 의해 행해지고, 정값화 포화연산처리의 결과가 정값화 포화승산 명령의 제 2 오퍼랜드에 지정되는 레지스터로 전송된다.
이상과 같이 구성된 프로세서가 행렬곱 서브루틴에 기초하여 동작하는 상태를 설명하기로 한다. 명령판독회로(12)에 의해 행렬곱 서브루틴에 포함되는 전송명령이 디코더(13) 내의 명령버퍼 내로 판독되고, 디코더(13)가 판독된 전송명령을 해독한다. 이에 기초하여, RAM(10)에 기억되어 있는 8×8의 행렬형상 성분으로 된 압축 데이터(Fij)의 1행 1열 성분(F11)이 데이터 레지스터(D0) 상에 판독되고, 8×8의 계수 데이터(Gji)의 1행 1열 성분(G11)이 데이터 버스(18)를 통하여 레지스터 파일(1) 내의 데이터 레지스터(D1) 상에 판독된다.
행렬곱 서브루틴에는 전송명령에 이어 정값화 포화연산부 승산명령『MULBSST D0,D1』이 나열되고, 이것이 명령 판독회로(12)에 의해 디코더(13) 내의 명령버퍼 내로 판독되고, 디코더(13)가 판독된 정값화 포화연산부 승산명령『MULBSST D0,D1』을 해독한다. 해독 결과에 기초하여 데이터 레지스터(D0) 및 데이터 레지스터(D1)에 보유되어 있는 F11, G11이 제 1 내부버스(15) 및 제 2 내부버스(16) 상으로 전송된다.
정값화 포화연산부 승산명령『MULBSST D0,D1』의 해독시에 있어서 제 1 내부버스(15) 및 제 2 내부버스(16)에는 정값화 포화연산부 승산명령『MULBSST D0,D1』의 제 1 오퍼랜드 및 제 2 오퍼랜드로써 지정된 판독장소 레지스터의 보유값(F11, G11)이 전송되고 있으므로, 산술논리 연산회로(2)에 의해 데이터 레지스터(D0)의 보유값과 데이터 레지스터(D1)의 보유값의 승산이 행해져 그 승산결과가 패스(P1) 상으로 출력된다(또, 상기 F11은 비트 오류를 일으키고, G11*F11의 승산결과는 『0x000078FF』이라는 1바이트로 표현될 수 없는 수치로 되어 있는 것으로 한다.)
한편, 디코더(13)는 정값화 포화연산부 승산명령『MULBSST D0,D1』을 해독하면 디코더(13)는 정값화 포화연산회로(3)를 기동한다. 이 기동에 의하여, 제 1 실시예와 마찬가지로 비교회로(22)에 의해 적화결과 전용 레지스터(6)의 보유값과, 32비트 부호부 정수(0x000000FF)의 대소 비교가 행해진다. 이 경우, 적화결가 전용 레지스터(6)의 보유값이 최대값(0x000000FF)을 상회하고 있으므로, 비교기(22)는 논리값『1』을 멀티플렉서(24)로 출력한다.
정부 판별회로(23)는 적화결과 전용 레지스터(6)에 의하여 보유되는 제 16 비트째가 온인지를 판정한다. 이 판정은, 적화결과 전용 레지스터(6)에 축적되어 있는 적화값이 부의 수인지의 판정을 의미한다. 보유값(0x000078FF)의 2진수 표현은 (0000_0000 0000_0000 0111_1000 1111_1111)이고, 16비트째는 『0』이므로 논리값『0』을 멀티플렉서(24)로 출력한다.
이 때, 정수발생회로(21) 및 제로값 발생회로(25)에 의해 상한값『0x0000_00FF』 및 제로값『0x0000_0000』이 발생되어 있으나, 멀티플렉서(24)는 상한값, 제로값, 적화결과 전용 레지스터(6)의 보유값 중 어느 하나를 비교회로(22), 정부판별회로(23)로부터 출력된 논리값의 조합에 의해 선택적으로 출력한다. 이 경우는 비교회로(22)의 출력이 『1』이고, 정부 판별회로(23)의 출력이 『0』이므로, 멀티플렉서(24)는 정수발생회로(21)가 발새한 최대값『0x0000_00FF』를 데이터 버스(18) 상으로 출력한다.
디코더(13)의 제어에 의해 데이터 버스(18) 상으로 출력된 보유값은 정값화 포화연산명령『MULBSST D0』의 오퍼랜드에서 지정되는 데이터 레지스터(D0)로 전송되고, 데이터 레지스터(D0)에 의해 보유된다.
이상과 같이 제 2 실시예에 의하면, 부호부 연산결과에 대한 포화연산처리와 정값화 처리를 동시에 행하는 연산명령을 준비함으로써, 연산처리와 정값화 처리 및 포화연산처리의 3가지 처리를 1 단계에서 처리할 수 있고, 이로써 정값화 포화연산처리가 연산처리와 같은 단계에서 실행된다. 따라서, 정값화 포화연산처리의 실행 단계수는 실질적으로 0으로 된다.
또, 본 발명의 제 2 실시예에서는 부호없는 8비트폭에서의 라운딩을 행하고 있으나, 상한값은 임의의 정의 정수값을 설정하여도 된다.
상술한 바와 같은 본 발명의 프로세서에 의하면, 정값화 처리 및 포화연산처리로 이루어진 라운딩 처리를 보다 고속화할 수 있을 뿐 아니라 라운딩 처리를 위한 코드량의 증가를 최저한 억제할 수 있는 효과를 얻을 수 있게 된다.
본 발명의 바람직한 실시예들은 예시의 목적을 위해 개시된 것이며, 당업자라면 첨부된 특허청구범위에 개시된 본 발명의 사상과 범위를 통해 각종 수정, 변경, 대체 및 부가가 가능할 것이다.

Claims (13)

  1. 명령열 중의 명령을 순차적으로 해독하여 실행하는 프로세서에 있어서,
    명령열에 있어서의 몇 개의 명령은 조작할 값의 저장장소의 지정을 포함하고,
    다음에 해독할 명령에 상기 명령이 보정명령인 취지의 조작내용 지정이 존재하면 이것을 검출하는 검출수단과;
    다음에 해독할 명령으로부터 보정명령인 취지의 조작내용 지정이 검출되면 상기 명령에 있어서의 조작할 값의 저장장소에 저장된 부호있는 m비트 정수값을 부호없는 s비트 정수의 범위(s<m)로 라운딩(rounding)하는 라운딩 수단을 포함하는 것을 특징으로 하는 프로세서.
  2. (정정) 제 1 항에 있어서,
    보정명령은 라운딩 수단에 의해 라운딩된 값의 전송장소의 지정을 포함하고,
    상기 라운딩 수단은,
    보정명령이 검출되면 상기 저장장소에 저장된 부호부 m비트 정수가 s비트 정수의 부(負)의 수인지의 여부를 판정하는 제 1 판정회로와;
    보정명령이 검출되면 상기 저장장소에 저장된 부호부 m비트 정수가 부호없는 s비트 정수로 표현할 수 있는 최대값을 초과하는지의 여부를 판정하는 제 2 판정회로를 포함하며;
    상기 프로세서는,
    제 1 및 제 2 판정회로의 판정결과의 조합에 기초하여 부호없는 s비트 정수로 표현된 제 1 소정값, 제 2 소정값 및 상기 조작할 값의 저장장소에 저장되어 있는 수치 중 어느 하나를 라운딩 결과의 전송장소로 전송하는 전송수단을 포함하는 것을 특징으로 하는 프로세서.
  3. 제 2 항에 있어서,
    제 1 판정회로가 부의 수인 것으로 판정한 경우, s비트 정수로 표현된 제로(0)를 제 1 소정값으로서 라운딩 결과의 전송장소로 전송하고,
    제 2 판정회로가 최대값을 초과한다고 판정한 경우, s비트 정수의 정(正)의 값의 최대값을 제 2 소정값으로서 라운딩 결과의 전송장소로 전송하며,
    제 1 판정회로가 정수인 것으로 판정하고, 또한 제 2 판정회로가 최대값을 초과하지 않는다고 판정한 경우, 조작할 값의 저장장소에 저장되어 있는 수치를 라운딩 결과의 전송장소로 전송하는 것을 특징으로 하는 프로세서.
  4. 제 3 항에 있어서,
    상기 제 1 판정회로는,
    저장장소에 저장된 부호부 m비트 정수에 있어서의 s비트 정수의 부호비트의 온/오프를 검지하는 검지부를 포함하고,
    상기 제 2 판정회로는,
    저장장소에 저장된 부호부 m비트 정수로부터 s비트 정수의 정의 값의 최대값을 빼는 감산을 실시할 수 있는 연산기를 포함하는 것을 특징으로 하는 프로세서.
  5. 제 4 항에 있어서,
    m비트 정수는 32비트이고,
    상기 보정명령은 8비트, 16비트, 24비트 중 어느 하나를 비트수 s로서 지정하는 지정필드를 갖고,
    제 1 판정회로에 있어서의 검지부는,
    보정명령에 포함된 지정필드에 따라 하위로부터 8비트째, 16비트째, 24비트째 중 어느 하나를 부호비트로서 결정하고,
    제 2 판정회로는,
    보정명령에 포함된 지정필드에 따라 부호없는 8비트 정수, 부호없는 16비트 정수, 부호없는 24비트 정수 중 어느 하나를 발생하는 발생부를 포함하는 것을 특징으로 하는 프로세서.
  6. 제 2 항에 있어서,
    전용 레지스터와,
    명령열에 포함되어 있는 연산명령에 따라 연산을 행하고, 연산결과를 전용 레지스터에 보유되어 있는 연산결과에 가산하는 연산수단을 포함하고,
    보정명령은 상기 전용 레지스터를 조작할 값의 저장장소로 지정하며,
    전송수단은,
    제 1 판정회로가 정수인 것으로 판정하고, 또한 제 2 판정회로가 최대값을 초과하지 않는다고 판정한 경우, 전용 레지스터가 보유하는 수치를 라운딩 결과의 전송장소로 전송하는 것을 특징으로 하는 프로세서.
  7. 제 6 항에 있어서,
    복수의 범용 레지스터로 이루어진 레지스터 파일을 포함하고,
    보정명령은 레지스터 파일 중 어느 하나의 범용 레지스터를 라운딩 결과의 전송장소로 지정하고,
    상기 전송수단은 제 1, 제 2 판정회로의 판정결과의 조합에 기초하여, 부호없는 s비트 정수로 표현된 제 1 소정값, 제 2 소정값 및 조작할 값의 저장장소에 저장되어 있는 수치 중 어느 하나를 범용 레지스터로 전송하는 것을 특징으로 하는 프로세서.
  8. 명령열 중의 명령을 순차적으로 해독하여 실행하는 프로세서에 있어서,
    명령열에 있어서의 몇 개의 명령은 조작할 값의 저장장소를 포함하고,
    다음에 해독할 명령에 상기 명령이 연산을 행하는 취지의 지정이 존재하면 이것을 검출하는 제 1 검출수단과;
    연산을 행하는 취지의 지정 외에 연산결과의 라운딩을 행하는 취지의 지정이 다음에 해독할 명령에 포함되어 있으면 이것을 검출하는 제 2 검출수단과;
    제 1 검출수단에 의해 연산을 행하는 취지의 지정이 검출되면 연산을 행하는 취지의 지정에 따라 m비트 정수값을 이용한 연산을 행하는 연산수단과;
    제 2 검출수단에 의해 라운딩을 행하는 취지의 지정이 검출되면 m비트 정수값을 이용하여 연산결과를 부호없는 s비트 정수의 범위(s<m)로 라운딩하는 라운딩 수단을 포함하는 것을 특징으로 하는 프로세서.
  9. (정정) 제 8 항에 있어서,
    라운딩을 행하는 취지의 지정을 포함하는 명령은 라운딩 수단에 의해 라운딩된 값의 전송장소의 지정도 포함하고,
    상기 라운딩 수단은,
    제 2 검출수단에 의해 라운딩을 행하는 취지의 지정이 검출되면 연산수단에 의해 연산된 결과가 부호부 s비트 정수의 부의 수인지를 판정하는 제 1 판정회로와;
    제 2 검출수단에 의해 라운딩을 행하는 취지의 지정이 검출되면 연산수단에 의해 연산된 결과가 부호없는 s비트 정수로 표현할 수 있는 최대값을 초과하는지를 판정하는 제 2 판정회로를 포함하며;
    상기 프로세서는,
    제 1, 제 2 판정회로의 판정결과의 조합에 기초하여 부호없는 s비트 정수로 표현된 제 1 소정값, 제 2 소정값 및 연산수단의 연산결과 중 어느 하나를 해독된 전송장소로 전송하는 전송수단을 포함하는 것을 특징으로 하는 프로세서.
  10. (정정) 제 9 항에 있어서,
    제 1 판정회로가 s비트 정수의 부의 수로 판정한 경우, s비트 정수로 표현된 제로를 제 1 소정값으로서 상기 전송장소로 전송하고,
    제 2 판정회로가 s비트 정수의 정의 값의 최대값을 초과한 값으로 판정한 경우, s비트 정수의 정의 값의 최대값을 제 2 소정값으로서 상기 전송장소로 전송하고,
    제 1 판정회로가 s비트 정수의 정수로 판정하고, 제 2 판정회로가 s비트 정수의 정의 값의 최대값을 초과하지 않는다고 판정한 경우, 연산수단의 연산결과를 상기 전송장소로 전송하는 것을 특징으로 하는 프로세서.
  11. 제 10 항에 있어서,
    제 1 판정회로는,
    연산수단의 연산결과에 있어서, s비트 정수의 부호비트의 온/오프를 검지하는 검지부를 포함하고,
    제 2 판정회로는,
    연산수단의 연산결과로부터 부호없는 s비트 정수의 정의 값의 최대값을 빼는 감산을 실시할 수 있는 연산기를 포함하는 것을 특징으로 하는 프로세서.
  12. 제 11 항에 있어서,
    m비트 정수는 32비트이고,
    상기 보정명령은 8비트, 16비트, 24비트 중 어느 하나를 비트수 s로서 지정하는 지정필드를 갖고,
    제 1 판정회로에 있어서의 검지부는,
    보정명령에 포함되어 있는 지정필드에 따라 하위로부터 8비트째, 16비트째, 24비트째 중 어느 하나를 부호비트로서 결정하고,
    연산기는,
    보정명령에 포함되어 있는 지정필드에 따라 부호없는 8비트 정수, 16비트 정수, 24비트 정수 중 어느 하나를 발생하는 발생부를 포함하는 것을 특징으로 하는 프로세서.
  13. 제 12 항에 있어서,
    복수의 범용 레지스터로 이루어진 레지스터 파일을 포함하고,
    연산명령은 라운딩 결과의 전송장소를 레지스터 파일 중 어느 하나의 범용 레지스터에 지정하는 것을 특징으로 하는 프로세서.
KR1019970064288A 1996-11-29 1997-11-29 정값화처리및포화연산처리로이루어진라운딩처리를적합하게행할수있는프로세서 KR100455011B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP32042396 1996-11-29
JP96320423 1996-11-29

Publications (2)

Publication Number Publication Date
KR19980042913A KR19980042913A (ko) 1998-08-17
KR100455011B1 true KR100455011B1 (ko) 2004-12-17

Family

ID=18121299

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970064288A KR100455011B1 (ko) 1996-11-29 1997-11-29 정값화처리및포화연산처리로이루어진라운딩처리를적합하게행할수있는프로세서

Country Status (7)

Country Link
US (5) US5974540A (ko)
EP (2) EP0845741B1 (ko)
JP (1) JP3790619B2 (ko)
KR (1) KR100455011B1 (ko)
CN (2) CN100356316C (ko)
DE (1) DE69720922T2 (ko)
TW (1) TW448400B (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69720922T2 (de) * 1996-11-29 2003-11-13 Matsushita Electric Ind Co Ltd Prozessor mit verbessertem Rundungsprozess
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
US6209017B1 (en) * 1997-08-30 2001-03-27 Lg Electronics Inc. High speed digital signal processor
US6182105B1 (en) * 1998-08-27 2001-01-30 Lucent Technologies Inc. Multiple-operand addition with intermediate saturation
US6535900B1 (en) * 1998-09-07 2003-03-18 Dsp Group Ltd. Accumulation saturation by means of feedback
US6529930B1 (en) * 1998-11-16 2003-03-04 Hitachi America, Ltd. Methods and apparatus for performing a signed saturation operation
US6314443B1 (en) 1998-11-20 2001-11-06 Arm Limited Double/saturate/add/saturate and double/saturate/subtract/saturate operations in a data processing system
US6532486B1 (en) * 1998-12-16 2003-03-11 Texas Instruments Incorporated Apparatus and method for saturating data in register
WO2001042907A2 (en) * 1999-12-10 2001-06-14 Broadcom Corporation Apparatus and method for reducing precision of data
US6748521B1 (en) * 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
US6704820B1 (en) * 2000-02-18 2004-03-09 Hewlett-Packard Development Company, L.P. Unified cache port consolidation
US7184486B1 (en) 2000-04-27 2007-02-27 Marvell International Ltd. LDPC encoder and decoder and method thereof
US6888897B1 (en) 2000-04-27 2005-05-03 Marvell International Ltd. Multi-mode iterative detector
US7000177B1 (en) 2000-06-28 2006-02-14 Marvell International Ltd. Parity check matrix and method of forming thereof
US6965652B1 (en) 2000-06-28 2005-11-15 Marvell International Ltd. Address generator for LDPC encoder and decoder and method thereof
US7072417B1 (en) 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US7099411B1 (en) 2000-10-12 2006-08-29 Marvell International Ltd. Soft-output decoding method and apparatus for controlled intersymbol interference channels
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
KR100517971B1 (ko) * 2002-09-07 2005-09-30 엘지전자 주식회사 이동통신 시스템의 고정점 결정장치 및 방법
US7149766B1 (en) * 2002-11-12 2006-12-12 Unisys Corporation Methods for detecting overflow and/or underflow in a fixed length binary field
US7577892B1 (en) 2005-08-25 2009-08-18 Marvell International Ltd High speed iterative decoder
US7861131B1 (en) 2005-09-01 2010-12-28 Marvell International Ltd. Tensor product codes containing an iterative code
JP4832572B2 (ja) * 2007-11-07 2011-12-07 三菱電機株式会社 安全制御装置
JP2010020625A (ja) * 2008-07-11 2010-01-28 Seiko Epson Corp 信号処理プロセッサ及び半導体装置
US8321769B1 (en) 2008-11-06 2012-11-27 Marvell International Ltd. Multi-parity tensor-product code for data channel
CN114461275A (zh) 2011-12-22 2022-05-10 英特尔公司 具有独立进位链的加法指令
WO2013095603A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for down conversion of data types
CN104133806A (zh) * 2014-07-31 2014-11-05 杭州康芯电子有限公司 一种十六位嵌入式芯片软核
CN112612521A (zh) * 2016-04-26 2021-04-06 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5856032A (ja) * 1981-09-29 1983-04-02 Toshiba Corp パイプライン演算装置
JPH0774989B2 (ja) * 1988-01-18 1995-08-09 株式会社東芝 符号変換回路
JP2600293B2 (ja) * 1988-06-10 1997-04-16 日本電気株式会社 オーバーフロー補正回路
JPH04309123A (ja) * 1991-04-08 1992-10-30 Nec Corp 冗長2進演算回路
US5235533A (en) * 1992-05-11 1993-08-10 Intel Corporation Store rounding in a floating point unit
JPH06175821A (ja) * 1992-12-10 1994-06-24 Fujitsu Ltd 演算装置
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
KR0179969B1 (ko) 1993-09-01 1999-05-01 김광호 안테나 입력신호의 게인 조정방법
JP3487903B2 (ja) * 1993-11-12 2004-01-19 松下電器産業株式会社 演算装置及び演算方法
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
JP2591463B2 (ja) * 1993-12-27 1997-03-19 日本電気株式会社 リミッタ装置
US5642301A (en) * 1994-01-25 1997-06-24 Rosemount Inc. Transmitter with improved compensation
JP3105738B2 (ja) 1994-06-10 2000-11-06 日本電気株式会社 情報処理装置
JP3651698B2 (ja) 1995-04-28 2005-05-25 株式会社アサヒオプティカル プラスチックレンズの製造方法
IL116210A0 (en) * 1994-12-02 1996-01-31 Intel Corp Microprocessor having a compare operation and a method of comparing packed data in a processor
GB2300054A (en) * 1995-01-17 1996-10-23 Hewlett Packard Co Clipping integers
US5801977A (en) * 1995-01-17 1998-09-01 Hewlett-Packard Company System and method for clipping integers
US5687359A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Floating point processor supporting hexadecimal and binary modes using common instructions with memory storing a pair of representations for each value
US5696709A (en) * 1995-03-31 1997-12-09 International Business Machines Corporation Program controlled rounding modes
JPH0997178A (ja) 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
JP3701401B2 (ja) 1996-08-12 2005-09-28 株式会社ルネサステクノロジ 飽和演算命令を有するマイクロプロセッサ
DE69720922T2 (de) * 1996-11-29 2003-11-13 Matsushita Electric Ind Co Ltd Prozessor mit verbessertem Rundungsprozess
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6029184A (en) * 1997-06-17 2000-02-22 Sun Microsystems, Inc. Method of performing unsigned operations with signed instructions in a microprocessor
US5870320A (en) * 1997-06-23 1999-02-09 Sun Microsystems, Inc. Method for reducing a computational result to the range boundaries of a signed 16-bit integer in case of overflow

Also Published As

Publication number Publication date
USRE43729E1 (en) 2012-10-09
CN1210647C (zh) 2005-07-13
EP0845741A2 (en) 1998-06-03
CN100356316C (zh) 2007-12-19
TW448400B (en) 2001-08-01
DE69720922T2 (de) 2003-11-13
US6237084B1 (en) 2001-05-22
DE69720922D1 (de) 2003-05-22
EP0845741B1 (en) 2003-04-16
JP3790619B2 (ja) 2006-06-28
JPH10214186A (ja) 1998-08-11
KR19980042913A (ko) 1998-08-17
US5974540A (en) 1999-10-26
CN1193771A (zh) 1998-09-23
EP0845741A3 (en) 2000-11-29
USRE39121E1 (en) 2006-06-06
CN1512317A (zh) 2004-07-14
USRE43145E1 (en) 2012-01-24
EP1306752A1 (en) 2003-05-02

Similar Documents

Publication Publication Date Title
KR100455011B1 (ko) 정값화처리및포화연산처리로이루어진라운딩처리를적합하게행할수있는프로세서
US7287152B2 (en) Conditional execution per lane
US6438676B1 (en) Distance controlled concatenation of selected portions of elements of packed data
US7127593B2 (en) Conditional execution with multiple destination stores
US8024551B2 (en) Pipelined digital signal processor
US5880979A (en) System for providing the absolute difference of unsigned values
US7017032B2 (en) Setting execution conditions
TW564368B (en) Method and apparatus for arithmetic operations on vectored data
WO2010129684A1 (en) Execution units for context adaptive binary arithmetic coding (cabac)
US6844834B2 (en) Processor, encoder, decoder, and electronic apparatus
US20020053015A1 (en) Digital signal processor particularly suited for decoding digital audio
US7861071B2 (en) Conditional branch instruction capable of testing a plurality of indicators in a predicate register
JP2001147799A (ja) データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
US7003651B2 (en) Program counter (PC) relative addressing mode with fast displacement
KR20050037607A (ko) 동적 프로그램 압축 해제 장치 및 방법
US7647368B2 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
KR20020021078A (ko) 데이터 처리 시스템 및 복수의 부호 데이터 값의 산술연산 수행방법

Legal Events

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

Payment date: 20120928

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141002

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170920

Year of fee payment: 14

EXPY Expiration of term