KR20150084669A - 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템 - Google Patents
데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템 Download PDFInfo
- Publication number
- KR20150084669A KR20150084669A KR1020150004314A KR20150004314A KR20150084669A KR 20150084669 A KR20150084669 A KR 20150084669A KR 1020150004314 A KR1020150004314 A KR 1020150004314A KR 20150004314 A KR20150004314 A KR 20150004314A KR 20150084669 A KR20150084669 A KR 20150084669A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- data
- fetch
- memory address
- data access
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
장치의 동작 방법은 메모리 어드레스에 저장된 액세스 데이터(access data)에 대한 요구를 프리-패치 유닛(pre-fetch unit)으로부터 수신하는 단계, 상기 메모리 어드레스의 제1 부분에 메모리의 미리 결정된 영역이 매치하는지 판단하는 단계, 상기 메모리 어드레스의 제2 부분이 이전에 감지된 프리-패치 어드레스 부분에 매치하는지 판단하는 단계 및 상기 메모리 어드레스의 상기 제1 부분이 상기 미리 결정된 메모리의 영역에 매치하고, 상기 메모리 어드레스의 상기 제2 부분이 상기 이전에 감지된 프리-패치 어드레스 부분에 매치하면, 상기 메모리 어드레스와 프리-패치 패턴(pre-fetch pattern)이 관련되는지 확인하는 단계를 포함한다.
Description
본 발명은 저장 장치에 관한 것으로, 좀 더 구체적으로 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템에 관한 것이다.
일반적으로 복수의 컴퓨터들 및 컴퓨터들에 의해 실행되는 프로그램들은 무한대의 고속 메모리를 제공하기 위해 버레이셔스 에피타이트(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 캐시, 등)로부터 요청한 데이터를 포함하지 않을 수 있고, 다음 계층(예를 들어, 메인 메모리, 등)으로부터 그것을 요청해야만 한다. 이것은 더 많은 지연을 발생한다.
본 발명의 목적은 데이터의 액세스를 예측하기 위한 장치, 그것의 동작 방법 및 그것을 포함하는 시스템을 제공하는 데에 있다.
본 발명의 실시 예에 따른 장치의 동작 방법은 메모리 어드레스에 저장된 액세스 데이터(access data)에 대한 요구를 프리-패치 유닛(pre-fetch unit)으로부터 수신하는 단계, 상기 메모리 어드레스의 제1 부분에 메모리의 미리 결정된 영역이 매치하는지 판단하는 단계, 상기 메모리 어드레스의 제2 부분이 이전에 감지된 프리-패치 어드레스 부분에 매치하는지 판단하는 단계 및 상기 메모리 어드레스의 상기 제1 부분이 상기 미리 결정된 메모리의 영역에 매치하고, 상기 메모리 어드레스의 상기 제2 부분이 상기 이전에 감지된 프리-패치 어드레스 부분에 매치하면, 상기 메모리 어드레스와 프리-패치 패턴(pre-fetch pattern)이 관련되는지 확인하는 단계를 포함한다.
실시 예로서, 상기 메모리 어드레스의 상기 제1 부분에 상기 메모리의 미리 결정된 영역이 매치하지 않고, 상기 메모리 어드레스의 상기 제2 부분에 상기 이전에 감지된 프리-패치 어드레스 부분이 매치하지 않으면, 상기 프리-패치 유닛에 기반하여 상기 메모리 어드레스의 적어도 일부분을 트레이닝(training)하는 단계를 더 포함한다.
실시 예로서, 상기 프리-패치 유닛은 실질적으로, 복수의 명령 스트림들(streams)에 대한 프리-패치 데이터로 구성되고, 상기 메모리 어드레스의 상기 제1 부분에 상기 메모리의 미리 결정된 영역이 매치하는지 판단하는 단계는 상기 메모리 어드레스의 상기 제1 부분이 상기 명령 스트림들 중 일부분에 관련된 이전에 감지된 영역에 매치하는지 판단한다.
실시 예로서, 상기 메모리 어드레스의 상기 제2 부분에 상기 이전에 감지된 프리-패치 어드레스 부분이 매치하는지 판단하는 단계는 처리 전 프리-패치된 부분, 처리 중 프리-패치된 부분 및 완료 프리-패치된 부분 중 적어도 하나에 대해 비교한다.
본 발명의 실시 예에 따른 장치는 복수의 명령 스트림들의 예측 데이터 액세스를 포함하는 패턴 식별자(pattern identifier) 및 실제 데이터 액세스가 상기 패턴 식별자로부터 예측된다면 두 단계의 룩-업을 통해 판단하도록 구성된 프리-패치 확인기(pre-fetch confirmer)를 포함한다.
실시 예로서, 상기 프리-패치 확인기는, 예측된 데이터 액세스에서 메모리의 적어도 하나 이상의 영역들을 확인하기 위한 제1 데이터 구조 및 데이터 액세스의 적어도 하나 이상의 예측된 패턴들의 메모리 어드레스와 관련된 제2 데이터 구조를 유지한다.
실시 예로서, 상기 프리-패치 확인기는 상기 두 단계의 룩 업의 제1 단계에서, 예측된 데이터 액세스에서 메모리의 상기 적어도 하나 이상의 영역들의 리스트로부터 상기 메모리 어드레스의 제1 부분을 비교하고, 상기 두 단계의 룩-업의 제2 단계에서, 상기 메모리 어드레스의 제2 부분 및 상기 예측된 데이터 액세스 사이에서 연관이 존재하는지 판단한다.
실시 예로서, 상기 두 단계의 룩 업의 상기 제1 및 제2 단계 모두 페일(fail)이면, 상기 패턴 식별자는 예측 미래 데이터 액세스들에 따라 새로운 데이터 액세스로서 상기 실제 데이터 액세스를 다루기 위해 구성된다.
실시 예로서, 상기 프리-패치 확인기는 처리 전 활성화 명령 스트림과 관련된 프리-패치 데이터 요청들, 처리 중 프리-패치 데이터 요청들 및 완료된 프리-패치 데이터 요청들을 나타내는 엔트리들을 혼합한 적어도 하나의 데이터 구조를 유지한다.
본 발명의 실시 예에 따른 시스템은 적어도 하나 이상의 명령 스트림들을 실행하기 위한 실행 유닛(execution unit), 복수의 명령 스트림들의 데이터 액세스를 예측하고, 두 단계의 룩 업(look up) 및 확인 데이터 구조를 통해 실제 데이터 액세스가 예측되는지 판단하는 프리-패치 유닛(pre-fetch unit)을 포함하되, 상기 실행 유닛은 상기 적어도 하나 이상의 명령 스트림들로부터 지시를 받는 실제 데이터 액세스를 수행한다.
상술한 바와 같이 본 발명의 실시 예에 따른 장치 및 그것의 동작 방법 및 그것을 포함하는 시스템은 명령 스트림들의 데이터 액세스를 예측함으로써 데이터처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 제1 실시 예에 따른 시스템을 보여주는 블록도이다.
도 2는 본 발명의 제1 실시 예에 따른 데이터 구조를 보여주는 블록도이다.
도 3은 본 발명의 제2 실시 예에 따른 데이터 구조를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 시스템의 동작을 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 처리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 제1 실시 예에 따른 데이터 구조를 보여주는 블록도이다.
도 3은 본 발명의 제2 실시 예에 따른 데이터 구조를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 시스템의 동작을 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 처리 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 무선 통신 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 제1 실시 예에 따른 시스템을 보여주는 블록도이다.
다양한 실시 예들로서, 시스템(100)은 세 단계의 메모리 시스템(106)(L1 캐시(116), L2 캐시(126), 및 메인 메모리(main memory)(136))을 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 시스템(100)은 적어도 하나 이상의 명령들(190)을 실행 또는 처리하기 위한 실행 유닛(102)을 포함할 수 있다. 이러한 일 실시 예에서, 명령들(190)은 프로그램(program) 또는 어플리케이션(application)을 만들 수 있다. 다양한 실시 예들로서, 실행 유닛(102)은 프로세서(processor) 또는 다른 컴퓨터(computer) 요소로서 포함될 수 있다. 다양한 실시 예들로서, 이러한 명령들(190)은 때때로 메모리 시스템(106)(L1 캐시(116), L2 캐시(126), 및 메인 메모리(136))에 저장된 데이터에 접근(읽기 또는 쓰기)할 수 있다.
일 실시 예에서, 이러한 명령들(190)이 데이터에 접근할 때, 명령들(190)은 L1 캐시(116)의 데이터에 대한 제1 요청일 수 있다. 일 실시 예에서, L1 개시(116)는 데이터(118)의 서브-세트(sub-set)를 저장할 수 있다. 만약 요청된 데이터가 데이터(118)에 포함된다면, L1 캐시(116)는 데이터를 제공하고(또는 쓰기 명령(190)에 관하여 저장된 데이터(118)를 업데이트(update)), 실행 유닛(10)은 문제 없이 처리할 수 있다.
그러나, 다양한 실시 예들로서, 요청된 데이터가 데이터(118)에 포함되지 않는다면(캐시 미스), 순차적으로, L1 캐시(116)는 L2 캐시(126)로부터 데이터를 요청할 수 있다(메모리 시스템(106)의 다음 단계). 이는 실행 유닛(102)의 성능에 좋지 않은 영향을 가져올 수 있고, 실행 유닛(102)의 명령들(190) 처리를 지연시킬 수 있다.
일반적으로, L1 캐시(116)는 L2 캐시(126)로부터 동시에 하나의 데이터만 요청할 수 있다. 하지만, 일 실시 예로서, 시스템(100)은 L1 캐시(116) 또는 L1 캐시(116)의 도움으로 만들어진 L2 캐시(126)의 큐 데이터 요청들(198)로 구성된 L1 필 버퍼(fill buffer)(114)를 포함할 수 있다. 일 실시 예로서, L1 캐시(116)는 캐시 미스를 발생한 데이터의 이행을 기다리는 동안, 실행 유닛(102)로부터 데이터에 대한 추가적인 요청들을 수용할 수 있다.
이와 같이, L2 캐시(126)는 데이터(128)의 서브-세트를 저장할 수 있다. 캐시-미스 데이터가 데이터(128)에 포함되면, 데이터는 즉시 L1 캐시(116)로 공급된다. 만약 그렇지 않으면, 다른 캐시 미스가 발생되고, 이는 L2 캐시(126) 레벨이다. L2 캐시(126)는 메인 메모리(136)(또는 메모리 시스템(106)의 다음 단계)로부터 미싱(missing) 데이터를 요청할 수 있다. 그리고, 메인 메모리(136)가 포함하는 데이터를 저장된 데이터(138)로서 갖는 것으로 예측된다.
다양한 실시 예들로서, 메인 메모리(136)는 저장된 데이터(138)의 서브-세트를 저장할 수 있고, 가능한 데이터의 전부는 저장 장치 또는 다른 반 영구적 또는 영구적 메모리 장치(하드 드라이브(hard drive), 솔리드 스테이트 장치(solid state device), 광 디스크(disc))에 저장될 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
캐시 미스들은 일반적으로 바람직하지 않은 것으로 생각된다. 실시 예로서, 시스템(100)은 명령들(190)로부터 요청된 데이터를 예측하고, 메모리 시스템(106)에 쉽게 사용될 수 있는 예측된 데이터를 발생하는 프리-패치 유닛(104)를 포함할 수 있다. 실시 예로서, 프리-패치 유닛(104)은 명령들(190)로부터 직접적으로 발생하는 캐시 미스들의 수를 줄일 수 있다.
일 실시 예로서, 데이터를 필요로 하는(또는 필요가 예측되는) 명령(190)이 실행되기 전에 요청 데이터(192)로써, 데이터(192)의 요청으로부터 발생되는 캐시 미스는 데이터(192)를 필요로 하는 명령(190)의 시간으로부터 해결될 수 있다. 일 실시 예로서, 실행 유닛(102)은 이러한 캐시 미스의 발생을 인지할 수 없다. 그리고 실행 유닛(102)은 역으로 영향을 받은 명령들(190)의 실행을 지연 시키거나 또는 가질 수 없다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
일 실시 예로서, 캐시 프리-패쳐(pre-fetcher)(142)는 명령들(190)의 결과로써 발생하는 메모리 액세스들(accesses)의 패턴(pattern)을 감지하는 패턴 식별자(140)를 포함할 수 있다. 예를 들어, 명령들(190)의 스트림(stream)은 3 키로바이트(kilobytes)(KB), 4 KB 패턴의 메모리 어드레스에 액세스할 수 있다. 일 실시 예로서, 패턴 식별자(140)는 메모리 액세스의 패턴을 확인할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 명령들(190)은 명령들의 스팀들의 개수를 포함할 수 잇다. 명령들의 스트림 또는 명령 스트림은 일반적인 프로그램, 기능 또는 서브루틴(subroutine) 그리고 테스크(task)를 성취하기 위한 시퀀스(sequence)의 실행에 관련된 명령들(190)의 시리즈들(series)일 수 있다. 현대 컴퓨터에서, 실행 유닛(102)은 멀티-테스킹(multi-tasking), 다중계 및 시분할 기술을 통해 대체적으로 동시에 명령들(190)의 적어도 하나 이상의 스트림들을 실행할 수 있다.
일 실시 예로서, 패턴 식별자(140)는 명령들(190)의 다양한 스트림들의 메모리 액세스 패턴들을 감지하도록 구성될 수 있다. 일 실시 예로서, 명령들(190)의 제1 스트림은 메모리 액세스들의 패턴들의 제1 세트(3+3+4, 1+8+8)와 관련 있을 수 있다. 명령들(190)의 제2 스트림은 메모리 액세스들의 패턴들의 제2 세트(3+5+4, 4+8+8, 3+4+4)와 관련 있을 수 잇다. 다양한 실시 예들로서, 두 개 또는 그 이상의 명령들(190)의 스트림들은 유사한 패턴들과 관련 있을 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 프리-패치 유닛(104)은 감지되거나 예측된 메모리 액세스 패턴들을 저장하기 위한 패턴 테이블(table)(182) 포함 또는 유지할 수 있다. 다양한 실시 예들로서, 패턴 테이블(182)은 프리-패치 유닛(104)로부터 포함된 메모리에 저장된 데이터 구조를 포함할 수 있다. 몇몇 실시 예들로서, 패턴 테이블(182) 데이터 구조는 테이블을 포함하지 않을 수 있다. 하지만, 패턴 테이블(182) 데이터 구조는 다른 형태의 데이터 구조(링크된 리스트(linked list), 어레이(array))를 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 캐시 프리-패쳐(142)는 프리-패치 데이터(192), 패턴 테이블(182)에 저장된 패턴들로 구성될 수 있다. 예를 들어, 3+4+4 패턴이 확인되면, 3 KB 바운더리(boundary)로써, 메모리 어드레스를 시작하는 메모리 액세스가 발견되고, 캐시 프리-패쳐(142)는 다음 두 4kb의 바운더리들로서, 프리-패치 데이터(192)일 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
그러나, 이것은 캐시 프리-패쳐(142)로부터 만들어진 예측들이 유효한지 확인하기 위해 바람직하다. 다양한 실시 예들로서, 이러한 피드백(feedback) 메커니즘(mechanism)은 프리-패치 유닛(104)로부터 만들어진 예측들을 향상시키기 위해 채용된다.
다양한 실시 예들로서, 프리-패치 유닛(104)은 프리-패치 확인기(144)를 포함할 수 있다. 실시 예로서, 프리-패치 확인기(144)는 명령들(190)(또는 실행 유닛(102))으로 부터 만들어진 모니터(monitor) 데이터 액세스들로 구성될 수 있고, 캐시 프리패쳐(142)(또는 프리-패치 유닛(104))가 명령들(190)이 실제 액세스된 데이터(194)에 액세스 하는지 정확하게 예측하는지 아닌지에 대해 판단할 수 있다.
다양한 실시 예들로서, 이러한 피드백(feedback)(긍정적인 그리고/또는 부정적인 피드백)을 기반으로 캐시 프리-패쳐(142)는 예측 테크닉(technique)을 조정할 수 있다. 몇몇 실시 예로서, 하나의 타입(type)의 피드백(긍정적 또는 부정적)만이 채택될 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
일 실시 예로서, 프리-패치 확인기(144)는 액세스된 데이터(194)가 미리 감지되거나 이전에 정의된 패턴 또는 메모리 어드레스를 따르는지 판단하기 위한 두 단계의 룩 업(look up) 스킴(scheme)을 채용하도록 구성될 수 있다. 일 실시 예로서, 두 단계의 룩 업 스킴은 제1 스테이지가 실패하면, 룩 업 및 확인 프로세스를 중단함으로써 계산 시간 및 파워를 줄일 수 있다. 더 나아가, 추가적인 이익들은 비교되는 비트들의 개수 또는 폭의 감소를 포함할 수 있다.
일 실시 예로서, 프리-패치 확인기(144)는 데이터 액세스 요청(로드(load), 스토어(store), 읽기, 및 쓰기)을 실행 유닛(102)으로부터 수신할 수 있다. 다양한 실시 예들로서, 데이터 액세스 요청은 액세스된 데이터(194) 와 관련될 수 있고, 액세스된 데이터(194)가 저장되는 특정 메모리 어드레스를 포함할 수 있다. 다양한 실시 예들로서, 데이터 액세스 요청은 메모리 시스템(106)로부터 수신될 수 있고, 상기 설명된 것과 같이 처리될 수 있다.
다양한 실시 예들로서, 프리-패치 확인기(144)는 액세스 데이터(194)(또는 액세스 데이터(194)와 관련된 메모리 어드레스의 일부분)가 프리-패치 유닛(104)로부터 예측되거나 프리-패치 되는지에 대해 판단할 수 있다. 일 실시 예로서, 프리-패치 확인기(144)는 메모리 어드레스의 상부가 이전에 정의된 메모리의 영역에 매치하는지에 대하 판단할 수 있다. 일 실시 예로서, 이는 메모리 어드레스 또는 메모리의 상부가 영역 테이블(table)(184)의 엔트리(entry)와 관련되었는지 판단함으로써 완수될 수 있다.
실시 예로서, 프리-패치 확인기(144)는 영역 테이블(184)로 언급된 데이터 구조를 유지할 수 있다. 다양한 실시 예들로서, 영역 테이블(184)은 테이블(링크된 리스트, 해시(hash) 테이블, 어레이, 연관 배열)을 제외한 데이터 구조들을 포함할 수 있다. 다양한 실시 예들로서, 영역 테이블(184)은 메모리의 영역들, 부분들, 또는 블록들 또는 패턴들의 어드레스들(패턴 테이블(182)에 저장된)과 관련된 엔트리들의 개수를 포함할 수 있다.
실시 예로서, 두 단계의 룩 업 시침의 부분으로써 영역 테이블(184)은 간접적으로 패턴들의 메모리 영역들과 관련될 수 있고, 영역 테이블(184)의 엔트리는 적어도 하나 이상의 패턴들과 관련된 메모리 영역의 일부분을 의미할 수 있다. 실시 예로서, 어드레스 테이블(186)의 추가적인 검사가 필요할 수 있다.
일 실시 예로서, 액세스된 데이터(194)가 주어질 때, 프리-패치 확인기(144)는 영역 테이블(184)의 키(key)로써, 액세스된 데이터(194)의 메모리 어드레스의 상위 또는 최상위 비트들(MSBs)을 사용할 수 있다. 다양한 실시 예들로서, 도 2에서 설명되는 영역 테이블(184)은 어드레스 영역의 MSBs에 대한 키 또는 칼럼(column) 및 영역 확인기(ID)에 대한 가치 또는 칼럼을 포함할 수 있다. 다양한 실시 예들로서, 영역 ID는 MSBs보다 더 적은 비트들을 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
만약 키 또는 MSBs가 영역 테이블(184)에서 발견되지 않는다면, 프리-패치 확인기(144)는 액세스된 데이터(194)를 프리-패치 유닛(104)로부터 프리-패치 되거나 예측되지 않은 새로운 데이터로써 판단할 수 있다. 몇몇 실시 예들로서, 액세스된 데이터(194)는 명령들의 새로운 스트림에서 될 수 있다. 다른 실시 예에서, 액세스된 데이터(194)는 기존 또는 이전에 발생된 명령들의 스트림으로부터 될 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
일 실시 예로서, 프리-패치 확인기(144)는 캐시 프리-패쳐(142) 또는 패턴 확인기(140)의 메모리 액세스를 통과할 수 있다. 일 실시 예로서, 새로운 메모리 액세스는 더 나은 메모리 액세스들을 예측하기 위해 프리-패치 유닛(104)를 트레이닝하기 위해 채택될 수 있다. 다양한 실시 예들로서, 이는 확인된 패턴들의 종료를 조정, 새로운 패턴들의 생성, 또는 감지된 패턴들로부터 채택된 스킴 또는 상태 기계를 조정하기 위해 패턴 확인기(140)를 발생할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
만약, 영역 테이블(184)에서 MSBs 또는 키가 발견된다면, 영역 ID 가치는 반환된다. 일 실시 예로서, 액세스된 데이터(194)와 관련된 메모리 영역은 유요한 것으로 밝혀지거나 메모리 테이블(184)의 엔트리와 관련될 수 있고, 프리-패치 확인기(144)는 메모리 어드레스의 하부의 또는 최하위 비트들(LSBs)이 이전에 감지된 프리-패치된 어드레스 영역 또는 패턴과 매치하는지 판단하기 위해 시도할 수 있다.
실시 예로서, 도 3에서 설명되는 어드레스 테이블(186)은 다른 두 개의 칼럼들과 관련된 패턴 ID 또는 패턴을 포함하는 제3 칼럼 및 영역 ID들의 칼럼으로써 메모리 어드레스들의 LSBs를 포함하는 칼럼을 포함할 수 있다. 일 실시 예로서, 키 또는 패턴 ID로써 채택될 수 있는 메모리 어드레스들의 영역 ID 및 LSB는 키에 대한 응답으로 반환된 값이 될 수 있다. 다양한 실시 예들로서, 패턴 ID는 패턴 테이블(182)에 대한 키 또는 인덱스(index)로서 역할을 할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
키 또는 영역 ID 및 LSBs가 어드레스 테이블(186)의 엔트리에서 발견되지 않는다면, 프리-패치 확인기(144)는 액세스된 데이터(194)를 프리-패치 유닛(104)으로부터 프리-패치 하거나 예측되지 않은 새로운 데이터로써 판단할 수 있다. 몇몇 실시 예들로서, 액세스된 데이터(194)는 명령들의 새로운 스트림으로부터 될 수 있다. 다른 실시 예에서, 액세스된 데이터(194)는 기존 또는 이전에 발생된 명령들의 스트림으로부터 될 수 있지만 이전에 감지된 메모리 액세스들의 패턴의 일부분은 아닐 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
키 또는 영역 ID 및 LSBs가 어드레스 테이블(186)의 엔트리에서 발견되지 않는다면, 패턴, 패턴 ID 또는 값은 반환될 수 있다. 일 실시 예로서, 액세스된 데이터(194)와 관련된 패턴이 발견되면, 프리-패치 확인기(144)는 캐시 프리-패쳐(142)의 패턴 감지를 알릴 수 있고, 프리-패치 데이터(192)에 대한 예측은 옳다. 일 실시 예로서, 캐시 프리-패쳐(142)는 예측한 패턴이 미래의 예측들 및 패턴 감지를 돕기 위해 정확한지에 대한 확인을 사용할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
일 실시 예로서, 확인 테이블(180)의 영역 테이블(184) 및 어드레스 테이블(186)로의 분할은 하나의 합병된 확인 테이블보다 다양한 이득을 가질 수 있다. 일 실시 예로서, 어드레스 또는 메모리 어드레스의 서브-영역에 대해 발생하는 키 비교로써, 피트 비교기들의 개수, 데이터 버스, 저장 요청들은 감소될 수 있다(전체 어드레스 비교와 비교해서). 예를 들어, MSB 영역은 영역테이블(184)에 한번의 저장만을 필요로 하지만, 짧고 작은 패션(fashion)으로 어드레스 테이블(186)에서 여러 번 재사용(영역 ID를 통해)할 수 있다.
일 실시 예로서, 두 단계의 룩 업의 관계로써, 영역 테이블(184)에서 엔트리가 발견되지 않는다면, 계산 시간 및 파워 는 프로세스가 중단됨으로써 절약될 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다른 실시 예로서, 영역 테이블(184) 및 어드레스 테이블(186)은 모든 명령 스트림들로부터 엔트리들을 포함할 수 있다. 도 2 및 도 3에 설명된 바와 같이, 영역 테이블(184) 및 어드레스 테이블(186)(또는 프리-패치 유닛(104))은 동적으로 다양한 명령어 스트림들 사이의 항목 또는 행을 할당할 수 있다. 이는 각각의 명령 스트림에 대해 고정된 크기의 별도의 테이블을 채택할 수 있는 시스템과 비교될 수 있다.
다양한 실시 예들로서, 캐시 프리-패쳐(142)는 메모리 페이지들에 그룹화될 수 있는 물리적 어드레스들을 사용하여 동작할 수 있다. 다양한 실시 예들로서, 메모리 페이지들은 4 키로 바이트(KB)의 사이즈로 그룹화될 수 있다. 일 실시 예로서, 프리-패치 유닛(104)은 물리적 어드레스(196)가 페이지 바운더리(boundary)를 초과하거나 가로지를 때 그것의 예측들을 재평가 또는 리-트레이닝(re-train)할 수 있다. 나아가, 물리적 어드레스들은 연속적이지 않고, 서로 옆에 위치하지 않을 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
일 실시 예로서, 두 단계의 확인 테이블(180)(영역 테이블(184) 및 어드레스 테이블(186)를 포함하는)은 프리-패치 실시 예들의 페이지 교차를 가능하게 할 수 있다. 다양한 실시 예들로서, 영역 테이블(184)은 복수의 명령 스트림들을 가로지르는 복수의 영역 어드레스들의 가격을 감소시킬 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
실시 예로서, 캐시 프리-패쳐(142)는 가상 어드레스들을 이용할 수 있다. 다양한 실시 예들로서, 영역 테이블(184) 및 어드레스 테이블(186)은 가상 어드레스들 및/또는 물리적 어드레스들을 채택할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 영역 테이블(184) 및 어드레스 테이블(186)은 예측된 메모리 액세스들(프리-패치 데이터(192)) 및 실제 메모리 액세스들(액세스된 데이터(194))사이의 비교의 하나의 물리적 포인트(point)를 제공할 수 있다. 다양한 프리-패치 데이터 스코어보드들(scoreboards)(188)에 대한 액세스된 데이터(194)를 비교할 수 있는 분산 시스템들의 대조이다.
일 실시 예로서, 프리-패치 데이터 스코어보드들(188)은 캐시 프리-패쳐(142)로부터 요청된 데이터의 트랙(track)을 유지하기 위해 구성될 수 있다. 다양한 실시 예들로서, 복수의 프리-패치 스코어보드들(188)은 각각의 스코어 보드들에서 프리-패치 데이터(192)에 대한 처리 전 요청들, 프리-패치 데이터(192)에 대한 완료 요청들 및/또는 프리-패치 데이터(192)에 대한 처리 중요청들을 포함할 수 있다. 몇몇 실실 예들로서, 이러한 프리-패치 스코어보드들(188)은 프리-패치 유닛(104) 구조를 통해 방출될 수 있다.
예를 들어, 제1 프리 패치 데이터 스코어보드(188)은 L1 필 버퍼(114)(또는 메모리 시스템(106))에 위치한 처리 중 요청들에 초점을 맞출 수 있다. 제2 프리-패치 데이터 스코어보드(188)는 제1 프리-패치 데이터 스코어보드(188)로부터 세퍼레이트(separate)될 수 있고, L1 필 버퍼(114)(또는 메모리 시스템(106))에 위치한 처리 전 요청들(198)에 초점을 맞출 수 있다. 제3 프리-패치 데이터 스코어보드(188)는 제1 및 제2 프리-패치 데이터 스코어보드들(188)로부터 세퍼레이트될 수 있고, L1 캐시(116)에 저장된 완료된 요청들(198)에 초점을 맞출 수 있다.
실시 예로서, 영역 테이블(184) 및 어드레스 테이블(186)은 복수의 데스퍼레이트(desperate) 데이터 구조들(제1 내지 제3 프리-패치 데이터 스코어보드들(188))에 대한 액세스된 데이터(194)를 비교하기 위한 니드(need)를 제거할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
도 4에 설명된 다양한 실시 예들을 통해서, 두 단계 룩 업 프로세스는 트레이닝(training) 프로세스를 위한 필터로써 채택될 수 있다. 일 실시 예로, 프리-패치 유닛(104)에 제시된 메모리 어드레스들로서, 메모리 어드레스들은 영역 테이블(184) 및 어드레스 테이블(186)와 비교하여 체크된다. 만약, 메모리 어드레스가 영역 테이블(184) 및 어드레스 테이블(186)에 저장되어있지 않으면, 프리-패치 유닛(104)은 트레이닝되기 위한 새로운 어드레스로써 메모리 어드레스를 다룰 수 있다. 만약 메모리 어드레스가 영역 테이블(184) 및 어드레스 테이블(186)에 저장되어 있다면, 프리-패치 유닛(104)은 기존의 또는 미리 결정된 명령 스트림들의 리-트레이닝(re-training)을 방지할 수 있다.
다양한 실시 예들로서, 캐시 및 두 단계 구조에 비교하여 매치하지 않는 필 버퍼만이 트레이닝 목적을 위해 사용될 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
도 2는 본 발명의 제1 실시 예에 따른 데이터 구조를 보여주는 블록도이다. 다양한 실시 예들로서, 데이터 구조(200)는 상기 설명된 영역 테이블을 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 행의 할당은 데이터 구조(200)를 채택하는 시스템의 실행 또는 특정 동작을 위해 고정될 수 있다. 다른 실시 예로서, 행들의 할당은 다양한 명령 스트림들의 변화의 니드(need)로써 재할당되거나 동적으로 변화할 수 있다.
예시적으로, 제2 명령 스트림은 증가하기 위해 할당된 행들의 개수를 증가시킬 수 있다. 더 나가아, 만약 제1 명령 스트림이 완료된다면, 할당된 행들(212)은 다른 명령 스트림들을 위해 재배치될 수 있다. 다른 실시 예로서, 제1 명령 스트림을 위해 이전에 재배치된 행들(212)은 새로운 또는 제4 명령 스트림의 실행이 수행될 때까지, 팔로(fallow) 상태로 있을 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
도 3은 본 발명의 제2 실시 예에 따른 데이터 구조를 보여주는 블록도이다. 다양한 실시 예들로서, 데이터 구조(300)는 상기 설명된 어드레스 테이블을 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
일 실시 예로서, 데이터 구조(300)는 세 개의 필드 또는 칼럼(column)들을 포함할 수 있다. 제1 칼럼(302)은 영역 테이블로부터 출력된 영역 ID를 포함할 수 있다. 다양한 실시 예들로서, 영역 ID는 메모리 어드레스의 MSBs를 나타낼 수 있다. 제2 칼럼(304)은 저 위(lower order) 비트들 또는 LSBs를 포함할 수 있다. 다양한 실시 예들로서, 제1 칼럼(302) 및 제2 칼럼(304)은 출력 또는 값(324)을 검색하기 위해 사용되는 키(322)로서 함께 동작할 수 있다. 일 실시 예로서, 값(324)은 제3 칼럼(306)에 포함될 수 있다.
일 실시 예로서, 데이터 구조(300)는 메모리 어드레스와 관련된 패턴 ID를 포함하는 제3 칼럼(306)을 포함할 수 있다. 일 실시 예로서, 연관성은 임의의 시간에 비교되어야 하고 매치가 결정되지 않은 경우, 비교 프로세스를 중지할 수 있는 방법을 제공하는 비트들이 감소하는 두 단계에서 판단될 수 있다.
다양한 실시 예들로서, 패턴 ID는 패턴 테이블의 키로써 사용될 수 잇다. 일 실시 예로서, 패턴 테이블 룩 업의 출력은 프리-패치 유닛으로부터 식별 또는 예측된 메모리 액세스들의 패턴일 수 있다. 상기 설명된 바와 같이, 다양한 실시 예들로서, 이러한 패턴이 확인 또는 강화된 후, 트레이닝 엔진(training engine)은 프리-패치 유닛의 예측 네이쳐(nature)를 향상시킬 수 있다. 이는 본 발명을 설명하기 위한 예시로서, 본 발명을 한정하지 않는다.
상기 설명된 바와 같이, 다양한 실시 예들로서, 행들의 할당은 동적으로 발생할 수 있다. 다양한 실시 예들로서, 데이터 구조(300)의 행들의 할당은 영역 테이블의 할당과는 다를 수 있다. 예를 들어, 실시 예로서, 세 개의 행들(312)은 제1 명령 스트림에 할당될 수 있다. 두 개의 행들(314)은 제2 명령 스트림에 할당될 수 있다. 그리고, 세 개의 행들(316)은 제3 명령 스트림에 할당될 수 있다.
도 4는 본 발명의 실시 예에 따른 시스템의 동작을 보여주는 순서도이다. 다양한 실시 예들로서, 테크닉(technique)(400)은 도 1 또는 도 4와 같은 시스템들로부터 사용될 수 있다. 다양한 실시 예들로서, 테크닉(400)은 도 2 또는 도 3과 같은 데이터 구조들을 채택 또는 사용할 수 있다. 이는 상기 개시된 주제에 대한 실시 예들로서 상기 개시된 주제를 한정하지 않는다.
블록(402)에서, 상술한 바와 같이 메모리 어드레스에 저장된 액세스 데이터에 대한 요구가 수신될 수 있다. 다양한 실시 예들로서, 상술한 바와 같이 요구는 프리-패치 유닛으로부터 수신될 수 있다. 몇몇 실시 예들로서, 상술한 바와 같이 프리-패치 유닛은 실질적으로 동시에 명령 스트림들에 대한 복수의 데이터를 프리-패치하도록 구성될 수 있다. 다양한 실시 예들로서, 블록(402)으로부터 개시된 적어도 하나 이상의 액션(들)(action(s))은 도 1 또는 도 5 또는 도 1의 프리-패치 유닛(104)의 장치들 및 시스템들로부터 수행될 수 있다.
블록(404)에서, 상술한 바와 같이, 메모리 어드레스의 제1 부분이 메모리의 미리 결정된 영역에 매치한다고 판단될 수 있다. 몇몇 실시 예들로서, 상술한 바와 같이 메모리 어드레스가 매치하는지 판단하는 단계는 메모리 어드레스의 제1 부분이 제1 데이터 구조의 엔트리에 매치하는지 감지할 수 있다.
다양한 실시 예들로서, 상술한 바와 같이 메모리 어드레스의 제1 부분이 매치하는지 판단하는 단계는 메모리 어드레스의 제1 부분이 명령 스트림들의 일부와 관련된 미리 결정된 영역에 대해 매치하는지 판단할 수 있다. 다양한 실시 예들로서, 상술한 바와 같이 블록(404)의 적어도 하나 이상의 액션(들)은 도 1 또는 도 5 또는 도 1의 프리-패치 유닛(104)의 장치들 및 시스템들로부터 수행될 수 있다.
블록(406)에서, 상술한 바와 같이 메모리 어드레스의 제2 부분이 이전에 감지된 프리-패치된 어드레스 부분에 매치하는지 판단될 수 있다. 몇몇 실시 예들로서, 상술한 바와 같이 메모리 어드레스의 제2 부분이 매치하는지 판단하는 단계는 메모리 어드레스의 제2 부분이 제2 데이터 구조의 엔트리에 매치하는지 감지할 수 있다. 다양한 실시 예들로서, 메모리 어드레스의 제2 부분이 매치하는지 판단하는 단계는 처리 전 프리-패치된 부분, 처리 중 프리-패치된 부분 및 완료된 프리-패치된 부분 중 적어도 하나와 비교할 수 있다.
다양한 실시 예들로서, 메모리 어드레스의 제1 부분이 매치하고 메모리 어드레스의 제2 부분이 매치하는지 판단하는 단계는 생략된 두 단계 룩 업을 포함할 수 있다. 다양한 실시 예들로서, 상술한 바와 같이 블록(406)의 적어도 하나 이상의 액션(들)은 도 1 또는 도 5 또는 도 1의 프리-패치 유닛(104)의 장치들 및 시스템들로부터 수행될 수 있다.
블록(408)에서, 상술한 바와 같이 메모리 어드레스의 제1 부분이 메모리의 미리 결정된 영역에 매치하고, 메모리 어드레스의 제2 부분이 이전에 감지된 프리-패치된 어드레스 부분에 매치하면, 메모리 어드레스에 관련된 프리-패치 패턴은 확인될 수 있다. 몇몇 실시 예들로서, 상술한 바와 같이 메모리 어드레스의 제1 및 제2 부분들이 제1 및 제2 부분들 각각의 값들과 매치한다면, 메모리 어드레스에 저장된 데이터에 액세스하기 위한 요구는 이전 트레이닝을 재실행하기 위한 프리-패치 유닛에 대한 엔트리로써 처리될 수 있다. 다양한 실시 예들로서, 상술한 바와 같이 블록(408)의 적어도 하나 이상의 액션(들)은 도 1 또는 도 5 또는 도 1의 프리-패치 유닛(104)의 장치들 및 시스템들로부터 수행될 수 있다.
블록(410)에서, 상술한 바와 같이 메모리 어드레스의 제1 부분이 메모리의 미리 결정된 영역에 매치하지 않고 메모리 어드레스의 제2 부분이 이전에 감지된 프리-패치된 어드레스 부분에 매치하지 않으면, 프리-패치 유닛은 메모리 어드레스의 적어도 일부분을 기반으로 트레이닝될 수 있다. 몇몇 실시 예들로서, 상술한 바와 같이 메모리 어드레스의 제1 부분이 메모리의 미리 결정된 영역에 매치하지 않으면, 메모리 어드레스의 제2 부분이 매치하는지 판단하는 단계는 생략될 수 있고, 메모리 어드레스에 저장된 데이터를 액세스하기 위한 요구는 프리-패치 유닛의 새로운 엔트리로써 처리될 수 있다. 다양한 실시 예들로서, 상술한 바와 같이 블록(410)의 적어도 하나 이상의 액션(들)은 도 1 또는 도 5 또는 도 1의 프리-패치 유닛(104)의 장치들 및 시스템들로부터 수행될 수 있다.
도 5는 본 발명의 실시 예에 따른 처리 시스템을 보여주는 블록도이다. 처리 시스템(500)은 본 발명에 개시된 반도체 장치를 포함할 수 있다.
도 5를 참조하면, 정보 처리 시스템(500)은 본 발명에 개시된 원리들을 따르는 적어도 하나 이상의 장치들을 포함할 수 있다. 다른 실시 예로서, 정보 처리 시스템(500)은 본 발명에 개시된 원리들을 따르는 적어도 하나 이상의 기술들을 사용하거나 실행 할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(400)은 휴대용 컴퓨터, 사무용 컴퓨터, 워크스테이션(workstation), 서버(server), 블레이드 서버(blade server), 개인 휴대 정보 단말기, 스마트 폰(smart phone), 테블릿(tablet), 및 다른 적합한 컴퓨터들 또는 가상 기계 또는 가상 컴퓨팅(computing) 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들로서, 정보 처리 시스템(500)은 유저(user, 미 도시)로부터 사용될 수 있다.
개시된 주제와 관련된 정보 처리 시스템(500)은 더 나아가 중앙 처리 유닛(CPU), 로직(logic), 또는 프로세서(510)를 포함할 수 있다. 몇몇 예시들로서, 프로세서(510)는 하나 이상의 기능 단위 블록들(FUBs) 또는 조합 로직 블록들(CLBs)(515)를 포함할 수 있다. 이러한 일 실시 예로서, 조합 로직 블록은 다양한 불 논리 동작들(Boolean logic operations)(예를 들어, NAND, NOR, NOT, XOR, 등) 안정 로직 장치들(예를 들어, 플립-플롭들(flip-flops), 래치들(latches) 등), 다른 로직 장치들 또는 이들을 결합한 장치들을 포함할 수 있다. 이러한 조합 논리 동작들은 바라던 결과를 성취하기 위한 입력 신호들을 처리하는 단순하거나 복잡한 방식을 포함할 수 있다.
동기 조합 논리 연산의 몇몇 예시들은 예시적인 실시 예를 설명하면서, 개시된 요지는 이에 한정되지 않고, 비 동기 동작 또는 이들을 혼합한 것을 포함할 수 있다고 이해된다. 일 실시 예로서, 조합 논리 동작은 복수의 상보형 금속 산화 반도체(CMOS) 트랜지스터들로 구성될 수 있다. 다양한 실시 예들로서, 이러한 CMOS 트랜지스터들은 논리 동작을 수행하기 위한 게이트들로 구성될 수 있다. 다른 기술들은 사용될 수 있고, 개시된 요지의 스코프(scope) 내에 있다고 이해된다.
개시된 요지에 따른 정보 처리 시스템(500)은 휘발성 메모리(520)(예를 들어, 랜덤 액세스 메모리(Random Access Memory, RAM), 등)를 더 포함할 수 있다. 개시된 요지에 따른 정보 처리 시스템(500)은 비 휘발성 메모리(530)(예를 들어, 하드 드라이브(hard drive), 광 메모리, NAND 또는 플래시 메모리(Flash memory), 등)를 더 포함할 수 있다. 몇몇 실시 예들로서, 휘발성 메모리(520), 비 휘발성 메모리(530), 또는 그것의 부분들 또는 결합은 "저장 매체"라고 할 수 있다. 다양한 실시 예들로서, 휘발성 메모리(520) 및/또는 비 휘발성 메모리(530)는 반 영구적이거나 영구적인 형태로 데이터를 저장할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(500)은 정보 처리 시스템(400)의 일부 및 통신 네트워크를 통해 통신할 수 있도록 구성된 하나 이상의 네트워크 인터페이스들(network interfaces)(540)을 포함할 수 있다. (와이-파이(Wi-Fi) 프로토콜은 전자 전기 기술자 협회(IEEE)802.11g, IEEE 802.11n 등을 포함할 수 있다. 하지만 이에 한정되지 않는다. 무선 프로토콜은 IEEE 802.16m, GSM에 대한 향상된 데이터 레이트(Global System for Mobile Communication) 에볼루션(Evolution)(EDGE), 이볼브드(Evolved) 고속 패킷 접속(HSPA+)등을 포함할 수 있다. 유선 프로토콜은 IEEE 802.3, 파이버 채널(Fibre Channel), 전력선 통신망(홈 플러그(Home Plug), IEEE1901)등을 포함할 수 있다.
개시된 요지에 따른 정보 처리 시스템(500)은 사용자 인터페이스부(550)(예를 들어, 디스플레이 어댑터(display adapter, 햅틱 인터페이스(haptic interface), 인간 인터페이스 장치, 등)를 더 포함할 수 있다. 다양한 실시 예들로서, 사용자 인터페이스부(450)는 사용자로부터 입력을 받고/거나 사용자에게 출력을 공급할 수 있다. 다른 종류의 장치들은 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 공급되는 피드백(feedback)은 시각 피드백, 청각 피드백, 또는 촉각 피드백 및 사용자가 청각, 말, 또는 촉각과 같은 임의의 형태를 수신함으로써 감각적 피드백의 임의의 형태일 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(500)은 하나 이상의 다른 장치들 또는 하드웨어 요소들(560)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 장치, 등)을 포함할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
개시된 요지와 관련된 정보 처리 시스템(500)은 하나 이상의 시스템 버스들(system buses)(505)을 더 포함할 수 있다. 이러한 일 실시 예로서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 비 휘발성 메모리(530), 네트워크 인터페이스(440), 사용자 인터페이스부(550) 및 하나 이상의 하드웨어 요소들(460)을 통신할 수 있게 연결할 수 있다. 프로세서(510)로부터 진행되는 데이터, 또는 비 휘발성 메모리(530)의 외부로부터 입력되는 데이터는 비 휘발성 메모리 장치(430) 또는 휘발성 메모리 장치(520)에 저장될 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(500)은 하나 이상의 소프트웨어(software) 요소들(570)을 실행 또는 포함할 수 있다. 몇몇 실시 예들로서, 소프트웨어 요소들(570)은 운영 체제(OS) 및/또는 어플리케이션(application)을 포함할 수 있다. 몇몇 실시 예들로서, OS는 어플리케이션을 위한 하나 이상의 서비스들 및 어플리케이션과 정보 처리 시스템(500)의 다양한 하드웨어 요소들(예를 들어, 프로세서(510), 네트워크 인터페이스(540), 등) 사이의 중개자로서 동작 또는 운영하도록 구성될 수 있다.
이러한 일 실시 예로서, 정보 처리 시스템(500)은 국부적으로 설치될 수 있고(예를 들어, 비 휘발성 메모리(530) 내에), 프로세서(510)로부터 바로 실행되고, OS와 바로 상호작용하는 하나 이상의 네이티브 어플리케이션들(native applications)을 포함할 수 있다. 이러한 일 실시 예로서, 네이티브 어플리케이션들은 프로세서(410)에 의해 실행되는 코드 내에 오브젝트 코드(object code) 또는 변환 소스로 구성된 스크립트(script) 해석기(예를 들어, C셀(csh), 애플스크립트(AppleScript), 오토 핫키(Auto Hotkey), 등) 또는 가상 실행 기기(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) 기술 또는 당업자에게 공지되어있을 것 같은 다른 방법 중 어느 하나를 사용하여 캡슐화될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 시스템 144: 프리-패치 확인기
102: 실행부 180: 확인 테이블
114: L1 필 버퍼 184: 영역 테이블
116: L1 캐시 186: 어드레스 테이블
118, 128, 138: 데이터 188: 데이터 스코어보드들
126: L2 캐시 190: 명령들
114: L1 필 버퍼 192: 프리-패치 데이터
140: 패턴 식별자 194: 액세스된 데이터
198: 데이터 요청 500: 처리 시스템
510: 프로세서 515: 로직 블록들
520: 휘발성 메모리 530: 비휘발성 메모리
540: 네트워크 인터페이스 550: 유저 인터페이스 유닛
560: 다른 하드웨어 장치들 570: 소프트웨어
102: 실행부 180: 확인 테이블
114: L1 필 버퍼 184: 영역 테이블
116: L1 캐시 186: 어드레스 테이블
118, 128, 138: 데이터 188: 데이터 스코어보드들
126: L2 캐시 190: 명령들
114: L1 필 버퍼 192: 프리-패치 데이터
140: 패턴 식별자 194: 액세스된 데이터
198: 데이터 요청 500: 처리 시스템
510: 프로세서 515: 로직 블록들
520: 휘발성 메모리 530: 비휘발성 메모리
540: 네트워크 인터페이스 550: 유저 인터페이스 유닛
560: 다른 하드웨어 장치들 570: 소프트웨어
Claims (10)
- 메모리 어드레스에 저장된 액세스 데이터(access data)에 대한 요구를 프리-패치 유닛(pre-fetch unit)으로부터 수신하는 단계;
상기 메모리 어드레스의 제1 부분에 메모리의 미리 결정된 영역이 매치하는지 판단하는 단계;
상기 메모리 어드레스의 제2 부분이 이전에 감지된 프리-패치 어드레스 부분에 매치하는지 판단하는 단계; 및
상기 메모리 어드레스의 상기 제1 부분이 상기 미리 결정된 메모리의 영역에 매치하고, 상기 메모리 어드레스의 상기 제2 부분이 상기 이전에 감지된 프리-패치 어드레스 부분에 매치하면, 상기 메모리 어드레스와 프리-패치 패턴(pre-fetch pattern)이 관련되는지 확인하는 단계를 포함하는 동작 방법. - 제 1 항에 있어서,
상기 메모리 어드레스의 상기 제1 부분에 상기 메모리의 미리 결정된 영역이 매치하지 않고, 상기 메모리 어드레스의 상기 제2 부분에 상기 이전에 감지된 프리-패치 어드레스 부분이 매치하지 않으면, 상기 프리-패치 유닛에 기반하여 상기 메모리 어드레스의 적어도 일부분을 트레이닝(training)하는 단계를 더 포함하는 동작 방법. - 제 1 항에 있어서,
상기 프리-패치 유닛은 실질적으로, 복수의 명령 스트림들(streams)에 대한 프리-패치 데이터로 구성되고;
상기 메모리 어드레스의 상기 제1 부분에 상기 메모리의 미리 결정된 영역이 매치하는지 판단하는 단계는 상기 메모리 어드레스의 상기 제1 부분이 상기 명령 스트림들 중 일부분에 관련된 이전에 감지된 영역에 매치하는지 판단하는 동작 방법. - 제 1 항에 있어서,
상기 메모리 어드레스의 상기 제2 부분에 상기 이전에 감지된 프리-패치 어드레스 부분이 매치하는지 판단하는 단계는 처리 전 프리-패치된 부분, 처리 중 프리-패치된 부분 및 완료 프리-패치된 부분 중 적어도 하나에 대해 비교하는 동작 방법. - 복수의 명령 스트림들의 예측 데이터 액세스를 포함하는 패턴 식별자(pattern identifier); 및
실제 데이터 액세스가 상기 패턴 식별자로부터 예측된다면 두 단계의 룩-업을 통해 판단하도록 구성된 프리-패치 확인기(pre-fetch confirmer)를 포함하는 장치. - 제 5 항에 있어서,
상기 프리-패치 확인기는,
예측된 데이터 액세스에서 메모리의 적어도 하나 이상의 영역들을 확인하기 위한 제1 데이터 구조; 및
데이터 액세스의 적어도 하나 이상의 예측된 패턴들의 메모리 어드레스와 관련된 제2 데이터 구조를 유지하는 장치. - 제 5 항에 있어서,
상기 프리-패치 확인기는:
상기 두 단계의 룩 업의 제1 단계에서, 예측된 데이터 액세스에서 메모리의 상기 적어도 하나 이상의 영역들의 리스트로부터 상기 메모리 어드레스의 제1 부분을 비교하고,
상기 두 단계의 룩-업의 제2 단계에서, 상기 메모리 어드레스의 제2 부분 및 상기 예측된 데이터 액세스 사이에서 연관이 존재하는지 판단하는 장치. - 제 5 항에 있어서,
상기 두 단계의 룩 업의 상기 제1 및 제2 단계 모두 페일(fail)이면, 상기 패턴 식별자는 예측 미래 데이터 액세스들에 따라 새로운 데이터 액세스로서 상기 실제 데이터 액세스를 다루기 위해 구성된 장치. - 제 5 항에 있어서,
상기 프리-패치 확인기는
처리 전 활성화 명령 스트림과 관련된 프리-패치 데이터 요청들, 처리 중 프리-패치 데이터 요청들 및 완료된 프리-패치 데이터 요청들을 나타내는 엔트리들을 혼합한 적어도 하나의 데이터 구조를 유지하는 장치. - 적어도 하나 이상의 명령 스트림들을 실행하기 위한 실행 유닛(execution unit);
복수의 명령 스트림들의 데이터 액세스를 예측하고,
두 단계의 룩 업(look up) 및 확인 데이터 구조를 통해 실제 데이터 액세스가 예측되는지 판단하는 프리-패치 유닛(pre-fetch unit)을 포함하되,
상기 실행 유닛은 상기 적어도 하나 이상의 명령 스트림들로부터 지시를 받는 실제 데이터 액세스를 수행하는 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461926931P | 2014-01-13 | 2014-01-13 | |
US61/926,931 | 2014-01-13 | ||
US14/451,375 | 2014-08-04 | ||
US14/451,375 US20150199276A1 (en) | 2014-01-13 | 2014-08-04 | Pre-fetch confirmation queue |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150084669A true KR20150084669A (ko) | 2015-07-22 |
KR102393151B1 KR102393151B1 (ko) | 2022-05-02 |
Family
ID=53521495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150004314A KR102393151B1 (ko) | 2014-01-13 | 2015-01-12 | 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150199276A1 (ko) |
KR (1) | KR102393151B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020214276A1 (en) * | 2019-04-15 | 2020-10-22 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170109069A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US10540287B2 (en) | 2017-05-12 | 2020-01-21 | Samsung Electronics Co., Ltd | Spatial memory streaming confidence mechanism |
US10387320B2 (en) * | 2017-05-12 | 2019-08-20 | Samsung Electronics Co., Ltd. | Integrated confirmation queues |
US10346304B2 (en) * | 2017-07-25 | 2019-07-09 | Microsoft Technology Licensing, Llc | Cache management for multi-node databases |
US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US10782908B2 (en) | 2018-02-05 | 2020-09-22 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US10880401B2 (en) * | 2018-02-12 | 2020-12-29 | Micron Technology, Inc. | Optimization of data access and communication in memory systems |
US10877892B2 (en) | 2018-07-11 | 2020-12-29 | Micron Technology, Inc. | Predictive paging to accelerate memory access |
US10977176B2 (en) * | 2018-11-26 | 2021-04-13 | Marvell Asia Pte, Ltd. | Prefetching data to reduce cache misses |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143375A1 (en) * | 2004-12-29 | 2006-06-29 | Bharadwaj Pudipeddi | Content addressable memory with shared comparison logic |
US20110173397A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Programmable stream prefetch with resource optimization |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807110A (en) * | 1984-04-06 | 1989-02-21 | International Business Machines Corporation | Prefetching system for a cache having a second directory for sequentially accessed blocks |
US6976147B1 (en) * | 2003-01-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Stride-based prefetch mechanism using a prediction confidence value |
-
2014
- 2014-08-04 US US14/451,375 patent/US20150199276A1/en not_active Abandoned
-
2015
- 2015-01-12 KR KR1020150004314A patent/KR102393151B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143375A1 (en) * | 2004-12-29 | 2006-06-29 | Bharadwaj Pudipeddi | Content addressable memory with shared comparison logic |
US20110173397A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Programmable stream prefetch with resource optimization |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020214276A1 (en) * | 2019-04-15 | 2020-10-22 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
Also Published As
Publication number | Publication date |
---|---|
KR102393151B1 (ko) | 2022-05-02 |
US20150199276A1 (en) | 2015-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102393151B1 (ko) | 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
KR102538139B1 (ko) | 공간적 메모리 스트리밍 신뢰 메커니즘 | |
KR102424121B1 (ko) | 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법 | |
US7739477B2 (en) | Multiple page size address translation incorporating page size prediction | |
US10372618B2 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
US10303608B2 (en) | Intelligent data prefetching using address delta prediction | |
KR102513446B1 (ko) | 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 | |
US10579522B2 (en) | Method and device for accessing a cache memory | |
KR102398604B1 (ko) | 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법 | |
US11030030B2 (en) | Enhanced address space layout randomization | |
TWI774703B (zh) | 偵測與處理儲存串流的系統與方法 | |
KR20150110337A (ko) | 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법 | |
JP2020514859A (ja) | 変換索引バッファにおける構成可能なスキューアソシエイティビティ | |
US20070186046A1 (en) | Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
EP2562652B1 (en) | System and method for locking data in a cache memory | |
US20190286718A1 (en) | Data structure with rotating bloom filters | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
JP2024510127A (ja) | ページ再マッピングおよびローテーションによるアドレス空間配置のランダム化エントロピーの増大 | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
JP2022502729A (ja) | メモリ・アクセス制御 | |
KR20240067951A (ko) | 다른 캐시의 삽입 정책에 대해 한 캐시의 요청 클래스 및 재사용 기록 사용 | |
US20160124859A1 (en) | Computing system with tiered fetch mechanism and method of operation thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |