KR101159412B1 - 프로그래밍 가능한 데이터 프리페칭 - Google Patents

프로그래밍 가능한 데이터 프리페칭 Download PDF

Info

Publication number
KR101159412B1
KR101159412B1 KR1020097014497A KR20097014497A KR101159412B1 KR 101159412 B1 KR101159412 B1 KR 101159412B1 KR 1020097014497 A KR1020097014497 A KR 1020097014497A KR 20097014497 A KR20097014497 A KR 20097014497A KR 101159412 B1 KR101159412 B1 KR 101159412B1
Authority
KR
South Korea
Prior art keywords
data
identifier
data structure
program
object identifier
Prior art date
Application number
KR1020097014497A
Other languages
English (en)
Other versions
KR20090129395A (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 KR20090129395A publication Critical patent/KR20090129395A/ko
Application granted granted Critical
Publication of KR101159412B1 publication Critical patent/KR101159412B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

데이터를 캐시 메모리로 프리페칭하는 방법, 컴퓨터 프로그램 제품 및 시스템이 제공된다. 프로그램이 실행되면 프로그램의 제 1 객체의 객체 식별자가 획득된다. 룩업 연산이 데이터 구조상에서 수행되어 객체 식별자가 데이터 구조에 존재하는지를 판단한다. 객체 식별자가 데이터 구조에 존재하면, 객체 식별자에 의해 참조되는 참조된 객체 식별자를 가져온다. 참조된 객체 식별자와 관련되는 데이터를 메인 메모리로부터 캐시 메모리로 프리페칭한다.

Description

프로그래밍 가능한 데이터 프리페칭{PROGRAMMABLE DATA PREFETCHING}
본 발명은 일반적으로 데이터 프리페칭에 관한 것이다. 더 구체적으로, 본 출원은 프로그래밍 가능한 객체 식별자를 사용하여 데이터를 프리페칭하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다.
중앙 처리 장치(CPU) 캐시는 메모리에 액세스하는 평균 시간을 감소시키기 위해 컴퓨터의 CPU에 의해 사용되는 캐시이다. 이 캐시는 가장 자주 사용되는 메인 메모리 위치로부터의 데이터 카피를 저장하는 더 작고 더 빠른 메모리이다. 대부분의 메모리 액세스가 캐싱된 메모리 위치로 향하는 한, 메모리 액세스의 평균 지연은 메인 메모리의 지연보다 캐시 지연에 더 근접할 것이다.
프로세서가 메인 메모리의 한 위치를 판독하거나 기록하려고 할 때, 프로세서는 먼저 메모리 위치가 캐시에 존재하는지를 체크한다. 이는 메모리 위치의 어드레스를 그 어드레스를 포함할 수 있는 캐시의 모든 태그에 비교함으로써 이루어진다. 프로세서가 메모리 위치가 캐시에 존재한다고 발견하면, 이를 캐시 히트(a cache hit)라고 한다. 프로세서가 메모리 위치가 캐시에 존재한다고 발견할 수 없으면, 이를 캐시 미스(a cache miss)라고 한다. 캐시 히트의 경우, 프로세서는 캐시 라인의 데이터를 즉시 판독하거나 기록한다. 캐시 히트를 얻는 액세스 비율은 히트 레이트로 알려져 있으며 캐시의 유효성의 척도이다.
캐시 미스(cache miss)의 경우, 대부분의 캐시는 새로운 입력을 할당하는데, 이는 방금 놓친 태그와 메모리로부터의 데이터의 카피를 포함한다. 그 후, 캐시 히트의 경우와 똑같이 새로운 입력으로 이 기준이 적용될 수 있다. 미스는 메인 메모리로부터 데이터가 전송될 것을 요구하므로 상대적으로 느리다. 이 전송은 메인 메모리가 캐시 메모리보다 훨씬 느리기 때문에 지연을 일으키며, 또한 프로세서로 전송되기 전에 캐시의 새로운 데이터를 기록하는 오버헤드를 일으킨다.
일단 캐시가 다 차게 되면, 더 새로운 데이터를 위한 공간을 만들기 위해 캐시로부터 데이터가 제거되어야 한다. 캐시로부터 어느 데이터를 제거할지를 선택하는 가장 공통적인 방법은 특정 블록의 데이터가 언제 마지막으로 사용되었는지를 추적하고 가장 최근에 사용된 블록을 캐시로부터 제거하는 것이다. 그러므로, 데이터가 최근에 사용되지 않았으면, 캐시에 존재하지 않을 것이며, CPU에 의해 액세스될 수 있기 전에 메인 메모리로부터 로딩되어야 할 것이다. 이는 CPU가 메모리로부터 가져올 데이터를 기다리는 동안 성능의 손실을 야기할 수 있다.
이 문제에 대한 한 가지 해결책은 가까운 미래에 무슨 데이터가 필요할 것인지를 예상하여 그 데이터를 캐시로 프리페칭하는 것이다. 어느 데이터를 프리페칭할지를 결정하기 위해 공통적으로 사용되는 2가지 방법이 있다.
● 순차적 판독 및
● 터치 인스트럭션.
순차적 판독을 사용함에 있어서, 데이터는 액세스된 마지막 데이터 직전 또는 직후에 판독된다. 순차적 판독은 우수한 공간적 장소(spatial locality)를 갖는 프리페칭 데이터에서 효율적이지만 랜덤 위치에서 데이터를 액세스할 때에는 소용이 없다.
터치 인스트럭션을 실행할 때마다, [0, 크기-1] 범위의 난수가 터치 인스트럭션의 어드레스 연산자에 추가되어 가상 어드레스를 생성한다. 어드레스의 페이지 부분은 프로세스에 대한 페이지-기준 스트링의 다음 요소를 구성한다. 터치 인스트럭션이 무효 페이지에 대한 페이지 기준을 생성할 때, 인터프리터(interpreter)는 프레임을 프로세스에 할당해야 한다. 또한, 터치 인스트럭션은 일반적으로 조언적(advisoty)이다. 조언적인 인스트럭션은 선택적인 인스트럭션인데, 이는 중앙 처리 장치가 혼잡할 때에 조언적인 인스트럭션은 실행되지 않을 수 있다는 것을 의미한다. 그러므로, 터치 인스트럭션은 하드웨어가 혼잡할 때 동작하지 않을 수 있다. 또한, 객체 A가 객체 B를 참조하고 객체 B는 객체 C를 참조할 때의 터치 인스트럭션의 경우, 이들 객체의 각각은 통상적으로 소프트웨어 스택의 상이한 계층에 존재한다. 결과적으로, 객체 A에서 동작하는 소프트웨어 스택의 한 계층의 인스트럭션은 객체 C 및 계층적으로 객체 C 아래인 임의의 다른 객체를 인식하지 않을 것인데, 왜냐하면 객체 C는 객체 A 바로 아래가 아니고 객체 C는 객체 B의 바로 아래이기 때문이다. 이러한 환경은, 소프트웨어 스택의 주어진 계층이 터치 인스트럭션을 통한 계층에서 기껏해야 이 계층의 바로 아래인 객체를 프리페칭할 수 있다는 것을 암시한다. 즉, 객체 B는 객체 A 바로 아래의 유일한 객체이므로 객체 B만이 객체 A에 의해 프리페칭될 수 있다.
실시예는 객체들 사이의 알려진 계층적 관계에 기초하여 액세스될 객체를 식별하여 데이터가 캐시로 프리페칭될 수 있는 지능적 방법을 제공한다. 프로그램이 실행되면 프로그램의 제 1 객체의 객체 식별자가 획득된다. 룩업 연산이 데이터 구조상에서 수행되어 상기 객체 식별자가 상기 데이터 구조에 존재하는지를 판단한다. 상기 객체 식별자가 상기 데이터 구조에 존재하면, 상기 객체 식별자에 의해 참조되는 참조 객체 식별자를 가져온다. 참조 객체 식별자와 관련되는 데이터가 메인 메모리로부터 캐시 메모리로 가져와 진다.
또한, 실시예는 객체 식별자가 데이터 구조에 나타나지 않으면 제 1 객체가 제 2 객체를 참조하는지를 판단하는 단계를 제공한다. 제 1 객체가 제 2 객체를 참조하면 제 1 객체 정보를 포함하도록 데이터 구조가 파퓰레이팅된다. 또한, 실시예는 제 2 객체가 제 3 객체를 참조하는지를 판단한다. 제 2 객체가 제 3 객체를 참조하면 제 2 객체 정보를 포함하도록 데이터 구조가 파퓰레이팅된다.
실시예에서, 객체 정보는 객체 식별자, 오프셋 또는 참조 객체 식별자 중 적어도 하나를 포함할 수 있으며, 오프셋은 제 2 객체의 어드레스가 참조되는 제 1 객체 내의 위치를 식별한다. 제 1 객체는 복수의 객체 중 하나일 수 있으며 복수의 객체 각각은 고유하게 식별될 수 있다. 링커/로더 프로그램은 복수의 객체 각각을 고유하게 식별한다. 링커/로더 프로그램은 추가 식별자를 복수의 객체 각각에 추가함으로써 복수의 객체 각각을 고유하게 식별한다.
다른 실시예에서, 컴퓨터 판독 가능한 프로그램을 갖는 컴퓨터 사용 가능한 매체를 포함하는 컴퓨터 프로그램 제품이 제공된다. 컴퓨터 판독 가능한 프로그램은 연산 장치에서 실행되면 연산 장치로 하여금 예시적 방법에 관해 설명한 동작 중 여러 가지 및 그 조합을 수행하게 한다.
또 다른 실시예에서, 시스템이 제공된다. 이 시스템은 프로세서와 이 프로세서에 연결되는 메모리를 포함할 수 있다. 이 메모리는 프로세서에 의해 실행되면 이 프로세서로 하여금 예시적 방법에 관해 설명한 동작 중 여러 가지 및 그 조합을 수행하게 한다.
본 발명과 바람직한 사용 모드, 추가 목적 및 장점은 첨부된 도면을 참조하여 다음의 실시예의 상세한 설명을 참조하여 가장 잘 이해될 것이다.
도 1은 실시예가 구현될 수 있는 데이터 프로세싱 시스템의 블록도를 도시하고 있다.
도 2는 실시예에 따른 프로그래밍 가능한 객체 식별자를 사용하여 데이터를 프리페칭하는 데에 사용되는 구성요소의 예시적 블록도를 도시하고 있다.
도 3은 실시예에 따른 예시적 객체 관계를 도시하고 있다.
도 4는 실시예에 따른 객체가 참조되는 예시적 실행 가능한 프로그램 코드의 일부를 도시하고 있다.
도 5는 실시예에 따른 객체 테이블의 예시적 논리 표현을 도시하고 있다.
도 6은 실시예에 따른 예시적 객체 어드레싱 방안을 도시하고 있다.
도 7은 실시예에 따른 데이터를 프리페칭하는 연산의 흐름도를 도시하고 있다.
실시예는 프로그래밍 가능한 객체 식별자를 사용하여 데이터를 프리페칭하는 메커니즘을 제공한다. 도 1은 본 발명의 실시예가 구현될 수 있는 데이터 프로세싱 환경의 예시적 도면으로서 제공되어 있다. 도 1은 단지 예시적인 것이며 본 발명의 양태 또는 실시예가 구현될 수 있는 환경에 대한 어떠한 제한을 단정하거나 암시하는 것이 아니라는 것을 인식해야 한다. 본 발명의 사상과 범위를 벗어나지 않고 도시된 실시예에 많은 변형이 이루어질 수 있다.
이제 도 1을 참조하면, 실시예가 구현될 수 있는 데이터 프로세싱 시스템의 블록도가 도시되어 있다. 데이터 프로세싱 시스템(100)은, 프로세스를 구현하는 컴퓨터 사용 가능한 코드 또는 인스트럭션이 실시예를 위해 위치될 수 있는 컴퓨터의 일례이다.
도시된 예에서, 데이터 프로세싱 시스템(100)은 노스 브릿지(north bridge)와 메모리 제어기 허브(MCH)(102) 및 사우스 브릿지(south bridge)와 입력/출력(I/O) 제어기 허브(ICH)(104)를 포함하는 허브 아키텍처를 사용한다. 프로세싱 유닛(106), 메인 메모리(108) 및 그래픽 프로세서(110)는 노스 브릿지 및 메모리 제어기 허브(102)에 연결된다. 프로세싱 유닛(106)은 하나 이상의 프로세서를 포함할 수 있으며 하나 이상의 혼성 프로세서 시스템을 사용하여 구현될 수 있다. 그래픽 프로세서(110)는, 예를 들어, AGP(an accelerated graphics port)를 통해 MCH에 연결될 수 있다.
도시된 예에서, 근거리 네트워크(LAN) 어댑터(112)는 사우스 브릿지 및 I/O 제어기 허브(104) 및 오디오 어댑터(116), 키보드 및 마우스 어댑터(120), 모뎀(122), 판독 전용 메모리(ROM)(124), 범용 직렬 버스(USB) 포트 및 기타 통신 포트에 연결되고, PCI/PCIe 디바이스(134)는 버스(138)를 통해 사우스 브릿지 및 I/O 제어기 허브(104)에 연결되고, 하드 디스크 드라이브(HDD)(126) 및 CD-ROM 드라이브(130)는 버스(140)를 통해 사우스 브릿지 및 I/O 제어기 허브(104)에 연결된다. PCI/PCIe 디바이스는, 예를 들어, 이더넷 어댑터, 애드-인 카드, 및 노트복 컴퓨터용 PC 카드를 포함할 수 있다. PCI는 카드 버스 제어기를 사용하지만 PCIe는 그렇지 않다. ROM(124)은, 예를 들어, 플래시 이진 입력/출력 시스템(BIOS)일 수 있다. 하드 디스크 드라이브(126) 및 CD-ROM 드라이브(130)는, 예를 들어, 집적 드라이브 전자소자(IDE) 또는 SATA(serial advanced technology attachment) 인터페이스를 사용할 수 있다. 수퍼 I/O(SIO) 디바이스(136)는 사우스 브릿지 및 I/O 제어기 허브(104)에 연결될 수 있다.
운영 시스템은 프로세싱 유닛(106)상에서 실행되며 도 1의 데이터 프로세싱 시스템(100) 내의 다양한 구성요소를 조정하고 제어한다. 운영 시스템은 Microsoft?Windows?XP(Microsoft 및 Windows는 미국, 다른 국가 또는 양자 모두에서 Microsoft Corporation의 상표이다)와 같은 상업적으로 이용 가능한 운영 시스템일 수 있다. Java™ 프로그래밍 시스템과 같은 객체 지향 프로그래밍 시스템은 운영 시스템와 함께 실행될 수 있으며, 데이터 프로세싱 시스템(100)상에서 실행되는 Java 프로그램 또는 애플리케이션으로부터 운영 시스템으로 콜을 제공한다. Java 및 모든 Java-기반 상표는 미국, 다른 국가 또는 양자 모두에서 Sun Microsystems, Inc.의 상표이다.
운영 시스템을 위한 인스트럭션, 객체-지향 프로그래밍 시스템 및 애플리케이션 또는 프로그램은 하드 디스크 드라이브(126)와 같은 저장 소자에 위치되며, 프로세싱 유닛(106)에 의한 실행을 위해 메인 메모리(108)로 로딩될 수 있다. 실시예의 프로세스는 컴퓨터 구현 인스트럭션을 사용하여 프로세싱 유닛(106)에 의해 수행될 수 있는데, 이는 메인 메모리(108), 판독 전용 메모리(124)와 같은 메모리 또는 하나 이상의 주변 디바이스에 위치될 수 있다.
도 1의 하드웨어는 구현에 의존하여 변할 수 있다. 플래시 메모리, 동등한 비휘발성 메모리 또는 광 디스크 드라이브 등과 같은 다른 내부적 하드웨어 또는 주변 디바이스가 도 1에 도시된 하드웨어에 추가하여 또는 이를 대신하여 사용될 수 있다. 또한, 실시예의 프로세스는 멀티프로세서 데이터 프로세싱 시스템에 적용될 수 있다.
일부 실시예에서, 데이터 프로세싱 시스템(100)은 PDA(a personal digital assistant)일 수 있는데, 이는 일반적으로 플래시 메모리로 구성되어 운영 시스템 파일 및/또는 사용자-생성 데이터를 저장하는 비휘발성 메모리를 제공한다. 버스 시스템은 시스템 버스, I/O 버스 및 PCI 버스와 같은 하나 이상의 버스로 구성될 수 있다. 물론 버스 시스템은 임의의 종류의 통신 패브릭 또는 아키텍처를 사용하여 구현될 수 있으며, 패브릭 또는 아키텍처에 부착되는 상이한 구성요소 또는 디바이스 사이의 데이터 전송을 제공한다. 통신 유닛은 모뎀 또는 네트워크 어댑터와 같은 데이터를 송신하고 수신하는 데에 사용되는 하나 이상의 디바이스를 포함할 수 있다. 메모리는, 예를 들어, 노스 브릿지와 메모리 제어기 허브(102)에서 발견되는 메인 메모리(108) 또는 캐시일 수 있다. 프로세싱 유닛은 하나 이상의 프로세서 또는 CPU를 포함할 수 있다. 도 1의 도시된 예 및 전술한 예는 아키텍처 제한을 암시하는 것이 아니다. 예를 들어, 데이터 프로세싱 시스템(100)은 PDA 형태를 취할 뿐만 아니라 태블릿 컴퓨터, 랩탑 컴퓨터 또는 전화 디바이스일 수도 있다.
도 2는 실시예에 따른 프로그래밍 가능한 객체 식별자를 사용하여 데이터를 프리페칭하는 데에 사용되는 예시적 구성요소의 블록도를 도시하고 있다. 실시예는 데이터 대신에 객체라는 용어를 사용하는데, 객체는 프로그램의 기본 구축 블록으로서 사용되는 실행 시간 데이터 저장의 개별적 단위이기 때문이다. 프로그래밍 가능한 객체 식별자를 사용하여 객체를 프리페칭하기 위해, 컴파일러(204)는 우선 소스 코드(202)를 컴파일해야 한다. 소스 코드(202)는 도 1의 데이터 프로세싱 시스템(100)와 같은 데이터 프로세싱 시스템에 의해 실행되는 프로그램 또는 애플리케이션일 수 있다. 컴파일러(204)는 컴퓨터 프로그램 또는 프로그램 세트로서, 소스 컴퓨터 언어로 기록된 소스 코드(202) 텍스트를 목표 컴퓨터 언어 또는 객체 코드(206)로 변역한다. 객체 코드(206)는 링커/로더 모듈(208)과 같은 다른 프로그램에 의한 프로세싱을 위해 적합한 형태를 가장 공통적으로 가지지만, 객체 코드(206)는 사람이 판독할 수 있는 텍스트 파일일 수도 있다. 소스 코드(202)의 컴파일링 동안, 컴파일러(204)는 소스 코드(202) 내의 객체를 식별하기 위해 객체 식별자(210)를 사용한다. 그 후, 객체 고유 식별자 생성기(212)는 고유 식별자를 객체 식별자(210)에 의해 식별되는 각 객체에 할당한다. 고유하게 식별되는 객체는 객체 코드(206)에 포함된다.
사용자가 프로그램이 실행되기를 요청하면, 링커/로더 모듈(208)은 객체 코드(206)의 컴파일러(204)에 의해 생성되는 고유하게 식별된 객체를 식별한다. 또한, 링커/로더 모듈(208)은 추가 식별자를 각각의 고유하게 식별된 객체에 추가함으로써 고유하게 식별된 객체를 식별하여 한 프로그램의 객체가 다른 프로그램의 객체로부터 구별되게 할 수 있다. 또한, 프로그램 특정 고유 식별자를 갖는 객체를 구별하는 것은 후술할 바와 같이 객체가 쉽게 식별되게 함으로써 캐시 성능을 증가시킬 수 있다. 그 후, 링커/로더 모듈(208)은 컴파일러(204)에 의해 생성되는 객체 코드(206)를 취하고 객체 코드(206)를 실행 가능한 프로그램(214)으로 어셈블링한다. 도 1의 메인 메모리(108)와 같은 메모리(216)는 링크/로더 모듈(208)에 의해 생성되는 실행 가능한 프로그램(214)을 저장한다.
실행 가능한 프로그램(214)은 구성요소 코드의 여러 계층의 스택이며, 각 구 성요소는 주어진 구성요소에 의해 소유되는 객체상에서 동작함으로써 작업 세트를 달성한다. 구성요소는 한 부분의 프로그램으로서, 예를 들어, 단일 파일, 관련 파일 그룹, 객체, 등록, 등록 키, 숏컷, 리소스, 디렉토리로 그룹화된 라이브러리, 공유된 코드 부분 등으로 설치될 것이다. 간단한 예는 프로토콜 드라이버 아래에 위치하는 어댑터 드라이버와 같은 여러 계층의 드라이버로 구성되는 I/O 스택인데, 프로토콜 드라이버가 어레이 드라이버 아래에 위치하며, 어레이 드라이버는 논리 볼륨 드라이버 아래에 위치될 수 있는 등이다.
그 후, 프로세싱 유닛(218)은 실행 가능한 프로그램(214)을 실행한다. 프로세싱 유닛(218)이 실행 가능한 프로그램(214)을 실행하므로, 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 실행 가능한 프로그램(214)에 나타나는 대로 고유하게 식별된 객체를 식별한다. 그 후, 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 객체 테이블(222)을 참조하여, 다른 객체를 참조하는 고유하게 식별된 객체가 객체 테이블(222)에서 참조되는지를 판단한다. 객체 테이블(222)은 다른 고유하게 식별된 객체를 참조하는 고유하게 식별된 객체의 2차원 데이터 구조이다. 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 고유하게 식별된 객체가 프로그램의 실행 동안에 마주침에 따라 객체 테이블(222)을 파퓰레이팅시킨다. 다른 객체를 참조하는 고유하게 식별된 객체가 객체 테이블(222)에서 참조되지 않는 경우, 프로그래밍 가능한 객체 프로페치/식별자 모듈(220)은 고유하게 식별된 객체의 객체 식별자를 갖는 객체 테이블(222), 고유하게 식별된 객체에 의해 참조된 모든 객체 및 참조된 객체의 어드레스가 위치되는 고유하게 식별된 객체의 어드레스의 각 오프셋을 파퓰레이팅시킨다.
그 후, 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 참조된 객체가 다른 객체를 참조하는지를 판단한다. 참조된 객체가 다른 객체를 참조하는 경우, 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 참조된 객체의 객체 식별자를 갖는 객체 테이블(222), 참조된 객체에 의해 참조되는 모든 모듈 및 다른 참조된 객체의 어드레스가 위치되는 참조된 객체의 어드레스의 각 오프셋을 파퓰레이팅시킨다. 실행 가능한 프로그램(214)의 참조된 객체가 다른 객체를 참조하지 못하는 경우, 객체 테이블(222)에는 정보가 파퓰레이팅되지 않는데, 객체 테이블(222)만이 다른 객체를 참조하는 객체에 관한 객체 정보를 포함하여 다른 객체에 의해 참조되는 객체를 프리페칭함으로써 시스템의 성능을 개선하기 때문이다.
다른 객체를 참조하는 고유하게 식별된 객체가 객체 테이블(222)에 존재하는 경우, 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 객체 테이블(222)의 식별된 오프셋을 사용하여 고유하게 식별된 객체로부터 어드레스를 획득함으로써 메인 메모리(224)의 참조된 객체를 프리페칭한다. 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 프리페칭된 객체를 캐시(226)로 위치시킨다. 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)은 객체 테이블(222)에서 식별된 오프셋을 사용하여 각 참조된 객체의 고유하게 식별된 객체 내의 어드레스를 식별하고, 각 참조된 객체를 캐시(226)로 프리페칭한다.
도 3은 실시예에 따른 예시적 객체 관계를 도시하고 있다. 객체 관계(300)는 도 2의 실행 가능한 프로그램(214)과 같은 실행 가능한 프로그램 내에 존재할 수 있는 객체를 위한 것이다. 객체 관계(300)에서, 객체 A(302)는 2개의 다른 객체, 객체 B(304) 및 객체 C(306)를 참조한다. 도면에서 볼 수 있는 바와 같이, 객체 B(304)는 객체 D(308) 및 객체 E(310)도 참조한다. 또한, 객체 C(306)는 객체 F(312)를 참조한다.
실행 가능한 프로그램의 실행 동안, 프로그래밍 가능한 객체 프리페치/식별자 모듈이 객체 A(302)를 만나면, 객체 B(304) 및 객체 C(306)는 객체 A(302) 내의 오프셋을 사용하여 캐시로 프리페칭된다. 객체 B(304) 및 객체 C(306)를 프리페칭하면, 객체 D(308), 객체 E(310) 및 객체 F(312) 또한 객체 B(304) 및 객체 C(306) 내의 오프셋을 사용하여 캐시로 프리페칭된다.
도 4는 실시예에 따라 객체가 참조되는 예시적 실행 가능한 프로그램 코드의 일부를 도시하고 있다. 실행 가능한 프로그램 코드 부분(400)은 도 2의 실행 가능한 프로그램(214)과 같은 코드일 수 있다. 실행 가능한 프로그램 코드 부분(400)은 도 3의 객체 관계(300)를 나타내는 프로그램 코드이다. 실행 가능한 프로그램 코드 부분(400)에서, 객체 A(402)는 2개의 다른 객체, 객체 B(404) 및 객체 C(406)를 참조한다. 도면에서 볼 수 있는 바와 같이, 객체 B(404)는 객체 D(408) 및 객체 E(410)도 참조한다. 또한, 객체 C(406)는 객체 F(412)를 참조한다.
객체 관계를 포착함으로써, 실행 가능한 프로그램 코드 부분(400)의 계층의 다른 객체가 효율적으로 프리페칭될 수 있다. 핵심은 프리페칭되는 객체가 공간적 장소를 갖지 않으며 객체 관계가 테이블에서 구성된다는 점이다. 전술한 바와 같이, 객체 유형마다 2차원 객체 테이블이 유지 관리된다. 객체 테이블은 고유하게 식별된 객체의 객체 식별자, 고유하게 식별된 객체에 의해 참조되는 모든 객체 및 참조된 객체의 어드레스가 위치되는 고유하게 식별된 객체의 어드레스의 각 오프셋과 같은 정보를 유지한다.
도 5는 실시예에 따른 객체 테이블의 예시적 논리 표현을 도시하고 있다. 객체 테이블(500)은 객체 식별자(502), 객체(504)의 오프셋 및 506으로 포인팅되는 객체를 포함한다. 객체 식별자(502)는 다른 객체를 참조하는 고유하게 식별된 객체의 식별자 또는 이름이다. 객체(504)의 오프셋은 다른 객체가 참조된 고유하게 식별된 객체 내의 어드레스이다. 506으로 포인팅된 객체는 고유하게 식별된 객체에 의해 참조되는 객체의 식별자이다. 객체 테이블(500)은, 예를 들어, LRU(least recently used) 방식, LFU(Least Frequency Used) 등으로 하드웨어로 유지될 수 있다. LRU 알고리즘은 최근에 가장 적게 사용된 아이템을 가장 먼저 폐기한다. LRU 알고리즘은 무엇이 언제 사용되었는지를 계속 추적할 것을 요구한다. LFU 알고리즘은 아이템이 얼마나 자주 필요한지를 카운트하고 가장 드물게 사용되는 아이템을 가장 먼저 폐기한다. 그러므로, 객체 테이블(500)의 대부분의 객체는 자주 참조되거나 사용되는 객체 유형을 참조할 것이다.
도 6은 실시예에 다른 예시적 객체 어드레싱 방안을 도시하고 있다. 객체 어드레싱 방안(600)에서, 객체 A(602)는 0 x 1000의 가상 어드레스(VA)를 갖는다. 도 5의 객체 테이블(500)와 같은 객체 테이블을 사용하여, 프로그래밍 가능한 객체 프리페치/식별자 모듈이 객체 A(602)를 만날 때 (VA + 0 x 10)가 객체 B(604)의 0 x 200 가상 어드레스(VB)를 포인팅하는 것을 실현할 것이고, 또한 (VA + 0 x 40)이 객체 C(606)의 0 x 4000 가상 어드레스를 포인팅는 것을 실현할 것이다. 프로그래밍 가능한 객체 프리페치/식별자 모듈은 객체 B(604)를 만나면, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 (VB + 0 x 80)이 객체 D(608) 0 x 8800 가상 어드레스(VD)를 포인팅하는 것을 실현할 것이고, 또한 (VB + 0 x 88)이 객체 E(610) 0 x 2000 가상 어드레스(VE)를 포인팅하는 것을 실현할 것이다. 따라서, 프로그래밍 가능한 객체 프리페치/식별자 모듈이 객체 C(606)를 만나면, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 (VC + 0 x 48)이 객체 F(612) 0 x 100 가상 어드레스(VF)를 포인팅하는 것을 실현할 것이다. 도 2의 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)과 같은 프로그래밍 가능한 객체 프리페치/식별자 모듈에 의한 객체의 식별자는 소프트웨어 스택 전체 계층을 통해 효율적으로 객체를 페칭(fetching)한다.
도 7은 실시예에 따른 데이터를 프리페칭하는 동작의 흐름도를 도시하고 있다. 전술한 바와 같이, 실시예는 데이터 대신에 객체라는 용어를 사용하는데, 객체는 프로그램의 기본 구축 블록으로서 사용되는 실행 시간 데이터 저장의 개별적 단위이기 때문이다. 동작이 시작하면, 도 2의 컴파일러(204)와 같은 컴파일러는 소스 코드(702)를 컴파일링한다(단계 702). 소스 코드의 컴파일링 동안, 컴파일러는 객체 식별자를 사용하여 코스 코드 내의 객체를 식별한다(단계 704). 그 후, 컴파일러는 고유 식별자 생성기를 사용하여 고유 식별자를 객체 식별자에 의해 식별되는 각 객체로 할당한다(단계 706). 그 후, 컴파일러는 고유하게 식별된 객체를 포함하는 객체 코드를 생성한다(단계 708).
도 2의 프로세싱 유닛(218)과 같은 프로세싱 유닛이 프로그램을 실행하라는 요청을 수신하면(단계 710), 도 2의 링커/로더 모듈(208)과 같은 링커/로더 모듈은 컴파일러에 의해 생성된 객체 코드의 고유하게 식별된 객체를 식별한다(단계 712). 그 후, 링커/로더 모듈은 추가 식별자를 고유하게 식별된 객체에 추가함으로써 고유하게 식별된 객체를 추가로 고유하게 식별한다(단계 714). 그 후, 링커/로더 모듈은 객체 코드를 어셈블링하고 메모리에 저장되는 단일 실행 가능한 프로그램으로 객체 코드 및 객체를 어셈블링한다(단계 716).
프로세싱 유닛은 실행 가능한 프로그램을 실행한다(단계 718). 프로세싱 유닛이 실행 가능한 프로그램을 실행하면, 도 2의 프로그래밍 가능한 객체 프리페치/식별자 모듈(220)과 같은 프로그래밍 가능한 객체 프리페치/식별자 모듈은 고유하게 식별된 객체를 실행 중인 프로그램에 나타나는 대로 식별한다(단계 720). 그 후, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 도 2의 객체 테이블(222)과 같은 객체 테이블을 참조한다(단계 722). 프로그래밍 가능한 객체 프리페치/식별자 모듈은 다른 객체를 참조하는 고유하게 식별된 객체가 객체 테이블에서 참조되는지를 판단한다(단계 724).
단계(724)에서 다른 객체를 참조하는 고유하게 식별된 객체가 객체 테이블에서 참조되지 않으면, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 고유하게 식별된 객체의 객체 식별자를 갖는 객체 테이블, 고유하게 식별된 객체의 의해 참조되는 모든 객체, 참조된 객체의 어드레스가 위치되는 고유하게 식별된 객체의 어드레스의 각 오프셋을 파퓰레이팅시킨다(단계 726). 그 후, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 참조된 객체가 다른 객체를 참조하는지를 판단한다(단계 728). 단계(728)에서, 참조된 객체가 다른 객체를 참조하면, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 참조된 객체의 객체 식별자를 갖는 객체 테이블, 참조된 객체에 의해 참조되는 모든 객체 및 다른 참조된 객체의 어드레스가 위치되는 참조된 객체의 어드레스의 각 오프셋을 파퓰레이팅시키며 동작은 그 후 단계(718)로 복귀한다. 단계(728)에서 객체 테이블의 참조된 객체가 다른 객체를 참조하지 못하면, 동작은 단계(718)로 복귀한다.
단계(724)로 복귀하여, 다른 객체를 참조하는 고유하게 식별된 객체가 객체 테이블에 존재하면, 프로그래밍 가능한 객체 프리페치/식별자 모듈은 객체 테이블(222)의 식별된 오프셋을 사용하여 고유하게 식별된 객체로부터 어드레스를 획득함으로써 메인 메모리의 객체로부터 참조된 객체를 프리페칭하고 프리페칭된 객체를 캐시로 배치하며(단계 732), 동작은 단계(718)로 복귀한다.
따라서, 실시예는 프로그래밍 가능한 객체 식별자를 사용하여 데이터를 프리페칭한다. 프로그램이 실행되면 객체 식별자가 그 프로그램의 첫 번째 객체에 관해 얻어진다. 룩업 동작이 데이터 구조상에서 수행되어 객체 식별자가 데이터 구조에 존재하는지를 판단한다. 객체 식별자에 의해 참조되는 참조된 객체 식별자는 데이터 구조에 존재하는 객체 식별자에 응답하여 가져온다. 참조된 객체 식별자와 관련되는 데이터는 메인 메모리로부터 캐시 메모리로 가져온다.
실시예는 전체적인 하드웨어 실시예, 전체적인 소프트웨어 실시예 또는 하드웨어와 소프트웨어 요소 모두를 포함하는 실시예의 형태를 취할 수 있다는 것을 인식해야 한다. 일 실시예에서, 실시예의 메커니즘은 소프트웨어로 구현되는데, 이 는 펌웨어, 상주(resident) 소프트웨어, 마이크로코드 등을 포함하며 이에 한정되지 않는다.
또한, 실시예는 컴퓨터 또는 임의의 인스트럭션 실행 시스템과의 접속을 위해 사용되는 프로그램 코드를 포함하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 이 설명을 위해, 컴퓨터-사용 가능 또는 컴퓨터-판독 가능한 매체는 인스트럭션 실행 시스템, 장치 또는 디바이스와의 접속을 위해 사용되는 프로그램을 포함, 저장, 통신, 전파 또는 전송할 수 있는 임의의 장치일 수 있다.
이 매체는 전자, 자기, 광, 전자기, 적외선 도는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 컴퓨터 판독 가능한 매체의 예는 반도체 또는 고체 상태 메모리, 자기 테이프, 제거 가능한 컴퓨터 디스켓, RAM(a random access memory), ROM(a read-only memory), 견고한 자기 디스크 및 광 디스크를 포함한다. 현재 광 디스크의 예는 CD-ROM(compact disk-read only memory), CD-R/W(compact disk-read/write) 및 DVD를 포함한다.
프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 프로세싱 시스템은 시스템 버스를 통해 메모리 소자에 직접 또는 간접적으로 연결되는 적어도 하나의 프로세서를 포함할 것이다. 메모리 소자는 프로그램 코드, 대용량 저장소자 및 캐시 메모리의 실제 실행 동안에 사용되는 로컬 메모리를 포함할 수 있으며, 이는 실행 중에 대용량 저장소자로부터 가져와야 하는 타임 코드의 수를 감소시키기 위해 적어도 일부의 프로그램 코드의 임시 저장을 제공한다.
입력/출력 또는 I/O 디바이스(키보드, 디스플레이, 포인팅 디바이스 등)는 직접적으로 또는 I/O 제어기를 개재함으로써 시스템에 연결될 수 있다. 또한, 네트워크 어댑터는 시스템에 연결되어 데이터 프로세싱 시스템으로 하여금 개재 사설 또는 공공 네트워크를 통해 다른 프로세싱 시스템 또는 원격 프린터 또는 저장 장치에 연결될 수 있게 한다. 모뎀, 케이블 모뎀 및 이더넷 카드는 네트워크 어댑터의 현재 이용 가능한 유형 중 단지 소수에 불과하다.
본 발명의 설명은 예시를 위해 제공되었으며, 배타적이거나 개시된 형태로 본 발명을 제한하도록 의도된 것이 아니다. 많은 변형 및 수정이 당업자에게 명백할 것이다. 본 발명의 원리와 실제 적용을 가장 잘 설명하고 당업자가 고려되는 특정 용도에 적합하도록 다양한 변형을 다양한 실시예에 적용할 수 있게끔 본 발명을 이해할 수 있도록 실시예를 선택하고 설명하였다.

Claims (10)

  1. 데이터 프로세싱 시스템에서, 캐시 메모리로 데이터를 프리페칭(prefetching)하는 방법으로서,
    상기 데이터 프로세싱 시스템이 프로그램을 실행하는 단계와,
    상기 프로그램이 실행됨에 따라 상기 데이터 프로세싱 시스템이 상기 프로그램 내의 다수의 객체들 중의 제 1 객체의 객체 식별자(an object identifier)를 획득하는 단계와,
    상기 데이터 프로세싱 시스템이 데이터 구조에 대한 제 1 룩업 연산을 수행하여 상기 객체 식별자가 상기 데이터 구조에 존재하는지를 판단하는 단계―상기 데이터 구조는 다른 고유 식별 객체들을 참조하는 고유 식별 객체들의 2차원 객체 테이블임―와,
    상기 객체 식별자가 상기 데이터 구조에 존재하면, 상기 데이터 프로세싱 시스템이 상기 제 1 객체의 상기 객체 식별자에 의해 참조되는 적어도 하나의 참조 객체의 적어도 하나의 참조 객체 식별자를 가져오는(retrieving) 단계와,
    상기 데이터 프로세싱 시스템이 상기 제 1 객체의 상기 객체 식별자와 상기 적어도 하나의 참조 객체의 상기 적어도 하나의 상기 참조 객체 식별자와 관련된 모든 데이터를 메인 메모리로부터 상기 캐시 메모리로 프리페칭하는 단계를 포함하는
    데이터 프리페칭 방법.
  2. 제 1 항에 있어서,
    상기 객체 식별자가 상기 데이터 구조에 나타나지 않으면, 상기 데이터 프로세싱 시스템이 상기 제 1 객체가 제 2 객체를 참조하는지를 판단하는 단계와,
    상기 제 1 객체가 상기 제 2 객체를 참조하면, 상기 데이터 프로세싱 시스템이, 제 1 객체 정보 및 제 2 객체 정보를 포함하도록 상기 데이터 구조를 파퓰레이팅시키는 단계(populating)를 더 포함하는
    데이터 프리페칭 방법.
  3. 제 2 항에 있어서,
    상기 데이터 프로세싱 시스템이 상기 제 2 객체가 제 3 객체를 참조하는지를 판단하는 단계와,
    상기 제 2 객체가 상기 제 3 객체를 참조하면, 상기 데이터 프로세싱 시스템이, 제 3 객체 정보를 포함하도록 상기 데이터 구조를 파퓰레이팅시키는 단계를 더 포함하는
    데이터 프리페칭 방법.
  4. 제 3 항에 있어서,
    상기 제 1 객체 정보는 상기 객체 식별자, 상기 제 2 객체에 대한 오프셋 및 제 2 객체 식별자 중 적어도 하나를 포함하며,
    상기 제 2 객체 정보는 제 2 객체 식별자, 상기 제 3 객체에 대한 오프셋 및 제 3 객체 식별자 중 적어도 하나를 포함하며,
    상기 제 3 객체 정보는 제 3 객체 식별자, 적어도 하나의 추가적인 참조 객체에 대한 오프셋 또는 적어도 하나의 추가적인 참조 객체 식별자 중 적어도 하나를 포함하는
    데이터 프리페칭 방법.
  5. 제 4 항에 있어서,
    상기 오프셋은 상기 제 2 객체의 어드레스가 참조되는 상기 제 1 객체 내의 장소를 식별하는
    데이터 프리페칭 방법.
  6. 제 1 항에 있어서,
    링커/로더 프로그램(a linker/loader program)은 상기 다수의 객체들 각각을 고유하게 식별하되, 상기 다수의 객체들 각각에 추가 식별자를 추가함으로써 상기 다수의 객체들 각각을 고유하게 식별하는
    데이터 프리페칭 방법.
  7. 컴퓨터 판독 가능한 프로그램을 수록한 컴퓨터 판독 가능한 기록 매체로서,
    상기 컴퓨터 판독 가능한 프로그램은 데이터 프로세싱 시스템에서 실행되면 상기 데이터 프로세싱 시스템으로 하여금
    프로그램을 실행하는 단계와,
    상기 프로그램이 실행됨에 따라 상기 프로그램 내의 다수의 객체들 중의 제 1 객체의 객체 식별자를 획득하는 단계와,
    데이터 구조에 대한 제 1 룩업 연산을 수행하여 상기 객체 식별자가 상기 데이터 구조에 존재하는지를 판단하는 단계―상기 데이터 구조는 다른 고유 식별 객체들을 참조하는 고유 식별 객체들의 2차원 객체 테이블임―와,
    상기 객체 식별자가 상기 데이터 구조에 존재하면, 상기 제 1 객체의 상기 객체 식별자에 의해 참조되는 적어도 하나의 참조 객체의 적어도 하나의 참조 객체 식별자를 가져오는 단계와,
    상기 제 1 객체의 상기 객체 식별자와 상기 적어도 하나의 참조 객체의 상기 적어도 하나의 상기 참조 객체 식별자와 관련된 모든 데이터를 메인 메모리로부터 캐시 메모리로 프리페칭하는 단계를 수행하도록 하는
    컴퓨터 판독 가능한 기록 매체.
  8. 프로세서와,
    상기 프로세서에 연결되는 메모리를 포함하는 시스템으로서,
    상기 메모리는,
    상기 프로세서에 의해 실행되면 상기 프로세서로 하여금
    프로그램을 실행하는 단계와,
    상기 프로그램이 실행됨에 따라 상기 프로그램 내의 다수의 객체들 중의 제 1 객체의 객체 식별자를 획득하는 단계와,
    데이터 구조에 대한 제 1 룩업 연산을 수행하여 상기 객체 식별자가 상기 데이터 구조에 존재하는지를 판단하는 단계―상기 데이터 구조는 다른 고유 식별 객체들을 참조하는 고유 식별 객체들의 2차원 객체 테이블임―와,
    상기 객체 식별자가 상기 데이터 구조에 존재하면, 상기 제 1 객체의 상기 객체 식별자에 의해 참조되는 적어도 하나의 참조 객체의 적어도 하나의 참조 객체 식별자를 가져오는 단계와,
    상기 제 1 객체의 상기 객체 식별자와 상기 적어도 하나의 참조 객체의 상기 적어도 하나의 상기 참조 객체 식별자와 관련된 모든 데이터를 메인 메모리로부터 캐시 메모리로 프리페칭하는 단계를 수행하도록 하는 인스트럭션을 포함하는
    데이터 프리페칭 시스템.
  9. 제 8 항에 있어서,
    상기 인스트럭션은 상기 프로세서로 하여금
    상기 객체 식별자가 상기 데이터 구조에 나타나지 않으면, 상기 제 1 객체가 제 2 객체를 참조하는지를 판단하는 단계와,
    상기 제 1 객체가 상기 제 2 객체를 참조하면, 제 1 객체 정보 및 제 2 객체 정보를 포함하도록 상기 데이터 구조를 파퓰레이팅시키는 단계를 더 수행하게 하는
    데이터 프리페칭 시스템.
  10. 제 9 항에 있어서,
    상기 인스트럭션은 상기 프로세서로 하여금
    상기 제 2 객체가 제 3 객체를 참조하는지를 판단하는 단계와,
    상기 제 2 객체가 상기 제 3 객체를 참조하면, 제 3 객체 정보를 포함하도록 상기 데이터 구조를 파퓰레이팅시키는 단계를 더 수행하게 하는
    데이터 프리페칭 시스템.
KR1020097014497A 2007-04-10 2008-04-10 프로그래밍 가능한 데이터 프리페칭 KR101159412B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/733,352 US7640400B2 (en) 2007-04-10 2007-04-10 Programmable data prefetching
US11/733,352 2007-04-10
PCT/EP2008/054327 WO2008122660A1 (en) 2007-04-10 2008-04-10 Programmable data prefetching

Publications (2)

Publication Number Publication Date
KR20090129395A KR20090129395A (ko) 2009-12-16
KR101159412B1 true KR101159412B1 (ko) 2012-07-10

Family

ID=39422701

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097014497A KR101159412B1 (ko) 2007-04-10 2008-04-10 프로그래밍 가능한 데이터 프리페칭

Country Status (5)

Country Link
US (1) US7640400B2 (ko)
JP (1) JP5255049B2 (ko)
KR (1) KR101159412B1 (ko)
CN (1) CN101652759B (ko)
WO (1) WO2008122660A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008225915A (ja) * 2007-03-13 2008-09-25 Fujitsu Ltd プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法
US8032714B2 (en) * 2007-09-28 2011-10-04 Aggregate Knowledge Inc. Methods and systems for caching data using behavioral event correlations
JP2014035431A (ja) * 2012-08-08 2014-02-24 Renesas Mobile Corp ボコーダ処理方法、半導体装置、及び電子装置
US10268586B2 (en) * 2015-12-08 2019-04-23 Via Alliance Semiconductor Co., Ltd. Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests
CN108073525B (zh) * 2016-11-08 2021-10-19 华为技术有限公司 预取数据的方法、装置和系统
US10860491B2 (en) * 2019-05-03 2020-12-08 Mediate Inc. Cache management method using object-oriented manner and associated microcontroller
US11687611B2 (en) * 2021-10-15 2023-06-27 Servicenow, Inc. Intermediate widget cache

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217231A1 (en) 2002-05-15 2003-11-20 Seidl Matthew L. Method and apparatus for prefetching objects into an object cache

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
US5822576A (en) * 1997-03-26 1998-10-13 International Business Machines Corporation Branch history table with branch pattern field
US6728726B1 (en) * 1999-03-05 2004-04-27 Microsoft Corporation Prefetching and caching persistent objects
US6560693B1 (en) * 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US6643743B1 (en) * 2000-03-31 2003-11-04 Intel Corporation Stream-down prefetching cache
US6662274B2 (en) * 2001-06-20 2003-12-09 Intel Corporation Method for using cache prefetch feature to improve garbage collection algorithm
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US7124253B1 (en) * 2004-02-18 2006-10-17 Sun Microsystems, Inc. Supporting directory-based cache coherence in an object-addressed memory hierarchy
CN100445944C (zh) * 2004-12-21 2008-12-24 三菱电机株式会社 控制电路以及控制方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217231A1 (en) 2002-05-15 2003-11-20 Seidl Matthew L. Method and apparatus for prefetching objects into an object cache

Also Published As

Publication number Publication date
KR20090129395A (ko) 2009-12-16
CN101652759B (zh) 2012-11-28
JP2010524106A (ja) 2010-07-15
WO2008122660A1 (en) 2008-10-16
US20080256302A1 (en) 2008-10-16
CN101652759A (zh) 2010-02-17
US7640400B2 (en) 2009-12-29
JP5255049B2 (ja) 2013-08-07

Similar Documents

Publication Publication Date Title
KR101159412B1 (ko) 프로그래밍 가능한 데이터 프리페칭
US8490065B2 (en) Method and apparatus for software-assisted data cache and prefetch control
US7516279B2 (en) Method using stream prefetching history to improve data prefetching performance.
US7472253B1 (en) System and method for managing table lookaside buffer performance
RU2483347C2 (ru) Установка, способ и система кэширования
US7543131B2 (en) Controlling an I/O MMU
JP4028875B2 (ja) メモリを管理するためのシステムおよび方法
US7571286B2 (en) Reduced memory traffic via detection and tracking of temporally silent stores
US11797678B2 (en) Memory scanning methods and apparatus
US6668307B1 (en) System and method for a software controlled cache
JP2017516228A (ja) 自己書き換えコードのハードウェアサポートを提供する方法及び装置
KR20200017364A (ko) PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정
US7549035B1 (en) System and method for reference and modification tracking
KR20160035545A (ko) 디스크립터 링 관리
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
KR100582340B1 (ko) 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체
US20110004869A1 (en) Program, apparatus, and method of optimizing a java object
US20180217938A1 (en) Software Controlled Cache Line Replacement within a Cache Segment
US11500774B2 (en) Virtual cache tag renaming for synonym handling
US8732442B2 (en) Method and system for hardware-based security of object references
US7546439B1 (en) System and method for managing copy-on-write faults and change-protection
Yang et al. CoPTA: Contiguous pattern speculating TLB architecture
Mudge et al. CoPTA: Contiguous Pattern Speculating TLB Architecture
CN115080464A (zh) 数据处理方法和数据处理装置
Chanet et al. Linux kernel compaction through cold code swapping

Legal Events

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

Payment date: 20150527

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170526

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180528

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 8