KR20150083770A - 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법 - Google Patents

연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20150083770A
KR20150083770A KR1020140156175A KR20140156175A KR20150083770A KR 20150083770 A KR20150083770 A KR 20150083770A KR 1020140156175 A KR1020140156175 A KR 1020140156175A KR 20140156175 A KR20140156175 A KR 20140156175A KR 20150083770 A KR20150083770 A KR 20150083770A
Authority
KR
South Korea
Prior art keywords
data
level
memory system
requests
cache
Prior art date
Application number
KR1020140156175A
Other languages
English (en)
Other versions
KR102398604B1 (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 KR20150083770A publication Critical patent/KR20150083770A/ko
Application granted granted Critical
Publication of KR102398604B1 publication Critical patent/KR102398604B1/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
    • 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
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache

Landscapes

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

Abstract

장치는 복수의 레벨들로 구성되고, 각각의 레벨에 데이터를 저장하는 메모리 시스템, 상기 메모리 시스템으로부터 검색될 데이터를 적어도 일부분의 가상 어드레스를 기반으로, 예측하는 캐시 프리-패쳐 및 상기 데이터의 상기 가상 어드레스를 상기 데이터의 물리적 어드레스로 변환하고, 상기 메모리 시스템의 복수의 레벨들 중 하나로부터 상기 데이터를 요청하는 프리-패치 스케줄러를 포함한다.

Description

연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법{APPARATUS FOR PRE-FETCH CHAINING AND OPERATION METHOD THEREOF}
본 발명은 연쇄 프리 패칭을 위한 장치에 관한 것으로, 좀 더 구체적으로 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법에 관한 것이다.
일반적으로 복수의 컴퓨터들 및 컴퓨터들에 의해 실행되는 프로그램들은 무한대의 고속 메모리를 제공하기 위해 버레이셔스 에피타이트(voracious appetite)를 포함한다. 불행히도, 메모리(특히, 고속 메모리)는 가격 및 다이(die) 영역 측면에서 일반적으로 고가이다. 무한한 메모리를 제공하기 위한 종래의 방법으로, 고속 메모리는 기억 장치 계층이거나, 계층들 또는 단계들 형식의 메모리들이다. 일반적으로, 줄로 배열된 메모리 시스템은 복수의 단계 메모리들을 포함하고, 복수의 단계 메모리들 각각의 레벨은 이전 단계의 메모리보다 조금씩 커진다.
일반적인 컴퓨터 메모리 계급은 세 가지 레벨들을 포함할 수 있다. 가장 빠르고 작은 메모리(종종 제1 레벨(L1) 캐시라 부른다.)는 프로세서와 가장 가깝고, SRAM(Static Random Access Memory)를 포함한다. 다음 계층 또는 레벨은 제2 레벨(L2) 캐시라고 한다. 그리고, 제2 레벨(L2) 캐시는 제1 레벨(L1) 캐시보다 느리다. 하지만, 제2 레벨(L2) 캐시는 제1 레벨(L1) 캐시보다 크다. 제3 레벨은 메인 메모리이고, 일반적으로 DRAM(Dynamic RAM)을 포함하고, 종종 메모리 모듈들 내부에 삽입된다. 그러나, 다른 시스템들은 더 많은 혹은, 더 적은 메모리 계층들을 포함할 수 있다. 또한, 몇몇 시스템들, 프로세서 레지스터들, 및 영구적 또는 반 영구적 저장 장치들은 메모리 시스템의 일부분으로 간주될 수 있다.
메모리 시스템은 일반적으로 이용 가능한 데이터를 모두 포함하는 느리지만 큰 계층(예를 들어, 메인 메모리, 등)을 이용한다. 제2 계층(예를 들어, L2 캐시 등)은 그 데이터의 서브-세트(sub-set)를 포함하고, 그것으로부터의 다음 계층(예를 들어, L1 캐시 등)은 데이터의 제2 계층 부분 집합의 제2 서브-세트를 포함한다. 빠른 계층에 포함된 모든 데이터는 느린 계층에 포함된다.
일반적으로, 캐시들은 지역성 원리(예를 들어, 잠정 구역성, 공간 구역성 등)를 기반으로 하여 포함하는 데이터의 서브-세트를 결정한다. 프로그램은 가장 최근에 접근했거나 가장 최근에 접근한 데이터의 다음 데이터를 접근하기를 바라는 것으로 가정된다. 예를 들어, 영상 재생 프로그램이 데이터에 접근한다면, 영상 재생기는 영화의 다음 몇 초 후의 영상에 접근하고자 할 것이다.
그러나 때때로, 프로그램은 가장 빠른 캐시(예를 들어, L1 캐시, 등)에 이용 가능하지 않은 데이터 조각을 요청할 수 있다. 이는 일반적으로 "캐시 미스"라고 알려져 있고, 다음 메모리 계층(예를 들어, L2 캐시)으로부터 데이터를 요청하기 위한 가장 빠른 캐시를 발생한다. 지연은, 캐시 미스가 발생했다고 판정 캐시 데이터를 검색하고, 상기 프로세서에 제공하여 발생되는 바와 같이 이는 프로세서 성능에 비용이 많이 든다. 때때로, 메모리의 다음 계층(예를 들어, L2 캐시, 등)로부터 요청한 데이터를 포함하지 않을 수 있고, 다음 계층(예를 들어, 메인 메모리, 등)으로부터 그것을 요청해야만 한다. 이것은 더 많은 지연을 발생한다.
본 발명의 목적은, 적어도 일부분의 명령에 따라, 메모리 시스템으로부터 액세스될 수 있는 데이터를 가상 어드레스를 기반으로 예측할 수 있는 장치 및 그것의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 장치는 복수의 레벨들로 구성되고, 각각의 레벨에 데이터를 저장하는 메모리 시스템, 상기 메모리 시스템으로부터 검색될 데이터를 적어도 일부분의 가상 어드레스를 기반으로, 예측하는 캐시 프리-패쳐 및 상기 데이터의 상기 가상 어드레스를 상기 데이터의 물리적 어드레스로 변환하고, 상기 메모리 시스템의 복수의 레벨들 중 하나로부터 상기 데이터를 요청하는 프리-패치 스케줄러를 포함한다.
실시 예로서, 상기 메모리 시스템은, 상기 메모리 시스템의 제1 레벨에 저장될 데이터에 대한 요청들을 저장하기 위한 제1 레벨 필 버퍼 및 상기 메모리 시스템의 제2 레벨에 저장될 데이터에 대한 요청들을 저장하기 위한 제2 레벨 필 버퍼를 포함하고, 상기 프리-패치 스케줄러로부터 데이터의 상기 제2 레벨 필 버퍼 내에 배치된 요청을 저장하도록 구성된 제2 레벨 프리-패치 요청 버퍼를 포함한다.
실시 예로서, 상기 프리-패치 스케줄러는, 시스템 리소스들의 사용 가능한 양을 포함하는 미리 정의된 표준 세트를 기반으로 하는 상기 메모리 시스템의 상기 복수의 레벨들 중 하나에 배치된 상기 데이터를 요청한다.
실시 예로서, 상기 캐시 프리-패쳐는 상기 메모리 시스템으로부터 검색될 데이터를 예측할 때 페이지 바운더리를 교차하고, 상기 시스템 리소스들의 사용 가능한 양을 포함하는 상기 미리 정의된 표준 세트는 제한된 메모리 영역으로부터 포함되지 않은 상기 데이터의 상기 물리적 어드레스에 대해 판단한다.
실시 예로서, 상기 프리-패치 스케줄러는, 상기 데이터의 상기 물리적 어드레스를 기반으로 하는 상기 메모리 시스템의 상기 복수의 레벨들 중 하나로부터 상기 데이터를 요청한다.
본 발명의 실시 예에 따른 장치의 동작 방법은 명령에 따라, 메모리 시스템으로부터 액세스될 것 같은 데이터의 적어도 일부분의 가상 어드레스를 기반으로 예측하는 단계, 프리-패치된 데이터를 저장하기 위한 상기 메모리 시스템의 레벨을 결정하고, 상기 프리-패치된 데이터는 명령에 따라 액세스될 것이라 예측되는 데이터를 포함하고, 상기 메모리 시스템의 복수의 레벨들로부터 선택하는 단계 및 상기 명령에 따라 상기 프리-패치된 데이터가 액세스되기 전에 상기 메모리 시스템의 상기 미리 정의된 레벨에 따라 저장될 상기 프리-패치된 데이터를 발생하는 단계를 포함한다.
실시 예로서, 상기 메모리 시스템의 미리 정의된 레벨은 상기 메모리 시스템의 제1 레벨 또는 상기 메모리 시스템의 제2 레벨을 포함하고, 상기 메모리 시스템의 상기 결정된 레벨로부터 저장될 상기 프리-패치된 데이터의 발생 단계는, 상기 결정된 레벨이 상기 메모리 시스템의 상기 제1 레벨을 포함하면, 상기 프리-패치된 데이터에 대한 데이터의 요청들을 상기 메모리 시스템의 상기 제1 레벨에 저장될 데이터를 위한 요청들을 저장하는 제1 레벨 필 버퍼에 삽입하는 단계, 및 상기 결정된 레벨이 상기 메모리 시스템의 상기 제2 레벨을 포함하면, 상기 프리-패치된 데이터에 대한 데이터의 요청들을 상기 메모리 시스템의 상기 제2 레벨에 저장될 데이터에 대한 상기 요청들을 저장하는 제2 레벨 필 버퍼로 삽입하는 단계를 포함한다.
실시 예로서, 상기 결정된 레벨이 상기 메모리 시스템의 상기 제2 레벨을 포함하면, 상기 메모리 시스템의 상기 결정된 레벨로부터 저장될 상기 프리-패치된 데이터의 발생 단계는 상기 제2 레벨 필 버퍼가 데이터에 대한 요청들을 저장하기 위한 용량을 포함하면, 상기 프리-패치된 데이터에 대한 데이터의 요청들을 상기 제2 레벨 필 버퍼에 삽입하고, 상기 제2 레벨 필 버퍼가 상기 데이터에 대한 상기 요청들을 저장하기 위한 용량을 포함하지 않으면, 상기 제2 레벨 필 버퍼가 데이터에 대한 추가적인 요청을 위한 용량을 포함할 때 상기 제2 레벨 필 버퍼에 위치할 수 있는 데이터에 대한 상기 요청들을 저장할 수 있는 제2 레벨 프리-패치 요청 버퍼에 상기 프리-패치된 데이터에 대한 데이터의 요청들을 삽입하는 단계를 포함한다.
실시 예로서, 상기 메모리 시스템의 결정된 레벨을 선택하는 단계는, 상기 메모리 시스템의 상기 제1 레벨과 관련된 제1 레벨 필 버퍼가 상기 프리-패치 데이터에 대한 추가적인 요청을 위한 용량을 포함하면, 상기 메모리 시스템의 제1 레벨을 선택하고, 상기 메모리 시스템의 제1 레벨과 관련된 제1 레벨 필 버퍼가 상기 프리-패치 데이터에 대한 추가적인 요청을 위한 용량을 포함하지 않으면, 상기 메모리 시스템의 제2 레벨을 선택한다.
실시 예로서, 상기 명령에 따라 액세스될 데이터를 예측하는 단계는 상기 프리-패치 데이터와 관련된 상기 가상 어드레스를 변환 색인 버퍼를 거쳐 물리 어드레스로 변환 및 상기 가상 어드레스를 변환은 변환 색인 버퍼 입력을 프리-패칭한다.
본 발명의 실시 예에 따르면, 명령에 따라 액세스 및 예측된 데이터로 구성된 프리-패치된 데이터를 저장하기 위해 메모리 시스템의 메모리 시스템의 복수의 레벨들 중 결정된 레벨을 선택하는 저장 장치, 동작 방법 및 그것을 포함하는 시스템을 제공한다. 이를 통해 장치의 효율이 향상된다.
도 1은 본 발명의 제1 실시 예에 따른 시스템을 보여주는 블록도이다.
도 2는 본 발명의 제2 실시 예에 따른 시스템을 보여주는 따른 블록도이다.
도 3은 본 발명의 실시 예에 의한 기술을 따른 순서도이다.
도 4는 본 발명의 실시 예에 따라 형성된 장치들을 포함할 수 있는 정보 처리 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 제1 실시 예에 따른 시스템(100)을 보여주는 블록도이다.
다양한 실시 예들로서, 시스템(100)은 세-계층의 메모리 시스템(106)(예를 들어, L1 캐시(116), L2 캐시(126), 및 메인 메모리(136) 등)을 포함할 수 있다. 상술된 설명은 개시된 주제를 이해하기 위한 하나의 실례가 되는 보기이므로 이에 한정되지 않는다.
다양한 실시 예들로서, 시스템(100)은 하나 이상의 명령들(190)의 실행 또는 처리할 수 있다. 이러한 실시 예로서, 이러한 명령들(190)은 프로그램, 또는 어플리케이션(또는 일 부분)을 형성할 수 있다. 다양한 실시 예에서, 실행부(102)는 프로세서 또는 다른 더 큰 컴퓨터 요소에 포함될 수 있다. 다양한 실시 예들로서, 이러한 명령들(190)은 때때로 메모리 시스템(106, 예를 들어, L1 캐시(116), L2 캐시(126), 및 메인 메모리(136), 등) 내에 저장된 데이터에 접근(예를 들어, 읽기, 쓰기 등)할 수 있다.
이러한 실시 예로서, 명령들(190)이 데이터에 접근할 때, 그들은 메모리 시스템(106)의 첫 번째 또는 가장 빠른 계층인 L1 캐시(116)로부터 첫 번째 데이터 요청을 할 수 있다. 이러한 일 실시 예로서, L1 캐시(116)는 데이터(118)의 서브-세트를 저장할 수 있다. 만약, 요청된 데이터가 데이터(118)에 포함된다면, L1 캐시(116)는 데이터를 공급할 수 있고(또는, 쓰기 명령(190)에 관여하는 저장된 데이터(118)를 업 데이트), 실행부(102)는 문제없이 진행할 수 있다.
그러나, 다양한 실시 예에서, 만약 요청된 데이터가 데이터(118)에 포함되어있지 않다면, L1 캐시(116)는 차례차례 L2 캐시(126, 예를 들어, 메모리 시스템(106)의 다음 레벨 또는 계층)로부터 데이터를 요청할 수 있다. 이것은 실행부(102)의 진행 능력에 악영향 또는 원치 않은 영향을 미칠 수 있다. 그리고, 이것은 명령들(190)의 처리를 지연하거나 멈추는 실행부(102)를 발생할 수 있다.
일반적으로, L1 캐시(116)는 L2 캐시(126)로부터 한번에 한 조각의 데이터만을 요청할 수 있다. 그러나, 예시로든 실시 예에서, 시스템(100)은 여기에 설명된 L1 캐시(116)의 도움으로써 또는 그 대신 만들어진 L2 캐시(126)를 위한 데이터 요청들(198)의 대기로 구성된 L1 필 버퍼(L1 fill buffer, 114)를 포함할 수 있다. 이러한 실시 예로서, 캐시 미스(miss)를 발생시킨 데이터의 수행을 기다리는 동안, L1 캐시(116)는 실행부(102)로부터 추가적인 데이터 요청을 수행할 수 있다.
비슷하게, L2 캐시(126)는 데이터의 서브-세트(sub-set)(128)를 저장할 수 있다. 만약 캐시 미스 데이터가 데이터(128)에 포함된다면, 데이터는 비교적 당장 L1 캐시(116)로 공급될 수 있다. 만약 그렇지 않다면, L2 캐시(126) 레벨에서, 다른 캐시 미스가 발생할 수 있다. L2 캐시(126)는 메인 메모리(136) (또는 메모리 시스템(106) 내부의 다음 계층)로부터 누락된 데이터를 요청할 수 있고, 메인 메모리(136)에 저장된 데이터(138)는 데이터를 가질 것으로 예상된다.
다양한 실시 예로서, 메인 메모리(136)는 데이터(138) 내에 오직 서브-세트 데이터를 저장할 수 있고, 가능한 데이터의 전부는 기억 매체, 다른 반영구 메모리 장치, 또는 영구 메모리 장치(예를 들어, 하드 드라이브(hard drive), 솔리드 스테이트 디바이스(solid state device)(광 디스크 등)에 저장될 수 있다. 하지만, 이것은 도시되지 않는다. 이는 상술된 내용을 이해하기 위한 몇몇 예시이고, 본 발명을 제한하지 않는다.
캐시 미스들은 일반적으로 바람직하지 않게 여겨진다. 예시된 실시 예로서, 시스템(100)은 명령들(190)로부터 요청될 가능성이 있는 데이터를 예측하고, 메모리 시스템 내에 쉽게 사용 가능하게 하기 위해 예측된 데이터를 발행하는 프리-패치부(pre-fetch unit, 104)를 포함할 수 있다. 예시된 실시 예로서, 프리-패치부(104) 명령들(190)로부터 직접적으로 발행된 캐시 미스들의 수를 줄일 수 있다.
이러한 일 실시 예로서, 데이터를 필요로 하는(또는 필요로 한다고 예상되는) 명령(190)의 수행 전에 데이터(192)를 요청하여, 캐시 미스는 데이터(192)를 필요로 하는 명령(190)의 시간으로부터 해결될 수 있는 데이터(192)의 요청으로부터 발생된다. 이러한 일 실시 예로서, 실행부(102)는 캐시 미스의 발생을 인지하지 못할 수도 있고, 정지되거나, 역영향으로 명령들(190)의 실행을 가질 수 없다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
예시된 실시 예로서, 프리-패치부(104)는 캐시 프리-패쳐(cache pre-fetcher)(142)를 포함할 수 있다. 이러한 실시 예에서, 캐시 프리-패쳐(142)는 명령들(190)에 의해 요구될 가능성이 있는 데이터(192)를 예측하도록 구성될 수 있다(예를 들어, 잠정 및/또는 공간 구역성을 거쳐서). 다양한 실시 예들로서, 이러한 예측은 데이터(192)와 관련된 가상 어드레스(194)에 적어도 부분적으로 기초할 수 있다.
다양한 실시 예들로서, 캐시 프리-패쳐(142)는 명령들(190)과 관련된 가상 어드레스들(194)을 수신하도록 구성될 수 있다. 전통적으로, 프리-패쳐는 4 키로 바이트(kilobytes)(KB) 사이즈의 메모리 페이지들 내부에 자주 그룹화되는 물리적 어드레스들(196)을 사용하여 작동할 수 있다. 이러한 실시 예에서, 프리-패치부는 물리적 어드레스(196)가 이러한 페이지 바운더리(page boundary)를 교차하거나 초과할 때, 그것의 예측들을 리-트레인(re-train) 또는 재-평가해야 할 것이다.
나아가서, 물리적 어드레스들(196) 자주 인접하지 않고, 서로 바로 옆에 위치하지 않을 수 있다. 이 경우에, 공간 구역성 이론들은 적용되지 않을 수 있다. 반대로, 다양한 실시 예들로서, 가상 어드레스들(194) 페이지 바운더리들을 활용할 수 없고, 그들의 본질로부터, 다음 어드레스가 예측 가능하도록, 데이터의 지속적인 흐름 속에서 그룹 짓거나 인접할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
예시된 실시 예로서, 캐시 프리-패쳐(142)는 가상 어드레스들(194)을 이용할 수 있다. 이러한 일 실시 예로서, 프리-패치부(104)의 내부 구조들은 대표적인 또는 시스템 메모리 페이지(예를 들어, 4KB, 32KB 등)로 부터 경험된 것보다 더 큰 어드레스 차이를 처리하도록 확장될 수 있다. 이러한 실시 예로서, 프리-패치부(104)는 메모리 페이지보다 큰 어드레스 공간을 포함 또는 수용할 수 있다. 이러한 실시 예로서, 이런 넓은 구조들은 넓은 어드레스 공간, 더 큰 트레이닝 테이블들(training tables), 더 큰 확인 구조들 등을 포함할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
그러나, 메모리 시스템(106)은 여전히 물리적 어드레스들(196)을 사용하여 동작할 수 있다. 이러한 실시 예로서, 프리-패치부(104)는 변형 요청(152)을 변환 색인 버퍼(translation look-aside buffer)(이하: TLB)(110)로 전송할 수 있다. 다양한 실시 예들로서, 변형 요청(152)은 가상 어드레스(194)(프리-패치부(104)에서 이용되는)를 물리적 어드레스(196)(메모리 시스템(106)에서 사용되는)로 변형하기 위한 요청을 포함할 수 있다.
다양한 실시 예들로서, 시스템(100)은 TLB(110)를 포함할 수 있다. 이러한 실시 예에서, TLB(110)는 가상 어드레스(194)를 물리적 어드레스(196)로 변형 또는 전환하기 위해 구성될 수 있다. 다양한 실시 예들로서, TLB(110)는 어드레스 테이블(address table, 112)을 포함할 수 있다. 다양한 실시 예들로서, 어드레스 테이블(112)은 검색 키로서 가상 어드레스를 사용 및 검색 결과로서 물리적 어드레스를 반환하기 위한 연상 기억 장치(CAM)를 포함할 수 있다. 다양한 실시 예들로서, 변환 요청(152) 및 변환 요청을 거친(154) 응답에서, TLB(110)는 가상 어드레스(194)와 관련된 물리적 어드레스(196)를 반환할 수 있다.
몇몇 예시들로서, 어드레스 테이블(112)은 요청된 가상 어드레스(194)를 포함하지 않을 수 있다. 몇몇 예시들로서, 이런 TLB 미스는 TLB 리로드(reload)에 의해 야기될 수 있다. 다양한 실시 예들로서, TLB 리로드는 어드레스 테이블(112)에 입력되는 새로운 가상 주소에서 물리적 주소로의 매핑들을 포함할 수 있다. 이러한 일 실시 예에서, 프리-패치부(104)는 메모리 시스템(106)의 다양한 계층들 내부의 프리-패치 데이터뿐만 아니라, 어드레스 테이블(112) 내부의 프리-패치 입력들(예를 들어, 가상 어드레스/물리 어드레스 페어링들(pairings) 등)을 위한 TLB(110)을 야기할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
다양한 실시 예들로서, 프리-패치부(104)는 물리 어드레스 체커(checker)(143)를 포함할 수 있다. 이러한 일 실시 예에서, 물리적 어드레스 체커(143)는 프리-패치 데이터(192)와 관련된 물리적 어드레스(196)가 유효한지에 대한 결정을 하도록 구성될 수 있다. 예를 들어, 물리적 어드레스(196)는 메모리의 무효하거나 보호된 부분(예를 들어, 메모리 맵트(mapped) 입출력(I/O) 영역 등)을 초래할 수 있다. 이러한 일 실시 예에서, 프리-패치 데이터(192)와 관련된 물리적 어드레스(196)가 무효하다면, 프리-패치부(104)는 데이터(192)의 검색을 요청하지 않을 수 있다. 반대로, 일 실시 예로서, 프리-패치 데이터(192)와 관련된 물리 어드레스(196)가 유효하면, 프리-패치부(104)는 데이터(192)의 프리-패칭 또는 요청 과정을 수행할 수 있다.
몇몇 실시 예로서, 프리-패치부(104)는 프리-패치 스케줄러(pre-fetch scheduler)(144)를 포함할 수 있다. 다양한 실시 예로서, 프리-패치 스케줄러(144)는 메모리 시스템(106)의 하나 이상의 계층들로부터 데이터(192)를 요청하도록 구성될 수 있다. 예시된 실시 예로서, 프리-패치 스케줄러(144)는 메모리 시스템(106)의 오직 두 계층으로부터의 데이터 요청을 보여준다. 그러나, 프리-패치 스케줄러(144)의 다른 실시 예들은 두 개의 계층보다 더 많은 계층으로부터 데이터(192)를 요청할 수 있다. 나아가, 다양한 실시 예들로부터, 메모리 시스템(106)은 도시된 세 개의 계층들(예를 들어, L0 캐시, L3 캐시 등)보다 더 많은 계층들을 포함할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
다양한 실시 예들로서, 프리-패치 스케줄러(144)는 하나 이상의 시스템 리소스들(예를 들어 메모리 시스템(106), 버스 사용, 프로세서(processor) 사용 등)을 모니터 하기 위해 구성된 리소스 모니터(resource monitor)(146)를 포함할 수 있다. 이러한 일 실시 예에서, 사용 또는 사용될 것으로 예상되는 하나 이상의 리소스들의 상태 또는 양을 기반으로, 프리-패치 스케줄러(144)는 메모리 시스템(106)의 하나 또는 또 다른 계층들로부터 데이터(192)를 요청할 수 있다. 다양한 실시 예들로서, 미리 정의된 규칙이나 기준의 세트(set)는 데이터(192)에 대한 데이터 요청(198)를 보내기 위한 단계를 결정하는데 이용될 수 있다.
예시된 실시 예로서, 시스템(100)은 데이터를 L1 캐시(116)로 프리-패치하는 것을 더 선호할 수 있다. 이러한 일 실시 예에서, 리소스 모니터(146)는 현재 L1 필 버퍼(114) 내의 데이터 요청들(198)의 수 또는 레벨을 모니터할 수 있다. L1 필 버퍼(114)가 추가적인 데이터 요청들(198)을 위한 공간을 가지고 있다면, 프리-패치부(104)는 추가적인 필(fill) 요청(198) L1 필 버퍼(114) 내부로 삽입 또는 추가할 수 있다. 이러한 일 실시 예로서, 상기된 L1 필 버퍼(114)는 L2 캐시(126)로부터 데이터(192)를 요청할 수 있고, L1 캐시(116)에 위치한 요청된 데이터(192)를 야기할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
반대로, L1 필 버퍼(114)가 추가적인 데이터 요청들(198)을 위한 공간을 가지고 있지 않다면, 프리-패치부(104)는 추가적이 필 요청(198)을 L2 필 버퍼(124) 내로 삽입 또는 추가할 수 있다. 상술된 다양한 실시 예들로서, L2 필 버퍼(124)는 메인 메모리(136)로부터 데이터(192)를 요청할 수 있고, L2 캐시(126)에 위치한 요청된 데이터(192)를 야기할 수 있다.
L1 필 버퍼(114)와 L2 필 버퍼(124) 사이의 선택에 대해 상술된 예시는 여유 용량에 기반하고, 또는 데이터 요청들(198)의 수 또는 레벨은 미리 정의된 규칙이나 기준의 세트는 데이터 요청(198)을 보내기 위한 단계를 결정하는데 이용되도록 L1 필 버퍼(114)는 구성될 수 있다. 이러한 일 실시 예로서, 기준은 현재 L1 필 버퍼(114) 내의 데이터 요청들(198)의 레벨(전체, 전체의 80%, 2 또는 그 이상의 사용 가능한 요청 항목들 또는 슬롯들(slots), 등)을 포함할 수 있고, L1 필 버퍼(114)의 시스템 리소스를 모니터할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
다양한 다른 실시 예들로서, 기준 또는 규칙들은 하나 또는 그 이상을 포함할 수 있다. 예를 들어: 필 버퍼 각각의 서비스들에 대한 버스에서의 혼잡량, 각각의 캐시들로부터 쓰이고 있는 포트(ports)의 양(예를 들어, L1 캐시(116), L2 캐시(126) 등) 특정 캐시를 위한 캐시 라인(line) 이용 비율(예를 들어, L1 캐시(116), 등), 캐시 가간섭성 프로토콜 내의 데이터의 상태(예를 들어, 데이터가 또 다른 프로세서 또는 실행부를 소유하는가? 등). 몇몇 예시들로서, 기준 또는 미리 정의된 규칙들은 시스템의 하나 이상의 특징들을 최적화하거나 균형을 유지하기 위해 시도할 수 있다. 예를 들어, 캐시들의 효율, 레이턴시들(latencies)의 최소화, 멀티-프로세서(multi-processor)의 가간섭성 이슈들(issues) 방지, 캐시 트래싱(trashing) 감소등을 시도할 수 있다.
다양한 실시 예들로서, 규칙에 대한 답변에 따라, 하나 또는 다른 하나의 데이터 프리-패치에 더 또는 덜 바람직할 수 있다. 예를 들어, 버스 혼잡의 최소한의 양과 함께 데이터를 계층 내부에 프리-패치하는 것이 바람직할 수 있다. 다른 예로서, 만약 이전에 프리-패치된 다른 조각에 의해 첫 번째 계층에 데이터 프리-패칭이 되어있고, 아직 첫 번째 계층으로부터 출력되기 위한 사용되지 않은 데이터가 있다면, 데이터는 두 번째 계층에 프리-패치되는 것이 바람직할 수 있다. 또 다른 예를 들어, 하나의 프로세서로부터 독점적으로 소유되는 계층 대신에 복수의 프로세스들 사이에 공유되는 계층에 데이터를 프리-패치하는 것이 바람직할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
예시된 실시 예로서, 시스템(100)은 L2 프리-패치 요청 버퍼(122)를 포함할 수 있다. 다양한 실시 예들로서, L2-프리 패치 요청 버퍼(122)는 프리-패치부(104)로부터 L2 필 버퍼(124)의 내부로의 큐(queue) 데이터 요청들(198)로 구성될 수 있다. 이러한 일 실시 예에서, L2 프리-패치 요청 버퍼(122)는 L2 필 버퍼(124)를 위한 추가적인 수용 또는 깊이를 제공할 수 있다. 이러한 일 실시 예로서, 데이터 요청들(198)은 L2 프리-패치 요청 버퍼(122)로 입력될 수 있고, 그 다음 차례로, L2 필 버퍼(124)로 배치될 수 있다. 다른 실시 예로서, 만약 L2 필 버퍼(124)가 수용력을 갖는다면, L2 프리-패치 요청 버퍼(122)는 생략되고 데이터 요청들(198)은 곧바로 L2 필 버퍼(124) 내로 입력될 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
다양한 실시 예들로서, 리소스 모니터(146) 또는 프리-패치부(104)는 프리-패치 데이터(192)가 L1 캐시(116) 또는 L2 캐시(126) 둘 중 하나에 이미 존재하는지를 판단하기 위한 구성을 포함할 수 있다. 일 실시 예로서, 데이터(192)가 L1 캐시(116)의 데이터(118) 내에 이미 포함되어 있다면, 프리-패치부(104)는 데이터(192)를 위한 데이터 요청(198)을 발행하지 않을 수 있다.
다른 실시 예로서, 데이터(192)가 L1 캐시(116)의 데이터(118) 내에 포함되어있지 않지만, L2 캐시(126)에 포함되어 있다면, L1 필 버퍼(114)에 현재 빈 공간이 존재하지 않더라도, 프리-패치부(104)는 L1 캐시(116)에만 데이터 요청(198)을 발생할 수 있다(L1 필 버퍼(114)를 거쳐서). 이러한 일 실시 예로서, L2 캐시(126)는 이미 데이터(192)를 포함하므로, 프리-패치부(104)는 L2 캐시(126)에 데이터 요청(198)을 발행하지 않을 수 있다(L2 필 버퍼(124)를 거쳐서). 이러한 일 실시 예로서, 프리-패치부(104)는 지연되거나 L1 필 버퍼(114)가 데이터 요청(198)을 위한 수용력을 가질 수 있을 때까지 대기하도록 구성될 수 있다. 다양한 실시 예들로서, 이것은 L1 필 버퍼(114) 내부의 수용력을 위해 대기하는 동안 L2 캐시(126)에 발행되는(L2 필 버퍼(124)를 거쳐서) 다른 데이터 요청들(198)(기타 데이터(192)를 위한)의 허용을 포함할 수 있다.
또 다른 실시 예로서, 데이터(192)가 L1 캐시(116)의 데이터(118) 또는 L2 캐시(126)의 데이터(128) 모두에 포함되지 않으면, 프리-패치부(104)는 오직 L2 캐시(126)에만 데이터 요청(198)을 발행할 수 있다(L2 필 버퍼(124) 또는 L2 프리-패치 요청 버퍼(122)를 거쳐서). 이러한 일 실시 예에서, L1 필 버퍼(114)를 거친 데이터 요청(198)은 L2 캐시(126) 내의 캐시 미스를 야기할 수 있다. 이러한 L2 캐시 미스는 L2 필 버퍼(124)에 자신의 데이터 요청(198)을 기입하도록 하는 노멀(normal) L2 캐시 메커니즘(mechanism)을 야기할 수 있다. 이는 메인 메모리(136)로부터 데이터(192) 검색의 동일한 효과를 가질 수 있지만(또는 메인 메모리(136)의 네 번째 또는 그보다 높은 계층 내의 메모리 시스템(106)의 다음 계층), 추가적인 지연은 캐시 미스가 진행되는 L1 캐시에서 발생할 수 있다.
예시된 실시 예로서, 프리-패치부(104)로부터 L2 필 버퍼(124)(또는 L2 프리-패치 요청 버퍼(122)에 직접적으로 데이터 요청(198)을 발행함으로써, 데이터 요청(198)은 더 빠르게 수행될 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
도 2는 본 발명의 제2 실시 예에 따른 시스템(200)을 보여주는 따른 블록도이다.
다양한 실시 예들로서, 시스템(200)은 네-계층의 메모리 시스템(206)을 포함할 수 있다(예를 들어, L1 캐시(116), L2 캐시(126), L3 캐시(236) 및 메인 메모리(136), 등). 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
예시된 실시 예로서, 프리-패치부(204)는 메모리 시스템(206)의 세 계층들의 하나로부터 프리-패치 데이터(192)를 요청하도록 구성될 수 있다. 이러한 일 실시 예로서, 프리-패치부(204)는 데이터 요청(198)을 만들 때, 메모리 시스템(206)의 네 계층들 또는 레벨들의 세 가지 사이에서 선택하도록 구성된 프리-패치 스케줄러(244)를 포함할 수 있다. 일 실시 예로서, 프리-패치 스케줄러(244)는 더 복잡한 메모리 시스템(206)(도 1의 세 줄로 배열된 메모리 시스템(106)과 비교하여)의 시스템 리소스 레벨을 모니터하기 위해 구성된 리소스 모니터(246)를 포함할 수 있다. 예를 들어, 리소스 모니터(246)는 L2 필 버퍼(124)의 유효성에 L1 필 버퍼(114)로부터 공급되는 유효성을 더하여 모니터하도록 구성될 수 있다.
이러한 일 실시 예로서, 만약, L1 필 버퍼(114) 및 L2 필 버퍼(124) 둘 다 빈 공간이 없다면, 데이터 요청(198)은 L3 필 버퍼(224)를 향해 만들어질 수 있다. 다른 실시 예로서, 프리-패치부(204)는 현재 데이터(192)를 저장하고 있는 캐시 레벨 또는 계측의 적어도 일부분에 기반하여 데이터 요청(198)을 수신할 캐시 레벨 및 계측을 결정할 수 있다. 예를 들어, L1 캐시(116) 또는 L2 캐시(126) 둘 다 원하던 프리-패치 데이터(192)를 포함하지 않는다면, 데이터 요청(198)은 L3 캐시(236)를 향해 생성될 수 있다(L2 필 버퍼(124)를 거쳐서). 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
다양한 실시 예들로서, L2 프리-패치 요청 버퍼(122)와 관련된 도 1에 설명된 내용과 유사하게, L3 프리-패치 요청 버퍼(222)는 L3 필 버퍼(224)의 효과적인 수용력의 증대를 위해 이용될 수 있다. 다양한 실시 예들로서, 시스템(200)과 유사한 시스템은 L3 프리-패치 요청 버퍼(222)에 더하여 L2 프리-패치 요청 버퍼(도 2에 미도시)를 포함할 수 있다. 다른 실시 예로서, L3 프리-패치 요청 버퍼(222)는 시스템에 포함되지 않을 수 있다. 또 다른 실시 예로서, L3 프리-패치 요청 버퍼(222)는 포함되지 않지만, L2 프리-패치 요청 버퍼는 포함될 수 있다. 이는 다양한 필 버퍼들의 예상 사용법에 달려있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
예시된 실시 예로서, 메모리 시스템(206)은 예를 들어 L1 필 버퍼(114), L2 필 버퍼(124) 및 L3 필 버퍼(224)와 같은 다양한 필 버퍼들을 포함할 수 있음을 보여준다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
예시된 실시 예로서, 프리-패치 스케줄러(244)는 가상 어드레스(194)를 물리적 어드레스(196)로 변환하도록 구성될 수 있다. 다양한 실시 예들로서, 프리-패치 스케줄러(244)는 상술된 TLB(110)의 추가와 함께 이것을 완수할 수 있다. 이러한 일 실시 예에서, 캐시 프리-패치(242)는 프리-패치된 데이터(192)를 예측하도록 구성될 수 있고, 가상 어드레스들(194)를 기반으로 수행할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
도 3은 본 발명의 실시 예에 의한 기술을 따른 순서도이다.
다양한 실시 예들로서, 테크닉(technique, 300)은 도1 내지 도 3과 같은 시스템들로부터 생성되거나 사용될 수 있다. 다만, 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
일 실시 예로서, 상술한 바와 같이, 블록(302)은 명령에 따른, 메모리 시스템으로부터, 액세스될 수 있는 데이터의 적어도 일부분의 가상 어드레스를 기반으로 만들어질 수 있는 예측에 대해 설명한다. 다양한 실시 예들로서, 상술한 바와 같이, 명령에 따라 액세스될 가능성이 있는 예측 데이터는 데이터를 예측할 때, 페이지 바운더리의 교차점을 포함할 수 있다. 다른 실시 예에서, 상술된 바와 같이, 명령에 따라 액세스될 가능성이 있는 예측 데이터는 프리-패치 데이터와 관련된 가상 어드레스를 물리 어드레스로의 변환 및 제한된 메모리 영역으로부터 구성되지 않은 물리 어드레스의 결정을 포함할 수 있다.
또 다른 실시 예에서, 상술된 바와 같이, 명령에 따라 액세스될 가능성이 있는 예측 데이터는 변환 색인 버퍼를 통해서 프리-패치와 관련된 가상 어드레스를 물리 어드레스로의 변환을 포함할 수 있다. 이러한 일 실시 예에서, 상술된 바와 같이, 가상 어드레스의 변환은 변환 색인 버퍼 입력의 프리-패칭을 포함할 수 있다. 다양한 실시 예들을 통해, 상술된 바와 같이, 이 블록으로부터 설명된 하나 이상의 액션(들)(action(s))은 도 1 또는 도 2의 프리-패치부들, 또는 도 2의 프리-패치 스케줄러와 같은 도 1, 도 2 또는 도 4의 시스템들 또는 장치들에 의해 수행될 수 있다.
일 실시 예로서, 상술된 바와 같이, 블록(304)은 메모리 시스템의 복수의 레벨들로부터 선택될 수 있는 프리-패치된 데이터를 저장하기 위한 메모리 시스템의 레벨을 결정할 수 있음에 대해 설명한다. 몇몇 실시 예들로서, 상술된 바와 같이, 프리-패치된 데이터는 명령으로부터 액세스가 예측되는 데이터를 포함할 수 있다.
다양한 실시 예들로서, 상술된 바와 같이, 메모리 시스템의 결정된 레벨의 선택은 만약 메모리 시스템의 제1 레벨과 관련된 제1 레벨의 필 버퍼가 프리-패치 데이터를 위한 추가적인 요청을 위한 용량으로 구성된 메모리 시스템의 제1 레벨이 선택되거나, 만약 메모리 시스템의 제1 레벨과 관련된 제1 레벨의 필 버퍼가 프리-패치 데이터를 위한 추가적인 요청을 위한 용량을 구성되지 않은 메모리 시스템의 제2 레벨의 선택을 포함할 수 있다. 다양한 실시 예들로서, 상술된 바와 같이, 이 블록을 통해 설명되는 하나 이상의 액션(들)은 도 1의 프리-패치 스케줄러 또는 도 2의 프리-패치 스케줄러와 같은 도 1, 도 2 또는 도 4의 장치들 또는 시스템들을 통해 수행될 수 있다.
일 실시 예로서, 상술된 바와 같이, 블록(306)은 명령으로부터 프리-패치 데이터가 액세스되기 전에, 메모리 시스템의 결정된 레벨로부터 저장된 프리-패치된 데이터를 발생할 수 있음을 설명한다. 다양한 실시 예들로서, 메모리 시스템의 결정된 레벨은 메모리 시스템의 제1 레벨과 메모리 시스템의 제2 레벨을 동시에 포함할 수 있다. 이러한 일 실시 예에서, 메모리 시스템의 결정된 레벨로부터 저장된 프리-패치된 데이터의 원인은, 만약 결정된 레벨이 메모리 시스템의 제1 레벨로 구성된다면, 메모리 시스템의 제1 레벨 내에 저장된 데이터를 위한 저장 요청들로 구성된 제1 필 버퍼 내에 프리-패치된 데이터에 대한 데이터의 삽입 요청들을 포함할 수 있다.
더 나아가, 상술된 바와 같이, 결정된 레벨이 메모리 시스템의 제2 레벨로 구성된다면, 원인은 메모리 시스템의 제2 레벨 내에 저장된 데이터에 대한 요청들을 저장하도록 구성된 제2 레벨의 필 버퍼 내에 프리-패치된 데이터에 대한 데이터의 삽입 요청들을 포함할 수 있다. 이러한 일 실시 예로서, 상술된 바와 같이, 메모리 시스템의 결정된 레벨로부터 저장된 프리-패치된 데이터의 원인은, 만약 결정된 레벨이 메모리 시스템의 제2 레벨로 구성된다면, 제2 레벨의 필 버퍼 내에 프리-패치된 데이터에 대한 데이터의 삽입 요청들을 포함할 수 있고, 만약 제2 레벨 필 버퍼가 데이터에 대한 요청들을 저장하기 위한 용량으로 구성된다면, 또는 아니라면, 제2 레벨의 필 버퍼가 데이터에 대한 추가적인 요청을 위한 용량으로 구성될 때, 제2 레벨 필 버퍼 내에 위치된 데이터에 대한 요청들을 저장하도록 구성된 제2 레벨의 프리-패치 요청 버퍼 내에 프리-패치된 데이터를 위한 데이터를 위한 삽입 요청들을 포함할 수 있다.
다양한 실시 예들로서, 블록을 통해 설명된 하나 이상의 액션(들)은 도 1의 프리-패치 스케줄러 또는 도 2의 프리-패치 스케줄러와 같은 도 1, 도 2 또는 도 4의 장치들 또는 시스템들로부터 수행될 수 있다.
도 4는 본 발명의 실시 예에 따라 형성된 장치들을 포함할 수 있는 정보 처리 시스템(400)을 보여주는 블록도이다.
다른 실시 예로서, 정보 처리 시스템(400)의 정보는 개시된 주제의 원리들을 따른 하나 이상의 테크닉들을 실행 또는 이용할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(400)은 휴대용 컴퓨터, 사무용 컴퓨터, 워크스테이션(workstation), 서버(server), 블레이드 서버(blade server), 개인 휴대 정보 단말기, 스마트 폰(smartphone), 테블릿(tablet), 및 다른 적합한 컴퓨터들 또는 가상 기계 또는 가상 컴퓨팅(computing) 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들로서, 정보 처리 시스템(400)은 유저(user, 미도시)로부터 사용될 수 있다.
개시된 주제와 관련된 정보 처리 시스템(400)은 더 나아가 중앙 처리 유닛(CPU), 로직(logic), 또는 프로세서(410)를 포함할 수 있다. 몇몇 예시들로서, 프로세서(410)는 하나 이상의 기능 단위 블록들(FUBs) 또는 조합 로직 블록들(CLBs)(415)를 포함할 수 있다. 이러한 일 실시 예로서, 조합 로직 블록은 다양한 불 논리 동작들(Boolean logic operations)(예를 들어, NAND, NOR, NOT, XOR, 등) 안정 로직 장치들(예를 들어, 플립-플롭들(flip-flops), 래치들(latches) 등), 다른 로직 장치들 또는 이들을 결합한 장치들을 포함할 수 있다. 이러한 조합 논리 동작들은 바라던 결과를 성취하기 위한 입력 신호들을 처리하는 단순하거나 복잡한 방식을 포함할 수 있다.
동기 조합 논리 연산의 몇몇 예시들은 예시적인 실시 예를 설명하면서, 개시된 요지는 이에 한정되지 않고, 비동기 동작 또는 이들을 혼합한 것을 포함할 수 있다고 이해된다. 일 실시 예로서, 조합 논리 동작은 복수의 상보형 금속 산화 반도체(CMOS) 트랜지스터들로 구성될 수 있다. 다양한 실시 예들로서, 이러한 CMOS 트랜지스터들은 논리 동작을 수행하기 위한 게이트들로 구성될 수 있다. 다른 기술들은 사용될 수 있고, 개시된 요지의 스코프(scope) 내에 있다고 이해된다.
개시된 요지에 따른 정보 처리 시스템(400)은 휘발성 메모리(420)(예를 들어, 랜덤 액세스 메모리(Random Access Memory, RAM), 등)를 더 포함할 수 있다. 개시된 요지에 따른 정보 처리 시스템(400)은 비휘발성 메모리(430)(예를 들어, 하드 드라이브(hard drive), 광 메모리, NAND 또는 플래시 메모리(Flash memory), 등)를 더 포함할 수 있다. 몇몇 실시 예들로서, 휘발성 메모리(420), 비휘발성 메모리(430), 또는 그것의 부분들 또는 결합은 "저장 매체"라고 할 수 있다. 다양한 실시 예들로서, 휘발성 메모리(420) 및/또는 비휘발성 메모리(430)는 반 영구적이거나 영구적인 형태로 데이터를 저장할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(400)은 정보 처리 시스템(400)의 일부 및 통신 네트워크를 통해 통신할 수 있도록 구성된 하나 이상의 네트워크 인터페이스들(network interfaces)(440)을 포함할 수 있다. (와이-파이(Wi-Fi) 프로토콜의 예들은 포함할 수 있다, 하지만 이에 한정되지 않는다.
개시된 요지에 따른 정보 처리 시스템(400)은 사용자 인터페이스부(450)(예를 들어, 디스플레이 어댑터(display adapter, 햅틱 인터페이스(haptic interface), 인간 인터페이스 장치, 등)를 더 포함할 수 있다. 다양한 실시 예들로서, 사용자 인터페이스부(450)는 사용자로부터 입력을 받고/거나 사용자에게 출력을 공급할 수 있다. 다른 종류의 장치들은 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. (예를 들어, 사용자에게 공급되는 피드백(feedback)은 시각 피드백, 청각 피드백, 또는 촉각 피드백 및 사용자가 청각, 말, 또는 촉각과 같은 임의의 형태를 수신함으로써 감각적 피드백의 임의의 형태일 수 있다.)
다양한 실시 예들로서, 정보 처리 시스템(400)은 하나 이상의 다른 장치들 또는 하드웨어 요소들(460)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 장치, 등)을 포함할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
개시된 요지와 관련된 정보 처리 시스템(400)은 하나 이상의 시스템 버스들(system buses)(405)을 더 포함할 수 있다. 이러한 일 실시 예로서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 비휘발성 메모리(430), 네트워크 인터페이스(440), 사용자 인터페이스부(450) 및 하나 이상의 하드웨어 요소들(460)을 통신할 수 있게 연결할 수 있다. 프로세서(410)로부터 진행되는 데이터, 또는 비휘발성 메모리(430)의 외부로부터 입력되는 데이터는 비휘발성 메모리 장치(430) 또는 휘발성 메모리 장치(420)에 저장될 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(400)은 하나 이상의 소프트웨어(software) 요소들(470)을 실행 또는 포함할 수 있다. 몇몇 실시 예들로서, 소프트웨어 요소들(470)은 운영 체제(OS) 및/또는 어플리케이션(application)을 포함할 수 있다. 몇몇 실시 예들로서, OS는 어플리케이션을 위한 하나 이상의 서비스들 및 어플리케이션과 정보 처리 시스템(400)의 다양한 하드웨어 요소들(예를 들어, 프로세서(410), 네트워크 인터페이스(440), 등) 사이의 중개자로서 동작 또는 운영하도록 구성될 수 있다.
이러한 일 실시 예로서, 정보 처리 시스템(400)은 국부적으로 설치될 수 있고(예를 들어, 비휘발성 메모리(430) 내에), 프로세서(410)로부터 바로 실행되고, OS와 바로 상호작용하는 하나 이상의 네이티브 어플리케이션들(native applications)을 포함할 수 있다. 이러한 일 실시 예로서, 네이티브 어플리케이션들은 프로세서(410)에 의해 실행되는 코드 내에 오브젝트 코드(object code) 또는 변환 소스로 구성된 스크립트(script) 해석기(예를 들어, C셀(csh), 애플스크립트(AppleScript), 오토핫키(AutoHotkey), 등) 또는 가상 실행 기기(VM)(예를 들어, 자바 가상 머신(Java Virtual Machine), 마이크로소프트 공용 언어 런타임(Microsoft Common Language Runtime), 등)을 포함할 수 있다.
상술된 반도체 장치들은 다양한 패키징(packaging) 기술들을 사용하여 캡슐화될 수 있다. 예를 들어, 개시된 요지의 이론들을 따라 구성된 반도체 장치들은 패키지 온 패키지(package on package)(POP) 기술, 볼 그리드 어레이들(ball grid arrays)(BGAs) 기술, 칩 스케일 패키지들(chip scale packages)(CSPs) 기술, 플라스틱 리디드 칩 케리어(plastic leaded chip carrier)(PLCC) 기술, 플라스틱 듀얼 인-라인 패키지(plastic dual in-line package)(PDIP) 기술, 다이 인 와플 팩(die in waffle pack) 기술, 다이 인 와퍼 폼(die in wafer form) 기술, 칩 온 보드(chip on board)(COB) 기술, 세라믹 듀얼 인-라인 패키지(ceramic dual in-line package)(CERDIP) 기술, 플라스틱 메트릭 쿼드 플랫 패키지(plastic metric quad flat package)(PMQFP) 기술, 플라스틱 쿼드 플랫 패키지(plastic quad flat package)(PQFP) 기술, 스몰 아웃라인 패키지(small outline package)(SOIC) 기술, 슈링크 스몰 아웃라인 패키지(shrink small outline package)(SSOP) 기술, 씬 스몰 아웃라인 패키지(thin small outline package) (TSOP) 기술, 씬 쿼드 플랫 패키지(thin quad flat package) (TQFP) 기술, 시스템 인 패키지(system in package) (SIP) 기술, 멀티칩 패키지(multichip package)(MCP) 기술, 와퍼-레벨 페브리케이트 패키지(wafer-level fabricated package)(WFP) 기술, 와퍼-레벨 프로세스 스텍 패키지(wafer-level processed stack package)(WSP) 기술 또는 당업자에게 공지되어있을 것 같은 다른 방법 중 어느 하나를 사용하여 캡슐화될 수 있다.
방법 단계들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 기능들을 수행하는 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세스들로부터 수행될 수 있다. 예를 들어, FPGA(필드 프로그래머블 게이트 어레이(field programmable gate array)) 또는 ASIC(어플리케이션-스페시픽 인터게이트 서킷(application-specific intergated circuit))와 같은 특수 목적 논리 회로로부터 방법 단계들은 수행될 수 있고, 장치는 구현될 수 있다.
다양한 실시 예들로서, 컴퓨터 판독가능 매체는 자기 매체, 광 매체, 다른 매체 또는 이들의 조합(예를 들어, CD-ROM, 하드 드라이브, 읽기전용 메모리, 플래시 메모리, 등)을 포함할 수 있다. 이러한 일 실시 예에서, 컴퓨터 판독가능 매체는 명백하게, 그리고 비 일시적으로 구체화된 제조품일 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 시스템 190: 명령들
102: 실행부 192: PF 데이터
104: 프리 패치부 194: 가상 어드레스
106: 메모리 시스템 196: 물리적 어드레스
112: 어드레스 테이블 204: 프리-패치부
110: 변환 색인 버퍼 236: L3 캐시
114: L1 필 버퍼 238: 데이터
116: L1 캐시 242: 캐시 프리-패쳐
118: 데이터 244: 프리-패치 스케줄러
122: L2 프리-패치 요청 버퍼 400: 정보 처리 시스템
124: L2 필 버퍼 405: 버스
126: L2 캐시 410: 프로세서 및/또는 로직
128: 데이터 420: 휘발성 메모리
136: 메인 메모리 430: 비휘발성 메모리
138: 데이터 440: 네트워크 인터페이스
142: 캐시 프리-패쳐 450: 사용자 인터페이스부
143: PA 체커 460: 다른 하드웨어 장치들
144: 프리-패쳐 스케줄러 470: 소프트웨어

Claims (10)

  1. 복수의 레벨들로 구성되고, 각각의 레벨에 데이터를 저장하는 메모리 시스템;
    상기 메모리 시스템으로부터 검색될 데이터를 적어도 일부분의 가상 어드레스를 기반으로 예측하는 캐시 프리-패쳐; 및
    상기 데이터의 상기 가상 어드레스를 상기 데이터의 물리적 어드레스로 변환하고, 상기 메모리 시스템의 복수의 레벨들 중 하나로부터 상기 데이터를 요청하는 프리-패치 스케줄러를 포함하는 장치.
  2. 제 1 항에 있어서,
    상기 메모리 시스템은,
    상기 메모리 시스템의 제1 레벨에 저장될 데이터에 대한 요청들을 저장하기 위한 제1 레벨 필 버퍼; 및
    상기 메모리 시스템의 제2 레벨에 저장될 데이터에 대한 요청들을 저장하기 위한 제2 레벨 필 버퍼를 포함하고,
    상기 프리-패치 스케줄러로부터 데이터의 상기 제2 레벨 필 버퍼 내에 배치된 요청을 저장하도록 구성된 제2 레벨 프리-패치 요청 버퍼를 포함하는 장치.
  3. 제 1 항에 있어서,
    상기 프리-패치 스케줄러는,
    시스템 리소스들의 사용 가능한 양을 포함하는 미리 정의된 표준 세트를 기반으로 하는 상기 메모리 시스템의 상기 복수의 레벨들 중 하나에 배치된 상기 데이터를 요청하는 장치.
  4. 제 3 항에 있어서,
    상기 캐시 프리-패쳐는 상기 메모리 시스템으로부터 검색될 데이터를 예측할 때 페이지 바운더리를 교차하고;
    상기 시스템 리소스들의 사용 가능한 양을 포함하는 상기 미리 정의된 표준 세트는 제한된 메모리 영역으로부터 포함되지 않은 상기 데이터의 상기 물리적 어드레스에 대해 판단하는 장치.
  5. 제 1 항에 있어서,
    상기 프리-패치 스케줄러는,
    상기 데이터의 상기 물리적 어드레스를 기반으로 하는 상기 메모리 시스템의 상기 복수의 레벨들 중 하나로부터 상기 데이터를 요청하는 장치.
  6. 명령에 따라, 메모리 시스템으로부터 액세스될 것 같은 데이터의 적어도 일부분의 가상 어드레스를 기반으로 예측하는 단계;
    프리-패치된 데이터를 저장하기 위한 상기 메모리 시스템의 레벨을 결정하고, 상기 프리-패치된 데이터는 명령에 따라 액세스될 것이라 예측되는 데이터를 포함하고, 상기 메모리 시스템의 복수의 레벨들로부터 선택하는 단계; 및
    상기 명령에 따라 상기 프리-패치된 데이터가 액세스되기 전에 상기 메모리 시스템의 상기 미리 정의된 레벨에 따라 저장될 상기 프리-패치된 데이터를 발생하는 단계를 포함하는 동작 방법.
  7. 제 6 항에 있어서,
    상기 메모리 시스템의 미리 정의된 레벨은 상기 메모리 시스템의 제1 레벨 또는 상기 메모리 시스템의 제2 레벨을 포함하고;
    상기 메모리 시스템의 상기 결정된 레벨로부터 저장될 상기 프리-패치된 데이터의 발생 단계에서는:
    상기 결정된 레벨이 상기 메모리 시스템의 상기 제1 레벨을 포함하면, 상기 프리-패치된 데이터에 대한 데이터의 요청들을 상기 메모리 시스템의 상기 제1 레벨에 저장될 데이터를 위한 요청들을 저장하는 제1 레벨 필 버퍼에 삽입하고;
    상기 결정된 레벨이 상기 메모리 시스템의 상기 제2 레벨을 포함하면, 상기 프리-패치된 데이터에 대한 데이터의 요청들을 상기 메모리 시스템의 상기 제2 레벨에 저장될 데이터에 대한 상기 요청들을 저장하는 제2 레벨 필 버퍼로 삽입하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 결정된 레벨이 상기 메모리 시스템의 상기 제2 레벨을 포함하면, 상기 메모리 시스템의 상기 결정된 레벨로부터 저장될 상기 프리-패치된 데이터의 발생 단계에서는:
    상기 제2 레벨 필 버퍼가 데이터에 대한 요청들을 저장하기 위한 용량을 포함하면, 상기 프리-패치된 데이터에 대한 데이터의 요청들을 상기 제2 레벨 필 버퍼에 삽입하고,
    상기 제2 레벨 필 버퍼가 상기 데이터에 대한 상기 요청들을 저장하기 위한 용량을 포함하지 않으면, 상기 제2 레벨 필 버퍼가 데이터에 대한 추가적인 요청을 위한 용량을 포함할 때 상기 제2 레벨 필 버퍼에 위치할 수 있는 데이터에 대한 상기 요청들을 저장할 수 있는 제2 레벨 프리-패치 요청 버퍼에 상기 프리-패치된 데이터에 대한 데이터의 요청들을 삽입하는 동작 방법.
  9. 제 6 항에 있어서,
    상기 메모리 시스템의 결정된 레벨을 선택하는 단계에서는,
    상기 메모리 시스템의 상기 제1 레벨과 관련된 제1 레벨 필 버퍼가 상기 프리-패치 데이터에 대한 추가적인 요청을 위한 용량을 포함하면, 상기 메모리 시스템의 제1 레벨을 선택하고,
    상기 메모리 시스템의 제1 레벨과 관련된 제1 레벨 필 버퍼가 상기 프리-패치 데이터에 대한 추가적인 요청을 위한 용량을 포함하지 않으면, 상기 메모리 시스템의 제2 레벨을 선택하는 동작 방법.
  10. 제 6 항에 있어서,
    상기 명령에 따라 액세스될 데이터를 예측하는 단계는,
    상기 프리-패치 데이터와 관련된 상기 가상 어드레스를 변환 색인 버퍼를 거쳐 물리 어드레스로 변하고
    상기 가상 어드레스를 변환은 변환 색인 버퍼 입력을 프리-패칭하는 동작 방법.
KR1020140156175A 2014-01-10 2014-11-11 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법 KR102398604B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461926247P 2014-01-10 2014-01-10
US61/926,247 2014-01-10
US14/325,343 US9569361B2 (en) 2014-01-10 2014-07-07 Pre-fetch chaining
US14/325,343 2014-07-07

Publications (2)

Publication Number Publication Date
KR20150083770A true KR20150083770A (ko) 2015-07-20
KR102398604B1 KR102398604B1 (ko) 2022-05-16

Family

ID=53521494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140156175A KR102398604B1 (ko) 2014-01-10 2014-11-11 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9569361B2 (ko)
KR (1) KR102398604B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150046130A (ko) * 2012-08-18 2015-04-29 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2528842B (en) * 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
US9934149B2 (en) * 2016-03-31 2018-04-03 Qualcomm Incorporated Prefetch mechanism for servicing demand miss
JP2017228172A (ja) * 2016-06-23 2017-12-28 富士通株式会社 情報処理システム
US10101964B2 (en) * 2016-09-20 2018-10-16 Advanced Micro Devices, Inc. Ring buffer including a preload buffer
US10909045B2 (en) * 2018-12-20 2021-02-02 Arm Limited System, method and apparatus for fine granularity access protection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212659A1 (en) * 2005-03-18 2006-09-21 Dieffenderfer James N Systems and arrangements for promoting a line from shared to exclusive in a cache
KR20130106789A (ko) * 2012-03-20 2013-09-30 애플 인크. 계층적으로 캐싱되는 프로세서들에서의 조정된 프리페칭

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778435A (en) * 1996-05-30 1998-07-07 Lucent Technologies, Inc. History-based prefetch cache including a time queue
US7346741B1 (en) * 2005-05-10 2008-03-18 Sun Microsystems, Inc. Memory latency of processors with configurable stride based pre-fetching technique
WO2007099598A1 (ja) 2006-02-28 2007-09-07 Fujitsu Limited プリフェッチ機能を有するプロセッサ
US8156287B2 (en) 2009-01-15 2012-04-10 International Business Machines Corporation Adaptive data prefetch
US8281078B2 (en) 2009-09-29 2012-10-02 Intel Corporation Multi-level cache prefetch
US8473689B2 (en) * 2010-07-27 2013-06-25 Texas Instruments Incorporated Predictive sequential prefetching for data caching
US9110810B2 (en) 2011-12-06 2015-08-18 Nvidia Corporation Multi-level instruction cache prefetching
US9047198B2 (en) * 2012-11-29 2015-06-02 Apple Inc. Prefetching across page boundaries in hierarchically cached processors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212659A1 (en) * 2005-03-18 2006-09-21 Dieffenderfer James N Systems and arrangements for promoting a line from shared to exclusive in a cache
KR20130106789A (ko) * 2012-03-20 2013-09-30 애플 인크. 계층적으로 캐싱되는 프로세서들에서의 조정된 프리페칭

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150046130A (ko) * 2012-08-18 2015-04-29 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼

Also Published As

Publication number Publication date
KR102398604B1 (ko) 2022-05-16
US9569361B2 (en) 2017-02-14
US20150199275A1 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
KR102518095B1 (ko) 스토리지 장치 및 시스템
KR102398604B1 (ko) 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법
CN106537362B (zh) 数据处理装置和在数据处理装置中处理地址转换的方法
US10134471B2 (en) Hybrid memory architectures
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
EP2791933B1 (en) Mechanism for using a gpu controller for preloading caches
KR102676704B1 (ko) 메모리 시스템에 데이터 스트림을 쓰기 위한 방법, 장치 및 시스템 온 칩
US10565131B2 (en) Main memory including hardware accelerator and method of operating the same
KR20150084669A (ko) 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템
KR102513446B1 (ko) 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법
US20190294544A1 (en) Selective downstream cache processing for data access
CN111684427A (zh) 高速缓存控制感知的存储器控制器
CN112416817B (zh) 预取方法、信息处理装置、设备以及存储介质
US20190065384A1 (en) Expediting cache misses through cache hit prediction
US20150268961A1 (en) Decoupling l2 btb from l2 cache to accelerate search for miss after miss
CN110858181A (zh) 用于执行地址转换的装置和方法
CN114238167B (zh) 信息预取方法、处理器、电子设备
KR20210000271A (ko) 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치
US10909045B2 (en) System, method and apparatus for fine granularity access protection
US20190286718A1 (en) Data structure with rotating bloom filters
CN113448879A (zh) 存储器管理
US8205064B2 (en) Latency hiding for a memory management unit page table lookup
CN114281720B (zh) 处理器、用于处理器的地址翻译方法、电子设备
JP2024510127A (ja) ページ再マッピングおよびローテーションによるアドレス空間配置のランダム化エントロピーの増大
Bae et al. Ssdstreamer: Specializing i/o stack for large-scale machine learning

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant