KR20220025040A - 캐시 시스템 및 캐시 또는 캐시 세트 동기화 회로 - Google Patents

캐시 시스템 및 캐시 또는 캐시 세트 동기화 회로 Download PDF

Info

Publication number
KR20220025040A
KR20220025040A KR1020227003046A KR20227003046A KR20220025040A KR 20220025040 A KR20220025040 A KR 20220025040A KR 1020227003046 A KR1020227003046 A KR 1020227003046A KR 20227003046 A KR20227003046 A KR 20227003046A KR 20220025040 A KR20220025040 A KR 20220025040A
Authority
KR
South Korea
Prior art keywords
cache
execution
type
processor
speculative
Prior art date
Application number
KR1020227003046A
Other languages
English (en)
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 KR20220025040A publication Critical patent/KR20220025040A/ko

Links

Images

Classifications

    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • 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/30098Register arrangements
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

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)

Abstract

캐시 시스템은, 제1 캐시, 제2 캐시, 및 프로세서의 실행 유형에 따라 상기 제1 캐시와 상기 제2 캐시를 제어하도록 결합된 논리 회로를 포함한다. 프로세서의 실행 유형이 명령어의 비-추측 실행을 나타내는 제1 유형이고, 상기 제1 캐시가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 상기 논리 회로는 상기 제1 캐시에 캐싱된 내용의 일부를 상기 제2 캐시에 복사하도록 구성된다. 상기 캐시 시스템은 구성 가능한 데이터 비트를 포함할 수 있다. 상기 논리 회로는 상기 비트에 따라 상기 캐시를 제어하도록 결합될 수 있다. 대안적으로, 상기 캐시는 캐시 세트를 포함할 수 있다. 상기 캐시는 상기 캐시 세트와 각각 연관된 레지스터를 더 포함할 수 있다. 상기 논리 회로는 상기 레지스터에 따라 상기 캐시 세트를 제어하도록 결합될 수 있다.

Description

캐시 시스템 및 캐시 또는 캐시 세트 동기화 회로
관련 출원
본 출원은 미국 특허 출원 번호 16/528,479(출원일: 2019년 7월 31일, 발명의 명칭: "CACHE SYSTEMS AND CIRCUITS FOR SYNCING CACHES OR CACHE SETS", 전체 내용이 본 명세서에 기재된 것처럼 병합됨)의 우선권을 주장한다.
기술 분야
본 명세서에 개시된 적어도 일부 실시형태는 일반적으로 캐시 아키텍처에 관한 것으로, 보다 상세하게는 컴퓨터 프로세서에 의한 주 실행(main execution)과 추측 실행(speculative execution)을 위한 캐시 아키텍처에 관한 것이지만 이로 제한되지는 않는다.
캐시는 프로세서가 캐시에 저장된 데이터에 액세스할 수 있도록 주 메모리보다 프로세서에 더 가까이에 데이터를 저장하는 메모리 구성요소이다. 데이터는 주 메모리의 데이터에 더 이른 계산 또는 더 일찍 액세스한 결과로서 캐시에 저장될 수 있다. 캐시 히트(cache hit)는 메모리 어드레스를 사용하여 프로세서가 요청한 데이터를 캐시에서 찾을 수 있는 경우 발생하는 반면, 캐시 미스(cache miss)는 데이터를 찾을 수 없는 경우 발생한다.
일반적으로 캐시는 프로세서에서 최근에 사용한 데이터를 보유하는 메모리이다. 캐시에 배치된 메모리 블록은 배치 정책에 따라 캐시 라인으로 제한된다. 3개의 일반적으로 알려진 배치 정책, 즉 직접 매핑 정책, 완전 연관 정책 및 세트 연관 정책이 있다. 직접 매핑형 캐시 구조에서 캐시는 세트당 하나의 캐시 라인이 있는 다수의 세트로 구성된다. 메모리 블록의 어드레스에 기초하여 메모리의 블록은 단일 캐시 라인만을 차지할 수 있다. 직접 매핑형 캐시에서는 캐시를 (n*1) 열 행렬로 설계할 수 있다. 완전 연관형 캐시 구조에서는 캐시를 다수의 캐시 라인이 있는 단일 캐시 세트로 구성한다. 메모리의 블록은 단일 캐시 세트의 캐시 라인 중 임의의 캐시 라인을 차지할 수 있다. 완전 연관형 구조의 캐시는 (1*m) 행 행렬로 설계될 수 있다.
세트 연관 캐시는 직접 매핑형 캐시와 완전 연관형 캐시 사이의 중간 구조를 가진 중간 설계 캐시이다. 세트 연관형 캐시는 (n*m) 행렬로 설계될 수 있고, 여기서는 n도 m도 1이 아니다. 캐시는 n개의 캐시 세트로 나뉘며, 각 세트는 m개의 캐시 라인을 포함한다. 메모리 블록은 캐시 세트에 매핑된 다음 세트의 임의의 캐시 라인에 배치될 수 있다. 세트 연관형 캐시는 세트 연관 레벨의 연속성을 고려할 때 직접 매핑형 구조에서부터 완전 연관형 구조까지의 캐시의 범위를 포함할 수 있다. 예를 들어, 직접 매핑형 캐시는 일방향 세트 연관형 캐시로 설명될 수도 있고, m개의 블록이 있는 완전 연관형 캐시는 m 방향 세트 연관형 캐시로 설명될 수 있다. 직접 매핑형 캐시, 양방향 세트 연관형 캐시 및 4방향 세트 연관형 캐시가 캐시 시스템에서 일반적이다.
추측 실행은 프로세서가 하나 이상의 명령어를 실행할지 여부에 대한 결정 결과를 이용 가능하기 전에 특정 조건 하에서 이러한 명령어를 실행할 필요가 있다는 추측에 기초하여 하나 이상의 명령어를 실행하는 컴퓨팅 기술이다.
컴퓨팅 시스템의 메모리 어드레스는 컴퓨팅 시스템의 메모리 위치를 식별한다. 메모리 어드레스는 일반적으로 부호 없는 정수로 표시되고 조작되는 고정 길이 숫자 시퀀스이다. 숫자 또는 비트 시퀀스의 길이는 메모리 어드레스의 폭으로 간주될 수 있다. 메모리 어드레스는 명령어 포인터(또는 프로그램 카운터) 및 메모리 어드레스 레지스터와 같은 중앙 처리 유닛(CPU)의 특정 구조에서 사용될 수 있다. 이러한 CPU 구조의 크기 또는 폭은 일반적으로 이러한 CPU에서 사용되는 메모리 어드레스의 길이를 결정한다.
실시형태는 동일한 참조 부호가 유사한 요소를 나타내는 첨부 도면을 참조하여 본 발명을 제한하는 것이 아니라 본 발명을 예시하는 방식으로 제시된다.
도 1a 내지 도 1e는 본 발명의 일부 실시형태에 따라 캐시의 동작을 제어하기 위해 실행 유형과 함께 사용될 수 있는 다수의 부분으로 메모리 어드레스를 분할하는 다양한 방식을 도시한다.
도 2, 도 3a 및 도 3b는 본 발명의 일부 실시형태에 따라 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시하며, 각각의 컴퓨팅 디바이스는 제1 유형과 제2 유형의 실행을 위해 상호 교환 가능한 캐시를 갖는 캐시 시스템을 포함하는 것을 도시한다.
도 4, 도 5a, 및 도 5b는 본 발명의 일부 실시형태에 따라 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시하며, 각각의 컴퓨팅 디바이스는 구체적으로 주 유형과 추측 유형의 실행을 위해 상호 교환 가능한 캐시를 갖는 캐시 시스템을 포함하는 것을 도시한다.
도 6, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a, 및 도 9b는 본 발명의 일부 실시형태에 따라 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시하며, 각각의 컴퓨팅 디바이스는 제1 유형과 제2 유형의 실행(예를 들어, 주 유형과 추측 유형의 실행)을 위한 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 포함하는 것을 도시한다.
도 10은 본 발명의 일부 실시형태에 따라 구체적으로 주 유형과 추측 유형의 실행을 위해 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 포함하는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
도 11a 및 도 11b는 본 발명의 일부 실시형태에 따라 섀도우 캐시에서 내용의 수락(acceptance)을 준비하기 위해 주 캐시에 캐싱된 내용을 저장하기 위해 주 캐시와 섀도우 캐시 사이의 내용을 동기화하기 위한 배경 동기화 회로부를 도시한다.
도 12는 본 발명의 일부 실시형태에 따라 도 11a 및 도 11b의 예시적인 동기화 회로부의 예시적인 동작을 도시한다.
도 13, 도 14a, 도 14b, 도 14c, 도 15a, 도 15b, 도 15c, 및 도 15d는 본 발명의 일부 실시형태에 따라 추측 실행을 가속화하기 위해 예비 캐시 세트를 포함하는 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
도 16 및 도 17은 본 발명의 일부 실시형태에 따라 프로세서에 의한 상이한 유형의 실행(예를 들어, 추측 실행과 비-추측 실행)을 위해 확장된 태그를 이용하는 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
도 18은 본 발명의 일부 실시형태에 따라 물리적 캐시 세트 출력을 논리적 캐시 세트 출력에 매핑하는 회로를 이용하는 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
도 19, 도 20, 및 도 21은 본 발명의 일부 실시형태에 따라 물리적 캐시 세트 출력을 논리적 캐시 세트 출력에 매핑하기 위해 도 18에 도시된 회로를 이용하는 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
도 22 및 도 23은 본 발명의 일부 실시형태에 따라 프로세서에 의한 추측 실행과 비-추측 실행을 위해 상호 교환 가능한 캐시 세트를 사용하기 위한 방법을 도시한다.
본 발명은 연결된 프로세서에 의한 상이한 실행 유형과 상호 교환 가능한 다수의 캐시 또는 캐시의 캐시 세트를 사용하는 기술을 포함한다. 실행 유형은 추측 실행 스레드와 비-추측 실행 스레드를 포함할 수 있다. 비-추측 실행은 주 실행 또는 일반 실행이라고 지칭될 수 있다.
보안을 강화하기 위해 프로세서가 명령어의 조건부 추측 실행을 수행할 때 프로세서는 명령어의 추측 실행 동안 섀도우 캐시를 사용하도록 구성될 수 있고, 여기서 섀도우 캐시는 명령어의 주 실행 또는 일반 실행 동안 사용되는 주 캐시와 분리된다. 보안을 향상시키기 위해 섀도우 캐시를 사용하는 일부 기술은 미국 특허 출원 번호 16/028,930(출원일: 2018년 7월 6일, 발명의 명칭: "Shadow Cache for Securing Conditional Speculative Instruction Execution", 전체 내용이 본 명세서에 기재된 것처럼 병합됨)에서 찾아볼 수 있다. 본 발명은 캐시를 섀도우 캐시 또는 주 캐시로서 동적으로 구성하고; 통합된 캐시 자원 세트를 섀도우 캐시 또는 주 캐시용으로 동적으로 할당할 수 있고; 할당을 명령어 실행 동안 변경할 수 있는 기술을 포함한다.
일부 실시형태에서, 시스템은 메모리 시스템(예를 들어, 주 메모리를 포함함), 프로세서, 및 프로세서와 메모리 시스템 사이에 결합된 캐시 시스템을 포함할 수 있다. 캐시 시스템은 캐시 세트를 가질 수 있다. 그리고, 캐시 세트의 캐시는 다수의 방식으로 설계될 수 있다. 예를 들어, 캐시 세트의 캐시는 (물리적 또는 논리적 캐시 세트 연관성을 포함할 수 있는) 캐시 세트 연관성을 통해 캐시 세트를 포함할 수 있다.
일부 실시형태에서, 시스템의 캐시는 프로세서에 의한 명령어의 제1 실행 유형에 사용하도록 구성된 상태와, 프로세서에 의한 명령어의 제2 실행 유형에 사용하도록 구성된 상태 사이에서 변경될 수 있다. 제1 유형은 프로세서에 의한 명령어의 비-추측 실행일 수 있다. 제2 유형은 프로세서에 의한 명령어의 추측 실행일 수 있다.
일부 실시형태에서, 캐시의 캐시 세트는 프로세서에 의한 명령어의 제1 실행 유형에 사용하도록 구성된 상태와, 프로세서에 의한 명령어의 제2 실행 유형에 사용하도록 구성된 상태 사이에서 변경될 수 있다. 제1 유형은 프로세서에 의한 명령어의 비-추측 실행일 수 있다. 그리고, 제2 유형은 프로세서에 의한 명령어의 추측 실행일 수 있다.
일부 실시형태에서, 추측 실행은 프로세서가 하나 이상의 명령어를 실행할지 여부에 대한 결정 결과가 이용 가능하기 전에 일부 조건 하에서 이러한 명령어를 실행할 필요가 있다는 추측에 기초하여 하나 이상의 명령어를 실행하는 경우이다. 비-추측 실행(또는 주 실행 또는 일반 실행)은 명령어의 프로그램 시퀀스에 따라 순차로 명령어를 실행하는 경우이다.
일부 실시형태에서, 시스템의 캐시 세트는 적어도 제1 캐시와 제2 캐시를 포함할 수 있다. 이러한 예에서, 시스템은 프로세서로부터 판독 커맨드 또는 기입 커맨드를 수신하도록 구성된 커맨드 버스를 포함할 수 있다. 시스템은 또한 판독 커맨드 또는 기입 커맨드에 대해 메모리에 액세스하기 위해 프로세서로부터 메모리 어드레스를 수신하도록 구성된 어드레스 버스를 포함할 수 있다. 그리고, 프로세서가 판독하기 위한 데이터를 프로세서에 전달하고; 메모리에 기입될 데이터를 프로세서로부터 수신하도록 구성된 데이터 버스가 포함될 수 있다. 프로세서로부터 메모리 액세스 요청은 커맨드 버스, 어드레스 버스 및 데이터 버스로 정의될 수 있다.
일부 실시형태에서, 공통 커맨드 버스와 어드레스 버스는 본 명세서에 설명된 커맨드 버스와 어드레스 버스를 대체할 수 있다. 또한, 이러한 실시형태에서, 공통 커맨드 버스와 어드레스 버스에 대한 공통 연결은 본 명세서에서 설명된 커맨드 버스와 어드레스 버스에 대한 각각의 연결을 대체할 수 있다.
시스템은 또한 프로세서로부터 실행 유형을 수신하도록 구성된 실행 유형 신호 라인을 포함할 수 있다. 실행 유형은 일반 또는 비-추측 실행의 지시이거나 추측 실행의 지시일 수 있다.
시스템은 또한 비-추측 실행과 추측 실행과 관련하여 제1 캐시와 제2 캐시의 사용을 변경하기 위해 제1 상태(예를 들어, "0") 또는 제2 상태(예를 들어, "1)로 설정되도록 구성된 구성 가능한 데이터 비트를 더 포함할 수 있다.
시스템은 또한 구성 가능한 데이터 비트가 제1 상태로 설정되고 실행 유형 신호 라인이 비-추측 실행의 지시를 수신할 때 프로세서로부터의 메모리 액세스 요청을 위해 제1 캐시를 선택하도록 구성된 논리 회로를 더 포함할 수 있다. 논리 회로는 또한 구성 가능한 데이터 비트가 제1 상태로 설정되고 실행 유형 신호 라인이 추측 실행의 지시를 수신할 때 프로세서로부터 메모리 액세스 요청을 위해 제2 캐시를 선택하도록 구성될 수 있다. 논리 회로는 또한 구성 가능한 데이터 비트가 제2 상태로 설정되고 실행 유형 신호 라인이 비-추측 실행의 지시를 수신할 때 프로세서로부터 메모리 액세스 요청을 위해 제2 캐시를 선택하도록 구성될 수 있다. 논리 회로는 또한 구성 가능한 데이터 비트가 제2 상태로 설정되고 실행 유형 신호 라인이 추측 실행의 지시를 수신할 때 프로세서로부터 메모리 액세스 요청을 위해 제1 캐시를 선택하도록 구성될 수 있다.
시스템은 또한 프로세서로부터 추측 상태를 수신하도록 구성된 추측 상태 신호 라인을 포함할 수 있다. 추측 상태는, 초기에 추측 실행에 의해 실행되고 이후에 추측 상태가 조건의 확인일 때 비-추측 실행에 의해 실행되는 내포된 명령어(nested instruction)가 있는 조건의 확인(confirmation) 또는 거부(rejection)일 수 있다.
논리 회로는 또한 실행 유형 신호 라인에 의해 수신된 신호가 비-추측 실행의 지시로부터 추측 실행의 지시로 변경될 때 구성 가능한 데이터 비트의 제1 상태로 식별된 바와 같이 제2 캐시를 선택하고 구성 가능한 데이터 비트의 제1 상태로 식별된 바와 같이 제1 캐시의 사용 또는 변경을 제한하도록 구성될 수 있다.
논리 회로는 또한 실행 유형 신호 라인이 비-추측 실행의 지시를 수신할 때 구성 가능한 데이터 비트를 제1 상태로부터 제2 상태로 변경하고 메모리 액세스 요청을 위해 제2 캐시를 선택하도록 구성될 수 있다. 이는 실행 유형 신호 라인에 의해 수신된 신호가 추측 실행의 지시로부터 비-추측 실행의 지시로 변경될 때 그리고 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 확인일 때 발생할 수 있다.
논리 회로는 또한 실행 유형 신호 라인이 비-추측 실행의 지시를 수신할 때 구성 가능한 데이터 비트의 제1 상태를 유지하고 메모리 액세스 요청을 위해 제1 캐시를 선택하도록 구성될 수 있다. 이는 실행 유형 신호 라인에 의해 수신된 신호가 추측 실행의 지시로부터 비-추측 실행의 지시로 변경될 때 그리고 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 거부일 때 발생할 수 있다. 또한, 논리 회로는 실행 유형 신호 라인에 의해 수신된 신호가 추측 실행의 지시로부터 비-추측 실행의 지시로 변경될 때 그리고 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 거부일 때 제2 캐시의 내용을 무효화하고 폐기하도록 구성될 수 있다.
시스템은 또한 판독 커맨드 또는 기입 커맨드를 캐시 시스템에 연결된 주 메모리에 전달하도록 구성된 제2 커맨드 버스를 포함할 수 있다. 판독 커맨드 또는 기입 커맨드는 캐시 시스템에 의해 프로세서로부터 수신될 수 있다. 시스템은 또한 메모리 어드레스를 주 메모리에 전달하도록 구성된 제2 어드레스 버스를 포함할 수 있다. 메모리 어드레스는 캐시 시스템에 의해 프로세서로부터 수신될 수 있다. 시스템은 또한 메모리에 기입될 데이터를 주 메모리에 전달하고, 프로세서에 의해 판독되기 위해 프로세서에 전달될 데이터를 주 메모리로부터 수신하도록 구성된 제2 데이터 버스를 포함할 수 있다. 캐시 시스템으로부터 주 메모리에 대한 메모리 액세스 요청은 제2 커맨드 버스, 제2 어드레스 버스 및 제2 데이터 버스로 정의될 수 있다.
언급한 바와 같이 캐시 세트의 캐시는 다수의 방식으로 설계될 수 있으며, 이들 방식 중 하나는 (물리적 또는 논리적 캐시 세트 연관성을 포함할 수 있는) 캐시 세트 연관성을 통해 캐시 세트로 분할된 세트의 캐시를 포함한다. 세트 연관성을 통한 캐시 설계의 이점은 세트 연관성이 있는 단일 캐시가 단일 캐시 내에 다수의 캐시 세트를 가질 수 있어서, 전체 캐시를 할당하지 않고 단일 캐시의 다른 부분을 프로세서에서 사용하도록 할당할 수 있다는 것이다. 따라서, 단일 캐시를 보다 효율적으로 사용할 수 있다. 이는 프로세서가 다수의 유형의 스레드를 실행하거나 다수의 실행 유형을 갖는 경우에 특히 그렇다. 예를 들어, 단일 캐시 내의 캐시 세트는 상호 교환 가능한 캐시를 사용하는 대신 다른 실행 유형과 상호 교환 가능하게 사용될 수 있다. 캐시 분할의 일반적인 예로는 캐시 내에 2개, 4개 또는 8개의 캐시 세트를 포함한다.
또한 세트 연관성 캐시 설계는 프로세서가 주 스레드와 추측 스레드를 실행할 때 다른 일반적인 캐시 설계보다 유리하다. 추측 실행은 일반 또는 비-추측 실행보다 더 적은 추가 캐시 용량을 사용할 수 있으므로, 선택 메커니즘은 캐시 세트 레벨에서 구현될 수 있어서 추측 실행을 위해 전체 캐시보다 적은 공간(즉, 캐시의 일부)을 예비할 수 있다. 세트 연관성이 있는 캐시는 세트 내에서 다수의 캐시 세트(예를 들어, 캐시 내에 2개, 4개 또는 8개의 캐시 세트로 분할)를 가질 수 있다. 예를 들어, 도 7a에 도시된 바와 같이, 캐시 시스템의 캐시에는 적어도 4개의 캐시 세트(예를 들어, 캐시 세트(702, 704 및 706) 참조)가 존재한다. 일반적으로 캐시 용량의 대부분을 요구하는 일반 또는 비-추측 실행에는 더 많은 수의 캐시 세트가 위임될 수 있다. 그리고, 비-추측 실행에 대한 수정을 포함하는 추측 실행은 일반적으로 비-추측 실행보다 더 적은 명령어를 포함하기 때문에 이러한 추측 실행은 하나의 캐시 세트 또는 더 적은 수의 캐시 세트를 사용할 수 있다.
도 6 또는 도 10에 도시된 바와 같이, 캐시 시스템은 프로세서에 대한 다수의 캐시(예를 들어, 도 6에 도시된 캐시(602a, 602b 및 602c))를 포함할 수 있고, 캐시 시스템의 캐시는 캐시 시스템의 조직을 더 분할하기 위해 캐시 세트(예를 들어, 도 6에 도시된 캐시 세트(610a, 610b 및 610c))를 포함할 수 있다. 이러한 예는 세트 연관성이 있는 캐시 시스템을 포함한다.
캐시의 캐시 세트 레벨에서, 제1 캐시 세트(예를 들어, 도 7a, 도 8a 및 도 9a에 도시된 캐시 세트(702) 참조)는 프로세서에 의한 실행의 제1 유형 또는 제2 유형에 사용할 내용을 보유할 수 있다. 예를 들어, 제1 캐시 세트는 프로세서에 의한 비-추측 실행 유형 또는 추측 실행 유형에 사용하기 위한 내용을 보유할 수 있다. 또한, 제2 캐시 세트(예를 들어, 도 7a, 도 8a 및 도 9a에 도시된 캐시 세트(704 또는 706) 참조)는 프로세서에 의한 실행의 제1 유형 또는 제2 유형에 사용하기 위한 내용을 보유할 수 있다.
예를 들어, 제1 시간 인스턴스에서 제1 캐시 세트는 일반 또는 비-추측 실행에 사용되고, 제2 캐시 세트는 추측 실행에 사용된다. 제2 시간 인스턴스에서, 제2 캐시 세트는 일반 또는 비-추측 실행에 사용되고, 제1 캐시 세트는 추측 실행에 사용된다. 비-추측 실행과 추측 실행을 위해 캐시 세트를 위임/전환하는 방식은 메모리 어드레스 태그 내부 또는 외부의 캐시 세트 인덱스(cache set index)를 통해, 또는 캐시 세트 인덱스(예를 들어, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b 참조)와는 다른 메모리 어드레스 태그 내의 캐시 세트 지시자(indicator)를 통해 세트 연관성을 사용할 수 있다.
적어도 도 1b, 도 1c, 도 1d, 도 1e, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 도시된 바와 같이, 캐시 세트 인덱스 또는 캐시 세트 지시자는 캐시 세트 어드레싱 및 연관성을 구현하기 위해 캐시 블록 어드레싱에 포함될 수 있다. 캐시 블록 어드레싱은 메모리(예를 들어, 컴퓨팅 디바이스의 설계에 따라 SRAM, DRAM 등, 프로세서 레지스터의 설계에 따라 캐시 시스템, 기타 중간 메모리, 주 메모리 등)에 저장될 수 있다.
도 6, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a, 도 9b 및 도 10에 도시된 바와 같이, 캐시의 각 캐시 세트(예를 들어, 레벨 1, 레벨 2 또는 레벨 3 캐시)는 프로세서의 비-추측 실행과 추측 실행을 위해 (또는 일반적으로 프로세서의 제1 유형과 제2 실행의 유형을 위해) 캐시 세트의 교환(swapping)을 구현하기 위해 각각의 레지스터 사이에서 교환될 수 있는 세트 인덱스(예를 들어, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 도시된 세트 인덱스(722, 724, 726 및 728) 참조) 중 하나와 각각의 레지스터(예를 들어, 도 6 및 도 10에 도시된 레지스터(610a, 610b 또는 610c) 또는 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 도시된 레지스터(712, 714 또는 716))를 갖는다. 예를 들어, 도 7a 및 도 7b를 참조하면, 제1 시간 기간에 제1 실행 유형은 캐시 세트(702 및 704)를 사용할 수 있고, 제2 실행 유형은 캐시 세트(706)를 사용할 수 있다. 그런 다음 제2 시간 기간에 제1 실행 유형은 캐시 세트(704 및 706)를 사용할 수 있고, 제2 실행 유형은 캐시 세트(702)를 사용할 수 있다. 이것은 캐시 세트의 단 하나의 예시적인 사용례일 뿐이라는 것이 주목되고, 미리 결정된 제한이 없는 임의의 캐시 세트는 레지스터에 저장된 세트 인덱스 또는 지시자 또는 시간 기간에 따라 제1 또는 제2 실행 유형에 의해 사용될 수 있음을 이해해야 한다.
일부 실시형태에서, 소정 개수의 캐시 세트가 제1 실행 유형(예를 들어, 비-추측 실행)에서 사용하기 위해 초기에 할당될 수 있다. 제2 실행 유형(예를 들어, 추측 실행) 동안, 제1 실행 유형에 초기에 사용된 캐시 세트 중 하나(예를 들어, 예비된 캐시 세트)가 제2 실행 유형에 사용될 수 있다. 본질적으로, 제2 실행 유형에 할당된 캐시 세트는 초기에 사용 대기 중인 해제된(free) 캐시 세트이거나, 또는 제1 실행 유형에 사용된 소정 개수의 캐시 세트(예를 들어, 추가 제1 유형의 실행에서 더 이상 사용될 가능성이 적은 캐시 세트) 중에서 선택될 수 있다.
일반적으로, 일부 실시형태에서, 캐시 시스템은 복수의 캐시 세트를 포함한다. 복수의 캐시 세트는 제1 캐시 세트, 제2 캐시 세트, 및 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 복수의 레지스터는 제1 캐시 세트와 연관된 제1 레지스터, 및 제2 캐시 세트와 연관된 제2 레지스터를 포함할 수 있다. 캐시 시스템은 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 및 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부를 더 포함할 수 있다. 캐시 시스템은 또한 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로를 포함할 수 있다.
이러한 실시형태에서, 캐시 시스템은 프로세서와 메모리 시스템 사이에 결합되도록 구성될 수 있다. 그리고, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성(예를 들어, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 각각 도시된 세트 인덱스 생성(730, 732, 830, 832, 930 및 932) 참조)하도록 구성될 수 있다. 또한, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 또한, 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 메모리 어드레스와 연관된 메모리 시스템의 데이터 세트가 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 논리 회로는 데이터 세트를 캐싱하기 위해 제1 캐시 세트를 할당하고, 생성된 세트 인덱스를 제1 레지스터에 저장하도록 구성될 수 있다. 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트를 포함할 수 있다.
캐시 시스템은 또한 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부(예를 들어, 도 6 및 도 10에 도시된 연결부(604d) 참조)를 포함할 수 있다. 이러한 실시형태에서, 생성된 세트 인덱스는 실행 유형 신호 라인에 의해 식별된 유형에 더 기초하여 생성될 수 있다. 또한, 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트, 및 실행 유형 신호 라인에 의해 식별된 유형을 나타내는 비트를 포함할 수 있다(예를 들어, 생성된 세트 인덱스는 도 1e에 도시된 메모리 어드레스(102e)의 미리 결정된 비트 세그먼트, 및 실행 유형(110e)에서 실행 유형 신호 라인에 의해 식별된 유형을 나타내는 하나 이상의 비트를 포함하거나 이로부터 유도될 수 있다).
또한, 제1 및 제2 레지스터가 제1 상태에 있을 때 논리 회로는, 실행 유형이 제1 유형일 때, 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터가 제2 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때, 제1 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 이러한 예에서, 복수의 레지스터 각각은 세트 인덱스를 저장하도록 구성될 수 있고, 실행 유형이 제2 유형으로부터 제1 유형으로 변경될 때, 논리 회로는 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경하도록 구성될 수 있다.
일부 실시형태에서, 제1 유형은 프로세서에 의한 명령어의 비-추측 실행을 나타내도록 구성되고; 제2 유형은 프로세서에 의한 명령어의 추측 실행을 나타내도록 구성된다. 이러한 실시형태에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부(예를 들어, 도 10에 도시된 연결부(1002) 참조)를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다. 복수의 레지스터 각각은 세트 인덱스를 저장하도록 구성될 수 있고, 실행 유형이 제2 유형으로부터 제1 유형으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경(예를 들어, 도 7a와 도 7b 사이, 도 8a와 도 8b 사이, 및 도 9a와 도 9b 사이에 도시된 레지스터에 저장된 내용의 변경 참조)하도록 구성될 수 있다. 그리고, 실행 유형이 제2 유형으로부터 제1 유형으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경 없이 유지하도록 구성될 수 있다.
추가적으로, 본 명세서에 설명된 캐시 시스템(예를 들어, 캐시 시스템(200, 400, 600 및 1000))은 각각 배경 동기화 회로부를 포함하거나 배경 동기화 회로부(예를 들어, 도 11a 및 도 11b에 도시된 배경 동기화 회로부(1102) 참조)에 연결될 수 있다. 배경 동기화 회로부는 섀도우 캐시를 주 캐시로 재구성하고 및/또는 주 캐시를 섀도우 캐시로 재구성하기 전에 캐시 또는 캐시 세트를 동기화하도록 구성될 수 있다.
예를 들어, 초기에 추측 실행을 위해 위임된 캐시 또는 캐시 세트(예를 들어, 추측 실행을 위해 위임된 여분의 캐시 또는 예비 캐시 세트)의 내용은, 추측이 확인되면 추측 실행을 위해 초기에 위임된 캐시 또는 캐시 세트가 주 또는 비-추측 실행의 캐시 세트에 즉시 합류(join)할 수 있도록 (일반 실행의 캐시 내용을 갖도록) 일반 또는 비-추측 실행에 사용되는 대응하는 캐시 또는 캐시 세트와 동기화될 수 있다. 또한, 추측 실행을 위해 초기에 위임된 캐시 또는 캐시 세트에 대응하는 원래의 캐시 세트는 주 또는 비-추측 실행에 사용되는 캐시 세트 그룹으로부터 제거될 수 있다. 이러한 실시형태에서, 배경 동기화 회로부를 포함하는 회로와 같은 회로는 프로세서에 의한 캐시 사용에 대한 캐시 세트 동기화의 영향을 줄이기 위해 배경에서 캐시 또는 캐시 세트를 동기화하도록 구성될 수 있다. 또한, 캐시 또는 캐시 세트의 동기화는 추측이 중단될 때까지 또는 추측이 확인되어 동기화가 완료될 때까지 계속될 수 있다. 동기화는 메모리에 대한 동기화(예를 들어, 라이트백(writing back))를 선택적으로 포함할 수 있다.
일부 실시형태에서, 캐시 시스템은 제1 캐시와 제2 캐시뿐만 아니라 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부, 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 포함할 수 있다(예를 들어, 캐시 시스템(200 및 400) 참조). 이러한 캐시 시스템은 또한 실행 유형에 따라 제1 캐시와 제2 캐시를 제어하도록 결합된 논리 회로를 포함할 수 있고, 캐시 시스템은 프로세서와 메모리 시스템 사이에 결합되도록 구성될 수 있다. 또한, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터의 커맨드를 서비스하도록 구성되는 경우, 논리 회로는 제1 캐시에 캐싱된 내용의 일부를 제2 캐시로 복사하도록 구성될 수 있다(예를 들어, 동작(1202) 참조). 또한, 논리 회로는 커맨드 버스에서 수신된 현재 커맨드와 독립적으로 제1 캐시에 캐싱된 내용의 일부를 제2 캐시로 복사하도록 구성될 수 있다.
추가적으로, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터의 커맨드를 서비스하도록 구성되는 경우, 논리 회로는 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경되는 것에 응답하여 제2 캐시를 사용하여 커맨드 버스로부터의 후속 커맨드를 서비스하도록 구성될 수 있다(예를 들어, 동작(1208) 참조). 이러한 예에서, 논리 회로는 실행 유형이 제1 유형으로부터 제2 유형으로 변경된 후 후속 커맨드를 서비스하기 전에 제1 캐시로부터 제2 캐시로 내용의 일부의 동기화를 완료하도록 구성될 수 있다(예를 들어, 도 12 참조). 논리 회로는 또한 후속 커맨드를 서비스하는 동안 제1 캐시로부터 제2 캐시로 내용의 일부의 동기화를 계속하도록 구성될 수 있다(예를 들어, 동작(1210) 참조).
이러한 실시형태에서, 캐시 시스템은 또한 구성 가능한 데이터 비트를 포함할 수 있으며, 여기서 논리 회로는 구성 가능한 데이터 비트에 따라 제1 캐시와 제2 캐시를 제어하도록 추가로 결합된다. 또한, 이러한 실시형태에서, 캐시 시스템은 복수의 캐시 세트를 더 포함할 수 있다. 예를 들어, 제1 캐시와 제2 캐시는 함께 복수의 캐시 세트를 포함할 수 있고, 복수의 캐시 세트는 제1 캐시 세트와 제2 캐시 세트를 포함할 수 있다. 캐시 시스템은 또한 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 복수의 레지스터는 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함할 수 있다. 그리고, 이러한 실시형태에서, 논리 회로는 복수의 레지스터에 따라 복수의 캐시 세트를 제어하도록 더 결합될 수 있다.
일부 실시형태에서, 캐시 시스템은 제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트를 포함할 수 있다. 캐시 시스템은 또한 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 이러한 실시형태에서, 캐시 시스템은 제1 캐시와 제2 캐시를 포함하는 복수의 캐시를 포함할 수 있고, 제1 캐시와 제2 캐시는 함께 복수의 캐시 세트의 적어도 일부를 포함할 수 있다. 이러한 캐시 시스템은 또한 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부, 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부뿐만 아니라 실행 유형에 따라 복수의 캐시 세트를 제어하도록 결합된 논리 회로를 포함할 수 있다.
이러한 실시형태에서, 캐시 시스템은 프로세서와 메모리 시스템 사이에 결합되도록 구성될 수 있다. 그리고, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시 세트가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터의 커맨드를 서비스하도록 구성되는 경우, 논리 회로는 제1 캐시 세트에 캐싱된 내용의 일부를 제2 캐시 세트로 복사하도록 구성된다. 논리 회로는 또한 커맨드 버스에서 수신된 현재 커맨드와 독립적으로 제1 캐시 세트에 캐싱된 내용의 일부를 제2 캐시 세트로 복사하도록 구성될 수 있다.
또한, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시 세트가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터의 커맨드를 서비스하도록 구성되는 경우, 논리 회로는 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경된 것에 응답하여 제2 캐시 세트를 사용하여 커맨드 버스로부터 후속 커맨드를 서비스하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제1 유형으로부터 제2 유형으로 변경된 후 후속 커맨드를 서비스하기 전에 제1 캐시 세트로부터 제2 캐시 세트로 내용의 일부의 동기화를 완료하도록 구성될 수 있다. 논리 회로는 또한 후속 커맨드를 서비스하는 동안 제1 캐시 세트로부터 제2 캐시 세트로 내용의 일부의 동기화를 계속하도록 구성될 수 있다. 그리고, 논리 회로는 복수의 레지스터에 따라 복수의 캐시 세트를 제어하도록 더 결합될 수 있다.
추측 실행의 보안을 위해 섀도우 캐시를 사용하고, 섀도우 캐시의 내용을 수락할 준비를 하기 위해 주 캐시에 캐싱된 내용을 저장하기 위해 주 캐시와 섀도우 캐시 간의 내용을 동기화하는 것에 더하여, 예비 캐시 세트를 사용하여 추측 실행을 가속화할 수 있다. 또한, 예비 캐시 세트를 사용하여 섀도우 캐시를 사용하지 않고 추측 실행을 가속화할 수 있다. 예비 캐시 세트를 사용하면 섀도우 캐시를 구현하는 데 유용한데, 이는 섀도우 캐시로 사용되는 캐시 세트에 보유된 데이터는 유효화되어 일반 실행에 사용될 수 있고, 주 캐시로 사용되는 일부 캐시 세트는 섀도우 캐시로 사용될 준비가 되어 있지 않을 수 있기 때문이다. 따라서, 하나 이상의 캐시 세트를 예비 캐시 세트로 사용하면 캐시 세트 이용 가능성을 기다리는 것에 의한 지연을 방지할 수 있다. 다시 말해, 추측이 확인되면 섀도우 캐시로 사용되는 캐시 세트의 내용이 유효하고 최신 상태인 것으로 확인되고; 이에 따라 추측 실행을 위해 섀도우 캐시로 사용된 이전의 캐시 세트는 일반 실행에 사용된다. 그러나, 초기에 일반 캐시로 사용된 일부 캐시 세트는 후속 추측 실행에 사용할 준비가 되어 있지 않을 수 있다. 따라서, 하나 이상의 캐시 세트를 예비로 사용하면 캐시 세트 이용 가능성을 기다리는 것에 의한 지연을 방지하고 예측 실행을 가속화할 수 있다.
일부 실시형태에서, 일반 캐시의 캐시 세트로부터 섀도우 캐시의 대응하는 캐시 세트로의 동기화가 아직 완료되지 않은 경우, 일반 캐시의 캐시 세트는 그 다음 추측 실행에 사용하기 위해 즉시 해제될 수 없다. 이러한 상황에서, 예비 캐시 세트가 없다면 그 다음 추측 실행은 동기화가 완료되어 일반 캐시의 대응하는 캐시 세트가 해제될 때까지 기다려야 한다. 이것은 예비 캐시 세트가 유익하여 실시형태에 추가될 수 있는 단 하나의 예일 뿐이다. 그리고, 일반 캐시의 캐시 세트가 즉시 해제될 수 없어서 예비 캐시 세트를 사용할 수 있는 많은 다른 상황이 있다.
또한, 일부 실시형태에서, 추측 실행은 일반 캐시에서 사용되는 캐시 세트에 캐싱된 메모리 영역과 중복되지 않는 메모리 영역을 참조할 수 있다. 추측 실행의 결과를 수락한 결과, 섀도우 캐시와 일반 캐시에 있는 캐시 세트는 모두 일반 캐시에 있을 수 있다. 이것은 캐시 시스템이 그 다음 추측 실행을 지원하기 위해 캐시 세트를 해제하는 데 시간이 걸리기 때문에 지연을 야기할 수 있다. 캐시 세트를 해제하기 위해 캐시 시스템은 최소 사용 캐시 세트와 같은 캐시 세트를 식별하고, 캐시 세트를 메모리 시스템과 동기화할 수 있다. 캐시에 메모리 시스템보다 최신 데이터가 있는 경우 데이터를 메모리 시스템에 기입할 수 있다.
추가적으로, 예비 캐시 세트를 사용하는 시스템은 또한 도 11a 및 도 11b에 도시된 배경 동기화 회로부(1102)와 같은 배경 동기화 회로부를 사용할 수 있다. 배경 동기화 회로부(1102)는 일부 실시형태에서 논리 회로(606 또는 1006)의 일부일 수 있다. 초기 추측이 확인되면 초기 추측에 사용된 캐시 세트를 전환하여 주 실행에 사용된 캐시 세트의 세트에 합류시킬 수 있다. 추측 실패의 경우에 사용되었던 이전 주 실행의 캐시 세트를 사용하는 대신 그 다음 추측 실행을 위해 예비 캐시 세트를 즉시 이용할 수 있다. 또한, 예비 캐시 세트는 배경 동기화 회로부를 통해 그 다음 추측 실행을 위해 업데이트될 수 있다. 그리고, 배경 동기화로 인해 추측 실행에 현재 사용된 캐시 세트가 일반 실행을 위해 수락될 준비가 되면 예비 캐시 세트를 사용할 준비가 될 수 있다. 이러한 방식으로 그 다음 추측 실행을 위해 그 다음 캐시 세트의 사용을 기다리는 지연이 없다. 그 다음 추측 실행을 준비하기 위해 예비 캐시 세트는 그 다음 추측 실행에서 사용될 가능성이 있는 일반 캐시 세트 또는 시스템에서 최소 사용된 캐시 세트와 동기화될 수 있다.
섀도우 캐시를 사용하고, 주 캐시와 섀도우 캐시 간에 내용을 동기화하고, 예비 캐시 세트를 사용하는 것에 더하여, 확장된 태그를 사용하면 프로세서에 의한 다양한 실행 유형(예를 들어, 추측 실행과 비-추측 실행)을 위해 상호 교환 가능한 캐시 및 캐시 세트의 사용을 향상시킬 수 있다. 확장된 태그를 사용하여 캐시 시스템 내에서 캐시 세트와 캐시 블록을 처리하는 많은 다른 방식이 있다. 두 가지 예시적인 방식은 도 16 및 도 17에 도시되어 있다.
일반적으로 캐시 세트와 캐시 블록은 메모리 어드레스를 통해 선택될 수 있다. 일부 예에서, 선택은 세트 연관성을 통해 이루어진다. 도 16 및 도 17의 두 예는 세트 연관성을 사용한다. 도 16에서, 세트 연관성은 암시적으로 정의된다(예를 들어, 주어진 실행 유형에 대해 어느 캐시 세트에 어느 태그가 있어야 하는지를 결정하는 데 사용될 수 있는 알고리즘을 통해 정의된다). 도 17에서, 세트 연관성은 메모리 어드레스의 캐시 세트 인덱스의 비트를 통해 구현된다. 또한, 도 16 및 도 17에 도시된 기능의 일부는 세트 연관성을 사용하지 않고 구현될 수 있다(그러나 이것은 도 16 및 도 17에는 도시되어 있지 않다).
도 16 및 도 17에 도시된 실시형태를 포함하는 일부 실시형태에서, 블록 인덱스는 캐시 세트 내의 특정 캐시 블록을 식별하기 위해 개별 캐시 세트 내의 어드레스로서 사용될 수 있다. 그리고, 확장된 태그는 캐시 세트의 어드레스로 사용될 수 있다. 메모리 어드레스의 블록 인덱스는 캐시 블록과, 이 캐시 블록과 관련된 태그를 얻기 위해 각 캐시 세트에 사용될 수 있다. 또한, 도 16 및 도 17에 도시된 바와 같이, 태그 비교 회로는 캐시 세트로부터 생성된 확장된 태그를, 메모리 어드레스와 현재 실행 유형으로부터 생성된 확장된 캐시 태그와 비교할 수 있다. 비교 결과는 캐시 히트 또는 미스일 수 있다. 확장된 태그의 구성은 캐시 세트 간에 최대 한번의 히트가 있음을 보장한다. 히트가 있는 경우, 선택된 캐시 세트의 캐시 블록이 출력을 제공한다. 히트가 없는 경우, 메모리 어드레스와 연관된 데이터는 임의의 캐시 세트에 캐싱되지도 않고 임의의 캐시 세트로부터 출력되지도 않는다. 요컨대, 도 16 내지 도 17에 도시된 확장된 태그는 캐시 세트를 선택하는 데 사용되고, 블록 인덱스는 캐시 세트 내에서 캐시 블록과 그 태그를 선택하는 데 사용된다.
또한, 도 17에 도시된 바와 같이, 시스템에서 태그와 캐시 세트 인덱스의 조합은 도 16에 도시된 바와 같이 단순히 태그를 사용하는 것과 다소 유사한 기능을 제공할 수 있다. 그러나, 도 17에서, 태그와 캐시 세트 인덱스를 분리함으로써, 캐시 세트는 캐시 세트 인덱스를 보유하기 위해 캐시 세트 레지스터와 연관될 수 있기 때문에 캐시 세트는 캐시 세트 인덱스의 중복 사본(redundant copy)을 저장할 필요가 없다. 반면, 도 16에서, 캐시 세트는 각 블록에 캐시 세트 지시자의 중복 사본을 저장할 필요가 없다. 그러나, 도 16에 도시된 실시형태에서 태그는 동일한 캐시 세트 지시자를 갖기 때문에, 지시자는 캐시 세트의 레지스터(예를 들어, 도 17에 도시된 캐시 세트 레지스터 참조)에 한번 저장될 수 있다. 캐시 세트 레지스터를 사용하는 이점은 캐시 세트 레지스터가 없이 태그를 구현하는 것에 비해 태그 길이가 더 짧을 수 있다는 것이다.
도 16 및 도 17에 도시된 실시형태 모두는 대응하는 캐시 세트가 상이한 실행 유형(예를 들어, 추측 실행 유형과 비-추측 실행 유형)을 구현하는데 사용될 수 있도록 실행 유형을 보유하도록 구성된 캐시 세트 레지스터를 갖는다. 그러나, 도 17에 도시된 실시형태는 실행 유형과 캐시 세트 인덱스를 보유하도록 추가로 구성된 레지스터를 가진다. 실행 유형이 캐시 세트 인덱스와 결합되어 확장된 캐시 세트 인덱스를 형성하는 경우 확장된 캐시 세트 인덱스를 사용하여 캐시 블록의 태그를 통한 어드레싱에 의존하지 않고 캐시 세트 중 하나를 선택할 수 있다. 또한, 선택된 캐시 세트의 태그가 히트 또는 미스를 결정하기 위해 어드레스의 태그와 비교될 때, 2단계 선택은 캐시 세트 인덱스를 사용하는 기존의 2단계 선택과 유사할 수 있고, 또는 다른 실행 유형에 대한 캐시 세트의 상호 교환을 지원하기 위해 확장된 태그와 결합하는 데 사용할 수 있다.
프로세서에 의한 상이한 실행 유형에 대해 상호 교환 가능한 캐시와 캐시 세트의 사용을 향상시키기 위해 본 명세서에 개시된 확장된 태그뿐만 아니라 다른 기술을 사용하는 것에 더하여, 캐시 시스템에 포함되거나 캐시 시스템에 연결된 회로는 캐시 하드웨어 시스템의 캐시 세트로부터의 물리적 출력을 각각 프로세서에 의한 일반 및 추측 실행을 위한 논리적 주 캐시와 논리적 섀도우 캐시에 매핑하는 데 사용될 수 있다. 매핑은 적어도 하나의 제어 레지스터(예를 들어, 물리적-논리적 세트 매핑(PLSM) 레지스터)에 따를 수 있다.
또한, 물리적 캐시 세트 출력을 논리적 캐시 세트 출력에 매핑하기 위해 매핑 회로(예를 들어, 도 18에 도시된 매핑 회로(1830))를 이용하는 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 갖는 컴퓨팅 디바이스가 본 명세서에 개시된다. 캐시 시스템에 결합된 프로세서는 추측 실행 스레드 및 비-추측 실행 스레드와 같은 두 가지 유형의 스레드를 실행할 수 있다. 추측 스레드는 아직 평가되지 않은 조건을 사용하여 추측에 따라 실행된다. 추측 스레드의 데이터는 논리적 섀도우 캐시에 있을 수 있다. 비-추측 스레드의 데이터는 논리적 주 또는 일반 캐시에 있을 수 있다. 이후, 조건을 평가한 결과가 이용 가능할 때, 시스템은 조건이 스레드의 실행을 요구할 때 추측 스레드를 실행하는 결과를 유지하거나 이를 제거할 수 있다. 매핑 회로를 사용하여 제어 레지스터의 내용을 변경함으로써 섀도우 캐시용 하드웨어 회로를 주 캐시용 하드웨어 회로로 용도 변경할 수 있다. 따라서, 예를 들어, 추측 스레드의 실행이 필요한 경우 주 캐시와 섀도우 캐시를 동기화할 필요가 없다.
일반적인 캐시에서 각 캐시 세트는 "인덱스(S)"/"블록 인덱스(L)"의 특정 값과 정적으로 연관된다. 본 명세서에 개시된 캐시 시스템에서, 임의의 인덱스 값(S/L)에 대해 그리고 주 캐시 또는 섀도우 캐시에 대해 임의의 목적을 위해 임의의 캐시 세트를 사용할 수 있다. 캐시 세트는 캐시 세트와 연관된 캐시 세트 레지스터의 데이터에 의해 사용 및 정의될 수 있다. 그런 다음 선택 논리를 사용하여 S/L의 인덱스 값에 기초하여 그리고 캐시 세트가 사용되는 방식에 기초하여 적절한 결과를 선택할 수 있다.
예를 들어, S/L = 00, 01, 10 및 11에 대해 주 캐시에 대해 초기에 4개의 캐시 세트, 즉 캐시 세트 0 내지 세트 3을 각각 사용할 수 있다. 제4 캐시 세트는 추측 실행이 01, 10 및 11로 정의된 캐시 세트를 변경하지 않는다는 가정 하에 S/L = 00에 대한 추측 캐시로 사용될 수 있다. 추측 실행의 결과가 필요한 경우, 매핑 데이터는 S/L = 00, 01, 10 및 11에 대한 주 캐시가 각각 제4 캐시 세트, 캐시 세트 1, 캐시 세트 2 및 캐시 세트 3에 대한 것임을 나타내도록 변경될 수 있다. 캐시 세트 0은 추측 실행에서 후속 사용을 위해 해제되거나 무효화될 수 있다. 그 다음 추측 실행이 캐시 세트(S/L)를 01로 변경할 필요가 있는 경우, 캐시 세트 0을 섀도우 캐시로 사용할 수 있다(예를 들어, 캐시 세트 1로부터 복사하고 S/L이 '01'인 어드레스의 내용을 조회하는 데 사용한다).
또한, 캐시 시스템과 프로세서는 미리 결정된 주 스레드와 미리 결정된 추측 스레드 사이를 단순히 왔다 갔다 전환하는 것이 아니다. 이후 의사 프로그램(pseudo-program)의 추측 실행을 고려한다.
명령어 A;
조건 = 참이면
명령어 B;
조건부 루프를 종료한다.
명령어 C; 및
명령어 D.
의사 프로그램의 경우 프로세서는 두 개의 스레드를 실행할 수 있다.
스레드 A:
명령어 A;
명령어 C; 및
명령어 D.
스레드 B:
명령어 A;
명령어 B;
명령어 C; 및
명령어 D.
명령어 B의 실행은 "조건 = 거짓"이 아닌 "조건 = 참"의 테스트 결과에 의존하기 때문에 추측 실행이다. 명령어 B의 실행은 조건이 참인 경우에만 필요하다. "조건 = 참"인 테스트 결과가 이용 가능할 때 스레드 A의 실행은 명령어 D에 도달하고, 스레드 A의 실행은 명령어 C에 도달할 수 있다. 테스트 결과가 명령어 B의 실행을 필요로 하는 경우, 스레드 B의 캐시 내용은 정확하고 스레드 A의 캐시 내용은 정확하지 않다. 그런 다음, 스레드 B에 따라 캐시에 이루어진 모든 변경 사항은 유지되어야 하며, 프로세서는 명령어 B를 실행하는 결과가 있는 캐시를 사용하여 명령어 C의 실행을 계속할 수 있고; 스레드 A가 종료된다. 스레드 B에 따른 변경 사항은 섀도우 캐시에 있으므로, 섀도우 캐시의 내용을 주 캐시로 수락되어야 한다. 테스트 결과가 명령어 B의 실행을 필요로 하지 않은 경우, 스레드 B의 결과는 폐기된다(예를 들어, 섀도우 캐시의 내용이 폐기되거나 무효화됨).
섀도우 캐시와 일반 캐시에 사용되는 캐시 세트는 매핑 회로와 제어 레지스터(예를 들어, 물리적-논리적 세트 매핑(PLSM) 레지스터)에 따라 교환되거나 변경될 수 있다. 일부 실시형태에서, 캐시 시스템은 캐시 히트 시 제1 물리적 출력을 제공하도록 구성된 제1 캐시 세트 및 캐시 히트 시 제2 물리적 출력을 제공하도록 구성된 제2 캐시 세트를 갖는 복수의 캐시 세트를 포함할 수 있다. 캐시 시스템은 또한 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 및 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부를 포함할 수 있다. 캐시 시스템은 또한 제어 레지스터, 및 이 제어 레지스터에 결합되고 제어 레지스터의 상태에 따라 복수의 캐시 세트의 각각의 물리적 출력을 제1 논리적 캐시와 제2 논리적 캐시에 매핑하기 위한 매핑 회로를 포함할 수 있다. 캐시 시스템은 프로세서와 메모리 시스템 사이에 결합되도록 구성될 수 있다.
어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때 그리고 제어 레지스터가 제1 상태에 있을 때 매핑 회로는 제1 실행 유형 동안 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하기 위해 프로세서에 의한 제1 실행 유형에 대해 제1 물리적 출력을 제1 논리적 캐시에 매핑하고; 제2 실행 유형 동안 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하기 위해 프로세서에 의한 제2 실행 유형을 위해 제2 물리적 출력을 제2 논리적 캐시에 매핑하도록 구성될 수 있다. 그리고, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때 그리고 제어 레지스터가 제2 상태에 있을 때, 매핑 회로는 제2 실행 유형 동안 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하기 위해 제1 물리적 출력을 제2 논리적 캐시에 매핑하고; 제1 실행 유형 동안 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하기 위해 제2 물리적 출력을 제1 논리적 캐시에 매핑하도록 구성된다.
일부 실시형태에서, 제1 논리적 캐시는 프로세서에 의한 비-추측 실행을 위한 일반 캐시이고, 제2 논리적 캐시는 프로세서에 의한 추측 실행을 위한 섀도우 캐시이다.
또한, 일부 실시형태에서, 캐시 시스템은 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 더 포함할 수 있다. 캐시 시스템은 또한 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로를 포함할 수 있다. 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성할 뿐만 아니라 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 그리고, 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태에서, 매핑 회로는 논리 회로의 일부이거나 논리 회로에 연결될 수 있고, 제어 레지스터의 상태는 복수의 캐시 세트 중 캐시 세트의 상태를 제어할 수 있다. 일부 실시형태에서, 제어 레지스터의 상태는 캐시 세트의 각 블록에 대한 유효 비트를 변경함으로써 복수의 캐시 세트 중 캐시 세트의 상태를 제어할 수 있다.
또한, 일부 예에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다. 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우(예를 들어, 추측 실행이 실행의 주 스레드가 되는 경우) 제어 레지스터를 통해 제1 및 제2 캐시 세트의 상태를 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제어 레지스터를 통해 제1 및 제2 캐시 세트의 상태를 변경 없이 유지하도록 구성될 수 있다.
일부 실시형태에서, 매핑 회로는 논리 회로의 일부이거나 논리 회로에 연결되고, 제어 레지스터의 상태는 매핑 회로를 통해 복수의 캐시 레지스터의 캐시 레지스터의 상태를 제어할 수 있다. 이러한 예에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낸다. 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제어 레지스터를 통해 제1 및 제2 레지스터의 상태를 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제어 레지스터를 통해 제1 및 제2 레지스터의 상태를 변경 없이 유지하도록 구성될 수 있다.
추가적으로, 본 발명은 섀도우 캐시 또는 주 캐시로서 각각 상호 교환 가능한 다수의 상호 교환 가능한 캐시를 사용하여 명령어의 추측 실행을 보호하는 기술을 포함한다. 추측 명령어 실행은 컴퓨팅 디바이스의 프로세서에서 발생할 수 있다. 프로세서는 두 가지 상이한 유형의 명령어 스레드를 실행할 수 있다. 스레드 중 하나는 (예를 들어, 아직 평가되지 않은 조건을 사용하여) 추측에 따라 실행될 수 있다. 추측 스레드의 데이터는 섀도우 캐시 역할을 하는 논리적 캐시에 있을 수 있다. 주 스레드의 데이터는 주 캐시 역할을 하는 논리적 캐시에 있을 수 있다. 이후, 조건을 평가하는 결과가 이용 가능하면 프로세서는 조건이 스레드의 실행을 필요로 하는 경우 추측 스레드의 실행 결과를 유지하거나 결과를 제거할 수 있다. 섀도우 캐시 역할을 하는 캐시용 하드웨어 회로는 레지스터의 내용을 변경함으로써 주 캐시용 하드웨어 회로로 용도 변경될 수 있다. 따라서, 추측 스레드의 실행이 필요한 경우 주 캐시와 섀도우 캐시를 동기화할 필요가 없다.
본 명세서에 개시된 기술은 또한 향상된 성능으로 주 캐시와 섀도우 캐시를 구현하는 데 사용될 수 있는 통합 캐시 구조의 사용에 관한 것이다. 통합 캐시 구조에서, 캐시 세트의 결과는 주 캐시에 있는 것으로 전환되고 섀도우 캐시에 있는 것으로 전환되도록 레지스터 세트를 사용하여 동적으로 재매핑될 수 있다. 추측 실행이 성공적이면, 섀도우 캐시와 함께 사용되는 캐시 세트는 정확한 데이터를 갖고, 주 캐시에 대응하는 캐시 세트로 재매핑될 수 있다. 이렇게 하면 섀도우 캐시와 주 캐시를 사용하는 다른 기술에서 사용하는 것처럼 섀도우 캐시로부터 주 캐시로 데이터를 복사할 필요가 없어진다.
일반적으로, 캐시는 다수의 블록 세트로 구성될 수 있다. 각 블록 세트는 다수의 블록을 가질 수 있으며, 각 블록은 다수의 바이트를 보유할 수 있다. 메모리 어드레스는 캐시에 액세스하기 위한 3개의 세그먼트, 즉 태그, 블록 인덱스(다수의 세트 내 세트를 어드레싱하기 위한 것일 수 있음) 및 캐시 블록(바이트 블록의 바이트를 어드레싱하기 위한 것일 수 있음)으로 분할될 수 있다. 세트의 각 블록에 대해 캐시는 메모리로부터 데이터를 저장할 뿐만 아니라 데이터가 로딩된 어드레스의 태그와, 블록의 내용이 유효한지 여부를 나타내는 필드를 더 저장할 수 있다. 블록 인덱스(예를 들어, 세트 ID)와 캐시 블록(예를 들어, 바이트 ID)을 사용하여 캐시로부터 데이터를 검색할 수 있다. 검색된 데이터의 태그는 어드레스의 태그 부분과 비교된다. 태그가 일치하는 경우 이 어드레스에 데이터가 캐싱되어 있음을 의미한다. 일치하지 않는 경우 캐시의 동일한 위치에 매핑된 다른 어드레스에 데이터가 캐싱되어 있음을 의미한다.
다수의 상호 교환 가능한 캐시를 사용하는 기술을 사용하면 상호 교환 가능한 캐시의 물리적 캐시 세트가 주 캐시나 섀도우 캐시로 고정 배선되지 않는다. 물리적 캐시 세트는 주 캐시 세트 또는 섀도우 캐시 세트로 사용될 수 있다. 그리고, 레지스터 세트를 사용하면 물리적 캐시 세트가 현재 주 캐시 세트로 사용되고 있는지 또는 섀도우 캐시 세트로 사용되고 있는지 여부를 지정할 수 있다. 일반적으로, 물리적 캐시 세트의 출력을 블록 인덱스(예를 들어, 세트 ID)와 주 상태 또는 섀도우 상태로 표시되는 대응하는 캐시 세트의 논리적 출력으로 변환하도록 매핑을 구성할 수 있다. 재매핑을 통해 이용 가능한 임의의 물리적 캐시를 섀도우 캐시로 사용할 수 있다.
일부 실시형태에서, 통합 캐시 아키텍처는 섀도우 캐시(예를 들어, 추측 캐시)를 주 캐시로 재매핑할 수 있고, 주 캐시를 추측 캐시로 재매핑할 수 있다. 설계는 주 캐시 또는 추측 캐시 또는 캐시 세트 간에 상호 교환될 수 있는 임의의 수의 캐시 또는 캐시 세트를 포함할 수 있음을 이해해야 한다.
주 캐시와 추측 캐시 또는 캐시 세트를 고정 배선하는 데 물리적인 구분이 없음을 이해해야 한다. 그리고, 일부 실시형태에서, 본 명세서에 설명된 논리 유닛을 고정 배선하는 데 물리적인 구분이 없다. 상호 교환 가능한 캐시 또는 캐시 세트는 다른 캐싱 용량 및 구조를 갖지 않는다는 것을 이해해야 한다. 그렇지 않으면, 이러한 캐시 또는 캐시 세트를 상호 교환 가능하지 않을 수 있다. 또한, 물리적 캐시 세트는 예를 들어 사전 결정 없이 주 또는 추측이 되도록 동적으로 구성될 수 있다.
또한, 상호 교환 가능성은 캐시 블록 레벨이 아니라 캐시 레벨에서 발생한다는 점을 이해해야 한다. 캐시 블록 레벨에서 상호 교환 가능성을 통해 주 캐시와 섀도우 캐시는 상이한 용량을 가질 수 있고; 이에 따라서 상호 교환 가능하지 않을 수 있다.
또한, 일부 실시형태에서, 프로세서에 의한 추측이 성공적이고, 캐시가 주 캐시로 사용되고 다른 캐시가 추측 또는 섀도우 캐시로 사용되는 경우, 주 캐시의 캐시 인덱스 블록과 연관된 유효 비트는 모두 무효를 나타내도록 설정된다(예를 들어, "0" 비트 값으로 무효를 나타내도록 설정된다). 이러한 실시형태에서, 추측 캐시의 모든 유효 비트의 초기 상태는 무효를 나타내지만, 추측이 성공적이었기 때문에 유효를 나타내도록 변경된다. 다시 말해, 주 캐시의 이전 상태는 무효화되고, 추측 캐시의 이전 상태는 무효로부터 유효로 설정되고, 주 스레드에 의해 액세스될 수 있다.
일부 실시형태에서, 주 캐시에 대한 PLSM 레지스터는 주 캐시를 나타내는 것에서부터 추측 캐시를 나타내는 것으로 변경될 수 있다. PLSM 레지스터에 의해 주 캐시를 나타내는 것에서부터 추측 캐시를 나타내는 것으로 변경하는 것은 PLSM 레지스터가 성공적인 추측 후 무효를 나타내는 주 캐시의 유효 비트를 수신하는 것에 의해 발생할 수 있다. 예를 들어, 성공적인 추측 후 그리고 제1 캐시가 초기에 주 캐시이고 제2 캐시가 초기에 추측 캐시인 경우, 비트 "0"의 무효 표시는 제1 캐시를 위한 3-비트 PLSM 레지스터의 최하위 비트를 대체할 수 있고, 이는 "011"을 "010"으로 (또는 "3"을 "2"로) 변경할 수 있다. 그리고, 제2 캐시를 위한 3-비트 PLSM 레지스터의 경우, 비트 "1"의 유효 표시는 PLSM 레지스터의 최하위 비트를 대체할 수 있고, 이는 "010"을 "011"로 (또는 "2"를 "3"으로) 변경할 수 있다. 따라서, 예로 제시된 바와 같이 초기에 제1 캐시(예를 들어, 주 캐시)용이고 초기에 제1 캐시를 선택하는 PLSM 레지스터는 성공적인 추측 후에 제2 캐시(예를 들어, 추측 캐시)를 선택하는 것으로 변경된다. 그리고, 예로 제시된 바와 같이, 초기에 제2 캐시(예를 들어, 추측 캐시)용이고 초기에 제2 캐시를 선택하는 PLSM 레지스터는 성공적인 추측 후 제1 캐시(예를 들어, 주 캐시)를 선택하는 것으로 변경된다. 이러한 설계를 사용하여, 프로세서의 주 스레드는 초기에 주 캐시로 지정된 캐시에 먼저 액세스한 다음, 프로세서에 의한 성공적인 추측 후에 초기에 추측 캐시로 지정된 캐시에 액세스할 수 있다. 그리고, 프로세서의 추측 스레드는 초기에 추측 캐시로 지정된 캐시에 먼저 액세스한 다음, 프로세서에 의한 성공적인 추측 후에 초기에 주 캐시로 지정된 캐시에 액세스할 수 있다.
도 1a는 태그 부분(104a), 블록 인덱스 부분(106a) 및 블록 오프셋 부분(108a)으로 분할된 메모리 어드레스(102a)를 도시한다. 실행 유형(110a)은 본 발명의 일부 실시형태에 따라 캐시 동작을 제어하기 위해 메모리 어드레스의 일부와 결합될 수 있다. 본 명세서에 개시된 일부 실시형태에 따라 캐시 시스템에서 어드레싱을 제어하는 데 사용되는 총 비트는 A 비트이다. 그리고, 부분(104a, 106a 및 108a)과 실행 유형(110a)에 대한 비트의 합은 A 비트와 같다. 태그 부분(104a)은 K 비트이고, 블록 인덱스 부분(106a)은 L 비트이고, 블록 오프셋 부분(108a)은 M 비트이고, 실행 유형(110a)은 하나 이상의 T 비트이다.
예를 들어, 동일한 블록 인덱스 부분(106a)과 블록 오프셋 부분(108a)을 갖는 모든 메모리 어드레스의 데이터는 주어진 실행 유형에 대해 동일한 물리적 캐시 위치에 저장될 수 있다. 메모리 어드레스(102a)의 데이터가 캐시에 저장되면, 태그 부분(104a)은 또한 동일한 블록 인덱스 부분(106a)과 블록 오프셋 부분(108a)을 갖는 어드레스 중 캐시의 이 위치에 현재 캐싱되고 있는 어드레스를 식별하기 위해 메모리 어드레스를 포함하는 블록에 대해 저장된다.
메모리 어드레스의 데이터는 상이한 실행 유형을 위해 통합된 캐시 구조의 다른 위치에 캐싱될 수 있다. 예를 들어, 데이터는 비-추측 실행 동안 주 캐시에 캐싱될 수 있고, 추측 실행 동안 섀도우 캐시에 후속 캐싱될 수 있다. 실행 유형(110a)은 제한 없이 주 실행과 추측 실행에 사용하도록 동적으로 구성될 수 있는 캐시로부터 선택하도록 태그 부분(104a)과 결합될 수 있다. 선택을 하기 위해 실행 유형(110a)과 태그 부분(104a)의 조합의 사용을 구현하는 많은 다른 방법이 있을 수 있다. 예를 들어, 도 2 및 도 4에 도시된 논리 회로(206)는 실행 유형(110a) 및/또는 태그 부분(104a)을 사용할 수 있다.
비교적 간단한 구현으로, 실행 유형(110a)은 캐시 위치가 메모리 어드레스(102a) 및 현재 실행 명령어 유형에 대한 데이터를 포함하는지 여부를 결정할 때 확장된 태그를 형성하도록 태그 부분(104a)과 결합될 수 있다. 예를 들어, 캐시 시스템은 태그 부분(104a)을 사용하여 실행 유형을 구분함이 없이 캐시 위치를 선택할 수 있고; 태그 부분(104a)이 실행 유형(110a)과 결합되어 확장된 태그를 형성하는 경우, 확장된 태그는 보안 강화를 위해 섀도우 캐시 기술을 구현할 수 있도록 상이한 유형을 갖는 실행(예를 들어, 추측 실행 및 비-추측 실행)에서 캐시 위치를 선택하는 것과 유사한 방식으로 사용될 수 있다. 또한, 캐싱된 데이터와 연관된 실행 유형에 대한 정보는 많은 캐시 위치 중에서 (예를 들어, 캐시 세트에서 또는 다수의 캐시 세트가 있는 캐시에서) 공유되기 때문에, 개별 위치에 대한 실행 유형을 저장할 필요는 없고; 선택 메커니즘(예를 들어, 스위치, 필터 또는 데이터 다중화기와 같은 다중화기)이 실행 유형에 따라 선택을 구현하는 데 사용될 수 있다. 대안적으로, 상이한 실행 유형에 사용되는 물리적 캐시 또는 물리적 캐시 세트는 상이한 실행 유형과 미리 연관된 논리적 캐시에 각각 재매핑될 수 있다. 따라서, 논리적 캐시의 사용은 실행 유형(110a)에 따라 선택될 수 있다.
도 1b는 캐시 동작을 제어하기 위해 부분으로 분할된 메모리 어드레스(102b)를 분할하는 다른 방식을 도시한다. 메모리 어드레스(102b)는 태그 부분(104b), 캐시 세트 인덱스 부분(112b), 블록 인덱스 부분(106b) 및 블록 오프셋 부분(108b)으로 분할된다. 메모리 어드레스(102b)의 총 비트는 A 비트이다. 그리고, 4개의 부분에 대한 비트의 합은 어드레스(102b)의 A 비트와 같다. 태그 부분(104b)은 K 비트이고, 블록 인덱스 부분(106b)은 L 비트이고, 블록 오프셋 부분(108b)은 M 비트이고, 캐시 세트 인덱스 부분(112b)은 S 비트이다. 따라서, 어드레스(102b)의 경우, A 비트 = K 비트 + L 비트 + M 비트 + S 비트이다. 도 1b에 따른 메모리 어드레스(102b)의 분할은 데이터를 캐싱할 때 세트 연관성의 구현을 허용한다.
예를 들어, 복수의 캐시 세트가 캐시에 구성될 수 있고, 여기서 각각의 캐시 세트는 캐시 세트 인덱스(112b)를 사용하여 어드레싱될 수 있다. 동일한 캐시 세트 인덱스와 연관된 데이터 세트는 동일한 캐시 세트에 캐싱될 수 있다. 캐시 세트에 캐싱된 데이터 블록의 태그 부분(104b)은 데이터 블록과 연관된 캐시에 저장될 수 있다. 어드레스(102b)를 사용하여 캐시 세트 인덱스(112b)를 사용하여 식별된 캐시 세트로부터 데이터를 검색할 때, 캐시 세트에 저장된 데이터 블록의 태그 부분을 검색하고 이 태그 부분을 태그 부분(104b)과 비교하면, 액세스 요청의 어드레스(102b)의 태그(104b)와, 캐시 세트 인덱스(112b)에 의해 식별된 캐시 세트에 저장되고 블록 인덱스(106b)에 의해 식별된 캐시 블록에 대해 저장된 태그(104b)가 일치하는지 여부를 결정할 수 있다. 일치하는 경우(예를 들어, 캐시 히트), 캐시 세트에 저장된 캐시 블록은 메모리 어드레스(112b)에 대한 것이고; 일치하지 않는 경우, 캐시 세트에 저장된 캐시 블록은 메모리 어드레스(102b)와 동일한 캐시 세트 인덱스(112b) 및 동일한 블록 인덱스(106b)를 갖는 다른 메모리 어드레스에 대한 것이어서, 이에 캐시 미스를 초래한다. 캐시 미스에 응답하여, 캐시 시스템은 주 메모리에 액세스하여 어드레스(102b)에 따라 데이터 블록을 검색한다. 섀도우 캐시 기술을 구현하기 위해, 캐시 세트 인덱스(112b)는 실행 유형(110a)과 결합되어 확장된 캐시 세트 인덱스를 형성할 수 있다. 따라서, 상이한 캐시 세트 인덱스에 대해 상이한 실행 유형에 사용되는 캐시 세트는 캐시 세트 인덱스와 실행 유형을 모두 식별하는 확장된 캐시 세트 인덱스를 사용하여 어드레싱될 수 있다.
도 1b에서, 캐시 세트 인덱스 부분(112b)은 어드레스(102b)의 미리 결정된 부분으로부터 추출된다. 상이한 세트 인덱스를 갖는 메모리 어드레스에 저장된 데이터는 데이터를 캐싱할 때 세트 연관성을 구현하기 위해 캐시의 상이한 캐시 세트에 캐싱될 수 있다. 캐시의 캐시 세트는 캐시 세트 인덱스(예를 들어, 어드레스(102b)의 부분(112b))를 사용하여 선택될 수 있다. 대안적으로, 캐시 세트 연관성은 도 1c에 도시된 분할 방식을 사용하여 캐시 세트 지시자를 포함하는 태그(104c)를 통해 구현될 수 있다. 선택적으로, 캐시 세트 지시자는 태그(104c)로부터 계산되고 캐시 세트를 어드레싱하기 위한 캐시 세트 인덱스로 사용된다. 대안적으로, 세트 연관성은 태그(104c)를 저장하는 캐시 세트가 캐시 히트에 대해 선택되도록 태그(104c)를 통해 직접 구현될 수 있으며; 캐시 세트가 태그(104c)를 저장하지 않을 때, 캐시 미스가 결정된다. 대안적으로, 어드레스(102d)는 캐시 동작을 위해 도 1d에 도시된 바와 같은 방식으로 분할될 수 있고, 여기서 태그 부분(104d)은 캐시 세트 인덱스(112d)를 포함하고, 여기서 캐시 세트는 캐시 세트 인덱스를 사용하여 명시적으로 개별적으로 어드레싱되지 않는다. 예를 들어, 섀도우 캐시 기술을 구현하기 위해, 임베디드 캐시 세트 지시자와 실행 유형(110e) 및 태그(104e)(도 1e에 도시됨)의 조합은 정확한 실행 유형을 위한 것이고 캐시 히트에 대해 동일한 태그(104e)를 저장하는 캐시 세트를 선택하는 데 사용될 수 있다. 일치하는 실행 유형을 갖고 동일한 태그(104e)를 저장하는 캐시 세트가 없는 경우 캐시 미스가 결정된다.
또한, 도 1c에 도시된 바와 같이, 도 1c는 캐시 동작을 제어하기 위해 부분으로 분할된 메모리 어드레스(102c)를 분할하는 다른 방식을 도시한다. 메모리 어드레스(102c)는 캐시 세트 지시자를 갖는 태그 부분(104c), 블록 인덱스 부분(106c) 및 블록 오프셋 부분(108c)으로 분할된다. 메모리 어드레스(102c)의 총 비트는 A 비트이다. 그리고, 세 부분에 대한 비트의 합은 어드레스(102c)의 A 비트와 같다. 태그 부분(104c)은 K 비트이고, 블록 인덱스 부분(106c)은 L 비트이고, 블록 오프셋 부분(108c)은 M 비트이다. 따라서, 어드레스(102c)의 경우, A 비트 = K 비트 + L 비트 + M 비트이다. 언급된 바와 같이, 도 1c에 따른 메모리 어드레스(102c)의 분할은 데이터를 캐싱할 때 세트 연관성의 구현을 허용한다.
또한, 도 1d에 도시된 바와 같이, 도 1d는 캐시 동작을 제어하기 위해 부분으로 분할된 메모리 어드레스(102d)를 분할하는 다른 방식을 도시한다. 메모리 어드레스(102d)는 캐시 세트 인덱스(112d)를 갖는 태그 부분(104d), 블록 인덱스 부분(106d) 및 블록 오프셋 부분(108d)으로 분할된다. 메모리 어드레스(102d)의 총 비트는 A 비트이다. 그리고, 세 부분에 대한 비트의 합은 어드레스(102d)의 A 비트와 같다. 태그 부분(104d)은 K 비트이고, 블록 인덱스 부분(106d)은 L 비트이고, 블록 오프셋 부분(108d)은 M 비트이다. 따라서, 어드레스(102d)의 경우, A 비트 = K 비트 + L 비트 + M 비트이다. 언급된 바와 같이, 도 1d에 따른 메모리 어드레스(102d)의 분할은 데이터를 캐싱할 때 세트 연관성의 구현을 허용한다.
또한, 도 1e에 도시된 바와 같이, 도 1e는 캐시 동작을 제어하기 위해 부분으로 분할된 메모리 어드레스(102e)를 분할하는 다른 방식을 도시한다. 도 1e는 캐시 세트 지시자를 갖는 태그 부분(104e), 블록 인덱스 부분(106e), 및 블록 오프셋 부분(108e)으로 분할된 메모리 어드레스(102e)를 도시한다. 실행 유형(110e)은 본 발명의 일부 실시형태에 따라 캐시 동작을 제어하기 위해 메모리 어드레스의 일부와 결합될 수 있다. 본 명세서에 개시된 일부 실시형태에 따라 캐시 시스템에서 어드레싱을 제어하는 데 사용되는 총 비트는 A 비트이다. 그리고, 부분(104e, 106e 및 108e)과 실행 유형(110e)에 대한 비트의 합은 A 비트와 같다. 태그 부분(104e)은 K 비트이고, 블록 인덱스 부분(106e)은 L 비트이고, 블록 오프셋 부분(108e)은 M 비트이고, 실행 유형(110e)은 T 비트이다.
도 2, 도 3a 및 도 3b는 본 발명의 일부 실시형태에 따른 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시하며, 각각의 컴퓨팅 디바이스는 (예를 들어, 보안 강화를 위해 섀도우 캐시 기술을 구현하기 위해) 제1 유형과 제2 유형의 실행을 위해 상호 교환 가능한 캐시를 갖는 캐시 시스템을 포함한다.
도 2는 다수의 캐시(예를 들어, 캐시(202a, 202b 및 202c) 참조)를 갖는 캐시 시스템(200)을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시한다. 예시적인 컴퓨팅 디바이스는 또한 프로세서(201)와 메모리 시스템(203)을 갖는 것으로 도시되어 있다. 캐시 시스템(200)은 프로세서(201)와 메모리 시스템(203) 사이에 결합되도록 구성된다.
캐시 시스템(200)은 캐시 시스템과 프로세서(201) 사이에 결합된 커맨드 버스(205a)에 대한 연결부(204a)를 포함하는 것으로 도시되어 있다. 캐시 시스템(200)은 캐시 시스템과 프로세서(201) 사이에 결합된 어드레스 버스(205b)에 대한 연결부(204b)를 포함하는 것으로 도시되어 있다. 도 1a, 도 1b, 도 1c, 도 1d 및 도 1e에 도시된 어드레스(102a, 102b, 102c, 102d 및 102e)는 각각 캐시 시스템(200)의 구현에 따라 어드레스 버스(205b)를 통해 각각 전달될 수 있다. 캐시 시스템(200)은 또한 캐시 시스템과 프로세서(201) 사이에 결합된 데이터 버스(205c)에 대한 연결부(204c)를 포함하는 것으로 도시되어 있다. 캐시 시스템(200)은 또한 실행 유형을 식별하는 프로세서(201)로부터의 실행 유형 신호 라인(205d)에 대한 연결부(204d)를 포함하는 것으로 도시되어 있다.
도 2에 도시되지는 않았지만, 캐시 시스템(200)은 구성 가능한 데이터 비트를 포함할 수 있다. 구성 가능한 데이터 비트는 도 3a의 제1 상태에 도시된 데이터(312)에 포함되거나 데이터일 수 있고, 도 3b의 제2 상태에 도시된 데이터(314)에 포함되거나 데이터일 수 있다. 프로세서로부터의 메모리 액세스 요청과 프로세서에 의한 메모리의 사용은 커맨드 버스(205a), 어드레스 버스(205b) 및 데이터 버스(205c)를 통해 제어될 수 있다.
일부 실시형태에서, 캐시 시스템(200)은 제1 캐시(예를 들어, 캐시(202a) 참조) 및 제2 캐시(예를 들어, 캐시(202b) 참조)를 포함할 수 있다. 이러한 실시형태에서, 도 2에 도시된 바와 같이, 캐시 시스템(200)은 프로세서(201)에 결합된 논리 회로(206)를 포함할 수 있다. 또한, 이러한 실시형태에서, 논리 회로(206)는 구성 가능한 데이터 비트에 기초하여 제1 캐시(예를 들어, 캐시(202a) 참조)와 제2 캐시(예를 들어, 캐시(202b) 참조)를 제어하도록 구성될 수 있다.
구성 가능한 데이터 비트가 제1 상태에 있을 때(예를 들어, 도 3a에 도시된 데이터(312) 참조), 논리 회로(206)는 실행 유형이 제1 유형일 때 제1 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 구성 가능한 데이터 비트가 제1 상태에 있을 때(예를 들어, 도 3a에 도시된 데이터(312) 참조), 논리 회로(206)는 실행 유형이 제2 유형일 때 제2 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
구성 가능한 데이터 비트가 제2 상태에 있을 때(예를 들어, 도 3b에 도시된 데이터(314) 참조), 논리 회로(206)는 실행 유형이 제1 유형일 때 제2 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 구성 가능한 데이터 비트가 제2 상태에 있을 때(예를 들어, 도 3b에 도시된 데이터(314) 참조), 논리 회로(206)는 실행 유형이 제2 유형일 때 제1 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태에서, 실행 유형이 제2 유형으로부터 제1 유형으로 변경될 때, 논리 회로(206)는 구성 가능한 데이터 비트를 토글하도록 구성된다.
또한, 도 2에 도시된 바와 같이, 캐시 시스템(200)은 캐시 시스템과 메모리 시스템(203) 사이에 결합된 제2 커맨드 버스(209a)에 대한 연결부(208a)를 더 포함한다. 캐시 시스템(200)은 또한 캐시 시스템과 메모리 시스템(203) 사이에 결합된 제2 어드레스 버스(209b)에 대한 연결부(208b)를 포함한다. 캐시 시스템(200)은 또한 캐시 시스템과 메모리 시스템(203) 사이에 결합된 제2 데이터 버스(209c)에 대한 연결부(208c)를 포함한다. 구성 가능한 데이터 비트가 제1 상태에 있을 때, 논리 회로(206)는 실행 유형이 제1 유형(예를 들어, 비-추측 유형)일 때, 제1 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 제2 커맨드 버스(209a)에 커맨드를 제공하도록 구성된다. 구성 가능한 데이터 비트가 제1 상태에 있을 때, 논리 회로(206)는 또한 실행 유형이 제2 유형(예를 들어, 추측 유형)일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 제2 커맨드 버스(209a)에 커맨드를 제공하도록 구성된다.
구성 가능한 데이터 비트가 제2 상태에 있을 때, 논리 회로(206)는 실행 유형이 제1 유형일 때 제2 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 제2 커맨드 버스(209a)에 커맨드를 제공하도록 구성된다. 또한, 구성 가능한 데이터 비트가 제2 상태에 있을 때, 논리 회로(206)는 실행 유형이 제2 유형일 때 제1 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 제2 커맨드 버스(209a)에 커맨드를 제공하도록 구성된다.
일부 실시형태에서, 커맨드 버스(205a)에 대한 연결부(204a)는 메모리 시스템(203)에 액세스하기 위해 프로세서(201)로부터 판독 커맨드 또는 기입 커맨드를 수신하도록 구성된다. 또한, 어드레스 버스(205b)에 대한 연결부(204b)는 판독 커맨드 또는 기입 커맨드에 대해 메모리 시스템(203)에 액세스하기 위해 프로세서(201)로부터 메모리 어드레스를 수신하도록 구성될 수 있다. 또한, 데이터 버스(205c)에 대한 연결부(204c)는 프로세서가 판독 커맨드에 대한 데이터를 판독하기 위해 데이터를 프로세서(201)에 전달하도록 구성될 수 있다. 그리고, 데이터 버스(205c)에 대한 연결부(204c)는 또한 기입 커맨드에 대해 메모리 시스템(203)에 기입될 데이터를 프로세서(201)로부터 수신하도록 구성될 수 있다. 또한, 실행 유형 신호 라인(205d)에 대한 연결부(204d)는 프로세서(201)로부터 실행 유형의 식별(예를 들어, 프로세서에 의해 수행되는 비-추측 또는 추측 실행 유형의 식별)을 수신하도록 구성될 수 있다.
일부 실시형태에서, 논리 회로(206)는, 구성 가능한 데이터 비트가 제1 상태에 있고 실행 유형 신호 라인(205d)에 대한 연결부(204d)가 제1 유형(예를 들어, 비-추측 유형)의 지시를 수신할 때 프로세서(201)로부터의 메모리 액세스 요청(예를 들어, 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드 중 하나)을 위해 제1 캐시를 선택하도록 구성될 수 있다. 또한, 논리 회로(206)는, 구성 가능한 데이터 비트가 제1 상태에 있고 실행 유형 신호 라인(205d)에 대한 연결부(204d)가 제2 유형(예를 들어, 추측 유형)의 지시를 수신할 때 프로세서(201)로부터의 메모리 액세스 요청을 위해 제2 캐시를 선택하도록 구성될 수 있다. 또한, 논리 회로(206)는, 구성 가능한 데이터 비트가 제2 상태에 있고 실행 유형 신호 라인(205d)에 대한 연결부(204d)가 제1 유형의 지시를 수신할 때 프로세서(201)로부터의 메모리 액세스 요청을 위해 제2 캐시를 선택하도록 구성될 수 있다. 그리고, 논리 회로(206)는, 구성 가능한 데이터 비트가 제2 상태에 있고 실행 유형 신호 라인(205d)에 대한 연결부(204d)가 제2 유형의 지시를 수신할 때 프로세서(201)로부터의 메모리 액세스 요청을 위해 제1 캐시를 선택하도록 구성될 수 있다.
도 3a는 다수의 캐시(예를 들어, 캐시(302 및 304) 참조)를 갖는 캐시 시스템(예를 들어, 캐시 시스템(200))을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시한다. 예시적인 컴퓨팅 디바이스는 또한 구성 가능한 비트를 포함할 수 있는 데이터(312)를 저장하는 레지스터(306)를 갖는 것으로 도시되어 있다. 레지스터(306)는 논리 회로(206)에 연결되거나 논리 회로의 일부일 수 있다. 도 3a에서, 제1 시간 인스턴스("시간 인스턴스 X") 동안, 레지스터(306)는 제1 상태의 구성 가능한 비트일 수 있는 데이터(312)를 저장하는 것으로 도시되어 있다. 제1 시간 인스턴스 동안 제1 캐시(예를 들어, 캐시(302))로부터 수신된 내용(308a)은 제1 실행 유형을 위한 내용을 포함한다. 그리고, 제1 시간 인스턴스 동안 제2 캐시(예를 들어, 캐시(304))로부터 수신된 내용(310a)은 제2 실행 유형을 위한 내용을 포함한다.
도 3b는 다수의 캐시(예를 들어, 캐시(302 및 304) 참조)를 갖는 캐시 시스템(예를 들어, 캐시 시스템(200))을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시한다. 예시적인 컴퓨팅 디바이스는 또한 구성 가능한 비트를 포함할 수 있는 데이터(314)를 저장하는 레지스터(306)를 갖는 것으로 도시되어 있다. 도 3b에서, 제2 시간 인스턴스("시간 인스턴스 Y") 동안 레지스터(306)는 제2 상태의 구성 가능한 비트일 수 있는 데이터(314)를 저장하는 것으로 도시되어 있다. 제2 시간 인스턴스 동안 제1 캐시(예를 들어, 캐시(302))로부터 수신된 내용(308b)은 제2 실행 유형을 위한 내용을 포함한다. 그리고, 제2 시간 인스턴스 동안 제2 캐시(예를 들어, 캐시(304))로부터 수신된 내용(310b)은 제1 실행 유형을 위한 내용을 포함한다.
레지스터(306)를 캐시(302 및 304)에 연결하는 도시된 라인(320)은 논리 회로(206)의 일부일 수 있다.
일부 실시형태에서, 캐시 시스템(200)의 캐시의 사용을 제어하기 위해 구성 가능한 비트를 사용하는 대신에, 캐시 시스템의 캐시의 사용을 제어하기 위해 다른 형태의 데이터를 사용할 수 있다. 예를 들어, 논리 회로(206)는 구성 가능한 비트가 아닌 레지스터(306)에 저장되는 상이한 데이터에 기초하여 제1 캐시(예를 들어, 캐시(202a) 참조) 및 제2 캐시(예를 들어, 캐시(202b) 참조)를 제어하도록 구성될 수 있다. 이러한 예에서, 레지스터(306)가 제1 데이터를 저장하거나 제1 상태에 있을 때, 논리 회로는, 실행 유형이 제1 유형일 때 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 그리고, 레지스터(306)가 제2 데이터를 저장하거나 제2 상태에 있을 때, 논리 회로는, 실행 유형이 제1 유형일 때 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
도 4, 도 5a 및 도 5b는 본 발명의 일부 실시형태에 따라 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시하며, 각각의 컴퓨팅 디바이스는 주 또는 일반 유형의 실행(예를 들어, 비-추측 실행)과 추측 실행을 위한 상호 교환 가능한 캐시를 갖는 캐시 시스템을 포함한다.
도 4는 다수의 캐시(예를 들어, 도 4에 도시된 캐시(202a, 202b, 및 202c) 참조)를 갖는 캐시 시스템(400)을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시한다. 도 4에서, 예시적인 컴퓨팅 디바이스는 프로세서(401)와 메모리 시스템(203)을 갖는 것으로 또한 도시되어 있다. 도 4에 도시된 바와 같이, 캐시 시스템(400)은 캐시 시스템(200)과 유사하지만, 캐시 시스템(400)의 경우 프로세서(401)에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서(401)로부터의 추측 상태 신호 라인(404)에 대한 연결부(402)를 더 포함한다.
유사하게, 캐시 시스템(400)은 캐시 시스템과 프로세서(401) 사이에 결합된 커맨드 버스(205a)에 대한 연결부(204a)를 포함하는 것으로 도시되어 있다. 시스템(400)은 또한 캐시 시스템과 프로세서(401) 사이에 결합된 어드레스 버스(205b)에 대한 연결부(204b)를 포함한다. 도 1a, 도 1b, 도 1c, 도 1d 및 도 1e에 도시된 어드레스(102a, 102b, 102c, 102d 및 102e)는 각각 캐시 시스템(400)의 구현에 따라 어드레스 버스(205b)를 통해 각각 전달될 수 있다. 시스템(400)은 또한 캐시 시스템과 프로세서(401) 사이에 결합된 데이터 버스(205c)에 대한 연결부(204c)를 포함한다. 시스템은 또한 비-추측 실행 유형 또는 추측 실행 유형을 식별하는 프로세서(401)로부터의 실행 유형 신호 라인(205d)에 대한 연결부(204d)를 포함한다. 도 4에 도시되지는 않았지만 캐시 시스템(400)은 또한 구성 가능한 데이터 비트를 포함할 수 있다. 구성 가능한 데이터 비트는 도 5a의 제1 상태에 도시된 데이터(312)에 포함되거나 데이터일 수 있고, 도 5b의 제2 상태에 도시된 데이터(314)에 포함되거나 데이터일 수 있다.
일부 실시형태에서, 캐시 시스템(400)은 제1 캐시(예를 들어, 캐시(202a) 참조) 및 제2 캐시(예를 들어, 캐시(202b) 참조)를 포함할 수 있다. 이러한 실시형태에서, 도 4에 도시된 바와 같이, 캐시 시스템(400)은 프로세서(401)에 결합된 논리 회로(406)를 포함할 수 있다. 또한, 이러한 실시형태에서, 논리 회로(406)는 구성 가능한 데이터 비트에 기초하여 제1 캐시(예를 들어, 캐시(202a) 참조) 및 제2 캐시(예를 들어, 캐시(202b) 참조)를 제어하도록 구성될 수 있다. 구성 가능한 데이터 비트가 제1 상태에 있을 때(예를 들어, 도 5a에 도시된 데이터(312) 참조), 논리 회로(406)는 실행 유형이 비-추측 유형일 때 제1 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하고; 실행 유형이 추측 유형일 때 제2 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 구성 가능한 데이터 비트가 제2 상태에 있을 때(예를 들어, 도 5b에 도시된 데이터(314) 참조), 논리 회로(406)는 실행 유형이 비-추측 유형일 때 제2 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 구성 가능한 데이터 비트가 제2 상태에 있을 때(예를 들어, 도 5b에 도시된 데이터(314) 참조), 논리 회로(406)는 실행 유형이 추측 유형일 때 제1 캐시를 통해 메모리 시스템(203)에 액세스하기 위해 커맨드 버스(205a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태에서, 예를 들어 도 4에 도시된 바와 같이, 제1 유형은 프로세서에 의한 명령어의 비-추측 실행을 나타내도록 구성될 수 있다. 이러한 예에서, 제2 유형은 프로세서에 의한 명령어의 추측 실행을 나타내도록 구성될 수 있다. 이러한 실시형태에서, 캐시 시스템(400)은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서(401)로부터의 추측 상태 신호 라인(404)에 대한 연결부(402)를 더 포함할 수 있다. 추측 상태 신호 라인(404)에 대한 연결부(402)는 추측 실행의 상태를 수신하도록 구성될 수 있고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다.
또한, 실행 유형이 제2 유형 또는 추측 유형으로부터 제1 유형 또는 비-추측 유형으로 변경되는 경우, 시스템(400)의 논리 회로(406)는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 구성 가능한 데이터 비트를 토글하도록 구성될 수 있다. 또한, 실행 유형이 제2 유형 또는 추측 유형으로부터 제1 유형 또는 비-추측 유형으로 변경되는 경우, 시스템(400)의 논리 회로(406)는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 구성 가능한 데이터 비트를 변경 없이 유지하도록 구성될 수 있다.
도 5a는 다수의 캐시(예를 들어, 캐시(302 및 304) 참조)를 갖는 캐시 시스템(예를 들어, 캐시 시스템(400))을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시한다. 예시적인 컴퓨팅 디바이스는 또한 구성 가능한 비트를 포함할 수 있는 데이터(312)를 저장하는 레지스터(306)를 갖는 것으로 도시되어 있다. 도 5a에서, 제1 시간 인스턴스("시간 인스턴스 X") 동안, 레지스터(306)는 제1 상태에서 구성 가능한 비트일 수 있는 데이터(312)를 저장하는 것으로 도시되어 있다. 이는 제1 시간 인스턴스 동안 제1 캐시(예를 들어, 캐시(302))로부터 수신된 내용(502a)이 비-추측 실행을 위한 내용을 포함한다는 점을 제외하고는 도 3a와 유사하다. 그리고, 제1 시간 인스턴스 동안 제2 캐시(예를 들어, 캐시(304))로부터 수신된 내용(504a)은 추측 실행을 위한 내용을 포함한다.
도 5b는 다수의 캐시(예를 들어, 캐시(302 및 304) 참조)를 갖는 캐시 시스템(예를 들어, 캐시 시스템(400))을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시한다. 예시적인 컴퓨팅 디바이스는 또한 구성 가능한 비트를 포함할 수 있는 데이터(314)를 저장하는 레지스터(306)를 갖는 것으로 도시되어 있다. 도 5b에서, 제2 시간 인스턴스("시간 인스턴스 Y") 동안 레지스터(306)는 제2 상태의 구성 가능한 비트일 수 있는 데이터(314)를 저장하는 것으로 도시되어 있다. 이는 제2 시간 인스턴스 동안 제1 캐시(예를 들어, 캐시(302))로부터 수신된 내용(502b)이 추측 실행을 위한 내용을 포함하는 것을 제외하고 도 3b와 유사하다. 그리고, 제2 시간 인스턴스 동안 제2 캐시(예를 들어, 캐시(304))로부터 수신된 내용(504b)은 비-추측 실행을 위한 내용을 포함한다.
또한, 유사하게, 도 5a 및 도 5b에서, 레지스터(306)를 캐시(302 및 304)에 연결하는 도시된 라인(320)은 캐시 시스템(400)의 논리 회로(406)의 일부일 수 있다.
일부 실시형태에서, 캐시 시스템(400)의 캐시의 사용을 제어하기 위해 구성 가능한 비트를 사용하는 대신에, 캐시 시스템(400)의 캐시의 사용을 제어하기 위해 다른 형태의 데이터가 사용될 수 있다. 예를 들어, 시스템(400)의 논리 회로(406)는 구성 가능한 비트가 아닌 레지스터(306)에 저장되는 상이한 데이터에 기초하여 제1 캐시(예를 들어, 캐시(202a) 참조)와 제2 캐시(예를 들어, 캐시(202b) 참조)를 제어하도록 구성될 수 있다. 이러한 예에서, 레지스터(306)가 제1 데이터를 저장하거나 제1 상태에 있을 때, 논리 회로는 실행 유형이 비-추측 유형일 때 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 추측 유형일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 그리고, 레지스터(306)가 제2 데이터를 저장하거나 제2 상태에 있을 때, 논리 회로는, 실행 유형이 비-추측 유형일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 추측 유형일 때, 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태는 캐시 시스템을 포함할 수 있고, 캐시 시스템은 제1 캐시와 제2 캐시를 포함하는 복수의 캐시를 포함할 수 있다. 시스템은 또한 메모리 시스템으로부터 판독하거나 또는 메모리 시스템에 기입하기 위해 캐시 시스템에 연결된 프로세서로부터 판독 커맨드 또는 기입 커맨드를 수신하도록 구성된 커맨드 버스에 대한 연결부를 포함할 수 있다. 시스템은 또한 판독 커맨드 또는 기입 커맨드에 대해 메모리 시스템에 액세스하기 위해 프로세서로부터 메모리 어드레스를 수신하도록 구성된 어드레스 버스에 대한 연결부를 포함할 수 있다. 시스템은 또한 프로세서가 판독 커맨드에 대한 데이터를 판독하도록 데이터를 프로세서에 전달하고; 기입 커맨드에 대해 메모리 시스템에 기입될 데이터를 프로세서로부터 수신하도록 구성된 데이터 버스에 대한 연결부를 포함할 수 있다. 이러한 예에서, 프로세서로부터의 메모리 액세스 요청과 프로세서에 의한 메모리의 사용은 커맨드 버스, 어드레스 버스 및 데이터 버스에 의해 정의될 수 있다. 시스템은 또한 프로세서로부터 실행 유형의 식별을 수신하도록 구성된 실행 유형 신호 라인을 포함할 수 있다. 실행 유형은 제1 실행 유형 또는 제2 실행 유형(예를 들어, 일반 또는 비-추측 실행 또는 추측 실행)이다.
시스템은 또한 프로세서에 의해 사용하기 위한 제1 캐시와 제2 캐시의 선택을 제어하기 위해 제1 상태(예를 들어, "0") 또는 제2 상태(예를 들어, "1")로 설정되도록 구성된 구성 가능한 데이터 비트를 포함할 수 있다.
시스템은 또한 구성 가능한 데이터 비트가 제1 상태에 있고 실행 유형 신호 라인이 제1 실행 유형의 지시를 수신할 때 프로세서에 의해 사용하기 위해 제1 캐시를 선택하도록 구성된 논리 회로를 포함할 수 있다. 논리 회로는 또한 구성 가능한 데이터 비트가 제1 상태에 있고 실행 유형 신호 라인이 제2 실행 유형의 지시를 수신할 때 프로세서에 의해 사용하기 위해 제2 캐시를 선택하도록 구성될 수 있다. 논리 회로는 또한 구성 가능한 데이터 비트가 제2 상태에 있고 실행 유형 신호 라인이 제1 실행 유형의 지시를 수신할 때 프로세서에 의해 사용하기 위해 제2 캐시를 선택하도록 구성될 수 있다. 논리 회로는 또한 구성 가능한 데이터 비트가 제2 상태에 있고 실행 유형 신호 라인이 제2 실행 유형의 지시를 수신할 때 프로세서에 의해 사용하기 위해 제1 캐시를 선택하도록 구성될 수 있다.
일부 실시형태에서, 제1 실행 유형은 프로세서에 의한 명령어의 추측 실행이고, 제2 실행 유형은 프로세서(예를 들어, 일반 또는 주 실행)에 의한 명령어의 비-추측 실행이다. 이러한 예에서, 시스템은 프로세서로부터 추측 상태를 수신하도록 구성된 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 추측 상태는, 초기에 프로세서의 추측 실행에 의해 실행되고 이후에 추측 상태가 조건의 수락일 때 프로세서의 일반 실행에 의해 실행되는 내포된 명령어가 있는 조건의 수락 또는 거부일 수 있다.
일부 실시형태에서, 논리 회로는 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 수락일 때 구성 가능한 데이터 비트를 제1 상태로부터 제2 상태로 전환하도록 구성된다. 논리 회로는 또한 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 거부일 때 구성 가능한 데이터 비트의 상태를 유지하도록 구성될 수 있다.
일부 실시형태에서, 논리 회로는, 실행 유형 신호 라인에 의해 수신된 신호가 일반 실행을 나타내는 것으로부터 추측 실행을 나타내는 것으로 변경될 때, 구성 가능한 데이터 비트의 제1 상태에 의해 식별된 바와 같이 사용하기 위해 제2 캐시를 선택하고, 구성 가능한 데이터 비트의 제1 상태에 의해 식별된 바와 같이 제1 캐시의 사용을 제한하도록 구성된다. 이 변경에서, 추측 실행 상태에 있는 프로세서는 추측 실행 하에서 수행된 명령어를 주 실행에 의해 실행할지 여부를 알지 못하기 때문에 추측 상태는 논리 회로에 의해 무시/우회될 수 있다.
논리 회로는 또한 실행 유형 신호 라인이 일반 실행의 지시를 수신할 때, 실행 유형 신호 라인에 의해 수신된 신호가 추측 실행의 지시로부터 일반 실행의 지시로 변경될 때, 그리고 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 거부일 때, 구성 가능한 데이터 비트의 제1 상태를 유지하고 메모리 액세스 요청을 위해 제1 캐시를 선택하도록 구성될 수 있다.
일부 실시형태에서, 논리 회로는 실행 유형 신호 라인에 의해 수신된 신호가 추측 실행의 지시로부터 일반 실행의 지시로 변경될 때, 그리고 추측 상태 신호 라인에 의해 수신된 추측 상태가 조건의 거부일 때 제2 캐시의 내용을 무효화하고 폐기하도록 구성된다.
일부 실시형태에서, 시스템은 판독 커맨드 또는 기입 커맨드를 메모리 시스템(예를 들어, 주 메모리를 포함함)에 전달하도록 구성된 제2 커맨드 버스에 대한 연결부를 더 포함한다. 판독 커맨드 또는 기입 커맨드는 캐시 시스템에 의해 프로세서로부터 수신될 수 있다. 시스템은 또한 메모리 어드레스를 메모리 시스템에 전달하도록 구성된 제2 어드레스 버스에 대한 연결부를 포함할 수 있다. 메모리 어드레스는 캐시 시스템에 의해 프로세서로부터 수신될 수 있다. 시스템은 또한 메모리 시스템에 기입될 데이터를 메모리 시스템에 전달하고; 프로세서에 의해 판독되기 위해 프로세서에 전달될 데이터를 메모리 시스템으로부터 수신하도록 구성된 제2 데이터 버스에 대한 연결부를 포함할 수 있다. 예를 들어, 캐시 시스템으로부터 메모리 시스템에 대한 메모리 액세스 요청은 제2 커맨드 버스, 제2 어드레스 버스 및 제2 데이터 버스에 의해 정의될 수 있다.
일부 실시형태에서, 구성 가능한 데이터 비트가 제1 상태에 있을 때, 논리 회로는, 실행 유형이 제1 유형일 때, 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드를 제2 커맨드 버스에 제공하고; 실행 유형이 제2 유형일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드를 제2 커맨드 버스에 제공하도록 구성된다. 그리고, 구성 가능한 데이터 비트가 제2 상태에 있을 때, 논리 회로는, 실행 유형이 제1 유형일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드를 제2 커맨드 버스에 제공하고; 실행 유형이 제2 유형일 때, 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드를 제2 커맨드 버스에 제공하도록 구성될 수 있다.
일부 실시형태는 프로세서, 메모리 시스템, 및 이 프로세서와 메모리 시스템 사이에 결합된 캐시 시스템을 포함하는 시스템을 포함할 수 있다. 시스템의 캐시 시스템은 제1 캐시와 제2 캐시를 포함하는 복수의 캐시를 포함할 수 있다. 시스템의 캐시 시스템은, 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부, 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 더 포함할 수 있다.
시스템의 캐시 시스템은 또한 구성 가능한 데이터 비트, 및 이 구성 가능한 데이터 비트에 기초하여 제1 캐시와 제2 캐시를 제어하기 위해 프로세서에 결합된 논리 회로를 포함할 수 있다. 구성 가능한 데이터 비트가 제1 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때, 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 그리고 구성 가능한 데이터 비트가 제2 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때, 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
이러한 시스템에서, 제1 유형은 프로세서에 의한 명령어의 비-추측 실행을 나타내도록 구성될 수 있고, 제2 유형은 프로세서에 의한 명령어의 추측 실행을 나타내도록 구성될 수 있다. 또한, 시스템의 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있으며, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다. 실행 유형이 제2 유형(추측 유형)으로부터 제1 유형(비-추측 유형)으로 변경될 때, 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 논리 회로는 구성 가능한 데이터 비트를 토글하도록 구성될 수 있다. 그리고 실행 유형이 제2 유형(추측 유형)으로부터 제1 유형(비-추측 유형)으로 변경될 때 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 논리 회로는 구성 가능한 데이터 비트를 변경 없이 유지하도록 더 구성될 수 있다.
도 6, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b는 본 발명의 일부 실시형태에 따라 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시하고, 각각의 컴퓨팅 디바이스는 제1 유형과 제2 유형의 실행을 위해 (예를 들어, 보안 강화를 위해 섀도우 캐시 기술의 구현 및/또는 주 유형과 추측 유형의 실행을 위해) 상호 교환 가능한 캐시 세트를 갖는 캐시 시스템을 포함한다.
도 6은 다수의 캐시(예를 들어, 캐시(602a, 602b 및 602c) 참조)를 갖는 캐시 시스템(600)을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시하고, 여기서 적어도 하나의 캐시는 캐시 세트 연관성으로 구현된다. 예시적인 컴퓨팅 디바이스는 또한 프로세서(601)와 메모리 시스템(603)을 더 갖는 것으로 도시되어 있다. 캐시 시스템(600)은 프로세서(601)와 메모리 시스템(603) 사이에 결합되도록 구성된다.
캐시 시스템(600)은 캐시 시스템과 프로세서(601) 사이에 결합된 커맨드 버스(605a)에 대한 연결부(604a)를 포함하는 것으로 도시되어 있다. 캐시 시스템(600)은 캐시 시스템과 프로세서(601) 사이에 결합된 어드레스 버스(605b)에 대한 연결부(604b)를 포함하는 것으로 도시되어 있다. 도 1a, 도 1b, 도 1c, 도 1d 및 도 1e에 각각 도시된 어드레스(102a, 102b, 102c, 102d 및 102e)는 캐시 시스템(600)의 구현에 따라 어드레스 버스(605b)를 통해 각각 전달될 수 있다. 캐시 시스템(600)은 또한 캐시 시스템과 프로세서(601) 사이에 결합된 데이터 버스(605c)에 대한 연결부(604c)를 포함하는 것으로 도시되어 있다. 캐시 시스템(600)은 또한 실행 유형을 식별하는 프로세서(601)로부터의 실행 유형 신호 라인(605d)에 대한 연결부(604d)를 포함하는 것으로 도시되어 있다. 연결부(604a, 604b, 604c, 및 604d)는 버스(605a, 605b, 605c, 및 605d)와 캐시 시스템(600)의 논리 회로(606) 사이에 통신 결합을 제공할 수 있다.
또한, 도 6에 도시된 바와 같이, 캐시 시스템(600)은 캐시 시스템과 메모리 시스템(603) 사이에 결합된 제2 커맨드 버스(609a)에 대한 연결부(608a)를 더 포함한다. 캐시 시스템(600)은 또한 캐시 시스템과 메모리 시스템(603) 사이에 결합된 제2 어드레스 버스(609b)에 대한 연결부(608b)를 포함한다. 캐시 시스템(600)은 또한 캐시 시스템과 메모리 시스템(603) 사이에 결합된 제2 데이터 버스(609c)에 대한 연결부(608c)를 포함한다.
캐시 시스템(600)은 또한 복수의 캐시 세트(예를 들어, 캐시 세트(610a, 610b 및 610c) 참조)를 포함한다. 캐시 세트는 제1 캐시 세트(예를 들어, 캐시 세트(610a) 참조)와 제2 캐시 세트(예를 들어, 캐시 세트(610b) 참조)를 포함할 수 있다.
또한, 도 6에 도시된 바와 같이, 캐시 시스템(600)은 복수의 캐시 세트 각각과 연관된 복수의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c) 참조)를 더 포함한다. 레지스터(또는 캐시 세트 레지스터)는 제1 캐시 세트(예를 들어, 캐시 세트(610a) 참조)와 연관된 제1 레지스터(예를 들어, 레지스터(612a) 참조), 및 제2 캐시 세트(예를 들어, 캐시 세트(610b) 참조)와 연관된 제2 레지스터(예를 들어, 레지스터(612a) 참조)를 포함할 수 있다. 복수의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c) 참조) 각각은 세트 인덱스를 저장하도록 구성될 수 있다.
도 6뿐만 아니라 도 10에 도시된 바와 같이, 캐시(602a)와 캐시(602b) 내지 캐시(602c)(캐시 1 내지 N)는 고정된 구조가 아니다. 그러나, 일부 실시형태에서 캐시는 고정된 구조일 수 있음을 이해해야 한다. 도시된 각 캐시는 캐시 세트의 논리적 그룹으로 고려될 수 있으며, 이러한 논리적 그룹은 각 논리적 캐시를 나타내는 파선으로 도시되어 있다. 캐시 세트(610a 내지 610c)(캐시 세트 1 내지 N)는 레지스터(610a 내지 610c)(레지스터 1 내지 N)의 내용에 기초할 수 있다. 캐시 세트 1 내지 N은 캐시 1과 캐시 2 내지 캐시 N 중에 공유되는 캐시 시스템 내의 캐시 세트의 집합일 수 있다. 캐시 1은 집합의 서브세트일 수 있고; 캐시 2는 중복되지 않는 다른 서브세트일 수 있다. 각 캐시의 구성원 캐시 세트는 레지스터 1 내지 N의 내용에 기초하여 변경될 수 있다.
캐시 세트 1(일반적인 의미에서)은 실시형태에 따라 레지스터 1과 통신하거나 통신하지 않을 수 있다. 파선은 또한 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에서 캐시 세트와 대응하는 레지스터 간의 논리적 관계를 나타내기 위해 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 도시되어 있다. 레지스터 1의 내용은 캐시 세트 1의 어드레스를 지정하는 방식(예를 들어, 데이터를 출력할 캐시 세트 1을 선택하는 캐시 세트 인덱스)을 결정한다. 일부 실시형태에서, 캐시 세트 1과 그 대응하는 레지스터 1 사이에는 직접적인 상호 작용이 없다. 논리 회로(606 또는 1006)는 실시형태에 따라 캐시 세트 및 대응하는 레지스터 모두와 상호 작용한다.
일부 실시형태에서, 논리 회로(606)는 복수의 레지스터(예를 들어, 레지스터(612a, 612b, 및 612c))에 따라 복수의 캐시 세트(예를 들어, 캐시 세트(610a, 610b, 및 610c))를 제어하기 위해 프로세서(601)에 결합될 수 있다. 이러한 실시형태에서, 캐시 시스템(600)은 프로세서(601)와 메모리 시스템(603) 사이에 결합되도록 구성될 수 있다. 그리고, 어드레스 버스(605b)에 대한 연결부(604b)가 프로세서(601)로부터 메모리 어드레스를 수신할 때, 논리 회로(606)는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고, 생성된 세트 인덱스가 제1 레지스터(예를 들어, 레지스터(612a))에 저장된 내용과 일치하는지 또는 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 논리 회로(606)는 또한 생성된 세트 인덱스가 제1 레지스터(예를 들어, 레지스터(612a))에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트(예를 들어, 캐시 세트(610a))를 통해 그리고 생성된 세트 인덱스가 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트(예를 들어, 캐시 세트(610b))를 통해 커맨드 버스(605a)에 대한 연결부(604a)에서 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태에서, 캐시 시스템(600)은 제1 캐시(예를 들어, 캐시(602a) 참조) 및 제2 캐시(예를 들어, 캐시(602b) 참조)를 포함할 수 있다. 이러한 실시형태에서, 도 2에 도시된 바와 같이, 캐시 시스템(600)은 프로세서(601)에 결합된 논리 회로(606)를 포함할 수 있다. 또한, 이러한 실시형태에서, 논리 회로(606)는 구성 가능한 데이터 비트 및/또는 각각의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c) 참조)에 기초하여 제1 캐시(예를 들어, 캐시(602a) 참조)와 제2 캐시(예를 들어, 캐시(602b) 참조)를 제어하도록 구성될 수 있다.
일부 실시형태에서, 메모리 어드레스와 연관된 메모리 시스템(603)의 데이터 세트가 캐시 시스템(600)에 현재 캐싱되어 있지 않다(예를 들어, 시스템의 캐시(602a)에 캐싱되어 있지 않다)는 결정에 응답하여, 논리 회로(606)는 데이터 세트를 캐싱하기 위해 제1 캐시 세트(예를 들어, 캐시 세트(610a))를 할당하고, 생성된 세트 인덱스를 제1 레지스터(예를 들어, 레지스터(612a))에 저장하도록 구성된다. 이러한 실시형태 및 다른 실시형태에서, 캐시 시스템은 실행 유형을 식별하는 프로세서(예를 들어, 프로세서(601))로부터의 실행 유형 신호 라인에 대한 연결부(예를 들어, 실행 유형 신호 라인(605)에 대한 연결부(604d))를 포함할 수 있다. 그리고, 이러한 실시형태 및 다른 실시형태에서, 생성된 세트 인덱스는 실행 유형 신호 라인에 의해 식별되는 유형에 더 기초하여 생성된다. 또한, 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트, 및 실행 유형 신호 라인(605d)에 의해 식별된 유형을 나타내는 비트를 포함할 수 있다.
또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제1 상태에 있을 때, 논리 회로(606)는 실행 유형이 제1 유형일 때, 제1 캐시 세트(예를 들어, 캐시 세트(610a))를 통해 메모리 시스템(601)에 액세스하기 위해 커맨드 버스(605a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제1 상태에 있을 때, 논리 회로(606)는 실행 유형이 제2 유형일 때 제2 캐시 세트(예를 들어, 캐시 세트(610b))를 통해 메모리 시스템(601)에 액세스하기 위해 커맨드 버스(605a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제2 상태에 있을 때, 논리 회로(606)는 실행 유형이 제1 유형일 때 제1 캐시 세트(예를 들어, 캐시 세트(610b 또는 610c)) 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템(601)에 액세스하기 위해 커맨드 버스(605a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제2 상태에 있을 때, 논리 회로(606)는 실행 유형이 제2 유형일 때 제2 캐시 세트(예를 들어, 캐시 세트(610a 또는 610c) 또는 도 6에 도시되지 않은 다른 캐시 세트) 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템(601)에 액세스하기 위해 커맨드 버스(605a)로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태에서, 복수의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c) 참조) 각각은 세트 인덱스를 저장하도록 구성될 수 있고, 실행 유형이 제2 유형으로부터 제1 유형으로 변경될 때(예를 들어, 비-추측 유형으로부터 추측 실행 유형으로 변경될 때), 논리 회로(606)는 제1 레지스터(예를 들어, 레지스터(612a))에 저장된 내용과 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용을 변경하도록 구성될 수 있다. 제1 레지스터(예를 들어, 레지스터(612a))에 저장된 내용과 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용이 변경된 예는 도 7a 및 도 7b, 도 8a 및 도 8b, 및 도 9a 및 도 9b에 도시되어 있다.
도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b 각각은 다수의 캐시 세트(예를 들어, 캐시(702, 704 및 706) 참조)를 갖는 캐시 시스템을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시하고, 여기서 캐시 세트는 캐시 세트 연관성을 통해 구현된다. 이들 도면 각각에 대한 각각의 캐시 시스템은 또한 캐시 세트와 각각 연관된 복수의 레지스터를 갖는 것으로 도시되어 있다. 복수의 레지스터는 적어도 레지스터(712), 레지스터(714), 및 레지스터(716)를 포함한다. 복수의 레지스터는 도면에 도시되지 않은 적어도 하나의 추가 레지스터를 포함한다. 레지스터(712)는 캐시 세트(702)와 연관되거나 이 캐시 세트에 연결된 것으로 도시되고, 레지스터(714)는 캐시 세트(704)와 연관되거나 이 캐시 세트에 연결된 것으로 도시되고, 레지스터(716)는 캐시 세트(706)와 연관되거나 이 캐시 세트에 연결된 것으로 도시되어 있다.
도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 도시지는 않았지만, 각각의 캐시 시스템 각각은 또한 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 및 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부를 더 포함할 수 있다. 각각의 캐시 시스템은 또한 복수의 레지스터(예를 들어, 레지스터(712, 714 및 716))에 따라 복수의 캐시 세트(예를 들어, 캐시 세트(702, 704 및 706))를 제어하기 위해 프로세서에 결합된 논리 회로를 포함할 수 있다.
도 7a, 도 7b, 도 8a, 도 8b, 도 9a 및 도 9b에 도시된 바와 같이 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(예를 들어, 메모리 어드레스(102b, 102c 또는 102d) 참조)를 수신할 때, 캐시 시스템의 논리 회로는 메모리 어드레스로부터 세트 인덱스(예를 들어, 세트 인덱스(722, 724, 726 또는 728) 참조)를 생성(예를 들어, 세트 인덱스 생성(730, 732, 830, 832, 930 또는 932) 참조)하도록 구성될 수 있다.
구체적으로, 도 7a에 도시된 바와 같이, 적어도 레지스터(712, 714 및 716)는 제1 상태에서 구성된다. 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(102b)를 수신하면, 캐시 시스템의 논리 회로는 적어도 세트 인덱스 생성(730a, 730b 및 730c) 각각 및 어드레스(102b)의 캐시 세트 인덱스(112b)의 인스턴스에 따라 세트 인덱스(722, 724 또는 726)를 생성한다. 세트 인덱스 생성(730a, 730b 또는 730c)은 레지스터(712, 714 또는 716)에 세트 인덱스(722, 724 또는 726)를 각각 저장하기 위한 것일 수 있다. 세트 인덱스 생성(730a, 730b 또는 730c)은 또한 레지스터(712, 714, 또는 716)에 이미 저장된 내용과 최근 생성된 세트 인덱스를 비교하는 데 최근 생성된 세트 인덱스를 사용하기 위한 것일 수도 있다. 세트 인덱스 생성(730a, 730b 및 730c)은 레지스터가 제1 상태에서 구성될 때 발생한다. 제1 상태에서 구성하는 것은 세트 인덱스 생성 및 저장을 통해 이루어질 수 있다.
구체적으로, 도 7b에 도시된 바와 같이, 적어도 레지스터(712, 714 및 716)는 제2 상태에서 구성된다. 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(102b)를 수신하면, 캐시 시스템의 논리 회로는 적어도 세트 인덱스 생성(732a, 732b 또는 732c) 각각 및 어드레스(102b)의 캐시 세트 인덱스(112b)의 인스턴스에 따라 세트 인덱스(726, 722 또는 728)를 생성한다. 세트 인덱스 생성(732a, 732b 또는 732c)은 레지스터(712, 714 또는 716)에 세트 인덱스(726, 722 또는 728)를 각각 저장하기 위한 것일 수 있다. 세트 인덱스 생성(732a, 732b 또는 732c)은 또한 레지스터(712, 714 또는 716) 각각에 이미 저장된 내용과 최근 생성된 세트 인덱스를 비교하는 데 최근 생성된 세트 인덱스를 사용하기 위한 것일 수 있다. 세트 인덱스 생성(732a, 732b 또는 732c)은 레지스터가 제2 상태에서 구성될 때 발생한다. 제2 상태에서 구성하는 것은 세트 인덱스 생성 및 저장을 통해 이루어질 수 있다.
구체적으로, 도 8a에 도시된 바와 같이, 적어도 레지스터(712, 714 또는 716)는 제1 상태에서 구성된다. 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(102c)를 수신하면, 캐시 시스템의 논리 회로는 적어도 세트 인덱스 생성(830a, 830b 또는 830c) 각각 및 캐시 세트 지시자를 갖는 어드레스(102b)의 태그(104c)의 인스턴스에 따라 세트 인덱스(722, 724 또는 726)를 생성한다. 세트 인덱스 생성(830a, 830b 또는 830c)은 레지스터(712, 714 또는 716) 각각에 세트 인덱스(722, 724 또는 726)를 저장하기 위한 것일 수 있다. 세트 인덱스 생성(830a, 830b 또는 830c)은 또한 레지스터(712, 714 또는 716) 각각에 이미 저장된 내용과 최근 생성된 세트 인덱스를 비교하는 데 최근 생성된 세트 인덱스를 사용하기 위한 것일 수 있다. 세트 인덱스 생성(830a, 830b 및 830c)은 레지스터가 제1 상태에서 구성될 때 발생한다.
구체적으로, 도 8b에 도시된 바와 같이, 적어도 레지스터(712, 714 또는 716)는 제2 상태에서 구성된다. 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(102c)를 수신하면, 캐시 시스템의 논리 회로는 적어도 세트 인덱스 생성(832a, 832b 또는 832c) 각각 및 캐시 세트 지시자를 갖는 어드레스(102b)의 태그(104c)의 인스턴스에 따라 세트 인덱스(726, 722 또는 728)를 생성한다. 세트 인덱스 생성(832a, 832b 또는 832c)은 레지스터(712, 714 또는 716)에 세트 인덱스(726, 722 또는 728)를 각각 저장하기 위한 것일 수 있다. 세트 인덱스 생성(832a, 832b 또는 832c)은 또한 레지스터(712, 714, 또는 716)에 각각 이미 저장된 내용과 최근 생성된 세트 인덱스를 비교하는 데 최근 생성된 세트 인덱스를 사용하기 위한 것일 수도 있다. 세트 인덱스 생성(832a, 832b 및 832c)은 레지스터가 제2 상태에서 구성될 때 발생한다.
구체적으로, 도 9a에 도시된 바와 같이, 적어도 레지스터(712, 714 또는 716)는 제1 상태에서 구성된다. 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(102d)를 수신하면, 캐시 시스템의 논리 회로는 적어도 세트 인덱스 생성(930a, 930b 또는 930c) 각각 및 어드레스(102b)의 태그(104d)에 있는 캐시 세트 인덱스(112d)의 인스턴스에 따라 세트 인덱스(722, 724 또는 726)를 생성한다. 세트 인덱스 생성(930a, 930b 또는 930c)은 레지스터(712, 714 또는 716)에 세트 인덱스(722, 724 또는 726)를 각각 저장하기 위한 것일 수 있다. 세트 인덱스 생성(930a, 930b, 또는 930c)은 또한 최근에 생성된 세트 인덱스를 레지스터(712, 714 또는 716)에 각각 이미 저장된 내용과 비교하는 데 최근 생성된 세트 인덱스를 사용하기 위한 것일 수 있다. 세트 인덱스 생성(930a, 930b 또는 930c)은 레지스터가 제1 상태에서 구성될 때 발생한다.
구체적으로, 도 7b에 도시된 바와 같이, 적어도 레지스터(712, 714 또는 716)는 제2 상태에서 구성된다. 캐시 시스템의 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(102d)를 수신할 때, 캐시 시스템의 논리 회로는 적어도 세트 인덱스 생성(932a, 932b 또는 932c) 각각 및 어드레스(102b)의 태그(104d)에 있는 캐시 세트 인덱스(112d)의 인스턴스에 따라 세트 인덱스(726, 722 또는 728)를 생성한다. 세트 인덱스 생성(932a, 932b 또는 932c)은 레지스터(712, 714 또는 716)에 세트 인덱스(726, 722 또는 728)를 각각 저장하기 위한 것일 수 있다. 세트 인덱스 생성(932a, 932b 또는 932c)은 또한 레지스터(712, 714 또는 716)에 각각 이미 저장된 내용과 최근 생성된 세트 인덱스를 비교하는 데 최근 생성된 세트 인덱스를 사용하기 위한 것일 수 있다. 세트 인덱스 생성(932a, 932b 또는 932c)은 레지스터가 제2 상태에서 구성될 때 발생한다.
도 7a 및 도 7b, 도 8a 및 도 8b 또는 도 9a 및 도 9b에 도시된 캐시 시스템을 통해 구현된 일부 실시형태에서, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 생성된 세트 인덱스가 레지스터(예를 들어, 레지스터(712, 714 또는 716)) 중 하나에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 레지스터에 저장된 내용은 세트 인덱스의 이전의 생성 및 레지스터의 세트 인덱스의 저장 내용으로부터 가져온 것일 수 있다.
또한, 도 7a 및 도 7b, 도 8a 및 도 8b 또는 도 9a 및 도 9b에 도시된 캐시 시스템을 통해 구현된 일부 실시형태에서, 논리 회로는 생성된 세트 인덱스가 연관된 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 연관된 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 메모리 어드레스와 연관된 메모리 시스템의 데이터 세트가 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 논리 회로는 데이터 세트를 캐싱하기 위해 제1 캐시 세트를 할당하고, 생성된 세트 인덱스를 제1 레지스터에 저장하도록 구성될 수 있다. 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트를 포함할 수 있다.
또한, 이러한 실시형태에서, 제1 및 제2 레지스터가 제1 상태에 있을 때, 논리 회로는 프로세서의 실행 유형이 제1 유형일 때, 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터가 제2 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때, 제1 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 이러한 예에서, 복수의 레지스터 각각은 세트 인덱스를 저장하도록 구성될 수 있고, 실행 유형이 제2 유형으로부터 제1 유형으로 변경될 때 논리 회로는 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경하도록 구성될 수 있다.
도 10은 다수의 캐시(예를 들어, 도 10에 도시된 캐시(602a, 602b 및 602c) 참조)를 갖는 캐시 시스템(1000)을 포함하는 예시적인 컴퓨팅 디바이스의 양태를 구체적으로 도시하고, 여기서 캐시 중 적어도 하나는 캐시 세트 연관성(예를 들어, 캐시 세트(610a, 610b 및 601c) 참조)으로 구현된다. 도 10에서, 프로세서(1001) 및 메모리 시스템(603)을 갖는 예시적인 컴퓨팅 디바이스가 또한 도시되어 있다. 도 10에 도시된 바와 같이, 캐시 시스템(1000)은 캐시 시스템(600)과 유사하지만 캐시 시스템(1000)의 경우 프로세서(1001)에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서(1001)로부터의 추측 상태 신호 라인(1004)에 대한 연결부(1002)를 더 포함한다.
유사하게, 캐시 시스템(1000)은 캐시 시스템과 프로세서(1001) 사이에 결합된 커맨드 버스(605a)에 대한 연결부(604a)를 포함하는 것으로 도시되어 있다. 시스템(1000)은 또한 캐시 시스템과 프로세서(1001) 사이에 결합된 어드레스 버스(605b)에 대한 연결부(604b)를 포함한다. 도 1a, 도 1b, 도 1c, 도 1d 및 도 1e에 각각 도시된 어드레스(102a, 102b, 102c, 102d 및 102e)는 캐시 시스템(1000)의 구현에 따라 어드레스 버스(605b)를 통해 각각 전달될 수 있다. 시스템(1000)은 또한 캐시 시스템과 프로세서(1001) 사이에 결합된 데이터 버스(605c)에 대한 연결부(604c)를 포함한다. 시스템은 또한 비-추측 실행 유형 또는 추측 실행 유형을 식별하는 프로세서(1001)로부터의 실행 유형 신호 라인(605d)에 대한 연결부(604d)를 포함한다.
유사하게, 캐시 시스템(1000)은 또한 논리 회로(606)와 유사할 수 있지만 추측 상태 신호 라인(1004)에 대한 연결부(1002)에 결합된 회로부를 위한 논리 회로(1006)를 포함하는 것으로 도시되어 있다.
일부 실시형태에서, 논리 회로(1006)는 복수의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c))에 따라 복수의 캐시 세트(예를 들어, 캐시 세트(610a, 610b 및 610c))를 제어하기 위해 프로세서(1001)에 결합될 수 있다. 복수의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c) 참조)의 각각은 세트 인덱스를 저장하도록 구성될 수 있다.
이러한 실시형태에서, 캐시 시스템(1000)은 프로세서(1001)와 메모리 시스템(603) 사이에 결합되도록 구성될 수 있다. 그리고, 어드레스 버스(605b)에 대한 연결부(604b)가 프로세서(1001)로부터 메모리 어드레스를 수신할 때, 논리 회로(1006)는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고, 생성된 세트 인덱스가 제1 레지스터(예를 들어, 레지스터(612a))에 저장된 내용과 일치하는지 또는 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 논리 회로(1006)는 또한 생성된 세트 인덱스가 제1 레지스터(예를 들어, 레지스터 612a))에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트(예를 들어, 캐시 세트(610a))를 통해, 및 생성된 세트 인덱스가 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트(예를 들어, 캐시 세트(610b))를 통해 커맨드 버스(605a)에 대한 연결부(604a)에서 수신된 커맨드를 구현하도록 구성될 수 있다.
또한, 캐시 시스템(1000)은 도 6에 도시된 대응하는 연결부와 유사한 연결부(608a, 608b 및 608c)를 포함하는 것으로 도시되어 있다. 도 6 및 도 10에 도시된 연결부(608a, 608b 및 608c)와 관련하여, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제1 상태에 있을 때, 논리 회로(606 또는 1006)는 실행 유형이 제1 유형(예를 들어, 비-추측 유형)일 때 제1 캐시 세트(예를 들어, 캐시 세트(610a))를 통해 메모리 시스템(603)에 액세스하기 위해 제2 커맨드 버스(609a)에 커맨드를 제공하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제1 상태에 있을 때, 논리 회로(606 또는 1006)는 실행 유형이 제2 유형(예를 들어, 추측 유형)일 때 제2 캐시 세트(예를 들어, 캐시 세트(610b))를 통해 메모리 시스템에 액세스하기 위해 제2 커맨드 버스(609a)에 커맨드를 제공하도록 구성될 수 있다.
또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제2 상태에 있을 때, 논리 회로(606 또는 1006)는 실행 유형이 제1 유형일 때 제1 캐시 세트 이외의 캐시 세트(예를 들어, 캐시 세트(610b 또는 610c) 또는 도 6 또는 도 10에 도시되지 않은 다른 캐시 세트)를 통해 메모리 시스템(603)에 액세스하기 위해 커맨드를 제2 커맨드 버스(609a)에 제공하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터(예를 들어, 레지스터(612a 및 612b))가 제2 상태에 있을 때, 논리 회로(606 또는 1006)는 실행 유형이 제2 유형일 때 제2 캐시 세트 이외의 캐시 세트(예를 들어, 캐시 세트(610a 또는 610c) 또는 도 6 또는 도 10에 도시되지 않은 다른 캐시 세트)를 통해 메모리 시스템(603)에 액세스하기 위해 커맨드를 제2 커맨드 버스(609a)에 제공하도록 구성될 수 있다.
일부 실시형태에서, 예를 들어, 도 10에 도시된 바와 같이, 제1 유형은 프로세서(1001)에 의한 명령어의 비-추측 실행을 나타내도록 구성될 수 있고; 제2 유형은 프로세서에 의한 명령어의 추측 실행을 나타내도록 구성될 수 있다. 도 10에 도시된 바와 같이, 캐시 시스템(1000)은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서(1001)로부터의 추측 상태 신호 라인(1004)으로의 연결부(1002)를 더 포함한다. 추측 상태 신호 라인(1004)에 대한 연결부(1002)는 추측 실행의 상태를 수신하도록 구성될 수 있고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다.
이러한 실시형태에서, 복수의 레지스터(예를 들어, 레지스터(612a, 612b 및 612c)) 각각은 세트 인덱스를 저장하도록 구성될 수 있고, 실행 유형이 추측 실행 유형으로부터 비-추측 유형으로 변경될 때, 논리 회로(1006)는 추측 실행 유형의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 레지스터(예를 들어, 레지스터(612a))에 저장된 내용과 제2 레지스터(예를 들어, 레지스터(612b))에 저장된 내용을 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 유형으로부터 비-추측 유형으로 변경되면, 논리 회로(1006)는 추측 실행 유형의 상태가 추측 실행 유형의 결과가 거부되어야 함을 나타내는 경우 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경 없이 유지하도록 구성될 수 있다.
일부 실시형태는 적어도 제1 캐시 세트와 제2 캐시 세트를 갖는 복수의 캐시 세트를 포함하는 캐시 시스템을 포함할 수 있다. 캐시 시스템은 또한 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 복수의 레지스터는 적어도 세트 인덱스를 저장하도록 구성된, 제1 캐시 세트와 연관된 제1 레지스터, 및 세트 인덱스를 저장하도록 구성된, 제2 캐시 세트와 연관된 제2 레지스터를 포함할 수 있다. 캐시 시스템은 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부, 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 더 포함할 수 있다.
캐시 시스템은 또한 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로를 더 포함할 수 있다. 그리고, 캐시 시스템은 프로세서와 메모리 시스템 사이에 결합되도록 구성될 수 있다. 제1 및 제2 레지스터가 제1 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고, 실행 유형이 제2 유형일 때 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 제1 및 제2 레지스터가 제2 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때 제1 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고, 실행 유형이 제2 유형일 때 제2 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
어드레스 버스에 대한 연결부는 프로세서로부터 메모리 어드레스를 수신하도록 구성될 수 있고, 메모리 어드레스는 세트 인덱스를 포함할 수 있다.
일부 실시형태에서, 제1 및 제2 레지스터가 제1 상태에 있을 때, 제1 캐시 세트와 연관된 제1 세트 인덱스는 제1 레지스터에 저장되고, 제2 캐시 세트와 연관된 제2 세트 인덱스는 제2 레지스터에 저장된다. 제1 및 제2 레지스터가 제2 상태일 때, 제1 세트 인덱스는 제1 레지스터 이외의 복수의 레지스터 중 다른 레지스터에 저장될 수 있고, 제2 세트 인덱스는 제2 레지스터 이외의 복수의 레지스터 중 다른 레지스터에 저장될 수 있다. 이러한 예에서, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고; 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 그리고, 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 더 구성될 수 있다.
메모리 어드레스와 연관된 메모리 시스템의 데이터 세트가 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 논리 회로는 데이터 세트를 캐싱하기 위해 제1 캐시 세트를 할당하고, 생성된 세트 인덱스를 제1 레지스터에 저장하도록 구성될 수 있다.
일부 실시형태에서, 생성된 세트 인덱스는 실행 유형 신호 라인에 의해 식별된 실행 유형에 더 기초하여 생성된다. 이러한 예에서, 생성된 세트 인덱스는 메모리 어드레스의 비트의 미리 결정된 세그먼트, 및 실행 유형 신호 라인에 의해 식별되는 실행 유형을 나타내는 비트를 포함할 수 있다.
일부 실시형태는 프로세서, 메모리 시스템 및 캐시 시스템을 포함하는 시스템을 포함할 수 있다. 캐시 시스템은 제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트를 포함할 수 있고, 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함하는 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 캐시 시스템은 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 및 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부를 더 포함할 수 있다.
캐시 시스템은 또한 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로를 포함할 수 있다. 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고; 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 그리고, 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수 있다.
캐시 시스템은 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 더 포함할 수 있다. 생성된 세트 인덱스는 실행 유형 신호 라인에 의해 식별되는 유형에 기초하여 추가로 생성될 수 있다. 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트, 및 실행 유형 신호 라인에 의해 식별된 유형을 나타내는 비트를 포함할 수 있다.
도 11a 및 도 11b는 본 발명의 일부 실시형태에 따라 섀도우 캐시에 내용의 수락을 준비하기 위해 주 캐시에 캐싱된 내용을 저장하기 위해 주 캐시와 섀도우 캐시 사이의 내용을 동기화하기 위한 배경 동기화 회로부를 도시한다. 도 11a 및 도 11b의 캐시 시스템은 배경 동기화 회로부(1102)를 포함한다. 예를 들어, 캐시(1124)와 캐시(1126)는 도 2 또는 도 4의 캐시(202a 및 202b)일 수 있거나, 또는 도 6 또는 도 10의 캐시(602a 및 602b)일 수 있다. 배경 동기화 회로부(1102)는 논리 회로(206, 406, 606 또는 1006)의 일부일 수 있다.
도 11a는 캐시(1124)가 비-추측 실행에서 주 캐시로 사용되고, 캐시(1126)가 추측 실행에서 섀도우 캐시로 사용되는 시나리오를 예시한다. 배경 동기화 회로부(1102)는 조건부 추측 실행이 필요한 것으로 확인된 경우, 캐시(1126)가 후속 비-추측 실행에서 주 캐시로 사용될 수 있고, 캐시(1124)가 추측 실행의 추가 인스턴스에서 섀도우 캐시로 사용될 수 있도록 캐시(1124)로부터 캐시(1126)로 캐싱된 내용을 동기화(1130)하도록 구성된다. 캐시(1124)로부터 캐시(1126)로 캐싱된 내용의 동기화(1130)는 후속적으로 캐시(1124)를 섀도우 캐시로 용도 변경할 때 실행 결과가 손실되지 않도록 이전 실행 결과를 캐시(1126)에 복사한다. 캐시(1124)로부터 캐싱된 내용은 캐시(1124)에 캐싱될 수 있지만 아직 메모리(예를 들어, 메모리(203 또는 603))로 플러시(flushed)되지는 않는다. 또한, 캐시(1124)에 캐싱된 동일한 사본을 갖는 메모리 내용 중 일부는 또한 캐시(1126)가 이후에 주 캐시로 사용될 때, 캐시(1124)에 이전에 캐싱된 내용이 또한 캐시(1126)에서 이용 가능하도록 캐시(1124)로부터 캐시(1126)로 복사될 수 있다. 이렇게 하면 이전에 캐싱된 내용에 대한 액세스 속도를 높일 수 있다. 캐시(1124)와 캐시(1126) 사이에 내용을 복사하는 것은 메모리로부터 캐시 시스템으로 데이터를 검색하는 것보다 더 빠르다.
일부 실시형태에서, 프로그램이 일반 실행 동안 변수를 참조하는 경우, 변수는 캐싱될 수 있다. 이러한 예에서 추측 동안 라이트스루 캐시(write-through cache) 캐시에서 변수를 참조하는 경우 주 메모리의 값은 유효하고 정확하다. 추측 동안 라이트백(write-back) 캐시에서 변수를 참조하는 경우, 도 11a에 대해 설명된 전술한 예의 특징을 사용할 수 있고, 변수의 유효 값은 캐시(1124)에 있을 수 있다.
도 11a에 도시된 시나리오에서, 프로세서(예를 들어, 프로세서(201, 401, 601 또는 1001))는 비-추측 실행 모드에서 제1 명령어 세트를 실행할 수 있다. 제1 명령어 세트를 실행하는 동안 프로세서는 메모리 어드레스에 액세스하여 메모리에서 데이터(예를 들어, 명령어 및 피연산자)를 로딩하고 계산 결과를 저장할 수 있다. 캐시(1124)가 주 캐시로 사용되기 때문에, 데이터 및/또는 계산 결과의 내용은 캐시(1124)에 캐싱될 수 있다. 예를 들어, 캐시(1124)는 아직 메모리에 라이트백되지 않은 계산 결과를 저장할 수 있고, 캐시(1124)는 명령어의 후속 실행에 사용될 수 있는 로딩된 데이터(예를 들어, 명령어 및 피연산자)를 저장할 수 있다.
제2 명령어 세트의 추측 실행에서 섀도우 캐시로 사용하기 위한 캐시 B(1226)를 준비하기 위해, 배경 동기화 회로부(1102)는 동기화(1130) 시에 캐시(1124)로부터 캐시(1126)로 캐싱된 내용을 복사한다. 복사 동작의 적어도 일부는 프로세서가 캐시 시스템을 통해 메모리에 액세스하는 것과는 독립적인 방식으로 배경에서 수행될 수 있다. 예를 들어, 프로세서가 제1 명령어 세트의 비-추측 실행에서 제1 메모리 어드레스에 액세스할 때, 배경 동기화 회로부(1102)는 제2 메모리 어드레스에 대해 캐시(1124)에 캐싱된 내용을 캐시(1126)로 복사할 수 있다. 일부 경우에 캐시 시스템을 통해 메모리에 액세스하는 것과 병렬로 배경에서 복사 동작을 수행할 수 있다. 예를 들어, 프로세서가 계산 결과를 저장하기 위해 제1 명령어 세트의 비-추측 실행에서 제1 메모리 어드레스에 액세스할 때, 배경 동기화 회로부는 계산 결과를 제1 메모리 어드레스에 대한 캐시 내용으로서 캐시(1126)에 복사할 수 있다.
일 구현예에서, 배경 동기화 회로부(1102)는 캐시(1126)가 제2 명령어 세트의 추측 실행에 사용되는 것이 허용되기 전에 동기화 동작을 완료하도록 구성된다. 따라서, 캐시(1126)가 제2 명령어 세트의 추측 실행에 사용되도록 인에이블될 때, 캐시(1124)의 유효 내용은 캐시(1126)에서도 찾아볼 수 있다. 그러나, 동기화 동작은 섀도우 캐시로서 캐시(1126)의 사용을 지연시킬 수 있다. 대안적으로, 배경 동기화 회로부(1102)는 캐시(1124)로부터 캐시(1126)로 더티 내용(dirty content)의 동기화를 우선화하도록 구성된다. 더티 내용은 캐시의 데이터가 수정되고 주 메모리의 데이터가 수정되지 않은 경우일 수 있다.
캐시(1124)에 캐싱된 더티 내용은 메모리의 대응하는 하나 이상의 어드레스에 저장된 내용보다 더 최신일 수 있다. 예를 들어, 프로세서가 계산 결과를 어드레스에 저장할 때, 캐시(1124)는 어드레스에서 계산 결과를 메모리에 즉시 기입하지 않고 어드레스에 대한 계산 결과를 캐싱할 수 있다. 계산 결과를 이 어드레스에서 메모리에 라이트백할 때, 캐싱된 내용은 더 이상 더티한 것으로 간주되지 않는다. 캐시(1124)는 캐시(1124)에 캐싱된 더티 내용을 추적하기 위해 데이터를 저장한다. 배경 동기화 회로(1102)는 섀도우 캐시로서 기능하기 위해 캐시(1126)를 준비하기 위해 캐시(1124)로부터 캐시(1126)로 더티 내용을 자동으로 복사할 수 있다.
선택적으로, 동기화 동작의 완료 전에, 배경 동기화 회로부(1102)는 캐시(1126)가 제2 명령어 세트의 조건부 추측 실행에서 섀도우 캐시로서 기능하는 것을 허용할 수 있다. 캐시(1126)가 추측 실행에서 섀도우 캐시로 사용되는 시간 기간 동안, 배경 동기화 회로(1102)는 캐시(1124)로부터 캐시(1126)로 캐싱된 내용을 복사하는 동기화 동작(1130)을 계속할 수 있다. 배경 동기화 회로부(1102)는 캐시(1126)가 주 캐시로 수락되기 전에 캐시(1124)로부터 캐시(1126)로의 더티 내용의 동기화를 적어도 완료하도록 구성된다. 예를 들어, 제2 명령어 세트의 실행이 필요하다는 지시가 있을 때, 배경 동기화 회로부(1102)는 캐시(1124)의 더티 내용이 캐시(1126)에 동기화되었는지 여부를 결정하고; 지시가 없는 경우, 주 캐시로서 캐시(1126)의 사용은 동기화가 완료될 때까지 연기된다.
일부 구현예에서, 배경 동기화 회로부(1102)는 캐시(1126)가 주 캐시로서 수락된 후에도, 그러나 제3 명령어 세트의 조건부 추측 실행에서 캐시(1124)가 섀도우 캐시로 사용되기 전이라도 동기화 동작을 계속할 수 있다.
동기화 동작(1130)이 완료되기 전에 캐시 시스템은 메모리 어드레스의 내용이 캐시(1126)에서 발견되지 않을 때, 캐시 시스템이 캐시(1124)를 점검하여 내용이 캐시(1124)에 있는지 여부를 결정하고; 만약 있다면, 내용을 (메모리로부터 직접 로딩하는 것이 아니라) 캐시(1124)로부터 캐시(1126)로 복사하도록 추측 실행 동안 캐시(1124)를 캐시(1126)와 메모리 사이의 보조 캐시로 구성할 수 있다. 프로세서가 데이터를 메모리 어드레스에 저장하고 데이터가 캐시(1126)에 캐싱되면, 캐시 시스템은 2차 캐시로 캐시(1124)에 캐싱된 내용을 점검하여 무효화한다.
캐시(1126)가 제2 명령어 세트의 추측 실행 결과를 수락한 후 주 캐시로 재구성된 후, 배경 동기화 회로부(1102)는 도 11b에 도시된 바와 같이 캐시(1126)로부터 캐시(1124)로 캐싱된 내용을 동기화(1132)하기 시작할 수 있다.
제2 명령어 세트의 추측 실행 후, 프로세서의 추측 상태가 제2 명령어 세트의 실행 결과가 거부되어야 함을 나타내는 경우, 캐시(1124)는 주 캐시로서 기능을 유지하고; 캐시(1126)의 내용은 무효화될 수 있다. 무효화는 캐시(1126)가 비어 있는 것으로 표시된 모든 항목을 가져서, 이에 따라 임의의 후속 추측은 비어 있는 추측 캐시로 시작하는 것을 포함할 수 있다.
배경 동기화 회로부(1102)는 제3 명령어 세트의 추측 실행을 준비하기 위해 캐시(1124)로부터 캐시(1126)로 캐싱된 내용을 다시 동기화(1130)할 수 있다.
일부 실시형태에서, 캐시(1124)와 캐시(1126) 각각은 전용된 및 고정된 캐시 세트 집합을 갖고; 구성 가능한 비트는 도 3a, 도 3b, 도 5a 및 도 5b에 도시된 바와 같이 주 캐시와 섀도우 캐시로서의 캐시(1124 및 1126)의 사용을 각각 제어하는 데 사용된다.
다른 실시형태에서, 캐시(1124)와 캐시(1126)는 캐시 세트의 풀(pool)을 공유할 수 있고, 캐시 세트의 일부는 도 6 내지 도 10에 도시된 바와 같이 캐시(1124)와 캐시(1126)에 동적으로 할당될 수 있다. 캐시(1124)를 주 캐시로 사용하고 캐시(1126)를 섀도우 캐시로 사용하는 경우, 캐시(1126)는 캐시(1124)보다 적은 수의 캐시 세트를 가질 수 있다. 캐시(1126)에 있는 캐시 세트 중 일부는, 추측 실행의 결과가 수락되어야 하는 것으로 결정되는 경우, 캐시(1124)의 캐시 세트의 일부를 그 다음 추측 실행에서 섀도우 캐시로 사용하도록 재구성할 수 있도록 캐시(1124)에 있는 캐시 세트의 일부의 섀도우일 수 있고, 추측 실행에 의해 영향을 받지 않는 캐시 세트의 나머지 부분은, 영향을 받지 않은 부분의 캐싱된 내용을 후속 비-추측 실행에서 추가로 사용할 수 있도록 캐시(1124)로부터 캐시(1126)로 재할당될 수 있다.
도 12는 본 발명의 일부 실시형태에 따라 도 11a 내지 도 11b의 배경 동기화 회로부(1102)의 예시적인 동작을 도시한다.
도 12에 도시된 바와 같이, 동작(1202)에서 캐시 시스템은 제1 캐시를 주 캐시로 구성하고, 제2 캐시를 섀도우 캐시로 구성한다. 예를 들어, 하드웨어 구조가 고정된 전용 캐시를 제1 캐시와 제2 캐시로 사용하는 경우, 구성 가능한 비트는 도 2 내지 도 5b에 도시된 바와 같이 제1 캐시를 주 캐시로 구성하고 제2 캐시를 섀도우 캐시로 구성하는 데 사용될 수 있다. 대안적으로, 캐시 세트는 도 6 내지 도 10에 도시된 방식으로 레지스터를 사용하여 캐시 세트의 풀로부터 제1 캐시와 제2 캐시로 할당될 수 있고 제1 캐시와 제2 캐시로부터 할당될 수 있다.
동작(1204)에서, 캐시 시스템은 현재 실행 유형이 비-추측으로부터 추측으로 변경되었는지 여부를 결정한다. 예를 들어, 프로세서가 캐시 시스템(200)을 통해 메모리에 접근하는 경우, 프로세서는 현재 메모리 액세스가 조건부 추측 실행과 연관되어 있는지 여부에 대한 지시를 추가로 제공한다. 예를 들어, 지시는 실행 유형을 지정하도록 구성된 신호 라인(205d)에 제공될 수 있다.
현재 실행 유형이 비-추측으로부터 추측으로 변경되지 않으면, 캐시 시스템은 동작(1206)에서 주 캐시로서 제1 캐시를 사용하여 프로세서로부터의 메모리 액세스 요청을 서비스한다. 메모리 액세스가 제1 캐시에 캐싱된 내용을 변경하면, 배경 동기화 회로부(1102)는 동작(1208)에서 제1 캐시에 캐싱된 내용을 제2 캐시로 복사할 수 있다. 예를 들어, 배경 동기화 회로부(1102)는 도 2의 논리 회로(206), 도 4의 논리 회로(406), 도 6의 논리 회로(606) 및/또는 도 10의 논리 회로(1006)의 일부일 수 있다. 배경 동기화 회로부(1102)는 제1 캐시에 캐싱된 더티 내용의 사본을 우선화할 수 있다.
도 12에서, 동작(1204) 내지 동작(1208)은 캐시 시스템(200)이 현재 실행 유형이 추측으로 변경되었다고 결정할 때까지 반복된다.
선택적으로, 배경 동기화 회로부(1102)는 제2 캐시를 사용하여 추측 실행 동안 캐시 시스템이 동작(1212)에서 프로세서의 메모리 요청을 서비스하도록 허용하기 전에 적어도 더티 내용을 제1 캐시로부터 제2 캐시로 동기화하는 것을 완료하도록 동작(1210)에서 제1 캐시에 캐싱된 내용을 제2 캐시로 계속 복사하도록 구성된다.
선택적으로, 배경 동기화 회로부(1102)는 동기화 동작을 계속할 수 있는 반면, 캐시 시스템은 동작(1212)에서 추측 실행 동안 제2 캐시를 사용하여 프로세서로부터 메모리 요청을 서비스한다.
동작(1214)에서 캐시 시스템은 현재 실행 유형이 비-추측으로 변경되었는지 여부를 판단한다. 현재 실행 유형이 추측으로 유지되는 경우 동작(1210)과 동작(1212)은 반복될 수 있다.
동작(1214)에서 현재 실행 유형이 비-추측으로 변경되었다는 결정에 응답하여, 캐시 시스템은 추측 실행의 결과가 수락되어야 할지 여부를 결정한다. 추측 실행의 결과는 제2 캐시에 캐싱된 내용의 변경에 대응한다. 예를 들어, 프로세서(401)는 도 4에 도시된 추측 상태 신호 라인(404) 또는 도 10의 추측 상태 신호 라인(1004)을 통해 추측 실행의 결과가 수락되어야 하는지 여부의 지시를 제공할 수 있다.
동작(1216)에서 캐시 시스템이 추측 실행의 결과를 거부하는 것으로 결정하면, 캐시 시스템은 동작(1222)에서 제2 캐시에 현재 캐싱된 캐싱 내용을 폐기할 수 있다(예를 들어, 제2 캐시에서 캐시 블록의 무효 비트를 설정하는 것을 통해 폐기할 수 있다). 이후, 동작(1244)에서, 캐시 시스템은 제1 캐시를 주 캐시로 유지하고, 제2 캐시를 섀도우 캐시로 유지할 수 있고; 동작(1208)에서, 배경 동기화 회로부(1102)는 캐싱된 내용을 제1 캐시로부터 제2 캐시로 복사할 수 있다. 실행이 비-추측으로 유지되는 경우 동작(1204) 내지 동작(1208)이 반복될 수 있다.
동작(1216)에서 캐시 시스템이 추측 실행의 결과가 수락되어야 한다고 결정하면, 배경 동기화 회로부(1102)는 캐시 시스템이 제1 캐시를 섀도우 캐시로 재구성하는 것을 허용하기 전에 제1 캐시로부터 제2 캐시로의 적어도 더티 내용의 동기화를 완료하기 위해 동작(1218)에서 제1 캐시에 캐싱된 내용을 제2 캐시로 추가로 복사하도록 구성된다. 동작(1220)에서 캐시 시스템은 동작(1202)과 다소 유사한 방식으로 제1 캐시를 섀도우 캐시로 구성하고 제2 캐시를 주 캐시로 구성한다. 제1 캐시를 섀도우 캐시로 구성할 때 캐시 시스템은 동작(1222, 1224, 1208 및 1204)과 다소 유사한 방식으로 내용을 무효화한 다음 제2 캐시에 캐싱된 내용을 제1 캐시와 동기화할 수 있다.
예를 들어, 하드웨어 구조가 고정된 전용 캐시를 제1 캐시와 제2 캐시로 사용하는 경우, 구성 가능한 비트는 동작(1220)에서 제1 캐시를 섀도우 캐시로 구성하고 제2 캐시를 주 캐시로 구성하도록 변경될 수 있다. 대안적으로, 도 6 내지 도 10에 도시된 방식으로 제1 캐시와 제2 캐시를 형성하도록 레지스터를 사용하여 캐시 세트의 풀로부터 캐시 세트를 할당할 때, 초기에 제1 캐시에 있지만 추측 실행에 의해 영향을 받지 않는 캐시 세트는 제2 캐시에 합류하기 위해 연관된 레지스터(예를 들어, 도 6 및 도 10에 도시된 레지스터(612a 및 612b))를 통해 재구성될 수 있다. 처음에 제1 캐시에 있는 (그러나 이제 제2 캐시의 내용에 비추어 오래된 내용을 갖는) 캐시 세트는 새로운 제1 캐시에서와 같이 재구성될 수 있다. 선택적으로 캐시 세트의 이용 가능한 풀로부터 추가 캐시 세트를 할당하고 새로운 제1 캐시에 추가할 수 있다. 선택적으로 캐시 내용이 무효화된 일부 캐시 세트는 향후 할당을 위해 (예를 들어, 주 캐시로서 제2 캐시에 추가하거나 섀도우 캐시로서 제1 캐시에 추가하기 위해) 이용 가능한 캐시 세트 풀에 다시 놓일 수 있다.
본 명세서에서, 본 발명은 특정 예시적인 실시형태를 참조하여 설명되었다. 그러나, 이하의 청구범위에 제시된 바와 같은 보다 넓은 정신 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음은 명백하다. 따라서, 본 명세서 및 도면은 본 발명을 제한하는 것이 아니라 본 발명을 예시적인 것으로 간주되어야 한다.
예를 들어, 실시형태는 제1 캐시; 제2 캐시; 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부; 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부; 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부; 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부; 및 실행 유형에 따라 제1 캐시와 제2 캐시를 제어하도록 결합된 논리 회로를 포함하는 캐시 시스템을 포함할 수 있다. 이러한 실시형태에서, 캐시 시스템은 프로세서와 메모리 시스템 사이에 결합되도록 구성된다. 또한, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고 제1 캐시는 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 커맨드를 서비스하도록 구성될 때, 논리 회로는 제1 캐시에 캐싱된 내용의 일부를 제2 캐시에 복사하도록 구성된다.
이러한 실시형태에서, 논리 회로는 커맨드 버스에서 수신된 현재 커맨드와 독립적으로 제1 캐시에 캐싱된 내용의 일부를 제2 캐시로 복사하도록 구성될 수 있다.
또한, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터의 커맨드를 서비스하도록 구성될 때, 논리 회로는 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경된 것에 응답하여 제2 캐시를 사용하여 커맨드 버스로부터 후속 커맨드를 서비스하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제1 유형으로부터 제2 유형으로 변경된 후 후속 커맨드를 서비스하기 전에 제1 캐시로부터 제2 캐시로의 내용의 일부의 동기화를 완료하도록 구성될 수 있다. 논리 회로는 또한 후속 커맨드를 서비스하는 동안 제1 캐시로부터 제2 캐시로 내용의 일부의 동기화를 계속하도록 구성될 수 있다.
이러한 실시형태에서, 캐시 시스템은 구성 가능한 데이터 비트를 더 포함할 수 있고, 논리 회로는 구성 가능한 데이터 비트에 따라 제1 캐시와 제2 캐시를 제어하도록 더 연결된다. 구성 가능한 데이터 비트가 제1 상태에 있을 때 논리 회로는 실행 유형이 제1 유형일 때 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고, 실행 유형이 제2 유형일 때 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 그리고, 구성 가능한 데이터 비트가 제2 상태에 있을 때, 논리 회로는 실행 유형이 제1 유형일 때 제2 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고, 실행 유형이 제2 유형일 때 제1 캐시를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되면 논리 회로는 구성 가능한 데이터 비트를 토글하도록 구성될 수도 있다.
이러한 실시형태에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성된다. 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낸다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 구성 가능한 데이터 비트를 토글하고; 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 구성 가능한 데이터 비트를 변경 없이 유지하도록 구성될 수 있다.
또한, 이러한 실시형태에서, 제1 캐시와 제2 캐시는 제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트; 및 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 함께 포함한다. 이러한 예에서, 논리 회로는 복수의 레지스터에 따라 복수의 캐시 세트를 제어하도록 더 결합될 수 있다. 또한, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고; 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수도 있다. 또한 메모리 어드레스와 연관된 메모리 시스템의 데이터 세트가 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 논리 회로는 데이터 세트를 캐싱하기 위해 제1 캐시 세트를 할당하고, 생성된 세트 인덱스를 제1 레지스터에 저장하도록 구성될 수 있다.
추가적으로, 캐시 세트가 있는 이러한 실시형태에서, 캐시 시스템은 또한 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 포함할 수 있고, 생성된 세트 인덱스는 실행 유형 신호 라인에 의해 식별된 유형에 따라 추가로 생성된다. 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트, 및 실행 유형 신호 라인에 의해 식별된 유형을 나타내는 비트를 포함할 수 있다. 또한, 제1 및 제2 레지스터가 제1 상태에 있을 때, 논리 회로는 실행 유형이 제1 유형일 때 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고, 실행 유형이 제2 유형일 때 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 그리고, 제1 및 제2 레지스터가 제2 상태에 있을 때, 논리 회로는 실행 유형이 제1 유형일 때 제1 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고, 실행 유형이 제2 유형일 때 제2 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성된다.
캐시 세트가 있는 이러한 실시형태에서, 복수의 레지스터 각각은 세트 인덱스를 저장하도록 구성될 수 있다. 그리고 실행 유형이 제2 유형으로부터 제1 유형으로 변경되면, 논리 회로는 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경하도록 구성될 수 있다. 또한 제1 유형은 프로세서에 의한 명령어의 비-추측 실행을 나타내도록 구성될 수 있고, 제2 유형은 프로세서에 의한 명령어의 추측 실행을 나타내도록 구성될 수 있다. 이러한 예에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성되고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낸다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우, 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경하고; 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우, 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경 없이 유지하도록 구성될 수 있다.
또한, 예를 들어 실시형태는 일반적으로, 복수의 캐시 세트, 및 이 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함하는 캐시 시스템을 포함할 수 있다. 복수의 캐시 세트는 제1 캐시 세트와 제2 캐시 세트를 포함하고, 복수의 레지스터는 제1 캐시 세트와 연관된 제1 레지스터, 및 제2 캐시 세트와 연관된 제2 레지스터를 포함한다. 유사하게, 이러한 실시형태에서, 캐시 시스템은 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 데이터 버스에 대한 연결부, 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부, 및 실행 유형에 따라 복수의 캐시 세트를 제어하도록 결합된 논리 회로를 포함할 수 있다. 캐시 시스템은 또한 프로세서와 메모리 시스템 사이에 결합되도록 구성될 수 있다. 그리고, 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시 세트가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 논리 회로는 제1 캐시 세트에 캐싱된 내용의 일부를 제2 캐시 세트로 복사하도록 구성될 수 있다.
캐시 세트가 있는 이러한 실시형태에서, 논리 회로는 커맨드 버스에서 수신된 현재 커맨드와 독립적으로 제1 캐시 세트에 캐싱된 내용의 일부를 제2 캐시 세트로 복사하도록 구성될 수 있다. 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 제1 캐시 세트가 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 논리 회로는 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경되는 것에 응답하여 제2 캐시 세트를 사용하여 커맨드 버스로부터 후속 커맨드를 서비스하도록 구성될 수 있다. 논리 회로는 실행 유형이 제1 유형으로부터 제2 유형으로 변경된 후 후속 커맨드를 서비스하기 전에 제1 캐시 세트로부터 제2 캐시 세트로 내용의 일부의 동기화를 완료하도록 구성될 수도 있다. 논리 회로는 또한 후속 커맨드를 서비스하는 동안 제1 캐시 세트로부터 제2 캐시 세트로 내용의 일부의 동기화를 계속하도록 구성될 수 있다.
또한, 캐시 세트가 있는 이러한 실시형태에서, 논리 회로는 복수의 레지스터에 따라 복수의 캐시 세트를 제어하도록 더 결합될 수 있다. 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고; 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수도 있다. 또한, 메모리 어드레스와 연관된 메모리 시스템의 데이터 세트가 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 논리 회로는 데이터 세트를 캐싱하기 위해 제1 캐시 세트를 할당하고, 생성된 세트 인덱스를 제1 레지스터에 저장하도록 구성될 수 있다.
추가적으로, 캐시 세트가 있는 이러한 실시형태에서, 캐시 시스템은 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 더 포함할 수 있고, 생성된 세트 인덱스는 실행 유형 신호 라인에 의해 식별된 유형에 기초하여 추가로 생성될 수 있다. 생성된 세트 인덱스는 메모리 어드레스의 미리 결정된 비트 세그먼트, 및 실행 유형 신호 라인에 의해 식별된 유형을 나타내는 비트를 포함할 수 있다. 제1 및 제2 레지스터가 제1 상태에 있을 때, 논리 회로는 실행 유형이 제1 유형일 때, 제1 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다. 그리고, 제1 및 제2 레지스터가 제2 상태에 있을 때, 논리 회로는 실행 유형이 제1 유형일 때, 제1 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하고; 실행 유형이 제2 유형일 때, 제2 캐시 세트 이외의 복수의 캐시 세트 중 다른 캐시 세트를 통해 메모리 시스템에 액세스하기 위해 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성될 수 있다.
캐시 세트가 있는 이러한 실시형태에서, 복수의 레지스터 각각은 세트 인덱스를 저장하도록 구성되고, 실행 유형이 제2 유형으로부터 제1 유형으로 변경될 때 논리 회로는 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경하도록 구성될 수 있다. 또한, 제1 유형은 프로세서에 의한 명령어의 비-추측 실행을 나타내도록 구성될 수 있고, 제2 유형은 프로세서에 의한 명령어의 추측 실행을 나타내도록 구성될 수 있다.
캐시 세트가 있는 이러한 실시형태에서, 캐시 시스템은 또한 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성되고, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낸다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우, 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경하고; 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우, 제1 레지스터에 저장된 내용과 제2 레지스터에 저장된 내용을 변경 없이 유지하도록 구성될 수 있다.
또한, 캐시 세트가 있는 이러한 실시형태에서, 캐시 세트는 캐시 시스템 내의 복수의 캐시 중에 분할될 수 있다. 예를 들어, 캐시 세트는 복수의 캐시 중 제1 및 제2 캐시 중에 분할될 수 있다.
도 13, 도 14a, 도 14b, 도 14c, 도 15a, 도 15b, 도 15c, 및 도 15d는 본 발명의 일부 실시형태에 따라 추측 실행을 가속화하기 위해 예비 캐시 세트(예를 들어, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d) 참조)를 포함하는 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1310a, 1310b, 1310c 및 1310d) 참조)를 갖는 캐시 시스템(예를 들어, 도 13에 도시된 캐시 시스템(1000) 참조)을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
추측 실행의 보안을 위해 섀도우 캐시를 사용하고, 섀도우 캐시에 내용을 수락할 준비를 하기 위해 주 캐시에 캐싱된 내용을 저장하기 위해 주 캐시와 섀도우 캐시 간의 내용을 동기화하는 것에 더하여, 예비 캐시 세트(예를 들어, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310b) 및 도 15d에 도시된 캐시 세트(1310c) 참조))는 추측 실행을 가속화하는 데 사용될 수 있다. 예비 캐시 세트를 사용하여 섀도우 캐시를 사용하지 않고 추측 실행을 가속화할 수도 있다. 섀도우 캐시로 사용되는 캐시 세트에 보유된 데이터는 유효화되어 일반 실행에 사용될 수 있다(예를 들어, 도 14a 및 도 15a에 도시된 캐시 세트(1310c) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310d) 및 도 15d에 도시된 캐시 세트(1310b) 참조, 여기서 각각은 추측 실행에 사용될 수 있고, 섀도우 캐시의 캐시 세트일 수 있고, 그런 다음 내용 유효성 검사 후 일반적인 실행에 사용될 수 있음). 그리고, 일반 또는 비-추측 실행을 위한 주 캐시로 사용되는 일부 캐시 세트(예를 들어, 도 14a 및 도 15a에 도시된 캐시 세트(1310b) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310c) 및 도 15d에 도시된 캐시 세트(1310d) 참조)는 추측 실행을 위한 섀도우 캐시로 사용할 준비가 되지 않았을 수 있다. 따라서 하나 이상의 캐시 세트를 예비 캐시 세트로 사용하여 캐시 세트 이용 가능성을 기다리는 지연을 방지할 수 있다(예를 들어, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310b) 및 도 15d에 도시된 캐시 세트(1310c) 참조)).
추측이 확인되면 섀도우 캐시로 사용되는 캐시 세트의 내용을 유효하고 최신 상태인 것으로 확인하고, 따라서 추측 실행을 위한 섀도우 캐시로 사용된 이전의 캐시 세트는 일반 실행에 사용된다. 예를 들어, 도 14a 및 도 15a에 도시된 캐시 세트(1310c) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310d) 및 도 15d에 도시된 캐시 세트(1310b)를 참조하면, 각각의 캐시 세트는 추측 실행에 사용될 수 있고, 섀도우 캐시의 캐시 세트일 수 있으며, 내용 유효성 검사 후 일반적인 실행에 사용될 수 있다. 그러나 초기에 일반 캐시로 사용된 일부 캐시 세트는 후속 추측 실행에 사용될 준비가 되지 않았을 수 있다. 예를 들어, 도 14a 및 도 15a에 도시된 캐시 세트(1310b) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310c) 및 도 15d에 도시된 캐시 세트(1310d)를 참조하면, 각각의 캐시 세트는 일반 캐시의 일부로 사용되지만 후속 추측 실행에 사용할 준비가 되지 않았을 수 있다. 따라서 하나 이상의 캐시 세트를 예비 캐시 세트로 사용하여 캐시 세트 이용 가능성을 기다리는 지연을 방지하고 추측 실행을 가속화할 수 있다. 예를 들어, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310b) 및 도 15d에 도시된 캐시 세트(1310c)를 참조하면, 각각의 캐시 세트는 예비 캐시 세트로 사용되고 있다.
캐시 시스템이 배경 동기화 회로부(예를 들어, 배경 동기화 회로부(1102) 참조)를 갖는 일부 실시형태에서, 일반 캐시의 캐시 세트로부터 섀도우 캐시의 대응하는 캐시 세트로의 동기화(예를 들어, 도 11a에 도시된 동기화(1130) 참조)가 아직 완료되지 않은 경우, 일반 캐시의 캐시 세트는 그 다음 추측 실행에 사용하기 위해 즉시 해제될 수 없다. 이러한 상황에서 예비 캐시 세트가 없다면, 그 다음 추측 실행은 일반 캐시에서 대응하는 캐시 세트가 해제될 수 있도록 동기화가 완료될 때까지 기다려야 한다. 이것은 예비 캐시 세트가 유용한 경우의 단 하나의 예일 뿐이다. 일반 캐시의 캐시 세트를 즉시 해제할 수 없는 많은 다른 상황이 있다.
또한, 예를 들어, 추측 실행은 일반 캐시에서 사용된 캐시 세트에 캐싱된 메모리 영역과 중복되지 않는 메모리 시스템(예를 들어, 도 6, 도 10 및 도 13의 메모리 시스템(603) 참조)의 메모리 영역을 참조할 수 있다. 추측 실행의 결과를 수락한 결과, 섀도우 캐시와 일반 캐시의 캐시 세트는 이제 모두 일반 캐시에 있다. 이것은 캐시 시스템이 그 다음 추측 실행을 지원하기 위해 캐시 세트를 해제하는 데 시간이 걸리기 때문에 지연을 야기할 수 있다. 캐시 세트를 해제하려면 캐시 시스템이 최소 사용된 캐시 세트와 같은 캐시 세트를 식별하고, 캐시 세트를 메모리 시스템과 동기화할 필요가 있다. 캐시에 메모리 시스템보다 최신 데이터가 있는 경우 데이터는 메모리 시스템에 기입될 필요가 있다.
추가적으로, 예비 캐시 세트를 사용하는 시스템(예를 들어, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310b) 및 도 15d에 도시된 캐시 세트(1310c) 참조)은 또한 배경 동기화 회로부(예를 들어, 배경 동기화 회로부(1102))를 사용할 수 있다. 초기 추측이 확인되면, 초기 추측에 사용된 캐시 세트(예를 들어, 도 14a 및 도 15a에 도시된 캐시 세트(1310c) 참조)는 주 실행에 사용되는 캐시 세트(예를 들어, 주 또는 비-추측 실행에 사용된 캐시 세트의 세트의 캐시 세트인 도 14a, 도 14b, 도 14c 및 도 15a, 도 15b, 도 15c 및 도 15d에 도시된 캐시 세트(1310a) 참조)의 세트에 합류하도록 전환될 수 있다. 추측 실패의 경우에 사용되었던 이전의 주 실행의 캐시 세트(예를 들어, 도 14a 및 도 15a에 도시된 캐시 세트(1310b) 및 도 15b 및 도 15c에 도시된 캐시 세트(1310c) 및 도 15d의 캐시 세트(1310d) 참조)를 사용하는 대신, 그 다음 예측 실행에 예비 캐시 세트(예를 들어, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d)뿐만 아니라 도 15b 및 도 15c에 도시된 캐시 세트(1310b) 및 도 15d의 캐시 세트(1310c) 참조)를 즉시 이용 가능할 수 있다. 예비 캐시 세트는 예를 들어 배경 동기화 회로부(1102)를 통해 그 다음 추측 실행을 위해 업데이트될 수 있다. 그리고, 배경 동기화로 인해, 도 14a 및 도 15a에 도시된 예비 캐시 세트(1310d)와 같은 예비 캐시 세트는 도 14a 및 도 15a에 도시된 캐시 세트(1310c)와 같이 추측 실행을 위해 현재 사용된 캐시 세트가 일반 실행을 위해 수락될 준비가 될 때 사용 준비가 된다. 이러한 방식으로 그 다음 추측 실행을 위해 그 다음 캐시 세트의 사용을 기다리는 지연이 없게 된다. 그 다음 추측 실행을 준비하기 위해, 도 14a 및 도 15a에 도시된 캐시 세트(1310c)와 같은 예비 캐시 세트는 시스템에서 그 다음 추측 실행 또는 최소 사용 캐시 세트에서 사용될 가능성이 있는 도 14a 및 도 15a에 도시된 캐시 세트(1310b)와 같은 일반 캐시 세트에 동기화될 수 있다.
도 13은 본 발명의 일부 실시형태에 따라 추측 실행을 가속화하기 위해 예비 캐시 세트를 포함하는 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1310a, 1310b, 1310c 및 1310d) 참조)를 갖는 캐시 시스템(1000)을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다. 도 13의 컴퓨팅 디바이스는 도 10에 도시된 컴퓨팅 디바이스와 유사하다. 예를 들어, 도 13에 도시된 디바이스는 프로세서(1001), 메모리 시스템(603), 캐시 시스템(1000), 및 연결부(604a 내지 604d 및 609a 내지 609c)뿐만 아니라 연결부(1002)를 포함한다.
도 13에서, 캐시 시스템(1000)은 캐시 세트(예를 들어, 캐시 세트(1310a, 1310b, 1310c 및 1310d))를 갖는 것으로 도시되어 있다. 캐시 시스템(1000)은 또한 실행 유형을 식별하는 프로세서(1001)로부터의 실행 유형 신호 라인(605d)에 대한 연결부(604d), 및 추측 실행의 상태를 식별하는 프로세서(1001)로부터의 신호 라인(1004)에 대한 연결부(1002)를 갖는 것으로 도시되어 있다.
캐시 시스템(1000)은 또한 실행 유형이 프로세서(1001)에 의한 명령어의 비-추측 실행을 나타내는 제1 유형일 때 캐싱 동작에서 캐싱을 위해 캐시 세트의 제1 서브세트(예를 들어, 도 13에 도시된 캐시(602a) 참조)를 할당하도록 구성될 수 있는 논리 회로(1006)를 포함하는 것으로 도시되어 있다. 논리 회로(1006)는 또한 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경될 때 캐싱 동작에서 캐싱을 위해 캐시 세트의 제2 서브세트(예를 들어, 도 13에 도시된 캐시(602b) 참조)를 할당하도록 구성될 수 있다. 논리 회로(1006)는 또한 실행 유형이 제2 유형일 때 적어도 하나의 캐시 세트 또는 캐시 세트의 제3 서브세트(예를 들어, 도 13에 도시된 캐시(602c) 참조)를 예비하도록 구성될 수 있다.
논리 회로(1006)는 또한 실행 유형이 제1 유형일 때 그리고 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 캐싱 동작에서 캐싱을 위해 제2 서브세트(예를 들어, 도 13에 도시된 캐시(602b) 참조)를 재구성하도록 구성될 수 있다. 그리고, 논리 회로(1006)는 또한 실행 유형이 제1 유형으로부터 제2 유형으로 변경될 때 그리고 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타낼 때 캐싱 동작에서 캐싱을 위해 적어도 하나의 캐시 세트 또는 제3 서브세트(예를 들어, 도 13에 도시된 캐시(602c) 참조)를 할당하도록 구성될 수 있다. 논리 회로(1006)는 또한 실행 유형이 제2 유형일 때 그리고 적어도 하나의 캐시 세트가 복수의 캐시 세트에서 최소 사용 캐시 세트일 때 적어도 하나의 캐시 세트 또는 제3 서브세트(예를 들어, 도 13에 도시된 캐시(602c) 참조)를 예비하도록 구성될 수 있다.
일부 실시형태에서, 캐시 시스템은 본 명세서에 언급된 캐시 세트를 매핑할 수 있는 하나 이상의 매핑 테이블을 포함할 수 있다. 그리고, 이러한 실시형태에서, 본 명세서에 언급된 논리 회로와 같은 논리 회로는 하나 이상의 매핑 테이블에 따라 캐시 시스템의 캐시와 같은 캐시 세트의 서브세트를 할당 및 재구성하도록 구성될 수 있다. 매핑은 본 명세서에 설명된 캐시 세트 레지스터에 대한 대안이거나 이러한 레지스터에 추가로 사용될 수 있다.
일부 실시형태에서, 적어도 도 13, 도 14a 내지 도 14c, 및 도 15a 내지 도 15d에 도시된 바와 같이, 캐시 시스템(1000)은 캐시 세트(예를 들어, 캐시 세트(1310a, 1310b, 1310c 및 1310d) 참조))와 각각 연관된 캐시 세트 레지스터(예를 들어, 캐시 세트 레지스터(1312a, 1312b, 1312c, 및 1312d) 참조)를 포함할 수 있다. 이러한 실시형태에서, 논리 회로(1006)는 캐시 세트 레지스터에 따라 캐시 세트의 서브세트(예를 들어, 도 13에 도시된 캐시(602a, 602b 및 602c) 참조)를 할당 및 재구성하도록 구성될 수 있다.
또한, 일부 실시형태에서, 도 15a 내지 도 15d에 도시된 바와 같이, 캐시 세트의 제1 서브세트는 제1 캐시 세트를 포함할 수 있고, 캐시 세트의 제2 서브세트는 제2 캐시 세트를 포함할 수 있고, 제3 서브세트는 제3 캐시 세트를 포함할 수 있다. 이러한 실시형태에서, 캐시 세트 레지스터는 제1 캐시 세트가 비-추측 실행을 위해 사용되도록 초기에 제1 캐시 세트 인덱스(예를 들어, 도 15a에 도시된 캐시 세트 레지스터(1312b)에 보유된 캐시 세트 인덱스(1504b) 참조)를 저장하도록 구성된 제1 캐시 세트와 연관된 제1 캐시 세트 레지스터를 포함할 수 있다. 캐시 세트 레지스터는 또한 제2 캐시 세트가 추측 실행에 사용되도록 초기에 제2 캐시 세트 인덱스(예를 들어, 도 15a에 도시된 캐시 세트 레지스터(1312c)에 보유된 캐시 세트 인덱스(1504c) 참조)를 저장하도록 구성된 제2 캐시 세트와 연관된 제2 캐시 세트 레지스터를 포함할 수 있다. 캐시 세트 레지스터는 또한 제3 캐시 세트가 예비 캐시 세트로 사용되도록 초기에 제3 캐시 세트 인덱스(예를 들어, 도 15a에 도시된 캐시 세트 레지스터(1312d)에 보유된 캐시 세트 인덱스(1504d) 참조)를 저장하도록 구성된 제3 캐시 세트와 연관된 제3 캐시 세트 레지스터를 포함할 수 있다.
또한, 이러한 실시형태에서, 논리 회로(1006)는 프로세서(1001)로부터의 어드레스 버스(605b)로부터 수신된 메모리 어드레스 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인(605d)으로부터 수신된 추측 실행 또는 비-추측 실행의 식별에 기초하여 세트 인덱스(예를 들어, 세트 인덱스(1504a, 1504b, 1504c, 및 1504d) 참조)를 생성하도록 구성될 수 있다. 그리고, 논리 회로(1006)는 세트 인덱스가 제1 캐시 세트 레지스터에 저장된 내용과 일치하는지, 제2 캐시 세트 레지스터에 저장된 내용과 일치하는지, 또는 제3 캐시 세트 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다.
또한, 이러한 실시형태에서, 논리 회로(1006)는 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제2 서브세트의 제2 캐시 세트 또는 다른 캐시 세트가 비-추측 실행에 사용되도록 제1 캐시 세트 인덱스를 복수의 캐시 세트 중 제2 서브세트의 제2 캐시 세트 레지스터 또는 다른 캐시 세트와 연관된 다른 캐시 세트 레지스터에 저장하도록 구성될 수 있다. 예를 들어, 제2 캐시 세트(1310c)가 비-추측 실행에 사용될 수 있도록 제2 캐시 세트 레지스터(1312c)에 보유된 캐시 세트 인덱스(1504b)를 나타내는 도 15b를 참조한다. 또한, 논리 회로(1006)는 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 적어도 하나의 캐시 세트의 제3 캐시 세트 또는 다른 캐시 세트가 추측 실행에 사용되도록 제2 캐시 세트 인덱스를 적어도 하나의 캐시 세트의 제3 캐시 세트 레지스터 또는 다른 캐시 세트와 연관된 다른 캐시 세트 레지스터에 저장하도록 구성될 수 있다. 예를 들어, 제3 캐시 세트(1310d)가 이용 가능하고 추측 실행에 사용될 수 있도록 제3 캐시 세트 레지스터(1312d)에 보유된 캐시 세트 인덱스(1504c)를 나타내는 도 15b를 참조한다. 논리 회로(1006)는 또한 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 서브세트의 제1 캐시 세트 또는 다른 캐시 세트가 예비 캐시 세트로 사용되도록 제3 캐시 세트 인덱스를 복수의 캐시 세트 중 제1 서브세트의 제1 캐시 세트 레지스터 또는 다른 캐시 세트와 연관된 다른 캐시 세트 레지스터에 저장하도록 구성될 수 있다. 예를 들어, 제1 캐시 세트(1310b)가 예비 캐시 세트로서 사용되도록 제1 캐시 세트 레지스터(1312b)에 보유된 캐시 세트 인덱스(1504d)를 도시하는 도 15b를 참조한다.
도 14a, 도 14b 및 도 14c는 본 발명의 일부 실시형태에 따라 추측 실행을 가속화하기 위해 예비 캐시 세트(예를 들어, 도 14a 및 도 14b에 도시된 예비 캐시 세트(1310d) 및 도 14c에 도시된 예비 캐시 세트(1310b) 참조)를 포함하는 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1310a, 1310b, 1310c, 및 1310d) 참조)를 갖는 캐시 시스템(1000)을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다. 구체적으로, 도 14a는 캐시 세트(1310a 및 1310b)가 비-추측 실행에 사용될 수 있고, 캐시 세트(1310c)가 추측 실행에 사용될 수 있고, 캐시 세트(1310d)가 예비 캐시 세트로 사용되는, 제1 상태의 캐시 세트를 도시한다. 도 14b는 캐시 세트(1310a, 1310b 및 1310c)가 비-추측 실행에 사용될 수 있고 캐시 세트(1310c)가 이용 가능하고 추측 실행에 사용될 수 있는, 제2 상태의 캐시 세트를 도시한다. 도 14c는 캐시 세트(1310a 및 1310c)가 비-추측 실행에 사용될 수 있고, 캐시 세트(1310d)가 추측 실행에 사용될 수 있고, 캐시 세트(1310b)가 예비 캐시 세트로 사용되는, 제3 상태의 캐시 세트를 도시한다.
도 15a, 도 15b, 도 15c 및 도 15d는 본 발명의 일부 실시형태에 따라 추측 실행을 가속화하기 위해 예비 캐시 세트를 포함하는 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1310a, 1310b, 1310c 및 1310d) 참조)를 갖는 캐시 시스템(1000)을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 각각 도시한다.
구체적으로, 도 15a는 캐시 세트(1310a 및 1310b)가 비-추측 실행(또는 제1 유형의 실행)에 사용될 수 있고, 캐시 세트(1310c)가 추측 실행(또는 제2 유형의 실행)에 사용될 수 있고, 캐시 세트(1310d)가 예비 캐시 세트로 사용되는, 제1 상태의 캐시 세트를 도시한다. 도 15a에 도시된 바와 같이, 이 제1 상태에서, 논리 회로(1006)는 캐시 세트(1310b)의 내용(1502b)이 비-추측 실행에 사용되도록 캐시 세트 레지스터(1312b)에 캐시 세트 인덱스(1504b)를 저장하도록 구성될 수 있다. 또한, 이 제1 상태에서, 논리 회로(1006)는 캐시 세트(1310c)가 이용 가능하고 추측 실행에 사용될 수 있도록 캐시 세트 인덱스(1504c)를 캐시 세트 레지스터(1312c)에 저장하도록 구성될 수 있다. 논리 회로(1006)는 또한 캐시 세트(1310d)가 이 제1 상태에서 예비 캐시 세트로 사용되도록 캐시 세트 레지스터(1312d)에 캐시 세트 인덱스(1504d)를 저장하도록 구성될 수 있다.
도 15b는 캐시 세트(1310a 및 1310c)가 비-추측 실행에 사용될 수 있고, 캐시 세트(1310d)가 추측 실행에 이용 가능하고, 캐시 세트(1310b)가 예비 캐시 세트로 사용되는, 제2 상태의 캐시 세트를 도시한다. 도 15b에 도시된 제2 상태는 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우에 발생한다. 도 15b에 도시된 바와 같이, 이 제2 상태에서, 논리 회로(1006)는 캐시 세트(1310c)의 내용(1502b)이 비-추측 실행을 위해 사용되도록 캐시 세트 인덱스(1504b)를 캐시 세트 레지스터(1312c)에 저장하도록 구성될 수 있다. 또한, 이 제2 상태에서, 논리 회로(1006)는 캐시 세트(1310d)가 추측 실행에 이용 가능하도록 캐시 세트 인덱스(1504c)를 캐시 세트 레지스터(1312d)에 저장하도록 구성될 수 있다. 논리 회로(1006)는 또한 캐시 세트(1310b)가 이 제2 상태에서 예비 캐시 세트로서 사용되도록 캐시 세트 인덱스(1504d)를 캐시 세트 레지스터(1312b)에 저장하도록 구성될 수 있다.
도 15c는 캐시 세트(1310a 및 1310c)가 비-추측 실행에 사용될 수 있고 캐시 세트(1310b)가 예비 캐시 세트로 사용되는, 대부분의 제2 상태의 캐시 세트를 도시한다. 그러나, 도 15c에서, 캐시 세트(1310d)는 단지 이용 가능한 것이 아니라 추측 실행을 위해 사용되고 있는 것으로 도시되어 있다. 도 15c에 도시된 바와 같이, 이 제2 상태에서, 논리 회로(1006)는 캐시 세트(1310d)에 보유된 내용(1502c)이 또한 추측 실행을 위해 사용될 수 있도록 캐시 세트 레지스터(1312d)에 캐시 세트 인덱스(1504c)를 저장하도록 구성될 수 있다.
도 15d는 캐시 세트(1310a 및 1310d)가 비-추측 실행을 위해 사용될 수 있고, 캐시 세트(1310b)가 추측 실행을 위해 이용 가능하고, 캐시 세트(1310c)가 예비 캐시 세트로 사용되는, 제3 상태의 캐시 세트를 도시한다. 도 15d에 도시된 제3 상태는 실행 유형이 제2 유형으로부터 제1 유형으로 다시 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제2 상태 이후의 후속 사이클에서 발생한다. 도 15d에 도시된 바와 같이, 이 제3 상태에서, 논리 회로(1006)는 캐시 세트(1310d)의 내용(1502b)이 비-추측 실행을 위해 사용되도록 캐시 세트 인덱스(1504b)를 캐시 세트 레지스터(1312d)에 저장하도록 구성될 수 있다. 또한, 이 제3 상태에서, 논리 회로(1006)는 캐시 세트(1310b)가 추측 실행에 이용 가능하도록 캐시 세트 인덱스(1504c)를 캐시 세트 레지스터(1312b)에 저장하도록 구성될 수 있다. 논리 회로(1006)는 또한 캐시 세트(1310c)가 이 제3 상태에서 예비 캐시 세트로서 사용되도록 캐시 세트 레지스터(1312c)에 캐시 세트 인덱스(1504d)를 저장하도록 구성될 수 있다.
도 15a 내지 도 15d에 도시된 바와 같이, 캐시 세트는 상호 교환 가능하고, 예비 캐시 세트로 사용되는 캐시 세트도 또한 상호 교환 가능하다.
이러한 실시형태에서, 어드레스 버스(605b)에 대한 연결부(604b)가 프로세서(1001)로부터 메모리 어드레스를 수신할 때, 논리 회로(1006)는 어드레스의 이 캐시 세트 인덱스(112b)에 따라 적어도 메모리 어드레스(102b)로부터 세트 인덱스를 생성(예를 들어, 세트 인덱스(1504a, 1504b, 1504c 및 1504d)를 각각 생성하는 세트 인덱스 생성(1506a, 1506b, 1506c 및 1506d) 참조)하도록 구성될 수 있다. 또한, 어드레스 버스(605b)에 대한 연결부(604b)가 프로세서(1001)로부터 메모리 어드레스를 수신할 때, 논리 회로(1006)는 생성된 세트 인덱스가 레지스터 중 하나에 저장된 내용(세트 인덱스(1504a, 1504b, 1504c, 또는 1504d)로 저장될 수 있음)과 일치하는지 여부를 결정하도록 구성될 수 있다. 또한, 논리 회로(1006)는 생성된 인덱스 세트가 대응하는 레지스터에 저장된 내용과 일치하는 것에 응답하여 캐시 세트를 통해 커맨드 버스(605a)에 대한 연결부(604a)에서 수신된 커맨드를 구현하도록 구성될 수 있다. 또한, 메모리 어드레스와 연관된 메모리 시스템의 데이터 세트가 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 논리 회로(1001)는 데이터 세트를 캐싱하기 위해 캐시 세트를 할당하고, 생성된 세트 인덱스를 대응하는 레지스터에 저장하도록 구성될 수 있다. 생성된 세트 인덱스는 도 15a 내지 도 15b에 도시된 메모리 어드레스의 미리 결정된 비트 세그먼트를 포함할 수 있다.
또한, 이러한 실시형태에서, 논리 회로(1006)는 프로세서(1001)로부터 어드레스 버스(605b)로부터 수신된 메모리 어드레스(예를 들어, 메모리 어드레스(102b)) 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인(605d)으로부터 수신된 추측 실행 또는 비-추측 실행의 식별에 기초하여 세트 인덱스(예를 들어, 세트 인덱스(1504a, 1504b, 1504c, 및 1504d) 참조)를 생성하도록 구성될 수 있다. 그리고, 논리 회로(1006)는 세트 인덱스가 캐시 세트 레지스터(1312b)에 저장된 내용과 일치하는지, 캐시 세트 레지스터(1312c)에 저장된 내용과 일치하는지, 또는 캐시 세트 레지스터(1312d)에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다.
일부 실시형태에서 캐시 시스템은 복수의 캐시 세트, 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부, 추측 실행의 상태를 식별하는 프로세서로부터의 신호 라인에 대한 연결부, 및 논리 회로를 포함할 수 있다. 논리 회로는 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형일 때 캐싱 동작에서 캐싱을 위해 복수의 캐시 세트 중 제1 서브세트를 할당하고, 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경될 때 캐싱 동작에서 캐싱을 위해 복수의 캐시 세트 중 제2 서브세트를 할당하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제2 유형일 때 적어도 하나의 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)를 예비하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제1 유형일 때, 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 캐싱 동작에서 캐싱을 위해 제2 서브세트를 재구성하도록 구성될 수 있다. 그리고, 논리 회로는 또한 실행 유형이 제1 유형으로부터 제2 유형으로 변경될 때, 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 캐싱 동작에서 캐싱을 위해 적어도 하나의 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)를 할당하도록 구성될 수 있다.
이러한 실시형태에서, 논리 회로는 실행 유형이 제2 유형이고 적어도 하나의 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)가 복수의 캐시 세트에서 최소 사용 캐시 세트를 포함하는 경우 적어도 하나의 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)를 예비하도록 구성될 수 있다.
또한, 이러한 실시형태에서, 캐시 시스템은 복수의 캐시 세트를 매핑하는 하나 이상의 매핑 테이블을 포함할 수 있다. 이러한 예에서, 논리 회로는 하나 이상의 매핑 테이블에 따라 복수의 캐시 세트의 서브세트를 할당 및 재구성하도록 구성된다.
또한, 이러한 실시형태에서, 캐시 시스템은 복수의 캐시 세트와 각각 연관된 복수의 캐시 세트 레지스터를 포함할 수 있다. 이러한 예에서, 논리 회로는 복수의 캐시 세트 레지스터에 따라 복수의 캐시 세트의 서브세트를 할당 및 재구성하도록 구성된다. 이러한 예에서, 복수의 캐시 세트 중 제1 서브세트는 제1 캐시 세트를 포함할 수 있고, 복수의 캐시 세트 중 제2 서브세트는 제2 캐시 세트를 포함할 수 있고, 적어도 하나의 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)는 제3 캐시 세트를 포함할 수 있다. 또한, 복수의 캐시 세트 레지스터는 제1 캐시 세트가 비-추측 실행에 사용되도록 초기에 제1 캐시 세트 인덱스를 저장하도록 구성된, 제1 캐시 세트와 연관된 제1 캐시 세트 레지스터를 포함할 수 있다. 복수의 캐시 세트 레지스터는 또한 제2 캐시 세트가 추측 실행에 사용되도록 초기에 제2 캐시 세트 인덱스를 저장하도록 구성된, 제2 캐시 세트와 연관된 제2 캐시 세트 레지스터를 포함할 수 있다. 복수의 캐시 세트 레지스터는 또한 제3 캐시 세트가 예비 캐시 세트로서 사용되도록 초기에 제3 캐시 세트 인덱스를 저장하도록 구성된, 제3 캐시 세트와 연관된 제3 캐시 세트 레지스터를 포함할 수 있다.
이러한 실시형태에서, 논리 회로는 프로세서로부터의 어드레스 버스로부터 수신된 메모리 어드레스, 및 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인으로부터 수신된 추측 실행 또는 비-추측 실행의 식별에 기초하여 세트 인덱스를 생성하도록 구성될 수 있다. 그리고, 논리 회로는 세트 인덱스가 제1 캐시 세트 레지스터에 저장된 내용과 일치하는지, 제2 캐시 세트 레지스터에 저장된 내용과 일치하는지, 또는 제3 캐시 세트 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우, 논리 회로는 또한 제2 서브세트의 제2 캐시 세트 또는 다른 캐시 세트가 비-추측 실행을 위해 사용되도록 제1 캐시 세트 인덱스를 복수의 캐시 세트 중 제2 서브세트의 제2 캐시 세트 레지스터 또는 다른 캐시 세트와 연관된 다른 캐시 세트 레지스터에 저장하도록 구성될 수 있다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타낼 때 논리 회로는 또한 적어도 하나의 캐시 세트의 제3 캐시 세트 또는 다른 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)가 추측 실행에 사용되도록 제2 캐시 세트 인덱스를 적어도 하나의 캐시 세트(또는 복수의 캐시 세트 중 제3 서브세트)의 제3 캐시 세트 레지스터 또는 다른 캐시 세트와 연관된 다른 캐시 세트 레지스터에 저장하도록 구성될 수 있다. 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우, 논리 회로는 또한 제1 서브세트의 제1 캐시 세트 또는 다른 캐시 세트가 예비 캐시 세트로 사용되도록 제3 캐시 세트 인덱스를 복수의 캐시 세트 중 제1 서브세트의 제1 캐시 세트 레지스터 또는 다른 캐시 세트와 연관된 다른 캐시 세트 레지스터에 저장하도록 구성될 수 있다.
일부 실시형태에서, 캐시 시스템은 캐시 세트의 제1 서브세트, 캐시 세트의 제2 서브세트, 및 캐시 세트의 제3 서브세트를 갖는 복수의 캐시 세트를 포함할 수 있다. 캐시 시스템은 또한 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부, 추측 실행의 상태를 식별하는 프로세서로부터의 신호 라인에 대한 연결부, 및 논리 회로를 포함할 수 있다. 논리 회로는 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형일 때 캐싱 동작에서 캐싱을 위해 복수의 캐시 세트 중 제1 서브세트를 할당하고, 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경될 때 캐싱 동작에서 캐싱을 위해 복수의 캐시 세트 중 제2 서브세트를 할당하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제2 유형일 때 복수의 캐시 세트 중 제3 서브세트를 예비하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제1 유형일 때, 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 캐싱 동작에서 캐싱을 위해 제2 서브세트를 재구성하도록 구성될 수 있다. 논리 회로는 또한 실행 유형이 제1 유형으로부터 제2 유형으로 변경될 때, 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 캐싱 동작에서 캐싱을 위한 제3 서브세트를 할당하도록 구성될 수 있다.
일부 실시형태에서, 캐시 시스템은 제1 캐시, 제2 캐시, 및 제3 캐시를 포함하는 복수의 캐시를 포함할 수 있다. 캐시 시스템은 또한 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부, 추측 실행의 상태를 식별하는 프로세서로부터의 신호 라인에 대한 연결부, 및 논리 회로를 포함할 수 있다. 논리 회로는 실행 유형이 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형일 때 캐싱 동작에서 캐싱을 위해 제1 캐시를 할당하고, 실행 유형이 제1 유형으로부터 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경될 때 캐싱 동작에서 캐싱을 위해 제2 캐시를 할당하도록 구성될 수 있다. 논리 회로는 실행 유형이 제2 유형일 때 제3 캐시를 예비하도록 구성될 수도 있다. 논리 회로는 또한 실행 유형이 제1 유형일 때, 실행 유형이 제2 유형으로부터 제1 유형으로 변경되고 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 캐싱 동작에서 캐싱을 위해 제2 캐시를 재구성하도록 구성될 수 있다. 그리고, 논리 회로는 또한 실행 유형이 제1 유형으로부터 제2 유형으로 변경될 때 캐싱 동작에서 캐싱을 위해 제3 캐시를 할당하도록 구성될 수 있다.
도 16 및 도 17은 본 발명의 일부 실시형태에 따라 프로세서에 의한 다양한 유형의 실행(예를 들어, 추측 실행과 비-추측 실행)을 위해 확장된 태그(예를 들어, 확장된 태그(1640a, 1640b, 1740a 및 1740b) 참조)를 이용하는 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1610a, 1610b, 1710a 및 1710b) 참조)를 갖는 캐시 시스템을 갖는 캐시 시스템을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다. 또한 도 16 및 도 17은 도 6, 도 10 및 도 13에 도시된 캐시 시스템(600 및 1000)과 같은 캐시 시스템 내에서 캐시 세트와 캐시 블록을 처리하는 다양한 방식을 각각 도시한다. 또한 메모리 어드레스, 예를 들어, 메모리 어드레스(102e 또는 102b)뿐만 아니라 메모리 어드레스(102a, 102c 또는 102d)(도 1에 도시됨)를 통해 캐시 세트와 캐시 블록을 선택할 수 있는 방식이 도시되어 있다.
도 16 내지 도 17의 두 예는 모두 세트 연관성을 사용하고, 세트 연관성을 사용하여 캐시 시스템(600 및 1000)과 같은 캐시 시스템을 구현할 수 있다. 도 16에서, 세트 연관성이 암시적으로 정의된다(예를 들어, 주어진 실행 유형에 대해 어느 캐시 세트에 어느 태그가 있어야 하는지를 결정하는 데 사용될 수 있는 알고리즘을 통해 정의된다). 도 17에서, 세트 연관성은 메모리 어드레스의 캐시 세트 인덱스의 비트를 통해 구현된다. 또한, 도 16 내지 도 17에 도시된 기능은 세트 연관성을 사용하지 않고 구현될 수 있지만(이것은 도시되지 않음), 예를 들어, 도 2 및 도 4에 각각 도시된 캐시 시스템(200 및 400)을 통해 구현될 수 있다.
도 16 및 도 17에서, 블록 인덱스(예를 들어, 블록 인덱스(106e 및 106b) 참조)는 캐시 세트의 특정 캐시 블록(예를 들어, 캐시 세트의 캐시 블록(1624a, 1624b, 1628a, 1628b, 1724a, 1724b, 1728a 및 1728b) 참조)을 식별하기 위해 개별 캐시 세트(예를 들어, 캐시 세트(1610a, 1610b, 1710a, 및 1710b)) 내의 어드레스로 사용될 수 있다. 그리고, 확장된 태그(예를 들어, 확장된 태그(1640a, 1640b, 1740a, 1740b, 1650, 및 1750)는 캐시 세트에 대한 어드레스로 사용될 수 있다. 메모리 어드레스(예를 들어, 메모리 어드레스(102e 및 102b) 참조)의 블록 인덱스(예를 들어, 블록 인덱스(106e 및 106b) 참조)는 캐시 블록(예를 들어, 캐시 블록(1624a, 1624b, 1628a, 1628b, 1724a, 1724b, 1728a 및 1728b) 참조) 및 캐시 블록과 연관된 태그(예를 들어, 대응하는 태그(1622a, 1622b, 1626a, 1626b, 1722a, 1722b, 1726a 및 1726b) 참조)를 얻기 위해 각 캐시 세트(예를 들어, 캐시 세트(1610a, 1610b, 1710a, 및 1710b) 참조)에 사용될 수 있다.
또한, 도 16 내지 도 17에 도시된 바와 같이, 태그 비교 회로(예를 들어, 태그 비교 회로(1660a, 1660b, 1760a 및 1760b))는 캐시 히트 또는 미스를 결정하기 위해 캐시 세트로부터 생성된 확장된 태그(예를 들어, 확장된 태그(1640a, 1640b, 1740a 및 1740b))를 메모리 어드레스(예를 들어, 메모리 어드레스(102e 및 102b) 참조)와 현재 실행 유형(예를 들어, 실행 유형(110e 및 110b) 참조)의 확장된 캐시 태그(예를 들어, 확장된 태그(1650))와 비교할 수 있다. 확장된 태그의 구성은 캐시 세트 중 최대 하나의 히트(예를 들어, 캐시 세트(1610a, 1610b, 1710a 및 1710b) 참조)가 있음을 보장한다. 히트가 있는 경우 선택된 캐시 세트로부터 캐시 블록(예를 들어, 캐시 블록(1624a, 1624b, 1628a, 1628b, 1724a, 1724b, 1728a 및 1728b))이 출력을 제공한다. 히트가 없는 경우, 메모리 어드레스(예를 들어, 메모리 어드레스(102e 또는 102b))와 연관된 데이터는 임의의 캐시 세트에 캐싱되지도 않고 임의의 캐시 세트로부터 출력되지도 않는다. 요컨대, 도 16 및 도 17에 도시된 확장된 태그는 캐시 세트를 선택하는 데 사용되며, 블록 인덱스는 캐시 세트 내 캐시 블록 및 그 대응하는 태그를 선택하는 데 사용된다.
또한, 도 16 내지 도 17에 도시된 바와 같이, 메모리 어드레스(예를 들어, 어드레스(102e 및 102b) 참조)는 다른 방식으로 분할되고; 이에 따라 어드레스에 따른 캐시 동작의 제어도 상이하다. 그러나 몇 가지 유사점이 있다. 예를 들어, 도 16 및 도 17에 도시된 시스템은 세트 연관성을 통해 캐시 세트 사용을 제어한다. 캐시 동작의 제어는 캐시 세트가 프로세서에 의한 제1 유형의 실행(예를 들어, 비-추측 실행)에 사용되는지 또는 제2 유형의 실행(예를 들어, 추측 실행)에 사용되는지 여부를 제어하는 것을 포함할 수 있고, 이러한 제어는 세트 연관성을 통해 어느 정도 또는 완전히 제어될 수 있다.
도 16에서, 메모리 어드레스(102e)에 대한 확장된 태그(1650)는 실행 유형(110e)을 갖고, 세트 연관성을 구현하는 캐시 세트 지시자를 갖는 태그(104e)를 갖는다. 도 17에서, 메모리 어드레스(102b)에 대한 확장된 태그(1750)는 실행 유형(110e), 캐시 세트 인덱스(112b), 및 태그(104b)를 갖는다. 이러한 예에서, 캐시 세트 인덱스(112b)는 태그 내의 캐시 세트 지시자 대신에 세트 연관성을 구현한다. 메모리 어드레스의 상이한 분할은 확장된 태그(예를 들어, 확장된 태그(1640a, 1640b, 1650, 1740a, 1740b 및 1750))가 세트 연관성을 통해 캐시 동작을 제어하는 방식을 약간 변경한다.
메모리 어드레스의 분할을 통해, 이 예에서, 메모리 어드레스와 실행 유형으로부터 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)는 캐시 세트를 통해 구현된 캐시 동작을 제어하기 위해 캐시 세트에 대한 확장된 태그(예를 들어, 확장된 태그(1640a, 1640b, 1740a 및 1740b) 참조)와 비교된다. 태그 비교 회로(예를 들어, 태그 비교 회로(1660a, 1660b, 1760a 및 1760b))는 비교 회로에 입력된 확장된 태그가 일치하는지 여부에 따라 히트 또는 미스를 출력할 수 있다. 캐시 세트에 대한 확장된 태그(예를 들어, 확장된 태그(1640a, 1640b, 1740a, 1740b) 참조)는 레지스터(예를 들어, 레지스터(1612a, 1612b, 1712a 및 1712b) 참조)에 보유되는 실행 유형(예를 들어, 실행 유형(1632a, 1632b, 1732a 및 1732b) 참조))과, 제1 캐시 세트(예를 들어, 캐시 세트(1610a, 1610b, 1710a 및 1710b) 참조)로부터의 블록 태그(예를 들어, 태그(1622a, 1622b, 1626a, 1626b, 1722a, 1722b, 1726a 및 1726b) 참조)로부터 유도될 수 있다. 그리고, 도 16 내지 도 17에 도시된 바와 같이, 실행 유형은 캐시 세트의 각 레지스터에서 다르다. 도시된 예의 경우 제1 캐시 세트(예를 들어, 캐시 세트(1610a 또는 1710a))는 제1 유형의 실행(예를 들어, 비-추측 실행)에 사용될 수 있고, 제2 캐시 세트(예를 들어, 캐시 세트(1610b 또는 1710b))는 제2 유형의 실행(예를 들어, 추측 실행)에 사용될 수 있다.
도 17에서, 태그(104b)와 캐시 세트 인덱스(112b)의 조합은 도 16에 도시된 태그(104e)와 유사한 기능을 제공한다. 그러나, 도 17에서, 태그(104b)와 캐시 세트 인덱스(112b)를 분리함으로써, 캐시 세트는 캐시 세트(예를 들어, 캐시 세트(1710a 및 1710b) 참조)가 캐시 세트 인덱스(예를 들어, 캐시 세트 인덱스(1732a 및 1732b) 참조)를 보유하기 위해 캐시 세트 레지스터(예를 들어, 레지스터(1732a 및 1732b) 참조)와 연관될 수 있기 때문에 캐시 세트 인덱스(112b)의 중복 사본을 저장할 필요가 없다. 반면, 도 16에서, 캐시 세트(예를 들어, 캐시 세트(1610a 및 1610b) 참조)는 캐시 세트의 연관된 레지스터가 캐시 세트 인덱스를 보유하도록 구성되어 있지 않기 때문에 각 블록(예를 들어, 블록(1624a, 1624b, 1628a 및 1628b) 참조)에 캐시 세트 지시자의 중복 사본을 저장할 필요가 있다.
다시 말해, 태그(1622a 및 1622b) 등이 동일한 캐시 세트 지시자를 가지므로 지시자는 캐시 세트에 대한 레지스터(예를 들어, 캐시 세트 레지스터(1712a 및 1712b) 참조)에 한번 저장될 수 있다. 이것은 도 16에 도시된 배열에 비해 도 17에 도시된 배열의 이점 중 하나이다. 또한, 도 17의 태그(1722a, 1722b, 1726a 및 1726b)의 길이는 도 17에 도시된 캐시 세트 레지스터(예를 들어, 레지스터(1710a 및 1710b))가 캐시 세트 인덱스와 실행 유형을 모두 저장하기 때문에 도 16에 도시된 태그(예를 들어, 1622a, 1622b, 1626a 및 1626b 참조)의 구현에 비해 더 짧다.
실행 유형이 캐시 세트 인덱스와 결합되어 확장된 캐시 세트 인덱스를 형성하는 경우 확장된 캐시 세트 인덱스를 사용하여 캐시 세트 중 하나를 선택할 수 있다. 그런 다음 선택된 캐시 세트의 태그를 어드레스의 태그와 비교하여 히트 또는 미스를 결정한다. 2단계 선택은 캐시 세트 인덱스를 사용하는 기존의 2단계 선택과 유사하거나, 또는 확장된 태그와 결합되어 다양한 실행 유형(예를 들어, 추측 및 비-추측 실행 유형)에 대한 캐시 세트의 보다 효율적인 상호 교환을 지원하는 데 사용될 수 있다.
일부 실시형태에서, 캐시 시스템(예를 들어, 캐시 시스템(600 또는 1000))은 복수의 캐시 세트(예를 들어, 캐시 세트(610a 내지 610c, 1010a 내지 1010c, 1310a 내지 1310d, 1610a 내지 1610b, 또는 1710a 내지 1710b))를 포함할 수 있다. 복수의 캐시 세트는 제1 캐시 세트와 제2 캐시 세트(예를 들어, 캐시 세트(1610a 내지 1610b) 및 세트(1710a 내지 1710b) 참조)를 포함할 수 있다. 캐시 시스템은 또한 각각 복수의 캐시 세트와 연관된 복수의 레지스터(예를 들어, 레지스터(612a 내지 612c, 1012a 내지 1012c, 1312a 내지 1312d, 1612a 내지 1612b, 또는 1712a 내지 1712b))를 포함할 수 있다. 복수의 레지스터는 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터(예를 들어, 레지스터(1612a 내지 1612b) 및 레지스터(1712a 내지 1712b) 참조)를 포함할 수 있다.
캐시 시스템은 또한 캐시 시스템과 프로세서(예를 들어, 프로세서(601 및 1001) 참조) 사이에 결합된 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)에 대한 연결부(예를 들어, 연결부(604a) 참조)를 포함할 수 있다. 캐시 시스템은 또한 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(604b) 참조)를 포함할 수 있다.
캐시 시스템은 또한 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)를 포함할 수 있다. 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스(예를 들어, 도 1에 도시된 메모리 어드레스(102a 내지 102e) 및 도 16 및 도 17에 각각 도시된 어드레스(102e 및 102b) 참조)를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터의 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)를 생성하도록 구성될 수 있다. 또한, 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)가 제1 캐시 세트(예를 들어, 캐시 세트(1610a 및 1710a) 참조)에 대한 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)와 일치하는지 또는 제2 캐시 세트(예를 들어, 캐시 세트(1610b 및 1710b) 참조)에 대한 제2 확장된 태그(예를 들어, 확장된 태그(1640b 및 1740b) 참조)와 일치하는지 여부를 결정하도록 구성될 수 있다.
논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 또한 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)가 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)와 일치하는 것에 응답하여 제1 캐시 세트(예를 들어, 캐시 세트(1610a 및 1710a) 참조)를 통해 그리고 생성된 확장된 태그가 제2 확장된 태그(예를 들어, 확장된 태그(1640b 및 1740b) 참조)와 일치하는 것에 응답하여 제2 캐시 세트(예를 들어, 캐시 세트(1610b 및 1710b) 참조)를 통해 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)에 대한 연결부(예를 들어, 연결부(604a) 참조)에서 수신된 커맨드를 구현하도록 구성될 수 있다.
논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 또한 제1 캐시 세트(예를 들어, 캐시 세트(1610a 및 1710a) 참조)의 캐시 어드레스(예를 들어, 확장된 태그(1640a 및 1740a)와 태그(1622a, 1622b, 1722a 및 1722b) 등에서 '태그'로 표시된 블록 참조) 및 제1 레지스터(예를 들어, 레지스터(1612a 및 1712a) 참조)에 저장된 내용(예를 들어, 확장된 태그(1640a 및 1740a)에서 '실행 유형'으로 표시된 블록 및 확장된 태그(1740a)에서 '캐시 세트 인덱스'로 표시된 블록뿐만 아니라 실행 유형(1632a)과 캐시 세트 인덱스(1732a) 참조)으로부터 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)를 생성하도록 구성될 수 있다. 논리 회로는 또한 제2 캐시 세트(예를 들어, 캐시 세트(1610b 및 1710b) 참조)의 캐시 어드레스(예를 들어, 확장된 태그(1640b 및 1740b)뿐만 아니라 태그(1626a, 1626b, 1726a 및 1726b) 등에서 '태그'로 표시된 블록 참조) 및 제2 레지스터(예를 들어, 레지스터(1612b 및 1712b) 참조)에 저장된 내용(예를 들어, 확장된 태그(1640b 및 1740b)에서 '실행 유형'이라고 표시된 블록 및 확장된 태그(1740b)에서 '캐시 세트 인덱스'로 표시된 블록뿐만 아니라 실행 유형(1632b)과 캐시 세트 인덱스(1732b) 참조)으로부터 제2 확장된 태그(예를 들어, 확장된 태그(1640b 및 1740b) 참조))를 생성하도록 구성될 수 있다.
일부 실시형태에서, 캐시 시스템(예를 들어, 캐시 시스템(600 또는 1000))은 실행 유형을 식별하는 프로세서(예를 들어, 프로세서(601 및 1001) 참조)로부터의 실행 유형 신호 라인(예를 들어, 실행 유형 신호 라인(605d) 참조)에 대한 연결부(예를 들어, 연결부(604d) 참조)를 더 포함할 수 있다. 이러한 실시형태에서, 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 메모리 어드레스(예를 들어, 도 16 및 도 17에 각각 도시된 메모리 어드레스(102e 및 102b) 참조) 및 실행 유형 신호 라인에 의해 식별된 실행 유형(예를 들어, 도 16 및 도 17에 도시된 실행 유형(110e) 참조)으로부터 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)를 생성하도록 구성될 수 있다. 또한, 이러한 실시형태에서, 제1 레지스터와 제2 레지스터에 각각 저장된 내용(예를 들어, 레지스터(1612a, 1612b, 1712a 및 1712b) 참조)은 실행 유형(예를 들어, 제1 실행 유형(1632a)과 제2 실행 유형(1632b) 참조)을 포함할 수 있다.
일부 실시형태에서, 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)가 제1 캐시 세트에 대한 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)와 일치하는지 또는 제2 캐시 세트(예를 들어, 확장된 태그(1640b 및 1740b) 참조)에 대한 제2 확장된 태그와 일치하는지 여부를 결정하기 위해, 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 제1 캐시 세트(예를 들어, 캐시 세트(1610a 및 1710a) 참조)에 대한 캐시 히트 또는 미스를 결정하기 위해 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)를 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)와 비교하도록 구성될 수 있다. 구체적으로, 도 16 내지 도 17에 도시된 바와 같이, 제1 태그 비교 회로(예를 들어, 태그 비교 회로(1660a 및 1760a) 참조)는 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조) 및 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)를 입력으로서 수신하도록 구성된다. 제1 태그 비교 회로(예를 들어, 태그 비교 회로(1660a 및 1760a) 참조)는 또한 제1 캐시 세트에 대한 캐시 히트 또는 미스를 결정하기 위해 제1 확장된 태그를 생성된 확장된 태그와 비교하도록 구성된다. 제1 태그 비교 회로(예를 들어, 태그 비교 회로(1660a 및 1760a) 참조)는 또한 제1 캐시 세트에 대해 결정된 캐시 히트 또는 미스를 출력(예를 들어, 출력(1662a 및 1762a) 참조)하도록 구성된다.
또한, 생성된 확장된 태그가 제1 캐시 세트에 대한 제1 확장된 태그와 일치하는지 또는 제2 캐시 세트에 대한 제2 확장된 태그와 일치하는지 결정하기 위해, 논리 회로는 제2 캐시 세트(예를 들어, 캐시 세트(1610b 및 1710b) 참조)에 대한 캐시 히트 또는 미스를 결정하기 위해 제2 확장된 태그(예를 들어, 확장된 태그(1640b 및 1740b) 참조)를 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)와 비교하도록 구성될 수 있다. 구체적으로, 도 16 내지 도 17에 도시된 바와 같이, 제2 태그 비교 회로(예를 들어, 태그 비교 회로(1660b 및 1760b) 참조)는 입력으로서 제2 확장된 태그(예를 들어, 확장된 태그(1640b 및 1740b) 참조)를 수신하고, 생성된 확장된 태그(예를 들어, 확장된 태그(1650 및 1750) 참조)를 수신하도록 구성된다. 제2 태그 비교 회로(예를 들어, 태그 비교 회로(1660b 및 1760b) 참조)는 또한 제2 캐시 세트에 대한 캐시 히트 또는 미스를 결정하기 위해 제2 확장된 태그를 생성된 확장된 태그와 비교하도록 구성된다. 제2 태그 비교 회로(예를 들어, 태그 비교 회로(1660b 및 1760b) 참조)는 또한 제2 캐시 세트에 대해 결정된 캐시 히트 또는 미스를 출력(예를 들어, 출력(1662b 및 1762b) 참조)하도록 구성된다.
일부 실시형태에서, 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 논리 회로가 생성된 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)가 제1 캐시 세트에 대한 제1 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)와 일치한다고 결정할 때 제1 캐시 세트(예를 들어, 캐시 세트(1610a 및 1710a) 참조)로부터 출력을 수신하도록 추가로 구성될 수 있다. 논리 회로는 또한 논리 회로가 생성된 확장된 태그(예를 들어, 캐시 세트(1610a 및 1710a))가 제2 캐시 세트에 대한 제2 확장된 태그(예를 들어, 확장된 태그(1640a 및 1740a) 참조)와 일치한다고 결정할 때 제2 캐시 세트(예를 들어, 캐시 세트(1610b 및 1710b) 참조)로부터 출력을 수신하도록 추가로 구성될 수 있다.
일부 실시형태에서, 제1 캐시 세트의 캐시 어드레스는 제1 캐시 세트(예를 들어, 캐시 세트(1610a 및 1710a) 참조)의 캐시 블록(예를 들어, 캐시 블록(1624a, 1624b, 1724a, 및 1724b) 참조)의 제1 태그(예를 들어, 태그(1622a, 1622b, 1722a 및 1722b) 참조)를 포함한다. 이러한 실시형태에서, 제2 캐시 세트의 캐시 어드레스는 제2 캐시 세트(예를 들어, 캐시 세트(1610b 및 1710b) 참조)의 캐시 블록(예를 들어, 캐시 블록(1628a, 1628b, 1728a, 및 1728b) 참조)의 제2 태그(예를 들어, 태그(1626a, 1626b, 1726a 및 1726b) 참조)를 포함한다. 또한, 이러한 실시형태에서, 일반적으로 블록 인덱스는 개별 캐시 세트 내의 어드레스로 사용된다. 예를 들어, 이러한 실시형태에서, 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 제1 캐시 세트의 제1 캐시 블록 및 제1 캐시 블록((예를 들어, 캐시 블록(1624a, 1624b, 1724a 및 1724b))과 연관된 태그 및 각각의 관련 태그((1622a, 1622b, 1722a 및 1722b) 참조)를 얻기 위해 메모리 어드레스로부터의 제1 블록 인덱스(예를 들어, 도 16 내지 도 17에 각각 도시된 메모리 어드레스(102e 및 102b)로부터의 블록 인덱스(106e 및 106b) 참조)를 사용하도록 구성될 수 있다. 또한, 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 제2 캐시 세트의 제2 캐시 블록 및 제2 캐시 블록과 연관된 태그(예를 들어, 캐시 블록(1628a, 1628b, 1728a 및 1728b) 및 각각의 연관된 태그(1626a, 1626b, 1726a 및 1726b) 참조)를 얻기 위해 메모리 어드레스로부터 제2 블록 인덱스(예를 들어, 도 16 및 도 17에 각각 도시된 메모리 어드레스(102e 및 102b)로부터의 블록 인덱스(106e 및 106b) 참조)를 사용하도록 구성될 수 있다.
도 16에 도시된 실시형태와 같은 일부 실시형태에서, 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1610a 및 1610b) 참조)가 제1 상태에 있을 때, 제1 캐시 세트의 캐시 어드레스(예를 들어, 태그(1622a, 1622b) 등 참조)는 제1 캐시 세트와 연관된 제1 캐시 세트 지시자를 포함한다. 제1 캐시 세트 지시자는 제1 캐시 세트 인덱스일 수 있다. 이러한 실시형태에서, 제1 및 제2 캐시 세트가 제1 상태에 있을 때, 제2 캐시 세트의 캐시 어드레스(예를 들어, 태그(1626a, 1626b) 참조)는 제2 캐시 세트와 연관된 제2 캐시 세트 지시자를 포함한다. 제2 캐시 세트 지시자는 제2 캐시 세트 인덱스일 수 있다.
또한, 도 16에 도시된 실시형태에서, 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1610a 및 1610b) 참조)가 제2 상태(도 16에 도시되지 않음)에 있을 때, 제1 캐시 세트의 캐시 어드레스는 제2 캐시 세트와 연관된 제2 캐시 세트 지시자를 포함한다. 또한, 제1 및 제2 캐시 세트가 제2 상태에 있을 때, 제2 캐시 세트의 캐시 어드레스는 제1 캐시 세트와 연관된 제1 캐시 세트 지시자를 포함한다. 캐시 어드레스의 내용의 이러한 변경은 캐시 세트 간의 상호 교환 가능성을 구현할 수 있다.
도 16에 도시된 실시형태에서, 캐시 세트 지시자는 캐시 세트의 각 캐시 블록의 태그에서 반복되고, 따라서, 태그는 도 17에 도시된 캐시 세트의 각 캐시 블록의 태그보다 길다. 도 17에서, 각 캐시 블록의 태그에서 캐시 세트 인덱스를 반복하는 대신, 세트 인덱스는 캐시 세트와 연관된 캐시 세트 레지스터(예를 들어, 레지스터(1712a 및 1712b) 참조)에 저장된다.
도 17에 도시된 실시형태와 같은 일부 실시형태에서, 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1710a 및 1710b) 참조)가 제1 상태에 있을 때, 제1 캐시 세트의 캐시 어드레스(예를 들어, 태그(1722a 및 1722b) 등 참조)는 제1 캐시 세트와 연관된 제1 캐시 세트 지시자를 포함하지 않을 수 있다. 대신, 제1 캐시 세트 지시자는 제1 캐시 세트 레지스터(1712a)(예를 들어, 캐시 세트 레지스터(1712a)에 보유된 제1 캐시 세트 인덱스(1732a) 참조)에 저장되는 것으로 도시되어 있다. 이에 의해 캐시 세트 지시자가 제1 캐시 세트와 연관된 레지스터에 저장되기 때문에 제1 캐시 세트의 캐시 블록에 대한 태그 크기를 줄일 수 있다. 또한, 제1 및 제2 캐시 세트가 제1 상태에 있을 때, 제2 캐시 세트의 캐시 어드레스(예를 들어, 태그(1726a, 1726b) 등 참조)는 제2 캐시 세트와 연관된 제2 캐시 세트 지시자를 포함하지 않을 수 있다. 대신, 제2 캐시 세트 지시자는 제2 캐시 세트 레지스터(1712b)(예를 들어, 캐시 세트 레지스터(1712b)에 보유된 제2 캐시 세트 인덱스(1732b) 참조)에 저장되는 것으로 도시되어 있다. 이에 의해 캐시 세트 지시자가 제2 캐시 세트와 연관된 레지스터에 저장되기 때문에 제2 캐시 세트의 캐시 블록에 대한 태그 크기를 줄일 수 있다.
또한, 도 17에 도시된 실시형태에서, 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1710a 및 1710b) 참조)가 제2 상태(도 17에 도시되지 않음)에 있을 때, 제1 캐시 세트의 캐시 어드레스(예를 들어, 태그(1722a, 1722b) 등 참조)는 제2 캐시 세트와 연관된 제2 캐시 세트 지시자를 포함하지 않을 수 있다. 대신, 제2 캐시 세트 지시자는 제1 캐시 세트 레지스터(1712a)에 저장된다. 또한, 제1 및 제2 캐시 세트가 제2 상태에 있을 때, 제2 캐시 세트의 캐시 어드레스(예를 들어, 태그(1726a, 1726b) 등 참조)는 제1 캐시 세트와 연관된 제1 캐시 세트 지시자를 포함하지 않을 수 있다. 대신, 제1 캐시 세트 지시자는 제2 캐시 세트 레지스터(1712b)에 저장된다. 캐시 세트 레지스터의 내용을 이렇게 변경하면 캐시 세트 간의 상호 교환 가능성을 구현할 수 있다.
일부 실시형태에서, 도 17에 도시된 바와 같이, 제1 및 제2 레지스터(예를 들어, 레지스터(1712a 및 1712b) 참조)가 제1 상태에 있을 때, 제1 레지스터(예를 들어, 레지스터(1712a) 참조)에 저장된 내용은 제1 캐시 세트(예를 들어, 캐시 세트(1710a) 참조)와 연관된 제1 캐시 세트 인덱스(예를 들어, 캐시 세트 인덱스(1732a) 참조)를 포함할 수 있다. 그리고, 제2 레지스터(예를 들어, 레지스터(1712b) 참조)에 저장된 내용은 제2 캐시 세트(예를 들어, 캐시 세트(1710a) 참조)와 연관된 제2 캐시 세트 인덱스(예를 들어, 캐시 세트 인덱스(1732b) 참조)를 포함할 수 있다. 이러한 실시형태에서, 도 17에 도시되지는 않았지만, 제1 및 제2 레지스터가 제2 상태에 있을 때, 제1 레지스터에 저장된 내용은 제2 캐시 세트와 연관된 제2 캐시 세트 인덱스를 포함할 수 있고, 제2 레지스터에 저장된 내용은 제1 캐시 세트와 연관된 제1 캐시 세트 인덱스를 포함할 수 있다.
도 16에 도시된 실시형태 그리고 실행 유형을 식별하는 실행 유형 신호 라인에 대한 연결부를 갖는 실시형태와 같은 일부 실시형태에서, 캐시 시스템(예를 들어, 캐시 시스템(1000) 참조)은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서(예를 들어, 프로세서(1001) 참조)로부터 추측 상태 신호 라인(예를 들어, 추측 상태 신호 라인(1004) 참조)에 대한 연결부(예를 들어, 연결부(1002) 참조)를 더 포함할 수 있다. 이러한 실시형태에서, 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있다. 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다. 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경되면 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1610a 및 1610b) 참조)의 상태를 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1610a 및 1610b))의 상태를 변경 없이 유지하도록 구성될 수 있다.
다소 유사하게, 도 17에 도시된 실시형태 그리고 실행 유형을 식별하는 실행 유형 신호 라인에 대한 연결부를 갖는 실시형태와 같은 일부 실시형태에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함할 수 있다. 이러한 실시형태에서, 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있다. 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다. 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 및 제2 캐시 세트(예를 들어, 캐시 세트(1610a 및 1610b) 참조)의 상태를 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 및 제2 레지스터(예를 들어, 레지스터(1712a 및 1712b) 참조)의 상태를 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제1 및 제2 레지스터(예를 들어, 레지스터(1712a 및 1712b) 참조)의 상태를 변경 없이 유지하도록 구성될 수 있다.
일부 실시형태에서, 캐시 시스템은 제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트를 포함할 수 있다. 캐시 시스템은 또한 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 캐시 시스템은 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 및 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로를 더 포함할 수 있다. 논리 회로는 제1 캐시 세트의 캐시 어드레스 및 제1 레지스터에 저장된 내용으로부터 제1 확장된 태그를 생성하고, 제2 캐시 세트의 캐시 어드레스 및 제2 레지스터에 저장된 내용으로부터 제2 확장된 태그를 생성하도록 구성될 수 있다. 논리 회로는 또한 제1 캐시 세트에 대한 제1 확장된 태그 또는 제2 캐시 세트에 대한 제2 확장된 태그가 프로세서로부터 수신된 메모리 어드레스로부터 생성된 생성된 확장된 태그와 일치하는지 여부를 결정하도록 구성될 수 있다. 그리고, 논리 회로는 생성된 확장된 태그가 제1 확장된 태그와 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 확장된 태그가 제2 확장된 태그와 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수 있다.
이러한 실시형태에서, 캐시 시스템은 또한 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부를 포함할 수 있다. 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신하면, 논리 회로는 적어도 메모리 어드레스로부터 확장된 태그를 생성하도록 구성될 수 있다. 또한 캐시 시스템은 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 포함할 수 있다. 이러한 예에서, 논리 회로는 메모리 어드레스와 실행 유형 신호 라인에 의해 식별된 실행 유형으로부터 확장된 태그를 생성하도록 구성될 수 있다. 또한, 제1 레지스터와 제2 레지스터 각각에 저장된 내용은 실행 유형을 포함할 수 있다.
또한, 생성된 확장된 태그가 제1 캐시 세트에 대한 제1 확장된 태그 또는 제2 캐시 세트에 대한 제2 확장된 태그와 일치하는지 여부를 결정하기 위해, 논리 회로는 제1 캐시 세트에 대한 캐시 히트 또는 미스를 결정하기 위해 제1 확장된 태그를 생성된 확장된 태그와 비교하고, 제2 캐시 세트에 대한 캐시 히트 또는 미스를 결정하기 위해 제2 확장된 태그를 생성된 확장된 태그와 비교하도록 구성될 수 있다. 또한 논리 회로는 논리 회로가 생성된 확장된 태그가 제1 캐시 세트에 대한 제1 확장된 태그와 일치한다고 결정할 때 제1 캐시 세트로부터 출력을 수신하고; 논리 회로가 생성된 확장된 태그가 제2 캐시 세트에 대한 제2 확장된 태그와 일치한다고 결정할 때 제2 캐시 세트로부터 출력을 수신하도록 구성될 수 있다. 이러한 실시형태 및 다른 실시형태에서, 제1 캐시 세트의 캐시 어드레스는 제1 캐시 세트의 캐시 블록의 제1 태그를 포함할 수 있고, 제2 캐시 세트의 캐시 어드레스는 제2 캐시 세트의 캐시 블록의 제2 태그를 포함할 수 있다.
일부 실시형태에서, 캐시 시스템은 제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트를 포함할 수 있다. 캐시 시스템은 또한 제1 캐시 세트와 연관된 제1 레지스터 및 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함할 수 있다. 그리고 캐시 시스템은 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부, 실행 유형을 식별하는 프로세서로부터의 실행 유형 신호 라인에 대한 연결부, 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스에 대한 연결부, 및 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서에 결합된 논리 회로를 포함할 수 있다. 어드레스 버스에 대한 연결부가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 메모리 어드레스와 실행 유형 신호 라인에 의해 식별된 실행 유형으로부터 확장된 태그를 생성하고; 생성된 확장된 태그가 제1 캐시 세트에 대한 제1 확장된 태그와 일치하는지 또는 제2 캐시 세트에 대한 제2 확장된 태그와 일치하는지 여부를 결정하도록 구성될 수 있다. 또한, 논리 회로는 생성된 확장된 태그가 제1 확장된 태그와 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 확장된 태그가 제2 확장된 태그와 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성될 수 있다.
도 18은 본 발명의 일부 실시형태에 따라 물리적 캐시 세트 출력(예를 들어, 물리적 출력(1820a, 1820b 및 1820c) 참조)을 논리적 캐시 세트 출력(예를 들어, 논리적 출력(1840a, 1840b 및 1840c) 참조)으로 매핑하기 위해 매핑 회로(1830)를 이용하여 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b, 및 1810c) 참조)를 갖는 캐시 시스템(예를 들어, 도 6 및 도 10에 각각 도시된 캐시 시스템(600 및 1000) 참조)을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
도시된 바와 같이, 캐시 시스템은 복수의 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c) 참조)를 포함할 수 있다. 복수의 캐시 세트는 캐시 히트 시 제1 물리적 출력(예를 들어, 물리적 출력(1820a) 참조)을 제공하도록 구성된 제1 캐시 세트(예를 들어, 캐시 세트(1810a) 참조) 및 캐시 히트 시 제2 물리적 출력(예를 들어, 물리적 출력(1820b) 참조)을 제공하도록 제2 캐시 세트(예를 들어, 캐시 세트(1810b) 참조)를 포함한다. 캐시 시스템은 또한 캐시 시스템과 프로세서(예를 들어, 프로세서(601 및 1001) 참조) 사이에 결합된 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)에 대한 연결부(예를 들어, 도 6 및 도 10에 도시된 연결부(605a) 참조))를 포함할 수 있다. 캐시 시스템은 또한 캐시 시스템과 프로세서 사이에 결합된 어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(605b) 참조)를 포함할 수 있다.
도 18에 도시된 캐시 시스템은 제어 레지스터(1832)(예를 들어, 물리적-논리적 세트 매핑(PLSM) 레지스터(1832)), 및 복수의 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c) 참조)의 각각의 물리적 출력(예를 들어, 물리적 출력(1820a, 1820b 및 1820c) 참조)을 대응하는 논리적 캐시 세트 출력(예를 들어, 논리적 출력(1840a, 1840b, 및 1840c) 참조)으로서 제1 논리적 캐시(예를 들어, 일반 캐시)와 제2 논리적 캐시(예를 들어, 섀도우 캐시)로 매핑하기 위해 제어 레지스터에 결합된 매핑 회로(1830)를 포함한다. 매핑 회로(1830)에 의해 물리적 출력(예를 들어, 물리적 출력(1820a, 1820b 및 1820c) 참조)을 논리적 캐시 세트 출력(예를 들어, 논리적 출력(1840a, 1840b 및 1840c) 참조)으로 매핑하는 것은 제어 레지스터(1832)의 상태에 따른다. 도 18에 도시된 바와 같이, 적어도 논리적 출력(1840a 및 1840b)은 제1 유형의 실행을 위해 제1 논리적 캐시에 매핑되고, 적어도 논리적 출력(1840c)은 제2 유형의 실행을 위해 제2 논리적 캐시에 매핑된다. 도시되지는 않았지만, 캐시 시스템은 프로세서와 메모리 시스템(예를 들어, 메모리 시스템(603) 참조) 사이에 결합되도록 구성될 수 있다.
어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(605b) 참조)가 프로세서(예를 들어, 프로세서(601 및 1001) 참조)로부터 메모리 어드레스(예를 들어, 메모리 어드레스(102b) 참조)를 수신할 때, 그리고 제어 레지스터(1832)가 제1 상태(도 18에 도시됨)에 있을 때, 매핑 회로(1830)는 제1 유형의 실행(예를 들어, 비-추측 실행) 동안 제1 캐시 세트(예를 들어, 캐시 세트(1820a))를 통해 메모리 시스템(예를 들어, 메모리 시스템(601) 참조)에 액세스하기 위해 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)로부터 수신된 커맨드를 구현하기 위해 프로세서에 의한 제1 유형의 실행을 위해 제1 물리적 출력(예를 들어, 물리적 출력(1820a) 참조)을 제1 논리적 캐시(예를 들어, 논리적 출력(1840a) 참조)로 매핑하도록 구성될 수 있다.
또한, 어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(605b) 참조)가 프로세서(예를 들어, 프로세서(601 및 1001) 참조)로부터 메모리 어드레스(예를 들어, 메모리 어드레스(102b) 참조)를 수신할 때, 그리고 제어 레지스터(1832)가 제1 상태(도 18에 도시됨)에 있을 때, 매핑 회로(1830)는 제2 유형의 실행(예를 들어, 추측 실행) 동안 제2 캐시 세트(예를 들어, 캐시 세트(1820b))를 통해 메모리 시스템(예를 들어, 메모리 시스템(601) 참조)에 액세스하기 위해 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)로부터 수신된 커맨드를 구현하기 위해 프로세서에 의한 제2 유형의 실행을 위해 제2 물리적 출력(예를 들어, 물리적 출력(1820b) 참조)을 제2 논리적 캐시(예를 들어, 논리적 출력(1840b) 참조)로 매핑하도록 구성될 수 있다.
어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(605b) 참조)가 프로세서(예를 들어, 프로세서(601 및 1001) 참조)로부터 메모리 어드레스(예를 들어, 메모리 어드레스(102b) 참조)를 수신할 때, 그리고 제어 레지스터(1832)가 제2 상태(도 18에 도시되지 않음)에 있을 때, 매핑 회로(1830)는 제2 유형의 실행(예를 들어, 추측 실행) 동안 제1 캐시 세트(예를 들어, 캐시 세트(1820a))를 통해 메모리 시스템(예를 들어, 메모리 시스템(601) 참조)에 액세스하기 위해 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)로부터 수신된 커맨드를 구현하기 위해 제1 물리적 출력(예를 들어, 물리적 출력(1820a) 참조)을 제2 논리적 캐시(예를 들어, 논리적 출력(1840b) 참조)로 매핑하도록 구성된다.
또한, 어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(605b) 참조)가 프로세서(예를 들어, 프로세서(601 및 1001) 참조)로부터 메모리 어드레스(예를 들어, 메모리 어드레스(102b) 참조)를 수신할 때, 그리고 제어 레지스터(1832)가 제2 상태(도 18에 도시되지 않음)에 있을 때, 매핑 회로(1830)는 제1 유형의 실행(예를 들어, 비-추측 실행)을 위한 제2 캐시 세트(예를 들어, 캐시 세트(1820b))를 통해 메모리 시스템(예를 들어, 메모리 시스템(601) 참조)에 액세스하기 위해 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)로부터 수신된 커맨드를 구현하기 위해 제2 물리적 출력(예를 들어, 물리적 출력(1820b) 참조)을 제1 논리적 캐시(예를 들어, 논리적 출력(1840a) 참조)로 매핑하도록 구성된다.
일부 실시형태에서, 제1 논리적 캐시는 프로세서에 의한 비-추측 실행을 위한 일반 캐시이고, 제2 논리적 캐시는 프로세서에 의한 추측 실행을 위한 섀도우 캐시이다.
매핑 회로(1830)는 실행 유형과 관련된 문제를 해결한다. 매핑 회로(1830)는 실행 유형이 물리적 대 논리적 캐시 세트를 매핑하는 것과 관련된 방식에 대한 솔루션을 제공한다. 매핑 회로(1830)를 사용하면, 메모리 어드레스(예를 들어, 어드레스(102b) 참조)는 물리적 출력(예를 들어, 물리적 출력(1820a, 1820b 및 1820c) 참조)을 생성하기 위해 각 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c) 참조)에 적용될 수 있다. 물리적 출력(예를 들어, 물리적 출력(1820a, 1820b 및 1820c) 참조)은 메모리 어드레스의 블록 인덱스(예를 들어, 블록 인덱스(106b) 참조)를 사용하여 조회되는 태그 및 캐시 블록을 포함한다. 매핑 회로(1830)는 물리적 출력(예를 들어, 물리적 출력(1820a, 1820b 및 1820c) 참조)을 논리적 출력(예를 들어, 논리적 출력(1840a, 1840b 및 1840c) 참조) 중 하나로 재라우팅할 수 있다. 캐시 시스템은 물리적 출력 또는 논리적 출력에서 태그 비교를 수행할 수 있다. 태그 비교가 물리적 출력에서 수행되면, 물리적 출력의 태그 히트 또는 미스가 논리적 출력의 히트 또는 미스를 생성하기 위해 매핑 회로(1830)를 통해 라우팅된다. 그렇지 않은 경우 태그 자체가 매핑 회로(1830)를 통해 라우팅되고; 태그 비교는 논리적 출력에서 수행되어 대응하는 태그 히트 또는 미스 결과를 생성한다.
도 18에 도시된 바와 같이, 논리적 출력은 추측 실행과 비-추측 실행에 대해 미리 정의되어 있다. 따라서 현재 실행 유형(예를 들어, 실행 유형(110e) 참조)을 사용하여 논리적 출력 중 사용할 부분을 선택할 수 있다. 예를 들어, 논리적 출력(1840c)은 도 18에서 추측 실행을 위한 것으로 미리 정의되어 있기 때문에 현재 실행 유형이 일반 실행일 때 그 결과는 폐기될 수 있다. 그렇지 않은 경우, 현재 실행 유형이 추측이라면, 도 18의 논리적 출력(예를 들어, 출력(1840a 및 1840b))의 제1 부분의 결과는 차단될 수 있다.
도 18에 도시된 실시형태에서, 현재 실행 유형이 추측이라면 비-추측 실행에 대한 논리적 출력의 히트 또는 미스 결과는 '0'과 AND 연산을 수행하여 캐시를 "미스"를 유발할 수 있고, 비-추측 실행에 대한 논리적 출력의 히트 또는 미스 결과는 '1'과 AND 연산을 수행하여 결과를 변경 없이 유지할 수 있다. 실행 유형(110e)은 추측 실행 = 0 및 비-추측 실행 = 1이 되도록 구성될 수 있으며, 비-추측 출력(1840a 내지 1840b)의 태그 히트 또는 미스 결과는 실행 유형(예를 들어, 실행 유형(110e))과 AND 연산을 수행하여 태그와 실행 유형 모두의 일치를 고려하는 것을 포함하여 히트 또는 미스를 생성할 수 있다. 그리고, (1840c)의 태그 히트 또는 미스 결과는 실행 유형(110e)의 역과 AND 연산을 수행하여 히트 또는 미스를 생성할 수 있다.
도 19 및 도 20은 본 발명의 일부 실시형태에 따라 물리적 캐시 세트 출력(예를 들어, 도 18에 도시된 물리적 출력(1820a, 1820b 및 1820c)뿐만 아니라 도 19에 도시된 물리적 출력(1820a) 참조)을 논리적 캐시 세트 출력(예를 들어, 논리적 출력(1840a, 1840b 및 1840c) 참조)으로 매핑하기 위해 도 18에 도시된 회로, 즉 매핑 회로(1830)를 이용하여 상호 교환 가능한 캐시 세트(예를 들어, 도 18 내지 도 21에 도시된 캐시 세트(1810a, 1810b 및 1810c))를 갖는 캐시 시스템(예를 들어, 도 6 및 도 10에 각각 도시된 캐시 시스템(600 및 1000) 참조)을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다.
특히, 도 19는 제1 캐시 세트(1810a), 제1 캐시 세트 레지스터(1812a), 제1 캐시 세트에 대한 태그(1815a)(현재 태그 및 캐시 세트 인덱스를 포함함), 어드레스(102b)로부터의 태그 및 세트 인덱스(1850)(메모리 어드레스(102b)로부터의 현재 태그(104b)와 현재 캐시 세트 인덱스(112b)를 포함함), 및 제1 캐시 세트(1810a)에 대한 태그 비교 회로(1860a)를 도시한다. 또한, 도 19는 캐시 블록 및 연관된 태그(예를 들어, 캐시 블록(1818a 및 1818b) 및 태그(1816a 및 1816b) 참조)를 갖는 제1 캐시 세트(1810a)뿐만 아니라 제1 캐시 세트에 대한 캐시 세트 인덱스(1813a)를 보유하는 제1 캐시 세트 레지스터(1812a)를 도시한다. 또한, 도 19는 제2 캐시 세트(1810b)에 대한 태그 비교 회로(1860b)를 도시한다. 이 도면은 매핑 회로(1830)로 출력되는 제1 캐시 세트(1810a)로부터의 물리적 출력(1820a)을 도시한다. 시스템의 제2 캐시 세트(1810b) 및 다른 캐시 세트는 또한 각각의 물리적 출력을 매핑 회로(1830)에 제공할 수 있다(이것이 도 19에 도시되어 있지 않음).
도 20은 매핑 회로(1830)에 물리적 출력(예를 들어, 도 20에 도시된 바와 같이 캐시 세트(1810a, 1810b 및 1810c))에 의해 각각 제공되는 물리적 출력(1820a, 1820b 및 1820c) 참조)을 제공하는 시스템의 다수의 캐시 세트의 일례를 도시한다. 도 20은 또한 매핑 회로(1830)(예를 들어, 다중화기(2004a, 2004b 및 2004c)와 PLSM 레지스터(2006a, 2006b 및 2006c) 참조)의 일부를 도시한다. 도 20은 또한 적어도 캐시 블록(1818a 및 1818b) 및 연관된 태그(1816a 및 1816b)를 갖는 제1 캐시(1810a)를 도시한다. 그리고, 제2 캐시(1810b)는 또한 적어도 캐시 블록(1818c 및 1818d) 및 연관된 태그(1816c 및 1816d)를 갖는 것으로 도시되어 있다.
도 19는 또한 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조) 및/또는 매핑 회로(예를 들어, 매핑 회로(1830) 참조)의 일부일 수 있는 다중화기(1904a 및 1904b)뿐만 아니라 PLSM 레지스터(1906a 및 1906b)를 도시한다. 다중화기(1904a 및 1904b) 각각은 캐시 세트에 대한 각각의 태그(예를 들어, 제1 캐시 세트(1815a)에 대한 태그 참조)를 메모리 어드레스로부터의 태그와 세트 인덱스(예를 들어, 태그 및 세트 인덱스(1850) 참조)와 각각 비교하는 태그 비교 회로(1860a 및 1860b)로부터 적어도 히트 또는 미스 결과(1862a 및 1862b)를 수신한다. 일부 예에서 시스템의 각 캐시 세트에 대한 각 태그를 비교하기 위해 동등한 다중화기가 있을 수 있다. 각각의 다중화기(예를 들어, 다중화기(1904a 및 1904b) 참조)는 다중화기의 각 PLSM 레지스터(예를 들어, PLSM 레지스터(1906a 및 1906b) 참조)의 상태에 기초하여 선택된 히트 또는 미스 결과를 출력할 수 있다. 캐시 세트 비교로부터 캐시 히트 또는 미스를 출력하기 위한 다중화기의 선택을 제어하는 PLSM 레지스터는 이러한 레지스터가 매핑 회로(1830)의 일부일 때 제어 레지스터(1832)와 같은 마스터 PLSM 레지스터에 의해 제어될 수 있다.
일부 실시형태에서, PLSM 레지스터(예를 들어, PLSM 레지스터(1906a 및 1906b)뿐만 아니라 도 21에 도시된 PLSM 레지스터(2110a, 2110b 및 2110c) 참조) 각각은 특정 구현예에 따라 1-비트, 2-비트, 또는 3-비트 레지스터 또는 임의의 비트 길이 레지스터일 수 있다. 이러한 PLSM 레지스터는 히트 또는 미스를 출력하는 논리 유닛 중 하나의 논리 유닛의 적절한 물리적 태그 비교 결과 또는 정확한 결과를 선택하기 위해 사용될 수 있다(예를 들어, 다중화기에 의해 사용될 수 있다).
도 20에 도시된 PLSM 레지스터(2006a, 2006b 및 2006c)의 경우, 이러한 레지스터는 캐시 세트(예를 들어, 도 20에 도시된 캐시 세트(1810a, 1810b 및 1810c) 참조)의 적절한 물리적 출력(예를 들어, 도 20에 도시된 물리적 출력(1820a, 1820b, 및 1820c) 참조)을 선택하는 데 사용될 수 있다 (예를 들어, 다중화기에 의해 사용될 수 있다). 이러한 PLSM 레지스터는 또한 특정 구현예에 따라 각각 1-비트, 2-비트 또는 3-비트 레지스터 또는 임의의 비트 길이 레지스터일 수 있다. 또한, 제어 레지스터(1832)는 특정 구현예에 따라 1-비트, 2-비트 또는 3-비트 레지스터 또는 임의의 비트 길이 레지스터일 수 있다.
일부 실시형태에서, 캐시 세트로부터의 물리적 출력의 선택 또는 캐시 히트 또는 미스의 선택은 출력 유형당 및 논리 유닛당 또는 캐시 세트당 적어도 하나의 다중화기를 갖도록 시스템에 배열될 수 있는 다중화기(예를 들어, 도 19에 도시된 다중화기(1904a 및 1904b), 도 20에 도시된 다중화기(2004a, 2004b 및 2004c), 및 도 21에 도시된 다중화기(2110a, 2110b 및 2110c) 참조)에 의해 이루어진다. 도면에 도시된 바와 같이, 일부 실시형태에서, n개의 캐시 세트 또는 논리 비교 유닛이 있는 경우, n개의 n대1 다중화기가 존재한다.
도 19에 도시된 바와 같이, 컴퓨팅 디바이스는 제1 PLSM 레지스터(예를 들어, PLSM 레지스터(1906a) 참조)에 의해 수신된 내용에 따라 제1 히트 또는 미스 결과 또는 제2 히트 또는 미스 결과(예를 들어, 도 19에 도시된 히트 또는 미스 출력(1862a 및 1862b) 참조)를 프로세서에 출력하도록 구성된 제1 다중화기(예를 들어, 다중화기(1904a))를 포함할 수 있다. 컴퓨팅 디바이스는 또한 제2 PLSM 레지스터(예를 들어, PLSM 레지스터(1906b) 참조)에 의해 수신된 내용에 따라 제2 히트 또는 미스 결과 또는 제1 히트 또는 미스 결과(예를 들어, 도 19에 도시된 히트 또는 미스 출력(1862b 및 1862a) 참조)를 프로세서에 출력하도록 구성된 제2 다중화기(예를 들어, 다중화기(1904b))를 더 포함할 수 있다.
일부 실시형태에서, PLSM 레지스터의 내용은 도 18에 도시된 제어 레지스터(1832)와 같은 제어 레지스터로부터 수신될 수 있다. 예를 들어, 일부 실시형태에서, 제1 PLSM 레지스터에 의해 수신된 내용이 제1 상태를 나타낼 때, 제1 다중화기는 제1 히트 또는 미스 결과를 출력하고, 제1 PLSM 레지스터에 의해 수신된 내용이 제2 상태를 나타낼 때, 제1 다중화기는 제2 히트 또는 미스 결과를 출력한다. 또한, 제2 PLSM 레지스터에 의해 수신된 내용이 제1 상태를 나타낼 때, 제2 다중화기는 제2 히트 또는 미스 결과를 출력할 수 있다. 그리고, 제2 PLSM 레지스터에 의해 수신된 내용이 제2 상태를 나타낼 때, 제2 다중화기는 제1 히트 또는 미스 결과를 출력할 수 있다.
도 20에 도시된 바와 같이, 컴퓨팅 디바이스는 제1 PLSM 레지스터(예를 들어, PLSM 레지스터(2006a))에 의해 수신된 내용에 따라 제1 캐시 세트(1820a)의 제1 물리적 출력 또는 제2 캐시 세트(1820b)의 제2 물리적 출력을 프로세서에 출력하도록 구성된 제1 다중화기(예를 들어, 다중화기(2004a))를 포함할 수 있다. 컴퓨팅 디바이스는 제2 PLSM 레지스터(예를 들어, PLSM 레지스터(2006b))에 의해 수신된 내용에 따라 제1 캐시 세트의 제1 물리적 출력(1820a) 또는 제2 캐시 세트의 제2 물리적 출력(1820b)을 프로세서에 출력하도록 구성된 제2 다중화기(예를 들어, 다중화기(2004b))를 포함할 수 있다.
일부 실시형태에서, PLSM 레지스터의 내용은 도 18에 도시된 제어 레지스터(1832)와 같은 제어 레지스터로부터 수신될 수 있다. 예를 들어, 일부 실시형태에서, 제1 PLSM 레지스터에 의해 수신된 내용이 제1 상태를 나타낼 때, 제1 다중화기는 제1 물리적 출력(1820a)을 출력하고, 제1 PLSM 레지스터에 의해 수신된 내용이 제2 상태를 나타낼 때, 제1 다중화기는 제2 물리적 출력(1820b)을 출력한다. 또한, 제2 PLSM 레지스터에 의해 수신된 내용이 제1 상태를 나타낼 때, 제2 다중화기는 제2 물리적 출력(1820b)을 출력할 수 있다. 그리고, 제2 PLSM 레지스터에 의해 수신된 내용이 제2 상태를 나타낼 때, 제2 다중화기는 제1 물리적 출력(1820a)을 출력할 수 있다.
일부 실시형태에서, 블록 선택은 블록 인덱스와 주 또는 섀도우 설정의 조합에 기초할 수 있다. 이러한 파라미터는 PLSM 레지스터를 제어할 수 있다.
도 19 내지 도 20에 도시된 예와 같은 일부 실시형태에서, 단 하나의 어드레스(예를 들어, 태그와 인덱스)만이 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c))에 공급된다. 이러한 실시형태에서, 캐시 세트가 미스를 생성하는 경우 메모리에 따라 캐시 세트 중 업데이트되는 캐시 세트를 제어하는 신호가 있다.
다중화기(1904a)는 캐시 세트가 제1 상태에 있을 때 캐시 세트(1810a)의 히트 또는 미스 출력을 제공하고 따라서 주 또는 일반 실행을 위한 캐시 세트의 히트 또는 미스 상태를 제공하기 위해 PLSM 레지스터(1906a)에 의해 제어된다. 다중화기(1904b)는 캐시 세트가 제1 상태에 있을 때 캐시 세트(1810b)의 히트 또는 미스 출력을 제공하고 따라서 추측 실행을 위한 캐시 세트의 히트 또는 미스 상태를 제공하기 위해 PLSM 레지스터(1906b)에 의해 제어된다. 한편, 다중화기(1904a)는 캐시 세트가 제2 상태에 있을 때 캐시 세트(1810b)의 히트 또는 미스 출력을 제공하고 따라서 주 또는 일반 실행을 위한 캐시 세트의 히트 또는 미스 상태를 제공하기 위해 PLSM 레지스터(1906a)에 의해 제어된다. 다중화기(1904b)는 캐시 세트가 제2 상태에 있을 때 캐시 세트(1810a)의 히트 또는 미스 출력을 제공하고 따라서 추측 실행을 위한 캐시 세트의 히트 또는 미스 상태를 제공하기 위해 PLSM 레지스터(1906b)에 의해 제어된다.
히트 또는 미스 신호 선택과 유사하게, (예를 들어, 히트가 있는 경우) 프로세서에 대한 하나의 결과(예를 들어, 도 20에 도시된 물리적 출력(1820a, 1820b 및 1820c) 참조))를 생성하기 위해 상호 교환 가능한 캐시로부터 조회된 데이터를 선택할 수 있다.
예를 들어, 캐시 세트의 제1 상태에서 캐시 세트(1810a)가 주 캐시 세트로 사용되고, 캐시 세트(1810b)가 섀도우 캐시 세트로 사용되는 경우, 다중화기(2004a)는 비-추측 실행에 사용되는 주 또는 일반 논리적 캐시에 대한 캐시 세트(1810a)의 물리적 출력(1820a)을 선택하기 위해 PLSM 레지스터(2006a)에 의해 제어된다. 또한, 예를 들어, 캐시 세트의 제2 상태에서, 캐시 세트(1810b)가 주 캐시 세트로 사용되고, 캐시 세트(1810a)가 섀도우 캐시 세트로 사용되면, 다중화기(2004a)는 비-추측 실행에 사용되는 주 또는 일반 논리적 캐시에 대한 캐시 세트(1810b)의 물리적 출력(1820b)을 선택하기 위해 PLSM 레지스터(2006a)에 의해 제어된다. 이러한 예에서, 캐시 세트의 제1 상태에서, 캐시 세트(1810a)가 주 캐시 세트로 사용되고, 캐시 세트(1810b)가 섀도우 캐시 세트로 사용되면, 다중화기(2004b)는 추측 실행에 사용되는 섀도우 논리적 캐시에 대한 캐시 세트(1810b)의 물리적 출력(1820b)을 선택하기 위해 PLSM 레지스터(2006b)에 의해 제어된다. 또한, 예를 들어, 캐시 세트의 제2 상태에서, 캐시 세트(1810a)가 주 캐시 세트로 사용되고, 캐시 세트(1810b)가 섀도우 캐시 세트로 사용되면, 다중화기(2004b)는 추측 실행에 사용되는 섀도우 논리적 캐시에 대한 캐시 세트(1810a)의 물리적 출력(1820a)을 선택하기 위해 PLSM 레지스터(2006b)에 의해 제어된다.
일부 실시형태에서, 캐시 시스템은 복수의 캐시 세트(예를 들어, 도 18 내지 도 21에 도시된 캐시 세트(1810a, 1810b 및 1810c) 참조)와 각각 연관된 복수의 레지스터(예를 들어, 도 19에 도시된 레지스터(1812a) 참조)를 더 포함할 수 있다. 레지스터는 제1 캐시 세트(예를 들어, 캐시 세트(1810a) 참조)와 연관된 제1 레지스터(예를 들어, 레지스터(1812a) 참조) 및 제2 캐시 세트(예를 들어, 캐시 세트(1810b) 참조)와 연관된 제2 레지스터(도 18 내지 도 21에는 도시되지 않지만 도 6 및 도 10에는 도시됨)를 포함할 수 있다. 캐시 시스템은 또한 복수의 레지스터에 따라 복수의 캐시 세트를 제어하기 위해 프로세서(예를 들어, 논리 회로(601 및 1001) 참조)에 결합된 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)를 포함할 수 있다. 어드레스 버스(예를 들어, 어드레스 버스(605b) 참조)에 대한 연결부(예를 들어, 연결부(604b) 참조)가 프로세서로부터 메모리 어드레스를 수신할 때, 논리 회로는 적어도 메모리 어드레스로부터 세트 인덱스를 생성하고, 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는지 또는 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성될 수 있다. 그리고, 논리 회로는 생성된 세트 인덱스가 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 제1 캐시 세트를 통해, 및 생성된 세트 인덱스가 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 제2 캐시 세트를 통해 커맨드 버스(예를 들어, 커맨드 버스(605a) 참조)에 대한 연결부(예를 들어, 연결부(604a) 참조)에서 수신된 커맨드를 구현하도록 구성될 수 있다.
일부 실시형태에서, 매핑 회로(예를 들어, 매핑 회로(1830) 참조)는 논리 회로의 일부이거나 논리 회로에 연결될 수 있고, 제어 레지스터(예를 들어, 제어 레지스터(1832) 참조)의 상태는 복수의 캐시 세트 중 캐시 세트의 상태를 제어할 수 있다. 일부 실시형태에서, 제어 레지스터의 상태는 캐시 세트의 각 블록에 대한 유효 비트를 변경함으로써 복수의 캐시 세트 중 캐시 세트의 상태를 제어할 수 있다(예를 들어, 도 21 내지 도 23 참조).
또한, 일부 예에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인(예를 들어, 추측 상태 신호 라인(1004) 참조)에 대한 연결부(예를 들어, 연결부(1002) 참조)를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있으며, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낼 수 있다. 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 제1 및 제2 캐시 세트의 상태를 제어 레지스터(예를 들어, 제어 레지스터(1832) 참조)를 통해 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제어 레지스터를 통해 제1 및 제2 캐시 세트의 상태를 변경 없이 유지하도록 구성될 수 있다.
일부 실시형태에서, 매핑 회로(예를 들어, 매핑 회로(1830) 참조)는 논리 회로(예를 들어, 논리 회로(606 및 1006) 참조)의 일부이거나 논리 회로에 연결되고, 제어 레지스터(예를 들어, 제어 레지스터(1832) 참조)의 상태는 매핑 회로를 통해 복수의 캐시 레지스터(예를 들어, 도 19에 도시된 레지스터(1812a) 참조) 중 캐시 레지스터의 상태를 제어할 수 있다. 이러한 예에서, 캐시 시스템은 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 프로세서로부터의 추측 상태 신호 라인(예를 들어, 추측 상태 신호 라인(1004) 참조)에 대한 연결부(예를 들어, 연결부(1002) 참조)를 더 포함할 수 있다. 추측 상태 신호 라인에 대한 연결부는 추측 실행의 상태를 수신하도록 구성될 수 있으며, 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타낸다. 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경되면, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우, 제어 레지스터를 통해 제1 및 제2 레지스터의 상태를 변경하도록 구성될 수 있다. 그리고, 실행 유형이 추측 실행으로부터 비-추측 실행으로 변경될 때, 논리 회로는 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 제어 레지스터를 통해 제1 및 제2 레지스터의 상태를 변경 없이 유지하도록 구성될 수 있다.
도 21은 본 발명의 일부 실시형태에 따라 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c)를 포함하는 도 18에 도시된 캐시 세트)를 갖는 캐시 시스템을 갖는 예시적인 컴퓨팅 디바이스의 예시적인 양태를 도시한다. 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c))는 물리적 캐시 세트 출력을 논리적 캐시 세트 출력으로 매핑하기 위해 도 18에 도시된 회로, 즉, 매핑 회로(1830)를 이용하는 것으로 도시되어 있다.
도 21에 도시된 부분은 주 메모리와 같은 메모리, 프로세서(예를 들어, 프로세서(1001) 참조), 및 적어도 3개의 상호 교환 가능한 캐시 세트(예를 들어, 상호 교환 가능한 캐시 세트(1810a, 1810b 및 1810c) 참조)를 포함하는 컴퓨팅 디바이스의 일부이다. 프로세서는 주 스레드와 추측 스레드를 실행하도록 구성된다.
도 21에 도시된 바와 같이, 제1 캐시 세트(예를 들어, 캐시 세트(1810a))는 메모리와 프로세서 사이에 결합될 수 있고, 캐시 세트의 제1 상태에서 주 스레드에 대한 제1 복수의 블록(예를 들어, 도 21에 도시된 블록(2101a, 2101b 및 2101c) 참조)을 포함할 수 있다. 제1 복수의 블록 중의 각각의 블록은 캐싱된 데이터, 제1 유효 비트, 및 인덱스와 태그를 포함하는 블록 어드레스를 포함할 수 있다. 그리고, 프로세서는, 단독으로 또는 캐시 제어기와 함께, 제1 복수의 블록이 캐시 세트의 제1 상태에서, 캐시 세트의 제2 상태에서, 추측 스레드에서는 액세스 가능하고 주 스레드에서는 차단되도록, 추측 스레드의 추측이 성공적일 때, 각각의 제1 유효 비트를 유효를 나타내는 것에서부터 무효를 나타내는 것으로 변경하도록 구성될 수 있다.
도 21에 도시된 바와 같이 제2 캐시 세트(예를 들어, 캐시 세트(1810b))는 주 메모리와 프로세서 사이에 결합될 수 있고, 캐시 세트의 제1 상태에서 추측 스레드에 대한 제2 복수의 블록(예를 들어, 도 21에 도시된 블록(2101d, 2101e, 및 2101f))을 포함할 수 있다. 제2 복수의 블록의 각 블록은 캐싱된 데이터, 제2 유효 비트, 및 인덱스와 태그를 포함하는 블록 어드레스를 포함할 수 있다. 그리고 프로세서는, 단독으로 또는 캐시 제어기와 함께, 제2 복수의 블록이 캐시 세트의 제2 상태에서, 주 스레드에서는 액세스 가능하고 추측 스레드에서는 차단되도록, 추측 스레드의 추측이 성공적일 때, 각각의 제2 유효 비트를 무효를 나타내는 것에서부터 유효를 나타내는 것으로 변경하도록 구성될 수 있다.
일부 실시형태에서, 도 21에 도시된 바와 같이, 제1 복수의 블록 중 하나의 블록은 제2 복수의 블록 중 각각의 블록에 대응할 수 있다. 그리고, 제1 복수의 블록 중의 블록은 제2 복수의 블록의 각 블록과 동일한 블록 어드레스를 가짐으로써 제2 복수의 블록 중의 각 블록에 대응할 수 있다.
또한, 도 21에 도시된 바와 같이, 컴퓨팅 디바이스는 제1 복수의 블록 중의 블록의 제1 유효 비트를 수신하도록 구성된 제1 물리적-논리적 매핑 세트 매핑(PLSM) 레지스터(예를 들어, PLSM 레지스터 1 (2108a))를 포함할 수 있다. 제1 유효 비트는 제1 복수의 블록 중의 블록의 캐싱된 데이터의 유효성을 나타낼 수 있다. 또한, 이것은 주 스레드에서 제1 복수의 블록 중의 블록을 사용할 것인지 또는 제2 복수의 블록 중 대응하는 블록을 사용할 것인지 여부를 나타낼 수 있다.
또한, 도 21에 도시된 바와 같이, 컴퓨팅 디바이스는 제2 복수의 블록 중의 블록의 제2 유효 비트를 수신하도록 구성된 제2 PLSM 레지스터(예를 들어, PLSM 레지스터 2 (2108b))를 포함할 수 있다. 제2 유효 비트는 제2 복수의 블록 중의 블록의 캐싱된 데이터의 유효성을 나타낸다. 이것은 또한 주 스레드에서 제2 복수의 블록 중의 블록을 사용할 것인지 또는 제1 복수의 블록 중의 대응하는 블록을 사용할 것인지 여부를 나타낼 수 있다.
또한, 도 21에 도시된 바와 같이, 컴퓨팅 디바이스는 제1 복수의 블록 중의 블록이 히트 또는 미스인지 여부를 결정하도록 구성된, 제1 캐시 세트에 대한 논리 유닛(2104a)을 포함할 수 있다. 논리 유닛(2104a)은 비교기(2106a)와 AND 게이트(2107a)를 포함하는 것으로 도시되어 있다. 비교기(2106a)는 블록의 태그와 메모리에 있는 어드레스의 대응하는 태그 사이에 일치가 있는지 여부를 결정할 수 있다. 그리고, 태그가 일치하고 블록에 대한 유효 비트가 유효하면, AND 게이트(2107a)는 이 블록이 히트했다는 지시를 출력한다. 그렇지 않은 경우, AND 게이트(2107a)는 블록이 미스했다는 지시를 출력한다. 다시 말해, 제1 캐시에 대한 논리 유닛(2104a)은 논리 유닛에서의 결정에 따라 제1 히트 또는 미스 결과를 출력하도록 구성된다.
또한, 도 21에 도시된 바와 같이, 컴퓨팅 디바이스는 제2 복수의 블록 중의 블록이 히트했는지 또는 미스했는지 여부를 결정하도록 구성된, 제2 캐시 세트에 대한 논리 유닛(2104b)을 포함할 수 있다. 논리 유닛(2104b)은 비교기(2106b)와 AND 게이트(2107b)를 포함하는 것으로 도시되어 있다. 비교기(2106b)는 블록의 태그와 메모리에 있는 어드레스의 대응하는 태그 사이에 일치가 있는지 여부를 결정할 수 있다. 그리고, 태그가 일치하고 블록에 대한 유효 비트가 유효하면, AND 게이트(2107b)는 블록이 히트했다는 지시를 출력한다. 그렇지 않은 경우, AND 게이트(2107b)는 블록이 미스했다는 지시를 출력한다. 다시 말해, 제2 캐시에 대한 논리 유닛(2104b)은 논리 유닛에서의 결정에 따라 제2 히트 또는 미스 결과를 출력하도록 구성된다.
또한, 도 21에 도시된 바와 같이, 컴퓨팅 디바이스는 제1 PLSM 레지스터에 의해 수신된 제1 유효 비트에 따라 제1 히트 또는 미스 결과 또는 제2 히트 또는 미스 결과를 프로세서에 출력하도록 구성된 제1 다중화기(예를 들어, 다중화기(2110a))를 포함할 수 있다. 컴퓨팅 디바이스는 또한 제2 PLSM 레지스터에 의해 수신된 제2 유효 비트에 따라 제2 히트 또는 미스 결과 또는 제1 히트 또는 미스 결과를 프로세서에 출력하도록 구성된 제2 다중화기(예를 들어, 다중화기(2110b))를 포함할 수 있다. 일부 실시형태에서, 제1 PLSM 레지스터에 의해 수신된 제1 유효 비트가 유효를 나타낼 때, 제1 다중화기는 제1 히트 또는 미스 결과를 출력하고, 제1 PLSM 레지스터에 의해 수신된 제1 유효 비트가 무효를 나타낼 때, 제1 다중화기는 제2 히트 또는 미스 결과를 출력한다. 또한, 제2 PLSM 레지스터에 의해 수신된 제2 유효 비트가 유효를 나타낼 때, 제2 다중화기는 제2 히트 또는 미스 결과를 출력한다. 그리고, 제2 PLSM 레지스터에 의해 수신된 제2 유효 비트가 무효를 나타낼 때, 제2 다중화기는 제1 히트 또는 미스 결과를 출력한다.
일부 실시형태에서, 블록 선택은 블록 인덱스와 주 또는 섀도우 설정의 조합에 기초할 수 있다.
일부 실시형태에서, 단 하나의 어드레스(예를 들어, 태그와 인덱스)만이 상호 교환 가능한 캐시 세트(예를 들어, 캐시 세트(1810a, 1810b 및 1810c))에 공급된다. 이러한 실시형태에서, 캐시 세트가 미스를 생성하는 경우 메모리에 따라 캐시 세트 중 업데이트되는 캐시 세트를 제어하는 신호가 있다. 히트 또는 미스 신호의 선택과 유사하게, (예를 들어, 히트가 있는 경우) 프로세서에 대한 하나의 결과를 생성하기 위해 상호 교환 가능한 캐시로부터 조회되는 데이터를 선택할 수 있다. 예를 들어, 캐시 세트의 제1 상태에서, 캐시 세트(1810a)가 주 캐시 세트로 사용되고, 캐시 세트(1810b)가 섀도우 캐시 세트로 사용되면, 다중화기(2110a)는 캐시 세트(1804a)의 히트 또는 미스 출력과, 주 캐시 세트의 히트 또는 미스 상태를 선택하기 위해 PLSM 레지스터(2108a)에 의해 제어된다. 그리고, 다중화기(2110b)는 캐시 세트(1810b)의 히트 또는 미스 출력과, 이에 따라 섀도우 캐시 세트의 히트 또는 미스 상태를 제공하기 위해 PLSM 레지스터(2108b)에 의해 제어된다.
이러한 실시형태에서, 캐시 세트가 제2 상태에 있을 때, 캐시 세트(1810a)가 섀도우 캐시로 사용되고 캐시 세트(1810b)가 주 캐시로 사용될 때, 다중화기(2110a)는 캐시 세트(1810b)의 히트 또는 미스 출력과, 주 캐시의 히트 또는 미스 상태를 선택하기 위해 PLSM 레지스터(2108b)에 의해 제어될 수 있다. 그리고, 다중화기(2110b)는 캐시 세트(1810a)의 히트 또는 미스 출력과, 이에 따라 섀도우 캐시의 히트 또는 미스 상태를 제공하기 위해 PLSM 레지스터(2108b)에 의해 제어될 수 있다.
따라서, 다중화기(2110a)는 주 캐시가 어드레스에 대해 캐시에서 히트했는지 또는 미스했는지 여부를 출력할 수 있고; 다중화기(2110b)는 섀도우 캐시가 동일한 어드레스에 대해 캐시에서 히트했는지 또는 미스했는지 여부를 출력할 수 있다. 그런 다음 어드레스가 추측인지 아닌지 여부에 따라 출력 중 하나를 선택할 수 있다. 캐시 미스가 발생하면 메모리에서 이 어드레스를 사용하여 대응하는 캐시에 데이터를 로딩한다. 유사하게 PLSM 레지스터를 통해 대응하는 캐시 세트(1810a) 또는 세트(1810b)를 업데이트할 수 있다.
일부 실시형태에서, 캐시 세트의 제1 상태에서, 추측 스레드에 의한 제1 명령어의 추측 실행 동안, 추측 실행의 효과는 제2 캐시 세트(예를 들어, 캐시 세트(1810b)) 내에 저장된다. 제1 명령어의 추측 실행 동안, 프로세서는 제1 캐시 세트(예를 들어, 캐시 세트(1810a))에 대한 변경을 차단하도록 구성된 추측 실행을 나타내는 신호를 선언하도록 구성될 수 있다. 신호가 프로세서에 의해 선언될 때, 프로세서는 제2 캐시 세트(예를 들어, 캐시 세트(1810b))가 메모리를 업데이트하는 것을 차단하도록 추가로 구성될 수 있다.
캐시 세트의 상태가 제2 상태로 변경되면, 제1 명령어의 실행이 주 스레드로 수행되어야 한다는 결정에 응답하여, (제1 캐시 세트 대신에) 제2 캐시 세트가 제1 명령어와 함께 사용된다. 제1 명령어의 실행이 주 스레드로 수행되지 않는다는 결정에 응답하여, 제1 캐시 세트가 제1 명령어와 함께 사용된다.
일부 실시형태에서, 제1 상태에서, 제1 명령어의 추측 실행 동안, 프로세서는 제2 캐시 세트(예를 들어, 캐시 세트(1810b))를 통해 메모리에 액세스한다. 그리고, 하나 이상의 명령어의 추측 실행 동안, 제2 캐시의 내용에 대한 액세스는 프로세서에 의한 제1 명령어의 추측 실행으로 제한된다. 제1 명령어의 추측 실행 동안, 프로세서는 제1 캐시 세트(예를 들어, 캐시 세트(1810a))를 변경하는 것이 금지될 수 있다.
일부 실시형태에서, 제1 캐시 세트(예를 들어, 캐시 세트(1810a)) 및/또는 제2 캐시 세트(예를 들어, 캐시 세트(1810b))의 내용은 캐시 일관성 프로토콜을 통해 액세스될 수 있다.
도 22 및 도 23은 본 발명의 일부 실시형태에 따라 프로세서에 의한 추측 실행과 비-추측 실행을 위해 상호 교환 가능한 캐시 세트를 사용하기 위한 방법(2200 및 2300)을 각각 도시한다. 특히, 방법(2200 및 2300)은 도 21에 도시된 컴퓨팅 디바이스에 의해 수행될 수 있다. 또한, 도 18 내지 도 20에 도시된 컴퓨팅 디바이스뿐만 아니라 본 명세서에 개시된 임의의 컴퓨팅 디바이스에 의해 다소 유사한 방법이 수행될 수 있으나, 이러한 컴퓨팅 디바이스는 블록 어드레스의 유효 비트 이외의 다른 파라미터를 통해 캐시 상태, 캐시 세트 상태 또는 캐시 세트 레지스터 상태를 제어한다. 예를 들어, 도 16에서 캐시 세트의 상태는 캐시 세트의 블록의 태그 내의 캐시 세트 지시자를 통해 제어된다. 그리고, 예를 들어, 도 17에서, 캐시 세트의 상태는 캐시 세트와 연관된 캐시 세트 레지스터의 상태를 통해 제어된다. 이러한 예에서 상태는 캐시 세트 레지스터에 저장된 캐시 세트 인덱스를 통해 제어된다. 한편, 도 21 내지 도 23을 통해 개시되는 실시형태에서, 캐시 세트 내의 블록 어드레스의 유효 비트를 통해 캐시 세트의 상태를 제어한다.
방법(2200)은 블록(2202)에서 프로세서(예를 들어, 프로세서(1001))에 의해 주 스레드 및 추측 스레드를 실행하는 단계를 포함한다. 방법(2200)은 블록(2204)에서 메모리 시스템과 프로세서 사이에 결합된 캐시 시스템의 제1 캐시 세트(예를 들어, 도 21에 도시된 캐시 세트(1810a))에, 주 스레드에 대한 제1 복수의 블록(예를 들어, 도 21에 도시된 블록(2101a, 2101b 및 2101c))을 제공하는 단계를 포함한다. 제1 복수의 블록 중의 각각의 블록은 캐싱된 데이터, 제1 유효 비트, 및 인덱스와 태그를 갖는 블록 어드레스를 포함할 수 있다. 방법(2200)은, 블록(2206)에서, 메모리 시스템과 프로세서 사이에 결합된 캐시 시스템의 제2 캐시 세트(예를 들어, 캐시 세트(1810b))에, 추측 스레드에 대한 제2 복수의 블록(예를 들어, 블록(2101d, 2101e 및 2101f))을 제공하는 단계를 포함한다. 제2 복수의 블록 중의 각각의 블록은 캐싱된 데이터, 제2 유효 비트, 및 인덱스와 태그를 갖는 블록 어드레스를 포함할 수 있다.
블록(2207)에서, 방법(2200)은 제1 복수의 블록이 추측 스레드에 대해서는 액세스 가능하고 주 스레드에 대해서는 차단되도록 그리고 제2 복수의 블록이 주 스레드에 대해서는 액세스 가능하고 추측 스레드에 대해서는 차단되도록 예를 들어 프로세서에 의해 추측 스레드의 추측이 성공적인지 여부를 식별하는 단계로 계속된다. 도 22에 도시된 바와 같이, 추측 스레드의 추측이 실패하면, 제1 및 제2 복수의 블록의 유효성 비트는 프로세서에 의해 변경되지 않고, 블록(2207)에서 추측 스레드가 성공적인지 여부를 결정하기 전과 동일한 유효성 값으로 유지된다. 따라서 캐시 세트의 상태는 제1 상태로부터 제2 상태로 변경되지 않는다.
블록(2208)에서, 방법(200)은, 제1 복수의 블록이 추측 스레드에 대해서는 액세스 가능하고 주 스레드에 대해서는 차단되도록 추측 스레드의 추측이 성공적일 때 프로세서 단독으로 또는 캐시 제어기와 함께 각각의 제1 유효 비트를 유효를 나타내는 것에서부터 무효를 나타내는 것으로 변경하는 단계로 계속된다. 또한, 블록(2210)에서, 방법(200)은, 프로세서 단독으로 또는 캐시 제어기와 함께, 제2 복수의 블록이 주 스레드에 대해서는 액세스 가능하고 추측 스레드에 대해서는 차단되도록 추측 스레드의 추측이 성공적일 때 각각의 제2 유효 비트를 무효를 나타내는 것에서부터 유효를 나타내는 것으로 변경하는 단계로 계속된다. 따라서 캐시 세트의 상태는 제1 상태로부터 제2 상태로 변경된다.
일부 실시형태에서, 추측 스레드에 의한 제1 명령어의 추측 실행 동안, 추측 실행의 효과는 제2 캐시 세트 내에 저장된다. 이러한 실시형태에서, 제1 명령어의 추측 실행 동안, 프로세서는 제1 캐시의 변경을 차단할 수 있는 추측 실행을 나타내는 신호를 선언할 수 있다. 또한 신호가 프로세서에 의해 선언되면 프로세서는 제2 캐시가 메모리를 업데이트하는 것을 차단할 수 있다. 이것은 캐시 세트가 제1 상태에 있는 동안 발생한다.
또한, 이러한 실시형태에서, 제1 명령어의 실행이 주 스레드와 함께 수행되어야 한다는 결정에 응답하여, (제1 캐시 세트 대신에) 제2 캐시 세트가 제1 명령어와 함께 사용된다. 제1 명령어의 실행이 주 스레드로 수행되지 않는다는 결정에 응답하여, 제1 캐시는 제1 명령어와 함께 사용된다. 이것은 캐시 세트가 제2 상태에 있는 동안 발생한다.
일부 실시형태에서, 제1 명령어의 추측 실행 동안, 프로세서는 제2 캐시를 통해 메모리에 액세스한다. 그리고, 하나 이상의 명령어의 추측 실행 동안, 제2 캐시의 내용에 액세스하는 것은 프로세서에 의한 제1 명령어의 추측 실행으로 제한된다. 이러한 실시형태에서, 제1 명령어의 추측 실행 동안, 프로세서는 제1 캐시를 변경하는 것이 금지된다.
일부 실시형태에서, 제1 캐시의 내용은 캐시 일관성 프로토콜을 통해 액세스 가능하다.
도 23에서, 방법(2300)은 방법(2200)의 블록(2202, 2204, 2206, 2207, 2208, 및 2210)의 동작을 포함한다.
방법(2300)은 블록(2302)에서 제1 물리적-논리적 매핑 세트 매핑(PLSM) 레지스터(예를 들어, 도 21에 도시된 PLSM 레지스터(2108a))에 의해 제1 복수의 블록 중의 블록의 제1 유효 비트를 수신하는 단계를 포함한다. 제1 유효 비트는 제1 복수의 블록 중의 블록의 캐싱된 데이터의 유효성을 나타낼 수 있다. 또한, 방법(2300)은 블록(2304)에서 제2 복수의 블록 중의 블록의 제2 유효 비트를 제2 PLSM 레지스터(예를 들어, PLSM 레지스터(2108b))에 의해 수신하는 단계를 포함한다. 제2 유효 비트는 제2 복수의 블록 중의 블록의 캐싱된 데이터의 유효성을 나타낼 수 있다.
블록(2306)에서, 방법(2300)은, 제1 캐시 세트에 대한 제1 논리 유닛(예를 들어, 도 21에 도시된 논리 유닛(2104a))에 의해, 제1 복수의 블록 중의 블록이 히트했는지 또는 미스했는지 여부를 결정하는 단계를 포함한다. 블록(2307)에서, 방법(2300)은 이 결정에 따라 제1 히트 또는 미스 결과를 제1 논리 유닛에 의해 출력하는 단계로 계속된다. 또한, 블록(2308)에서, 방법(2300)은, 제2 캐시 세트에 대한 제2 논리 유닛(예를 들어, 논리 유닛(2104b))에 의해, 제2 복수의 블록 중의 블록이 히트했는지 또는 미스했는지 여부를 결정하는 단계를 포함한다. 블록(2309)에서, 방법(2300)은 이 결정에 따라 제2 히트 또는 미스 결과를 제2 논리 유닛에 의해 출력하는 단계로 계속된다.
블록(2310)에서, 방법(2300)은 제1 PLSM 레지스터에 의해 수신된 제1 유효 비트에 따라 제1 다중화기(예를 들어, 도 21에 도시된 다중화기(2110a))에 의해 제1 히트 또는 미스 결과 또는 제2 히트 또는 미스 결과를 프로세서에 출력하는 단계로 계속된다. 일부 실시형태에서, 제1 PLSM 레지스터에 의해 수신된 제1 유효 비트가 유효를 나타낼 때, 제1 다중화기는 제1 히트 또는 미스 결과를 출력하고, 제1 PLSM 레지스터에 의해 수신된 제1 유효 비트가 무효를 나타낼 때, 제1 다중화기는 제2 히트 또는 미스 결과를 출력한다.
그리고, 블록(2312)에서, 제2 다중화기(예를 들어, 다중화기(2110b))에 의해 제2 PLSM 레지스터에 의해 수신된 제2 유효 비트에 따라 제2 히트 또는 미스 결과 또는 제1 히트 또는 미스 결과를 프로세서에 출력한다. 일부 실시형태에서, 제2 PLSM 레지스터에 의해 수신된 제2 유효 비트가 유효를 나타낼 때, 제2 다중화기는 제2 히트 또는 미스 결과를 출력한다. 그리고, 제2 PLSM 레지스터에 의해 수신된 제2 유효 비트가 무효를 나타낼 때, 제2 다중화기는 제1 히트 또는 미스 결과를 출력한다.
일부 실시형태는 주 스레드와 추측 스레드를 실행하도록 구성된 처리 회로부를 갖는 중앙 처리 유닛을 포함할 수 있다. 중앙 처리 유닛은 또한 주 스레드를 위한 제1 복수의 블록을 갖는, 주 메모리와 처리 회로부 사이에 결합되도록 구성된 캐시 시스템의 제1 캐시 세트를 포함하거나 제1 캐시 세트에 연결될 수 있다. 제1 복수의 블록 중의 각각의 블록은 캐싱된 데이터, 제1 유효 비트, 및 인덱스와 태그를 포함하는 블록 어드레스를 포함할 수 있다. 처리 회로부는, 단독으로 또는 캐시 제어기와 함께, 제1 복수의 블록이 추측 스레드에 대해서는 액세스 가능하고 주 스레드에 대해서는 차단되도록 추측 스레드의 추측이 성공적일 때 각각의 제1 유효 비트를 유효를 나타내는 것에서부터 무효를 나타내는 것으로 변경하도록 구성될 수 있다. 중앙 처리 유닛은 또한 추측 스레드를 위한 제2 복수의 블록을 포함하는, 주 메모리와 처리 회로부 사이에 결합된 캐시 시스템의 제2 캐시 세트를 포함하거나 제2 캐시 세트에 연결될 수 있다. 제2 복수의 블록 중의 각각의 블록은 캐싱된 데이터, 제2 유효 비트, 및 인덱스와 태그를 갖는 블록 어드레스를 포함할 수 있다. 처리 회로부는, 단독으로 또는 캐시 제어기와 함께, 제2 복수의 블록이 주 스레드에 대해서는 액세스 가능하고 추측 스레드에 대해서는 차단되도록 추측 스레드의 추측이 성공적일 때 각각의 제2 유효 비트를 무효를 나타내는 것에서부터 유효를 나타내는 것으로 변경하도록 구성될 수 있다. 그리고, 제1 복수의 블록 중의 블록은 제2 복수의 블록 중 각 블록과 동일한 블록 어드레스를 가지므로 제2 복수의 블록 중 각각의 블록에 대응한다.
본 명세서에 개시된 기술은, 프로세서가 메모리로부터 분리되고 프로세서가 통신 버스 및/또는 컴퓨터 네트워크를 통해 메모리 및 저장 디바이스와 통신하는, 컴퓨터 시스템에 적어도 적용될 수 있다. 또한, 본 명세서에 개시된 기술은 처리 능력이 메모리/저장 매체 내에 통합되는 컴퓨터 시스템에 적용될 수 있다. 예를 들어, 일반적인 프로세서의 실행 유닛 및/또는 레지스터를 포함하는 처리 회로는 메모리 디바이스 내에서 처리를 수행하기 위해 메모리 매체의 집적 회로 및/또는 집적 회로 패키지 내에서 구현될 수 있다. 따라서, 위에서 논의되고 도면에 도시된 프로세서(예를 들어, 프로세서(201, 401, 601, 및 1001) 참조)는 폰 노이만 아키텍처의 중앙 처리 유닛일 필요는 없다. 프로세서는 폰 노이만 아키텍처에 따라 별도로 구성된 중앙 처리 유닛과 메모리 간의 데이터 이동 지연으로 인한 처리량 제한의 결과 컴퓨팅 성능을 제한하는 폰 노이만 병목 현상을 극복하기 위해 메모리 내에 통합된 유닛일 수 있다.
본 발명의 설명 및 도면은 본 발명을 예시하는 것일 뿐 본 발명을 제한하는 것으로 해석되어서는 안 된다. 철저한 이해를 제공하기 위해 많은 특정 세부 사항이 설명되었다. 그러나 일부 경우에 설명을 모호하게 하는 것을 방지하기 위해 잘 알려져 있거나 통상적인 세부 사항을 설명하지 않는다. 본 발명에서 하나의 또는 일 실시형태라는 언급은 반드시 동일한 실시형태를 언급하는 것은 아니고 이러한 언급은 적어도 하나를 의미한다.
전술한 명세서에서, 그 특정 예시적인 실시형태를 참조하여 본 발명을 설명하였다. 하기 청구범위에 제시된 넓은 정신 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음이 명백하다. 따라서, 본 명세서 및 도면은 본 발명을 제한하는 의미가 아니라 본 발명을 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 캐시 시스템으로서,
    제1 캐시;
    제2 캐시;
    상기 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부;
    상기 캐시 시스템과 상기 프로세서 사이에 결합된 어드레스 버스에 대한 연결부;
    상기 캐시 시스템과 상기 프로세서 사이에 결합된 데이터 버스에 대한 연결부;
    실행 유형을 식별하는 상기 프로세서로부터의 실행 유형 신호 라인에 대한 연결부; 및
    상기 실행 유형에 따라 상기 제1 캐시와 상기 제2 캐시를 제어하도록 결합된 논리 회로를 포함하고;
    상기 캐시 시스템은 상기 프로세서와 메모리 시스템 사이에 결합되도록 구성되고;
    상기 실행 유형이 상기 프로세서에 의한 명령어의 비-추측 실행(non-speculative execution)을 나타내는 제1 유형이고, 상기 제1 캐시가 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 상기 논리 회로는 상기 제1 캐시에 캐싱된 내용의 일부를 상기 제2 캐시에 복사하도록 구성된, 캐시 시스템.
  2. 제1항에 있어서, 상기 논리 회로는 상기 커맨드 버스에서 수신된 현재 커맨드와 독립적으로 상기 제1 캐시에 캐싱된 내용의 일부를 상기 제2 캐시에 복사하도록 구성된, 캐시 시스템.
  3. 제1항에 있어서, 상기 실행 유형이 상기 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 상기 제1 캐시가 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 상기 논리 회로는 상기 실행 유형이 상기 제1 유형으로부터 상기 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경된 것에 응답하여 상기 제2 캐시를 사용하여 상기 커맨드 버스로부터 후속 커맨드를 서비스하도록 구성된, 캐시 시스템.
  4. 제3항에 있어서, 상기 논리 회로는 상기 실행 유형이 상기 제1 유형으로부터 상기 제2 유형으로 변경된 후에 상기 후속 커맨드를 서비스하기 전에 상기 제1 캐시로부터 상기 제2 캐시로 상기 내용의 일부의 동기화를 완료하도록 구성된, 캐시 시스템.
  5. 제3항에 있어서, 상기 논리 회로는 상기 후속 커맨드를 서비스하는 동안 상기 제1 캐시로부터 상기 제2 캐시로 상기 내용의 일부의 동기화를 계속하도록 구성된, 캐시 시스템.
  6. 제3항에 있어서, 구성 가능한 데이터 비트(configurable data bit)를 더 포함하고, 상기 논리 회로는 상기 구성 가능한 데이터 비트에 따라 상기 제1 캐시와 상기 제2 캐시를 제어하도록 더 결합된, 캐시 시스템.
  7. 제6항에 있어서,
    상기 구성 가능한 데이터 비트가 제1 상태에 있을 때, 상기 논리 회로는,
    상기 실행 유형이 상기 제1 유형인 경우 상기 제1 캐시를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하고;
    상기 실행 유형이 제2 유형인 경우 상기 제2 캐시를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성되고;
    상기 구성 가능한 데이터 비트가 제2 상태에 있을 때, 상기 논리 회로는,
    상기 실행 유형이 상기 제1 유형인 경우 상기 제2 캐시를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하고;
    상기 실행 유형이 상기 제2 유형인 경우 상기 제1 캐시를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성된, 캐시 시스템.
  8. 제7항에 있어서,
    상기 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 상기 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함하고;
    상기 추측 상태 신호 라인에 대한 연결부는 상기 추측 실행의 상태를 수신하도록 구성되고,
    상기 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타내고,
    상기 실행 유형이 상기 제2 유형으로부터 상기 제1 유형으로 변경될 때, 상기 논리 회로는,
    상기 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 상기 구성 가능한 데이터 비트를 토글(toggle)하고;
    상기 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 상기 구성 가능한 데이터 비트를 변경 없이 유지하도록 구성된, 캐시 시스템.
  9. 제1항에 있어서, 상기 제1 캐시와 상기 제2 캐시는 함께,
    제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트; 및
    상기 제1 캐시 세트와 연관된 제1 레지스터 및 상기 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 상기 복수의 캐시 세트와 각각 연관된 복수의 레지스터를 포함하고;
    상기 논리 회로는 상기 복수의 레지스터에 따라 상기 복수의 캐시 세트를 제어하도록 더 결합된, 캐시 시스템.
  10. 캐시 시스템으로서,
    제1 캐시 세트와 제2 캐시 세트를 포함하는 복수의 캐시 세트;
    상기 제1 캐시 세트와 연관된 제1 레지스터 및 상기 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 상기 복수의 캐시 세트와 각각 연관된 복수의 레지스터;
    상기 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부;
    상기 캐시 시스템과 상기 프로세서 사이에 결합된 어드레스 버스에 대한 연결부;
    상기 캐시 시스템과 상기 프로세서 사이에 결합된 데이터 버스에 대한 연결부;
    실행 유형을 식별하는 상기 프로세서로부터의 실행 유형 신호 라인에 대한 연결부; 및
    상기 실행 유형에 따라 상기 복수의 캐시 세트를 제어하도록 결합된 논리 회로를 포함하고;
    상기 캐시 시스템은 상기 프로세서와 메모리 시스템 사이에 결합되도록 구성되고;
    상기 실행 유형이 상기 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 상기 제1 캐시 세트가 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 상기 논리 회로는 상기 제1 캐시 세트에 캐싱된 내용의 일부를 상기 제2 캐시 세트로 복사하도록 구성된, 캐시 시스템.
  11. 제10항에 있어서, 상기 논리 회로는 상기 커맨드 버스에서 수신된 현재 커맨드와 독립적으로 상기 제1 캐시 세트에 캐싱된 내용의 일부를 상기 제2 캐시 세트로 복사하도록 구성된, 캐시 시스템.
  12. 제10항에 있어서, 상기 실행 유형이 상기 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 상기 제1 캐시 세트가 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 상기 논리 회로는 상기 실행 유형이 상기 제1 유형으로부터 상기 프로세서에 의한 명령어의 추측 실행을 나타내는 제2 유형으로 변경된 것에 응답하여 상기 제2 캐시 세트를 사용하여 상기 커맨드 버스로부터의 후속 커맨드를 서비스하도록 구성된, 캐시 시스템.
  13. 제12항에 있어서, 상기 논리 회로는 상기 실행 유형이 상기 제1 유형으로부터 상기 제2 유형으로 변경된 후 상기 후속 커맨드를 서비스하기 전에 상기 제1 캐시 세트로부터 상기 제2 캐시 세트로 상기 내용의 일부의 동기화를 완료하도록 구성된, 캐시 시스템.
  14. 제12항에 있어서, 상기 논리 회로는 상기 후속 커맨드를 서비스하는 동안 상기 제1 캐시 세트로부터 상기 제2 캐시 세트로 상기 내용의 일부의 동기화를 계속하도록 구성된, 캐시 시스템.
  15. 제10항에 있어서,
    상기 논리 회로는 상기 복수의 레지스터에 따라 상기 복수의 캐시 세트를 제어하도록 더 결합되고;
    상기 어드레스 버스에 대한 연결부가 상기 프로세서로부터 메모리 어드레스를 수신할 때, 상기 논리 회로는,
    적어도 상기 메모리 어드레스로부터 세트 인덱스(set index)를 생성하고;
    생성된 세트 인덱스가 상기 제1 레지스터에 저장된 내용과 일치하는지 또는 상기 제2 레지스터에 저장된 내용과 일치하는지 여부를 결정하도록 구성되고;
    상기 논리 회로는 상기 생성된 세트 인덱스가 상기 제1 레지스터에 저장된 내용과 일치하는 것에 응답하여 상기 제1 캐시 세트를 통해 그리고 상기 생성된 세트 인덱스가 상기 제2 레지스터에 저장된 내용과 일치하는 것에 응답하여 상기 제2 캐시 세트를 통해 상기 커맨드 버스에 대한 연결부에서 수신된 커맨드를 구현하도록 구성된, 캐시 시스템.
  16. 제15항에 있어서, 상기 메모리 어드레스와 연관된 상기 메모리 시스템의 데이터 세트가 상기 캐시 시스템에 현재 캐싱되어 있지 않다는 결정에 응답하여, 상기 논리 회로는 상기 데이터 세트를 캐싱하기 위해 상기 제1 캐시 세트를 할당하고, 상기 생성된 세트 인덱스를 상기 제1 레지스터에 저장하도록 구성된, 캐시 시스템.
  17. 제16항에 있어서,
    실행 유형을 식별하는 상기 프로세서로부터의 실행 유형 신호 라인에 대한 연결부를 더 포함하고;
    상기 제1 및 제2 레지스터가 제1 상태에 있을 때, 상기 논리 회로는,
    상기 실행 유형이 제1 유형인 경우 상기 제1 캐시 세트를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하고;
    상기 실행 유형이 제2 유형인 경우 상기 제2 캐시 세트를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성되고;
    상기 제1 및 제2 레지스터가 제2 상태에 있을 때, 상기 논리 회로는,
    상기 실행 유형이 상기 제1 유형인 경우 상기 제1 캐시 세트 이외의 상기 복수의 캐시 세트 중 다른 캐시 세트를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하고;
    상기 실행 유형이 상기 제2 유형인 경우 상기 제2 캐시 세트 이외의 상기 복수의 캐시 세트 중 또 다른 캐시 세트를 통해 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 수신된 커맨드를 구현하도록 구성된, 캐시 시스템.
  18. 제17항에 있어서, 상기 생성된 세트 인덱스는 상기 실행 유형 신호 라인에 의해 식별된 유형에 더 기초하여 생성된, 캐시 시스템.
  19. 제18항에 있어서,
    상기 프로세서에 의한 명령어의 추측 실행의 상태를 식별하는 상기 프로세서로부터의 추측 상태 신호 라인에 대한 연결부를 더 포함하고;
    상기 추측 상태 신호 라인에 대한 연결부는 상기 추측 실행의 상태를 수신하도록 구성되고;
    상기 추측 실행의 상태는 추측 실행의 결과가 수락되거나 거부되어야 함을 나타내고;
    상기 실행 유형이 상기 제2 유형으로부터 상기 제1 유형으로 변경될 때, 상기 논리 회로는,
    상기 추측 실행의 상태가 추측 실행의 결과가 수락되어야 함을 나타내는 경우 상기 제1 레지스터에 저장된 내용과 상기 제2 레지스터에 저장된 내용을 변경하고;
    상기 추측 실행의 상태가 추측 실행의 결과가 거부되어야 함을 나타내는 경우 상기 제1 레지스터에 저장된 내용과 상기 제2 레지스터에 저장된 내용을 변경 없이 유지하도록 구성된, 캐시 시스템.
  20. 캐시 시스템으로서,
    복수의 캐시;
    제1 캐시 세트와 제2 캐시 세트를 포함하는, 상기 복수의 캐시 중에 분할된 복수의 캐시 세트;
    상기 제1 캐시 세트와 연관된 제1 레지스터 및 상기 제2 캐시 세트와 연관된 제2 레지스터를 포함하는, 상기 복수의 캐시 세트와 각각 연관된 복수의 레지스터;
    상기 캐시 시스템과 프로세서 사이에 결합된 커맨드 버스에 대한 연결부;
    상기 캐시 시스템과 상기 프로세서 사이에 결합된 어드레스 버스에 대한 연결부;
    상기 캐시 시스템과 상기 프로세서 사이에 결합된 데이터 버스에 대한 연결부;
    실행 유형을 식별하는 상기 프로세서로부터의 실행 유형 신호 라인에 대한 연결부; 및
    상기 실행 유형에 따라 상기 복수의 캐시 세트를 제어하도록 결합된 논리 회로를 포함하고;
    상기 캐시 시스템은 상기 프로세서와 메모리 시스템 사이에 결합되도록 구성되고;
    상기 실행 유형이 상기 프로세서에 의한 명령어의 비-추측 실행을 나타내는 제1 유형이고, 상기 제1 캐시 세트가 상기 메모리 시스템에 액세스하기 위해 상기 커맨드 버스로부터 커맨드를 서비스하도록 구성된 경우, 상기 논리 회로는 상기 제1 캐시 세트에 캐싱된 내용의 일부를 상기 제2 캐시 세트로 복사하도록 구성된, 캐시 시스템.
KR1020227003046A 2019-07-31 2020-07-21 캐시 시스템 및 캐시 또는 캐시 세트 동기화 회로 KR20220025040A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/528,479 US10915326B1 (en) 2019-07-31 2019-07-31 Cache systems and circuits for syncing caches or cache sets
US16/528,479 2019-07-31
PCT/US2020/042852 WO2021021489A1 (en) 2019-07-31 2020-07-21 Cache systems and circuits for syncing caches or cache sets

Publications (1)

Publication Number Publication Date
KR20220025040A true KR20220025040A (ko) 2022-03-03

Family

ID=74230769

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227003046A KR20220025040A (ko) 2019-07-31 2020-07-21 캐시 시스템 및 캐시 또는 캐시 세트 동기화 회로

Country Status (5)

Country Link
US (3) US10915326B1 (ko)
EP (1) EP4004747A4 (ko)
KR (1) KR20220025040A (ko)
CN (1) CN114026546A (ko)
WO (1) WO2021021489A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11048636B2 (en) 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets
US10915326B1 (en) 2019-07-31 2021-02-09 Micron Technology, Inc. Cache systems and circuits for syncing caches or cache sets
US11194582B2 (en) 2019-07-31 2021-12-07 Micron Technology, Inc. Cache systems for main and speculative threads of processors
US11010288B2 (en) 2019-07-31 2021-05-18 Micron Technology, Inc. Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution
US11200166B2 (en) 2019-07-31 2021-12-14 Micron Technology, Inc. Data defined caches for speculative and normal executions
US11372758B2 (en) * 2020-05-12 2022-06-28 Jackson State University Dynamic reconfigurable multi-level cache for multi-purpose and heterogeneous computing architectures

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646233A (en) 1984-06-20 1987-02-24 Weatherford James R Physical cache unit for computer
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US5490658A (en) 1995-03-02 1996-02-13 Avery Dennison Corporation Label hangers for intravenous bottles
US5822755A (en) 1996-01-25 1998-10-13 International Business Machines Corporation Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache
US6490658B1 (en) 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6604171B1 (en) 2000-09-29 2003-08-05 Emc Corporation Managing a cache memory
US6665776B2 (en) 2001-01-04 2003-12-16 Hewlett-Packard Development Company L.P. Apparatus and method for speculative prefetching after data cache misses
US6754776B2 (en) 2001-05-17 2004-06-22 Fujitsu Limited Method and system for logical partitioning of cache memory structures in a partitoned computer system
US7315921B2 (en) 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US7216202B1 (en) 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7139909B2 (en) 2003-10-16 2006-11-21 International Business Machines Corporation Technique for system initial program load or boot-up of electronic devices and systems
US7124254B2 (en) 2004-05-05 2006-10-17 Sun Microsystems, Inc. Method and structure for monitoring pollution and prefetches due to speculative accesses
US7277989B2 (en) 2004-06-22 2007-10-02 Sun Microsystems, Inc. Selectively performing fetches for store operations during speculative execution
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US20070094664A1 (en) 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US7350027B2 (en) 2006-02-10 2008-03-25 International Business Machines Corporation Architectural support for thread level speculative execution
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US7676636B2 (en) * 2007-07-10 2010-03-09 Sun Microsystems, Inc. Method and apparatus for implementing virtual transactional memory using cache line marking
US7925867B2 (en) 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US8521961B2 (en) 2009-08-20 2013-08-27 International Business Machines Corporation Checkpointing in speculative versioning caches
US9507647B2 (en) 2010-01-08 2016-11-29 Globalfoundries Inc. Cache as point of coherence in multiprocessor system
CN102662868B (zh) 2012-05-02 2015-08-19 中国科学院计算技术研究所 用于处理器的动态组相联高速缓存装置及其访问方法
KR101983833B1 (ko) 2012-06-26 2019-09-04 삼성전자주식회사 공유된 캐쉬들을 제공하는 방법 및 장치
US9424046B2 (en) 2012-10-11 2016-08-23 Soft Machines Inc. Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US20160055004A1 (en) * 2014-08-21 2016-02-25 Edward T. Grochowski Method and apparatus for non-speculative fetch and execution of control-dependent blocks
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10002076B2 (en) 2015-09-29 2018-06-19 Nxp Usa, Inc. Shared cache protocol for parallel search and replacement
US20170091111A1 (en) 2015-09-30 2017-03-30 International Business Machines Corporation Configurable cache architecture
US10067713B2 (en) * 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10140052B2 (en) * 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US10152322B2 (en) * 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
US10042580B2 (en) * 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
GB2546731B (en) 2016-01-20 2019-02-20 Advanced Risc Mach Ltd Recording set indicator
US10324726B1 (en) 2017-02-10 2019-06-18 Apple Inc. Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions
US10642744B2 (en) * 2017-06-28 2020-05-05 Nvidia Corporation Memory type which is cacheable yet inaccessible by speculative instructions
US10229061B2 (en) 2017-07-14 2019-03-12 International Business Machines Corporation Method and arrangement for saving cache power
US10394716B1 (en) 2018-04-06 2019-08-27 Arm Limited Apparatus and method for controlling allocation of data into a cache storage
US10949210B2 (en) 2018-05-02 2021-03-16 Micron Technology, Inc. Shadow cache for securing conditional speculative instruction execution
US11481221B2 (en) 2018-05-02 2022-10-25 Micron Technology, Inc. Separate branch target buffers for different levels of calls
US11216556B2 (en) 2018-12-17 2022-01-04 Intel Corporation Side channel attack prevention by maintaining architectural state consistency
US10915326B1 (en) * 2019-07-31 2021-02-09 Micron Technology, Inc. Cache systems and circuits for syncing caches or cache sets
US11200166B2 (en) * 2019-07-31 2021-12-14 Micron Technology, Inc. Data defined caches for speculative and normal executions
US11010288B2 (en) * 2019-07-31 2021-05-18 Micron Technology, Inc. Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution

Also Published As

Publication number Publication date
US20220308886A1 (en) 2022-09-29
US10915326B1 (en) 2021-02-09
WO2021021489A1 (en) 2021-02-04
EP4004747A1 (en) 2022-06-01
US20210157599A1 (en) 2021-05-27
US20210034366A1 (en) 2021-02-04
US11734015B2 (en) 2023-08-22
EP4004747A4 (en) 2023-08-30
CN114026546A (zh) 2022-02-08
US11360777B2 (en) 2022-06-14

Similar Documents

Publication Publication Date Title
KR20220025040A (ko) 캐시 시스템 및 캐시 또는 캐시 세트 동기화 회로
KR20220037488A (ko) 데이터 정의 캐시 세트를 갖는 세트 연관성 캐시
KR20220024893A (ko) 추측 실행과 일반 실행을 위한 확장 태그
KR20220018600A (ko) 추측 실행 및 일반 실행을 위한 데이터 정의 캐시
KR20220024955A (ko) 추측 실행을 가속화하기 위한 예비 캐시 세트
KR20220024882A (ko) 프로세서의 주 스레드와 추측 스레드를 위한 캐시 시스템