KR20240067941A - 예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장 - Google Patents

예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장 Download PDF

Info

Publication number
KR20240067941A
KR20240067941A KR1020247013114A KR20247013114A KR20240067941A KR 20240067941 A KR20240067941 A KR 20240067941A KR 1020247013114 A KR1020247013114 A KR 1020247013114A KR 20247013114 A KR20247013114 A KR 20247013114A KR 20240067941 A KR20240067941 A KR 20240067941A
Authority
KR
South Korea
Prior art keywords
cache
directory
data
consistency
cache line
Prior art date
Application number
KR1020247013114A
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 KR20240067941A publication Critical patent/KR20240067941A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

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

Abstract

메모리에 저장된 데이터를 요청할 때 프로브를 생략하는 시스템 및 방법이 개시된다. 프로브의 생략은 캐시 라인과 연관된 정보를 추적하기 위해 일관성 디렉터리 항목을 생성하는 것, 일관성 디렉토리 항목에 대한 캐시 라인 데이터가 추적 가능한 패턴인지 여부를 결정하는 것 및 캐시 라인 데이터에 대한 하나 이상의 판독이 프로브를 발송하지 않고도 서비스될 수 있음을 나타내는 표시를 설정하는 것을 포함한다. 또한 캐시와 연관된 일관성 디렉토리에 추가 데이터 저장 용량을 제공하기 위한 시스템 및 방법이 개시된다. 추가 데이터 저장 용량은 캐시 라인을 적극적으로 추적하는 것, 캐시 라인을 무효화하고 일관성 디렉터리에 알리는 것, 데이터가 추적 가능한 패턴인지 여부를 결정하는 것, 캐시 라인이 더 이상 캐시에 없다고 일관성 디렉터리를 업데이트하는 것, 캐시 라인 데이터가 0임을 나타내기 위해 일관성 디렉터리를 업데이트하는 것, 및 일관성 디렉터리로부터 캐시 라인에 대한 판독을 서비스하고 지정된 데이터를 제공하는 것을 포함한다.

Description

예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장
관련 출원에 대한 상호 참조
본 출원은 2021년 9월 29일에 출원된 미국 가출원 번호 제17/489,712호의 우선권을 주장하며, 이는 본 명세서에 완전히 기술된 것과 같이 참조로 포함된다.
현대의 마이크로프로세서는 높은 처리량(throughput)을 위해 다양한 피쳐를 구현한다. 이러한 피쳐 중 일부는 고도로 병렬화된 아키텍처(highly parallel architecture)를 갖고 예비 디렉토리 항목(spare directory entry)에 특정 데이터 패턴의 표시를 저장하는 것을 포함한다. 이러한 피쳐는 지속적으로 개선되고 있다.
첨부 도면과 함께 예로서 주어진 다음의 설명으로부터 보다 상세한 이해가 이루어질 수 있으며, 여기서:
도 1은 하나 이상의 개시된 구현예가 구현될 수 있는 예시적인 디바이스의 블록도이다;
도 2는 도 1의 프로세서 내에 위치된 명령어 실행 파이프라인(instruction execution pipeline)의 블록도이다;
도 3은 예에 따른 컴퓨터 시스템의 블록도이다;
도 4는 또 다른 예에 따른 특정 데이터 패턴의 표시를 사용하여 저장 및 판독을 실행할 수 있는 컴퓨터 시스템의 블록도이다;
도 5는 예에 따른 예비 디렉토리에 특정 데이터의 패턴의 표시를 저장하기 위한 방법(500)의 흐름도이다;
도 6은 예에 따른 예비 디렉토리에 특정 데이터 패턴의 표시를 저장하기 위한 방법(600)의 흐름도이다;
도 7은 예에 따른 프로브(probe)를 생략하는 방법을 예시한다; 및
도 8은 예에 따른 추가 데이터 저장 용량을 위한 방법을 예시한다.
컴퓨팅에서, 캐시(cache)는 프로세서로부터 통신적으로 더 멀리 위치된 다른 메모리 위치에 비해 그 데이터에 대한 향후 요청이 더 빠르게 제공될 수 있도록 데이터를 저장하는 하드웨어 또는 소프트웨어 컴포넌트이다. 예를 들어, 캐시에 저장된 데이터는 이전 계산의 결과일 수도 있고 다른 곳에 저장된 데이터 복사본(copy)일 수도 있다. 요청된 데이터가 캐시에서 찾아질 수 있으면 프로브 또는 요청에 응답하여 캐시 히트(cache hit)가 발생하고, 요청된 데이터가 캐시에서 찾아질 수 없으면 캐시 미스(cache miss)가 발생한다. 캐시 히트는 캐시에서 데이터를 판독하여 제공되며, 이는 결과를 다시 계산하거나 더 느린 데이터 저장소로부터 판독하는 것보다 더 빠르다. 이해되다시피, 캐시에서 제공될 수 있는 요청이 더 많을수록 시스템 성능이 더 빨라진다.
캐시와 그에 저장된 데이터의 사용의 이점을 얻으려면, 캐시에 있는 데이터의 정확성의 이해를 유지하는 것이 중요하다. 캐시의 데이터를 유지하기 위해 활용되는 프로토콜은 다양하지만 이러한 프로토콜 중 하나는 일반적인 무효화 기반 캐시 일관성 프로토콜(invalidate-based cache coherence protocol)인 MESI 프로토콜이다. MESI 프로토콜은 캐시에 있는 데이터의 가능한 상태에 따라 이름이 지정된다. MESI 프로토콜에는 수정됨(M), 배타적(E), 공유됨(S) 및 유효하지 않음(I)의 네 가지 상태(일관성 추적 상태)가 있다.
수정됨(M)은 캐시 라인이 현재 캐시에만 존재하고, 메인 메모리의 값으로부터 수정됨(M 상태)을 나타낸다. 캐시는 (더 이상 유효하지 않음) 메인 메모리 상태에 대한 임의의 다른 판독을 허용하기 전에 데이터를 메인 메모리에 다시 기록하는 데 필요하다. 다시 기록(write-back)은 라인을 공유됨 상태(S)로 변경한다.
배타적(E)은 캐시 라인이 현재 캐시에만 존재하고 메인 메모리 버전과 매칭함을 나타낸다. 캐시 라인은 판독 요청에 대한 응답으로 언제든지 공유됨 상태로 변경될 수 있다. 대안적으로 캐시 라인에 기록할 때 캐시 라인이 수정됨 상태로 변경될 수 있다.
공유됨(S)은 캐시 라인이 머신의 다른 캐시에 저장될 수 있고 메인 메모리 버전과 매칭한다는 것을 나타낸다. 라인은 언제든지 삭제(유효하지 않음 상태로 변경)될 수 있다.
유효하지 않음(I)은 캐시 라인이 유효하지 않음(사용되지 않음)을 나타낸다.
이해되는 바와 같이, 캐시 상태를 추적하려면 메모리 및 클록 사이클(clock cycle)이 필요하다. 컴퓨터 리소스는 상태를 변경하고 캐시 라인에서 다른 메모리 위치로 데이터를 기록할 때 사용된다. 캐시와 캐시 상태를 사용하면 컴퓨터 시간과 프로세싱 시간이 절약되지만, 불필요할 때 캐시 라인의 상태 변경과 캐시에서 메모리로 또는 메모리에서 기록하는 작업을 더욱 최소화하는 것이 도움이 될 수 있다. 따라서, 캐시의 프로빙(probing)을 최소화하고 상태의 변경을 최소화하면 특정 조건이 존재할 때 이점을 제공할 수 있다.
저장 구조에 '일관성' 추적 정보와 함께 실제로 임의의 데이터를 저장하지 않고도 데이터가 무엇인지에 대한 정보를 저장하는 기술이 제공된다. 이 기술은 다른 일관성 조건이 충족되는 경우 프로브 생략을 포함한다. 비제한적인 예로서 일관성 추적 정보의 일례는 캐시 라인이 기록 가능한 상태(예를 들어, 레벨 2 캐시 라인)에 있지 않은지에 관한 정보를 포함한다.
이 개시에서는 메모리에 저장된 데이터를 요청할 때 프로브를 생략하는 방법이 제공된다. 프로브의 생략 방법은 캐시 라인 중 적어도 하나와 연관된 정보를 추적하기 위해 캐시와 연관된 일관성 디렉토리에 일관성 디렉토리 항목을 생성하는 단계, 일관성 디렉토리 항목에 대한 캐시 라인 데이터가 추적 가능한 패턴인지 여부를 결정하는 단계 및 캐시 라인 데이터에 대한 하나 이상의 판독이 프로브를 전송하지 않고 서비스될 수 있음을 나타내는 표시를 캐시 라인 데이터와 연관된 일관성 디렉토리 항목에 설정하는 단계를 포함한다. 방법은 추적 가능한 패턴이 0을 포함하고 캐시 라인이 MESI 상태에 있는 구성을 포함할 수 있다. 일관성 디렉토리의 일관성 디렉토리 항목은 캐시 계층 구조(hierarchy)의 다른 캐시에 캐시 라인이 존재하는지 여부를 나타내는 정보를 포함할 수 있다.
이 개시에서는 메모리에 저장된 데이터를 요청할 때 프로브를 생략하는 시스템도 제공된다. 시스템은 프로세서와 메모리를 포함한다. 메모리는 캐시 계층 구조; 및 캐시 계층 구조와 연관된 일관성 디렉토리를 포함하고, 일관성 디렉토리는 캐시 라인과 연관된 정보를 추적하기 위한 복수의 일관성 디렉토리 엔트리를 포함하고, 각각의 항목이 캐시 라인과 연관되어 있으며, 여기서 각각의 항목은 복수의 일관성 디렉토리 항목 중 하나와 연관된 캐시 라인 데이터에 대한 하나 이상의 판독이 추적 가능한 패턴인 항목에 대한 캐시 라인 데이터에 응답하여 프로브를 발송하지 않고 서비스될 수 있음을 나타내는 표시를 포함한다. 시스템은 추적 가능한 패턴이 0을 포함하고 캐시 라인이 MESI 상태에 있는 구성을 포함할 수 있다. 일관성 디렉토리 항목은 또 다른 캐시에 라인이 있음을 나타낼 수 있다.
이 개시에서는 메모리에 추가 데이터 저장 용량을 제공하는 방법이 제공된다. 추가 데이터 저장 용량을 제공하는 방법은 캐시의 일관성 디렉터리에서 캐시 라인을 적극적으로 추적하는 단계, 캐시 라인을 무효화하고 일관성 디렉터리에 알리는 단계, 데이터가 추적 가능한 패턴인지 여부를 결정하는 단계, 및 일관성 디렉토리가 활용되고 결정이 데이터가 추적 가능한 패턴임을 나타내는 경우: 캐시 라인이 더 이상 캐시에 없는 일관성 디렉터리를 업데이트하는 단계, 캐시 라인 데이터가 0임을 나타내기 위해 일관성 디렉터리를 업데이트하는 단계, 및 일관성 디렉터리로부터 캐시 라인에 대한 판독을 서비스하고 지정된 데이터를 제공하는 단계를 포함한다. 방법은 0을 포함하는 추적 가능한 패턴을 포함할 수 있다.
이 개시에서는 메모리에 추가 데이터 저장 용량을 제공하는 시스템도 제공된다. 시스템은 프로세서와 메모리를 포함한다. 메모리는 캐시 계층 구조와 관련된 일관성 디렉터리를 포함하고, 일관성 디렉토리는 캐시 라인과 관련된 정보를 추적하기 위해 복수의 일관성 디렉토리 항목을 포함하고, 각 항목은 캐시 라인과 연관되고 프로세서는 캐시 라인을 무효화하고 일관성 디렉토리에 무효화를 알리고 캐시 라인의 데이터가 추적 가능한 패턴인지 결정하고, 결정에서 데이터가 추적 가능한 패턴임을 나타낼 때, 프로세서는 캐시 라인이 더 이상 캐시 계층 구조에 없다는 일관성 디렉터리를 업데이트하고 캐시 라인 데이터가 0임을 나타내기 위해 일관성 디렉터리를 업데이트하고 일관성 디렉터리로부터 캐시 라인에 대한 판독을 서비스하고 지정된 데이터를 제공한다. 일관성 디렉토리 항목은 또 다른 캐시에 라인이 있음을 나타낼 수 있다.
도 1은 본 개시의 양태가 구현되는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어 컴퓨터, 게임 디바이스, 휴대용 디바이스, 셋톱 박스, 텔레비전, 휴대폰 또는 태블릿 컴퓨터를 포함한다. 디바이스(100)는 하나 이상의 프로세서(102), 메모리 계층 구조(104), 저장 디바이스(106), 하나 이상의 입력 디바이스(108), 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함할 수도 있다. 디바이스(100)는 도 1에 도시되지 않은 추가 컴포넌트를 포함할 수 있다는 것이 이해된다.
하나 이상의 프로세서(102)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 동일한 다이에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하며, 여기서 각각의 프로세서 코어는 CPU 아니면 GPU이다. 일부 예에서, 하나 이상의 프로세서(102)는 임의의 개수의 프로세서를 포함한다. 일부 예에서, 하나 이상의 프로세서(102)는 하나 이상의 프로세서 칩을 포함한다. 일부 예에서, 각각의 프로세서 칩은 하나 이상의 프로세서 코어를 포함한다.
메모리 계층 구조(104)의 일부 또는 전부는 하나 이상의 프로세서(102) 중 하나 이상과 동일한 다이에 위치될 수 있거나, 하나 이상의 프로세서(102)와 부분적으로 또는 완전히 별도로 위치될 수 있다. 메모리 계층 구조(104)는 예를 들어 하나 이상의 캐시, 하나 이상의 휘발성 메모리, 하나 이상의 비휘발성 메모리 및/또는 다른 메모리를 포함하고, 하나 또는 다양한 유형의 랜덤 액세스 메모리("RAM")를 포함할 수 있다.
일부 예에서, 메모리 계층 구조(104)의 요소들은 하나 이상의 프로세서(102)의 요소들을 포함하는 계층 구조로 배열된다. 이러한 배열의 예가 도 3과 4에 제공된다.
저장 디바이스(106)는 고정형 또는 착탈형 저장소, 예를 들어 하드 디스크 드라이브, 솔리드-스테이트 드라이브, 광학 디스크 또는 플래시 드라이브 등을 포함한다. 입력 디바이스(108)는 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크, 가속도계, 자이로스코프(gyroscope), 생체인식(biometric) 스캐너 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 전송 및/또는 수신을 위한 무선 LAN 카드)을 포함한다. 출력 디바이스(110)는 디스플레이, 스피커, 프린터, 햅틱(haptic) 피드백 디바이스, 하나 이상의 조명, 안테나 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 전송 및/또는 수신을 위한 무선 LAN 카드)을 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스(108)와 통신하고, 프로세서(102)가 입력 디바이스(108)로부터 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스(110)와 통신하고, 프로세서(102)가 출력 디바이스(110)에 출력을 발송하는 것을 허용한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적인 컴포넌트이고 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우에도 디바이스(100)는 동일한 방식으로 동작할 것이다.
도 2는 도 1의 하나 이상의 프로세서(102) 내에 위치한 명령어 실행 파이프라인(200)의 블록도이다. 다양한 예에서, 도 1의 하나 이상의 프로세서(102)의 프로세서 코어 중 임의의 것은 도 2에 예시된 바와 같이 구현된다.
명령어 실행 파이프라인(200)은 메모리로부터 명령어를 검색하고 명령어를 실행하여 데이터를 메모리에 출력하고 레지스터 파일(218) 내의 레지스터와 같은 명령어 실행 파이프라인(200) 내의 요소의 상태를 수정한다.
명령어 실행 파이프라인(200)은 명령어 캐시(202)를 통해 시스템 메모리(예를 들어, 메모리(104))로부터 명령어를 페치하도록 구성된 명령어 페치 유닛(204), 페치된 명령어를 디코딩하도록 구성된 디코더(208), 명령어를 프로세싱하기 위해 계산을 수행하도록 구성된 기능 유닛(216), 데이터 캐시(220)를 통해 시스템 메모리로부터 데이터를 로드하거나 시스템 메모리에 데이터를 저장하도록 구성된 로드 저장 유닛(214) 및 명령어에 대한 작업 데이터를 저장하는 레지스터를 포함하는 레지스터 파일(218)을 포함한다. 재정렬 버퍼(reorder buffer)(210)는 현재 진행 중인 명령어를 추적하고 진행 중인 동안 순서가 잘못된 실행을 허용함에도 불구하고 명령어의 순서대로 폐기(retirement)를 보장한다. "진행 중(in-flight)" 명령어는 재정렬 버퍼(210)에 의해 수신되었지만 아직 프로세서의 아키텍처 상태에 커밋된 결과(예를 들어, 레지스터 파일 등에 기록된 결과)를 갖지 않은 명령어를 의미한다. 예약 스테이션(reservation station)(212)은 진행 중 명령어와 추적 명령어 피연산자(operand)를 유지한다. 모든 피연산자가 특정 명령어를 실행할 준비가 되면, 예약 스테이션(212)은 실행을 위해 기능 유닛(216) 또는 로드/저장 유닛(214)에 명령어를 발송한다. 완료된 명령어는 재정렬 버퍼(210)에서 폐기되도록 표시되고 재정렬 버퍼 큐(210)의 헤드에 있을 때 폐기된다. 폐기는 명령어의 결과를 프로세서의 아키텍처 상태에 커밋하는 행동을 지칭한다. 예를 들어, 추가 명령어에 의해 레지스터에 추가 결과 기록, 로드 명령어에 의해 레지스터에 로드된 값 기록 또는 분기 명령어에 의해 명령어 흐름이 새로운 위치로 점프하게 하는 것은 모두 명령어의 폐기의 예이다.
명령어 실행 파이프라인(200)의 다양한 요소는 공통 데이터 버스(222)를 통해 통신한다. 예를 들어, 기능 유닛(216) 및 로드/저장 유닛(214)은 종속 명령어의 실행을 위해 예약 스테이션(212)에 의해 판독될 수 있고 실행이 완료된 진행 중 명령어의 최종 프로세싱 결과로서 재정렬 버퍼(210)에 의해 판독될 수 있는 공통 데이터 버스(222)에 결과를 기록한다. 로드/저장 유닛(214)은 또한 공통 데이터 버스(222)로부터 데이터를 판독한다. 예를 들어, 로드/저장 유닛(214)은 공통 데이터 버스(222)로부터 완료된 명령어로부터 결과를 판독하고 저장 명령어를 위해 데이터 캐시(220)를 통해 메모리에 결과를 기록한다.
명령어 실행 파이프라인(200)은 일부 명령어를 추측적으로 실행한다. 추측 실행(speculative execution)은 명령어 실행 파이프라인(200)이 명령어 실행을 위해 적어도 일부 동작을 수행하지만 명령어가 잘못 실행된 경우 이러한 실행의 효과를 되돌릴 수 있는 능력을 유지한다는 것을 의미한다.
예에서, 명령어 실행 파이프라인(200)은 분기 예측(branch prediction)을 수행할 수 있다. 분기 예측은 명령어 페치 유닛(204)이 실행이 흐를 제어 흐름 경로를 예측하고 그 경로로부터 명령어를 페치하는 동작이다. 예측을 만드는 방법에는 여러 가지가 있으며, 일부는 전역(global) 또는 어드레스별 분기 경로 이력(address-specific branch path histories)(예를 들어, 분기 사용 여부 및/또는 이러한 분기의 대상의 이력)을 유지하고 이러한 이력을 사용하여 다양한 동작을 수행하는 방법을 포함한다. 실행 파이프라인(예를 들어, 기능 유닛(216))은 실제로 분기를 실행하여 이러한 분기의 정확한 결과를 결정한다. 예측된 실행 경로로부터의 명령어가 실행하고 있지만 기능 유닛(216)이 실제로 올바른 실행 경로를 결정하기 전에는 이러한 명령어가 실제로 실행되지 않아야 하는 것이 가능하기 때문에 이러한 명령어는 추측적으로 실행되는 것으로 간주된다. 명령어가 추측적으로 실행할 수 있는 다른 많은 이유가 있다. 이 예는 추측 실행을 다루고 있지만, 예비 디렉토리 항목에 특정 데이터 패턴의 표시를 현재 저장하는 것은 임의의 실행 마이크로프로세서에서 활용될 수 있다. 즉, 추측 마이크로프로세서는 단지 예시일 뿐이다.
추측적으로 저장 명령어를 실행하는 것이 가능하다. 추측 실행은 명령어에 대해 다양한 동작을 수행하지만 명령어가 비-추측이 될 때까지 이러한 동작을 커밋하지 않음으로써 발생한다. 예에서, 저장 명령어를 실행하는 것은 추측적으로 명령어를 로드/저장 유닛(214)에 배치하는 단계, 저장할 데이터를 결정하는 단계, 데이터를 저장할 어드레스를 결정하는 단계(어드레스 계산 및 변환을 포함할 수 있음)을 포함한다. 이 시간 동안, 재정렬 버퍼(210)는 저장 명령어를 보유하고 저장 명령어가 비-추측적으로 실행할 때까지 명령어가 폐기- 결과를 커밋-하는 것을 허용하지 않는다.
명령어는 예측된 분기 제어 흐름 경로에서 실행하는 것과 같은 다양한 이유로 또는 다양한 다른 이유로 추측적으로 실행할 수 있다. 저장 명령어의 실행의 일부는 캐시에 저장될 데이터를 기록하는 것을 포함한다. 이를 위해 캐시 제어기(cache controller)는 적절한 캐시 라인에 대한 독점 액세스 권한을 얻은 다음 지정된 데이터를 해당 캐시 라인에 기록한다. 적절한 캐시 라인에 대한 독점 권한을 얻는 것은 다른 캐시(예를 들어, 다른 모든 캐시)가 캐시 라인의 복사본을 무효화하도록 하는 것을 포함한다. 이렇게 하면 그 캐시 라인에 대한 데이터 버전이 다른 캐시 메모리에 존재하는 것을 방지할 수 있다. MESI("수정됨, 배타적, 공유됨, 유효하지 않음") 프로토콜에서, 저장소를 실행하는 명령어 실행 파이프라인(200)은 캐시 라인에 대한 독점 권한을 얻고 다른 유닛은 캐시 라인의 복사본을 유효하지 않음으로 설정한다.
명령어 실행 파이프라인(200)은 명령어에 대한 다양한 동작을 조기에 수행하려고 시도하는 비순차적 실행 파이프라인이다. 이러한 동작의 한 가지 예는 위에서 설명된 무효화이다. 구체적으로, 저장 명령어 실행을 위해, 명령어 실행 파이프라인(200)은 저장 명령어 실행 초기에 다른 메모리의 캐시 라인 복사본 무효화를 요청하는 것이 허용되며 종종 실행하여 저장 명령어가 연관된 데이터를 기록할 준비가 되면 명령어 실행 파이프라인(200)은 마치 무효화가 나중에 발생하는 것처럼 오래 기다릴 필요가 없도록 한다. 그러나 저장 명령어의 추측 실행이 발생하는 경우 문제가 발생한다. 구체적으로, 위에서 설명된 바와 같이, 명령어 실행 파이프라인(200)은 추측적으로 실행되는 저장 명령어에 대한 캐시 라인의 무효화를 요청하고, 저장 명령어가 데이터를 기록할 준비가 되기 전에 실질적으로 이러한 요청을 하는 것이 가능하다. 그러나 저장 명령어의 추측 실행이 실제로 올바르지 않을 수도 있다. 예를 들어, 저장 명령어가 잘못 예측된 제어 흐름 경로(예를 들어, 실제로 분기가 수행되는 분기되지 않은 지점을 지나서)에서 실행 중일 수 있다. 이 경우, 관련된 캐시 라인의 다양한 복사본을 다양한 메모리에서 무효화시키는 행위는 낭비이며, 이 다양한 메모리는 공유됨 또는 배타적 상태에서 그 캐시 라인을 다시 획득해야 할 수 있다.
프로브를 제거하거나 최소화하는 등과 같이 시간을 절약하기 위해 특정 데이터 패턴의 표시가 예비 디렉토리 항목에 저장될 수 있다. 특정 데이터 패턴의 표시는 '일관성 디렉토리'에 저장될 수 있다. 일관성 디렉토리는 캐시 일관성 메커니즘의 유형인 디렉토리 기반 캐시 일관성에 사용되며, 여기서 일관성 디렉토리는 스누피(snoopy) 방법과 같은 다른 기술 대신 캐시를 관리하는 데 사용된다. 예를 들어 일관성 디렉토리는 캐시 계층 구조 내의 저장 위치일 수 있다.
구현예에서, 일관성 디렉토리는 레벨 3 캐시에 연결하는 개인 레벨 2 캐시를 갖는 다수의 CPU 코어 중 하나 이상을 포함한다. 레벨 3 캐시는 많은 레벨 2 캐시 중 어떤 캐시 라인이 있는지에 대한 정확한 정보를 포함하여 레벨 2 캐시 어드레스의 정확한 복사본을 갖는다. 주어진 코어로부터 레벨 2 캐시 미스를 서비스할 때 레벨 3은 레벨 3 캐시 태그와 레벨 2 캐시 어드레스의 복사본을 모두 조회하여 캐시 라인이 어디에 있는지 결정한다.
일부 다른 구현예에서는 추적되는 어드레스의 정확한 복사본 대신 일관성 디렉토리로서 세트-연관(set-associative) 구조가 있다. 이는 '추가 레벨 3 캐시 태그'로 또는 자체 전용 구조로 구현될 수 있다. 예를 들어 레벨 3 캐시가 12-웨이 세트 연관 캐시(12개의 태그가 있고 인덱스당 12개의 데이터 라인을 저장함)인 경우 '일관성' 항목을 나타내는 추가 4개의 태그를 가질 수 있다. 이는 레벨 3에 저장된 데이터에 대응하지 않지만 대신 캐시 라인을 수용하는 하나 이상의 레벨 2 캐시에 대한 포인터(pointer)를 갖는다. 이 구조의 크기는 성능 분석을 기반으로 프로비저닝되고 세트 연관 성격(nature)으로 인해 레벨 2 캐시의 캐시 라인 어드레스가 레벨 3 디렉토리에서 '핫스팟'(hotspot)을 형성하는 일부 최악의 시나리오를 설명하기 위해 종종 과잉 프로비저닝(overprovision)된다.
레벨 3 캐시 외에도, '시스템 일관성 관리자'는 어느 레벨 3 캐시가 캐시 라인을 수용하는지 추적하는 데 사용될 수 있다. 시스템 일관성 관리자는 캐시 라인 어드레스 포인터와 더 큰 세분성(granularity) 포인터(예를 들어, 4 킬로바이트 페이지) 둘 모두의 혼합물이다.
구현 방식에 관계없이, 일관성 디렉토리는 캐시 제어기가 가장 최근의 데이터를 얻기 위해 하나 이상의 캐시에 프로브를 발송해야 할 수도 있음을 나타내는 정보를 캐시 제어기에 제공한다. 이 프로브는 성능을 제한- 원래 캐시 권한에 대기 시간을 추가하고, 많은 프로브가 활성화할 때 대역폭 문제를 일으키고, 캐시 제어기가 프로브를 핸들링하는 동안 레벨 2 캐시에 뱅크 충돌(bank conflict)이나 기타 교란(perturbation)을 일으키는 등을 할 수 있다.
도 3은 일례에 따른 컴퓨터 시스템(300)의 블록도이다. 일부 예에서, 컴퓨터 시스템(300)은 도 1의 컴퓨터 시스템(100)이다. 컴퓨터 시스템(300)은 프로세서 세트(302), 하나 이상의 시스템 레벨 메모리(304), 시스템 메모리 제어기(306) 및 기타 시스템 요소(308)를 포함한다.
프로세서 세트(302)는 하나 이상의 프로세서 칩(310)을 포함한다. 각각의 프로세서 칩(310)은 프로세서 칩-레벨 캐시(312) 및 하나 이상의 프로세서 코어(314)를 포함한다. 각각의 프로세서 코어(314)는 연관된 코어-레벨 캐시(316)를 갖는다. 프로세서 코어(314)의 각각은 도 2의 명령어 실행 파이프라인(200)과 같은 하나 이상의 실행 파이프라인을 포함한다.
도 3에 예시된 캐시와 메모리는 병렬로 동작하므로 일관성 프로토콜을 사용하여 데이터 일관성을 보장한다. 이러한 프로토콜의 한 예는 수정됨-배타적-공유됨-유효하지 않음("MESI") 프로토콜이다. 각각의 캐시 라인은 이 네 가지 상태 중 하나에 대한 표시를 포함한다. 수정됨 상태는 특정 캐시에 저장된 캐시 라인의 복사본이 백업 메모리(backing memory)에 저장된 복사본에 대해 수정되었으므로 캐시 라인이 방출(evict)될 때 캐시 라인이 백업 메모리에 기록되어야 함을 나타낸다. 배타적 상태는 캐시 라인이 특정 캐시에 저장되고 동일한 계층 구조의 다른 캐시에는 저장되지 않음을 나타낸다. 배타적으로 표시된 캐시 라인은 계층 구조의 더 높은 레벨에 저장될 수 있다. 예를 들어, 레벨 0 캐시에 배타적 상태로 저장된 캐시 라인은 레벨 0 캐시 바로 위의 레벨 1 캐시에도 저장될 수 있다. 공유됨 상태는 캐시 라인이 계층 구조의 동일한 레벨에 있는 다수의 캐시에 저장되어 있음을 나타낸다. 유효하지 않음 상태는 그 캐시 라인이 유효하지 않은 것으로 표시된 특정 캐시 내에서 캐시 라인이 유효하지 않음을 나타낸다(다른 캐시가 그 캐시 라인의 유효한 복사본을 저장할 수 있음에도 불구하고).
각각의 프로세서 코어(314)는 연관된 코어-레벨 캐시(316)를 갖는다. 프로세서 코어(314)가 로드 동작 또는 저장 동작과 같은 메모리 동작을 실행할 때, 프로세서 코어(314)는 메모리 동작을 위한 데이터를 저장하는 캐시 라인이 프로세서 코어(314)와 연관된 코어-레벨 캐시(316) 내에 위치되는지 여부를 결정한다. 이러한 캐시 라인이 코어 레벨 캐시(316) 내에 위치되지 않는 경우, 코어 레벨 캐시(316)는 프로세서 칩-레벨 캐시(312)와 같은 더 높은 레벨 캐시로부터 해당 캐시 라인을 코어-레벨 캐시(316)로 페치하려고 시도한다. 프로세서 칩-레벨 캐시(312)는 더 높은 레벨의 캐시 메모리 역할과 프로세서 칩-레벨 캐시(312) 및 동일한 프로세서 칩(310) 내의 모든 코어-레벨 캐시(316)에 대한 일관성 프로토콜을 관리하는 제어기 역할을 한다. 따라서, 프로세서 칩-레벨 캐시(312)는 요청 프로세서 코어(314)에 캐시 라인을 제공할 목적으로 요청 캐시 라인이 내부에 저장되어 있는지 여부를 결정하기 위해 자체적으로 검사한다. 프로세서 칩-레벨 캐시(312)는 자체 콘텐츠로부터 또는 계층 구조에서 상위에 있는 메모리로부터 패치된 캐시 라인을 요청 코어(314)에 제공한다.
프로세서 칩-레벨 캐시(312)는 코어-레벨 캐시(316)에 대한 일관성 프로토콜을 관리한다. 일반적으로, 프로세서 칩-레벨 캐시(312)는 코어-레벨 캐시(316) 내의 캐시 라인의 프로토콜 상태를 관리하여 임의의 캐시 라인이 특정 코어-레벨 캐시(316)에서 배타적 상태에 있는 경우, 다른 코어 레벨 캐시(316)는 유효하지 않음 상태를 제외하고는 해당 캐시 라인을 갖지 않도록 한다. 다수의 코어-레벨 캐시(316)는 공유됨 상태의 캐시 라인을 갖는 것이 허용된다.
프로토콜은 레벨별로 작동한다. 보다 구체적으로, 메모리 계층 구조의 각각의 레벨에서 그 레벨 내의 각각의 요소는 프로토콜의 상태에 상관없이 캐시 라인을 갖는 것이 허용된다. 예에서, 프로세서 세트(302)의 레벨에서, 각각의 칩(310)(따라서, 각각의 프로세서 칩-레벨 캐시(312))은 공유됨 상태 또는 배타적 상태와 같은 상태 중 하나의 캐시 라인을 갖는 것이 허용된다. 계층 구조의 특정 레벨에 대한 제어기는 그 레벨에서 프로토콜을 관리한다. 따라서, 프로세서 세트 메모리(320)는 프로세서 칩-레벨 캐시(312)의 상태를 관리한다. 임의의 특정 프로세서 칩(310)에 대한 프로세서 칩-레벨 캐시(312)는 코어-레벨 캐시(316)의 상태를 관리하고, 시스템 메모리 제어기(306)는 프로세서 세트(302) 및 특정 캐시 라인을 저장하는 다른 시스템 요소(308)에 대한 상태를 관리한다.
프로세서 코어(314)가 저장 명령어를 실행할 때, 프로세서 코어(314)는 기록될 데이터를 포함하는 캐시 라인이 배타적 상태로 연관된 코어-레벨 캐시(316)에 배치되도록 요청한다. 이 요청을 만족시키는 것의 일부는 다른 모든 캐시(코어-레벨 캐시(316)의 "바로 위" 캐시 제외)가 그 캐시 라인의 복사본을 무효화하도록 요청하는 것을 포함한다. 다른 곳에 언급된 바와 같이, 프로세서 코어(314)는 배타적 판독을 발행하고, 다른 캐시는 그 배타적 판독에 응답하여 복사본을 무효화한다.
일부 구현예에서, 데이터를 실제로 저장하지 않더라도 데이터에 대한 정보는 이 구조의 '일관성' 추적 정보와 함께 저장된다. 데이터에 대한 정보를 저장함으로써 다른 일관성 조건이 충족되면 프로브가 생략될 수 있다. 비제한적인 예로서, 일관성 조건은 레벨 2 캐시 라인이 기록가능 상태가 아닌 경우를 포함한다. 구현예에서는 일관성 항목당 1비트가 저장된다. 예를 들어, 데이터는 레벨 3 캐시와 같은 다른 캐시에 저장될 수 있으며 이는 캐시 라인이 모두 0임을 나타낸다. 0으로 알려진 캐시를 프로빙하는 대신 캐시 제어기는 임의의 데이터 저장소를 조회하지 않고 모두 0을 반환하여 요청을 충족한다. 보다 일반적으로 '0'을 나타내는 1비트 대신 공통 데이터 패턴에 대해 다수의 인코딩(encoding)이 저장될 수 있다. 이 다수의 인코딩은 고정된 데이터 패턴 세트일 수도 있고 런타임(runtime) 시 공통적으로 결정된 '패턴의 사전'에 대한 인덱스일 수도 있다. 패턴의 사전은 해당 기술 분야와 캐시 압축의 영역에서 이해되므로 사전에 관한 더 자세한 내용은 제시되지 않는다.
프로브를 제거하는 것 외에도, 구현은 추가 캐시 용량의 환상(illusion)을 생성할 수도 있다. 적어도 하나의 구현예에서는 어드레스 추적을 위해 존재하기 때문에 레벨 3 캐시에 데이터가 없는 추가 '태그'가 있다. 레벨 3 캐시에 라인을 삽입할 때 데이터 값이 0이면 대응하는 데이터 저장소를 갖는 태그 중 하나 대신 사용되지 않은 '일관성 디렉토리' 태그 중 하나가 사용 가능할 수 있다.
일부 구현예에서, 특정 데이터 패턴의 표시는 일관성 추적 정보와 동일한 디렉토리에 저장된다. 이해되는 바와 같이, 이러한 저장 위치는 용이한 접근을 위해 결정될 수 있고 일관성 추적 정보와 동일한 디렉토리에 저장할 수 있으며 단지 하나의 구현일 뿐이다. 저장을 위한 다른 위치는 당업자에 의해 이해될 수 있을 것이다.
도 4는 예비 디렉토리에 저장된 특정 데이터 패턴의 표시로 동작하는 단일 레벨 캐시 시스템을 활용하는 컴퓨터 시스템(400)을 예시한다. 예시된 바와 같이, 컴퓨터 시스템(400)은 프로세서(102) 및 캐시(410)와 캐시(410)에 결합된 캐시 제어기(420)(예를 들어, 프로세서 칩-레벨 캐시(312), 프로세서 세트 메모리(320), 또는 시스템 메모리 제어기(306))를 포함한다. 시스템(400)은 특정 데이터 패턴(430)의 표시를 포함한다. 표시(430)는 캐시(410)와 제어기(420) 중 하나 또는 둘 모두에 결합되고 캐시(410) 내에 저장될 수 있다. 전술한 바와 같이, 구현예에서 일관성 추적 정보(440)는 표시(430)와 함께 저장된다.
구체적으로 예시되지는 않았지만, 시스템(400)은 하나 이상의 캐시 계층 구조의 레벨을 포함할 수 있다. 예를 들어, 계층 구조의 하나 이상의 가장 낮은 레벨(1차 프로세서-메모리 계층 구조 레벨), 계층 구조로 배열된 하나 이상의 다음 레벨 위의 2차 프로세서-메모리 계층 구조 레벨, 하나 이상의 3차 프로세서 메모리 계층 구조 레벨 및 선택적으로 추가 계층 구조 레벨(도시되지 않음). 시스템(400)은 캐시 계층 구조의 단일 레벨만을 예시하지만, 추가적인 레벨이 활용될 수도 있다. 이해되는 바와 같이, 다중-레벨 계층 구조를 사용하면 계층 구조의 다른 레벨에 존재할 수 있는 제2 캐시(미도시)에 캐시(410)와 연관된 표시(430) 및 일관성 추적 정보(440)를 저장할 기회를 생성한다.
도 4는 특정 데이터 패턴의 표시를 사용하여 저장 및 판독을 실행할 수 있는 컴퓨터 시스템(400)의 블록도이다. 도 4는 설명된 기능을 이해하는 데 필요한 도 3의 요소를 예시한다. 이해되는 바와 같이, 도 3의 시스템(300)은 도 4의 시스템(400)의 예이다. 따라서, 도 3은 코어, 칩 등과 같은 특정 유형의 계층 구조 레벨 요소를 도시하지만 도 4의 시스템은 반드시 유사한 요소나 요소의 그룹을 포함하는 것은 아니며 대신 설명된 기능의 이해를 돕기 위해 단순화된 다이어그램을 제공한다. 예를 들어, 코어-레벨 캐시(316)는 캐시(410)의 예이고 프로세서(102)는 프로세서 코어(314)일 수 있다. 이해되는 바와 같이, 캐시(410) 및 프로세서(102)는 예를 들어 시스템 레벨 메모리(304) 및 시스템 메모리 제어기(306)는 물론 프로세서 세트 메모리(320)를 포함하는 도 3의 계층 구조의 다른 레벨에 있는 프로세서 및 캐시를 나타낼 수 있다.
일부 구현예에서, 특정 데이터 패턴(430)의 표시는 실제로 데이터를 저장하지 않고도 예를 들어 캐시(410)와 같은 캐시 계층 구조의 일관성 추적 정보(440)와 함께 저장된다. 표시(430)를 저장하고 표시(430)를 활용함으로써, 다른 일관성 조건이 존재하는 경우 프로브가 생략될 수 있다. 비제한적인 예로서 하나의 일관성 조건은 레벨 2 캐시 라인이 기록 가능한 상태가 아닌 구현을 포함한다.
구현예에서, 일관성 항목당 1비트는 캐시 라인을 나타내는 표시(430)가 모두 0이므로 저장된다. 표시(430)에 의해 식별된 0으로 알려진 캐시를 프로빙하는 대신, 캐시 제어기(420)는 데이터 저장소를 검색하지 않고 모두 0을 반환함으로써 요청을 만족시킨다. 조회 또는 프로브를 저장하면 시스템 리소스가 절약된다.
보다 일반적으로, '0'을 나타내는 예시적인 1 비트 대신, 공통 데이터 패턴에 대해 저장된 다수의 인코딩이 있을 수 있다. 이 공통 데이터 패턴을 나타내기 위해 복수의 표시(430)가 사용된다. 이 다수의 인코딩은 고정된 데이터 패턴의 세트일 수도 있고 런타임 시 공통으로 결정된 패턴 '사전'에 대한 인덱스일 수도 있다. 다수의 비트가 사용되어 설명된 모두 0 조건 이외의 다른 공통 데이터 패턴을 나타낼 수 있다. 패턴의 사전은 해당 기술 분야와 캐시 압축 영역에서 이해되므로 사전에 관한 더 자세한 내용은 제시되지 않는다.
도 5는 예에 따른 예비 디렉토리에 특정 데이터 패턴의 표시를 저장하기 위한 방법(500)의 흐름도이다. 도 1 내지 4의 시스템과 관련하여 설명되었지만, 당업자는 기술적으로 실행 가능한 순서로 방법(500)의 단계를 수행하도록 구성된 임의의 시스템이 본 개시의 범위 내에 속한다는 것을 이해할 것이다.
단계(510)에서, 방법(500)은 캐시 계층 구조 내에 데이터를 저장하기 위해 저장 요청을 발행하는 프로세싱 요소를 포함한다. 단계 520에서, 특정 데이터 패턴의 표시가 저장된다. 특정 데이터 패턴의 표시는 프로세싱 요소가 저장하라는 저장 요청을 발행한 데이터와 연관된다. 구현예에서 표시는 캐시 계층 구조 내에 저장되고, 다른 구현예에서는 표시가 데이터가 저장된 위치와 다른 계층 구조의 레벨에 저장된다. 표시를 저장함으로써 다른 일관성 조건이 존재하는 경우 프로브가 생략될 수 있다. 비제한적인 예로서 하나의 일관성 조건은 레벨 2 캐시 라인이 기록 가능한 상태가 아닌 구현을 포함한다. 구현예에서는 캐시 라인이 모두 0임을 나타내는 일관성 항목당 1비트가 저장된다. 0으로 알려진 캐시를 프로빙하는 대신 캐시 제어기는 데이터 저장소를 조회하지 않고 모두 0을 반환하여 요청을 충족한다. 보다 일반적으로 '0'을 나타내는 1비트 대신 공통 데이터 패턴에 대해 다수의 인코딩이 저장될 수 있다. 이 다수의 인코딩은 고정된 데이터 패턴의 세트일 수도 있고 런타임 시 공통된 것으로 결정된 패턴 '사전'에 대한 인덱스일 수도 있다. 패턴 사전은 해당 기술 분야와 캐시 압축의 영역에서 이해되므로 사전에 관한 더 자세한 내용은 제시되지 않는다.
도 6은 예에 따른, 예비 디렉토리에 특정 데이터 패턴의 표시를 저장하기 위한 방법(600)의 흐름도이다. 도 1 내지 4의 시스템과 관련하여 설명되었지만, 당업자는 기술적으로 실행 가능한 순서로 방법(600)의 단계를 수행하도록 구성된 임의의 시스템이 본 개시의 범위 내에 속한다는 것을 이해할 것이다.
단계(610)에서, 방법(600)은 데이터 계층 구조로부터 데이터를 판독하기 위한 판독 동작을 수행하기 위해 판독 요청을 발행하는 프로세싱 요소를 포함한다. 판독되도록 요청된 데이터는 특정 데이터 패턴으로 식별되므로, 단계(620)에서 특정 데이터 패턴의 연관된 표시는 데이터 계층 구조로부터 판독된다. 표시는 단계(630)에서 디코딩(decode)된다. 단계(640)에서, 디코딩된 표시에 기초하여 판독 동작이 충족된다. 일부의 다른 일관성 조건이 존재하는 경우 표시를 읽음으로써 프로브가 생략될 수 있다. 비제한적인 예로서 하나의 일관성 조건은 레벨 2 캐시 라인이 기록 가능한 상태가 아닌 구현을 포함한다. 구현예에서는 캐시 라인이 모두 0임을 나타내는 일관성 항목당 1비트가 저장된다. 0으로 알려진 캐시를 프로빙하는 대신 캐시 제어기는 데이터 저장소를 조회하지 않고 모두 0을 반환하여 요청을 충족한다. 보다 일반적으로 '0'을 나타내는 1비트 대신 공통 데이터 패턴에 대해 다수의 인코딩이 저장될 수 있다. 이 다수의 인코딩은 고정된 데이터 패턴의 세트일 수도 있고 런타임 시 공통된 것으로 결정된 패턴 '사전'에 대한 인덱스일 수도 있다. 패턴 사전은 해당 기술 분야와 캐시 압축의 영역에서 이해되므로 사전에 관한 더 자세한 내용은 제시되지 않는다.
도 7은 도 1 내지 4의 시스템에서 프로브를 생략하는 방법(700)을 예시한다. 즉, 계층 구조에서 데이터가 어디에 위치되는지 및 계층 구조 내 데이터의 상태를 결정하기 위해 계층 구조에 저장된 데이터를 프로브하는 것은 불필요하므로 회피되거나 생략될 수 있다. 방법(700)은 캐시 라인이 하나 이상의 다른 캐시에 존재함을 나타내는 표시를 일관성 디렉토리 항목에 저장한다. 구현예에서, 표시는 캐시 계층 구조와 함께 저장되고, 다른 구현예에서 표시는 연관된 데이터가 저장되는 것과는 다른 캐시 계층 구조 레벨에 저장된다. 예를 들어, 캐시 라인은 유효한 비-배타적 MESI 상태에 있다. 캐시 라인의 데이터는 예를 들어 0과 같은 추적 가능한 패턴이다. 캐시 라인으로부터 데이터를 판독하라는 요청에 응답하여 추적 가능한 패턴이 인식될 수 있으며 프로브는 다른 캐시로 발송되지 않는다. 시스템은 지정된 데이터(예에서는 0)가 표시에 기초하여 반환된다. 이 방법(700)은 프로브의 생략을 나타낸다.
방법(700)은 단계(710)에서 캐시 라인을 추적하기 위해 일관성 디렉토리 항목을 생성하는 것을 포함한다. 특정 예로서, 일관성 디렉토리 항목은 레벨 2 캐시에 대한 캐시 라인을 추적하기 위해 레벨 3 캐시 디렉토리에 생성된다.
단계(720)에서, 방법(700)은 MESI 상태가 배타적(E) 또는 수정됨(M)이 아닐때 항목에 대한 캐시 라인 데이터가 0(또는 일부 다른 추적 가능한 패턴)인지 결정하는 단계를 포함한다. 위에서 구체적인 예를 이어가면, 레벨 2 캐시에서 항목에 대한 캐시 라인 데이터가 0(또는 다른 설정 값)으로 결정되고 MESI 상태가 E 또는 M이 아닌 경우, 저장된 상태에서 판독하는 디렉토리 항목에 표시가 설정되어 있고(특정 판독에는 무효화가 필요함) 레벨 2 캐시에 프로브를 발송하지 않고도 서비스될 수 있다. 이해되는 바와 같이, 항목에 대한 캐시 라인 데이터가 MESI E 또는 M 상태에 있을 때, 캐시 라인 데이터를 보유하고 있는 CPU는 일관성 디렉토리에 알리지 않고 캐시 라인의 데이터를 변경할 수 있으므로 일관성 디렉토리의 캐시 라인 값에 대한 지식이 올바르지 않게 된다.
단계(730)에서, 방법(700)은 프로브를 발송하지 않고도 판독이 서비스될 수 있다는 표시를 디렉토리 항목에 설정하는 단계를 포함한다. 다시 특정 예를 참조하면, 표시가 레벨 2 캐시에 대한 캐시 라인을 추적하는 레벨 3 캐시의 일관성 디렉토리 항목에 설정된다. 표시는 레벨 2 캐시에 대한 캐시 라인에 대한 판독이 캐시 라인에 대한 프로브 발송을 통해 서비스될 수 있음을 나타내도록 구성된다.
도 8은 도 1 내지 4의 시스템에서 추가 데이터 저장 용량을 위한 방법(800)을 예시한다. 방법(800)은 디렉토리에 포함된 다른 캐시에 라인이 존재하지 않음을 나타내는 표시를 일관성 디렉토리 항목에 저장한다. 이 표시는 항목이 지정된 데이터로 판독을 서비스하는 데 사용 가능함을 또한 또는 대안적으로 나타낼 수 있다. 이 방법(800)은 추가 데이터 용량을 나타낸다.
방법(800)은 단계(810)에서 일관성 디렉토리의 라인을 능동적으로 추적하는 것을 포함한다. 구체적인 예로서, 레벨 3 캐시 디렉토리의 일관성 디렉토리는 레벨 캐시의 라인을 능동적으로 추적한다.
단계(820)에서, 방법(800)은 캐시 라인을 무효화하고 일관성 디렉토리에 알리는 것을 포함한다. 특정 예에서, 레벨 2 캐시 라인은 예를 들어 용량 방출(capacity eviction)로 인해 유효하지 않음 되고 레벨 3 캐시의 일관성 디렉토리에 알린다. 다른 상황에서는 레벨 2 캐시에서 캐시 라인 방출은 캐시 라인을 레벨 3 캐시에 배치하고 일관성 디렉토리 항목을 무효화하거나 및/또는 메모리로 방출하고 일관성 디렉토리 항목을 무효화한다.
단계(830)에서, 방법(800)은 데이터가 예를 들어 모두 0과 같은 추적 가능한 패턴인지 결정하는 단계를 포함한다. 패턴 및 추적 패턴은 당업계 및 캐시 압축의 영역에서 이해되므로 패턴 및 패턴 추적에 관한 더 자세한 내용은 제시되지 않는다.
일관성 디렉토리가 활용되고, 단계(830)의 결정이 데이터가 추적 가능한 패턴임을 나타내는 경우, 방법(800)은 단계(840)에서 캐시 라인이 더 이상 캐시에 있지 않다고 일관성 디렉토리를 업데이트하는 것, 단계(850)에서 캐시 라인 데이터가 0임을 나타내기 위해 일관성 디렉토리를 업데이트하는 것, 단계(860)에서 일관성 디렉토리로부터 캐시 라인에 대한 판독을 서비스하고 지정된 데이터 공급하는 것을 포함한다. 다시 특정 예를 참조하면 일관성 디렉토리가 업데이트되어 캐시 라인이 더 이상 레벨 2 캐시에 없음을 나타낸다. 캐시 라인 데이터가 0임을 나타내기 위해 일관성 디렉토리가 업데이트된다. 캐시 라인에 대한 후속 판독은 일관성 디렉토리에서 서비스되어 레벨 3 캐시의 저장소를 사용하지 않고 지정된 데이터를 공급한다.
본 명세서의 개시에 기초하여 많은 변형이 가능하다는 것이 이해되어야 한다. 피쳐 및 요소가 특정 조합으로 위에서 설명되었지만, 각각의 피쳐 또는 요소는 다른 피쳐 및 요소 없이 단독으로 또는 다른 피쳐 및 요소와 함께 또는 없이 다양한 조합으로 사용될 수 있다.
도면에 예시된 다양한 요소는 하드웨어(예를 들어, 회로부), 프로세서에서 실행하는 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현 가능하다. 다양한 예에서, 각각의 블록, 프로세서 칩(310), 시스템 요소(308), 시스템 레벨 메모리(304), 시스템 메모리 제어기(306), 명령어 실행 파이프라인(200) 및 컴퓨터 시스템(100)의 예시된 유닛은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현 가능하다. 제공된 방법은 범용(general-purpose) 컴퓨터, 프로세서 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는 예를 들어 범용 프로세서, 특수 목적 프로세서, 기존 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 연관된 하나 이상의 마이크로프로세서, 제어기, 마이크로컨트롤러, 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 회로, 임의의 다른 유형의 집적 회로(IC) 및/또는 상태 머신을 포함한다. 이러한 프로세서는 프로세싱된 하드웨어 설명 언어(HDL) 명령어의 결과와 넷리스트(netlist)를 포함하는 다른 중간 데이터(컴퓨터 판독 가능 매체에 저장 가능한 명령어)를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 구현의 양태를 구현하는 프로세서를 제조하기 위해 반도체 제조 프로세스에서 사용되는 마스크워크(maskwork)일 수 있다.
본 명세서에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비-일시적 컴퓨터 판독 가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체의 예는 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 광자기 매체, CD-ROM 디스크, 디지털 다목적 디스크(DVD)와 같은 광학 매체를 포함한다.

Claims (20)

  1. 메모리에 저장된 데이터를 요청할 때 프로브(probe)를 생략하는 방법에 있어서, 상기 방법은:
    캐시 라인(cache line) 중 적어도 하나와 연관된 정보를 추적하기 위해 캐시와 연관된 일관성 디렉토리(coherency directory)에 일관성 디렉토리 항목을 생성하는 단계;
    상기 일관성 디렉토리 항목에 대한 캐시 라인 데이터가 추적 가능한 패턴(trackable pattern)인지 여부를 결정하는 단계; 그리고
    상기 캐시 라인 데이터에 대한 하나 이상의 판독이 프로브를 발송하지 않고도 서비스될 수 있음을 나타내는 표시(indication)를 상기 캐시 라인 데이터와 연관된 상기 일관성 디렉토리 항목에 설정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 추적 가능한 패턴은 0을 포함하는, 방법.
  3. 제1항에 있어서, 상기 캐시 라인은 MESI 상태에 있는, 방법.
  4. 제3항에 있어서, 상기 MESI 상태는 배타적(E) 상태 또는 수정된(M) 상태가 아닌, 방법.
  5. 제1항에 있어서, 상기 일관성 디렉토리는 레벨 3 캐시 디렉토리에 위치하는, 방법.
  6. 제1항에 있어서, 상기 일관성 디렉토리는 레벨 2 캐시에 대한 캐시 라인을 추적하는, 방법.
  7. 제1항에 있어서, 상기 생략된 프로브는 레벨 2 캐시로 향하는, 방법.
  8. 제1항에 있어서, 상기 일관성 디렉토리의 각각의 일관성 디렉토리 항목은 캐시 계층 구조의 다른 캐시에 캐시 라인이 존재하는지 여부를 나타내는 정보를 포함하는, 방법.
  9. 시스템에 있어서,
    프로세서; 및
    메모리를 포함하고, 상기 메모리는:
    캐시 계층 구조 및
    상기 캐시 계층 구조와 연관된 일관성 디렉터리를 포함하고, 상기 일관성 디렉토리는 캐시 라인과 연관된 정보를 추적하기 위해 복수의 일관성 디렉토리 항목을 포함하고, 각각의 항목은 캐시 라인과 연관되고, 각각의 항목은 상기 복수의 일관성 디렉토리 항목 중 하나와 연관된 캐시 라인 데이터에 대한 하나 이상의 판독이 추적 가능한 패턴인 상기 항목에 대한 상기 캐시 라인 데이터에 응답하여 프로브를 발송하지 않고도 서비스될 수 있음을 나타내는 표시를 포함하는, 시스템.
  10. 제9항에 있어서, 상기 일관성 디렉토리는 레벨 3 캐시 디렉토리에 위치하는, 시스템.
  11. 제9항에 있어서, 상기 일관성 디렉토리는 레벨 2 캐시에 대한 캐시 라인을 추적하는, 시스템.
  12. 제9항에 있어서, 상기 일관성 디렉토리 항목은 라인이 다른 캐시에 존재함을 나타내는, 시스템.
  13. 캐시와 연관된 일관성 디렉터리에 추가 데이터 저장 용량을 제공하는 방법에 있어서, 상기 방법은:
    상기 캐시의 상기 일관성 디렉토리에서 캐시 라인을 적극적으로 추적하는 단계;
    상기 캐시 라인을 무효화하고 상기 일관성 디렉터리에 알리는 단계;
    데이터가 추적 가능한 패턴인지 여부를 결정하는 단계; 및
    상기 일관성 디렉터리가 활용될 때, 그리고 상기 결정이 상기 데이터가 추적 가능한 패턴임을 나타낼 때:
    상기 캐시 라인이 더 이상 캐시에 없다고 상기 일관성 디렉터리를 업데이트하는 단계,
    캐시 라인 데이터가 0임을 나타내기 위해 상기 일관성 디렉터리를 업데이트하는 단계, 및
    상기 일관성 디렉터리로부터 상기 캐시 라인에 대한 판독을 서비스하고 지정된 데이터를 제공하는 단계를 포함하는, 방법.
  14. 제13항에 있어서, 상기 추적 가능한 패턴은 모두 0인, 방법.
  15. 제13항에 있어서, 상기 일관성 디렉토리는 레벨 3 캐시 디렉토리에 위치하는, 방법.
  16. 제13항에 있어서, 상기 일관성 디렉토리는 레벨 2 캐시에 대한 캐시 라인을 추적하는, 방법.
  17. 시스템에 있어서,
    프로세서; 및
    메모리를 포함하며, 상기 메모리는:
    캐시 계층 구조 및
    상기 캐시 계층 구조와 연관된 일관성 디렉터리를 포함하고, 상기 일관성 디렉토리는 캐시 라인과 연관된 정보를 추적하기 위해 복수의 일관성 디렉토리 항목을 포함하고, 각각의 항목은 캐시 라인과 연관되고,
    상기 프로세서는 상기 캐시 라인을 무효화하고, 상기 일관성 디렉토리에 상기 무효화를 알리고, 상기 캐시 라인의 데이터가 추적 가능한 패턴인지를 결정하고; 및
    상기 결정이 상기 데이터가 추적 가능한 패턴임을 나타낼 때, 상기 프로세서는 상기 캐시 라인이 더 이상 상기 캐시 계층 구조에 없다고 상기 일관성 디렉터리를 업데이트하고, 상기 캐시 라인 데이터가 0임을 나타내기 위해 상기 일관성 디렉터리를 업데이트하고, 판독을 상기 일관성 디렉터리로부터의 상기 캐시 라인에 서비스하여 지정된 데이터를 제공하는, 시스템.
  18. 제17항에 있어서, 상기 추적 가능한 패턴이 모두 0인, 시스템.
  19. 제17항에 있어서, 상기 일관성 디렉토리는 레벨 3 캐시 디렉토리에 위치하는, 시스템.
  20. 제17항에 있어서, 상기 일관성 디렉토리는 레벨 2 캐시에 대한 캐시 라인을 추적하는, 시스템.
KR1020247013114A 2021-09-29 2022-08-25 예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장 KR20240067941A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/489,712 US20230099256A1 (en) 2021-09-29 2021-09-29 Storing an indication of a specific data pattern in spare directory entries
US17/489,712 2021-09-29
PCT/US2022/041586 WO2023055508A1 (en) 2021-09-29 2022-08-25 Storing an indication of a specific data pattern in spare directory entries

Publications (1)

Publication Number Publication Date
KR20240067941A true KR20240067941A (ko) 2024-05-17

Family

ID=85706736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247013114A KR20240067941A (ko) 2021-09-29 2022-08-25 예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장

Country Status (4)

Country Link
US (1) US20230099256A1 (ko)
KR (1) KR20240067941A (ko)
CN (1) CN118056192A (ko)
WO (1) WO2023055508A1 (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397030B2 (en) * 2008-06-24 2013-03-12 International Business Machines Corporation Efficient region coherence protocol for clustered shared-memory multiprocessor systems
US9824009B2 (en) * 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US9792210B2 (en) * 2015-12-22 2017-10-17 Advanced Micro Devices, Inc. Region probe filter for distributed memory system
US10073776B2 (en) * 2016-06-23 2018-09-11 Advanced Micro Device, Inc. Shadow tag memory to monitor state of cachelines at different cache level
US20180004659A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Cribbing cache implementing highly compressible data indication
US20190236011A1 (en) * 2018-01-31 2019-08-01 Hewlett Packard Enterprise Development Lp Memory structure based coherency directory cache
US10705959B2 (en) * 2018-08-31 2020-07-07 Advanced Micro Devices, Inc. Region based split-directory scheme to adapt to large cache sizes
US20210191865A1 (en) * 2019-12-20 2021-06-24 Advanced Micro Devices, Inc. Zero value memory compression

Also Published As

Publication number Publication date
WO2023055508A1 (en) 2023-04-06
CN118056192A (zh) 2024-05-17
US20230099256A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
CN102483704B (zh) 具有高效的高速缓存支持的事务内存系统
US8706973B2 (en) Unbounded transactional memory system and method
US7363435B1 (en) System and method for coherence prediction
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
US8601240B2 (en) Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US20090106498A1 (en) Coherent dram prefetcher
US10642618B1 (en) Callgraph signature prefetch
US10970077B2 (en) Processor with multiple load queues including a queue to manage ordering and a queue to manage replay
US20210406184A1 (en) Managing prefetch requests based on stream information for previously recognized streams
WO2022237585A1 (zh) 处理方法及装置、处理器、电子设备及存储介质
CN114341820A (zh) 响应于推测性数据请求而推迟基于处理器的系统中的非推测性高速缓存存储器中的高速缓存状态更新,直到推测性数据请求变为非推测性
US10866892B2 (en) Establishing dependency in a resource retry queue
KR20240067941A (ko) 예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장
US11379372B1 (en) Managing prefetch lookahead distance based on memory access latency
US11822479B2 (en) History-based selective cache line invalidation requests
US11630772B1 (en) Suppressing cache line modification
US11947456B2 (en) Weak cache line invalidation requests for speculatively executing instructions
US11836085B2 (en) Cache line coherence state upgrade
KR20240089314A (ko) 이력 기반 선택적 캐시 라인 무효화 요청
KR20240089035A (ko) 캐시 라인 일관성 상태 업그레이드
KR20240089036A (ko) 캐시 라인 일관성 상태 다운그레이드
CN113641403A (zh) 微处理器和在微处理器中实现的方法