KR101584660B1 - 엔트로피 인코딩된 명령 시퀀스의 실행가능한 형태로의 변환 및 스토리지를 위한 방법들 및 장치 - Google Patents

엔트로피 인코딩된 명령 시퀀스의 실행가능한 형태로의 변환 및 스토리지를 위한 방법들 및 장치 Download PDF

Info

Publication number
KR101584660B1
KR101584660B1 KR1020147005265A KR20147005265A KR101584660B1 KR 101584660 B1 KR101584660 B1 KR 101584660B1 KR 1020147005265 A KR1020147005265 A KR 1020147005265A KR 20147005265 A KR20147005265 A KR 20147005265A KR 101584660 B1 KR101584660 B1 KR 101584660B1
Authority
KR
South Korea
Prior art keywords
instructions
sequence
instruction
compressed
nop
Prior art date
Application number
KR1020147005265A
Other languages
English (en)
Other versions
KR20140043834A (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 KR20140043834A publication Critical patent/KR20140043834A/ko
Application granted granted Critical
Publication of KR101584660B1 publication Critical patent/KR101584660B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

프로그램 명령들의 시퀀스를 압축하는 방법은 파라미터를 충족시키는 2개 또는 그 초과의 명령들의 시퀀스를 식별하기 위해 프로그램 명령 스트림을 검사함으로써 시작한다. 2개 또는 그 초과의 명령들의 식별된 시퀀스는, 이후에 압축되는 선택된 타입의 레이아웃 명령으로 교체된다. 압축해제하는 방법은 압축된 값으로서 X-인덱스 및 Y 인덱스를 함께 액세스한다. 압축된 값은 디코딩되고 2개 또는 그 초과의 명령들의 시퀀스로 교체되는 선택된 타입의 레이아웃 명령으로 압축해제된다. 압축해제하기 위한 장치는 압축된 명령들을 저장하도록 구성되는 스토리지 서브시스템을 포함하며, 여기서 압축된 명령은 X-인덱스 및 Y-인덱스를 포함한다. 압축해제기는, 스토리지 서브시스템으로부터 액세스되는 X-인덱스 및 Y-인덱스를, 디코딩되고 2개 또는 그 초과의 명령들의 시퀀스로 교체되는 선택된 타입의 레이아웃 명령으로 변환하도록 구성된다.

Description

엔트로피 인코딩된 명령 시퀀스의 실행가능한 형태로의 변환 및 스토리지를 위한 방법들 및 장치{METHODS AND APPARATUS FOR STORAGE AND TRANSLATION OF AN ENTROPY ENCODED INSTRUCTION SEQUENCE TO EXECUTABLE FORM}
[0001] "Methods and Apparatus for Storage and Translation of Entropy Encoded Software Embedded within a Memory Hierarchy"란 명칭으로 2011년 5월 3일에 출원된 미국 특허 출원 일련번호 제 13/099,463호는, 본원과 양수인이 동일한, 관련된 출원이며, 이로써 그 전체가 인용에 의해 본 출원에 포함된다.
[0002] 본 발명은 일반적으로 임베디드 애플리케이션들(embedded applications)에서의 코드 밀도를 개선하기 위해 압축된 명령 세트들을 갖는 프로세서들에 관한 것으로, 더 구체적으로 명령 시퀀스의 압축된 표현(compressed representation)을 발생시키고, 압축된 명령 시퀀스를 저장하고, 그리고 압축된 명령 시퀀스를 실행가능한 기계 코딩 프로그램 명령들로 변환하기 위한 기술들에 관한 것이다.
[0003] 셀 전화들, 랩톱 컴퓨터들, 개인 휴대 정보 단말들(PDAs) 등과 같은 많은 휴대용 제품들은, 통신 및 멀티미디어 애플리케이션들을 지원하는 프로그램을 실행하는 프로세서의 이용을 필요로 한다. 이러한 제품들을 위한 프로세싱 시스템은 하나 또는 그 초과의 프로세서들을 포함하며, 이들 각각은 명령들, 입력 오퍼랜드들(operands) 및 실행의 결과들에 대한 스토리지(storage)를 갖는다. 예를 들어, 프로세서에 대한 명령들, 입력 오퍼랜드들 및 실행의 결과들은 범용 레지스터 파일, 멀티-레벨 명령 캐시들, 데이터 캐시들 및 시스템 메모리로 이루어지는 계층적 메모리 서브시스템에 저장될 수 있다.
[0004] 높은 코드 밀도를 제공하기 위해, 32-비트 명령 포맷의 서브세트인 16-비트 명령 포맷과 같은 2개의 명령 포맷들을 갖는 ISA(native instruction set architecture)가 이용될 수 있다. 많은 경우들에서, 페치된 16-비트 명령은 디코딩 프로세스 이전에 또는 이 디코딩 프로세스 중에, 프로세서에 의해 32-비트 명령으로 변환되며, 이는 실행 하드웨어가 오로지 32-비트 명령 포맷만을 지원하도록 설계되는 것을 허용한다. 32-비트 명령들의 서브세트인 16-비트 명령들의 이용은 16-비트 포맷으로 인코딩될 수 있는 정보의 양을 제한하는 제약이다. 예를 들어, 16-비트 명령 포맷은 특정될 수 있는 목적지 레지스터들 및 어드레스가능한 소스 오퍼랜드 레지스터들의 수를 제한할 수 있다. 16-비트 명령 포맷은, 예를 들어, 3-비트 또는 4-비트 레지스터 파일 어드레스 필드들을 이용할 수 있는 한편, 32-비트 명령은 5-비트 필드들을 이용할 수 있다. 프로세서 파이프라인 복잡도는 또한, 16-비트 및 32-비트 명령들로의 분기와 같이, 명령 어드레싱 제약들에 부분적으로 기인하여 프로그램에서 2개의 포맷들이 인터믹스되는(intermixed) 경우, 증가할 수 있다. 또한, 코드 압축을 위한 요건들은 프로그램마다 달라, 하나의 프로그램에 대해 선택된 고정된 16-비트 명령 포맷이 상이한 프로그램에 이용하는데 덜 유리하게 만든다. 이와 관련하여, 기존의 프로세서들에 대한 레거시 코드는, 코드 밀도를 상당히 개선하고 실시간 요건들을 충족시키기 위해, 2개의 명령 포맷들을 효율적으로 활용할 수 없을 수도 있다. 이들 및 다른 제약들은 표준 크기 명령들에서 이용되는 필드들의 서브세트들인 필드들을 갖는 감소된 크기 명령들의 효율성을 제한한다.
[0005] 본원의 몇 가지 양상들 중에서, 본 발명의 실시예들은, 프로그램 명령들의 시퀀스들을 압축하고, 압축된 시퀀스들을 저장하고 그리고 압축된 시퀀스들을 명령들의 실행가능한 시퀀스들로 변환함으로써, 코드 밀도를 개선할 필요성을 처리한다. 본원에 처리되는 기술들은 임베디드 소프트웨어에 대한 스토리지 및 전송 도관(conduit)의 고효율적(highly efficient) 활용을 허용한다.
[0006] 이러한 목적들을 위해, 본 발명의 실시예는 프로그램 명령들의 시퀀스를 압축하는 방법을 적용한다. 파라미터를 충족시키는 2개 또는 그 초과의 명령들의 시퀀스가 식별된다. 2개 또는 그 초과의 명령들의 식별된 시퀀스는 선택된 타입의 레이아웃 명령으로 교체된다. 선택된 타입의 레이아웃 명령은 압축된 값들의 X-인덱스 및 Y-인덱스 쌍으로 압축된다.
[0007] 본 발명의 다른 실시예는 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법을 처리한다. X-인덱스 및 Y-인덱스는 압축된 값으로서 함께 액세스된다. 압축된 값은 선택된 타입의 레이아웃 명령으로 압축해제된다. 선택된 타입의 레이아웃 명령은 선택된 타입의 레이아웃 명령을 2개 또는 그 초과의 명령들의 시퀀스로 교체하기 위해 디코딩된다.
[0008] 본 발명의 다른 실시예는 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치를 처리한다. 스토리지 서브시스템은 압축된 명령들을 저장하도록 구성되며, 여기서 압축된 명령은 X-인덱스 및 Y-인덱스를 포함한다. 압축해제기(decompressor)는 스토리지 서브시스템으로부터 액세스되는 X-인덱스 및 Y-인덱스를 선택된 타입의 레이아웃 명령으로 변환하도록 구성된다. 디코더는 선택된 타입의 레이아웃 명령을 2개 또는 그 초과의 명령들의 시퀀스로 교체하도록 구성된다.
[0009] 본 발명의 실시예들의 더 완전한 이해뿐 아니라, 본 발명의 추가적인 특징들 및 장점들은 다음의 상세한 설명 및 첨부하는 도면들로부터 명백해질 것이다.
[0010] 도 1은, 본 발명의 실시예가 유리하게 사용될 수 있는 예시적인 무선 통신 시스템의 블록도이다;
[0011] 도 2는, 본 발명의 실시예에 따른, 효율적이며 저비용인 실행시간(run time) 압축해제를 위해 설계되는 코드 압축을 위한 시스템이다;
[0012] 도 3은, 본 발명의 실시예에 따른, 혼합 마스크에 기초한 명령을 바이트 중복 패드 비트들을 갖는 X 패턴 및 Y 패턴으로 분리하는 명령 분할 프로세스의 예시적인 엘리먼트들을 예시한다;
[0013] 도 4는 압축해제기 및 실행 시스템이며, 여기서 레벨 2 캐시 및 레벨 1 캐시에 압축된 형태로 저장되는 프로그램들은 본 발명의 실시예에 따른 실행을 위해 압축해제된다;
[0014] 도 5는, 본 발명의 실시예에 따른, 제 1 언팩된(unpacked) VLIW(very long instruction word) 패킷 및 제 1 압축된 VLIW 패킷을 포함하는 예시적인 VLIW 패킷 포맷들을 예시한다;
[0015] 도 6은, 본 발명의 실시예에 따른, 제 2 언팩된 VLIW 패킷, 제 2 VLIW 압축된 패킷 및 제 3 VLIW 압축된 패킷을 포함하는 예시적인 VLIW 패킷 포맷들을 예시한다;
[0016] 도 7은, 본 발명의 실시예에 따른, VLIW 압축된 패킷을 지원하는 무-연산(NOP) 및 기능 명령 결합들의 예시적인 목록을 예시한다;
[0017] 도 8은, 본 발명의 실시예에 따른, 빈번하게 이용되는 명령들의 쌍들을 포함하는 제 3 비압축된 VLIW 패킷 및 제 4 VLIW 압축된 패킷을 포함하는 예시적인 VLIW 패킷 포맷들을 예시한다;
[0018] 도 9a는, 본 발명의 실시예에 따른, 프로그램 명령들의 시퀀스를 컴팩팅하기 위한 프로세스를 예시한다;
[0019] 도 9b는, 본 발명의 실시예에 따른, 프로그램 명령들의 시퀀스를 표현하는 압축된 값을 디코딩하기 위한 프로세스를 예시한다; 그리고
[0020] 도 10은, 본 발명의 실시예에 따른, 예시적인 압축해제 상태도를 예시한다.
[0021] 본 발명은 이제, 본 발명의 여러 실시예들이 도시되는 첨부하는 도면들을 참조하여 더 완전히 설명될 것이다. 본 발명은 그러나, 다양한 형태들로 구체화될 수 있으며 본원에 설명되는 실시예들로 제한되는 것으로 해석되어서는 안 된다. 오히려, 이들 실시예들은 본 개시물이 철저하고 완전해져, 본 발명의 범위를 당업자에게 충분히 전달하도록 제공된다.
[0022] 본 발명의 교시들에 따라 동작되거나 동작들을 실행하기 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드"는 C, C++, JAVA®, Smalltalk, JavaScript®, Visual Basic®, TSQL, Perl 또는 다양한 다른 프로그래밍 언어들과 같은 하이 레벨 프로그래밍 언어로 초기에 기록될 수 있다. 이들 언어들 중 하나로 기록되는 소스 프로그램 또는 소스 코드는 하이 레벨 프로그램 코드를 네이티브 명령 포맷으로 인코딩된 명령들을 이용하여 네이티브 어셈블러 프로그램으로 변환함으로써 타겟 프로세서 아키텍처로 컴파일된다. 예를 들어, 명령 세트 아키텍처(ISA)에 대한 네이티브 명령 포맷은 32-비트 포맷 또는 16-비트 포맷과 같은 고정된 수의 비트들일 수 있거나, 32-비트 포맷과 16-비트 포맷의 결합과 같은 가변 수의 비트들일 수 있다. 타겟 프로세서 아키텍처를 위한 프로그램들은 또한 네이티브 어셈블러 언어로 직접 기록될 수 있다. 네이티브 어셈블러 프로그램은 기계 레벨 이진 명령들의 명령 연상기호(mnemonic) 표현들을 이용한다. 본원에서 이용되는 바와 같은 컴파일러 또는 인간 프로그래머에 의해 생성되는 프로그램 코드 또는 컴퓨터 판독가능한 매체는, 그 포맷이 프로세서에 의해 이해가능한 객체 코드와 같은 기계 언어 코드를 지칭한다.
[0023] 도 1은 본 발명의 실시예가 유리하게 사용될 수 있는 예시적인 무선 통신 시스템(100)을 예시한다. 예시의 목적들을 위해, 도 1은 3개의 원격 유닛들(120, 130 및 150) 및 2개의 기지국들(140)을 도시한다. 공통 무선 통신 시스템들이 보다 많은 원격 유닛들 및 기지국들을 가질 수 있음이 인식될 것이다. 각각 컴포넌트들(125A, 125C, 125B 및 125D)에 의해 표현된 바와 같은 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들 또는 이 둘 다를 포함하는 원격 유닛들(120, 130, 150) 및 기지국들(140)은 이하에 더 논의되는 바와 같이 본 발명을 구체화하도록 적응되었다. 도 1은 기지국들(140)로부터 원격 유닛들(120, 130 및 150)로의 순방향 링크 신호들(180) 및 원격 유닛들(120, 130 및 150)로부터 기지국들(140)로의 역방향 링크 신호들(190)을 도시한다.
[0024] 도 1에서, 원격 유닛(120)은 이동 전화로서 도시되며, 원격 유닛(130)은 휴대용 컴퓨터로서 도시되며, 원격 유닛(150)은 무선 로컬 루프 시스템에서의 고정된 위치 원격 유닛으로서 도시된다. 예시로서, 원격 유닛들은 대안적으로 셀 전화들, 페이저들, 워키토키들, 핸드헬드 개인 통신 시스템(PCS) 유닛들, 개인 휴대 정보 단말들과 같은 휴대용 데이터 유닛들 또는 검침 장비(meter reading equipment)와 같은 고정된 위치 데이터 유닛들일 수 있다. 비록 도 1은 개시물의 교시들에 따라 원격 유닛들을 예시하더라도, 개시물은 이들 예시적으로 도시된 유닛들로 제한되지 않는다. 본 발명의 실시예들은 임의의 프로세서 시스템에서 적절하게 사용될 수 있다.
[0025] 도 2는 본 발명의 실시예들에 따라 효율적이며 저비용인 실행시간 압축해제를 위해 설계되는 코드 압축을 위한 압축 시스템(200)이다. 압축 시스템(200)은 상술한 바와 같은 소스 코드, 및 컴파일링되는 현재 프로그램 애플리케이션을 포함하는 라이브러리 파일들(204) 및 소스 코드에서의 비압축된 형태의 이진 라이브러리 파일들을 포함한다. 압축 시스템(200)은 또한, 네이티브 명령 세트 아키텍처(ISA) 포맷들에 기초하여 링크된 실행가능한 코드(210)를 발생시키기 위해 이용되는 컴파일러 및 링커(206) 및 임의선택적 프로파일 피드백 정보(208) 그리고 지원 데이터 섹션들(212)을 포함한다. 네이티브 ISA는 고정된, 비압축된 포맷에 의해 표현되며, 예를 들어, 고정된 64 또는 32 또는 16-비트 인코딩들 및 이러한 인코딩들의 혼합을 비롯한, 다양한 방식들을 표현할 수 있다. 네이티브 ISA는 일반 유틸리티용으로 개발되며 특정 애플리케이션용으로 특정하게 맞춤화되지는 않는다. 16-비트 및 32-비트 명령들이 코드내에서 함께 혼합될 수 있다 하더라도, 32-비트 명령 워드 경계들과 같은 고정된 워드 경계들을 유지함으로써, 분기들, 호출들, 리턴들 등을 위한 오직 고정된 워드 어드레스들만을 지원하는 어드레싱 모델이 사용될 수 있다.
[0026] 이러한 ISA로부터 선택되는 명령들은, 코드의 어드레싱능력을 유지하며, 빠르고, 고정된 지연 압축해제 시간을 보장하면서 압축될 수 있으며 현재 애플리케이션에 맞춤화될 수 있다. 이러한 압축은 선형(linear) 시간에서 압축된 코드를 생성하도록 자동화될 수 있다. 네이티브 ISA는 정보제공 엔트로피(informational entropy)를 가지며, 이는 정해진(given) 소스 코드 및 라이브러리 파일들(204)에 대한 커스톰 엔트로피 바운딩된(bounded) 인코딩을 생성함으로써 본 발명의 실시예에 따라 증가된다. 본 문맥에서의 정보제공 엔트로피는 프로그램에 대한 현재 표현에서의 정보제공 컨텐츠에 대한 측정치(measure)로서 정의된다. 정보제공 엔트로피는 프로그램의 원래 기능을 보존하는 압축된 심볼들을 이용하는 프로그램의 최단 가능한(shortest possible) 표현과 네이티브 명령 심볼들을 이용하는 프로그램의 현재 표현의 비(ratio)로 보여질 수 있다. 압축된 프로그램을 생성하기 위해 이용되는 알파벳의 입도(granularity of the alphabet)는, 계산 시스템에서의 원자 저장가능하며 어드레스가능한 엔티티로서, 개별적인 바이트 레벨에 존재한다. 이 2개의(both) 프로그램 표현들에서 보존되는 정보제공 컨텐츠가 프로그램의 원래의 기능이다. 예를 들어, "1"의 엔트로피는 그 최단 가능한 표현으로 하나의 특정한 정확한 프로그램을 표현할 수 있다. "1"보다 작은 엔트로피를 갖는 프로그램은, 하나보다 많은 프로그램이 지원될 수 있으며 메모리에서의 증가된 스토리지 용량을 필요로 하는 가능한(possibly) 매우 많은 수의 프로그램들이 지원될 수 있음을 표시한다.
[0027] 도 2에서, 링크된 실행가능한 코드(210)가 압축된 코드(218) 및 디코딩 테이블들(220)을 발생시키는 변환 툴(216)에 대한 입력으로서 제공된다. 압축된 코드(218) 및 지원 데이터 섹션들(212)은, 스토리지 디바이스(214)(예컨대, 하드 디스크, 광학 디스크, 임베디드 디바이스의 플래시 메모리 또는 다른 이러한 스토리지 매체)에 저장되며, 이로부터 선택된 코드가 실행을 위해 프로세서 콤플렉스(203)에 제공될 수 있다. 프로세서 콤플렉스(203)는 메인 메모리(222), 레벨 2 캐시(L2 캐시)(224), 레벨 1 명령 캐시(L1 캐시)(226) 및 프로세서 코어(228)를 포함한다. 프로세서 코어(228)는 실시예에 따른 변환 메모리(TM)(232)를 갖는 디코더(230) 및 실행 파이프라인(234)을 포함한다. 압축된 코드는 스토리지 디바이스(214), 메인 메모리(222), L2 캐시(224) 및 L1 캐시(226)에 저장된다. 압축해제된 코드는 일반적으로 L1 캐시(226)로부터 페치되며 실행 파이프라인(234)에 의해 실행된다. 압축된 코드(218)를 발생시키며 디코더(230)에서 압축된 명령들을 디코딩하기 위한 변환 툴(216)의 다양한 실시예들이 이하에 더 상세하게 설명된다.
[0028] 프로세서 콤플렉스(203)는 L1 캐시(226), L2 캐시(224) 및 메인 메모리(222)에서 압축된 형태로 저장되는 프로그램 코드를 실행하기 위한 도 1의 컴포넌트들(125A-125D)에 적절하게 사용될 수 있다. 프로세서 콤플렉스에 접속할 수 있는 주변 디바이스들은 논의의 명확성을 위해 도시되지 않는다. 프로세서 코어(228)는 범용 프로세서, 디지털 신호 프로세서(DSP), ASP(application specific processor) 등일 수 있다. 프로세싱 콤플렉스(203)의 다양한 컴포넌트들은 응용 주문형 집적 회로(ASIC) 기술, 필드 프로그램가능한 게이트 어레이(FPGA) 기술 또는 다른 프로그램가능한 로직, 이산 게이트 또는 트랜지스터 로직 또는 의도된 애플리케이션을 위해 적합한 임의의 다른 이용가능한 기술을 이용하여 구현될 수 있다. 단일 프로세서 코어(228)가 도시되더라도, 본 발명의 실시예의 압축된 명령들의 프로세싱은, 수퍼스칼라(superscalar) 설계들, 및 멀티스레드(multi―threaded), 멀티―코어 및 VLIW(very long instruction word) 설계들과 같은 병렬 파이프라인들을 구현하는 다른 아키텍쳐들에 적용 가능하다.
[0029] 도 3은 본 발명의 실시예에 따른, 이진 혼합 마스크(MM)(304)에 기초한 네이티브 ISA 고정 크기 명령 A(302)를 중복 패드 비트들(310 및 312)을 갖는 Ax 패턴(306) 및 Ay 패턴(308)으로 분리하는 명령 분할 프로세스의 예시적인 엘리먼트들(300)을 예시한다. 패드 비트들은, 현대 메모리 시스템들에 의해 부과되는 요구조건들로 인해 적어도 바이트 입도 세그먼트들로 명령들 및 데이터를 표현하기 위해 생성된다. 바이트 입도 세그먼트들을 갖는 포맷들의 이용은 스토리지 시스템의 바이트 입도 요구조건들을 충족시키면서 비트 입도 상의 스토리지 중복을 허용하는 콤팩트한 표현을 제공하기 위해 활용된다.
[0030] 네이티브 ISA 코드 세그먼트를 압축하기 위해, 코드 세그먼트는 명령들의 그룹들로 분할되며, 각 그룹은 단일 공유된 X 패턴 및 한 세트의 고유한 Y 패턴들에 기여한다. Ax 패턴(306)은 명령 A가 속하는 명령들의 그룹에 공통인 비트 패턴을 표현한다. Ay 패턴(308)은 네이티브 명령 A(302)와 Ax 패턴(306) 사이의 차이들을 구체화하는 비트 패턴을 표현한다. 코드 세그먼트는 1과 N 사이의 임의의 수의 그룹들로 분할될 수 있음이 주목되며, 여기서 N은 코드 세그먼트에서의 네이티브 명령들의 수이다. 코드 세그먼트를 위한 X 패턴들은 X 메모리로 이루어지는 X 딕셔너리(dictionary)에 저장되며 코드 세그먼트에 대한 Ay 패턴들은 Y 메모리로 이루어지는 Y 딕셔너리에 저장된다. X 인덱스는 X 메모리에서의 위치의 어드레스이며 Y 인덱스는 Y 메모리에서의 위치의 어드레스이다. 이들 2개의 인덱스들, X 및 Y 딕셔너리들로부터의 패턴들 및 이진 혼합 마스크의 결합은 결정론적으로 네이티브 명령을 표현한다.
[0031] 압축 동작(314)은 네이티브 명령(302), Ax 패턴(306) 및 Ay 패턴(308)으로부터의 선택을 위해 코드 세그먼트를 위한 적어도 하나의 혼합 마스크(304)를 이용한다. 다음의 예들에서, 16진수(hexadecimal number or hex number)는 '0x' 프리픽스로 표현된다. 예를 들어, Ax 패턴(306)
Figure 112014029585716-pct00001
및 Ay 패턴(308)
Figure 112014029585716-pct00002
을 생성하기 위해 네이티브 명령(302)
Figure 112014029585716-pct00003
은 혼합 마스크(304)
Figure 112014029585716-pct00004
와 결합된다. 괄호들에서의 수들, 예를 들어 (8,9,A,B)는, 중복 패드 비트들(310)의 2개의 "돈 케어(don't care)" 상태들 때문에 특정 4-비트 포지션을 위해 하나의 숫자가 선택될 수 있는 가능한 숫자들의 세트를 표현한다. 디코더(228) 압축해제 동작(316)은, 압축된 명령을 압축해제하기 위해, 코드 세그먼트에 대한 적어도 하나의 혼합 마스크, X 인덱스 페치된 X 메모리 패턴 및 Y 인덱스 페치된 Y 메모리 패턴을 이용한다. 예를 들어, 혼합 마스크(304)
Figure 112014029585716-pct00005
는 네이티브 명령(302)
Figure 112014029585716-pct00006
을 생성하기 위해, X 메모리로부터 페치되는 Ax 패턴(306)
Figure 112014029585716-pct00007
, 및 Y 메모리로부터 페치되는 Ay 패턴(308)
Figure 112014029585716-pct00008
과 결합된다.
[0032] 상술한 바와 같이, X 패턴들 및 Y 패턴들은 바이트 어드레스가능한 X 메모리 및 바이트 어드레스가능한 Y 메모리에 각각 저장된다. X 패턴들, Y 패턴들 또는 이 둘 다의 인덱스 압축은, 복제(duplicate) X 패턴들 및 복제 Y 패턴들을 제거하고, 바이트 어드레스가능한 위치에서의 중복 패드 비트들(310 및 312)과 같이 패드 비트들을 중복시키는 프로세스를 이용하며, 이에 따라 물리적 스토리지의 이중 활용을 감소시킨다. 단일 혼합 마스크로, 모든 X 패턴들은 동일한 수의 비트들이며 모든 Y 패턴들은 동일한 수의 비트들이다. 서로 다른 혼합 마스크들로, 각 네이티브 명령에 대해 다양한 서로 다른 X 및 Y 패턴들을 갖는 것이 가능하다. 그러나 혼합 마스크들의 단지 몇몇(only a few) 결합들은 일반적으로 압축된 코드 세그먼트와 네이티브 ISA 코드 세그먼트 사이에서, 테스트되는 혼합 마스크 결합들의 수에 대해 최소한의(least) 스토리지를 취하는 맵핑들을 제공한다. 낮은 스토리지 용량을 요구하는 압축된 코드를 발생시키는 단일 혼합 마스크는 준최적(near optimal) 혼합 마스크로 고려된다.
[0033] 도 4는 압축해제기 및 실행 시스템(400)이며, 여기서 L2 캐시(224) 및 L1 캐시(226)에 압축된 형태로 저장되는 프로그램들은 본 발명의 실시예에 따라, 실행 파이프라인(234)에서의 실행을 위해 압축해제된다. L1 캐시(226)는, 0x54의 7-비트 X 인덱스 값 및 0x134의 9-비트 Y 인덱스 값을 갖는 XY 엔트리(404)와 같이, 어드레스가능한 위치들에 X 인덱스 및 Y 인덱스 쌍을 저장하는 XY 인덱스 메모리(402)를 포함한다. 다중화기(405)는, L1 캐시(226)에서의 미스(miss)에 대해 L2 캐시(224)로부터의 XY 값(407) 또는 L1 캐시 히트(406)에 대한 XY 엔트리를 선택하기 위해 이용된다. L1 캐시(226) 및 L2 캐시(224) 둘 다에서의 미스에 대해, 다중화기는 경로(403)를 통해 메인 메모리로부터 XY 엔트리를 선택하기 위해 이용된다. 압축해제 동작은 인덱스 X 레지스터(408), 인덱스 Y 레지스터(410), X 메모리(412), Y 메모리(414), 단일 혼합 마스크(MM) 레지스터(416) 및 결합기(418)를 갖는 디코더(230)에서 달성된다. 압축해제된 명령 스토리지(419)는 이하에 더 상세하게 설명된 바와 같이, 선택된 타입의 레이아웃 명령을 포함할 수 있는 복수의 압축해제된 명령들(420)을 포함한다.
[0034] 프로그램 로딩에서 또는 임베디드 시스템 부트 프로세스에서, 메인 메모리(222)는 압축된 코드로 로딩되며, X 메모리(412) 및 Y 메모리(414)는 관련된 X 및 Y 딕셔너리 컨텍스트로 로딩되며 단일 이진 혼합 마스크는 MM 레지스터(416)에 설정된다. X 및 Y 메모리 컨텍스트뿐 아니라 혼합 마스크는 필요한 경우의 실행 동안 재로딩될 수 있음을 주목한다. 예를 들어, 재로딩은, 원래 코드가, 각각 그 자신의 커스톰(custom) 인코딩을 갖는 다수의 세그먼트들로 압축되게 허용할 수 있다. 예를 들어, 스마트 폰들과 같은 일부 복합 임베디드 시스템들은 코드 공간을 공유하지 않으며 자립적인(self contained) 메인 애플리케이션으로부터 다수의 독립 차일드(child) 프로세스들을 호출할 수 있다. 각각의 이러한 애플리케이션은 X/Y 딕셔너리 및 MM으로 이루어지는 그 자신의 커스톰 인코딩을 가질 수 있으며, 이는 차일드 프로세스 시동시 로딩된다. 설명의 나머지부분에 대해, 압축해제기 시스템(400)이 도 2의 단일 변환 메모리(232)를 갖는 디코더(230)를 이용하여 설명되며 단일 인코딩은 임의의 애플리케이션 코드를 포함하는 전체 시스템에 대해 이용된다.
[0035] 다음으로, 실행 파이프라인(234)은 L1 캐시(226)로부터의 명령들의 페칭을 시작한다. 초기에, L1 캐시에 대한 각 액세스는 L2 캐시(224)에 대한 액세스를 야기하는 미스 표시(422)를 발생시킬 수 있다. 초기에, L2 캐시(224)에 대한 액세스는 또한, L2 캐시(224)에서 로딩되며 다중화기(405)를 통해 경로(403)에 걸쳐 디코더(230)로 포워딩되는 압축된 명령에 응답하는 도 2의 메인 메모리(222)에 대한 액세스를 야기하는 미스를 발생시킬 수 있다. 디코더(230)는, 도 3의 압축해제 동작(316)에 관하여 설명된 바와 같이, 실행 파이프라인(234)에서의 실행을 위해 그리고 압축해제되는 명령 스토리지(419)에서의 스토리지를 위해 비압축된 포맷으로 XY 인덱스 압축된 명령을 압축해제한다. 일정 기간의 동작(a period of operation) 후에, L1 캐시(226) 및 L2 캐시(224)는 정상 상태(steady stae)에 도달할 수 있다.
[0036] 프로세서 관점으로부터, 실행 파이프라인(234)은 L1 캐시(226)에서 검색될 명령에 대한 페치 어드레스 및 제어 신호들(421)과 함께 페치 동작을 시도한다. L1 캐시(226)는 명령이 존재하는 것을 결정할 수 있다. L1 캐시 페치 동작은 예를 들어, XY 엔트리(404)가 다중화기(405)를 통해 디코더(230)로 전달되게 야기하는, L1 캐시(226)에서의 히트(hit)인 XY 엔트리(404)에 대한 것이다. XY 엔트리(404)는 인덱스 X 레지스터(408)에서 수신되는 X 인덱스 값 0x54 및 인덱스 Y 레지스터(410)에서 수신되는 Y 인덱스 값 0x134로 분리된다. 어드레스 0x54에서 X 메모리(412)로부터 페치되는 X 패턴(306)은 결합기(418)에 제공된다. 어드레스 0x134에서 Y 메모리(414)로부터 페치되는 Y 패턴(308)은 또한 결합기(418)에 제공된다. MM 레지스터(416)에 저장되는 단일 혼합 마스크(MM)(304)
Figure 112014029585716-pct00009
가 결합기(418)에 더 제공된다. 결합기(418)는, 압축해제된 명령 스토리지(419)에 저장되며 실행 파이프라인(234)으로 전달되는 네이티브 명령(302)을 생성하기 위해, MM(304)에 따라 X 패턴(306)으로부터의 적절한 비트들과 Y 패턴(308)으로부터의 적절한 비트들을 결합한다.
[0037] 설명된 시스템에서, 프로그램 컨텐츠는 암시적인 암호화 포맷으로 저장된다. 어떠한 특정 암호화 타입의 데이터 스크램블링(scrambling)도 명령 스트림상에서 수행되지 않더라도, 프로그램 코드는 애플리케이션 특정 및 압축된 형태로 스토리지 디바이스(214), 메인 메모리(222), L2 캐시(224) 및 L1 캐시(226)에 저장된다. 인코딩된 상태의 프로그램 코드의 일부는 최종 제품에서 외부적으로 용이하게 액세스가능하지 않은 변환 메모리(232)내의 프로세서 코어(228) 내에 존재하기 때문에, 스토리지(214) 및 상부 메모리 계층(222, 224 및 226) 컨텐츠는 원래의 프로그램을 복원하기에 불충분하여, 분석이나 카피를 어렵게 한다.
[0038] VLIW 아키텍처들은 명령 세트 아키텍처(ISA) 설계자들에게 다수의 문제점들(challenges)을 제시한다. 예를 들어, 각 VLIW 패킷은, 각각이 일반적으로 특정 실행 유닛에 바운딩되어 병렬로 실행되는 다수의 명령들로 이루어진다. 제어 전달 입도는 정의상(by definition) 전체 VLIW 패킷이다. 이러한 VLIW 패킷의 중간에 점프 타겟(jump target)이 존재하지 않을 수 있다. 일 방식에서, VLIW 패킷은 패킷에서의 각 명령을 결정론적으로 식별하기 위해 각 명령에 대한 고유한 인코딩을 이용하여 메모리에 저장될 수 있다. 그러나 VLIW 내에 인코딩되는 명령들은 예를 들어, 완전히 인코딩된 32-비트 명령들을 갖으면서, 병렬로 실행되는 것으로 되어 있기 때문에, 스토리지 공간을 낭비할 수 있으며 디코딩을 느리게 하여 이에 따라, 성능에 영향을 미칠 수 있다. 사실상, VLIW 코드를 디코딩하는 것은 VLIW 패킷 경계들을 결정하기 위해 연속적인 동작들을 파싱하는(parsing) 순차적인 태스크일 수 있다.
[0039] 다른 극단적 조치(extreme)는 무-연산(NOP) 명령들을 포함하는 명령들로 완전히 파퓰레이팅된 VLIW 패킷을 형성하는 것이며, 여기서 각 명령은 패킷에서의 자신의 포지션에 의해 명시적으로 결정될 수 있다. 따라서, 각 패킷은 병렬로 동작될 수 있는 각 기능적 유닛에 대한 명령 슬롯 포지션을 가질 것이다. 예를 들어, 6개 명령들의 병령 발행 레이트(parallel issue rate)를 갖는 프로세서 아키텍처는 6개 명령들의 대응하는 VLIW 패킷을 가질 것이다. 현재 프레임워크에서의 이러한 방식은 VLIW 패킷에 대해 완전 비압축 스테이트풀 표현(fully uncompressed state full representation)으로서 보여질 수 있다. 이러한 방식의 하나의 가능한 이득은 각 명령의 능력들을 강화시키는, VLIW 패킷의 각 명령에서의 비트들의 확장이다. 그러나 이러한 방법은, 병렬 실행에 대한 의존들 없이 모든 유용한 명령들을 포함하는 VLIW 패킷들을 형성하는 것이 달성하기 어렵기 때문에, 무-연산들(no-ops)을 저장하기 위한 그 자체 방식만으로는 낭비적이다. 본 발명의 실시예는 보다 최적으로 VLIW 패킷들을 인코딩하기 위해 압축 인프라구조를 활용하는 다른 방식을 도입한다.
[0040] 도 5는 본 발명의 실시예에 따른, 제 1 비압축된 VLIW(very long instruction word) 패킷(502) 및 제 1 압축된 VLIW 패킷(504)을 포함하는 예시적인 VLIW 패킷 포맷들을 예시한다. 제 1 비압축된 VLIW 패킷(502)은 32-비트 추가(ADD) 명령(506), 제 1 32-비트 무-연산(NOP) 명령(507), 제 2 32-비트 NOP 명령(508) 및 32-비트 분기 JUMP 명령(509)과 같은 4개의 32-비트 명령 세트 아키텍처(ISA) 명령들을 포함한다. 16-비트 ISA를 활용하는 대안적인 실시예에서, 4개의 16-비트 명령들은 예를 들어, 비압축된 VLIW 64-비트 패킷에 저장될 것이다. 도 5에서, 2개의 32-비트 NOP 명령들(507 및 508)은 도 2의 변환 툴(216)에 의해 식별되며 도 3에 도시된 바와 같이, X[2nop] 압축된 필드(516) 및 Y[2nop] 압축된 필드(517)로 압축되는 2개의 NOP들의 시퀀스이다. ADD 명령(506) 및 JUMP 명령(509)은, 또한 도 3에 도시된 바와 같이, 대응하는 X 인덱스 및 Y 인덱스 쌍 압축된 값으로 각각 압축된다. 따라서, 제 1 비압축된 VLIW 패킷(502)은 제 1 압축된 VLIW 패킷(504)을 형성하도록 압축된다.
삭제
[0041] 제 1 압축된 VLIW 패킷(504)은 4개의 명령들(506-509)을 표현하는 X 및 Y 압축된 필드들의 3개의 세트들을 포함한다. 32-비트 ADD 명령(506)은 8 비트 X[add] 압축된 필드(514) 및 8 비트 Y[add] 압축된 필드(515)에 의해 표현된다. 제 1 NOP 명령(507) 및 제 2 NOP 명령(508)의 시퀀스는 8비트 X[2nop] 압축된 필드(516) 및 8비트 Y[2nop] 압축된 필드(517)에 의해 표현된다. X[2nop] 압축된 필드(516) 및 Y[2nop] 압축된 필드(517)는 제 1 NOP 명령(507) 및 제 2 NOP 명령(508)으로 디코딩될 때 확장되는 2개의 NOP 명령들의 엔트로피 인코딩된 시퀀스를 표현한다. JUMP 명령(509)은 8비트 X[jmp] 압축된 필드(518) 및 8비트 Y[jmp] 압축된 필드(519)에 의해 표현된다.
[0042] 도 6은 본 발명의 실시예에 따른, 제 2 비압축된 VLIW 패킷(602), 제 2 VLIW 압축된 패킷(603) 및 제 3 VLIW 압축된 패킷(604)을 포함하는 예시적인 VLIW 패킷 포맷들(600)을 예시한다. 제 1 비압축된 VLIW 패킷(602)은 제 1 32-비트 무-연산(NOP) 명령(606), 제 2 32-비트 NOP 명령(607) 및 32-비트 저장 명령(608), 및 제 3 32-비트 NOP 명령(609)과 같은 4개의 32-비트 명령들을 포함한다.
[0043] 제 2 압축된 VLIW 패킷(603)은 4개의 명령들(606-609)을 표현하는 3개의 X 및 Y 압축된 필드들을 포함한다. 제 1 NOP 명령(606) 및 제 2 NOP 명령(607)의 시퀀스는 8비트 X[2nop] 압축된 필드(614) 및 8비트 Y[2nop] 압축된 필드(615)에 의해 표현된다. X[2nop] 압축된 필드(614) 및 Y[2nop] 압축된 필드(615)는 제 1 NOP 명령(606) 및 제 2 NOP 명령(607)으로 디코딩될 때 확장되는 2개의 ISA NOP 명령들의 엔트로피 인코딩된 시퀀스를 표현한다. 32-비트 저장 명령(608)은 8비트 X[store] 압축된 필드(616) 및 8비트 Y[store] 압축된 필드(617)에 의해 표현된다. 제 3 NOP 명령(609)은 8비트 X[1nop] 압축된 필드(618) 및 8비트 Y[1nop] 압축된 필드(619)에 의해 표현된다.
[0044] 제 2 비압축된 VLIW 패킷(602)은, 2개 그룹의 NOP들(606, 607 및 609)로 둘러싸인 단 하나의 페이로드 명령(608)을 갖는 유용한 비트들의 낮은 활용성을 갖는다. 제 2 압축된 VLIW 패킷(603)에 의해 제공되는 것보다 제 2 비압축된 VLIW 패킷(602)의 더 컴팩트한 표현을 제공하기 위해, 특정된 NOP 명령은 VLIW 패킷 내의 명령들의 레이아웃을 인코딩하는 패킷마다 활용된다. 이러한 특정된 NOP 명령은 레이아웃 NOP라 지칭된다. 많은 수의 기능적 유닛들을 수용하기 위해 VLIW 패킷에서의 명령들의 수가 증가함에 따라, 포함될 수 있는 각 개별 NOP 명령을 별개로 인코딩하는 것보다는 VLIW 패킷에서 단일 레이아웃 NOP를 전용하는 것이 점점 유리해진다. NOP 명령이 없는 이들 VLIW 패킷들에 대해, 레이아웃 NOP가 필요하지 않기 때문에, 어떠한 스토리지 공간도 낭비되지 않는다. VLIW 패킷의 시작 또는 종료시 레이아웃 NOP 명령을 배치함으로써, 레이아웃 복원은, "n" 명령 VLIW 패킷에 대한 순위(order) O(n) 순차적 태스크 복잡도에 비해, 순위 O(1)의 태스크 복잡도가 된다.
[0045] 제 3 VLIW 압축된 패킷(604)은 4개의 명령들(606-609)을 표현하는 2개의 X 및 Y 압축된 필드들의 세트를 포함한다. 제 1 NOP 명령(606), 제 2 NOP 명령(607), 저장 명령(608) 및 제 3 NOP 명령(609)의 시퀀스는 2nop_LS_1nop 명령에 의해 표현된다. 2nop_LS_1nop 명령은 현재 ISA에 도입되는 새로운 레이아웃 NOP 명령의 일 예이다. 2nop_LS_1nop 명령은 NOP 명령들과 저장 명령의 결합에서 NOP 명령들의 배치 및 NOP 명령들의 수를 식별한다. 2개의 NOP 명령들(606 및 607), 저장 명령(608) 및 제 3 NOP 명령(609)의 시퀀스는 도 2의 변환 툴(216)에 의해 식별되며 도 3에 도시된 바와 같이, X[2nop_LS_1nop] 압축된 필드(622) 및 Y[2nop_LS_1nop] 압축된 필드(623)로 압축된다. 저장 명령(608)은, 또한 도 3에 도시된 바와 같이, 단일 X 인덱스 및 Y 인덱스 쌍으로 압축된다. 따라서, 제 2 비압축된 VLIW 패킷(602)은 제 3 VLIW 압축된 패킷(604)을 형성하도록 압축된다. 예를 들어, X[2nop_LS_1nop] 압축된 필드(622) 및 Y[2nop_LS_1nop] 압축된 필드(623)는, 제 1 NOP 명령(606) 및 제 2 NOP 명령(607), 저장 명령을 위한 플레이스홀더(placeholder) 및 제 3 NOP 명령(609)으로 디코딩될 때 각각 확장되는, 2개의 ISA NOP 명령들, 저장 명령 및 제 3 NOP 명령의 엔트로피 인코딩된 시퀀스를 표현한다. 32-비트 저장 명령(608)은 저장 명령을 위한 플레이스홀더를 채우는 8비트 X[store] 압축된 필드(624) 및 8비트 Y[store] 압축된 필드(625)에 의해 표현된다.
[0046] 도 7은 본 발명에 따른, VLIW 압축된 패킷을 지원하는 무-연산(NOP) 및 기능 명령 결합들의 예시적인 목록(700)을 예시한다. 레이아웃 NOP 열(702)은 4개의 명령들의 시퀀스를 표현하도록 인코딩된 레이아웃 NOP 명령 엔트리들을 포함한다. 예를 들어, 4개의 명령들의 시퀀스들은 NOP 명령들(N), 산술 논리 유닛 명령들(A), 로드 또는 저장 명령들(LS) 및 제어 명령들(C)의 결합들을 포함한다. 산술 논리 유닛 1(ALU1) VLIW 포지션 열(704)은 ALU1 명령 또는 NOP 명령을 표현하도록 인코딩된 엔트리들을 포함한다. ALU2 VLIW 포지션 열(705)은 ALU2 명령 또는 NOP 명령을 표현하도록 인코딩된 엔트리들을 포함한다. 로드 또는 저장 VLIW 포지션 열(706)은 로드 또는 저장(LD/ST) 명령 또는 NOP 명령을 표현하도록 인코딩된 엔트리들을 포함한다. 제어 VLIW 포지션 열(707)은 제어 명령 또는 NOP 명령을 표현하도록 인코딩된 엔트리들을 포함한다. 예를 들어, 라인 엔트리(708)는 4개의 NOP 명령들(4N)을 표현하며 각 슬롯 열(704-707)에서 NOP 명령을 갖는 레이아웃 NOP 명령이다. 다른 예에서, 라인 엔트리(709)는 3개의 NOP 명령들(3N) 및 제어 명령(C)을 표현하며 각 슬롯 열(704-706)에서 NOP 명령을 그리고 슬롯 열(707)에서 제어 명령을 갖는 레이아웃 NOP 명령이다. 추가적인 예에서, 라인 엔트리(710)는 각 슬롯 열(704 및 705)에서 2개의 NOP 명령들(2N), 슬롯 열(706)에서 로드 또는 저장 명령(LD/ST) 및 슬롯 열(707)에서의 다른 NOP 명령(N)을 표현하는 레이아웃 NOP 명령이다. 라인 엔트리(710)의 2N_LS_N 레이아웃 NOP 명령은 도 6의 제 3 VLIW 압축된 패킷(604)에 대응할 수 있다. 또한, 도 7에서의 열(702)의 레이아웃 NOP 명령들은 애플리케이션 독립적이며, 일반적으로 하부의 VLIW 아키텍처에 의존함을 주목한다.
[0047] 레이아웃 NOP 명령을 이용하는 방식은, 특정 애플리케이션을 위해 맞춤화되지만, 기존의 ISA 공간에 대해 디코딩가능한 새로운 커스톰 명령들을 도입하도록 확장될 수 있다. 예를 들어, 프로그램 평가 프로세스 동안, 하나 또는 그 초과의 특정 VLIW 패킷들이 높은 주파수로 명령 스트림에서 나타나는 것으로 결정되는 경우, 각각의 서로 다른 VLIW 패킷이 단일의 특정된 레이아웃 명령으로서 인코딩될 수 있다. VLIW 패킷에서 빈번하게 이용되는 명령들의 이러한 시퀀스는 도 2의 변환 툴(216)에 의해 식별되며 도 3에 도시된 바와 같이, 단일 X 압축된 필드 및 단일 Y 압축된 필드로 압축된다. 따라서, 다수의 특정된 레이아웃 명령들은 디코딩 목적들을 위해 그리고 이하에 더 상세하게 설명되는 바와 같이, 빈번하게 이용되는 명령들의 시퀀스를 압축하기 위해, 미사용된 ISA의 인코딩을 이용하여 ISA에 포함될 수 있다. 레이아웃 NOP 명령들과 달리, 다수의 특정된 레이아웃 명령들이 애플리케이션 의존적임을 주목한다.
[0048] 도 8은 본 발명의 실시예에 따른, 빈번하게 이용되는 명령들의 쌍들을 포함하는 제 3 비압축된 VLIW 패킷(802) 및 압축되고 특정된 레이아웃 명령(804)을 포함하는 예시적인 VLIW 패킷 포맷들(800)을 예시한다. 제 3 비압축된 VLIW 패킷(802)은, 비교 등호
Figure 112014029585716-pct00010
명령(806), 제 1 무-연산(NOP) 명령(807), 제 2 NOP 명령(808) 및 분기 리턴 명령(809)과 같은, 4개의 32-비트 명령들을 포함한다. 비교 등호 명령(806) 및 리턴 명령(809)은 빈번하게 이용되는 명령들의 쌍을 포함한다. 이용 주파수는 도 2의 프로세서 콤플렉스(203) 상에 실행하는 프로그램들의 분석으로부터 결정될 수 있다. 이러한 이용 주파수 분석은 시뮬레이션 환경에서 동적으로 또는 예를 들어, 도 2의 컴파일러 및 링커(206)에서 통계적으로 결정될 수 있다.
[0049] 제 3 비압축된 VLIW 패킷(802)은 현재 ISA에 도입되는 특정된 레이아웃 명령의 일 예인
Figure 112014029585716-pct00011
명령에 의해 표현될 수 있다.
Figure 112014029585716-pct00012
명령은 도 2의 변환 툴(216)에 의해 식별되며 도 3에 도시된 바와 같이,
Figure 112014029585716-pct00013
압축된 필드(822) 및
Figure 112014029585716-pct00014
압축된 필드(823)로 압축된다. 따라서, 제 3 비압축된 VLIW 패킷(802)은 압축되고 특정된 레이아웃 명령(804)을 형성하기 위해 압축된다.
[0050] 압축되고 특정된 레이아웃 명령(804)은 4개의 명령들(806-809)을 표현하는 2개의 X 및 Y 압축된 필드들을 포함한다. 비교 등호 명령(806) 및 리턴 명령(809)에 대해 빈번하게 이용되는 시퀀스는 8비트
Figure 112014029585716-pct00015
압축된 필드(822) 및 8비트
Figure 112014029585716-pct00016
압축된 필드(823)에 의해 표현된다.
Figure 112014029585716-pct00017
압축된 필드(822) 및
Figure 112014029585716-pct00018
압축된 필드(823)는 비교 등호 명령(806), 2개의 NOP 명령들(807 및 808) 및 분기 리턴 명령(809)으로 디코딩될 때 확장되는 2개의 빈번하게 이용되는 ISA 명령들의 엔트로피 인코딩된 시퀀스를 표현한다.
[0051] 도 9a는 본 발명의 실시예에 따른, 프로그램 명령들의 시퀀스를 컴팩트하게 하기 위한 프로세스(900)를 예시한다. 블록(902)에서, 프로그램 명령 스트림으로부터의 명령들이 수신된다. 블록(904)에서, 프로그램 명령 스트림은 파라미터에 따라 2개 또는 그 초과의 명령들의 시퀀스에 대해 검사된다. 2개의 32-비트 명령들의 시퀀스에 대한 예시적인 파라미터는 2개의 명령들의 시퀀스를 포함하는 64-비트 패턴일 수 있다. 다른 실시예에서, 2개의 명령들의 시퀀스에 대한 파라미터는, 각각이 ISA에서의 명령을 표현하는, 2개의 어셈블러 명령 연상기호들의 시퀀스일 수 있다. VLIW 패킷에서 빈번하게 이용되는 명령들의 이러한 시퀀스는, 도 2의 컴파일러(206)와 같은 컴파일러, 또는 도 2의 변환 툴(216)과 같은 변환 툴에 의해 식별될 수 있다. 명령들이 프로그램 명령 스트림으로부터 수신됨에 따라, 이후, 한꺼번에 2개의 명령들이, 2개의 명령들의 시퀀스가 발견되었는지 여부를 표시하기 위해, 파라미터와 비교될 수 있다. 예를 들어, 제 1 파라미터는 2개의 NOP 명령들의 시퀀스를 표시할 수 있다. 제 2 파라미터는 3개의 NOP 명령들의 시퀀스를 표시할 수 있다. 파라미터는 또한 NOP 및 기능 명령 결합들의 예시적인 목록(700)과 같은 특정 명령 시퀀스들의 목록에 엔트리를 표시할 수 있다. 도 8과 관련하여 설명된 바와 같이, 명령들의 빈번하게 이용되는 시퀀스들을 표시하기 위한 파라미터들 세트와 같은, 추가적 예들의 파라미터들이 애플리케이션 기반으로 결정될 수 있다.
[0052] 결정 블록(906)에서, 2개 또는 그 초과의 명령들의 현재 시퀀스가 파라미터를 충족하는 것으로 발견되었는지 여부에 관한 결정이 이루어진다. 2개 또는 그 초과의 명령들의 현재 시퀀스가 파라미터를 충족하지 못하는 경우에, 프로세스(900)는 블록(904)으로 리턴한다. 2개 또는 그 초과의 명령들의 현재 시퀀스가 파라미터를 충족시키는 경우에, 프로세스(900)는 블록(908)으로 진행한다. 블록(908)에서, 2개 또는 그 초과의 명령들의 시퀀스는 파라미터와 관련되는 선택된 타입의 레이아웃 명령으로 교체된다. 블록(910)에서, 선택된 타입의 레이아웃 명령은 X 압축된 필드 및 Y 압축된 필드로 압축된다. 프로세스(900)는 그 후에 블록(904)으로 리턴한다.
[0053] 도 9b는 본 발명의 실시예에 따른, 프로그램 명령들의 시퀀스를 표현하는 압축된 값을 디코딩하기 위한 프로세스(950)를 예시한다. 블록(952)에서, 압축된 명령 스트림으로부터의 압축된 명령들이 수신된다. 블록(954)에서, 수신된 X 압축된 필드 및 Y 압축된 필드는 예를 들어, 선택된 타입의 레이아웃 명령으로 압축해제된다. 각각의 수신되는 압축된 명령을 압축해제하기 위해 프로세스(950)가 반복된다. 블록(956)에서, 예시적인 선택된 타입의 레이아웃 명령은 레이아웃 명령의 디코딩에 따라 2개 또는 그 초과의 명령들로 교체된다. 블록(958)에서, 블록(958)에서 수신되는 2개 또는 그 초과의 명령들에 대해 프로세스(950)를 완료하는 2개 또는 그 초과의 명령들이 실행된다.
[0054] 도 10은 본 발명의 실시예에 따른 예시적인 압축해제 상태도(1000)를 예시한다. 압축해제 상태도(1000)는, 압축되고 특정된 레이아웃 명령(804)과 같은, 압축되고 특정된 레이아웃 명령(1002)이 프로세서 파이프라인 상에서의 실행을 위해 압축해제된 명령들(1005)을 결정하도록 진입하는 상태들을 예시한다. 도 10은 예를 들어, 메인 메모리(222), L2 캐시(224) 및 L1 캐시(226)를 포함하는 메모리 계층(1006)에서의 압축되고 특정된 레이아웃 명령(1002)을 도시한다. 프로세서 코어(228)는 압축된 명령 디코더(1008) 및 실행 파이프라인(234)을 포함한다. 페치 동작(1007)은, 메모리 계층(1006)으로부터 압축된 명령 디코더(1008)으로의 압축되고 특정된 레이아웃 명령(1002)을 리트리브한다. 압축된 명령 디코더(1008)는 X 비트 패턴에 대해 X 메모리(1010)를 액세스하기 위해 X 인덱스로서
Figure 112014029585716-pct00019
(1003)을 이용하고, 그리고 Y 비트 패턴에 대해 Y 메모리(1011)를 액세스하기 위해 Y 인덱스로서
Figure 112014029585716-pct00020
(1004)을 이용하도록 구성된다. 적절한 혼합 마스크(MM)(1012)는, MM(1012)에 따라 Y 비트 패턴과 X 비트 패턴을 결합하도록 그리고 페치 동작(1016) 동안 변환된 값을 프로세서 코어(228)에 제공하도록 구성되는 결합기(1014)에 적용된다. 예를 들어, 변환된 값은 32 비트
Figure 112014029585716-pct00021
명령(1018)일 수 있다. 디코더(230)는 디코드 동작(1020)에서 32 비트
Figure 112014029585716-pct00022
명령(1018)을 디코딩하도록 그리고 비압축된 VLIW 패킷(1005)으로서 디코딩된 출력을 실행 파이프라인(234)에 제공하도록 동작가능하다. 비압축된 VLIW 패킷(1005)은, 비교 등호 명령(1022), 제 1 NOP 명령(1023), 제 2 NOP 명령(1024) 및 리턴 명령(1025)을 포함한다. 2개의 NOP 명령들(1023 및 1024)은 디코드 동작(1020)의 일부로서 삽입되며 그에 의해 메모리 계층(1006)에서의 이들 2개의 명령들을 위한 스토리지 영역을 필요로 하지 않는다. ALU1 실행 유닛(1032), ALU2 실행 유닛(1033), 로드/저장(LD/ST) 실행 유닛(1034) 및 제어 실행 유닛(1035)은 대응하는 명령들(1022-1025)을 실행하도록 각각 구성가능하다.
[0055] 본원에 개시되는 실시예들과 관련하여 설명되는 방법들은 하드웨어와 소프트웨어의 결합으로 구체화될 수 있으며, 소프트웨어는 비-일시적 컴퓨터-판독가능한 스토리지 매체에 저장되며 프로세서에 의해 실행가능한 컴퓨터-판독가능한 명령들의 시퀀스 또는 프로그램이다. 컴퓨터-판독가능한 명령들의 시퀀스 또는 프로그램은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 프로그램가능한 판독 전용 메모리(EPROM), 하드 디스크, 제거가능한 디스크, 테이프, 컴팩트 디스크 판독 전용 메모리(CD-ROM) 또는 기술분야에 공지된 또는 장래에 권고될 임의의 다른 형태의 스토리지 매체에 존재할 수 있다. 스토리지 매체는 프로세서에 커플링될 수 있어 프로세서가 스토리지 매체로부터 정보를 판독할 수 있으며 일부 경우들에서 스토리지 매체에 정보를 기록할 수 있다. 프로세서에 커플링하는 스토리지 매체는 회로 구현에 통합되는 직접 커플링일 수 있거나, 또는 다운로딩 기술들을 이용하여 데이터 스트리밍 또는 직접 액세스들을 지원하는, 하나 또는 그 초과의 인터페이스들을 활용할 수 있다.
[0056] 본 발명은 프로세서들에서의 이용을 위한 예시적인 실시예들의 맥락에서 개시되지만, 상기 논의 및 이하에 후속하는 청구범위들에 일치하는 다양한(wide variety) 구현들이 당업자에 의해 사용될 수 있음이 인식될 것이다. 예를 들어, 대안적인 실시예에서, 도 2의 디코더(230)는, 메인 메모리 및 L2 캐시가 압축된 명령들을 저장하며 레벨 1(L1) 캐시가 비압축된 명령들을 저장하는 시스템에서 레벨 2(L2) 캐시 다음에 배치될 수 있다. 이러한 시스템에서 메인 메모리 및 L2 캐시는 또한 2개 또는 그 초과의 명령들의 압축된 시퀀스들을 저장할 것이다.

Claims (22)

  1. 프로그램 명령들의 시퀀스를 압축하는 방법으로서,
    파라미터를 충족하는 2개 이상의 명령들의 시퀀스를 식별하는 단계 ― 상기 2개 이상의 명령들의 각각의 명령은 동일한 수의 비트들을 가짐 ―; 및
    상기 2개 이상의 명령들의 식별된 시퀀스를 동일한 수의 비트들로 이루어진 선택된 타입의 레이아웃 명령으로 교체하는 단계; 및
    상기 선택된 타입의 레이아웃 명령을 압축된 값들의 X-인덱스 및 Y-인덱스 쌍으로 압축하는 단계를 포함하는,
    프로그램 명령들의 시퀀스를 압축하는 방법.
  2. 제 1 항에 있어서,
    상기 파라미터는 2개의 무-연산(NOP) 명령들의 시퀀스를 표시하는, 프로그램 명령들의 시퀀스를 압축하는 방법.
  3. 제 2 항에 있어서,
    상기 교체하는 단계는:
    상기 2개의 NOP 명령들의 시퀀스를 상기 2개의 NOP 명령들의 시퀀스를 표현하는 단일 레이아웃 명령으로 교체하는 단계를 포함하는, 프로그램 명령들의 시퀀스를 압축하는 방법.
  4. 제 1 항에 있어서,
    상기 파라미터는 하나 이상의 무-연산(NOP) 명령들 및 하나 이상의 함수 명령들의 결합인 2개 이상의 명령들의 시퀀스를 표시하는, 프로그램 명령들의 시퀀스를 압축하는 방법.
  5. 제 4 항에 있어서,
    상기 교체하는 단계는:
    상기 2개 이상의 명령들의 시퀀스에서의 상기 NOP 명령들 중 적어도 하나를 NOP 명령들의 수 및 상기 시퀀스에서의 상기 NOP 명령들의 배치를 식별하는 단일 레이아웃 명령으로 교체하는 단계를 포함하는, 프로그램 명령들의 시퀀스를 압축하는 방법.
  6. 제 1 항에 있어서,
    상기 파라미터는 빈번하게 이용되는 하나 이상의 명령들의 시퀀스들을 표시하는, 프로그램 명령들의 시퀀스를 압축하는 방법.
  7. 제 6 항에 있어서,
    상기 교체하는 단계는:
    표시된 명령들의 시퀀스를, 상기 표시된 명령들의 시퀀스에서 각 명령을 식별하는 단일 레이아웃 명령으로 교체하는 단계를 포함하는, 프로그램 명령들의 시퀀스를 압축하는 방법.
  8. 제 1 항에 있어서,
    상기 2개 이상의 명령들의 시퀀스는 2개 이상의 명령들의 VLIW(very long instruction word) 패킷인, 프로그램 명령들의 시퀀스를 압축하는 방법.
  9. 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법으로서,
    X-인덱스 및 Y-인덱스를 압축된 값으로서 함께 액세스하는 단계;
    상기 압축된 값을 정의된 수의 비트들을 포함하는 선택된 타입의 레이아웃 명령으로 압축해제하는 단계; 및
    상기 선택된 타입의 레이아웃 명령을 2개 이상의 명령들의 시퀀스로 교체하기 위해 상기 선택된 타입의 레이아웃 명령을 디코딩하는 단계를 포함하고,
    상기 2개 이상의 명령들의 각각의 명령은 정의된 동일한 수의 비트들로 이루어지는,
    명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법.
  10. 제 9 항에 있어서,
    상기 압축해제하는 단계는:
    상기 X-인덱스에 따라 X 패턴 메모리로부터 X 패턴을 선택하는 단계;
    상기 Y-인덱스에 따라 Y 패턴 메모리로부터 Y 패턴을 선택하는 단계; 및
    상기 선택된 타입의 레이아웃 명령을 생성하기 위해 혼합 마스크(mix mask)에 따라 상기 X 패턴을 상기 Y 패턴과 결합하는 단계를 포함하는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법.
  11. 제 9 항에 있어서,
    상기 선택된 타입의 레이아웃 명령은 2개의 무-연산(NOP) 명령들의 시퀀스를 표시하는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법.
  12. 제 9 항에 있어서,
    상기 선택된 타입의 레이아웃 명령은 하나 이상의 무-연산(NOP) 명령들 및 하나 이상의 함수 명령들의 결합인 2개 이상의 명령들의 시퀀스를 표시하는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법.
  13. 제 9 항에 있어서,
    상기 선택된 타입의 레이아웃 명령은 빈번하게 이용되는 하나 이상의 명령들의 시퀀스들을 표시하는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법.
  14. 제 9 항에 있어서,
    상기 압축해제하는 단계는 프로세서 코어의 메모리 계층으로부터의 명령 페치 상에서 수행되는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하는 방법.
  15. 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치로서,
    X-인덱스 및 Y-인덱스를 포함하는 압축된 명령들을 저장하도록 구성되는 스토리지 서브시스템;
    상기 스토리지 서브시스템으로부터 액세스되는 X-인덱스 및 Y-인덱스를 정의된 수의 비트들을 포함하는 선택된 타입의 레이아웃 명령으로 변환하도록 구성되는 압축해제기; 및
    상기 선택된 타입의 레이아웃 명령을 2개 이상의 명령들의 시퀀스로 교체하도록 구성되는 디코더를 포함하고,
    상기 2개 이상의 명령들의 각각의 명령은 정의된 동일한 수의 비트들로 이루어지는,
    명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치.
  16. 제 15 항에 있어서,
    상기 압축해제기는:
    상기 X-인덱스에 따라 선택되는 X 패턴들을 저장하도록 동작가능한 X 패턴 메모리;
    상기 Y-인덱스에 따라 선택되는 Y 패턴들을 저장하도록 동작가능한 Y 패턴 메모리; 및
    상기 선택된 타입의 레이아웃 명령을 생성하기 위해 혼합 마스크에 따라, 선택된 X 패턴을 선택된 Y 패턴과 결합하도록 구성되는 결합기(combiner)를 포함하는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치.
  17. 제 15 항에 있어서,
    상기 2개 이상의 명령들의 시퀀스는 2개의 무-연산(NOP) 명령들의 시퀀스인, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치.
  18. 제 15 항에 있어서,
    상기 2개 이상의 명령들의 시퀀스는 하나 이상의 무-연산(NOP) 명령들 및 하나 이상의 함수 명령들의 결합인, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치.
  19. 제 15 항에 있어서,
    상기 2개 이상의 명령들의 시퀀스는 빈번하게 이용되는 명령들의 시퀀스인, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치.
  20. 제 15 항에 있어서,
    상기 스토리지 서브시스템은:
    상기 압축된 명령들을 저장하도록 동작가능한 레벨 1 명령 캐시를 포함하는, 명령들의 시퀀스를 표현하는 압축된 값을 압축해제하기 위한 장치.
  21. 삭제
  22. 삭제
KR1020147005265A 2011-07-28 2012-07-30 엔트로피 인코딩된 명령 시퀀스의 실행가능한 형태로의 변환 및 스토리지를 위한 방법들 및 장치 KR101584660B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/192,916 US10120692B2 (en) 2011-07-28 2011-07-28 Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
US13/192,916 2011-07-28
PCT/US2012/048904 WO2013016737A1 (en) 2011-07-28 2012-07-30 Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form

Publications (2)

Publication Number Publication Date
KR20140043834A KR20140043834A (ko) 2014-04-10
KR101584660B1 true KR101584660B1 (ko) 2016-01-12

Family

ID=46604609

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147005265A KR101584660B1 (ko) 2011-07-28 2012-07-30 엔트로피 인코딩된 명령 시퀀스의 실행가능한 형태로의 변환 및 스토리지를 위한 방법들 및 장치

Country Status (7)

Country Link
US (1) US10120692B2 (ko)
EP (1) EP2737397A1 (ko)
JP (1) JP5869125B2 (ko)
KR (1) KR101584660B1 (ko)
CN (1) CN103748550B (ko)
IN (1) IN2014CN00678A (ko)
WO (1) WO2013016737A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US20140365884A1 (en) * 2012-03-30 2014-12-11 Google Inc. Voice command recording and playback
US9330001B2 (en) * 2012-05-21 2016-05-03 Zeropoint Technologies Ab Cache system and a method of operating a cache memory
US9389854B2 (en) 2013-03-15 2016-07-12 Qualcomm Incorporated Add-compare-select instruction
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
US20160241667A1 (en) 2015-02-18 2016-08-18 Actmobile Networks, Inc. Extended http object cache system and method
US10558808B2 (en) 2016-03-03 2020-02-11 Qualcomm Incorporated Methods and apparatus for packet-based validation of control-flow transfers for hardware control-flow enforcement
US10565014B2 (en) 2017-12-05 2020-02-18 Western Digital Technologies, Inc. Data processing offload using in-storage code execution

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070162724A1 (en) 2003-12-16 2007-07-12 Koninklijke Philips Electronics N.V. Memory-efficient instruction processing scheme

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0440525A (ja) 1990-06-06 1992-02-10 Seiko Epson Corp 並列処理型マイクロプロセッサ
US5463750A (en) 1993-11-02 1995-10-31 Intergraph Corporation Method and apparatus for translating virtual addresses in a data processing system having multiple instruction pipelines and separate TLB's
JPH07168694A (ja) 1993-12-14 1995-07-04 Hitachi Ltd プロセッサおよびそれを用いたデータ処理システム
JPH08161169A (ja) 1994-12-09 1996-06-21 Toshiba Corp Vliw方式の計算機システム及びvliwの解釈・実行方法
JP3598589B2 (ja) 1995-06-28 2004-12-08 株式会社日立製作所 プロセッサ
US5924125A (en) 1995-08-01 1999-07-13 Arya; Siamak Method and apparatus for parallel access to consecutive TLB entries
JP3412462B2 (ja) 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
DE19735948C1 (de) 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
JPH1185512A (ja) 1997-09-03 1999-03-30 Fujitsu Ltd 命令圧縮格納および命令復元機能を有するデータ処理装置
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US20020112029A1 (en) 1998-03-06 2002-08-15 Craig S. Gravina System and method for accepting and integrating entertainment information from entertainment information producers
ATE343269T1 (de) 1999-07-06 2006-11-15 Samsung Electronics Co Ltd Vorrichtung und verfahren zur kodierung/dekodierung eines transportformatindikators in einem cdma- mobilkommunikationssystem
JP3556556B2 (ja) 2000-02-08 2004-08-18 株式会社東芝 命令コード変換装置及び情報処理システム
US6779101B1 (en) * 2000-03-07 2004-08-17 University Of Washington Method and apparatus for processing compressed VLIW subinstruction opcodes
US6859870B1 (en) * 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
GB2366643B (en) 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
KR20030007480A (ko) 2001-01-30 2003-01-23 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 컴퓨터 시스템 및 컴퓨터 프로그램
US7028286B2 (en) * 2001-04-13 2006-04-11 Pts Corporation Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
JP3806341B2 (ja) 2001-11-22 2006-08-09 ユニバーシティ・オブ・ワシントン サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
US7313671B2 (en) 2002-08-16 2007-12-25 Koninklijke Philips Electronics, N.V. Processing apparatus, processing method and compiler
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
WO2004029796A2 (en) * 2002-09-24 2004-04-08 Koninklijke Philips Electronics N.V. Apparatus, method ,and compiler enabling processing of load immediate instructions in a very long instruction word processor
US7249248B2 (en) 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
US7290122B2 (en) 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
CA2595248A1 (en) 2005-01-18 2006-07-27 Trestle Corporation System and method for creating variable quality images of a slide
US7404042B2 (en) 2005-05-18 2008-07-22 Qualcomm Incorporated Handling cache miss in an instruction crossing a cache line boundary
US7594098B2 (en) 2005-07-01 2009-09-22 Stmicroelectronics, Sa Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system
US8099587B2 (en) 2005-07-20 2012-01-17 Intel Corporation Compressing and accessing a microcode ROM
CN101075903B (zh) 2006-05-17 2012-07-04 中兴通讯股份有限公司 网络资源配置方法和装置
CN100492279C (zh) 2006-07-27 2009-05-27 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
WO2009061814A2 (en) 2007-11-05 2009-05-14 University Of Florida Research Foundation, Inc. Lossless data compression and real-time decompression
US8281151B2 (en) 2008-04-09 2012-10-02 Hewlett-Packard Development Company L. P. Auditor assisted extraction and verification of client data returned from a storage provided while hiding client data from the auditor
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070162724A1 (en) 2003-12-16 2007-07-12 Koninklijke Philips Electronics N.V. Memory-efficient instruction processing scheme

Also Published As

Publication number Publication date
EP2737397A1 (en) 2014-06-04
JP5869125B2 (ja) 2016-02-24
US20130031337A1 (en) 2013-01-31
US10120692B2 (en) 2018-11-06
CN103748550B (zh) 2016-07-06
WO2013016737A1 (en) 2013-01-31
IN2014CN00678A (ko) 2015-04-03
KR20140043834A (ko) 2014-04-10
CN103748550A (zh) 2014-04-23
JP2014524097A (ja) 2014-09-18

Similar Documents

Publication Publication Date Title
KR101584660B1 (ko) 엔트로피 인코딩된 명령 시퀀스의 실행가능한 형태로의 변환 및 스토리지를 위한 방법들 및 장치
JP6363739B2 (ja) メモリ階層内に組み込まれたエントロピーエンコーディングされたソフトウェアの記憶および変換のための方法および装置
CN102473093B (zh) 对多个通道中的紧缩数据解压缩
US20120284488A1 (en) Methods and Apparatus for Constant Extension in a Processor
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
TWI522910B (zh) 微處理器、選擇性解壓縮微程式碼方法、產生選擇性壓縮微程式碼方法、產生描述方法以及電腦程式產品
KR101497346B1 (ko) 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법
Li Reduce static code size and improve RISC-V compression
Lopes et al. Design and evaluation of compact ISA extensions
US11086627B2 (en) Instruction length decoder system and method
Pan High performance, variable-length instruction encodings
Xianhua et al. Efficient code size reduction without performance loss
Jeong et al. Improved branch prediction for just-in-time decompression of canonical huffman bytecode streams

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: 20181227

Year of fee payment: 4