KR102513446B1 - 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 - Google Patents

집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102513446B1
KR102513446B1 KR1020180026426A KR20180026426A KR102513446B1 KR 102513446 B1 KR102513446 B1 KR 102513446B1 KR 1020180026426 A KR1020180026426 A KR 1020180026426A KR 20180026426 A KR20180026426 A KR 20180026426A KR 102513446 B1 KR102513446 B1 KR 102513446B1
Authority
KR
South Korea
Prior art keywords
predicted
queue
windowed
memory address
memory
Prior art date
Application number
KR1020180026426A
Other languages
English (en)
Other versions
KR20180124708A (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 KR20180124708A publication Critical patent/KR20180124708A/ko
Application granted granted Critical
Publication of KR102513446B1 publication Critical patent/KR102513446B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/30047Prefetch instructions; cache control instructions
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • 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/602Details relating to cache 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/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명에 일 특징에 따르면, 장치는 메모리 시스템으로부터 검색될 데이터를 예측하는 캐시 프리-페처(cache pre-fetcher)를 포함한다. 캐시 프리-페처(cache pre-fetcher)는 패턴 예측 회로 및 컨펌 대기열 회로를 포함할 수 있다. 그리고 상기 캐시 프리-페처는, 상기 메모리 시스템으로부터 프리-패치될 일련의 메모리 어드레스를 예측하도록 구성된 패턴 예측기 회로를 포함할 수 있다. 컨펌 대기열 회로는 예측된 메모리 어드레스들의 윈도우된 컨펌 대기열을 유지하고, 요청된 메모리 어드레스를 예측된 메모리 어드레스와 비교하고, 상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스에 포함되면 성공적인 프리-패치가 발생했음을 표시한다.

Description

집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법{APPARATUS INCLUDING INTEGRATED CONFIRMATION QUEUE CIRCUIT AND OPERATION METHOD THEREOF}
본 발명은 컴퓨터 프로세서에 관련된 것이다. 좀더 구체적으로 본 발명은 접적된 컨펌 대기열들에 관련된 것이다.
컴퓨터 프로세서는 일반적으로 명령어 또는 데이터가 실제로 요구되기 전에 저속 메모리인 원래 스토리지로부터 더 빠른 로컬 메모리로 명령어 또는 데이터를 패치함으로써 실행 성능을 향상시키기 위한 캐시 프리-패치(Cache pre-fetching)를 사용한다. 예를 들어, 프로세서는 명령어 또는 데이터 블록이 실제로 필요하기 전에 메인 메모리로부터 명령어 또는 데이터 블록을 요청하고, 해당 명령어 또는 데이터 블록을 캐시에 저장한다. 명령어 또는 데이터 블록이 실제로 필요한 경우, 프로세서는 메인 메모리에 요청했을 때보다 훨씬 빠르게 캐시에서 액세스할 수 있다. 프리-패치는 메모리 액세스 레이턴시를 숨길 수 있다. 데이터 액세스 패턴은 명령어 패턴보다 규칙성이 낮기 때문에 정확한 데이터 프리-패치는 일반적으로 명령어 프리-패치보다 어렵다.
프리-패치의 문맥에서, 프리-패치 정도는 프리-패치 동작에서 미리 프리-패치되거나 예측된 캐시 라인들의 수이다. 프리-패치 거리는 데이터 블록이 프리-패치되는 요청 접근 스트림이 얼마나 앞서 있는지를 나타낸다. 프리-패치 연산은 가져온 항목이 향후 캐시 미스를 방지하는지 또는 방지하지 않는지에 따라 유용하거나 쓸모없을 수 있다. 프리-패치 연산은 연산에 의해서 가져온 항목이 유용한 블록을 대체하고, 따라서 캐시 미스를 증가시키면 유해하다. 유해한 프리-패치는 캐시 오염을 야기시킨다. 프리-패치 연산은 가져온 데이터 블록이 캐시에 이미 존재하는 경우 불필요하다.
데이터 프리패처가 DRAM(Dynamic Random Access Memory) 접근 레이턴시를 커버하기 위해, 데이터 프리패처는 종종 요청 스트림에 앞서 많은 액세스를 행한다. 그러나 많은 잘못된 프리-패치를 발행하면 메모리 시스템에 과부하가 걸리고 처리량은 감소한다. 또한, 컴퓨터 프로세서용 컨펌 대기열은 전력 소모가 크고 대용량의 내용 주소화 메모리(Content Addressable Memory: CAM) 구조를 요구할 수 있으며, 대면적 및 타이밍 중요도를 사용한다. 일반적으로 컨펌 대기열은 들어오는 가상 또는 메모리 어드레스를 모든 엔트리에 대해 확인하는 내용 주소화 메모리(CAM)이다. 이러한 대형 CAM은 속도가 느리다. 더 큰 CAM 구조는 더 높은 전력을 필요로 하며, 다중 사이클이 복잡성을 높이기에 잠재적으로 속도 경로 문제를 유발할 수 있다.
본 발명의 목적은 컴퓨터 프로세서용 컨펌 대기열을 효과적으로 구성하기 위한 프리-패치 방법 및 그것을 적용하는 장치를 제공하는 데 있다.
본 발명의 일 실시 예에 따르면, 장치는 메모리 시스템으로부터 검색될 데이터를 예측하도록 구성된 캐시 프리-패처(cache pre-fetcher)를 포함할 수 있다. 캐시 프리-패처는 패턴 예측기 회로 및 컨펌 대기열 회로를 포함할 수 있다. 패턴 예측기 회로는 메모리 시스템으로부터 프리-패치될 일련의 메모리 어드레스를 예측하도록 구성될 수 있다. 컨펌 대기열 회로는 예측된 메모리 어드레스의 윈도우된 컨펌 대기열을 유지하고, 요청된 메모리 어드레스를 예측된 메모리 어드레스와 비교하고, 요청된 메모리 어드레스가 예측된 메모리 어드레스에 포함되는 경우, 성공적인 프리-패치가 발생했음을 표시한다.
본 발명의 다른 실시 예에 따르면, 방법은 메모리 시스템으로부터 프리-패치될 일련의 메모리 어드레스를 예측하는 단계를 포함할 수 있다. 상기 방법은 예측된 메모리 어드레스들의 윈도우된 컨펌 대기열을 유지하는 단계를 포함할 수 있다. 이 방법은 요청된 메모리 어드레스를 예측된 메모리 어드레스와 비교하는 단계를 포함할 수 있다. 상기 방법은 또한 요청된 메모리 어드레스가 예측된 메모리 어드레스에 포함되어 성공적인 프리-패치가 발생했음을 표시하는 단계를 포함할 수 있다.
하나 이상의 구현의 세부 사항은 첨부된 도면 및 이하의 설명에서 설명된다. 다른 특징들은 상세한 설명 및 도면들 및 청구항들로부터 자명할 것이다.
집적된 컨펌 대기열을 위한 시스템 그리고/또는 방법은 청구범위에서보다 보다 자세하게 설명된 실질적으로 도면들 중 적어도 하나와 관련하여 도시되고 그리고/또는 설명된다.
상술한 특징에 따른 본 발명에 따르면, 컴퓨터 프로세서용 컨펌 대기열을 저전력 및 고속으로 구성하기 위한 프리-패치 방법 및 장치를 구현할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 장치를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 장치를 보여주는 블록도이다.
도 4은 본 발명의 실시 예에 따른 장치를 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 장치를 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따라 형성된 장치들을 포함하는 정보 처리 시스템을 개략적으로 보여주는 블록도이다.
다양한 예시적 실시 예들이 몇몇 실시 예들을 보여주는 첨부된 도면들을 참조하여 자세하게 설명될 것이다. 그러나, 본 개시된 내용은 많은 상이한 형태로 구체화 될 수 있으며, 여기에 설명된 실시 예에 한정되는 것으로 해석되어서는 안된다. 오히려, 이러한 예시적인 실시 예들은 본 개시가 철저하고 완전해질 수 있도록 제공되며, 본 개시된 주제의 범위를 당업자에게 완전히 전달할 것이다. 도면에서, 층 및 영역의 크기 및 상대적 크기는 명확하게 하기 위해 과장 될 수 있다.
[0018] 요소 또는 층이 다른 엘리먼트 또는 층의 "위에", "연결된" 또는 "결합된"것으로 언급될 때, 그것은 다른 요소 또는 층에 직접적으로 연결, 결합되거나 또는 요소들 또는 층들이 그 사이에 존재할 수 있는 것으로 이해되어야 한다. 반면, 요소가 다른 요소 또는 층에 "직접적으로" 또는 "직접 연결되어" 또는 "직접 결합되어"있는 것으로 언급될 때, 개재하는 요소 또는 층이 존재하지 않는다. 동일한 도면 부호는 동일한 구성 요소를 지칭한다. 여기서 사용된 바와 같이, "및/또는"이라는 용어는 하나 또는 그 이상의 관련 열거된 항목의 임의의 조합 및 모든 조합을 포함한다.
비록 여기에서 제 1, 제 2, 제3 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 구성 요소, 성분, 영역, 층, 또는 섹션을 지칭 할 수 있다.
하나의 요소 또는 도면에서 도시된 다른 구성 요소(들) 또는 특징(들)과의 특징적인 관계를 설명하기 위한 설명을 용이하게 하기 위해 "아래의", "아래", "낮은", "특정 부분 아래", "위에", "상부"와 같은 공간적이고 상대적인 용어들이 여기에서 사용될 수 있다. 공간적이고 상대적인 용어들은 도면에서 묘사된 방향에 더해 사용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 만약 도면의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들의 "아래" 또는 "아래의" 또는 "특정 부분 아래"로 설명된 구성요소들은 다른 구성 요소들 또는 특징들의 "위로" 맞춰지게 된다. 따라서, "아래의" 또는 "특정 부분 아래"의 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 도는 다른 방향으로 회전됨) 그리고 공간적으로 상대적인 기술어들은 그에 따라 해석되어야 한다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 "하나"는 복수의 형태도 포함하는 것으로 의도된다. "포함하는", 그리고 "포함하고 있는" 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다.
예시적인 실시 예들은 이상적인 예시적인 실시 예 (및 중간 구조들)의 개략도인 단면도를 참조하여 여기에 설명된다. 이와 같이, 예를 들어 제조 기술 및/또는 허용 오차와 같은 결과로서의 도면의 형상으로부터의 변형이 예상되어야 한다. 따라서, 예시적인 실시 예들은 본 명세서에 도시된 특정 형상의 영역들에 한정되는 것으로 해석되어서는 안되며, 예를 들어 제조로부터 초래되는 형상의 편차를 포함해야 한다. 예를 들어, 직사각형으로 도시된 주입 영역은 통상적으로, 주입 영역에서부터 주입되지 않은 영역으로의 이진 변화라기보다는, 둥근 또는 곡선의 피쳐 및/또는 모서리에서의 주입 농도의 기울기를 나타낼 것이다. 마찬가지로, 주입에 의해 형성된 매립 영역은 매립 영역과 주입이 일어나는 표면 사이의 영역에 약간의 주입을 초래할 수 있다. 따라서, 도면들에 예시된 영역들은 본질적으로 개략적이며, 그 형상들은 디바이스의 영역의 실제 형상을 예시하는 것이 아니며, 본 개시된 주제의 범위를 제한하려는 것이 아니다.
다르게 정의되지 않는 한, 본 명세서에서 사용된 모든 용어들(기술적 그리고 과학적 용어들을 포함하는)은 본 발명이 속한 기술 분야에서 당업자에 의해 일반적으로 이해되는 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의된 이러한 용어들은 본 명세서 그리고/또는 관련 기술의 문맥에서 그들의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의되지 않는 한 이상화되거나 지나지게 형식적인 감각으로 해석되지 않아야 한다.
[0024] 이하 첨부되는 도면들을 참조하여 본 발명의 예시적인 실시 예들이 자세히 설명될 것이다.
도 1은 본 발명의 특징에 따른 시스템(100)의 예시적인 실시 예를 보여주는 블록도이다. 다양한 실시 예에서, 시스템(100)은 프로세서, 시스템-온-칩(SoC), 메모리 시스템 또는 캐시의 일부를 포함할 수 있다. 일 실시 예에서, 시스템(100)은 일 실시 예에 따라 캐시(예를 들어, 레벨 1 (L1) 캐시)에 프리-패처를 포함할 수 있다.
시스템(100)은 캐시 라인 액세스들 간의 스트라이드(Stride)들을 검출하도록 구성될 수 있다. 도시된 실시 예에서, 시스템(100)은 트레이닝 테이블(104)을 포함할 수 있다. 트레이닝 테이블(104)은 스트라이드를 계산하고 영역 내의 어드레스 스트림에 대한 스트라이드 이력을 유지하도록 구성될 수 있다. 이런 실시 예에서, 새로운 스트라이드 계산에서, 트레이닝 테이블(104)은 스트림에 대한 스트라이드 패턴을 패턴 예측기 회로(106)에 전송한다.
도시된 실시 예에서, 패턴 예측기 회로(106)는 패턴 검출기 유닛 또는 회로(108) 및 패턴 테이블(110)을 포함할 수 있다. 다양한 실시 예에서, 패턴 검출 유닛(108)은 단일 또는 다중 스트라이드 패턴을 검출하고 검출된 스트라이드를 패턴 테이블(110)에 보내도록 구성될 수 있다. 다양한 실시 예들에서, 테이블들 및 큐들(예를 들어, 패턴 테이블(110))은 본 명세서에서 설명된 바와 같이 데이터를 조작하거나 유지하기 위한 관련 데이터 및 회로 또는 로직을 저장하는 메모리 요소들을 포함할 수 있다.
다양한 실시 예에서, 패턴 테이블(110)은 어드레스 스트림에 대한 검출된 스트라이드를 개별 영역(예컨대, 4K)에 저장하도록 구성될 수 있다. 패턴 테이블(110), 또는 보다 일반적으로 패턴 예측기 회로(106)는 검출된 스트라이드 패턴에 기초하여 프리-패치 어드레스 또는 예측된 메모리 어드레스(103)를 생성하도록 구성될 수 있다.
도시된 실시 예에서, 예측된 메모리 어드레스(103)는 시작 대기열(112)에 입력 될 수 있다. 시작 대기열(112)은 패턴 예측기 회로(106)를 메모리 시스템(190)으로부터 분리시킨다. 시작 대기열(112)은 차례차례 메모리 시스템(190)(예를 들어, 레벨 2 (L2) 캐시, 메인 메모리)으로부터 메모리 어드레스들 (103)을 검색한다. 프로세서 또는 명령 흐름이 실제로 메모리 어드레스를 요구하지 않았기 때문에, 예측된 메모리 어드레스(103)는 프리-패치된(pre-fetched) 또는 예측 패치된(speculatively fetched) 것으로 간주된다. 이러한 실시 예에서, 메모리 시스템(190)으로부터 데이터를 패치하는데 필요한 레이턴시 또는 시간은 프로세서로부터 숨겨질 수 있다.
도시된 실시 예에서, 시스템(100)은 컨펌 대기열(114)을 포함할 수 있다. 이러한 실시 예에서, 컨펌 대기열(114)은 프리-패치 생성의 정확도를 추적하도록 구성될 수 있다. 컨펌 대기열(114)은 시작되거나 예측된 프리-패치 어드레스(113)를 저장하고, 이들을 요구 액세스 또는 실제로 요청된 메모리 어드레스(105)와 매치하도록 구성될 수 있다.
다양한 실시 예에서, 로드-저장 유닛(LSU)은 프로세서에 의해 실행되는 명령에서 요구하는 대로 다양한 메모리 어드레스(105)를 요청할 수 있다. 프리-패처 또는 시스템(100)이 사전에 정확하게 예측하고 요청하기 위해 시도한 것은 바로 실제 요청된 메모리 어드레스(105)이다.
이러한 실시 예에서, 요청된 메모리 어드레스(105)는 컨펌 대기열(114) 내의 엔트리들과 비교된다. 컨펌 대기열(114)은 일반적으로 CAM (content-addressable-memory)이지만, 이런 특징은 단지 개시된 주제가 제한되지 않는 하나의 예시적인 예일 뿐이라는 것을 이해해야 한다.
다양한 실시 예에서, 요청된 메모리 어드레스(105)가 성공적으로 예측되면(hit, 히트), 히트가 발생한 정보는 패턴 예측기 회로(106)로 피드백된다. 마찬가지로, 요청된 메모리 어드레스(105)가 성공적으로 예측되지 않으면(miss, 미스), 미스가 발생했다는 정보도 또한 패턴 예측기 회로(106)에 피드백된다. 이러한 실시 예에서, 패턴 예측기 회로(106)는 예측 능력의 향상을 시도한다.
도 2는 본 발명의 특징에 따른 장치 컨펌 대기열의 예시적인 실시 예를 보여주는 블록도이다. 다양한 실시 예에서, 장치(200)는 앞서 설명한 바와 같이 컨펌 대기열의 일부를 포함할 수 있다. 이러한 실시 예에서, 장치(200)는 복수의 메모리 요소를 포함할 수 있다.
도시된 실시 예에서, 장치(200)는 복수의 메모리 요소(202-1, 202-2 및 202-3)를 포함할 수 있다. 다양한 실시 예에서, 메모리 어드레스가 예측되어 프리-패치되면, 이는 컨펌 대기열(200)에 입력된다. 예를 들어, 메모리 어드레스 (A+1)은 요서(202-1)에 저장되고, 메모리 어드레스(A+2)는 요소(202-2)에, 메모리 어드레스(A+3)은 요소(202-3)에 저장된다.
일반적인 컨펌 대기열에서, 프리-패치될 수 있는 메모리 어드레스의 수는 컨펌 대기열 내의 메모리 요소의 수에 의해 제한될 것이다. 예를 들어 컨펌 대기열에 40개의 엔트리(또는, 메모리 요소들)가 있는 경우 최대 40개의 메모리 어드레스를 미리 가져올 수 있다. 다양한 실시 예에서, 예를 들어 예측 능력에 대한 신뢰도의 부족으로 인해 40개 미만의 메모리 어드레스가 실제로 프리-패치될 수 있다. 프리-패치 엔진의 깊이를 증가시키려는 요구는 컨펌 대기열의 크기를 증가시켰다. 컨펌 대기열은 전통적으로 CAM이므로 컨펌 대기열의 사이즈 증가는 크기, 전력 소비 및 타이밍 요구 사항 측면에서 비용이 매우 비싸지는 경향이 있다.
도시된 실시 예에서, 컨펌 대기열(200)은 예측된 메모리 어드레스들(A+1, A+2, 그리고 A+3)의 윈도우된 컨펌 대기열(210)를 포함한다. 이러한 실시 예에서, 컨펌 대기열(200)는 통상적으로 행해지는 바와 같이 모든 예측된 메모리 어드레스를 포함하지 않을 수 있다. 대신에, 예측된 메모리 어드레스의 서브-세트(어드레스의 윈도우(210) 내의 서브-세트)를 유지 또는 저장할 수 있다.
이러한 실시 예에서, 윈도우(210) 외부의 예측된 메모리 어드레스 (예를 들어, 영역(212))는 폐기되거나 그렇지 않으면 컨펌 대기열(200)에 입력되거나 추가되지 않을 수 있다. 이러한 실시 예에서, 컨펌 대기열(200)은 요소들(202-1 내지 202-40)을 포함하는 일반적이 대기열보다 훨씬 적은 수의 메모리 요소들 (202-1, 202-2 및 202-3)를 포함할 것이다.
다양한 실시 예에서, 윈도우 크기는 실시 예에 기초하여 변경될 수 있다. 도시된 실시 예에서, 윈도우 크기는 3개의 예측된 메모리 어드레스를 포함할 수 있다. 이러한 실시 예에서, 컨펌 대기열(200)은 일반적인 스타일을 사용하는 40개의 엔트리 큐의 크기의 대략 15%일 수 있다. 이상의 내용은 단지 개시된 주제가 제한되지 않는 하나의 예시적인 예일 뿐이라는 것을 이해해야 한다.
이러한 실시 예에서, 요청된 메모리 어드레스가 로드-저장 유닛 (LSU)에 의해 패치되거나 요청될 때, 요청된 메모리 어드레스는 윈도우된 메모리 어드레스에 대해 검사될 수 있다(영역 210에서). 어드레스가 일치하는 경우, 일치하는(그리고/또는 스킵된) 예상 메모리 어드레스는 대기열(200)로부터 제거되거나 삭제될 수 있다.
예를 들어, 예측된 메모리 어드레스(A+1)가 요청된 메모리 어드레스와 일치하는 경우, 어드레스(A+1)는 대기열(200)로부터 제거될 수 있다. 일 실시 예에서, 다른 예측된 메모리 어드레스는 대기열(200) 아래로 또는 대개열(200)을 따라서 시프트될 수 있다. 따라서, 메모리 어드레스(A+2)는 요소(202-1)로 이동될 수 있고, 메모리 어드레스(A+3)은 요소(202-2)로 이동될 수 있다. 이는 윈도우된 컨펌 대기열 (210)에 빈 요소(202-3)를 남기고, 따라서 요소(202-3)에 시프트할 저장된 메모리 어드레스(A+4)는 존재하지 않는다.
이러한 실시 예에서, 컨펌 대기열(200) 또는 패턴 예측기 회로는 예측된 메모리 어드레스(A+4)를 동적으로 재예측하거나 재생성할 수 있다. 이 새로이 재예측된 메모리 어드레스(A+4)는 윈도우된 컨펌 대기열(210)의 말미(요소(202-3))에 위치될 수 있다. 이러한 실시 예에서, 윈도우된 컨펌 대기열 (210)은 지속적으로 채워질 수 있지만(적어도 윈도우된 컨펌 대기열(210)에 존재하는 엔트리 수만큼 예측된 메모리 어드레스들이 존재하는 것으로 가정하여), 일반적인 컨펌 대기열의 하드웨어 요구는 회피된다.
이러한 실시 예에서, 패턴 예측기 회로가 모든 원래의 예측을 저장하는 대신에 메모리 어드레스의 예측을 여러 번(예를 들어, 2 회) 수행하도록 하는 것이 더 바람직할 수 있다. 또한, 다양한 실시 예에서, 패턴 예측기 회로는 업데이트된 신뢰도 레벨에 기초하여 제 2 또는 재예측을 하도록 구성될 수 있다. 이러한 실시 예에서, 컨펌 대기열(200)에 의해 패턴 예측기 회로에 제공되는 피드백은 패턴 예측기 회로가 20개의(예를 들어) 메모리 어드레스 이전에 채용한 예측 방식이 아닌, 예측기 회로에 의해 채용된 가장 최근의 예측 방식에 기초할 수 있다. 이상의 내용은 단지 개시된 주제가 제한되지 않는 하나의 예일 분임은 잘 이해되어야 한다.
도시된 실시 예에서, 새로운 메모리 어드레스가 예측되는 방식(예를 들면, 블록 214에서, 어드레스 A+41)과 같이, 컨펌 대기열 (200)은 윈도우된 컨펌 대기열(210)이 가득 찼는지 또는 사용되지 않은 공간을 갖는지를 판별한다(예를 들어, 단지 2개의 대기중인 예측된 메모리 어드레스가 존재하는 경우). 윈도우된 컨펌 대기열 (210)이 (예를 들어, 어드레스들의 스트림의 시작에서) 사용되지 않은 공간을 갖는다면, 최신 예측된 메모리 어드레스(A+41)은 윈도우된 컨펌 대기열(210)의 종단에 입력될 수 있다(예를 들어, 2 개의 주소가 이미 존재한다면 요소(202-3), 그렇지 않으면 요소(202-2) 또는 202-1조차도). 윈도우된 컨펌 대기열(210)이 가득 차면, 가장 새로운 예측된 메모리 어드레스는 폐기되거나, 컨펌 대기열(200)은 윈도우된 컨펌 대기열 (210)에 가장 새로운 예측된 메모리 어드레스(A+41)를 추가하는 것을 차단할 수 있다.
도 3은 본 발명의 특징에 따른 장치 또는 컨펌 대기열(300)의 실시 예를 보여주는 블록도이다. 도시된 실시 예에서, 컨펌 대기열(300)에 대한 요청된 메모리 어드레스의 검사가 보다 상세히 도시된다. 이들 내용은 단지 개시된 주제가 제한되지 않는 하나의 예시적인 예일 뿐이라는 것을 이해해야 한다.
도시된 실시 예에서, 컨펌 대기열(300)는 5 개의 엔트리를 갖는 윈도우된 컨펌 대기열을 포함한다. 이 윈도우된 컨펌 대기열은 요소들(302-0, 302-1, 302-2, 302-3 및 302-4)을 포함한다. 이들 내용은 단지 개시된 주제가 제한되지 않는 하나의 예시적인 예일 뿐이라는 것을 이해해야 한다.
도시된 실시 예에서, 요소들(302-0, 302-1, 302-2, 302-3 및 302-4)은 예측된 메모리 어드레스들(A, A+1, A+2, A+3, 및 A+4)을 각각 저장한다. 메모리 어드레스는 예측된 순서에 따라 1(예를 들어, A+1, A+2)씩 증가되는 방식으로 라벨링되지만, 메모리 어드레스 자체의 차이(예를 들어, 어드레스 값 0xFED6 B072)에 의한 것은 아니다. 메모리 어드레스 그 자체는 스트라이드를 포함할 수도 있고 일반적으로 비연속적일 수 있음은 잘 이해될 것이다.
도시된 실시 예에서, 메모리 어드레스(304)가 실제로 LSU에 의해 요청될 때, 윈도우된 컨펌 대기열(300) 내의 예측된 메모리 어드레스들에 대해 체크된다. 화살표(310)는 요청된 메모리 어드레스(304)가 가장 오래된 주소에서 가장 최신 주소 순으로 예측된 메모리 어드레스들(A, A+1, A+2, A+3 및 A+4)에 대해 확인되고 있음을 보여준다. 일부 실시 예에서, 이 비교는 병렬로 수행될 수 있다.
다양한 실시 예에서, 윈도우 내의 예측된 메모리 어드레스(A, A+1, A+2, A+3 및 A+4) 중 임의의 것이 요청된 메모리 어드레스(304)와 일치하면, 컨펌 대기열 히트 신호(312) 생성된다. 다양한 실시 예에서, 컨펌 대기열 히트 신호(312)는 성공적인 프리-패치가 발생했음을 패턴 예측기 회로에 알릴 수 있다.
일 실시 예에서, 이 컨펌 대기열 히트 신호(312)는 간단히 이진 신호를 포함할 수 있다. 다른 실시 예에서, 컨펌 대기열 히트 신호(312)는 요청된 어드레스(304)를 포함하는 메모리 요소(예를 들면, 요소들(302-0, 302-1, 302-2, 302-3 또는 302-4))에 관한 정보를 포함할 수 있다. 다른 실시 예에서, 컨펌 대기열 히트 신호(312)는 요청된 어드레스(304)를 포함하는 요소(들)를 구체적으로 상세화하지 않을 수 있지만, 대기열 내의 얼마나 많은 요소가 요청된 어드레스(304)의 첫 번째(종종 유일한 것) 반복을 발견했는지를 나타낼 수 있다. 이러한 실시 예에서, 요청된 어드레스(304)가 발견되기 전에 대기열에서 발생한 요소들의 수는 발생된 스킵들의 수로 언급된다.
다양한 실시 예에서, 스킵 카운트 및 매칭 요소 번호는 프리-패치 엔진의 예측 능력에서 신뢰도(Measure of confidence, 306)로 고려될 수 있다. 일부 실시 예에서, 설정 대기열(300) 또는 프리-패치 엔진은 프리-패치 예측과 관련된 신뢰도(306)를 결정하도록 구성될 수 있다. 이러한 실시 예에서, 신뢰도(306)의 레벨은, 프리-패치에 앞서는 메모리 어드레스가 얼마나 많은지(즉, 프리-패치의 정도) 또는 다른 프리-패치 파라미터들 결정할 때, 결정되거나 고려 될 수 있다.
도시된 실시 예에서, 신뢰도(306)의 레벨은 스킵(322)의 수 및 일치가 발견되는지 여부(즉, 컨펌 또는 컨펌 횟수(324))를 포함할 수 있다. 이러한 실시 예에서, 컨펌 횟수(324)는 신뢰도(306) 레벨의 주된 결정 요인일 수 있지만, 스킵들(322)의 수에 의해 조절될 수 있다. 예를 들어, 일치가 발견되었지만 대기열(300)이 그 일치를 발견하기 위해 복수의 요소들을 스킵해야 한다면, 신뢰도 (306)의 증가는 완화될 수 있다.
다른 실시 예에서, 대기열(300)은 제 1 부분 또는 전반 부분과, 그리고 제 2 부분 또는 후반 부분으로 분할될 수 있다. 일 실시 예에서, 제 1 부분은 요소들(302-0 및 302-1)을 포함할 수 있고, 제 2 부분은 요소들(302-2, 302-3 및 302-4)을 포함할 수 있다. 일 실시 예에서, 이 분할은 대략적으로 컨펌 대기열(300)의 중간 지점일 수 있다. 이러한 실시 예에서, 스킵은 후반 부분까지 일치가 발생하지 않는 경우에만 발생했다고 간주될 수 있다. 이러한 실시 예에서, 경계의 형태는 스킵에 대한 분석에서 발생할 수 있다. 다른 실시 예에서, 스킵들에서 미세한 레벨의 세분성이 이용될 수 있다(예를 들어, 대기열(300)은 3 개 또는 이상의 부분들로 분할될 수 있다). 이상의 내용은 개시된 내용이 제한되지 않는 단지 예시적인 실시 예에 불과하다는 것이 이해되어야 한다.
도시된 실시 예에서, 신뢰도(306)의 레벨은 프리-패치 로직(308) (예를 들어, 패턴 예측기 회로의 부분)에 대한 피드백일 수 있다. 프리-패치 로직(308)은 이 정보를 사용하여 다음 프리-패치 어드레스(309)의 예측을 향상시킬 수 있다.
다양한 실시 예에서, 대기열(300)은 최대 임계값(326) 또는 최소 임계값(327)을 이용하여 프리-패치 로직(308)에 제공된 신뢰도(306)의 레벨이 변경되어야 하는지를 결정할 수 있다. 일 실시 예에서, 컨펌 횟수(324)가 최대 임계값 (326)보다 크거나 같으면, 신뢰도(306)의 레벨이 증가될 수 있다. 컨펌 횟수(324)가 최소 임계값(327)보다 작으면, 신뢰도(306)의 레벨이 감소될 수 있다.
다양한 실시 예에서, 스킵(322)의 수는 임계값 결정에 포함될 수 있다. 예를 들어, 임계값 결정은 스킵(322)의 존재를 뺀 컨펌 횟수(324)에 기초할 수 있다. 다른 실시 예에서, 신뢰도(306)는 단지 주기적으로 갱신될 수 있고, 컨펌(324) 그리고/또는 스킵(322)의 카운트가 이용될 수 있다. 상술한 내용은 개시된 내용이 제한되지 않는 단지 예시적인 실시 예에 불과하다는 것이 이해된다.
도 4는 본 발명의 특징에 따른 장치(400)의 실시 예를 보여주는 블록도이다. 다양한 실시 예에서, 장치(400)는 복수의 컨펌 대기열 또는 다수의 대기열들로 분할된 단일 메모리 구조를 포함할 수 있다.
도시된 실시 예에서, 프리-패치 엔진은 복수의 스트림들 또는 일련의 명령어/데이터에 관련된 데이터를 프리-패치하도록 구성될 수 있다. 이러한 실시 예에서, 프리-패치 엔진은 각각의 명령어 스트림에 대해 개별 윈도우된 컨펌 대기열을 유지할 수 있다. 예를 들어, 도시된 실시 예에서, 윈도우된 컨펌 대기열 들(402, 404, 406 및 408)이 생성되거나 사용될 수 있다.
이러한 실시 예에서, 각각의 윈도우된 컨펌 대기열들(402, 404, 406 및 408)은 메모리 요소들(302-0, 302-1, 302-2, 302-3 및 302-4)의 각 버전을 포함할 수 있다. 또한, 이러한 실시 예에서, 각각의 윈도우된 컨펌 대기열들(402, 404, 406 및 408)은 컨펌 히트 신호(312) 및 신뢰도(306) 각각의 버전을 출력할 수 있다. 다양한 실시 예에서, 컨펌 히트 신호(312) 및 신뢰도(306)는 앞서 설명한 바와 같이 조합될 수 있다.
일 실시 예에서, 각각의 윈도우된 컨펌 대기열들(402, 404, 406, 및 408)은 각각의 데이터 스트림(예를 들어, A, B, C 및 D로 라벨링된 스트림 어드레스)과 연관될 수 있다. 이러한 실시 예에서, 패턴 예측기 회로는 예측된 메모리 어드레스 각각의 스트림 또는 세트를 예측하고 이들 어드레스로 윈도우된 컨펌 대기열들(402, 404, 406 및 408)를 채울 수 있다. 예를 들어, 윈도우된 컨펌 대기열(402)은 예측된 주소(A, A+1, A+2, A+3 및 A+4)를 포함할 수 있다. 윈도우된 컨펌 대기열(404)은 예측된 주소(B, B+1, B+2, B+3 및 B+4를 포함할 수 있다. 윈도우된 컨펌 대기열(406)은 예측된 주소(C, C+1, C+2, C+3 및 C+4)를 포함할 수 있다. 윈도우된 컨펌 대기열(408)은 예측된 주소(D, D+1, D+2, D+3 및 D+4)을 포함할 수 있다.
이러한 실시 예에서, 새로운 실제 메모리 어드레스가 요청됨에 따라(예를 들어, 어드레스 304A, 304B, 304C 및 304D), 이들 요청된 메모리 어드레스는 각각의 윈도우된 컨펌 대기열(402, 404, 406 또는 408)과 매칭될 것이다. 스트림의 예측된 메모리 어드레스에 대한 스트림의 요청된 메모리 어드레스의 매칭(또는 결여)은 상술한 바와 같이 스트림의 컨펌 히트 신호(312) 및 신뢰도(306)를 생성하는데 사용될 수 있다.
다양한 실시 예에서, 윈도우된 컨펌 대기열(402, 404, 406, 또는 408)은 모두 동일한 깊이 또는 같은 수의 엔트리들(예를 들어, 도시된 실시 예에서는 5)을 포함할 수 있다. 다른 실시 예에서, 스트림당 엔트리의 수는 변할 수 있다. 다른 실시 예에서, 윈도우의 엔트리 또는 사이즈의 수는 스트림의 시작에서 동적으로 할당될 수 있다. 또 다른 실시 예에서, 윈도우의 엔트리 또는 사이즈의 수는 신뢰도의 레벨 또는 프리-패치 깊이에 기초하여 동적으로 조정될 수 있다. 상술한 내용은 개시된 내용이 제한되지 않는 단지 예시적인 실시 예에 불과하다는 것으로 이해되어야 한다.
도 5는 본 발명의 특징에 따른 장치 또는 컨펌 대기열(500)의 예시적인 실시 예를 보여주는 블록도이다. 도시된 실시 예에서, 컨펌 대기열(500)은 6개의 요소들 또는 엔트리들을 포함한다. 상술한 내용은 단지 개시된 주제가 제한되지 않는 하나의 예시적인 예일 뿐임을 이해해야 한다.
다양한 실시 예들에서, 윈도우된 컨펌 대기열(500)은 데이터의 실제 프리-패치로부터 분리되거나 연결이 끊어질 수 있다. 일부 실시 예에서, 어드레스 (예를 들어, 어드레스 A+5)는 발진 큐에 입력되거나 발사 큐에 의해 요구되는 것과 동시에 컨펌 대기열에 입력 될 수 있다. 이러한 실시 예에서, 윈도우된 컨펌 대기열 (500)은 프리-패치 된 예측된 어드레스만을 포함할 수 있다.
도시된 실시 예에서, 윈도우된 컨펌 대기열 (500)은 메모리 시스템으로부터 패치되지 않은 어드레스를 포함할 수 있다. 이러한 실시 예에서, 윈도우된 컨펌 대기열(500)은 요청된 어드레스가 실제로 프리-패치되지 않더라도 (예를 들어, 메모리 시스템에 대한 경쟁으로 인해) 예측기 회로를 트레이닝할 수 있다.
도시된 실시 예에서, 어드레스 A+1(요소 502-1에 저장되어 있는), 어드레스 A+2(요소 502-2에 저장되어 있는), 어드레스 A+3(요소 502-3에 저장되어 있는), 어드레스 A+4(요소 502-4에 저장되어 있는)는 프리-패처 회로에 의해 실제로 프리-패치될 수 있다. 역으로, 어드레스 A+5(요소 502-5에 저장되어 있는), 및 어드레스 A+6(요소 502-6에 저장되어 있는)은 프리-패치되지 않았을 수도 있지만 예측될 수 있다. 일 실시 예에서, 시작 대기열(Launch Queue)은 어드레스들을 아직 메모리 시스템으로부터 요청하지 않았거나, 어드레스가 시작 대기열(Launch Queue)에 입력되지 않을 수도 있다.
이러한 실시 예에서, 실제 어드레스(506)가 LSU에 의해 요청되면, 예측된 및 프리-패치된 어드레스(A+1, A+2, A+3 및 A+4)와, 예측되었지만 프리-패치되지는 않은 어드레스(A+5 및 A+6)가 비교된다. 이러한 실시 예에서, 윈도우된 컨펌 대기열(500)은 항상 가득 차있을 수 있고, 항상 예측 스킴의 테스트 및 피드백을 통해 허용할 수 있다. 이러한 실시 예에서, 윈도우된 컨펌 대기열(500)은 실제 요구 또는 어드레스 요청이 프리-패치보다 앞서 가더라도 예측된 어드레스에 대한 록(lock)을 유지할 수 있다.
일 실시 예에서, 윈도우된 컨펌 대기열(500)은 예측된 어드레스가 미리 프리-패치되었는지의 여부를 나타내는 태그 또는 메타 데이터 (태그들 504-1, 504-2, 504-3, 504-4, 504-5 및 504-6)를 포함할 수 있다. 다른 실시 예에서, 이들 태그는 적용되지 않을 수 있다. 상술한 내용은 개시된 내용이 제한되지 않는 단지 예시적인 실시 예에 불과하다는 것으로 이해되어야 한다.
일 실시 예에서, 스킵의 개념으로 돌아가서, 컨펌 대기열은 전반부(550)와 후반부(552)로 분할될 수 있다. 도시된 실시 예에서, 부분들(550 및 552)로의 분할은 메모리 어드레스들의 프리-패치된 본질에 관계없이 발생할 수 있다(예를 들면, 어드레스 A+4는 프리-패치되었지만 여전히 후반부(552)에 존재). 다른 실시 예에서, 상술한 부분들은 상술한 어드레스들의 프리-패치된 상태에 기초할 수 있다. 상술한 내용은 개시된 내용이 제한되지 않는 단지 예시적인 실시 예에 불과하다는 것으로 이해되어야 한다.
도 6은 본 발명의 개시된 주제의 원리에 따라 형성된 반도체 장치를 포함하는 정보 처리 시스템(600)의 개략적인 블록도이다.
도 6을 참조하면, 정보 처리 시스템(600)은 개시된 주제의 원리에 따라 구성된 하나 이상의 장치를 포함할 수 있다. 다른 실시 예에서, 정보 처리 시스템(600)은 개시된 주제의 원리에 따라 하나 이상의 기술을 채용하거나 실행할 수 있다.
다양한 실시 예에서, 정보 처리 시스템(600)은 예를 들어 랩탑, 데스크탑, 워크스테이션, 서버, 블레이드 서버, 개인 휴대 정보 단말기, 스마트 폰, 태블릿 및 다른 적절한 컴퓨터 또는 가상 머신 또는 가상 컴퓨팅 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예에서, 정보 처리 시스템(600)은 사용자(도시되지 않음)에 의해 사용될 수 있다.
본 발명에 따른 정보 처리 시스템(600)은 중앙처리장치(CPU), 로직 또는 프로세서(610)를 더 포함할 수 있다. 일부 실시 예에서, 프로세서(610)는 하나 이상의 기능 유닛 블록(FUB) 또는 조합논리블록(CLB)을 포함할 수 있다. 이러한 실시 예에서, 조합논리블록(CLB)은 다양한 부울 논리 연산들(예컨대, NAND, NOR, NOT, XOR), 안정화 논리 디바이스(예를 들어, 플립 플롭, 래치), 다른 논리 회로 장치 또는 이들의 조합을 포함할 수 있다. 이러한 조합 논리 연산은 입력 신호를 처리하여 원하는 결과를 얻도록 간단하거나 복잡한 방식으로 구성될 수 있다. 동기 조합 논리 연산의 몇 가지 예시적인 예가 설명되었지만, 개시된 주제는 그렇게 제한되지 않으며 비동기 연산 또는 이들의 혼합을 포함할 수 있다. 일 실시 예에서, 조합 논리 연산은 복수의 상보형 금속 산화물 반도체(CMOS) 트랜지스터를 포함할 수 있다. 다양한 실시 예들에서, 다른 기술들이 사용될 수 있고 개시된 주제의 범위 내에 있음을 이해하지만 이들 CMOS 트랜지스터들은 논리 동작들을 수행하는 게이트들로 배열될 수 있다.
본 발명에 따른 정보 처리 시스템(600)은 휘발성 메모리(620) (예를 들어, 랜덤 액세스 메모리(RAM))를 더 포함할 수 있다. 본 발명에 따른 정보 처리 시스템(600)은 불휘발성 메모리(630) (예를 들어, 하드 드라이브, 광 메모리, NAND 또는 플래시 메모리)를 더 포함할 수 있다. 일부 실시 예에서, 휘발성 메모리(620), 불휘발성 메모리(630) 또는 이들의 조합 또는 부분은 "저장 매체"로 지칭될 수 있다. 다양한 실시 예에서, 휘발성 메모리(620) 그리고/또는 불휘발성 메모리(630)는 반영구적 또는 실질적으로 영구적인 형태로 데이터를 저장하도록 구성될 수 있다.
다양한 실시 예에서, 정보 처리 시스템(600)은 정보 처리 시스템(600)이 통신 네트워크의 일부분이고 통신 네트워크를 통해 통신할 수 있도록 구성된 하나 이상의 네트워크 인터페이스(640)를 포함할 수 있다. Wi-Fi 프로토콜의 예로는 IEEE (Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n이 포함될 수 있지만 본 발명은 이에 국한되지는 않는다. 셀룰러 프로토콜의 예로는 IEEE 802.16m 어드벤스드(일명 무선 MAN (Metropolitan Area Network), LTE-A(Long Term Evolution - Advanced), GSM(이동 통신용 글로벌 시스템) 에볼루션(EDGE), HSPA+(Evolved High-Speed Packet Access) 등이 있다. 유선 프로토콜의 예로는 IEEE 802.3(이더넷이라고도 함), 파이버 채널, 전력선 통신(예 : HomePlug, IEEE 1901)이 있다. 상기 내용은 개시된 내용이 제한되지 않으며, 단지 예시적인 실시 예에 불과하다는 것으로 이해되어야 한다.
본 발명에 따른 정보 처리 시스템(600)은 유저 인터페이스 유닛(650) (예를 들어, 디스플레이 어댑터, 햅틱 인터페이스, 휴먼 인터페이스 장치)을 더 포함할 수 있다. 다양한 실시 예에서, 이 유저 인터페이스 유닛(650)은 사용자로부터 입력을 수신하고 그리고/또는 사용자에게 출력을 제공하도록 구성될 수 있다. 다른 종류의 장치가 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백일 수 있다. 사용자로부터의 입력은 어쿠스틱, 스피치 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시 예에서, 정보 처리 시스템(600)은 하나 이상의 다른 장치 또는 하드웨어 구성 요소(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기, 비디오 프로세서)를 포함할 수 있다. 상술한 내용은 개시된 내용이 제한되지 않는 예시적인 실시 예에 불과하다는 것으로 이해되어야 한다.
본 발명에 따른 정보 처리 시스템(600)은 하나 이상의 시스템 버스(605)를 더 포함할 수 있다. 이러한 실시 예에서, 시스템 버스(605)는 프로세서(610), 휘발성 메모리(620), 불휘발성 메모리(630), 네트워크 인터페이스(640), 유저 인터페이스 유닛(650) 및 하나 이상의 하드웨어 장치들(660)을 서로 연결하도록 구성된다. 프로세서(610)에 의해 처리된 데이터 또는 불휘발성 메모리 (630) 외부에서 입력된 데이터는 불휘발성 메모리(630) 또는 휘발성 메모리(630)에 저장될 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(600)은 하나 이상의 소프트웨어 컴포넌트(670)를 포함하거나 실행할 수 있다. 일부 실시 예에서, 소프트웨어 컴포넌트(670)는 운영 체제(OS) 그리고/또는 애플리케이션을 포함할 수 있다. 일부 실시 예에서, OS는 하나 이상의 서비스를 애플리케이션에 제공하고, 애플리케이션과 정보 처리 시스템(600)의 다양한 하드웨어 장치들(예를 들어, 프로세서(610), 네트워크 인터페이스(640)) 사이의 중재자를 관리하거나 중재자로서 역할을 하도록 구성될 수 있다. 이러한 실시 예에서, 정보 처리 시스템(600)은 국부적으로(예를 들어, 불휘발성 메모리(630) 내에) 설치될 수 있고 프로세서(610)에 의해 직접 실행되고, OS와 직접 통신하도록 구성될 수 있는 하나 이상의 기본 애플리케이션(Native app.)을 포함할 수 있다. 이러한 실시 예에서, 기본 애플리케이션은 미리 컴파일된 머신 실행 가능 코드를 포함할 수 있다. 일부 실시 예에서, 기본 애플리케이션은 소스 또는 객체 코드를 프로세서(610)에 의해 실행되는 실행 가능 코드로 변환하도록 구성되는 스크립트 인터프리터(예: C 쉘(csh), AppleScript, AutoHotkey) 또는 가상 실행 기계(VM) (예: Java 가상 머신, Microsoft 공용 언어 런타임)를 포함할 수 있다.
상술한 반도체 장치는 다양한 패키징 기술을 사용하여 캡슐화될 수 있다. 예를 들어, 본 발명의 원리에 따라 구성된 반도체 장치는 패키지 온 패키지(POP) 기술, 볼 그리드 어레이(BGA) 기술, 칩 스케일 패키지(CSP) 기술, 플라스틱 PDIP (plastic dual in-line package) 기술, 다이 내 와플 팩 기술, 웨이퍼 형태의 다이 기술, COB (Chip On Board) 기술, 세라믹 듀얼 인라인 패키지 PMQFP(Plastic Metric Quad Flat Package) 기술, PQFP(Plastic Quad Flat Package) 기술, SOIC(Small Outline Package) 기술, SSOP(shrink small outline package) 기술, 얇은 소형 외곽선 패키지(TQFP) 기술, 시스템 인 패키지(SIP) 기술, 멀티 칩 패키지(MCP) 기술, 웨이퍼 레벨 제조 패키지(WFP) 기술, 웨이퍼 레벨 처리 스택 패키지(WSP) 기술, 또는 이 분야의 기술을 습득한 사람들에게 잘 알려진 다른 기술들 중 하나를 사용하여 캡슐화될 수 있다.
방법 단계는 입력 데이터를 조작하고 출력을 생성함으로써 기능을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 방법 단계들은 또한 FPGA(field programmable gate array) 또는 ASIC (application-specific integrated circuit)과 같은 특수 목적의 논리 회로에 의해 수행되고, 수행되고 장치들은 FPGA(field programmable gate array) 또는 ASIC (application-specific integrated circuit)과 같은 특수 목적의 논리 회로로 구현될 수 있다.
다양한 실시 예에서, 컴퓨터 판독 가능 매체는 실행될 때 장치로 하여금 방법 단계들 중 적어도 일부를 수행하도록 하는 명령어을 포함할 수 있다. 일부 실시 예에서, 컴퓨터 판독 가능 매체는 자기 매체, 광학 매체, 다른 매체, 또는 이들의 조합(예를 들어, CD-ROM, 하드 드라이브, 판독 전용 메모리, 플래시 드라이브)에 포함될 수 있다. 이러한 실시 예에서, 컴퓨터 판독 가능 매체는 명백하게 그리고 비일시적으로 구현된 제품일 수 있다.
개시된 주제의 원리가 예시적인 실시 예를 참조하여 설명되었지만, 당업자라면 이들 개시된 개념의 사상 및 범위를 벗어나지 않고 다양한 변경 및 수정이 이루어질 수 있음을 명백히 알 수 있을 것이다. 따라서, 상술한 실시 예들은 제한적인 것이 아니라 예시적인 것임을 이해해야 한다. 따라서, 개시된 개념들의 범위는 이하의 청구범위 및 그 균등물의 가장 넓은 허용 가능한 해석에 의해 결정되어야 하며, 전술한 설명에 의해 제한되거나 제한되어서는 안된다. 그러므로, 첨부된 청구범위는 실시 예의 범위 내에 있는 모든 변경 및 변경을 포함하도록 의도된 것으로 이해되어야 한다.

Claims (20)

  1. 메모리 시스템으로부터 검색될 데이터를 예측하는 캐시 프리-페처(cache pre-fetcher)를 포함하고,
    상기 캐시 프리-페처는:
    상기 메모리 시스템으로부터 프리-패치될 일련의 메모리 어드레스를 예측하도록 구성된 패턴 예측기 회로, 및
    컨펌 대기열 회로를 포함하고,
    상기 컨펌 대기열 회로는:
    예측된 메모리 어드레스들의 윈도우된 컨펌 대기열을 유지하고,
    요청된 메모리 어드레스를 예측된 메모리 어드레스와 비교하고, 그리고
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스에 포함된 경우, 성공적인 프리-패치가 발생했음을 표시하고, 상기 윈도우된 컨펌 대기열에서 상기 요청된 메모리 어드레스를 동적으로 소거하여 새롭게 예측되는 메모리 어드레스에 대한 공간을 확보하도록 구성되는 장치.
  2. 제 1 항에 있어서,
    상기 윈도우된 컨펌 대기열은 미리 정의된 수 이하의 복수의 예측된 메모리 어드레스들을 포함하도록 구성되고,
    상기 컨펌 대기열 회로는, 상기 패턴 예측기 회로에 의해 예측되어 상기 윈도우된 컨펌 대기열에 대기중인메모리 어드레스의 수가 상기 미리 정의된 수보다 큰 경우, 상기 윈도우된 컨펌 대기열에 더 이상의 메모리 어드레스를 부가하는 것을 중지하는 장치.
  3. 제 1 항에 있어서,
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스에 포함되는 경우, 상기 컨펌 대기열 회로는:
    상기 윈도우된 컨펌 대기열에서 상기 요청된 메모리 어드레스를 제거하고;
    상기 윈도우된 컨펌 대기열로부터 상기 요청된 메모리 어드레스보다 먼저 예측된 임의의 메모리 어드레스를 제거하고; 그리고
    상기 패턴 예측기 회로에 의해 이전에 예측되었지만 윈도우된 컨펌 대기열에 추가되지 않은 메모리 어드레스를 재-예측함으로써 윈도우된 컨펌 대기열을 다시 채우는 장치.
  4. 제 1 항에 있어서,
    상기 컨펌 대기열 회로는,
    각각의 어드레스 스트림에 대한 복수의 윈도우된 컨펌 대기열을 유지하고;
    어드레스 스트림의 요청된 메모리 어드레스를 상기 어드레스 스트림과 연관된 윈도우된 컨펌 대기열과 비교하고; 그리고
    상기 패턴 예측기 회로에 상기 비교의 결과를 표시하는 장치.
  5. 제 1 항에 있어서,
    상기 컨펌 대기열 회로는,
    상기 윈도우된 컨펌 대기열을 전반 부분 및 후반 부분으로 분할하고;
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스들에 포함되는지 여부를 판별하고; 그리고
    만약 포함된 것으로 판별되면, 어느 부분이 상기 예측된 메모리 어드레스를 포함하는 지에 따라 상기 예측에 대한 신뢰도를 조정하는 장치.
  6. 제 1 항에 있어서,
    상기 컨펌 대기열 회로는:
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스들 중 하나와 정합하기 전에, 만일 존재한다면, 스킵된 예측된 메모리 어드레스들의 수를 결정하고;
    상기 스킵된 예측된 메모리 어드레스의 수의 적어도 부분적으로 기초하여 성공적인 패치의 신뢰도를 낮추는 장치.
  7. 제 6 항에 있어서,
    상기 컨펌 대기열 회로는:
    성공적인 예측의 수를 카운트하고,
    상기 성공적인 예측의 수가 미리 결정된 임계값을 초과하는 경우에 신뢰 수준이 증가함을 나타내는 장치.
  8. 제 7 항에 있어서,
    상기 컨펌 대기열 회로는:
    적어도 부분적으로 상기 스킵된 예측된 메모리 어드레스의 수에 기초하여 성공적인 예측의 수를 조정하는 장치.
  9. 제 1 항에 있어서,
    상기 컨펌 대기열 회로는:
    각각의 상기 예측된 메모리 어드레스에 대해, 각각의 예측된 메모리 어드레스가 프리-패치되었는지의 여부를 나타내는 태그를 유지하는 장치.
  10. 제 1 항에 있어서,
    상기 컨펌 대기열 회로는 상기 예측된 메모리 어드레스가 상기 메모리 시스템으로부터 프리-패치되지 않았더라도 예측된 메모리 어드레스를 저장하는 장치.
  11. 메모리 시스템으로부터 프리-패치(Pre-fetch)될 일련의 메모리 어드레스를 예측하는 단계;
    예측된 메모리 어드레스들의 윈도우된 컨펌 대기열을 유지하는 단계;
    요청된 메모리 어드레스를 상기 예측된 메모리 어드레스들과 비교하는 단계; 그리고
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스들에 포함되는 경우, 성공적인 프리-패치가 발생했음을 표시하고, 상기 윈도우된 컨펌 대기열에서 상기 요청된 메모리 어드레스를 동적으로 소거하여 새롭게 예측되는 메모리 어드레스에 대한 공간을 확보하도록 구성되는 단계를 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 윈도우된 컨펌 대기열은 미리 정의된 수 이하의 복수의 예측된 메모리 어드레스들을 포함하도록 구성되고,
    상기 유지하는 단계는:
    패턴 예측기 회로에 의해 예측되어 상기 윈도우된 컨펌 대기열에 대기중인 메모리 어드레스들의 수가 상기 미리 정의된 복수의 예측된 메모리 어드레스들의 수보다 큰 경우, 상기 윈도우된 컨펌 대기열에 임의의 메모리 어드레스를 추가하는 것을 금지하는 방법.
  13. 제 12 항에 있어서,
    상기 유지하는 단계는,
    상기 메모리 시스템으로부터 상기 예측된 메모리 어드레스가 프리-패치되지 않은 경우에도 상기 윈도우된 컨펌 대기열에 상기 예측된 메모리 어드레스를 부가하는 단계를 더 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 유지하는 단계는,
    각각의 상기 예측된 메모리 어드레스와 태그를 연관시키는 단계를 포함하되, 상기 태그는 상기 각각의 예측된 메모리 어드레스가 상기 메모리 시스템으로부터 적어도 부분적으로 프리-패치되었는지 여부를 나타내는 방법.
  15. 제 11 항에 있어서,
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스들에 포함되는 경우:
    상기 윈도우된 컨펌 대기열로부터 상기 요청된 메모리 어드레스를 제거하는 단계;
    상기 윈도우된 컨펌 대기열로부터 상기 요청된 메모리 어드레스보다 먼저 예측된 임의의 메모리 어드레스들을 제거하는 단계; 그리고
    패턴 예측기 회로에 의해 이전에 예측되었지만 상기 윈도우된 컨펌 대기열에 추가되지 않은 메모리 어드레스를 재-예측(re-predict)함으로써 상기 윈도우된 컨펌 대기열을 리필하는 단계를 더 포함하는 방법.
  16. 제 11 항에 있어서,
    상기 유지하는 단계는, 각각의 어드레스 스트림에 대해 복수의 윈도우된 컨펌 대기열 각각을 유지하는 단계를 포함하고,
    상기 비교하는 단계는 어드레스 스트림의 상기 요청된 메모리 어드레스를 상기 어드레스 스트림과 연관된 윈도우된 컨펌 대기열과 비교하는 단계; 그리고
    상기 표시하는 단계는 패턴 예측기 회로에 상기 비교 결과를 표시하는 단계를 포함하는 방법.
  17. 제 11 항에 있어서,
    상기 비교하는 단계는,
    상기 윈도우된 컨펌 대기열을 전반부 및 후반부로 분할하는 단계와,
    상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스들에 포함되는지, 만일 포함된다면 어느 부분에 포함되는지 판별하는 단계; 그리고
    상기 표시하는 단계는 상기 예측된 메모리 어드레스를 포함하는 부분에 기초하여 상기 예측에서의 신뢰도를 조정하는 단계를 포함하는 방법.
  18. 제 11 항에 있어서,
    상기 비교하는 단계는,
    성공적인 예측의 수를 카운트하는 단계; 그리고
    상기 성공적인 예측의 수가 미리 결정된 임계값을 초과하는 경우, 증가된 신뢰도를 결정하는 단계를 포함하는 방법.
  19. 제 11 항에 있어서,
    상기 비교하는 단계는, 상기 요청된 메모리 어드레스가 상기 예측된 메모리 어드레스들 중 하나와 정합하기 전에, 만일 있다면 스킵된 예측된 메모리 어드레스들의 개수를 결정하는 단계; 그리고
    적어도 부분적으로 상기 스킵된 예측된 메모리 어드레스의 수에 기초하여 성공적인 패치에 대한 신뢰도를 낮추는 단계를 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 표시하는 단계는, 적어도 부분적으로 상기 스킵된 예측된 메모리 어드레스의 수에 기초하여 성공적인 예측의 수를 조정하는 단계를 포함하는 방법.
KR1020180026426A 2017-05-12 2018-03-06 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 KR102513446B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762505836P 2017-05-12 2017-05-12
US62/505,836 2017-05-12
US15/665,401 2017-07-31
US15/665,401 US10387320B2 (en) 2017-05-12 2017-07-31 Integrated confirmation queues

Publications (2)

Publication Number Publication Date
KR20180124708A KR20180124708A (ko) 2018-11-21
KR102513446B1 true KR102513446B1 (ko) 2023-03-23

Family

ID=64097878

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180026426A KR102513446B1 (ko) 2017-05-12 2018-03-06 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법

Country Status (4)

Country Link
US (1) US10387320B2 (ko)
KR (1) KR102513446B1 (ko)
CN (1) CN108874689B (ko)
TW (1) TWI759449B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084122B (zh) * 2019-09-30 2021-09-28 成都海光微电子技术有限公司 计算机存储器中对区域预取器的置信度和侵略性控制
GB2593484B (en) * 2020-03-24 2022-09-28 Advanced Risc Mach Ltd Memory management
KR20220035568A (ko) 2020-09-14 2022-03-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220117998A (ko) 2021-02-18 2022-08-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
WO2023129316A1 (en) * 2021-12-31 2023-07-06 SiFive, Inc. Prefetcher with out-of-order filtered prefetcher training queue

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160019155A1 (en) * 2014-07-17 2016-01-21 Arun Radhakrishnan Adaptive mechanism to tune the degree of pre-fetches streams

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134633A (en) 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6654837B1 (en) 1999-12-28 2003-11-25 Intel Corporation Dynamic priority external transaction system
JP4067887B2 (ja) 2002-06-28 2008-03-26 富士通株式会社 プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法
US7165167B2 (en) * 2003-06-10 2007-01-16 Advanced Micro Devices, Inc. Load store unit with replay mechanism
US7127574B2 (en) 2003-10-22 2006-10-24 Intel Corporatioon Method and apparatus for out of order memory scheduling
US20060143401A1 (en) 2004-12-27 2006-06-29 Jacob Doweck Method and apparatus for prefetching based on cache fill buffer hits
US7380066B2 (en) * 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US20060248280A1 (en) 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetch address generation implementing multiple confidence levels
US8122222B2 (en) * 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on a scope predictor
US8397049B2 (en) 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US9098418B2 (en) 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9390018B2 (en) * 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9262328B2 (en) 2012-11-27 2016-02-16 Nvidia Corporation Using cache hit information to manage prefetches
US20150199276A1 (en) * 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
WO2016097809A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160019155A1 (en) * 2014-07-17 2016-01-21 Arun Radhakrishnan Adaptive mechanism to tune the degree of pre-fetches streams

Also Published As

Publication number Publication date
TW201901441A (zh) 2019-01-01
US10387320B2 (en) 2019-08-20
CN108874689B (zh) 2023-12-12
TWI759449B (zh) 2022-04-01
CN108874689A (zh) 2018-11-23
US20180329821A1 (en) 2018-11-15
KR20180124708A (ko) 2018-11-21

Similar Documents

Publication Publication Date Title
KR102513446B1 (ko) 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법
US11169925B2 (en) Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
KR102393151B1 (ko) 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템
TWI774703B (zh) 偵測與處理儲存串流的系統與方法
US20150268961A1 (en) Decoupling l2 btb from l2 cache to accelerate search for miss after miss
US9569361B2 (en) Pre-fetch chaining
US11030030B2 (en) Enhanced address space layout randomization
CN110716694A (zh) 用于存储管理的装置及系统
US10372902B2 (en) Control flow integrity
CN109753444B (zh) 用以避免负载填充冲突的设备以及系统
CN109564543B (zh) 用于多线程式模式中的功率降低的方法和装置
TWI650642B (zh) 用於機會式快取注入資料至快取階層之較低延遲層級的方法、設備及系統

Legal Events

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