KR20130038886A - 압축 코드의 가속 실행 - Google Patents

압축 코드의 가속 실행 Download PDF

Info

Publication number
KR20130038886A
KR20130038886A KR1020127033841A KR20127033841A KR20130038886A KR 20130038886 A KR20130038886 A KR 20130038886A KR 1020127033841 A KR1020127033841 A KR 1020127033841A KR 20127033841 A KR20127033841 A KR 20127033841A KR 20130038886 A KR20130038886 A KR 20130038886A
Authority
KR
South Korea
Prior art keywords
pointer
embedded code
storage unit
code instruction
processor
Prior art date
Application number
KR1020127033841A
Other languages
English (en)
Other versions
KR101468424B1 (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 KR20130038886A publication Critical patent/KR20130038886A/ko
Application granted granted Critical
Publication of KR101468424B1 publication Critical patent/KR101468424B1/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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/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/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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

압축 코드의 실행을 가속시키는 방법 및 장치가 설명된다. 일 실시예에서, 2레벨 임베디드 코드 압축 해제 방식이 이용되며, 이는 버블을 제거해서 속도를 향상시키고 및/또는 전력 소비를 감소시킨다. 다른 실시예도 설명되고 청구된다.

Description

압축 코드의 가속 실행{ACCELERATING EXECUTION OF COMPRESSED CODE}
본 발명은 전반적으로 컴퓨팅 분야에 관한 것이다. 상세하게는, 본 발명의 실시예는 전반적으로 압축 코드의 실행을 가속시키는 것에 관한 것이다.
많은 애플리케이션의 코드 크기 풋프린트(footprint)에 민감하다. 가장 큰 예가 ROM(Read-Only Memory) 기반 시스템을 이용할 수 있는 모바일 애플리케이션으로, 여기서 영구 메모리 저장 장치가 전체 시스템 비용, 크기 혹은 전력 소비에 있어서의 핵심적인 요소이다. 일례로, 이러한 사항 중 적어도 일부를 줄이기 위해서 코드 압축이 이용될 수 있지만, 압축 코드를 상황에 따라(on-the-fly) 압축 해제할 필요가 있기 때문에 종종 성능 저하 및/또는 전력 소비 증가를 일으킨다.
상세한 설명은 첨부된 도면을 참고하면서 제공된다. 도면에서, 참조 번호의 첫번째 자리의 숫자는 그 부재 번호가 처음 도시된 도면을 나타낸다. 각 도면에서 동일한 참조 번호는 유사한 혹은 동일한 아이템을 나타낸다.
도 1 및 2는 각각 코드 압축 전후의 임베디드 코드 압축을 나타내는 도면,
도 3, 5 및 7은 일부 실시예에 따른, 파이프라인식 압축 해제기의 블록도,
도 4 및 6은 일부 실시예에 따른, 파이프라인식 압축 해제기로의 데이터 플로우를 나타내는 도면,
도 8은 본 발명의 실시예에 따른 방법의 흐름도,
도 9 및 10은 본 명세서에 설명된 일부 실시예를 실시하는데 이용될 수 있는 컴퓨팅 시스템의 실시예의 블록도,
도 11은 일부 실시예에 따른 무선 로컬 에어리어 혹은 셀룰러 네트워크 통신 시스템의 블록도이다.
이하 설명에서, 다양한 실시예를 완전하게 이해할 수 있도록 다수의 특정된 세부 사항이 설명될 것이다. 그러나, 본 발명의 많은 실시예는 이러한 특정된 세부 사항없이도 실시될 수 있다. 다른 예로서, 본 발명의 특정 실시예를 불분명하게 하지 않도록 공지된 방법, 프로시져, 구성 요소 및 회로는 상세하게 설명하지 않았다. 또한, 본 발명의 실시예의 많은 측면들이 집적 반도체 회로("하드웨어"), 하나 이상의 프로그램에 구성된 컴퓨터-판독 가능 인스트럭션("소프트웨어") 또는 하드웨어와 소프트웨어의 조합과 같은 다양한 수단을 이용해서 수행될 수 있다. 이러한 설명을 목적으로, "로직"을 참조한다는 것은 하드웨어, 소프트웨어(예컨대, 프로세서의 연산을 제어하는 마이크로-코드를 포함함) 혹은 이들의 조합을 의미한다.
일부 실시예에서는, 예컨대, 가장 빈번하기 실행되는 코드 플로우의 성능 오버헤드를 감소 혹은 제거함으로써, 전력 소비를 감소시킴으로써, 및/또는 코드 크기를 감소시킴으로써, 2레벨 임베디드 코드 압축 해제 방식을 개선한다. 일반적으로, 임베디드 코드 압축은 임베디드 코드 워드를 구성하는 고유 비트 패턴의 세트를 식별해서 테이블('딕셔너리'라고도 함)에 저장하는 것을 목적으로 한다. 압축된 임베디드 코드는 도 1 및 2에 도시된 바와 같이 각각의 패턴의 (짧은) 고유 식별자를 원래의 임베디드 코드 워드 시퀀스로 저장한다. 또한, 코드 딕셔너리 혹은 메모리 내의 값에 대한 위치를 지정하는데 융통성을 마련함으로써, 초기 포인터 값의 더 효율적인 유도를 가능하게 할 수 있다. 이러한 실시예는 압축 해제시에 추가적인 비용을 발생시키지 않으면서 임베디드 코드 압축이 제공하는 이점을 취할 수 있다.
도 1 및 2에 있어서, addr는 임베디드 코드 인스트럭션의 어드레스를 나타낸다. 압축 해제된 형태(예컨대, 도 1 참조)에서, addr는 ROM에 직접 액세스해서 임베디드 코드 인스트럭션(instr)을 페치한다. 압축된 형태(예컨대, 도 2 참조)에서, 고유의 임베디드 코드 인스트럭션는 '고유 패턴' 테이블/어레이(202)(혹은 딕셔너리)에 저장되고, 그 패턴에 대한 인덱스(포인터)만이 임베디드 코드 인스트럭션의 원래의 슬롯(포인터 어레이(204))에 저장된다. 이러한 구성에서는 2-단계 처리를 이용해서 임베디드 코드 워드를 압축 해제하고 있으며, 즉 첫번째 단계에서는 포인터 어레이(204)가 익덱스(포인터)를 고유 패턴 어레이(202)에 페치시키도록 엑세스되고, 이후에 워드를 제공하도록 액세스된다. 오리지널 ROM이 6500개의 임베디드 코드 워드를 갖고 있고, 각각의 워드가 312비트라고 가정하면, 총 2005개의 고유 임베디드 코드 워드가 존재한다. 오리지널 ROM은 (312×6500) 2,028,000 비트를 취하고, 압축된 ROM은 (6500×11+312×2005) 697,060 비트(여기서 11은 고유 패턴 어레이(202) 내의 2005개의 엔트리를 인덱스하는데 필요한 비트의 수)만을 취한다. 이와 같이, 압축율(압축 크기/오리지널 크기)은 34.37%이다. 따라서, 기존의 임베디드 코드 압축 해제 방식은 플로우 변경을 수행하는데 비용을 발생시킬 수 있다. 이 때문에 일부 실시예에서는 압축은 가능하게 하면서도 이러한 수행은 피하고 있다.
다양한 실시예에서, 여기서 설명되는 포인터 어레이 및 고유 패턴 어레이/테이블은 별도의 저장 유닛(도 9 및 10을 참조로 설명되는 메모리 등)에서 실행될 수도 있고 혹은 동일한 저장 유닛(도 9 및 10을 참조로 설명되는 메모리 등) 내의 영역으로서 실행될 수도 있다.
도 3은 일 실시예에 따른 파이프라인식 압축 해제기의 블록도를 도시하고 있다. 도 3, 5 및 7에서, R1, R2 및 R3는 파이프라인 단계들 사이에 전달되는 데이터를 일시 저장하는데 이용될 수 있는 레지스터 혹은 선입선출(FIFO) 버퍼를 가리킨다. 도 4는 일 실시예에 따른 도 3의 파이프라인식 압축 해제기로의 데이터 플로우를 나타내고 있다.
도 3을 참조하면, 압축 구성은 "고유 패턴" 테이블(302)로의 간접 액세스를 이용한다. 이러한 간접 액세스는 코드를 저장하는 메모리로부터의 인스트럭션을 페치하는데 필요한 시간을 증가시킨다. 고유 패턴 어레이(302)로부터의 인스트럭션을 페치하기 이전을 살펴보면, 포인터는 포인터 어레이(304)로부터 페치된다. 2개의 어레이(302, 304)로부터의 페치 시간이 프로세서 사이클 타임 이내(즉, 1 프로세서 사이클 이하)로 맞출 수 있을 정도로 작지 않다면, 프로세서 성능에 영향을 미칠 수 있다. 이 시간이 확실하게 프로세서 사이클 타임 이내가 되도록, 압축된 ROM은 고정 크기의 코드 인스트럭션을 이용할 수도 있고, 및/또는 파이프라인식이 될 수도 있다. 도 3은 2 단계로 파이프라인된 압축 해제기를 나타낸다. 제 1 파이프라인 단계는 포인터 어레이(304)를 포함하고 있고, 제 2 파이프라인 단계는 고유 패턴 테이블/어레이(302)를 포함하고 있다.
실행시에, 압축된 ROM에 'addr' 어드레스의 시퀀스가 제공된다. 도 3의 파이프라인 압축 해제기에서, 어드레스는 먼저 포인터 어레이(304)에 제공된다. 다음 스테이지에서, 고유 패턴 어레이(302)에 액세스하는 포인터를 생성하고, 동시에 새로운 'addr'가 사이클당 1워드의 스루풋으로 포인터 어레이(304)에 제공된다. 이 파이프라인식 구성은 새로운 'addr'의 시퀀스가 시작될 때마다 1사이클의 '버블(bubble)'을 발생시킨다. 이 '버블'은 파이프라인이 재시작될 때마다 발생된다. 예컨대, 이는 임베디드 코드 플로우의 시작시에, 혹은 점프시에 발생된다. 일반적으로, '버블'은 파이프라인 단계(버블을 포함하고 있는 것)가 어떤 유용한 작업도 수행하고 있지 않다는 것을 나타내는 비유적인 표현이다.
도 4를 참조하면, 도 3의 파이프라인식 압축 해제기로의 데이터 플로우가 도시되어 있다. 제 1 사이클(사이클 1)에서, 포인터 어레이(304)의 입력은 제 1 인스트럭션 어드레스(Addr1)을 포함한다. 제 2 사이클(사이클 2)에서, 제 2 인스트럭션 어드레스(Addr2)가 포인터 어레이(304)에 제공되고, 제 1 포인터(포인터 1)가 고유 패턴 어레이(302)에 제공된다. 제 1 사이클에서 압축 해제기가 고유 패턴 어레이에 포인터를 제공할 수 없기 때문에 R2에서 버블이 발생한다.
도 5는 일 실시예에 따른 파이프라인식 압축 해제기의 블록도를 나타내고 있다. 도 5의 실시예에서는, 제 2 어드레스(Addr2)가 포인터 어레이(504)에 제공되는 것과 동시에 고유 패턴 어레이(502)에 제 1 포인터(포인터 1)를 직접(예컨대, 포인터 어레이(504)를 거치지 않고) 제공함으로써, 도 3~4를 참조로 설명된 R1에서의 버블을 방지한다. 도시된 바와 같이 멀티플렉서는, R2를 통해서 제 1 파이프라인에 전송하기 위해서, 제 1 포인터 혹은 포인터 어레이(504)의 출력을 선택할 수 있다. 따라서, 새로운 플로우의 제 1 사이클 동안 고유 패턴 어레이(502)로부터 제 1 인스트럭션이 직접 페치되고, 제 2 인스트럭션의 어드레스('addr')는 파이프라인을 '프라임'하는데 이용된다.
도 6은, 예컨대, 제 1 포인터가 고유 패턴 어레이에 직접 제공될 때의 도 5의 파이프라인식 압축 해제기로의 데이터 플로우를 나타낸다. 도 4와 비교해 보면, 제 1 사이클(사이클 1)의 버블이 제거되었다는 점에 주의한다. 제 1 사이클 동안, 포인터 어레이(504)의 입력은 제 2 인스트럭션 어드레스를 포함하고, 고유 패턴 어레이(502)의 입력은 제 1 인스트럭션에 대한 포인터를 포함한다. 제 2 사이클(사이클 2)에서, 포인터 어레이(504)에는 제 3 인스트럭션 어드레스가 제공되고, 고유 패턴 어레이(502)에는 제 2 포인터가 제공된다. 이 예에서, 압축 해제기는 제 1 사이클 동안 고유 패턴 어레이에 대한 포인터를 제공해서, 버블을 제거할 수 있다.
도 7은 일 실시예에 따른 파이프라인식 압축 해제기의 블록도이다. 도 5의 구성은 추가 어드레스 비트(및 로직)의 버스 와이어링을 피하는 방식으로 도 7에서는 개선되어 있다. 제 1 포인터는 대신 유도 로직(702)에 의해서 제 2 인스트럭션 어드레스('addr')로부터 유도된다. 일 실시예에서, '유도 로직'은 'addr'에서 비트의 서브셋을 선택함으로써 제 1 포인터를 생성할 수 있으므로, 적어도 하나의 실시예에서 유도 로직은 선택 비트를 멀티플렉서로 와이어링함으로써 간단하게 구현될 수 있다.
일 실시예에서, 고유 패턴 어레이 내의 패턴의 위치를 재배열함으로써, 포인터 어레이에 저장되는 값(포인터의 값)을 수정한다. 설명을 위해서 인스트럭션 "ADD R, R"은 임베디드 코드 플로우의 제 1 인스트럭션이라고 가정한다. 이 인스트럭션 패턴을, 인덱스가 제 2 인스트럭션 어드레스(Addr2)의 서브셋인 위치에서, 고유 패턴 어레이에 저장할 수 있으므로 그 결과 제 1 포인터를 제 2 어드레스로부터 쉽게 유도될 수 있다. 예컨대, Addr1=000100이고 Addr2=000101이라고 가정하면, "ADD R, R" 인스트럭션은 고유 패턴 어레이 내의 위치 0101에 저장될 수 있고, 그 결과 자신의 어드레스는 Addr2의 하위 4비트로부터 직접 유도될 수 있다. 플로우 개시시에, Addr2는 Rl에 제공될 것이고, 하위 4 비트(0101)는 R2에 제공될 것이며, 고유 패턴 어레이로부터 제 1 인스트럭션을 직접 페치한다.
또한, "ADD R, R" 인스트럭션을 다른 플로우가 공유할 수 있다고 상정할 수 있으며, 이 경우 그 포인터 데이터를 독립시키도록 고유 패턴 어레이 내에서 복제될 필요가 있으므로, 이러한 실시예에서는 (성능 향상을 위해서) 일부 압축를 트레이드할 수 있다. 그러나, 이러한 복제는 플로우 개시시에 (극히 일부의) 서로 다른 인스트럭션에 대해서만 발생한다. 아울러, 가장 적게 실행되는 플로우에서의 버블은 남기고, 가장 자주 실행되는 플로우만을 선택해서 최적화할 수 있도록 프로파일링이 사용될 수 있다.
도 8은 일 실시예에 따른, 임베디드 코드를 강화하는 방법(800)의 블록도를 나타낸다. 방법(800)의 동작은 예컨대 도 1~7 및/또는 도 9~11을 참조로 설명되는 하나 이상의 구성 요소에 의해 수행될 수 있다.
도 8을 참조하면, 동작 802에서, 압축된 임베디드 코드 구성이 결정되어서(상술한 바와 같이), 예컨대, P 및 U 비트로 각각 인덱스된 포인터 어레이 및 고유 패턴 어레이를 생성한다. 동작 804에서, 임베디드 코드 어드레스(addr)의 세트 S가 식별되고, 이는 (예컨대, 중요한) 플로우의 제 2 인스트럭션이다. 또한, 임베디드 코드는 다수의 플로우를 포함할 수 있다. 각각의 플로우는 인스트럭션의 시퀀스를 포함하고 있다. 이들 인스트럭션 각각은 addr1, addr2, addr3, addrN와 같은 어드레스와 관련되어 있다. addr2는 플로우의 제 2 인스트럭션의 어드레스이다. 따라서, 동작 804에서는 각각의 플로우의 제 2 인스트럭션에 대응하는 어드레스의 세트를 식별한다. 그러므로, 코드가 10개의 중요한 플로우 혹은 관심의 플로우를 갖고 있다면, 10개의 어드레스를 가진 세트를 가질 것이고, 각각의 어드레스는 각각의 플로우에서 제 2 인스트럭션의 어드레스가 될 것이다. 동작 806에서, S 마다, 대응하는 인스트럭션 패턴이 고유 패턴 어레이에 추가되어서, 예컨대, 패턴 인덱스가 제 2 인스트럭션 어드레스로부터 쉽게 유도될 수 있다. 일 실시예에서, 패턴 인덱스(U개의 비트로 이루어진)가 플로우의 제 2 어드레스(Addr2)의 P 비트의 서브셋에 대응하는 위치에, 패턴을 위치시킬 수 있다.
따라서, 일부 실시예에서, (1) 플로우에서의 제 1 인스트럭션에 대한 패턴 인덱스를 직접 제공해서 파이프라인 버블을 제거함으로써, (2) 인스트럭션 어드레스로부터 패턴 인덱스를 유도함으로써, 및/또는 (3) 고유 패턴 어레이의 패턴의 위치를 재설정해서 인스트럭션 어드레스로부터 패턴 인덱스를 유도하는 로직을 간략화함으로써, 임베디드 압축 코드 플로우로부터 버블을 제거하여 속도를 높이고 및/또는 비용을 절감시킨다.
일 실시예에서, (예컨대, 도 1~8을 참조로) 여기 설명된 기법을 선택적으로 적용함으로써 성능과 압축율을 트레이드할 수 있다. 예컨대, 이 기법은, 초기 파이프라인 '버블' 지연에 매우 민감한, 중요한, 짧은 임베디드 인스트럭션 플로우로 한정될 수 있다. 또한, 한번의 추가 사이클에 덜 민감한 비교적 긴, 드문 플로우는 이러한 기법을 이용하지 않고 수행될 수 있다. 또한, 임베디드 코드 링크 단계에서, 임베디드 코드는 플로우의 시작시에 명백한 고유 인스트럭션의 수를 최소화하도록 재구성될 수 있으며, 따라서 압축율을 유지한다.
도 9는 컴퓨팅 시스템(900)의 실시예의 블록도를 나타낸다. 다양한 실시예에서, 시스템(900)의 하나 이상의 구성 요소가, 본 발명의 일부 실시예를 참조하면서 여기에서 설명되는 동작 중 하나 이상을 수행할 수 있는 다양한 전자 장치로 제공될 수 있다. 예컨대, 시스템(900)의 하나 이상의 구성 요소가 도 1~8 및 도 10~11을 참조로 설명된 동작을 수행하는데 이용될 수 있다. 또한, (예컨대, 도 9 및/또는 도 10을 참조로) 여기 설명된 다양한 저장 장치가 데이터(인스트럭션을 포함), 연산 결과 등을 저장하는데 이용될 수 있다. 일 실시예에서, 도 9의 방법(900)의 동작과 관련된 데이터는 메모리 소자(도 9의 프로세서(902) 혹은 도 10의 프로세서(1002/1004)에 마련된, 메모리(912) 혹은 하나 이상의 캐시(예컨대, 일 실시예에서, LI, 중간 레벨 혹은 최종 레벨 캐시) 등)에 저장될 수 있다.
또한, 컴퓨팅 시스템(900)은 상호 접속 네트워크(혹은 버스)(904)를 통해서 통신하는 하나 이상의 중앙 처리 장치(CPU)(902) 혹은 프로세서를 포함할 수 있다. 프로세서(902)는 다목적 프로세서, 네트워크 프로세서(컴퓨터 네트워크(903)를 통해서 통신된 데이터를 처리함), 혹은 다른 타입의 프로세서(RISC(reduced instruction set computer) 프로세서 혹은 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 아울러, 프로세서(902)는 하나 혹은 복수의 코어 설계를 가질 수 있다. 복수의 코어 설계를 가진 프로세서(902)는 서로 다른 타입의 프로세서 코어를 동일한 집적 회로(IC) 다이에 집적시킬 수 있다. 또한, 복수의 코어 설계를 가진 프로세서(902)는 동기식 혹은 비동기식 멀티프로세서로서 구현될 수 있다. 아울러, 프로세서(902)는 SIMD(Single Instruction, Multiple Data) 아키텍쳐를 이용할 수 있다. 또한, 도 1~8을 참조로 설명된 동작은 시스템(900)의 하나 이상의 구성 요소에 의해서 수행될 수 있다. 또한, 도 9에 도시된 바와 같이, 하나 이상의 프로세서(902)는 (임베디드) 로직(990)을 포함할 수 있으며, 이는 도 1~8을 참조로 설명된 압축 해제기와 동일 혹은 유사한 것이 될 수 있다. 그러나, 본 발명의 다른 실시예에서는 다른 회로, 로직 유닛 혹은 소자가 도 9의 시스템(900) 내에 존재할 수 있다.
칩셋(906)은 상호 접속 네트워크(904)와도 통신할 수 있다. 칩셋(906)은 MCH(memory control hub)(908)을 포함할 수 있다. MCH(908)는 메모리(912)와 통신하는 메모리 제어부(910)를 포함할 수 있다. 메모리(912)는, 컴퓨팅 시스템(900)에 포함된 CPU(902) 또는 임의의 다른 소자에 의해 실행되는 인스트럭션의 시퀀스를 포함한, 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(912)는 RAM, DRAM, 동기식 DRAM(SDRAM), 고정식 RAM (SRAM) 혹은 다른 타입의 저장 장치와 같은 휘발성 저장(혹은 메모리) 소자를 하나 이상 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리가 이용될 수도 있다. 다수의 CPU 및/또는 다수의 시스템 메모리와 같은 추가적인 소자가 상호 접속 네트워크(904)를 통해서 통신할 수 있다.
MCH(908)는 디스플레이(916)와 통신하는 그래픽 인터페이스(914)를 포함할 수도 있다. 디스플레이(916)는 여기서 설명된 브라우니언 브리지(Brownian Bridge)와 관련된 연산 결과를 사용자에게 보여주는데 이용될 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(914)는 디스플레이(916)와 통신할 수 있다. 본 발명의 일 실시예에서, 디스플레이(916)는, 예컨대 비디오 메모리 혹은 시스템 메모리와 같은 저장 장치에 저장된 이미지의 디지털 해석을 디스플레이(916)가 해석해서 표시하는 디스플레이 신호로 변환하는 신호 변환기를 통해서 그래픽 인터페이스(914)와 통신하는, 플랫 패널 디스플레이가 될 수 있다. 인터페이스(914)가 생성하는 디스플레이 신호는, 디스플레이(916)에 의해 해석되어서 이후에 표시되기 전에, 다양한 제어 장치를 통해서 전송될 수 있다.
MCH(908) 및 입출력 제어 허브(ICH)(920)는 허브 인터페이스(918)를 통해서 통신할 수 있다. ICH(920)는 컴퓨팅 시스템(900)과 통신하는 I/O 디바이스에 인터페이스를 제공할 수 있다. ICH(920)는, PCI(peripheral component interconnect) 브리지, USB 제어부 혹은 다른 타입의 주변 브리지 혹은 제어부와 같은, 주변 브리지(혹은 제어부)(924)를 통해서 버스(922)와 통신할 수 있다. 브리지(924)는 CPU(902)와 주변 장치 사이에 데이터 경로를 제공할 수 있다. 다른 타입의 토폴로지가 이용될 수도 있다. 또한, 다수의 버스는, 예컨대 다수의 브리지 혹은 제어부를 통해서 ICH(920)와 통신할 수 있다. 아울러, 본 발명의 다양한 실시예에서, ICH(920)와 통신하는 다른 주변 기기는 IDE(integrated drive electronics) 혹은 SCSI(small computer system interface) 하드 드라이브, USB 포트, 키보드, 마우스, 병렬 포트, 직렬 포트, 플로피 디스크 드라이브, 디지털 출력 지원부(예컨대, DVI(digital video interface)) 혹은 다른 장치를 포함할 수 있다.
버스(922)는, 컴퓨터 네트워크(903)와 통신할 수 있는 오디오 장치(926), 하나 이상의 디스크 드라이브(928) 및 네트워크 인터페이스 장치(930)와 통신할 수 있다. 일 실시예에서, 장치(930)은 무선 통신 가능한 NIC가 될 수 있다. 다른 장치는 버스(922)를 통해서 통신할 수 있다. 또한, 다양한 구성 요소(네트워크 인터페이스 장치(930)와 같은)는 본 발명의 일부 실시예에서의 MCH(908)와 통신할 수 있다. 나아가, 프로세서(902)와 MCH(908)가 결합되어서 하나의 칩을 형성해도 된다. 또한, 본 발명의 다른 실시예에서 그래픽 인터페이스(914)는 MCH(908) 내에 포함될 수 있다.
또한, 컴퓨팅 시스템(900)은 휘발성 및/또는 비휘발성 메모리(혹은 저장 장치)를 포함할 수 있다. 예컨대, 비휘발성 메모리는, ROM, PROM, EPROM, EEPROM, 디스크 드라이브(예컨대, 928), 플로피 디스크, CD-ROM, DVD, 플래시 메모리, 광자기 디스크, 혹은 전자 데이터(예컨대, 인스트럭션을 포함함)를 저장할 수 있는 다른 타입의 비휘발성 머신-판독 가능 매체를 포함한다. 일 실시예에서, 시스템(900)의 구성 요소는 도 10을 참조로 설명되는 바와 같은 PtP(포인트-투-포인트) 구성으로 배치될 수 있다. 예컨대, 프로세서, 메모리 및/또는 입출력 장치는 다수의 포인트-투-포인트 인터페이스에 의해 상호 접속될 수 있다.
상세하게, 도 10은, 본 발명의 일 실시예에 따라서 포인트-투-포인트(PtP) 구성으로 배치된 컴퓨팅 시스템(1000)을 나타내고 있다. 구체적으로, 도 10은 프로세서, 메모리 및 입출력 장치가 다수의 포인트-투-포인트 인터페이스에 의해 상호 접속된 시스템을 나타내고 있다. 도 1~9 및 도 11을 참조로 설명된 동작은 시스템(1000)의 하나 이상의 구성 요소에 의해 수행될 수 있다.
도 10에 도시된 바와 같이, 시스템(1000)은 다수의 프로세서를 포함할 수 있지만, 간결하게 하기 위해서 그 중 2개의 프로세서(1002, 1004)만이 도시되어 있다. 프로세서(1002, 1004)는, 메모리(1010, 1012)와 연결된 로컬 메모리 제어부 허브(MCH)(1006, 1008)를 각각 포함할 수 있다. 메모리(1010 및/또는 1012)는 도 9의 메모리(912)를 참조로 설명된 것과 같은 다양한 데이터를 저장할 수 있다.
프로세서(1002, 1004)는 도 9의 프로세서(902)를 참조로 설명한 것과 같은 임의의 적절한 프로세서가 될 수 있다. 프로세서(1002, 1004)는 각각 PtP 인터페이스 회로(1016, 1018)를 이용해서 포인트-투-포인트 인터페이스(1014)를 통해서 데이터를 주고 받을 수 있다. 프로세서(1002, 1004)는 각각 포인트-투-포인트 인터페이스 회로(1026, 1028, 1030, 1032)를 이용해서 개개의 PtP 인터페이스(1022, 1024)를 통해서 칩셋(1020)과 데이터를 주고 받을 수 있다. 칩셋(1020)은 또한 PtP 인터페이스 회로(1037)를 이용해서, 고성능 그래픽 인터페이스(1036)을 통해서 고성능 그래픽 회로(1034)와 데이터를 주고 받을 수 있다.
본 발명의 적어도 하나의 실시예는 프로세서(1002, 1004)를 이용해서 제공될 수 있다. 예컨대, 도 10에 도시된 바와 같이, 프로세서(1002, 1004) 중 하나 이상은 (임베디드) 로직(990)을 포함할 수 있으며, 이 로직은 도 1~8을 참조로 설명된 압축 해제기와 동일 혹은 유사한 것일 수 있다. 그러나, 본 발명의 도 10의 시스템(1000) 내의 다른 회로, 로직 유닛 혹은 소자 내에 있을 수도 있다. 또한, 본 발명의 다른 실시예는 도 10에 도시된 다수의 회로, 로직 유닛 혹은 소자에 분산될 수도 있다.
칩셋(1020)은 PtP 인터페이스 회로(1041)를 이용해서 버스(1040)에 연결될 수 있다. 버스(1040)에는 버스 브리지(1042) 및 I/O 소자(1043)와 같은 하나 이상의 소자가 연결될 수 있다. 버스(1044)를 통해서, 버스 브리지(1043)는 키보드/마우스(1045), 도 10을 참조로 설명된 네트워크 인터페이스 장치(1030)(컴퓨터 네트워크(903)에 연결될 수 있는 모뎀 혹은 네트워크 인터페이스 카드(NIC) 등), 오디오 I/O 장치 및/또는 데이터 저장 장치(1048)와 같은 다른 소자에 연결될 수 있다. 데이터 저장 장치(1048)는 프로세서(1002 및/또는 1004)에 의해 실행될 수 있는 코드(1049)를 저장할 수 있다.
도 11을 참조해서, 하나 이상의 실시예에 따른, 무선 로컬 에어리어 혹은 셀룰러 네트워크 통신 시스템(1100)의 블록도가 설명될 것이다. 도 11에 도시된 통신 시스템(1100)에서, 무선 장치(1110)는, 안테나(1118) 및 (예컨대, 기저대 및 MAC(media access control) 프로세싱 기능을 제공하는) 프로세서와 같은 로직(1114)에 연결된 무선 송수신기(1112)를 포함할 수 있다. 일부 실시예에서, 여기 설명되는 컴퓨팅 시스템 중 하나 이상은, 무선 장치(1110)을 참조로 설명된 구성 요소 중 하나 이상을 포함할 수 있다. 또한, 컴퓨팅 장치(1102)는 도 1~10을 참조로 여기서 설명되는 시스템/장치의 하나 이상의 구성 요소를 포함할 수 있다.
일부 실시예에서, 무선 장치(1110)는, 셀룰러 폰 통신 모듈을 포함하고 있는 모바일 개인용 컴퓨터 혹은 PDA 등과 같은, 셀룰러 폰 혹은 정보 처리 시스템이 될 수 있다. 일 실시예에서의 로직(1114)는 하나의 프로세서를 포함할 수도 있고, 혹은 이와 달리 기저대 프로세서와 애플리케이션 프로세서를 포함할 수도 있다(예컨대, 도 11을 참조로 설명된 각각의 프로세서가 하나 이상의 프로세서 코어를 포함할 수 있고, 혹은 도 1~10을 참조로 설명된 프로세서와 동일한 혹은 유사한 프로세서가 될 수 있는 경우에). 로직(1114)은 메모리(1116)에 연결되어 있으며, 이 메모리(1116)는 DRAM과 같은 휘발성 메모리, 플래시 메모리와 같은 비휘발성 메모리를 포함할 수도 있고, 하드 디스크 드라이브와 같은 다른 타입의 저장 장치를 포함할 수도 있다. 메모리(1116) 중 일부 혹은 전체가 로직(1114)과 같은 집적 회로에 포함될 수도 있고, 메모리(1116) 중 일부 혹은 전체가 예컨대, 로직(1114)의 집적 회로 외부에 있는 하드 디스크 드라이브와 같은 집적 회로 혹은 다른 매체에 배치될 수도 있다.
무선 장치(1110)는 무선 통신 링크를 통해서 액세스 포인트(1122)와 통신할 수 있고, 여기서 액세스 포인트(1122)는 안테나(1120), 송수신기(1124), 프로세서(1126) 및 메모리(1128) 중 하나 이상을 포함할 수 있다. 도 11에 도시된 바와 같이, 무선 장치(1110) 및/또는 액세스 포인트(1122) 중 하나 이상은, (임베디드) 로직(990)을 포함할 수 있고, 이는 도 1~10을 참조로 설명한 압축 해제기와 동일한 혹은 유사한 것일 수 있다. 일 실시예에서 액세스 포인트(1122)는 셀룰러 폰 네트워크의 기지국이 될 수도 있고, 다른 실시예에서 액세스 포인트(1122)는 무선 로컬 혹은 퍼스널 에어리어 네트워크의 액세스 포인트 혹은 무선 라우터가 될 수 있다. 일 실시예에서, 액세스 포인트(1122)(및 선택적으로는 무선 장치(1110))는 2개 이상의 안테나를 포함해서, 예컨대, SDMA(spatial division multiple access) 시스템 혹은 다중 입력 다중 출력(MIMO) 시스템을 제공할 수 있다. 액세스 포인트(1122)는 네트워크(903)와 연결될 수 있으며, 그 결과 무선 장치(1110)는 무선 통신 링크를 통해서 액세스 포인트(1122)와 통신함으로써 네트워크(903) 및 이 네트워크(903)에 연결된 장치와 통신할 수 있다. 네트워크(903)는 전화 네트워크 혹은 인터넷과 같은 공공 네트워크를 포함할 수도 있고, 혹은 이와 달리, 네트워크(903)는 인트라넷과 같은 개인용 네트워크를 포함할 수도 있으며, 또는 공공 네트워크와 개인용 네트워크의 조합을 포함할 수도 있다. 무선 장치(1110)와 액세스 포인트(1122) 사이의 통신은 무선 LAN(WLAN)을 통해서 구현될 수 있다. 일 실시예에서, 무선 장치(1110)와 액세스 포인트(1122) 사이의 통신은 3세대 파트너쉽 프로젝트(3GPP 또는 3G) 표준을 따르는 셀룰러 통신 네트워크를 통해서 적어도 부분적으로 구현될 수 있다. 일부 실시예에서, 안테나(1118)는 무선 센서 네트워크 혹은 메쉬 네트워크에서 이용될 수 있다.
본 발명의 다양한 실시예에서, 예컨대, 도 1~11을 참조로 여기서 설명된 동작은 하드웨어(예컨대 로직 회로), 소프트웨어(예컨대, 여기서 설명된 프로세서와 같은 프로세서의 동작을 제어하는 마이크로 코드를 포함함), 펌웨어 혹은 이들의 조합으로서 구현될 수 있으며, 이는 예컨대, 여기서 설명된 동작을 수행하도록 컴퓨터(예컨대 컴퓨팅 장치의 프로세서 혹은 다른 로직)를 프로그래밍할 때 이용되는, 인스트럭션(혹은 소프트웨어 프로시져)이 저장되어 있는 유형의(tangible) 머신 판독 가능 매체 혹은 컴퓨터 판독 가능 매체와 같은 컴퓨터 프로그램 제품으로서 제공될 수 있다. 머신-판독 가능 매체는 여기 설명된 저장 장치를 포함할 수 있다.
또한, 이러한 유형의 컴퓨터-판독 가능 매체는 컴퓨터 프로그램 제품으로서 다운로드 받을 수 있고, 이 때 프로그램은, 통신 링크(예컨대, 버스, 모뎀 혹은 네트워크 접속)을 통해서 전파 매체 내의 데이터 신호의 방식으로서, 원격의 컴퓨터(예컨대, 서버)로부터 요청 컴퓨터(예컨대 클라이언트)로 전송될 수 있다.
상세한 설명에서 '일 실시예'를 참조한다는 것은, 그 실시예와 관련되어서 설명되는 특정한 특성, 구조 혹은 특징이 구현에 적어도 일부 포함될 수 있다는 것을 의미한다. 상세한 설명 전반에 기재한 '일 실시예에서'라는 표현은 동일한 실시예를 가리킬 수도 있고 그렇지 않을 수도 있다.
또한, 상세한 설명 및 청구항에서 '연결된다(coupled)', '접속된다(connected)' 및 이들의 파생어가 사용될 수 있다. 본 발명의 일부 실시예에서 '접속된다'는 표현은 2개 이상의 구성 요소가 서로 직접 물리적으로 혹은 전기적으로 접촉하고 있다는 것을 나타낼 때 사용될 수 있다. '연결된다'는 표현은 2개 이상의 구성 요소가 직접 물리적으로 혹은 전기적으로 접촉하고 있다는 것을 의미할 수 있다. 그러나, '연결된다'는 표현이 2개 이상의 구성 요소가 서로 직접 접촉하고 있지 않고, 서로 협력(cooperate) 혹은 인터렉트하고 있다는 것을 의미할 수도 있다.
따라서, 본 발명의 실시예를 구조적인 특성 및/또는 방법적인 동작에 특정된 언어로 설명했지만, 청구 대상은 설명한 특정한 특성 또는 동작으로 한정되지 않을 수도 있다는 것을 이해할 것이다. 오히려, 특정한 특성 또는 동작은 청구된 청구 대상을 실시하는 표본의 형태로 설명된 것이다.

Claims (30)

  1. 임베디드 코드(embedded code) 인스트럭션 어드레스에 대응하는 포인터를 저장하는 제 1 저장 유닛과,
    상기 포인터에 대응하는 고유 임베디드 코드 인스트럭션을 저장하는 제 2 저장 유닛과,
    상기 저장된 임베디드 코드 인스트럭션을 실행하는 프로세서
    를 포함하고,
    상기 제 1 저장 유닛은 상기 임베디드 코드 인스트럭션 어드레스를 수신한 것에 응답해서 상기 제 2 저장 유닛에 상기 포인터를 전송하고,
    상기 제 2 저장 유닛은 상기 포인터를 수신한 것에 응답해서 상기 고유 임베디드 코드 인스트럭션을 출력하는
    장치.
  2. 제 1 항에 있어서,
    상기 제 2 저장 유닛은, 상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하는
    장치.
  3. 제 2 항에 있어서,
    상기 제 2 저장 유닛은, 상기 제 1 저장 유닛으로부터 상기 제 2 포인터를 수신하고, 상기 제 1 저장 유닛을 거치지 않고 상기 제 1 포인터를 수신하는
    장치.
  4. 제 1 항에 있어서,
    상기 제 2 저장 유닛은, 상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하되, 상기 제 1 포인터는 상기 제 2 임베디드 코드 인스트럭션 어드레스로부터 유도된 값인
    장치.
  5. 제 1 항에 있어서,
    상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 이후 상기 프로세서의 후속하는 사이클 각각 동안, 적어도 하나의 포인터가 상기 제 1 저장 유닛으로부터 페치(fetch)되고, 적어도 하나의 상기 고유 임베디드 코드 인스트럭션이 상기 제 2 저장 유닛으로부터 페치되는
    장치.
  6. 제 1 항에 있어서,
    상기 제 1 저장 유닛으로부터 상기 포인터를 페치하고, 상기 제 2 저장 유닛으로부터 상기 고유 임베디드 코드 인스트럭션을 페치하는 시간은, 상기 프로세서의 1 사이클 이하인
    장치.
  7. 제 1 항에 있어서,
    상기 고유 임베디드 코드 인스트럭션은, 임베디드 코드 워드를 구성하는, 상기 제 2 저장 유닛에 저장된 고유 비트 패턴의 세트를 포함하는
    장치.
  8. 제 1 항에 있어서,
    판독 전용 메모리를 더 포함하고,
    상기 메모리는 상기 제 1 저장 유닛 혹은 상기 제 2 저장 유닛을 포함하는
    장치.
  9. 제 1 항에 있어서,
    상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에 연결된 적어도 하나의 버퍼 혹은 레지스터를 더 포함하는
    장치.
  10. 제 1 항에 있어서,
    상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에 연결된 멀티플렉서를 더 포함하는
    장치.
  11. 제 1 항에 있어서,
    상기 프로세서, 상기 제 1 저장 유닛 또는 상기 제 2 저장 유닛 중 하나 이상은 동일한 집적 회로 다이 상에 있는
    장치.
  12. 제 1 항에 있어서,
    상기 프로세서는 복수의 프로세서 코어를 포함하는 장치.
  13. 제 1 저장 유닛에 임베디드 코드 인스트럭션 어드레스에 대응하는 포인터를 저장하는 단계와,
    제 2 저장 유닛에 상기 포인터에 대응하는 고유 임베디드 코드 인스트럭션을 저장하는 단계
    를 포함하고,
    상기 제 1 저장 유닛은 상기 임베디드 코드 인스트럭션 어드레스를 수신한 것에 응답해서 상기 제 2 저장 유닛에 상기 포인터를 전송하고,
    상기 제 2 저장 유닛은 상기 포인터를 수신한 것에 응답해서 상기 고유 임베디드 코드 인스트럭션을 출력하는
    방법.
  14. 제 13 항에 있어서,
    상기 제 2 저장 유닛이, 상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하는 단계를 더 포함하는
    방법.
  15. 제 14 항에 있어서,
    상기 제 2 저장 유닛이, 상기 제 1 저장 유닛으로부터 상기 제 2 포인터를 수신하고, 상기 제 1 저장 유닛을 거치지 않고 상기 제 1 포인터를 수신하는 단계를 더 포함하는
    방법.
  16. 제 13 항에 있어서,
    상기 제 2 저장 유닛이, 상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하는 단계를 더 포함하고,
    상기 제 1 포인터는 상기 제 2 임베디드 코드 인스트럭션 어드레스로부터 유도된 값인
    방법.
  17. 제 13 항에 있어서,
    임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 이후 상기 프로세서의 후속하는 사이클 각각 동안, 적어도 하나의 포인터를 상기 제 1 저장 유닛으로부터 페치하고, 적어도 하나의 고유 임베디드 코드 인스트럭션을 상기 제 2 저장 유닛으로부터 페치하는 단계를 더 포함하는
    방법.
  18. 포인터 어레이 및 고유 패턴 어레이를 저장하는 메모리 - 상기 포인터 어레이는 임베디드 코드 인스트럭션 어드레스에 대응하는 포인터를 저장하고, 상기 고유 패턴 어레이는 상기 포인터에 대응하는 고유 임베디드 코드 인스트럭션을 저장함 - 와,
    상기 저장된 임베디드 코드 인스트럭션을 실행하는 프로세서
    를 포함하고,
    상기 포인터 어레이는 상기 임베디드 코드 인스트럭션 어드레스를 수신한 것에 응답해서 상기 고유 패턴 어레이에 상기 포인터를 전송하고, 상기 고유 패턴 어레이는 상기 포인터를 수신한 것에 응답해서 상기 고유 임베디드 코드 인스트럭션을 출력하는
    컴퓨팅 시스템.
  19. 제 18 항에 있어서,
    상기 고유 패턴 어레이는 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하는
    컴퓨팅 시스템.
  20. 제 19 항에 있어서,
    상기 고유 패턴 어레이는 상기 포인터 어레이로부터 상기 제 2 포인터를 수신하고, 상기 포인터 어레이를 거치지 않고 상기 제 1 포인터를 수신하는
    컴퓨팅 시스템.
  21. 제 18 항에 있어서,
    상기 고유 패턴 어레이는 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하되, 상기 제 1 포인터는 상기 제 2 임베디드 코드 인스트럭션 어드레스로부터 유도된 값인
    컴퓨팅 시스템.
  22. 제 18 항에 있어서,
    상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 이후 상기 프로세서의 후속하는 사이클 각각 동안, 적어도 하나의 포인터가 상기 포인터 어레이로부터 페치되고, 적어도 하나의 상기 고유 임베디드 코드 인스트럭션이 상기 고유 패턴 어레이로부터 페치되는
    컴퓨팅 시스템.
  23. 제 18 항에 있어서,
    상기 포인터 어레이로부터 상기 포인터를 페치하고 상기 고유 패턴 어레이로부터 상기 고유 임베디드 코드 인스트럭션을 페치하는 시간은, 상기 프로세서의 1 사이클 이하인
    컴퓨팅 시스템.
  24. 제 18 항에 있어서,
    상기 고유 임베디드 코드 인스트럭션은, 임베디드 코드 워드를 구성하는 상기 고유 패턴 어레이에 저장된 고유 비트 패턴의 세트를 포함하는
    컴퓨팅 시스템.
  25. 제 18 항에 있어서,
    상기 메모리는 판독 전용 메모리를 포함하는
    컴퓨팅 시스템.
  26. 하나 이상의 명령어를 포함하는 컴퓨터 판독 가능 매체로서,
    상기 명령어는 프로세서에서 실행될 때, 상기 프로세서로 하여금,
    제 1 저장 유닛에 임베디드 코드 인스트럭션 어드레스에 대응하는 포인터를 저장하는 것과,
    제 2 저장 유닛에 상기 포인터에 대응하는 고유 임베디드 코드 인스트럭션을 저장하는 것 중 하나 이상의 동작을 수행하도록 하고,
    상기 제 1 저장 유닛은 상기 임베디드 코드 인스트럭션 어드레스를 수신한 것에 응답해서 상기 제 2 저장 유닛에 상기 포인터를 전송하고,
    상기 제 2 저장 유닛은 상기 포인터를 수신한 것에 응답해서 상기 고유 임베디드 코드 인스트럭션을 출력하는
    컴퓨터 판독 가능 매체.
  27. 제 26 항에 있어서,
    상기 프로세서에서 실행될 때, 상기 프로세서로 하여금, 상기 제 2 저장 유닛에서, 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하도록 하는 하나 이상의 인스트럭션을 더 포함하는
    컴퓨터 판독 가능 매체.
  28. 제 27 항에 있어서,
    상기 프로세서에서 실행될 때, 상기 프로세서로 하여금, 상기 제 2 저장 유닛에서 상기 제 1 저장 유닛으로부터 상기 제 2 포인터를 수신하고, 상기 제 1 저장 유닛을 거치지 않고 상기 제 1 포인터를 수신하도록 하는 하나 이상의 인스트럭션을 더 포함하는
    컴퓨터 판독 가능 매체.
  29. 제 26 항에 있어서,
    상기 프로세서에서 실행될 때, 상기 프로세서로 하여금, 상기 제 2 저장 유닛에서, 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 동안, 제 2 임베디드 코드 인스트럭션 어드레스에 대응하는 제 2 포인터 이전에, 제 1 임베디드 코드 인스트럭션 어드레스에 대응하는 제 1 포인터를 수신하도록 하는 하나 이상의 인스트럭션을 더 포함하되,
    상기 제 1 포인터는 상기 제 2 임베디드 코드 인스트럭션 어드레스로부터 유도된 값인
    컴퓨터 판독 가능 매체.
  30. 제 26 항에 있어서,
    상기 프로세서에서 실행될 때, 상기 프로세서로 하여금, 상기 임베디드 코드 인스트럭션 어드레스의 새로운 시퀀스의 제 1 사이클 이후 상기 프로세서의 후속하는 사이클 각각 동안, 적어도 하나의 포인터를 상기 제 1 저장 유닛으로부터 페치하고, 적어도 하나의 상기 고유 임베디드 코드 인스트럭션을 상기 제 2 저장 유닛으로부터 페치하도록 하는 하나 이상의 인스트럭션을 더 포함하는
    컴퓨터 판독 가능 매체.
KR1020127033841A 2010-06-27 2011-06-27 압축 코드의 가속 실행 KR101468424B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/824,187 2010-06-27
US12/824,187 US20110320775A1 (en) 2010-06-27 2010-06-27 Accelerating execution of compressed code
PCT/US2011/041967 WO2012012112A2 (en) 2010-06-27 2011-06-27 Accelerating execution of compressed code

Publications (2)

Publication Number Publication Date
KR20130038886A true KR20130038886A (ko) 2013-04-18
KR101468424B1 KR101468424B1 (ko) 2014-12-03

Family

ID=45353683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127033841A KR101468424B1 (ko) 2010-06-27 2011-06-27 압축 코드의 가속 실행

Country Status (8)

Country Link
US (1) US20110320775A1 (ko)
EP (1) EP2585907B1 (ko)
JP (1) JP5662567B2 (ko)
KR (1) KR101468424B1 (ko)
CN (1) CN102934074B (ko)
AU (1) AU2011280088B2 (ko)
TW (1) TWI526929B (ko)
WO (1) WO2012012112A2 (ko)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6375833A (ja) * 1986-09-18 1988-04-06 Toshiba Corp 情報処理装置
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
JP3201716B2 (ja) * 1996-02-22 2001-08-27 シャープ株式会社 コンピュータ装置
KR100448289B1 (ko) * 1997-12-20 2004-11-16 주식회사 대우일렉트로닉스 스트링매칭모듈을갖는데이터압축시스템
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
JP2001142696A (ja) * 1999-11-15 2001-05-25 Matsushita Electric Ind Co Ltd マイクロプロセッサにおける命令供給装置および命令供給方法
US6484228B2 (en) * 2000-04-19 2002-11-19 Motorola, Inc. Method and apparatus for data compression and decompression for a data processor system
JP2003044273A (ja) * 2001-08-01 2003-02-14 Nec Corp データ処理装置及びデータ処理方法
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
JP3792633B2 (ja) * 2002-10-17 2006-07-05 株式会社ルネサステクノロジ マイクロコントローラ、及びマイクロコントローラ装置
US7715392B2 (en) * 2002-12-12 2010-05-11 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US20040128477A1 (en) * 2002-12-13 2004-07-01 Ip-First, Llc Early access to microcode ROM
US20040139298A1 (en) * 2003-01-09 2004-07-15 International Business Machines Corporation Method and apparatus for instruction compression and decompression in a cache memory
US8099587B2 (en) * 2005-07-20 2012-01-17 Intel Corporation Compressing and accessing a microcode ROM
US7334113B2 (en) * 2005-09-07 2008-02-19 National Chung Cheng University Method and system for processing an instruction set
US8219508B2 (en) * 2007-07-06 2012-07-10 Lsi Corporation Systems and methods for compressing state machine instructions using a two access indexing scheme

Also Published As

Publication number Publication date
US20110320775A1 (en) 2011-12-29
AU2011280088A1 (en) 2013-01-24
TWI526929B (zh) 2016-03-21
JP5662567B2 (ja) 2015-02-04
WO2012012112A3 (en) 2012-04-05
KR101468424B1 (ko) 2014-12-03
WO2012012112A2 (en) 2012-01-26
EP2585907A2 (en) 2013-05-01
TW201211886A (en) 2012-03-16
CN102934074A (zh) 2013-02-13
AU2011280088B2 (en) 2015-01-22
EP2585907B1 (en) 2018-05-16
CN102934074B (zh) 2016-07-13
JP2013528877A (ja) 2013-07-11
EP2585907A4 (en) 2016-05-25

Similar Documents

Publication Publication Date Title
US11385795B2 (en) Method and apparatus to enable individual non volatile memory express (NVMe) input/output (IO) queues on differing network addresses of an NVMe controller
JP5945291B2 (ja) デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置
US9477476B2 (en) Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
TWI727971B (zh) 使用具有多個搜尋引擎之加速器的資料壓縮
US20160124802A1 (en) Memory corruption detection
EP3278228B1 (en) Command-driven translation pre-fetch for memory management units
KR102574079B1 (ko) 메모리 로드-투-로드 융합
CN112256331B (zh) 虚拟机指令解析加速方法、装置和计算机存储介质
US8838861B2 (en) Methods and apparatuses for trace multicast across a bus structure, and related systems
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
KR101468424B1 (ko) 압축 코드의 가속 실행
CN113656331A (zh) 基于高低位的确定访问地址的方法和装置
WO2021061269A1 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
US10078601B2 (en) Approach for interfacing a pipeline with two or more interfaces in a processor
CN111506530A (zh) 中断管理系统及其管理方法
US10776139B2 (en) Simulation apparatus, simulation method, and computer readable medium
US11031075B2 (en) High bandwidth register file circuit with high port counts for reduced bitline delay
JP2015506517A (ja) 物理タグ付けされたデータキャッシュへのトラフィックをフィルタリングするための方法
US20160092232A1 (en) Propagating constant values using a computed constants table, and related apparatuses and methods

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee