KR20120049806A - 프리페치 명령어 - Google Patents

프리페치 명령어 Download PDF

Info

Publication number
KR20120049806A
KR20120049806A KR1020110112061A KR20110112061A KR20120049806A KR 20120049806 A KR20120049806 A KR 20120049806A KR 1020110112061 A KR1020110112061 A KR 1020110112061A KR 20110112061 A KR20110112061 A KR 20110112061A KR 20120049806 A KR20120049806 A KR 20120049806A
Authority
KR
South Korea
Prior art keywords
data
memory
processor
cache
memory address
Prior art date
Application number
KR1020110112061A
Other languages
English (en)
Other versions
KR101350541B1 (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 KR20120049806A publication Critical patent/KR20120049806A/ko
Application granted granted Critical
Publication of KR101350541B1 publication Critical patent/KR101350541B1/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
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

메모리로부터 데이터를 프리페치하는 것과 관련된 기술들이 개시된다. 일 실시예에서, 집적 회로는 실행 코어 및 데이터 캐시를 포함하는 프로세서를 포함할 수 있다. 실행 코어는 데이터를 검색할 메모리 어드레스를 지정하는 프리페치 명령어의 인스턴스를 수신하도록 구성될 수 있다. 명령어의 인스턴스에 응답하여, 실행 코어는 특정 메모리 어드레스에 대응하는 데이터가 데이터 캐시 내에 이미 저장되어 있는지에 관계없이, 메모리 어드레스로부터 데이터를 검색하고, 이 데이터를 데이터 캐시에 저장한다. 이러한 방식으로, 데이터 캐시는 일관성이 유지되지 않은 메모리 버퍼들 내의 데이터에 대한 프리페치 버퍼로서 사용될 수 있다.

Description

프리페치 명령어{PREFETCH INSTRUCTION}
본 발명은 일반적으로 프로세서에 관한 것으로서, 구체적으로는 프로세서에 의한 프리페칭에 관한 것이다.
다양한 컴퓨터 아키텍처들에서, 처리 코어들은 통상적으로, 코어들과 관련된 메모리 계층구조로부터 피연산자들이 액세스될 수 있는 것보다 여러 배 빠르게 그러한 피연산자들에 대해 연산들을 수행할 수 있다. 메모리 판독 지연의 영향을 줄이기 위하여, 소정의 프로세서 명령어 세트 아키텍처들(ISA들)은 캐시가 아직 데이터 갖지 않은 경우에 메모리로부터 데이터를 검색하여 캐시에 국지적으로 저장하게 하는 명령어들을 포함한다. 예를 들어, ARM V7 ISA 내의 "PLD" 명령어는 캐시가 해당 메모리 어드레스에 대한 데이터의 사본을 포함하지 않는 경우에 메모리로부터 데이터를 프리페치하여 캐시에 저장하게 할 것이다. 그러나, 캐시 내에 데이터가 존재하는 경우에, PLD 명령어의 실행은 데이터에 대한 메모리 액세스를 유발하지 않으며, 대신에 명령어는 "비연산(NOP)" 상태가 된다.
데이터 캐시를 포함하는 다양한 시스템들에서, 공유 메모리를 통해 처리 블록들 사이에 흐르는 데이터는 데이터 캐시에 대해 검사되지 않으며, 따라서 일관성이 없다. 따라서, 공유 메모리는 통상적으로 캐시 가능하지 않은 메모리의 풀(pool)로부터 할당된다. 그러나, 이러한 데이터의 캐시 불가는 PLD 명령어와 같은 명령어들을 쓸모없게 한다. 그러한 명령어들의 감소된 효과는 주어진 픽셀에 대해 국지적인 다수의 픽셀에 대해 작용하는 소정의 이미지 처리 응용들에서 특히 문제가 된다.
본 발명은 메모리로부터의 데이터의 프리페칭을 용이하게 하는 기술들 및 명령어들을 설명한다. 일 실시예에서, 실행 코어는 데이터를 검색할 메모리 내의 메모리 어드레스를 지정하는 프리페치 명령어를 수신하도록 구성된다. 실행 코어는 프리페치 명령어의 인스턴스를 수신한 후, 지정된 메모리 어드레스에 대응하는 데이터가 데이터 캐시 내에 이미 저장되어 있는지에 관계없이, 지정된 메모리 어드레스로부터 데이터를 검색하고, 데이터를 데이터 캐시 내에 저장할 수 있다. 예를 들어, 데이터 캐시가 이미 그에 대한 데이터를 저장하고 있는 메모리 어드레스를 지정하는 프리페치 명령어의 다른 인스턴스를 수신할 때, 실행 코어는 지정된 메모리 어드레스로부터 데이터가 검색되어 데이터 캐시에 다시 로딩되게 하도록 구성된다. 일 실시예에서, 실행 코어 및 데이터 캐시는 시스템 온 칩(system on chip)일 수 있는 공통 집적 회로 상에 배치된다.
하나의 구체적인 구성에서, 이미지 신호 프로세서는 카메라에 의해 캡처된 이미지를 처리하고, 결과 이미지 데이터를 캐시 가능 메모리에 기록할 수 있다. 이어서, 프로세서에서 실행되는 이미지 처리 알고리즘은 메모리로부터 데이터를 검색하고, 연산들의 시퀀스를 수행한 후, 데이터를 다시 메모리에 기록할 수 있다. 이어서, 데이터는 이미지 스케일러 및 비디오 인코더에 의해 더 처리될 수 있다. 본 발명에 따른 프리페치 명령어를 이용함으로써, 임의의 캐시 히트들을 무시하고 데이터가 메모리로부터 항상 로딩될 수 있다. 따라서, 이러한 명령어의 사용은 이전의 이미지 캡처로부터의 오래된 데이터가 무시되는 것을 보장하면서 (캐시를 프리페치 필터로서 이용하여) 프리페칭이 발생할 수 있게 한다.
도 1은 집적 회로의 일 실시예를 나타내는 블록도.
도 2는 도 1에 도시된 프로세서의 적어도 일부의 블록도.
도 3은 예시적인 컴퓨터 판독 가능 저장 매체의 일 실시예의 블록도.
도 4는 프리페치 시퀀스의 일 실시예의 흐름도.
도 5는 비디오 응용의 일 실시예의 블록도.
도 6은 비디오 응용의 일 실시예의 동작을 나타내는 흐름도.
도 7은 예시적인 시스템의 일 실시예의 블록도.
본 명세서는 "일 실시예" 또는 "하나의 실시예"에 대한 참조들을 포함한다. "일 실시예에서" 또는 "하나의 실시예에서"라는 문구들의 출현들은 반드시 동일 실시예를 참조하지는 않는다. 특정 특징들, 구조들 또는 특성들은 본 발명에 적합한 임의의 적절한 방식으로 결합될 수 있다.
용어. 아래의 단락들은 (첨부된 청구항들을 포함하는) 본 명세서에서 발견되는 용어들에 대한 정의들 및/또는 관계를 제공한다.
"포함하는". 이 용어는 개방적(open-ended)이다. 첨부된 청구항들에서 사용될 때, 이 용어는 추가적인 구조 또는 단계를 배제하지 않는다. "...하나 이상의 처리 유닛을 포함하는 기기"를 기재하는 청구항을 고려한다. 이러한 청구항은 기기가 추가적인 컴포넌트들(예컨대, 네트워크 인터페이스 유닛, 그래픽 회로 등)을 포함하는 것을 배제하지 않는다.
"구성된". 다양한 유닛들, 회로들 또는 다른 컴포넌트들은 작업 또는 작업들을 수행하도록 "구성된" 것으로서 설명 또는 청구될 수 있다. 이와 관련하여, "구성된"은 유닛들/회로들/컴포넌트들이 동작 동안에 그러한 작업 또는 작업들을 수행하는 구조(예컨대, 회로)를 포함한다는 것을 나타냄으로써 구조를 암시하는 데 사용된다. 따라서, 유닛/회로/컴포넌트는 지정된 유닛/회로/컴포넌트가 현재 동작하지 않는(예컨대, 온 상태가 아닌) 경우에도 작업을 수행하도록 구성된 것이라고 말할 수 있다. "구성된"이라는 언어와 함께 사용되는 유닛들/회로들/컴포넌트들은 하드웨어, 예를 들어 회로들, 동작을 구현하도록 실행 가능한 프로그램 명령어들을 저장하는 메모리 등을 포함한다. 유닛/회로/컴포넌트가 하나 이상의 작업을 수행하도록 "구성된다"라는 기재는 그 유닛/회로/컴포넌트에 대해 35 U.S.C.§112, 제6 단락에 호소하는 것을 명확히 의도하지는 않는다. 게다가, "구성된"은 해당 작업(들)을 수행할 수 있는 방식으로 동작하도록 소프트웨어 및/또는 펌웨어(예컨대, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해 조작되는 일반 구조(예를 들어, 일반 회로)를 포함할 수 있다.
"제1", "제2" 등. 본 명세서에서 사용될 때, 이러한 용어들은 이들을 뒤따르는 명사들에 대한 라벨들로서 사용되며, 어떠한 타입의 순서(예로서, 공간, 시간, 논리 등)도 의미하지 않는다. 예로서, 8개의 처리 요소 또는 코어를 갖는 프로세서에서, "제1" 및 "제2" 처리 요소들이라는 용어는 8개의 처리 요소 중 임의의 2개를 지칭하는 데 사용될 수 있다. 즉, "제1" 및 "제2" 처리 요소들은 논리적 처리 요소 0 및 1로 한정되지 않는다.
"기초하여". 본 명세서에서 사용될 때, 이 용어는 결정에 영향을 주는 하나 이상의 팩터를 설명하는 데 사용된다. 이 용어는 결정에 영향을 미칠 수 있는 추가적인 팩터들을 배제하지 않는다. 즉, 결정은 그러한 팩터들에만 기초하거나, 그러한 팩터들에 적어도 부분적으로 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. B는 A의 결정에 영향을 미치는 팩터일 수 있지만, 그러한 문구는 A의 결정이 C에도 기초하는 것을 배제하지 않는다. 다른 예들에서, A는 B에만 기초하여 결정될 수 있다.
아래의 설명에서는, 지정된 메모리 어드레스에 대응하는 데이터가 이미 데이터 캐시 내에 저장되어 있는지에 관계없이 메모리 어드레스로부터의 데이터를 캐시 내에 로딩하도록 실행 가능한 프리페치 명령어가 개시된다. 본 명세서는 먼저 예시적인 시스템(SoC)을 설명하고, 이어서 제안되는 프리페치 명령어 자체를 설명한다.
이제, 도 1을 참조하면, 시스템(5)의 일 실시예의 블록도가 도시되어 있다. 도 1의 실시예에서, 시스템(5)은 외부 메모리들(12A-12B)에 결합된 집적 회로(IC; 10)를 포함한다. 도시된 실시예에서, 집적 회로(10)는 하나 이상의 프로세서(16) 및 레벨 2(L2) 캐시(18)를 포함하는 중앙 프로세서 유닛(CPU) 블록(14)을 포함한다. 다른 실시예들은 L2 캐시(18)를 포함하지 않을 수 있고, 그리고/또는 추가적인 레벨의 캐시를 포함할 수 있다. 게다가, 2개보다 많은 프로세서(16)를 포함하고, 하나의 프로세서(16)만을 포함하는 실시예들이 고려된다. 집적 회로(10)는 하나 이상의 비실시간(NRT) 주변 장치들(20)의 세트 및 하나 이상의 실시간(RT) 주변장치들(22)의 세트를 더 포함한다. 도시된 실시예에서, CPU 블록(14)은 브리지/직접 메모리 액세스(DMA) 제어기(30)에 결합되고, 이 제어기는 하나 이상의 주변장치들(32) 및/또는 하나 이상의 주변장치 인터페이스 제어기들(34)에 결합될 수 있다. 주변 장치들(32) 및 주변 장치 인터페이스 제어기들(34)의 수는 다양한 실시예들에서 0개에서 임의의 원하는 수까지 다양할 수 있다. 도 1에 도시된 시스템(5)은 G0(38A) 및 G1(38B)과 같은 하나 이상의 그래픽 제어기를 포함하는 그래픽 유닛(36)을 더 포함한다. 그래픽 유닛당 그래픽 제어기들의 수 및 그래픽 유닛들의 수는 다른 실시예들에서 다양할 수 있다. 도 1에 도시된 바와 같이, 시스템(5)은 하나 이상의 메모리 물리 인터페이스 회로(PHY)(42A-42B)에 결합된 메모리 제어기(40)를 포함한다. 메모리 PHY들(42A-42B)은 집적 회로(10)의 핀들을 통해 메모리들(12A-12B)과 통신하도록 구성된다. 메모리 제어기(40)는 또한 포트들(44A-44E)의 세트를 포함한다. 포트들(44A-44B)은 각각 그래픽 제어기들(38A-38B)에 결합된다. CPU 블록(14)은 포트(44C)에 결합된다. NRT 주변 장치들(20) 및 RT 주변 장치들(22)은 각각 포트들(44D-44E)에 결합된다. 메모리 제어기(40)에 포함되는 포트들의 수는 메모리 제어기들의 수와 같이 다른 실시예들에서 다양할 수 있다. 즉, 도 1에 도시된 것들보다 많거나 적은 포트들이 존재할 수 있다. 메모리 PHY들(42A-42B) 및 대응하는 메모리들(12A-12B)의 수는 다른 실시예들에서 하나 또는 2개보다 많을 수 있다.
일반적으로, 포트는 하나 이상의 소스와 인터페이스하는 메모리 제어기(40) 상의 통신 포인트일 수 있다. 일부 예들에서, 포트는 소스에 전용화될 수 있다(예로서, 포트들(44A-44B)은 그래픽 제어기들(38A-38B)에 각각 전용화될 수 있다). 다른 예들에서, 포트는 다수의 소스 사이에 공유될 수 있다(예로서, 프로세서들(16)은 CPU 포트(44C)를 공유할 수 있고, NRT 주변 장치들(20)은 NRT 포트(44D)를 공유할 수 있고, RT 주변 장치들(22)은 RT 포트(44E)를 공유할 수 있다). 각각의 포트(44A-44E)는 그의 각각의 에이전트와 통신하기 위해 인터페이스에 결합된다. 인터페이스는 임의 타입의 통신 매체(예로서, 버스, 점대점 상호접속 등)일 수 있으며, 임의의 프로토콜을 구현할 수 있다. 메모리 제어기와 소스들 사이의 상호접속은 메쉬(mesh), 칩 패브릭들 상의 네트워크, 공유 버스, 점대점 상호접속 등과 같은 임의의 다른 원하는 상호접속도 포함할 수 있다.
프로세서들(16)은 임의의 명령어 세트 아키텍처(ISA)를 구현할 수 있으며, 그러한 명령어 세트 아키텍처에서 정의되는 명령어들을 실행하도록 구성될 수 있다. (본 명세서에서 사용될 때, ISA는 특정 프로세서에 의해 실행 가능한 명령어들의 세트의 사양을 지칭한다. 따라서, 특정 프로세서를 위한 프로그램은 그의 ISA 내의 상이한 명령어들의 인스턴스들을 포함한다.) 프로세서들(16)은 스칼라, 수퍼스칼라, 파이프라인, 수퍼파이프라인, 무질서, 질서, 추측, 비추측 등 또는 이들의 조합을 포함하는 임의의 마이크로아키텍처를 이용할 수 있다. 프로세서들(16)은 회로를 포함할 수 있으며, 옵션으로서 마이크로코딩 기술들을 구현할 수 있다. 프로세서들(16)은 하나 이상의 레벨 1 캐시를 포함할 수 있으며, 따라서 캐시(18)는 L2 캐시이다. 다른 실시예들은 프로세서들(16) 내에 다양한 레벨의 캐시들을 포함할 수 있으며, 캐시(18)는 계층 구조에서 아래의 다음 레벨일 수 있다. 캐시(18)는 임의의 크기 및 임의의 구성(세트 연관, 직접 맵핑 등)을 이용할 수 있다.
그래픽 제어기들(38A-38B)은 임의의 그래픽 처리 회로일 수 있다. 일반적으로, 그래픽 제어기들(38A-38B)은 표시될 객체들을 프레임 버퍼 내로 렌더링하도록 구성될 수 있다. 그래픽 제어기들(38A-38B)은 그래픽 연산의 일부 또는 전부 및/또는 소정 그래픽 연산들의 하드웨어 가속화를 수행하기 위한 그래픽 소프트웨어를 실행할 수 있는 그래픽 프로세서들을 포함할 수 있다. 하드웨어 가속화 및 소프트웨어 구현의 양은 실시예마다 다를 수 있다.
NRT 주변 장치들(20)은 성능 및/또는 대역폭 이유로 인해 메모리(12A-12B)에 대한 독립적인 액세스를 제공받는 임의의 비실시간 주변 장치들을 포함할 수 있다. 즉, NRT 주변 장치들(20)에 의한 액세스는 CPU 블록(14)과 무관하며, CPU 블록 메모리 연산들과 병렬로 진행될 수 있다. 주변 장치(32) 및/또는 주변 장치 인터페이스 제어기(34)에 의해 제어되는 주변 장치 인터페이스에 결합된 주변 장치들과 같은 다른 주변 장치들도 비실시간 주변 장치들일 수 있지만, 메모리에 대한 독립적인 액세스를 필요로 하지 않을 수 있다. NRT 주변 장치들(20)의 다양한 실시예들은 비디오 인코더 및 디코더, 스칼라 회로 및 이미지 압축 및/또는 해제 회로 등을 포함할 수 있다.
RT 주변 장치들(22)은 메모리 지연에 대해 실시간 요구들을 갖는 임의의 주변 장치들을 포함할 수 있다. 예를 들어, RT 주변 장치들은 이미지 프로세서 및 하나 이상의 디스플레이 파이프를 포함할 수 있다. 디스플레이 파이프는 하나 이상의 프레임을 페치하고 프레임들을 혼합하여 디스플레이 이미지를 생성하기 위한 회로를 포함할 수 있다. 디스플레이 파이프들은 하나 이상의 비디오 파이프라인을 더 포함할 수 있다. 디스플레이 파이프들의 결과로서, 픽셀들의 스트림이 디스플레이 스크린 상에 표시될 수 있다. 디스플레이 스크린 상의 표시를 위해 픽셀 값들이 디스플레이 제어기로 전송될 수 있다. 이미지 프로세서는 카메라 데이터를 수신하고, 데이터를 메모리에 저장될 이미지로 처리할 수 있다.
브리지/DMA 제어기(30)는 주변 장치(들)(32) 및 주변 장치 인터페이스 제어기(들)(34)를 메모리 공간에 브리지하기 위한 회로를 포함할 수 있다. 도시된 실시예에서, 브리지/DMA 제어기(30)는 주변장치들/주변 장치 인터페이스 제어기들로부터의 메모리 연산들을 CPU 블록(14)을 통해 메모리 제어기(40)에 브리지할 수 있다. CPU 블록(14)은 또한 브리지된 메모리 연산들과 프로세서들(16)/L2 캐시(18)로부터의 메모리 연산들 사이에 일관성을 유지할 수 있다. L2 캐시(18)는 또한 브리지된 메모리 연산들과 프로세서들(16)로부터의 메모리 연산들을 중재하여, CPU 인터페이스를 통해 CPU 포트(44C)로 전송되게 할 수 있다. 브리지/DMA 제어기(30)는 또한 주변 장치들(32) 및 주변 장치 인터페이스 제어기들(34)을 대신하여 DMA 연산을 제공하여, 데이터 블록들을 메모리로 그리고 메모리로부터 전송할 수 있다. 구체적으로, DMA 제어기는 주변 장치들(32) 및 주변 장치 인터페이스 제어기들(34)을 대신하여 메모리 제어기(40)를 통해 메모리(12A-12B)로 그리고 그로부터의 전송들을 수행하도록 구성될 수 있다. DMA 제어기는 DMA 연산들을 수행하도록 프로세서들(16)에 의해 프로그래밍될 수 있다. 예를 들어, DMA 제어기는 서술자들을 통해 프로그래밍될 수 있다. 서술자들은 DMA 전송들(예로서, 소스 및 목적지 어드레스들, 크기 등)을 설명하는 메모리(12A-12B)에 저장된 데이터 구조들일 수 있다. 대안으로서, DMA 제어기는 DMA 제어기 내의 레지스터들(도시되지 않음)을 통해 프로그래밍될 수 있다.
주변 장치들(32)은 집적 회로(10)에 포함되는 임의의 원하는 입출력 장치들 또는 다른 하드웨어 장치들을 포함할 수 있다. 예를 들어, 주변 장치들(32)은 이더넷 MAC 또는 WiFi(IEEE 802.11b,g,n) 제어기와 같은 하나 이상의 네트워킹 매체 액세스 제어기(MAC)와 같은 네트워킹 주변 장치들을 포함할 수 있다. 다양한 오디오 처리 장치들을 포함하는 오디오 유닛이 주변 장치들(32)에 포함될 수 있다. 하나 이상의 디지털 신호 프로세서가 주변 장치들(32)에 포함될 수 있다. 주변 장치들(32)은 타이머, 온칩 비밀 메모리, 암호화 엔진 등 또는 이들의 조합과 같은 임의의 다른 원하는 기능을 포함할 수 있다.
주변 장치 인터페이스 제어기들(34)은 임의 타입의 주변 장치 인터페이스에 대한 임의의 제어기들을 포함할 수 있다. 예를 들어, 주변 장치 인터페이스 제어기들은 유니버설 직렬 버스(USB) 제어기, 주변 컴포넌트 상호접속 익스프레스(PCIe) 제어기, 플래시 메모리 인터페이스, 범용 입출력(I/O) 핀 등과 같은 다양한 인터페이스 제어기들을 포함할 수 있다.
메모리들(12A-12B)은 동적 랜덤 액세스 메모리(DRAM), 동기 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 SDRAM들의 모바일 버전들 및/또는 LPDDR2 등과 같은 SDRAM들의 저전력 버전들을 포함함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의 타입의 메모리일 수 있다. 단일 인라인 메모리 모듈(SIMM), 듀얼 인라인 메모리 모듈(DIMM) 등과 같은 메모리 모듈들을 형성하기 위해 하나 이상의 메모리 장치들이 회로 보드 상에 결합될 수 있다. 대안으로서, 장치들은 칩-온-칩 구조, 패키지-온-패키지 구조 또는 멀티칩 모듈 구조로 집적 회로(10)와 함께 실장될 수 있다.
메모리 PHY들(42A-42B)은 메모리(12A-12B)에 대한 저레벨 물리 인터페이스를 핸들링할 수 있다. 예를 들어, 메모리 PHY들(42A-42B)은 동기 DRAM 메모리 등에 대한 적절한 클럭킹을 위해 신호들의 타이밍을 담당할 수 있다. 일 실시예에서, 메모리 PHY들(42A-42B)은 집적 회로(10) 내에 제공된 클럭에 동기화하도록 구성될 수 있으며, 메모리(12)에 의해 사용되는 클럭을 생성하도록 구성될 수 있다.
다른 실시예들은 도 1에 도시된 컴포넌트들 및/또는 다른 컴포넌트들의 서브세트들 또는 수퍼세트들을 포함하는 컴포넌트들의 다른 조합들을 포함할 수 있다는 점에 유의한다. 주어진 컴포넌트의 하나의 인스턴스가 도 1에 도시될 수 있지만, 다른 실시예들은 주어진 컴포넌트의 하나 이상의 인스턴스를 포함할 수 있다. 유사하게, 본 상세한 설명 전반에서는, 하나만이 설명되는 경우에도, 주어진 컴포넌트의 하나 이상의 인스턴스가 포함될 수 있고, 그리고/또는 다수의 인스턴스가 설명되는 경우에도, 하나의 인스턴스만을 포함하는 실시예들이 이용될 수 있다.
이제, 도 2를 참조하면, 프로세서(16)의 일 실시예의 일부의 블록도가 도시되어 있다. 도시된 실시예에서, 프로세서(16)는 레지스터 파일(50), 데이터 캐시(56) 및 메모리 유닛(58)에 결합되는 실행 코어(54)를 포함한다.
일 실시예에서, 실행 코어(54)는 프리페치 명령어의 인스턴스를 실행하도록 구성될 수 있다. 프리페치 명령의 인스턴스에 응답하여, 실행 코어(54)는 메모리 유닛(58)으로부터 프리페치 명령어에 의해 어드레스되는 데이터의 캐시 라인을 프리페치할 수 있다. 데이터의 캐시 라인을 프리페치하는 것은 프리페치 명령어로부터의 메모리 어드레스를 이용하여, 그 메모리 어드레스에 대응하는 데이터가 이미 데이터 캐시(56)에 저장되어 있는지의 여부에 관계없이, 메모리로부터 데이터를 검색하고, 검색된 데이터를 데이터 캐시(56)에 저장하는 것을 포함할 수 있다. 본 명세서에서 사용될 때, 데이터가 메모리 어드레스에 의해 식별되는 캐시 라인 또는 다른 메모리 블록 내에 존재하는 경우에 데이터가 메모리 어드레스에 "대응한다"고 말한다. (명령어는 메모리를 어드레스를 명시적으로 지정하거나, 메모리 어드레스를 계산하는 데 사용될 수 있는 피연산자들을 지정할 수 있다.) 예를 들어, 공유 메모리가 어드레스 1234의 메모리 블록(예를 들어, 캐시 라인 크기의 블록) 내에 값 "0001"을 저장하는 시나리오를 고려한다. 게다가, 동일 어드레스에 대한 이전의 메모리 액세스의 결과로서, 데이터 캐시가 메모리 어드레스 1234에 대해 상이한 값(예로서, "0002")을 저장하는 시나리오를 고려한다. 어드레스 1234를 지정하는 본 발명의 프리페치 명령어의 인스턴스의 실행은 캐시가 또한 동일 메모리 어드레스에 대한(대응하는) 데이터를 포함하는 경우에도 메모리로부터의 데이터(즉, 0001)의 검색을 유발한다.
메모리 유닛(58)은 전술한 것들과 같은 임의 타입의 메모리일 수 있다. 게다가, 메모리 유닛(58)은 캐시 가능 이미지 버퍼들과 같은 하나 이상의 캐시 가능 영역을 포함할 수 있다. 일 실시예에서, 실행 코어(54)는 데이터를 페치하기 전에 어드레스되는 데이터 라인에 대해 데이터 캐시(56)를 검사할 필요가 없는데, 이는 데이터가 어느 경우에나 데이터 캐시(56)에 저장되기 때문이다.
프로세서(16)는 다양한 프리페치 메커니즘들을 단독으로 또는 결합하여 구현하여, 어떤 데이터를 프리페치할지를 결정할 수 있다. 일례는 분기 예측 알고리즘 또는 패턴 기반 프리페치 엔진과 같은 자동화된 프리페치 스킴이다. 다른 실시예들에서, 프로세서(16)는 캐시 라인들을 이용하여, 데이터의 사용 전에 데이터를 버퍼링할 수 있거나, 프로세서(16)는 전용 프리페치 버퍼를 사용할 수 있다. 프리페치 메커니즘은 눈에 보이지 않는 방식으로 활성화될 수 있거나, 명시적인 명령어들을 이용하는 직접적인 프로그램 제어하에 있을 수 있다. 게다가, 일부 실시예들에서, 프리페치 메커니즘은 컴퓨터 판독 가능 저장 매체, 메모리 또는 다른 컴포넌트와 같은, 프로세서(16) 이외의 컴포넌트에 의해 구현될 수 있다.
일부 실시예들에서, 실행 코어(54)는 표준 프리페치 명령어를 실행하도록 구성될 수 있다. 그러한 실시예에서, 실행 코어(54)는 메모리 유닛(58)으로부터 어드레스된 데이터를 페치하기 전에 어드레스된 데이터 라인에 대해 데이터 캐시(56)를 검사한다.
일 실시예에서, 레지스터 파일(50)은 프리페치 명령어의 실행 동안에 데이터의 캐시 라인의 어드레스를 생성하는 데 사용될 수 있는 프리페치 명령어 피연산자(들)(52)를 포함할 수 있다. 다양한 실시예들에서, 레지스터 파일(50)은 구조적으로 보이는(architecturally-visible) 정수 레지스터 파일, 구조적으로 보이는 부동 소수점 레지스터 파일, 이러한 타입의 레지스터 파일들 양자의 부분들, 또는 메모리 맵핑된 레지스터들의 세트, 메모리 위치들의 정의된 세트 또는 비밀(즉, 구조적으로 보이지 않는) 저장 구조와 같은 택일적으로 어드레스되는 구조에 대응할 수 있다. 게다가, 레지스터 파일(50)은 정수 레지스터들, 부동 소수점 레지스터들, 멀티미디어 레지스터들 등을 포함할 수 있다. 레지스터 파일(50)은 다양한 방식으로 구현될 수 있다. 예를 들어, 레지스터들은 플롭, 래치 등과 같은 임의 종류의 클럭화된 저장 장치들로서 구현될 수 있다. 레지스터들은 또한 메모리 어레이들로서 구현될 수 있으며, 이 경우에 레지스터 어드레스는 어레이 내의 엔트리를 선택하는 데 사용될 수 있다. 구현들의 임의 조합이 프로세서(16)의 다양한 실시예들에서 이용될 수 있다.
일 실시예에서, 데이터 캐시(56)는 도 1의 시스템(5) 내의 하나 이상의 장치들과 일관되지 않을 수 있다. 대안 실시예들에서, 데이터 캐시(56)는 도 1의 시스템(5) 내의 하나 이상의 장치들과 일관될 수 있다.
프로세서(16)는 개시되는 프리페치 명령어에 더하여 상이한 타입의 프리페치 명령어도 사용할 수 있다. 프로세서(16)는 상이한 타입의 프리페치 명령어의 실행시에 프리페치 명령어로부터의 메모리 어드레스를 이용하는 것을 포함하여, 그 메모리 어드레스에 대응하는 데이터가 데이터 캐시(56) 내에 아직 저장되지 않은 경우에만, 데이터 캐시 라인을 프리페치하여, 메모리로부터 데이터를 검색하고, 검색된 데이터를 데이터 캐시(56)에 저장할 수 있다. 데이터 캐시(56)가 이미 그 메모리 어드레스에 대응하는 데이터를 포함하는 경우, 프로세서(16)는 NOP를 실행한다. 본 명세서에서 사용될 때, "NOP"는 본질적으로 아무런 효과도 갖지 않는 연산을 수행하는 명령어 또는 명령어의 일부이다. 그의 실행은 하나 이상의 클럭 사이클을 사용할 수 있다. 많은 수의 이미지 픽셀이 프로세서(16)에 의해 처리되고 있는 시나리오에서, 캐시 일관성에 대해 모든 트랜잭션을 검사하는 비용은 하드웨어 및 전력 소비 양자의 관점에서 높다. 결과적으로, 메모리 유닛(58) 내의 공유 이미지 버퍼들은 데이터 캐시(56)와 일관되지 않을 수 있다. 공유 이미지 버퍼들이 데이터 캐시(56)와 일관되지 않을 경우, 이전 프레임으로부터 실효된 데이터가 존재할 수 있다. 그러한 시나리오에서, 데이터 캐시(56)는 실효 데이터를 제거하기 위해 프레임들 사이에 소거(flush)될 수 있다. 그러나, 캐시를 소거하는 비용은 데이터 로드 지연을 증가시키며, 따라서 성능을 저하시켜, 상이한 타입의 프리페치 명령어의 이용으로부터의 성능 이득을 거의 상쇄시킬 수 있다. 이 예는 개시되는 프리페치 명령어의 이용의 한 가지 이점을 더 두드러지게 한다. 해당 메모리 어드레스에 대응하는 데이터가 데이터 캐시(56) 내에 이미 저장된 경우에도 데이터를 프리페치하는 개시되는 프리페치 명령어를 이용함으로써, 이전 프레임으로부터 실효 데이터가 존재하지 않으며, 따라서 프레임들 사이에 데이터 캐시(56)를 소거할 필요가 없을 것이다. 게다가, 전술한 시나리오에서, 개시되는 프리페치 명령어는 NOP를 실행함으로써 클럭 사이클들을 낭비하지 않는다.
일 실시예에서, 프로세서(16)는 페이지 서술자 내의 비트에 따라 거동을 바꾸는 단일 타입의 프리페치 명령어를 구현하여, 위 단락에서의 개시되는 프리페치 명령어 및 상이한 타입의 프리페치 명령어 양자를 구현할 수 있다. 페이지 서술자 내의 비트의 설정은 일부 예들에서 프리페치 명령어가 현재의 캐시 내용들을 무시하게 할 수 있다. 현재의 캐시 내용들을 무시함으로써, 해당 메모리 어드레스에 대응하는 데이터가 이미 데이터 캐시(56)에 저장되어 있는지의 여부에 관계없이, 단일 명령어가 실행 코어(54)로 하여금 메모리로부터 데이터를 검색하고, 검색된 데이터를 데이터 캐시(56)에 저장하게 할 수 있다. 페이지 서술자 내에 비트가 설정되지 않은 경우, 실행 코어(54)는 해당 메모리 어드레스에 대응하는 데이터가 아직 데이터 캐시(56) 내에 저장되지 않은 경우에만 메모리로부터 데이터를 검색하고, 검색된 메모리를 데이터 캐시(56)에 저장할 것이다.
프로세서(16)의 일 실시예는 도 1에 도시된 바와 같은 집적 회로(10) 내에 구현될 수 있지만, 다른 실시예들은 프로세서(16)를 개별 컴포넌트로서 구현할 수 있다는 점에 유의한다. 게다가, 도시된 자원들의 분할은 프로세서(16)가 어떻게 구현될 수 있는지에 대한 일례일 뿐이다.
도 3은 컴퓨터 판독 가능 저장 매체(60)를 나타낸다. 컴퓨터 판독 가능 저장 매체(60)는 프로세서(16)를 포함하는 시스템(5)에 의해 실행될 수 있는 명령어들을 저장하는 제조물의 일 실시예이다. 도시된 실시예에서, 컴퓨터 판독 가능 저장 매체(60)는 프리페치 명령어(62)의 인스턴스를 포함한다. 도 3에 도시된 바와 같이, 인스턴스(62)는, 논리적으로 하이일 때 비연산(NOP)을 수행하고, 논리적으로 로우일 때 명령어를 수행하는 NOP 비트(64)를 포함할 수 있다. 일 실시예에서, 개시되는 프리페치 명령어의 인스턴스는 논리적으로 로우인 NOP 비트를 포함한다. 다른 실시예에서, 개시되는 프리페치 명령어의 인스턴스는 NOP 비트를 갖지 않는다. 전술한 어느 실시예에서나, 프리페치 명령어가 실행된다. 인스턴스(62)는 또한 개시되는 프리페치 명령어를 프로세서(16)에 의해 구현된 명령어 세트 아키텍처 내의 다른 명령어들로부터 구별하는 연산 코드(opcode; 66)를 포함할 수 있다. 게다가, 인스턴스(62)는 어드레스(68)를 포함할 수 있다. 도시된 명령어(62)의 특정 형태는 예시적이며, 도시된 것과 다른 명령어들의 배열들도 가능하다. 예를 들어, 컴퓨터 판독 가능 저장 매체(60)는 커미팅 저장 명령어, 비메모리 액세스 명령어 등과 같은 다른 타입의 명령어들을 포함할 수 있다.
일부 실시예들에서, 컴퓨터 판독 가능 저장 매체는 프로그램에 의해 판독되는 명령어들을 저장하는 데 사용될 수 있고, 전술한 프로세서(16)를 위한 하드웨어를 제조하는 데에 직접 또는 간접으로 사용될 수 있다. 예를 들어, 명령어들은 Verilog 또는 VHDL과 같은 하이 레벨 설계 언어(HDL)에서의 하드웨어 기능의 거동 레벨 또는 레지스터 전송 레벨(RTL) 설명서를 기술하는 하나 이상의 데이터 구조를 개설할 수 있다. 설명서는 합성 도구에 의해 판독될 수 있고, 이 도구는 설명서를 합성하여 네트 리스트(netlist)를 생성할 수 있다. 네트 리스트는 프로세서(16)의 기능을 나타내는 (예로서, 합성 라이브러리에 정의되는) 게이트들의 세트를 포함할 수 있다. 이어서, 네트 리스트는 마스크들에 적용될 기하 형상들을 기술하는 데이터 세트를 생성하도록 배치되고 라우팅될 수 있다. 이어서, 마스크들은 프로세서(16)에 대응하는 반도체 회로 또는 회로들을 생산하기 위한 다양한 반도체 제조 단계들에서 사용될 수 있다.
컴퓨터 판독 가능 저장 매체(60)는 실행 동안에 사용되는 프로그램 명령어들 및/또는 데이터를 저장하는 임의의 다양한 유형의 비일시적 매체를 지칭한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(60)는 메모리 서브시스템의 다양한 부분들을 포함할 수 있다. 다른 실시예들에서, 컴퓨터 판독 가능 저장 매체(60)는 자기(예로서, 디스크) 또는 광학 매체들(예로서, CD, DVD 및 관련 기술 등)과 같은 주변 저장 장치의 저장 매체들 또는 메모리 매체들을 포함할 수 있다. 컴퓨터 판독 가능 저장 매체(60)는 휘발성 또는 비휘발성 메모리일 수 있다. 예를 들어, 컴퓨터 판독 가능 저장 매체(60)는 (제한 없이) FB-DIMM, DDR/DDR2/DDR3/DDR4 SDRAM, RDRAM®, 플래시 메모리 및 다양한 타입의 ROM 등일 수 있다.
도 4를 참조하면, 프리페치 명령어의 인스턴스를 실행하기 위한 방법(70)의 일 실시예가 도시되어 있다. 일 실시예에서, 프로세서(16)는 프리페치 명령어의 인스턴스의 발행시에 방법(70)을 수행한다. 일부 실시예들에서, 방법(70)은 도시된 것보다 많은(또는 적은) 단계들을 포함할 수 있다.
단계 72에서, 프로세서(16)는 프리페치 명령어에 의해 지정된 메모리 어드레스를 계산한다. 일 실시예에서, 프리페치 명령어 피연산자들(52)은 프리페치 명령어의 실행 동안에 데이터의 캐시 라인의 어드레스를 생성한다. 명령어는 메모리 어드레스를 명시적으로 지정하거나, 메모리 어드레스를 계산하는 데 사용될 수 있는 피연산자들을 지정할 수 있다.
단계 74에서, 프로세서(16)는 지정된 메모리 어드레스에 대응하는 데이터가 현재 데이터 캐시(56)에 저장되어 있는지에 관계없이 메모리 유닛(58)으로부터 어드레스된 데이터의 캐시 라인을 검색하고, 이를 데이터 캐시(56)에 저장한다. 다른 실시예들에서, 프로세서(16)는 지정된 어드레스에 대응하는 데이터가 데이터 캐시(56) 내에 이미 저장되어 있는지를 먼저 검사하고, 그러한 경우에 프로세서(16)는 NOP를 수행하고, 데이터를 검색하지 않을 수 있다.
단계 76에서, 프로세서(16)는 지정된 메모리 어드레스에 대응하는 데이터가 이미 캐시 내에 존재하는 경우에도 검색된 데이터를 데이터 캐시(56) 내에 저장한다. 일 실시예에서, 프로세서(16)는 데이터를 데이터 캐시(56)에 저장한다. 데이터 캐시(56)가 지정된 어드레스에 대응하는 데이터를 이미 포함하는 경우에도, 프로세서(16)는 요청된 데이터를 데이터 캐시(56)에 저장한다.
위의 단계들은 프로세서, 프로세서들, CPU, 메모리, 컴퓨터 판독 가능 저장 매체 또는 이들의 임의 조합에 의해 개시될 수 있다.
전술한 바와 같이, 많은 수의 데이터가 처리되어야 하고, 캐시 일관성에 대해 모든 트랜잭션을 검사하는 비용이 너무 큰 소정의 상황들이 존재할 수 있다. 그러나, 메모리 유닛(58)의 부분들이 다수의 프로세서(16)와 같은 상이한 컴포넌트들 사이에 공유될 때, 비일관성의 하나의 결과는 하나의 프로세서(16)가 실효된 데이터를 처리할 수 있다는 것일 수 있다. 방법(70)은 캐시 일관성이 검사될 필요가 없게 하는 동시에 프로세서(16)가 실효된 데이터를 처리할 가능성을 없애는 데 이용될 수 있다.
도 5는 예시적인 비디오 응용에서의 프리페치 명령어의 일 실시예를 나타낸다. 도시된 실시예에서, 메모리 유닛(58)은 이미지 신호 프로세서(ISP)(112), CPU(14), 이미지 스케일러(82) 및 비디오 인코더(84)에 결합된다. ISP(112)는 카메라(110)와 같은 이미지 캡처링 장치에 결합된다. 카메라(110)는 이미지, 이미지들 또는 비디오를 캡처하고, ISP(112)에서의 처리를 위해 이미지 데이터를 전송할 수 있다. 도시된 실시예에서, CPU(14)는 데이터 캐시(56)를 각자 포함하는 2개의 프로세서(16)를 포함한다.
일 실시예에서, 2개의 프로세서(16)의 각각은 프리페치 명령어의 인스턴스들을 실행하도록 구성될 수 있다. 프리페치 명령어에 응답하여, 프리페치 명령어를 수신하는 프로세서(16)는 메모리 유닛(58)으로부터 프리페치 명령어에 의해 어드레스된 데이터의 캐시 라인을 프리페치한다. 프로세서(16)는 지정된 메모리 어드레스에 대응하는 데이터가 현재 데이터 캐시(56)에 저장되어 있는지에 관계없이 메모리 유닛(58)으로부터 어드레스된 데이터를 검색하고 데이터를 그의 데이터 캐시(56)에 저장함으로써 캐시 히트를 무시한다. 이 예에서, 프로세서(16)는 데이터를 페치하기 전에 어드레스된 데이터 라인에 대해 그의 데이터 캐시(56)를 검사하지 않을 수 있는데, 이는 데이터가 어느 경우에나 그의 데이터 캐시(56)에 저장되기 때문이다. 다른 실시예에서는, 프리페치 명령어를 실행하도록 구성된 둘보다 많은 프로세서(16)가 존재한다.
일 실시예에서, 카메라(110)와 같은 이미지 캡처링 장치는 이미지 데이터(비트들)를 ISP(112)로 전송한다. 이어서, ISP(112)는 처리된 이미지 데이터를 메모리 유닛(58) 내의 캐시 가능 이미지 버퍼들에 기록할 수 있다. 캐시 가능 이미지 버퍼들은 시스템(5)의 하나 이상의 컴포넌트들 사이에 공유되는 버퍼들일 수 있다. ISP(112)는 카메라(110)의 컴포넌트일 수 있거나, 외부의 독립적인 이미지 신호 프로세서일 수 있다.
일부 실시예들에서, CPU(14)는 데이터 캐시(56)를 포함하는 프로세서(16)를 포함한다. CPU(14)는 제2 프로세서(16)를 포함할 수 있는 반면, 다른 실시예들에서 CPU(14)는 둘보다 많은 프로세서(16)를 포함할 수 있다. 프로세서(16)는 전술한 프리페치 명령어를 이용할 수 있으며, 이는 이전 캡처로부터의 오래된 데이터가 데이터 캐시(56) 내에 잔류하는 시나리오를 방지할 수 있다. 즉, CPU(14)에 의한 추가 처리 전에 데이터 캐시(56) 내에 실효된 데이터가 남지 않을 수 있다. 데이터 캐시(56)는 프리페치 버퍼로서 사용될 수 있으며, 이는 데이터가 다른 처리 기능들에 의해 요구되기 전에 루프 언롤링(loop-unrolling) 및 데이터 프리페칭을 여러 번 허용함으로써 실행을 최적화하는 것을 도울 수 있다. 일 실시예에서, CPU(14)는 데이터 캐시(56)로부터 프리페치된 데이터를 검색한다. CPU(14)는 프리페치된 데이터에 대해 연산들의 시퀀스를 수행하는 명령어들을 실행할 수 있다. 연산들의 시퀀스는 필터링 알고리즘, 루프 언롤링 및/또는 데이터를 처리하거나 데이터의 처리를 고속화하는 데 사용되는 임의의 다른 기술을 실행하는 것을 포함할 수 있다. 프로세서(16)는 또한 프리페치된 데이터에 대해 연산들의 시퀀스를 단독으로 또는 CPU(14)가 수행한 임의의 처리와 연계하여 수행할 수 있다. CPU(14)가 데이터를 처리한 후에, 필터링 또는 처리된 데이터는 메모리 유닛(58)에 다시 기록될 수 있다.
일부 실시예들에서, 필터링된 데이터는 이미지 스케일러(82) 또는 비디오 인코더(84)를 포함할 수 있는 비디오 회로에 의해 더 처리된다. 이미지 스케일러(82)는 서브샘플링, 반복 샘플링, 다운샘플링, 업샘플링, 영역 맵핑, 밉-맵핑(mip-mapping), 텍스처 맵핑, 형태학적 변환, 등방성 스케일링, 이방성 스케일링, 보간, 필터링 또는 필터링된 데이터의 임의의 다른 방식으로의 스케일링을 포함하지만 이에 한정되지 않는 하나 이상의 스케일링 방법을 이용할 수 있다. 게다가, 이미지 스케일링은 하나 이상의 알고리즘을 이용하여 수행될 수 있다.
일부 실시예들에서, 필터링된 데이터는 비디오 인코더(84)에 의해 처리된다. 비디오 인코더(84)는 H.264 인코더, 다른 MPEG-4 인코더 또는 H.264 인코더의 임의의 확장판일 수 있다. 비디오 인코딩의 개량이 꾸준히 이루어지고 있다는 점에 유의하며, 다른 실시예들은 개량된 인코더들을 구현할 것이라는 것을 고려한다.
일부 실시예들에서, 처리된 데이터는 디스플레이 파이프와 같은 도 1의 하나 이상의 RT 주변 장치들(22)로 전송되거나 그들 상에서 판독될 수 있다.
전술한 바와 같이, 도 5의 예시적인 비디오 응용은 개시되는 프리페치 명령어가 더 오래된 프레임으로부터의 실효된 데이터를 처리할 위험 없이 성능의 이득을 가능하게 할 수 있는 시나리오의 일례를 나타낸다. 여기서, 비디오 응용은 정지 이미지인지 또는 비디오인지에 관계없이 ISP(112)로부터 이미지 데이터의 처리를 요구한다. 이미지 데이터는 많은 양의 데이터를 구성할 수 있다. 많은 양의 데이터로 인해, 캐시 일관성에 대한 검사는 비용이 엄청날 수 있다. 시스템은 ISP(112)에 더하여 또는 그 대신에 동일한 캐시 일관성 문제를 제공하는 다른 컴포넌트들을 포함할 수 있다. 예를 들어, JPEG, MPEG 또는 다른 이미지/데이터 압축 해제기들 또는 디코더들은 통상적으로 많은 출력 버퍼를 가지며, 메모리에 기입하는 동안에 내장된 프로세서들의 일관성 스킴을 바이패스한다. 캐시 일관성 프로토콜의 구현 없이 개시되는 프리페치 명령어를 사용하는 것은 일관성의 부재에 대한 해결책을 제공하는 동시에, 프로세서(16)에 의해 실효 데이터가 처리될 수 있는 위험을 제거할 수 있다.
이제, 도 6을 참조하면, 비디오 응용에서의 방법(90)의 일 실시예의 동작을 나타내는 흐름도가 도시되어 있다. 도 6에는 단계들이 이해의 편의를 위해 특정 순서로 도시되지만, 다른 순서들도 이용될 수 있다. 일 구현에서, 프로세서(16)는 프리페치 명령어의 인스턴스의 발행시에 방법(90)을 수행한다. 일부 실시예들에서, 방법(90)은 도시된 것보다 많은(또는 적은) 단계들을 포함할 수 있다.
단계 92에서, ISP(112)는 이미지 데이터를 메모리 유닛(58)에 기록한다. 이미지 데이터는 카메라(110) 또는 소정의 다른 이미지 캡처링 장치로부터 올 수 있다. 이미지 데이터는 정지 이미지 데이터 또는 비디오 데이터일 수 있다. 어느 경우에나, 메모리 유닛(58)에 기록된 이미지 데이터 비트들은 많은 양의 데이터를 구성한다.
단계 94에서, 프로세서(16)는 프리페치 명령어에 의해 지정된 메모리 어드레스를 계산한다. 일 실시예에서, 프리페치 명령어 피연산자들(52)은 프리페치 명령어의 실행 동안에 데이터의 캐시 라인의 어드레스를 생성한다. 명령어가 메모리 어드레스를 명시적으로 지정하거나, 메모리 어드레스를 계산하는 데 사용될 수 있는 피연산자들을 지정할 수 있다.
단계 96에서, 프로세서(16)는 지정된 메모리 어드레스로부터 데이터를 검색한다. 일 실시예에서, 프로세서(16)는 지정된 메모리 어드레스에 대응하는 데이터가 이미 데이터 캐시(56) 내에 존재하는지의 여부에 관계없이 메모리 유닛(58)의 지정된 어드레스로부터 데이터를 검색한다. 다른 실시예들에서, 프로세서(16)는 먼저 해당 메모리 어드레스에 대응하는 데이터가 데이터 캐시(56) 내에 이미 존재하는지를 검사하고, 그러한 경우에 프로세서(16)는 데이터를 검색하지 않고 프로세스를 종료할 수 있다. 또는, 프로세서(16)는 데이터를 검색하지만, 데이터를 데이터 캐시(56)에 저장하지 않을 수도 있다. 프로세서(16)는 대신에 NOP를 실행할 수 있다.
단계 98에서, 프로세서(16)는 해당 어드레스에 대응하는 데이터가 이미 데이터 캐시(56) 내에 저장되어 있는 경우에도 검색된 데이터를 데이터 캐시(56)에 저장한다. 일 실시예에서, 프로세서(16)는 데이터를 데이터 캐시(56)에 저장한다. 데이터 캐시(56)가 지정된 메모리 어드레스에 대응하는 데이터를 이미 포함하는 경우에도, 프로세서(16)는 그 메모리 어드레스에 대응하는 데이터를 데이터 캐시(56)에 저장한다.
단계 100에서, 저장된 데이터가 처리된다. 일 실시예에서, CPU(14)는 캐시된 데이터에 대해 연산들의 시퀀스를 수행한다. 연산들의 시퀀스는 비디오 필터링 및 루프 언롤링을 포함하는 전술한 임의의 연산들을 포함할 수 있다. CPU(14)에 더하여 또는 그 대신에, 프로세서(16)는 캐시된 데이터에 대해 연산들의 시퀀스를 수행할 수 있다. CPU(14) 및/또는 프로세서(16)는 처리된 데이터를 다시 메모리 유닛(58)에 기입할 수 있다. 다양한 실시예들에서, CPU(14) 및/또는 프로세서(16)는 프리페치 명령어가 데이터를 검색한 메모리 유닛(58) 내의 동일 메모리 위치에 처리된 데이터를 기록할 수 있다. 저장된 데이터는 또한 이미지 스케일러(82), 비디오 인코더(84) 또는 이들 양자에 의해 처리될 수 있다. 처리 후에, 데이터는 디스플레이 파이프 또는 다른 RT 주변 장치(22) 상에서 판독될 수 있다.
통상적인 SoC 아키텍처에서, 이미지 신호 프로세서와 같은 하나의 컴포넌트에서 다른 컴포넌트로 흐르는 데이터는 다양한 이유로 캐시에 대해 검사되지 않는다. 예를 들어, 캐시 일관성에 대해 모든 트랙잭션을 검사하는 비용은 하드웨어, 성능 및 전력 면에서 클 수 있다. 따라서, 메모리의 공유 이미지 버퍼들은 통상적으로 캐시와 일관되지 않는다. 방법(90)은 (예로서, 이전 캡처로부터의) 데이터 캐시(56) 내의 오래된 데이터가 무시되는 것을 보증함으로써 전술한 일관성 결여 문제를 방지할 수 있다. 게다가, 방법(90)은 데이터가 임의의 필터링 또는 다른 알고리즘에 의해 요구되기 전에 루프 언롤링 및 데이터 프리페칭을 여러 번 허용함으로써 성능 및 효율 이득을 제공할 수 있다.
예시적인 시스템
이제, 도 7을 참조하면, 도 7은 시스템(350)의 일 실시예의 블록도이다. 도시된 실시예에서, 시스템(350)은 외부 메모리(352)에 결합된 집적 회로(10)의 적어도 하나의 인스턴스를 포함한다. 외부 메모리(352)는 도 1과 관련하여 전술한 메인 메모리 서브시스템을 형성할 수 있다(예를 들어, 외부 메모리(352)는 메모리(12A-12B)를 포함할 수 있다). 집적 회로(10)는 하나 이상의 주변 장치들(354) 및 외부 메모리(352)에 결합된다. 집적 회로(358)에 전원 전압들은 물론, 메모리(352) 및/또는 주변 장치들(354)에 하나 이상의 전원 전압을 공급하는 전원(356)도 제공된다. 일부 실시예들에서는, 집적 회로(10)의 둘 이상의 인스턴스가 포함될 수 있다(그리고 둘 이상의 외부 메모리(352)도 포함될 수 있다).
메모리(352)는 동적 랜덤 액세스 메모리(DRAM), 동기 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 SDRAM들의 모바일 버전들 및/또는 LPDDR2 등과 같은 SDRAM들의 저전력 버전들을 포함함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의 타입의 메모리일 수 있다. 단일 인라인 메모리 모듈(SIMM), 듀얼 인라인 메모리 모듈(DIMM) 등과 같은 메모리 모듈들을 형성하기 위해 하나 이상의 메모리 장치들이 회로 보드 상에 결합될 수 있다. 대안으로서, 장치들은 칩-온-칩 구조, 패키지-온-패키지 구조 또는 멀티칩 모듈 구조로 집적 회로(10)와 함께 실장될 수 있다.
주변 장치들(354)은 시스템(350)의 타입에 따라 임의의 원하는 회로를 포함할 수 있다. 예컨대, 일 실시예에서, 시스템(350)은 이동 장치(예로서, 개인용 휴대 단말기(PDA), 스마트폰 등)일 수 있으며, 주변 장치들(354)은 WiFi, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 타입의 무선 통신을 위한 장치들을 포함할 수 있다. 주변 장치들(354)은 또한 RAM 저장 장치, 반도체 저장 장치 또는 디스크 저장 장치를 포함하는 추가적인 저장 장치를 포함할 수 있다. 주변 장치들(354)은 터치 디스플레이 스크린 또는 멀티터치 디스플레이 스크린을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 장치들, 마이크로폰, 스피커 등과 같은 사용자 인터페이스 장치들을 포함할 수 있다. 다른 실시예들에서, 시스템(350)은 임의의 타입의 컴퓨팅 시스템(예컨대, 데스크탑 개인용 컴퓨터, 랩탑, 워크스테이션, 네트 톱 등)일 수 있다.
컴퓨터 시스템들(예로서, 시스템(350))에 의해 실행되는 프로그램 명령어들은 다양한 형태의 컴퓨터 판독 가능 저장 매체들 상에 저장될 수 있다. 일반적으로, 컴퓨터 판독 가능 저장 매체는 컴퓨터에 명령어들 및/또는 데이터를 제공하기 위해 컴퓨터에 의해 판독될 수 있는 임의의 비일시적/유형 저장 매체들을 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 저장 매체는 자기 또는 광학 매체들, 예컨대 디스크(고정식 또는 이동식), 테이프, CD-ROM 또는 DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW 또는 블루레이와 같은 저장 매체들을 포함할 수 있다. 저장 매체들은 RAM(예를 들어, 동기 동적 RAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM, 저전력 DDR(LPDDR2 등) SDRAM, 램버스 DRAM(RDRAM), 정적 램(SRAM) 등), ROM, 플래시 메모리, 유니버설 직렬 버스(USB)와 같은 주변 장치 인터페이스를 통해 액세스할 수 있는 비휘발성 메모리(예로서, 플래시 메모리) 등과 같은 휘발성 또는 비휘발성 메모리 매체들을 더 포함할 수 있다. 저장 매체들은 마이크로 전자 기계 시스템(MEMS)은 물론, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 액세스 가능한 저장 매체들도 포함할 수 있다.
특정 실시예들이 위에서 설명되었지만, 이러한 실시예들은 특정 특징과 관련하여 단일 실시예만이 설명되는 경우에도 본 발명의 범위를 한정하는 것을 의도하지 않는다. 본 발명에서 제공되는 특징들의 예들은 달리 언급되지 않는 한은 한정이 아니라 예시적 것을 의도한다. 위의 설명은 본 발명의 이익을 갖는 이 분야의 기술자에게 명백하듯이 그러한 대안들, 개량들 및 균등물들을 커버하는 것을 의도한다.
본 발명의 범위는 본 명세서에서 다루어지는 임의의 또는 모든 문제들을 완화하는지의 여부에 관계없이 본 명세서에 (명시적으로 또는 암시적으로) 개시되는 임의의 특징 또는 특징들의 조합, 또는 이들의 임의의 일반화를 포함한다. 따라서, 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 계속 중에 임의의 그러한 특징들의 조합에 대한 새로운 청구항들이 형성될 수 있다. 특히, 첨부된 청구항들과 관련하여, 종속 청구항들로부터의 특징들은 독립 청구항들의 특징들과 결합될 수 있고, 각각의 독립 청구항들로부터의 특징들은 첨부된 청구항들에 나열된 특정 조합들에서만이 아니라 임의의 적절한 방식으로 결합될 수 있다.

Claims (20)

  1. 데이터 캐시; 및
    상기 데이터 캐시에 결합된 실행 코어
    를 포함하고,
    상기 실행 코어는 메모리 내의 메모리 어드레스를 지정하는 데 사용할 수 있는 정보를 포함하는 제1 타입의 프리페치 명령어(prefetch instruction)의 인스턴스를 수신하도록 구성되고,
    상기 제1 타입의 프리페치 명령어의 상기 인스턴스를 수신하는 것에 응답하여, 상기 실행 코어는 상기 메모리 어드레스에 대응하는 데이터가 상기 데이터 캐시 내에 이미 저장되어 있는지에 관계없이, 상기 메모리 어드레스를 이용하여 상기 메모리로부터 데이터를 검색하고, 상기 검색된 데이터를 상기 데이터 캐시에 저장하도록 구성되는 기기(apparatus).
  2. 제1항에 있어서, 상기 제1 타입의 프리페치 명령어의 상기 인스턴스는 레지스터 파일 내의 피연산자들을 지정하고, 상기 피연산자들은 상기 메모리 어드레스를 생성하기 위해 상기 실행 코어에 의해 이용될 수 있는 기기.
  3. 제1항에 있어서, 상기 검색된 데이터는 상기 데이터 캐시의 캐시 라인 크기에 대응하는 크기를 갖는 기기.
  4. 제1항에 있어서, 상기 실행 코어는 상이한 메모리 어드레스를 지정하는 제2 타입의 프리페치 명령어의 인스턴스를 수신하도록 구성되고, 상기 제2 타입의 프리페치 명령어의 상기 인스턴스를 수신하는 것에 응답하여, 상기 실행 코어는 상기 상이한 메모리 어드레스에 대응하는 데이터가 현재 상기 데이터 캐시에 저장되지 않은 경우에만 상기 상이한 메모리 어드레스를 이용하여 상기 메모리로부터 데이터를 검색하도록 구성되고, 상기 제1 타입의 프리페치 명령어 및 상기 제2 타입의 프리페치 명령어는 모두 상기 실행 코어와 관련된 명령어 세트 아키텍처(ISA) 내에서 지정되는 기기.
  5. 제1항에 있어서, 상기 기기는 출력 버퍼를 갖는 장치를 더 포함하고, 상기 장치는 데이터를 메모리의 캐시 가능 영역에 저장하면서 임의의 캐시 일관성 프로토콜(cache coherency protocol)을 바이패스하도록 구성되는 기기.
  6. 프로세서가 프리페치 명령어의 제1 인스턴스를 발행하는 단계; 및
    데이터 캐시가 메모리 어드레스에 대응하는 데이터를 현재 저장하고 있는지에 관계없이, 상기 프로세서가 상기 메모리 어드레스로부터의 데이터의 검색을 유발하고, 검색된 데이터를 데이터 캐시에 저장함으로써 상기 프리페치 명령어의 상기 제1 인스턴스를 실행하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 프로세서가 캐시된 데이터에 대해 연산들의 시퀀스를 수행하여, 필터링된 데이터를 생성하는 단계; 및
    상기 프로세서가 상기 필터링된 데이터를 상기 메모리에 저장하는 단계
    를 더 포함하는 방법.
  8. 제6항에 있어서, 신호 처리 유닛으로부터의 이미지 데이터를 저장하기 위해 메모리 내에 캐시 가능 버퍼를 할당하는 단계를 더 포함하는 방법.
  9. 제6항에 있어서,
    상기 프리페치 명령어의 상기 제1 인스턴스를 실행하는 단계는,
    레지스터 파일 내의 피연산자들을 지정하는 단계; 및
    상기 피연산자들로부터 상기 메모리 어드레스를 생성하는 단계
    를 포함하는 방법.
  10. 제6항에 있어서, 상기 메모리 어드레스에 대응하는 데이터가 상기 캐시 내에 있는 동안에, 상기 프로세서가 동일 메모리 어드레스를 지향하는 상기 프리페치 명령어의 제2 인스턴스를 실행하여, 상기 데이터의 검색을 유발하고, 검색된 데이터를 상기 데이터 캐시에 저장하는 단계를 더 포함하는 방법.
  11. 데이터 캐시를 구비한 프로세서에 의해 실행 가능한 프로그램 명령어들이 저장된 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 프로그램 명령어들은,
    데이터를 검색할 메모리 어드레스를 지정하는 프리페치 명령어의 인스턴스
    를 포함하고,
    상기 프리페치 명령어의 인스턴스는 상기 프로세서에 의해 실행되어, 상기 프로세서로 하여금, 상기 데이터 캐시가 상기 메모리 어드레스에 대응하는 데이터를 저장하고 있는지에 관계없이, 상기 메모리 어드레스로부터 상기 데이터를 검색하고, 상기 데이터를 상기 데이터 캐시에 저장하게 할 수 있는 컴퓨터 판독 가능 저장 매체.
  12. 제11항에 있어서, 상기 프로세서는 상기 프리페치 명령어의 상기 인스턴스를 개시하도록 구성되는 컴퓨터 판독 가능 저장 매체.
  13. 제11항에 있어서, 상기 프리페치 명령어는, 설정되는 경우에, 상기 데이터 캐시가 상기 메모리 어드레스에 대응하는 데이터를 저장하고 있는지에 관계없이, 상기 프로세서로 하여금 상기 메모리 어드레스로부터 상기 데이터를 검색하게 하는 비트를 포함하는 컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서, 상기 비트는 페이지 서술자 비트(page descriptor bit)인 컴퓨터 판독 가능 저장 매체.
  15. 제11항에 있어서, 상기 프로그램 명령어들은 데이터를 검색할 상이한 메모리 어드레스를 지정하는 상이한 타입의 프리페치 명령어의 인스턴스를 포함하고, 제2 타입의 상기 프리페치 명령어의 상기 인스턴스는 상기 상이한 메모리 어드레스에 대응하는 데이터가 상기 데이터 캐시 내에 현재 저장되지 않는 경우에만 상기 메모리로부터 상기 데이터를 검색하기 위해 상기 프로세서에 의해 실행될 수 있는 컴퓨터 판독 가능 저장 매체.
  16. 메모리; 및
    상기 메모리에 결합된 하나 이상의 프로세서
    를 포함하고,
    상기 하나 이상의 프로세서 중 적어도 하나의 프로세서는 데이터 캐시를 포함하고, 상기 적어도 하나의 프로세서는 메모리 어드레스를 지정하는 명령어의 인스턴스의 실행에 응답하여 상기 메모리 어드레스 상에서의 그의 데이터 캐시 내의 히트를 무시하고, 상기 메모리로부터 데이터를 프리페치하도록 구성되는 시스템.
  17. 제16항에 있어서, 상기 적어도 하나의 프로세서는 상기 메모리로부터 상기 데이터 캐시 내로 데이터를 프리페치하도록 구성되는 시스템.
  18. 제16항에 있어서,
    상기 메모리에 결합되고, 상기 메모리의 캐시 가능 이미지 버퍼 내에 이미지의 비트들을 저장하도록 구성된 이미지 신호 프로세서;
    상기 하나 이상의 프로세서를 포함하는 중앙 처리 유닛 - 상기 적어도 하나의 프로세서는 필터링 알고리즘을 실행하여, 프리페치된 데이터를 처리하고, 처리된 데이터를 상기 메모리에 기록하도록 구성됨 -; 및
    상기 메모리에 저장된 상기 처리된 데이터에 대해 비디오 연산들을 수행하도록 구성된 비디오 회로
    를 더 포함하는 시스템.
  19. 제16항에 있어서, 상기 하나 이상의 프로세서 각각은 캐시 일관성 프로토콜을 구현하지 않고 상기 명령어의 인스턴스를 실행하도록 구성되는 시스템.
  20. 제18항에 있어서,
    상기 하나 이상의 프로세서 중 제2 프로세서는 상기 메모리 어드레스를 지정하는 상기 명령어의 제2 인스턴스를 실행하는 것에 응답하여, 상기 메모리 어드레스 상에서의 그의 데이터 캐시 내의 히트를 무시하고, 상기 메모리로부터, 상기 비디오 회로에 의해 처리된 상기 데이터를 프리페치하도록 구성되고, 상기 제2 프로세서는 상기 제2 프로세서에 의해 프리페치된 상기 데이터에 대해 상기 필터링 알고리즘을 실행하도록 구성되고, 상기 제2 프로세서는 상기 제2 프로세서에 의해 수행된 상기 필터링 알고리즘으로부터 발생한 상기 데이터를 상기 메모리에 제1 메모리 어드레스에 기록하도록 구성되며,
    상기 제1 프로세서는 상기 메모리 어드레스를 지정하는 상기 명령어의 제3 인스턴스를 실행하는 것에 응답하여, 상기 메모리 어드레스 상에서의 그의 데이터 캐시 내의 히트를 무시하고, 상기 메모리로부터 상기 메모리 어드레스에서 데이터를 프리페치하도록 구성되는 시스템.
KR1020110112061A 2010-10-31 2011-10-31 프리페치 명령어 KR101350541B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/916,624 US8683135B2 (en) 2010-10-31 2010-10-31 Prefetch instruction that ignores a cache hit
US12/916,624 2010-10-31

Publications (2)

Publication Number Publication Date
KR20120049806A true KR20120049806A (ko) 2012-05-17
KR101350541B1 KR101350541B1 (ko) 2014-02-17

Family

ID=44925348

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110112061A KR101350541B1 (ko) 2010-10-31 2011-10-31 프리페치 명령어

Country Status (5)

Country Link
US (1) US8683135B2 (ko)
EP (1) EP2447829A3 (ko)
KR (1) KR101350541B1 (ko)
TW (1) TWI497413B (ko)
WO (1) WO2012058107A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114755B2 (en) * 2013-06-14 2018-10-30 Nvidia Corporation System, method, and computer program product for warming a cache for a task launch
US9779792B2 (en) * 2013-06-27 2017-10-03 Advanced Micro Devices, Inc. Register file with read ports clustered by entry
EP3033684A1 (en) * 2013-07-31 2016-06-22 Hewlett Packard Enterprise Development LP Indexing accelerator with memory-level parallelism support
US9459869B2 (en) * 2013-08-20 2016-10-04 Apple Inc. Intelligent caching for an operand cache
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US10503661B2 (en) * 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
CN105511838B (zh) * 2014-09-29 2018-06-29 上海兆芯集成电路有限公司 处理器及其执行方法
JP6341045B2 (ja) * 2014-10-03 2018-06-13 富士通株式会社 演算処理装置および演算処理装置の制御方法
US20170123796A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
US11182306B2 (en) 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US10983795B2 (en) * 2019-03-27 2021-04-20 Micron Technology, Inc. Extended memory operations
US10810784B1 (en) * 2019-07-22 2020-10-20 Nvidia Corporation Techniques for preloading textures in rendering graphics
US11321737B2 (en) * 2019-12-13 2022-05-03 Ebay Inc. Techniques of prefetching operation cost based digital content and digital content with emphasis

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128703A (en) * 1997-09-05 2000-10-03 Integrated Device Technology, Inc. Method and apparatus for memory prefetch operation of volatile non-coherent data
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6460115B1 (en) 1999-11-08 2002-10-01 International Business Machines Corporation System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism
US6606689B1 (en) 2000-08-23 2003-08-12 Nintendo Co., Ltd. Method and apparatus for pre-caching data in audio memory
US7260704B2 (en) 2001-11-30 2007-08-21 Intel Corporation Method and apparatus for reinforcing a prefetch chain
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US20040205286A1 (en) * 2003-04-11 2004-10-14 Bryant Steven M. Grouping digital images using a digital camera
US7023445B1 (en) * 2004-04-12 2006-04-04 Advanced Micro Devices, Inc. CPU and graphics unit with shared cache
US20050237329A1 (en) * 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US7353491B2 (en) * 2004-05-28 2008-04-01 Peter Pius Gutberlet Optimization of memory accesses in a circuit design
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US7493451B2 (en) 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit

Also Published As

Publication number Publication date
KR101350541B1 (ko) 2014-02-17
WO2012058107A1 (en) 2012-05-03
EP2447829A2 (en) 2012-05-02
EP2447829A3 (en) 2012-11-14
TWI497413B (zh) 2015-08-21
TW201234265A (en) 2012-08-16
US8683135B2 (en) 2014-03-25
US20120110269A1 (en) 2012-05-03

Similar Documents

Publication Publication Date Title
KR101350541B1 (ko) 프리페치 명령어
JP6837011B2 (ja) アルゴリズム整合、機能無効化、または性能制限による後方互換性
JP6236011B2 (ja) 物理的な行に共に記憶されたタグ及びデータを有するdramキャッシュ
KR101379524B1 (ko) 디스플레이 파이프 내에서의 스트리밍 변환
TWI514275B (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
JP5537533B2 (ja) ハードウェアのダイナミックなキャッシュパワー管理
US11023410B2 (en) Instructions for performing multi-line memory accesses
JP2004062280A (ja) 半導体集積回路
TWI499908B (zh) 用以維持共享記憶體編程中之釋出一致性的方法及系統
JP2015515687A (ja) 高速キャッシュシャットダウンのための装置および方法
US8359433B2 (en) Method and system of handling non-aligned memory accesses
TW201621671A (zh) 在多記憶體存取代理器動態更新硬體預取特性為互斥或共享的裝置與方法
US20080320176A1 (en) Prd (physical region descriptor) pre-fetch methods for dma (direct memory access) units
US9053039B2 (en) Installation cache
US10127153B1 (en) Cache dependency handling
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US8645791B2 (en) Data cache controller, devices having the same, and method of operating the same
JP6788566B2 (ja) コンピューティングシステム及びその動作方法
US20200081838A1 (en) Parallel coherence and memory cache processing pipelines
US11023162B2 (en) Cache memory with transient storage for cache lines
US20090182938A1 (en) Content addressable memory augmented memory
US20240054072A1 (en) Metadata-caching integrated circuit device
Devos et al. Building an application-specific memory hierarchy on FPGA
CN115145837A (zh) 预取数据的方法、装置和介质
Hovland et al. Throughput Computing on Future GPUs

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 7