KR20070059127A - 외부 에이전트에 의해 cpu 데이터 프리페치들을개시하기 위한 방법 및 장치 - Google Patents

외부 에이전트에 의해 cpu 데이터 프리페치들을개시하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20070059127A
KR20070059127A KR1020077007398A KR20077007398A KR20070059127A KR 20070059127 A KR20070059127 A KR 20070059127A KR 1020077007398 A KR1020077007398 A KR 1020077007398A KR 20077007398 A KR20077007398 A KR 20077007398A KR 20070059127 A KR20070059127 A KR 20070059127A
Authority
KR
South Korea
Prior art keywords
data
target
agent
cache
prefetch
Prior art date
Application number
KR1020077007398A
Other languages
English (en)
Other versions
KR100958967B1 (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 KR20070059127A publication Critical patent/KR20070059127A/ko
Application granted granted Critical
Publication of KR100958967B1 publication Critical patent/KR100958967B1/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, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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

Abstract

컴퓨팅 시스템에서, 외부 에이전트가 시스템 메모리로부터 프로그램을 실행하기 위한 데이터를 필요로 하는 타겟 프로세서와 연관된 캐시로의 데이터 프리페치들을 개시하기 위한 정렬이 제공된다. 외부 에이전트가 데이터를 가질 경우, 외부 에이전트는 프리페치 지시어를 생성하고 발행할 수 있다. 프리페치 지시어는 시스템 상호 접속 트랜잭션들과 함께 송신될 수 있거나 별도 트랜잭션으로서 시스템의 타겟 프로세서를 포함하는 장치들로 송신될 수 있다. 프리페치 지시어를 수신하고 인식할 때, 타겟 프로세서와 연관된 하드웨어 프리페처는 데이터를 캐시로 프리페치하기 위한 요청을 시스템 메모리로 발행할 수 있다. 타겟 프로세서는, 그것이 시스템 메모리의 데이터에 액세스하는 것보다 캐시의 데이터에 좀더 효율적으로 액세스할 수 있다. 소정 프리-프로세싱이 데이터 프리페치와 연관될 수도 있다.
컴퓨팅 시스템, 외부 에이전트, 데이터 프리페치, 프리페치 지시어, 시스템 메모리, 캐시, 하드웨어 프리페처, 프리-프로세싱

Description

외부 에이전트에 의해 CPU 데이터 프리페치들을 개시하기 위한 방법 및 장치 {METHOD AND APPARATUS FOR INITIATING CPU DATA PREFETCHES BY AN EXTERNAL AGENT}
1. 분야
본 설명서는 일반적으로 컴퓨팅 시스템에서의 메모리 액세스에 관한 것으로서, 좀더 구체적으로는, CPU 데이터 프리페치들을 개시하는 것과 메모리 의존 동작들의 성능을 증가시키도록 외부 에이전트에 의해 프리-프로세싱하는 것에 관한 것이다.
2. 설명
CPU들(Central Processing Units)은 통상적으로, 데이터를 CPU 캐시들로 예견하여(anticipatorily) 페치(fetch)하기 위해, 하드웨어로 프리페치들을 구현한다. 이것은, CPU에서 실행중인 프로그램이 데이터를 실제로 요구할 때, 메모리 액세스의 지연을 감소시키는데 도움이 된다. 프리페치로 인해, 시스템 메모리 액세스 지연보다 대체로 훨씬 작은 지연으로써, 캐시에서 데이터가 발견될 수 있다. 현재의 프리페칭 하드웨어는 메모리 액세스들의 공간적 및 시간적 액세스 패턴들을 추적하고 예견 요청들을, CPU를 대신해서, 시스템 메모리로 발행한다. 그러나, CPU와 연관된 프리페칭 하드웨어는 통상적으로, 다른 CPU, 칩셋, 또는 I/O(Input/Output) 장치와 같은 외부 에이전트(external agent)에 의해 호출될 수 없다. 외부 에이전트가 새로운 데이터를 가질 경우, 통상적인 프로토콜은, (외부 에이전트가 CPU라면, 새로운 데이터를 가진 CPU를 제외한) CPU 캐시들 모두가 새로운 데이터를 필요로 할 때, 그들의 사본들을 무효화하고 메모리로부터 새로운 데이터를 판독할 것을 요구한다. 다시 말해, 외부 에이전트 이외의 CPU가 새로운 데이터를 필요로 할 때마다, CPU는 메모리(또는 어쩌면 외부 에이전트로부터) 새로운 데이터를 판독해야 하므로, CPU의 고유한 캐시로부터 직접적으로 판독하는 것보다 훨씬 높은 지연을 초래한다. 결과적으로, 데이터 프로세싱 속도가 메모리 액세스로 인해 느려질 수 있다.
본 설명서의 사양들과 이점들은 본 설명서의 상세한 다음 설명으로부터 명백해질 것이다.
도 1은 범용 컴퓨팅 시스템을 예시하는 도면이다.
도 2는 외부 에이전트가 CPU 데이터 프리페치들을 개시할 수 있는 컴퓨팅 시스템의 기능 컴포넌트들의 도면이다.
도 3은 외부 에이전트가 데이터 프리페치들을 개시할 수 있는 프로세서의 도면이다.
도 4는 컴퓨팅 시스템에서 외부 에이전트에 의해 CPU 데이터 프리페치들을 개시하는데 사용되는 프리페치 지시어들의 예시적 포맷을 예시하는 테이블이다.
도 5는, 외부 에이전트가 CPU 데이터 프리페치들을 개시하는 것이 허용될 수 있는 일례의 컴퓨팅 시스템을 예시하는 도면이다.
도 6은, 외부 에이전트가 CPU 데이터 프리페치들을 개시하는 것이 허용될 수 있는 다른 일례의 컴퓨팅 시스템을 예시하는 도면이다.
도 7은 컴퓨팅 시스템에서 외부 에이전트에 의해 CPU 데이터 프리페치들을 개시하는 예시적 프로세스를 예시하는 흐름도이다.
본 발명의 실시예는 외부 에이전트에 의해 CPU 데이터 프리페치들을 개시하기 위한 방법 및 장치를 구비한다. 현재의 컴퓨팅 시스템에는, 데이터를 CPU 캐시들로 예견하여 페치하기 위해, 소프트웨어-구현형 프리페칭 메커니즘들 이외에, 프리페칭 하드웨어가 존재한다. 그러한 프리페칭 하드웨어는 메모리 액세스들의 공간적 및 시간적 액세스 패턴들에 기초해 시스템 메모리로부터 CPU 캐시들로 프리페치된 데이터를 가질 수 있다. 본 발명의 실시예에 따르면, 프리페칭 하드웨어의 기능들은, 칩셋, I/O 장치, 및 프리페칭 하드웨어와 연관된 CPU 이외의 CPU와 같은 외부 에이전트에 의해 호출될 수 있도록 하기 위해, 확장될 수도 있다. 외부 에이전트가 새로운 데이터를 가질 경우, 외부 에이전트는 새로운 데이터가 메모리로부터 타겟 CPU의 캐시들로 프리페치될 수 있도록 하기 위해, 타겟 CPU의 프리페칭 하드웨어로 독립 메시지 또는 "프리페치 지시어(prefetch directive)"를 발행할 수 있다. 일 실시예에서, 프리페치 지시어는 기존의 시스템 상호 접속 트랜잭션들과 함께 송신될 수 있다. 다른 실시예에서, 프리페치 지시어는 별도 트랜잭션으로서 송신될 수 있다. 더 나아가, 새로운 데이터를 프리페칭하는 것에 추가하여, 새로운 데이터를 프리-프로세싱(pre-processing)하는 것과 같은 다른 기능들도 호출될 수 있다.
본 발명의 "일 실시예" 또는 "실시예"에 대한 명세서에서의 언급은, 실시예와 관련하여 설명되는 특정 사양, 구조, 또는 특징이 본 발명의 하나 이상의 실시예에 포함된다는 것을 의미한다. 이와 같이, 명세서 전체에 걸쳐 다양한 위치들에서 등장하는 "일 실시예에서"라는 문구의 등장들이 반드시 동일한 실시예를 언급할 필요는 없다.
도 1은 범용 컴퓨팅 시스템(100)을 예시하는 도면이다. 컴퓨팅 시스템(100)은 타겟 CPU(110), 지원 플랫폼(120), 메모리(130), 및 하나 이상의 외부 에이전트(140)를 구비한다. 타겟 CPU는 외부 에이전트(140)로부터의 데이터를 프로세싱하는 프로그램을 실행할 수도 있다. 타겟 CPU는 컴퓨팅 시스템의 유일한 CPU 또는 다수 CPU들 중 하나일 수 있다. 타겟 CPU는 캐시(112) 및 하드웨어 프리페처(114)를 구비할 수 있다. 캐시(112)는, 타겟 CPU(110)가 메모리(130)로부터의 동일한 데이터에 액세스하는 것보다 이러한 캐시로부터의 데이터에 좀더 효율적으로 액세스할 수 있도록, 정렬된다(예를 들어, 캐시 액세스 지연은 메모리 액세스 지연보다 훨씬 작다). 하드웨어 프리페처(114)는 데이터를 타겟 CPU(110)를 대신해서 캐시(112)로 예견하여 페치하기 위한 요청을 메모리(130)로 송신할 수 있다. 하드웨어 프리페처는 타겟 CPU에 의한 메모리 액세스의 예측 가능한 시간적 및 공간적 액세스 패턴들에 기초해 프리페치 요청들을 발행할 수 있다. 도 1에는 캐시(112) 및 하드웨어 프리페처(114)가 타겟 CPU(110)내에 위치하는 것으로 도시되어 있지만, 그것들은 서로 분리될 수 있으며, 그것들 중 어느 하나 또는 양자 모두가 타겟 CPU로부터 분리될 수도 있다. 외부 에이전트(140)는 다수 CPU 시스템의 다른 CPU, 및/또는 칩셋 및 I/O 장치와 같은 다른 장치들을 구비할 수 있다. 외부 에이전트는 타겟 CPU(110)에서 실행중인 프로그램에 의해 요구되는 데이터를 제공할 수도 있다. 지원 플랫폼(120)은 타겟 CPU(110), 메모리(130), 및 외부 에이전트들(140) 사이에 필요한 인터페이스들을 제공할 수도 있다. 지원 플랫폼은, 메모리(130)를 출입중인 데이터의 I/O를 핸들링하기 위한 메모리 컨트롤러(125)를 구비할 수도 있다. 또한, 지원 플랫폼은 메모리와 외부 에이전트 사이의 데이터 트래픽을 용이하게 하기 위해 (도면에 도시되지 않은) 인터페이스 컴포넌트도 구비할 수 있다. 메모리(130)는, 타겟 CPU(110)에 의해 또는 시스템(100)에 포함된 다른 임의 장치에 의해 사용되는 (명령어들의 시퀀스들을 포함하는) 데이터를 저장할 수도 있다. 메모리(130)에 배치된 액세스 정보는, 타겟 CPU(110)에 의해 캐시(112)에 배치된 액세스 정보에 비해 상대적으로 느릴 수도 있다(예를 들어, 고지연일 수도 있다).
컴퓨팅 시스템(100)은 캐시 일관성 프로토콜(cache coherency protocol)을 실행할 수도 있는데, 그에 따라, 외부 에이전트가 새로운 데이터를 가질 경우, 외부 에이전트는, 타겟 CPU의 캐시(112)를 포함하는, 모든 CPU의 캐시들에서 새로운 데이터와 동일한 메모리 어드레스를 가진 데이터의 사본들 모두를 무효화하고, 새로운 데이터를 메모리(130)에 기입한다(이 프로토콜을 기입-무효화 프로토콜이라고 할 수도 있다). 다시 말해, 데이터의 소스가 외부 에이전트일 경우, 타겟 CPU(110)에서 실행중인 프로그램은 타겟 CPU(110)의 캐시(112)에서 데이터를 발견할 것을 기대할 수 없고(즉, 캐시 미스들(cache misses)이 초래되고), 프로그램이 데이터를 필요로 할 때마다 메모리로부터 데이터를 획득해야 한다. 메모리 액세스 지연은 통상적으로, 캐시 액세스 지연보다 훨씬 높기 때문에, 타겟 CPU에서 실행중인 프로그램의 성능이 저하될 수도 있다. 외부 에이전트로부터의 데이터의 캐시 미스들을 방지하기 위한 (그리고 그에 따라 타겟 CPU에서 실행중인 프로그램의 성능 향상을 돕기 위한) 일 접근 방법은, 타겟 CPU(110)를 대신해서 외부 에이전트가 데이터 프리페치들을 개시하는 것을 허용하는 것이다. 이 접근 방법을 사용하면, 외부 에이전트가 새로운 데이터를 가질 때, 외부 에이전트는 프리페치 지시어를 송신하는 것에 의해 하드웨어 프리페처(114)를 호출할 수 있다. 일단 프리페치 지시어를 수신하고 인식하고 나면, 하드웨어 프리페처는 메모리(130)로부터 새로운 데이터를 프리페치하여 그것을 캐시(112)에 배치하기 위한 메모리 요청을 발행할 수 있다. 이 접근 방법은 외부 에이전트에 타겟 CPU의 캐시에 이르는 직접적인 액세스를 부여하고, 이 접근 방법을 DCA(direct cache access)라고 할 수 있다. 일 실시예에서, 프리페치 지시어는 스누프(snoop) 트랜잭션들과 같은 기존의 시스템 상호 접속 트랜잭션들과 함께 송신될 수 있다. 다른 실시예에서, 프리페치 지시어는 별도 트랜잭션으로서 송신될 수도 있다.
도 2는, 외부 에이전트가 CPU 데이터 프리페치들을 개시할 수 있는 컴퓨팅 시스템의 기능 컴포넌트들의 블록도이다. 타겟 에이전트(210)는 CPU 또는 프로세서일 수 있고, DCA 소스 에이전트(260)로부터의 데이터를 필요로 하는 프로그램을 실행시킬 수도 있다. 타겟 에이전트는 메모리(250)로의 액세스보다 타겟 캐시(220)로의 좀더 빠르고 효율적인 액세스를 가진다. 타겟 에이전트는 하드웨어 프리페처(215;hardware prefetcher)를 구비한다. 하드웨어 프리페처(215)는, 타겟 에이전트(210)에 의한 과거의 공간적 및 시간적 메모리 액세스 패턴들에 기초해, 후속 메모리 액세스들을 예상할 수 있고, 데이터를 타겟 캐시(220)로 프리페치하기 위한 메모리 요청들을 발행할 수 있다. 또한, 하드웨어 프리페처는, DCA 소스 에이전트(260)에 의해 수신되거나 발생되는 새로운 데이터가 타겟 캐시로 프리페치될 수 있도록 하기 위해, DCA 소스 에이전트(260)에 의해 호출될 수도 있다. 타겟 캐시(220)는 타겟 에이전트에서 실행중인 프로그램들에 의해 필요한 데이터의 적어도 일부분을 저장한다. 일 실시예에서, 타겟 캐시는 타겟 에이전트와 연관될 수 있다. 다른 실시예에서, 타겟 캐시는 시스템의 임의 캐시일 수 있다. 타겟 캐시는, 타겟 에이전트가 이 캐시로부터의 데이터를 메모리(250)로부터의 동일한 데이터에 액세스하는 것보다 좀더 효율적으로 액세스할 수 있도록, 구현된다. 일 실시예에서, 타겟 에이전트(210), 하드웨어 프리페처(215), 및 타겟 캐시(220)는 물리적으로 서로 분리될 수 있다. 다른 실시예에서, 이들 3개 컴포넌트들은 물리적으로 서로 커플링될 수도 있다. 또 다른 실시예에서, 그들 중 임의적인 2개 컴포넌트들은 물리적으로 서로 커플링되지만 세번째 컴포넌트로부터는 물리적으로 분리될 수도 있다. 또 다른 실시예에서는, 하드웨어 프리페처(215)나 타겟 캐시(220) 중 어느 하나 또는 양자 모두가 물리적으로 타겟 에이전트(210)의 일부일 수도 있다.
요청 에이전트(requesting agent;230)는 새로운 데이터(270)를 프로세싱할 또는 새로운 데이터(270)를 프로세싱할 가능성이 높고 새로운 데이터의 특성들에 대해 알고 있는 오퍼레이팅 시스템(OS) 또는 등가 소프트웨어를 실행중인 CPU 또는 프로세서일 수 있다. 새로운 데이터의 특성들은 메모리 어드레스 및 DCA 선호들(DCA preferences)을 구비할 수 있다. 메모리 어드레스는, I/O 장치 또는 다른 장치들로부터의 데이터가 메모리에 배치되는 장소를 지시한다. DCA 선호들은 DCA 인에이블먼트 지시자(DCA enablement indicator), 타겟 식별자, 및 타겟 캐시 배치 속성들을 포함할 수 있다. DCA 인에이블먼트 지시자는, DCA 소스 에이전트로부터의 새로운 데이터가 타겟 에이전트의 캐시로 프리페치될 수 있음을 지시하고; 타겟 식별자는 타겟 에이전트의 캐시를 식별하며; 타겟 배치 속성들은 새로운 데이터가 타겟 에이전트의 캐시에 배치되는 방법을 지시한다. 요청 에이전트는 타겟 에이전트와 상이하거나 동일할 수 있다.
라우팅 지원 플랫폼(240)은, DCA 트랜잭션들이 데이터를 타겟 캐시(220)로 라우팅하는데 그리고 또한 타겟 캐시와 메모리(250) 사이에서 일관성을 보장하는데 필요한 지원을 제공한다. 라우팅 지원 플랫폼은 DCA 소스 에이전트들(예를 들어, DCA 소스 에이전트(260))과 CPU들(예를 들어, 타겟 에이전트(210))을 가교하는 칩셋일 수 있다. 라우팅 지원 플랫폼(240)은 메모리(250)를 출입하는 데이터의 I/O를 핸들링하기 위한 메모리 컨트롤러를 구비할 수도 있다. 메모리(250)는 타겟 에이전트(210), DCA 소스 에이전트(260), 및/또는 시스템에 포함된 다른 임의 장치에 의해 사용되는 (명령어들의 시퀀스들을 포함하는) 데이터를 저장할 수도 있다. 일 실시예에서, 메모리 컨트롤러는 라우팅 지원 플랫폼의 일부일 수 있다. 다른 실시 예에서, 메모리 컨트롤러는 타겟 에이전트의 일부일 수 있다. 부가적으로, 라우팅 지원 플랫폼은 DCA 소스 에이전트와 분리될 수도 있지만, 그것들이 함께 조합되거나 커플링될 수도 있다. 예를 들어, 칩셋은 새로운 데이터의 소스일 수도 있고, 타겟 에이전트 캐시로의 데이터 프리페치들을 개시할 수도 있다.
도 2에 도시된 컴퓨팅 시스템은 DCA 소스 에이전트(260)를 구비할 수 있다. 도 2는 하나의 DCA 소스 에이전트만을 나타내지만, 컴퓨팅 시스템에 좀더 많은 다수의 DCA 소스 에이전트들이 존재할 수도 있다. DCA 소스 에이전트(260)는 I/O 어댑터, 네트워크 인터페이스 컨트롤러, 또는 디스크 어댑터를 구비할 수도 있다. 요청 에이전트(230)는, DCA 소스 에이전트가 새로운 데이터(270)를 가질 때에 DCA 소스 에이전트가 사용하기 위한 새로운 데이터의 특성들을 DCA 소스 에이전트로 송신한다. DCA 인에이블먼트 지시자가 DCA 기능이 인에이블이라고 지시하면, DCA 소스 에이전트는, 시스템의 상이한 캐시들 사이에서 일관성을 유지하면서, 새로운 데이터를 타겟 캐시(220)로 직접적으로 송신할 수도 있다. 다른 실시예에서는, DCA 소스 에이전트를 대신해서 동작중인 라우팅 지원 플랫폼(240)이, 타겟 캐시(220)를 포함하는, 모든 CPU 캐시들의 새로운 데이터와 동일한 메모리 어드레스를 가진 데이터의 모든 사본들이 무효화된다는 것("무효화 트랜잭션")을 보장하기 위해, 스누프들과 같은 일관성 트랜잭션들을 개시할 수도 있다. 무효화 트랜잭션에 대한 CPU의 응답은 그것의 캐시들에서의 (새로운 데이터와 동일한 메모리 어드레스를 가진 데이터 사본이 배치되는) 캐시 라인의 상태에 의존한다. 캐시 라인이 CPU의 캐시들 중 어느 하나에서 변경(Modified;M) 상태에 있다면, 데이터는 CPU 캐시들로부 터 메모리로 퇴거(후기입;write-back)된다. 메모리 컨트롤러는 CPU 후기입을 (DCA 소스 에이전트로부터의 새로운 데이터를 메모리에 기입하기 위한) 기입 트랜잭션과 병합하고 병합된 데이터를 메모리로 송신한다. 기입 트랜잭션이 완전한 캐시-라인 기입이라면, CPU 후기입은 무시될 수 있다. 기입 트랜잭션이 부분적 캐시-라인 트랜잭션이라면, 그것은 CPU에 의해 퇴거되는 완전한 캐시-라인과 병합된다. 캐시 라인이 CPU의 캐시에서 M 상태가 아닌 것으로 밝혀지면, CPU 후기입이 발생하지 않을 수도 있다.
무효화 트랜잭션을 개시하는 것에 추가하여, DCA 소스 에이전트는 요청 에이전트로부터 수신된 DCA 선호들을 인코딩하는 프리페치 지시어를 생성하여, 라우팅 지원 플랫폼(240)으로부터의 지원으로, 모든 CPU들로 프리페치 지시어를 발행할 수도 있다. 일 실시예에서, 프리페치 지시어는 무효화 트랜잭션과 함께 송신될 수 있다. 다른 실시예에서, 프리페치 지시어는 독립적인 별도 트랜잭션으로서 송신될 수도 있다. 일단 타겟 에이전트와 연관된 하드웨어 프리페처(215)가 프리페치 지시어를 수신 및 인지하고 나면, 하드웨어 프리페처는, 새로운 데이터의 DCA 선호들에 따라, 타겟 캐시(220)로 새로운 데이터(270)를 프리페치하기 위한 요청을 메모리로 발행할 수 있다. 그후, 타겟 에이전트는 프로그램을 실행하기 위한 새로운 데이터를 메모리로부터가 아니라 타겟 캐시로부터 직접적으로 판독할 수 있고, 그에 따라, 데이터 판독 지연을 감소시켜 실행 프로그램의 성능을 향상시킬 수 있다.
더 나아가, 하드웨어 프리페처(215)는, 프리페치 지시어의 명령어들에 따라, 타겟 캐시(220)에서 데이터를 입수하는 것을 가능하게 하기 전에, 새로운 데이터를 프리-프로세싱할 수도 있다. 데이터를 프리-프로세싱하기 위한 명령어들은 프리페치 지시어의 일부분인 DCA 선호들로 인코딩될 수 있다. 프리-프로세싱 선택은, 데이터를 캐시로 전달하기 전에, 프리페치된 데이터를 새로운 포맷으로 변환하는 융통성을 제공한다. 그러한 프리-프로세싱은, 예를 들어, 디코딩, 압축 해제, 복호화 등과 같은 데이터 프로세싱의 임의 유형을 구비할 수 있다.
도 3은, 도 2에 도시된 타겟 에이전트(210)로서 동작할 수도 있는 프로세서(300)의 도면이다. 프로세서(300)는 (예를 들어, 다중 프로세서 컴퓨팅 시스템의) 외부 에이전트로서 동작할 수도 있다. 프로세서(300)는 (도 3에 도시되지 않은) 하나 이상의 프로세싱 코어들을 구비할 수도 있다. 각각의 프로세싱 코어는 그것과 연관된 자신만의 캐시를 가질 수 있거나, 하나 이상의 프로세싱 코어들이 하나 이상의 캐시들을 공유할 수도 있다. 일 실시예에서, 프로세싱 코어를 위한 캐시는 프로세싱 코어와 물리적으로 집적되어 프로세서(300)내에 배치될 수 있다. 다른 실시예에서, 프로세싱 코어를 위한 캐시는 프로세싱 코어와 물리적으로 분리되어 프로세서(300) 내부에 또는 외부에 배치될 수 있다. 프로세서(300)는 하드웨어 프리페처(310)를 구비할 수 있다. 하드웨어 프리페처(310)는, 프로세서(300)의 프로세싱 코어들에 의한 과거의 공간적 및 시간적 메모리 액세스 패턴들에 기초해, 후속 메모리 액세스들을 예상할 수 있고, 데이터를 요청 프로세싱 코어의 캐시로 프리페치하기 위한 메모리 요청들을 발행할 수 있다. 또한, 프로세서(300)는, 프로세서(300)가 타겟 에이전트로서 동작할 때, 외부 에이전트가 프로세서(300)의 하나 이상의 프로세싱 코어들에 의해 필요한 새로운 데이터를 가질 경우, 외부 에이 전트(예를 들어, 도 2에 도시된 DCA 소스 에이전트(260))에 의해 발행된 프리페치 지시어를 인식하고 수신하기 위한 프리페치 지시어 수신 메커니즘(330)도 구비할 수 있다. 프리페치 지시어는 무효화 트랜잭션과 함께 또는 별도 트랜잭션으로서 프로세서(300)로 송신될 수도 있다.
일단 프리페치 지시어 수신 메커니즘(330)에 의해 프리페치 지시어가 수신되고 나면, 프리페치 지시어는 프리페치 지시어에 포함된 정보를 디코딩하기 위한 프리페치 지시어 디코딩 메커니즘(340)으로 전달될 수 있다. 프리페치 지시어는 적어도 프리페치될 데이터의 메모리 어드레스 및 수신지(예를 들어, 특정 프로세싱 코어의 캐시)를 구비할 수 있다. 프리페치 지시어 디코딩 메커니즘은, 하드웨어 프리페처가, 프리페치 지시어 디코딩 메커니즘(320)에 의해 제공되는 메모리 어드레스 및 수신지 정보에 기초해, 메모리로부터의 데이터를 수신 캐시로 프리페치할 수 있도록 하기 위해, 디코딩된 정보를 하드웨어 프리페처(310)로 전달할 수 있다. 프리페치 지시어는, 프리페치된 데이터를 수신 캐시로 전달하기 전에, 프리페치된 데이터를 먼저 프리-프로세싱(예를 들어, 복호화, 디코딩, 압축 해제, 다운샘플링 등)할 것을 요구하기 위한 정보도 포함할 수 있다. 프로세서는 프리페치된 데이터를 프리페치 지시어에 포함된 정보에 따라 프리-프로세싱하기 위한 프리-프로세싱 메커니즘(320)을 구비할 수도 있다.
더 나아가, 프로세서(300)는, 프로세서(300)가 타겟 에이전트에 의해 요구되는 새로운 데이터를 가진 외부 에이전트로서 동작할 때, 프리페치 지시어를 타겟 에이전트로 송신하기 위한 프리페치 지시어 송신 메커니즘(350)도 구비할 수 있다. 프리페치 지시어는 일관성 트랜잭션(예를 들어, 무효화 트랜잭션)과 함께 또는 별도 트랜잭션으로서 타겟 에이전트로 송신될 수 있다. 도 3에 도시되지는 않았지만, 프로세서(300)는, 프로세서가 타겟 에이전트의 캐시로 송신되어야 하는 새로운 데이터를 가질 경우, 프리페치 지시어를 생성하는 메커니즘을 더 구비할 수도 있다.
도 4는 컴퓨팅 시스템의 외부 에이전트에 의해 CPU 데이터 프리페치들을 개시하는데 사용되는 프리페치 지시어의 예시적 포맷을 예시하는 테이블이다. 프리페치 지시어는 다수 필드들(예를 들어, 이 일례에서는 6개 필드들)을 구비할 수 있다. 필드(410)는 메시지를 프리페치 지시어로서 식별하기 위한 메시지 연산 코드(opcode)를 포함할 수 있다. 필드(420)는, 그로부터 데이터가 프리페치될 베이스 어드레스(base address)인 메모리 어드레스를 포함할 수 있다. 필드(420)는, 베이스 어드레스로부터 시작하는, 프리페치될 바이트들의 수인 데이터의 길이도 포함할 수 있다. 데이터의 길이는, 디폴트 값(예를 들어, 단일 캐시 라인)이 사용될 수도 있으므로, 선택적일 수 있다. 필드(430)는, 타겟 에이전트의 타겟 캐시 또는 타겟 프로세싱 코어의 식별 정보("타겟 ID") 및 시스템이 프리페치 지시어를 타겟으로 라우팅하는 것을 허용하기 위한 임의의 다른 정보를 수반할 수 있는 라우팅 정보를 포함할 수 있다. 필드(440)는 하드웨어 프리페처에 의해 발행된 프리페치 요청의 선택적인 우선 순위 정보를 포함할 수 있다. 프리페치들은 아키텍처 상태에 전혀 영향을 미치지 않으므로, 프리페치들은, 시스템 정체(system congestion)를 제어하기 위해, 하드웨어 프리페처에 의해 무작위로 무시될 수 있다. 성능(예 를 들어, 서비스 품질)의 소정 레벨들을 요구하는 일부 애플리케이션들의 경우, 프리페치 지시어가 최고 우선 순위의 프리페치를 요구할 수도 있으므로, 프리페치 요청이 최소한 완전히 무시되지는 않을 것이다. 필드(450)는, 계층 구조가 존재한다면 캐시 레벨의 선택을 허용할 수 있으며 데이터의 프리페치된 블록이 캐시의 기존 데이터를 대체하게 될 방법 및 캐시로 이동된 후의 새로운 블록들의 상태를 제어할 수도 있는 선택적인 캐시 속성들을 포함할 수 있다. 필드(460)는, 데이터를 캐시로 전달하기 전에, 요구되는 프리-프로세싱을 개시할 것을 하드웨어 프리페처에 지시하는 선택적인 프리-프로세싱 명령어들을 포함할 수 있다. 도 4에 도시된 프리페치 지시어의 예시적 포맷은 6개 필드들을 구비할 수 있지만, 필드들의 수, 필드 각각의 사이즈, 및 필드 각각의 해석은 각각의 구현에 의존할 수 있다. 당업자라면, 개시된 이 일례의 정신 및 범위내에 해당되는 것으로 간주되는, 특정 구현들을 위한 변경 포맷들을 쉽게 떠올릴 수 있을 것이다.
도 5는, 외부 에이전트가 CPU 데이터 프리페치들을 개시하는 것이 허용될 수 있는 일례의 컴퓨팅 시스템(500)을 예시하는 도면이다. 컴퓨팅 시스템(500)은 N개의 프로세서들(여기에서, N은 양의 정수;510A, ..., 510N), 칩셋(520), 시스템 메모리(550), PCI(Peripheral Component Interconnect) 버스(560), 및 PCI 버스에 접속된 하나 이상의 I/O 장치(570)를 구비한다. 각각의 프로세서(예를 들어, 510A)는 하나 이상의 프로세싱 코어들(512A, 512B, ..., 512M)을 구비할 수 있다. 각각의 프로세싱 코어는 다른 프로세서(예를 들어, 프로세서(510N)) 및/또는 다른 장치들(예를 들어, I/O 장치(570))로부터의 데이터를 필요로 하는 프로그램을 실행할 수도 있다. 일 실시예에서, 각각의 프로세싱 코어는, 도면에 도시된 바와 같이, 514A, 514B, ..., 514M과 같은 자신만의 캐시를 가질 수 있다. 다른 실시예에서, 프로세싱 코어들 중 일부 또는 전부는 캐시를 공유할 수도 있다. 통상적으로, 프로세싱 코어는 시스템 메모리(550)의 데이터에 액세스하는 것보다 좀더 효율적으로 자신의 캐시 데이터에 액세스할 수 있다. 또한, 각각의 프로세서(예를 들어, 510A)는, 이/이들 프로세싱 코어(들)에 의한 공간적 및 시간적 메모리 액세스 패턴들에 기초해, 시스템 메모리로부터의 데이터를 그것의 프로세싱 코어(들) 중 하나 이상과 연관된 캐시로 예견하여 페치하기 위한 하드웨어 프리페처(예를 들어, 프로세서 510A를 위한 516)를 구비할 수 있다.
칩셋(520)은 메모리 컨트롤러 허브(MCH;530) 및 I/O 컨트롤러 허브(ICH;540)를 더 구비할 수 있다. MCH(530)는 시스템 메모리(550)와의 트래픽을 제어하기 위해 시스템 메모리(550)에 커플링되어 있는 메모리 컨트롤러(532)를 포함할 수도 있다. 시스템 메모리(550)는, 프로세서들 또는 시스템(500)에 포함된 임의의 다른 장치에 의해 실행되는 명령어들의 시퀀스들을 포함하는, 데이터를 저장할 수도 있다. MCH(530)는 허브 인터페이스를 통해 ICH(540)에 커플링될 수 있다. ICH(540)는 시스템의 입/출력(I/O) 장치들에 인터페이스를 제공한다. ICH(540)는, PCI(Peripheral Component Interconnect) 버스(560)에 인터페이스를 제공하는 PCI 브릿지(542)를 포함할 수 있다. PCI 브릿지(542)는 프로세서(510)와 I/O 장치들(570;예를 들어, 오디오 장치 및 디스크 드라이브) 사이에 데이터 경로를 제공할 수 있다. 도시되지는 않았지만, 다른 장치들도 PCI 버스(560) 및 ICH(540)에 커플 링될 수 있다.
프로세서의 하드웨어 프리페처(예를 들어, 프로세서(510A) 내부의 516) 또한 외부 에이전트(예를 들어, 다른 프로세서 및/또는 I/O 장치)에 의해 호출될 수 있다. 타겟 프로세싱 코어(예를 들어, 512B)가 프로그램을 실행하는데 필요한 새로운 데이터를 외부 에이전트가 가지고 있을 경우, 외부 에이전트는 모든 프로세서들로 프리페치 지시어를 송신할 수 있다. 프리페치 지시어는 타겟 프로세싱 코어의 식별 정보("타겟 코어 ID")를 인코딩한다. 타겟 코어 ID는, 요청 에이전트에 의해 외부 에이전트로 송신되는 새로운 데이터의 특성들에 포함된다. 요청 에이전트는 타겟 코어 또는, 타겟 코어가 배치되어 있는 프로세서와 동일하거나 상이한 프로세서 내부의 임의의 다른 프로세싱 코어들과 동일할 수 있다. 요청 에이전트는 오퍼레이팅 시스템(OS) 또는 다른 소프트웨어를 실행할 수 있고, 새로운 데이터가 라우팅되거나 프로세싱되는 방법에 대한 지식을 가진다. 타겟 프로세싱 코어와 연관된 하드웨어 프리페처("타겟 하드웨어 프리페처")가 프리페치 지시어를 수신하고 타겟 프로세싱 코어의 식별 정보를 인식할 때, 그것은 새로운 데이터를 타겟 프로세싱 코어와 연관된 캐시로 프리페치하기 위한 요청을 시스템 메모리로 발행한다. 프리페치 지시어의 사용이, 외부 에이전트에 의한 직접적인 국지적 캐시 액세스를 허용한다. 결과적으로, 타겟 프로세싱 코어는 시스템 메모리 대신에 그것의 캐시로부터 새로운 데이터를 직접적으로 판독할 수 있다. 더 나아가, 프리페치 지시어는, 새로운 데이터를 타겟 캐시로 전달하기 전에, 새로운 데이터를 먼저 프리-프로세싱할 것을 하드웨어 프리페처에 지시할 수도 있다.
프로세서(예를 들어, 510A) 및 칩셋(520)은 FSB(front side bus;580)를 통해 접속될 수 있다. 기존의 BRIL(Bus-Read-Invalidate-Line) 트랜잭션 프로토콜을 연장하는 것에 의해, FSB에서, 외부 에이전트에 의한 캐시로의 직접적인 액세스가 지원될 수 있다. FSB 에이전트(예를 들어, 프로세서, 칩셋, 또는 I/O 장치)는, 그것이 캐시 라인을 변경하기 위한 의도를 가지고 있을 때, BRIL 트랜잭션을 사용한다. 0이 아닌 길이의 BRIL(BRIL)은 에이전트에 의해 완전한 캐시-라인을 에이전트의 현재 위치(프로세서의 캐시 또는 시스템 메모리 중 어느 하나)로부터 Exclusive 캐시 상태의 에이전트 캐시로 판독하는데 사용된다. 0 길이의 BRIL(BRIL.O 또는 BIL)은 이미 공유 상태의 캐시-라인을 가지고 있는 에이전트에 의해 사용되고, 이제 에이전트는 캐시 라인을 변경하려 한다. BIL 트랜잭션들은, I/O 장치들이 캐시 일관성 메모리에 기입하는 경우, 칩셋에 의해 프로세서 캐시들에서 캐시 라인들의 선행 사본들을 무효화하는데도 사용될 수 있다. 프리페치 지시어는 BIL 트랜잭션("변경된 BlL 트랜잭션")과 함께 송신될 수도 있다. 변경된 BIL 트랜잭션을 수신할 때, 모든 프로세서들은, 수신 프로세서 외부의 에이전트에 의해 수신된 새로운 데이터와 동일한 어드레스를 가진, 그들의 캐시들에서의 데이터를 무효화할 것이고, 데이터를 파기하거나 데이터를 시스템 메모리에 역 기입할 것이다. 프리페치 지시어가, 타겟 프로세서의 타겟 코어 또는 새로운 데이터가 송신될 타겟 캐시의 식별 정보를 가지고 있기 때문에, 타겟 프로세서의 하드웨어 프리페처는 프리페치 지시어를 인식할 것이고 시스템 메모리로, 새로운 데이터를 프리페치하기 위한 요청을 발행할 것이다. 다른 방법으로, 프리페치 지시어는 FSB 프로토콜과는 분리된 상호 접속 트랜잭션으로서 송신될 수도 있다. 이러한 다른 접근 방법을 사용하면, 프리페치 지시어는, 외부 에이전트가 새로운 데이터를 가지게 된 시점과 새로운 데이터가 프로세서의 타겟 코어에 의해 판독되는 시점 사이의 임의 시점에서 송신될 수 있다.
도 6은, 외부 에이전트가 CPU 데이터 프리페치들을 개시하는 것이 허용될 수 있는 일례의 다른 컴퓨팅 시스템(600)을 예시하는 도면이다. 컴퓨팅 시스템(600)은 2개의 프로세서들(610A 및 610B), I/O 허브(IOH;630), 메모리들(620A 및 620B), PCI(Peripheral Component Interconnect) 버스(660), 및 PCI 버스에 접속된 하나 이상의 I/O 장치(650)를 구비한다. 각각의 프로세서(예를 들어, 610A)는 하나 이상의 프로세싱 코어들(611A, 611B, ..., 611M)을 구비할 수 있다. 각각의 프로세싱 코어는 다른 프로세서(예를 들어, 프로세서(610B)) 및/또는 다른 장치들(예를 들어, I/O 장치(650))로부터의 데이터를 필요로 하는 프로그램을 실행할 수도 있다. 일 실시예에서, 각각의 프로세싱 코어는 도면에 도시된 바와 같이 613A, 613B, ..., 613M과 같은 자신만의 캐시를 가질 수 있다. 다른 실시예에서는, 프로세싱 코어들의 일부 또는 전부가 캐시를 공유할 수도 있다. 통상적으로, 프로세싱 코어는, 그것이 메모리(620A 또는 620B)의 데이터에 액세스하는 것보다 그것의 캐시의 데이터에 좀더 효율적으로 액세스할 수 있다. 또한, 각각의 프로세서(예를 들어, 610A)는, 이/이들 프로세싱 코어(들)에 의한 공간적 및 시간적 메모리 액세스 패턴들에 기초해, 데이터를 메모리(620A)로부터 그것의 프로세싱 코어(들) 중 하나 이상과 연관된 캐시로 예견하여 페치하기 위한 하드웨어 프리페처(예를 들어, 프로세서 610A를 위한 615)도 구비할 수 있다. 프로세서(예를 들어, 610A)는 메모 리와의 트래픽을 제어하기 위해 메모리(예를 들어, 620A)에 커플링된 메모리 컨트롤러(예를 들어, 619)를 더 구비할 수도 있다. 부가적으로, 프로세서는 프로세서와 IOH(630) 사이에서 점대점 접속들(point-to-point connections)을 제공하기 위한 링크 인터페이스(617)를 구비할 수도 있다. 도면은 2개의 프로세서들만을 나타내지만, 시스템(600)은 단 하나의 프로세서 또는 2 이상의 프로세서들을 구비할 수도 있다.
메모리들(620A 및 620B) 모두는, 프로세서들 또는 시스템(600)에 포함된 임의의 다른 장치에 의해 실행되는 명령어들의 시퀀스들을 포함하는, 데이터를 저장한다. IOH(630)는 시스템의 입/출력(I/O) 장치들에 인터페이스를 제공한다. IOH는 PCI 버스(660)에 커플링될 수 있다. I/O 장치(650)는 PCI 버스에 접속될 수 있다. 도시되지는 않았지만, 다른 장치들도 PCI 버스 및 ICH에 커플링될 수 있다.
도 5에 도시된 시스템(500)과 유사하게, 프로세서의 하드웨어 프리페처(예를 들어, 프로세서(610A) 내부의 615) 또한, 프리페치 지시어의 사용을 통해 외부 에이전트에 의한 국지적 캐시로의 직접적인 액세스를 허용하기 위해, 외부 에이전트(예를 들어, 다른 프로세서 및/또는 I/O 장치)에 의해 호출될 수 있다. 프리페치 지시어가 그러한 트랜잭션들(예를 들어, 무효화 트랜잭션)을 따라 송신될 수 있도록 점대점 접속 기반의 일관성 트랜잭션들을 변경하는 것에 의해, 프로세서들과 IOH 사이의 점대점 접속들을 통해 그러한 직접적 액세스가 지원될 수 있다. 다른 방법으로는, 프리페치 지시어가 점대점 접속 기반의 일관성 프로토콜과는 별도의 상호 접속 트랜잭션으로서 송신될 수도 있다.
도 7은 컴퓨팅 시스템에서 외부 에이전트에 의해 CPU 데이터 프리페치들을 개시하는 예시적 프로세스를 예시하는 흐름도이다. 블록 710에서, 타겟 에이전트(예를 들어, 프로세서의 프로세싱 코어)는 DCA 소스 에이전트(예를 들어, I/O 장치, 다른 프로세서, 또는 칩셋)로부터 유래하는 데이터를 사용할 수 있는 프로그램을 실행할 수도 있다. 블록 720에서, DCA 소스 에이전트는 새로운 데이터를 수신하거나 발생시킬 수 있다. 또한, 블록 720에서는, 요청 에이전트가, 메모리 어드레스 및 DCA 선호들을 포함하는, 새로운 데이터의 DCA 소스 에이전트 특성들을 송신할 수도 있다. 블록 730에서는, 새로운 데이터의 DCA 선호들을 인코딩하는 프리페치 지시어가 생성되어 타겟 에이전트 뿐만 아니라 DCA 소스 에이전트에 의한 다른 프로세서들로도 송신될 수 있다. 일 실시예에서, 프리페치 지시어는, 캐시 일관성 트랜잭션들의 일부인 무효화 트랜잭션과 함께 송신될 수 있다. 예를 들어, 프리페치 지시어는 무효화 트랜잭션과 함께 힌트(hint)로서 송신될 수 있다. 힌트는, 하드웨어 프리페처가 시스템 메모리로 프리페치 요청을 발행할 수 있도록 하기 위해, 타겟 에이전트와 연관된 하드웨어 프리페처에 의해 수신 및 인식될 것이다. 다른 실시예에서, 프리페치 지시어는 별도 트랜잭션으로서 송신될 수 있다. 프리페치 지시어는 타겟 에이전트에 관한 정보를 가지고 있으므로, 프리페치 지시어는, 별도 트랜잭션으로서, 타겟 에이전트로 직접 송신될 수도 있다. 부가적으로, 프리페치 지시어는, 별도 트랜잭션으로서, DCA 에이전트가 새로운 데이터를 가진 이후에 그리고 타겟 에이전트가 새로운 데이터를 판독하기 이전에 언제든지 송신될 수 있다.
블록 740에서는, 타겟 에이전트와 연관된 하드웨어 프리페처에 의해 프리페치 지시어가 수신 및 인식될 수 있다. 블록 750에서는, 모든 일관성 캐시들에서, DCA 소스 에이전트의 새로운 데이터와 동일한 메모리 어드레스를 가진, 데이터의 사본들이 파기될 수 있거나 메모리로 역 기입될 수 있다. 메모리의 역 기입은, (DCA 소스 에이전트로부터의 새로운 데이터를 메모리에 기입하기 위한) 기입 트랜잭션이 부분적인 캐시-라인 트랜잭션이고 캐시의 데이터가 변경된 상태일 때 발생한다. 이 상황에서, 기입 트랜잭션은 CPU에 의해 퇴거된 완전한 캐시-라인과 병합된다. 블록 760에서는, 새로운 데이터가 메모리에 기입될 수 있다. 새로운 데이터는 타겟 캐시로부터 퇴거된 데이터와 병합될 수 있고, 병합된 데이터가 메모리에 기입된다. 블록 770에서는, 타겟 에이전트와 연관된 하드웨어 프리페처가 새로운 데이터(또는 병합된 데이터)를 타겟 캐시로 프리페치하기 위한 요청을 메모리로 발행할 수 있다. 프리페치 지시어가 프리-프로세싱 명령어들을 포함한다면, 새로운 데이터(또는 병합된 데이터)는 타겟 캐시로 전달되기 전에 명령어들에 따라 프리-프로세싱된다. 블록 780에서, 타겟 에이전트는 타겟 캐시로부터 새로운 데이터(또는 병합된 데이터)를 판독할 수 있다.
도 7의 블록들은 이러한 특정 순서로 도시되어 있지만, 그러한 순서는 예시의 편의를 위한 것일 뿐이다. 각각의 상이한 실시예에서, 블록들의 순서는 상이할 수도 있다. 일례로써, 프리페치 지시어가 생성되어 별도 트랜잭션으로서 송신될 수 있을 때, 그것은 타겟 에이전트에 의해 새로운 데이터가 판독되기 이전에(그러나, DCA 에이전트가 새로운 데이터를 가진 이후에) 언제든지 송신될 수 있다. 또 한, 타겟 에이전트는, 블록 710으로만 제한되지 않으면서, 도 7에 도시된 전체 프로세스를 통해 프로그램을 실행할 수도 있다. 더 나아가, 도 7의 블록들은 조합, 분리, 또는 재정렬되어 동일한 결과를 실현할 수도 있다.
개시된 기술들의 예시적 실시예가 도 1 내지 도 7의 도면들을 참조하여 설명되지만, 당업자들이라면, 본 발명을 구현하는 다수의 다른 방법들이 다르게 사용될 수도 있다는 것을 쉽게 알 수 있을 것이다. 예를 들어, 기능 블록들 또는 프로세스 절차들의 실행 순서가 변경될 수 있고, 그리고/또는 설명된 기능 블록들 또는 프로세스 절차들의 일부가 변경, 제거, 또는 조합될 수도 있다.
선행 설명에서, 본 설명서의 다양한 태양들이 설명되었다. 설명의 목적들을 위해, 본 설명서에 대한 완전한 이해를 제공하기 위해 구체적인 숫자들, 시스템들, 및 구성들이 기술되었다. 그러나, 이 설명서의 혜택을 누린 당업자라면, 본 설명서가 구체적인 세부 사항들없이도 실시될 수 있다는 것을 분명히 알 수 있을 것이다. 다른 경우들로서, 주지의 사양들, 컴포넌트들, 또는 모듈들은 본 설명서를 불명료하게 하는 것을 방지하기 위해 생략되거나, 간략화되거나, 조합되거나, 분리되었다.
개시된 기술들은 설계의 시뮬레이션, 에뮬레이션, 및 가공을 위한 다양한 설계 표현들 또는 포맷들을 가질 수 있다. 설계를 표현하는 데이터는 설계를 다수 방식들로 표현할 수 있다. 첫번째, 시뮬레이션들에서 유용한 바와 같이, 하드웨어는, 본질적으로, 설계된 하드웨어가 수행할 것으로 예상되는 방법의 컴퓨터화된 모델을 제공하는 하드웨어 기술어(hardware description language) 또는 다른 기능 기술어(functional description language)를 사용해 표현될 수 있다. 하드웨어 모델은, 그것이 실제로 의도한대로 기능하는지를 판정하기 위해 하드웨어 모델에 적합한 특정 테스트를 적용하는 시뮬레이션 소프트웨어를 사용해 모델이 시뮬레이션될 수 있도록 하기 위해, 컴퓨터 메모리와 같은 저장 매체에 저장될 수 있다. 일부 실시예들에서는, 시뮬레이션 소프트웨어가 매체에 기록되거나, 캡처되거나, 포함되지 않는다.
부가적으로, 로직 및/또는 트랜지스터 게이트들을 가진 회로 레벨 모델이 설계 프로세스의 소정 단계들에서 발생될 수도 있다. 이 모델은 유사하게 시뮬레이션될 수 있는데, 간혹은 프로그램 가능 로직을 사용해 모델을 형성하는 전용 하드웨어 시뮬레이터들에 의해 시뮬레이션될 수도 있다. 시뮬레이션의 이 유형은, 좀더 구체적으로, 에뮬레이션 기술일 수 있다. 어떤 경우에서든, 재구성 가능한 하드웨어는, 개시된 기술들을 이용중인 모델을 저장하는 머신 판독 가능 매체를 수반할 수 있는 다른 실시예이다.
더 나아가, 대부분의 설계들은, 소정 단계에서, 하드웨어 모델에서 다양한 장치들의 물리적 배치를 표현하는 데이터 레벨에 도달한다. 전통적인 반도체 가공 기술들이 사용되는 경우, 하드웨어 모델을 표현하는 데이터는 집적 회로를 발생시키는데 사용되는 마스크들을 위한 상이한 마스크 계층들에 대한 다양한 사양들의 존재 또는 부재를 특정하는 데이터일 수 있다. 이번에도, 집적 회로를 표현하는 이 데이터는, 데이터의 회로 또는 로직이 이 기술들을 수행하도록 시뮬레이션되거나 가공될 수 있다는 점에서, 개시된 기술들을 구현한다.
설계의 임의 표현에서, 데이터는 컴퓨터 판독 가능 매체 또는 장치(예를 들어, 하드 디스크 드라이버, 플로피 디스크 드라이브, ROM, CD-ROM 장치, 플래시 메모리 장치, DVD(digital versatile disk), 또는 다른 저장 장치)의 임의 형태로 저장될 수 있다. 또한, 개시된 기술들의 실시예들은, 설계 또는 설계의 특정 부분을 설명하는 비트들을 저장하는 머신-판독 가능 저장 매체로서 구현될 것으로 간주될 수도 있다. 저장 매체는 그것 자체로 판매될 수 있거나 다른 것들에 의해 추가적인 설계 또는 가공에 사용될 수도 있다.
예시적 실시예들을 참조하여 이 설명서가 설명되었지만, 이 설명이 제한적인 의미로 해석되어서는 안된다. 예시적 실시예들의 다양한 변경들 뿐만 아니라, 당업자들이라면 명백하게 알 수 있는, 설명서의 다른 실시예들도 설명서의 정신 및 범위내에 해당되는 것으로 간주된다.

Claims (53)

  1. CPU 데이터 프리페치들을 개시하기 위한 장치로서,
    프로그램을 실행하기 위한 타겟 에이전트;
    상기 프로그램을 실행하기 위한 상기 타겟 에이전트에 데이터의 적어도 일부분을 공급하고, 새로운 데이터를 가질 때, 프리페치 지시어를 생성 및 발행하기 위한 외부 소스 에이전트; 및
    상기 타겟 에이전트와 연관된 하드웨어 프리페처로서, 상기 프리페치 지시어가 수신될 때, 상기 새로운 데이터를 메모리로부터 타겟 캐시로 프리페치하기 위한 요청을 발행하기 위한 하드웨어 프리페처
    를 포함하는 장치.
  2. 제1항에 있어서,
    상기 타겟 캐시는 상기 타겟 에이전트가 상기 프로그램을 실행하는데 필요한 데이터의 적어도 일부분을 저장하는 장치.
  3. 제1항에 있어서,
    상기 메모리는 상기 타겟 에이전트 및 상기 외부 소스 에이전트 중 적어도 하나 이상에 의해 사용되는 데이터를 저장하는 장치.
  4. 제1항에 있어서,
    상기 프리페치 지시어의 상기 외부 소스 에이전트로부터 상기 타겟 에이전트, 및 상기 타겟 에이전트, 상기 타겟 캐시, 상기 데이터 소스 에이전트, 상기 메모리 사이의 데이터 경로로의 라우팅을 용이하게 하기 위한 라우팅 지원 플랫폼을 더 포함하는 장치.
  5. 제1항에 있어서,
    상기 타겟 에이전트는 상기 메모리의 데이터보다 상기 타겟 캐시의 데이터에 더 빠르게 액세스하는 장치.
  6. 제1항에 있어서,
    상기 프리페치 지시어는, 적어도 상기 타겟 에이전트와 상기 외부 소스 에이전트 사이에 존재하는 상호 접속 트랜잭션들에 따라, 적어도 상기 타겟 에이전트를 포함하는 에이전트들로 송신되는 장치.
  7. 제1항에 있어서,
    상기 프리페치 지시어는 별도 트랜잭션으로서, 적어도 상기 타겟 에이전트를 포함하는 에이전트들로 송신되는 장치.
  8. 제7항에 있어서,
    상기 프리페치 지시어는, 상기 외부 소스 에이전트가 새로운 데이터를 가질 때, 및 상기 외부 소스 에이전트가 새로운 데이터를 가진 이후지만 상기 타겟 에이전트가 새로운 데이터를 판독하기 이전인 때 중 적어도 하나 이상의 때에 적어도 상기 타겟 에이전트로 송신되는 장치.
  9. 제1항에 있어서,
    상기 새로운 데이터의 특성들을 상기 외부 소스 에이전트로 송신하기 위한 요청 에이전트를 더 포함하는 장치.
  10. 제9항에 있어서,
    상기 새로운 데이터의 상기 특성들은 메모리 어드레스 및 DCA(direct chche access) 선호들(preferences)을 포함하고, 상기 DCA 선호들은 DCA 인에이블먼트 지시자, 상기 타겟 에이전트 및 상기 타겟 캐시 중 적어도 하나 이상의 식별 정보, 및 타겟 캐시 대체 속성들을 포함하는 장치.
  11. 제1항에 있어서,
    상기 프리페치 지시어는,
    상기 프리페치 지시어를 식별하기 위한 메시지 연산 코드;
    데이터가 프리페치될 상기 메모리의 장소를 지시하기 위한 소스 어드레스; 및
    상기 프리페치 지시어를 상기 하드웨어 프리페처로 라우팅하는 것과 데이터를 상기 메모리 및 상기 타겟 캐시 중 적어도 하나 이상으로 라우팅하는 것을 돕기 위한 라우팅 정보
    를 포함하는 장치.
  12. 제11항에 있어서,
    상기 프리페치 지시어는, 상기 프리페치된 데이터를 상기 타겟 캐시로 전달하기 전에, 상기 데이터를 프리-프로세싱할 것을 상기 하드웨어 프리페처에 지시하기 위한 프리-프로세싱 정보를 더 포함하는 장치.
  13. 제11항에 있어서,
    상기 프리페치 지시어는, 상기 프리페치된 데이터를 수신하는 상기 타겟 캐시의 레벨, 상기 캐시의 대체 및 퇴거 정책(replacement and eviction policy), 상기 캐시에 배치된 새로운 데이터 블록의 상태 중 적어도 하나 이상을 지시하는 속성들을 더 포함하는 장치.
  14. 제1항에 있어서,
    상기 장치의 기능적 기술을 포함하는, 컴퓨터 판독 가능 매체에 저장된, 데이터에 의해 표현되는 장치.
  15. 제14항에 있어서,
    상기 장치를 표현하는 상기 데이터는 하드웨어 기술어 코드(hardware description language code)를 포함하는 장치.
  16. 제14항에 있어서,
    상기 장치를 표현하는 상기 데이터는, 복수개 마스크 층들 각각의 다양한 위치들에서 재료의 존재 또는 부재를 표현하는 물리 데이터를 이어놓은(string) 상기 복수개 마스크 층들을 표현하는 데이터를 포함하는 장치.
  17. CPU 데이터 프리페치들을 개시하기 위한 방법으로서,
    타겟 에이전트에 의해 프로그램을 실행하는 단계;
    외부 소스 에이전트에 의해, 상기 타겟 에이전트가 상기 프로그램을 실행하는데 필요한 새로운 데이터를 획득하는 단계;
    상기 새로운 데이터가 상기 외부 소스 에이전트에 의해 획득될 때, 프리페치 지시어를 생성하고 발행하는 단계; 및
    상기 프리페치 지시어가 수신될 때, 상기 새로운 데이터를 타겟 캐시로 프리페치하기 위한 요청을 발행하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서,
    상기 새로운 데이터의 특성들을 수신하는 단계를 더 포함하고,
    상기 특성들은 메모리 어드레스 및 DCA(direct cache access) 선호들을 포함하며, 상기 DCA 선호들은 DCA 인에이블먼트 지시자, 상기 타겟 에이전트 및 상기 타겟 캐시 중 적어도 하나 이상의 식별 정보, 및 타겟 캐시 대체 속성들을 포함하는 방법.
  19. 제17항에 있어서,
    상기 타겟 캐시는 상기 타겟 에이전트가 상기 프로그램을 실행하는데 필요한 데이터의 적어도 일부분을 저장하고, 상기 타겟 에이전트는 상기 타겟 에이전트 및 상기 외부 소스 에이전트 중 적어도 하나 이상에 의해 사용되는 데이터를 저장하는 메모리의 데이터에 액세스하는 것보다 상기 타겟 캐시의 데이터에 더 빠르게 액세스하는 방법.
  20. 제17항에 있어서,
    상기 새로운 데이터를 메모리에 기입하는 단계를 더 포함하는 방법.
  21. 제17항에 있어서,
    적어도 상기 타겟 에이전트와 상기 외부 소스 에이전트 사이에 존재하는 상호 접속 트랜잭션들에 따라, 적어도 상기 타겟 에이전트를 포함하는 에이전트들로 상기 프리페치 지시어를 송신하는 단계를 더 포함하는 방법.
  22. 제17항에 있어서,
    상기 프리페치된 데이터를 상기 타겟 캐시로 전달하고 상기 타겟 에이전트에 의해 상기 타겟 캐시로부터 상기 새로운 데이터를 판독하기 전에, 상기 프리페치 지시어에 포함된 명령어들에 따라 상기 프리페치된 데이터를 프리-프로세싱하는 단계를 더 포함하는 방법.
  23. 제17항에 있어서,
    상기 프리페치 지시어를 별도 트랜잭션으로서, 적어도 상기 타겟 에이전트를 포함하는, 에이전트들로 송신하는 단계를 더 포함하는 방법.
  24. 제23항에 있어서,
    상기 외부 소스 에이전트가 새로운 데이터를 가질 때, 및 상기 외부 소스 에이전트가 새로운 데이터를 가진 이후지만 상기 타겟 에이전트가 새로운 데이터를 판독하기 이전인 때 중 하나 이상의 때에 상기 프리페치 지시어를 적어도 상기 타겟 에이전트로 송신하는 단계를 더 포함하는 방법.
  25. 제17항에 있어서,
    상기 프리페치 지시어는,
    상기 프리페치 지시어를 식별하기 위한 메시지 연산 코드;
    데이터가 프리페치될 상기 메모리의 장소를 지시하기 위한 소스 어드레스; 및
    상기 프리페치 지시어를 상기 하드웨어 프리페처로 라우팅하는 것과 데이터를 상기 메모리 및 상기 타겟 캐시 중 적어도 하나 이상으로 라우팅하는 것을 돕기 위한 라우팅 정보를 포함하는 방법.
  26. 제25항에 있어서,
    상기 프리페치 지시어는 상기 프리페치된 데이터를 수신하는 상기 타겟 캐시의 레벨, 상기 캐시의 대체 및 퇴거 정책, 상기 캐시에 배치된 새로운 데이터 블록의 상태 중 적어도 하나 이상을 지시하는 속성들을 더 포함하는 방법.
  27. 프리페치 지시어가 저장되어 있는 머신 판독 가능 매체를 포함하는 제품으로서,
    상기 프리페치 지시어는,
    상기 프리페치 지시어를 식별하기 위한 메시지 연산 코드를 포함하는 제1 필드;
    데이터가 프리페치될 메모리의 장소를 지시하기 위한 소스 어드레스를 포함하는 제2 필드; 및
    상기 프리페치 지시어를 상기 타겟 캐시와 연관된 타겟으로 라우팅하는 것과 데이터를 메모리 및 상기 타겟 캐시 중 적어도 하나 이상으로 라우팅하는 것을 돕 기 위한 라우팅 정보를 포함하는 제3 필드
    를 포함하는 제품.
  28. 제27항에 있어서,
    상기 프리페치 지시어는, 상기 프리페치된 데이터를 상기 타겟 캐시로 전달하기 전에, 상기 데이터를 프리-프로세싱할 것을 상기 타겟에 지시하기 위한 프리-프로세싱 정보를 더 포함하는 제품.
  29. 제27항에 있어서,
    상기 프리페치 지시어는, 상기 프리페치된 데이터를 수신하는 상기 타겟 캐시의 레벨, 상기 캐시의 대체 및 퇴거 정책, 상기 캐시에 배치된 새로운 데이터 블록의 상태 중 적어도 하나 이상을 지시하는 속성들을 더 포함하는 제품.
  30. 제27항에 있어서,
    상기 타겟은 상기 프리페치 지시어를 수신 및 인식하고 상기 데이터를 상기 메모리로부터 상기 타겟 캐시로 프리페치하기 위한 요청을 상기 메모리로 발행하는 제품.
  31. 데이터를 페치할 프리페처; 및
    상기 프리페처에 커플링되어, 다른 에이전트로부터의 외부 프리페치 지시어 메시지를 인식하고 수신하기 위한 프리페치 지시어 수신 메커니즘으로서, 상기 외부 프리페치 지시어 메시지는 제1 어드레스를 지시하고 상기 프리페처에 신호하여 상기 프리페처가 상기 제1 어드레스와 연관된 데이터를 페치하게 하는, 프리페치 지시어 수신 메커니즘
    을 포함하는 프로세서.
  32. 제31항에 있어서,
    상기 프리페처 및 상기 프리페치 지시어 메커니즘에 커플링되어, 상기 외부 프리페치 지시어 메시지에 포함된 정보를 디코딩하기 위한 프리페치 지시어 디코딩 메커니즘을 더 포함하는 프로세서.
  33. 제31항에 있어서,
    상기 페치된 데이터를 상기 프로세서의 수신 캐시로 전달하기 전에, 상기 페치된 데이터를 상기 외부 프리페치 지시어에 포함된 정보에 따라 프리-프로세싱하기 위한 프리-프로세싱 메커니즘을 더 포함하는 프로세서.
  34. 제31항에 있어서,
    상기 프리페처는 메모리로부터, 데이터의 메모리 어드레스인 상기 제1 어드레스와 연관된 데이터를 페치하는 프로세서.
  35. 제31항에 있어서,
    상기 프로세서가 타겟 에이전트로 송신할 데이터를 가질 때, 외부 프리페치 지시어 메시지를 송신하기 위한 프리페치 지시어 송신 메커니즘을 더 포함하는 프로세서.
  36. 제31항에 있어서,
    상기 외부 프리페치 지시어 메시지는,
    상기 외부 프리페치 지시어 메시지를 식별하기 위한 메시지 연산 코드;
    상기 데이터가 프리페치될 메모리의 장소를 지시하기 위한 소스 어드레스; 및
    상기 외부 프리페치 지시어 메시지를 상기 프리페처로 라우팅하는 것과 데이터를 상기 프로세서의 수신 캐시로 라우팅하는 것을 돕기 위한 라우팅 정보를 포함하는 프로세서.
  37. 제36항에 있어서,
    상기 외부 프리페치 지시어 메시지는, 상기 프리페치된 데이터를 상기 수신 캐시로 전달하기 전에, 상기 데이터를 프리-프로세싱할 것을 상기 프리페처에 지시하기 위한 프리-프로세싱 정보를 더 포함하는 프로세서.
  38. 제36항에 있어서,
    상기 외부 프리페치 지시어 메시지는 상기 수신 캐시의 레벨, 상기 수신 캐시의 대체 및 퇴거 정책, 상기 수신 캐시에 배치된 새로운 데이터 블록의 상태 중 하나 이상을 지시하는 속성들을 더 포함하는 프로세서.
  39. 프로그램을 실행하기 위한 타겟 프로세서;
    상기 프로그램을 실행하기 위한 타겟 에이전트에 데이터의 적어도 일부분을 공급하고, 새로운 데이터를 가질 때, 메모리로부터 상기 타겟 프로세서와 연관된 캐시로 데이터 프리페치를 개시하기 위한 외부 에이전트; 및
    상기 타겟 프로세서와 상기 외부 에이전트 사이에 인터페이스들을 제공하고 상기 타겟 프로세서, 상기 외부 에이전트, 상기 캐시, 상기 메모리 사이에서 데이터 이동을 용이하게 하기 위한 지원 플랫폼
    을 포함하고,
    상기 타겟 프로세서는 상기 메모리의 데이터에 액세스하는 것보다 상기 캐시의 데이터에 더 빠르게 액세스하는 컴퓨팅 시스템.
  40. 제39항에 있어서,
    상기 외부 에이전트는 프리페치 지시어를 생성하고 발행하는 것에 의해 상기 메모리로부터 상기 캐시로의 데이터 프리페치를 개시하는 컴퓨팅 시스템.
  41. 제39항에 있어서,
    상기 외부 에이전트는 상기 컴퓨팅 시스템의 다른 프로세서를 포함하는 컴퓨팅 시스템.
  42. 제39항에 있어서,
    상기 외부 에이전트는 상기 컴퓨팅 시스템의 칩셋을 포함하는 컴퓨팅 시스템.
  43. 제39항에 있어서,
    상기 외부 에이전트는 I/O 장치를 포함하고,
    상기 I/O 장치는 상기 컴퓨팅 시스템에 포함되고 상기 컴퓨팅 시스템에 커플링되는 것 중 적어도 하나 이상인 컴퓨팅 시스템.
  44. 제39항에 있어서,
    상기 타겟 프로세서와 연관되어, 상기 프리페치 지시어를 수신하고 인식할 때, 상기 새로운 데이터를 상기 메모리로부터 상기 캐시로 프리페치하기 위한 요청을 발행하기 위한 하드웨어 프리페처를 더 포함하는 컴퓨팅 시스템.
  45. 제39항에 있어서,
    상기 프리페치 지시어는, 적어도 상기 타겟 프로세서와 상기 외부 에이전트 사이에 존재하는 상호 접속 트랜잭션들에 따라, 적어도 상기 타겟 프로세서를 포함 하는 에이전트들로 송신되는 컴퓨팅 시스템.
  46. 제39항에 있어서,
    상기 프리페치 지시어는 별도 트랜잭션으로서, 적어도 상기 타겟 프로세서를 포함하는, 에이전트들로 송신되는 컴퓨팅 시스템.
  47. 제39항에 있어서,
    상기 프리페치 지시어는 상기 외부 에이전트가 새로운 데이터를 가질 때 및 상기 외부 에이전트가 새로운 데이터를 가진 이후지만 상기 타겟 프로세서가 새로운 데이터를 판독하기 이전인 때 중 적어도 하나 이상인 때에 적어도 상기 타겟 프로세서로 송신되는 컴퓨팅 시스템.
  48. 제39항에 있어서,
    상기 프리페치 지시어는,
    상기 프리페치 지시어를 식별하기 위한 메시지 연산 코드;
    데이터가 프리페치될 상기 메모리의 장소를 지시하기 위한 소스 어드레스; 및
    상기 프리페치 지시어를 하드웨어 프리페처로 라우팅하는 것과 데이터를 상기 메모리 및 상기 캐시 중 적어도 하나 이상으로 라우팅하는 것을 돕기 위한 라우팅 정보
    를 포함하는 컴퓨팅 시스템.
  49. 제48항에 있어서,
    상기 프리페치 지시어는, 상기 프리페치된 데이터를 상기 캐시로 전달하기 전에, 상기 데이터를 프리-프로세싱할 것을 상기 하드웨어 프리페처에 지시하기 위한 프리-프로세싱 정보를 더 포함하는 컴퓨팅 시스템.
  50. 제48항에 있어서,
    상기 프리페치 지시어는, 상기 프리페치된 데이터를 수신하는 상기 캐시의 레벨, 상기 캐시의 대체 및 퇴거 정책, 상기 캐시에 배치된 새로운 데이터 블록의 상태 중 적어도 하나 이상을 지시하는 속성들을 더 포함하는 컴퓨팅 시스템.
  51. 데이터가 저장되어 있는 머신 판독 가능 매체를 포함하는 제품으로서, 상기 데이터가 시뮬레이션 루틴들과 관련하여 프로세서에 의해 액세스될 때,
    프로그램을 실행하기 위한 타겟 프로세서;
    상기 프로그램을 실행하기 위한 타겟 에이전트에 데이터의 적어도 일부분을 공급하고, 새로운 데이터를 가질 때, 프리페치 지시어를 생성 및 발행하기 위한 외부 소스 에이전트; 및
    상기 타겟 에이전트와 연관된 하드웨어 프리페처로서, 상기 프리페치 지시어를 수신 및 인식할 때, 상기 새로운 데이터를 메모리로부터 타겟 캐시로 프리페치 하기 위한 요청을 발행하기 위한 하드웨어 프리페처
    를 포함하는 모델의 기능성을 제공하고,
    상기 타겟 에이전트는 상기 메모리의 데이터에 액세스하는 것보다 상기 타겟 캐시의 데이터에 더 빠르게 액세스하는 제품.
  52. 제51항에 있어서,
    상기 프리페치 지시어는, 적어도 상기 타겟 에이전트와 상기 외부 소스 에이전트 사이에 존재했던 상호 접속 트랜잭션들에 따라, 적어도 상기 타겟 에이전트를 포함하는 에이전트들로 송신되는 제품.
  53. 제51항에 있어서,
    상기 프리페치 지시어는 별도의 트랜잭션으로서, 적어도 상기 타겟 에이전트를 포함하는, 에이전트들로 송신되는 제품.
KR1020077007398A 2004-10-15 2005-10-13 외부 에이전트에 의해 cpu 데이터 프리페치들을개시하기 위한 방법 및 장치 KR100958967B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/966,231 US7360027B2 (en) 2004-10-15 2004-10-15 Method and apparatus for initiating CPU data prefetches by an external agent
US10/966,231 2004-10-15

Publications (2)

Publication Number Publication Date
KR20070059127A true KR20070059127A (ko) 2007-06-11
KR100958967B1 KR100958967B1 (ko) 2010-05-20

Family

ID=35515631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077007398A KR100958967B1 (ko) 2004-10-15 2005-10-13 외부 에이전트에 의해 cpu 데이터 프리페치들을개시하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US7360027B2 (ko)
KR (1) KR100958967B1 (ko)
CN (2) CN101697118B (ko)
TW (1) TWI305881B (ko)
WO (1) WO2006044743A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101107391B1 (ko) * 2008-12-09 2012-01-19 엔비디아 코포레이션 시리얼 인터페이스 버스를 통한 캐시 코히런시를 유지하기 위한 시스템 및 방법

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296129B2 (en) 2004-07-30 2007-11-13 International Business Machines Corporation System, method and storage medium for providing a serialized memory interface with a bus repeater
US7443848B2 (en) * 2004-09-29 2008-10-28 Intel Corporation External device-based prefetching mechanism
US7277988B2 (en) * 2004-10-29 2007-10-02 International Business Machines Corporation System, method and storage medium for providing data caching and data compression in a memory subsystem
US7441060B2 (en) * 2004-10-29 2008-10-21 International Business Machines Corporation System, method and storage medium for providing a service interface to a memory system
US7395476B2 (en) * 2004-10-29 2008-07-01 International Business Machines Corporation System, method and storage medium for providing a high speed test interface to a memory subsystem
US7331010B2 (en) 2004-10-29 2008-02-12 International Business Machines Corporation System, method and storage medium for providing fault detection and correction in a memory subsystem
US7512762B2 (en) * 2004-10-29 2009-03-31 International Business Machines Corporation System, method and storage medium for a memory subsystem with positional read data latency
US7356737B2 (en) * 2004-10-29 2008-04-08 International Business Machines Corporation System, method and storage medium for testing a memory module
US7299313B2 (en) * 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US20060095620A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation System, method and storage medium for merging bus data in a memory subsystem
US7356456B1 (en) * 2004-11-12 2008-04-08 Paravirtual Corporation Computer storage exception handing apparatus and method for virtual hardware system
US7437517B2 (en) * 2005-01-11 2008-10-14 International Business Machines Corporation Methods and arrangements to manage on-chip memory to reduce memory latency
US20060259658A1 (en) * 2005-05-13 2006-11-16 Connor Patrick L DMA reordering for DCA
US7478259B2 (en) 2005-10-31 2009-01-13 International Business Machines Corporation System, method and storage medium for deriving clocks in a memory system
US7685392B2 (en) * 2005-11-28 2010-03-23 International Business Machines Corporation Providing indeterminate read data latency in a memory system
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
US7681047B2 (en) * 2006-04-18 2010-03-16 International Business Machines Corporation Decryption of data in storage systems
US7636813B2 (en) * 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
US7640386B2 (en) * 2006-05-24 2009-12-29 International Business Machines Corporation Systems and methods for providing memory modules with multiple hub devices
US7584336B2 (en) * 2006-06-08 2009-09-01 International Business Machines Corporation Systems and methods for providing data modification operations in memory subsystems
US7669086B2 (en) * 2006-08-02 2010-02-23 International Business Machines Corporation Systems and methods for providing collision detection in a memory system
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US7870459B2 (en) 2006-10-23 2011-01-11 International Business Machines Corporation High density high reliability memory module with power gating and a fault tolerant address and command bus
US7721140B2 (en) 2007-01-02 2010-05-18 International Business Machines Corporation Systems and methods for improving serviceability of a memory system
US7606988B2 (en) * 2007-01-29 2009-10-20 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy
US7937532B2 (en) * 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
GB2454809B (en) * 2007-11-19 2012-12-19 St Microelectronics Res & Dev Cache memory system
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7958313B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources
US8064307B2 (en) * 2008-09-16 2011-11-22 Emt Co., Ltd. Reproducing device, reproducing method and program used in the same
US8886760B2 (en) * 2009-06-30 2014-11-11 Sandisk Technologies Inc. System and method of predictive data acquisition
US8984228B2 (en) 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9239793B2 (en) * 2011-12-13 2016-01-19 Ati Technologies Ulc Mechanism for using a GPU controller for preloading caches
US8539506B2 (en) * 2012-02-09 2013-09-17 Microsoft Corporation Dynamic injection of code into running process
CN104035888B (zh) 2014-06-11 2017-08-04 华为技术有限公司 一种缓存数据的方法及存储设备
US10078589B2 (en) * 2015-04-30 2018-09-18 Arm Limited Enforcing data protection in an interconnect
CN106302234B (zh) * 2015-06-24 2019-03-19 龙芯中科技术有限公司 网络包传送方法、以太网控制器、高速缓存及系统
KR102455675B1 (ko) * 2016-01-22 2022-10-17 주식회사 소니 인터랙티브 엔터테인먼트 하위 호환성을 위한 cpuid 스푸핑
US10073775B2 (en) * 2016-04-01 2018-09-11 Intel Corporation Apparatus and method for triggered prefetching to improve I/O and producer-consumer workload efficiency
CN107544937A (zh) * 2016-06-27 2018-01-05 深圳市中兴微电子技术有限公司 一种协处理器、数据写入方法和处理器
GB2567466B (en) * 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
US10366027B2 (en) 2017-11-29 2019-07-30 Advanced Micro Devices, Inc. I/O writes with cache steering
US10664273B2 (en) 2018-03-30 2020-05-26 Intel Corporation Delayed prefetch manager to multicast an updated cache line to processor cores requesting the updated data
EP3835959A4 (en) 2018-08-24 2021-11-10 Huawei Technologies Co., Ltd. DATA PRE-EXTRACTION PROCESS AND DEVICE
US10860487B2 (en) * 2019-04-17 2020-12-08 Chengdu Haiguang Integrated Circuit Design Co. Ltd. Multi-core processing device and method of transferring data between cores thereof
CN117707625A (zh) * 2024-02-05 2024-03-15 上海登临科技有限公司 支持指令多发的计算单元、方法及相应图形处理器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371870A (en) 1992-04-24 1994-12-06 Digital Equipment Corporation Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
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
US6711651B1 (en) 2000-09-05 2004-03-23 International Business Machines Corporation Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching
US6922753B2 (en) 2002-09-26 2005-07-26 International Business Machines Corporation Cache prefetching
US20040117606A1 (en) 2002-12-17 2004-06-17 Hong Wang Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
US8533401B2 (en) 2002-12-30 2013-09-10 Intel Corporation Implementing direct access caches in coherent multiprocessors
US7010666B1 (en) 2003-01-06 2006-03-07 Altera Corporation Methods and apparatus for memory map generation on a programmable chip
US20040199727A1 (en) * 2003-04-02 2004-10-07 Narad Charles E. Cache allocation
US7231470B2 (en) * 2003-12-16 2007-06-12 Intel Corporation Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system
US8281079B2 (en) 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US20050246500A1 (en) 2004-04-28 2005-11-03 Ravishankar Iyer Method, apparatus and system for an application-aware cache push agent
US7366845B2 (en) 2004-06-29 2008-04-29 Intel Corporation Pushing of clean data to one or more processors in a system having a coherency protocol
US8255591B2 (en) 2004-09-23 2012-08-28 International Business Machines Corporation Method and system for managing cache injection in a multiprocessor system
US20060095679A1 (en) 2004-10-28 2006-05-04 Edirisooriya Samantha J Method and apparatus for pushing data into a processor cache
US7246205B2 (en) 2004-12-22 2007-07-17 Intel Corporation Software controlled dynamic push cache

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101107391B1 (ko) * 2008-12-09 2012-01-19 엔비디아 코포레이션 시리얼 인터페이스 버스를 통한 캐시 코히런시를 유지하기 위한 시스템 및 방법
US8234458B2 (en) 2008-12-09 2012-07-31 Nvidia Corporation System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message
US20120290796A1 (en) * 2008-12-09 2012-11-15 Brian Keith Langendorf System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message
US8782349B2 (en) * 2008-12-09 2014-07-15 Nvidia Corporation System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message

Also Published As

Publication number Publication date
CN101036118A (zh) 2007-09-12
TWI305881B (en) 2009-02-01
WO2006044743A3 (en) 2006-08-17
US20060085602A1 (en) 2006-04-20
US7360027B2 (en) 2008-04-15
CN101697118A (zh) 2010-04-21
KR100958967B1 (ko) 2010-05-20
WO2006044743A2 (en) 2006-04-27
TW200634621A (en) 2006-10-01
CN101697118B (zh) 2013-06-19
CN100514282C (zh) 2009-07-15

Similar Documents

Publication Publication Date Title
KR100958967B1 (ko) 외부 에이전트에 의해 cpu 데이터 프리페치들을개시하기 위한 방법 및 장치
US7395407B2 (en) Mechanisms and methods for using data access patterns
KR100353656B1 (ko) Dma 및 l1/l2 캐시 성능을 향상시키기 위한 방법, 장치 및 컴퓨터 프로그램 기록 매체
US9032103B2 (en) Transaction re-ordering
US20060095679A1 (en) Method and apparatus for pushing data into a processor cache
US20080133844A1 (en) Method and apparatus for extending local caches in a multiprocessor system
US7930504B2 (en) Handling of address conflicts during asynchronous memory move operations
US8683138B2 (en) Instruction for pre-fetching data and releasing cache lines
WO2019013894A1 (en) TECHNIQUES FOR MANAGING ACCESS TO A MATERIAL ACCELERATOR MEMORY
KR100535146B1 (ko) 마이크로프로세서에 의한 인스트럭션 실행 방법, 컴파일러및 다중 프로세서 데이터 처리 시스템
US20140258641A1 (en) Communicating prefetchers in a microprocessor
JP2018502362A (ja) ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ
JP2008525919A (ja) プログラマ制御のキャッシュ・ライン追出しポリシーのための方法
US20140310479A1 (en) Communicating prefetchers that throttle one another
US20090006668A1 (en) Performing direct data transactions with a cache memory
JP5623370B2 (ja) キャッシュ・メモリに対する直接アクセスのための装置および方法
US20160110289A1 (en) Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system
JP3193684B2 (ja) キャッシュ・コヒーレンシを保証する方法及び装置
US7028144B2 (en) Method and apparatus for an in-situ victim cache
JPH11328016A (ja) 命令キャッシュとデ―タ・キャッシュ間のコヒ―レンシを維持する方法および装置
US20080263279A1 (en) Design structure for extending local caches in a multiprocessor system
TW201342086A (zh) 無需資料之所有權請求之預取
US20230033550A1 (en) Method for executing atomic memory operations when contested
US7502892B2 (en) Decoupling request for ownership tag reads from data read operations
KR20230069943A (ko) 로컬리티가 결여된 데이터를 타겟으로 하는 메모리 요청의 프리페치 디스에이블

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E90F Notification of reason for final refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee