KR20080102213A - 명령 프리페치 버퍼 깊이의 동적 제어를 갖는 데이터 프로세서 및 그 방법 - Google Patents

명령 프리페치 버퍼 깊이의 동적 제어를 갖는 데이터 프로세서 및 그 방법 Download PDF

Info

Publication number
KR20080102213A
KR20080102213A KR1020087022855A KR20087022855A KR20080102213A KR 20080102213 A KR20080102213 A KR 20080102213A KR 1020087022855 A KR1020087022855 A KR 1020087022855A KR 20087022855 A KR20087022855 A KR 20087022855A KR 20080102213 A KR20080102213 A KR 20080102213A
Authority
KR
South Korea
Prior art keywords
prefetch buffer
control unit
instruction
maximum depth
variable maximum
Prior art date
Application number
KR1020087022855A
Other languages
English (en)
Inventor
제프리 더블유. 스코트
윌리암 씨. 모이어
Original Assignee
프리스케일 세미컨덕터, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 프리스케일 세미컨덕터, 인크. filed Critical 프리스케일 세미컨덕터, 인크.
Publication of KR20080102213A publication Critical patent/KR20080102213A/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/3802Instruction prefetching
    • 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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • 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)

Abstract

데이터 프로세서(102)는 프리페치 버퍼(112)와 페치 제어 유닛(116)을 포함한다. 프리페치 버퍼(112)는 복수의 라인들을 갖는다. 프리페치 버퍼(112)는 명령들을 저장할 수 있는 복수의 라인들의 라인 수를 정의하는 가변 최대 깊이를 갖는다. 페치 제어 유닛(116)은 프리페치 버퍼(112)의 복수의 라인들 중 적어도 한 라인을 모니터하고, 데이터 프로세서(102)의 상태에 대응해서 프리페치 버퍼(112)의 가변 최대 깊이를 조정하기 위해 프리페치 버퍼에 연결된다.
마이크로프로세서, 프리페치 버퍼, 페치 제어 유닛, 디코더, 명령 레지스터

Description

명령 프리페치 버퍼 깊이의 동적 제어를 갖는 데이터 프로세서 및 그 방법{DATA PROCESSOR HAVING DYNAMIC CONTROL OF INSTRUCTION PREFETCH BUFFER DEPTH AND METHOD THEREFOR}
본 발명은 일반적으로 데이터 프로세서에 관한 것으로, 특히, 데이터 프로세서의 명령 프리페치 버퍼를 관리하는 시스템 및 방법에 관한 것이다.
일반적으로, 퍼스널 컴퓨터, 퍼스널 디지털 어시스턴트, 셀룰러 및 디지털 폰 및 다른 프로세서 기반 장치와 같은 컴퓨팅 시스템은 컴퓨터 판독 가능 명령들을 처리하기 위한 마이크로프로세서 형태의 데이터 프로세서를 포함한다. 마이크로프로세서는 디코드된 명령을 실행하기 위해 컴퓨터 판독 가능 명령 및 하나 이상의 실행 유닛을 디코드하는 명령 디코더를 포함하는 싱글-칩 데이터 프로세서이다. 실행 유닛은 애플리케이션 프로그램에 대한 책임이 있는 대부분의 액션을 실행해서 작용하게 한다.
현대 마이크로프로세서는 통상 성능을 향상시키는 수개의 특징들을 포함한다. 이러한 특징들 중 하나는 온-칩 캐시 메모리이다. 캐시 메모리는 메인 메모리의 비교적 느린 액세스 시간으로 인한 파이프라인 스톨링(stalling)을 방지하기 위해 명령 페칭(명령 캐시의 경우) 또는 데이터 레프런스(data reference)(데이터 캐시의 경우)의 국부화(locality)를 이용하는 고속 로컬 메모리이다.
특히 명령 캐시를 사용하여 마이크로프로세서 성능을 매우 향상시켰지만, 일부 성능 방해물이 남아 있다. 이 중 하나는, 명령 페치가 캐시에서 히트하더라도, 캐시 액세스 자체가 일정량의 시간을 요구한다는 사실이다. 흔히 그러하듯이, 마이크로프로세서가 메모리 관리를 이용하고, 캐시가 물리적 어드레스에 대응하는 데이터를 저장하는 물리적 캐시이면, 임의의 캐시 액세스는 어드레스 변환 단계를 요구한다. 다른 방해물은 슈퍼스칼라 디자인(superscalar design)인데, 이는 마이크로프로세서가 사이클 당 2 이상의 명령들을 발생할 수 있게 함으로써, 캐시로부터 리턴될 명령들의 요구 사항(demand)을 증가시킨다. 명령 페치가 캐시에서 미스되면, 그 결과로서, 명령 파이프라인은 명령 부재(instruction starvation)로 인해 스톨링될 수 있으며, 동시에, 캐시는 비교적 느린 메인 메모리로부터 요구된 명령을 페치한다.
따라서, 일부 하이-엔드(high-end) 마이크로프로세서는 초기 메인프레임 컴퓨터에서 흔히 사용된 특징을 이용하기 시작했다. 이러한 특징은, 명령 페칭을 위해 프리페치 버퍼를 사용하는 것이다. 프리페치 버퍼는 FIFO(first-in, first-out) 방식으로 캐시로부터 또는 메인 메모리로부터 프리로드된 명령들을 저장하는 레지스터들의 집합이다. 프리페치 버퍼는 캐시 또는 메인 메모리 액세스 중에 발생할 수도 있는 명령 부재를 방지하지만, 자체적인 한계점을 갖는다. 한가지 한계점은, 일부 마이크로프로세서가 프리페치 버퍼의 비효율적인 이용을 야기할 수도 있는 가변 길이 명령을 지원한다는 점이다.
다른 한계점은, 브랜치 명령과 같은 특정 타입 명령이 데이터 프로세서의 흐름 변경을 야기할 수도 있다는 점이다. 명령 디코더에 의해 명령이 디코드되고 브랜치 명령이라고 인식될 때까지, 브랜치 명령에 이은 다수의 명령들은, 브랜치가 발생할 경우, 필요하지 않은 프리페치 버퍼로 페치되고 로드되었을 수도 있다. 따라서, 명령이 메모리로부터 로드되고, 이어서 프리페치 버퍼로부터 폐기될 수도 있다. 폐기된 명령은 불필요한 페치 동작에서 낭비된 전력을 나타낸다.
도 1은 본 발명의 일 실시예에 따른 페치 제어 유닛(fetch control unit)을 갖는 프로세서를 포함하는 데이터 프로세싱 시스템의 일부분을 도시한 블록도이다.
도 2는 도 1의 프로세서의 명령 프리페치 버퍼 깊이의 하드웨어 동적 제어를 도시한 플로우챠트이다.
본 발명의 한 양상에 따라, 데이터 프로세서는 프리페치 버퍼 및 페치 제어 유닛을 포함한다. 프리페치 버퍼는 복수의 라인들을 포함하고, 명령들을 저장할 수 있는 복수의 라인들의 라인 수(a number of lines)를 정의하는 가변 최대 깊이(variable maximum depth)를 갖는다. 페치 제어 유닛은 프리페치 버퍼의 복수의 라인들 중 적어도 한 라인을 모니터하고 데이터 프로세서의 상태에 대응해서 프리페치 버퍼의 가변 최대 깊이를 조정하기 위해 프리페치 버퍼에 연결된다.
본 양상에 따라, 페치 제어 유닛은 가변 최대 깊이에 의해 결정된 프리페치 버퍼의 제1 라인을 모니터하고, 제1 라인이 비어 있을 때 명령 페치를 개시할 수도 있다.
페치 제어 유닛은 프리페치 버퍼의 가변 최대 깊이를 제1 소정의 깊이 또는 제2 소정의 깊이로 설정하도록 적응될 수도 있다.
페치 제어 유닛은 명령 타입에 대응해서 프리페치 버퍼의 가변 최대 깊이를 더 설정할 수도 있다. 이 경우, 페치 제어 유닛은 명령 타입에 대응해서 제1 소정의 깊이 또는 제2 소정의 깊이로 프리페치 버퍼의 가변 최대 깊이를 설정할 수 있다. 명령 타입은 32-비트 명령 및 16-비트 명령 중 하나일 수 있거나, 또는, 대안으로, 32-비트 명령 및 가변 길이 명령 중 하나일 수 있다.
페치 제어 유닛은 프리페치 버퍼의 가변 최대 깊이를 더 동적으로 조정할 수도 있다. 이 경우, 페치 제어 유닛은 프리페치 버퍼의 부재 상태에 대응해서 가변 최대 깊이를 증가시킬 수 있다. 부재 상태(starvation condition)는 명령 부재의 횟수가 임계값을 초과하는 상태일 수 있으며, 이 경우, 페치 제어 유닛은 부재 상태에 대응해서 가변 최대 깊이를 증가시킨다. 또한, 부재 상태는 프리페치 버퍼가 부재에 가깝게 평균화중이 아닌지의 여부일 수 있으며, 이 경우, 페치 제어 유닛은 부재 상태에 대응해서 가변 최대 깊이를 감소시킨다. 후자의 경우, 페치 제어 유닛은 프리페치 버퍼의 복수의 라인들의 상태를 모니터함으로써 프리페치 버퍼가 부재에 가깝게 평균화중인지의 여부를 판정할 수 있다.
다른 양상에 따라, 데이터 프로세서는 레지스터, 프리페치 버퍼 및 페치 제어 유닛을 포함한다. 레지스터는 데이터 프로세서가 복수의 모드들 중 선택된 모드로 동작중임을 나타내는 명령 프리페치 제어 값을 저장한다. 프리페치 버퍼는 복수의 라인들을 포함한다. 상기 프리페치 버퍼는 명령들을 저장할 수 있는 복수의 라인들의 라인 수를 정의하는 가변 최대 깊이를 갖는다. 페치 제어 유닛은 프리페치 버퍼 및 레지스터에 연결된다. 페치 제어 유닛은 명령 프리페치 제어 값에 대응해서 가변 최대 깊이를 제어한다.
다른 양상에 따라, 페치 제어 유닛은, 각각 제1 값 또는 제2 값인 명령 프리페치 제어 값에 대응해서 프리페치 버퍼의 가변 최대 깊이를 제1 소정의 깊이 또는 제2 소정의 깊이로 설정할 수 있다. 대안으로, 페치 제어 유닛은, 소정의 값인 명령 프리페치 제어 값에 대응해서, 적어도 일부 현재 명령 타입에 의해 결정된 제1 및 제2 소정의 깊이들 중 하나로 프리페치 버퍼의 가변 최대 깊이를 설정할 수 있다. 마찬가지로, 페치 제어 유닛은 소정의 값인 명령 프리페치 제어 값에 대응해서 프리페치 버퍼의 가변 최대 깊이를 동적으로 설정할 수 있다. 이 경우, 페치 제어 유닛은 프리페치 버퍼의 부재 상태에 대응해서 프리페치 버퍼의 가변 최대 깊이를 동적으로 증가시키거나 감소시킬 수 있다.
다른 양상에 따라, 복수의 라인들을 갖는 프리페치 버퍼와, 명령들을 저장할 수 있는 복수의 라인들의 라인 수를 정의하는 가변 최대 깊이를 구비한 데이터 프로세서에서 이용되는 방법이 제공된다. 프리페치 버퍼의 부재 상태가 모니터된다. 프리페치 버퍼의 부재 비율이 임계값을 초과하면, 가변 최대 깊이가 증가된다. 프리페치 버퍼가 부재에 가깝게 평균화중이지 않으면, 가변 최대 깊이가 감소된다.
다른 양상에 따라, 명령은 가변 최대 깊이에 따라 구성된 프리페치 버퍼로 페칭될 수 있다. 또한, 명령은 프리페치 버퍼로부터 출력될 수 있으며, 그렇게 출 력된 명령은 데이터 프로세서에 의한 실행을 위해 디코드될 수 있다.
이제 도면을 참조하면, 도 1은 본 발명의 일 실시예에 따른 페치 제어 유닛(116)을 갖는 데이터 프로세서(102)를 포함하는 데이터 프로세싱 시스템(100)의 일부를 도시한 블록도이다. 데이터 프로세싱 시스템(100)은 일반적으로 데이터 프로세서(102) 및 메모리(104)를 포함한다. 데이터 프로세서(102)는 마이크로프로세서, 마이크로컨트롤러, DSP(digital signal processor), 및 지능형 DMA(direct memory access) 컨트롤러 등으로서 다양하게 구현될 수 있음을 주지하라. 데이터 프로세서(102)는 양방향 버스 실행 어드레스(conducting address), 데이터 및 제어 신호를 통해 메모리(104)에 연결되고, DDR(double data rate) SDRAM(synchronous dynamic random access memory)과 같은 임의의 종래의 메모리 버스 아키텍처를 사용할 수도 있다.
데이터 프로세서(102)는 MMU(memory management unit)/캐시(106), BIU(bus interface unit; 108), MUX(multiplexer; 110), 프리페치 버퍼(112), 디코더(114), 페치 제어 유닛(116) 및 레지스터(118)를 포함한다. 일반적으로, MMU/캐시(106)는 "VIRTUAL ADDRESS"로 레이블링된 가상 어드레스를 수신하기 위한 입력과, "PHYSICAL ADDRESS"로 레이블링된 물리적 어드레스를 제공하기 위한 제1 출력과, 데이터를 제공하기 위한 제2 출력과, "ATTRIBUTES"로 레이블링된 변환된 VIRTUAL ADDRESS와 관련된 속성들을 제공하기 위한 제3 출력을 갖는다. BIU(108)는 MMU/캐시(106)의 제1 출력에 연결된 입력과, 메모리(104)에 연결된 양방향 단말과, 데이터 출력 단말을 갖는다. MUX(110)는 BIU(108)의 출력 단말에 연결된 제1 입력 단 말과, MMU/캐시(106)의 제2 출력 단말에 연결된 제2 입력 단말과, 출력 단말을 갖는다. 프리페치 버퍼(112)는 MUX(110)의 출력 단말에 연결된 입력 단말과, 출력 명령을 제공하기 위한 제1 출력 단말과, 내부에 저장된 명령들과 관련된 정보를 제공하기 위한 제2 출력 단말과, "IR_EMPTY"로 레이블링된 신호를 제공하기 위한 제3 출력 단말을 갖는다. 디코더(114)는 프리페치 버퍼(112)의 제1 출력 단말에 연결된 입력 단말과, 디코드된 출력 신호들을, 직접적으로 또는 간접적으로, 데이터 프로세서(102)의 실행 유닛(도 1에 도시되지 않음)에 제공하기 위한 출력 단말을 갖는다. 페치 제어 유닛(116)은 보다 자세히 후술된 방식으로 프리페치 버퍼(112)의 제2 및 제3 출력 단말들에 연결된 입력 단말들과, 제1 제어 입력 단말과, ATTRIBUTES를 수신하기 위해 MMU/캐시(106)의 제3 출력 단말에 연결된 제2 제어 입력 단말과, VIRTURAL ADDRESS를 제공하기 위해 MMU/캐시(106)의 입력 단말에 연결된 출력 단말을 갖는다. 레지스터(118)는 페치 제어 유닛(116)의 제1 제어 입력 단말에 연결된 출력 단말을 갖는다.
일반적인 동작에서, 데이터 프로세서(102)는 명령 부재 방지를 돕기 위해 프리페치 버퍼(112)를 사용하는 고성능 마이크로프로세서이다. 페치 제어 유닛(116)은 프리페치 버퍼(112)의 상태를 모니터하고, 명령 페치를 개시하기 위해 가상 어드레스를 생성한다. VIRTURAL ADDRESS 수신에 대응해서, MMU/캐시(106)는 먼저 MMU/캐시(106)에 포함된 TLB(translation look-aside buffer)로부터 저장된 변환(translation)에 액세스함으로써 가상-물리 어드레스 변환을 실행한다. 변환이 TLB에 존재하지 않으면, MMU/캐시(106)는 메모리(104)에 저장된 페이지 테이블로부 터 대응 변환을 로드하는 테이블 워킹 프로시져(table walking procedure)를 개시한다. MMU/캐시(106)는 어드레스 변환 뿐만 아니라 속성 체킹을 실행하기 위해 TLB의 변환을 사용하고, 페치 제어 유닛(116)에 ATTRIBUTES 신호로서 선택된 페이지의 속성을 제공한다. MMU/캐시(106)가 어드레스 변환을 실행한 후, MMU/캐시(106)의 캐시부는 액세스된 명령이 존재하는지를 알기 위해 체크된다. 명령이 캐시에 존재하면, 캐시 히트로서 공지된 상태이면, MMU/캐시(106)는 액세스된 데이터를 MUX(110)의 제2 입력에 제공하고, 프리페치 버퍼(112)로의 입력을 위해 선택되게 한다. 데이터가 MMU/캐시(106)에 존재하지 않으면, 캐시 미스로서 공지된 상태이면, MMU/캐시(106)는 PHYSICAL ADDRESS를 BIU(108)에 제공함으로써 메모리(104)에 액세스한다. BIU(108)는 PHYSICAL ADDRESS 및 적합한 제어 신호를 메모리(104)에 제공함으로써 버스 액세스를 실행한다. 대응으로, 메모리(104)는 요청된 명령을 데이터 버스를 통해 MUX(110)의 제1 입력에 제공하고, 이를 통해 요청된 명령은 프리페치 버퍼(112)에 제공된다. 명령은 또한 차후 사용을 위해 MMU/캐시(106)의 캐시에 저장되지만, 상기 동작은 종래의 것이며, 더 기술되지 않을 것임을 주지하라.
프리페치 버퍼(112)는 도 1에 도시된 대표 라인들 122, 124, 126, 128 및 130과 같은 라인들 또는 레지스터들의 집합(120)을 포함한다. 구현에 따라, 라인들(120)의 수는 가변적일 수 있으나, 도시된 실시예에서, 프리페치 버퍼(112)는 10개의 라인들을 갖는다. 프리페치 버퍼(112)의 마지막 라인인 라인(122)은 디코더(114)로의 프리젠테이션을 위한 다음 명령(또는 명령 길이가 1 라인을 초과하는 경우 다음 명령의 일부)을 포함하는데, "INSTRUCTION REGISTER"라고 한다. 라인 집합(120)의 각 라인은 명령을 저장하거나, 명령 길이가 1 라인을 초과하는 경우 명령의 일부를 저장할 수 있다. 명령은 FIFO 방식으로 프리페치 버퍼(112)를 통해 시프트되고, 디코더(114)에 의해 판독된 각 명령에 대해 한 명령씩 어드밴스된다.
프리페치 버퍼(112)는, 버퍼가 다 찼다고 간주될 때 명령을 저장할 수 있는 프리페치 버퍼(112)의 라인들(122, 124, 126, 128, 130)의 수와 관련된 가변 최대 깊이를 갖는다. 명령 레지스터(122)가 최종(또는 가장 오래된) 로케이션이기 때문에, 가변 최대 깊이는 명령들을 저장할 수 있는 라인 집합(120)의 제1(또는 가장 최신의) 로케이션을 결정한다. 후술되는 바와 같이, 최대 버퍼 깊이는 유익하게 프리페치 버퍼(112)의 모든 라인들 보다 더 적을 수 있다.
페치 제어 유닛(116)은, 보다 자세히 후술되는 바와 같이, 프로그램 카운터, 인크리먼트 로직, 다양한 디코더 및 버퍼 상태 기계들을 포함한다. 페치 제어 유닛(116)은 (페치 제어 유닛(116)에 의해 설정된 가변 최대 깊이에 의해 결정된) 프리페치 버퍼(112)의 제1 라인을 모니터하고, 라인이 비었을 때 명령 페치를 개시한다. 페치 제어 유닛(116)은 VIRTURAL ADDRESS를 생성하고 MMU/캐시(106)에 요구 신호를 제공함으로써 명령 페치를 개시하여서, 결국 다음 명령이 프리페치 버퍼(112)의 가장 오래된 유효 라인에 로드되게 한다.
레지스터(118)는 페치 제어 유닛(116)과 프리페치 버퍼(112)의 동작을 정의하기 위해 명령 프리페치 제어 값을 저장하는 IPC(instruction prefetch control) 필드라고 공지된 2-비트 필드(120)를 포함한다. 필드(120)의 인코딩은 표 1에 도 시되어 있다.
IPC [1:0] 구성
00 10 프리페치 버퍼 유효
01 4 프리페치 버퍼 유효
10 BookE 모드에서 10 버퍼, VLE 모드에서 5 버퍼
11 하드웨어 동적 모드
처음 두개의 모드들(IPC[1:0] = 00 또는 01(각각))은, 페치 제어 유닛(116)이 최대 버퍼 깊이를 10 라인들 및 4 라인들로 각각 설정하게 한다. 최대 버퍼 깊이를 10 라인으로 설정함으로써, 운영 체제는 적어도 명령 부재의 기회를 제공하지만, 불필요한 명령 페치로 인해 전력 소모가 증가된다. 대안으로, 최대 버퍼 깊이를 4 라인으로 설정함으로써, 운영 체제는 감소된 전력 소모를 제공하지만, 부재가 발생할 수 있고 다소 성능이 저하된다.
제3 모드(IPC[1:0] = 10)에서, 최대 버퍼 깊이는 현재 명령 크기에 의해 설정된다. 따라서, 현재 명령 크기가 32-비트이면, 페치 제어 유닛(116)은 최대 버퍼 깊이를 10 버퍼로 설정한다. 그러나, 현재 명령 크기가 가변 길이이면, 페치 제어 유닛(116)은 최대 버퍼 깊이를 5 버퍼로 설정한다. 페치 제어 유닛(116)은 최종 명령 페치에 의해 액세스된 메모리 페이지의 명령 포맷을 나타내기 위해 MMU/캐시(106)의 MMU로부터 ATTRIBUTE 신호를 수신함으로써 현재 명령 크기를 결정한다.
특정 일례에서, 데이터 프로세서(102)는, 프리스케일 코포레이션(Freescale Corporation)에 의해 판매되는 마이크로프로세서의 PowerPC 패밀리의 "BookE" 명령 집합으로부터의 32-비트 명령, 또는 가변 길이 인코딩(VLE)을 갖는 명령 중에서 임의의 명령을 실행하는 마이크로프로세서이다. 다른 실시예에서, 페치 제어 유닛(116)은, 소위 "ARM" 명령 집합의 32-비트 명령을 실행하는 경우 10개의 버퍼들을 제공할 수 있고, Advanced RISC Machines, Ltd.에 의해 설계된 마이크로프로세서에서 사용된 소위 "Thumb" 명령 집합의 16-비트 명령을 실행하는 경우 5개의 버퍼들을 제공할 수 있다. 그러나, 두 명령 집합은 단지 일례임이 명백하다.
또한, 어떤 타입의 명령이 구현중인지에 대한 결정 방법은 변할 수 있다. 도시된 프로세서에서, MMU/캐시(106)는 페이지 테이블의 대응 속성에 의해 명령 타입을 식별하고, 페치 제어 유닛(116)은 ATTRIBUTES의 대응 신호에 대응해서 프리페치 버퍼(112)의 깊이를 제어한다. 다른 ARM/Thumb 실시예에서, 페치 제어 유닛(116)은 최종 명령 페치에 의해 액세스되는 메모리 페이지의 속성을 검사하기 보다는, 브랜치 및 교환 명령으로 공지된, ARM과 Thumb 명령 집합 간을 스위치하는 특별 명령을 디코딩하는 것에 기초하여 두개의 최대 프리페치 버퍼 깊이들 간을 스위치할 수 있다. 이 경우, 디코더(114)는 브랜치 및 교환 명령을 디코딩하는 것에 대응해서 ARM/THUMB 제어 신호를 페치 제어 유닛(116)에 제공한다.
하드웨어 동적 모드로 공지된 제4 모드(IPC[1:0] = 11)에서, 페치 제어 유닛(116)은 최대 프리페치 버퍼 깊이를 동적으로 설정한다. 하드웨어 동적 모드에서, 가변 최대 깊이는 다음과 같이 설정된다. 페치 제어 유닛(116)은 비어 있음을 나타내는 명령 레지스터(122)로부터 IR_EMPTY 신호를 수신하고 내부 버퍼 상태 기계들을 모니터함으로써 명령 부재 상태를 검출한다. 페치 제어 유닛(116)은 수용할만한 레벨로 부재 상태를 감소시키기 위해 최대 프리페치 버퍼 깊이를 동적으로 조정한다. 부재 비율이 임계값을 초과하면, 페치 제어 유닛(116)은 최대 버퍼 깊이를 1 라인씩 증가시킨다. 페치 제어 유닛(116)은, 부재 비율이 더 이상 임계값을 초과하지 않는다고 결정할 때까지, 상기 프로세스를 반복한다.
한편, 하드웨어 동적 모드에서, 페치 제어 유닛(116)은 프리페치 버퍼(112)가 더 이상 부재에 가깝게 운영중이지 않다는 결정에 기초하여 가변 최대 깊이를 선택적으로 감소시킨다. 상기 상태를 결정하는 한가지 방법은, 프리페치 버퍼(112)의 최종 스테이지에서, 페치 제어 유닛(116)이 모든 라인들 또는 적어도 다수의 라인들을 모니터하는 것이다. 그 후, 시간이 지남에 따라 평균화된 버퍼의 가득참(fullness)을 임계값과 비교함으로써 프리페치 버퍼(112)가 "부재 상태에 가깝지 않다"고 판정한다. 프리페치 버퍼(112)가 "부재 상태에 가깝지 않다"고 페치 제어 유닛(116)이 결정하면, 페치 제어 유닛(116)은 가변 최대 깊이를 감소시킨다.
상기 모드들의 유효성(avalibility)은 성능에 악영향을 끼치지 않으면서 전력 소모를 감소시키기 위해 사용자 유연성(user flexibility)을 제공한다. 처음 두개의 모드들은 최대 프리페치 버퍼 깊이의 명시적 운영 체제 또는 소프트웨어 제어를 허용한다. 제3 모드는 최대 프리페치 버퍼 깊이가 명령 타입에 의해 결정되게 허용한다. 제4 모드는 하드웨어가 프리페치 버퍼(112) 자체와 같은 프로세서에서의 상태에 따라 최대 프리페치 버퍼 깊이를 동적으로 조정하게 한다. 이는 데이터 프로세서(102)에서 실행중인 소프트웨어가 변함에 따라 변한다. 따라서, 최대 프리페치 버퍼 깊이의 명시적 소프트웨어 제어 및 하드웨어 제어 둘 다의 유효성은 사용자에게 증가된 유연성을 제공하여, 성능과 전력 소모 간의 최적 밸런스를 달성한다.
도 2는 도 1의 데이터 프로세서(102)의 명령 프리페치 버퍼 깊이의 하드웨어 동적 제어를 위해 사용될 수 있는 일례의 방법을 도시하는 플로우챠트(200)이다. 흐름은 박스(202)에서 시작한다. 판정 박스(204)에서, 페치 제어 유닛(116)은 프리페치 버퍼(112)의 라인(122)으로부터의 IR_EMPTY 신호를 샘플링함으로써 프리페치 버퍼(112)가 비어있는지의 여부를 판정한다. 프리페치 버퍼(112)가 비어 있으면(IR_EMPTY가 참이면), 흐름은 판정 박스(206)로 진행한다. 판정 박스(206)에서, 계산된 부재 비율이 임계값을 초과하지 않으면, 흐름은 판정 박스(204)로 복귀한다. 그러나, 계산된 부재 비율이 임계값을 초과하면, 흐름은 단계 208로 진행한다. 단계 208에서, 페치 제어 유닛(116)은 1 증분과 같이 최대 버퍼 길이를 증가시키고(집합(120)의 라인들의 최대 수와 동일하지 않다고 가정함), 흐름은 판정 박스(204)로 복귀한다.
프리페치 버퍼(112)가 비어 있지 않으면(IR_EMPTY가 거짓이면), 흐름은 판정 박스(210)로 진행한다. 판정 박스(210)는 프리페치 버퍼(112)가 "부재 상태에 가깝지 않은" 지의 여부를 판정한다. 예를 들어, 페치 제어 유닛(116)은 프리페치 버퍼(112)의 수개의 최종 엔트리들을 모니터할 수 있으며, 모두가 유효한 명령들을 포함할 때를 판정할 수 있다. 특정 일례에서, 페치 제어 유닛(116)은, 라인들(122, 124, 126, 128) 전부가 유효한 경우 프리페치 버퍼(112)가 부재 상태에 가깝지 않다고 판정한다. "부재 상태에 가깝지 않은" 상태는, 현재 실행중인 소프트웨어가 부재 상태를 피하기 위해 현재 할당된 다수의 프리페치 버퍼들을 필요로 하지 않으며, 흐름 명령, 메모리 액세스 등의 변경 횟수와 같은 특성의 결과이다. "부재 상태에 가깝지 않은가"라는 질문에 대한 답이 '아니오'이면, 즉, 프리페치 버퍼(112)가 부재 상태에 가깝게 운영중이면, 흐름은 판정 박스(204)로 복귀한다. 그러나, "부재 상태에 가깝지 않은가"라는 질문에 대한 답이 '예'이면, 흐름은 박스(212)로 진행해서, 페치 제어 유닛(116)은 가변 최대 깊이를 감소시키고, 흐름은 판정 박스(204)로 복귀한다.
도 2의 방법을 구현하기 위해, 페치 제어 유닛(116)은 다양한 카운터들, 상태 기계들 등을 유지할 필요가 있다. 상기 구조의 구현은 본 기술 분야에 숙련된 자들에게는 명백할 것이다. 또한, 페치 제어 유닛(116)은 모드들 간을 스위칭할 때 내부 상태 기계들 뿐만 아니라 프리페치 버퍼(112)의 상태를 모니터할 필요가 있다. 예를 들어, 페치 제어 유닛이 "부재 상태에 가깝지 않은" 상태라고 판정할 때, 가변 최대 버퍼 깊이를 즉각적으로 감소시킬 수 없을 수도 있으며, 프리페치 버퍼(112)가 새로운 깊이 내로 들어감에 따라 가변 최대 버퍼 깊이를 감소시킬 수도 있다.
상술된 기술은 예시적인 것으로 간주되며, 제한적인 의미가 아니고, 첨부된 청구항들은 본 발명의 원리 및 범위 내에 속한 모든 수정, 강화 및 다른 실시예들을 커버한다. 따라서, 법이 허용하는 최대 정도 내에서, 본 발명의 범위는 이하의 청구항들과 그 등가물의 가장 광범위한 허용 가능한 해석에 의해 결정되며, 상술된 상세한 설명에 의해서는 제한되지 않는다.

Claims (23)

  1. 데이터 프로세서로서,
    복수의 라인들을 포함하고, 명령들을 저장할 수 있는 복수의 라인들의 라인 수(a number of lines)를 정의하는 가변 최대 깊이(variable maximum depth)를 갖는 프리페치 버퍼와,
    상기 프리페치 버퍼의 복수의 라인들 중 적어도 한 라인을 모니터하고, 상기 데이터 프로세서의 상태에 대응해서 상기 프리페치 버퍼의 가변 최대 깊이를 조정하기 위해 상기 프리페치 버퍼에 연결된 페치 제어 유닛
    을 포함하는 데이터 프로세서.
  2. 제1항에 있어서,
    상기 페치 제어 유닛은, 상기 가변 최대 깊이에 의해 결정된 상기 프리페치 버퍼의 제1 라인을 모니터하고, 상기 제1 라인이 비어 있을 때 명령 페치(instruction fetch)를 개시하는 데이터 프로세서.
  3. 제1항에 있어서,
    상기 페치 제어 유닛은, 상기 프리페치 버퍼의 가변 최대 깊이를 제1 소정의 깊이 또는 제2 소정의 깊이로 설정하는 데이터 프로세서.
  4. 제1항에 있어서,
    상기 페치 제어 유닛은 상기 프리페치 버퍼의 가변 최대 깊이를 명령 타입에 대응해서 설정하는 데이터 프로세서.
  5. 제4항에 있어서,
    상기 페치 제어 유닛은 상기 프리페치 버퍼의 가변 최대 깊이를 상기 명령 타입에 대응해서 제1 소정의 깊이 또는 제2 소정의 깊이로 설정하는 데이터 프로세서.
  6. 제5항에 있어서,
    상기 명령 타입은 32-비트 명령 및 16-비트 명령 중 하나를 포함하는 데이터 프로세서.
  7. 제5항에 있어서,
    상기 명령 타입은 32-비트 명령 및 가변-길이 명령 중 하나를 포함하는 데이터 프로세서.
  8. 제1항에 있어서,
    상기 페치 제어 유닛은 상기 프리페치 버퍼의 가변 최대 깊이를 동적으로 조정하는 데이터 프로세서.
  9. 제8항에 있어서,
    상기 페치 제어 유닛은 상기 프리페치 버퍼의 부재 상태(starvation condition)에 대응해서 가변 최대 깊이를 증가시키는 데이터 프로세서.
  10. 제9항에 있어서,
    상기 부재 상태는 명령 부재가 임계값을 초과하는 횟수(frequency)를 포함하고, 상기 페치 제어 유닛은 상기 부재 상태에 대응해서 상기 가변 최대 깊이를 증가시키는 데이터 프로세서.
  11. 제9항에 있어서,
    상기 부재 상태는, 상기 프리페치 버퍼가 부재에 가깝게 평균화중이 아닌지의 여부를 포함하고, 상기 페치 제어 유닛은 상기 부재 상태에 대응해서 상기 가변 최대 깊이를 감소시키는 데이터 프로세서.
  12. 제11항에 있어서,
    상기 페치 제어 유닛은, 상기 프리페치 버퍼가 상기 프리페치 버퍼의 복수의 라인들의 상태를 모니터함으로써 부재에 가깝게 평균화중인지의 여부를 판정하는 데이터 프로세서.
  13. 데이터 프로세서로서,
    상기 데이터 프로세서가 복수의 모드들 중 선택된 모드에서 동작중임을 나타내는 명령 프리페치 제어 값을 저장하기 위한 레지스터와,
    복수의 라인들을 포함하고, 명령들을 저장할 수 있는 복수의 라인들의 라인 수를 정의하는 가변 최대 깊이를 갖는 프리페치 버퍼와,
    상기 프리페치 버퍼와 상기 레지스터에 연결되고, 상기 명령 프리페치 제어 값에 대응해서 상기 가변 최대 깊이를 제어하는 페치 제어 유닛
    을 포함하는 데이터 프로세서.
  14. 제13항에 있어서,
    상기 페치 제어 유닛은 각각 제1 값 또는 제2 값인 상기 명령 프리페치 제어 값에 대응해서 상기 프리페치 버퍼의 가변 최대 깊이를 제1 소정의 깊이 또는 제2 소정의 깊이로 설정하는 데이터 프로세서.
  15. 제13항에 있어서,
    상기 페치 제어 유닛은, 소정의 값인 상기 명령 프리페치 제어 값에 대응해서, 적어도 일부 현재 명령 타입에 의해 결정된, 제1 및 제2 소정의 깊이들 중 하나로 상기 프리페치 버퍼의 가변 최대 깊이를 설정하는 데이터 프로세서.
  16. 제13항에 있어서,
    상기 페치 제어 유닛은 소정의 값인 상기 명령 프리페치 제어 값에 대응해서 상기 프리페치 버퍼의 가변 최대 깊이를 동적으로 설정하는 데이터 프로세서.
  17. 제16항에 있어서,
    상기 페치 제어 유닛은 상기 프리페치 버퍼의 부재 상태에 대응해서 상기 프리페치 버퍼의 가변 최대 깊이를 동적으로 증가시키거나 감소시키는 데이터 프로세서.
  18. 복수의 라인들을 가진 프리페치 버퍼를 구비한 데이터 프로세서에서 사용하는 방법으로서,
    명령들을 저장할 수 있는 복수의 라인들의 라인 수로서 프리페치 버퍼의 가변 최대 깊이를 설정하는 단계와,
    상기 가변 최대 깊이를 사용해서 상기 프리페치 버퍼로 명령들을 페칭(fetching)하는 단계와,
    상기 데이터 프로세서의 상태에 대응해서 상기 가변 최대 깊이를 동적으로 조정하는 단계
    를 포함하는 방법.
  19. 제18항에 있어서,
    동적으로 조정하는 단계는,
    상기 프리페치 버퍼의 부재 상태를 모니터하는 단계와,
    상기 프리페치 버퍼의 부재 비율(a rate of starvation)이 임계값을 초과하는 경우, 상기 가변 최대 깊이를 증가시키는 단계와,
    상기 프리페치 버퍼가 부재에 가깝게 평균화중이지 않은 경우, 상기 가변 최대 깊이를 감소시키는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 프리페치 버퍼로부터 명령들을 출력하는 단계와,
    상기 데이터 프로세서에 의한 실행을 위해 출력된 명령들을 디코드하는 단계
    를 더 포함하는 방법.
  21. 복수의 라인들을 가진 프리페치 버퍼를 구비한 데이터 프로세서에서 사용하는 방법으로서,
    상기 프리페치 버퍼의 가변 최대 깊이를 제1 소정의 깊이로 설정하는 단계와,
    상기 프리페치 버퍼로 제1 명령 타입의 명령들을 페칭하는 단계와,
    이어서 상기 프리페치 버퍼로 제2 명령 타입의 명령들을 페칭하는 단계와,
    상기 제2 명령 타입의 명령 페칭에 대응해서 상기 프리페치 버퍼의 가변 최대 깊이를 상기 제1 소정의 깊이로부터 제2 소정의 깊이로 변경하는 단계
    를 포함하는 방법.
  22. 제21항에 있어서,
    상기 제1 명령 타입의 명령들을 페칭하는 단계는 32-비트 명령들을 페칭하는 단계를 포함하고, 상기 제2 명령 타입의 명령들을 페칭하는 단계는 16-비트 명령들을 페칭하는 단계를 포함하는 방법.
  23. 제21항에 있어서,
    상기 제1 명령 타입의 명령들을 페칭하는 단계는 32-비트 명령들을 페칭하는 단계를 포함하고, 상기 제2 명령 타입의 명령들을 페칭하는 단계는 가변-길이 명령들을 페칭하는 단계를 포함하는 방법.
KR1020087022855A 2006-03-21 2007-02-23 명령 프리페치 버퍼 깊이의 동적 제어를 갖는 데이터 프로세서 및 그 방법 KR20080102213A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/385,463 US9304773B2 (en) 2006-03-21 2006-03-21 Data processor having dynamic control of instruction prefetch buffer depth and method therefor
US11/385,463 2006-03-21

Publications (1)

Publication Number Publication Date
KR20080102213A true KR20080102213A (ko) 2008-11-24

Family

ID=38523133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087022855A KR20080102213A (ko) 2006-03-21 2007-02-23 명령 프리페치 버퍼 깊이의 동적 제어를 갖는 데이터 프로세서 및 그 방법

Country Status (5)

Country Link
US (1) US9304773B2 (ko)
EP (1) EP1999574B1 (ko)
JP (1) JP5279701B2 (ko)
KR (1) KR20080102213A (ko)
WO (1) WO2007109395A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180015660A (ko) * 2015-06-05 2018-02-13 에이알엠 리미티드 가변 길이 명령 처리 모드

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996689B2 (en) * 2006-06-12 2011-08-09 Semiconductor Manufacturing International (Shanghai) Corporation System and method for power control for ASIC device
CN100483305C (zh) * 2006-06-12 2009-04-29 中芯国际集成电路制造(上海)有限公司 用于asic器件功率控制的系统和方法
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US10346173B2 (en) * 2011-03-07 2019-07-09 Oracle International Corporation Multi-threaded instruction buffer design
WO2012131434A1 (en) 2011-03-30 2012-10-04 Freescale Semiconductor, Inc. A method and apparatus for controlling fetch-ahead in a vles processor architecture
US9104532B2 (en) * 2012-12-14 2015-08-11 International Business Machines Corporation Sequential location accesses in an active memory device
JP5971211B2 (ja) * 2013-08-06 2016-08-17 株式会社デンソー 電子制御装置
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10628163B2 (en) * 2014-04-17 2020-04-21 Texas Instruments Incorporated Processor with variable pre-fetch threshold
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US9639396B2 (en) 2014-09-16 2017-05-02 Nxp Usa, Inc. Starvation control in a data processing system
US9541988B2 (en) 2014-09-22 2017-01-10 Western Digital Technologies, Inc. Data storage devices with performance-aware power capping
US10146293B2 (en) * 2014-09-22 2018-12-04 Western Digital Technologies, Inc. Performance-aware power capping control of data storage devices
US10324842B2 (en) * 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic
CN105980979B (zh) 2014-12-13 2018-11-20 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器
EP3047380B1 (en) * 2014-12-13 2019-04-24 VIA Alliance Semiconductor Co., Ltd. Pattern detector for detecting hangs
US9965206B2 (en) 2015-10-23 2018-05-08 Western Digital Technologies, Inc. Enhanced queue management for power control of data storage device
US20180004512A1 (en) * 2016-06-30 2018-01-04 Intel Corporation System and Method for Out-of-Order Clustered Decoding
US10467141B1 (en) 2018-06-18 2019-11-05 International Business Machines Corporation Process data caching through iterative feedback
US10963249B2 (en) 2018-11-02 2021-03-30 International Business Machines Corporation Processor prefetcher mode governor for switching between prefetch modes
US11163683B2 (en) 2019-08-01 2021-11-02 International Business Machines Corporation Dynamically adjusting prefetch depth
US11301386B2 (en) 2019-08-01 2022-04-12 International Business Machines Corporation Dynamically adjusting prefetch depth
US11327891B2 (en) 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US632280A (en) * 1899-04-19 1899-09-05 Llewellyn Emerson Pulsifer Ash-sifter.
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
JPS6349938A (ja) * 1986-08-20 1988-03-02 Fujitsu Ltd 命令先取り制御装置
JPS6349937A (ja) 1986-08-20 1988-03-02 Fujitsu Ltd 命令先取り制御装置
JPH0218620A (ja) 1988-07-07 1990-01-22 Toshiba Corp 情報処理装置
JPH02157938A (ja) 1988-12-09 1990-06-18 Matsushita Electric Ind Co Ltd 命令先読み制御装置
JPH02163828A (ja) * 1988-12-16 1990-06-25 Mitsubishi Electric Corp データ処理装置
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
JPH0497463A (ja) 1990-08-15 1992-03-30 Nec Corp メッセージバッファに対する実メモリ補給方式
JP2682264B2 (ja) * 1991-05-21 1997-11-26 日本電気株式会社 プログラムカウンタ装置
JPH0728751A (ja) 1993-06-24 1995-01-31 Nec Corp 転送制御装置
IE940855A1 (en) 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
JPH07182164A (ja) 1993-12-22 1995-07-21 Nec Ic Microcomput Syst Ltd 中央処理装置
US5623615A (en) 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
JPH08339289A (ja) * 1995-06-13 1996-12-24 Nec Corp 可変容量バッファメモリ
US5805876A (en) 1996-09-30 1998-09-08 International Business Machines Corporation Method and system for reducing average branch resolution time and effective misprediction penalty in a processor
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6205537B1 (en) * 1998-07-16 2001-03-20 University Of Rochester Mechanism for dynamically adapting the complexity of a microprocessor
US6314494B1 (en) * 1999-04-15 2001-11-06 Agilent Technologies, Inc. Dynamically size configurable data buffer for data cache and prefetch cache memory
EP1050802B1 (en) * 1999-05-03 2007-02-07 STMicroelectronics S.A. Instruction prefetch unit
US6490716B1 (en) * 1999-08-20 2002-12-03 Hewlett-Packard Company Automated design of processor instruction units
US6574727B1 (en) 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6775765B1 (en) 2000-02-07 2004-08-10 Freescale Semiconductor, Inc. Data processing system having instruction folding and method thereof
US6751724B1 (en) 2000-04-19 2004-06-15 Motorola, Inc. Method and apparatus for instruction fetching
US6691220B1 (en) 2000-06-06 2004-02-10 International Business Machines Corporation Multiprocessor speculation mechanism via a barrier speculation flag
US6728873B1 (en) 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US7865747B2 (en) * 2000-10-31 2011-01-04 International Business Machines Corporation Adaptive issue queue for reduced power at high performance
US6748522B1 (en) 2000-10-31 2004-06-08 International Business Machines Corporation Performance monitoring based on instruction sampling in a microprocessor
US6832280B2 (en) 2001-08-10 2004-12-14 Freescale Semiconductor, Inc. Data processing system having an adaptive priority controller
US20030105926A1 (en) * 2001-12-03 2003-06-05 International Business Machies Corporation Variable size prefetch cache
US6931494B2 (en) * 2002-09-09 2005-08-16 Broadcom Corporation System and method for directional prefetching
US6895530B2 (en) 2003-01-24 2005-05-17 Freescale Semiconductor, Inc. Method and apparatus for controlling a data processing system during debug
US6925542B2 (en) 2003-03-21 2005-08-02 Freescale Semiconductor, Inc. Memory management in a data processing system
US6963963B2 (en) 2003-03-25 2005-11-08 Freescale Semiconductor, Inc. Multiprocessor system having a shared main memory accessible by all processor units
US7146467B2 (en) * 2003-04-14 2006-12-05 Hewlett-Packard Development Company, L.P. Method of adaptive read cache pre-fetching to increase host read throughput
US6871246B2 (en) 2003-05-07 2005-03-22 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7139878B2 (en) * 2003-06-20 2006-11-21 Freescale Semiconductor, Inc. Method and apparatus for dynamic prefetch buffer configuration and replacement
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7096348B2 (en) 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
US6976110B2 (en) 2003-12-18 2005-12-13 Freescale Semiconductor, Inc. Method and apparatus for reducing interrupt latency by dynamic buffer sizing
US20050273310A1 (en) 2004-06-03 2005-12-08 Newburn Chris J Enhancements to performance monitoring architecture for critical path-based analysis
US7249223B2 (en) 2004-08-11 2007-07-24 Freescale Semiconductor, Inc. Prefetching in a data processing system
US8001363B2 (en) 2005-04-04 2011-08-16 Globalfoundries Inc. System for speculative branch prediction optimization and method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180015660A (ko) * 2015-06-05 2018-02-13 에이알엠 리미티드 가변 길이 명령 처리 모드

Also Published As

Publication number Publication date
WO2007109395A2 (en) 2007-09-27
US9304773B2 (en) 2016-04-05
JP5279701B2 (ja) 2013-09-04
EP1999574A4 (en) 2009-06-03
JP2009530753A (ja) 2009-08-27
EP1999574B1 (en) 2012-04-11
WO2007109395A3 (en) 2008-10-30
EP1999574A2 (en) 2008-12-10
US20070226462A1 (en) 2007-09-27

Similar Documents

Publication Publication Date Title
US9304773B2 (en) Data processor having dynamic control of instruction prefetch buffer depth and method therefor
EP1353267B1 (en) Microprocessor with repeat prefetch instruction
KR101456860B1 (ko) 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템
US6769052B2 (en) Cache with selective write allocation
KR100339904B1 (ko) 캐시 프로세스용 시스템 및 방법
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US8156287B2 (en) Adaptive data prefetch
KR100240914B1 (ko) 데이터 프리페치 방법 및 프로세싱 시스템
US7937573B2 (en) Metric for selective branch target buffer (BTB) allocation
US11954044B2 (en) Translation lookaside buffer prewarming
KR20080016753A (ko) 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기
US8060701B2 (en) Apparatus and methods for low-complexity instruction prefetch system
EP1313014B1 (en) Interruptible and re-entrant instruction for cleaning a region of a cache memory
JP2004164622A (ja) Dspカーネルの性能/パワー比を改善する方法
US7761686B2 (en) Address translator and address translation method
EP2590082B1 (en) Cache memory apparatus, cache control method, and microprocessor system
US8429383B2 (en) Multi-processor computing system having a JAVA stack machine and a RISC-based processor
JP3735373B2 (ja) マイクロコンピュータ
CN116521578A (zh) 一种提高指令缓存预取执行效率的芯片系统及方法
US8244980B2 (en) Shared cache performance
Zhong et al. Power improvement using block-based loop buffer with innermost loop control

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid