KR101013266B1 - 순간 캐시 저장소 - Google Patents
순간 캐시 저장소 Download PDFInfo
- 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
Links
- 230000001052 transient effect Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 2
- 230000014759 maintenance of location Effects 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 5
- 230000006399 behavior Effects 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative 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
도 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항에 있어서,상기 정보의 캐시 라인이 순간 저장소로 지정되었으며 상기 정보의 캐시 라인이 상기 캐시로부터 제거되어야 한다는 판정에 응답하여 상기 정보의 캐시 라인을 폐기하는 단계를 더 포함하는 방법.
- 제1항에 있어서,상기 캐시는 상위 캐시이고,상기 정보의 캐시 라인이 순간 저장소로 지정되지 않았다고 판정된 경우에만 하위 캐시에 상기 정보의 캐시 라인을 보유하는 단계를 더 포함하는 방법.
- 제1항에 있어서,순간 저장소 캐시 라인들의 최대수를 설정하여, 순간 저장소 캐시 라인들이 상기 최대수를 초과하여 상기 캐시 내에 할당되지 않도록 하는 단계를 더 포함하는 방법.
- 제1항에 있어서,상기 정보의 캐시 라인은 명령어 트레이스 그룹 정보를 포함하는 방법.
- 삭제
- 삭제
- 프로세서에 있어서:정보의 캐시 라인이 캐시로부터 제거되어야 하는지 판정하는 제1 판정 로직과,상기 정보의 캐시 라인을 상기 캐시내의 위치에 매핑시키기 위하여 상기 정보의 캐시 라인과 관련된 주소에 인덱스 함수를 적용하는 매핑 로직과,상기 정보의 캐시 라인이 순간 저장소로 지정되었는지를 판정하는 제2 판정 로직과,상기 정보의 캐시 라인이 순간 저장소로 지정되지 않은 경우에만 상기 정보의 캐시 라인을 주메모리에 보유하는 조건부 보유 로직을 포함하며,상기 정보의 캐시 라인은,상기 정보의 캐시 라인과 관련된 주소에 포함되는 적어도 하나의 제어 비트를 통해 순간 저장소로 지정되는, 프로세서.
- 컴퓨터 판독가능 저장매체에 있어서,컴퓨터에 의해 실행될 때, 청구항 제1항 내지 제5항 중 어느 한 항에 따른 방법을 상기 컴퓨터가 실행하도록 하는 컴퓨터 프로그램을 포함하는, 컴퓨터 판독가능 저장매체.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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)
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)
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)
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 |
-
2005
- 2005-12-06 US US11/295,300 patent/US7461209B2/en active Active
-
2006
- 2006-08-25 CN CNB2006101262153A patent/CN100444135C/zh active Active
- 2006-11-17 KR KR1020060113779A patent/KR101013266B1/ko not_active IP Right Cessation
Patent Citations (4)
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 |