KR20050037607A - 동적 프로그램 압축 해제 장치 및 방법 - Google Patents

동적 프로그램 압축 해제 장치 및 방법 Download PDF

Info

Publication number
KR20050037607A
KR20050037607A KR1020057004859A KR20057004859A KR20050037607A KR 20050037607 A KR20050037607 A KR 20050037607A KR 1020057004859 A KR1020057004859 A KR 1020057004859A KR 20057004859 A KR20057004859 A KR 20057004859A KR 20050037607 A KR20050037607 A KR 20050037607A
Authority
KR
South Korea
Prior art keywords
bits
value
bit
microcode
output
Prior art date
Application number
KR1020057004859A
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
Application filed by 아트멜 코포레이숀 filed Critical 아트멜 코포레이숀
Publication of KR20050037607A publication Critical patent/KR20050037607A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

실행을 위해 프로세서로 후속적으로 전달되는 프로그램 워드를 압축 해제하는 시스템이 제공된다. 프로그램 워드 필드들은 연산들과 연산자 사이의 규칙에 기초하여 압축된다. 결과 마이크로코드는 프로그램 메모리에 저장된고, 동적 프로그램 압축 해제 장치들, 또는 디프로드들(20)로 피드되는데(28), 이들은 레지스터들(32, 34, 36, 38, 44) 및 멀티플렉서들(40, 42)을 사용하여 결합되는 것이고, 클럭(24), 리셋 신호들(22), 및 마이크로코드(26)에 의하여 구동되는 것이다. 각 ㅏ주기에서, 디프로드듣(20)은 프로그램 워드의 비압축 필드(30)를 제공한다. 재결합된 프로드램 워드는 그 뒤 프로세서로 전달된다. 디프로드 시스템은 필요한 프로그램 메모리를 감소시키고, 마이크로프로세서를 오프-칩(off-chip) 프로그램 메모리로 연결하는데 필요한 버스의 크기를 감소시키며, 사용되지 않는 주기들 동안 레지스터 파일 내의 보다 낮은 토글 속도에 기인한 CMOS 프로세서 설계에 있어서의 전력 소모를 감소시킨다. 디프로드는 제어를 고정하고 가장 최근 유용한 연산 동안 할당된 값들로의 어드레스를 판독한다.

Description

동적 프로그램 압축 해제 장치 및 방법{APPARATUS AND METHOD FOR DYNAMIC PROGRAM DECOMPRESSION}
본 발명은 프로그램 워드(word)들, 특히 VLIW 프로세서를 위한 프로그램 워드들의 압축 및 압축 해제에 관한 것이다.
게임 엔진들, 그래픽 제공 시스템들, 복합 시스템 시뮬레이터들, 멀티미디어, 및 실시간 디지털 신호 처리와 같은, 특정 작업들에 있어서의 고성능 프로세싱에 대한 필요성으로 인하여, 대량의 데이터의 고속 처리가 가능한 고속 프로세서에 대한 요구가 존재한다. 한번에 하나 이상의 명령을 실행할 수 있는 슈퍼스칼라(superscalar) 프로세서들이 고성능 장치들의 필수불가결한 구성요소들이 되고 있다. 여러 명령들을 동시에 실행하기 위하여, CISC(Complex Instruction Set Computing) 및 RISC(Reduced Instruction Set Computing)과 같은, 구식 마이크로프로세서 설계가 사용될 수 있지만, 이러한 설계들은 매우 고가의 복잡한 제어 회로를 필요로 한다.
VLIW(Very Long Instruction Word) 프로세서들은 매 클록 주기 마다 복수의 개별 기능 유닛들을 위한 복수의 개별 명령들을 처리할 수 있다. VLIW 프로세서들은 CISC 및 RISC 보다 더 간단한 설계를 구비하고 있다. VLIW 칩들은 보다 저렴하고 전력 소모량도 적으며, CISC 또는 RISC 칩보다 성능이 우수하다. 그러나 VLIW 칩의 설계는 이전의 설계보다 더 단순하지만, VLIW 칩이 효과적으로 동작할 수 있도록 하는 코드를 생성하고 컴파일링하는 것이 어렵다는 단점이 있다. VLIW 프로세서들을 위한 명령어들은 결과적으로 수백 비트로 길이가 매우 길기 때문에, 여러 명령들에 대한 VLIW 프로세서 코드를 위한 명령어들은 오프-칩(off-chip) 메모리로부터 프로세서로 명령어들을 전달할 수 있는 대형 버스뿐만 아니라, 저장을 위한 대용량 프로그램 메모리를 필요로 한다. 특히 장비의 물리적 크기로 인하여 그 장비 내에서 사용되는 프로세서, 버스 및 메모리의 크기가 제한되는, 작은 휴대용 장비들에서는 문제가 된다.
미국 특허 제5,819,058호의, 밀러 등에 의한 "프로세서를 위한 명령 압축 및 해제 시스템 및 방법(Instruction Compression and Decompression System and Method for a Processor)"이 VLIW 프로세서 내에서의 VLIW를 저장하는데 필요한 메모리 양을 감소시키기 위한 시스템 및 방법을 개시하고 있다. VLIW들은 디폴트(default) 명령들을 단축하고, 명령들을 실행하는데 필요하지 않은 비트들을 압축하고, 짧은 코드들을 더 긴 명령들에 할당하여 실행시에 확장하는 다수의 방법들로 압축된다.
미국 특허 제5,878,267호의, 햄파푸람 등에 의한 "명령들을 처리하기 위하여 VLIW 프로세서 및 프로세서에서 사용하기 위한 압축된 명령 포맷(Compressed Instruction format for use in a VLIW Processor and Processor for Processing Such Instructions)"이 메모리에 저장된 뒤 캐시로부터 판독된 후에 "온 더 플라이(on the fly)" 상태로 압축 해제되는 VLIW 명령들을 압축하는 소프트웨어를 개시하고 있다. 각 명령은 여러 연산들로 구성된다. 각 연산은 특정한 연산을 위한 압축 기술에 따라서 압축되고; 압축 기술은 압축된 연산 길이를 각 연산에 할당한다. 압축은 연산의 적어도 하나의 특징에 의존한다. 분기 목적(branch target)은 압축되지 않는다.
본 발명의 목적은 VLIW 아키텍처를 위하여 프로그램 메모리 크기를 최소화하는 장치 및 방법을 제공하는 것이다.
본 발명의 다른 목적은 VLIW 아키텍처의 프로그램 버스 크기를 감소시키는 것이다.
본 발명의 다른 목적은 CMOS 프로세서 설계에 있어서 전력 소모를 감소시키는 것이다.
도 1a는 종래 기술에 있어서의 샘플 VLIW 프로그램 워드들의 블럭도이다.
도 1b는 종래 기술에 있어서의 샘플 VLIW 프로그램 워드의 블럭도이다.
도 2는 각 주기에서 실행되는 프로그램의 연산들 및 피연산자들의 공간 내에서의 궤적을 도시하는 그래프이다.
도 3은 마이크로프로세서 칩 상의 디프로드 시스템을 도시하는 블럭도이다.
도 4는 본 발명의 일 실시예에서 사용되는 압축된 VLIW 프로그램 워드의 블럭도이다.
도 5는 본 발명에 따라서 2 비트 마이크로코드에 의해 구동되는 기울기 디프로드의 블럭도이다.
도 6은 본 발명에 따라서 2 비트 마이크로코드에 의해 구동되는 값 디프로드의 블럭도이다.
도 7은 본 발명에 따라서 1 비트 마이크로코드에 의해 구동되는 기울기 디프로드의 블럭도이다.
도 8은 본 발명에 따라서 1 비트 마이크로코드에 의해 구동되는 값 디프로드의 블럭도이다.
도 9는 본 발명에 따라서 프로그램 워드의 압축 및 해제를 설명하는 흐름도이다.
상기 목적들은 동적 프로그램 압축 해제를 위한 장치 및 방법에 의하여 달성된다. 프로그램은 각 어셈블러 명령에 대응하는 마이크로코드(microcode)들의 시간 순차적인 시퀀스로부터 수평 VLIW 마이크로코드로 변환된다[설명을 위하여 VLIW 아키텍처 위주로 검토되지만, 이것은 개시되는 장치 및 시스템의 응용이 VLIW 아키텍처들로 제한되는 것은 아니며, 본 발명의 장치 및 방법은 정보의 일반적인 흐름(flow) 또한 압축할 수 있음]. 수평 VLIW 마이크로코드는 그 뒤 프로그램 메모리 내에 저장되는 비트 시퀀스로 압축된다.
비트 시퀀스를 제공하는 압축 알고리즘은 수평 VLIW 마이크로코드의 각 필드에 시간에 걸쳐 할당되는 값들의 순서로 발생하는 규칙성을 이용한다. 각 주기에서 실행되는 연산(operation)들과 피연산자(operand)들의 공간에서의 궤적이 도시될 수 있다. 만약 이 궤적을 시간에 걸쳐 고려하면, 단일 명령을 특정하는데 필요한 정보는, 그 명령 자체를 설명하기보다는 주어진 주기에서 프로세서로 발행되는 피연산자들[및/또는 명령 코드(opcode)]의 세트와 이전에 발행된 피연산자들 간의 관계를 특정하고, 시작점과 델타들(deltas)을 조건으로 한 궤적을 설명함으로써 감소될 수 있다.
결과적인 비트 시퀀스는 그 뒤 동적 프로그램 압축 해제 장비들[dynamic program decompression device 또는 디프로드(dyprode)]로 피드(feed)된다. 이 장비들 각각은 1 또는 2 비트 마이크로코드들, 즉 프로그램의 주요 궤적 특성을 설명하는 비트 시퀀스의 연속적인 스트림을 제공받는다. 레지스터와 멀티플렉서들을 사용하여 결합되고, 클록, 리셋 신호들과 마이크로코드에 의해 구동되는 디프로드는 내부 또는 외부 메모리로부터의 마이크로 코드, 적합하게는 내부 또는 외부 메모리로부터의 입력을 사용하여 프로그램 워드의 비압축 필드를 공급한다. 일련의 디프로드들을 사용함으로써, 전체 비압축 프로그램 워드는 재구성되어 실행을 위한 프로세서로 전달될 수 있다.
디프로드 시스템의 사용은 오프-칩 프로그램 메모리에 연결되는 버스의 크기를 줄일 뿐만 아니라, 프로그램 메모리 크기도 현저하게 감소시킬 수 있다. 프로세서 장비가 사용되지 않는 주기 동안 디프로드는 제어를 정지시키고 가장 최근의 유용한 연산 동안 할당된 값들로의 어드레스들을 판독하는 경우에 프로세서의 레지스터 파일 및 프로세서 장비들 내부의 토글 속도가 더 낮으므로, CMOS 프로세서 설계에서의 전력 소모 또한 감소된다.
디프로드들은 프로그램 워드의 다른 부분들을 압축 해제하도록 개조될 수 있다. 일부 디프로드들은 명령 코드(opcode)들과 인접 값들을 압축 해제하는데 최적으로 구성되지만, 다른 종류의 디프로드들은 레지스터 파일 어드레스들을 압축 해제한다.
다음의 검토는 VLIW 프로그램 워드에 초점을 둘 것이지만, 여기서 검토되는 방법 및 시스템의 응용은 VLIW 아키텍처들에 제한되지 않으며, 정보의 일반적인 흐름을 압축하고 해제하는데 사용될 수 있다.
VLIW 프로그램 워드는, 콤팩트한 컴파일러가 각 어셈블러 명령에 대응하는 마이크로코드들의 시간-순차적인 시퀀스를 수평 VLIW 마이크로코드로 변환하는 경우에 생성된다. 도 1a 에서, 종래 기술의 샘플 VLIW 프로그램 워드들(162, 170)은 다수의 필드들(164, 166, 168, 172, 174, 176)로 구성되는데, 이 필드들은 명령 레벨 평행성(Instruction Level Parallellism)을 사용하는데 필요한 다수의 명령 코드들 및 피연산자들을 나타낸다. 필드들(164, 166, 168, 172, 174, 176)의 개수와 크기는 실행 주기들에 걸쳐 다양할 수 있지만, 디코딩되는 워드의 방대함 때문에 단일 VLIW 프로세서는 제한된 수의 디코딩 기술들을 적용한다.
예컨대, 워드 A(162)와 B(170)는 상이한 기술들을 사용하여 디코드될 수 있다. 도 1b를 참조하면, 간단한 디코딩 기술로 프로그램 워드(178)는 다수의 독립적인 필드들로 구성되는데, 이 필드들은 동시에 프로세서로 발행될 수 있다. 예컨대, 필드들은 흐름 제어(180), 8 포트 레지스터 파일(182), 2 개의 어드레스 생성 유닛들(184)을 위한 명령 코드들, 및 2 개의 연산자 블럭들(186)을 위한 연산 코드들을 포함할 수 있다.
본 발명의 바람직한 실시예에 있어서, 수평 VLIW 마이크로코드는 그 뒤 프로그램 메모리에 저장되는 비트 시퀀스로 압축된다. 비트 시퀀스를 제공하는 압축 알고리즘은 수평 VLIW 마이크로코드의 각 필드로 시간에 걸쳐 할당되는 값들의 시퀀스로 발생하는 규칙성을 이용한다. 각 주기에서 실행되는 연산들과 피연산자의 공간 궤적이 도시될 수 있다. 만약 이 궤적을 시간에 걸쳐 관찰하면, 단일 명령을 특정하는데 필요한 정보는, 그 명령 자체를 표현하기보다는, 주어진 주기에서 프로세서로 발행되는 피연산자들과 이전 주기에서 실행되는 피연산자들 간의 관계를 특정함으로써(예컨대, 시작점들과 델타들의 궤적을 설명함으로써) 감소될 수 있다.
코드가 압축되는 방법의 예는 아래의 주어진 코드와 같다.
#define SIZE 4
register int FirstOper[2*SIZE];
register int SecondOper[2*SIZE-1];
...
for (i=0;i<SIZE;i++)
{
for (j=0;j<SIZE;j++)
{
Result[i][j]=FirstOper[2*j]*SecondOper[i+j];
}
}
...
코드가 3개의 벡터 Result, FirstOper, 및 SecondOper를 저장하기에 충분한 레지스터 파일을 구비한 프로세서 상에서 실행된다고 가정하자. 컴파일러는 FirstOper를 레지스터 R0 - R7로, SecondOper를 R8 - R14로, Result를 R15 - R30으로 맵핑할 수 있다. 컴파일러는 어셈블러를 다음과 같이 생성할 수 있다(imul은 레지스터들을 곱하여 결과 레지스터를 공급하는 어셈블러 명령임).
R15 = imul(R0, R8);
R16 = imul(R2, R9);
R17 = imul(R4, R10);
R18 = imul(R6, R11);
R19 = imul(R0, R9);
R20 = imul(R2, R10);
R21 = imul(R4, R11);
R22 = imul(R6, R12);
R23 = imul(R0, R10);
R24 = imul(R2, R11);
R25 = imul(R4, R12);
R26 = imul(R6, R13);
R27 = imul(R0, R11);
R28 = imul(R2, R12);
R29 = imul(R4, R13);
R30 = imul(R6, R14);
도 2에 도시된 바와 같이, Result, FirstOper, 및 SecondOper에 대한 레지스터 어드레스들의 변화가 좌표로 표현될 수 있다(여기서 시간은 프로그램 실행 주기들에서 측정되고, y-축은 레지스터 어드레스들을 나타냄). 피연산자 어드레스들의 궤적을 조사하면 연산자 어드레스들 간의 관계를 결정할 수 있다. 이것은 여기서 사용되는 압축 방식의 중요한 열쇠가 된다. 압축 과정이 없다면, 24 비트 프로그램 메모리는 각 레지스터의 어드레스를 특정하는 명령을 필요로 할 것이다. 그러나 도 2에 도시된 것과 같은 레지스터 어드레스들의 변화의 조사는 프로그램 메모리가 개별적인 어드레스들을 저장하기보다는 어드레스들의 궤적과 관련된 값들을 저장함으로써 보전될 수 있다는 것을 보여준다. 프로그램 메모리는 또한 피연산자들의 궤적과 관련된 값들을 저장함으로써 보전될 수 있는데, 한 세트의 기호들의 확률은 제한된 세트의 값들에서 피크값을 갖기 쉽고, 이는 아래에서 검토한다.
FirstOper 선에 대하여, 다음의 값들이 저장된다고 가정한다.
1) 시작점(여기서는, 0);
2) 첫번째 4 개 점들을 연결하는 상향 경사선(여기서, 기울기는 2);
3) 점 4 와 5 그리고 점 8 과 9 를 연결하는 하향 경사선(여기서, 기울기는 -4);
만약 각 주기에서 사용되는 기울기가 실제 레지스터 어드레스를 제외하고 특정된다면, 필요한 프로그램 메모리 비트들의 수는 감소할 것이다. 또한, FirstOper 와 SecondOper의 기울기들은 동일한 주기에서 변화함을 알 수 있다. 동일한 연산자와 관련된 피연산자들의 이러한 동시적인 궤적 변화는 매우 일반적이다. 압축되는 단일한 패킷은, 1) FirstOper 및 SecondOper의 어드레스들을 특정하는 16 비트들 ; 2) FirstOper, SecondOper와, Result, 3 개의 피연산자 모두와 관련된 24 비트들 ; 또는 3) 3 개의 피연산자들과 관련된 24 비트들과 연산 마이크로코드를 나타낼 수 있기 때문에, 이러한 패턴은 보다 많은 프로그램 메모리가 보전될 수 있게 한다.
동적 압축 해제 장비들, 또는 디프로드들은 위에서 검토된 비트 시퀀스로부터 프로그램 워드들의 필드들을 제공하기 위하여 연산자들과 피연산자들 간의 이러한 관계를 사용한다 ; 디프로드의 구조는 모든 피연산자들과 관련된 전체 24 비트들이 비압축 프로그램 워드를 제공하기 위하여 매 주기 마다 저장될 것을 요구하지 않는다. 대신, 아래에서 보이는 바와 같이, 24 비트들은 디프로드에 저장된 정보로부터 각 주기에서 재생성될 수 있다.
도 3에서, 디프로드(14)는 압축 해제 시스템의 부분을 형성하는 온 칩 장비이다. 디프로드(14)는 메모리(18)로부터 압축된 워드들을 패치하고 압축 해제를 위하여 그 워드의 필드들을 적합한 디프로드(14)로 전달하는 메커니즘을 통하여 온 칩(on chip) 또는 오프 칩(off chip) 프로그램 메모리(18)로부터 명령들 및 값들을 수신한다. 일 실시예에서 이러한 메커니즘(16)은 압축 해제를 가능하게 하는 상태 머신(state machine)과, 메모리로부터 저장된 워드들을 패치하고 그들에게 적합한 수의 비트들을 쉬프트하고 그 워드 필드들을 압축 해제를 위한 적합한 디프로드로 분배하는 쉬프트 유닛을 포함할 수 있다. 4 개의 디프로드들(DYPRODE)(14)이 여기서 표시되지만, 다른 실시예들에서는 임의의 수의 디프로드들(14)이 사용될 수 있다.
도 4에 관하여, 본 발명의 일 실시예에서 사용되는 압축된 VLIW 워드(154)는 8 비트 수퍼 헤더(156), 16 비트 필드 헤더(158), 그리고 7 개의 16 비트 필드들을 구비한 피드들(160) 그리고 하나의 8 비트 필드를 구비한다. 수퍼 헤더(156) 비트들은 압축된 워드의 구조를 압축 해제 메커니즘으로 보내거나 점프 명령 또는 절차 호출(procedure call)이 발생하는 경우 재정렬을 실행한다. 이 필드 헤더(158)는 8 쌍의 비트들을 포함하는데, 그 각각은 대응 디프로드 장비에 대한 동작 코드(store, default, same 및 swap)이다(압축 해제 시스템에는 8 개의 디프로드들이 존재한다고 가정함). 잔여 필드들(160)은 그 동작 코드들이 "store(저장)" 값을 가정하는 경우 디프로드들에 의하여 판독되는 16 비트와 8 비트 값들이다. 압축된 워드(154) 내에 존재하는 필드들의 수는 그 저장 값을 가정하는 동작 코드들의 수에 의하여 주기마다 결정된다. 다른 실시예에서, 필드 헤더(158)는 매 주기마다 존재하지 않을 수 있다[예컨대, 만약 압축된 워드의 모든 필드들이 존재한다면, 그 경우 수퍼 헤더는 디프로드를 위한 동작 코드로써 사용될 것임. (아래 도 1 참조). 예컨대, "All Store" 코드는 압축된 워드의 모든 필드들이 존재하고 필드 헤더(158)가 필요하지 않다는 것을 압축 해제기에 알림. 그러나 만약 동작 코드가 "Mixed(혼합)" 되면, 필드 헤더(158)가 필요함]. 또한, 다른 실시예에서, 개별적인 필드들이 모두 존재하지 않을 수 있다. 이 실시예에서, 압축 해제되지 않은 VLIW 워드는 120 개의 비트 길이를 갖는다.
테이블 1은 수퍼 헤더(156) 비트들의 잠재적인 배열을 요약한 것이다.
테이블 1
비트 기능
0 신호를 패치함1 소프트웨어 리셋 신호3 에서 2 동작 코드(All store("11"), All Default("00"), Mixed("10"), Shift All("01")7 에서 4 현재 워드 길이(복수의 8 비트들)
테이블 2는 필드 헤더(158) 내에 포함될 수 있는 디프로드 장비들을 위한 동작 코드의 의미를 요약한 것이다. 이러한 동작 코드들의 전체 설명은 아래 테이블 4에서 제공된다.
테이블 2
동작 코드 2진값 동작 코드의 의미
11 Store00 Default01 Same10 Swap
기울기 디프로드(20)("디프로드1")가 도 5에 도시되어 있다. 디프로드1(20)은 리셋 신호(22), 클록(24) 및, 2 비트 마이크로코드의 연속 스트림에 의해 구동된다. 이러한 기울기 디프로드(20)는 3 개의 N-비트 레지스터들[previous_value(32), same_slope(34), 및 swap_slope(36)]을 특징짓는다. 2 개의 N-비트 상수[previous_reset(44) 및 slope_reset(38)]가 존재한다. 디프로드1(20)은 또한 N-비트 입력들(40)을 구비한 4 개의 멀티플렉서들("먹스들")과 4 개의 N-비트 입력들(42)을 구비한 하나의 멀티플렉서를 포함한다. 또한, 하나의 N 비트 가산기(46)[모듈 2N, 캐리-아웃(carry-out)은 무시됨], 또는 하나의 세트의 해체(disjoint) 가산기들(예컨대, 2개의 N/2-비트 가산기들, 또는 3개의 N/3-비트 가산기)가 존재한다. 디프로드1(20)은 N 비트 입력(28)을 구비하고(N은 특정 구현에 의하여 고정됨), 각 주기에서 N 비트 출력을 생성한다. 이 실시예에서, 오직 업데이트가 2 비트 마이크로코드 "store(저장)" 커맨드에 의하여 필요한 경우에만, N 비트는 그 환경 또는 메모리로부터 업데이트된다.
위에서 언급한 바와 같이, 2-비트 마이크로코드는 수평 VLIW 마이크로코드를 비트 시퀀스로 압축하는 것으로부터 비롯된다. 이러한 종류의 디프로드에 관하여, 마이크로코드 연상 기호(mnemonic) 및 2 진값이 테이블 3에 나타나 있다.
테이블 3
마이크로코드 연상 기호 마이크로코드 2 진값
default 00 same 01 swap 10 store 11
만약 이러한 기울기 디프로드(20)가 리셋 신호(22)를 수신한다면, CONSTANTprevious_reset의 값이 previous_value 레지스터(32)로 로드되고, CONSTANTreset_slope(38)은 same_slope 및 swap_slope 레지스터들(34, 36)로 로드된다. 리셋 신호(22)가 없는 경우, 디프로드1(20)는 마이크로코드(26)에 의하여 제어된다. 리셋(22)과 마이크로코드(26) 신호들[default(48), same(50), store(52), swap(54), 및 리셋(56)]의 데이터 경로들이 또한 도 5에 도시되어 있다. 마이크로코드(26) 동작은 아래 테이블 4에 요약되어 있다 :
테이블 4a
마이크로코드 상세 동작
store(52) 새로운 기울기 값이 즉시 사용되고 저장되어야 함 : - previous_value(32)에 추가하여 N-비트가 N-비트 출력을 생성함 - same_slope(34) 값이 swap_slope 레지스터(36)로 입력됨 - N-비트 입력이 same_slope(34)로 할당됨 - 출력 생성 후에, previous_value(32)가 출력 값을 가정함 same(50) N-비트 출력이 same_slope(34) 및 previous_value(32)를 사용하여 생성됨 출력 생성 후에, previous_value(32)이 출력 값을 가정함swap(54) N-비트 출력이 same_slope(36) 및 previous_value(32)을 사용하여 생성됨. 출력 생성 후에, previous_value(32)가 출력 값을 가정함 swap_slope(36)의 내용의 "swap"이 실행됨default(48) N-비트 출력이 previous_value(32)에 의하여 결정됨
테이블 4a에서 보는 바와 같이, 마이크로코드가 "default(디폴트)"(48)인 경우, previous_value(32)가 N-비트 출력을 결정한다. "default(디폴트)"(48) 마이크로코드의 사용은 승산기 또는 가산기와 같은 프로세서 장비가 클럭 주기 동안 사용되지 않는 경우, CMOS 설계 프로세서에서 토글 속도를 감소시킨다. 예컨대, 4-포트 판독, 2-포트 기록 레지스터 파일에 의하여 피드되는 승산기 및 가산기를 구비한 시스템에서, 만약 가산기가 하나의 주기에서 사용되지 않는다면, 가산기를 위한 파일 어드레스들과 산술적인 명령 코드들을 생성하는 디프로드들이 "default(디폴트)"(48) 마이크로코드를 실행하는 경우 다음의 단계가 진행된다 : 1) 가장 최근의 유용한 어드레스로 프로세서 레지스터 파일들을 고정시키는 단계(이것은 가산기에 연결된 프로세서 레지스터 파일의 출력 포트들과 관련된 기울기 디프로드에 의해 실행될 수 있음) ; 2) 가산기 상의 제어들을 가장 최근 실행된 마이크로코드로 고정시키는 단계(이것은 가산기와 관련된 값 디프로드에 의해 실행될 수 있음) ; 3) 덧셈의 결과들이 기록되는 프로세서 레지스터 파일 기록 포트들 상에 기록 디스에이블을 생성하는 단계. 제어들 및 판독 어드레스들을 가장 최근 유용한 연산 동안 할당된 값들로 고정하는 이러한 단계들은 프로세서 레지스터 파일과 장비 그 자체 내의 토글 속도를 감소시킨다.
디폴트(default) 동작 코드를 실행하는 경우, 기울기 디프로드(20)의 흥미로운 prevous_reset(44)의 값을 출력할 수 있다. 그 장점은 완전한 프로세서의 설계에서 압축 해제 시스템을 더 간단하게 실시할 수 있다는 것이고, 단점은 더 낮은 토글 속도 감소가 얻어진다는 것이다.
기울기 디프로드(20)의 다른 흥미로운 변화는 software_reset xxx 신호를 입력에 추가하여 얻어진다. 이 신호는 디프로드 내의 모든 레지스터들이 리셋 값을 가정해야 하는 분기를 실행하는 시간의 레이턴시를 감소시킬 수 있다. 사실, 컴파일 시 조건 분기가 실행될 것인지 여부를 아는 것은 일반적으로 불가능하다. 그러므로, 리셋은 분기 목적들(라벨들)에 대응하는 주기들의 실행과 함께 발행되야 한다. 이것은 디프로드 내부 레지스터들의 종래 리셋을 실행하는데 필요한 레이턴시를 도입한다. 추가적인 software_reset 신호를 사용하여, 그 레이턴시 코드의 삽입을 피할 수 잇다. 테이블 4b는 이러한 개조를 보여준다.
테이블 4b
마이크로코드 상세 동작
store(52) 와 새로운 기울기 값이 즉시 사용되고 저장되어야 함 :software_reset xxx -- 제로(previous_value(32)에 대신하여)에 추가되는 N-비트가 N-비트 출력을 생성함. -- 제로 값이 swap_slope 레지스터(36)에 입력됨 -- N-비트 입력이 same_slope(34)로 할당됨 -- 출력 생성 후에, previous_value(32)가 N-비트 출력 값 을 가정함default(48) 와 N-비트 출력이 previous_reset 값을 가정함software_reset xxx 모든 내부 레지스터들이 그 리셋 값을 가정함
아래의 테이블 5 는 프로그램 메모리가 본 발명의 압축/압축 해제 방식을 사용하여 보정되는 방법을 보여준다. 다음의 예에서, 어셈블러 코드의 압축의 결과들은 결과(Result) 필드가 FirstOper 및 SecondOper 필드와 분리되어 압축되는 것을 보여준다. 결과 필드를 압축 해제하는 8-비트 기울기 디프로드와, FirstOper 및 SecondOper 필드를 압축하기 위한 16-비트 디프로드의 경우에, 이러한 압축된 필드들 각각은 개별적인 기울기 디프로드로 피드된다. 16-비트 디프로드에서, 가산기는 2 개의 8-비트 해체 가산기로 분리된다. "기타(other)"는 디폴트 마이크로코드와 관련된, 승산기를 사용하지 않는 임의의 어셈블러 연산을 나타낸다. 0xFAFE 값은, 예컨대 R6 으로부터 R0 까지, 그리고 R11 로부터 R9 까지 단계에 필요한 음의 기울기들에 대응하는, -6 과 -2의 8-비트 감산법으로 생성할 필요가 있다.
테이블 5
만약 압축이 사용되지 않았다면, 전체 504 비트들은 여기서 목록화된 레지스터를 저장하는데 필요할 것이다(21 주기들 * 24 비트들/주기 = 504 비트들). FirstOper 및 SecondOper 필드와, Result 필드를 압축함으로써, 3.4 압축률을 위하여 16-비트 디프로드가 8-비트 디프로드와 조합되는 경우에는 오직 148 개의 비트들만이 필요하다(504 비트들/148 비트들).
만약 모든 3 개의 레지스터 필드들이 3 개의 8-비트 가산기를 포함하는 단일한 24-비트 디프로드에 의해 압축 해제된다면, 더 높은 압축률이 달성된다. 아래의 테이블 6은, 이러한 방식을 사용한 결과를 보여준다.
테이블 6
오직 114 비트들이 24-비트 기울기 디프로드가 사용되는 경우, 레지스터 어드레스들을 저장하는데 필요하다. 여기서 압축률은 4.4(504 비트들/114 비트들)이다.
다른 종류의 디프로드, 값 디프로드 가 시간에 걸쳐 하나의 세트의 기호들(각각이 제한된 수의 값들로 구성됨)의 확률이, 서브세트에서, 피크 값을 가지는 경우에 사용될 수 있다. 예컨대, 만약 프로그램 섹션이 지역적으로 제한된 세트의 수학적인 마이크로코드들의 빈번한 사용을 표시한다면, 적합하게 설계된 값 디프로드는 프로그램 메모리 사용과 전력 소모를 줄일 수 있는데, 이것은 사용되지 않는 장비들의 제어를 가장 최근의 유용한 마이크로코드에 고정할 수 있기 때문이다. 디폴트 주기 동안 값 디프로드는 기록 디스에이블 신호를 제공하여, 상기의 프로세서 내의 토글 속도를 감소시킨다.
도 6을 참조하면, 값 디프로드(64)("디프로드2")가 클럭(60), 리셋 신호(58)와, 2-비트 마이크로코드(62)에 의하여 구동된다. 디프로드2(64)는 2 개의 N-비트 레지스터들, swap_value(70) 및 same_value(72) 및, 하나의 N-비트 CONSTANT reset_value(66)를 특징지운다. 이 값 디프로드(64)는 또한 4 개의 N-비트 입력을 구비한 3 개의 멀티플렉서들(68)을 특징지운다. 각 주기 동안, 디프로드2(64)는 출력(76)의 N 비트들을 공급한다.
디프로드2(64)를 제어하는 마이크로코드 커맨드들(62)은 아래의 테이블 7에서 요약된다.
테이블 7
마이크로코드 연상 기호 마이크로코드 2 진값
default 00 same 01 swap 10 store 11
위의 도 5에서 검토한 디프로드1에 관하여, 도 6에서 도시한 디프로드2(64)에 대한 N-비트 입력 값(74)은, 만약 마이크로코드 커맨드가 "store(저장)"인 경우가 아니라면 문제가 되지 않는다. 마이크로코드 커맨드들[default(78), store(82), 및 swap(84)] 및 리셋 신호(86)가 또한 도 6에 도시되어 있다.
디프로드1에 관하여, 디프로드2(64)에 대한 흥미로운 변화는 디폴트 동작 코드를 실행하는 경우 reset_value(66)의 값을 출력할 수 있다. 또한, 그 장점은 완전한 프로세서의 설계에서 압축 해제 시스템을 보다 간단하게 실시할 수 있다는 것이고, 단점은 보다 낮은 토클 속도 감소가 얻어진다는 것이다. 디프로드에 관하여, 값 디프로드(64)의 다른 흥미로운 변화는, 분기 실행에서의 레이턴시 감소를 위하여 software_reset xxx signal 입력을 추가하여 얻어진다.
상기의 도 5 및 6 에서 설명한 2-비트 마이크로코드에 의해 구동된 기울기 및 값 디프로드에 추가하여, 디프로드들은 단일한 비트 코드에 의하여 제어될 수 있다. 도 7과 관련하여, 기울기 디프로드(88)("디프로드3")는 리셋 신호(90), 클럭(92)와 1-비트 마이크로코드(94)에 의하여 구동된다. 디프로드3(88)은 2개의 N-비트 입력 멀티플렉서들, 하나의 3 N-비트 입력 멀티플렉서와, 하나의 N 비트 가산기(116) 세가지로 특징지워진다(다른 실시예에서는, 가산기(116)가 예컨대, 2개의 N/2 비트 가산기들, N 비트의 해체 서브그룹들 상에서 동작하는 가산기들의 세트일 수 있음). 상수(CONSTANT) 리셋(106), 및 2 개의 N-비트 레지스터들, previous_value(112)와 same_slope(114)가 존재한다. 디프로드3(88)은 각 주기에서 출력(104)의 N 개의 비트들을 공급한다.
마이크로코드 커맨드들(94) 제어 디프로드3은 아래의 테이블 8 에서 요약된다.
테이블 8
마이크로코드 연상 기호 마이크로코드 2 진값
Store 0Same 1
만약 마이크로코드 커맨드가 "store(저장)"라면, 도 7에 도시된 디프로드3에 대한 값(102)의 N-비트는 문제가 되지 않는다. 마이크로코드 커맨드들 및 리셋 신호(100)를 위한 데이터 경로들은 또한 도시되지 않는다.
도 7에서, 값 디프로드(118)("디프로드4")는 클럭(120) 및 1-비트 마이크로코드(122)에 의해 구동된다. 디프로드4(118)는 2 개의 N-비트 멀티플렉서들(128) 및 하나의 N-비트 레지스터 same_value(130)로 특징지워진다. 이 디프로드(118)는 각 주기에서 출력(134)의 N 비트들을 공급한다.
마이크로코드 커맨드들(122)은 아래의 테이블 9에 요약된다.
테이블 9
마이크로코드 연상 기호 마이크로코드 2 진값
store 0 same 1
만약 마이크로코드 커맨드가 "store(저장)" 라면, 도 8에 도시된 디프로드4를 위한 N-비트 입력 값(132)은 문제가 되지 않는다. 마이크로코드 커맨드들[same(124) 및 store(126)]을 위한 데이터 경로들은 또한 도시되지 않는다.
도 9에는, 디프로드들을 사용하여 프로그램 워드들을 압축하고 압축 해제하는 본 발명의 방식이 요약되어 있다. 우선, 마이크로코드들의 시간-순차적인 시퀀스가 수평 마이크로코드들, 또는 프로그램 워드들로 압축된다(블럭 146). 다음으로, 수평 마이크로코드는 마이크로코드들의 1- 또는 2-비트 시퀀스로 압축된다(블럭 148). 마이크로코드의 이 압축된 시퀀스는 그 뒤 프로그램 메모리에 저장된다(블럭 150). 이러한 비트 시퀀스와 임의의 필요한 값들은 그 뒤 프로그램 워드 필드들을 압축 해제하기 위하여 적합한 디프로드들로 피드(feed)되고, 비압축 프로그램 워드를 재결합한다(블럭 152). 재결합된 프로그램 워드는 그 뒤 실행을 위하여 프로세서로 전달된다(블럭 154).

Claims (34)

  1. 실행을 위하여 프로세서로 전달되는 비압축(uncompressed) 프로그램 워드의 적어도 하나의 필드를 제공하기 위해 데이터 스트림을 압축 해제하는 장치로서,
    a) N 비트들의 제1 값을 저장하는 적어도 하나의 레지스터와;
    b) N 비트들의 제2 값인 제1 입력을 수신하는 제1 수단과;
    c) N 비트들의 상기 제1 값 및 제2 값을 처리하는 방법에 관한 명령을 나타내는 마이크로코드인 제2 입력을 수신하는 제2 수단과;
    d) N 비트들의 상기 제1 값 및 제2 값을 멀티플렉싱하는 복수의 멀티플렉서들로서, 상기 복수의 멀티플렉서들 중 하나는 N 비트들의 출력을 발생하는 것이고, 상기 출력은 실행을 위해 프로세서로 전달되는 압축 해제된 프로그램 워드의 적어도 하나의 필드인 것이고, 상기 프로세서는 상기 장치와 전기적으로 통신하는 것인, 상기 복수의 멀티플렉서들;
    을 포함하는 데이터 스트림 압축 해제 장치.
  2. 제1항에 있어서, N 비트들의 복수의 값들을 저장하는 복수의 레지스터들을 더 포함하는 데이터 스트림 압축 해제 장치.
  3. 제1항에 있어서, 상기 복수의 멀티플레서들은 N 비트들의 값들을 멀티플렉싱하는 수단을 구비한 것이고,
    상기 N 비트들은, a) 상기 복수의 레지스터들에 저장된 상기 복수의 N 비트들과; b) 적어도 하나의 레지스터와 상기 제1 N 비트들의 입력으로부터의 적어도 하나의 N-비트 값;을 포함하는 그룹으로부터 선택되는 것인 데이터 스트림 압축 해제 장치.
  4. 제1항에 있어서, 리셋 신호들인 제3 입력을 수신하는 제3 수단을 더 포함하는 데이터 스트림 압축 해제 장치.
  5. 제1항에 있어서, 클럭 신호인 제4 입력을 수신하는 제4 수단을 더 포함하는 데이터 스트림 압축 해제 장치.
  6. 제1항에 있어서,
    a) 적어도 하나의 레지스터로부터의 적어도 하나의 N-비트 값과; b) 적어도 하나의 레지스터로부터의 N-비트 값과 상기 제1 입력으로부터의 상기 N-비트 값 중 적어도 하나의 N-비트 값을 포함하는 그룹으로부터의 N 비트들의 값들을 처리하는 적어도 하나의 프로세싱 수단
    을 더 포함하는 데이터 스트림 압축 해제 장치.
  7. 제6항에 있어서, 상기 프로세싱 수단들 중 적어도 하나는 가산기(adder)인 것인 데이터 스트림 압축 해제 장치.
  8. 제1항에 있어서, N 비트들의 값을 저장하는 상기 적어도 하나의 레지스터는 N 비트들의 기울기 값을 저장하는 것인 데이터 스트림 압축 해제 장치.
  9. 제1항에 있어서, N 비트들의 값을 저장하는 상기 적어도 하나의 레지스터는 N 비트들의 시작 값을 저장하는 것인 데이터 스트림 압축 해제 장치.
  10. 제1항에 있어서, 상기 제1 입력은 N 비트들의 기울기 값인 것인 데이터 스트림 압축 해제 장치.
  11. 제1항에 있어서, 상기 제1 입력은 N 비트들의 저장 명령 코드(store op code)인 것인 데이터 스트림 압축 해제 장치.
  12. 제1항에 있어서, 상기 제1 입력은 N 비트들의 수치(numerical value)인 것인 데이터 스트림 압축 해제 장치.
  13. 제1항에 있어서, 상기 출력은 저장 명령 코드인 것인 데이터 스트림 압축 해제 장치.
  14. 제1항에 있어서, 상기 출력은 수치인 것인 데이터 스트림 압축 해제 장치.
  15. 제1항에 있어서, 상기 출력은 레지스터 파일 어드레스인 것인 데이터 스트림 압축 해제 장치.
  16. 제1항에 있어서, 상기 장치는 마이크로프로세서 칩 상에 배치되는 것인 데이터 스트림 압축 해제 장치.
  17. 제1항에 있어서, 가장 최근의 유용한 연산 동안에 할당된 값으로 판독 어드레스를 고정하는 수단을 더 포함하는 데이터 스트림 압축 해제 장치.
  18. 제1항에 있어서, 디폴트 주기 동안에 기록 디스에이블 신호를 발생하는 수단을 더 포함하는 데이터 스트림 압축 해제 장치.
  19. 실행을 위해 프로세서로 전달되는 비압축 프로그램 워드의 적어도 하나의 필드를 제공하기 위하여 데이터 스트림을 압축 해제하는 방법으로서,
    a) 프로세서와 전기적으로 통신하는 장치의 레지스터 내에 N 비트들의 제1 값을 저장하는 단계와;
    b) N 비트들의 제2 값의 입력을 상기 장치에서 수신하는 단계와;
    c) N 비트들의 상기 제1 값과 제2 값을 처리하는 방법에 관한 명령을 나타내는 마이크로코드를 상기 장치에서 수신하는 단계와;
    d) N 비트들의 상기 제1 값과 제2 값을 상기 장치에서 처리하는 단계와;
    e) N 비트들의 출력을 상기 장치에서 발생하는 단계로서, 상기 출력은 실행을 위해 상기 프로세서로 전달되는 압축 해제된 프로그램 워드의 적어도 하나의 필드인 것인, 상기 발생 단계;
    를 포함하는 데이터 스트림 압축 해제 방법.
  20. 제19항에 있어서, 리셋 신호를 수신하는 단계를 더 포함하는 데이터 스트림 압축 해제 방법.
  21. 제19항에 있어서, 클럭 신호를 수신하는 단계를 더 포함하는 데이터 스트림 압축 해제 방법.
  22. 제19항에 있어서, 상기 마이크로코드는 1 비트인 것인 데이터 스트림 압축 해제 방법.
  23. 제19항에 있어서, 상기 마이크로코드는 2 비트들인 것인 데이터 스트림 압축 해제 방법.
  24. 제19항에 있어서, N 비트들의 상기 제2 값은 기울기 값인 것인 데이터 스트림 압축 해제 방법.
  25. 제19항에 있어서, N 비트들의 상기 제2 값은 저장 명령 코드인 것인 데이터 스트림 압축 해제 방법.
  26. 제19항에 있어서, N 비트들의 상기 제2 값은 수치인 것인 데이터 스트림 압축 해제 방법.
  27. 제19항에 있어서, 상기 처리 단계는 N 비트들의 값들을 가산하는 단계를 포함하는 것인 데이터 스트림 압축 해제 방법.
  28. 제19항에 있어서, 상기 처리 단계는 N 비트들의 값을 멀티플렉싱하는 단계를 포함하는 것인 데이터 스트림 압축 해제 방법.
  29. 제19항에 있어서, 상기 출력은 저장 명령 코드인 것인 데이터 스트림 압축 해제 방법.
  30. 제19항에 있어서, 상기 출력은 수치인 것인 데이터 스트림 압축 해제 방법.
  31. 제19항에 있어서, 상기 출력은 레지스터 파일 어드레스인 것인 데이터 스트림 압축 해제 방법.
  32. 제21항에 있어서, 상기 발생 단계는 출력을 발생하기 위하여 N 비트들의 적어도 하나의 값을 멀티플렉싱하는 단계를 포함하는 것인 데이터 스트림 압축 해제 방법.
  33. 제19항에 있어서, 가장 최근의 유용한 연산 동안에 할당된 값으로 판독 어드레스를 고정하는 단계를 더 포함하는 데이터 스트림 압축 해제 방법.
  34. 제19항에 있어서, 디폴트 주기 동안에 기록 디스에이블 신호를 발생하는 단계를 더 포함하는 데이터 스트림 압축 해제 방법.
KR1020057004859A 2002-09-20 2003-03-31 동적 프로그램 압축 해제 장치 및 방법 KR20050037607A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IT002003A ITMI20022003A1 (it) 2002-09-20 2002-09-20 Apparecchio e metodo per la decompressione dinamica di programmi.
ITMI02A002003 2002-09-20

Publications (1)

Publication Number Publication Date
KR20050037607A true KR20050037607A (ko) 2005-04-22

Family

ID=31986030

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057004859A KR20050037607A (ko) 2002-09-20 2003-03-31 동적 프로그램 압축 해제 장치 및 방법

Country Status (11)

Country Link
US (1) US6766439B2 (ko)
EP (1) EP1546858A4 (ko)
JP (1) JP2006500658A (ko)
KR (1) KR20050037607A (ko)
CN (1) CN100432923C (ko)
AU (1) AU2003228406A1 (ko)
CA (1) CA2498036A1 (ko)
IT (1) ITMI20022003A1 (ko)
NO (1) NO20051940L (ko)
TW (1) TWI288349B (ko)
WO (1) WO2004027596A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014092465A1 (ko) * 2012-12-12 2014-06-19 어보브반도체 주식회사 플래시 메모리의 소모 전력 감소 방법 및 그 장치

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272700B1 (en) * 2003-12-23 2007-09-18 Altera Corporation Methods and apparatus for indirect compound VLIW execution using operand address mapping techniques
US20060206732A1 (en) * 2005-03-14 2006-09-14 Sony Computer Entertainment Inc. Methods and apparatus for improving processing performance using instruction dependency check depth
WO2007075134A2 (en) * 2005-12-27 2007-07-05 Imsys Technologies Ab Method and system for cost-efficient, high-resolution graphics/image display system
CN101866279B (zh) * 2009-08-14 2012-05-30 威盛电子股份有限公司 微处理器及其相关方法
WO2011041269A2 (en) * 2009-09-30 2011-04-07 Samplify Systems, Inc. Enhanced multi-processor waveform data exchange using compression and decompression
JP5770534B2 (ja) * 2011-06-01 2015-08-26 富士通株式会社 プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9372696B2 (en) * 2013-10-18 2016-06-21 Via Technologies, Inc. Microprocessor with compressed and uncompressed microcode memories
CN106953643B (zh) * 2017-04-11 2020-06-26 安庆师范大学 二分区间法的集成电路数据解压电路及方法
CN109450592A (zh) * 2018-09-29 2019-03-08 广东雅达电子股份有限公司 一种通信协议重组方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175543A (en) * 1991-09-25 1992-12-29 Hewlett-Packard Company Dictionary reset performance enhancement for data compression applications
GB9406666D0 (en) * 1994-04-05 1994-05-25 Communicate Ltd Computer system
GB9412434D0 (en) * 1994-06-21 1994-08-10 Inmos Ltd Computer instruction compression
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
US5729228A (en) * 1995-07-06 1998-03-17 International Business Machines Corp. Parallel compression and decompression using a cooperative dictionary
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
JP3750821B2 (ja) * 1996-05-15 2006-03-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴイ 圧縮された命令フォーマットを処理するvliwプロセッサ
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5768445A (en) * 1996-09-13 1998-06-16 Silicon Graphics, Inc. Compression and decompression scheme performed on shared workstation memory by media coprocessor
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014092465A1 (ko) * 2012-12-12 2014-06-19 어보브반도체 주식회사 플래시 메모리의 소모 전력 감소 방법 및 그 장치
KR101419710B1 (ko) * 2012-12-12 2014-08-13 어보브반도체 주식회사 플래시 메모리의 소모 전력 감소 방법 및 그 장치

Also Published As

Publication number Publication date
CN1688963A (zh) 2005-10-26
US6766439B2 (en) 2004-07-20
US20040059892A1 (en) 2004-03-25
EP1546858A4 (en) 2006-12-06
TWI288349B (en) 2007-10-11
AU2003228406A1 (en) 2004-04-08
NO20051940L (no) 2005-06-20
CN100432923C (zh) 2008-11-12
ITMI20022003A1 (it) 2004-03-21
TW200405203A (en) 2004-04-01
JP2006500658A (ja) 2006-01-05
EP1546858A1 (en) 2005-06-29
CA2498036A1 (en) 2004-04-01
WO2004027596A1 (en) 2004-04-01

Similar Documents

Publication Publication Date Title
US10719318B2 (en) Processor
US6438676B1 (en) Distance controlled concatenation of selected portions of elements of packed data
US5787302A (en) Software for producing instructions in a compressed format for a VLIW processor
US6691305B1 (en) Object code compression using different schemes for different instruction types
US5819058A (en) Instruction compression and decompression system and method for a processor
US5826054A (en) Compressed Instruction format for use in a VLIW processor
KR100455011B1 (ko) 정값화처리및포화연산처리로이루어진라운딩처리를적합하게행할수있는프로세서
US7177876B2 (en) Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation
JP5869125B2 (ja) エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置
US20020042869A1 (en) System and method for performing table look-ups using a multiple data fetch architecture
US7302552B2 (en) System for processing VLIW words containing variable length instructions having embedded instruction length identifiers
US20040181648A1 (en) Compressed instruction format for use in a VLIW processor
KR20050037607A (ko) 동적 프로그램 압축 해제 장치 및 방법
US5852741A (en) VLIW processor which processes compressed instruction format
US20080244238A1 (en) Stream processing accelerator
EP0843848B1 (en) Vliw processor which processes compressed instruction format
EP4278256B1 (en) Parallel decode instruction set computer architecture with variable-length instructions
KR100770448B1 (ko) 비트 추출 장치 및 이를 이용하는 마이크로 프로세서
EP0862111A2 (en) Dynamic conversion between different instruction codes by recombination of instruction elements

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application