KR100976433B1 - 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법 - Google Patents

정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법 Download PDF

Info

Publication number
KR100976433B1
KR100976433B1 KR1020080136801A KR20080136801A KR100976433B1 KR 100976433 B1 KR100976433 B1 KR 100976433B1 KR 1020080136801 A KR1020080136801 A KR 1020080136801A KR 20080136801 A KR20080136801 A KR 20080136801A KR 100976433 B1 KR100976433 B1 KR 100976433B1
Authority
KR
South Korea
Prior art keywords
unit
instruction
address
prefetch
memory access
Prior art date
Application number
KR1020080136801A
Other languages
English (en)
Other versions
KR20090101072A (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 KR20090101072A publication Critical patent/KR20090101072A/ko
Application granted granted Critical
Publication of KR100976433B1 publication Critical patent/KR100976433B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 프리페치(prefetch)에 의해서 보다 효과적인 성능 향상을 얻을 수 있도록 하는 것을 과제로 한다.
명령 실행부(15)와 기억부(11) 사이에 개재된 적어도 하나의 캐쉬 메모리(12, 13)와, 하드웨어 프리페치 요구 발행부(22a)에 의한, 메모리 액세스 요구가 있었던 어드레스와 어드레스 정보 유지부(21)에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여 어드레스 정보의 내용을 제어하는 제어부(25)를 구비하고, 제어부(25)가, 어드레스 정보 유지부(21)에 어드레스 정보를 유지시키거나, 혹은 어드레스 정보 유지부(21)의 어드레스 정보를 갱신하면, 그 어드레스 정보에 대한 덮어쓰기 처리를 소정 기간 억지하도록 구성된다.

Description

정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법{INFORMATION PROCESSING UNIT, PROGRAM RECORDING MEDIUM, AND INSTRUCTION SEQUENCE GENERATION METHOD}
본 발명은 정보 처리 장치에서 이루어지는 프리페치(prefetch)에 이용하기에 적합한 기술에 관한 것이다.
종래로부터, 컴퓨터는 CPU(Central Processing Unit)와 주기억 장치 사이에 적어도 1 계층의 캐쉬 메모리를 구비하여, 주기억 장치의 액세스 레이턴시 은폐나 스루풋 부족의 개선을 도모하고 있다.
CPU의 고속화·고성능화에 비하여, 메모리 시스템의 성능 향상율은 낮아, 최근에는 캐쉬 메모리의 히트율 향상이나 캐쉬 미스 레이턴시의 은폐가 점점 필요하게 되었다.
이들 문제에 대한 하나의 해결 수단으로서, 가까운 장래에 필요하게 될 데이터를 미리 캐쉬 메모리로부터 판독해 두는 프리페치 수법이 이용되고 있다.
프리페치의 실현 방법은 소프트웨어에 의한 소프트웨어 프리페치와 하드웨어에 의한 하드웨어 프리페치의 2가지로 대별된다.
소프트웨어 프리페치에서는, 컴파일러나 프로그래머가 미리 명령열 속에 프 리페치 명령을 명시적으로 삽입하여 프리페치를 행한다.
한편, 하드웨어 프리페치에서는, 과거의 메모리 액세스 어드레스나 캐쉬 미스 어드레스 등의 어드레스 패턴을 프리페치 어드레스 큐에 기억해 두고서, 과거의 어드레스 패턴으로부터 연속적인 메모리 액세스가 이루어진 경우에, 또한 그 앞의 어드레스를 프리페치한다.
또, 종래로부터, 하드웨어 프리페치에 관해, 프리페치에 이용되는 스트라이드(stride) 값을 결정하기 위한 기술이나, 명령을 메모리로부터 프리페치하여 캐쉬에 저장시키는 명령 캐쉬 장치에 관한 기술이 있다(예컨대, 하기 특허문헌 1, 2 참조).
<특허문헌 1> 일본 특허 공표 2006-510082호 공보
<특허문헌 2> 일보 특허 공개 평11-306028호 공보
그런데, 종래의 소프트웨어 프리페치에서는, 미리 명령열 속에 프리페치 명령을 명시적으로 삽입해 두기 때문에, 유연한 제어가 가능하다. 그러나, 소프트웨어 프리페치는 캐쉬 미스 발생이나 어드레스 계산 결과 등의 동적인 거동에 따라서 필요한 프리페치 명령을 삽입하는 것이 곤란하다.
또한, 소프트웨어 프리페치는, 프리페치를 행하는 캐쉬 라인 단위로 필요 최저한의 단일 프리페치 명령만을 삽입하는 것은 곤란하며, 모든 캐쉬 라인 단위에 프리페치 명령을 삽입하는 경우가 많기 때문에, 실제로는 불필요한 용장성 프리페 치 명령이 삽입된다고 하는 문제점도 있다.
한편, 종래의 하드웨어 프리페치에서는, 프리페치 어드레스 큐가 어드레스 패턴을 기록할 수 있는 엔트리의 수를 넘는 복수 계열의 연속 액세스가 동시에 발생한 경우에는, LRU(Least Recently Used) 제어에 의해서 기존의 엔트리 상에 연속 액세스에 따른 새로운 어드레스 패턴을 덮어쓰기한다.
그러나, 복수 계열의 연속 액세스가 동시에 발생하고 있기 때문에, 이들 복수 계열 사이에서 서로 덮어쓰여져 버려, 연속 액세스 검출을 할 수 없어, 하드웨어 프리페치가 생성되지 않는 문제를 생각할 수 있다.
예컨대, 도 10에 종래의 LRU 제어에 의해서 프리페치 어드레스 큐(100)에 유지되는 어드레스 패턴의 천이를 나타낸다. 한편, 프리페치 어드레스 큐(100)는 엔트리 0∼3의 4 엔트리를 갖고, 4개의 어드레스 패턴을 기록할 수 있다.
또한, 도 10은 5개의 다른 계열(여기서는 액세스 어드레스 A∼E)의 메모리 액세스가 동시에 이루어지는 경우, 프리페치 어드레스 큐(100)의 어드레스 패턴의 천이를 나타낸다. 여기서, 도 10에 있어서 세로 방향은 시간을 나타내고 있다.
우선, 시간 t1∼t4에 걸쳐, 계열 A∼D의 어드레스 패턴이 순차 등록된다. 여기서는, 일반적인 하드웨어 프리페치 기구로서, 액세스 어드레스의 다음 캐쉬 라인 어드레스 A+1∼D+1이 어드레스 패턴으로서 프리페치 어드레스 큐의 엔트리 0∼3에 각각 등록된다.
즉, 시간 t1에서의 계열 A의 액세스 발생에 따라서 엔트리 0에 어드레스 패턴 A+1이 등록된다. 또한, 시간 t2에서의 계열 B의 액세스 발생에 따라서 엔트리 1 에 어드레스 패턴 B+1이 등록된다. 또한, 시간 t3에서의 계열 C의 액세스 발생에 따라서 엔트리 2에 어드레스 패턴 C+1이 등록된다. 그리고, 시간 t4에 있어서의 계열 D의 액세스 발생에 따라서 엔트리 3에 어드레스 패턴 D+1이 등록된다.
이에 따라, 프리페치 어드레스 큐(100)는 전체 엔트리 0∼3이 사용되고 있는 상태가 된다.
또한 연속 액세스가 진행되어 시간 t5에서 후속 계열 E의 액세스가 발생하면, LRU 제어에 의해서 가장 오래된 엔트리 0의 어드레스 패턴 A+1이 덮어쓰기되어, 엔트리 0에 어드레스 패턴 E+1이 등록된다.
그 후, 시간 t6에서 계열 A의 연속 액세스가 발생하더라도, 시간 t4까지는 엔트리 0에 등록되어 있었던 어드레스 패턴 A+1은 시간 t5에서 덮어쓰기되어 소거되게 된다. 그 때문에, 이 때 계열 A의 연속 액세스가 발생하고 있음에도 불구하고 계열 A의 프리페치 요구의 발행이 이루어질 수 없다.
그리고, 이 때, 어드레스 패턴 A+2가 엔트리 1의 어드레스 패턴 B+1에 덮어쓰기 처리된다.
이후, 도 10에 나타내는 바와 같이, 시간 t7∼t9에 걸쳐, 계열 B∼D의 연속 액세스가 발생하더라도, 계열 A와 마찬가지로, 이들 계열 B∼D의 프리페치 요구도 발행할 수 없다.
이와 같이, 종래의 LRU 제어에 따르면, 프리페치 어드레스 큐(100)의 엔트리수보다도 많은 계열의 액세스가 같은 시기에 일어나면, 프리페치 어드레스 큐(100)에 있어서 각각의 계열의 어드레스 패턴을 서로 덮어쓰기 등록해 버린다. 그 결과, 프리페치 요구를 발행할 수 없다고 하는 문제점이 생긴다.
또한, 하드웨어 프리페치는 회로로서 실장된 알고리즘에 따라 동작하기 때문에, 프리페치 발생 타이밍이나, 얼마만큼 앞의 어드레스를 프리페치할지의 거리가 고정적으로 되어 버려, 소프트웨어 프리페치만큼 유연한 제어를 할 수 없다.
또한, 종래, 하드웨어 프리페치가 컴파일러나 프로그래머에게는 보이지 않는 존재이기 때문에, 하드웨어 프리페치와 소프트웨어 프리페치는 독립적으로 최적화되었다. 그 때문에, 동일한 어드레스에 소프트웨어 프리페치와 하드웨어 프리페치 양방이 프리페치를 행하는 등, 최적화 효율이 나쁘다고 하는 과제도 있다.
본 발명은 이러한 과제에 감안하여 창안된 것으로, 프리페치에 의해서 보다 효과적인 성능 향상을 얻을 수 있도록 하는 것을 목적으로 한다.
상기 목적을 달성하기 위해서, 이 정보 처리 장치는, 명령 실행부와 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와, 하드웨어 프리페치 요구 발행부에 의한, 메모리 액세스 요구가 있었던 어드레스와 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여 어드레스 정보의 내용을 제어하는 제어부를 구비하고, 제어부는, 어드레스 정보 유지부에 어드레스 정보를 유지시키면, 혹은 어드레스 정보 유지부의 어드레스 정보를 갱신하면, 그 어드레스 정보에 대한 덮어쓰기 처리를 소정 기간 억지한다.
또한, 상기 목적을 달성하기 위해서, 이 정보 처리 장치는, 상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지의 여부를 나 타내는 지시 정보를 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부를 구비하고, 하드웨어 프리페치 요구 발행부는, 지시 정보에 기초하여, 비교 처리 및 하드웨어 프리페치 요구의 발행 처리를 실행한다.
또한, 상기 목적을 달성하기 위해서, 이 프로그램은 상기 하드웨어 프리페치 대상 지시부로서 컴퓨터를 기능시키는 것을 요건으로 한다.
더욱이, 상기 목적을 달성하기 위해서, 이 명령열 생성 방법은, 액세스 정보 유지부가 유지할 수 있는 어드레스 정보의 엔트리수에 따라서, 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지의 여부를 나타내는 지시 정보를 메모리 액세스 명령에 부가하고, 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 한편, 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지한다.
이와 같이, 상술한 정보 처리 장치에 따르면, 제어부가, 어드레스 정보 유지부에 어드레스 정보를 유지시키면, 혹은 어드레스 정보 유지부의 어드레스 정보를 갱신하면, 그 어드레스 정보에 대한 덮어쓰기 처리를 소정 기간 억지한다. 그 때문에, 종래의 LRU 제어와 같이, 연속 액세스가 확인된 유효한 어드레스 정보를 등록 또는 갱신한 후 곧바로 덮어쓰기 처리에 의해서 소거하는 것을 억지할 수 있다. 즉, 어드레스 정보 유지부가 엔트리수를 넘는 복수 계열의 연속 액세스가 발생하더 라도, 등록되어 있는 어드레스 정보가 복수 계열의 메모리 액세스에 의해서 서로 덮어쓰기되는 것을 확실하게 억지할 수 있다. 그 결과, 어드레스 정보 유지부를 유효하게 사용할 수 있고, 연속 액세스에 대한 프리페치 요구를 효율적으로 발행할 수 있어, 본 정보 처리 장치는 프리페치에 의해서 보다 효과적인 성능 향상을 얻을 수 있다.
또한, 상술한 프로그램 및 명령열 생성 방법에 따르면, 프리페치 대상 지시부가 프리페치 요구 발행 대상인지의 여부를 나타내는 지시 정보를 메모리 액세스 명령에 부가하기 때문에, 소프트웨어 프리페치 측에서, 하드웨어 프리페치를 실행시킬지 여부를 결정할 수 있어, 소프트웨어 프리페치와 하드웨어 프리페치를 효율적으로 양립시킬 수 있다. 그 결과, 프리페치에 의해서 보다 효과적인 성능 향상을 얻을 수 있다.
이하, 도면을 참조하면서 본 발명의 실시형태에 관해서 설명한다.
〔1〕 본 발명의 일 실시형태에 대해
우선, 도 1에 도시하는 기능 블록도를 참조하면서, 본 발명의 일 실시형태로서의 정보 처리 장치(1)의 구성에 관해서 설명한다.
도 1에 도시하는 바와 같이, 본 정보 처리 장치(1)는, 컴파일부(2), 프로세서 유닛(명령 발행부·명령 실행부)(10), 주기억 장치(기억부)(11), 1차 캐쉬(12), 2차 캐쉬(13) 및 하드웨어 프리페치 제어 장치(20)를 갖는다. 본 정보 처리 장치(1)는, 컴파일러에 의해서 생성된 프로그램 명령열을 입력으로 하고, 명령 발행 부·명령 실행부(10)에 의해서 프로그램이 실행된다.
컴파일부(2)는 컴파일러에 의해서 실현되는 것으로, 프로그래밍 언어로 기술된 소스 코드를 프로세서 유닛(10)이 실행할 수 있는 형식으로 변환하는 것이다.
도 2에 도시하는 바와 같이, 컴파일러는 소프트웨어이며, 프로그래머에 의한 프로그램 생성 후, 컴파일러에 의해서 실현되는 컴파일부(2)에 의해서 프로그램 명령열이 생성된다.
한편, 프로그래머에 의한 프로그램 생성에는 소프트웨어 프리페치 명령의 생성·삽입이나, 후술하는 하드웨어 프리페치 대상 지시가 포함되어 있더라도 좋다.
또한, 컴파일부(2)에 의한 명령열 생성 처리에는, 컴파일부(2)가 갖는 프리페치 대상 지시부(하드웨어 프리페치 대상 지시부)(3)에 의한 하드웨어 프리페치 대상 지시와, 컴파일부(2)가 갖는 메모리 액세스 명령 생성부(4)에 의한 소프트웨어 프리페치 명령 삽입 처리가 포함된다.
이와 같이, 컴파일부(2)에 의해서 소프트웨어 프리페치를 실현할 수 있다.
한편, 소프트웨어인 컴파일러에 대하여, 프로세서 유닛(10), 주기억 장치(11), 1차 캐쉬 메모리(12a), 2차 캐쉬 메모리(13a) 및 하드웨어 프리페치 제어 장치(20)는 하드웨어이다.
한편, 도 2의 예에서는, 1차 캐쉬 메모리(12a)[즉, 1차 캐쉬(12)] 및 하드웨어 프리페치 제어 장치(20)가 프로세서 유닛(10) 내에 설치된 예이지만, 본 발명에 있어서, 1차 캐쉬(12), 2차 캐쉬(13) 및 하드웨어 프리페치 제어 장치(20)가 설치되는 위치는 한정되지 않는다.
프리페치 대상 지시부(3)는, 변환한 명령열에 기초하여 연속 액세스를 인식하면, 그 연속 액세스가 발생하는 메모리 액세스 명령에 관해서 하드웨어 프리페치에 의한 프리페치를 실행시킬지 여부를 판단한다.
즉, 프리페치 대상 지시부(3)는, 연속 액세스가 발생하는 메모리 액세스 명령이 하드웨어 프리페치 제어 장치(20)의 후술하는 하드웨어 프리페치 요구 발행부(22a)에 의한 하드웨어 프리페치 요구 발행 대상(이하, 프리페치 요구 발행 대상이라고도 함)인지 여부를 결정한다. 그리고, 프리페치 대상 지시부(3)는, 하드웨어 프리페치 요구 발행부(22a)에 의한 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보(하드웨어 프리페치 대상 지시)를 그 메모리 액세스 명령에 부가한다.
즉, 지시 정보는 하드웨어 프리페치 요구 발행부(22a)에 하드웨어 프리페치 요구를 발행시킬지 여부를 지시하는 정보이다.
메모리 액세스 명령 생성부(4)는, 연속 액세스가 발생하는 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 것이다. 한편, 컴파일부(2)는 메모리 액세스 명령 생성부에 의해서 소프트웨어 프리페치 명령이 삽입된 명령열을 메모리 액세스 명령으로서 출력한다.
구체적으로는, 메모리 액세스 명령 생성부(4)는, 프리페치 대상 지시부(3)에 의해서 프리페치 요구 발행 대상임을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지한다.
한편, 메모리 액세스 명령 생성부(4)는, 프리페치 대상 지시부(3)에 의해서 연속 액세스가 발생한다고 판단되고, 또한, 프리페치 요구 발행 대상이 아님(즉, 프리페치 발행 비대상임)을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 대해서는, 소프트웨어 프리페치를 실행하도록 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입한다.
프로세서 유닛(10)은 계산 처리를 실행하는 것으로, 명령 해독부(14) 및 명령 실행부(15)를 갖는다.
명령 해독부(14)는, 컴파일부(2)에 의해서 생성된 프로그램 명령열(단순히 명령열이라고도 함)을 명령 실행부(15)가 실행할 수 있게 해독하는 것이다.
명령 실행부(15)는 명령 해독부(14)에 의해서 해독된 메모리 액세스 명령을 실행하는 것으로, 1차 캐쉬(12)에 대하여 메모리 액세스 요구를 행한다. 한편, 이후의 설명에서는, 그 메모리 액세스 요구에 관한 메모리 액세스 요구 어드레스를 액세스 어드레스라고 한다.
또한, 명령 실행부(15)에서 1차 캐쉬(12)로의 메모리 액세스 요구(액세스 어드레스)는, 프리페치 대상 지시부(3)에 의해서 부가된 하드웨어 프리페치 대상 지시와 함께, 하드웨어 프리페치 제어 장치(20)의 후술하는 액세스 패턴 감시부(22)에도 입력된다.
주기억 장치(11)는 명령 실행부(15)에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 것이다.
1차 캐쉬(12)는 액세스 속도가 빠른 1차 캐쉬 메모리(12a)와 그 제어 장치(12b)를 갖는다. 또, 1차 캐쉬(12)의 제어 단위는 예컨대 64B(바이트)이다.
2차 캐쉬(13)는, 주기억 장치(11)보다 액세스 속도가 빠르고 1차 캐쉬(12)의 1차 캐쉬 메모리(12a)보다 용량이 큰 2차 캐쉬 메모리(13a)와, 그 제어 장치(13b)를 갖는다. 또, 2차 캐쉬(13)의 제어 단위는 예컨대 256B이다.
1차 캐쉬(12)는, 프로세서 유닛(10)로부터의 메모리 액세스 요구에 대하여, 액세스 어드레스의 데이터를 자신이 유지하고 있으면, 그 데이터를 펫치 데이터로서 프로세서 유닛에 출력한다(도면에서 "메모리 액세스 데이터" 참조).
한편, 1차 캐쉬(12)는, 액세스 어드레스의 데이터를 자신이 유지하고 있지 않으면, 그 데이터를 2차 캐쉬(13)에 요구한다(도면에서 "1차 캐쉬 등록 요구" 참조).
2차 캐쉬(13)는, 1차 캐쉬(12)로부터 요구된 데이터를 유지하고 있으면, 1차 캐쉬(12)에 응답한다(도면에서 "1차 캐쉬 등록 데이터" 참조).
그러나, 2차 캐쉬(13)는 요구된 데이터를 유지하고 있지 않으면, 주기억 장치(11)에 대하여 그 데이터를 요구한다(도면에서 "2차 캐쉬 등록 요구" 참조). 그리고, 주기억 장치(11)는 그 데이터를 2차 캐쉬(13)에 응답한다(도면에서 "2차 캐쉬 등록 데이터" 참조).
그리고, 그 데이터는 주기억 장치(11)로부터 2차 캐쉬(13) 및 1차 캐쉬(12)를 통해 프로세서 유닛(10)에 출력된다.
하드웨어 프리페치 제어 장치(20)는, 등록이 끝난 과거의 어드레스 패턴과, 후속 메모리 액세스 명령의 액세스 어드레스와의 비교 처리 결과를 기초로 연속 액세스를 검출하여 캐쉬 블록의 하드웨어 프리페치 요구를 발행하는 것이다.
그리고, 하드웨어 프리페치 제어 장치(20)는, 프리페치 어드레스 큐(어드레 스 정보 유지부)(21), 액세스 패턴 감시부(22), 1차 캐쉬 프리페치 요구 발행부(23), 2차 캐쉬 프리페치 요구 발행부(24) 및 프리페치 어드레스 큐 갱신부(제어부)(25)를 갖는다.
프리페치 어드레스 큐(21)는 명령 실행부(15)에 의해서 실행된 메모리 액세스 명령의 액세스 어드레스에 기초한 어드레스 패턴(어드레스 정보)을 유지하는 것이다.
여기서는, 프리페치 어드레스 큐(21)는 엔트리 0∼N의 N+1개의 엔트리를 갖고, 예컨대 각 엔트리 0∼N에 액세스 어드레스의 다음 캐쉬 라인 어드레스를 어드레스 정보로서 유지한다.
한편, 프리페치 어드레스 큐(21)의 내용은 프리페치 어드레스 큐 갱신부(25)에 의해서 제어된다.
또한, 프리페치 어드레스 큐(21)는 각 엔트리 0∼N에 어드레스 패턴이 등록되어 있는지 여부를 나타내는 플래그를 갖고 있다.
더욱이, 프리페치 어드레스 큐(21)는 복수의 엔트리 0∼N마다 대응하는 카운터(21a-0∼N)(도면에서, 부호 21a로 나타냄)를 갖고 있다.
이 카운터(21a-0∼N)[이하, 이들 카운터(21a-0∼N)를 특별히 구별하지 않는 경우에는 단순히 카운터(21a)라고 함]는, 어드레스 패턴이 새롭게 유지 혹은 갱신된 후의 클록 사이클의 수를 복수의 엔트리 0∼N마다 카운트한다.
여기서, 클록 사이클이란, 이 정보 처리 장치(1)[예컨대 프로세서 유닛(10)]의 클록 사이클이다.
액세스 패턴 감시부(22)는, 프로세서 유닛(10)의 명령 실행부(15)로부터의 메모리 액세스 요구가 있었던 액세스 어드레스와, 프리페치 어드레스 큐(21)에 유지된 어드레스 패턴과의 비교 처리를 행하는 것이다.
여기서는, 액세스 패턴 감시부(22)는, 메모리 액세스 요구에 부가된 지시 정보에 기초하여, 지시 정보가 프리페치 요구 발행 대상임을 나타내는 경우는 상기 비교 처리를 행한다.
그러나, 지시 정보가 프리페치 요구 발행 대상이 아님을 나타내는 경우는, 액세스 패턴 감시부(22)는 상기 비교 처리를 행하지 않는다. 즉, 이 경우, 액세스 패턴 감시부(22)는 비교 처리의 실행을 억지하여, 프리페치 요구 발행 처리를 억지한다.
따라서, 하드웨어 프리페치 제어 장치(20)는, 지시 정보가 프리페치 요구 발행 대상이 아님을 나타내는 메모리 액세스 요구에 대해서는 동작하지 않는다.
액세스 패턴 감시부(22)는, 상기 비교 처리 결과, 액세스 어드레스와 프리페치 어드레스 큐(21)에 유지된 어드레스 패턴이 일치하면, 1차 캐쉬 프리페치 요구 발행부(23) 또는 2차 캐쉬 프리페치 요구 발행부(24)에 프리페치 요구를 발행시킨다.
즉, 액세스 패턴 감시부(22)는, 비교 처리 결과, 과거에 근방 어드레스로의 액세스가 이루어지고 있어[즉, 프리페치 어드레스 큐(21)에 어드레스 패턴이 등록됨], 연속 액세스가 진행되고 있음이 검출된 경우, 가까운 장래에 또 연속 액세스가 진행된다고 판단하여 프리페치 요구를 발행시킨다.
한편, 1차 캐쉬 프리페치 요구 발행부(23)에 프리페치 요구를 발행시킬지, 혹은 2차 캐쉬 프리페치 요구 발행부(24)에 프리페치 요구를 발행시킬지는 본 발명에서 한정되는 것이 아니라, 예컨대 하드웨어 프리페치 제어 장치(20)의 사양에 의해서 결정된다.
1차 캐쉬 프리페치 요구 발행부(23)는 액세스 패턴 감시부(22)로부터의 지시에 따라서 프리페치 요구를 1차 캐쉬(12)에 발행한다.
구체적으로는, 1차 캐쉬 프리페치 요구 발행부(23)는 어드레스 패턴, 즉 액세스 어드레스의 다음 캐쉬 라인의 1 블록분의 데이터를 1차 캐쉬(12)에 프리페치시키는 요구를 발행한다.
한편, 1차 캐쉬 프리페치 요구 발행부(23) 및 2차 캐쉬 프리페치 요구 발행부(24)가 프리페치를 요구하는 블록의 수, 및 액세스 어드레스로부터 얼마만큼 앞의 캐쉬 라인의 데이터를 프리페치할지, 즉 프리페치의 거리는 본 발명에서 한정되는 것이 아니다. 이들은 하드웨어 프리페치 제어 장치(20)의 사양 등에 의해서 결정된다.
2차 캐쉬 프리페치 요구 발행부(24)는 액세스 패턴 감시부(22)로부터의 지시에 따라서 프리페치 요구를 2차 캐쉬(13)에 발행한다.
한편, 여기서는, 2차 캐쉬 프리페치 요구 발행부(24)도 1차 캐쉬 프리페치 요구 발행부(23)와 마찬가지로, 액세스 어드레스의 다음 캐쉬 라인의 데이터를 프리페치한다.
이와 같이, 액세스 패턴 감시부(22), 1차 캐쉬 프리페치 요구 발행부(23) 및 2차 캐쉬 프리페치 요구 발행부(24)는, 명령 실행부(15)로부터 메모리 액세스 요구가 있었던 액세스 어드레스와 프리페치 어드레스 큐(21)에 유지된 어드레스 패턴과의 비교 처리 결과에 기초하여, 1차 캐쉬(12) 또는 2차 캐쉬(13)에 대한 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부(22a)로서 기능한다.
프리페치 어드레스 큐 갱신부(25)[이하, 단순히 갱신부(25)라고 함]는 액세스 패턴 감시부(22)에 의한 비교 처리 결과에 기초하여 프리페치 어드레스 큐(21)에 유지되는 어드레스 패턴의 내용을 갱신하여 제어하는 것이다.
구체적으로는, 갱신부(25)는, 액세스 패턴 감시부(22)에 의한 비교 처리 결과, 액세스 어드레스가 프리페치 어드레스 큐(21)에 등록되어 있지 않으면, 그 액세스 어드레스에 기초한 어드레스 패턴을 프리페치 어드레스 큐(21)에 신규 등록한다.
단, 신규 등록은, 그 액세스 어드레스에 프리페치 발행 대상이 아님을 나타내는 지시 정보가 부가되어 있지 않을 것이 조건이며, 또, 프리페치 어드레스 큐(21)에 등록할 수 있는 공간 엔트리 0∼N 혹은 덮어쓰기 가능한 엔트리 0∼N이 있을 것이 조건이다.
한편, 갱신부(25)는, 액세스 패턴 감시부(22)에 의한 비교 처리 결과, 액세스 패턴이 프리페치 어드레스 큐(21)에 등록되어 있으면, 그 어드레스 패턴의 내용을 다음 캐쉬 라인의 어드레스에 갱신한다.
또한, 갱신부(25)는, 프리페치 어드레스 큐(21)에 어드레스 패턴을 유지시키면(즉, 신규 등록하면), 혹은 프리페치 어드레스 큐(21)의 어드레스 패턴의 내용을 갱신하면, 그 어드레스 패턴에 대한 덮어쓰기 처리를 소정 기간 억지한다.
여기서는, 갱신부(25)는, 그 어드레스 패턴이 등록되어 있는 엔트리 0∼N에 대응하는 카운터(21a)의 값이 소정치가 된 것을 소정 기간으로서 인식하며, 카운터(21a)의 값이 소정치가 될 때까지의 동안에는 그 엔트리 0∼N에 있어서 그 어드레스 패턴을 소거하고 다른 어드레스 패턴을 등록하는 것을 억지한다.
한편, 갱신부(25)에 의한 제어 처리의 상세한 것은 후술하는 도 4를 참조하면서 설명한다.
또한, 갱신부(25)는 프리페치 어드레스 큐(21)의 카운터(21a)를 제어하는 카운터 제어부(26)를 갖는다.
카운터 제어부(26)는, 엔트리 0∼N에 어드레스 패턴이 유지되어 있는 경우에는 대응하는 카운터(21a)의 값을 시스템 클록에 따라서 1씩 카운트업시킨다.
또한, 카운터 제어부(26)는, 엔트리 0∼N에 새롭게 어드레스 패턴이 등록되었을 때 및 엔트리 0∼N에 유지된 어드레스 패턴이 갱신되었을 때에, 그 값을 0으로 리셋한다.
여기서, 도 3에 나타내는 흐름도(단계 S1∼S4)를 참조하면서, 하드웨어 프리페치 제어 장치(20)의 동작 순서의 개략에 관해서 설명한다.
우선, 프로세서 유닛(10)의 명령 실행부(15)로부터 메모리 액세스 명령이 1차 캐쉬에 액세스되면(단계 S1), 하드웨어 프리페치 제어 장치(20)의 액세스 패턴 감시부(22)가, 그 메모리 액세스 명령에 부가된 지시 정보가 하드웨어 프리페치 대상 지시인지 여부를 판단한다(단계 S2). 즉, 액세스 패턴 감시부(22)는 이러한 지 시 정보가 프리페치 요구 발행 대상임을 나타내고 있는지 여부를 판단한다.
여기서, 액세스 패턴 감시부(22)가 그 메모리 액세스 명령에 관해서 하드웨어 프리페치 대상 지시가 있다고 판단하면(단계 S2의 Yes 경로), 하드웨어 프리페치 제어 장치(20)는 그 메모리 액세스 어드레스를 이용하여 후술하는 도 4에 나타내는 순서로 하드웨어 프리페치 기구를 동작시킨다(단계 S3).
즉, 액세스 패턴 감시부(22)가 비교 처리를 행함으로써 연속 액세스 검출을 하고, 하드웨어 프리페치 기구가, 연속 액세스일 때에는 프리페치의 발행 및 프리페치 어드레스 큐(21)의 갱신을 행한다.
한편, 액세스 패턴 감시부(22)의 비교 처리 결과, 프리페치 어드레스 큐(21)에 히트 미스했다면, 그 메모리 액세스 어드레스를 프리페치 어드레스 큐(21)에 신규 등록한다.
이에 대하여, 액세스 패턴 감시부(22)가, 그 메모리 액세스 명령에 관해서 하드웨어 프리페치 대상 지시가 없다고 판단하면(단계 S2의 No 경로), 하드웨어 프리페치 제어 장치(20)는 그 메모리 액세스 어드레스에서는 하드웨어 프리페치 기구를 동작시키지 않는다(단계 S4).
즉, 액세스 패턴 감시부(22)의 비교 처리도 프리페치 어드레스 큐(21)에의 신규 등록/갱신 처리도 실행되지 않는다.
이어서, 도 4에 나타내는 흐름도(단계 S10∼S18)를 참조하면서, 갱신부(25)의 처리 순서에 관해서 설명한다.
우선, 액세스 패턴 감시부(22)에 의한 비교 결과 및 지시 정보에 따라서, 하 드웨어 프리페치 동작 대상의 메모리 액세스 요구에 관해 어드레스 패턴의 신규 등록 요구가 생기면, 갱신부(25)는, 프리페치 어드레스 큐(21)의 각 엔트리 0∼N의 플래그에 기초하여, 무효인 엔트리, 즉 어드레스 패턴이 등록되어 있지 않은 엔트리 0∼N이 있는지 여부를 판단한다(단계 S11).
여기서, 무효 엔트리가 없다고 판단되면(단계 S11의 No 경로), 이어서, 갱신부(25)는 덮어쓰기 처리가 억지(금지)되어 있지 않은 엔트리 0∼N이 있는지 여부를 판단한다(단계 S12).
즉, 여기서는, 갱신부(25)는 카운터(21a)의 값이 소정치가 된 엔트리가 있는지 여부를 판단한다.
그리고, 덮어쓰기 처리가 금지되어 있지 않은 엔트리 0∼N이 없으면(단계 S12의 No 경로), 갱신부(25)는, 신규 등록 요구가 생긴 메모리 액세스 요구에 관한 어드레스 패턴은 신규 등록하지 않고(단계 S13), 처리를 종료한다.
즉, 카운터(21a)의 값이 소정치 이상이 아니기 때문에, 갱신부(25)는 엔트리 0∼N의 어드레스 패턴에 대한 덮어쓰기 처리를 억지한다.
한편, 덮어쓰기 처리가 금지되어 있지 않은 엔트리 0∼N이 있으면(단계 S12의 Yes 경로), 갱신부(25)는, 덮어쓰기 가능한 엔트리 0∼N에서 하나의 엔트리 0∼N을 선택하여 덮어쓰기로부터 신규 등록한다(단계 S14).
한편, 이 때 카운터(21a)의 값이 동일한 엔트리 0∼N이 복수 존재하면, 갱신부(25)는, 예컨대 그 중에서 가장 오래된 엔트리 0∼N에 덮어쓰기 처리를 한다.
그리고, 갱신부(25)에 의한 신규 어드레스 패턴의 덮어쓰기 처리가 이루어지 면, 카운터 제어부(26)가 그 엔트리 0∼N에 대응하는 카운터(21a)의 값을 0으로 설정(리셋)한다(단계 S15). 한편, 그 후, 카운터 제어부(26)는 사이클마다 카운터를 1 가산한다(단계 S15).
또한, 상기 단계 S11에 있어서, 무효 엔트리 0∼N이 있으면(단계 S11의 Yes 경로), 갱신부(25)는 그 무효 엔트리 0∼N을 선택하여, 신규 등록 요구가 발생한 액세스 어드레스에 관한 어드레스 패턴을 등록한다(단계 S16).
그 후, 카운터 제어부(26)는 그 엔트리 0∼N에 대응하는 카운터(21a)의 값을 0으로 리셋하고, 그 후 사이클마다 카운터 값을 1 가산한다(단계 S15).
한편, 하드웨어 프리페치 동작 대상, 즉 지시 정보가 프리페치 발행 대상을 나타내는 메모리 액세스로, 액세스 패턴 감시부(22)에 의한 비교 처리 결과가 일치하여 연속 액세스가 검출되면(단계 S17), 액세스 패턴 감시부(22)는 1차 캐쉬 프리페치 요구 발행부(23) 또는 2차 캐쉬 프리페치 요구 발행부(24)에 대하여 다음 캐쉬 라인의 하드웨어 프리페치를 발행한다. 또한 이 때, 갱신부(25)는 대응하는 엔트리 0∼N의 어드레스 패턴을 갱신한다(단계 S18).
그 후, 카운터 제어부(26)는 그 엔트리 0∼N에 대응하는 카운터(21a)의 값을 0으로 리셋하고, 그 후 사이클마다 카운터 값을 1 가산한다(단계 S15).
여기서, 도 5에 프리페치 어드레스 큐(21)의 엔트리수(최대 엔트리수) 이상의 연속 액세스가 발생한 경우의, 프리페치 어드레스 큐(21)에 유지되는 어드레스 패턴의 일례를 나타낸다.
한편, 도 5 및 후술하는 도 7, 도 8의 예는 이하의 설명을 쉽게 하기 위해 서, 프리페치 어드레스 큐(21)가 엔트리 0∼3의 4 엔트리를 갖고, 4개의 어드레스 패턴을 기록할 수 있다고 가정한 것이다. 또한, 도 5 및 후술하는 도 7, 도 8에서 세로 방향은 시간을 나타내고 있다.
우선, 시간 t1∼t4에 걸쳐, 액세스 어드레스 A∼D의 메모리 액세스 요구가 있으면, 이들 계열 A∼D의 어드레스 패턴이 순차 등록된다. 여기서는, 하드웨어 프리페치 기구로서, 액세스 어드레스의 다음 캐쉬 라인 어드레스 A+1∼D+1이 어드레스 패턴으로서 프리페치 어드레스 큐의 엔트리 0∼3에 각각 등록된다.
즉, 시간 t1에서의 계열 A의 액세스의 발생에 따라서, 갱신부(25)는 엔트리 0에 어드레스 패턴 A+1을 신규 등록한다. 또한, 시간 t2에서의 계열 B의 액세스의 발생에 따라서, 갱신부(25)는 엔트리 1에 어드레스 패턴 B+1을 신규 등록한다. 또한, 시간 t3에서의 계열 C의 액세스의 발생에 따라서, 갱신부(25)는 엔트리 2에 어드레스 패턴 C+1을 신규 등록한다. 그리고, 시간 t4에서의 계열 D의 액세스의 발생에 따라서, 갱신부(25)는 엔트리 3에 어드레스 패턴 D+1을 신규 등록한다.
이에 따라, 프리페치 어드레스 큐(21)는 전체 엔트리 0∼3이 사용되고 있는 상태가 된다.
이어서, 시간 t5에서 액세스 어드레스 E의 메모리 액세스 요구가 있으면, 갱신부(25)는 상기 도 4의 단계 S10, S11, S12, S13의 처리를 순차 행하여, 결과적으로, 엔트리 0∼3의 엔트리에 대한 덮어쓰기 처리를 억지하고, 계열 E의 어드레스 패턴의 신규 등록은 행하지 않는다.
즉, 시간 t5에 있어서, 엔트리 0∼3에 대응하는, 카운터(21a)는 각각 "4", "3", "2", "1"을 나타내고 있고, 소정치 "8"이 되지 않았기 때문에, 갱신부(25)는 덮어쓰기 처리를 억지한다.
이후, 시간 t6∼t9에 걸쳐, 액세스 어드레스 A+1∼D+1의 메모리 액세스 요구가 있으면, 각 시간 t6∼t9에 있어서, 액세스 패턴 감시부(22), 1차 캐쉬 프리페치 요구 발행부(23) 또는 2차 캐쉬 프리페치 요구 발행부(24)에 의해, 어드레스 A+2∼D+2의 프리페치 요구가 이루어진다.
그리고, 갱신부(25)는 이들 어드레스 A+2∼D+2를 어드레스 패턴으로서 대응하는 엔트리 0∼3에 등록하는 갱신 처리를 한다.
이어서, 도 6에 나타내는 흐름도(단계 S20∼S26)를 참조하면서, 컴파일부(2)[프리페치 대상 지시부(3) 및 메모리 액세스 명령 생성부(4)]의 동작 순서의 일례에 관해서 설명한다.
우선, 컴파일부(2)의 프리페치 대상 지시부(3)는 컴파일한 메모리 액세스 명령이 연속 액세스인지 여부를 판단한다(단계 S20).
여기서, 프리페치 대상 지시부(3)는 연속 액세스라고 판단하면(단계 S20의 Yes 경로), 이어서 1 캐쉬 라인당의 캐쉬 히트율이 미리 설정된 소정치 M 이하인지 여부를 판단한다(단계 S21). 한편, 소정치 M은 하드웨어(CPU 등)에 따라 다르다.
또한, 캐쉬 히트율은 다음 식 (1)에 의해서 구해진다.
캐쉬 히트율 = 캐쉬 히트수÷최대 캐쉬 히트수×100 … (1)
단, 캐쉬 히트수는 루프가 1회 도는 동안 몇 번 히트하였는지를 나타내는 것으로, 다음 식 (2)에 의해서 구해지며, 최대 캐쉬 히트수는 다음 식 (3)에 의해서 구해진다.
캐쉬 히트수 = 1 캐쉬 라인 사이즈÷루프 1 회전마다의 갱신 폭 … (2)
최대 캐쉬 히트수 = 1 캐쉬 라인 사이즈÷메모리 액세스 타입 … (3)
이러한 캐쉬 히트율이 소정치 M 이상이면(단계 S21의 No 경로), 동시에 연속 액세스가 발생한 액세스 계열수가, 프리페치 어드레스 큐(21)가 기록할 수 있는 최대 엔트리수(여기서는 N)보다 크거나 그 이상인지 여부를 판단한다(단계 S22). 한편, 여기서 말하는 동시에 연속 액세스가 발생한다는 것은, 메모리 액세스가 엄밀하게 동시에 발생하는 것을 나타내는 것은 아니고, 컴파일부(2)에 의해서 같은 시기에 컴파일되어 연속 액세스가 검출되는 것을 나타낸다.
그리고, 액세스 계열수가 프리페치 어드레스 큐(21)의 최대 엔트리수 이하라면(단계 S22의 No 경로), 프리페치 대상 지시부(3)는, 그 메모리 액세스 명령은 하드웨어 프리페치 대상이라고 판단하여, 프리페치 요구 발행 대상임을 나타내는 지시 정보를 그 메모리 액세스 명령에 부가한다(단계 S23). 이에 따라, 프리페치 대상 지시부(3)는 그 메모리 액세스 명령이 하드웨어 프리페치 대상임을 지시하고, 처리를 종료한다.
한편, 프리페치 대상 지시부(3)는, 상기 단계 S21에서 캐쉬 히트율이 M보다 작다고 판단한 경우(단계 S21의 Yes 경로) 및 상기 단계 S22에서 동시에 발생하는 액세스 계열수가 프리페치 어드레스 큐(21)의 최대 엔트리수보다 많다고 판단한 경우(단계 S22의 Yes 경로), 그 메모리 액세스 명령은 하드웨어 프리페치 대상 밖임을 지시한다(단계 S24).
즉, 이들의 경우, 프리페치 대상 지시부(3)는 그 메모리 액세스 명령에, 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가한다.
또한, 상기 단계 S20에서 연속 액세스가 아니라고 판단한 메모리 액세스 명령에 대하여도(단계 S20의 No 경로), 프리페치 대상 지시부(3)는 그 메모리 액세스 명령은 하드웨어 프리페치 대상 밖임을 지시한다(단계 S24).
단, 프리페치 대상 지시부(3)는, 메모리 액세스 명령이 연속 액세스인지 여부가 불분명한 경우에는, 단계 S24에서 하드웨어 프리페치 대상 밖이라는 지시를 하여도 좋고, 하드웨어 프리페치 대상이라는 지시(단계 S23)를 하여도 좋다.
이어서, 프리페치 대상 지시부(3)는, 상기 단계 S24에서 하드웨어 프리페치 대상 밖이라는 지시를 행한 메모리 액세스 명령에 관해서, 소프트웨어 프리페치를 실행하는지 여부를 판단한다(단계 S25).
그리고, 소프트웨어 프리페치를 실행한다고 판단하면(단계 S25의 Yes 경로), 메모리 액세스 명령 생성부(4)는 그 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하고(단계 S26), 처리를 종료한다.
한편, 메모리 액세스 명령 생성부(4)는, 소프트웨어 프리페치를 실행하지 않는다고 판단하면(단계 S25의 No 경로), 단계 S26의 처리는 하지 않고서 처리를 종료한다.
한편, 메모리 액세스 명령 생성부(4)는, 상기 단계 S23에서 하드웨어 프리페치 대상이라는 지시가 이루어진 메모리 액세스 명령에 대해서는 소프트웨어 프리페치 명령의 생성을 억지한다.
이와 같이, 컴파일부(2)의 프리페치 대상 지시부(3)는, 복수 계열의 연속 액세스가 동시 발생하는 경우에는 프리페치 어드레스 큐(21)가 유지할 수 있는 어드레스 패턴의 엔트리수 N+1에 따라서 지시 정보를 부가한다.
구체적으로는, 프리페치 대상 지시부(3)는, 연속 액세스가 동시 발생하는 명령 계열의 수가 이러한 엔트리수 N+1을 넘는 경우에는, 그 넘은 수의 명령 계열의 메모리 액세스 명령에는 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가한다.
그리고, 이 때, 메모리 액세스 명령 생성부(4)는, 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입한다.
여기서, 도 7에 지시 정보(하드웨어 프리페치 대상 지시)에 따른 프리페치 어드레스 큐(21)의 어드레스 패턴의 유지 내용의 일례를 나타낸다.
우선, 시간 t1∼t3에 걸쳐, 하드웨어 프리페치 대상인 액세스 어드레스 A∼C의 메모리 액세스 요구가 있으면, 갱신부(25)는 이들 계열 A∼C의 어드레스 패턴 A+1∼C+1을 엔트리 0∼2에 순차 등록한다.
계속해서, 시간 t4, t5에 있어서, 하드웨어 프리페치 비대상인 액세스 어드레스 D, E의 메모리 액세스 요구가 있으면, 액세스 패턴 감시부(22)는 비교 처리를 억지한다. 또한 갱신부(25)도, 엔트리 3이 무효 엔트리(빈 엔트리)이지만, 이들 액세스 어드레스 D, E의 어드레스 패턴은 프리페치 어드레스 큐(21)에의 등록을 억지한다.
이것과 마찬가지로, 갱신부(25)는, 시간 t8에서 생긴 액세스 어드레스 F의 어드레스 패턴도 프리페치 어드레스 큐(21)에는 등록하지 않는다.
한편, 시간 t6, t7, t9에 발생한 계열 A, B의 메모리 액세스 요구에 대해서는, 갱신부(25)는 어드레스 패턴의 갱신 처리를 행한다. 또한, 액세스 패턴 감시부(22), 1차 캐쉬 프리페치 요구 발행부(23) 또는 2차 캐쉬 프리페치 요구 발행부(24)에 의해 프리페치 요구가 발행된다.
또한, 도 8에 명령 실행부(15)에 의해서 소프트웨어 프리페치 명령이 실행되는 경우의 프리페치 어드레스 큐(21)의 어드레스 패턴의 유지 내용의 일례를 나타낸다.
이 도 8에 도시하는 바와 같이, 시간 t5에서 액세스 어드레스 D+8의 소프트웨어 프리페치 명령이 요구되면, 그 지시 정보는 하드웨어 프리페치 비대상이기 때문에, 그 액세스 어드레스 D+8에 대하여, 액세스 패턴 감시부(22)는 비교 처리를 억지한다. 또한, 갱신부(25)도 엔트리 3이 무효 엔트리(빈 엔트리)이지만, 액세스 어드레스 D+8의 어드레스 패턴의 프리페치 어드레스 큐(21)에의 등록을 억지한다.
한편, 도 8에 있어서 시간 t4, t9, t10에서 하드웨어 프리페치 비대상의 액세스 어드레스 D, D+1, D+9의 메모리 액세스 요구가 발행되는데, 이들에 대해서도, 액세스 패턴 감시부(22)에 의한 비교 처리 및 갱신부(25)에 의한 등록 처리가 억지된다.
이와 같이, 본 발명의 일 실시형태로서의 정보 처리 장치(1)에 따르면, 갱신부(25)가, 프리페치 어드레스 큐(21)에 어드레스 패턴을 유지시키면(신규 등록하 면), 혹은 프리페치 어드레스 큐(21)의 어드레스 패턴을 갱신하면, 그 어드레스 패턴에 대한 덮어쓰기 처리를 소정 기간 억지한다.
그 때문에, 종래의 LRU 제어와 같이, 연속 액세스가 확인된 유효한 어드레스 패턴을 등록 또는 갱신한 후 곧바로 덮어쓰기 처리에 의해서 소거되는 것을 억지할 수 있다. 즉, 프리페치 어드레스 큐(21)의 엔트리수 N+1을 넘는 복수 계열의 연속 액세스가 발생하더라도, 등록되어 있는 어드레스 패턴이 복수 계열의 메모리 액세스에 의해서 서로 덮어쓰기되는 것을 확실하게 억지할 수 있다.
그 결과, 프리페치 어드레스 큐(21)를 유효하게 사용할 수 있어, 연속 액세스에 대한 프리페치 요구를 효율적으로 발행할 수 있다. 즉, 캐쉬 미스에 의한 레이턴시 은폐나 스루풋 향상 등, 프리페치에 의해서 보다 효과적인 성능 향상을 얻을 수 있다.
구체적으로는, 갱신부(25)는, 어드레스 정보가 유지 혹은 갱신된 후의 클록 사이클의 수를 카운트하는 카운터(21a)의 값이 소정치가 된 것을 상기 소정 기간으로서 인식한다. 따라서, 카운터(21a)에 의해 소정의 클록 사이클의 수가 카운트될 때까지 동안, 갱신부(25)에 의해서, 대응하는 엔트리의 어드레스 패턴의 덮어쓰기 처리는 억지되게 되어, 상술한 효과를 확실하게 얻을 수 있다.
또한, 프리페치 대상 지시부(3)가 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 메모리 액세스 명령에 부가하고, 하드웨어 프리페치 제어 장치(20)가 그 지시 정보에 기초하여 상기 비교 처리 및 프리페치 요구의 발행 처리를 실행한다. 따라서, 컴파일부(2)측, 즉 소프트웨어 프리페치측에서, 하드웨 어 프리페치를 실행시키는지 여부를 결정할 수 있어, 소프트웨어 프리페치와 하드웨어 프리페치를 효율적으로 양립시킬 수 있다.
즉, 메모리 액세스 명령 생성부(4)가, 프리페치 대상 지시부(3)에 의해서 프리페치 요구 발행 대상임을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지함으로써, 소프트웨어 프리페치와 하드웨어 프리페치가 동일한 메모리 액세스 명령에 대하여 이루어지는 것을 확실하게 억지할 수 있다. 그 결과, 동일한 프리페치 요구가 소프트웨어 프리페치와 하드웨어 프리페치의 쌍방으로부터 이루어지는 일이 없어져, 용장성 프리페치 요구 발행을 확실하게 억지할 수 있다.
구체적으로는, 프리페치 대상 지시부(3)는, 복수 계열의 연속 액세스가 동시 발생하는 경우에는, 프리페치 어드레스 큐(21)가 유지할 수 있는 엔트리수 N+1에 따라 지시 정보를 부가한다. 따라서, 하드웨어 프리페치 제어 장치(20)의 하드웨어 구성에 따른 처리를 실행할 수 있어, 프리페치 어드레스 큐(21)를 보다 유효하게 사용할 수 있으며, 연속 액세스에 대한 프리페치 요구도 보다 효율화할 수 있다.
즉, 프리페치 대상 지시부(3)는, 연속 액세스가 동시 발생하는 명령 계열의 수가 엔트리수 N+1을 넘는 경우에는, 그 넘은 수의 명령 계열의 메모리 액세스 명령에는 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가한다. 그리고, 메모리 액세스 명령 생성부(4)는, 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입한다. 따라서, 프리페치 어드레스 큐(21)의 엔트리수 N+1을 넘 는 수의 어드레스 패턴의 등록 처리가 발생하는 것을 최대한 억지할 수 있다. 더구나, 엔트리수 N+1을 넘는 부분은 소프트웨어 프리페치로 확실하게 커버할 수 있기 때문에, 프리페치 요구를 보다 확실하게, 또 보다 효율적으로 발행할 수 있다. 더구나, 하드웨어 프리페치와 소프트웨어 프리페치 사이에서, 담당하는 프리페치 요구를 분담하게 되기 때문에, 하드웨어 프리페치와 소프트웨어 프리페치를 보다 효율적으로 양립할 수 있다.
〔2〕 기타
또, 본 발명은 상술한 실시형태에 한정되는 것이 아니라, 본 발명의 취지를 일탈하지 않는 범위에서 여러 가지로 변형하여 실시할 수 있다.
예컨대, 상술한 실시형태에서는, 프로세서 유닛(10)과 주기억 장치(11) 사이에 2개의 캐쉬 시스템[캐쉬(12, 13)]을 갖는 경우를 예로 들어 설명했다. 그러나, 본 발명은 이것에 한정되는 것이 아니라, 프로세서 유닛(10)과 주기억 장치(11) 사이에는 적어도 하나의 캐쉬 메모리가 개재되어 있으면 된다.
또한, 상술한 실시형태에서는, 하드웨어 프리페치 제어 장치(20)가, 프로세서 유닛(10)의 1차 캐쉬(12)에 대한 메모리 액세스 요구를 감시한 경우를 예로 들어 설명했다. 즉, 액세스 패턴 감시부(22)가, 프로세서 유닛(10)의 1차 캐쉬(12)에 대한 메모리 액세스 요구와 그 지시 정보를 취득하여 비교 처리를 하는 경우를 예로 들어 설명했다. 그러나, 본 발명은 이것에 한정되는 것이 아니라, 정보 처리 장치(1)의 사양 등에 따라서, 액세스 패턴 감시부(22)가 1차 캐쉬(12)의 2차 캐쉬(13)에 대한 메모리 액세스 요구를 감시하도록 구성하더라도 좋다. 또한, 액세스 패턴 감시부(22)가 2차 캐쉬(13)의 주기억 장치(11)에 대한 메모리 액세스 요구를 감시하도록 구성하더라도 좋다.
또한, 상술한 실시형태에서는, 프로세서 유닛(10)의 컴파일부(2)가 프리페치 대상 지시부(3)를 구비하고, 대상 지시에 기초하여 프리페치에 관한 처리가 실행된다고 하는 특징과, 갱신부(25)가 카운터(21a)에 기초하여 소정 기간의 덮어쓰기 억지 처리를 행한다고 하는 특징을 갖는 경우를 예로 들어 설명했다. 그러나, 본 발명은 이들 2개의 특징을 반드시 동시에 구비할 필요는 없으며, 어느 한 쪽만의 특징을 갖고 있어도 좋다.
또한, 상술한 실시형태에서는, 카운터(21a)가 클록 사이클의 수를 카운트하는 경우를 예로 들어 설명했다. 그러나, 본 발명은 이것에 한정되는 것이 아니라, 예컨대, 본 발명의 변형예로서, 카운터(21a)가 대응하는 엔트리 0∼N에 어드레스 패턴이 유지 혹은 갱신된 후의 그 어드레스 패턴에 대한 갱신부(25)에 의한 덮어쓰기 처리의 억지 횟수를 카운트하도록 구성하더라도 좋다.
이 경우, 갱신부(25)는 카운터의 값이 소정치가 된 것을 덮어쓰기 처리를 억지하는 소정 기간으로서 인식한다. 즉, 갱신부(25)는 소정 횟수 이상 덮어쓰기 처리를 억지할 때까지는 그 엔트리 0∼N의 덮어쓰기 처리를 억지한다.
이 때의 갱신부(25)의 처리 순서를 도 9의 흐름도(단계 S10∼S18, S13')에 나타낸다. 한편, 도 9에 있어서 도 4와 동일한 부호 부분은 동일한 처리 혹은 대략 동일한 처리를 나타내기 때문에, 여기서는 그 상세한 설명은 생략한다.
도 9에 나타내는 바와 같이, 갱신부(25)가 단계 S13에서 신규 등록을 하지 않은 경우, 즉 등록된 어드레스 패턴의 덮어쓰기 처리를 억지한 경우, 카운터 제어부(26)는 그 등록된 각 엔트리 0∼N의 카운터(덮어쓰기 처리 금지 횟수)를 1 가산한다(단계 S13').
이에 의해서도, 상술한 실시형태와 같은 작용 효과를 얻을 수 있다.
또한, 상술한 실시형태에서는, 카운터 제어부(26)가 카운터(21a)를 리셋하는 경우에는 엔트리 0∼N의 종류에 상관없이 0으로 리셋하는 경우를 예로 들어 설명했다. 그러나, 본 발명은 이것에 한정되는 것이 아니라, 예컨대 갱신부(25)가, 프리페치 어드레스 큐(21)에 있어서 갱신된 어드레스 패턴에 관한 소정 기간을 프리페치 어드레스 큐(21)에 새롭게 유지된 어드레스 패턴의 소정 기간보다도 길게 하도록 구성하더라도 좋다.
구체적으로는, 예컨대, 카운터(21a)의 값이 8일 때에, 갱신부(25)의 덮어쓰기 처리의 억지 제어가 해제되는 경우, 새롭게 어드레스 패턴이 등록되었을 때에는 카운터 제어부(26)는 그 값을 4로 리셋한다. 한편, 연속 액세스가 검출되어 어드레스 패턴이 갱신된 경우, 카운터 제어부(26)는 카운터 값을 0으로 리셋한다.
이에 따라, 갱신부(25)는, 갱신된 어드레스 패턴에 관한 소정 기간을 프리페치 어드레스 큐(21)에 새롭게 유지된 어드레스 패턴에 관한 소정 기간보다도 길게 한다.
이와 같이 어드레스 패턴이 갱신되어, 연속 액세스하는 것이 판명된 어드레스 패턴의 덮어쓰기 처리 억지 기간을 신규 등록된 어드레스 패턴의 덮어쓰기 처리 억지 기간보다도 길게 함으로써, 연속 액세스하는 것이 판명된 어드레스 패턴을 우 선적으로 프리페치 어드레스 큐(21)에 유지시키도록 제어할 수 있다. 그 결과, 프리페치 요구의 발행을 보다 확실하게 행할 수 있어, 프로세서 유닛(10)의 성능 향상, 즉 캐쉬 미스에 의한 레이턴시 은폐나 스루풋 향상에 기여할 수 있다.
또한, 상술한 실시형태에서는, 프리페치 대상 지시부(3)가, 프리페치 어드레스 큐(21)의 엔트리수 N+1을 넘는 수의 계열의 연속 액세스가 발생한 경우에, 소프트웨어 프리페치가 실행하는 경우를 예로 들어 설명했다. 그러나, 본 발명은 이것에 한정되는 것이 아니라, 예컨대, 하드웨어 프리페치 제어 장치(20)에 의한 프리페치의 거리(여기서는 다음 캐쉬 라인까지의 간격)가 부적절하여, 거리가 너무 길거나 너무 짧거나 하는 경우, 즉 소정 범위 밖인 경우에, 프리페치 대상 지시부(3)가, 그 계열의 메모리 액세스 명령이 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하더라도 좋다. 그리고, 이 때 메모리 액세스 명령 생성부(4)는 그 메모리 액세스 명령의 소프트웨어 프리페치 명령을 생성한다.
즉, 하드웨어 프리페치 제어 장치(20)에 있어서, 얼마만큼 앞의 캐쉬 라인을 프리페치하는지의 사양은 그 회로에 실장된 알고리즘에 의해서 제한되며, 설정 변경의 자유도가 적다.
이에 대하여, 소프트웨어 프리페치는 프리페치의 거리를 다양하게 변경할 수 있기 때문에, 하드웨어 프리페치 제어 장치(20)에 의한 하드웨어 프리페치의 거리가 소정 범위 내에 없고, 하드웨어 프리페치하더라도 캐쉬 히트율이나 스루풋 등이 향상되지 않는 경우에는, 하드웨어 프리페치를 중지하고, 소프트웨어 프리페치에 의해 최적의 프리페치 거리로 프리페치를 실행한다.
즉, 하드웨어 프리페치 제어 장치(20)에 의한 하드웨어 프리페치에 의해서, 캐쉬 히트율이나 스루풋 등의 하드웨어 프리페치 효과가 소정치 이상 얻어지는지 아닌지를 판단한다. 그리고, 소정 이상의 하드웨어 프리페치 효과를 얻을 수 없다고 판단한 경우에는, 프리페치 대상 지시부(3)가 그 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가한다. 또한, 메모리 액세스 명령 생성부(4)가 그 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입한다.
한편, 소정 이상의 하드웨어 프리페치 효과를 얻을 수 있다고 판단한 경우에는 그대로 하드웨어 프리페치를 행하고, 메모리 액세스 명령 생성부(4)는 그 메모리 액세스 명령의 소프트웨어 프리페치 명령은 생성하지 않는다. 즉, 프리페치 대상 지시부(3)는 그 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보를 부가한다.
이에 따라, 상술한 실시형태의 작용 효과를 보다 확실하게 얻을 수 있다.
또, 하드웨어 프리페치 효과의 판단은, 기존의 여러 가지 방법을 이용하여, 본 정보 처리 장치(1)의 오퍼레이터 등이 행하더라도 좋고, 자동적으로 판단하도록 구성하더라도 좋다.
또한, 상술한 변형예 및 일 실시형태에 있어서 컴파일부(2)에 의한 처리는 그 일부나 전부를 프로그래머가 실현하더라도 좋다.
한편, 상술한 컴파일부(2), 카운터(21a), 액세스 패턴 감시부(22), 1차 캐쉬 프리페치 요구 발행부(23), 2차 캐쉬 프리페치 요구 발행부(24) 및 프리페치 어드 레스 큐 갱신부(25)로서의 기능은, 컴퓨터(CPU, 정보 처리 장치, 각종 단말을 포함함)가 소정의 애플리케이션 프로그램(프리페치 제어 프로그램)을 실행함으로써 실현되더라도 좋다.
그 프로그램은, 예컨대 플렉시블 디스크, CD(CD-ROM, CD-R, CD-RW 등), DVD(DVD-ROM, DVD-RAM, DVD-R, DVD-RW, DVD+R, DVD+RW 등) 등의 컴퓨터 판독 가능한 기록 매체에 기록된 형태로 제공된다. 이 경우, 컴퓨터는 그 기록 매체로부터 프리페치 제어 프로그램을 판독하여 내부 기억 장치 또는 외부 기억 장치에 전송하여 저장하여 이용한다. 또한, 그 프로그램을, 예컨대 자기 디스크, 광 디스크, 광자기 디스크 등의 기억 장치(기록 매체)에 기록해 두고서, 그 기억 장치로부터 통신회선을 통해 컴퓨터에 제공하도록 하더라도 좋다.
여기서, 컴퓨터란, 하드웨어와 OS(오퍼레이팅 시스템)을 포함하는 개념이며, OS의 제어 하에서 동작하는 하드웨어를 의미하고 있다. 또한, OS가 불필요하고 애플리케이션 프로그램 단독으로 하드웨어를 동작시키는 경우에는, 그 하드웨어 자체가 컴퓨터에 상당한다. 하드웨어는 적어도 CPU 등의 마이크로프로세서와, 기록 매체에 기록된 컴퓨터 프로그램을 판독하기 위한 수단을 갖추고 있다.
상기 프리페치 제어 프로그램으로서의 애플리케이션 프로그램은 상술한 바와 같이 컴퓨터로 하여금, 컴파일부(2), 카운터(21a), 액세스 패턴 감시부(22), 1차 캐쉬 프리페치 요구 발행부(23), 2차 캐쉬 프리페치 요구 발행부(24), 및 프리페치 어드레스 큐 갱신부(25)로서의 기능을 실현시키는 프로그램 코드를 포함하고 있다. 또한, 그 기능의 일부는 애플리케이션 프로그램이 아니라 OS에 의해서 실현되더라 도 좋다.
한편, 본 실시형태로서의 기록 매체로는, 상술한 플렉시블 디스크, CD, DVD, 자기 디스크, 광 디스크, 광자기 디스크 외에, IC 카드, ROM 카트리지, 자기 테이프, 펀치 카드, 컴퓨터의 내부 기억 장치(RAM이나 ROM 등의 메모리), 외부 기억 장치 등이나, 바코드 등의 부호가 인쇄된 인쇄물 등의, 컴퓨터 판독 가능한 여러 가지 매체를 이용할 수도 있다.
〔3〕 부기
(부기 1)
메모리 액세스 명령을 실행하는 명령 실행부와,
상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와,
상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와,
상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와,
상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와, 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여, 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부와,
상기 비교 처리 결과에 기초하여 상기 어드레스 정보 유지부에 유지되는 어 드레스 정보의 내용을 제어하는 제어부를 구비하고,
상기 제어부는, 상기 어드레스 정보 유지부에 어드레스 정보를 유지시키면, 혹은 상기 어드레스 정보 유지부의 어드레스 정보를 갱신하면, 그 어드레스 정보에 대한 덮어쓰기 처리를 소정 기간 억지하는 것을 특징으로 하는 정보 처리 장치.
(부기 2)
상기 어드레스 정보가 유지 혹은 갱신된 후의 클록 사이클의 수를 카운트하는 카운터를 구비하고,
상기 제어부는, 상기 카운터의 값이 소정치가 된 것을 상기 소정 기간으로서 인식하는 것을 특징으로 하는 부기 1에 기재한 정보 처리 장치.
(부기 3)
상기 어드레스 정보가 유지 혹은 갱신된 후의 그 어드레스 정보에 대한 상기 제어부에 의한 상기 덮어쓰기 처리의 억지 횟수를 카운트하는 카운터를 구비하고,
상기 제어부는, 상기 카운터의 값이 소정치가 된 것을 상기 소정 기간으로서 인식하는 것을 특징으로 하는 부기 1에 기재한 정보 처리 장치.
(부기 4)
상기 제어부는, 갱신된 상기 어드레스 정보에 관한 상기 소정 기간을, 상기 어드레스 정보 유지부에 새롭게 유지된 어드레스 정보의 상기 소정 기간보다도 길게 하는 것을 특징으로 하는 부기 1∼3 중 어느 하나에 기재한 정보 처리 장치.
(부기 5)
상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 상기 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부를 구비하고,
상기 하드웨어 프리페치 요구 발행부는, 상기 지시 정보에 기초하여, 상기 비교 처리 및 하드웨어 프리페치 요구의 발행 처리를 실행하는 것을 특징으로 하는 부기 1∼4 중 어느 하나에 기재한 정보 처리 장치.
(부기 6)
메모리 액세스 명령을 실행하는 명령 실행부와,
상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와,
상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와,
상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와,
상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와, 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여, 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부와,
상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 상기 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부를 구비하고,
상기 하드웨어 프리페치 요구 발행부는, 상기 지시 정보에 기초하여, 상기 비교 처리 및 하드웨어 프리페치 요구의 발행 처리를 실행하는 것을 특징으로 하는 정보 처리 장치.
(부기 7)
상기 하드웨어 프리페치 요구 발행부는, 상기 지시 정보가 하드웨어 프리페치 요구 발행 대상임을 나타내는 것이면 상기 비교 처리 및 하드웨어 프리페치 요구의 발행 처리를 실행하는 한편, 상기 지시 정보가 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 것이면 상기 비교 처리 및 하드웨어 프리페치 요구의 발행 처리의 실행을 억지하는 것을 특징으로 하는 부기 6에 기재한 정보 처리 장치.
(부기 8)
연속 액세스가 발생하는 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 메모리 액세스 명령 생성부를 구비하고,
상기 메모리 액세스 명령 생성부는, 상기 하드웨어 프리페치 대상 지시부에 의해서 하드웨어 프리페치 요구 발행 대상임을 나타내는 상기 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지하는 것을 특징으로 하는 부기 5∼7 중 어느 하나에 기재한 정보 처리 장치.
(부기 9)
상기 하드웨어 프리페치 대상 지시부는, 복수 계열의 연속 액세스가 발생하는 경우에는 상기 어드레스 정보 유지부가 유지할 수 있는 어드레스 정보의 엔트리수에 따라서, 상기 지시 정보를 부가하는 것을 특징으로 하는 부기 5∼8 중 어느 하나에 기재한 정보 처리 장치.
(부기 10)
상기 하드웨어 프리페치 대상 지시부는, 상기 연속 액세스가 발생하는 명령 계열의 수가 상기 엔트리수를 넘는 경우에는, 그 넘은 수의 명령 계열의 상기 메모리 액세스 명령에는 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하고,
상기 메모리 액세스 명령 생성부는, 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 상기 지시 정보가 부가된 상기 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 것을 특징으로 하는 부기 9에 기재한 정보 처리 장치.
(부기 11)
하드웨어 프리페치의 거리가 소정 범위 밖인 경우에는, 상기 하드웨어 프리페치 대상 지시부는 그 어드레스 정보에 관한 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하고, 상기 메모리 액세스 명령 생성부는 그 메모리 액세스 명령의 소프트웨어 프리페치 명령을 생성하는 것을 특징으로 하는 부기 8에 기재한 정보 처리 장치.
(부기 12)
메모리 액세스 명령을 실행하는 명령 실행부와, 상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와, 상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와, 상기 명령 실행부 에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부를 갖는 정보 처리 장치에 있어서, 상기 캐쉬 메모리에의 프리페치를 실행하는 기능을 컴퓨터에 실현시키기 위한 프로그램으로서, 상기 컴퓨터를,
상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와, 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여, 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부로서, 그리고
상기 비교 처리 결과에 기초하여 상기 어드레스 정보 유지부에 유지되는 어드레스 정보의 내용을 제어하는 제어부로서 기능시키고,
상기 제어부는, 상기 어드레스 정보 유지부에 어드레스 정보를 유지시키거나, 혹은 상기 어드레스 정보 유지부의 어드레스 정보를 갱신하면, 그 어드레스 정보에 대한 덮어쓰기 처리를 소정 기간 억지하도록 상기 컴퓨터를 기능시키는 것을 특징으로 하는 프로그램.
(부기 13)
메모리 액세스 명령을 실행하는 명령 실행부와, 상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와, 상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와, 상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와, 상기 명령 실행부로부터 메모리 액세스 요구가 있었 던 어드레스와 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부를 갖는 정보 처리 장치에 있어서, 상기 캐쉬 메모리에의 프리페치를 실행하는 기능을 컴퓨터에 실현시키기 위한 프로그램으로서,
상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 상기 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부로서 상기 컴퓨터를 기능시키는 것을 특징으로 하는 프로그램.
(부기 14)
연속 액세스가 발생하는 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 메모리 액세스 명령 생성부로서 상기 컴퓨터를 기능시키고,
상기 메모리 액세스 명령 생성부는, 상기 하드웨어 프리페치 대상 지시부에 의해서 하드웨어 프리페치 요구 발행 대상임을 나타내는 상기 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지하는 한편, 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 상기 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하도록 상기 컴퓨터를 기능시키는 것을 특징으로 하는 부기 13에 기재한 프로그램.
(부기 15)
상기 하드웨어 프리페치 대상 지시부는, 복수 계열의 연속 액세스가 발생하 는 경우에는, 상기 어드레스 정보 유지부가 유지할 수 있는 어드레스 정보의 엔트리수에 따라서 상기 지시 정보를 부가하도록 상기 컴퓨터를 기능시키는 것을 특징으로 하는 부기 13 또는 부기 14에 기재한 프로그램.
(부기 16)
상기 하드웨어 프리페치 대상 지시부는, 복수 계열의 연속 액세스가 발생하는 경우에, 상기 엔트리수의 범위 내에서, 상기 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보를 부가하고, 상기 엔트리수를 넘는 경우에는, 그 넘은 수의 명령 계열의 상기 메모리 액세스 명령에는 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하도록 상기 컴퓨터를 기능시키는 것을 특징으로 하는 부기 15에 기재한 프로그램.
(부기 17)
메모리 액세스 명령을 실행하는 명령 실행부와, 상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와, 상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와, 상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와, 상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부를 갖는 정보 처리 장치에 있어서, 명령열을 생성하는 명령열 생성 방법으로서,
상기 액세스 정보 유지부가 유지할 수 있는 어드레스 정보의 엔트리수에 따라서, 상기 하드웨어 프리페치 요구 발행부에 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 메모리 액세스 명령에 부가하고,
상기 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 한편, 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지하는 것을 특징으로 하는 명령열 생성 방법.
(부기 18)
복수 계열의 연속 액세스가 발생하는 경우에, 상기 엔트리수의 범위 내에서, 상기 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보를 부가하고, 상기 엔트리수를 넘는 경우에는, 그 넘은 수의 상기 메모리 액세스 명령에는 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하는 것을 특징으로 하는 부기 17에 기재한 명령열 생성 방법.
(부기 19)
하드웨어 프리페치의 거리가 소정 범위 밖인 경우에는, 그 어드레스 정보에 관한 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하여, 그 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하는 것을 특징으로 하는 부기 17 또는 부기 18에 기재한 명령열 생성 방법.
(부기 20)
상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치에 의해서 소정 이상의 하드웨어 프리페치 효과를 얻을 수 있는지 여부를 판단하고, 소정 이상의 하드웨어 프리페치 효과를 얻을 수 없다고 판단한 경우에는, 그 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하여, 그 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하는 것을 특징으로 하는 부기 17 또는 부기 18에 기재한 명령열 생성 방법.
도 1은 본 발명의 일 실시형태로서의 정보 처리 장치의 구성을 도시하는 블록도이다.
도 2는 본 발명의 일 실시형태로서의 정보 처리 장치의 구성을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시형태로서의 정보 처리 장치의 하드웨어 프리페치 제어 장치의 동작 순서의 일례를 나타내는 흐름도이다.
도 4는 본 발명의 일 실시형태로서의 정보 처리 장치의 하드웨어 프리페치 제어 장치의 프리페치 어드레스 큐 갱신부의 동작 순서의 일례를 나타내는 흐름도이다.
도 5는 본 발명의 일 실시형태로서의 정보 처리 장치의 하드웨어 프리페치 제어 장치의 프리페치 어드레스 큐의 엔트리수 이상의 연속 액세스가 발생한 경우의 프리페치 어드레스 큐에 유지되는 어드레스 패턴의 천이예를 나타내는 도면이다.
도 6은 본 발명의 일 실시형태로서의 정보 처리 장치의 프로세서 유닛의 컴파일부의 동작 순서의 일례를 나타내는 흐름도이다.
도 7은 본 발명의 일 실시형태로서의 정보 처리 장치의 하드웨어 프리페치 제어 장치의 프리페치 어드레스 큐에 유지되는 어드레스 패턴의 천이예를 나타내는 도면이다.
도 8은 본 발명의 일 실시형태로서의 정보 처리 장치의 하드웨어 프리페치 제어 장치의 프리페치 어드레스 큐에 유지되는 어드레스 패턴의 천이예를 나타내는 도면이다.
도 9는 본 발명의 변형예로서의 정보 처리 장치의 하드웨어 프리페치 제어 장치의 프리페치 어드레스 큐 갱신부의 동작 순서의 일례를 나타내는 흐름도이다.
도 10은 종래의 LRU 제어에 의해서 프리페치 어드레스 큐에 유지되는 어드레스 패턴의 천이를 나타내는 도면이다.
<부호의 설명>
1 : 정보 처리 장치 2 : 컴파일부
3 : 프리페치 대상 지시부(하드웨어 프리페치 대상 지시부)
4 : 메모리 액세스 명령 생성부 10 : 프로세서 유닛
11 : 주기억 장치(기억부) 12 : 1차 캐쉬
12a : 1차 캐쉬 메모리 12b : 제어 장치
13 : 2차 캐쉬 13a : 2차 캐쉬 메모리
13b : 제어 장치 14 : 명령 해독부
15 : 명령 실행부
20 : 하드웨어 프리페치 제어 장치(프리페치 제어 장치)
21 : 프리페치 어드레스 큐(어드레스 정보 유지부)
21a, 21a-0∼N : 카운터 22 : 액세스 패턴 감시부
22a : 하드웨어 프리페치 요구 발행부
23 : 1차 캐쉬 프리페치 요구 발행부
24 : 2차 캐쉬 프리페치 요구 발행부
25 : 프리페치 어드레스 큐 갱신부(제어부)
26 : 카운터 제어부

Claims (10)

  1. 메모리 액세스 명령을 실행하는 명령 실행부와,
    상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와,
    상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와,
    상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와,
    상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와, 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여, 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부와,
    상기 비교 처리 결과에 기초하여 상기 어드레스 정보 유지부에 유지되는 어드레스 정보의 내용을 제어하는 제어부
    를 구비하고,
    상기 제어부는, 상기 어드레스 정보 유지부에 어드레스 정보를 유지시키거나, 혹은 상기 어드레스 정보 유지부의 어드레스 정보를 갱신하면, 그 어드레스 정보에 대한 덮어쓰기 처리를 소정 기간 억지하는 것을 특징으로 하는 정보 처리 장치.
  2. 제1항에 있어서, 상기 어드레스 정보가 유지 혹은 갱신된 후의 클록 사이클의 수를 카운트하는 카운터를 구비하고,
    상기 제어부는, 상기 카운터의 값이 소정치가 된 것을 상기 소정 기간으로서 인식하는 것을 특징으로 하는 정보 처리 장치.
  3. 제1항에 있어서, 상기 어드레스 정보가 유지 혹은 갱신된 후의 그 어드레스 정보에 대한 상기 제어부에 의한 상기 덮어쓰기 처리의 억지 횟수를 카운트하는 카운터를 구비하고,
    상기 제어부는, 상기 카운터의 값이 소정치가 된 것을 상기 소정 기간으로서 인식하는 것을 특징으로 하는 정보 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제어부는, 갱신된 상기 어드레스 정보에 관한 상기 소정 기간을 상기 어드레스 정보 유지부에 새롭게 유지된 어드레스 정보의 상기 소정 기간보다도 길게 하는 것을 특징으로 하는 정보 처리 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 상기 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부를 구비하고,
    상기 하드웨어 프리페치 요구 발행부는, 상기 지시 정보에 기초하여, 상기 비교 처리 및 하드웨어 프리페치 요구의 발행 처리를 실행하는 것을 특징으로 하는 정보 처리 장치.
  6. 메모리 액세스 명령을 실행하는 명령 실행부와,
    상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와,
    상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와,
    상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와,
    상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와, 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여, 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부와,
    상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 상기 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부
    를 구비하고,
    상기 하드웨어 프리페치 요구 발행부는, 상기 지시 정보에 기초하여, 상기 비교 처리 및 하드웨어 프리페치 요구의 발행 처리를 실행하는 것을 특징으로 하는 정보 처리 장치.
  7. 메모리 액세스 명령을 실행하는 명령 실행부와, 상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와, 상기 명령 실행부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와, 상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와, 상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부를 갖는 정보 처리 장치에 있어서, 상기 캐쉬 메모리에의 프리페치를 실행하는 기능을 컴퓨터에 실현시키기 위한 프로그램을 기록한 기록 매체로서,
    상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 상기 메모리 액세스 명령에 부가하는 하드웨어 프리페치 대상 지시부로서 상기 컴퓨터를 기능시키는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  8. 메모리 액세스 명령을 실행하는 명령 실행부와, 상기 명령 실행부에 의해서 실행되는 메모리 액세스 명령에 관한 데이터를 유지하는 기억부와, 상기 명령 실행 부와 상기 기억부 사이에 개재된 적어도 하나의 캐쉬 메모리와, 상기 명령 실행부에 의해서 실행된 메모리 액세스 명령의 어드레스에 기초한 어드레스 정보를 유지하는 어드레스 정보 유지부와, 상기 명령 실행부로부터 메모리 액세스 요구가 있었던 어드레스와 상기 어드레스 정보 유지부에 유지된 어드레스 정보와의 비교 처리 결과에 기초하여 상기 캐쉬 메모리에 대한 하드웨어 프리페치 요구를 발행하는 하드웨어 프리페치 요구 발행부를 갖는 정보 처리 장치에 있어서, 명령열을 생성하는 명령열 생성 방법으로서,
    상기 액세스 정보 유지부가 유지할 수 있는 어드레스 정보의 엔트리수에 따라서, 상기 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치 요구 발행 대상인지 여부를 나타내는 지시 정보를 메모리 액세스 명령에 부가하고,
    상기 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하여 명령열에 삽입하는 한편, 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보가 부가된 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령의 생성을 억지하는 것을 특징으로 하는 명령열 생성 방법.
  9. 제8항에 있어서, 복수 계열의 연속 액세스가 발생하는 경우에, 상기 엔트리수의 범위 내에서, 상기 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상임을 나타내는 지시 정보를 부가하고, 상기 엔트리수를 넘는 경우에는, 그 넘은 수의 상기 메모리 액세스 명령에는 하드웨어 프리페치 요구 발행 대상이 아님을 나타 내는 지시 정보를 부가하는 것을 특징으로 하는 명령열 생성 방법.
  10. 제8항 또는 제9항에 있어서, 하드웨어 프리페치 요구 발행부에 의한 하드웨어 프리페치에 의해서 소정 이상의 하드웨어 프리페치 효과를 얻을 수 있는지 여부를 판단하고, 소정 이상의 하드웨어 프리페치 효과를 얻을 수 없다고 판단한 경우에는, 그 메모리 액세스 명령에 하드웨어 프리페치 요구 발행 대상이 아님을 나타내는 지시 정보를 부가하여, 그 메모리 액세스 명령에 관한 소프트웨어 프리페치 명령을 생성하는 것을 특징으로 하는 명령열 생성 방법.
KR1020080136801A 2008-03-21 2008-12-30 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법 KR100976433B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008073863A JP2009230374A (ja) 2008-03-21 2008-03-21 情報処理装置,プログラム,及び命令列生成方法
JPJP-P-2008-073863 2008-03-21

Publications (2)

Publication Number Publication Date
KR20090101072A KR20090101072A (ko) 2009-09-24
KR100976433B1 true KR100976433B1 (ko) 2010-08-18

Family

ID=40790602

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080136801A KR100976433B1 (ko) 2008-03-21 2008-12-30 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법

Country Status (5)

Country Link
US (1) US8166250B2 (ko)
EP (2) EP2299356A1 (ko)
JP (1) JP2009230374A (ko)
KR (1) KR100976433B1 (ko)
CN (1) CN101539853B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI574155B (zh) * 2010-03-29 2017-03-11 威盛電子股份有限公司 資料預取方法、電腦程式產品以及微處理器
JP2012014417A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 命令制御装置、及び命令制御方法
US9009414B2 (en) * 2010-09-21 2015-04-14 Texas Instruments Incorporated Prefetch address hit prediction to reduce memory access latency
WO2012109882A1 (zh) * 2011-08-05 2012-08-23 华为技术有限公司 数据读取的方法和存储器控制器
US9239793B2 (en) * 2011-12-13 2016-01-19 Ati Technologies Ulc Mechanism for using a GPU controller for preloading caches
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
US9043579B2 (en) 2012-01-10 2015-05-26 International Business Machines Corporation Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest
US9442727B2 (en) * 2013-10-14 2016-09-13 Oracle International Corporation Filtering out redundant software prefetch instructions
JP6252348B2 (ja) 2014-05-14 2017-12-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP6265041B2 (ja) 2014-05-15 2018-01-24 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US20160103612A1 (en) * 2014-10-12 2016-04-14 Qualcomm Incorporated Approximation of Execution Events Using Memory Hierarchy Monitoring
JP6458682B2 (ja) * 2015-08-24 2019-01-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN108255517B (zh) * 2016-12-29 2020-05-05 展讯通信(上海)有限公司 处理器及请求指令缓存数据的方法
CN109308280B (zh) * 2017-07-26 2021-05-18 华为技术有限公司 数据处理方法和相关设备
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
CN111475203B (zh) * 2020-04-03 2023-03-14 小华半导体有限公司 一种用于处理器的指令读取方法以及相应的处理器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930011345B1 (ko) * 1990-03-27 1993-11-30 디지탈 이큅먼트 코오포레이숀 캐쉬 및 프리페치 버퍼를 갖는 데이타 처리시스템 및 방법
KR20010085404A (ko) * 2000-02-24 2001-09-07 가나이 쓰토무 데이터 프로세서 및 데이터 처리시스템
KR20040038548A (ko) * 2002-11-01 2004-05-08 삼성전자주식회사 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법
KR20060130120A (ko) * 2004-03-24 2006-12-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737565A (en) * 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
US5944815A (en) * 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
JP3913895B2 (ja) 1998-04-17 2007-05-09 富士通株式会社 命令キャッシュ制御装置および記録媒体
JP3968914B2 (ja) 1999-06-02 2007-08-29 株式会社日立製作所 ディスクアレイ装置
US6510494B1 (en) 1999-06-30 2003-01-21 International Business Machines Corporation Time based mechanism for cached speculative data deallocation
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
US6578130B2 (en) * 2001-10-18 2003-06-10 International Business Machines Corporation Programmable data prefetch pacing
US6823428B2 (en) * 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
CN1726459A (zh) 2002-12-12 2006-01-25 皇家飞利浦电子股份有限公司 基于用于数据预取的步距预测的计数器
US6981099B2 (en) 2002-12-16 2005-12-27 Sun Microsystems, Inc. Smart-prefetch
US20060174228A1 (en) 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US7380066B2 (en) 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US7519776B2 (en) * 2005-07-26 2009-04-14 Invensys Systems, Inc. Method and system for time-weighted cache management
US7533242B1 (en) * 2005-10-31 2009-05-12 Sun Microsystems, Inc. Prefetch hardware efficiency via prefetch hint instructions
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
US7739478B2 (en) * 2007-03-08 2010-06-15 Hewlett-Packard Development Company, L.P. Multiple address sequence cache pre-fetching
US7908439B2 (en) * 2007-06-25 2011-03-15 International Business Machines Corporation Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
US7991956B2 (en) * 2007-06-27 2011-08-02 Intel Corporation Providing application-level information for use in cache management
CN100449481C (zh) * 2007-06-29 2009-01-07 东南大学 具有多通道指令预取功能的存储控制电路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930011345B1 (ko) * 1990-03-27 1993-11-30 디지탈 이큅먼트 코오포레이숀 캐쉬 및 프리페치 버퍼를 갖는 데이타 처리시스템 및 방법
KR20010085404A (ko) * 2000-02-24 2001-09-07 가나이 쓰토무 데이터 프로세서 및 데이터 처리시스템
KR20040038548A (ko) * 2002-11-01 2004-05-08 삼성전자주식회사 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법
KR20060130120A (ko) * 2004-03-24 2006-12-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법

Also Published As

Publication number Publication date
CN101539853A (zh) 2009-09-23
JP2009230374A (ja) 2009-10-08
US20090240887A1 (en) 2009-09-24
US8166250B2 (en) 2012-04-24
CN101539853B (zh) 2012-08-22
EP2299356A1 (en) 2011-03-23
EP2131276A3 (en) 2010-04-07
KR20090101072A (ko) 2009-09-24
EP2131276A2 (en) 2009-12-09

Similar Documents

Publication Publication Date Title
KR100976433B1 (ko) 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법
US7424578B2 (en) Computer system, compiler apparatus, and operating system
US6584549B2 (en) System and method for prefetching data into a cache based on miss distance
EP1031919B1 (en) Method for prefetching structured data
CN104636270B (zh) 数据处理装置和数据处理方法
JP4399268B2 (ja) ポインタ識別及び自動データプリフェッチ
JP7007371B2 (ja) ベクトル命令のための要素間アドレス・ハザードの取扱い
JP7377211B2 (ja) 投機的サイド・チャネル・ヒント命令
CN111201518B (zh) 用于管理能力元数据的设备和方法
US8266605B2 (en) Method and system for optimizing performance based on cache analysis
KR102478766B1 (ko) 디스크립터 링 관리
US9311094B2 (en) Predicting a pattern in addresses for a memory-accessing instruction when processing vector instructions
US7234136B2 (en) Method and apparatus for selecting references for prefetching in an optimizing compiler
US9122485B2 (en) Predicting a result of a dependency-checking instruction when processing vector instructions
US20030088864A1 (en) Method and apparatus for inserting prefetch instructions in an optimizing compiler
EP1305714B1 (en) Method and apparatus for software prefetching using non-faulting loads
US8924693B2 (en) Predicting a result for a predicate-generating instruction when processing vector instructions
JP4643740B2 (ja) プロセッサおよびプリフェッチ支援プログラム
CN1326036C (zh) 数据处理装置、数据处理方法和编译装置及编译方法
US11334495B2 (en) Cache eviction

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130719

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140721

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee