KR102538139B1 - 공간적 메모리 스트리밍 신뢰 메커니즘 - Google Patents

공간적 메모리 스트리밍 신뢰 메커니즘 Download PDF

Info

Publication number
KR102538139B1
KR102538139B1 KR1020180029203A KR20180029203A KR102538139B1 KR 102538139 B1 KR102538139 B1 KR 102538139B1 KR 1020180029203 A KR1020180029203 A KR 1020180029203A KR 20180029203 A KR20180029203 A KR 20180029203A KR 102538139 B1 KR102538139 B1 KR 102538139B1
Authority
KR
South Korea
Prior art keywords
offset
entry
values
per
pht
Prior art date
Application number
KR1020180029203A
Other languages
English (en)
Other versions
KR20180124712A (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 KR20180124712A publication Critical patent/KR20180124712A/ko
Application granted granted Critical
Publication of KR102538139B1 publication Critical patent/KR102538139B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

공간 메모리 스트리밍(SMS) 선인출 엔진을 위한 장치들 및 그것을 제조하는 방법들, 시스템들, 그리고 방법들이 기술된다. 일 측면에서, SMS 선인출 엔진은 적어도 하나의 테이블을 포함하고, 적어도 하나의 테이블의 각 엔트리는 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 오프셋 목록 필드의 오프셋 값들에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블을 포함한다. PHT 엔트리가 활성화될 때, 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들은 현재 액세스들을 활성화된 PHT 엔트리의 저장된 오프셋 값들에 매칭함으로써 갱신된다. 오프셋 당 신뢰도 레벨들에 의해 SMS 선인출 엔진에 연속적인 학습이 제공된다.

Description

공간적 메모리 스트리밍 신뢰 메커니즘{SPATIAL MEMORY STREAMING CONFIDENCE MECHANISM}
본 기재는 일반적으로 프로세서 메모리 관리에 관한 것으로, 더 상세하게는 공간 메모리 스트리밍 신뢰 메커니즘들에 관한 것이다.
컴퓨터 프로세서들은 캐시 선인출(cache prefetching)을 수행하여 명령들 또는 데이터가 실제로 필요하기 전에 이들을 더 느린 메모리(즉, 더 느린 읽기/쓰기 시간들을 갖는)의 원 저장소로부터 더 빠른 국부 메모리(즉, 더 빠른 읽기/쓰기 시간들을 갖고 때때로 명령/데이터 파이프라인들에 더 가깝게 위치하는)로 가져옴으로써 실행 성능을 높인다. 대부분의 현대 컴퓨터 프로세서들은 선인출된 데이터 그리고/또는 명령들이 필요할 때까지 유지되는 하나 또는 그보다 많은 빠른 국부 캐시 메모리들을 갖는다.
그러나 선인출은 추측에 의해 작동한다. 더 기술적으로 말하면, 선인출은 처리 엔진에 의해 데이터/명령들에 대한 현재의 일련의 메모리 요구들을 이용하여, 예를 들어 과거 성능, 확률 모델들, 그리고/또는 알고리즘들에 기반하여 처리 엔진이 다음에 어떤 데이터/명령들을 요구할지를 예측한다. 따라서, 잘못된 데이터가 더 빠른 국부 메모리로부터 제거되어야 하고, 그리고 정확한 데이터가 액세스 되고 더 빠른 국부 메모리로 이동되어야 하므로, 부정확한 선인출들은 문제가 된다. 부정확한 선인출들은 전력 소비를 불필요하게 증가시키고, 시스템 정체(적어도 잘못된 데이터의 정확한 데이터로의 추가된 움직임/교환에 의해 유발되는)를 생성하고, 그리고 캐시들의 정상 기능을 분명히 오염시키고 그리고 불안정하게 한다.
보통 순차 선인출 및 보폭(stride) 선인출과 같은 데이터/명령들을 선인출하기 위한 패턴들에 의해 구별되는 상이한 선인출의 방법들이 존재한다. 다소 과도하게 단순화되지만, 순차 선인출은 연속한 인접한 메모리 블록들을 선인출하는 것으로 생각될 수 있고, 보폭 선인출은 메모리 블록들을 선인출하기 위해 앞으로 점프(또는 다수의 블록들의 보폭으로 걷는(striding))하는 것으로 생각될 수 있다.
공간 메모리 스트리밍으로 알려진 보폭과 연관된 더 특화된 스킴 또한 존재한다. 예를 들어, 제33회 컴퓨터 구조에 대한 심포지엄(International Symposium on Computer Architecture)(ISCA 2006)에서 소모기 등(Somogyi et al.)에 의해 발행된 공간 메모리 스트리밍(Spatial Memory Streaming)의 252 내지 263 페이지들(이하에서, "소모기 2006"), 그리고 명령-레벨 평행론의 저널 13(Journal of Instruction-Level Parallelism 13)에서 소모기 등(Somogyi et al.)에 의해 발행된 공간 메모리 스트리밍(Spatial Memory Streaming)의 1 내지 26 페이지들(이하에서, "소모기 2011")이 전체적으로 참조에 의해 여기에 병합된다. 공간 메모리 스트리밍(SMS)에서, 코드 및 액세스 패턴들 사이의 강한 연관들이 검출되고 그리고 이용되어 유사한 연관된 공간(공간 연관)의 그룹들 내에서 메모리 액세스 패턴이 예측된다.
그러나 SMS 스킴들은 다양한 약점들에 시달린다. SMS는 캐시들 사이의 라인 경계들에 대한 패턴들의 정렬을 옮기는 것을 처리할 수 없다. 또한, 통상적으로 공간 패턴들에 대해 사용되는 공간 비트 벡터들은 액세스 당 더 큰 단위(granularity)를 강요하며, 시간적 순서를 추적할 수 없다. SMS는 또한 강건한 신뢰 메커니즘들이 부족하며 동적으로 적응적이지 않다. 즉, SMS는 동적 브랜치 행동이 오프셋 패턴들을 변경할 때와 같은 프로그램 페이즈(program phase) 변화들에 적응할 수 없다. 이러한 단점들은 감소된 범위(coverage) 및 정확도, 그리고 적시성들(timeliness)의 손실을 유발하며, 따라서 성능을 줄이고 전력 소비를 증가시킨다.
따라서, 본 기재는 적어도 여기에 기술된 문제들 그리고/또는 단점들을 해결하고 그리고 적어도 아래에 기술된 장점들을 제공하도록 제공된다.
본 기재의 측면에 따르면, 공간 메모리 스트리밍(SMS) 선인출 엔진이 제공된다. SMS 선인출 엔진은 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 각 엔트리는 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 각각 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 포함하고, PHT 엔트리가 활성화될 때, 상기 오프셋 값들에 대응하는 상기 오프셋 당 신뢰도 값들은 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 저장된 오프셋 값들에 매칭함으로써 갱신되고, 그리고 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공된다.
본 기재의 측면에 따르면, 공간 메모리 스트리밍(SMS) 선인출 엔진을 위한 방법이 제공된다. 방법은 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 각 엔트리는 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 각각 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 저장된 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 포함하고, 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공된다.
본 기재의 측면에 따르면, 장치가 제공된다. 장치는 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체; 그리고 상기 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때, 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 각 엔트리는 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 각각 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 저장된 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 수행하는 공간 메모리 스트리밍(SMS) 선인출 엔진의 적어도 일부를 포함하는 적어도 하나의 프로세서를 포함한다. 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공된다.
본 기재의 측면에 따르면, 칩셋을 제조하는 방법이 제공된다. 방법은 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때, 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 각 엔트리는 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 각각 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 저장된 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 수행하는 적어도 하나의 프로세서를 포함한다. 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공된다.
본 기재의 측면에 따르면, 장치를 테스트하는 방법이 제공된다. 방법은 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때, 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 각 엔트리는 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 각각 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 저장된 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 수행하는 적어도 하나의 프로세서를 장기 장치가 갖는지 테스트하는 단계; 그리고 상기 장치가 상기 명령들을 저장하는 상기 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체를 갖는지 테스트하는 단계를 포함한다. 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공된다.
본 발명은 변화하는 프로그램 행동에 적응하는 연속적인 학습, 시간적 순서를 확보하는 오프셋 목록, 이전 라인 또는 후속 라인에 대한 액세스들의 차별화를 가능하게 하는 바이트 입상도(byte granularity), 시간에 따른 정확도를 위해 추적되는 개별 오프셋들을 허용하는 오프셋 당 신뢰도, 그리고 최선의 훈련된 엔트리들로부터 발행되는 최대의 선인출들을 허용하는 확인 스킴을 제공한다.
본 발명은 또한 PC 트리거의 두 번째 발생에 따른 승격을 가짐으로써 그리고 트리거-대-트리거 스탬프를 이용함으로써 더 영리한 훈련, PHT 테이블의 PC 트리거들의 블랙리스트(인라인 또는 아웃 오브 라인일 수 있는), 트리거-대-트리거 보폭 검출, 그리고 PHT 엔트리들을 인덱스하는 PC 트리거의 해시의 사용을 제공한다.
본 기재의 특정한 실시 예들의 위의 그리고 다른 측면들, 특성들, 그리고 장점들이 첨부된 도면들과 연관되어 아래의 상세한 설명으로부터 더 명백해질 것이다.
도 1은 일 실시 예에 따른 본 시스템의 적절한 구성 요소들의 예시적인 블록도를 보여준다.
도 2는 본 기재의 실시 예에 따른 L2 캐시(170) 내의 영역의 예시도이다.
도 3은 본 기재의 실시 예에 따른 패턴 히스토리 테이블 내의 엔트리의 예시도이다.
도 4는 일 실시 예에 따른 SMS 엔진의 적절한 구송 요소들 및 내부의 정보의 이동을 보여주는 예시적인 블록도를 보여준다.
도 5는 본 기재의 실시 예에 따른 검색된 공간 패턴들을 훈련/학습하고 저장하는 예시적인 방법의 수정된 순서도이다.
도 6a 내지 도 6c는 본 기재의 실시 예에 따른 부분 순서도 형태에서 필터 및 훈련 테이블 상태들에 기반하여 SMS 훈련 결과들의 예들을 제공한다.
도 7은 ROQ 내의 일련의 캐시 라인 로드 명령들 또는 액세스들로부터 PHT 엔트리가 생성되는 방법의 예를 보여준다.
도 8은 본 기재의 실시 예들에 따라, 저장된 PHT 엔트리의 PC 트리거가 ROQ에서 식별된 때에, 오프셋 목록 필드에 저장된 공간 패턴에 의해 지정되는 메모리 위치들로부터 데이터/명령들을 선인출하는 데에 PHT 엔트리가 어떻게 이용되는지의 예를 보여준다.
도 9는 일 실시 예에 따른 본 장치의 예시적인 도면을 보여준다.
도 10은 본 기재의 실시 예에 따른 본 장치를 제조하고 테스트하기 위한 예시적인 순서도를 보여준다.
이하에서, 본 기재의 실시 예들이 첨부된 도면들을 참조하여 상세히 설명된다. 동일인 요소들은 상이한 도면들에서 보이더라도 동일한 참조 번호들로 지정된다. 아래의 설명에서, 상세한 구성들 및 구성 요소들과 같은 구체적인 상세들은 본 기재의 실시 예들의 전체적인 이해를 돕기 위해서만 제공된다. 따라서, 여기에 기술된 실시 예들의 다양한 변경들 및 수정들이 본 기재의 범위로부터 멀어지지 않으면서 행해질 수 있음이 이 분야에 숙련된 자들에게 명백하다. 또한, 잘 알려진 기능들 및 구조들의 설명들은 명확성 및 간결성을 위해 생략된다. 아래에 기술되는 용어들은 본 기재 내에서의 기능들을 고려하여 정의된 용어들이며, 사용자들, 사용자들의 의도들, 또는 관습에 따라 다를 수 있다. 따라서, 용어들의 정의들은 상세한 설명 전체의 문맥들에 기반하여 판단되어야 한다.
본 기재는 다양한 수정들 및 다양한 실시 예들을 가질 수 있으며, 이들 중의 실시 예들이 첨부된 도면들을 참조하여 아래에서 상세히 설명된다. 그러나 본 기재는 실시 예들로 한정되지 않으며, 본 기재의 범위 내의 모든 수정들, 등가물들, 그리고 대안들을 포함함이 이해되어야 한다.
제1 및 제2와 같은 서수들을 포함하는 용어들은 다양한 요소들을 설명하기 위하여 사용되지만, 구조적 요소들은 용어들에 의해 제한되지 않는다. 용어들은 하나의 요소를 다른 하나의 요소로부터 구분하는 데에만 사용된다. 예를 들어, 본 기재의 범위로부터 멀어지지 않으면서, 제1 구조적 요소는 제2 구조적 요소로 나타내어질 수 있다. 유사하게, 제2 구조적 요소는 제1 구조적 요소로 나타내어질 수 있다. 여기에서 사용되는 바와 같이, "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 모든 조합들을 포함한다.
여기의 용어들은 본 기재의 다양한 실시 예들을 설명하는 데에만 사용되며, 본 기재를 한정하는 것을 의도하지 않는다. 단수 형태들은 문맥이 명확히 다르게 가리키지 않으면 복수 형태들을 포함하도록 의도된다. 본 기재에서, "포함한다" 또는 "갖는다"의 용어들은 특성, 수, 단계, 동작, 구조적 요소, 부분들, 또는 이들의 조합의 존재를 가리키며, 하나 또는 다른 특성들, 수들, 단계들, 동작들, 구조적 요소들, 부분들, 또는 이들의 조합들의 추가의 존재 또는 확률을 배제하지 않는다.
다르게 정의되지 않으면, 여기의 모든 용어들은 본 기재가 속한 분야에 숙련된 자에 의해 이해되는 동일한 의미들을 갖는다. 일반적으로 사용되는 사전에서 정의된 것과 같은 용어들은 연관된 기술 분야에서 문맥상의 의미들과 동일한 의미들을 갖는 것으로 해석된다.
다양한 실시 예들은 하나 또는 그보다 많은 요소들을 포함할 수 있다. 요소는 특정한 동작들을 수행하도록 배열된 임의의 구조를 포함할 수 있다. 예시의 방법으로써 실시 예가 특정한 배열 내의 제한된 수의 요소들로 설명되지만, 실시 예는 주어진 구현을 위해 필요한 대안의 배열들에서 더 많은 또는 더 적은 요소들을 포함할 수 있다. "일 실시 예" 또는 "실시 예"에 대한 임의의 참조는 실시 예와 연계하여 설명된 구체적인 특성, 구조 또는 특징이 적어도 하나의 실시 예에 포함됨을 의미함은 유의할 가치가 있다. 이 상세한 설명에서 다양한 장소들에서 "일 실시 예"(또는 "실시 예")의 문구의 등작은 동일한 실시 예를 참조할 필요는 없다.
본 기재의 실시 예들은 선인출 엔진을 갱신하고 제어하는 시스템들, 방법들, 그리고 장치들을 제공한다. 일 실시 예에 따르면, 본 기재는 변화하는 프로그램 행동에 적응하는 지속적인 학습을 제공한다.
일 실시 예에 따르면, 본 기재는 공간적 뿐 아니라 시간적 순서도 포착하는 오프셋 목록을 제공하며, 따라서 향상된 적시성(timeliness)이 유발된다. 영역에 캐시 라인 당 하나의 비트를 저장하는 대신, 본 기재는 일 실시 예에 따라 오프셋들의 목록을 이용한다. 다른 실시 예에서, 오프셋들은 공간 비트 벡터로 저장된다.
일 실시 예에 따르면, 본 기재는 이전 라인 또는 후속 라인에 대한 액세스들(캐시 로드 명령들)의 차별화를 가능하게 하는 바이트 입상도(byte granularity)를 제공한다. 본 기재의 실시 예들은 바이트에 이르는 시작 오프셋 메모리 주소를 저장할 수 있다. 일 실시 예에서, 액세스에 필요한 사이즈 또한 추가 필드에 저장된다.
다양한 실시 예들에 따르면, 본 기재는 오프셋들이 정확도에 대해 개별적으로 평가되는 것을 허용하는 오프셋 당 신뢰도를 제공한다. 따라서, 본 기재에 따른 시스템은, 예를 들어 브랜치들에 따른 변화하는 프로그램 페이즈에 적응한다. 본 기재의 일 실시 예에 따른 본 시스템은 액세스 큐를 이용하여 훈련을 확인한다. 본 기재의 일 실시 예에 따른 본 시스템은 신뢰도 레벨들을 이용하여, 예를 들어 두드러진 선인출들의 수를 조절한다. 일 실시 예에 따르면, 본 시스템은 최선의 훈련된 엔트리들로부터 최대의 선인출들이 발행되는 것을 허용하는 확인 스킴을 제공한다.
다양한 실시 예들에 따르면, 본 기재는 또한 트리거의 두 번째 발생에 따른 승격을 가짐으로써 그리고 트리거-대-트리거 스탬프를 이용함으로써 더 영리한 훈련을; 트리거들의 블랙리스트들을(인라인 또는 아웃 오브 라인일 수 있는); 트리거-대-트리거 보폭 검출을; 그리고 테이블 엔트리들을 인덱스하는 트리거의 해시의 이용을 제공한다.
도 1은 일 실시 예에 따른 본 시스템의 적절한 구성 요소들의 예시적인 블록도를 보여준다. 하나 또는 그보다 많은 코어 프로세서들(150)은 데이터를 수반하는 명령들을 실행하며, 이들 모두는 메모리에 저장된다. 이를 위해, 코어 프로세서(들)(150)는 처리 동안에 데이터 및 명령들을 위한 L1 캐시(160)를 액세스한다. 차례대로, L1 캐시(160)는 L2 캐시(170)를 액세스한다.
L2 캐시(170)에 내에 저장된 데이터/명령들을 액세스하는 점에서, L2 캐시(170)는 아래에서 더 상세히 설명되는 공간 영역들로 나누어진다. 선인출기(165)는 다중 보폭 엔진(175) 및 SMS 엔진(110)의 제어 하에 L2 캐시(170)로부터 영역들을 가져오는 것을 수행한다. 위에서 논의된 바와 같이, 선인출기(165)는 코어 프로세서(150)가 곧바로 그 데이터를 필요로 할 것이라는 예측에 기반하여, L2 캐시(170) 내의 메모리 주소들을 액세스하고 데이터를 L1 캐시(160)에 로드한다. 이러한 구성 요소들의 동작들 및 상호 작용들에 대한 더 상세한 설명은 라다크리시난 등(Radhakrishan et al.)에 의해 선인출 스트림들의 정도를 조정하는 적응적 메커니즘(Adaptive Mechanism to Tune the Degree of Pre-Fetches [sic] Streams)으로 명명된 미합중국 특허등록번호 제9,665,491호 및 선다람 등(Sundaram et al.)에 의해 순서 열외 프로세서에서 효율적인 선인출 훈련을 위한 주소 재순서 메커니즘(Address Re-Ordering Mechanism for Efficient Pre-Fetch Training in an Out-Of-Order Processor)으로 명명된 미합중국 특허공개번호 제2017/0116128호에 기재되며, 이들 모두는 본 출원과 동일한 양수인에 의해 공통으로 소유되고 여기에서 참조에 의해 포함된다.
다중 보폭 엔진(175)은 예측 패턴들에서 다중 보폭들을 사용하고, 본 기재의 범위를 벗어난다. 다중 보폭 엔진(175)의 동작에 대한 추가 상세들은 라다크리시난 등(Radhakrishan et al.)에 의해 선인출 연쇄(Prefetch Chaining)로 명명된 미합중국 특허등록번호 제9,569,361호 및 라다크리시난 등(Radhakrishan et al.)에 의해 보폭 선인출 메커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법(Computing System with Stride Prefetch Mechanism and Method of Operation Thereof)으로 명명된 미합중국 특허공개번호 제2016/0054997호에 기재되며, 이들 모두는 본 출원과 동일한 양수인에 의해 공통으로 소유되고 여기에 참조로 포함된다.
SMS 엔진(110)은 활성 생성 테이블(AGT)(120) 및 패턴 히스토리 테이블(PHT)(130)을 포함한다. 본질적으로, 아래에서 더 설명되는 바와 같이, AGT(120)는 공간 패턴들을 찾고 기록하고, PHT(130)는 AGT(120)로부터의 트리거들(즉, 공간 패턴을 시작하는 시작 프로그램 카운터(PC) 값)을 포함하는 공간 패턴들을 저장한다. 트리거가 인식될 때, 트리거에 의해 표시된 저장된 공간 패턴에 따라, PHT(130)는 데이터가 코어 프로세서(150)에 의해 필요할 것이라는 우도에 기반하여 L2 캐시(170) 내의 메모리 주소들로부터 데이터를 액세스하고 그리고 L1 캐시(160)에 로드한다.
실시 예에 의존하여, AGT(120) 자체는 단일 테이블 또는 다수의 테이블들일 수 있다. 도 4를 참조하여 아래에서 상세히 논의되는 바와 같이, 공통 구조는 일련의 명령 로드들의 공간 패턴들을 학습/검색하는 처리의 일부로 사용되는 적어도 두 개의 테이블, 즉 필터 테이블 및 훈련 테이블을 포함한다.
따라서, 본 기재는 AGT(120)에 의해 수행되는 훈련/학습 그리고 PHT(130)에 의해 수행되는 실제 동작의 두 개의 상이한 프로세스들에 관한 것으로 여겨질 수 있다. 훈련/학습 프로세스를 설명하기 전에, SMS 엔진(110)의 공간 패턴의 저장의 간단한 요약이 아래에 제공된다.
도 2는 본 기재의 실시 예에 따른 L2 캐시(170) 내의 영역의 예시도이고, 도 3은 PHT(130) 내의 엔트리(300)의 예시도이다.
위에서 논의된 바와 같이, AGT(120)에 의해 일단 공간 패턴이 인식되면, 공간 패턴에 대한 트리거를 포함하는 공간 패턴은 PHT(130)에 저장된다. 도 3에서, PHT 엔트리(300)는 몇몇 필드들로 분할된다. 특정한 공간 패턴에 대한 트리거인 프로그램 카운터(PC)의 값의 형태인 트리거는 PC 트리거 필드(310)에 저장되고, 영역 필드(320)는 PC 트리거 필드(310) 내의 PC 트리거와 함께 시작하는 공간 필드의 영역의 위치이다. 영역 필드(320)에 의해 식별되는 영역의 영역 경계로부터 측정되는 바와 같이, 기본 오프셋 필드(330)는 PC 트리거 필드(310)에서 식별되는 PC 트리거와 연관된 시작 메모리 위치(기본 오프셋)를 가리킨다.
오프셋 목록 필드(340)는 트리거에 후속하여 공간 패턴을 만드는 기본 오프셋 필드(330)에서 식별되는 기본 오프셋과 연관된 일련의 오프셋 값들(또는 오프셋들)을 저장한다. 이 분야에 통상적인 기술을 가진 자에 의해 이해되는 바와 같이, 예를 들어, 이러한 오프셋들은 PC 트리거 필드(310)의 값과 연관된 공간 패턴의 영역 필드(320)에서 식별되는 영역 내의 위치들의 단일 공간 벡터(또는 공간 비트 벡터로 불림) 또는 순서대로의 연쇄(series)로 저장될 수 있다. 이 실시 예에서, 도 2의 영역(200)에서 보여지는 일련의 오프셋들의 예와 같이, 오프셋들은 기본 오프셋으로부터의 일련의 오프셋들로 저장된다. 오프셋들을 공간 비트 벡터로 저장하는 실시 예들에서, 공간 패턴은 N 반복들 동안 유지된다. 각 반복에서, 비트 단위(bitwise) 논리합(AND) 기능(보호적인) 또는 논리곱(OR) 기능(침략적인)이 옛 패턴(이전 반복의)과 새 패턴(현재 반복의)에 대해 수행된다.
도 3으로 돌아가면, 오프셋 당 신뢰도 필드(350)는 오프셋 항목 필드(340)에 저장된 오프셋들 각각과 연관된 신뢰도 레벨들을 저장하고, 전체 신뢰도 필드(360)는 일련의 전체 오프셋들, 즉 PC 트리거 필드(310)의 값과 연관된 공간 패턴의 신뢰도 레벨을 저장한다. 신뢰도 레벨들은 SMS 엔진(110)이 로드 명령들의 진행중인 스트림으로부터 학습함에 따라 동적이고 변화한다.
도 4는 일 실시 예에 따른 SMS 엔진의 적절한 구송 요소들 및 내부의 정보의 이동을 보여주는 예시적인 블록도를 보여준다. 위에서 논의된 바와 같이, SMS 엔진(400)은 활성 생성 테이블(AGT)(410) 및 패턴 히스토리 테이블(PHT)(420)로 분할된다. AGT(410)는 개념적으로 그리고 논리적으로 단일 테이블일 수 있지만(그리고 또한 그렇게 구성될 수 있지만), 이 실시 예에서, AGT(410)는 필터 테이블(413) 및 훈련(또는 페이지) 테이블(415)의 두 테이블들로 구현된다. 설명이 편의를 위하여, 현재 가용한 다양한 캐시 로드 명령들을 취하고 이들을 실행되는 프로그램에 필요한 순서로 넣는 재순서 큐(reorder queue)(ROQ)가 물론 이 실시 예에서는 하나의 ROQ만이 존재하지만 SMS 엔진(400)의 양 측면들에 보여진다.
프로세스는 새로운 공간 패턴에 대한 미스(miss)/트리거일 수(또는 아닐 수) 있는 ROQ 내의 캐시 로드 명령 라인으로 시작하며, 이는 필터 테이블(413)에 임시로 저장/할당된다. 이 실시 예에서, 엔트리는 아래에 보여지는 바와 같이 PHT 엔트리(300)의 처음 세 개의 필드들, 즉 PC 트리거, 영역(즉 영역의 주소), 그리고 기본 오프셋(즉, 영역 경계로부터의) 필드들과 같은 필드들을 포함한다.
필터 테이블 엔트리 필드들
PC 트리거 영역 베이스 오프셋
다음 로드 명령이 동일한 영역 내에 있으면, 이는 다른 영역을 가져오는 대신 현재 영역 내의 오프셋에 의해 가져올 수 있음을 의미하며, 대응하는 엔트리가 훈련 테이블(415)에 생성된다. 이 실시 예에서, 훈련 테이블 엔트리는 PHT 엔트리(300)의 처음 네 개의 필드들과 동일한 필드들, 즉 PC 트리거, 영역, 기본 오프셋, 그리고 오프셋 목록 필드들을 포함한다. 아래에 나타나는 바와 같이, 오프셋 목록 필드는 기본 오프셋으로부터의 일련의 여덟 개의 상이한 오프셋들을 저장한다.
훈련 테이블 엔트리 필드들
PC 트리거 영역 기본 오프셋 오프셋 목록
일단 필터 테이블(413)로부터의 PC 트리거 엔트리가 훈련 테이블 엔트리에 할당되면, 캐시 로드 명령들이 여전히 동일한 영역 내에 있으면 훈련 테이블 엔트리는 오프셋 목록 필드에 추가 오프셋들을 저장한다.
퇴거(eviction)(PC 트리거가 ROQ에 또 나타날 때 발생) 또는 무효화(invalidation)(훈련 테이블에 엔트리들보다 더 많은 사용중인 영역들이 존재할 때에 발생)는 공간 패턴을 중지할 수 있고, 이는 퇴거된/무효화된 훈련 테이블 엔트리가 PHT(420) 내에 새로운 PHT 엔트리를 생성하는 것을 유발한다.
일 실시 예에서, 퇴거들 또는 무효화들을 기다리는 대신, PC 트리거가 ROQ에 다시 나타날 때에 훈련 테이블로부터 PHT로의 승격이 발생하는 트리거-대-트리거(trigger-to-trigger) 스탬프의 사용에 의해 더 영리한 훈련이 제공될 수 있다. 이 구현에서, 엔트리는 첫 번째 미스에 대해 PC 트리거, 영역 주소, 그리고 기본 오프셋을 이용하여 필터 테이블(413)에 할당된다. (상이한 PC를 갖는)동일한 영역 내의 두 번째 미스에 대해, 필터 테이블 엔트리는 훈련 테이블(415)로 복사되고, 기본 오프셋으로부터의 오프셋이 계산되고 그리고 새로운 훈련 테이블 엔트리의 오프셋 목록 필드에 또한 저장된다. PC 트리거로서 PC에 대한 동일한 값의 다음 발생 시, 훈련 테이블 엔트리는 패턴 히스토리 테이블(420)의 엔트리로 승격되고, 기본 영역 및 오프셋으로서 새로운 주소를 이용하여 선인출이 시작된다. 승격 전에, 동일한 영역 내의 임의의 추가적인 액세스들은 계산되고 훈련 테이블 엔트리에 저장되는 오프셋들을 갖는다.
학습/훈련 프로세스는 위에서 폭 넓게 설명되며, SMS 엔진(400)의 활성 동작이 아래에서 간략히 설명된다.
도 4에 도시된 바와 같이, SMS 엔진(400)은 ROQ 내의 현재 캐시 로드 명령으로부터 PHT(420) 내에 저장된 패턴의 PC 트리거를 식별하고, 이후에 PHT(420) 엔트리에 저장된 공간 패턴에 기반하여 데이터를 선인출하기 위해 PHT(420)로부터의 PC 트리거에 대응하는 이전에 식별되고 저장된 공간 패턴을 제공할 수 있다.
도 5는 본 기재의 실시 예에 따른 검색된 공간 패턴들을 훈련/학습하고 저장하는 예시적인 방법의 수정된 순서도이다.
도 5는 현재 가용한 다양한 캐시 로드 명령들을 프로그램에서 실제로 수행되는 순서에 담는 재순서 큐(ROQ)(505)로 시작한다. 본 실시 예에서, 510, 520, 및 530은 효율을 위해서 실질적으로 병렬로 수행된다. 510에서, 본 시스템은 캐시 로드 명령에서 지정된 메모리 액세스가 이미 L1 캐시에 있는지 판단하며, 이 경우에 방법은 ROQ의 다음 캐시 로드 명령을 위해 515로 돌아간다. 캐시 로드 명령에 의해 지정된 메모리 주소에서 액세스되는 필요한 데이터가 L1 캐시에서 가용하지 않으면, 본 시스템은 아래에서 더 설명되는 바와 같이 550에서 SMS 훈련을 수행한다. 520에서, 본 시스템은 캐시 로드 명령이 다중 보폭 엔진을 위한 것인지 판단한다. 캐시 로드 명령이 다중 보폭 엔진을 위한 것이면, 캐시 로드 명령은 다중 보폭 엔진으로 전달된다. 캐시 로드 명령이 다중 보폭 엔진을 위한 것이 아니면, 본 시스템은 550에서 SMS 훈련을 수행한다.
530에서, 본 시스템은 캐시 로드 명령에 의해 지정된 메모리 주소의 필요한 데이터를 포함하는 영역이 활성 패턴 영역 내에 속하는지 판단한다. 캐시 로드 명령에 의해 지정된 메모리 주소의 필요한 데이터를 포함하는 영역이 활성 패턴 영역에 속하면, 535에서 본 시스템은 캐시 로드 명령에 의해 지정된 메모리 주소의 필요한 데이터를 포함하는 영역 내의 위치가 현재 PHT 엔트리 내의 임의의 오프셋에 의해 식별되는지 판단한다. 캐시 로드 명령에 의해 지정된 메모리 주소의 필요한 데이터를 포함하는 영역 내의 위치가 현재 PHT 엔트리 내의 오프셋에 의해 식별되지 않으면, 540에서 필요한 데이터의 위치에 대한 오프셋이 훈련 테이블에 추가되거나 또는 다른 형태의 재훈련이 수행된다. 캐시 로드 명령에 의해 지정된 메모리 주소의 필요한 데이터를 포함하는 영역 내의 위치가 현재 PHT 엔트리 내의 (다음) 오프셋에 의해 식별되면, 545에서 해당 오프셋에 대한 오프셋 당 신뢰도 레벨이 상승한다. 이 상승은 또한 아래에서 더 설명되는 바와 같이 전체 신뢰도 레벨에 대한 "확인"으로 카운트된다.
아래의 표 3은 본 기재의 일 실시 예에서 논리적 입력들 및 출력들의 형태에서 SMS 훈련의 결과를 보여준다. 더 상세하게는, 필터 테이블 및 훈련 테이블의 상태들에 기반하여, 또는 더 정확하게는 필터 테이블 또는 훈련 테이블의 PC 및 영역 필드들이 현재 캐시 라인 명령의 동일한 값들에 부합하는지에 기반하여, 표 3은 결과를 보여준다. 표 3은 설명/기술을 위한 것만으로 의도되며, 하드웨어 내의 실제 테이블(검색표(LUT)와 같은)에 대응하지 않으며, 입력(현재 캐시 라인 로드 명령) 및 훈련 및 필터 테이블 상태들에 기반하여 이러한 결과들을 생성하는 하드웨어 구성 요소들의 시스템의 출력을 보여준다.
SMS 훈련으로부터의 결과들
필터 테이블 PC 부합 필터 테이블 영역 부합 훈련 테이블 PC 부합 훈련 테이블 영역 부합 결과
0 0 0 0 필터 테이블 엔트리를 할당
0 0 0 1 오프셋을 훈련 테이블 엔트리에 추가
0 0 1 0 훈련 테이블 엔트리를 PHT 엔트리로 승격
(새로운 영역에서 선인출 시작)
0 0 1 1 훈련 테이블 엔트리를 PHT 엔트리로 승격
(옛 영역에서 새로운 오프셋으로부터 선인출 시작)
0 1 0 0 필터 테이블 엔트리를 훈련 테이블 엔트리로 승격
(오프셋을 추가하고, 필터 테이블로부터 할당 해제)
0 1 0 1 (불가능)
0 1 1 0 필터 테이블 엔트리를 훈련 테이블 엔트리로 승격
(오프셋을 추가하고, 필터 테이블로부터 할당 해제)
훈련 테이블 엔트리를 PHT 엔트리로 승격
0 1 1 1 (불가능)
1 0 0 0 필터 테이블 엔트리를 새로운 영역 및 오프셋으로 리셋
1 0 0 1 필터 테이블 엔트리를 새로운 영역 및 오프셋으로 리셋
오프셋을 훈련 테이블 엔트리에 추가
1 0 1 0 (불가능)
1 0 1 1 (불가능)
1 1 0 0 필터 테이블 엔트리를 새로운 오프셋으로 리셋
1 1 0 1 (불가능)
1 1 1 0 (불가능)
1 1 1 1 (불가능)
표 3에서 "(불가능)"으로 명명된 엔트리들을 위해, 코드/레지스터 전송 언어(RTL)에서 결과들이 발생하는 것을 방지하는 주장들이 있다. 영역은 필터 테이블 또는 훈련 테이블 내의 엔트리에 대해 고유하고, 필터 테이블 엔트리가 훈련 엔트리로 일단 승격되면 동일한 영역 내의 나중의 PC 액세스들은 단순히 훈련 테이블 엔트리를 갱신하므로, n1n1의 엔트리들(예를 들어, 0101 및 0111)은 "불가능"으로 기재된다. 일단 주어진 PC가 훈련 테이블 내에 있으면, 두 번째 발생은 엔트리의 PHT로의 승격을 유발하고, 따라서 해당 PC 트리거의 나중의 발생들은 필터 테이블이 할당될 수 없고 PHT 엔트리를 재훈련 하는 데에 사용되므로, 1n1n의 엔트리들(예를 들어, 1010 및 1111)은 "불가능"으로 기재된다.
도 6a 내지 도 6c는 본 기재의 실시 예에 따른 부분 순서도 형태에서 필터 및 훈련 테이블 상태들에 기반하여 SMS 훈련 결과들의 예들을 제공한다. 표 3과 유사하게, 도 6a 내지 도 6c의 순서도 판단 마름모들은 설명/기술의 목적을 위한 것이며, 소프트웨어 또는 하드웨어로 구현된 판단 지점들에 대응하지 않고, 입력(현재 캐시 라인 로드 명령) 및 훈련 및 필터 테이블 상태들에 기반한 본 기재에 따른 하드웨어 구성 요소들의 시스템의 구체적인 출력을 보여준다.
도 6a를 참조하면, 610에서, 본 시스템은 현재 ROQ 캐시 로드 명령 또는 액세스의 PC가 훈련 테이블 엔트리의 PC에 부합하는지 판단한다. 현재 ROQ 캐시 로드 명령 E는 액세스의 PC가 훈련 테이블 엔트리의 PC에 부합하면(610에서 예=1), 615에서 훈련 테이블 엔트리가 PHT 엔트리로 승격된다. 현재 ROQ 캐시 로드 명령 E는 액세스의 PC가 훈련 테이블 엔트리의 PC에 부합하지 않으면(610에서 아니오=0), 620에서 본 시스템은 현재 ROQ 캐시 로드 명령의 PC가 필터 테이블 엔트리의 PC에 부합하는지 판단한다. 현재 ROQ 캐시 로드 명령의 PC가 필터 테이블 엔트리의 PC에 부합하면(620에서 예=1), 625에서 필터 테이블 엔트리는 새로운 영역으로 리셋된다. 현재 ROQ 캐시 로드 명령의 PC가 필터 테이블 엔트리의 PC에 부합하지 않으면(620에서 아니오=0), 627에서 아무 행동도 취하지 않는다.
도 6b를 참조하면, 630에서, 본 시스템은 현재 ROQ 캐시 로드 명령의 영역이 필터 테이블 엔트리의 영역에 부합하는지 판단한다. 현재 ROQ 캐시 로드 명령의 영역이 필터 테이블 엔트리의 영역에 부합하면(630에서 예=1), 이는 다음 메모리 액세스가 동일한 영역 내에 있고 오프셋에 의해 정의될 수 있음을 의미하며, 635에서 필터 테이블 엔트리는 훈련 테이블 엔트리로 승격된다. 현재 ROQ 캐시 로드 명령의 영역이 필터 테이블 엔트리의 영역에 부합하지 않으면(630에서 아니오=0), 637에서 아무 행동도 취하지 않는다. 필터 테이블 엔트리의 PC 및 영역 값들을 현재 ROQ 캐시 로드 명령과 비교/대조하는 이러한 동작들(예를 들어, 도 6a의 620 및 도 6b의 630)은 보통 동시에(병렬로) 동작한다.
도 6c를 참조하면, 640에서, 본 시스템은 현재 ROQ 캐시 로드 명령의 영역이 훈련 테이블 엔트리의 영역에 부합하는지 판단한다. 현재 ROQ 캐시 로드 명령의 영역이 훈련 테이블 엔트리의 영역에 부합하면(640에서 예=1), 645에서 영역 내의 새로운 메모리 위치의 오프셋이 훈련 테이블 엔트리에 추가된다. 640에서 훈련 테이블 영역 부합이 있을 때, 모든 훈련 테이블 엔트리들은 갱신된다. 훈련 테이블 엔트리들은 PC 트리거에 따라 고유하고, 하나의 영역에 대해 다중의 PC 트리거들이 있을 수 있다. 이를 처리하기 위해, 모든 트레이닝 테이블 엔트리들은 새로운 영역을 위해 갱신된다. 현재 ROQ 캐시 로드 명령의 영역이 훈련 테이블 엔트리의 영역에 부합하지 않으면(640에서 아니오=0), 아무 행동도 취하지 않는다.
일 실시 예에 따르면, 특정한 PC 트리거들은 훈련 구조들을 오염시키는 것을 회피하기 위해 블랙리스트에 등재되고, 잡음이 있는 조건들에서도 우수한 훈련을 가능하게 한다. 블랙리스트에 등재된 PC 트리거들은 선인출을 위해 사용될 수 없고, 따라서 불필요한 훈련 및 나쁜 선인출들을 발행하는 것이 방지된다. "인라인(inline)" 블랙리스트는 PHT 엔트리 스스로의 저장된 신뢰도 레벨들을 이용하여 자신의 사용을 방지하고, "아웃 오브 라인(out of line)" 블랙리스트는 별도의 테이블을 이용하여 PHT 용량을 보존한다.
또한, 트리거-대-트리거 보폭 검출은 선인출 스트림이 요구를 더 앞서는 것을 허용한다. 트리거-대-트리거 보폭 검출에서, 트리거 PC의 두 번째 발생에 따라, 트리거 PC의 첫 번째 및 두 번째 발생들 사이에서 보폭이 계산되고 그리고 패턴 히스토리 테이블(420)에 저장된다. 트리거 PC의 각 새로운 발생에 따라, 이전 트리거 PC로부터의 새로운 보폭이 계산된다. 이러한 보폭들은 표준 보폭 검출 알고리즘에 대한 입력으로 제공되고, 출력은 더 먼 영역들에서 공간적으로 연관된 선인출들을 구동하는 데에 사용될 수 있다.
일 실시 예에 따르면, 트레이닝 테이블 그리고/또는 PHT 엔트리들의 PC 트리거들은 테이블 엔트리들에 대한 인덱스 값들로 해시되거나(hashed) 또는 사용되어(PC 트리거들 자신들 대신에), 트레이닝 및 활성화를 위한 액세스 패턴들의 분리를 유지하면서 저장소를 줄일 수 있다. 전체 PC는 다수의 비트들-64비트 구조에서 적어도 40비트-을 가지며, 전체 40비트들을 저장하는 대신에, PC의 일부분들이 정보의 대부분을 유지하지만(그리고 해시된 버전들이 서로 구분 가능한 적어도 충분한 정보) 더 적은 비트들을 사용하는 방식으로 산술적으로 조합될(해시될) 수 있다. 이러한 실시 예들에서, 더 작은 "해시된" 값은 PC 트리거의 실제 40비트들 보다는 테이블들의 "PC 트리거" 필드에 저장된다. 또한, PC 값들을 저장하기 위한 임의의 필드는 전체 값을 저장하기 보다는 해시된 값으로 치환될 수 있다.
도 7은 ROQ 내의 일련의 캐시 라인 로드 명령들 또는 액세스들로부터 PHT 엔트리가 생성되는 방법의 예를 보여준다. 도 7은 ROQ로부터의 일련의 캐시 로드 명령들뿐 아니라 필터 테이블, 훈련 테이블 및 SMS의 PHT를 보여준다. 이 실시 예에서, 훈련 테이블 엔트리들 및 PHT 엔트리들 모두에 저장된 여덟 개의 오프셋들만이 존재하지만, 훈련 테이블 또는 PHT 엔트리에 저장된 임의의 수의 오프셋들이 존재할 수 있음을 가리키는 생략 부호와 함께, 도 7의 훈련 테이블 엔트리들은 기본 오프셋으로부터 처음 세 개의 오프셋들(O1, O2, O3)만을 보여준다. 마찬가지로, 도 7의 PHT 엔트리들은 처음 세 개의 오프셋들(O1, O2, O3) 및 생략 부호를 갖지만, 이러한 필드들의 아래에, 각 오프셋들에 대한 대응하는 신뢰도 값들인 대응하는 필드들(Cf1, Cf2, Cf3, …)이 있을 수 있다. 이 구성은 설명을 용이하게 하기 위한 것일 뿐으로, 각 오프셋은 오프셋 당 신뢰도 레벨에 인접하게 나타난다. 전체 공간 패턴에 대한 전체 신뢰도 레벨(Cfall)은 마지막 필드에 있다.
도 7에서, PC가 x의 값(PC=x)을 갖는 첫 번째 명령이 메모리 위치(103C)에 데이터/명령들을 로드한다(16진법에서, 각 수는 0 내지 F, 즉 0 내지 15). 이 실시 예에서, 각 영역은 4kB인 4,096바이트들로 가정되고, 10진법의 4,096은 16진법의 1,000과 동일하므로, 메모리 위치의 첫 번째 수는 자신의 영역을 식별(이 경우에 영역(1000))한다. 710에서, 미스가 존재하므로, 필터 테이블에서 엔트리가 생성되고, 엔트리는 (가능한)PC 트리거, 영역(100), 그리고 기본 오프셋(3C)을 갖는다.
다음 로드 명령은 이전 로드와 동일 영역 내에 있는 메모리 위치(1044)에 대한 것이다. 따라서, 두 로드 명령들이 하나의 영역으로 공간 패턴을 형성함에 따라, 720에서 훈련 테이블에 새로운 엔트리가 생성된다. 훈련 테이블의 엔트리는 PC 트리거(x), 영역(1000), 기본 오프셋(3C), 그리고 오프셋(723)을 가지며, 오프셋(723)은 기본 오프셋과 결합될 때에 로드되는 현재 메모리 위치의 값을 획득한다(10진법에서 8을 더하여 16진법에서 103C로부터 1044를 획득).
다음 로드는 여전히 새로운 훈련 테이블 엔트리의 영역에 속하는 메모리 위치(1000)에 있다. 따라서, 새로운 오프셋(725)(10진법에서 60을 감함)이 훈련 테이블 엔트리에 추가되고, 따라서 영역 내의 공간 패턴의 길이가 증가한다.
네 번째 그리고 마지막 로드 명령은 새로운 훈련 테이블 엔트리의 영역과 동떨어진 메모리 위치(5C0A)에 있다. 따라서, 715에서 옛 필터 테이블 엔트리는 새로운 필터 테이블 엔트리로 치환되고, 새로운 엔트리는 새로운 공간 패턴의 PC 트리거(가능한), 시작 영역(5000), 그리고 기본 오프셋(C0A)을 갖는다.
시간의 몇몇 지점들에서, 훈련 테이블 엔트리는 할당 해제되고 그리고 730에서 새로운 PHT 엔트리가 된다. 도 7에서 715 및 730은 동시적인 것으로 나타나지만, 훈련 테이블 엔트리의 PHT 엔트리로의 승격은 필터 활동들과 완전히 독립적이다. PHT 엔트리가 새것이므로, 오프셋 당 또는 전체 신뢰도 레벨 필드들의 값들은 존재하지 않는다. 이러한 값들이 어떻게 생성되고 변경되는지는 아래에서 도 8을 참조하여 설명된다.
도 8은 저장된 PHT 엔트리의 PC 트리거가 ROQ에서 식별된 때에, 오프셋 목록 필드에 저장된 공간 패턴에 의해 지정되는 메모리 위치들로부터 데이터/명령들을 선인출하는 데에 PHT 엔트리가 어떻게 이용되는지의 예를 보여준다. 또한, 본 기재의 실시 예들에 따라, 개별 오프셋들 및 전체 공간 패턴 모두의 정확도가 PHT 엔트리의 오프셋 당 및 전체 신뢰도 필드들을 이용하여 추적된다.
도 8은 ROQ로부터의 일련의 캐시 로드 명령들을 갖는 SMS의 PHT만을 보여주지만, 로드 명령들이 본 기재의 실시 예들에 따라 어떻게 구현되는지 보여주기 위해 다른 "선인출/로드" 열이 추가된다. 오프셋들이 10진 표시이므로, 선인출/로드 열의 일부는 메모리 위치들의 10진 값들로부터의 덧셈들 및 뺄셈들을 보여준다.
도 8에서, 첫 번째 로드 명령은 x의 값인 PC(PC=x)를 갖고, 이는 x의 PC 트리거를 갖는 PHT 엔트리에 부합하고, 이는 810에서 선인출을 위한 PHT 엔트리를 활성화한다. 적어도 시작 위치가 임의적이므로, 그리고 실제 공간 패턴은 시작 지점으로부터의 상대적인 오프셋들에 의해 정의되므로, 820에서 첫 번째 로드 명령의 영역 및 기본 오프셋 값들은 이전 값들을 치환한다. 이러한 치환은 820에서 두 번째 로드 명령과 인접한 것으로 도시되지만, 본 실시 예에서, 이러한 치환은 PHT 엔트리가 활성화될 때에 동시에, 즉 첫 번째 로드 명령과 거의 동시에 발생할 수 있다.
PHT 엔트리에 따르면, 다음 로드는 첫 번째 로드 명령으로부터 +8의 오프셋에 있다. 그러나 통상적으로 L2 캐시로부터 다운로드 되는 캐시 라인(또는 블록)은 로드 명령에서 메모리 위치로부터 시작하는 32, 64 또는 128바이트들의 길이를 가진다. 따라서, +8 오프셋의 메모리 위치는 이전 로드 명령에 의해 이미 다운로드 되어 있다. 본 기재에 따른 실시 예들에서, 오프셋의 사이즈는 불필요한 로드들을 방지하기 위해 사용되므로, +8 오프셋의 메모리 위치는 이전 로드 명령으로부터 L1 캐시에 이미 있으므로, L2 캐시로부터 L1캐시로의 추가 다운로드는 없다.
그러나 본 기재의 실시 예들의 다른 측면은 전체 및 입상도의 오프셋 당 신뢰도 레벨들 모두에 대해 공간 패턴들의 정확도를 추적하는 것이다. 두 번째 로드 명령이 PHT 엔트리의 +8 오프셋(즉, 30F8)의 예측된 메모리 위치에 부합하므로, 830에서 첫 번째 오프셋(O1)에 대응하는 오프셋 당 신뢰도 필드(Cf1)에 1이 추가(+1)된다. 마찬가지로, O2의 -60의 오프셋 또한 다음 로드 명령(30B4)에 부합하므로, 840에서 두 번째 오프셋(O2)에 대응하는 오프셋 당 신뢰도 필드(Cf2)에 1이 추가(+1)된다.
위에서 일련의 사건들이 논의되었지만, PHT 엔트리의 기능은 선인출이고, 오프셋 값들은 활성화된 PHT 엔트리에서 즉시 가용하므로 L2 캐시로부터의 30B4 캐시 라인/블록 다운로드는 810에서 PHT 엔트리가 활성화되는 것과 거의 동시에 행해질 수 있다. 다운로드/선인출 된 것이 실제로 필요했던 것인지를 평가하기 위해 오프셋 당 신뢰도 레벨의 할당만이 ROQ 내의 실제 로드 명령을 기다려야 한다.
도 7에서 본래 기록된 바와 같이, PHT 엔트리에 저장된 공간 패턴은 -60의 오프셋(O2)에서 종료한다. 그러나 일련의 명령들에서, 메모리 위치(3100)에 대한 다음 로드 명령은 PHT 엔트리의 영역(3000)에 속한다. 이 때문에, 850에서 다음 메모리 위치의 오프셋(+16)이 PHT 엔트리에 O3로 추가된다. 따라서, 본 기재의 실시 예들에서, PHT 엔트리들은 코어 프로세서(들)의 동작 동안에 연속적으로 정제되고 평가된다. O3가 PHT 엔트리에 막 추가되었으므로, O3에 대응하는 신뢰도 레벨(Cf3)은 아직 존재하지 않는다. 따라서, 본 기재의 다른 실시 예들에서, 새로 추가된 오프셋의 신뢰도 레벨은 초기에 +1의 값 또는 이 일련의 명령들을 위한 좋은 시작 신뢰도 레벨로 보여지는 다른 값으로 할당될 수 있다.
본 기재의 다른 실시 예들에서, 시간에 따른 특정한 오프셋들의 오프셋 당 신뢰도 레벨은 실제 로드 명령에 부합하는 합리적으로 충분한 확률을 갖지 않는 선인출들을 제거하는 데에 사용될 수 있다. 아래의 PHT 엔트리의 예에서, 여섯 개의 오프셋들의 공간 패턴은 다른 것들(O2, O3, O5)보다 높은 신뢰도 레벨들(O1, O6)을 갖는 일부 오프셋들을 갖는다. 본 기재의 일 실시 예에서, O3와 같이 0의 신뢰도 레벨을 갖는 임의의 오프셋은 PHT 엔트리가 활성화된 때에 오프셋들의 나머지와 함께 선인출되지 않는다. 잘못된 선인출에 의해 유발되는 자원들의 낭비는 확률적으로 좋지만 또한 확률적으로 나쁜 선인출을 사용하지 않는 위험보다 크다(즉, 신뢰도 레벨이 너무 낮으므로 정확한 선인출을 사용하지 않는 위험이 무시된다).
다른 예로서, 본 기재의 다른 실시 예에서, 임의의 오프셋 값이 선인출되지 않는 문턱이 아래에 설정된다. 아래의 예를 사용할 때, 1보다 큰(>1) 문턱이 수립되면, 오프셋들(O2, O3, O5)에 의해 지정되는 메모리 위치들은 선인출되지 않을 것이다. 이 방법에서, 본 기재의 실시 예들은 시간에 걸쳐 정확한 것으로 보여진 선인출들을 유지하며, 전체 공간 패턴의 약한 멤버들에 의해 유발되는 잘못된 선인출들을 제거할 수 있다.
PHT 엔트리의 예
PC 트리거 영역 기본 오프셋 O1 O2 O3 O4 O5 O6 O7 O8 Cfall
Cf1 Cf2 Cf3 Cf4 Cf5 Cf6 Cf7 Cf8
x 2000 C3 +15 -32 +2 +12 -60 +5 - - -
- - - +3 +1
+2 +1 +4 - - -
PHT 엔트리에 저장된 전체 공간 패턴에 대한 전체 신뢰도 레벨(Cfall)이 계산되고 그리고 많은 상이한 방법들로 선인출 정확도를 높이는 데에 사용될 수 있다. 예를 들어, 전체 신뢰도 레벨(Cfall)은 확인(confirmation)에 따라 값이 상승하고 그리고 PC 트리거가 대응하는 확인들(confirmations)이 없는 PHT 엔트리를 활성화(가장 나쁜 케이스의 시나리오)할 때에 감소하는 포화(saturating) 카운터로 계산될 수 있다. 위에서 논의된 바와 같이, 확인(confirmation)은 저장된 PHT 엔트리의 공간 패턴에서의 오프셋이 정확하고 그리고 오프셋 당 신뢰도 레벨이 도 5의 535에 도시된 바와 같이 +1 증가할 때일 수 있다.
전체 신뢰도 레벨(Cfall)은, 예를 들어 첫 번째 확인이 보이기 전에 얼마나 많은 선인출들이 발행되어야 하는지 그리고/또는 각 확인을 위해 얼마나 많은 선인출들이 발행되는지를 판단함으로써 선인출 정확도를 향상하는 데에 사용될 수 있다(이는 비선형일 수 있다. 예를 들어, 첫 번째 확인은 둘 이상의 선인출들을 트리거하지만, 두 번째 확인은 3 선인출들을 트리거할 수 있다).
위에서 기술된 바와 같이, 본 기재는 그 중에서도 변화하는 프로그램 행동에 적응하는 연속적인 학습; 시간적 순서를 확보하는 오프셋 목록; 이전 라인 또는 후속 라인에 대한 액세스들의 차별화를 가능하게 하는 바이트 입상도(byte granularity); 시간에 따른 정확도를 위해 개별 오프셋들이 추적되는 것을 허용하는 오프셋 당 신뢰도; 그리고 최선의 훈련된 엔트리들로부터 최대의 선인출들이 발행되는 것을 허용하는 확인 스킴을 제공한다.
본 기재는 또한 그 중에서도 PC 트리거의 두 번째 발생에 따른 승격을 가짐으로써 그리고 트리거-대-트리거 스탬프를 이용함으로써 더 영리한 훈련; PHT의 PC 트리거들의 블랙리스트(인라인 또는 아웃 오브 라인일 수 있는); 트리거-대-트리거 보폭 검출; 그리고 PHT 엔트리들을 인덱스하는 PC 트리거의 해시의 사용을 제공한다.
도 9는 일 실시 예에 따른 본 장치의 예시적인 도면을 보여준다. 장치(900)는 적어도 하나의 프로세서(910) 및 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체(920)를 포함한다. 적어도 하나의 프로세서(910)는 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체(920)에 저장된 명령들을 실행할 때에, 각 엔트리가 영역 내의 기본 오프셋으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 및 각 오프셋 값에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 갖는 적어도 하나의 테이블을 포함하는 공간 메모리 스트리밍(SMS) 선인출 엔진을 위한 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화된 때에 현재 액세스들을 활성화된 PHT 엔트리의 저장된 오프셋 값들에 매칭함으로써 활성화된 PHT 엔트리의 각 오프셋 값에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 수행한다.
또한, 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체(920)는 적어도 하나의 프로세서(910)가 위의 단계들을 수행하게 하는 명령들을 저장한다. 적어도 오프셋 당 신뢰도 레벨들에 의해 SMS 엔진에 연속적인 학습이 제공될 수 있다.
다른 실시 예에서, 적어도 하나의 프로세서(910)는 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때에, 공간 메모리 스트리밍(SMS) 엔진을 위한 필터 테이블을 유지하는 단계, 필터 테이블의 각 엔트리는 프로그램 카운터(PC) 트리거, 영역 주소, 그리고 기본 오프셋을 포함하고; SMS 엔진을 위한 훈련 테이블을 유지하는 단계, 훈련 테이블의 각 엔트리는 PC 트리거, 영역 주소, 기본 오프셋, 영역 주소와 동일한 영역의 메모리 위치들에 대한 기본 오프셋으로부터의 오프셋들의 목록을 포함하고; SMS 엔진의 재순서 큐(ROQ)의 현재 로드 명령/액세스가 미스를 유발할 때 필터 테이블에 새로운 엔트리를 할당하는 단계, 새로운 엔트리의 PC 트리거는 현재 명령/액세스의 PC이고 새로운 엔트리의 영역 주소 및 기본 오프셋은 현재 명령/액세스에 의해 지정되는 메모리 위치를 포함하고; ROQ의 다음 로드 명령/액세스에 의해 지정된 메모리 위치가 동일한 영역에 속할 때, 필터 테이블 엔트리의 PC 트리거, 필터 테이블 엔트리의 영역 주소, 필터 테이블 엔트리의 기본 오프셋, 그리고 오프셋들의 목록의 첫 번째 오프셋을 포함하는 새로운 훈련 테이블 엔트리를 할당함으로써 새로운 필터 테이블 엔트리를 훈련 테이블의 엔트리로 승격하는 단계, 첫 번째 오프셋은 기본 오프셋으로부터 측정되는 영역 내의 메모리 위치의 거리이고; 그리고 ROQ의 다음 로드 명령/액세스에 의해 지정되는 메모리 위치가 동일한 영역에 속할 때마다, 기본 오프셋으로부터 측정되는 영역 내의 메모리 위치의 오프셋 거리인 다른 오프셋을 훈련 테이블 엔트리의 오프셋들의 목록에 추가하는 단계를 수행한다. 또한, 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체(920)는 적어도 하나의 프로세서(910)가 위의 단계들을 수행하게 하는 명령들을 저장한다.
도 10은 일 실시 예에 따른, 공간 메모리 스트리밍(SMS) 선인출 엔진을 포함하는 본 장치를 제조하고 테스트하는 예시적인 순서도를 보여준다.
1050에서, 적어도 하나의 프로세서 및 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체를 포함하는 장치(이 예에서, 칩셋)가 제조된다. 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때에, 프로세서는 각 엔트리가 영역 내의 기본 오프셋으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 및 각 오프셋 값에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 갖는 적어도 하나의 테이블을 포함하는 공간 메모리 스트리밍(SMS) 선인출 엔진을 위한 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화된 때에 현재 액세스들을 활성화된 PHT 엔트리의 저장된 오프셋 값들에 매칭함으로써 활성화된 PHT 엔트리의 각 오프셋 값에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 수행한다. 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체는 적어도 하나의 프로세서가 위의 단계들을 수행하게 하는 명령들을 저장한다. 적어도 오프셋 당 신뢰도 레벨들에 의해 SMS 엔진에 연속적인 학습이 제공된다.
1060에서, 장치(이 예에서, 칩셋)가 테스트 된다. 테스트(1060)는 장치가 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때에, 각 엔트리가 영역 내의 기본 오프셋으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 및 각 오프셋 값에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 갖는 적어도 하나의 테이블을 포함하는 공간 메모리 스트리밍(SMS) 선인출 엔진을 위한 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고 PHT 엔트리가 활성화된 때에 현재 액세스들을 활성화된 PHT 엔트리의 저장된 오프셋 값들에 매칭함으로써 활성화된 PHT 엔트리의 각 오프셋 값에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 수행하는 적어도 하나의 프로세서를 갖는지를 테스트하는 단계; 그리고 장치가 적어도 하나의 프로세서가 상술된 단계들을 수행하게 하는 명령들을 저장하는 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체를 갖는지를 테스트하는 단계를 포함한다. 적어도 오프셋 당 신뢰도 레벨들에 의해 SMS 엔진에 연속적인 학습이 제공될 수 있다.
다른 실시 예에서, 적어도 하나의 프로세서 및 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체를 포함하는 칩셋이 제조된다. 적어도 하나의 프로세서는 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때에, 공간 메모리 스트리밍(SMS) 엔진을 위한 필터 테이블을 유지하는 단계, 필터 테이블의 각 엔트리는 프로그램 카운터(PC) 트리거, 영역 주소, 그리고 기본 오프셋을 포함하고; SMS 엔진을 위한 훈련 테이블을 유지하는 단계, 훈련 테이블의 각 엔트리는 PC 트리거, 영역 주소, 기본 오프셋, 영역 주소와 동일한 영역의 메모리 위치들에 대한 기본 오프셋으로부터의 오프셋들의 목록을 포함하고; SMS 엔진의 재순서 큐(ROQ)의 현재 로드 명령/액세스가 미스를 유발할 때 필터 테이블에 새로운 엔트리를 할당하는 단계, 새로운 엔트리의 PC 트리거는 현재 명령/액세스의 PC이고 새로운 엔트리의 영역 주소 및 기본 오프셋은 현재 명령/액세스에 의해 지정되는 메모리 위치를 포함하고; ROQ의 다음 로드 명령/액세스에 의해 지정된 메모리 위치가 동일한 영역에 속할 때, 필터 테이블 엔트리의 PC 트리거, 필터 테이블 엔트리의 영역 주고, 필터 테이블 엔트리의 기본 오프셋, 그리고 오프셋들의 목록의 첫 번째 오프셋을 포함하는 새로운 훈련 테이블 엔트리를 할당함으로써 새로운 필터 테이블 엔트리를 훈련 테이블의 엔트리로 승격하는 단계, 첫 번째 오프셋은 기본 오프셋으로부터 측정되는 영역 내의 메모리 위치의 거리이고; 그리고 ROQ의 다음 로드 명령/액세스에 의해 지정되는 메모리 위치가 동일한 영역에 속할 때마다, 기본 오프셋으로부터 측정되는 영역 내의 메모리 위치의 오프셋 거리인 다른 오프셋을 훈련 테이블 엔트리의 오프셋들의 목록에 추가하는 단계를 수행한다. 또한, 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체는 적어도 하나의 프로세서가 위의 단계들을 수행하게 하는 명령들을 저장한다.
본 기재의 실시 예와 관련하여 위에서 설명된 단계들 그리고/또는 동작들은, 이 분야에 통상적인 기술을 가진 자에 의해 이해되는 바와 같이, 구체적인 실시 예 그리고/또는 구현에 의존하여 다른 순서로 또는 병렬로 또는 다른 시대 동안에 동시에 발생할 수 있다. 상이한 실시 예들은 다른 순서로 또는 다른 방법들 또는 수단들로 행동들을 수행할 수 있다. 이 분야에 통상적인 기술을 가진 자에게 이해되는 바와 같이, 일부 도면들은 수행되는 행동들의 단순화된 표현들이고, 여기의 설명들은 단순화된 개괄들이고, 그리고 실제 구현들은 더 복잡하고, 더 많은 단계들 그리고/또는 구성 요소들을 필요로 할 수 있고, 그리고 구체적인 구현의 필요들에 의존하여 달라질 수도 있다. 단순화된 표현들이 됨에 따라, 도면들은 이 분야에 통상적인 기술을 가진 자에 의해 알려지고 이해될 수 있는 그리고 본 기술에 적절하지 않거나 그리고/또는 도움이 되지 않는 다른 필요한 단계들을 보여주지 않는다.
마찬가지로, 일부 도면들은 적절한 구성 요소들만을 보여주는 단순화된 블록도이고, 이러한 구성 요소들 중 일부는 이 분야에 통상적인 기술을 가진 자에 의해 이해되는 바와 같이, 하드웨어의 실제 조각보다는 이 분야에 잘 알려진 기능 그리고/또는 동작만을 나타낸다. 이러한 경우들에, 구성 요소들/모듈들의 일부 또는 전부는 하나 또는 그보다 많은 응용-특화 집적 회로들(ASICs), 표준 집적 회로들, 미소 제어기들 그리고/또는 실장 제어기들을 포함하는 적절한 명령들을 실행하는 제어기들, 현장 프로그램 가능한 게이트 어레이들(FPGAs), 복잡한 프로그램 가능한 논리 장치들(CPLDs) 등을 포함하지만 이에 한정되지 않는 적어도 부분적으로 펌웨어 그리고/또는 하드웨어에서와 같은 다양한 방법들 그리고/또는 방법들의 조합들로 구현 또는 제공될 수 있다. 시스템 구성 요소들 그리고/또는 데이터 구조들의 일부 또는 전부는 또한 비임시 컴퓨터로 독출 가능한 매체(예를 들어 하드 디크스; 메모리; 컴퓨터 네트워크 또는 셀룰러 무선 네트워크 또는 다른 데이터 전송 매체; 또는 DVD 또는 플래시 메모리 장치와 같은 적절한 드라이브에 의해 또는 적절한 연결을 통해 읽혀지는 포터블 매체 물품)에 콘텐츠(예를 들어, 실행 가능한 또는 다른 기계로 독출 가능한 소프트웨어 명령들 또는 구조화된 데이터)로 저장되어, 콘텐츠를 실행 그렇지 않으면 이용하거나 제공하여 설명된 기술들의 적어도 일부를 수행하도록 컴퓨터로 독출 가능한 매체 그리고/또는 하나 또는 그보다 많은 연관된 컴퓨팅 시스템들 또는 장치들을 활성화 또는 구성할 수 있다.
하나 또는 그보다 많은 프로세서들, 단순한 미소 제어기들, 제어기들 등은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들의 시퀀스들을 실행하여 본 기재의 실시 예들을 구현하도록 홀로 또는 다중-처리 배열로 채용될 수 있다. 일부 실시 예들에서, 고정 배선(hard-wired) 회로가 소프트웨어 명령들 대신에 또는 이와 결합하여 사용될 수 있다. 따라서, 본 기재의 실시 예들은 하드웨어 회로, 펌웨어, 그리고/또는 소프트웨어의 임의의 특정한 조합에 한정되지 않는다.
여기에서 사용되는 "컴퓨터로 독출 가능한 매체"의 용어는 실행을 위해 프로세서로 제공될 수 있는 명령들을 저장하는 임의의 매체를 나타낸다. 이러한 매체는 불휘발성 및 휘발성 매체를 포함하지만 이에 한정되지 않는 다양한 형태를 취할 수 있다. 비임시 컴퓨터로 독출 가능한 매체의 통상적은 형태들은, 예를 들어 플로피 디스크, 플렉서블 디스크, 하드 디스크, 자기 테이프, 또는 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체, 천공 카드들, 종이 테이프, 구멍들의 패턴들을 갖는 임의의 다른 물리적 매체, RAM, PROM, EPROM, 플래시-EPROM, 임의의 다른 메모리 칩 또는 카트리지, 또는 프로세서에 의해 실행 가능한 명령들이 저장되는 임의의 다른 매체를 포함한다.
본 기재의 일부 실시 예들은 적어도 부분적으로 포터블 장치로 구현될 수 있다. 여기에서 사용되는 "포터블 장치" 그리고/또는 "모바일 장치"는 멀티미디어 재생기, 통신 장치들, 컴퓨팅 장치들, 항법 장치들 등을 포함하지만 이들에 한정되지 않는 무선 신호들을 수신하는 기능을 갖는 임의의 포터블 또는 이동 가능한 전자 장치를 가리킨다. 따라서, 모바일 장치는(한정되지 않지만) 사용자 장치(UE), 랩톱들, 태블릿 컴퓨터들, 포터블 디지털 비서들(PDAs), MP3 재생기들, 핸드헬드 PC, 즉석 메시지 장치들(IMD), 셀룰러 전화기들, 전력 위성 항법 시스템(GNSS) 수신기들, 시계들, 또는 사람에 의해 입혀지거나 운반될 수 있는 임의의 이러한 장치를 포함한다.
본 기재의 다양한 실시 예들은 이 분야에 통상적인 기술을 기잔 자에 의해 이해되는 바와 같이, 본 기재의 관점에서 미소 칩, 실리콘 칩, 컴퓨터 칩, 또는 단지 칩으로도 불리는 집적 회로(IC)에 구현될 수 있다. 이러한 IC는, 예를 들어 광대역 그리고/또는 기저대역 모뎀 칩일 수 있다.
본 기재는 이 분야에 통상적인 기술을 가진 자에 의해 이해되는 바와 같이, 여기에서 논의된 실시 예들에 한정되지 않고, 구체적인 구현의 상세들은 용도, 환경 등에 의존하여 바뀔 수 있으며, 따라서 본 기재는 범위 내의 임의의 구현에 적용되는 것으로 의도된다.
몇몇 실시 예들이 설명되었지만, 본 기재의 범위로부터 멀어지지 않으면서 다양한 수정들이 가능함이 이해될 것이다. 따라서, 본 기재는 여기에서 기술된 실시 예들의 어느 것에 한정되지 않으며 첨부된 청구항들 및 그것의 등가물들에 의해서만 정의되는 범위를 가짐이 이 분야에 통상적인 기술을 가진 자들에게 이해될 것이다.
110: 공간 메모리 스트리밍 엔진
120: 활성 생성 테이블
130: 패턴 히스토리 테이블
150: 코어 프로세서
160: L1 캐시
165: 선인출기
170: L2 캐시
175: 다중 보폭 엔진

Claims (19)

  1. 공간 메모리 스트리밍(SMS) 선인출 엔진에 있어서:
    적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 엔트리들은 캐시 메모리의 서로 다른 공간 영역들에 각각 대응하고, 상기 적어도 하나의 테이블의 각 엔트리는 대응하는 공간 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 포함하고,
    PHT 엔트리가 활성화될 때, 상기 오프셋 값들에 대응하는 상기 오프셋 당 신뢰도 값들은 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 매칭함으로써 갱신되고, 그리고
    적어도 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공되고,
    상기 기본 오프셋 값 및 상기 오프셋 값들은 둘 이상의 서로 다른 프로그램 카운터들에 대응하고,
    상기 기본 오프셋 값은 상기 대응하는 공간 영역을 처음으로 액세스한 프로그램 카운터의 오프셋 값을 포함하고, 그리고
    상기 오프셋 값들은, 상기 대응하는 공간 영역을 두 번째부터 액세스한 임의의 프로그램 카운터들의 제1 오프셋 값들과 상기 기본 오프셋 값 사이의 차이에 기반하는 SMS 선인출 엔진.
  2. 제1항에 있어서,
    오프셋 당 신뢰도 레벨은 상기 오프셋 당 신뢰도 레벨에 대응하는 오프셋 값이 대응하는 액세스에 부합할 때에 상기 오프셋 당 신뢰도 레벨을 증가시킴으로써 갱신되고, 그리고
    상기 오프셋 당 신뢰도 레벨은 상기 오프셋 당 신뢰도 레벨에 대응하는 상기 오프셋 값이 두 개의 프로그램 카운터들 사이의 임의의 대응하는 액세스에 부합하지 않을 때에 상기 오프셋 당 신뢰도 레벨을 감소시킴으로써 갱신되고, 상기 두 개의 프로그램 카운터들은 명령들의 큐 내에서 공간 패턴을 시작하고 종료하는 동일한 값을 갖는 SMS 선인출 엔진.
  3. 제1항에 있어서,
    상기 오프셋 당 신뢰도 레벨들은 상기 PHT 엔트리의 상기 오프셋 목록 필드로부터의 하나 또는 그보다 많은 오프셋 값들을 제거하는 데에 사용되는 SMS 선인출 엔진.
  4. 제3항에 있어서,
    하나 또는 그보다 많은 미리 정해진 문턱들이 상기 오프셋 당 신뢰도 레벨들에 적용되어 상기 PHT 엔트리의 상기 오프셋 목록 필드로부터 상기 하나 또는 그보다 많은 오프셋 값들을 제거할지를 판단하는 SMS 선인출 엔진.
  5. 제1항에 있어서,
    상기 오프셋 목록 필드 내의 복수의 오프셋 값들에 대응하는 메모리 위치들이 단일 캐시 라인에 속할 때, 상기 SMS 선인출 엔진은 단일 캐시 라인을 한 번만 선인출하는 SMS 선인출 엔진.
  6. 제1항에 있어서,
    각 PHT 엔트리는 상기 오프셋 목록 필드에 저장된 상기 오프셋 값들에 의해 생성되는 전체 공간 패턴의 신뢰도 레벨을 나타내는 값을 갖는 전체 신뢰도 필드를 더 포함하고,
    적어도 상기 전체 신뢰도 필드에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공되는 SMS 선인출 엔진.
  7. 제6항에 있어서,
    상기 PHT 엔트리의 상기 오프셋 목록 필드의 오프셋 값의 오프셋 당 신뢰도 레벨의 각 증가는 상기 PHT 엔트리에 대한 상기 전체 신뢰도 필드의 전체 신뢰도 레벨을 차례로 증가시키는 확인을 포함하고, 그리고
    상기 PHT 엔트리의 상기 오프셋 목록 필드의 상기 오프셋 값의 상기 오프셋 당 신뢰도 레벨의 각 감소는 상기 PHT 엔트리에 대한 상기 전체 신뢰도 필드의 상기 전체 신뢰도 레벨의 감소를 유발하는 SMS 선인출 엔진.
  8. 제1항에 있어서,
    각 PHT 엔트리는 상기 대응하는 공간 영역 내의 상기 기본 오프셋 값을 포함하는 기본 오프셋 필드를 더 포함하고,
    상기 기본 오프셋 값은 바이트 입상도(byte granularity)를 제공하는 SMS 선인출 엔진.
  9. 공간 메모리 스트리밍(SMS) 선인출 엔진을 위한 방법에 있어서:
    적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 엔트리들은 캐시 메모리의 서로 다른 공간 영역들에 각각 대응하고, 상기 적어도 하나의 테이블의 각 엔트리는 대응하는 공간 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 유지하는 단계; 그리고
    PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하는 단계를 포함하고,
    적어도 상기 오프셋 당 신뢰도 레벨들에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공되고,
    상기 기본 오프셋 값 및 상기 오프셋 값들은 둘 이상의 서로 다른 프로그램 카운터들에 대응하고,
    상기 기본 오프셋 값은 상기 대응하는 공간 영역을 처음으로 액세스한 프로그램 카운터의 오프셋 값을 포함하고, 그리고
    상기 오프셋 값들은, 상기 대응하는 공간 영역을 두 번째부터 액세스한 임의의 프로그램 카운터들의 제1 오프셋 값들과 상기 기본 오프셋 값 사이의 차이에 기반하는 방법.
  10. 제9항에 있어서,
    상기 오프셋 당 신뢰도 레벨들을 갱신하는 단계는:
    상기 오프셋 당 신뢰도 레벨에 대응하는 오프셋 값이 대응하는 액세스에 부합할 때에 상기 오프셋 당 신뢰도 레벨을 증가시키는 단계; 그리고
    상기 오프셋 당 신뢰도 레벨에 대응하는 상기 오프셋 값이 두 개의 프로그램 카운터들(PCs) 사이의 임의의 대응하는 액세스에 부합하지 않을 때에 상기 오프셋 당 신뢰도 레벨을 감소시키는 단계를 포함하고,
    상기 두 개의 프로그램 카운터들은 명령들의 큐 내에서 공간 패턴을 시작하고 종료하는 동일한 값을 갖는 방법.
  11. 제9항에 있어서,
    상기 오프셋 당 신뢰도 레벨들에 따라 상기 PHT 엔트리의 상기 오프셋 목록 필드로부터 하나 또는 그보다 많은 오프셋 값들을 제거하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 PHT 엔트리의 상기 오프셋 목록 필드로부터 상기 하나 또는 그보다 많은 오프셋 값들을 제거하는 단계는:
    하나 또는 그보다 많은 미리 정해진 문턱들을 상기 오프셋 당 신뢰도 레벨들에 적용하여 상기 PHT 엔트리의 상기 오프셋 목록 필드로부터 상기 하나 또는 그보다 많은 오프셋 값들을 제거할지를 판단하는 단계를 포함하는 방법.
  13. 제9항에 있어서,
    상기 오프셋 목록 필드 내의 복수의 오프셋 값들에 대응하는 메모리 위치들이 단일 캐시 라인에 속할 때, 상기 SMS 선인출 엔진은 단일 캐시 라인을 한 번만 선인출하는 방법.
  14. 제9항에 있어서,
    각 PHT 엔트리는 상기 오프셋 목록 필드에 저장된 상기 오프셋 값들에 의해 생성되는 전체 공간 패턴의 신뢰도 레벨을 나타내는 전체 신뢰도 필드를 더 포함하고,
    적어도 상기 전체 신뢰도 필드에 의해 상기 SMS 선인출 엔진에 연속적인 학습이 제공되는 방법.
  15. 제14항에 있어서,
    상기 PHT 엔트리의 상기 오프셋 목록 필드의 오프셋 값의 오프셋 당 신뢰도 레벨의 각 증가는 상기 PHT 엔트리에 대한 상기 전체 신뢰도 필드의 전체 신뢰도 레벨을 차례로 증가시키는 확인을 포함하고, 그리고
    상기 PHT 엔트리의 상기 오프셋 목록 필드의 상기 오프셋 값의 상기 오프셋 당 신뢰도 레벨의 각 감소는 상기 PHT 엔트리에 대한 상기 전체 신뢰도 필드의 상기 전체 신뢰도 레벨의 감소를 유발하는 방법.
  16. 제9항에 있어서,
    각 PHT 엔트리는 상기 대응하는 공간 영역 내의 상기 기본 오프셋 값을 포함하는 기본 오프셋 필드를 더 포함하고,
    상기 기본 오프셋 값은 바이트 입상도(byte granularity)를 제공하는 방법.
  17. 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체; 그리고
    공간 메모리 스트리밍(SMS) 선인출 엔진의 적어도 일부를 포함하는 적어도 하나의 프로세서를 포함하고,
    상기 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때, 상기 적어도 하나의 프로세서는 상기 SMS 선인출 엔진을 이용하여, 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 엔트리들은 캐시 메모리의 서로 다른 공간 영역들에 각각 대응하고, 상기 적어도 하나의 테이블의 각 엔트리는 대응하는 공간 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 유지하고,
    상기 명령들을 실행할 때, 상기 적어도 하나의 프로세서는 상기 SMS 선인출 엔진을 이용하여, PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하고,
    상기 기본 오프셋 값 및 상기 오프셋 값들은 둘 이상의 서로 다른 프로그램 카운터들에 대응하고,
    상기 기본 오프셋 값은 상기 대응하는 공간 영역을 처음으로 액세스한 프로그램 카운터의 오프셋 값을 포함하고, 그리고
    상기 오프셋 값들은, 상기 대응하는 공간 영역을 두 번째부터 액세스한 임의의 프로그램 카운터들의 제1 오프셋 값들과 상기 기본 오프셋 값 사이의 차이에 기반하는 장치.
  18. 방법에 있어서:
    칩셋을 제조하는 단계를 포함하고,
    상기 칩셋은 공간 메모리 스트리밍(SMS) 선인출 엔진의 적어도 일부를 포함하는 적어도 하나의 프로세서를 포함하고,
    하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때, 상기 적어도 하나의 프로세서는 상기 SMS 선인출 엔진을 이용하여, 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 엔트리들은 캐시 메모리의 서로 다른 공간 영역들에 각각 대응하고, 상기 적어도 하나의 테이블의 각 엔트리는 대응하는 공간 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 패턴 히스토리 테이블(PHT)을 유지하고,
    상기 명령들을 실행할 때, 상기 적어도 하나의 프로세서는 상기 SMS 선인출 엔진을 이용하여, PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하고,
    상기 기본 오프셋 값 및 상기 오프셋 값들은 둘 이상의 서로 다른 프로그램 카운터들에 대응하고,
    상기 기본 오프셋 값은 상기 대응하는 공간 영역을 처음으로 액세스한 프로그램 카운터의 오프셋 값을 포함하고, 그리고
    상기 오프셋 값들은, 상기 대응하는 공간 영역을 두 번째부터 액세스한 임의의 프로그램 카운터들의 제1 오프셋 값들과 상기 기본 오프셋 값 사이의 차이에 기반하는 방법.
  19. 장치를 테스트하는 방법에 있어서:
    상기 장치가 적어도 하나의 프로세서를 포함하는지 테스트하는 단계를 포함하고,
    상기 적어도 하나의 프로세서는, 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체에 저장된 명령들을 실행할 때, 적어도 하나의 테이블을 포함하고, 상기 적어도 하나의 테이블의 엔트리들은 캐시 메모리의 서로 다른 공간 영역들에 각각 대응하고, 상기 적어도 하나의 테이블의 각 엔트리는 대응하는 공간 영역 내의 기본 오프셋 값으로부터의 오프셋 값들을 위한 서브 필드들을 포함하는 오프셋 목록 필드 그리고 상기 오프셋 목록 필드의 오프셋 값들에 각각 대응하는 오프셋 당 신뢰도 레벨들을 위한 서브 필드들을 포함하는 오프셋 당 신뢰도 필드를 포함하는 공간 메모리 스트리밍(SMS) 선인출 엔진의 패턴 히스토리 테이블(PHT)을 유지하고,
    상기 적어도 하나의 프로셋는, 상기 명령들을 실행할 때, PHT 엔트리가 활성화될 때, 현재 액세스들을 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 매칭함으로써 상기 활성화된 PHT 엔트리의 상기 오프셋 값들에 대응하는 오프셋 당 신뢰도 값들을 갱신하고,
    상기 기본 오프셋 값 및 상기 오프셋 값들은 둘 이상의 서로 다른 프로그램 카운터들에 대응하고,
    상기 기본 오프셋 값은 상기 대응하는 공간 영역을 처음으로 액세스한 프로그램 카운터의 오프셋 값을 포함하고, 그리고
    상기 오프셋 값들은, 상기 대응하는 공간 영역을 두 번째부터 액세스한 임의의 프로그램 카운터들의 제1 오프셋 값들과 상기 기본 오프셋 값 사이의 차이에 기반하고,
    상기 방법은 상기 장치가 상기 명령들을 저장하는 상기 하나 또는 그보다 많은 비임시 컴퓨터로 독출 가능한 매체를 갖는지 테스트하는 단계를 더 포함하는 방법.
KR1020180029203A 2017-05-12 2018-03-13 공간적 메모리 스트리밍 신뢰 메커니즘 KR102538139B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762505318P 2017-05-12 2017-05-12
US62/505,318 2017-05-12
US201762535460P 2017-07-21 2017-07-21
US62/535,460 2017-07-21
US15/690,931 US10540287B2 (en) 2017-05-12 2017-08-30 Spatial memory streaming confidence mechanism
US15/690,931 2017-08-30

Publications (2)

Publication Number Publication Date
KR20180124712A KR20180124712A (ko) 2018-11-21
KR102538139B1 true KR102538139B1 (ko) 2023-05-30

Family

ID=64097810

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020180028546A KR102657076B1 (ko) 2017-05-12 2018-03-12 공간 메모리 스트리밍 트레이닝을 위한 장치 및 방법
KR1020180029203A KR102538139B1 (ko) 2017-05-12 2018-03-13 공간적 메모리 스트리밍 신뢰 메커니즘

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020180028546A KR102657076B1 (ko) 2017-05-12 2018-03-12 공간 메모리 스트리밍 트레이닝을 위한 장치 및 방법

Country Status (4)

Country Link
US (2) US10540287B2 (ko)
KR (2) KR102657076B1 (ko)
CN (2) CN108874692B (ko)
TW (2) TWI791505B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055217B2 (en) * 2018-06-01 2021-07-06 Apple Inc. Using additional intermediate buffer queues to identify interleaved media data to be read together
US10817426B2 (en) * 2018-09-24 2020-10-27 Arm Limited Prefetching techniques
CN109446111B (zh) * 2018-10-15 2021-01-26 上海兆芯集成电路有限公司 存储器集成电路及其预取地址决定方法
KR20200043842A (ko) 2018-10-18 2020-04-28 주식회사 실리콘웍스 차량용 램프 제어 장치
US11249909B2 (en) * 2018-12-28 2022-02-15 Intel Corporation Systems and methods for adaptive multipath probability (AMP) prefetcher
US11106463B2 (en) 2019-05-24 2021-08-31 Texas Instruments Incorporated System and method for addressing data in memory
US11520588B2 (en) 2019-06-10 2022-12-06 International Business Machines Corporation Prefetch filter table for storing moderately-confident entries evicted from a history table
WO2021009925A1 (ja) * 2019-07-18 2021-01-21 三菱電機株式会社 ネットワークセキュリティ装置、ネットワークセキュリティシステムおよびネットワークセキュリティ方法
US11874773B2 (en) * 2019-09-20 2024-01-16 Intel Corporation Apparatuses, methods, and systems for dual spatial pattern prefetcher
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
CN112084122B (zh) * 2019-09-30 2021-09-28 成都海光微电子技术有限公司 计算机存储器中对区域预取器的置信度和侵略性控制
US11809558B2 (en) * 2020-09-25 2023-11-07 Advanced Micro Devices, Inc. Hardware security hardening for processor devices
KR20220127504A (ko) * 2021-03-11 2022-09-20 삼성전자주식회사 블록 장치 이미지에 대한 런타임 체크섬 검증을 수행하는 전자 장치 및 이의 동작 방법
US11630670B2 (en) 2021-07-21 2023-04-18 Apple Inc. Multi-table signature prefetch
TW202345004A (zh) * 2021-12-31 2023-11-16 美商賽發馥股份有限公司 具亂序過濾預取器訓練佇列之預取器
US20240111676A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Apparatus, system, and method for throttling prefetchers to prevent training on irregular memory accesses

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190552A1 (en) * 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US20150026414A1 (en) * 2013-07-17 2015-01-22 Advanced Micro Devices, Inc. Stride prefetching across memory pages
US20170091104A1 (en) * 2015-09-30 2017-03-30 Arm Limited Apparatus and method for prefetching

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000011607A1 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6311260B1 (en) * 1999-02-25 2001-10-30 Nec Research Institute, Inc. Method for perfetching structured data
US6934809B2 (en) 2002-02-22 2005-08-23 Sun Microsystems, Inc. Automatic prefetch of pointers
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7657729B2 (en) * 2006-07-13 2010-02-02 International Business Machines Corporation Efficient multiple-table reference prediction mechanism
US8769207B2 (en) * 2008-01-16 2014-07-01 Via Technologies, Inc. Caching method and apparatus for a vertex shader and geometry shader
US8166251B2 (en) * 2009-04-20 2012-04-24 Oracle America, Inc. Data prefetcher that adjusts prefetch stream length based on confidence
EP2539821B1 (en) 2010-02-24 2019-08-28 Marvell World Trade Ltd. Caching based on spatial distribution of accesses to data storage devices
US10007523B2 (en) * 2011-05-02 2018-06-26 International Business Machines Corporation Predicting cache misses using data access behavior and instruction address
US8856452B2 (en) 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US8843690B2 (en) 2011-07-11 2014-09-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory conflicts learning capability
US9477834B2 (en) * 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9116815B2 (en) 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US9043613B2 (en) * 2013-06-28 2015-05-26 International Business Machines Corporation Multiple volume encryption of storage devices using self encrypting drive (SED)
US10133678B2 (en) 2013-08-28 2018-11-20 Advanced Micro Devices, Inc. Method and apparatus for memory management
JP6523274B2 (ja) * 2013-10-25 2019-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US20150199276A1 (en) 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
US9542323B2 (en) 2014-03-28 2017-01-10 Samsung Electronics Co., Ltd. Address re-ordering mechanism for efficient pre-fetch training in an out-of-order processor
US9665491B2 (en) * 2014-07-17 2017-05-30 Samsung Electronics Co., Ltd. Adaptive mechanism to tune the degree of pre-fetches streams
US9582282B2 (en) 2014-07-17 2017-02-28 Arm Limited Prefetching using a prefetch lookup table identifying previously accessed cache lines
KR101681423B1 (ko) 2015-08-11 2016-11-30 인하대학교 산학협력단 변위 히스토리 버퍼를 이용한 명령어 및 데이터 프리페치 방법 및 시스템
US10108549B2 (en) 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
CN106021128B (zh) * 2016-05-31 2018-10-30 东南大学—无锡集成电路技术研究所 一种基于步幅和数据相关性的数据预取器及其预取方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190552A1 (en) * 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US20150026414A1 (en) * 2013-07-17 2015-01-22 Advanced Micro Devices, Inc. Stride prefetching across memory pages
US20170091104A1 (en) * 2015-09-30 2017-03-30 Arm Limited Apparatus and method for prefetching

Also Published As

Publication number Publication date
CN108874694A (zh) 2018-11-23
US10417130B2 (en) 2019-09-17
CN108874694B (zh) 2023-11-28
KR102657076B1 (ko) 2024-04-15
TW201901438A (zh) 2019-01-01
TW201901439A (zh) 2019-01-01
US20180329823A1 (en) 2018-11-15
KR20180124712A (ko) 2018-11-21
TWI773749B (zh) 2022-08-11
US10540287B2 (en) 2020-01-21
CN108874692B (zh) 2023-10-31
US20180329822A1 (en) 2018-11-15
CN108874692A (zh) 2018-11-23
KR20180124709A (ko) 2018-11-21
TWI791505B (zh) 2023-02-11

Similar Documents

Publication Publication Date Title
KR102538139B1 (ko) 공간적 메모리 스트리밍 신뢰 메커니즘
US7739477B2 (en) Multiple page size address translation incorporating page size prediction
KR102470184B1 (ko) 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택
CN107479860B (zh) 一种处理器芯片以及指令缓存的预取方法
US8683129B2 (en) Using speculative cache requests to reduce cache miss delays
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US20070186050A1 (en) Self prefetching L2 cache mechanism for data lines
CN109478165B (zh) 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器
US8583874B2 (en) Method and apparatus for caching prefetched data
US8601240B2 (en) Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US11163573B2 (en) Hierarchical metadata predictor with periodic updates
US10318172B2 (en) Cache operation in a multi-threaded processor
US11442864B2 (en) Managing prefetch requests based on stream information for previously recognized streams
US20120124291A1 (en) Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
US9223714B2 (en) Instruction boundary prediction for variable length instruction set
US8661169B2 (en) Copying data to a cache using direct memory access
CN114546485A (zh) 用于预测子程序返回指令的目标的取指单元
JP2023524642A (ja) プロセッサ内のマイクロオペレーションキャッシュのためのマイクロオペレーションのフィルタリング
JP2002278752A (ja) 命令の実行結果予測装置
US20080162819A1 (en) Design structure for self prefetching l2 cache mechanism for data lines
CN115964309A (zh) 预取
US11379372B1 (en) Managing prefetch lookahead distance based on memory access latency
US20230205699A1 (en) Region aware delta prefetcher
US20070239939A1 (en) Apparatus for Performing Stream Prefetch within a Multiprocessor System
CN117971731A (zh) Lru近似算法的硬件实现装置、lru值的更新方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant