KR102268601B1 - 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 - Google Patents

데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 Download PDF

Info

Publication number
KR102268601B1
KR102268601B1 KR1020140175030A KR20140175030A KR102268601B1 KR 102268601 B1 KR102268601 B1 KR 102268601B1 KR 1020140175030 A KR1020140175030 A KR 1020140175030A KR 20140175030 A KR20140175030 A KR 20140175030A KR 102268601 B1 KR102268601 B1 KR 102268601B1
Authority
KR
South Korea
Prior art keywords
virtual address
processor
buffer
fill buffer
load
Prior art date
Application number
KR1020140175030A
Other languages
English (en)
Other versions
KR20150079408A (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 KR20150079408A publication Critical patent/KR20150079408A/ko
Application granted granted Critical
Publication of KR102268601B1 publication Critical patent/KR102268601B1/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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

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

Abstract

본 발명의 실시 예에 따른 데이터를 포워딩하는 프로세서의 동작 방법은, 로드(Ld) 출력이 제1 실행을 위해 처리될 때, 프로세서에 대한 캐시 메모리의 제1 레벨에 히트가 있는지에 대해 판단하는 단계 및 상기 캐시 메모리의 제1 레벨에 히트가 없다면, 상기 프로세서의 필 버퍼(FB)에 상기 로드 명령으로부터 공급되는 제1 가상 어드레스(VA), 및 상기 프로세서의 변환 색인 버퍼(TLB)의 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 제1 지시를 저장하는 단계를 포함하되, 상기 제1 페이지 테이블 엔트리는 상기 로드 명령으로부터 공급되는 상기 제1 가상 어드레스와 관련된다.

Description

데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템{PROCESSOR FOR DATA FORWARDING, OPERATION METHOD THEREOF AND SYSTEM INCLUDING THE SAME}
본 발명은 데이터 포워딩을 수행하는 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템에 관한 것이다.
프로세서 또는 마이크로프로세서(중앙 처리 유닛 또는"CPU"라고 불리는)는 메모리 명령들을 실행하기 위해 가져오는 LS 스케줄러(LS scheduler)와 관련된 로드 스토어(Load Store)(LS) 유닛을 포함할 수 있습니다. 명령 실행 시간을 줄이기 위해, 현재 CPU들은 데이터에 대한 시스템 메모리(예를 들어, 랜덤 액세스 메모리(Random Access Memory) 또는 "RAM")에 천천히 접근하는 것과 관련된 지연을 피하기 위해 더 빠르고 더 작은 메모리들에 자주 사용한 데이터의 카피들을 저장한다. 이러한 더 빠른 메모리들은 데이터 액세스 시간을 상당히 줄임으로써, 프로세서의 프로세싱 코어(processing core)와 함께 공존할 수 있는 캐시들로 불린다. (다른 독립된 캐시들은 캐시 레벨들의 계층으로 체계화될 수 있다.-예를 들어, 제1 레벨(Level 1)(또는 L1) 캐시, 제2 레벨(Level 2)(또는 L2) 캐시, 제3 레벨(Level 3)(또는 L3) 캐시, 등, 다음 레벨의 캐시로 이동하기 전에, 가장 낮은 레벨의 캐시(예를 들어, L1 캐시)에) 메모프로세서 또는 마이크로프로세서(널리 그리고 편히 중앙 처리 유닛 또는"CPU"라고 불리는)는 메모리 명령들을 실행하기 위한 LS 스케줄러(LS scheduler)와 관련된 로드 스토어(Load Store)(LS) 유닛을 포함할 수 있다. 명령 실행 시간을 줄이기 위해, 현재 CPU들은 데이터에 대한 시스템 메모리(예를 들어, 랜덤 액세스 메모리(Random Access Memory) 또는 "RAM")에 더 천천히 접근함으로써 발생하는 지연을 피하기 위해 더 빠르고 더 작은 메모리들에 자주 사용한 데이터의 사본들을 저장한다.
이러한 시스템 메모리보다 더 빠른 메모리들은 데이터 액세스 시간을 줄이고, 프로세서의 프로세싱 코어(processing core)와 함께 공존할 수 있는 캐시들로 불린다(다른 독립된 캐시들은 캐시 레벨들의 계층으로 체계화될 수 있다.). - 예를 들어, 캐시들은 제1 레벨(Level 1)(또는 L1) 캐시, 제2 레벨(Level 2)(또는 L2) 캐시, 제3 레벨(Level 3)(또는 L3) 캐시, 등, 다음 레벨의 캐시로 이동하기 전에, 가장 낮은 레벨의 캐시(예를 들어, L1 캐시))를 포함할 수 있다.
메모리 명령에 대한 L1 캐시의 "히트(hit)"가 있다면, 관련된 데이터는 명령 유닛들로 되돌아온다. L1 캐시의 메모리 명령이"미스(misses)"일 때, 미스 요청은 필 버퍼(Fill Buffer)(FB)와 리플레이 큐(Replay Queue(RQ)와 관련되어 있고, 미스 요청은 다음(더 높은) 레벨의 캐시 L2 또는 시스템 버스(system bus)(예를 들어, 시스템 메모리에 액세스하는)로 보내진다. 미스 요청에 대해 L2 캐시(또는 시스템 버스)로부터 반환되는 데이터는 필 버퍼에 다시 써지고 L1 캐시에 차례로 충전되기 위해 연달아 대기한다.
데이터가 다음 레벨 L2 캐시 또는 시스템 버스로부터 반환될 때, 리플레이 큐에 자리한 로드(Load)(Ld) 명령을 다루기 위한 두 가지의 선택들이 있다.
(1) L1 캐시 내에 또는 FB 내에 첫 번째로 쓰여질 수 있는 L2, 또는 버스로부터 오는 데이터에 대한 로드 스토어 스케줄러(Load Store scheduler), 또는 RQ로부터 선택(미스 요청으로부터 발생된 Ld 명령의)을 지연시킨다. 여기, Ld는 FB의 데이터가 L1 캐시에 기록될 때까지 LS 스케줄러/RQ에 보류된다. 미스로부터 발생한 Ld 명령은 RQ/LS 스케줄러로부터 "발생하고", L1 캐시로부터 그것의 데이터를 받는다.
(2) 필 버퍼(Fill Buffer)에 데이터를 수집하고, 필 버퍼로부터 데이터를 전송한다. RQ/LS 스케줄러의 Ld 명령이 "발생하고", 명령은 FB에서(L1 캐시가 아니고) L2/버스로부터 데이터가 쓰여지고/ 수집되는 동안 FB로부터 데이터의 전송을 시작한다. 그러나, Ld 명령은 FB로부터 데이터를 얻고, 실행을 완료한다. 시간이 지난 어떤 시점에서, L1 캐시가 이상적일 때, FB 데이터는 L1 캐시로 쓰여지거나 이동된다. 이것은 LS 스케줄러/RQ가 L2 캐시/버스로부터 L1 캐시로(FB를 통해) 데이터를 쓰기 위한 방해가 없기 때문에 더 높은 성과를 도출할 수 있다. L1 캐시는 LS 스케줄러 또는 RQ로부터 로드(Ld)/스토어(St) 명령들을 제공하고, FB로부터 쓰여지는 것을 방해하지 않는다.
상술된 옵션-2에서, L1에서 미스(예를 들어, FB데이터는 L1 캐시로 아직 이동되지 않았기 때문이다.)되었지만, FB에 히트되지 않은 로드 명령들은 FB로부터 관련된 데이터를 보낼 수 있다. 상술된 옵션-2는 "필 버퍼 포워딩" 또는 "FB 포워딩"이라 할 수 있다.
본 발명의 목적은 FB 또는 캐시에 “히트” 또는 “미스”하는 명령들을 감지함으로써 데이터를 포워딩하는 프로세서, 그것의 구동 방법 및 그것을 포함하는 시스템을 제공하는 데에 있다.
본 발명의 실시 예에 따른 데이터를 포워딩하는 프로세서의 동작 방법은, 로드(Ld) 출력이 제1 실행을 위해 처리될 때, 프로세서에 대한 캐시 메모리의 제1 레벨에 히트가 있는지에 대해 판단하는 단계 및 상기 캐시 메모리의 제1 레벨에 히트가 없다면, 상기 프로세서의 필 버퍼(FB)에 상기 로드 명령으로부터 공급되는 제1 가상 어드레스(VA), 및 상기 프로세서의 변환 색인 버퍼(TLB)의 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 제1 지시를 저장하는 단계를 포함하되, 상기 제1 페이지 테이블 엔트리는 상기 로드 명령으로부터 공급되는 상기 제1 가상 어드레스와 관련된다.
실시 예로서, 상기 캐시 메모리의 제1 레벨의 히트가 없다면, 상기 프로세서에 대한 캐시 메모리의 제2 레벨로부터 상기 필 버퍼에 상기 로드 명령과 관련되어 데이터를 수집하는 단계를 더 포함한다.
실시 예로서, 상기 필 버퍼에 상기 로드 명령과 관련된 데이터를 수집하는 단계는, 상기 제1 가상 어드레스와 관련된 물리적 어드레스(PA)를 상기 변환 색인 버퍼로부터 획득하는 단계 및 상기 필 버퍼에 상기 물리적 어드레스를 저장하는 단계를 포함한다.
실시 예로서, 상기 로드 명령의 후속으로 발생하는 제2 실행은 상기 변환 색인 버퍼의 제2 페이지 테이블 엔트리의 위치의 제2 지시를 포함하는 상기 변환 색인 버퍼의 엔트리들에 대한 상기 로드 명령으로부터 공급된 제2 가상 어드레스를 비교하고, 상기 제2 페이지 테이블 엔트리는 상기 로드 명령으로부터 공급되는 상기 제2 가상 어드레스와 관련된 단계, 상기 필 버퍼에 저장된 상기 제1 가상 어드레스와 상기 제2 가상 어드레스가 매치하는지 그리고 상기 필 버퍼에 저장된 상기 제1 지시와 상기 제2 지시가 매치하는지 결정하기 위해 상기 필 버퍼의 엔트리들에 대한 상기 제2 지시 및 상기 제2 가상 어드레스를 비교하는 단계 및 상기 제1 및 제2 가상 어드레스들의 사이 및 상기 제1 및 제2 지시들 사이에서의 매치를 찾을 시, 예측된 필 버퍼 엔트리로써 상기 필 버퍼의 매칭 엔트리의 응답을 확인하고, 상기 예측된 필 버퍼 엔트리를 사용하는 상기 필 버퍼로부터 상기 로드 명령과 관련된 데이터의 독출을 시작하는 단계를 더 포함한다.
실시 예로서, 상기 제1 가상 어드레스와 상기 제2 가상 어드레스를 비교하기 전에, 상기 제2 페이지 테이블 엔트리와 관련된 메모리 페이지의 페이지 사이즈를 변환 색인 버퍼로부터 획득, 및 상기 제2 가상 어드레스를 비교하는 단계는, 제1 부분 가상 어드레스(PVA)를 포함하기 위한 페이지 사이즈를 사용하는 상기 제1 가상 어드레스의 미리 결정된 복수의 비트들을 마스킹하는 단계, 제2 부분 가상 어드레스를 포함하기 위한 상기 페이지 사이즈를 사용하는 상기 제2 가상 어드레스의 상기 미리 결정된 복수의 비트들을 마스킹하는 단계 및 상기 제1 가상 어드레스와 상기 제2 가상 어드레스가 매치하는지 결정하기 위한 상기 제1 및 상기 제2 부분 가상 어드레스들을 비교하는 단계를 더 포함한다.
실시 예로서, 제2 가상 어드레스-특정 물리적 어드레스(PA)를 포함하기 위한 상기 변환 색인 버퍼를 사용하는 상기 제2 가상 어드레스를 변환하는 단계, 상기 필 버퍼에 저장된 상기 물리적 어드레스들과 상기 제2 가상 어드레스-특정 물리적 어드레스가 매치하는지 판단하기 위해 상기 필 버퍼에 저장된 각각의 물리적 어드레스에 대한 상기 제2 가상 어드레스-특정 물리적 어드레스를 비교하는 단계, 상기 제2 가상 어드레스-특정 물리적 어드레스에 대한 상기 필 버퍼 내의 매칭 물리적 어드레스를 찾을 시, 상기 로드 명령으로 포워딩하기 위한 실제 FB 엔트리로써 상기 필 버퍼 내의 상응하는 엔트리를 확인하는 단계, 상기 실제 필 버퍼 엔트리의 제1 엔트리 개수와 상기 예측된 필 버퍼 엔트리의 제2 엔트리 개수가 매치하는지 판단하는 단계 및 상기 제1 및 제2 엔트리의 개수들의 매치를 실패할 때, 상기 예측된 필 버퍼 엔트리와 관련된 상기 필 버퍼로부터 상기 데이터의 상기 조기-시작된 독출을 무효하는 단계를 더 포함한다.
실시 예로서, 상기 변환 색인 버퍼의 상기 제1 페이지 테이블 엔트리를 상이한 페이지 테이블 엔트리로 대체할 시, 상기 로드 명령의 연속적으로 발생하는 제2 실행의 부분으로써 상기 제1 지시와 관련된 상기 필 버퍼에 저장된 데이터의 포워딩을 피하기 위해 상기 필 버퍼를 설정하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 프로세서는 캐시 메모리의 제1 레벨, 제1 실행에 의해 로드(Ld) 명령이 처리될 때, 캐시 메모리의 상기 제1 레벨에 히트가 있는지 확인하기 위해 구성되고, 캐시 메모리의 상기 제1 레벨과 연결된 감지 로직, 캐시 메모리의 상기 제1 레벨과 연결된 필 버퍼(FB), 상기 감지 로직 및 상기 필 버퍼와 연결되고, 캐시 메모리의 상기 제1 레벨의 상기 히트의 상기 부재 시 상기 필 버퍼로 상기 로드 명령과 관련된 데이터를 수집하기 위해 구성된 로드 스토어 유닛(LSU) 및 상기 필 버퍼 및 상기 로드 스토어 유닛과 연결되고, 상기 로드 명령으로부터 공급되는 제1 가상 어드레스(VA)와 관련된 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 제1 지시를 저장하도록 구성된 변환 색인 버퍼(TLB)를 포함하되, 상기 필 버퍼는: 상기 제1 가상 어드레스, 및 상기 제1 페이지 테이블 엔트리의 위치에 대한 상기 제1 지시를 저장하도록 구성된다.
실시 예로서, 상기 로드 스토어 유닛에 연결된 캐시 메모리의 제2 레벨을 더 포함하고, 상기 로드 스토어 유닛은 캐시 메모리의 상기 제2 레벨로부터 상기 필 버퍼로 상기 데이터를 수집하도록 구성된다.
본 발명의 실시 예에 따른 시스템은: 복수의 프로그램 지시들을 저장하기 위해 구성된 메모리 및 상기 메모리를 검색하기 위해 상기 메모리와 연결되고, 상기 복수의 프로그램 지시들을 실행하는 프로세서를 포함하되, 상기 프로세서는, 상기 프로세서의 로드 스토어(LS) 스케줄러로부터 제1 실행에 로드(Ld) 지시가 처리될 때, 상기 프로세서에 대한 캐시 메모리의 히트가 있는지 판단하고, 상기 캐시 메모리에 히트가 존재하지 않으면, 상기 프로세서의 상기 필 버퍼(FB)는: 상기 로드 명령의 제1 가상 어드레스(VA), 상기 프로세서의 변환 색인 버퍼(TLB)의 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 지시, 및 상기 제1 페이지 테이블 엔트리와 관련된 메모리 페이지의 페이지 사이즈를 지시하는 상기 변환 색인 버퍼로부터 포함된 정보를 저장한다.
본 발명의 실시 예에 따른 장치 및 그것의 구동 방법은 FB 또는 캐시에 “히트” 또는 “미스”하는 명령들을 감지함으로써, 높은 주파수로 데이터를 포워딩하여 효율을 향상시킨다.
도 1은 본 발명의 일 실시 예에 따른 프로세서의 구조적인 상세도이다.
도 2는 본 발명의 일 실시 예에 따른 FB와 관련된 L1 데이터 캐시에서 로드 미스가 발생할 때, FB에 저장되는 콘텐츠를 보여주는 예시적인 순서도이다.
도 3은 본 발명의 일 실시 예를 뒷받침하기 위한 높은 주파수의 FB 전송 방법에 대해 보여주는 예시적인 순서도이다.
도 4는 본 발명의 실시 예에 따른 FB 전송을 수행하기 위한 FB와 TLB의 예시적인 하드웨어 구성들을 보여준다.
도 5는 본 발명의 실시 예에 따른 도 1의 프로세서를 포함하는 예시적은 시스템 또는 장치를 보여준다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 프로세서 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 일 실시 예에 따른 프로세서(10)의 구조적인 상세도이다. 프로세서(10)는 중앙 처리 유닛(CPU)의 기능을 포함하는 범용 마이크로프로세서(microprocessor)일 수 있다. 아래의 설명에서, "프로세서"와 "CPU"의 용어들은 설명의 편의를 위해 교대해서 사용될 수 있다. 하지만, 전에 언급된 바와 같이, 프로세서(10)는 마이크로컨트롤러(microcontroller), 디지털 신호 프로세서(Digital Signal Processor)(DSP), 그래픽 처리 유닛(Graphics Processing Unit)(GPU), 전용 주문형 반도체(Application Specific Integrated Circuit)(ASIC) 프로세서 등과 같은 여러 타입의 프로세일 수 있다.
도 1의 실시 예에서, 프로세서(10)는 신호 프로세서 코어(signal processor core)(12)("CPU 코어"라고 언급될 수 있다.)를 포함하는 것을 보여준다. 그러나, 다른 실시 예들에서, 프로세서(10)는 적어도 하나 이상의 처리 코어를 포함할 수 있다. -프로세서(10)의 다양한 실시 예들은 4 코어, 8 코어, 19 코어, 또는 다를 적절한 개수의 코어들과 같이 다양한 개수의 코어들을 포함할 수 있다. 일 실시 예로서, 이런 추가적인 코어들의 각각은 도 1의 코어(12)와 유사한 형태를 포함할 수 있다.
CUP 코어(12)는 예를 들어, RISC(Reduced Instruction Set Computer) ISA와 관련된 명령어 집합 기계인 MIPS(Microprocessor without Interlocked Pipeline Stages), PowerPC® ISA, 또는 x86 명령어 집합 기계(32-비트 또는 64-비트 버전들)과 같은 특정 명령어 집합 기계(ISA)와 관련된 프로세서 데이터 및 실행 명령들로 구성될 수 있다. 도 1의 실시 예에서, 본 발명과 관련된 코어(12)의 일 부분은 도면을 단순화하고 불필요한 세부 사항을 방지하기 위해 도시되어있다. 그러나, 도 1에 도시된 것 이외의 많은 추가적인 회로 소자 및 프로세싱 블록은 프로세서(10)의 CPU에 해당 기능을 부여하도록 코어(12)의 일부로서 존재할 수 있다.
패치 컨트롤(fetch control) 및 분기 예측 유닛(14)은 명령 캐시(16)로부터의 명령들 그룹 또는 명령을 패치하기 위한 프로그램 계수기를 공급한다. 명령들이 패치되고 있을 때, 명령 캐시(16)로부터 "미스"가 존재한다면, 미스 메모리(miss memory) 요청이 발생할 수 있고, 이에 대응하여, 명령 스트림 프리-패치 미스들이 명령어들에 대한 연이은 블록들에 발생할 수 있다. 이러한 블록들에 발생한 명령들은 실행되거나 되지 않을 수 있다. 어떤 상황이더라도 명령 캐시(16)에 "히트"가 있을 때, "히트"와 연관된 명령어 또는 명령어들의 세트는 명령 캐시(16)와 연결된 디코드 유닛(decode unit)(18)으로 보내질 수 있다. 디코드 유닛(18)은 로드 스토어(LS) 스케줄러(Load Store scheduler)(20)로 디코드된 명령들을 공급할 수 있다.
일 실시 예로서, 디코드된 명령어들은 CPU 코어(12)의 물리적 레지스터(register)(미 도시)에 레지스터 이름의 매핑을 허락하기 위한 레지스터 리네이밍 유닛(register renaming unit)(미 도시)과 전송 큐(미 도시)의 결합을 거쳐 LS 스케줄러(20)로 공급될 수 있다.
일 실시 예로서, 스케줄러(20)는 실행 유닛(22)으로부터 발행되는 명령들의 결과들과 저장 피연산 함수들을 가능하게 하는 레지스터들의 세트(set)(LS 스케줄러(20)로 공급되기 위한)를 포함할 수 있는 레지스터 파일(register file)(미 도시)와 연결될 수 있다. 스케줄러(20)는 논리적 레지스터들을 레지스터 파일의 물리적 레지스터들에 매핑할 수 있다. 논리적 레지스터들은 CPU(10)로부터 시행되는 명령어 집합 기계(ISP)로부터 명시되는 구조화된 레지스터들 및 연속 동작의 일시적인 결과들 및 소스들(sources)에 대한 동작들의 종착지로써 사용될 수 있는 일시 레지스터를 포함할 수 있다.
도 1을 참조하면, 스케줄러(20)는 실행 유닛(22)에 연결되어있을 뿐만 아니라, 스케줄러(20)는 로드 스토어 유닛(Load Store Unit)(LSU)(24)의 실행을 위한 저장 피연산 함수들 및 로드를 공급하기 위해 연결될 수 있다. 스케줄러(20)는 실행 유닛(22)과 LSU(24)로 발행하는 명령들 및 의존들 없이 명령들을 확인할 수 있다. 실행 유닛(22)은 적어도 하나 이상의 프로세서 클럭 사이클들(processor clock cycles)의 명령들을 실행할 수 있고, 결과들을 프로세서 버스(processor bus)(30)를 거쳐 더 높은 레벨의 캐시(28) 및/또는 데이터 캐시 제어 유닛(27)의 데이터 캐시(26)에 쓸 수 있다.
일 실시 예로서, 실행 유닛(22)은 적어도 하나 이상의 실행 유닛들을 포함할 수 있다. 예를 들어, 실행 유닛들은 정수 유닛, 플로팅 포인트 유닛(floating point unit), 벡터 유닛(vector unit) 등을 포함할 수 있다. 각각의 실행 유닛들은 파이프 라인(pipeline)될 수 있고, 매 클럭 주기마다 명령을 수신할 수 있다. 명령들의 실행은 추론적으로, 그리고 무작위로 발생할 수 있다. 몇몇 실시 예들에서, 명령들의 실행 중에 발생하는 예외들을 처리하기 위해, 코어(12)의 추가적인 회로(미 도시)가 있을 수 있다.
로드 스토어 유닛(LSU)(24)는 LS 스케줄러(20), 데이터 캐시 제어 유닛(27), 로드 미스 큐(리플레이 큐(Replay Queue)(RQ)라고도 언급되는), 및 스토어 데이터 버퍼(store data buffer)(34)와 연결될 수 있다. 일 실시 예로서, LSU(24)는 메모리 접근 동작을 수행하기 위한 다양한 파이프라인 스테이지들(pipeline stages)을 포함할 수 있다. LSU(24)는 동작들의 저장 및 로드(load)에 대한 어드레스들을 발생하기 위한 제1 파이프라인 스테이지를 포함할 수 있다. 다른 파이프라인 스테이지들은 태그(tag) 스토어 및 데이터 캐시(26)의 데이터 스토어를 읽도록 구성될 수 있다.
일 실시 예로서, LSU(24)는 RG(32)에 로드 미스들을 저장하기 위해 구성될 수 있고, 스토어 어드레스들 및 스토어 데이터를 스토어 데이터 버퍼(34)에 쓸도록 구성될 수 있다. 다른 실시 예에서, 로드 동작이 미스 큐(miss queue)(32)의 여러 엔트리들(entries)에 부분적으로 히트한다면, 로드는 LS 스케줄러(20)로부터 반복될 수 있다.
도 1에서, "35" 부호로 지시되어 있는 바와 같이, RQ(32) 및 스토어 데이터 버퍼(34)는 블록(28) 또는 데이터 미스들 또는 데이터 스토어 동작들을 위한 시스템 메모리(미 도시)의 더 높은 레벨의 캐시(들)(예를 들어 L2 캐시 또는 그 이상의 레벨)에 접근할 수 있다.
기억 관리 장치(Memory Management Unit)(MMU)(37)는 LSU(24), RQ(32) 및 데이터 캐시 제어 유닛(27)에 연결될 수 있다. MMU(37)는 명령으로부터 공급되는 가상 어드레스(VA)를 기억 장소(예를 들어, 시스템 메모리(미 도시))의 해당하는 물리적 어드레스(PA)로 변환하기 위한 변환 색인 버퍼(Translation Look-aside Buffer)(TLB)(38)(후술에서 자세하게 설명된다.)를 포함할 수 있다. 본 발명에 따르면, TLB(38)는 TLB 엔트리(페이지 테이블 엔트리(Page Table Entry(PTE)), 해당 물리적 어드레스, 및 컨트롤 유닛(27)의 필 버퍼(Fill Buffer)(FB)(40)에 대한 페이지 사이즈 정보를 포함할 수 있다.
예시적인 실시 예로서, 도 4는 관련 하드웨어 구성을 도시하고, 도 2-3은 더 자세한 발명적 측면들을 도시한다. 일 실시 예로서, MMU(37)는 큰 페이지 어레이(page array) 및 페이지 기술 어레이를 포함할 수 있다. TLB(38)에서의 미스는 TLB(38)에 대한 페이지 테이블 엔트리들(PTEs)을 공급하기 위한 인-메모리 페이지 테이블(in-memory page table)(MMU(37) 내의)로부터 하드웨어 채우기를 개시할 수 있다. 페이지 테이블은 물리 어드레스들에 가상 어드레스들의 매핑을 저장하는 운영 체제이다. 각각의 매핑은 PTE로 알려져 있다.
LSU(24)는 로드의 (물리적) 어드레스들을 전송할 수 있고, 데이터 캐시 제어 유닛(27)의 히트/미스 감지 로직(42)에 대한 명령들을 저장할 수 있다. 감지 로직(42)은 데이터(L1) 캐시(26) 및 필 버퍼(40)(적어도 하나 이상의 버퍼를 포함한다.) 와 연결될 수 있다. 히트/미스 감지 로직(42)은 입력 명령들이 L1 캐시(26) 또는 FB(40)에 "히트"하는지 판단할 수 있다. L1 캐시(26)와 FB(40)는 실행 유닛(22)으로 로드 요청 데이터를 반환하기 위한 실렉터(selector)(44)(예를 들어, 멀티플렉서(multiplexer))와 연결될 수 있고, 내부 프로세서 버스(30)를 거쳐 프로세서 코어(12)의 다른 적절한 레지스터들(미 도시)과 연결될 수 있다.
FB(40)는 L1 캐시의 "미스"에 L1 캐시(26)에 해당 데이터를 기록할 뿐만 아니라 L1 캐시(26)에 연결될 수 있다. 이 전에 언급된 것과 같이, 이런 데이터는 다음 레벨(예를 들어, L2) 캐시, 또는 시스템 메모리(예를 들어, 시스템 버스를 거쳐서), 또는 더 높은 다른 캐시로부터 FB(40)에 수신될 수 있다. 미스 요청이 FB(40)에 할당될 때(예를 들어, 히트/미스 감지 로직(42)으로부터), 미리 설명된 FB 포워딩은 데이터가 FB(40)로 전송되는 동안에 발생할 있다(그리고 L1 캐시(26)로 전송이 아니다.).
도 1의 실시 예에서, 명령 캐시(16) 및 데이터 캐시(26)는 레벨-1(L1) 캐시들로 간주될 수 있다. 이런 캐시들은 물리적으로 태그된 캐시들일 수 있다. 일 실시 예로서, L1 캐시들(16, 26)은 물리적으로 인덱스(indexed)될 수 있다. 그렇지 않으면, 다른 실시 예로서, 이런 캐시들은 가상으로 인덱스될 수 있다. 또 다른 실시 예에서, 이런 두 캐시들(16, 26)은 블록(28)으로부터 집합적으로 참조되는 더 높은 레벨의 캐시(예를 들어 레벨-3 또는 L3 캐시) 또는 레벨-2(L2) 캐시에 정보를 쓰도록 구성된 캐시 라이트백(writeback) 유닛들 일 수 있다.
멀티 코어 구성에서, 단일 L2 캐시는 두 개의 CPU 코어들로부터 공유될 수 있고, 단일 L3 캐시는 복수의 L2 캐시들로부터 공유되거나 연결될 수 있다. 시스템 메모리에 액세스하기 전에 호출되는 공유된 가장 높은 레벨의 캐시(특정 실시 예들에서 L3 캐시일 수 있다) 보통 라스트 레벨 캐시(Last Level Cache)(LLC)로 불린다. LLC는 복수의 코어들에서 공유될 수 있고, 복수의 구역들로 "슬라이스(slice)"될 수 있다. 각각은 레이턴시(latency)를 줄이고, 패럴렐리즘(parallelism)을 증가시키기 위해 독립적으로 액세스될 수 있다.
일 실시 예로서, 제어 유닛(14)은 프리패치(prefetch) 요청들을 생성할 수 잇다. 프리패칭은 그것이 소프트웨어로부터 요청되기 전에 캐시에서 데이터를 읽는 것을 포함한다. 이렇게 하여, 데이터 액세스 레이턴시를 최소화할 수 있다. 해당하는 프리패치 데이터는 명령 캐시(16) 그리고/또는 데이터 캐시(26)에 저장될 수 있다. 패치 제어 유닛(14)은 복수의 개별적이고 독립적인 패치 흐름을 유지하도록 구성될 수 있다.
일 실시 예로서, 다른 레벨들의 캐시 메모리들은 연속적으로 정렬될 수 있다. - 예를 들어, L1 캐시는 L2 캐시 전에 액세스될 수 있고, L2 캐시는 L3 캐시 전에 액세스 될 수 있다. 뿐만 아니라, L1 캐시(26)는 CPU 코어(12)의 일 부분 일 수 있지만, L2 와 다른 더 높은 레벨(예를 들어 L3)의 캐시들은 CPU 코어(12)의 외부에 있을 수 있다. 그러나, 이런 캐시들 전부는 같은 프로세서 칩(processor chip)(10)의 일부분 일 수 있다. 다양한 캐시 메모리들의 실제 위치는-예를 들어 같은 칩 상에 존재하거나 하지 않거나, CPU 코어의 부분이거나 아니거나- 주어진 프로세서의 구조에 따라 결정될 수 있는 디자인 선택이다. 이와 같이, L1 캐시들(16, 26)은 CPU 코어(12)를 구현하는 칩의 외부에 위치할 수 있다.
메모리 인터페이스(들)(Memory interface(s))(46)은 LLC(미 도시)와 시스템 메모리(미 도시) 사이에서 데이터 전송을 캐시 필 요청들 및 데이터 축출들에 응답하여 처리할 수 있다. 몇몇 실시 예들로서, 메모리 인터페이스(46)가 시행될 수 있는 복수의 경우들 중 각각의 경우는 시스템 메모리의 각각의 뱅크(bank)를 제어할 수 있다. 메모리 인터페이스(46)는 적절한 타입의 시스템 메모리를 인터페이스 할 수 있다.예를 들어, 메모리 인터페이스(46)는 풀리 버퍼 듀얼 인라인 메모리 모듈(Fully Buffered Dual Inline Memory Module)(FB-DIMM), 2 배속, 또는 2 배속 2, 3, 또는 4 동기 역학 랜덤 액세스 메모리(DDR/DDR2/DDR3/DDR4 SDRAM), 또는 램버스(Rambus)® DRAM 등이 있다. 메모리 인터페이스(46)는 복수의 다른 타입들의 시스템 메모리를 동시에 인터페이스 할 수 있다.
네트워크 인터페이스(들)(47) 및 주변 장치 인터페이스(들)(48)과 관련하여 아래에 묘사된 입/출력(I/O) 장치들(미 도시)로부터의 데이터와 같이 수집할 수 없는 데이터에 대한 코어(12)로부터의 요청들은 시스템 인터커넥트(System Interconnect)(50)로부터 처리될 수 있다.
이와 같이, 프로세서(10)는 시스템 메모리 이외의 소스들로부터 데이터를 받을 수 있다. 시스템 인터커넥트(50)는 소스가 코어(12)와 데이터를 교환하기 위한 중앙 인터페이스를 제공하고, L2 및 더 높은 레벨의 캐시들과 블록(28)에 있다.
특정 실시 예들에서, 시스템 인터커넥트(50)는 메모리 시스템으로부터 데이터의 직접 메모리 액세스(DMA) 전송을 조정할 수 있다. 예를 들어, 메모리 인터페이스(46)를 거쳐서, 시스템 인터커넥트(50)는 네트워크 인터페이스(47)를 거쳐서 부착되는 시스템 장치(미 도시)와 시스템 메모리 사이의 DMA 전송을 조정할 수 있다. 또는 시스템 인터커넥트(50)는 주변 장치 인터페이스(48)를 거쳐 부착되는 주변 장치(미 도시)와 시스템 메모리 사이의 DMA 전송을 조정할 수 있다.
I/O 및 주변 장치 인터페이스(48)는 프로세서(10)와 적어도 하나 이상의 주변(I/O) 장치들(미 도시) 사이의 데이터 전송을 조정할 수 있다. 이러한 주변 장치들은 저장 장치(예를 들어, 하드 드라이버들(hard drivers), CD 드라이버들, DVD 드라이버들을 포함하는 자기 또는 광학 매체 기반의 저장 장치), 멀티 미디어 장치들(multimedia devices)(예를 들어, 오디오 처리(audio processing) 또는 오디오-비주얼(audio-visual) 데이터 처리 서브시스템들(subsystems)), 데이터 입력 유닛들, 또는 다른 적절한 타입의 주변 장치들을 포함할 수 있다.
일 실시 예에서, 주변 장치 인터페이스(48)는 주변 장치 인터페이스 규약의 적어도 하나 이상을 실행할 수 있다. 예를 들어, 주변 장치 인터페이스(48)의 일 실시 예는 PCI Express™(Peripheral Component Interface Express) 규약을 실행할 수 있다. 다른 실시 예들에서, 주변 장치 인터페이스(48)는 USB 프로토콜(Universal Serial Bus protocol) 또는 PCI Express™을 대신하거나 또는 추가적으로 IEEE 1394(Firewire®) 프로토콜을 수행할 수 있다.
네트워크 인터페이스(47)는 네트워크(미 도시)를 거쳐 프로세서(10)에 연결된 적어도 하나 이상의 네트워크 장치들(미 도시)과 프로세서(10) 사이의 데이터 전송을 조정할 수 있다. 이러한 네트워크 장치들은 네트워크화한 컴퓨터 시스템들 또는 주변 장치들을 포함할 수 있다. 네트워크는 이더넷 기반의 네트워크(Ethernet-based network), 광학 섬유 네트워크, 이동 전화 네트워크, 또는 이런 인터넷의 통신 네트워크를 기반으로 한 전송 제어 프로토콜/ 기계 프로토콜(TCP/IP)일 수 있다. 일 실시 예에서, 네트워크 인터페이스(47)는 다수의 개별 네트워크 인터페이스 포트들(미 도시)일 수 있다.
일 실시 예에서, 프로세서(10)는 프로세서(10)의 다른 실시 예들 또는 다른 호환되는 프로세서들(미 도시)의 멀티-프로세서에서 사용할 수 있다. 코히런트 프로세서 인터페이스(들)(coherent processor interface(s))(52)은 프로세서 컴플렉스(10)의 일부분으로써 제공될 수 있다. 코히런트 프로세서 인터페이스(52)는 다양한 프로세서들 사이에서 메모리 일관성을 보존하는 방식의 서로 다른 프로세서들 사이의 광대역, 직접 칩-투-칩(chip-to-chip) 통신을 실행할 수 있다(예를 들어, 일관된 프로토콜을 따른다.).
도 2는 본 발명의 일 실시 예에 따른 FB와 관련된 L1 데이터 캐시에서 로드 미스가 발생할 때, FB에 저장되는 콘텐츠를 보여주는 예시적인 순서도이다.
도 2는 FB와 관련된 L1 데이터 캐시(예를 들어, L1 캐시(26)에서 로드 미스가 발생할 때 본 발명의 실시 예에 따른 FB(예를 들어 도 1에 도시된 FB(40))에 콘텐츠 저장 방법을 보여주는 예시적인 순서도(55)를 도시한다.
일 실시 예에서, 도 2 에 언급된 순서도(55)에 도시된 동작 흐름은 세 프로세서/ 시스템 클럭 사이클을 통해 CPU 코어(예를 들어, 도 1 의 CPU 코어(12))에서 완료될 수 있다. 도 2의 블록(57)에 도시된 바와 같이, 첫 번째 클럭 사이클에서, 로드 스토어 유닛(예를 들어 LSU(34)) 또는 CPU 코어(12)의 유사한 기능의 매체는 프로세서 코어(12)의 LS 스케줄러(예를 들어, 도 1의 LS 스케줄러(20))로부터 가상 어드레스(VA)와 관련된 로드(Ld) 명령을 가져올 수 있다.
블록(59)의 같은 기계 주기에서, LSU(24) 또는 MMU(37)는 매치를 기반으로 한 TLB 엔트리 번호(“TLB entry#” 또는 “TLB id#"로 언급된)의 발생을 위한 TLB(예를 들어, 도 1의 MMU(37)의 TLB(38))의 엔트리들에 대한 Ld 명령으로부터 공급되는 VA를 비교할 수 있다. TLB entry# 또는 TLB id#는 블록(57)으로부터 가져온 Ld 명령의 VA와 관련된 PTE의 위치와 일치하는 비교 동작에 대한 TLB의 PTE의 위치를 나타낼 수 있다.
이전에 언급된 바와 같이, TLB 내의 PTX는 Ld 명령의 VA와 메모리 위치(예를 들어, 시스템 메모리(미 도시))의 해당 물리적 어드레스(PA) 사이의 매핑을 공급할 수 있다. 일 실시 예에 따르면, TLB id#(블록(59)에서 발생되는) 및 Ld 명령의 VA는 (블록(57)으로부터 수신하는) 점선 화살표들(60-61)로부터 도시되고, 블록(66)에서 지시하는 L1의 "미스"시 FP(40) 내에 저장하기 위해 공급될 수 있다.
블록(62)의 두 번째 클럭 주기에서, LSU(24)는 MMU(37)의 TLB(38)을 사용한 해당 PA로 Ld 명령의 VA의 변환을 얻을 수 있다. 같은 클럭 주기에서, L1 캐시(26)에 "히트"가 있는지 없는지 판단하는 판단 블록(63)에서, 결정하도록 수신한 PA를 사용할 수 있는 히트/미스 판단 로직(42)로 보내질 수 있다. 히트가 있다면, 데이터는 L1 캐시(26)로부터 회수하고, 실행 유닛(22)(또는 다른 관련 있는 매체)으로 공급된다. 이러한 히트 시, Ld 동작은 도 2의 화살표(64)로부터 보여지는 것과 같이 "완료"되었다고 간주될 수 있다. 도 2의 프로세스는 완료될 수 있고, 일 실시 예에서, 후술 되는 할당을 수행하기 위한 세 번째 클럭 주기가 필요하지 않을 수 있다.
그러나, L1 캐시에 "미스"가 있다면, 세 번째 기계 주기는 FB(40) 내에 적절한 데이터를 수집 또는 수신하기 위해 L2 또는 더 높은 레벨의 캐시에 미스 요청을 보내기 위한 LSU(24)를 위해 필요할 수 있다(도 2의 화살표 67). 일 실시 예에서, 이전에 또는 동시에 L2 캐시로 미스 요청(데이터)을 보낼 때, 미스 요청은 세 번째 기계 주기에서 LSU(24)로부터 FB(40) 및 RQ(22) 내로 할당될 수 있다.
특정 실시 예들에서, 이런 할당의 부분으로써, FB(40)은 LD 명령의 VA(예를 들어 도 4에 도시된다), Ld 명령의 해당 PA(블록(62)에서 얻는다), 블록(59)에서 발생한 TLB id#(또는TLB의 PTE의 위치를 지시한다), 그리고 메모리 페이지(예를 들어 시스템 메모리)의 페이지 사이즈를 나타내는 TLB로부터 얻을 수 있는 페이지 사이즈 정보 중 적어도 하나 이상을 저장하기 위한 하드웨어(예를 들어, 도 4에 도시된다)로 구성될 수 있다.
일 실시 예로서, 이런 파라미터들(parameters)은 파라미터들은 캐시 제어 유닛(27)과 상호 작용 및 LSU의 연결을 통해서 LSU(24)의 제어에 따라 FB(40)에 공급될 수 있다. 다른 실시 예에서, TLB(38)는 필수적으로 포함되는 LSU(24) 없이 FB(40)에 이런 파라미터들(예를 들어, TLB id#, PA, 페이지 사이즈 정보)의 일부를 공급할 수 있다. 일 실시 예에서, TLB(38)는 TLB(38)에 저장된 해당 PTE와 관련된 각각의 페이지(MMU(37)의 페이지 테이블 내)의 페이지 정보를 저장할 수 있다.
그 대신에, LSU(24) 또는 TLB(38)는 필수적으로 그것을 TLB(38)에 저장하지 않고 FB(40)에 정보를 공급할 수 있다. 블록(63)의 L1 미스 및 블록(66)에 연속적인 할당 시, 미스 요청은 도 2의 화살표(67)가 지시하는 바와 같이 L2 캐시로 보내질 수 있다.
일 실시 예에서, FB(40)에 수집되는 데이터는 Ld 명령의 연속적인 처리를 위한 FB로부터 연속적으로 읽을 수 있다. 특정 실시 예들에서, 이러한 읽기는 LSU(24) 단독으로 또는 히트/미스 감지 로직(42)과 결합에 의해 나타낼 수 있다.
페이지 사이즈 정보에 대해 기재된 것은 FB(40)에 비교하기 위한 적절한 가사 어드레스 비트들을 알아내기 위한 특정 실시 예들에서 요구될 수 있다(이런 비교는 도 3의 블록(77)을 참조하여 후술 된다.). 일 실시 예에서, 페이지 사이즈 정보는 수신 VA 비트들뿐만 아니라 FB(40)에 저장된 가상 어드레스를 적절하게 마스킹할 수 있다(도 4에 도시된 라인(104)). 페이지 사이즈 정보는 예를 들어, TLB 내의 페이지 테이블 또는 MMU의 페이지 테이블의 다른 페이지 사이즈의 여러 페이지들과 같은 케이스에 바람직할 수 있다.
페이지 사이즈(예를 들어, 1GB 메모리 페이지, 2GB 메모리 페이지 등)는 페이지 테이블에서 PA에 매핑되는 VA 공간(처리 시스템으로부터)의 사이즈에 관한 정보를 공급할 수 있다. 이와 같이, 예를 들어, 두 개의 VA들은 TLB(38)의 같은 PA를 가리킬 수 있다. 하지만, 각각의 VA는 그것과 관련하여 다른 페이지 사이즈를 가질 수 있다. 이런 이유로, 이러한 두 개의 VA들 중 오직 하나와 관련된 명령은 페이지 사이즈들이 두 개의 VA들의 비교 이전의 Ld 명령의 VA 뿐만 아니라 FB에 저장된 VA의 적절한 비트들을 마스킹하는데 사용될 때 개시된 본 발명의 특정 실시 예들에 따라 FB(40)로부터 전달받게 된다.
도 2에 다양한 단계들이 CPU 코어(12)의 적어도 하나 이상의 유닛에서 "수행"되는 것으로 상술 되었지만, LSU(24), TLB(38), 히트/미스 감지 로직(42), 및 FB(40)와 같은 엔티티들은 코어(12)에 추가되어 포함될 수 있다. "추가"되는 모든 유닛들은 해당 단계들에서"수행"할 수 있도록 하는 하드웨어(필요하면, 마이크로코드를 사용한 소프트웨어일 수 있다)로 적절하게 구성될 수 있다.
반면에, 단일 엔티티는 도 2에 개시된 복수 또는 모든 측면들을 수행할 수 있다. 예를 들어, 일 실시 예로서, 블록들(57,59,62 및 66)은 LS 스케줄러로부터 VA 및 Ld 명령을(LSU를 거쳐서) 수신하는 TLB(38)의 동작들을 나타낼 수 있다. 이와 같이 특정 처리 단계와 관련된 각각의 코어 기반 유닛 또는 엔티티를 정확히 식별하기 위한 특정 실시 예들은 선호되거나 유익하지 않을 수 있다. 오히려, 도 2 및 도 3에 도시된 프로세스 단계들을 "수행"하기 위해, 일반적으로, CPU 코어(12)는 바람직하게는 하드웨어로 구성될 수 있다는 것을 인식하는 것이 더 적합하다.
도 3은 본 발명의 일 실시 예를 뒷받침하기 위한 높은 주파수의 FB 전송 방법에 대해 보여주는 예시적인 순서도이다.
본 발명의 특정 실시 예에 따라 이하 상세하게 논의된 바에 따라, FB 포워딩은 FB 엔트리들에 대한 PA의 비교의 결론에 앞서 시작될 수 있다. VA를 사용한 사이클 2(cycle 2)의 포워딩 프로세스를 시작함으로써, FB 포워딩 동작은 두 사이클을 통해 분할할 수 있다. - 여기서, 사이클 "2" 및 "3"은 도 3의 실시 예이다. 이 때문에, 높은 주파수의 동작이 가능하며, 각각의 주기가 짧아질 수 있다. 명령 실행 동안 PA는 VA보다 나중에 사용될 수 있기 때문에 PA 기반의 비교가 독점적으로 사용될 때 높은 주파수의 동작들은 불가능할 수 있다.
더 나아가, 한 사이클 내에 있는 PA 비교 및 FB 포워딩 결정은 언급된 사이클 분할의 사용하여 피할 수 있다. 도 3은 초기 Ld 미스가 이미 발생하고, 이미 자리를 차지하고 있는 도 2의 블록(66)의 할당 후에 본 발명의 일 실시 예에 따라 수행되는 동작 단계들의 예시적인 세트를 도시한다. 이와 같이, 초기 Ld 동작과 관련된 도 2의 실시 예에 반하여 도 3의 실시는 본 발명의 교시에 따라 빠른 FB포워딩이 달성될 수 있도록 Ld 후속 동작에 관한 것이다. 그러나, 몇몇 실시 예에서, 도 3에 개시된 스텝들은 초기 Ld 동작의 일부로서 수행될 수 있다.
간단하게, 도 3은 FB의 엔트리들에 대한 초기의 비교를 위한 변환되지 않는 가상 어드레스를 보내고, FB의 "히트"를 결정하기 위한 비교를 수행하기 위한 TLB entry# 로 규정되는 (후속되는)로드 동작과 관련될 수 있다. 히트 결정은 빠르고, 결론을 내리기 위한 긴 PA의 비교를 위한 필수적인 대기 없이 적절한 타이밍에 로드(Ld)를 위한 FB 로부터 데이터를 포워딩할 수 있다.
도 3의 동작들은 세 클럭 사이클로 결정될 수 있다. 그러나, 더 많은 테스크들(tasks)은 블록(66)에서의 초기 할당/저장 장소에 세 클럭 사이클 넘어 달성될 수 있다.
도 3의 블록(72)의 제1 클럭/기계 사이클에서, 일 실시 예로서, LSU(24)는 LS 스케줄러(20)(초기 Ld 동작인 경우)로부터 또는 RQ(32)(초기 Ld 명령이 L1에 "히트"하지 않았고 RQ 내에 할당된 이전 미스 요청을 가질 때) VA 및 Ld 명령을 가져올 수 있다. LSU(24)는 TLB entry#(수신된 VA와 관련된 TLB의 PTE의 지시)를 발생하기 위한 TLB(38)의 엔트리들에 대한 VA를 비교할 수 있다.
도 3의 제2 사이클에서, 복수의 동작들은 발생할 수 있다. 이런 동작들의 전부 또는 일부가 동시에 발생하는지, 또는 그것들이 특정한 순서대로 수행되는지에 대한 특정 명령은 덜 중요하고, 이런 이유로, 여기에 강조되지 않는다. 하지만, 제2 클럭 사이클에서 FB 포워딩 예측은 모든 FB 엔트리들에 대한 PA의 완료를 기다릴 필요 없이 먼저 시작하기 위한 FB 포워딩을 허락한다. "프리-포워딩(pre-forwarding)" 접근 방식은 프리-포워딩 과정이 빨리 시작할 수 있도록 하고, 사이클 시간이 줄어들도록 함으로서 높은 주파수에서 FB 포워딩을 지원한다.
도 3의 블록(75)은 도 2의 블록(62)와 동일하므로, 추가적인 설명을 하지 않는다. 일 실시 예로, 블록(75)에서, VA-투-PA 변환을 추가함으로써, 블록들(77-79)에 도시된 적어도 하나 이상의 동작들은 미리, 동시에 또는 VA-투-PA 변환에 후속하여 발생할 수 있다. 예를 들어, 블록(77)에서, FB(40)은 FB(40)에 저장된 가상 어드레스들에 대한 VA 비트들(블록(72)의 Ld 명령으로부터 수신)의 비교를 시작할 수 있다.
또한, 페이지 사이즈 정보가 FB에 미리 저장되어있지 않으면(도 2의 블록(66)에 언급됨으로써 미리 논의되었다.), 일 실시 예에서, 블록(78)에서 FB(40)는 블록(74)에서 발생한 TLB id#와 관련된 TLB(38)로부터 페이지 사이즈를 읽어낼 수 있다. 블록(78)에서 동작은 점선(80)으로부터 지시된 바와 같이 TLB id#(블록(74)에서)가 FB에 이미 저장되어 있는지 아닌지에 따라 추가적일 수 있다.
일 실시 예에서, 블록(78)의 페이지 사이즈는 FB에 저장된 VA의 적절한 비트들을 마스킹하고, 그렇게 함으로써, Ld 명령의 VA의 적절한 비트들을 비교하기 위한 부분 가상 어드레스(Partial Virtual Address)(PVA)를 발생할 수 있다(수신한 VA의 결과인 수신 VA의 비트들(도 4의 선(104))은 페이지 사이즈로부터 유사하게 마스킹된다.)
(후술 되는)도 4에 도시된 바와 같이, 일 실시 예로서, FB(40)는 FB에 저장된 VA들과 관련된 페이지 사이즈들을 저장할 수 있고, 각각의 페이지 사이즈는 해당 FB에 저장된 VA의 적절한 VA비트들을 마스킹하기 위한 FB로부터 사용될 수 있고, PVA들의 결과는 블록(77)의 비교 동작의 부분으로써 Ld 명령의 VA의 적절한 비트들에 대해 비교될 수 있다.
일 실시 예로서, 블록(78)으로부터 판독된 페이지 사이즈는 FB의 PVA들의 Ld 명령의 "마스크된" VA를 비교하기 전에 수신 Ld 명령의 VA이 적용될 수 있다. 다른 실시 예에서, FB에 저장된 페이지 사이즈 각각은 FB에 저장된 VA의 해당 PVA의 Ld 명령의 "마스크된" VA를 비교할 때 수신 Ld 명령의 VA가 적용될 수 있다.
이와 같이, 도 3의 제2 기계 사이클의 블록(79)에서, FB(40)는 FB의 해당 엔트리들에 대한 (Ld 명령의 VA와 관련된) TLB id# 및 Ld 명령의 PVA의 비교에 기반한 "예측된 FB 엔트리"를 포함할 수 있다. 예측된 FB는 상기 언급된 "프리-포워딩" 접근의 부분으로써 FB(40)에서 독출될 수 있는 초기 데이터를 공급할 수 있다. 그러나, 예측된 FB 엔트리의 FB 포워딩을 시작하기 전에, 히트/미스 감지 유닛(42)은 "히트"가 L1 캐시(26)에 있는지 없는지에 대해 결정 블록(82)에서 결정하기 위한 Ld 명령의 PA를 사용할 수 있다. 히트가 있다면, 데이터는 L1 캐시(26)로부터 반환되고, 실행 유닛(22)(또는 다른 적절한 엔티티)에 공급될 수 있다.
이런 히트에서, Ld 동작은 도 3의 화살표(83)로부터 지시된 것과 같이 "완료"되었다고 간주 될 수 있다. 이 경우, FB 포워딩 동작 또는 (후술 되는) 제3 클럭 사이클에서 L2 캐시로의 데이터 요청의 전송은 피할 수 있다.
일 실시 예에서, 블록(82)의 "히트" 또는 "미스"에 개의치 않는 제 3 클럭 사이클은 개시될 수 있다. 제3 클럭 사이클에서, FB 포워딩은 Ld 명령을 처리하기 위한 실행 유닛(22)(또는 다른 적절한 엔티티)에서 포워드되는 데이터로써 예측되는 FB 엔트리를 사용하는 블록(85)에서 시작될 수 있다. 그러나, 블록(85)에서 데이터의 독출이 동시에 또는 후속으로 시작되는 FB(40)은 "실제 FB 엔트리"로 언급되는 데이터 매칭을 포함하는 FB(40)에 저장된 물리적 어드레스에 대한 (블록(75)에서 구해진)TLB로부터 PA를 비교할 수 있다.
이와 같이, PA 비교는 블록(85)에서 FB로부터 데이터의 독출의 시작 이후 블록(87)에서 시행할 수 있다. 다시 말해서, FB 포워딩은 큰 물리적 어드레스(40 비트 이상) 비교의 결정까지 지연되지 않을 수 있다. 블록(87)에서 구해진 실제 FB 엔트리는 Ld 실행으로 포워드되는 것을 필요로 하는 참인 FB 엔트리이다.
실제 FB 엔트리는 블록(79)로부터 구한 예측된 FB 엔트리와 다를 수 있다. 예를 들어, 예측된 FB 엔트리는 FB(40)에 저장된 VA각각에 대한 수신 VA(블록(72))를 비교함으로써 구할 수 있다, 이와 같이, 예측된 FB 엔트리는 오직 VA-투-VA 비교를 기반으로 하고 어떠한 PA 비교도 포함하지 않는다. 이러한, 의사 결정을 기반으로 한 VA-투-VA 비교는 TLV(38)에서의 변환이 대체되거나(TLB 무효의 결과 또는 페이지 테이블 룩-업(look-up) 실패들에 의해) 다른 PA의 같은 VA의 새 변환 포인트와 같은 부정확성의 결과일 수 있다.
이런 경우, VA-투-VA 비교는 FB의 PA(Ld 명령의 VA와 관련된)가 같은 VA에 대한 TLB(38)의 새로운 (실제) PA와 동일하지 않을 수 있기 때문에 충분하지 않다. 본 발명의 일 실시 예에서, FB(40)로부터 감지되고 다루어지는 부정확한 포워딩의 메커니즘(mechanism) 또한 제공될 수 있다. 단독 VA-투-VA로부터 발생되는 문제를 피하기 위해, 본 발명은 FB(40)의 PA 각각에 대한 Ld 명령(블록(75)에 포함되는)의 PA의 비교에 대해 고려한다.
FB의 PA가 Ld 명령의 PA와 매치할 때, FB(40)의 해당 데이터 엔트리는 "실제 FB 엔트리"로 간주된다. 일 실시 예에서, FB(40)는 도 3의 결정 블록(90)으로부터 지시된 조기-시작된 FB 포워딩(예측된 FB 엔트리를 사용하여)을 입증하기 위한 실제 FB 엔트리의 엔트리 개수에 대한 예측된 FB 엔트리의 엔트리 개수를 비교할 수 있다.
실제 및 예측된 FB 엔트리가 매칭하면, 화살표(91)로부터 지시된 바와 같이 Ld는 완료된다. 그러나, 블록(90)에서, 실제 FB 엔트리들과 예측된 FB 엔트리들이 일치하지 않으면, Ld 명령 및 조기-시작된 FB 포워딩은 도 3의 화살표(92)로부터 w지시된 바와 같이 무효화된다. 이런 "무효화"는 Ld 실행의 결과로부터 얻어진 데이터를 무시할 수 있다. Ld 명령은 시간이 지난 뒤 재실행 또는 재수행될 수 있고, 정확한 데이터와 함께 성공적으로 실행을 완료하도록 한 후에, 재발행될 수 있다.
이와 같이, 잘못된 히트가 감지될 때(블록(85)에서 FB 포워딩이 잘못된 것으로 판명될 때), 조기 FB 포워딩(블록(90))의 확인을 기반으로 한 안전 메커니즘(FB(40))은 FB 엔트리가 할당을 해제할 때 재생하기 위한 로드를 발생하는 늦은 로드 무효 지시를 발생할 수 있다.
일 실시 예에서, FB(40)에 수집되는 TLB(338)의 페이지 테이블 엔트리(PTE)가 교체될 경우에(TLB 미스 또는 무효화 이벤트의 결과), 적절한 정보는 데이터를 후속 로드에 포워드하지 않고 FB(TLB로부터)에 로그된다. 일 실시 예로서, TLB(38)는 엔트리가 대체될 때, FB(40)에 적절한 지시를 보내거나 통신할 수 있다. 대체된 엔트리 번호는 FB에 저장된 TLB 엔트리 번호들과 비교된다. FB의 매칭 엔트리는 포워드될 수 없는 것으로 마킹된다. 이런 동작은 도 2 내지 도 4에 도시된 FB 포워딩 양상의 수행에 무시될 정도의 영향을 미치거나 거의 발생하지 않을 수 있다.
도 2의 경우와 마찬가지로, 다양한 단계들이 CPU 코어(12)의 적어도 하나 이상의 유닛에서 "수행"되는 것으로 상술 되었지만, LSU(24), TLB(38), 히트/미스 감지 로직(42), 및 FB(40)와 같은 엔티티들은 코어(12)에 추가되어 포함될 수 있다. "추가"되는 모든 유닛들은 해당 단계들에서"수행"할 수 있도록 하는 하드웨어(필요하면, 마이크로코드를 사용한 소프트웨어일 수 있다.)로 적절하게 구성될 수 있다.
반면에, 단일 엔티티는 도 3에 개시된 복수 또는 모든 측면들을 수행할 수 있다. 예를 들어, 일 실시 예로서, 블록들(72, 74, 및 75)은 TLB의 동작들을 나타낼 수 있다. 이와 같이 특정 처리 단계와 관련된 각각의 코어 기반 유닛 또는 엔티티를 정확히 식별하기 위한 특정 실시 예들은 선호되거나 유익하지 않을 수 있다. 오히려, 도 3에 도시된 프로세스 단계들을 "수행"하기 위해, 일반적으로, CPU 코어(12)는 바람직하게는 하드웨어로 구성될 수 있다는 것을 인식하는 것이 더 적합하다.
도 4는 본 발명의 실시 예에 따른 FB 포워딩을 수행하기 위한 FB와 TLB의 예시적인 하드웨어 구성들을 보여준다.
도 4는 본 발명의 실시 예에 따른 FB 포워딩을 수행하기 위한 FB(도 1의 FB(40))와 TLB(도 1의 TLB(38))의 예시적인 하드웨어 구성들을 보여준다. 간략하게 할 수 있도록, TLB(38) 및 FB(40)의 상세한 구조적 레이아웃들은 제외하고 TLB(38) 및 FB(40)의 관련 부분만 도시한다. 도 4에 도시된 하드웨어 구성들은 도 2 및 도3에 도시된 방법론을 구현하는데 사용될 수 있다. 도 2 및 도 3의 도시된 동작들은 이전에 자세히 설명되어 있기 때문에 반복되어 설명하지 않는다. 오직 관련된 하드웨어 구성만이 도 4의 맥락에서 설명된다.
도 4에 도시된 바와 같이, TLB(38)는-98을 통해 블록(95)으로부터 지시되고, 물리적 어드레스"N"들에 대응하는- 가상 어드레스들"N"을 저장할 수 있다. 이와 같이, TLB(38)는 동작 시스템의 페이지 테이블로부터 최근에 사용된 VA-투-VA 매핑들의 캐시일 수 있다. Ld 명령의 VA는 라인(104)으로부터 지시된 TLB(38)로부터 수신될 수 있다. 앞서 언급했듯이, Ld 명령의 VA는 도 2의 블록(57) 또는 도 3의 블록(72)의 프로세싱의 부분으로써 TLB(38)로부터 수신될 수 있다.
라인(104)로부터 수신된 VA는 매치 시 TLB entry#를 발생하기 위한 TLB(38)에 저장된 VA 각각(VA1 내지 VA N)과 비교될 수 있다. 이런 VA-투-VA 비교는 비교기들(105 내지 108) 중 해당하는 것을 사용하여 수행될 수 있다. 발생된 TLB entry# (Ld 명령의 VA에 대응하는 PTE의 위치의 지시) 도 4의 참조부호 "110"을 갖는 화살표들로써 상징적으로 나타내진다.
이런 TLB entry#의 발생은 도 2의 블록(59) 및 도 3의 블록(74)에 도시되어 있다. 발생된 TLB entry#는 선택기(112)(멀티플렉서 또는 하드웨어 구성일 수 있다.)를 사용하여 해당 물리적 어드레스를 선택하기 위해 사용될 수 있다. 선택기(112)의 출력은 도 4의 라인(113)으로부터 지시된 바와 같이 "변환된" PA이다. 이러한 방식으로, 도 2의 블록(62) 및 도 3의 블록(75)에 도시된 VA에서 PA로의 변환은 달성될 수 있다.
일 실시 예에서, 라인(110)에서 TLB entry#는 블록(14)에 인코딩될 수 있고, 여기 상술된 것처럼 FV VA비교를 수행하기 위한 FB(40)의 비교기(116 내지 119)(화살표들 115로 지시된) 각각에 적용될 수 있다. 이런 인코딩(encoding)은 하드웨어 비교기의 사이즈를 줄일 수 있다. 예를 들어, 인코딩된 버전을 비교함으로써, 하드웨어 비용을 감소될 수 있고, 비교되기 위한 복수의 비트들은 압축/감소할 수 있다.
일 실시 예에서, FB(40)는 도 2에서 블록(66)을 참조하여 앞에서 설명한 바와 같이 다음을 저장할 수 있다. (i) 블록들(121 내지 124)로부터 지시되는 가상 어드레스들 "P" 각각(VA 1 내지 VA P(P≤N)) (ii) 블록들(126 내지 128)로부터 지시되는 해당 물리적 어드레스들 "P" 각각(PA 1 내지 PA P) (iii) 블록들(130 내지 133)에서 TLB ENT#1 내지 TLB ENT#P 로부터 지시되는 FB(40)에 저장된 VA 각각의 TLB 엔트리 번호들 및 (iv) 블록들(135 내지 138)의 PgSz 1 내지 PgSz P 로부터 지시되는 FB에 저장된 TLB entry# 각각에 대응하는 TLB(38)로부터 수신된 페이지 사이즈
일 실시 예에서, FB(40)는 "P" 버퍼들을 포함할 수 있고, 각각의 버퍼는 대응하는 파라미터들(PA와 관련되고, TLB ENT#와 관련되고, PgSz와 관련된 VA) 의 세트를 저장할 수 있다. 다른 실시 예에서, FB(40)는 도 4에 도시된 바와 같이 모든 파라미터들을 저장하는 단일 버퍼로 시행될 수 있다.
도 4의 일 실시 예에서, 비교기들(116 내지 119)은 도시된 바와 같이 입력들 각각을 수신할 수 있다. 비교기 각각의 입력으로 (i) Ld 명령의 VA(라인(104)으로부터), (ii) TLB entry#(라인(115)으로부터), (iii) FB에 저장된 VA, (iv) FB에 저장된 VA에 대응하는 FB에 저장된 TLB entry#, 및 (v) FB에 저장된 TLB entry#에 대응하는 FB에 저장된 페이지 사이즈를 입력 받을 수 있다.
도 3의 블록들(77 및 79)을 참조하여 이전에 논의된 동작들은 "예측된 FB 엔트리"(142)를 발생하기 위해 비교기들(116 내지 119)를 사용하여 수행될 수 있다. 비교기(116 내지 119) 각각은 FB에 저장된 VA(이전에 논의된 바와 같이 FB에 저장된 페이지 사이즈를 사용하여 적절하게 마스킹된) 및 Ld 명령의 VA(라인(104)으로부터) 적절한 비트들의 비교뿐만 아니라 TLB entry#(라인(115)) 및 해당 FB에 저장된 TLB entry#의 비교를 수행할 수 있다.
이전에 논의된 바와 같이, Ld 명령의 VA는 해당 페이지 사이즈를 사용하여 마스킹될 수 있다. 상기 언급된 두 비교들이 수행되는 동안 매칭을 찾는 비교기는 "예측된 FB 엔트리"(142)로써 출력되기 위한 해당 FB 데이터 엔트리를 허락할 수 있다. 이는 도 3의 블록(85)를 참조하여 이전에 언급된 결론을 내기 위한 PA 비교의 기다림 없이 데이터 포워딩(화살표(143)에서 지시된)을 수행하기 위한 FB(40)를 허락할 수 있다.
"실제 FB 엔트리"(도 3의 블록(87)을 참조하여 논의된)는 비교기들(145 내지 147)의 그룹으로부터 각각의 비교기를 사용한 FB(블록들(126 내지 128)로부터 지시된)에 저장된 PA 각각에 대한 TLB(38)(라인(113))로부터 수신된 Ld 명령의 PA의 비교를 기반으로 FB(40)에 발생될 수 있다. 도 4의 화살표(149)로부터 도시된 바와 같이 매칭 PA와 관련된 FB 데이터 엔트리는 "실제 FB 엔트리"이다.
도 3의 블록(90)을 참조하여 이전에 논의된 FB 포워딩 확인은 예측된 FB 엔트리 번호(142)와 실제 FB 엔트리 번호(149)를 비교하기 위한 비교기(150)를 사용한 하드웨어에서 완수될 수 있다. 미스매치(mismatch)는 도 4의 화살표(152)로부터 지시된 바와 같은 데이터 포워딩(라인(143)에서 시작)의 무효의 결과이다.
이전에 언급된 바와 같이, 조기 송신 FB 데이터 엔트리("예측된 FB 엔트리")의 할당을 해제할 때, 다시 하기 위한 LD를 발생하는 로드 무효 지시는 화살표(152)에서 발생될 수 있다. 이런 지연 로드 무효 지시의 부분으로써, 조기-시작된 FB 포워딩은 Ld 실행의 결과로써 얻어진 데이터를 무시함으로써 무효된다. Ld는 지연 및 정확한 데이터를 성공적으로 완료하기 위해 재생 또는 재수행된다.
도 2 내지 도 4의 전술한 설명은 주로 로드(Ld) 명령의 실행의 맥락에서 제공되었고, 이는 본 발명의 양상들이 보여지고, 저장(St) 동작들을 동등하게 적용하기 위해 도 2 내지 도 4를 참조하여 논의된 것뿐만 아니라 저장 명령 및 로드 명령 사이의 차이점들을 프로세싱에 대한 설명을 위한 적절한 변경으로 이해된다. 그러나, 간결하게 하기 위해, 본 발명에 따라 저장 명령의 프로세싱은 여기에 논의되지 않는다.
도 5는 본 발명의 실시 예에 따른 도 1의 프로세서를 포함하는 예시적인 시스템 또는 장치를 보여준다.
도 5는 본 발명의 실시 예에 따라 도 1의 프로세서(10)를 포함하는 장치(155) 또는 시스템을 예시적으로 보여준다. 이전에 논의된 바와 같이 프로세서(10)는 도 2 및 도 3의 예시적인 실시 예들로 도시된 동작들을 수행하기 위한 도 1 및 도 4의 예시적인 실시 예들로 도시된 하드웨어를 포함할 수 있다.
이와 같이, 프로세서(10)는 본 발명의 발명적인 측면들에 따라 높은 주파수의 FB 포워딩을 달성하기 위한 하드웨어(필요에 따라, 소프트웨어일 수 있다.)로 "구성"될 수 있다. 도 1을 참조하여 논의된 바와 같이, 프로세서(10)는 복수의 외부 장치들과 인터페이스 할 수 있다. 도 5에서, 프로세서(10)는 시스템 메모리(157), 주변 저장 유닛(159), 적어도 하나 이상의 입력 장치들(161), 적어도 하나 이상의 출력 장치들(163), 및 네트워크 인터페이스 유닛(164)과 연결될 수 있다.
몇몇 실시 예에서, 시스템(155)은 장치들의 적어도 하나 이상의 인스턴스(instance)를 포함할 수 있다. 몇몇 실시 예들에서, 시스템(155)은 컴퓨터 시스템(computer system)(데스크탑(desktop) 또는 랩탑(laptop), 태블릿 컴퓨터(tablet computer), 모바일(mobile) 장치, 휴대전화, 비디오 게임 유닛 또는 콘솔(video gaming unit or console), 머신-투-머신(machine-to machine)(M2M) 통신 유닛, 스테이트 레스 "씬" 클라이언트 시스템(stateless "thin" client system) 또는 다른 타입의 컴퓨팅 또는 데이터 처리 장치들을 포함할 수 있다. 다양한 실시 예들에서 시스템(155)은 랙-마운터블 서버 시스템(rack-mountable server system), 단독형 시스템 또는 다른 적절한 형태의 요소들로 구성될 수 있다. 몇몇 실시 예에서, 시스템(155)은 서버 시스템보다 클라이언트 시스템으로 구성될 수 있다.
특정 실시 예들에서, 프로세서(10)는 적어도 하나 이상의 코어(도 1을 참조하여 언급된 바와 같이)를 포함하고, 시스템(155)은 적어도 하나 이상의 프로세서를 포함할 수 있다. 시스템(155)이 멀티프로세서 시스템(multiprocessor system)일 때, 프로세서(10)의 적어도 하나 이상의 인스턴스가 있을 수 있고, 각각의 일관된 프로세서 인터페이스들(52)(도 1)을 통해 프로세서(10)에 결합된 다수의 프로세서들이 있을 수 있다.
다양한 실시 예들로서, 시스템 메모리(157)은 이전에 설명된 FB-DIMM, DDR/DDR2/DDR3/DDR4 SDRAM, Rambus® DRAM, 플래시 메모리, 다양한 종류의 읽기 전용 메모리(ROM)와 같은 적절한 타입의 메모리로 구성될 수 있다. 일 실시 예에서, 시스템 메모리(157)는 다수의 메모리 인터페이스들(46)(도 1)을 제공하는 프로세서(10)의 실시 예에서 개별 메모리 인터페이스에 의해 제어되는 메모리의 다수의 분리된 뱅크를 포함할 수 있다. 또한, 몇몇 실시 예들에서, 시스템 메모리(57)는 메모리의 단일 유형과 대조적으로, 복수의 다른 타입들의 메모리를 포함할 수 있다.
다양한 실시 예들에서, 주변 저장 유닛(159)은 자기, 광학, 광자기 또는 하드 드라이브, 광 디스크(CD 또는 DVD)와 같은 고체 상태 저장 미디어, 비 휘발성 RAM 장치 등에 대한 지원을 포함할 수 있다. 몇몇 실시 예들에서, 주변 저장 유닛(159)은 더 복잡한 디스크 어레이(dist array)(적절한 복수 배열 독립 디스크(RAID)) 또는 기억 영역 네트워크(SANs)와 같은 소형 컴퓨터 시스템 인터페이스(SCSI), 파이버 채널 인터페이스(Fibre Channel interface), 파이어 와이어(Firewire®)(IEEE 1394) 인터페이스, 또는 다른 적절한 인터페이스를 통해 프로세서(10)와 연결된 저장 장치들/시스템들을 포함할 수 있다. 일 실시 예에서, 주변 저장 유닛(159)은 주변 장치 인터페이스(48)(도 1)를 통해 프로세서(10)와 연결될 수 있다.
특정 실시 예들에서, 입력 장치들(161)은 컴퓨터 키보드, 마우스, 또는 다른 포인팅(pointing) 장치, 터치패드, 조이스틱(joystick), 또는 어떤 다른 타입의 데이터 입력 장치와 같은 표준 입력 장치들을 포함할 수 있다.
출력 장치들(163)은 그래픽/디스플레이(graphic/display) 장치, 컴퓨터 스크린(screen), 오디오 스피커(audio speaker), 알람 시스템(alarm system), CAD/CAM(Computer Aided Design/Computer Aided Machining) 시스템, 비디오 게임 스테이션(station), 또는 어떤 다른 타입의 데이터 출력 또는 프로세스 제어 장치를 포함할 수 있다.
몇몇 실시 예들에서, 입력 장치(들)(161) 및 출력 장치(들)(163)는 I/o 또는 주변 장치 인터페이스(48)(도 1)를 통해서 프로세서(10)와 연결될 수 있다.
일 실시 예에서, 네트워크 인터페이스(164)는 네트워크(미 도시)와 연결된 시스템(155)을 활성화하기 위한 프로세서의 내부 네트워크 인터페이스(47)와 통신할 수 있다. 다른 실시 예에서, 네트워크 인터페이스(164)는 프로세서의 네트워크 인터페이스(47)의 인스턴스를 나타낼 수 있고, 또는 아예 없을 수 있다. 네트워크 인터페이스(164)는 어떤 적절한 장치들, 미디어 및/또는 유선 또는 무선 네트워크를 위한 시스템(155)을 연결하기 위한 프로토콜 콘텐츠를 포함할 수 있다. 다양한 실시 예들에서, 네트워크는 근거리 통신망(LANs), 광대역 통신망(WANs), 유선 또는 무선 이더넷, 전기 통신망 또는 다른 적절한 타입의 네트워크들을 포함할 수 있다.
메모리 시스템(155)은 도 5에 도시된 다양한 시스템 요소들에 전력을 공급하기 위한 온-보드 파워 공급 유닛(on-board power supply unit)(165)을 포함한다. 파워 공급 유닛(165)은 베터리를 수신할 수 있고, AC 전원 콘센트에 접속될 수 있다. 일 실시 예에서, 파워 공급 유닛(163)은 태양 에너지를 전력으로 변환할 수 있다.
위의 설명에서, 제한이 아는 설명의 목적으로, 특정 세부 사항(아키텍쳐들, 인터페이스들, 기술들)이 개시 기술의 완전한 이해를 제공하기 위해 설명된다. 그러나, 개시된 기술은 이러한 특정 상세 사항으로부터 벗어난 다른 실시 예에서 실시될 수 있음은 당업자에게 명백할 것이다. 즉 본 명세서에서 명시적으로 기술되거나 도시, 개시된 기술의 원리를 구현하는 것은 아니지만, 당업자는 어떤 다양한 어레인지먼트들(arrangements)을 고안할 수 있다. 불필요한 세부 개시된 기술의 설명을 모호하게 하지 않도록 일부 예에서, 잘 알려진 장치, 회로 및 방법의 상세한 설명은 생략한다. 모든 언급은 본 발명의 구조적 및 기능적 균등물을 포함하도록 의도된다. 또한 그러한 균등물은 미래에 개발 및 현재 알려진 등가물을 포함하는 것으로 의도된다.
이와 같이, 예를 들어, 본 발명의 다이어그램 블록(도 1)은 예시적인 회로 또는 기술의 원리를 구현하는 다른 기능 유닛의 개념도를 나타냄으로써 높이 평가될 것이다. 유사하게, 도 2 내지 도 3의 순서도들은 프로세서(도 1 내지 도 5의 프로세서(10))로부터 주로 수행되는 다양한 프로세스들을 나타냄으로써 높이 평가될 것이다.
예시적으로, 프로세서는 범용 프로세서, 특수 목적 프로세서, 재래식 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 관련된 적어도 하나 이상의 마이크로프로세서들, 컨트롤러, 마이크로 컨트롤러, 주문형 반도체들(ASICs), 필드 프로그램 가능 게이트 어레이(Field Programmable Gate Arrays)(FPGAs) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함할 수 있다. 도 2 및 도 3의 맥락에서 전술된 몇몇 또는 전체 기능들은 바람직하게는 CPU 코어와 같은 하드웨어를 사용하는 프로세서로부터 공급될 수 있다.
특정 발명의 측면은 소프트웨어 기반의 처리를 필요로 하는 경우, 소프트웨어 또는 프로그램 코드는 컴퓨터 판독 가능 데이터 저장 매체(미 도시)에 존재할 수 있다. 데이터 저장 매체는 도 5의 실시 예에서 주변 저장 장치(159)의 일부일 수 있다. 또는 데이터 저장 매체는 프로세서(10)의 내부 메모리의 일부일 수 있다.
프로세서(10)(도 5)는 소프트웨어 기반의 처리를 수행하기 위해 이러한 매체에 저장된 명령들을 실행할 수 있다. 컴퓨터 판독 가능 데이터 저장 매체는 컴퓨터 프로그램, 소프트웨어, 펌웨어, 또는 상기 언급된 프로세서 또는 범용 컴퓨터로부터 실행하기 위한 마이크로드를 포함하는 비 일시적인 데이터 저장 매체일 수 있다.
컴퓨터 판독 가능 데이터 저장 매체의 예시들은 읽기 전용 메모리(ROM), 임의 추출 기억 장치(RAM), 디지털 레지스터(digital register), 캐시 메모리, 반도체 기억 장치, 자기 탭스(tapes) 및 이동식 디스크, 자기광학 매체, CDROM 디지털 다기능 디스크(DVDs)와 같은 자기 매체를 포함할 수 있다.
본 명세서의 발명의 양태에 따라 효율적인 FB 전달 기법의 대안적인 실시 예는 추가적인 기능을 제공하는 본 발명의 교시에 따라 해결책을 지원하기 위해 식별된 기능성 및/또는 임의의 필요한 기능 중 하나를 포함할 추가 구성요소를 포함할 수 있다. 특징 및 요소가 특정 조합으로 상술 되었지만, 각각의 특징 또는 구성 요소는 다른 특징 및 요소들 또는 다양한 조합들 또는 다른 특징들 없이 단독으로 사용될 수 있다.
전에 언급된 바와 같이, 프로세서(10)의 몇몇 요소들의 기능들은 하드웨어(하드웨어 회로) 및/또는 부호화된 명령들의 형태의 소프트웨어/펌웨어를 실행할 수 있는 하드웨어, 또는 컴퓨터 판독 기능 데이터 저장 매체에 저장된 마이크로코드를 통해 공급될 수 있다. 이와 같이, 이러한 기능 및 도시되는 기능 블록 중 하드웨어 구현 및/또는 컴퓨터 구현하고, 따라서 기계의 구현으로서 이해된다.
전술은 더 빠른 주파수의 FB에서 데이터 전송을 허용하는 FB 전달 방식에 대해 설명한다. 로드(Ld) 동작이 L1에서 벗어나거나, 데이터의 요청을 L2 또는 더 높은 레벨의 캐시(또는 시스템 버스)로 보낼 때, 다음 매개 변수는 FB에 저장된다. (i) 매시 "미스"에 의해 발생된 Ld 명령의 가상 어드레스 (ii) Ld 명령의 VA와 관련된 TLB의 물리적 어드레스의 위치를 지시하는 태그(TLB entry# 또는 TLB의 페이지 테이블 엔트리(PTE)) (iii) PTE와 관련된 메모리 페이지의 페이지 사이즈를 지시하는 TLB에 포함된 페이지 사이즈 정보.
후속 로드 동작들은 FB의 VA 엔트리들에 대한 초기 비교를 위해 변환되지 않은 가상 어드레스를 보내고, "히트"를 판별하기 위한 TLB entry# 로의 자격을 갖는다. 이러한 피트 결정은 빠르고, 적절한 방법으로 FB에서 Ld 명령까지 데이터 포워딩이 가능하다.
안전망 기구는 FB의 거짓 히트를 감지하고, Ld 명령의 결과로써 얻어진 데이터를 무시함으로써 조기-시작된 FB 포워딩의 무효에 대한 늦은 로드 무효 명령을 발생하기 위해 채용될 수 있다. Ld는 시간이 지난 후 나중 포인트에서 재실행 또는 재생되고, 올바른 데이터를 성공적으로 완료하기 위해 노력한다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 프로세서 37: MMU
14: 패치 제어 및 브랜치 예측 38: TLB
16: 명령 캐시 40: 필 버퍼
18: 디코드 유닛 42: 히트/미스감지 로직
20: LS 스케줄러 44: 실렉터
22: 실행 유닛 46: 메모리 인터페이스
24: 로드 스토어 유닛 47: 네트워크 인터페이스
26: L1 캐시 48: I/O 및 주변 기기 인터페이스
27: 데이터 캐시 제어 유닛 50: 시스템 인터커넥터
28: 더 높은 레벨의 캐시 52: 코히런트 프로세서
30: 내부 프로세서 버스
32: 리플레이 큐
34: 스토어 데이터 버퍼

Claims (10)

  1. 데이터를 포워딩하는 프로세서의 동작 방법에 있어서:
    로드 명령이 제1 실행을 위해 처리될 때, 프로세서에 대한 캐시 메모리의 제1 레벨에 히트가 있는지에 대해 판단하는 단계; 및
    상기 캐시 메모리의 제1 레벨에 히트가 없다면, 상기 프로세서의 필 버퍼(FB)는 상기 로드 명령으로부터 공급되는 제1 가상 어드레스(VA), 및
    상기 프로세서의 변환 색인 버퍼(TLB)의 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 제1 지시를 저장하는 단계를 포함하되,
    상기 제1 페이지 테이블 엔트리는 상기 로드 명령으로부터 공급되는 상기 제1 가상 어드레스와 관련된 동작 방법.
  2. 제 1 항에 있어서,
    상기 캐시 메모리의 제1 레벨의 히트가 없다면, 상기 프로세서에 대한 캐시 메모리의 제2 레벨로부터 상기 필 버퍼에 상기 로드 명령과 관련되어 데이터를 수집하는 단계를 더 포함하는 동작 방법.
  3. 제 2 항에 있어서,
    상기 필 버퍼에 상기 로드 명령과 관련된 데이터를 수집하는 단계는,
    상기 제1 가상 어드레스와 관련된 물리적 어드레스(PA)를 상기 변환 색인 버퍼로부터 획득하는 단계; 및
    상기 필 버퍼에 상기 물리적 어드레스를 저장하는 단계를 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 로드 명령의 후속으로 제2 실행이 발생하는 단계를 더 포함하고,
    상기 제2 실행이 발생하는 단계는:
    상기 변환 색인 버퍼의 제2 페이지 테이블 엔트리의 위치의 제2 지시를 포함하는 상기 변환 색인 버퍼의 엔트리들에 대한 상기 로드 명령으로부터 공급된 제2 가상 어드레스를 비교하고, 상기 제2 페이지 테이블 엔트리는 상기 로드 명령으로부터 공급되는 상기 제2 가상 어드레스와 관련된 단계;
    상기 필 버퍼에 저장된 상기 제1 가상 어드레스와 상기 제2 가상 어드레스가 매치하는지 그리고 상기 필 버퍼에 저장된 상기 제1 지시와 상기 제2 지시가 매치하는지 결정하기 위해 상기 필 버퍼의 엔트리들에 대한 상기 제2 지시 및 상기 제2 가상 어드레스를 비교하는 단계; 및
    상기 제1 및 제2 가상 어드레스들의 사이 및 상기 제1 및 제2 지시들 사이에서의 매치를 찾을 시, 예측된 필 버퍼 엔트리로써 상기 필 버퍼의 매칭 엔트리의 응답을 확인하고, 상기 예측된 필 버퍼 엔트리를 사용하는 상기 필 버퍼로부터 상기 로드 명령과 관련된 데이터의 독출을 시작하는 단계를 포함하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 제1 가상 어드레스와 상기 제2 가상 어드레스를 비교하기 전에, 상기 제2 페이지 테이블 엔트리와 관련된 메모리 페이지의 페이지 사이즈를 변환 색인 버퍼로부터 획득하는 단계를 더 포함하고,
    상기 제2 가상 어드레스를 비교하는 단계는:
    제1 부분 가상 어드레스(PVA)를 포함하기 위한 페이지 사이즈를 사용하는 상기 제1 가상 어드레스의 미리 결정된 복수의 비트들을 마스킹하는 단계;
    제2 부분 가상 어드레스를 포함하기 위한 상기 페이지 사이즈를 사용하는 상기 제2 가상 어드레스의 상기 미리 결정된 복수의 비트들을 마스킹하는 단계; 및
    상기 제1 가상 어드레스와 상기 제2 가상 어드레스가 매치하는지 결정하기 위한 상기 제1 및 상기 제2 부분 가상 어드레스들을 비교하는 단계를 포함하는 동작 방법.
  6. 제 4 항에 있어서,
    제2 가상 어드레스-특정 물리적 어드레스(PA)를 포함하기 위한 상기 변환 색인 버퍼를 사용하는 상기 제2 가상 어드레스를 변환하는 단계;
    상기 필 버퍼에 저장된 상기 물리적 어드레스들과 상기 제2 가상 어드레스-특정 물리적 어드레스가 매치하는지 판단하기 위해 상기 필 버퍼에 저장된 각각의 물리적 어드레스에 대한 상기 제2 가상 어드레스-특정 물리적 어드레스를 비교하는 단계;
    상기 제2 가상 어드레스-특정 물리적 어드레스에 대한 상기 필 버퍼 내의 매칭 물리적 어드레스를 찾을 시, 상기 로드 명령으로 포워딩하기 위한 실제 FB 엔트리로써 상기 필 버퍼 내의 상응하는 엔트리를 확인하는 단계;
    상기 실제 필 버퍼 엔트리의 제1 엔트리 개수와 상기 예측된 필 버퍼 엔트리의 제2 엔트리 개수가 매치하는지 판단하는 단계; 및
    상기 제1 및 제2 엔트리의 개수들의 매치를 실패할 때, 상기 예측된 필 버퍼 엔트리와 관련된 상기 필 버퍼로부터 상기 데이터의 상기 독출을 무효하는 단계를 더 포함하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 변환 색인 버퍼의 상기 제1 페이지 테이블 엔트리를 상이한 페이지 테이블 엔트리로 대체할 시, 상기 로드 명령의 연속적으로 발생하는 제2 실행의 부분으로써 상기 제1 지시와 관련된 상기 필 버퍼에 저장된 데이터의 포워딩을 피하기 위해 상기 필 버퍼를 설정하는 단계를 더 포함하는 동작 방법.
  8. 캐시 메모리의 제1 레벨;
    제1 실행에 의해 로드(Ld) 명령이 처리될 때, 캐시 메모리의 상기 제1 레벨에 히트가 있는지 확인하기 위해 구성되고, 캐시 메모리의 상기 제1 레벨과 연결된 감지 로직;
    캐시 메모리의 상기 제1 레벨과 연결된 필 버퍼(FB);
    상기 감지 로직 및 상기 필 버퍼와 연결되고, 캐시 메모리의 상기 제1 레벨의 상기 히트의 부재 시 상기 필 버퍼로 상기 로드 명령과 관련된 데이터를 수집하기 위해 구성된 로드 스토어 유닛(LSU); 및
    상기 필 버퍼 및 상기 로드 스토어 유닛과 연결되고, 상기 로드 명령으로부터 공급되는 제1 가상 어드레스(VA)와 관련된 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 제1 지시를 저장하도록 구성된 변환 색인 버퍼(TLB)를 포함하되,
    상기 필 버퍼는:
    상기 제1 가상 어드레스, 및
    상기 제1 페이지 테이블 엔트리의 위치에 대한 상기 제1 지시를 저장하도록 구성된 프로세서.
  9. 제 8 항에 있어서,
    상기 로드 스토어 유닛에 연결된 캐시 메모리의 제2 레벨을 더 포함하고,
    상기 로드 스토어 유닛은 캐시 메모리의 상기 제2 레벨로부터 상기 필 버퍼로 상기 데이터를 수집하도록 구성된 프로세서.
  10. 복수의 프로그램 지시들을 저장하기 위해 구성된 메모리; 및
    상기 메모리를 검색하기 위해 상기 메모리와 연결되고, 상기 복수의 프로그램 지시들을 실행하는 프로세서를 포함하되,
    상기 프로세서는,
    상기 프로세서의 로드 스토어(LS) 스케줄러로부터 제1 실행에 로드 명령이 처리될 때, 상기 프로세서에 대한 캐시 메모리의 히트가 있는지 판단하고,
    상기 캐시 메모리에 히트가 존재하지 않으면, 상기 프로세서의 필 버퍼(FB)는:
    상기 로드 명령의 제1 가상 어드레스(VA),
    상기 프로세서의 변환 색인 버퍼(TLB)의 제1 페이지 테이블 엔트리(PTE)의 위치에 대한 지시, 및
    상기 제1 페이지 테이블 엔트리와 관련된 메모리 페이지의 페이지 사이즈를 지시하는 상기 변환 색인 버퍼로부터 포함된 정보를 저장하는 시스템.

KR1020140175030A 2013-12-31 2014-12-08 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 KR102268601B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361922796P 2013-12-31 2013-12-31
US61/922,796 2013-12-31
US14/337,211 US9418018B2 (en) 2013-12-31 2014-07-21 Efficient fill-buffer data forwarding supporting high frequencies
US14/337,211 2014-07-21

Publications (2)

Publication Number Publication Date
KR20150079408A KR20150079408A (ko) 2015-07-08
KR102268601B1 true KR102268601B1 (ko) 2021-06-24

Family

ID=53481923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140175030A KR102268601B1 (ko) 2013-12-31 2014-12-08 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템

Country Status (2)

Country Link
US (1) US9418018B2 (ko)
KR (1) KR102268601B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9715461B2 (en) * 2014-03-03 2017-07-25 Kabushiki Kaisha Toshiba Cache memory control circuit and processor
US9423961B2 (en) * 2014-09-08 2016-08-23 Apple Inc. Method to enhance programming performance in multilevel NVM devices
CN105740164B (zh) * 2014-12-10 2020-03-17 阿里巴巴集团控股有限公司 支持缓存一致性的多核处理器、读写方法、装置及设备
US10761854B2 (en) * 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10372621B2 (en) * 2018-01-05 2019-08-06 Intel Corporation Mechanism to support variable size page translations
US10725783B2 (en) * 2018-11-02 2020-07-28 International Business Machines Corporation Splitting load hit store table for out-of-order processor
US11513958B1 (en) 2019-05-29 2022-11-29 Marvell Asia Pte, Ltd. Shared mid-level data cache
US11281466B2 (en) * 2019-10-22 2022-03-22 Advanced Micro Devices, Inc. Register renaming after a non-pickable scheduler queue

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271057A1 (en) 2010-05-03 2011-11-03 Oracle International Corporation Cache access filtering for processors without secondary miss detection
JP2011227880A (ja) 2010-04-22 2011-11-10 Arm Ltd プレロード命令制御

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845101A (en) 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6622211B2 (en) 2001-08-15 2003-09-16 Ip-First, L.L.C. Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty
US7139877B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7451271B2 (en) * 2004-04-05 2008-11-11 Marvell International Ltd. Physically-tagged cache with virtually-tagged fill buffers
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US8397130B2 (en) * 2008-11-26 2013-03-12 Arizona Board Of Regents For And On Behalf Of Arizona State University Circuits and methods for detection of soft errors in cache memories
US8271732B2 (en) * 2008-12-04 2012-09-18 Intel Corporation System and method to reduce power consumption by partially disabling cache memory
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
EP3087490A1 (en) * 2013-12-23 2016-11-02 Intel Corporation Instruction and logic for memory access in a clustered wide-execution machine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011227880A (ja) 2010-04-22 2011-11-10 Arm Ltd プレロード命令制御
US20110271057A1 (en) 2010-05-03 2011-11-03 Oracle International Corporation Cache access filtering for processors without secondary miss detection

Also Published As

Publication number Publication date
KR20150079408A (ko) 2015-07-08
US20150186292A1 (en) 2015-07-02
US9418018B2 (en) 2016-08-16

Similar Documents

Publication Publication Date Title
KR102268601B1 (ko) 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템
US10176099B2 (en) Using data pattern to mark cache lines as invalid
TWI514275B (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
US9311239B2 (en) Power efficient level one data cache access with pre-validated tags
US9471494B2 (en) Method and apparatus for cache line write back operation
KR101839479B1 (ko) 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들
US20090006803A1 (en) L2 Cache/Nest Address Translation
EP2710472B1 (en) Memory with metadata stored in a portion of the memory pages
US7680985B2 (en) Method and apparatus for accessing a split cache directory
US10831675B2 (en) Adaptive tablewalk translation storage buffer predictor
KR101787851B1 (ko) 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법
US9092346B2 (en) Speculative cache modification
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
TW201351145A (zh) 指令快取的減少耗能
WO2017172240A1 (en) Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
US9183161B2 (en) Apparatus and method for page walk extension for enhanced security checks
EP3736700A1 (en) Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory
US20190370038A1 (en) Apparatus and method supporting code optimization
US10261909B2 (en) Speculative cache modification
WO2018001528A1 (en) Apparatus and methods to manage memory side cache eviction
US11693780B2 (en) System, method, and apparatus for enhanced pointer identification and prefetching

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right