KR20070116058A - 가변 길이 명령어에 대한 절전 방법 및 장치 - Google Patents

가변 길이 명령어에 대한 절전 방법 및 장치 Download PDF

Info

Publication number
KR20070116058A
KR20070116058A KR1020077022475A KR20077022475A KR20070116058A KR 20070116058 A KR20070116058 A KR 20070116058A KR 1020077022475 A KR1020077022475 A KR 1020077022475A KR 20077022475 A KR20077022475 A KR 20077022475A KR 20070116058 A KR20070116058 A KR 20070116058A
Authority
KR
South Korea
Prior art keywords
instruction
processor
length
bit
instructions
Prior art date
Application number
KR1020077022475A
Other languages
English (en)
Other versions
KR100942408B1 (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 KR20070116058A publication Critical patent/KR20070116058A/ko
Application granted granted Critical
Publication of KR100942408B1 publication Critical patent/KR100942408B1/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/38Concurrent instruction execution, e.g. pipeline or 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)
  • Vehicle Body Suspensions (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Containers And Plastic Fillers For Packaging (AREA)

Abstract

2개 이상 길이의 명령어를 가진, 가변 길이 명령어를 페치 및 실행할 수 있는 프로세스를 설명한다. 프로세서는 다수의 모드에서 동작한다. 모드 중 하나는 페치 및 실행될 수 있는 명령어를 더 긴 길이 명령어로 제한한다. 명령어 캐시는 명령어 캐시에 가변 길이 명령어 및 그 연관된 프리디코드 비트 필드를 저장하고 명령어 어드레스 및 태그 라인의 페치시의 프로세서 동작 모드 상태 정보를 저장하는데 사용된다. 프로세서 동작 모드 상태 정보는 프로세서 동작의 프로그램 특정 모드를 표시한다. 프로세서는 실행을 위해 명령어 캐시로부터 명령어를 페치한다. 명령어 페치 동작의 결과로서, 명령어 캐시는 페이시의 프로세서 상태에 기초하여 명령어 캐시의 프리디코드 비트 필드의 기록을 선택적으로 인에이블할 수도 있고 명령어 캐시에 저장된 프리디코드 비트 필드의 판독을 선택적으로 인에이블할 수도 있다.
프리디코더, 명령어, 명령어 캐시, 프로세서 동작 모드 상태 표시기

Description

가변 길이 명령어에 대한 절전 방법 및 장치{POWER SAVING METHODS AND APPARATUS FOR VARIABLE LENGTH INSTRUCTIONS}
배경기술
기술분야
본 발명은 다양한 길이를 가지는 명령어를 프로세싱하는 프로세서의 전력을 감소시키는 기술에 관한 것으로, 더 상세하게는, 명령어 캐시에서의 프리디코드 비트의 기록 및 판독을 선택적으로 인에이블 및 디스에이블하는데 유리한 기술에 관한 것이다.
관련배경
많은 프로세서는 통상적으로 가변 길이 명령어를 가진 명령어 세트를 지원한다. 예를 들어, 프로세서의 명령어 세트는 32-비트 명령어 및 16-비트 명령어로 구성될 수도 있다. 프로세서는 또한 명령어 캐시, 데이터 캐시, 및 시스템 메모리를 포함하는 멀티-레벨의 캐시로 이루어진 계층 메모리 구성을 가질 수도 있다. 프로세서가 짧은 지속시간 파이프라인 스테이지로 고속의 클록 속도로 동작하는 깊은 실행 파이프라인 (deep execution pipeline) 을 가지면, 프로세서는 후속하는 디코드 스테이지를 단순화하기 위해 명령어를 프리프로세싱하여, 파이프라인을 유선화 (streamline) 하는 프리디코드 스테이지를 가진다. 프리디코드 파이프라인 스테이지는 명령어 미스 (miss) 로 인해 페치 (fetch) 된 명령어를 부 분적으로 디코딩하도록 명령어 캐시 미스 중에 일반적으로 동작한다. 프리디코드 정보는 페치된 명령어와 함께 명령어 캐시에 기록된다.
가변 길이 명령어 프로세서에서, 미스로 인해 페치된 명령어의 길이는 다양할 수도 있다. 프리디코드 동작은 각 명령어에 대한 일 세트의 프리디코드 비트를 결정하고 명령어 및 프리디코드 비트는 프로세서의 동작 상태와 무관하게 명령어 캐시에 저장된다. 프로세서의 동작 상태로 인해 불필요할 수도 있는 프리디코드 비트의 기록 및 판독은 전력 손실의 원인이다.
발명의 개요
수개의 양태 중에서, 본 발명은 프리비트의 기록 및 판독을 선택적으로 인에이블함으로써 절전될 수 있다는 것을 인식한다. 본 발명의 제 1 실시형태는 제 1 길이 및 제 2 길이의 다양한 길이를 페치 및 실행하는 기술에 대한 필요가 있다는 것을 인식하며, 이때 제 2 길이는 제 1 길이보다 길다. 모드 상태 표시기를 동작하는 프로세서는 프로세서가 명령을 제 2 길이의 명령으로 제한하는 동작에 있다는 것을 표시한다. 프리디코더는 제 1 길이 및 제 2 길이의 명령어를 부분적으로 디코딩하고, 각 부분적으로 디코딩된 명령어에 대하 프리디코드 비트를 발생시킨다. 명령어 및 프리디코드 비트는 명령어 캐시의 캐시 라인에 저장된다. 기록 제어 로직은 프로세서 동작 모드 상태 표시기에 따라 캐시 라인에 프리디코드 비트를 기록하며, 모든 프리디코드 비트가 제 2 길이의 명령어에 대해 기록되는 것은 아니다. 캐시 라인에 연관된 태그는 명령어 어드레스 및 프로세서 상태 비트로 기록된다. 판독하는 경우, 페치 명령어 어드레스 및 프로세서 동작 모 드 표시기는 태그와 비교되고, 그 비교가 동일하면, 선택된 프리디코드 비트는 캐시 라인으로부터 판독되며, 캐시 라인에서 이용가능한 모든 프리디코드 비트가 제 2 길이의 명령어에 대해 판독되는 것은 아니다.
본 발명, 본 발명의 특징 및 장점을 더 완벽히 이해하려면, 다음의 발명의 상세한 설명 및 첨부도면으로부터 명확해질 것이다.
도면의 간단한 설명
도 1 은 본 발명의 실시형태가 유리하게 채용할 수도 있는 예시적인 무선 통신 시스템의 그래픽 도면이다.
도 2 는 본 발명에 따른 프로세서 복합체의 그래픽 도면이다.
도 3a 는 본 발명에 따른 16-비트 및 32-비트의 가변 길이 명령어를 함유한 예시적인 프로그램 세그먼트의 그래픽 도면이다.
도 3b 는 본 발명에 따라 도 3a 의 프로그램 세그먼트로부터의 명령어를 함유한 레벨 2 명령어 및 데이터 캐시 (L2 캐시) 로부터의 명령어 라인의 그래픽 도면이다.
도 3c 는 본 발명에 따라 도 3a 의 프로그램 세그먼트로부터의 명령어를 함유한 레벨 1 명령어 캐시 (L1 I캐시) 로부터의 명령어의 그래픽 도면이다.
도 4a 는 본 발명에 따라 32-비트 명령어만으로 제한된 프로세서 모드에서 동작하는 32-비트 명령어만을 함유한 예시적인 프로그램 세그먼트의 그래픽 도면이다.
도 4b 는 본 발명에 따라 도 4a 의 프로그램 세그먼트로부터의 명령어를 함 유한 L2 캐시로부터의 명령어 라인의 그래픽 도면이다.
도 4c 는 본 발명에 따라 도 4a 의 프로그램 세그먼트로부터의 명령어를 함유한 L1 I캐시로부터의 명령어 라인의 그래픽 도면이다.
도 5 는 L1 I캐시에 기록하고 L1 I캐시로부터 판독하는 경우에 절전하도록 본 발명에 따라 동작하는 프로세서 파이프라인 스테이지의 그래픽 도면이다.
도 6 은 본 발명에 따른 명령어 캐시 라인으로부터 프리디코드 정보를 기록 및 판독하는 경우에 절전하는데 요구되는 동작 단계의 흐름도이다.
발명의 상세한 설명
본 발명은 첨부 도면을 참조하여 더 상세히 설명하며, 본 발명의 수개의 실시형태를 도시한다. 그러나, 본 발명은 다양한 형태로 구현되고, 여기에 개시된 실시형태에 한정되는 것으로 해석되어서는 안 된다. 오히려, 이들 실시형태는 본 명세서가 완전하고 완벽하도록 제공되고, 당업자에게 본 발명의 범위를 충분히 전달할 것이다.
본 발명의 교시에 따라 동작을 수행하거나 동작되는 컴퓨터 프로그램 코드 또는 "프로그램 코드"는 C, C++, JAVA®, Smalltalk, JavaScript®, Visual Basic®, TSQL, Perl과 같은 높은 수준의 프로그래밍 언어 또는 다양한 다른 프로그래밍 언어로 기록될 수도 있다. 타겟 프로세서 아키텍쳐용 프로그램도 네이티브 어셈블러 언어로 직접 기록될 수도 있다. 네이티브 어셈블러 프로그램은 기계 수준 2진 명령어의 명령어 연상 표현을 사용한다. 여기에서 사용된 프로그램 코드 또는 컴퓨터 판독가능 매체는 포맷이 프로세서에 의해 이해가능한 목적 코드와 같은 기계 언어 코드를 지칭한다.
도 1 은 본 발명의 실시형태가 유리하게 채용될 수도 있는 예시적인 무선 통신 시스템 (100) 의 도면이다. 설명을 위해, 도 1 은 3 개의 원격 장치 (120, 130, 및 150) 및 2 개의 기지국 (140) 을 나타낸다. 통상의 무선 통신 시스템은 더 많은 원격 장치 및 기지국을 가질 수도 있다는 것을 인식할 것이다. 원격 장치 (120, 130 및 150) 는 본 발명에 따라 프로그램 코드를 실행하는 하드웨어 컴포넌트 (125A, 125B 및 125C) 를 각각 포함한다. 도 1 은 기지국 (140) 으로부터 원격 장치 (120, 130 및 150) 로의 포워드 링크 신호 (180) 및 원격 장치 (120, 130 및 150) 로부터 기지국 (140) 으로의 리버스 링크 신호 (190) 를 나타낸다.
도 1 에서, 원격 장치 (120) 는 휴대폰으로서 도시되고, 원격 장치 (130) 는 노트북으로 도시되며, 원격 장치 (150) 는 무선 로컬 루프 시스템의 고정 위치 원격 장치로 도시된다. 예를 들어, 원격 장치는 개인 휴대 통신 시스템 (PCS) 장치, 개인휴대용 정보단말기와 같은 휴대용 데이터 장치, 또는 미터 판독 장비와 같은 고정 위치 데이터 장치일 수도 있다. 도 1 이 본 발명의 교시에 따른 원격 장치를 도시하더라도, 본 발명은 이들 예시적인 장치에 한정되지 않는다. 본 발명은 명령어 캐시에 프리디코드 정보를 저장하는 가변 길이 명령어를 가진 파이프라인 프로세서를 이용하는 임의의 하드웨어 컴포넌트에 적절히 채용될 수도 있다.
도 2 는 본 발명의 실시형태가 유리하게 채용될 수도 있는 프로세서 복합체 (200) 의 도면이다. 프로세서 복합체 (200) 는 프로그램 코드를 실행하기 위한 하드웨어 컴포넌트 (125A-C) 에 적절히 채용될 수도 있다. 프로세서 복합체 (200) 는 상이한 길이의 명령어를 실행하는 프로세서 (210), 레벨 1 (L1) 데이터 캐시 (214), L1 명령어 캐시 (I캐시; 218), 프리디코더 (222), 레벨 2 명령어 및 데이터 캐시 (L2 캐시; 226), 및 시스템 메모리와의 인터페이스를 포함한다. 프로세서 복합체에 접속될 수도 있는 주변 디바이스는 본 발명의 설명의 명확화를 위해 도시되지 않았다. 프로세서 (210) 는 L1 데이터 캐시 (214), L1 I캐시 (218), 및 프리디코더 (222) 에 직접 결합된다. 프로세서 (210) 는 계층 방식으로 캐시로부터 명령어 및 데이터를 검색한다. 예를 들어, 프로세서 (210) 는 L1 I캐시 입력 (228) 측에 페치 어드레스 및 프로세서 동작 모드 상태를 발생시키고, 명령어를 페치하는데 요구될 수도 있는 다른 정보, 예를 들어 프로세스 식별 (PID) 신호를 제공하여 명령어를 페치한다. 프로세서 동작 모드 상태는 프로세서 동작의 프로그래머 특정 모드의 표시기이다.
프로세서의 명령어 세트는 다수의 길이 포맷으로 인코딩된 명령어를 포함하며, 긴 명령어는 보통 가변 길이 명령어 세트에서 이용가능한 가장 짧은 명령어 포맷 길이의 배수이다. 명령어의 길이에 따라 달라질 수도 있고 상이한 길이의 명령어에 인접할 수도 있는 복합 인코딩을 명령어가 가질 수도 있기 때문에, 페치된 명령어의 정렬 및 디코딩은 짧은 지속시간 클록 주기 내에 단일 프로세서 파이프라인 스테이지에서 할 수 있는 것 이상의 프로세싱을 요구할 수도 있다. 명령어 복합성의 레벨로 인해, 프로세서는 개별 명령어 정렬 파이프라인 스테이지를 포함할 수도 있고, 디코드 동작을 프리디코드 단계와 디코드 파이프라인 스테이지로 분할 할 수도 있다. 프리디코드 단계는 L1 I캐시 미스 프로세싱 동안에 프리디코드 동작함으로써 통상의 파이프라인 실행으로부터 적절히 은닉될 수도 있다. L1 I캐시 미스 프로세싱은 페치된 명령어가 L1 I캐시에서 발견되지 않고 메모리 계층의 높은 레벨로부터 페치되어야 하는 경우에 발생한다. 프리디코드 단계는 L1 명령어 캐시에 페치된 명령어와 함께 프리디코드 정보를 저장한다.
동작시에, 프로세서 (210) 는 L1 I캐시 (218) 에 액세스하여, 매치 메커니즘을 이용하여 어드레스된 명령어가 L1 I캐시에 존재하는지 여부를 결정한다. L1 I캐시 (218) 에서 페치된 명령어에 대한 매치가 발견되지 않으면, 미스가 발생한다. 미스 정보 (230) 는 프리디코더 (222) 에 전송되고, 프로세서 (210) 는 L2 캐시 (226) 에 액세스 요청 (232) 을 한다. 명령어가 L2 캐시 (226) 에 히트하면서, 원하는 명령어를 함유한 L2 캐시 라인은 포트A (234) 측에서 프리디코더 (222) 로 출력된다. 미스 프로세싱에서 프리디코드 스테이지 동안, 프리디코더 (222) 는 L2 캐시로부터 페치된 명령어를 부분적으로 디코딩하고, 명령어, 명령어와 연관된 프리디코드 비트, 및 출력 (238) 에 관한 태그 정보를 L1 I캐시 (218) 및 프로세서 (210) 에 제공한다.
프로세서 (210) 가 데이터를 페치할 필요가 있는 경우, 프로세서 (210) 는 L1 데이터 캐시 (214) 에 액세스하여, 매치 메커니즘을 이용하여 어드레스 데이터가 L1 데이터 캐시에 존재하는지 여부를 결정한다. L1 데이터 캐시 (214) 에서 페치된 데이터에 대한 매치가 발견되지 않으면, 미스가 발생하고 L2 캐시 (226) 는 다음으로 액세스된다. L1 캐시의 두 경우에, L1 명령어 또는 L1 데이터 캐시에서 각각 명령어 또는 데이터가 존재하는 것으로 발견되면, 명령어 및 데이터는 출력 (240 및 244) 측의 각각의 L1 캐시로부터 직접 판독된다.
도 3a 는 L2 캐시 (226) 및 L1 I캐시 (218) 를 포함하는 프로세서 복합체 (200) 의 메모리 계층에 적절히 저장될 수도 있는 예시적인 프로그램 세그먼트 (300) 이다. 설명하기 위해 프로그램 세그먼트가 캐시 라인으로부터 검색된다고 가정하였지만, 본 발명의 교시는 프로그램 세그먼트를 저장하는 어떤 메모리 디바이스에도 적용가능하다. 일반적으로, 용어 캐시 라인은 명령어 스트링 또는 명령어 스트림으로 지칭될 수도 있다. 캐시 라인이 고정된 길이를 가질 수도 있기 때문에, 용어 명령어 스트링 또는 명령어 스트림은 통상적으로 캐시 라인의 경계를 스팬 (span) 할 수도 스팬하지 않을 수도 있는 하나 이상의 프로그램 세그먼트를 지칭한다.
프로그램 세그먼트 (300) 는 16-비트 및 32-비트 명령어로 구성된 가변 길이 명령어 세트로부터의 명령어 (302) 를 포함한다. 예를 들어, 프로세서가 다수 유형의 명령어에 대한 16-비트 및 32-비트 명령어 포맷을 이용하고, 명령어 사용 유형을 특정하고 제한하는 수개의 동작 모드를 지원하도록 한다. 프로세서 (210) 는 32-비트 명령어만이 사용될 수도 있다고 명기한 제 1 동작 모드 및 16-비트와 32-비트의 조합이 사용될 수도 있다고 명기한 제 2 동작 모드를 가진다. 프로세서가 통상적으로 다수의 동작 모드를 가지지만, 본 발명에 관한 설명의 명확화를 위해, 예시적인 프로세서 (210) 의 설명은 주로 상술한 제 1 및 제 2 동작 모 드로 제한된다.
본 발명의 양태를 설명하기 위해, 수개의 예시적인 16-비트 및 32-비트 명령어가 도 3a 에 도시된다. 설명을 목적으로, 프로그램 상대 바이트 표시기 (304) 는 명령어가 시작하고 명령어의 사이즈를 간접적으로 표시하는 캐시 라인에서의 바이트 위치를 나타낸다. 예를 들어, MULT R5, R4, R3 명령어 (306) 는 바이트 위치 00에서 시작하고 바이트 위치 01에서 끝난다. 따라서, MULT R5, R4, R3 명령어 (306) 는 16-비트 명령어이다. 유사하게, ADD 명령어 (307 및 311) 및 SHIFT 명령어 (309) 는 16-비트 길이이다. 조건부 브랜치 (CBRANCH) 명령어 (308), 로드 (LOAD) 명령어 (310), 및 저장 (STORE) 명령어 (312) 는 32-비트 길이이다.
L2 캐시 라인 (320) 의 일부를 도 3b 에 도시한다. 캐시 라인의 일부만이 설명 목적으로 도시되며, 캐시 라인 사이즈는 애플리케이션, 기술, 선택된 메모리 계층 설계에 따라 달라질 수도 있다. 예를 들어, 256-비트 또는 512-비트 캐시 라인이 L2 캐시용으로 사용될 수도 있다. 설명된 부분은 다수의 16-비트 필드를 가진다. 도 3a 의 명령어 (314) 는 표시된 바와 같이 L2 캐시 라인 (320) 에 저장되며, MULT R5, R4, R3 명령어 (306) 는 위치 00에서 시작하는 L2 캐시 라인 세그먼트 (322) 에 저장된다. ADD R0, R5, R1 명령어 (307) 는 위치 02에서 시작하는 L2 캐시 라인 세그먼트 (324) 에 저장된다. CBRANCH 0A 명령어 (308) 는 L2 캐시 라인 세그먼트 (330) 에 저장된다. 명령어 (308) 는 위치 04 및 위치 06 에서 각각 시작되는 2개의 16-비트 세그먼트 (332 및 334) 로 구성 된다. SHIFT RO, 1 명령어 (309) 는 위치 08에서 시작하는 L2 캐시 라인 세그먼트 (336) 에 저장된다. 설명 목적으로, 프로그램 세그먼트 (300) 는 캐시 라인의 처음부터 시작하는 것으로 도시하였지만, 이러한 프로그램 세그먼트는 캐시 라인의 다른 섹션에 위치할 수도 있고, 다수의 캐시 라인 사이에서 분할될 수도 있다.
연관된 4-비트 프리디코드 (Pd4) 필드와 함께 16-비트 필드로 각각 이루어진 다수의 20-비트 필드로 구성된 예시적인 L1 I캐시 라인 (350) 을 도 3c 에 도시한다. 예를 들어, L1 캐시는 명령어용으로 128-비트를 이용하고 8개의 Pd4 필드에 대한 추가적인 공간을 필요로 하여, 160-비트 L1 캐시 라인을 발생시킨다. 단일 4-비트 Pd4 필드는 16-비트 명령어 및 32-비트 명령어 모두에 대해 사용된다. 4-비트 Pd4 필드는 Pd4 필드와 연관된 명령어의 16개까지의 인코딩 특징을 함유할 수도 있다. 예를 들어, 인코딩은 명령어가 로드 또는 저장 명령어, 산술 명령어, 또는 마이크로코드 지원을 필요로 하는 복합 명령어인지 여부를 표시할 수도 있다. 또한, 인코딩은 16 비트의 명령어 데이터가 32-비트 명령어의 처음 반인지 또는 16-비트 명령어인지 여부, 명령어가 브랜치식 명령어인지 여부 등을 표시할 수도 있다. Pd4 정보는 명령어 정렬, 디코딩에 유용하고, 다른 목적, 예를 들어 브랜치 처리에 사용될 수도 있다.
도 3a 의 명령어 (314) 는 L1 캐시 라인 세그먼트 (352 및 354) 각각에 저장된 16-비트 MULT R5, R4, R3 명령어 (306) 및 그 연관 Pd4 필드와 함께 시작하는 L1 캐시 라인에 위치할 수도 있다. 유사하게, 16-비트 ADD R0, R5, R1 명령어 (307) 및 그 연관 Pd4 필드는 L1 캐시 라인 세그먼트 (356 및 358) 각각에 저장된다. 오직 한 세트의 프리디코드 비트가 32-비트 명령어와 저장되도록 요구되기 때문에, 32-비트 CBRANCH OA 명령어 (308) 는 상이하게 저장된다. 설명을 목적으로, 16-비트 L1 캐시 라인 세그먼트 (362) 는 CBRANCH 0A 명령어 (308) 의 상위 16-비트를 함유한다. Pd4 필드 (364) 는 32-비트 CBRANCH 명령어에 대한 프리디코드 정보를 제공하며, 다음 16-비트 L1 캐시 라인 세그먼트 (366) 는 CBRANCH 0A 명령어 (308) 의 하위 16-비트를 함유한다. Pd4 필드 (368) 는 CBRANCH 0A 명령어 (308) 가 필요하지 않다. 다른 프로그램 세그먼트가 상이한 시간에 캐시 라인을 점유하지 않을 수도 있기 때문에, Pd4 필드 (368) 는, 예를 들어, 16-비트 L1 캐시 라인 세그먼트 (366) 에 저장된 16-비트 명령어의 지원에 사용될 수도 있다. L1 캐시 라인의 다음 명령어는 16-비트 L1 캐시 라인 세그먼트 (370) 와 Pd4 필드 (372) 로 이루어진 20-비트 필드에 저장된 16-비트 SHIFT R0, 1 명령어 (309) 이다. 캐시 라인 (350) 에서의 잔여 비트 필드에 대해 프로그램 세그먼트 (314) 의 다른 명령어에 대한 유사한 순위설정이 후속한다.
도 4a 는 L2 캐시 (226) 및 L1 I캐시 (218) 를 포함하는 프로세서 복합체 (200) 의 메모리 계층에 적절히 저장될 수도 있는 예시적인 프로그램 세그먼트 (400) 를 도시한다. 프로그램 세그먼트 (400) 는 프로세서 (210) 의 제 1 동작 모드에서 동작하는 32-비트 명령어 (402) 를 포함하고, 모든 명령어는 워드 정렬 경계에 관한 아키텍쳐 정의에 의해 위치한다. 본 발명의 양태를 설명하기 위해, 수개의 예시적인 32-비트 명령어가 도 4a 에 도시된다. 프로그램 상대 바 이트 표시기 (404) 는 명령어가 시작되고 명령어의 사이즈를 간접적으로 표시하는 캐시 라인에서의 바이트 위치를 나타낸다. 예를 들어, LOAD R22, EE 명령어 (406) 는 바이트 위치 00에서 시작하고 바이트 위치 03에서 끝난다. 따라서, LOAD R22, EE 명령어 (406) 는 32-비트 명령어이다. 유사하게, ADD 명령어 (407 및 411), CBRANCH 10 (408), SHIFT 명령어 (409), LOAD R20, 8F 명령어 (410), 및 STORE 명령어 (412) 가 모두 32-비트 길이이다.
L2 명령어 캐시 라인 (420) 의 일부를 도 4b 에 도시한다. 라인 (420) 은 다수의 16-비트 필드를 가진다. 캐시 라인 사이즈가 애플리케이션, 기술, 및 선택된 메모리 계층 설계에 따라 달라질 수도 있기 때문에 캐시 라인의 일부만 도시한다. 예를 들어, 256-비트 또는 512-비트 캐시 라인은 L2 캐시에 적절하게 사용될 수도 있다. 도 4a 의 명령어 (414) 는 표시된 대로 L2 캐시 라인 (420) 에 저장되며, LOAD R22, EE 명령어 (406) 는 위치 00에서 시작하는 L2 캐시 라인 세그먼트 (422) 에 저장된다. ADD R19, R22, R30 명령어 (407) 는 위치 04에서 시작하는 L2 캐시 라인 세그먼트 (432) 에 저장된다. CBRANCH 10 명령어 (408) 는 위치 08에서 시작하는 L2 캐시 라인 세그먼트 (436) 에 저장된다. 다른 32-비트 명령어는 유사한 방법으로 L2 캐시에 저장된다. 설명을 목적으로, 프로그램 세그먼트 (400) 는 캐시 라인의 처음부터 시작하는 것으로 도시하였지만, 이러한 32-비트 명령어 프로그램 세그먼트는 워드 경계상의 캐시 라인의 다른 섹션에 위치할 수도 있고 다수의 캐시 라인들 사이에서 분할될 수도 있다.
예시적인 L1 I캐시 라인 (450) 은 도 4c 에 도시된다. 라인 (450) 은 각 각이 16-비트 필드와 그 연관 4-비트 프리디코드 (Pd4) 필드로 이루어진 다수의 20-비트 필드를 가진다. 단일 4-비트 Pd4 필드는 16-비트 명령어 및 32-비트 명령어에 모두 사용된다. 예를 들어, L1 캐시는 명령어에 대해 128-비트를 저장하고, 8개의 Pd4 필드에 대한 추가적인 공간을 필요로 하여, 160-비트 L1 캐시 라인을 발생시킨다. 도 4a 의 명령어 (414) 는 16-비트 세그먼트 (454), 그 연관된 Pd4 필드 (456), 및 16-비트 세그먼트 (458) 로 이루어진 L1 캐시 라인 세그먼트 (452) 에 저장된 32-비트 LOAD R22, EE 명령어 (406) 로 시작하는 L1 캐시 라인에 위치할 수도 있다. 4-비트 Pd4 필드 (456) 가 32-비트 LOAD R22, EE 명령어에 대한 프리디코드 정보를 공급하기 때문에, 제 2의 4-비트 Pd4 필드 (460) 는 필요하지 않고, 결과적으로, 본 발명의 기술을 이용하여 Pd4 필드 (460) 는 기록되거나 판독되지 않는다. 유사하게, 32-비트 ADD R19, R22, R30 명령어 (407) 는 L1 캐시 라인 세그먼트 (464 및 468) 에 저장되고 명령어 (407) 의 연관 Pd4 필드는 세그먼트 (466) 에 저장된다. 유사하게, 4-비트 Pd4 필드 (470) 는 필요하지 않고, 본 발명의 기술을 이용하여, Pd4 필드 (470) 는 기록 또는 판독되지 않는다. 32-비트 CBRANCH 10 명령어 (408) 는 L1 캐시 라인 세그먼트 (474 및 478) 에 저장되고, CBRANCH 10 명령어 (408) 의 연관 Pd4 필드는 세그먼트 (476) 에 저장된다. Pd4 필드 (480) 도 필요하지 않다. 다시, 본 발명의 기술을 이용하여, Pd4 필드 (480) 는 기록 또는 판독되지 않는다. 다른 프로그램 세그먼트가 상이한 시간에 캐시 라인을 점유할 수도 있기 때문에, Pd4 필드 (460, 470 및 480) 는, 예를 들어, 16-비트 L1 캐시 라인 세그먼트 (458, 468 및 478) 각각과 연 관된 16-비트 명령의 지원에 사용될 수도 있다. 캐시 라인 (450) 의 잔여 비트 필드에 대해 프로그램 세그먼트 (414) 의 다음 32-비트 명령어 (409) 에 대한 유사한 순위설정이 후속한다.
본 발명의 일 양태는 L1 I캐시에 기록하는 경우에 절전하기 위해 본 발명의 기술에 따라 L1 캐시 라인에 프리디코드 정보를 기록하는 것에 관한 것이다. 제 2 양태는 L1 I캐시로부터 판독하는 경우에 절전하기 위해 프리디코드 비트 필드의 선택적인 인에이블을 어드레스한다. 이들 양태 모두는 이후 더 상세히 설명한다.
도 5 는 L1 I캐시 (218) 에 기록하고 L1 I캐시 (218) 로부터 판독하는 경우에 절전하기 위해 본 발명에 따라 동작하는 프로세서 파이프라인 스테이지 (500) 를 도시한다. L1 I캐시 (218) 는 2개의 프로세서 파이프라인 스테이지로 분할된다. 제 1 파이프라인 스테이지는 명령어 내용 어드레서블 메모리 (instruction content addressable memory; ICAM) 장치 (502) 에서 명령어 태그 매칭에 사용된다. 제 2 파이프라인 스테이지는 태그 매치 히트 (tag match hit) 가 ICAM 장치 (502) 에서 발생하는 경우에 명령어 랜덤 액세스 메모리 (IRAM)(503) 으로부터 명령어를 액세스하는데 사용된다. I캐시 (218) 이후에, 명령어는 디코드 스테이지 (554) 이전의 명령어 정렬 (IDA) 스테이지 (516) 에서 프로세서 (210) 에 진입한 후, 스테이지 (555) 를 실행한다.
본 발명은 L1 I캐시에 기록하는 경우에 절전하도록 동작한다. 예를 들어, L1 I캐시 미스가 발생하는 경우, L2 캐시 또는 시스템 메모리로부터의 명령어 및 선택된 프리디코드 비트 필드가 L1 I캐시에 기록된다. 프로세서 상태 정보에 따라, L1 I캐시에 기록된 선택된 프리디코드 비트 필드는 I캐시 라인에서 이용가능한 모든 프리디코드 비트 필드보다 적어서, 절전된다. 많은 이유로 발생할 수도 있는 L1 I캐시 미스를 해결하는 경우에 절전이 수반된다. 예를 들어, L1 I캐시의 초기화시, I캐시는 유효하지 않은 내용을 가지는 것으로 처리되고, L1 I캐시가 차면서 미스가 있게 된다. 또한, 프로그램이 코드의 새로운 섹션으로 분기되는 경우에, L1 I캐시 페치에서 발생하는 I캐시 미스의 가능성이 더 커진다.
프로세서 (210) 는 페치될 명령어의 어드레스 (Faddress)(504) 를 제공하고, 페치 시에 프로그램 특정 동작 모드로 대표되는 현재 동작 모드 상태 (COMS) 정보 (506) 를 ICAM 장치 (502) 에 제공함으로써 L1 I캐시로부터의 명령어 페치를 개시한다. 또한, 프로세서 (210) 는 다른 정보, 예를 들어, PID를 ICAM 장치 (502) 에 제공할 수도 있다. 페치 시에 COMS 정보는 워드 정렬 경계상의 32-비트 명령어만을 사용하는 제 1 동작 모드, 16-비트 및 32-비트 명령어 모두를 사용하는 제 2 동작 모드, 또는 다른 프로세서 모드에 프로세서가 있는지 여부를 포함할 수도 있다.
ICAM 장치 (502) 는 ICAM 라인, 예를 들어, ICAM 라인 (512) 의 태그로서, 명령어 어드레스 (Iaddress)(509), 페치시의 프로세서의 동작 모드 (FOMS)(510), 및 매치 동작에 필요하다고 여겨지는 이러한 다른 정보를 저장한다. 명령어 페치 동작시에, 프로세서는 저장된 ICAM 라인 태그와 비교되는 Faddress (504) 및 프로세서 COMS (506) 를 공급하여, 임의의 저장된 ICAM 라인이 프로세서가 공급한 Faddress, 및 COMS를 매치시키는 유효한 데이터를 보유하는지 여부를 결정한다. 어떤 ICAM 라인도 유효한 매칭 어드레스, 프로세서 동작 모드 상태 등과 발견되지 않으면, 미스로 간주되고, 미스 표시 (514) 가 프로세서 (210) 에 주어진다. L2 캐시 (226) 에서 명령어가 발견되지 않으면, 프로세서 (210) 는 L2 캐시 (226) 로부터 또는 시스템 메모리로부터 페치하는 것을 진행한다. 메모리 액세스 타이밍으로 인한 대기시간 후에, 시스템 메모리 또는 L2 캐시 출력 (518) 으로부터 프리디코더 (520) 및 IRAM (503) 으로 명령어가 제공된다. 또한, 프로세서 (210) 는 명령어 페치 어드레싱, 페치 시의 프로세서 동작 모드 상태 등에 관한 프리디코더 (520) 미스 정보 (522) 를 전송한다.
프리디코더 (520) 는 메모리 대기시간의 원인이 되는 미스 정보를 추적하고 미스 정보를 이용가능하게 한다. 미스 정보는, 예를 들어, 프로세서 L1 I캐시 페치 어드레스 및 페치시의 프로세서 상태를 포함한다. 시스템 메모리 또는 L2 캐시 출력 버스 (518) 로부터 명령어가 제공되는 경우, 추적된 페치 어드레스는 출력 (524) 을 통해 공급되고, 추적된 프로세서 상태는 출력 (526) 을 통해 공급되며, PID 와 같은, 다른 정보는 출력 (528) 을 통해 공급된다. 출력 버스 (518) 상의 명령어는 IRMA (503) 에 저장될 적절한 16-비트 필드에 대해 4-비트 Pd4 출력 (530, 532, 내지 534) 을 발생시키는 프리디코더 (520) 에서 부분적으로 디코딩된다. 유효한 정보를 보유한 Pd4 비트만이 프리디코더 (520) 에서 발생한다. 출력 버스 (518) 상의 명령어는 저장을 위해, 도시한 바와 같이, 예를 들어, 제 1의 16-비트 (536), 제 2의 16-비트 (538) 내지 최종 16-비트 (540) 에 대해 IRAM (503) 으로 적절히 분할된다. 명령어 16-비트 필드 (536, 538, 내지 540) 및 그 각각의 Pd4 출력 (530, 532, 내지 534) 은 기록 제어 로직 (544) 하에서 IRAM 라인, 예를 들어, IRAM 라인 (540) 에 저장된다. 절전하기 위해, 페치 신호시에 프로세서 상태 (526) 가 예시적인 제 1 동작 모드와 같은 워드 정렬 경계상의 32-비트 명령어만으로 명령어를 제한한 상태이면, IRAM 라인 (542) 에 저장될 명령어는 모두 32-비트 명령어이다. 32-비트 명령어만이 IRAM 라인 (542) 에 저장되면, Pd4 비트의 반만이 Pd4 출력 (530) 과 같이 기록될 필요가 있다. 32-비트 명령어의 두번째 반인 16-비트와 연관된, Pd4 출력, 예를 들어, Pd4 출력 (532) 이 필요하지 않고, IRAM (503) 에 기록되지 않는다. 160-비트의 L1 I캐시 라인에서, L1 I캐시 라인이 제 1 동작 모드에서처럼 32-비트 명령어만 가지는 경우에 4개의 32-비트 명령어, 및 16-비트만이 저장되도록 요구되는 프리디코드 정보의 32-비트가 저장될 수 있다. 평균적으로, 이는 L1 I캐시 라인의 160-비트 중에서 16-비트를 기록하지 않기 때문에, L1 I캐시에 기록하는 경우에 10%의 절전을 나타낸다.
명령어가 I캐시에 기록되는 경우, 태그 정보도 ICAM (502) 에 기록된다. ICAM 장치 (502) 에서, 페치 어드레스 (524) 및 페치 신호시의 프로세서 상태 (526) 가 ICAM 라인, 예를 들어, ICAM 라인 (512) 에 저장된다. ICAM 장치 (502) 의 L1 I캐시 히트 (550) 에서 IRAM 장치 (503) 의 적절한 라인이 판독 제어 로직 (546) 의 제어하에서 IRAM 출력 (552) 상에 출력될 수 있도록, ICAM 라인 (512) 은 IRAM 라인 (542) 과 직접 관련된다. IRAM 출력 (552) 은 원하는 명령 어, 및 명령어 정렬 (IDA) 스테이지 (516) 에 전송되는 수개의 다음의 명령어를 함유한다.
명령어 정렬 스테이지 (516) 에서 수신된 명령어는 후속하는 디코드 및 실행 스테이지 (554) 에 대해 정렬 및 준비된다. 예를 들어, Pd4 비트는 파이프 라인을 추적하기 때문에, 명령어 정렬 스테이지 (516) 및 디코드 스테이지 (554) 는 캐시 라인의 상태를 안다. IRAM 장치 (503) 로부터 명령어를 액세스하기 위해 파이프라인 스테이지부터 시작하여, Pd4 비트는 명령어 정렬 스테이지 (516), 그 후 디코드 스테이지 (554) 로 진행한다. IDA (516) 에서 프로세서 (210) 의 동작 모드 상태가 32-비트뿐인 명령어에 대해 제 1 동작 모드이면, 정렬 로직은 제 1, 제 3, 제 5 , 및 다른 홀수 프리디코드 비트 필드 (Pd4) 만이 유효하다는 것을 안다. IDA (516) 에서 프로세서 (210) 의 동작 모드 상태가 16-비트 및 32-비트 명령어에 대해 제 2 동작 모드이면, 모든 Pd4 필드가 유효할 수도 있기 때문에 모든 Pd4 필드가 고려된다. 처음 Pd4 필드는 연관된 16-비트 필드가 32-비트 명령어의 처음 반 또는 16-비트 명령어인지 여부를 결정하도록 평가된다. 연관된 16-비트 필드가 32-비트 명령어의 처음 반이라고 Pd4 필드가 표시하면, 다음 Pd4 필드는 무시된다. Pd4 필드가 16-비트 명령어를 표시하면, 다음의 연속적인 Pd4 필드는 유사하게 심사된다. 이 프로세스는 페치된 캐시 라인의 잔여 Pd4 필드를 따라 계속된다.
일 실시예로서, L1 캐시 라인 히트 상에서, IRAM 출력 (552) 은 4개의 16-비트 명령어, 2개의 16-비트 명령어 및 단일 32-비트 명령어까지, 또는 2개의 32-비 트 명령어, 및 관련된 프리디코드 비트까지를 허용하는 64-비트의 명령어를 명령어 정렬 장치 (516) 에 공급한다. 다른 방법으로, IRAM 출력 (552) 은 IRAM 라인 (542) 와 같은 전체 IRAM 캐시 라인을 공급할 수도 있다. 절전하기 위해, 프로세스가 워드 정렬 경계상에서 32-비트 명령어만을 사용하는 모드에 있다고 프로세서 상태 (506) 가 표시하면, IRAM 라인 (542) 으로부터 판독된 명령어는 모두 32-비트 명령어로 간주된다. 32-비트 명령어만이 IRAM 라인에 저장되면, Pd4 필드 (556) 와 같이 Pd4 비트의 반만이 판독될 필요가 있다. 32-비트 명령어의 두번째 반인 16-비트와 연관된 Pd4 비트, 예를 들어, Pd4 필드 (558) 는 요구되지 않는다. 160-비트의 L1 I캐시 라인에서, 4개의 32-비트 명령어 및 프리디코드 정보의 32-비트가 저장될 수 있다. 그러나, 이 실시예에서 프리디코드 정보의 16-비트만이 판독될 필요가 있다. 평균적으로, 이는 L1 I캐시 라인을 판독하는 경우에 160-비트 중 16-비트를 판독하지 않기 때문에, L1 I캐시로부터 판독되는 경우에 10% 절전을 나타낸다.
프로세서 동작 모드 상태에 따라 변하는 절전을 도시한 도 3a 내지 3c 및 도 4a 내지 4c 에 2개의 실시예가 나타나 있다. 프로세서 페치 동작 모드 상태 (FOMS)(510) 는 각 태그, 예를 들어, 태그 (512) 에 저장된다. 저장된 FOMS (510) 는 프리디코드 비트를 기록 및 판독하기 위해, 제 1 동작 모드를 나타내는 제 1 상태 (580) 또는 제 2 동작 모드를 나타내는 제 2 상태 (582) 를 표시할 수도 있다. 도 3c 의 L1 I 캐시 라인 (350) 의 실시예에서, IRAM (503) 에 기록되는 경우에, 제 2 상태 (582) 를 표시하는 FOMS 를 가진 ICAM 태그와 연관되는 전체 L1 I캐시 라인 (350) 은 16-비트 및 32-비트 명령어로 이루어진다. 도 4c 의 L1 I캐시 라인 (450) 의 실시예에서, IRAM (503) 에 기록되는 경우에 제 1 상태 (580) 를 표시하는 FOMS를 가진 ICAM 태그와 연관된 전체 L1 I캐시 라인 (450) 은 32-비트 명령어만으로 이루어진다. 제 2 상태 (582) 에서, 모든 Pd4 필드는 기록 및 판독 모두에 대해 인에이블이다. 제 1 상태 (580) 에서, 각 32-비트 명령어의 처음 반인 16-비트와 연관된 Pd4 필드만이 인에이블이고, 각 32-비트 명령어의 두번째 반인 16-비트와 연관된 Pd4 필드는 IRAM (503) 명령어를 기록 및 판독하기 위해 인에이블되지 않는다.
도 6 은 명령어 캐시 라인으로부터의 프리디코드 정보를 기록 및 판독하는 경우에 절전하기 위한 본 발명에 따른 동작 단계를 도시한 흐름도 (600) 이다. 제 1 단계 (610) 에서, 프로세서는 명령어가 2 유형인 실행될 명령어를 페치한다. 제 1 유형 명령어는 제 1 길이, 예를 들어, 16-비트로 포맷되고, 제 2 유형 명령어는 제 2 길이로 포맷된다. 제 2 길이, 예를 들어, 32-비트는 제 1 길이보다 더 길다. 다음 단계 (615) 에서, 제 1 유형 및 제 2 유형의 명령어는 프리디코더에서 부분적으로 디코딩된다. 단계 (620) 에서, 프리디코드 정보는 부분적으로 디코딩된 명령어에 대해 발생한다. 단계 (625) 에서, 명령어가 제 2 유형으로 제한되는 것을 프로세서 동작 모드 상태가 표시하는지 여부를 결정한다. 프로세스가 명령어를 제 2 유형으로 제한하지 않는 프로세서 동작 모드 상태이면, 기록을 위해 명령어 캐시 라인의 모든 프리디코드 비트를 인에이블하는 단계 (630) 가 후속한다. 프로세서가 명령어를 제 2 유형으로 제한하는 프로세서 동작 모 드 상태이면, 기록을 위해 명령어 캐시 라인의 제 2 유형 명령어와 연관된 프리디코드 비트를 선택적으로 인에이블하는 단계 (635) 가 후속한다. 페치된 명령어에 대한 캐시 라인을 기록한 후에, 시스템은 단계 (610) 로 복귀한다.
본 발명은 설명된 파이프라인 스테이지 (500) 에 한정되지 않고, 명령어 캐시에 프리디코드 정보를 저장하는 가변 길이 명령어를 가진 임의의 파이프라인 프로세서에도 적용가능하다. 프리디코드 정보가 선택적으로 제어될 수도 있어 기록 및 판독 절약하도록 확장자가 명령어 세트 사용의 유일한 모드를 지원하면, 가변 길이 프로세서 명령어 세트에 대한 확장자는 본 발명에 의해 수용될 수도 있다. 예를 들어, 제 3 모드는 64-비트 명령어가 L1 I캐시 라인에 걸쳐 분할되지 않도록, 64-비트 명령어만이 동작하고 모든 64-비트 명령어가 더블 워드 경계 상에 위치하도록 명시될 수도 있다. 64-비트 명령어 유형을 이용한 프로세서는 상술한 예시적인 프로세서 (210) 의 확장자일 수도 있다. 확장 프로세서는 32-비트 명령어만으로 제한된 제 2 상태 (580), 16-비트 및 32-비트 명령어에 대한 제 2 상태 (582), 및 64-비트 명령어만으로 제한된 제 3 상태 (584) 에 대해 인코딩된 동작 모드 상태를 가질 수 있다. I캐시 라인의 64-비트 명령어, 예를 들어, 도 5 의 IRAM 라인 (542) 은 각 20-비트 필드가 64-비트 명령어 및 그 연관된 Pd4 필드의 섹션을 가지는 4개의 20-비트 필드로 구획된다. L1 I캐시 라인의 64-비트 명령어와 함께, 64-비트 명령어의 처음 16-비트와 연관된 Pd4 필드는 전체 64-비트 명령어에 사용되고, 다음 3개의 Pd4 필드는 필요하지 않다. L1 I캐시 라인에서, 제 1, 제 5, 제 9 등의 Pd4 필드는 제 2, 제 3, 제 4, 제 6, 제 7, 제 8, 제 10 등 의 Pd4 필드가 기록 또는 판독되지 않는 동안에 사용된다. 160-비트 L1 I캐시 라인이 2개의 64-비트 명령어 및 32개의 Pd4 비트를 함유하면, 32개의 Pd4 비트의 24 비트가 기록 또는 판독되지 않는다. 평균적으로, 이는 L1 I캐시 라인의 160-비트 중에서 24-비트를 기록하지 않고 판독하지 않기 때문에 L1 I캐시 라인에 액세스하는 경우, 15% 절전을 나타낸다.
본 발명은 2개의 지배적인 명령어 길이에 한정되지 않는다. 예를 들어, 16-비트 및 24-비트 명령어를 가진 다른 아키텍처 및 24-비트 유형으로 명령어를 제한하는 모드를 고려한다. 16-비트 및 24-비트 명령어 둘 다는 4개의 프리디코드 비트를 요구한다. 이 실시형태에서, 명령어 캐시 라인은 8-비트 명령어 섹션 및 2-비트 프리디코드 섹션으로 구획된다. 16-비트 명령어는 {8-비트, 2-비트 Pd2, 8-비트, 2-비트 Pd2}로 조직된 20-비트로 구성된다. 24-비트 명령어는 {8-비트, 2-비트 Pd2, 8-비트, 2-비트 Pd2, 8-비트, 2-비트 Pd2}로 조직된 30-비트로 구성된다. 16-비트 명령어를 저장하는 160-비트 캐시 라인은 모든 비트가 완전히 사용되는 총 160-비트에 대해 8개의 20-비트 섹션으로 조직된 8개의 16-비트 명령어를 보유할 수 있다. 24-비트 명령어를 저장하는 160-비트 캐시 라인은 총 150-비트에 대해 5개의 30-비트 섹션으로서 조직되는 5개의 24-비트 명령어를 보유할 수 있으며, 5개의 Pd2 2-비트 필드는 유효하지 않고, 라인에 잔류하는 10-비트는 사용하지 않는다. 프로세서 동작 모드에 따라 24-비트 명령어를 기록 또는 판독함으로써, 유효한 정보를 함유한 캐시 라인의 비트만이 액세스되고, 20-비트는 액세스되지 않아서, 라인의 모든 비트를 기록 및 판독하는 것에 비해 절 전된다.
본 발명은 현재 바람직한 문맥에서 개시되고 있지만, 본 교시는 본 명세서 및 다음의 청구범위에 걸쳐 일관되는 다양한 문맥에 적용될 수도 있다는 것을 인식할 것이다.

Claims (20)

  1. 가변 길이 명령어를 지원하는 프로세서 환경에서 절전하기 위한 장치로서,
    제 1 길이 및 상기 제 1 길이보다 더 긴 제 2 길이의 명령어를 부분적으로 디코딩하고, 상기 제 1 길이 및 상기 제 2 길이 모두의 명령어에 대한 프리디코드 비트를 발생시키는 프리디코더;
    상기 제 2 길이의 명령어로 명령어를 제한하는 모드에서 상기 프로세서가 동작하는 것을 표시하는 프로세서 동작 모드 상태 표시기;
    명령어 및 프리디코드 비트를 저장하는 복수의 캐시 라인을 가진 명령어 캐시; 및
    상기 프로세서 동작 모드 상태 표시기에 따라 캐시 라인에 프리디코드 비트를 선택적으로 기록하는 것에 의해 모든 상기 프리디코드 비트가 상기 제 2 길이의 명령어에 대해 기록되는 것은 아닌 기록 제어 로직을 포함하는, 절전 장치.
  2. 제 1 항에 있어서,
    상기 명령어 캐시 라인은 명령어에 대한 섹션과 프리디코드 비트에 대한 섹션으로 구획되고,
    모든 상기 프리디코드 비트가 상기 제 2 길이의 명령어에 대해 기록되는 것은 아닌, 절전 장치.
  3. 제 2 항에 있어서,
    상기 명령어에 대한 섹션은 16-비트 필드이고,
    상기 프리디코드 비트에 대한 섹션은 4-비트 필드인, 절전 장치.
  4. 제 2 항에 있어서,
    상기 명령어에 대한 섹션은 8-비트 필드이고,
    상기 프리디코드 비트에 대한 섹션은 2-비트 필드인, 절전 장치.
  5. 제 1 항에 있어서,
    상기 복수의 캐시 라인은 제 1 메모리에 저장되고,
    상기 명령어 캐시는,
    태그를 저장하는 제 2 메모리로서, 상기 각 태그는 상기 캐시 라인과 연관되고 명령어 어드레스 및 프로세서 상태 비트를 보유하고, 상기 프로세서 상태 비트는 페치시의 프로세서 동작 모드 상태를 표시하는, 상기 제 2 메모리를 더 포함하는, 절전 장치.
  6. 제 1 항에 있어서,
    상기 제 1 길이는 16-비트이고, 상기 제 2 길이는 32-비트이며,
    각 제 1 길이 명령어는 4개의 프리디코드 비트를 가지고, 각 제 2 길이 명령어는 4개의 프리디코드 비트의 제 1 그룹 및 제 2 그룹을 가지며, 상기 제 2 길이 명령어에 대한 상기 프리디코드 비트의 제 2 그룹은 기록되지 않는, 절전 장치.
  7. 제 1 항에 있어서,
    상기 프리디코드 비트 필드는 명령어의 기능 및 제어 카테고리로 명령어를 분류하는, 절전 장치.
  8. 제 2 항에 있어서,
    상기 기록 제어 로직은 상기 캐시 라인의 다수의 명령어 섹션에 제 2 길이 명령어를 기록하고, 상기 제 2 길이 명령어의 일부에 의해 점유되는 상기 명령어 섹션의 하나와 연관된 하나의 프리디코드 섹션을 기록하며,
    상기 제 2 길이 명령어의 다른 일부에 의해 점유되는 상기 명령어 섹션과 연관된 다른 프리디코드 섹션은 유효하지 않고 기록되지 않는, 절전 장치.
  9. 제 1 항에 있어서,
    상기 프로세서 동작 모드 상태 표시기는, 또한, 상기 프로세서가 상기 제 2 길이 보다 더 긴 제 3 길이의 명령어로 명령어를 제한하는 모드에서 동작하는 것을 표시하고,
    상기 프리디코더는, 또한, 상기 제 3 길이의 명령어를 디코딩하도록 동작하는, 절전 장치.
  10. 제 1 항에 있어서,
    상기 명령어 캐시는,
    상기 각 캐시 라인과 연관되는 복수의 명령어 내용 어드레서블 메모리 (instruction content addressable memory; ICAM) 태그를 가지는 ICAM으로서, 상기 ICAM 태그는 명령어 어드레스 및 프로세서 상태 비트를 저장하기 위해 할당되고, 상기 프로세서 상태 비트는 페치시의 상기 프로세서 동작 모드 상태 표시기의 값을 가지는, 상기 ICAM; 및
    상기 ICAM 태그에 상기 명령어 어드레스 및 상기 프로세서 상태 비트를 기록하는 기록 제어 로직을 더 포함하는, 절전 장치.
  11. 명령어 캐시 라인을 판독하는 경우에 절전하기 위한 장치로서,
    제 1 길이 및 상기 제 1 길이보다 더 긴 제 2 길이의 명령어를 페치하는 페치 동작을 수행하는 프로세서;
    상기 프로세서가 상기 제 2 길이의 명령어로 명령어를 제한하는 모드에서 동작하는 것을 표시하는 프로세서 동작 모드 상태 표시기;
    복수의 캐시 라인 및 상기 각 캐시 라인과 연관된 태그를 가진 명령어 캐시로서, 상기 캐시 라인은 명령어 및 프리디코드 비트를 저장하고, 상기 태그는 명령어 어드레스부 및 프로세서 동작 모드 상태부를 가지는, 상기 명령어 캐시; 및
    태그 매치 히트에 따라 캐시 라인의 선택된 프리디코드 비트 필드를 판독하는 것에 의해, 상기 캐시 라인에서 이용가능한 모든 상기 프리디코드 비트 필드가 상기 제 2 길이의 명령어에 대해 판독되는 것은 아닌 판독 제어 로직을 포함하는, 절전 장치.
  12. 제 11 항에 있어서,
    상기 태그 매치 히트를 결정하는 히트 비교기를 더 포함하며,
    상기 히트 비교기는, 상기 프로세서 페치 명령어 어드레스 및 상기 프로세서 동작 모드 상태 표시기를 상기 태그와 비교하고, 상기 비교가 동일한 경우, 상기 태그 매치 히트를 발생시키는, 절전 장치.
  13. 제 11 항에 있어서,
    상기 선택된 프리디코드 비트 필드는, 상기 캐시 라인으로부터 판독된 명령어가 배열 및 디코딩될 수 있도록 명령어를 분류하는, 절전 장치.
  14. 제 11 항에 있어서,
    상기 프로세서 페치 동작은 명령어 어드레스 및 상기 프로세서 동작 모드 상태 표시기를 공급하는 단계를 포함하는, 절전 장치.
  15. 제 11 항에 있어서,
    상기 명령어 캐시는,
    상기 각 캐시 라인과 연관된 복수의 명령어 내용 어드레서블 메모리 (ICAM) 태그를 가지는 ICAM으로서, 상기 ICAM 태그는 명령어 어드레스부 및 프로세서 동작 모드 상태 표시기부를 가지는, 상기 ICAM; 및
    상기 각 태그와 연관된 태그 비교기를 포함하는, 절전 장치.
  16. 제 1 길이 또는 상기 제 1 길이보다 더 긴 제 2 길이의 명령어를 페치하는 단계;
    프리디코더에서 상기 제 1 길이 및 제 2 길이의 명령어를 프리디코딩하는 단계;
    상기 제 1 길이 및 상기 제 2 길이 모두의 명령어에 대한 프리디코드 비트를 발생시키는 단계; 및
    상기 제 2 길이의 명령어로 명령어를 제한하는 동작 모드에 따라 명령어 캐시 라인에 선택된 프리디코드 비트를 기록하는 것에 의해, 모든 상기 프리디코드 비트가 상기 제 2 길이의 명령어에 대해 기록되는 것은 아닌 기록 단계를 포함하는, 절전 방법.
  17. 제 16 항에 있어서,
    상기 명령어 캐시 라인은 명령어 필드와 프리디코드 비트 필드로 구획되고,
    상기 선택된 프리디코드 비트를 기록하는 단계에서, 모든 상기 프리디코드 필드가 상기 제 2 길이의 명령어에 대해 기록되는 것은 아닌, 절전 방법.
  18. 제 16 항에 있어서,
    상기 명령어 캐시 라인에 선택된 프리디코드 비트를 기록하는 단계에서,
    상기 제 2 길이의 명령에 의해 이용가능한 수개의 프리디코드 비트 필드 중 하나를 기록하는 것에 의해, 모든 상기 프리디코드 비트 필드가 상기 제 2 길이의 명령어에 대해 기록되는 것은 아닌 기록 단계를 더 포함하는, 절전 방법.
  19. 제 16 항에 있어서,
    상기 캐시 라인과 연관된 태그에 명령어 어드레스 및 프로세서 상태 비트를 기록하는 단계로서, 상기 프로세서 상태 비트는 페치시의 상기 프로세서 동작 모드 상태를 표시하는, 상기 기록 단계를 더 포함하는, 절전 방법.
  20. 제 19 항에 있어서,
    프로세서 페치 명령어 어드레스 및 프로세서 동작 모드 표시기를 상기 명령어 캐시 라인과 연관된 태그와 비교하는 단계;
    상기 비교가 동일하면 태그 매치 히트를 발생시키는 단계; 및
    상기 태그 매치 히트에 따라 명령어 캐시 라인에서 선택된 프리디코드 비트를 판독하는 것에 의해, 상기 캐시 라인에서 이용가능한 모든 상기 프리디코드 비트가 상기 제 2 길이의 명령어에 대해 판독되는 것은 아닌 판독 단계를 더 포함하는, 절전 방법.
KR1020077022475A 2005-03-04 2006-03-03 가변 길이 명령어에 대한 절전 방법 및 장치 KR100942408B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/073,284 US7421568B2 (en) 2005-03-04 2005-03-04 Power saving methods and apparatus to selectively enable cache bits based on known processor state
US11/073,284 2005-03-04

Publications (2)

Publication Number Publication Date
KR20070116058A true KR20070116058A (ko) 2007-12-06
KR100942408B1 KR100942408B1 (ko) 2010-02-17

Family

ID=36695266

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077022475A KR100942408B1 (ko) 2005-03-04 2006-03-03 가변 길이 명령어에 대한 절전 방법 및 장치

Country Status (11)

Country Link
US (1) US7421568B2 (ko)
EP (1) EP1904922B1 (ko)
JP (1) JP4791495B2 (ko)
KR (1) KR100942408B1 (ko)
CN (1) CN101164040B (ko)
AT (1) ATE467170T1 (ko)
DE (1) DE602006014156D1 (ko)
ES (1) ES2341993T3 (ko)
IL (1) IL185594A0 (ko)
MX (1) MX2007010773A (ko)
WO (1) WO2006096568A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US7836285B2 (en) * 2007-08-08 2010-11-16 Analog Devices, Inc. Implementation of variable length instruction encoding using alias addressing
US8898437B2 (en) * 2007-11-02 2014-11-25 Qualcomm Incorporated Predecode repair cache for instructions that cross an instruction cache line
US10055227B2 (en) 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9588845B2 (en) 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US10235232B2 (en) 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9916251B2 (en) 2014-12-01 2018-03-13 Samsung Electronics Co., Ltd. Display driving apparatus and cache managing method thereof
US9727353B2 (en) * 2015-10-30 2017-08-08 International Business Machines Corporation Simultaneously capturing status information for multiple operating modes
CN115878187B (zh) * 2023-01-16 2023-05-02 北京微核芯科技有限公司 支持压缩指令的处理器指令处理装置和方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115500A (en) * 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
JPH04257948A (ja) * 1991-02-13 1992-09-14 Fujitsu Ltd キャッシュメモリ、該キャッシュメモリを備えたシステムおよび該システムにおける命令デコード方式
US5499204A (en) * 1994-07-05 1996-03-12 Motorola, Inc. Memory cache with interlaced data and method of operation
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
EP0853779B1 (en) * 1995-10-06 2003-08-13 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6092182A (en) * 1998-06-24 2000-07-18 Advanced Micro Devices, Inc. Using ECC/parity bits to store predecode information
US6275927B2 (en) * 1998-09-21 2001-08-14 Advanced Micro Devices. Compressing variable-length instruction prefix bytes
US6253309B1 (en) * 1998-09-21 2001-06-26 Advanced Micro Devices, Inc. Forcing regularity into a CISC instruction set by padding instructions
US6496923B1 (en) * 1999-12-17 2002-12-17 Intel Corporation Length decode to detect one-byte prefixes and branch
US6804799B2 (en) * 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7058827B2 (en) * 2001-07-18 2006-06-06 Intel Corporation Power saving circuit has an input line coupled to an external host and a keeper to hold the line in a weakly held state
US6901490B2 (en) * 2002-12-02 2005-05-31 Lsi Logic Corporation Read/modify/write registers

Also Published As

Publication number Publication date
CN101164040B (zh) 2010-04-14
ATE467170T1 (de) 2010-05-15
WO2006096568A2 (en) 2006-09-14
EP1904922B1 (en) 2010-05-05
US20060200686A1 (en) 2006-09-07
DE602006014156D1 (de) 2010-06-17
KR100942408B1 (ko) 2010-02-17
WO2006096568A3 (en) 2007-01-11
EP1904922A2 (en) 2008-04-02
ES2341993T3 (es) 2010-06-30
JP2008532187A (ja) 2008-08-14
US7421568B2 (en) 2008-09-02
IL185594A0 (en) 2008-01-06
MX2007010773A (es) 2007-11-08
JP4791495B2 (ja) 2011-10-12
CN101164040A (zh) 2008-04-16

Similar Documents

Publication Publication Date Title
KR100942408B1 (ko) 가변 길이 명령어에 대한 절전 방법 및 장치
US8898437B2 (en) Predecode repair cache for instructions that cross an instruction cache line
US6018786A (en) Trace based instruction caching
US7676659B2 (en) System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding
US9396117B2 (en) Instruction cache power reduction
US8819342B2 (en) Methods and apparatus for managing page crossing instructions with different cacheability
JP2014194783A (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US7769954B2 (en) Data processing system and method for processing data
US7346737B2 (en) Cache system having branch target address cache
US7519799B2 (en) Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
US9135011B2 (en) Next branch table for use with a branch predictor
CN112540937A (zh) 一种缓存、数据访问方法和指令处理装置

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 10