KR100764260B1 - 프로세싱 시스템에서의 실행 인스트럭션 형성 방법 - Google Patents

프로세싱 시스템에서의 실행 인스트럭션 형성 방법 Download PDF

Info

Publication number
KR100764260B1
KR100764260B1 KR1020017005617A KR20017005617A KR100764260B1 KR 100764260 B1 KR100764260 B1 KR 100764260B1 KR 1020017005617 A KR1020017005617 A KR 1020017005617A KR 20017005617 A KR20017005617 A KR 20017005617A KR 100764260 B1 KR100764260 B1 KR 100764260B1
Authority
KR
South Korea
Prior art keywords
parameter
bits
bit
value
data value
Prior art date
Application number
KR1020017005617A
Other languages
English (en)
Other versions
KR20010075681A (ko
Inventor
새빌레윈드로프엘
로스케빈
Original Assignee
엔엑스피 비 브이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔엑스피 비 브이 filed Critical 엔엑스피 비 브이
Publication of KR20010075681A publication Critical patent/KR20010075681A/ko
Application granted granted Critical
Publication of KR100764260B1 publication Critical patent/KR100764260B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Abstract

프로세싱 시스템내에서의 실행을 위한 가변 길이 인스트럭션이 형성된다. 각각의 인스트럭션은 하나 이상의 사전결정된 타입의 파라미터를 갖는 파라미터부와 연산코드부를 포함한다. 연산코드부는 수행될 연산, 인스트럭션 내의 파라미터의 갯수, 및 파라미터의 정의적 특성을 지정한다. 파라미터는 압축가능한 데이터를 나타낼 수 있어서 인스트럭션 내의 파라미터의 크기를 감소시킬 수 있다.

Description

프로세싱 시스템에서의 실행 인스트럭션 형성 방법{VARIABLE-INSTRUCTION-LENGTH PROCESSING}
본 발명은 프로세싱 시스템 내에서의 인스트럭션의 형성에 관한 것으로, 특히 가변 길이 인스트럭션의 형성에 관한 것이다.
프로세싱 시스템 내에서의 데이터 조작은, 각각 연산코드부와 파라미터부를 포함하는 인스트럭션을 사용함으로써 달성된다. 연산코드부는 시스템 내의 프로세서에 의해 수행될 연산을 지정하며, 파라미터부는 메모리 내에 데이터를 위치시키기 위한 어드레스 및/또는 프로세서에 의해 조작될 갯수와 같은 데이터를 나타내는 하나 이상의 파라미터를 포함한다.
어드레스를 나타내는 하나 이상의 파라미터를 포함하고 있는 임의의 인스트럭션에서, 전체 비트 길이는 가장 큰 어드레스값을 나타낼 수 있을 정도로 충분히 커야만 한다. 이러한 비트 길이를 감소시키기 위한 일반적인 기법은, 상이한 길이의 어드레스 파라미터들을 갖는 다양한 인스트럭션이 제공되는 어드레스 인덱싱을 사용하는 것이다. 가령, 상이한 길이의 오프셋 파라미터를 가지며 상이한 갯수의 바이트를 필요로 하는 다양한 JUMP 인스트럭션이 제공될 수도 있다.
마찬가지로, 프로세서에 의해 조작될 갯수를 나타내는 하나 이상의 파라미터를 포함하는 임의의 인스트럭션에서, 전체 비트 길이는 최대의 갯수값을 나타낼 정도로 충분히 커야만 한다. 통상적으로, 프로세싱 시스템은 상이한 비트 길이의 용량을 갖는 다양한 메모리(레지스터, ROM, RAM 등)를 구비하고 있으며, 다양한 상이한 비트 길이의 갯수를 이동시킬 수 있다. 이러한 것을 용이하게 하기 위해, 이용가능한 각각의 비트 길이의 조합에 대해 상이한 MOVE 인스트럭션을 제공하는 것이 일반적이다. 가령, 모든 메모리의 용량이 동일한 경우(가령, 32비트의 용량)에서 조차, 다음과 같은 네개의 상이한 MOVE 인스트럭션이 요구될 수 있다. 즉, 그 인스트럭션은, 8비트의 수를 32비트 용량의 메모리 위치로 이동시키는 제 1 MOVE 인스트럭션과, 16비트의 수를 32비트 용량의 메모리 위치로 이동시키는 제 2 MOVE 인스트럭션과, 24비트 수를 32비트 용량의 메모리 위치로 이동시키는 제 3 MOVE 인스트럭션과, 32비트 수를 32비트 용량의 메모리 위치로 이동시키는 제 4 MOVE 인스트럭션을 포함한다.
전술한 처음의 세가지 일예에서, 프로세서는 이동된 워드를 32비트값으로 자동적으로 신장시킬 것이다.
따라서, 본 발명의 목적은 프로그램에 필요한 메모리 공간을 감소시키는데 있다. 이러한 것은 연산코드의 수를 증가시키지 않고도 파라미터를 압축함으로써 달성된다.
본 발명에 따른 프로세싱 시스템 내에서의 실행 인스트럭션을 형성하는 방법은, 프로세서에 의해 수행될 적어도 하나의 연산을 결정하는 연산코드부를 제공하는 단계와,
각각의 데이터 값을 나타내는 적어도 하나의 파라미터를 포함하는 압축가능한 파라미터부를 제공하는 단계를 포함하며, 파라미터부는 적어도 하나의 파라미터의 압축 상태를 나타내는 신장 지시자를 포함한다.
본 명세서에 사용되는 '메모리'라는 단어는 일반적으로 그것이 사용되는 방식에 일관성이 있는 것으로서 해석되며 어떠한 제한도 없이 RAM, DRAM, ROM, 레지스터 및 그의 조합을 포함하는 다양한 타입의 휘발성 및 비휘발성 장치를 포함하는 것으로 해석된다는 것을 주목할 필요가 있다. 또한, 본 명세서에 사용되는 단어 '포인터'는 메모리 위치를 식별하는 임의의 값을 의미한다. 또한, '액세싱' 데이터는 메모리로부터 데이터를 얻거나 메모리에 데이터를 기입하는 것을 의미한다.
도 1은 본 발명의 바람직한 실시예를 설명하기 위한 예시적인 프로세싱 시스템을 도시하는 블럭도이며,
도 2a 내지 도 2d는 본 발명을 설명하기 위한 예시적인 파라미터를 도시하며,
도 3a 내지 도 3l은 본 발명을 설명하기 위한 예시적인 인스트럭션을 도시한다.
도 1의 프로세싱 시스템은 프로세서(10)와 메모리(20)를 포함한다. 일예의 프로세서(10)는 프로그램 카운터 레지스터에 의해 식별되는 인스트럭션들을 순차 배열하는데 클럭 펄스를 사용하는 하드웨어 가속형 유닛(hardware-accelerated unit)이다. 전형적으로, 프로그램 카운터 레지스터는 프로세서에 의해 판독되고 수행될 다음 인스트럭션의 메모리 위치를 포함한다.
프로세서는 특히 문맥 레지스터 세트(context register set)(12), 인스트럭션 디코더(14), 산술 논리 유닛(16)을 포함한다. 메모리(20)는 본 실시예에서 특히 데이터 및/또는 시스템 변수를 저장하고 프로그램 방법 및/또는 프로시저의 기능을 용이하게 하기 위한 LIFO 스택으로서 기능하는 다수의 메모리 위치들을 갖는 RAM을 포함한다.
프로세서(10) 및 메모리(20)는 서로간의 통신을 위해 공통 버스에 접속되고, 기타 하드웨어와의 통신을 위해 공통 버스(30)에 접속된다. 이 공통 버스는 어드레스, 인터럽트, 데이터, 판독 스트로브, 기록 스트로브 및 장치 선택 스트로브와 같은 데이터의 전달을 위한 회선을 각각 포함한다. 바람직하게도, 이러한 공통 버스는 프로세서 및 메모리를 구비한 공통 실리콘 기판상에 적어도 부분적으로 형성되는 고속 버스이다.
문맥 레지스터 세트(12)는 프로그램 카운터 레지스터(121), 하나 이상의 범용 레지스터(123), 및 스택을 어드레싱하기 위해 사용되는 레지스터(124)를 포함한다. 특히, 문맥 레지스터 세트 내의 레지스터는, 프로세서에 의해 액세스될 다음 메모리 어드레스를 식별하기 위한 지속적으로 갱신되는 프로그램 카운트 PC를 보관하고 있는 프로그램 카운터 레지스터(121)와, 메모리(20)로부터 판독되거나 산술 논리 유닛(16)에 의해 생성되는 데이터를 포함하고 있는 범용 레지스터(123)와, 액세스중인 현재의 스택 어드레스의 메모리내의 위치를 식별하는 스택 포인터 SP를 보관하기 위한 레지스터(124)를 포함한다.
인스트럭션 디코더(14)는 메모리(20)로부터 판독되는 인스트럭션을 하위 레벨의 연산 코드로 변환시키기 위한 시퀀서 혹은 마이크로 시퀀서와 같은 종래의 하드웨어 컴포넌트이다. 산술 논리 유닛(16)은 또한 종래의 하드웨어 컴포넌트이다.
프로세서에 의해 실행되는 적어도 일부의 인스트럭션들은 본 발명에 따른 파라미터부와 연산코드부를 포함한다. 파라미터부는 프로세서에 의해 사용될 데이터를 나타내는 아래의 파라미터 타입들 중의 하나의 파라미터 타입을 포함할 수 있다.
UmNC는 압축되지 않은(NC) 무부호(U) 데이터(unsigned data)를 나타내는 파라미터로서 전체 m개의 비트 길이를 갖는다.
SmNC는 압축되지 않은(NC) 유부호(S) 데이터(signed data)를 나타내는 파라미터로서 전체 m개의 비트 길이를 갖는다.
Um_C는 압축가능한(_C) 무부호(U) 데이터를 나타내는 파라미터로서 전체 m개의 비트 길이를 갖는다.
Sm_C는 압축가능한(_C) 유부호(S) 데이터를 나타내는 파라미터로서 전체 m개의 비트 길이를 갖는다.
주목할 것은, 파라미터 타입들 UmNC 및 SmNC는 널리 알려져 있지만 본 발명과 기존의 것과의 호환성을 나타내기 위해 포함되고 있다는 것이다. 또한 주목할 것은, 모든 경우에 m은 제각기의 파라미터에 의해 표현되는 최종의 압축되지 않은 데이터에 있어서의 전체 비트의 수를 나타낸다는 것이다. 또한, 본 발명에 따라 형성된 각각의 파라미터는 사전 결정된 비트 길이의 하나 이상의 바이트를 포함한다. 전술한 실시예에서, 각각의 바이트는 8비트의 길이를 갖는다.
도 2a 및 도 2b는 각 타입의 파라미터 Um_C, Sm_C에 대한 일예의 포맷을 도시한다. 이 일예에서, 각각의 파라미터는 두개의 바이트를 포함한다.
특히, 도 2a에는 압축되지 않고 전체 16비트의 비트 길이(m=16)를 갖는 무부호 데이터값을 나타내는 UmNC 타입의 2바이트 파라미터가 도시된다. 이 일예에서, 각 바이트의 파라미터는 그것이 나타내는 대응 바이트의 데이터와 동일하다.
도 2b는 압축되지 않은 유부호 데이터값을 나타내는 SmNC 타입의 2바이트 파라미터를 도시하는 것으로서 전체 16비트의 비트 길이(m=16)를 갖는다. 이 일예에서, 각 바이트의 파라미터는 그것이 나타내는 대응 바이트의 데이터와 동일하지만, 그 데이터값의 첫번째 비트는 부호 비트 s이다.
도 2c에는 압축가능한 무부호 데이터값을 나타내는 Um_C 타입의 2바이트 파라미터가 도시되며, 이 데이터 값은 전체 16비트의 비트 길이(m=16)를 갖지만, 그 데이터가 압축되었는지의 여부에 따라 파라미터 그 자체의 비트 길이보다 클 수 있다. 이는 그 파라미터의 제 1 바이트내의 신장 비트 e로 표시된다. 이 e의 값은 프로세서가 파라미터의 제 1 바이트를 전체 16비트의 크기 데이터값으로 신장할지 혹은 메모리로부터 제 2 바이트를 판독할지를 결정한다.
도 2d에는 압축가능한 유부호 데이터값을 나타내는 Sm_C 타입의 파라미터가 도시되며, 이 데이터 값은 전체 16비트의 비트 길이(m=16)를 갖지만, 데이터가 압축되었는지의 여부에 따라 파라미터 그 자체의 비트 길이보다 클 수 있다. 이는 그 파라미터의 제 1 바이트내에 포함된 신장 비트 e로 표시되며, 이 e는 프로세서가 파라미터의 제 1 바이트를 전체 16비트의 크기 데이터값으로 신장할지 혹은 메모리로부터 제 2 바이트를 판독할지를 결정하는 값을 갖는다. 제 2 비트는 부호 비트 s이다.
하나 이상의 파라미터 타입 UmNC, SmNC, Um_C, Sm_C를 포함하는 각각의 인스트럭션에 있어서, 특정 연산코드는 프로세서에 의해 수행될 연산 또는 연산들과, 인스트럭션내의 해당 파라미터의 갯수와, 각각의 파라미터의 정의적 특성들을 결정하며, 이 정의적 특성은, 그 파라미터가 압축가능한 데이터를 나타내는지의 여부의 특성과, 그 파라미터에 의해 표시되는 데이터의 비압축 길이 m에 관한 특성과, 그 파라미터가 유부호형(부호를 포함함)인지 무부호형(부호를 포함하지 않음)인지에 관한 특성을 포함한다.
멀티 바이트 파라미터의 경우, 바이트들이 프로세서에 의해 판독되고 정렬되어 파라미터를 형성하는 순서가 결정되어야만 한다. 이러한 것은 다양한 방식으로 행해질 수 있는데, 가령 각각의 파라미터들이 연관되는 특정 인스트럭션의 정의에 이 순서를 포함하는 것과, 특정 프로세서에 대한 파라미터 정렬의 고정된 순서를 정의하는 것과, 정렬 순서를 지정하는 코드를 파라미터 자체에 포함하는 것에 의해 달성될 수 있다.
바람직하게도 인스트럭션의 연산코드부는 파라미터의 갯수와 그 특성을 고유하게 지정하도록 포맷된다. 가령, ALU(16)가 오퍼랜드 A와 오퍼랜드 B를 가산하고 그 합을 어드레스 C에 저장하는 ADD 인스트럭션에 대한 연산코드는 각각의 오퍼랜드 A, B, C에 대해 하나의 파라미터가 존재하는 세개의 파라미터를 포함할 것이다. 주목할 것은, 가령 오퍼랜드 A, B가 압축가능한 값을 가질 수 있으며, C는 잠재적으로 압축가능한 수일 수 있는 베이스 어드레스로부터의 인덱스일 수 있다는 것이다. 또한, 인스트럭션 그 자체의 정의는 이들 각 파라미터의 관련 특성을 지정할 것이다. 다른 일예로서, 프로세서(10)가 값 M에 의해 표현되는 메모리 공간을 제공할 스택 내의 어드레스로 레지스터(124)내의 스택 포인터값 SP를 감소시키는 ENTER 인스트럭션에 대한 연산코드는 단일의 무부호 파라미터 M을 포함할 것이다. M의 크기는 압축될 수 있는데 그 이유는 이것이 SP에 의해 위치 지정되는 현재의 어드레스에 대한 인덱스이기 때문이다. 인스트럭션 그 자체의 정의는 또한 파라미터 M의 다른 적절한 특성을 지정할 것이다.
프로세서(10)는 지속적으로 갱신되는 프로그램 카운터 PC에 의해 표시되는 메모리 어드레스에 액세싱함으로써 각각의 인스트럭션을 바이트마다 형성한다. 바람직하게도 이들 어드레스는 프로세서 그 자체 내의 캐시 메모리와 같은 고속 액세스 메모리내의 위치를 가르킨다. 먼저, 프로세서는 연산코드를 판독하고 그 다음에 특정 연산코드에 의해 정의된 파라미터의 갯수를 판독한다. 도 3a 내지 도 3j는 전술한 것이 상이한 타입의 파라미터에 대해 어떻게 행해지는지에 관한 일예들을 도시한다. 각각의 인스트럭션은 연산코드부와 그 다음에 하나 이상의 파라미터를 포함하고 있는 파라미터부를 포함한다.
특히, 도 3a는 UmNC 타입의 단일의 1바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서 m=8이며, 8비트 파라미터는 그것이 나타내는 데이터값과 동일하다.
도 3b는 SmNC 타입의 단일의 1바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서 m=8이며, 8비트 파라미터는 부호 비트 s=0을 포함하고 그것이 나타내는 데이터값과 동일하다.
도 3c는 Um_C 타입의 단일 2바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서 m=16이며, 그 파라미터의 제 1 바이트는 제 1 바이트가 압축되지 않았음을 나타내는 신장 비트값 e=0을 포함한다. 따라서, 프로세서는 완전한 16비트 파라미터를 형성하기 위해서는 하나 이상의 바이트를 판독해야만 한다.
도 3d는 Um_C 타입의 두개의 1바이트 파라미터를 갖는 인스트럭션을 도시한다. 각각의 파라미터에 대해, m=16이며 제 1 비트는 값 e=1을 갖는 신장 비트이다. 이러한 것은 프로세서(10)에게 각각의 파라미터를 파라미터에 의해 표현되는 전체 16비트의 데이터값으로 신장할 것을 통지한다. 이러한 것은 어떠한 압축 기법이 본 발명에 대한 특정 연산코드와 관련되었는지에 따라 행해질 수 있다. 가령, 만약 어느 하나의 파라미터가 16비트 레지스터 내로 기록될 인덱스 값을 나타내지만 그 최대값이 7비트 혹은 그 미만의 비트로 형성될 수 있다면, 그 파라미터는 신장 비트를 폐기하고 나머지 7개 비트의 앞에 사전결정된 값의 9개의 비트(가령 9개의 제로)를 삽입함으로써 16비트로 신장될 수 있다. 그와 달리, 8비트의 파라미터는 특정 연산코드와 관련한 압축 알고리즘에 의해 전체 16 비트로 신장될 수 있다.
도 3e는 Um_C 타입의 단일의 4바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=32이며, 각각의 처음의 3개 바이트는 e=0의 신장 비트값을 포함한다. 프로세서는 세개의 신장 비트값을 판독하고 폐기하며, 처음의 3개 바이트의 각각으로부터 7개의 데이터 비트를 판독하며, 제 4 바이트로부터 8개의 데이터 비트를 판독하며, 파라미터를 32비트로 신장하기 위해 나머지 29비트의 앞에 사전결정된 값의 세개의 비트(가령, 세개의 제로)를 삽입한다.
도 3f는 Um_C 타입의 단일의 3바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=32이며, 처음의 두개의 바이트 각각은 e=0의 신장 비트값을 포함하며, 제 3 바이트는 e=1의 신장 비트값을 포함한다. 프로세서는 세개의 바이트의 각각으로부터 7개의 데이터 비트를 판독하고, 세개의 신장 비트값을 판독하여 폐기하고, 다음에 파라미터를 32비트로 신장하기 위해 나머지 21 비트의 앞에 사전결정된 값의 11비트(폐기된 신장 비트의 각각에 대해 하나씩과 그리고 e=1의 값을 갖는 신장 비트에 응답하는 8개 비트)를 삽입한다. 만약 완전한 데이터값의 비어있는 비트에 제로값을 채움으로써 신장이 달성되면, 그 프로세서는 3바이트 파라미터에 의해 제공되는 21 데이터 비트의 앞에 전술한 값의 11비트를 삽입하게 될 것이다. 본 발명의 바람직한 실시예에서 주목할 것은, 파라미터들이 메모리에 저장되고, 그의 역순으로, 즉 최하위 바이트로부터 최상위 바이트의 순으로 메모리로부터 판독된다는 것이다. 따라서 도 3f의 일예에서는, 판독된 제 1 바이트의 파라미터는 최하위 7비트의 데이터값 [1010101]을 형성하며, 판독된 제 2 바이트의 파라미터는 그 다음의 상위 7비트의 데이터값 [1110000]을 형성하며, 판독된 제 3 바이트의 파라미터는 최상위 7비트의 데이터값 [1100110]을 형성하며, 11개의 제로가 파라미터의 최종 판독 3바이트의 앞에 삽입되어 완전한 데이터값 [00000000000110011011100001010101]을 형성한다.
도 3g는 Sm_C 타입의 단일의 2바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=16이며, 제 1 바이트는 e=0의 신장 비트와 부호 비트 s=0를 포함한다. 따라서, 프로세서는 두개의 바이트를 판독하고 판독된 부호 비트와 나머지 14개의 데이터 비트 사이에 1비트의 사전결정된 값을 삽입한다. 단순화를 위해, 바람직하게도 이 사전결정된 값은 부호 비트의 값과 동일하다.
도 3h는 Sm_C 타입의 단일의 1바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=16이며, 단일 바이트는 e=1의 신장 비트값과 s=1의 부호 비트값을 포함한다. 따라서, 프로세서는 단일 바이트를 판독하고 판독된 부호 비트와 나머지 6개 비트 사이에 9개 비트의 사전결정된 값(가령, 부호 비트)를 삽입한다.
도 3i는 Sm_C 타입의 단일의 4바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=32이며, 제 1 바이트는 e=0의 신장 비트값과 s=0의 부호 비트값을 포함하며, 제 2 및 제 3 바이트의 각각은 e=0의 신장 비트값을 포함하며, 제 4 바이트는 나머지 8비트의 데이터값을 포함한다. 따라서, 프로세서는 4바이트를 판독하고 판독된 부호 비트와 나머지 28 데이터 비트 사이에 3비트의 사전결정된 값, 가령 부호 비트값을 삽입한다.
도 3j는 Sm_C 타입의 단일의 3바이트 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=32이며, 제 1 바이트는 e=0의 신장 비트값과 s=1의 부호 비트값을 포함하며, 제 3 바이트는 e=1의 신장 비트값을 포함한다. 따라서, 프로세서는 변경없이 처음 두개의 바이트를 판독하며 제 3 바이트를 8비트만큼 신장하여 파라미터에 의해 표현되는 전체 32 비트 데이터값을 형성한다.
전술한 일예에서, 각각의 파라미터는 바이트 순으로 판독되며, 파라미터를 신장할 것인지의 여부의 판정은 각각의 바이트 내의 신장 필드를 판독함으로써 결정된다. 신장 필드에 의해 점유되는 공간은 전체 어드레스가능한 범위를 감소시킨다. 대안으로서, 신장 필드는 단지 파라미터의 제 1 바이트에만 포함될 수도 있다. 이러한 경우, 파라미터는 항상 압축된 단일 바이트의 형태 혹은 신장 형태로 저장될 것이다.
도 3k 및 도 3l은 파라미터의 필드 내에서 전술한 것이 어떻게 행해질 수 있는지를 나타내는 일예를 도시한다. 각각의 도면은 32 비트의 데이터값을 나타내는 파라미터의 일예를 도시한다. 연산코드 다음의 제 1 바이트는 단일의 신장 비트 e를 포함하는 비트 필드를 포함한다. 신장 비트의 값은 두 개의 이용가능한 상태 중 어느 상태가 존재하는 지를 나타낸다. 즉, 파라미터부가 단지 32 비트로 신장되어야만 하는 단일의 신장 파라미터만을 포함하던지 혹은 신장된 32 비트의 데이터값을 나타내는 4개의 바이트를 포함한다.
도 3k 및 도 3l을 참조하면, 도 3k는 Um_C 타입의 단일 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=32이며, 파라미터의 제 1(또한 유일한) 바이트는 e=1의 신장 비트를 포함한다. 이러한 것은 프로세서에게 파라미터를 파라미터에 의해 표현되는 전체 32 비트의 데이터값으로 신장할 것을 통지한다.
도 3l은 Um_C 타입의 단일 파라미터를 갖는 인스트럭션을 도시한다. 본 실시예에서, m=32이지만 파라미터의 제 1(네 개 중에서) 바이트는 e=0의 신장 비트값을 포함한다. 이는 완전한 데이터 값을 형성하도록 프로세서에게 세개 이상의 바이트를 판독할 것을 통지한다.
본 발명의 특정 실시예가 기술되고 있지만, 본 발명의 영역 내에서 수많은 대안의 실시예가 이용될 수 있다. 가령, 원래부터 연산코드 내에서 관련된 파라미터의 갯수를 지정하기 보다는, 전술한 관련된 파라미터의 갯수와 기타 파라미터 관련 특성을 나타내는데 파라미터들 내의 비트 필드들이 이용될 수 있다. 여기서 상기 기타 파라미터 관련 특성에서는 파라미터에 의해 표현되는 데이터값 내의 비트의 갯수 m과, 파라미터 내의 바이트의 갯수와, 파라미터가 압축된 데이터값을 나타내는지에 관한 정보 등이 포함된다.

Claims (13)

  1. 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법에 있어서,
    a) 프로세서에 의해 수행될 적어도 하나의 연산을 결정하기 위한 연산코드부를 제공하는 단계와,
    b) 각각의 데이터값을 나타내는 적어도 하나의 파라미터를 포함하는 파라미터부를 제공하는 단계를 포함하되,
    상기 파라미터부는 상기 적어도 하나의 파라미터에 대한 아래의 정의적 특성, 즉
    ⅰ) 상기 파라미터에 의해 표현되는 데이터값 내의 비트의 갯수(m)와,
    ⅱ) 상기 파라미터의 바이트의 갯수와,
    ⅲ) 상기 파라미터가 압축된 데이터값을 나타내는지에 관한 정보
    중 적어도 하나를 나타내는 지시자를 포함하고,
    상기 파라미터가 압축된 데이터값을 나타내면, 대응하는 신장된 값은 상기 파라미터부로부터의 비트를 신장된 값의 하위 비트들로서 이용하여 형성되는,
    프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  2. 제 1 항에 있어서,
    상기 파라미터부는 다음의 타입들, 즉
    (1) 사전결정된 길이의 압축가능한 무부호 파라미터(unsigned parameter)와,
    (2) 사전결정된 길이의 압축가능한 유부호 파라미터(signed parameter)
    중 하나에 대한 적어도 하나의 파라미터를 포함하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  3. 제 1 항에 있어서,
    상기 연산코드는 상기 파라미터부 내의 파라미터의 갯수를 정의하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  4. 제 1 항에 있어서,
    상기 연산코드는 상기 적어도 하나의 파라미터의 압축되지 않은 길이를 정의하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  5. 제 1 항에 있어서,
    상기 연산코드는 상기 적어도 하나의 파라미터가 부호를 포함하고 있는지의 여부를 정의하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 파라미터는 메모리 어드레스를 나타내는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  7. 제 1 항에 있어서,
    상기 파라미터부는 다수의 파라미터를 포함하며, 상기 연산코드는 상기 파라미터들의 정렬 순서를 결정하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  8. 제 1 항에 있어서,
    상기 적어도 하나의 파라미터는 파라미터 관련 특성을 나타내는 비트 필드를 포함하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  9. 제 8 항에 있어서,
    상기 비트 필드는,
    a) 상기 적어도 하나의 파라미터에 의해 표현되는 데이터값 내의 비트들의 갯수와,
    b) 상기 적어도 하나의 파라미터 내의 바이트들의 갯수와,
    c) 상기 적어도 하나의 파라미터가 압축된 데이터값을 나타내는지에 관한 정보
    중의 적어도 하나를 나타내는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  10. 프로세싱 시스템 내에서의 실행 인스트럭션의 형성 방법에 있어서,
    a) 프로세스에 의해 수행될 적어도 하나의 연산을 결정하는 연산코드부를 제공하는 단계와,
    b) 각각의 데이터값을 나타내는 적어도 하나의 파라미터를 포함하는 압축가능한 파라미터부를 제공하는 단계를 포함하되,
    상기 파라미터부는
    e) 상기 적어도 하나의 파라미터의 압축 상태를 나타내는 신장 지시자를 포함하고,
    상기 파라미터가 압축된 데이터값을 나타내면, 대응하는 신장된 값은 상기 파라미터부로부터의 비트를 신장된 값의 하위 비트들로서 이용하여 형성되는,
    프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  11. 제 10 항에 있어서,
    상기 적어도 하나의 파라미터는 상기 신장 지시자가 포함되는 단일의 바이트를 포함하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  12. 제 10 항에 있어서,
    상기 적어도 하나의 파라미터는 다수의 바이트들을 포함하되, 각각의 바이트는 신장 지시자를 포함하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
  13. 제 10 항에 있어서,
    상기 적어도 하나의 파라미터는 다수의 바이트를 포함하되, 상기 바이트들 중의 적어도 하나는 신장 지시자를 포함하는 프로세싱 시스템 내에서의 실행 인스트럭션 형성 방법.
KR1020017005617A 1999-09-07 2000-08-30 프로세싱 시스템에서의 실행 인스트럭션 형성 방법 KR100764260B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/391,647 US7376814B1 (en) 1999-09-07 1999-09-07 Method for forming variable length instructions in a processing system
US09/391,647 1999-09-07

Publications (2)

Publication Number Publication Date
KR20010075681A KR20010075681A (ko) 2001-08-09
KR100764260B1 true KR100764260B1 (ko) 2007-10-05

Family

ID=23547411

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017005617A KR100764260B1 (ko) 1999-09-07 2000-08-30 프로세싱 시스템에서의 실행 인스트럭션 형성 방법

Country Status (7)

Country Link
US (1) US7376814B1 (ko)
EP (1) EP1125193A1 (ko)
JP (1) JP2003508863A (ko)
KR (1) KR100764260B1 (ko)
CN (1) CN100378652C (ko)
TW (1) TWI234109B (ko)
WO (1) WO2001018643A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020008101A (ko) * 2001-12-12 2002-01-29 주식회사 애니콤소프트웨어 데이터의 비트 인덱스 압축방법
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
US7430560B1 (en) * 2005-07-22 2008-09-30 X-Engines, Inc. Multi-level compressed lock-up tables formed by logical operations to compress selected index bits
US7921088B1 (en) * 2005-07-22 2011-04-05 X-Engines, Inc. Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables
US7827218B1 (en) 2006-11-18 2010-11-02 X-Engines, Inc. Deterministic lookup using hashed key in a multi-stride compressed trie structure
US8149711B2 (en) 2007-07-25 2012-04-03 Silicon Image, Inc. Data stream control for network devices
KR101158534B1 (ko) * 2009-09-21 2012-06-21 자바정보기술 주식회사 다양한 환경에서의 데이터 처리를 위한 동적 프로세스 관리 시스템
CN101859325B (zh) * 2010-06-07 2012-07-11 华为技术有限公司 一种数据表项的查找处理方法和装置
JP4862100B1 (ja) * 2011-03-25 2012-01-25 好一 北岸 中央演算処理装置及びマイクロコンピュータ
EP4080354A1 (en) * 2021-04-23 2022-10-26 Nxp B.V. Processor and instruction set

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745722A (en) * 1995-06-15 1998-04-28 Sanyo Electric Co., Ltd. Apparatus for decoding instruction immediate data to produce a string having a single bit different from other bit thereof

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4363091A (en) 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
US4236206A (en) 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4530050A (en) 1981-08-26 1985-07-16 Hitachi, Ltd. Central processing unit for executing instructions of variable length having end information for operand specifiers
JPS58146941A (ja) 1982-02-26 1983-09-01 Hitachi Ltd マイクロプログラム制御デ−タ処理装置
US4586130A (en) 1983-10-03 1986-04-29 Digital Equipment Corporation Central processing unit for a digital computer
JPS623338A (ja) * 1985-06-28 1987-01-09 Yokogawa Hewlett Packard Ltd 直接値処理方式
US5307474A (en) * 1987-09-30 1994-04-26 Mitsubishi Denki Kabushiki Kaisha Apparatus and method for processing literal operand computer instructions
JPH0769806B2 (ja) * 1988-10-14 1995-07-31 三菱電機株式会社 データ処理装置
JPH0810428B2 (ja) 1988-12-26 1996-01-31 三菱電機株式会社 データ処理装置
US5109495A (en) * 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
CA2037708C (en) 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
JP3004108B2 (ja) * 1991-11-27 2000-01-31 株式会社東芝 情報処理装置
DE69326066T2 (de) 1992-03-25 2000-03-30 Zilog Inc Schnelle befehlsdekodierung in einem pipeline-prozessor
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
WO1997022922A1 (en) 1995-12-15 1997-06-26 Intel Corporation Instruction encoding techniques for microcontroller architecture
US5787302A (en) 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
EP0843253B1 (en) 1996-11-15 2001-08-08 STMicroelectronics S.r.l. A method for reducing the number of bits needed for the representation of constant values in a data processing device
DE19826826A1 (de) 1998-06-16 1999-07-15 Siemens Ag Verfahren zum Decodieren und Ausführen von Befehlen in einem RISC-Prozessor
US6338132B1 (en) * 1998-12-30 2002-01-08 Intel Corporation System and method for storing immediate data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745722A (en) * 1995-06-15 1998-04-28 Sanyo Electric Co., Ltd. Apparatus for decoding instruction immediate data to produce a string having a single bit different from other bit thereof

Also Published As

Publication number Publication date
TWI234109B (en) 2005-06-11
EP1125193A1 (en) 2001-08-22
KR20010075681A (ko) 2001-08-09
CN1335958A (zh) 2002-02-13
US7376814B1 (en) 2008-05-20
JP2003508863A (ja) 2003-03-04
CN100378652C (zh) 2008-04-02
WO2001018643A1 (en) 2001-03-15

Similar Documents

Publication Publication Date Title
US5832288A (en) Element-select mechanism for a vector processor
US6351806B1 (en) Risc processor using register codes for expanded instruction set
EP0823085B1 (en) Method and apparatus for improved branch prediction accuracy in a superscaler microprocessor
US5276891A (en) Alignment of sign, data, edit byte operand results for storage in memory
KR100764260B1 (ko) 프로세싱 시스템에서의 실행 인스트럭션 형성 방법
US6915413B2 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
KR20100126690A (ko) 널-종료 문자열 동작을 가속화하는 방법
JP3631896B2 (ja) オブジェクト変換装置及びオブジェクト変換方法及びプログラム記録媒体
US6388586B1 (en) Method for reversing the bits of a computer data structure
WO1997022932A1 (en) Computer implemented method for transferring packed data between register files and memory
US5357620A (en) Bit addressing system
US5117488A (en) Microprogram controlled microprocessor having a selectively expandable instruction code length including independent description of operand addressing and a type of operation for an operand by single instruction in a common coding scheme
JPH1153187A (ja) プロセッサ
US6499099B1 (en) Central processing unit method and apparatus for extending general instructions with extension data of an extension register
EP0775977A2 (en) Methods and apparatus for table lookup transformation of digital images
US7068192B1 (en) System and method for encoding and decoding variable-length data
JP3201716B2 (ja) コンピュータ装置
US20030046516A1 (en) Method and apparatus for extending instructions with extension data of an extension register
US4975835A (en) Variable length data processing apparatus for consecutively processing variable-length data responsive to one instruction
JP2551167B2 (ja) マイクロコンピュータ
US7676651B2 (en) Micro controller for decompressing and compressing variable length codes via a compressed code dictionary
US6502184B1 (en) Method and apparatus for providing a general purpose stack
US6931508B2 (en) Device and method for information processing
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
JP2005222519A (ja) メモリに記憶されたデータワード内のビット値へのアクセス

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
N231 Notification of change of applicant
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20120830

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130830

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 13