KR20150056042A - 데이터 처리장치에서의 적응형 예비 인출 - Google Patents

데이터 처리장치에서의 적응형 예비 인출 Download PDF

Info

Publication number
KR20150056042A
KR20150056042A KR1020140150933A KR20140150933A KR20150056042A KR 20150056042 A KR20150056042 A KR 20150056042A KR 1020140150933 A KR1020140150933 A KR 1020140150933A KR 20140150933 A KR20140150933 A KR 20140150933A KR 20150056042 A KR20150056042 A KR 20150056042A
Authority
KR
South Korea
Prior art keywords
memory
prefetch
unit
data values
memory access
Prior art date
Application number
KR1020140150933A
Other languages
English (en)
Other versions
KR102369500B1 (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 KR20150056042A publication Critical patent/KR20150056042A/ko
Application granted granted Critical
Publication of KR102369500B1 publication Critical patent/KR102369500B1/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/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
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/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
    • 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
    • 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
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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

데이터 처리장치에서의 적응형 예비 인출{ADAPTIVE PREFETCHING IN A DATA PROCESSING APPARATUS}
본 발명은 데이터 처리장치에 관한 것이다. 보다 구체적으로, 본 발명은 데이터 처리장치에서의 데이터 값들의 예비 인출(prefetching)에 관한 것이다.
연속적인 프로그램 명령어를 실행하는 데이터 처리장치에, 명령어 실행부에서 필요로 하는 데이터 값들보다 앞에 데이터 처리장치의 상기 명령어 실행부에 국한된 캐시에 기억하기 위한 메모리로부터 데이터 값들을 검색하려고 하는 프리페처(prefetcher)에 구비되는 것이 알려져 있다. 상기 데이터 처리장치들에서 메모리로부터의 데이터 값들의 검색에 관련된 메모리 지연이 상당할 수 있고, 이러한 예비 인출 능력이 제공되지 않으면 데이터 처리장치의 동작에 심각한 성능 장애를 보였을 것이다.
이러한 프리페처가 미리 상기 캐시에 예비 인출(prefetch)하는 데이터 값들의 수를 동적으로 적응시키는 것도 알려져 있다. 한편으로는, 프리페처가 프로세서(명령어 실행부)의 작동보다 앞에 충분히 멀리 예비 인출을 하지 못하면, 상기 프로세서는 상기 프리페처에 캐시 업하고 그 캐시에 있는 데이터 값들에 상기 메모리부터 검색되기 전에 액세스하려고 하여, 대응한 메모리 액세스들이 완료하는 동안 대기할 필요가 있다. 한편, 상기 프리페처가 극단적으로 미리 데이터 값을 예비 인출하면, 데이터 값들은, 필요해지고 그 동안 다른 메모리 액세스 요구들에 의해 상기 캐시로부터 위험이 퇴거되기 전에 긴 시간동안 상기 캐시에 기억된다. 이들 경쟁하는 제약간의 바람직한 균형은, 실행중 데이터 처리의 특징에 따라 달라질 수 있음에 따라서, 상기 프리페처가 자신의 프리페치 간격(즉, 작동하는 프로세서가 얼마나 앞서 있는가)을 동적으로, 즉 데이터 처리장치에 의한 작동동안 적응시키도록 구성되는 것이 알려져 있다.
본 발명의 제 1 국면에서 본 데이터 처리장치는, 연속적인 프로그램 명령어를 실행하는 명령어 실행부로서, 그 프로그램 명령어들의 적어도 일부의 실행이 메모리로부터 데이터 값들을 검색하기 위해 메모리 액세스 요구들을 개시하는, 상기 명령어 실행부;
상기 메모리로부터 검색된 데이터 값들의 사본을 기억하도록 구성된 캐시부; 및
상기 메모리 액세스 요구들의 현재의 데이터 값 액세스 패턴을 외삽하여 상기 명령어 실행부에서 요구할 차후의 데이터 값들을 예측하여 예비 인출(prefetch)함으로써 상기 명령어 실행부가 데이터 값들을 요구하기 전에 상기 캐시부에 기억하기 위한 상기 메모리로부터 상기 데이터 값들을 예비 인출하는 프리페치부를 구비하고,
상기 프리페치부는, 메모리 액세스 요구가 예비 인출이 이미 이루어졌지만 아직 상기 캐시부에 기억되지 않은 미해결(pending) 데이터 값을 특정할 때 예비 인출하는 상기 차후의 데이터 값의 수를 증가시키는 것을 포함하는 미스(miss) 응답을 행하도록 구성되고,
상기 프리페치부는, 만족되는 금지조건에 따라, 금지기간에 상기 미스 응답을 일시적으로 금지시키도록 구성된다.
본 기술들에 따른 상기 프리페치부는, 프리페치 간격, 즉 상기 명령어 실행부에서 발행한 메모리 액세스들이 차후의 데이터 값들을 실제로 요구하기 전에 예비 인출을 개시하는 차후의 데이터 값들의 수를 동적으로 조정하도록 구성된다. 여기서 "데이터 값"이란, 명령어와 데이터 모두를 일반적으로 커버하는 것으로서 해석되어야 한다는 것을 알아야 한다. 이러한 동적 조정은, 상기 명령어 실행부로부터 수신된 상기 메모리 액세스 요구들을 감시하고, 이미 예비 인출되어 상기 캐시부에 기억된 데이터 값들에 의해 메모리 액세스 요구들이 성공적으로 예상되는지를 판정하여서 이루어진다. 특히, 상기 프리페치부는, 수신된 메모리 액세스 요구가 예비 인출이 이미지 이루어졌지만 아직 캐시부에 기억되지 않은 데이터 값을 특정할 때, 예비 인출하는 데이터 값들의 수가 증가되는 미스 응답을 행하여서 상기 프리페치 간격을 조정하도록 구성된다. 달리 말하면, 이러한 경우에서의 해석은, 상기 프리페처는, 상기 명령어 실행부가 개시한 메모리 액세스 요구에서 이 데이터 값을 필요로 할 것이라고 정확히 예측했지만, 메모리 액세스 요구를 상기 명령어 실행부로부터 수신한 시간만큼 상기 캐시부에서 이 데이터 값이 이미 이용하도록 충분히 미리 이 데이터 값의 예비 인출을 개시하지 않았다는 것이 일반적이다. 따라서, 이러한 해석에 의하면, 상기 프리페치부는, 예비 인출하는 데이터 값들의 수를 증가시켜서, 즉 프리페치 간격을 증가시켜서 차후에 이렇게 일어날 가능성을 감소시키도록 작동할 수 있어, 상기 명령어 실행부에서 필요로 하는데 예측되는 주어진 데이터 값의 예비 인출은, 명령어 실행부에서 실제로 필요로 하는 것보다 더욱 앞에 개시된다.
그러나, 본 기술에 의해 인식된 것은, 항상, 이미 예비 인출이 이루어졌지만 아직 상기 캐시에 기억되지 않은 데이터 값을 특정하는 상기 명령어 실행부로부터 메모리 액세스 요구를 수신할 때마다 상기 프리페치부가 프리페치 간격을 증가시키는 것이 바람직하지 않아도 된다는 것이다. 예를 들면, 본 기술에 의해 인식된 것은, 상기 데이터 처리장치에서 실행한 데이터 처리 동작동안, 상기 프리페치 간격이 증가하여 데이터 처리 성능을 반드시 향상시키지 않으므로 실제로 바람직하지 않을 수도 있는 경우가 일어날 수 있다. 따라서, 본 기술들은, 상기 프리페치부가 추가적으로 금지조건에 대해 감시할 수 있고, 이 금지조건을 만족하는 경우, 상기 프리페치부가 소정의 금지기간에 통상의 미스 응답(즉, 프리페치 간격을 증가시키는 것)을 일시적으로 금지시키도록 구성된다. 그 후, 이에 따라, 상기 프리페치부가, 상기 프리페치 간격을 증가시켜서 상기 데이터 처리장치의 성능을 향상시키지 못하는 경우들을 식별 가능하게 하여 그 통상의 응답을 일시적으로 방지 가능하게 한다.
상기 금지조건은 다수의 다른 방식으로 구성되지만, 일 실시예에서, 상기 금지조건은 강제적 미스 조건의 식별을 포함하고, 여기서 강제적 미스 조건은 상기 메모리 액세스 요구가 특정한 상기 미해결 데이터 값이 상기 캐시부에 아직 기억되지 않는 것을 피할 수 없을 때 만족된다. 따라서, 상기 미해결 데이터 값이 상기 캐시부에 아직 기억되지 않는 것, 즉, 상기 데이터 값이 캐시부에 아직 기억되지 않는 사실이 상기 프리페치부의 다른 구성에 의해 피할 수 없었을 경우에, 프리페치부의 구성(특히 프리페치 간격)이 변경되지 않는 것이 이롭다.
강제적 미스 조건은 여러 가지 이유로 일어날 수도 있고, 일 실시예에서, 상기 강제적 미스 조건은, 메모리 액세스 요구의 예비 인출이 가능하지 않을 때 만족된다. 이에 따라, 메모리 액세스 요구의 예비 인출이 가능하지 않는다는 사실은, 왜 상기 프리페치부의 구성(특히, 프리페치 간격)이 고장상태에 있었는지, 즉 상기 미해결 데이터 값이 상기 캐시부에 아직 기억되지 않게 하지 않았는지를 설명하는 하나의 이유를 나타낸다.
일부의 실시예에서, 상기 프리페치부는 메모리 액세스 요구마다 스트라이드 체크를 행하도록 구성되고, 이 스트라이드 체크는 그 메모리 액세스 요구가 현재의 데이터 값 액세스 패턴을 외삽하는지를 판정하고, 데이터 처리장치에서의 메모리 어드레스들은 메모리 페이지 단위로 관리되고, 상기 프리페치부는 페이지 경계를 가로지르는 상기 차후의 데이터 값의 수에 대응한 일 세트의 메모리 어드레스에 따라 상기 스트라이드 체크를 억제하도록 구성된다. 상기 명령어 실행부에서 발행하고 있는 상기 메모리 액세스 요구들의 상기 현재의 데이터 값 액세스 패턴을 성공적으로 외삽하기 위해서는, 상기 프리페치부는, 일반적으로, 대응한 새로운 어드레스가 상기 예측된 스트라이드(즉, 데이터 값 액세스 패턴 외삽)와 일치하는 경우 새로운 메모리 액세스 요구마다 체크하도록 구성되지만, 이러한 스트라이드 체크는, 어떠한 것이든 불일치할 수도 있는 것을 합리적으로 예측하는 불필요한 처리를 줄이도록 페이지 경계를 가로지를 때 억제될 수 있다.
일부의 실시예에서, 데이터 처리장치에서의 메모리 어드레스들은 메모리 페이지 단위로 관리되고, 상기 금지조건은 차후의 데이터 값의 수에 대응한 일 세트의 메모리 어드레스가 페이지 경계를 가로지를 때 만족된다. 상기 프리페치부에서 예비 인출하는 차후의 데이터 값들의 수가 페이지 경계를 가로지를 때, 이것이 의미하는 것은, 데이터 값들의 제1 서브세트가 일 메모리 페이지에 있고, 또 데이터 값들의 제2 부분이 다음의 메모리 페이지에 있다는 것이다. 일 메모리 페이지의 물리 어드레스가 다음의 메모리 페이지와 상관이 없을 수도 있다는 사실로 인해, 이것은, 프리페치부가 대응한 타겟 데이터 값을 성공적으로 예측하여 예비 인출한 것이 가능하지 않을 수도 있는 경우를 나타낸다.
일부의 실시예에서, 상기 프리페치부는, 상기 차후의 데이터 값의 수(즉, 프리페치 간격)가 증가된 후 소정의 기간동안 상기 금지조건이 만족되도록 구성된다. 이것에 의해 인식한 것은, 메모리 액세스 지연으로 인해, 상기 프리페치 간격이 증가될 때, 예비 인출( 및 특별한 프로그램 명령어에 대응)하도록 실시되는 메모리 액세스 요구들의 수는, 캐시부의 내용에 있어서의 대응한 변화가 생겨서 미스 응답(즉, 프리페치 간격의 추가의 증가)이 금지되는 것이 이로운 중간 기간이 있기 전에 증가할 것이다. 실제로, 프리페치 간격을 반복적으로 증가시킬 수 있는 포지티브 피드백 시나리오들을 생각할 수 있다. 이것은, 미해결 데이터 값이 아직 상기 캐시부에 기억되어 있지 않는 첫 번째 인스턴스에서 일시 중지되는 보다 단순한 명령어 실행부일 경우에는 일반적으로 문제가 안되지만, 멀티스레드 명령어 실행부일 경우에, 이미 예비 인출이 이루어졌지만 아직 상기 캐시부에 기억되지 않은 데이터 값들에 관한 상기 반복된 메모리 액세스 요구들이 존재할 가능성이 매우 높고, 결과적으로 일어나는 프리페치 간격의 반복된 증가를 경감한다.
상기 금지기간의 지속기간은 데이터 처리장치의 특별한 제약에 따라 다양한 방식으로 구성될 수 있지만, 일 실시예에서, 상기 금지기간은 데이터 처리장치의 전형적인 메모리 지연의 배수이고, 이 메모리 지연은 상기 메모리로부터 데이터 값이 검색되는데 걸린 시간을 나타낸다. 그러므로, 상기 금지기간은, 상기 프리페치부가 예비 인출하는 차후의 데이터 값들의 수(즉, 프리페치 간격)의 조정은 상기 일반적인 메모리 지연의 배수를 경과할 때까지 증가될 수 없도록 구성될 수 있다. 예를 들면, 상기 프리페치 간격이 최근에만 증가되었기 때문에 상기 프리페치 간격이 증가되지 않고 있는 경우에는, 이 금지기간에 의해 원하는 상기 캐시부의 내용에서의 증가를 위한 시간이 충분해지게 된다.
상기 명령어 실행부의 형태는 다양하지만, 일 실시예에서, 상기 데이터 처리장치는 상기 연속적인 프로그램 명령어를 실행하도록 구성된 복수의 명령어 실행부를 구비한다. 또한, 일부의 실시예에서, 상기 명령어 실행부는, 상기 연속적인 프로그램 명령어를 실행할 때 다중 스레드를 병렬로 실행하도록 구성된다. 실제로, 이러한 일부의 실시예에서, 상기 명령어 실행부는, 단일 명령어 다중 스레드 방식으로 작동하도록 구성된다. 상술한 것처럼, 이미 프리페치 요구가 이루어진 캐시 라인에서 캐시 미스에 따라 상기 프리페치 간격을 증가시키는 것에 대해 본 기술에 의해 인식하는 일부의 문제점은, 보다 많이 병렬 방식으로 명령어들을 실행하도록 구성된 데이터 처리장치에 있어서 보다 널리 보급될 수 있고, 멀티코어 및/또는 멀티스레드 데이터 처리장치는 이러한 디바이스의 예시들을 나타낸다.
상기 프리페치부가 상술한 것처럼 프리페치 간격을 증가시키도록 구성되어도 되지만, 프리페치 간격을 감소시키는 메카니즘이 구비되어도 되고, 일 실시예에서 상기 프리페치부는 예비 인출하는 차후의 데이터 값들의 수를 주기적으로 감소시키도록 구성된다. 이에 따라, 이것은 상기 미스 응답으로부터 생길 수 있는 프리페치 간격의 증가에 대해 균형을 잡아주고, 이 때문에, 동적 해결방법이 제공될 수 있음에 따라서 상기 프리페치 간격은 주기적으로 감소되고, 필요할 때 증가만 된다. 그리고, 이것에 의해 상기 시스템이, 명령어 실행부의 요구보다 충분히 앞에서 작동하고 또한 극단적으로 미리 인출하지 않는 상기 프리페처의 경쟁하는 제약들의 균형을 잡아 주어서, 필요한 것보다 많은 메모리 대역폭을 다 사용하는 구성으로 작동할 수 있다.
일부의 실시예에서, 상기 프리페치부는 프리페치 테이블에 대해 차후의 데이터 값들의 예비 인출을 관리하도록 구성되고, 상기 프리페치 테이블에서의 각 엔트리는 상기 연속적인 프로그램 명령어에서 선택된 명령어를 나타내는 프로그램 카운터 값별로 지수가 만들어지고, 상기 프리페치 테이블에서의 각 엔트리는 상기 선택된 명령어에 대한 현재의 데이터 값 액세스 패턴을 가리키고, 상기 프리페치부는, 만족되는 상기 금지조건에 따라, 상기 프리페치 테이블에서 적어도 하나의 엔트리에 관한 수정을 억제하도록 구성된다. 상기 프리페치부는, 프리페치 테이블에서의 각 엔트리내에 각 종 파라미터를 유지하여 상기 명령어 실행부에서 필요로 하는 데이터 값들을 예측 및 예비 인출할 수도 있고, 상기 금지조건에 따라, 이들 파라미터를 그대로 두는데 이로울 수도 있다. 달리 말하면, 상기 프리페치부가 상기 프리페치 테이블 엔트리들의 정확성을 향상시키는 신뢰는, 금지조건이 만족될 때 변화될 필요가 없다.
본 발명의 제 2 국면에서 본 데이터 처리장치는, 연속적인 프로그램 명령어를 실행하는 수단으로서, 그 프로그램 명령어들의 적어도 일부의 실행이 메모리로부터 데이터 값들을 검색하기 위해 메모리 액세스 요구들을 개시하는, 수단;
상기 메모리로부터 검색된 데이터 값들의 사본을 기억하는 수단; 및
상기 메모리 액세스 요구들의 현재의 데이터 값 액세스 패턴을 외삽하여 상기 실행수단에서 요구할 차후의 데이터 값들을 예측하여 예비 인출(prefetch)함으로써 상기 실행수단이 상기 데이터 값들을 요구하기 전에 상기 기억수단에서 기억하기 위한 상기 메모리로부터 상기 데이터 값들을 예비 인출하는 수단을 구비하고,
상기 프리페치 수단은, 메모리 액세스 요구가 예비 인출이 이미 이루어졌지만 아직 상기 기억수단에 기억되지 않은 미해결(pending) 데이터 값을 특정할 때 예비 인출하는 상기 차후의 데이터 값의 수를 증가시키는 것을 포함하는 미스 응답을 행하도록 구성되고,
상기 프리페치 수단은, 만족되는 금지조건에 따라, 금지기간에 상기 미스 응답을 일시적으로 금지시키도록 구성된다.
본 발명의 제 3 국면에서 본 데이터 처리방법은, 연속적인 명령어를 실행하는 단계로서, 그 프로그램 명령어들의 적어도 일부의 실행이 메모리로부터 데이터 값들을 검색하기 위해 메모리 액세스 요구들을 개시하는, 상기 단계;
상기 메모리로부터 검색된 데이터 값들의 사본을 캐시에 기억하는 단계;
상기 메모리 액세스 요구들의 현재의 데이터 값 액세스 패턴을 외삽하여 상기 실행단계에서 요구할 차후의 데이터 값들을 예측하여 예비 인출함으로써 상기 실행단계에서 상기 데이터 값들을 요구하기 전에 상기 캐시에 기억하기 위한 상기 메모리로부터 상기 데이터 값들을 예비 인출하는 단계;
메모리 액세스 요구가 예비 인출이 이미 이루어졌지만 아직 상기 캐시에 기억되지 않은 미해결 데이터 값을 특정할 때 예비 인출한 상기 차후의 데이터 값의 수를 증가시키는 것을 포함하는 미스 응답을 행하는 단계; 및
만족되는 금지조건에 따라, 금지기간에 상기 미스 응답을 일시적으로 금지시키는 단계를 포함한다.
본 발명을 아래의 첨부도면에 도시된 것과 같은 실시예들을 참조하여 예시로만 더 설명하겠다:
도 1은 2개의 멀티스레드 프로세서 코어가 구비된 일 실시예의 데이터 처리장치를 개략적으로 도시한 것이고,
도 2는 실행된 프로그램 명령어들과 그 결과로 얻어진 미해결 예비 인출과 레벨2 캐시 내용에 따라 프리페치 테이블의 엔트리들의 전개를 개략적으로 도시한 것이고,
도 3은 가상 어드레스의 페이지와 물리 어드레스의 페이간의 대응과, 페이지 경계들에서 일어날 수도 있는 예비 인출의 문제점을 개략적으로 도시한 것이고,
도 4는 일 실시예에서의 프리페치부를 개략적으로 도시한 것이고,
도 5는 일 실시예에서의 프리페치부에서 취할 수도 있는 연속적인 단계를 개략적으로 도시한 것이다.
도 1은 일 실시예에서의 데이터 처리장치(10)를 개략적으로 도시한 것이다. 이 데이터 처리장치는, 프로세서 코어 11과 프로세서 코어 12로 이루어진 멀티코어 디바이스다. 각 프로세서 코어(11,12)는 단일 명령어 다중 스레드(SIMT) 방식으로 256스레드까지 실행 가능한 멀티스레드 프로세서다. 각 프로세서 코어(11,12)는, 프로세서 코어가 내부적으로 사용하는 가상 메모리 어드레스를 상기 메모리 시스템에서 사용한 물리 어드레스로 변환하는 제1 기준점으로서 사용하는 관련 변환 색인 버퍼(TLB)(13,14)를 갖는다.
데이터 처리장치(10)의 메모리 시스템은, 계층방식으로 배치되고, 여기서 레벨1(L1) 캐시(15,16)는 각 프로세서 코어(11,12)에 관련되고, 프로세서 코어(11,12)는 레벨2(L2) 캐시(17)를 공유한다. 상기 L1 및 L2 캐시외에, 메모리 액세스들은 외부 메모리(18)에 보내진다. 이러한 3개의 레벨의 메모리 계층 각각에 관련된 메모리 지연에는 상당한 차이가 있다. 예를 들면, 메모리 액세스 요구가 L1 캐시(15,16)에 액세스하는데 대략 1사이클만 걸리지만, L2캐시(17)에 보내지는 메모리 액세스 요구와 상기 캐시들 중 임의의 캐시에서 도달(hit)하지 않는 메모리 액세스 요구에 대해서는 10-20사이클이 걸리는 것이 일반적이므로, 완료하는데 약 200사이클 걸리는 것이 일반적인 외부 메모리(18)에 보내져야 한다.
특히 상기 메모리(18) 액세스에 관련된 상당한 메모리 지연으로 인해, 데이터 처리장치(10)에는, 상기 L2 캐시(17)에 관련된 프리페치부(19)가 구비되어 있다. 이 프리페치부(19)는, L2 캐시(17)에서 수신한 메모리 액세스 요구들을 감시하고, 이들 메모리 액세스 요구로 보여진 액세스 패턴에 의거하여 상기 코어 11, 12 중 하나에서 차후에 필요하다고 예상되는 메모리(18)로부터 데이터 값들을 검색하는 프리페치 트랜잭션을 발생하도록 구성된다. 이들 데이터 값이 상기 레벨 캐시(17)의 캐시 라인(20)에서 미리 덧붙여지게 함으로써, 상기 프리페치부(19)는 프로세서 코어(11,12)로부터 메모리(18)에 액세스하는 것에 관련된 큰 메모리 지연을 숨기려고 한다.
이렇게 하기 위해서는, 상기 프리페치부(19)는, 특히, 프로세서 코어(11,12)에서 발행하는 대응한 메모리 액세스 요구들보다 앞에 다수의 프리페치 트랜잭션을 발행함으로써 상기 프로세서 코어(11,12)에서 발행하는 상기 메모리 액세스 요구들에 대해 주어진 "프리페치 간격"을 유지해야 해서, 이들의 프리페치 트랜잭션은, 프로세서 코어(11,12) 중 하나에서 발생한 메모리 액세스 요구가 대응한 데이터 값을 필요로 하여 요구하기 전에 캐시 라인(20)을 완료하고 덧붙일 시간이 있다. 따라서, 상기 프리페치부(19)에는, L2 캐시(17)에서 수신하기 위해 관찰된 메모리 액세스 요구들에 대응하고 상기 프리페치부(19)가 발행되어야 하는 상기 프리페치 트랜잭션들을 결정하기 위해 외삽할 수 있는 데이터 값 액세스 패턴을 전개하게 하는 엔트리들이 덧붙여진 프리페치 테이블(21)이 구비되어 있다. 이하, 이러한 테이블(21)의 보다 상세한 내용을 도 2를 참조하여 설명한다.
또한, 상기 프리페치부(19)는, 미해결 프리페치의 리스트(22), 즉 발행하였지만 아직 완료되지 않은 상기 프리페치 트랜잭션들의 기록을 유지한다. 달리 말하면, L2 캐시(17)를 감시하는 일부로서, 프리페치부(19)에서 발행한 프리페치 트랜잭션이 완료되고 대응한 데이터가 캐시 라인(20)에 기억되어 있었을 경우, 그 대응한 미해결 프리페치의 리스트(22)에 있는 엔트리는, 삭제될 수 있다. 미해결 프리페치의 리스트(22)의 특별한 일 용도는, 상기 프리페치부(19)가 프리페치 테이블(21)에서의 주어진 엔트리에 대해 유지하는 프리페치 간격을 적응 가능하게 하는데 있다. 상기 프리페치부(19)는 현재 예비 인출중인(즉, 미해결 프리페치 리스트(22)에 대응한 엔트리를 갖는) 캐시 라인(20)에서 도달하는 L2 캐시(17)가 수신한 메모리 액세스 요구를 관찰할 경우, 상기 프리페치부(19)는 이것을 트리거로서 사용하여 상기 프리페치 테이블(21)에서의 그 엔트리에 대한 프리페치 간격을 증가시키는 것이 일반적이고, 그 이유는, 이것도, L2 캐시(17)가 상기 프로세서 코어(11,12) 중 하나로부터 상기 예상된 액세스 요구를 수신하기 전에 프리페치 트랜잭션이 완료하여 대응한 캐시 라인(20)에 덧붙여지는 경우에 조기에 상기 프리페치 테이블(21)에서의 그 엔트리에 대한 프리페치 천이를 프리페치부(19)가 발행할 필요가 있는 표시이어도 되기 때문이다. 그러나, 본 기술에 의하면, 상기 프리페치부(19)는, 이하의 도면들에 대해 보다 상세히 설명하는 것처럼, 이 경우에 따라 항상 프리페치 간격을 증가시키지 않는다.
도 2는, 실행중인 일부의 예시의 프로그램 명령어, 그 결과로 얻어진 프리페치 테이블(21)에서의 엔트리, 대응한 미해결 프리페치 및 대응한 L2 캐시 내용을 도시한 것이다. 그 예시의 프로그램 명령어로부터 알 수 있듯이, 이러한 연속적인 프로그램 명령어는, 조건 COND에 따라, 여러번 반복 실행될 수 있는 루프를 포함한다. 본 기술에 의미를 갖는 2개의 프로그램 명령어는, 레지스터 r9에 기억된 값을 100씩 증분시키는 첫 번째의 ADD명령어와, 레지스터 r9의 현재의 내용에 의해 주어진 메모리 어드레스에 기억된 데이터 값을 레지스터 r1에 로딩시키는 그 다음의 LOAD 명령어가 있다. 이에 따라, (레지스터 r9에 보유된 상기 값이 본 루프내에서 달리 수정되지 않는다고 하면) 상기 LOAD 명령어는, 메모리 액세스 요구들에 의해 100씩 증분시키는 메모리 어드레스를 만든다. 상기 프리페치 테이블(21)은 지수화된 PC이고, 도면에서는 LOAD 명령어의 예시의 프로그램 카운터(PC)값을 5로 나타내었다. 그러므로, 상기 프리페치부(19)는 100씩 증분하는 메모리 어드레스에 대해 발행되고 있는 그 PC값에 관련된 메모리 액세스 요구들을 관찰하고, 프리페치 테이블(21)에서의 대응한 엔트리의 일 부분은 이 PC값과 관련지어 가장 최근에 보여진 상기 메모리 어드레스의 기록을 보관한다. 이와 같이 하여, 이들 메모리 어드레스의 패턴에 의거하여, 상기 프리페치부(19)는, 상기 프리페치 테이블(21)에서의 대응한 엔트리의 다른 부분을 구성하는 100의 "스트라이드"를 결정하고, 그것에 의거하여, 이 PC값과 관련하여 L2캐시(17)에서 수신할 메모리 액세스 요구들에 대한 프리페치 트랜잭션을 발생하기 위해 상기 액세스 패턴을 외삽할 수 있다. 이 PC값과 관련시켜 보여진 새로운 메모리 액세스 요구마다, 상기 제어용 프리페치부(19)는, "스트라이드 일치"인지, 즉 기억된 스트라이드 값을 사용한 액세스 패턴의 외삽이 이 메모리 액세스 요구의 메모리 어드레스를 정확히 예측했는지를 판정하도록 구성된다. 상기 외삽이 일치하지 않으면, (종래기술에 따른) 프리페치부는 프리페치 테이블(21)에 대응한 엔트리를 수정할 수 있다.
상기 프리페치 테이블(21)에서의 엔트리의 최종 부분은, 프리페치부가 이 엔트리를 유지하는 프리페치 간격이다. 이 프리페치 간격은 이 PC값과 관련지어 보여진 가장 마지막의 메모리 액세스 요구보다 앞에 상기 프리페치부(19)가 얼마나 트랜잭션을 발생하는지를 결정한다. 예를 들면, 도 2에 도시된 스냅 샷에서, PC값 5에 대응한 예비 인출된 테이블(21)에서의 엔트리에 대한 프리페치 간격은 현재 4이다. 이에 따라, 이 PC값에 관련된 가장 최근의 메모리 액세스 요구가 메모리 어드레스 "+300"에 대한 것이면, 상기 미해결 프리페치 리스트(22)의 내용으로 도시된 것처럼 이것(즉, "+400", "+500", "+600", "+700")보다 앞에 미해결 프리페치 트랜잭션이 4개가 있다. 또한, L2 캐시(17)는, 이미, 메모리 어드레스 "+0", "+100", "+200" 및 "+300"에 관한 선행하는 메모리 액세스 요구들에 대응한 엔트리들을 갖는다. 따라서, 메모리 어드레스 "+300"에서의 현재의 메모리 액세스 요구는, 추가로 외부 메모리(18)에 보낼 필요 없이 상기 L2 캐시(17)에서 도달할 것이다.
상기 프리페치부(19)는, 미리 충분히 멀리 예비 인출하지 않는 것(그리고 이에 따라 프로세서 코어(11,12)가 메모리 액세스 요구에 대응한 상기 예비 인출된 트랜잭션이 따라잡는 동안 대기하게 하는 것)과, 불필요한 메모리 대역폭을 사용하고, 상기 프로세서 코어(11,12)에서 예비 인출된 엔트리들을 사용하기 전에 상기 캐시(17)에서의 그 예비 인출된 엔트리들이 퇴거되는 것을 추가로 무릅쓰는 미리 극단적으로 예비 인출하는 것의 사이에 최적화된 균형을 유지하려고 하기 위해서 상기 프리페치 간격을 동적으로 적응시키도록 구성된다. 이러한 동적 적응화의 일부로서, 상기 프리페치부(19)는, 현재 예비 인출중이고(즉, 미해결 프리페치 리스트(22)에서의 대응한 엔트리를 갖고) L2 캐시에서 메모리 액세스 요구를 수신하였을 때 결정하여, 이 경우에 프리페치 간격을 증가시키도록 구성되는 것이 일반적이다. 그러나, 상기 프리페치부(19)는, 본 기술에 따라, 특정한 식별 조건하에서 소정의 기간에 이러한 응답을 일시적으로 추가로 금지시키도록 구성된다.
도 3은 데이터 처리장치에서 메모리 사용법과, 특히, 프로세서 코어(11,12)에서 사용한 가상 어드레스와 메모리 계층의 상위, 특히 L2 캐시(17) 및 그에 따른 프리페치부(19)에서 사용된 물리 어드레스와의 대응을 개략적으로 도시한 것이다. 데이터 처리장치(10)에서의 메모리 어드레스들은, 페이지 단위로 처리되고, 여기서, 메모리 어드레스들은 4kB 페이지 단위로서 처리된다. 또한, 가상 어드레싱 시스템에서 순차적인 4kB 페이지 메모리 어드레스들내의 메모리 어드레스들도 물리 어드레싱에서 순차적이지만, 가상 어드레스 시스템에서의 메모리 페이지의 오더링(ordering)과 물리 어드레스 시스템에서의 메모리 페이지의 오더링간에 상관이 없다. 이러한 사실은 프리페치부(19)에 특별한 의미를 갖는데, 그 이유는, 상기 프리페치 테이블(21)에서 주어진 엔트리에 대한 어드레스들을 예비 인출하는 증분을 가리키는 스트라이드도 메모리 페이지의 크기(프리페치부(19)가 물리 어드레스에 대한 스트라이드 간격으로 프리페치 트랜잭션을 순차적으로 발행할 수 있다는 것을 의미함)내에 있어도 되지만, 일단 페이지 경계에 도달되면, 프리페치 테이블(21)에서의 본 엔트리에 대한 프리페치 트랜잭션의 다음 증분은 단지 마지막에 사용된 물리 어드레스의 스트라이드 증분이 되도록 보장될 수 없기 때문이다. 예를 들면, 도 3에 도시된 것처럼, 물리 어드레스 페이지 2는 물리 어드레스 페이지 1에 순차적으로 후속하지 않는다. 따라서, 페이지 2내의 첫 번째 물리적 메모리 어드레스는, 이 물리 어드레스를, 물리 어드레스 페이지 1에 사용된 마지막 물리 어드레스에 의거하여 상기 프리페치부(19)가 예측할 수 없기 때문에 예비 인출 가능하지 않다는 것을 알 수 있다.
도 4는 프리페치부(19)의 보다 상세한 내용을 개략적으로 도시한 것이다. 프리페치부(19)는 L2 캐시(17)에 의해 보여진 메모리 액세스 요구들을 나타내는 정보를 수신하는 상기 제어부(30)의 일반적인 제어하에 작동한다. 특히, 상기 제어부(30)는, 메모리 액세스 요구가 (미해결 프리페치 리스트(22)의 내용으로 나타낸 것처럼) 예비 인출되는 것이 진행중인 L2 캐시(17)에서의 라인(20)에 도달할 때 상기 프리페치 간격을 증가시키는 통상의 응답이 금지기간에 억제되는 상황(여기서는, 금지조건이라고도 함)을 결정하도록 구성된다. 달리 말하면, 상기 프리페치 간격을 증가시키는 통상의 응답은, 그 금지조건이 검출된 후에 상기 메모리 액세스 요구가 상기 금지기간에서 주어진 시간보다 많은 예비 인출되는 것이 진행중인 상기 라인에 도달하지 않으면 일어나지 않을 것이다. 상기 금지기간은, 상기 제어부(30)가 상기 기억된 금지기간 값(31)으로부터 결정할 수 있는 프리페치부(19)의 변경 가능한 파라미터다. 이 금지기간은, 특별한 시스템 구성에 따라 달라질 수 있지만, 예를 들면 메모리 액세스 지연의 배수에 대응하도록(예를 들면, ∼400사이클로 설정되도록, 여기서 메모리 지연은 ∼200사이클) 구성될 수 있다. 또한, 상기 제어부가 상기 프리페치 테이블(21)의 내용의 유지, 예를 들면 필요한 경우 엔트리를 갱신하는 것을 관리하지만, 이러한 갱신도 상기 금지조건에 따라 억제될 수 잇다. 추가로, 상기 프리페치부(19)는, 페이지 경계를 가로질렀다고 판정된 경우 상술한 "스트라이드 체크"를 억제하도록 구성되는데, 그 이유는, 페이지 경계를 가로지르는 것과 연관될 가능성이 있는 물리 어드레스에서의 불연속성이 상기 스트라이드 체크가 (상기 프리페치 테이블의 현재의 셋업의 고장이 없는 것으로 인해) 그에 대응하게 실패할 가능성이 있다는 것을 의미하기 때문이다.
상기 제어부(30)가 만족될 금지조건을 결정하는 일 상황은, (도 3을 참조하여 설명한 것처럼) 페이지 경계의 가로지름이다. 상기 프리페치부(19)는, 데이터 처리장치(10)의 메모리 시스템의 일부를 구성하므로, 페이지 경계를 가로지를 때 그 페이지 크기가 사용되는 것을 안다. 상기 제어부(30)가 금지조건이 만족되는지를 결정하도록 구성되는 다른 상황은, 실제로는 프리페치 테이블(21)에서의 주어진 엔트리에 대한 프리페치 간격이 단지 증가되었을 경우다(여기서, 최근은 금지기간(31) 이전미만을 의미한다). 상기 제어부(30)의 또 다른 특징은, 상기 프리페치 테이블(21)에서 엔트리들을 관리할 때, 상기 프리페치 테이블(21)에서 엔트리들에 관련된 프리페치 간격을 주기적으로( 간격 감소 타이머(33)로부터 수신된 신호에 따라) 감소시키도록 구성되는 것이 특징이다. 이것은, 프리페치 간격이 증가되게 될 수 있는 상술한 작용에 대해 균형을 잡아준다. 따라서, 상기 제어부(30)는, 프리페치 테이블(21)에서 주어진 엔트리에 관련된 프리페치 간격을 주기적으로 감소시키고 나서, 이 프리페치 간격을, 상기 엔트리에 대해 상기 프리페치부(19)의 예비 인출 성능에서 필요한 것처럼 증가시키도록 구성된다.
도 5는 일 실시예에서 상기 프리페치부에 행한 연속적인 단계를 개략적으로 도시한 것이다. 상기 프리페치부가 상기 L2캐시에서 수신한 다음 메모리 액세스 요구를 관찰하는 단계 50에서 흐름이 개시한다고 할 수 있다. 그리고, 단계 51에서는, 상기 프리페치부에 의해 상기 금지 조건이 현재 만족하는지를 판정한다. 본 실시예의 이 스테이지에서, 이것은 페이지 경계가 최근 교차되었다는 것이다. 단계 51에서 금지조건이 만족되지 않은 경우에(즉, 페이지 경계가 최근에 교차되지 않았을 경우에), 상기 프리페치부(19)는 일반적인 구성에 따라 작용하고, 단계 53에서는, L2캐시에서 수신한 메모리 액세스 요구에서 메모리 어드레스가 프리페치 테이블(21)에서의 대응한 엔트리가 나타낸 패턴과 일치하는지를 판정한다(즉, 스트라이드 체크가 행해진다). 정확히 일치하면, 상기 프리페치 테이블(21)의 이 엔트리에 보유된 정보는 메모리 어드레스를 정확히 계속 예측한다. 그러나, 변동이 관찰되는 경우, 단계 54의 흐름으로 진행되어, 프리페치 테이블(21)에서의 엔트리는 필요한 경우 통상의 프리페치 테이블 관리 정책에 따라 적응된다. 그 후, (페이지 경계가 최근 가로질러졌을 경우 단계 51로부터 가능한) 단계 55에서 L2캐시가 수신한 그 가장 마지막의 메모리 액세스 요구가 미스가 되었고 (미해결 프리페치 리스트(22)를 참조하여) 이 메모리 어드레스에 대한 프리페치가 진행중인지를 판정한다. 그렇지 않은 경우, 단계 56의 흐름으로 진행되어, 상기 간격 감소 타이머(33)의 기간이 경과하였는지를 판정한다. 경과하였을 경우, 단계 58의 처리로 바로 진행되어, 상기 프리페치부(19)는 그것의 예비 인출 동작을 계속 행한 후 단계 50의 흐름으로 복귀한다. 그러나, 단계 56에서 상기 간격 감소 타이머(33)의 기간이 경과하였다면, 단계 57에서는 이 프리페치 테이블 엔트리에 대한 프리페치 간격을 감소시키고 나서 단계 58을 거쳐 흐름이 계속된다. 단계 55로 되돌아가면, 메모리 액세스 요구가 L2캐시에서 미스가 되었고 대응한 메모리 어드레스에 대한 프리페치 트랜잭션이 진행중이라고 발견된 경우에는, 단계 59의 흐름으로 진행되어, 상기 프리페치부(19)의 제어부(30)는 금지조건이 현재 만족되는지를 판정한다(이때, 본 실시예의 본 스테이지에서, 도 5의 박스 52에 규정된 것처럼, 이것은, 페이지 경계를 최근에 가로질렀거나, 단계 50에서 보여진 메모리 액세스 요구에 대응한 프리페치 테이블에서의 엔트리에 대한 프리페치 간격을 최근에 증가시켰다는 것이다). 이때, 여기서 "최근"이란, 프리페치부(19)의 동작에 대해 현재 규정된 금지기간(31)내를 말한다. 그 금지조건이 만족되지 않으면, 단계 60의 흐름으로 진행되어, 상기 제어부(30)에 의해, 상기 프리페치 테이블(21)에서의 이 엔트리에 대한 프리페치 간격을 증가시킨 후 단계 58을 거쳐 상기 흐름이 계속된다. 그러나, 단계 59에서 상기 금지조건이 현재 만족되면 단계 61의 흐름으로 진행되어, 상기 제어부(30)는 (프리페치 간격을 증가시키지 않는 것을 포함하는) 상기 프리페치 테이블 엔트리의 수정을 억제한다. 그 후에도 단계 58을 거쳐 상기 흐름이 계속된다.
여기에서는 특정한 실시예을 설명하였지만, 본 발명은 이에 한정되지 않고, 본 발명의 범위내에서 많은 변형 및 추가를 행하여도 된다. 예를 들면, 이하의 종속항의 특징들과 본 발명의 범위로부터 벗어나지 않고 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (14)

  1. 연속적인 프로그램 명령어를 실행하는 명령어 실행부로서, 그 프로그램 명령어들의 적어도 일부의 실행이 메모리로부터 데이터 값들을 검색하기 위해 메모리 액세스 요구들을 개시하는, 상기 명령어 실행부;
    상기 메모리로부터 검색된 데이터 값들의 사본을 기억하도록 구성된 캐시부; 및
    상기 메모리 액세스 요구들의 현재의 데이터 값 액세스 패턴을 외삽하여 상기 명령어 실행부에서 요구할 차후의 데이터 값들을 예측하여 예비 인출(prefetch)함으로써 상기 명령어 실행부가 데이터 값들을 요구하기 전에 상기 캐시부에 기억하기 위한 상기 메모리로부터 상기 데이터 값들을 예비 인출하는 프리페치부를 구비하고,
    상기 프리페치부는, 메모리 액세스 요구가 예비 인출이 이미 이루어졌지만 아직 상기 캐시부에 기억되지 않은 미해결(pending) 데이터 값을 특정할 때 예비 인출하는 상기 차후의 데이터 값의 수를 증가시키는 것을 포함하는 미스(miss) 응답을 행하도록 구성되고,
    상기 프리페치부는, 만족되는 금지조건에 따라, 금지기간에 상기 미스 응답을 일시적으로 금지시키도록 구성된, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 금지조건은 강제적 미스 조건의 식별을 포함하고, 여기서 강제적 미스 조건은 상기 메모리 액세스 요구가 특정한 상기 미해결 데이터 값이 상기 캐시부에 아직 기억되지 않는 것을 피할 수 없을 때 만족되는, 데이터 처리장치.
  3. 제 2 항에 있어서,
    상기 강제적 미스 조건은, 상기 메모리 액세스 요구가 예비 인출이 가능하지 않을 때 만족되는, 데이터 처리장치.
  4. 제 1 항에 있어서,
    상기 프리페치부는 메모리 액세스 요구마다 스트라이드 체크를 행하도록 구성되고, 이 스트라이드 체크는 상기 메모리 액세스 요구가 현재의 데이터 값 액세스 패턴을 외삽하는지를 판정하고, 상기 데이터 처리장치에서의 메모리 어드레스들은 메모리 페이지 단위로 관리되고, 상기 프리페치부는 페이지 경계를 가로지르는 차후의 데이터 값의 수에 대응한 일 세트의 메모리 어드레스에 따라 상기 스트라이드 체크를 억제하도록 구성된, 데이터 처리장치.
  5. 제 1 항에 있어서,
    상기 데이터 처리장치에서의 메모리 어드레스들은 메모리 페이지 단위로 관리되고, 상기 금지조건은 차후의 데이터 값의 수에 대응한 일 세트의 메모리 어드레스가 페이지 경계를 가로지를 때 만족되는, 데이터 처리장치.
  6. 제 1 항에 있어서,
    상기 프리페치부는, 상기 차후의 데이터 값의 수가 증가된 후 소정의 기간동안 상기 금지조건이 만족되도록 구성된, 데이터 처리장치.
  7. 제 1 항에 있어서,
    상기 금지기간은 상기 데이터 처리장치의 전형적인 메모리 지연의 배수이고, 상기 메모리 지연은 상기 메모리로부터 데이터 값이 검색되는데 걸린 시간을 나타내는, 데이터 처리장치.
  8. 제 1 항에 있어서,
    상기 데이터 처리장치는 상기 연속적인 프로그램 명령어를 실행하도록 구성된 복수의 명령어 실행부를 구비한, 데이터 처리장치.
  9. 제 1 항에 있어서,
    상기 명령어 실행부는, 상기 연속적인 프로그램 명령어를 실행할 때 다중 스레드를 병렬로 실행하도록 구성된, 데이터 처리장치.
  10. 제 9 항에 있어서,
    상기 명령어 실행부는, 단일 명령어 다중 스레드 방식으로 작동하도록 구성된, 데이터 처리장치.
  11. 제 1 항에 있어서,
    상기 프리페치부는 예비 인출하는 차후의 데이터 값들의 수를 주기적으로 감소시키도록 구성된, 데이터 처리장치.
  12. 제 1 항에 있어서,
    상기 프리페치부는 프리페치 테이블에 대해 차후의 데이터 값들의 예비 인출을 관리하도록 구성되고, 상기 프리페치 테이블에서의 각 엔트리는 상기 연속적인 프로그램 명령어에서 선택된 명령어를 나타내는 프로그램 카운터 값별로 지수가 만들어지고, 상기 프리페치 테이블에서의 각 엔트리는 상기 선택된 명령어에 대한 현재의 데이터 값 액세스 패턴을 가리키고, 상기 프리페치부는, 만족되는 상기 금지조건에 따라, 상기 프리페치 테이블에서 적어도 하나의 엔트리에 관한 수정을 억제하도록 구성된, 데이터 처리장치.
  13. 연속적인 프로그램 명령어를 실행하는 수단으로서, 그 프로그램 명령어들의 적어도 일부의 실행이 메모리로부터 데이터 값들을 검색하기 위해 메모리 액세스 요구들을 개시하는, 상기 수단;
    상기 메모리로부터 검색된 데이터 값들의 사본을 기억하는 수단; 및
    상기 메모리 액세스 요구들의 현재의 데이터 값 액세스 패턴을 외삽하여 상기 실행수단에서 요구할 차후의 데이터 값들을 예측하여 예비 인출함으로써 상기 실행수단이 상기 데이터 값들을 요구하기 전에 상기 기억수단에서 기억하기 위한 상기 메모리로부터 상기 데이터 값들을 예비 인출하는 수단을 구비하고,
    상기 프리페치 수단은, 메모리 액세스 요구가 예비 인출이 이미 이루어졌지만 아직 상기 기억수단에 기억되지 않은 미해결 데이터 값을 특정할 때 예비 인출하는 상기 차후의 데이터 값의 수를 증가시키는 것을 포함하는 미스 응답을 행하도록 구성되고,
    상기 프리페치 수단은, 만족되는 금지조건에 따라, 금지기간에 상기 미스 응답을 일시적으로 금지시키도록 구성된, 데이터 처리장치.
  14. 연속적인 프로그램 명령어를 실행하는 단계로서, 그 프로그램 명령어들의 적어도 일부의 실행이 메모리로부터 데이터 값들을 검색하기 위해 메모리 액세스 요구들을 개시하는, 상기 단계;
    상기 메모리로부터 검색된 데이터 값들의 사본을 캐시에 기억하는 단계;
    상기 메모리 액세스 요구들의 현재의 데이터 값 액세스 패턴을 외삽하여 상기 실행단계에서 요구할 차후의 데이터 값들을 예측하여 예비 인출함으로써 상기 실행단계에서 상기 데이터 값들을 요구하기 전에 상기 캐시에 기억하기 위한 상기 메모리로부터 상기 데이터 값들을 예비 인출하는 단계;
    메모리 액세스 요구가 예비 인출이 이미 이루어졌지만 아직 상기 캐시에 기억되지 않은 미해결 데이터 값을 특정할 때 예비 인출한 상기 차후의 데이터 값의 수를 증가시키는 것을 포함하는 미스 응답을 행하는 단계; 및
    만족되는 금지조건에 따라, 금지기간에 상기 미스 응답을 일시적으로 금지시키는 단계를 포함한, 데이터 처리방법.
KR1020140150933A 2013-11-14 2014-11-03 데이터 처리장치에서의 적응형 예비 인출 KR102369500B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/080,139 US20150134933A1 (en) 2013-11-14 2013-11-14 Adaptive prefetching in a data processing apparatus
US14/080,139 2013-11-14

Publications (2)

Publication Number Publication Date
KR20150056042A true KR20150056042A (ko) 2015-05-22
KR102369500B1 KR102369500B1 (ko) 2022-03-03

Family

ID=51947048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140150933A KR102369500B1 (ko) 2013-11-14 2014-11-03 데이터 처리장치에서의 적응형 예비 인출

Country Status (4)

Country Link
US (1) US20150134933A1 (ko)
KR (1) KR102369500B1 (ko)
CN (1) CN104636270B (ko)
GB (1) GB2521037B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672154B1 (en) * 2014-01-15 2017-06-06 Marvell International Ltd. Methods and apparatus for determining memory access patterns for cache prefetch in an out-of-order processor
CN104978282B (zh) * 2014-04-04 2019-10-01 上海芯豪微电子有限公司 一种缓存系统和方法
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
EP3320428A4 (en) * 2015-07-09 2019-07-17 Centipede Semi Ltd. PROCESSOR WITH EFFICIENT MEMORY ACCESS
US9906590B2 (en) * 2015-08-20 2018-02-27 Verizon Digital Media Services Inc. Intelligent predictive stream caching
CN106776371B (zh) * 2015-12-14 2019-11-26 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
US9542290B1 (en) 2016-01-29 2017-01-10 International Business Machines Corporation Replicating test case data into a cache with non-naturally aligned data boundaries
US10169180B2 (en) 2016-05-11 2019-01-01 International Business Machines Corporation Replicating test code and test data into a cache with non-naturally aligned data boundaries
US10055320B2 (en) * 2016-07-12 2018-08-21 International Business Machines Corporation Replicating test case data into a cache and cache inhibited memory
US10223225B2 (en) 2016-11-07 2019-03-05 International Business Machines Corporation Testing speculative instruction execution with test cases placed in memory segments with non-naturally aligned data boundaries
US10379864B2 (en) * 2016-12-26 2019-08-13 Intel Corporation Processor prefetch throttling based on short streams
US11256623B2 (en) * 2017-02-08 2022-02-22 Arm Limited Cache content management
US10261878B2 (en) 2017-03-14 2019-04-16 International Business Machines Corporation Stress testing a processor memory with a link stack
US10416963B2 (en) * 2017-06-19 2019-09-17 Arm Limited Bounds checking
US10635331B2 (en) * 2017-07-05 2020-04-28 Western Digital Technologies, Inc. Distribution of logical-to-physical address entries across bank groups
CN109471971B (zh) * 2018-02-06 2021-05-04 华南师范大学 一种面向教育领域资源云存储的语义预取方法及系统
US10713053B2 (en) * 2018-04-06 2020-07-14 Intel Corporation Adaptive spatial access prefetcher apparatus and method
GB2574270B (en) * 2018-06-01 2020-09-09 Advanced Risc Mach Ltd Speculation-restricted memory region type
US10997077B2 (en) * 2018-11-26 2021-05-04 Marvell Asia Pte, Ltd. Increasing the lookahead amount for prefetching
US11327891B2 (en) 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices
CN112527395B (zh) * 2020-11-20 2023-03-07 海光信息技术股份有限公司 数据预取方法和数据处理装置
US11853227B2 (en) * 2021-04-28 2023-12-26 Arm Limited Data processing apparatus and method for performing address translation
US11853221B2 (en) * 2022-02-18 2023-12-26 Hewlett Packard Enterprise Development Lp Dynamic prefetching of data from storage
CN114546488B (zh) * 2022-04-25 2022-07-29 超验信息科技(长沙)有限公司 一种向量跨步指令的实现方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090187715A1 (en) * 2008-01-18 2009-07-23 Sajish Sajayan Prefetch Termination at Powered Down Memory Bank Boundary in Shared Memory Controller
US20140149679A1 (en) * 2012-11-27 2014-05-29 Nvidia Corporation Page crossing prefetches

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233645B1 (en) * 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US6421762B1 (en) * 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
US6532521B1 (en) * 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US20060168401A1 (en) * 2005-01-26 2006-07-27 International Business Machines Corporation Method and structure for high-performance linear algebra in the presence of limited outstanding miss slots
US7487297B2 (en) * 2006-06-06 2009-02-03 International Business Machines Corporation Dynamically adjusting a pre-fetch distance to enable just-in-time prefetching within a processing system
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
EP2115598B1 (en) * 2007-01-25 2011-03-30 Nxp B.V. Hardware triggered data cache line pre-allocation
US7831800B2 (en) * 2007-05-17 2010-11-09 Globalfoundries Inc. Technique for prefetching data based on a stride pattern
US7958316B2 (en) * 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic adjustment of prefetch stream priority
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
CN101634970B (zh) * 2009-08-26 2011-09-07 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
US9229859B2 (en) * 2009-09-25 2016-01-05 Hewlett Packard Enterprise Development Lp Mapping non-prefetchable storage locations into memory mapped input/output space
US8291171B2 (en) * 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
US8949579B2 (en) * 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization
CN102023931B (zh) * 2010-12-17 2015-02-04 曙光信息产业(北京)有限公司 一种自适应缓存预取方法
JP2012150529A (ja) * 2011-01-17 2012-08-09 Sony Corp メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム
US9348753B2 (en) * 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US9639471B2 (en) * 2012-11-27 2017-05-02 Nvidia Corporation Prefetching according to attributes of access requests
US9047198B2 (en) * 2012-11-29 2015-06-02 Apple Inc. Prefetching across page boundaries in hierarchically cached processors
WO2014107148A1 (en) * 2013-01-03 2014-07-10 Intel Corporation Adaptive data prefetching
US10671535B2 (en) * 2013-07-17 2020-06-02 Advanced Micro Devices, Inc. Stride prefetching across memory pages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090187715A1 (en) * 2008-01-18 2009-07-23 Sajish Sajayan Prefetch Termination at Powered Down Memory Bank Boundary in Shared Memory Controller
US20140149679A1 (en) * 2012-11-27 2014-05-29 Nvidia Corporation Page crossing prefetches

Also Published As

Publication number Publication date
CN104636270B (zh) 2021-03-05
US20150134933A1 (en) 2015-05-14
GB201417802D0 (en) 2014-11-19
KR102369500B1 (ko) 2022-03-03
GB2521037B (en) 2020-12-30
GB2521037A (en) 2015-06-10
CN104636270A (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
KR20150056042A (ko) 데이터 처리장치에서의 적응형 예비 인출
JP6840169B2 (ja) キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択
US7917701B2 (en) Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
JP4045296B2 (ja) キャッシュメモリ及びその制御方法
EP0496439B1 (en) Computer system with multi-buffer data cache and method therefor
KR101677900B1 (ko) 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법
US20070239940A1 (en) Adaptive prefetching
US20100250853A1 (en) Prefetch engine based translation prefetching
CN113407119B (zh) 数据预取方法、数据预取装置、处理器
US20160140046A1 (en) System and method for performing hardware prefetch tablewalks having lowest tablewalk priority
US10402203B2 (en) Determining a predicted behaviour for processing of instructions
GB2520594A (en) Data processing method and apparatus for prefetching
US9280476B2 (en) Hardware stream prefetcher with dynamically adjustable stride
US7346741B1 (en) Memory latency of processors with configurable stride based pre-fetching technique
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US8635406B2 (en) Data processing apparatus and method for providing target address information for branch instructions
US11010306B2 (en) Apparatus and method for managing a cache hierarchy
KR20240023151A (ko) 범위 프리페치 명령어
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
US8443176B2 (en) Method, system, and computer program product for reducing cache memory pollution
US11461101B2 (en) Circuitry and method for selectively controlling prefetching of program instructions

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