KR101013266B1 - 순간 캐시 저장소 - Google Patents

순간 캐시 저장소 Download PDF

Info

Publication number
KR101013266B1
KR101013266B1 KR1020060113779A KR20060113779A KR101013266B1 KR 101013266 B1 KR101013266 B1 KR 101013266B1 KR 1020060113779 A KR1020060113779 A KR 1020060113779A KR 20060113779 A KR20060113779 A KR 20060113779A KR 101013266 B1 KR101013266 B1 KR 101013266B1
Authority
KR
South Korea
Prior art keywords
cache
information
cache line
storage
instant
Prior art date
Application number
KR1020060113779A
Other languages
English (en)
Other versions
KR20070059957A (ko
Inventor
마이클 칼 그쉬윈드
로버트 몬토예
에릭 릿터 알트만
주드 에이. 리버스
스메드 떠블류. 새스예
존-데이비드 웰맨
빅토르 짜이반
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20070059957A publication Critical patent/KR20070059957A/ko
Application granted granted Critical
Publication of KR101013266B1 publication Critical patent/KR101013266B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

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

Abstract

프로세서 디자인에 상당한 비용을 부과하지 않고 비임계적 프로세서 정보를 저장하기 위한 방법 및 장치. 순간 데이터는 프로세서 로컬 캐시 계층에 저장된다. 부가의 제어 비트는 캐시 주소의 일부를 형성하고, 이때 제어 비트 세트를 갖는 주소는 "순간 저장소 주소"로 지정된다. 순간 저장소 주소는 외부 주메모리에 다시 기록되지 않고, 최하위의 캐시로부터 추출될 때, 폐기된다. 바람직하게, 순간 저장소 주소는 이들이 소프트웨어에 액세스 가능하지 않거나 적당한 허가를 갖는 감시자 또는 관리자 레벨의 소프트웨어에만 액세스 가능하다는 점에서 "특권"이 있다. 다수의 관리 함수/명령어는 관리자/감시자 소프트웨어가 순간 캐시 저장소의 동작을 관리 및/또는 수정할 수 있도록 제공된다. 이 순간 저장소 구성은 캐시 계층이 프로세서 코어에 의해 이용될 수 있지만 외부 메모리에 할당하기에는 너무 비싼 데이터 항목을 저장하는 것을 가능하게 한다.
순간 저장소, 계층적 캐시 아키텍처, 해쉬 함수, 명령어 트레이스 그룹, 인덱스 함수, 캐시 라인

Description

순간 캐시 저장소{TRANSIENT CACHE STORAGE}
도 1은 종래 기술에 공지된 계층적 캐시 아키텍처를 나타내는 도면이다.
도 2는 본 발명의 바람직한 실시예에 따라 트레이스 정보를 저장하기 위해 동적인 크기의 순간 저장소를 이용하는 계층적 캐시 아키텍처를 나타내는 도면이다.
도 3은 본 발명의 바람직한 실시예에 따라 이차 캐시 디렉토리를 이용하여 매핑된 동적 크기의 순간 저장소를 이용하는 계층적 캐시 아키텍처를 나타내는 도면이다.
도 4는 본 발명의 바람직한 실시예에 따라 마이크로아키텍처 메타 정보를 저장하기 위해 동적 크기의 순간 저장소를 이용하는 계층적 캐시 아키텍처를 나타내는 도면이다.
도 5는 본 발명의 바람직한 실시예에 따라 멀티프로세서 시스템에 동적 크기의 순간 저장소를 이용하는 계층적 캐시 아키텍처를 나타내는 도면이다.
도 6은 본 발명의 바람직한 실시예에 따라 순간 캐시 저장소를 지원하는 캐시 엔트리를 설명하는 도면이다.
도 7은 본 발명의 바람직한 실시예에 따라 복수의 프로세서 사이에서 공유되는 캐시 엔트리를 설명하는 도면이다.
도 8은 본 발명의 바람직한 실시예에 따라 순간 캐시 저장소에 기록하는 프로세스를 나타내는 플로우챠트이다.
도 9는 본 발명의 바람직한 실시예에 따라 트레이스 캐시를 제공하도록 순간 캐시 저장소를 이용하는 프로세스를 나타내는 플로우챠트이다.
<도면의 주요 부호에 대한 간단한 설명>
200 : CPU
202, 302, 402 : 프로세서 데이터 경로
204, 304, 404 : 트레이시 캐시
206, 306, 406 : 명령어 캐시
208, 308, 408 : 데이터 캐시
210 : 해쉬 함수
211, 311, 411, 413 : 순간 저장소
212, 312 : 캐시 레벨
214, 314, 414 : 시스템 메모리
310 : 트레이스 캐시 디렉토리
본 발명은 일반적으로 컴퓨터 시스템의 캐시 아키텍쳐의 분야에 관한 것이다. 특히, 본 발명은 트레이스 데이터와 그 외 경험적 정보를 저장하기 위해 캐시 라인의 존재를 가능하게 하는 캐시 시스템에 관한 것으로, 이때 이들 특정 캐시 라인은 주메모리에 다시 기록되지 않는다.
캐시 프로세서는 컴퓨터 시스템의 성능을 향상시키도록 하는 다수의 데이터를 형성 및 수집한다. 이는 성능 모니터링 데이터 (예를 들어, 프로파일 데이터), 브랜치 예측 데이터, 성능 모니터 데이터, 사전 디코딩 명령어 정보, 브랜치 히스토리 정보, 브랜치 예측 테이블 등을 포함한다. 이들 데이터 몇몇은 전용 어레이나 테이블 (예를 들어, 프로파일 데이터 테이블, 브랜치 히스토리 테이블, 또는 브랜치 타겟 주소 캐시)에 저장되는 한편, 다른 데이터는 L1 (레벨 1) 명령어 캐시 (사전 디코딩 정보, 또는 어떤 경우, 이차 레벨의 브랜치 예측 정보 등)의 명령어와 관련하여 저장된다.
수집되어 이용될 수 있는 부가의 데이터가 계속적으로 개발되고 있어, 판정을 행할 때에 이용할 데이터를 수집 및 저장하려는 경향이 점차 증가하고 있는 추세이다. 저장된 데이터 양이 이용 가능한 전용 어레이의 크기를 초과함에 따라, 이들 데이터는 대개 폐기되어 나중에 재생되게 된다. 어떤 경우, 유용한 정보는 브랜치 예측 정보가 전부 재취득되어야 하기 때문에 손실될 수 있다. 다른 경우, 데이터는 재생될 수 있지만, 정보를 재연산할 때의 부가의 시간과 파워를 소모하는 것을 감수해야 한다. 수집된 정보의 가치가 수집된 정보를 이용하게 하는 것과 관련한 면적 비용이나 디자인/증명 비용을 초과함에 따라 비용/장점의 트레이드오프가 생기게 된다.
어떤 경우에는, 전용 보조 저장소 계층이 이 정보를 저장하도록 도입되지만, 부가의 실리콘 면적 및 디자인/테스트 복잡성을 감수해야 한다. 이런 전용 보조 저장소 계층을 이용한 기존 기술의 예로는 1987년 7월 7일자 미국 특허 번호 4679141 (POMERENE 등)과 어드밴스드 마이크로 디바이스사 ("Hammer" 코어)와 인텔 코퍼레이션사 (Itanium 2)에 의해 개발된 프소세스 코어에서 찾을 수 있다.
기존의 프로세스 디자인이 전용 보조 저장소 계층을 이용하는 주요 원인 중 하나는 프로세서 메타데이터를 이런 메타데이터에 관한 데이터나 명령어의 주소에 상관시키는 것이 일반적으로 바람직하기 때문이다. 예를 들어, 프로세서에서 일 조건이 발생하도록 하는 명령어에 관한 메타데이터는 기초 명령어의 주소와 어떤 형식으로든 관련되는 것이 바람직하다. 이를 행하는 가장 간단한 방법은 기초를 이루는 명령어의 것과 동일한 수치적 주소를 메타데이터에 부여하는 것이다. 그러나, 이의 문제는 두 데이터가 캐시에서 충돌하는 저장소 주소를 갖기 때문에, 동일한 캐시 구조로 메타데이터와 기초 데이터나 명령어를 저장하는 것을 배제한다는 것이다. 메타데이터는 관련되는 기초 데이터나 명령어 없이 최소한의 값으로 되어 있기 때문에, 메타데이터를 저장하기 위해 개별의 캐시 계층을 형성하거나 메타데이터를 저장하기 위해 "숨은 비트"나 그 외 형태의 보조 저장소를 이용하는 것이 필요하게 된다.
따라서, 시스템의 비용을 추가하지 않으면서 유용한 데이터의 저장 능력을 제공하는 수단이 필요하다. 데이터와 프로세서 메타데이터가 "숨은 비트"로 구성된 이런 보조 데이터 저장소를 이용하지 않고 단일화된 캐시 계층에 공존하도록 하는 방법이 또한 필요하다. 또한 이런 메타데이터 저장소를 프로세서 동작 동안 성 능과 리소스 조건에 동적으로 맞출 수 있는 것이 바람직하다. 본 발명은 이들 및 그 외 문제들의 해결책을 제공하며, 이전의 해결책에 비해 장점을 제공한다.
본 발명은 프로세서 디자인에 상당한 비용을 부과하지 않고, 경험 정보를 명령어 트레이스와 브랜치 예측 정보로서 포함하는 비임계적 정보를 저장하기 위한 방법 및 장치를 제공한다. 본 발명의 바람직한 실시예에 따르면, 순간 데이터가 프로세서-로컬 캐시 계층 (다른 실시예에서는, 다수의 프로세서 사이에 공유되는 캐시 계층이 이용됨)에 저장된다. 이는 프로세서-로컬 캐시 계층 내에서 동작할 때, 요청되거나 공급되는 주소에 부가의 제어 비트를 제공하여 성취된다. 일 실시예에서, 이 부가의 제어 비트는 특정 캐시 액세스가 특정 캐시 라인에서 히트나 미스였는지를 판정하기 위해 이용되는 태그의 일부를 형성한다. 다른 실시예에서, 이 비트는 캐시 룩업을 실행할 때 이용하는 등가의 등급을 판정하는 데에 이용된다.
제어 비트 세트를 갖는 주소 (즉, "1"로)는 여기에서 "순간 저장소 주소"로 언급된다. 순간 저장소 주소는 다시 외부 주요 메모리에 기록되지 않고, 최하위 캐시에서 추출될 때 폐기된다. 바람직하게, 순간 저장소 주소는 이들이 소프트웨어에 액세스 가능하지 않거나 적당한 허가를 갖는 감시자 또는 관리자 레벨 소프트웨어에만 액세스 가능하다는 점에서 "특권"을 갖는다.
바람직한 실시예에서, 다수의 관리 함수/명령어는 관리자/감시자 소프트웨어가 순간 캐시 저장소의 동작을 관리 및/또는 수정하도록 하기 위해 제공된다. 이 들 함수는 순간 저장소 주소 공간의 크기를 정의하고, 하나 이상의 순간 저장소 엔트리/캐시 라인을 무효화하고, 복수의 애플리케이션 프로그램 사이에서 순간 저장소 주소 공간을 분할/할당하고, 순간 저장소 공간에/으로부터 직접 판독 또는 기록하는 것을 포함한다.
상술한 것은 요약한 것으로, 상세 사항을 간략하게 일반화하였으며 생략한 부분도 있다. 따라서, 당업자라면 이 요약은 오직 설명을 위한 것이며 전혀 제한하려고 하는 것이 아님을 이해할 것이다. 청구범위에 의해서만 정의되는 본 발명의 다른 형태, 발명의 특성 및 장점들은 이하 기재되는 비제한적인 상세 설명에서 명백하게 될 것이다.
이하는 본 발명의 예시의 상세 설명을 제공하고자 하는 것으로 본 발명을 제한하는 것으로 받아들여서는 안된다. 상세 설명 이후의 청구범위에서 정의되는 본 발명의 영역 내에 다수의 변형들이 포함된다.
도 1은 본 발명의 바람직한 실시예에서 이용될 수 있는 바와 같이, 다중 레벨 캐시 아키텍처를 나타내는 도면이다. 중앙 처리 유닛(CPU; 100)은 메인 프로세스 데이터 경로(101), 레벨 1 (L1) 명령어 캐시(102), 및 레벨 1 (L1) 데이터 캐시(104)를 포함한다. L1 캐시(102 및 104)는 명령어가 판독되고 (명령어 캐시(102)) 데이터가 판독 및 기록되는 (데이터 캐시(104)) 현재 사용중인 메모리 위치를 신속하게 액세스하는 프로세서-로컬 카피를 제공하여 CPU(100)의 메모리 액세스 성능을 향상시킨다. 도 1에서 나타낸 바와 같이, 개별의 L1 명령어와 데이터 캐시를 이용하게 되면, 본 뉴만 (Von Neumann) 스타일 (여기서는 명령어와 데이터가 공통 주소 공간에 놓임)의 아키텍처의 연산 유연성을 보존하면서 하버드 스타일의 컴퓨터 아키텍처 (즉, 여러 메모리 시스템으로부터 명령어와 데이터를 동시에 판독하는 능력)의 성능 이점이 가능하게 된다. CPU(100)는 또한 레벨 2 (L2) 캐시(106) (L1 캐시(102 및 104) 보다 크거나 약간 작음)를 포함하고, 이는 L1 캐시(102 및 104)에의 신속한 카피를 위해 신속하게 액세스된 정보의 카피를 제공한다. CPU 외부 (L3) 캐시(108)는 L2 캐시(106)와 주메모리(110) 사이에 개재되어 L2 캐시(106)와 유사한 중간자 캐시 함수를 행한다.
이런 다중 레벨 캐시 구성의 각 레벨은 통상, 연속되는 블럭의 메모리 주소로 이루어지는 "캐시 라인"으로 나뉘는 제한된 수의 신속 액세스 임시 저장소 위치를 제공한다. 모든 이용 가능한 캐시 라인이 특정 캐시 레벨에 위치되고 이 캐시 레벨에 현재 저장되지 않은 캐시 라인으로부터 메모리 주소를 액세스하는 것이 필요할 때, 적어도 하나의 캐시 라인은 새로운 캐시 라인을 위한 공간을 만들도록 이 캐시 레벨에서 추출되어야 한다. 이 경우, 이 추출된 캐시 레벨은 캐시 라인이 최저 캐시 레벨로부터 추출되고 있다면, 통상 다음 최저 캐시 레벨 (예를 들어, 레벨 2에서 레벨 3으로) 또는 주메모리로 "다시 기록"된다. 이것을 "다시 기록" 캐시로 불린다. 다른 종류의 캐시, "전체 기록" 캐시에서는, 캐리 라인에의 각 기록이 모든 캐시 레벨에 전파되므로, 캐시 라인이 캐시로부터 추출될 때 다시 기록 동작을 행할 필요가 없다.
몇 변형의 도 2-5에서 나타낸 바와 같이, 본 발명의 바람직한 실시예는 여러 종류의 비임계적 프로세서 데이터를 기록하기 위한 순간 저장소 공간을 제공하도록 계층적 캐시를 이용한다. 캐시 내의 특정 수의 캐시 라인은 순간 저장소에 이용될 수 있다. 순간 저장소 캐시 라인은 주메모리에 다시 기록되거나 전체 기록되는 것이 아니고, 최저위 캐시로부터 추출되고 있을 때 간단히 삭제된다 (다르게, 순간 저장소 캐시 라인은 최저위 캐시에 이르게 하기 보다는 고위 캐시로부터 추출될 때 삭제될 수 있다). 부가의 주소 비트는 도 6에서 나타낸 바와 같이, 캐시의 임의의 캐시 라인이 순간 저장소에 이용되고 있는지의 여부를 나타내는 데에 이용된다.
여기에 기재되는 순간 캐시 저장소의 하나의 특정 유용예로는 프로세서에서의 명령어의 트레이스 계열 스케줄링 분야이다. 트레이스 계열의 스케줄링에서는, 프로그램 내의 특정 그룹의 기본 블럭 (예를 들어, 루프를 구성하는 기본 블럭의 그룹 등)이 프로세서에 의해 식별되며, 이들 블럭의 실행에 대응하는 트레이스 정보가 나중의 이용을 위해 저장된다. 이들 그룹을 "트레이스 그룹"으로 부른다. 트레이스 그룹에 대응하는 코드가 이전에 실행될 때, 프로세서는 브랜치 예측을 실행하고 코드의 전체 성능을 향상시키도록 저장된 트레이스 정보를 이용할 수 있다.
도 2는 명령어 트레이스 정보의 효율적인 저장과 검색을 가능하게 하도록 트레이스 캐시가 순간 저장소와 관련하여 이용되는 계층적 캐시 시스템의 도면이다. CPU(200)는 프로세서 데이터 경로(202), 세개의 제1 레벨 캐시, 트레이스 캐시(204), 명령어 캐시(206) 및 데이터 캐시(208)을 포함한다. 트레이스 캐시(204)는 나중의 트레이스 계열의 스케줄링에 이용할 명령어 트레이스 정보를 저장하는 데에 이용된다. 제2 및 후속 레벨의 캐시(212)의 특정 수의 캐시 라인이 순간 저 장소(211)에 이용하도록 할당된다. 순간 저장소(211)는 동적 크기인데, 즉 순간 저장소(211)의 크기는 CPU(200)가 코드를 실행하고 있는 동안 확장되거나 축소될 수 있다.
본 발명의 바람직한 실시예에서, 특수 명령어는 프로그램 (예를 들어, 운영 시스템 등)이 필요에 따라 순간 저장소(211)의 크기를 동적으로 설정할 수 있게 제공된다. 예를 들어, 특정한 프로그램 (예를 들어, 데이터베이스 엔진)은 연산 관점에서 비교적 간단하지만, 다량의 메모리를 액세스할 필요가 있는데, 이런 프로그램은 캐시의 나머지에 비해 더 작은 순간 저장소 공간을 갖는 이점을 갖는다. 한편, 신호 처리 소프트웨어나 수치 연산을 실행하기 위한 소프트웨어는 많은 메모리 공간을 필요로 하지 않지만, 더 큰 순간 저장소 공간을 갖는 이점을 갖는 중첩 루프나 그 외 복잡한 제어 구조를 이용할 수 있다. 따라서, 순간 공간을 동적으로 다시 크기 정하는 능력은 본 발명의 바람직한 실시예의 아주 바람직한 특성이다.
일반적으로 트레이스 정보가 관련되는 프로그램 코드의 메모리 주소에 트레이스 정보를 상관시키는 것이 바람직하기 때문에, 트레이스 캐시(204)의 엔트리는 명령어 캐시(206)에 명령어의 주소와 일치하는 주소를 보통 갖게 되다. 이것은 개별의 트레이스 및 명령어 캐시가 이용되는 제1 캐시 레벨에서는 문제가 되지 않지만, 트레이스 캐시(204), 명령어 캐시(206) 및 데이터 캐시(208)로부터의 엔트리가 합체되는 제2 및 더 낮은 캐시 레벨(212)에서 문제가 될 수 있다. 트레이스 정보가 명령어 캐시(206)로부터의 명령어와 동일한 캐시 레벨(212)의 대응 캐시 라인을 가지고 형성되거나 이용되면, 트레이스 정보는 캐시 레벨(212)의 명령어와 충돌하 게 되므로, 두 정보가 캐시 레벨(212)에 동시에 보유되는 것을 방지할 수 있다. 트레이스 정보는 대응하는 명령어가 액세스되는 경우에만 유용하기 때문에, 명령어와 이들의 트레이스 정보는 더 낮은 캐시 레벨(212)의 동일한 캐시 라인에 매핑되는 경우 문제가 된다. 이런 경우를 수리하기 위해, 해쉬 함수(210)가 대응하는 정보를 트레이스하는 명령어로 하위 캐시 레벨(212)의 여러 주소에 트레이스 정보의 임의의 캐시 라인을 매핑하기 위해 트레이스 캐시(204)의 엔트리의 주소에 적용된다. 이것은 트레이스 캐시(204)와 명령어 캐시(206)로부터의 엔트리가 하위 캐시 레벨(212)에 기록될 때, 대응하는 엔트리가 하위 캐시 레벨(212)의 다른 (비충돌) 엔트리를 점유하게 되는 것을 보장하면서, 트레이스 캐시(204)의 엔트리가 이들이 속하는 명령어 캐시(206)의 명령어와 동일한 주소를 갖도록 한다.
하위 캐시 레벨에서의 충돌을 제거하기 위해 이용될 수 있는 다른 더욱 일반적인 전략은 도 3에서와 같이 트레이스 캐시 디렉토리(310)를 이용하는 것이다. 도 3에서 나타낸 실시예에서, 트레이스 캐시 디렉토리(310)는 트레이스 캐시(304)의 캐시 라인의 주소를 하위 캐시 레벨(312)의 순간 저장소(311)의 대응 엔트리에 매핑하는 테이블 또는 그 외 데이터 구조이다. 이런 식으로, 명령어 캐시(306)로부터의 명령어가 하위 캐시 레벨(312)의 대응 엔트리에 바로 매핑되는 한편, 트레이스 캐시 엔트리(304)는 하위 캐시 레벨(312)의 비충돌 캐시 라인에 트레이스 캐시 디렉토리(310)에 의해 제공된 부가 레벨의 인디렉션 (indirection)으로 매핑된다.
도 4는 이전 도면의 기본적 구성의 변형을 도시한 것이다. 특히, 도 4는 마 이크로아키텍쳐 메타 정보 캐시(404)에 의해 나타낸 바와 같이, 임의의 지령의 실행동안 또는 임의의 시간에 CPU(400)의 마이크로아키텍처의 상태에 관한 정보와 같이, 트레이스 정보 이외의 일반 형태의 정보를 저장하는 데에 이용될 수 있다. 도 4는 또한 순간 저장소가 온칩 캐시 메모리에 제한될 필요가 없음을 나타낸다. 도 4는 순간 저장소 엔트리(411) 뿐만 아니라 외부 레벨 3 (L3) 캐시(414)를 함유하는 프로세서 내부 레벨 2 (L2) 캐시(412) 및 대응하는 순간 저장소 엔트리(413)를 함유하는 외부 레벨 3 (L3) 캐시(414)를 나타낸다.
또한, 도 4에서 특정하게 도시하지는 않았지만, 당업자라면 캐시 라인 충돌을 피하기 위해 도 2-3에서 이용되는 유형의 캐시 주소 인디렉션이 또한 도 4에 따른 실시예에서도 이용될 수 있다는 것을 이해할 것이다. 구체적으로, 주소 해쉬 함수 (예를 들어, 주소 해쉬(210)) 또는 디렉토리 (예를 들어, 트레이스 캐시 디렉토리(310)) 또는 그 외 적합한 주소 인디렉션 기술이 도 4에서 도시된 것고 같은 캐시 구조물에서 이용될 수 있다.
도 5는 이전의 도면에서 도시한 기본 순간 저장소 개념의 또 다른 변형을 나타낸다. 도 5는 본 발명에 따른 순간 저장소가 이용되는 공유 메모리/공유 캐시 멀티프로세서 시스템 아키텍처를 나타낸다. 도 5에서, 두 개의 CPU(500 및 501)가 이용되며, 이들 각각은 각 L2 캐시에의 순간 저장소를 보유한다 (L2 캐시(512)에 순간 저장소(511) 및 L2 캐시(515)에 순간 저장소(513)). CPU(500 및 501)은 L3 캐시(518)를 공유하고, 두 프로세서가 순간 메타 정보를 저장하기 위해 이용된다 (순간 저장소(517)). CPU(500 및 501)로부터의 순간 정보 캐시 엔트리는 L1 캐시 엔트리가 하나의 프로세서에서 합체되는 것과 동일한 식으로 L3 캐시(515)에서 합체된다.
도 7에서 나타낸 바와 같이, 프로세서 간의 충돌 순간 저장소 주소는 L3 캐시(518)에 이용되는 캐시 주소의 프로세서 ID 비트를 이용하여 방지될 수 있다. 다르게, 단일 프로세서 컨텍스트의 도 2 및 도 3에서 나타낸 바와 같이, 다른 유형의 주소 충돌 방지가 프로세서 ID 비트 대신에 또는 이에 부가하여 이용될 수 있다.
당업자라면 도 5에 나타낸 구성이 임의수의 개별 프로세서를 갖는 멀티프로세서 시스템으로 일반화된 것이며 도 5에 제공된 두 프로세서의 예는 제한하고자 하는 것이 아님을 이해할 것이다.
도 6 및 도 7은 본 발명의 바람직한 실시예에서 메모리 주소가 캐시 라인의 주소로 매핑되는 방식을 나타낸다. 도 6은 도 2-4에서 기재된 바람직한 실시예의 컨텍스트에서 이용되는 바와 같이, 단일 프로세서의 경우를 나타내는 한편, 도 7은 도 5에 따른 실시예의 컨텍스트에서 이용되는 바와 같이, 멀티프로세서의 경우를 나타낸다.
도 6은 본 발명의 바람직한 실시예에 따라 캐시의 메모리 위치 주소에 대한 포맷(600)을 도시한다. 이 바람직한 실시예에서, 각 주소는 45비트를 포함한다. 제1 비트인, 제어 비트(602)는 주소가 일반 저장소나 순간 저장소인지를 나타낸다 (예를 들어, 일반 저장소이면 "0", 순간 저장소이면 "1"). 남은 44 비트는 물리적 주소(604)를 나타낸다. 이런 식으로 제어 비트(602)를 이용하여, 주소의 44 비트 부분에 의해 일반 물리적 주소에 상관되는 순간 저장소 주소를 가질 수 있다. 이것은 특정 명령어가나 데이터 메모리 위치에 대한 통계치를 수집할 때 유용하다.
캐시 내에 캐시 라인을 인덱싱할 목적으로 주소를 해석하기 위해, 제어 비트(602) 및 물리적 주소(604)의 처음 몇 비트가 다음 몇 비트의 주소(600) (등가의 세트 비트(608))와 함께, 특정 캐시 라인을 고유 식별하는 태그(606)로 이용된다. 이 캐시 라인 내의 특정 메모리 위치의 오프세트는 주소의 최소 유효 비트(610)에 의해 제공된다. 통상의 동작시, 등가 세트 비트(608)는 임의의 캐시 라인을 제한된 수의 이용 가능 캐시 라인에 매핑하기 위한 인덱스로 이용되는 한편, 태그(606)는 캐시 저장된 캐시 라인이 주메모리의 대응 주소 범위에 상관될 수 있게 한다.
다른 실시예에서, 제어 비트(602)는 등가 세트 비트(608)를 형성하는 데에 이용되고/되거나 여러 필드 (제어 비트, 등가 세트 비트, 태그 비트 등)의 상대적인 순서는 다를 수 있다. 또 다른 실시예에서, 인덱스 함수나 해쉬 함수는 태그 비트 및/또는 등가 세트 비트를 캐시의 실제 물리적 주소에 매핑하는 데에 이용되고; 이는 캐시의 동일한 위치로 매핑되는 두 캐시 라인이 다른 캐시 위치에 동시에 저장될 수 있게 하는 데에 이용될 수 있다. 예를 들어, 순간 저장소 캐시 라인은 동일한 44 비트의 물리적 주소에 의해 다른 일반 저장소 캐시 라인에 상관되는 경우, 인덱스 함수나 해쉬 함수가 두 캐시 라인을 캐시의 여러 위치에 매핑하는 데에 이용될 수 있으므로, 둘 다 하나의 캐시 라인을 다른 것과 교환해야만 하는 성능상의 패널티를 초래하지 않고 동시에 또는 신속하게 액세스될 수가 있게 된다. 당업자라면 특정 포맷의 여러 변형 및 주소의 길이가 본 발명의 정신과 영역에서 벗어 나지 않고 존재할 수 있다는 것을 이해할 것이다.
바람직한 실시예에서, 순간 저장소 주소는 이들이 소프트웨어에 액세스 가능하지 않거나 적당한 허가를 갖는 감시 또는 관리자 레벨의 소프트웨어에만 액세스가능하다는 점에서 "특권"을 갖는다. 이 바람직한 실시예에서, 다수의 함수는 특수 순간 저장 관련 함수의 발행을 통해서나 이를 위한 특수 목적의 레지스터에 의해서, 관리자/감시자 소프트웨어가 순간 캐시 저장소의 동작을 관리 및/또는 수정하도록 제공된다. 이들 함수는 순간 저장소 주소 공간의 크기를 정의하고, 하나 이상의 순간 저장소 엔트리/캐시 라인을 무효화하고, 복수의 애플리케이션 프로그램 중에서 순간 저장소 주소 공간을 분할/할당하고 (예를 들어, 공지된 바와 같이 메모리 보호 기능을 이용하여), 순간 저장소 공간에 판독하거나 여기로부터 기록하는 것을 포함한다.
캐시 메모리 시스템이 복수의 프로세스 사이에 공유될 때 도 7에 나타낸 주소 포맷(700) 등의 다른 주소 포맷이 이용될 수 있다. 제어 비트가 명확한 주소 포맷(700)에 따르면 (예를 들어, 제어 비트(702)), 주소는 일반 메모리 저장소에 대응하고 나머지 44 비트(704)는 물리적 주소를 나타낸다. 그러나, 제어 비트가 설정되면 (예를 들어, 제어 비트(706 및 712)), 프로세서 ID 비트 필드 (도 7의 비트 필드(708 및 714))는 이 순간 저장소 주소와 관련되는 특정 프로세서를 나타내고, 나머지 비트 (도 7의 비트 필드(710 및 716))는 프로세서 특정 순간 저장소 주소를 저장하는 데에 이용된다. 도 7에 도시된 예에서, 2비트 프로세서 ID 필드 (최대 4개의 프로세서에 가능)가 이용되지만, 당업자라면 다른 수의 비트도 다른 개수의 프로세서를 갖는 시스템에도 이용될 수 있다는 것이 이해될 것이다.
도 8은 본 발명의 바람직한 실시예에 따라 순간 저장소 캐시 라인에 기록하는 프로세스를 나타내는 플로우챠트이다. 도 8은 본 발명의 바람직한 실시예에 따른 종래의 캐시 저장소와 순간 저장소의 동작 간의 차이를 나타낸다. 또한, 당업자라면 기록만이 도 8에 명시하여 도시되었지만, 대응하는 기록 동작이 바로 이어진다는 것을 다음의 설명으로부터 이해할 것이다. 또한 도 8의 플로우챠트가 2 레벨 캐시를 가장했지만, 당업자라면 도 8에 도시한 일반 구성은 어느 레벨 수를 갖는 캐시에나 적용될 수 있다는 것을 이해할 것이다.
다시 도 8에 나타낸 특정 동작을 고려하면, 순간 저장소의 캐시 라인에의 기록 동작은 블럭(800)에서 시작된다. 캐시 라인이 캐시의 상위 레벨에 존재하면 (블럭 802: 예), 데이터는 캐시의 기존의 캐시 라인에 바로 기록되며 (블럭 804) 프로세서는 종료된다.
그러나, 캐시 라인이 캐시에 존재하지 않는 경우 (블럭 802: 아니오), 최대수의 순간 저장소 캐시 라인이 캐시에 할당되었는지에 대한 판정이 행해진다 (블럭 806) (다른 실시예에서, 이 판정은 동적으로 L2 캐시 리소스에 대해 순간 저장소 액세스가 경합하게 하도록 생략될 수 있다). 아니면 (블럭 806: 아니오), 상위 캐시의 적당한 위치가 이미 찼는지에 대한 판정이 행해진다 (블럭 810). 아니오이면 (블럭 810: 아니오), 새로운 순간 저장소 캐리 라인이 형성되고 (블럭 808) 이 새로운 캐시 라인에 데이터가 기록된다 (블럭 804).
그러나, 상위 캐시의 적당한 위치가 이미 찬 경우 (블럭 810: 예), 상위 캐 시로부터의 적당한 캐시 라인이 하위 캐시로 추출하기 위해 선택된다 (블럭 812). 하위 레벨 캐시가 찬 경우 (블럭 814: 예), 하위 레벨의 캐시로부터의 캐시 라인이 선택되어 상위 캐시로부터 추출된 캐시 라인의 공간을 만들기 위해 폐기된다 (블럭 813). 상위 캐시로부터 추출된 캐시 라인은 하위 레벨 캐시에 다시 기록된다 (블럭 816). 새로운 순간 저장소 캐시 라인이 상위 캐시에 형성되고 (블럭 808) 새로운 데이터가 이 새로운 캐시 라인에 기록된다 (블럭 804).
도 9는 트레이스 계열의 스케줄링에 이용할 트레이스 그룹 정보를 저장하기 위해 순간 저장소를 이용하는 프로세스를 나타내는 플로우챠트이다. 이 실시예에서, 트레이스 그룹 정보에 이용되는 순간 저장소는 트레이스 그룹 자체의 시작과 동일한 44비트의 물리적 주소를 갖는 순간 저장소 위치나 필요하거나 적당한 경우 다른 위치에도 트레이스 그룹 정보가 저장되게 하도록 디렉토리가 증대된다. 다시 도 9를 참조하면, 프로세스는 트레이스 그룹 정보의 순간 저장소의 시작 주소로 트레이스 그룹의 44비트 주소를 이용하여 특정 트레이스 그룹에 대응하는 정보를 액세스하려는 시도를 시작한다 (블럭 900). 엔트리가 이 위치에서 발견되면 (블럭 902: 예), 프로세서가 이 그룹에서 나올 때 까지 캐시된 트레이스 그룹 정보를 이용하여 실행은 계속된다 (블럭 904).
엔트리가 그룹의 시작 주소를 이용하여 발견되지 않는 경우 (블럭 902: 아니오), 디렉토리는 트레이스 그룹 캐시 정보가 다른 주소에 저장되었는지를 알기 위해 검색된다 (블럭 908). 그렇다면 (블럭 910: 예), 정보를 순간 저장소의 적당한 위치로부터 가져온다 (블럭 912). 가져온 정보의 일체성은 정보가 실재로 캐시로 부터 추출되었는지 이에 따라 이용하기 적당하지 않은지를 판정하기 위해 체크된다 (블럭 914). 정보가 캐시로부터 추출되지 않으면 (블럭 914: 아니오), 캐시된 트레이스 그룹 정보를 이용한 실행은 프로세스가 이 그룹을 나올 때 까지 계속된다 (블럭 904).
가져온 정보가 캐시로부터 이미 추출되었거나 (블럭 914: 예), 엔트리가 디렉토리에서 발견되지 않으면 (블럭 910: 아니오), 새로운 명령어 트레이스 그룹이 형성되고 이에 대응하는 명령어가 실행된다 (블럭 916). 이전의 엔트리가 새로운 그룹 정보의 공간을 만들도록 추출되어야만 한다면 (블럭 918: 예), 추출된 명령어 트레이스 그룹이 이차 메모리 구조에 저장되고 이 추출된 그룹 정보의 디렉토리 엔트리가 형성된다 (블럭 920). 새로운 명령어 트레이스 그룹은 순간 저장소 내의 트레이스 그룹 캐시에 저장된다 (블럭 922).
현재 트레이스 그룹이 실행을 종료하면, 다음 명령어 트레이스 그룹의 시작 주소가 판정된다 (블럭 906). 프로세스는 다음 트레이스 그룹을 위해 블럭(900)으로 다시 돌아간다.
당업자라면 여기 기재된 본 발명에 대한 다수의 다른 변형들이 본 발명의 정신 및 영역에서 벗어나지 않고 실행될 수 있다는 것을 이해할 것이다. 예를 들어, 하나의 가능한 실시예에서, 순간 저장소 주소는 순간 저장소 주소에의 매핑을 나타내는 전용 페이지 테이블 엔트리 (예를 들어, 페이지된 가상 메모리 시스템에서)를 이용하여 프로그램이나 프로그램들의 주소 공간으로 매핑될 수 있다. 운영 시스템과 같은 특권의 프로그램이 순간 프로그램 데이터를 저장 및/또는 검색하도록 매핑 된 주소를 이용할 수 있다. 다르게, 유저 프로그램이 이런 식으로 순간 프로그램을 저장 및 검색하는 것이 허가될 수 있다.
다른 가능한 실시예에서, 추출된 (이에 따라 이상 있는) 순간 주소에 대한 요청은 디폴트 값 (또는 "널" 값)을 제공하는 것으로 만족된다. 또 다른 실시예에서, 이상 있는 요청은 몇 종류의 통지 이벤트를 트리거하여 나타내며, 이는 프로세서에 레지스터나 조건부 플랙 값을 설정하거나 프로그램 상태의 변경을 행하는 것으로 나타낼 수 있다. 다르게, 통지 이벤트는 제기된 예외나 차단의 형태로 나오게 된다. 당업자라면, 다른 형태의 이상 요청의 통지가 제한 없이, 또한 본 발명의 정신과 영역에서 벗어나지 않고 본 발명의 실재 실시예에서 실행될 수 있다는 것이 이해될 것이다.
본 발명은 예를 들어, 컴퓨터의 랜덤 액세스 메모리에 상주하는 코드 모듈에 명령어의 세트 (마이크로코드) 또는 그 외 기능 기술적 자료의 형태로 가능하게 실현될 수 있다. 컴퓨터가 필요로 할 때 까지, 명령어의 세트는 다른 컴퓨터 메모리, 예를 들어, 하드 디스크 드라이브 (CD ROM에 이용됨) 또는 광 디스크나 플로피 디스크 (플로피 디스크 드라이브에 이용됨) 등의 착탈 가능 메모리에 저장될 수 있거나, 인터넷이나 그 외 컴퓨터 네트워크를 통해 다운로드될 수 있다. 따라서, 본 발명은 컴퓨터에 이용할 컴퓨터 프로그램 제품으로 구현될 수 있다. 부가하여, 여러 기재된 방법들은 소프트웨어에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터로 편리하게 구현되지만, 당업자라면 또한 이 방법들이 하드웨어, 펌웨어 또는 필요한 방법의 단계들을 실행하도록 구성된 더욱 특수화된 장치로 실행될 수 있 다는 것이 이해될 것이다. 기능 기술적 자료들은 제한하고자 하는 것은 아니지만, 컴퓨터 프로그램, 명령어, 규칙, 사실, 연산 함수의 정의, 오브젝트 및 데이터 구조를 포함한다.
본 발명의 특정 실시예가 도시 및 기재되었지만, 당업자에게는 여기에 개시된 것에 기초하여, 본 발명과 이의 광범위한 형태에서 벗어나지 않고 변경 및 수정을 행할 수 있다는 것은 명백하다. 따라서, 첨부한 청구범위는 본 발명의 진정한 정신과 영역 내에 있는 모든 이런 변형과 수정을 영역 내에 포괄하는 것이다. 더욱, 본 발명은 첨부한 청구범위에 의해서만 정의된다는 것이 이해되어야 한다. 당업자라면, 특정 수의 도입된 청구 요소가 지정되지만, 이런 지정은 청구범위에서 명시적으로 기술된 것이고, 이런 기술 없이 어떤 제한도 존재하지 않는다는 것이 이해될 것이다.
본발명은 시스템의 비용을 추가하지 않으면서 유용한 데이터의 저장 능력을 제공하고, 데이터와 프로세서 메타데이터가 "숨은 비트"로 구성된 보조 데이터 저장소를 이용하지 않고 단일화된 캐시 계층에 공존하도록 하며, 이런 메타데이터 저장소를 프로세서 동작 동안 성능과 리소스 조건에 동적으로 맞출 수 있는 개선된 효과가 있다.

Claims (21)

  1. 컴퓨터 구현 방법에 있어서:
    정보의 캐시 라인이 캐시로부터 제거되어야 하는지 판정하는 단계와,
    상기 정보의 캐시 라인을 상기 캐시내의 위치에 매핑시키기 위하여 상기 정보의 캐시 라인과 관련된 주소에 인덱스 함수를 적용하는 단계와,
    상기 정보의 캐시 라인이 순간 저장소로 지정되었는지를 판정하는 단계와,
    상기 정보의 캐시 라인이 순간 저장소로 지정되지 않은 경우에만 상기 정보의 캐시 라인을 주메모리에 보유하는 단계
    를 포함하며,
    상기 정보의 캐시 라인은,
    상기 정보의 캐시 라인과 관련된 주소에 포함되는 적어도 하나의 제어 비트를 통해 순간 저장소로 지정되는, 방법.
  2. 제1항에 있어서,
    상기 정보의 캐시 라인이 순간 저장소로 지정되었으며 상기 정보의 캐시 라인이 상기 캐시로부터 제거되어야 한다는 판정에 응답하여 상기 정보의 캐시 라인을 폐기하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 캐시는 상위 캐시이고,
    상기 정보의 캐시 라인이 순간 저장소로 지정되지 않았다고 판정된 경우에만 하위 캐시에 상기 정보의 캐시 라인을 보유하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    순간 저장소 캐시 라인들의 최대수를 설정하여, 순간 저장소 캐시 라인들이 상기 최대수를 초과하여 상기 캐시 내에 할당되지 않도록 하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    상기 정보의 캐시 라인은 명령어 트레이스 그룹 정보를 포함하는 방법.
  6. 삭제
  7. 삭제
  8. 프로세서에 있어서:
    정보의 캐시 라인이 캐시로부터 제거되어야 하는지 판정하는 제1 판정 로직과,
    상기 정보의 캐시 라인을 상기 캐시내의 위치에 매핑시키기 위하여 상기 정보의 캐시 라인과 관련된 주소에 인덱스 함수를 적용하는 매핑 로직과,
    상기 정보의 캐시 라인이 순간 저장소로 지정되었는지를 판정하는 제2 판정 로직과,
    상기 정보의 캐시 라인이 순간 저장소로 지정되지 않은 경우에만 상기 정보의 캐시 라인을 주메모리에 보유하는 조건부 보유 로직
    을 포함하며,
    상기 정보의 캐시 라인은,
    상기 정보의 캐시 라인과 관련된 주소에 포함되는 적어도 하나의 제어 비트를 통해 순간 저장소로 지정되는, 프로세서.
  9. 컴퓨터 판독가능 저장매체에 있어서,
    컴퓨터에 의해 실행될 때, 청구항 제1항 내지 제5항 중 어느 한 항에 따른 방법을 상기 컴퓨터가 실행하도록 하는 컴퓨터 프로그램을 포함하는, 컴퓨터 판독가능 저장매체.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020060113779A 2005-12-06 2006-11-17 순간 캐시 저장소 KR101013266B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/295,300 2005-12-06
US11/295,300 US7461209B2 (en) 2005-12-06 2005-12-06 Transient cache storage with discard function for disposable data

Publications (2)

Publication Number Publication Date
KR20070059957A KR20070059957A (ko) 2007-06-12
KR101013266B1 true KR101013266B1 (ko) 2011-02-09

Family

ID=38120036

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060113779A KR101013266B1 (ko) 2005-12-06 2006-11-17 순간 캐시 저장소

Country Status (3)

Country Link
US (1) US7461209B2 (ko)
KR (1) KR101013266B1 (ko)
CN (1) CN100444135C (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250305B2 (en) * 2008-03-19 2012-08-21 International Business Machines Corporation Method, system and computer program product for data buffers partitioned from a cache array
US20100257514A1 (en) * 2009-04-03 2010-10-07 Samsung Electronics Co., Ltd. Effective mapping of code sections to the same section of secondary memory to improve the security of computing systems
US20100257318A1 (en) * 2009-04-03 2010-10-07 Samsung Electronics Co., Ltd. Evicting code sections from secondary memory to improve the security of computing systems
KR101056460B1 (ko) * 2009-06-05 2011-08-11 세종대학교산학협력단 캐쉬 제어기 및 캐쉬 블록 교체 방법
US9104583B2 (en) 2010-06-24 2015-08-11 International Business Machines Corporation On demand allocation of cache buffer slots
US9323527B2 (en) 2010-10-15 2016-04-26 International Business Machines Corporation Performance of emerging applications in a virtualized environment using transient instruction streams
US8924632B2 (en) * 2011-09-16 2014-12-30 Apple Inc. Faster tree flattening for a system having non-volatile memory
US20130339666A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Special case register update without execution
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US20150293847A1 (en) * 2014-04-13 2015-10-15 Qualcomm Incorporated Method and apparatus for lowering bandwidth and power in a cache using read with invalidate
WO2016009247A1 (en) * 2014-07-14 2016-01-21 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow cache that use different indexing schemes
US9430396B2 (en) 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US9690716B2 (en) * 2015-02-13 2017-06-27 Intel Corporation High performance persistent memory for region-centric consistent and atomic updates
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
CN106776698A (zh) * 2016-11-14 2017-05-31 北京北纬通信科技股份有限公司 基于优化缓存的票务信息刷新方法及系统
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
US11023162B2 (en) 2019-08-22 2021-06-01 Apple Inc. Cache memory with transient storage for cache lines

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414644A (en) 1981-04-03 1983-11-08 International Business Machines Corporation Method and apparatus for discarding data from a buffer after reading such data
US20020095553A1 (en) * 2001-01-16 2002-07-18 Abraham Mendelson Trace cache filtering
KR20030065584A (ko) * 2000-12-29 2003-08-06 인텔 코오퍼레이션 시스템 논리 장치내의 ram을 이용하여 컴퓨터시스템내의 데이터 스트리밍을 최적화하기 위한 방법 및장치
US6728854B2 (en) 2001-05-15 2004-04-27 Microsoft Corporation System and method for providing transaction management for a data storage space

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679141A (en) 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US5297269A (en) 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5592634A (en) 1994-05-16 1997-01-07 Motorola Inc. Zero-cycle multi-state branch cache prediction data processing system and method thereof
US5675768A (en) 1996-02-01 1997-10-07 Unisys Corporation Store software instrumentation package instruction
CN1229953A (zh) * 1998-02-17 1999-09-29 国际商业机器公司 具有全局和局部标记状态的高速缓存相干性协议
US6327643B1 (en) * 1998-09-30 2001-12-04 International Business Machines Corp. System and method for cache line replacement
US6108764A (en) 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6973547B2 (en) 2001-11-16 2005-12-06 Sun Microsystems, Inc. Coherence message prediction mechanism and multiprocessing computer system employing the same
GB0227825D0 (en) * 2002-11-29 2003-01-08 Ibm High-performance lock management for flash copy in n-way shared storage systems
US6983347B2 (en) 2002-12-05 2006-01-03 International Business Machines Corporation Dynamically managing saved processor soft states

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414644A (en) 1981-04-03 1983-11-08 International Business Machines Corporation Method and apparatus for discarding data from a buffer after reading such data
KR20030065584A (ko) * 2000-12-29 2003-08-06 인텔 코오퍼레이션 시스템 논리 장치내의 ram을 이용하여 컴퓨터시스템내의 데이터 스트리밍을 최적화하기 위한 방법 및장치
US20020095553A1 (en) * 2001-01-16 2002-07-18 Abraham Mendelson Trace cache filtering
US6728854B2 (en) 2001-05-15 2004-04-27 Microsoft Corporation System and method for providing transaction management for a data storage space

Also Published As

Publication number Publication date
US7461209B2 (en) 2008-12-02
US20070130237A1 (en) 2007-06-07
KR20070059957A (ko) 2007-06-12
CN1979452A (zh) 2007-06-13
CN100444135C (zh) 2008-12-17

Similar Documents

Publication Publication Date Title
KR101013266B1 (ko) 순간 캐시 저장소
US7085911B2 (en) Resizable cache sensitive hash table
US6205519B1 (en) Cache management for a multi-threaded processor
US7085890B2 (en) Memory mapping to reduce cache conflicts in multiprocessor systems
US6782453B2 (en) Storing data in memory
JP7340326B2 (ja) メンテナンス動作の実行
US5761501A (en) Stacked skip list data structures
US7386679B2 (en) System, method and storage medium for memory management
WO1994003856A1 (en) Column-associative cache
JPH1196074A (ja) 交換アルゴリズム動的選択コンピュータシステム
JP2007004835A (ja) キャッシュメモリの運用方法
US20070027940A1 (en) Defragmenting one or more files based on an indicator
CN115168248B (zh) 支持simt架构的高速缓冲存储器及相应处理器
US10831673B2 (en) Memory address translation
JP2009015509A (ja) キャッシュメモリ装置
US10853262B2 (en) Memory address translation using stored key entries
CN109992535B (zh) 一种存储控制方法、装置和系统
CN109478163B (zh) 用于在高速缓存条目处标识存储器访问请求的待决的系统和方法
JPH0652054A (ja) 仮想記憶制御装置
US5410663A (en) Method and system for cache memory congruence class management in a data processing system
JP3020512B2 (ja) フアイルデータ管理方法
US7181587B1 (en) Mapping an arbitrary number of contiguous memory pages at an arbitrary alignment
US10866904B2 (en) Data storage for multiple data types
US11734011B1 (en) Context partitioning of branch prediction structures
JPH06139147A (ja) キャッシュメモリシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141215

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee