KR20110050719A - 하드웨어에서 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간 - Google Patents

하드웨어에서 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간 Download PDF

Info

Publication number
KR20110050719A
KR20110050719A KR1020117007691A KR20117007691A KR20110050719A KR 20110050719 A KR20110050719 A KR 20110050719A KR 1020117007691 A KR1020117007691 A KR 1020117007691A KR 20117007691 A KR20117007691 A KR 20117007691A KR 20110050719 A KR20110050719 A KR 20110050719A
Authority
KR
South Korea
Prior art keywords
metadata
address
data
entry
metaphysical
Prior art date
Application number
KR1020117007691A
Other languages
English (en)
Other versions
KR101299317B1 (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 KR20110050719A publication Critical patent/KR20110050719A/ko
Application granted granted Critical
Publication of KR101299317B1 publication Critical patent/KR101299317B1/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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Abstract

손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간을 위한 방법 및 장치가 본 명세서에서 기술된다. 데이터 아이템의 데이터 어드레스를 참조하는 명시적 또는 암시적 메타데이터 액세스 동작에 직면한다. 하드웨어는 데이터 어드레스를 메타피지컬 확장을 포함한 메타데이터 어드레스로 수정한다. 메타피지컬 확장은 데이터 어드레스 공간 상의 하나 이상의 메타피지컬 어드레스 공간(들)과 오버레이한다. 메타피지컬 확장을 포함한 메타데이터 어드레스의 일부는 데이터 아이템을 유지하는 캐시 메모리의 태그 어레이를 검색하기 위해서 이용된다. 그 결과, 메타데이터 액세스 동작들만이 메타데이터 어드레스 확장에 기초하여 캐시의 메타데이터 엔트리들과 충돌한다. 그러나, 메타데이터가 캐시 내에 유지됨에 따라, 메타데이터는 잠재적으로 캐시 내의 공간에 대해 데이터와 경쟁한다.

Description

하드웨어에서 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간{METAPHYSICAL ADDRESS SPACE FOR HOLDING LOSSY METADATA IN HARDWARE}
본 발명은 프로세서 실행 분야에 관한 것으로, 보다 상세하게는 명령들의 그룹들의 실행에 관한 것이다.
관련 출원들에 대한 상호 참조
본 출원은, 본 출원과 함께 출원된 다음의 특허 출원들에 관련된다: 2008년 12월 30일자로 출원되었으며 발명의 명칭이 "Registering a User-Handler in Hardware for Transactional Memory Event Handling"인 Gad Sheaffer 등에 의한 미국 특허 출원 제12/346,518호(대리인 관리 번호 P29129); 2008년 12월 30일자로 출원되었으며 발명의 명칭이 "Memory Model for Hardware Attributes Within a Transactional Memory System"인 Gad Sheaffer 등에 의한 미국 특허 출원 제12/346,539호(대리인 관리 번호 P29131); 2009년 12월 30일자로 출원되었으며 발명의 명칭이 "Read and Write Monitoring Attributes in Transactional Memory(TM) Systems"인 Gad Sheaffer 등에 의한 미국 특허 출원 제12/346,530호(대리인 관리 번호 P29130); 2008년 12월 30일자로 출원되었으며 발명의 명칭이 "Extending Cache Coherency Protocols to Support Locally Buffered Data"인 Gad Sheaffer 등에 의한 미국 특허 출원 제12/346,543호(대리인 관리 번호 P29132).
반도체 프로세싱 및 로직 설계에서의 개선은 집적 회로 디바이스들 상에 존재할 수 있는 로직의 양에서의 증가를 허용하였다. 그 결과, 컴퓨터 시스템 구성들은 시스템에서의 단일 또는 멀티플 집적 회로들로부터 개별적인 집적 회로들 상에 존재하는 멀티플 코어들 및 멀티플 논리 프로세서들로 발전하였다. 통상적으로, 프로세서나 집적 회로는 단일 프로세서 다이를 포함하는데, 이 프로세서 다이는 임의의 개수의 코어들이나 논리 프로세서들을 포함할 수 있다.
집적 회로들 상의 코어들 및 논리 프로세서들의 개수의 증가는 보다 많은 소프트웨어 스레드들이 동시에 실행되는 것을 가능하게 한다. 그러나, 동시에 실행될 수 있는 소프트웨어 스레드들의 개수의 증가는 소프트웨어 스레드들 사이에서 공유되는 데이터의 동기화에 대한 문제점들을 생성하였다. 멀티플 코어 또는 멀티플 논리 프로세서 시스템들에서 공유 데이터에 액세스하는 것에 대한 하나의 공통적인 해결책은 공유 데이터에 대한 멀티플 액세스들에 걸친 상호 배제를 보증하기 위한 로크들의 이용을 포함한다. 그러나, 멀티플 소프트웨어 스레드들을 실행하는 능력의 증가는 잠재적으로 그릇된 경합 및 실행의 직렬화를 야기시킨다.
예를 들어, 공유 데이터를 유지하는 해시 테이블이 고려된다. 로크 시스템에 있어서, 프로그래머는 전체 해시 테이블을 로킹할 수 있는데, 이는 하나의 스레드가 전체 해시 테이블에 액세스하는 것을 허용한다. 그러나, 로크가 해제될 때까지, 다른 스레드들이 해시 테이블에서의 임의의 엔트리들에 액세스할 수 없기 때문에, 다른 스레드들의 성능 및 스루풋에는 잠재적으로 악영향을 미친다. 대안적으로, 해시 테이블에서의 각 엔트리가 로킹될 수 있다. 어느 쪽이든, 이러한 단순한 예시를 큰 스케일러블 프로그램으로 외삽한 이후에, 교착 상태 회피, 미립자(fine-grain) 동기화, 직렬화, 로크 경합의 복잡도는 프로그래머들에 대해 매우 성가신 부담이 된다는 것은 명백하다.
다른 최근의 데이터 동기화 기술은 트랜잭션 메모리(TM: transactional memory)의 사용을 포함한다. 종종, 트랜잭션 실행은 복수의 마이크로-연산들, 연산들 또는 명령들의 그루핑을 실행하는 것을 포함한다. 전술한 예에 있어서, 양쪽 스레드들은 해시 테이블 내에서 실행되며, 그들의 메모리 액세스들은 모니터링/추적된다. 양쪽 스레드들이 동일한 엔트리에 액세스/이 엔트리를 변경하는 경우, 충돌 레졸루션이 수행되어, 데이터 유효성을 보장할 수 있다. 하나의 타입의 트랜잭션 실행은 소프트웨어 트랜잭션 메모리(STM)를 포함하는데, 여기서 메모리 액세스들의 추적, 충돌 레졸루션, 중단 태스크들 및 다른 트랜잭션 태스크들은 종종 하드웨어의 지원 없이 소프트웨어에서 수행된다.
다른 타입의 트랜잭션 실행은 하드웨어 트랜잭션 메모리(HTM) 시스템을 포함하는데, 여기서 액세스 추적, 충돌 레졸루션 및 다른 트랜잭션 태스크들을 지원하기 위해서 하드웨어가 포함된다. 이전에, 실제 메모리 어레이들은, 판독들, 기록들 및 버퍼링을 추적하기 위한 하드웨어 속성들과 같은 정보를 유지하기 위해서 부가적인 비트들로 확장되었으며, 그 결과, 데이터는 프로세서로부터 메모리로 데이터와 함께 이동한다. 종종, 이 정보는 영속적인 것으로 언급되는데, 즉 캐시 축출(cache eviction) 시에 손실되지 않는데, 그 이유는 이 정보가 메모리 계층 전체에 걸쳐 데이터와 함께 이동하기 때문이다. 그러나, 이러한 영속성은 메모리 계층 시스템 전체에 걸쳐 보다 많은 오버헤드를 부과한다.
유사한 정보를 저장하는 이전의 다른 시도들은 데이터 어레이로부터 분리된 다른 구조들의 부가나 확장을 통해 구현되었는데, 이들은 종종 손실성 정보, 즉 메모리 계층 전체를 통해 데이터와 함께 이동하지 않기 때문에 축출 시에 손실될 정보를 유지하기 위한 것이다. 그러나, 이러한 데이터를 유지하기 위한 부가적인 구조들은 잠재적으로 고비용이 소요된다.
본 발명은 예시로서 예시되며, 첨부 도면에 의해 제한되는 것으로 의도되지는 않는다.
도 1은 멀티플 소프트웨어 스레드들을 동시에 실행할 수 있는 멀티플 프로세싱 엘리먼트들을 포함하는 프로세서의 일 실시예를 도시한다.
도 2a는 데이터에 대한 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간의 일 실시예를 도시한다.
도 2b는 데이터에 대한 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간의 다른 실시예를 도시한다.
도 3a는 메타피지컬 어드레스 공간에 대한 액세스들을 지원하기 위한 구조의 일 실시예를 도시한다.
도 3b는 메타피지컬 어드레스 공간에 대한 액세스들을 지원하기 위한 구조의 다른 실시예를 도시한다.
도 4는 데이터의 메타데이터로의 압축에 대한 일 실시예를 도시한다.
도 5는 데이터의 메타데이터로의 압축에 대한 다른 실시예를 도시한다.
도 6은 데이터에 대한 메타데이터에 액세스하는 방법의 흐름도를 도시한다.
다음의 설명에 있어서, 본 발명의 완전한 이해를 제공하기 위해서, 트랜잭션 실행을 위한 특정 하드웨어 구조들, 특정 타입들 및 구현들의 액세스 모니터들, 특정 캐시 구현들, 특정 타입들의 캐시 일관성 모델들, 특정 데이터 정밀도들 및 특정 타입들의 메모리 액세스들과 로케이션들 등의 예시와 같은 다수의 특정 상세들이 개시된다. 그러나, 이들 특징 상세들은 본 발명을 실시하기 위해서 채용될 필요는 없다는 것은 당업자에게 명백하다. 다른 경우에, 본 발명을 불필요하게 모호하게 하는 것을 회피하기 위해서, 소프트웨어에서의 트랜잭션들의 코딩, 트랜잭션들의 경계(demarcation), 특정의 그리고 대안적인 멀티-코어 및 멀티-스레드 프로세서 아키텍처들, 특정 컴파일러 메소드들/구현들 및 마이크로프로세서들의 특정 동작 상세들과 같은 잘 알려진 컴포넌트들이나 방법들은 기술되지 않았다.
본 명세서에 기술된 방법 및 장치는 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간을 지원하기 위한 것이다. 상세하게는, 메타데이터를 위한 메타피지컬 어드레스 공간은 주로 트랜잭션 메모리 시스템의 지원과 관련하여 설명된다. 그러나, 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간을 지원하는 방법 및 장치는 이와 같이 제한되지는 않는데, 그 이유는 이들이 연관된 데이터 아이템들에 대한 메타데이터를 유지하기 위해서 메모리 아키텍처로 구현될 수 있기 때문이다.
도 1을 참조하면, 멀티플 스레드들을 동시에 실행할 수 있는 프로세서의 일 실시예가 도시되어 있다. 프로세서(100)는 하드웨어 트랜잭션 실행을 위한 하드웨어 지원을 포함할 수 있다는 것이 주목된다. 하드웨어 트랜잭션 실행과 함께 또는 개별적으로, 프로세서(100)는 또한 소프트웨어 트랜잭션 메모리(STM)의 하드웨어 가속, STM의 개별 실행, 또는 하이브리드 트랜잭션 메모리(TM) 시스템과 같은 그 조합을 위한 하드웨어 지원을 제공할 수 있다. 프로세서(100)는, 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 또는 코드를 실행하기 위한 다른 디바이스와 같은 임의의 프로세서를 포함한다. 도시된 바와 같이, 프로세서(100)는 복수의 프로세싱 엘리먼트들을 포함한다.
하나의 실시예에 있어서, 프로세싱 엘리먼트는, 스레드 유닛, 프로세스 유닛, 콘텍스트, 논리 프로세서, 하드웨어 스레드, 코어 및/또는 임의의 다른 엘리먼트를 언급하는데, 이는 실행 상태 또는 아키텍처 상태와 같이 프로세서에 대한 상태를 유지할 수 있다. 다시 말하면, 하나의 실시예에 있어서, 프로세싱 엘리먼트는, 소프트웨어 스레드, 운영 체계, 애플리케이션 또는 다른 코드와 같은 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 언급한다. 통상적으로, 물리 프로세서는 집적 회로를 언급하는데, 이는 잠재적으로 코어들이나 하드웨어 스레드들과 같은 임의의 개수의 다른 프로세싱 엘리먼트들을 포함한다.
종종, 코어는 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치된 로직을 언급하는데, 여기서 각각의 독립적으로 유지된 아키텍처 상태는 적어도 몇몇 전용 실행 리소스들과 연관된다. 코어들에 대조적으로, 하드웨어 스레드는 통상적으로 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치된 임의의 로직을 언급하는데, 여기서 독립적으로 유지된 아키텍처 상태들은 실행 리소스들에 대한 액세스를 공유한다. 알 수 있는 바와 같이, 특정 리소스들이 공유되며, 다른 리소스들이 아키텍처 상태에 전용인 경우, 코어와 하드웨어 스레드의 명칭(nomenclature) 사이의 라인이 오버랩된다. 그러나, 종종 코어와 하드웨어 스레드는 개별적인 논리 프로세스들로서 운영 체계에 의해 고려되는데, 여기서 운영 체계는 각 논리 프로세서 상의 연산들을 개별적으로 스케줄링할 수 있다.
도 1에 도시된 바와 같이, 물리 프로세서(100)는 2개의 코어들, 즉 코어(101 및 102)를 포함하는데, 이들 코어는 상위 레벨 캐시(110)에 대한 액세스를 공유한다. 프로세서(100)가 비대칭 코어들, 즉 상이한 구성들, 펑션 유닛들 및/또는 논리를 갖는 코어들을 포함할 수 있지만, 대칭 코어들이 도시되어 있다. 그 결과, 코어(101)와 일치하는 것으로서 도시되는 코어(102)는 반복적인 설명을 회피하기 위해서 상세하게 설명되지 않는다. 부가적으로, 코어(101)는 2개의 하드웨어 스레드들(101a 및 101b)을 포함하는 한편, 코어(102)는 2개의 하드웨어 스레드들(102a 및 102b)을 포함한다. 그러므로, 운영 체계와 같은 소프트웨어 엔티티들은 잠재적으로 4개의 분리된 프로세서들, 즉 동시에 4개의 소프트웨어 스레드들을 실행할 수 있는 4개의 논리 프로세서들 또는 프로세싱 엘리먼트들로서 프로세서(100)를 고려한다.
여기서, 제1 스레드는 아키텍처 상태 레지스터들(101a)과 연관되고, 제2 스레드는 아키텍처 상태 레지스터들(101b)과 연관되고, 제3 스레드는 아키텍처 상태 레지스터들(102a)과 연관되며, 제4 스레드는 아키텍처 상태 레지스터들(102b)과 연관된다. 도시된 바와 같이, 아키텍처 상태 레지스터들(101a)은 아키텍처 상태 레지스터들(101b)에서 중복되어, 개별적인 아키텍처 상태들/콘텍스트들이 논리 프로세서(101a) 및 논리 프로세서(101b)에 대해 저장될 수 있다. 또한, 리네임 할당기 로직(130)에서의 리네이밍 로직 및 명령 포인터들과 같은 다른 보다 작은 리소스들도 스레드들(101a 및 101b)에 대해 중복될 수 있다. 리오더/폐기(reorder/retirement) 유닛(135)에서의 리오더 버퍼들, ILTB(120), 로드/저장 버퍼들 및 큐들과 같은 몇몇 리소스들은 파티셔닝을 통해 공유될 수 있다. 범용의 내부 레지스터들, 페이지-테이블 베이스 레지스터, 하위 레벨 데이터-캐시 및 데이터-TLB(115), 실행 유닛(들)(140) 및 비순차 유닛(135)의 부분들과 같은 다른 리소스들은 잠재적으로 완전히 공유된다.
종종, 프로세서(100)는, 완전히 공유되거나, 파티셔닝을 통해 공유되거나, 또는 프로세싱 엘리먼트들에 의해/에 대해 전용일 수 있는 다른 리소스들을 포함한다. 도 1에 있어서, 프로세서의 예시적인 펑션 유닛들/리소스들을 갖는 완전히 예시적인 프로세서의 일 실시예가 도시되어 있다. 프로세서는 임의의 이들 펑션 유닛들을 포함하거나 생략할 수 있을 뿐만 아니라, 도시되지 않은 임의의 다른 공지의 펑션 유닛들, 로직 또는 펌웨어를 포함할 수 있다는 것이 주목된다.
도시된 바와 같이, 프로세서(100)는, 시스템 메모리(175), 칩셋, 노스브리지 또는 다른 집적 회로와 같이 프로세서(100)의 외부의 디바이스들과 통신하기 위한 버스 인터페이스 모듈(105)을 포함한다. 메모리(175)는 시스템에서의 다른 디바이스들과 공유되거나 또는 프로세서(100)에 전용일 수 있다. 상위 레벨 또는 퍼더-아웃(further-out) 캐시(110)는 상위 레벨 캐시(110)로부터 최근에 인출된 엘리먼트들을 캐싱하기 위한 것이다. 상위 레벨 또는 퍼더-아웃은 실행 유닛(들)으로부터 더 진행하거나 증가하는 캐시 레벨들을 언급한다는 것이 주목된다. 일 실시예에 있어서, 상위 레벨 캐시(110)는 제2 레벨 데이터 캐시이다. 그러나, 상위 레벨 캐시(110)는 이와 같이 제한되지는 않는데, 그 이유는 이 캐시가 명령 캐시를 포함하거나 또는 이 명령 캐시와 연관될 수 있기 때문이다. 대신에, 트레이스 캐시, 즉 명령 캐시 타입이 최근에 디코딩된 트레이스들을 저장하기 위해서 디코더(125) 다음에 연결될 수 있다. 또한, 모듈(120)은 잠재적으로 실행될/취해질 브랜치들을 예측하기 위해서 브랜치 타깃 버퍼를 포함하며, 명령들에 대한 어드레스 변환 엔트리들을 저장하기 위해서 명령-변환 버퍼(I-TLB)를 포함한다.
디코드 모듈(125)은 인출 유닛(120)에 연결되어, 인출된 엘리먼트들을 디코딩한다. 일 실시예에 있어서, 프로세서(100)는, 프로세서(100) 상에서 실행가능한 명령들을 정의/특정하는 ISA(Instruction Set Architecture)와 연관된다. 여기서, ISA에 의해 인식된 머신 코드 명령들은 종종 연산 코드(opcode)로 언급되는 명령의 일부를 포함하는데, 이는 수행될 연산이나 명령을 참조/특정한다.
일례에 있어서, 할당기 및 리네이머 블록(130)은, 명령 프로세싱 결과들을 저장하기 위한 레지스터 파일들과 같은 리소스들을 보존하기 위한 할당기를 포함한다. 그러나, 스레드들(101a 및 101b)은 잠재적으로 비순차 실행을 할 수 있는데, 여기서 할당기 및 리네이머 블록(130)은 또한 명령 결과들을 추적하기 위한 리오더 버퍼들과 같은 다른 리소스들을 보존한다. 또한, 유닛(130)은 프로그램/명령 참조 레지스터들을 프로세서(100)의 내부의 다른 레지스터들로 리네이밍하기 위한 레지스터 리네이머를 포함할 수 있다. 리오더/폐기 유닛(135)은, 비순차 실행 및 나중의 비순차 실행된 명령들의 순차 폐기를 지원하기 위해서 전술한 리오더 버퍼들, 로드 버퍼들 및 저장 버퍼들과 같은 컴포넌트들을 포함한다.
일 실시예에 있어서, 스케줄러 및 실행 유닛(들) 블록(140)은 실행 유닛들 상의 연산/명령들을 스케줄링하기 위한 스케줄러 유닛을 포함한다. 예를 들어, 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트 상에서 부동 소수점 명령이 스케줄링된다. 또한, 실행 유닛들과 연관된 레지스터 파일들이 정보 명령 프로세싱 결과들을 저장하도록 포함된다. 예시적인 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛 및 다른 공지의 실행 유닛들을 포함한다.
하위 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(150)는 실행 유닛(들)(140)에 연결된다. 데이터 캐시는, 메모리 일관성 상태들에서 잠재적으로 유지되는 데이터 피연산자들과 같은 최근에 사용된/연산된 엘리먼트들을 저장하기 위한 것이다. D-TLB는 최근의 가상/선형의 물리 어드레스 변환들을 저장하기 위한 것이다. 특정예로서, 프로세서는, 물리 메모리를 복수의 가상 페이지들로 나누기 위한 페이지 테이블 구조를 포함할 수 있다.
일 실시예에 있어서, 프로세서(100)는 하드웨어 트랜잭션 실행, 소프트웨어 트랜잭션 실행, 또는 이들의 조합이나 하이브리드를 할 수 있다. 코드의 중대 또는 원자 섹션으로도 언급될 수 있는 트랜잭션은 원자 그룹으로서 실행될 명령들, 연산들 또는 마이크로-연산들의 그루핑을 포함한다. 예를 들어, 트랜잭션 또는 중대 섹션의 경계를 정하기 위해서 명령들 또는 연산들이 이용될 수 있다. 보다 상세하게 후술되는 일 실시예에 있어서, 이들 명령들은 ISA(Instruction Set Architecture)와 같은 명령들 세트의 부분인데, 이들은 전술한 디코더들과 같은 프로세서(100)의 하드웨어에 의해 인식가능하다. 종종, 이들 명령들은, 일단 상위 레벨 언어로부터 하드웨어 인식가능한 어셈블리 언어로 컴파일되면, 디코드 스테이지 중에 디코더들이 인식하는 연산 코드들(opcodes) 또는 명령들의 다른 부분들을 포함한다.
통상적으로, 트랜잭션의 실행 중에, 이 트랜잭션이 커미트될 때까지 메모리에 대한 업데이트들은 전역적으로 가시되게 되지는 않는다. 일례로서, 로케이션에 대한 트랜잭션 기록은 잠재적으로 로컬 스레드에 가시적이지만, 다른 스레드로부터의 판독에 응답하여, 트랜잭션 기록을 포함한 트랜잭션이 커미트될 때까지 기록 데이터는 포워딩되지 않는다. 트랜잭션이 여전히 미결정인 동안에, 메모리로부터 로딩되며 메모리 내에 기록된 데이터 아이템들/엘리먼트들은 보다 상세하게 후술되는 바와 같이 추적된다. 일단 트랜잭션이 커미트 시점에 도달하면, 트랜잭션에 대해 충돌들이 검출되지 않은 경우에, 트랜잭션이 커미트되며, 트랜잭션 중에 이루어진 업데이트들이 전역적으로 가시되게 된다.
그러나, 트랜잭션이 미결정인 동안에 무효화되는 경우, 트랜잭션은 업데이트들을 전역적으로 가시되게 하지 않으면서 중단되며 잠재적으로 재시작된다. 그 결과, 본 명세서에 이용된 바와 같이, 트랜잭션의 미결정은, 실행이 시작되었으며 커미트되거나 중단되지는 않은, 즉 미결정의 트랜잭션을 언급한다.
종종, 소프트웨어 트랜잭션 메모리(STM) 시스템은, 적어도 부분적으로 소프트웨어에서 또는 소프트웨어에서 액세스 추적, 충돌 레졸루션 또는 다른 트랜잭션 메모리 태스크들을 수행하는 것을 언급한다. 일 실시예에 있어서, 프로세서(100)는 트랜잭션 실행을 지원하기 위해서 프로그램 코드를 컴파일하기 위한 컴파일러를 실행할 수 있다. 여기서, 컴파일러는 트랜잭션들의 실행을 가능하게 하기 위해서 연산들, 호출들, 펑션들 및 다른 코드를 삽입할 수 있다.
종종, 컴파일러는 소스 텍스트/코드를 타깃 텍스트/코드로 변환하기 위한 프로그램 또는 프로그램들 세트를 포함한다. 일반적으로, 컴파일러를 사용한 프로그램/애플리케이션 코드의 컴파일은 상위 레벨 프로그래밍 언어 코드를 하위 레벨 머신 또는 어셈블리 언어 코드로 변환하기 위해서 멀티플 페이즈들 및 패스들에서 수행된다. 그러나, 단일 패스 컴파일러들은 여전히 단순한 컴파일에 이용될 수 있다. 컴파일러는 임의의 공지의 컴파일 기술들을 이용하며, 낱말 분석, 전처리, 파싱, 의미 분석, 코드 발생, 코드 변환 및 코드 최적화와 같은 임의의 공지의 컴파일러 동작들을 수행할 수 있다.
보다 큰 컴파일러들은 종종 멀티플 페이즈들을 포함하지만, 훨씬 더 종종 이들 페이즈들은 2개의 일반적인 페이즈들 내에 포함된다: (1) 프런트-엔드, 즉 일반적으로 구문 프로세싱, 의미 프로세싱 및 몇몇 변환/최적화가 일어날 수 있는 곳, 및 (2) 백-엔드, 즉 일반적으로, 분석, 변환들, 최적화들 및 코드 발생이 일어나는 곳. 몇몇 컴파일러들은, 컴파일러의 프런트-엔드와 백-엔드 사이의 경계 식별의 블러링을 나타내는 미들 엔드를 언급한다. 그 결과, 삽입, 연관, 발생 또는 컴파일러의 다른 동작에 대한 참조는 전술한 페이즈들이나 패스들 중 임의의 것뿐만 아니라 컴파일러의 임의의 다른 공지의 페이즈들이나 패스들에서 일어날 수 있다. 예시로서, 컴파일러는 잠재적으로 컴파일의 프런트-엔드 페이즈에서의 호출들/연산들의 삽입 및 그 다음의 트랜잭션 메모리 변환 페이즈 중의 이들 호출들/연산들의 하위 레벨 코드로의 변환과 같이, 컴파일의 하나 이상의 페이즈들에서 트랜잭션 연산들, 호출들, 펑션들 등을 삽입한다.
컴파일러의 동적 또는 정적 속성 및 실행 환경에도 불구하고, 컴파일러는 일 실시예에 있어서 트랜잭션 실행을 가능하게 하기 위해서 프로그램 코드를 컴파일한다. 그러므로, 일 실시예에 있어서, 프로그램 코드의 실행에 대한 참조는, (1) 메인 프로그램 코드를 컴파일하도록, 트랜잭션 구조들을 유지하도록 또는 다른 트랜잭션 관련 연산들을 수행하도록 동적으로 또는 정적으로 컴파일러 프로그램(들)의 실행, (2) 트랜잭션 연산들/호출들을 포함한 메인 프로그램 코드의 실행, (3) 메인 프로그램 코드와 연관된, 라이브러리들과 같은 다른 프로그램 코드의 실행, 또는 (4) 이들의 조합을 언급한다.
일 실시예에 있어서, 프로세서(100)는 하드웨어/로직을 이용하는, 즉 하드웨어 트랜잭션 메모리(HTM) 시스템 내의 트랜잭션들을 실행할 수 있다. 다수의 특정 구현 상세들이, HTM을 구현하는 경우에 아키텍처 및 마이크로아키텍처 관점 모두로부터 존재하는데, 이들 대부분은 본 발명을 불필요하게 모호하게 하는 것을 회피하기 위해서 본 명세서에서 설명되지 않는다. 그러나, 예시를 목적으로 몇몇 구조들 및 구현들이 개시된다. 그러나, 이들 구조들 및 구현들은 요구되지 않으며, 상이한 구현 상세들을 갖는 다른 구조들로 대체되고/되거나 증대될 수 있다는 것이 주목되어야 한다.
로컬 프로세싱 엘리먼트들에 의한 것뿐만 아니라 잠재적으로 다른 프로세싱 엘리먼트들에 의해 데이터 아이템들에 대한 액세스들 및 요구들이 이루어질 수 있다. 트랜잭션 메모리 시스템에서의 안전 메커니즘들이 없으면, 이들 액세스들의 일부는 잠재적으로 무효 데이터 및 실행, 즉 판독을 무효화하는 데이터에 대한 기록 또는 무효 데이터의 판독을 야기시킬 것이다. 그 결과, 프로세서(100)는 잠재적 충돌들의 식별을 위해 데이터 아이템들에 대한/로부터의 메모리 액세스들을 추적하거나 모니터링하기 위한 로직을 잠재적으로 포함한다.
데이터 아이템 또는 데이터 엘리먼트는, 하드웨어, 소프트웨어 또는 이들의 조합에 의해 정의된 바와 같이 임의의 정밀도 레벨에서 데이터를 포함할 수 있다. 데이터, 데이터 엘리먼트들, 데이터 아이템들 또는 이들에 대한 참조들의 예들을 모두 망라하지는 않은 리스트는 메모리 어드레스, 데이터 객체, 클래스, 동적 언어 코드 타입의 필드, 동적 언어 코드의 타입, 변수, 피연산자, 데이터 구조 및 메모리 어드레스에 대한 간접 참조를 포함한다. 그러나, 임의의 공지의 데이터의 그루핑은 데이터 엘리먼트 또는 데이터 아이템으로 언급될 수 있다. 동적 언어 코드 타입의 필드 및 동적 언어 코드의 타입과 같은 전술한 예들 중 일부는 동적 언어 코드의 데이터 구조들을 언급한다. 예시를 위해서, Sun Microsystems, Inc.로부터의 Java™와 같은 동적 언어 코드는 강한 타입의 언어이다. 각 변수는 컴파일 시에 알려지는 타입을 갖는다. 이들 타입은 2개의 카테고리들 - 프리미티브 타입들(불(boolean) 및 수치, 예를 들어, int, float) 및 참조 타입들(클래스들, 인터페이스들 및 어레이들)로 분할된다. 참조 타입들의 값들은 객체들에 대한 참조들이다. Java™에 있어서, 필드들로 이루어지는 객체는 클래스 인스턴스 또는 어레이일 수 있다. 클래스 A의 객체 a가 주어지면, 타입 A의 필드 x를 참조하기 위해서 표기 A::x를 이용하며 클래스 A의 객체 a의 필드 x에 대해서는 a.x를 이용하는 것이 일반적이다. 예를 들어, 표현은 a.x=a.y+a.z로서 표현될 수 있다. 여기서, 필드 y 및 필드 z가 로딩되어 부가되며, 그 결과는 필드 x에 기록된다.
그러므로, 데이터 아이템들에 대한 메모리 액세스들의 모니터링/버퍼링은 임의의 데이터 레벨 정밀도로 수행될 수 있다. 예를 들어, 일 실시예에 있어서, 데이터에 대한 메모리 액세스들은 타입 레벨로 모니터링된다. 여기서, 필드 A::x에 대한 트랜잭션 기록 및 필드 A::y의 넌-트랜잭션 로드는 동일한 데이터 아이템, 즉 타입 A에 대한 액세스들로서 모니터링될 수 있다. 다른 실시예에 있어서, 메모리 액세스 모니터링/버퍼링은 필드 레벨 정밀도로 수행된다. 여기서, A::x에 대한 트랜잭션 기록 및 A::y의 넌-트랜잭션 로드는 동일한 데이터 아이템에 대한 액세스들로서 모니터링되지 않는데, 그 이유는 이들이 분리된 필드들에 대한 참조들이기 때문이다. 데이터 아이템들에 대한 메모리 액세스들을 추적하는데 있어서 다른 데이터 구조들 또는 프로그래밍 기술들이 고려될 수 있다는 것이 주목된다. 일례로서, 클래스 A의 객체의 필드들 x 및 y, 즉 A::x 및 A::y가 클래스 B의 객체들을 포인팅하고, 새로 할당될 객체들에 대해 초기화되며, 초기화 이후에는 결코 기록되지 않는다고 가정된다. 일 실시예에 있어서, A::x로 포인팅된 객체의 필드 B::z에 대한 트랜잭션 기록은 A::y로 포인팅된 객체의 필드 B::z의 넌-트랜잭션 로드에 관하여 동일한 데이터 아이템에 대한 메모리 액세스로서 모니터링되지 않는다. 이들 예시로부터 외삽하면, 모니터들이 임의의 데이터 정밀도 레벨로 모니터링/버퍼링을 수행할 수 있다고 결정하는 것이 가능하다.
일 실시예에 있어서, 모니터들은 로드들 및 저장들을 추적하기 위한 판독 모니터들 및 기록 모니터들을 포함하는데, 이들은 그에 따라 모니터링되는 것으로 결정된다. 일례로서, 하드웨어 판독 모니터들 및 기록 모니터들은, 하부 저장 구조들의 정밀도에도 불구하고 데이터 아이템들의 정밀도로 데이터 아이템들을 모니터링하기 위한 것이다. 일 실시예에 있어서, 데이터 아이템은, 적어도 전체 데이터 아이템이 적절하게 모니터링됨을 보장하기 위해서 저장 구조들의 정밀도로 연관된 메커니즘들을 추적함으로써 제한된다. 데이터 아이템들을 모니터링하기 위해서 판독 모니터들/속성들을 이용하는 일례가, 본원과 함께 출원되었으며 발명의 명칭이 "Read and Write Monitoring Attributes in Transactional Memory(TM) Systems"인 Gad Sheaffer 등에 의한 함께 계류중인 출원 제XX/XXX, XXX(대리인 관리 번호 D71720)에서 보다 상세하게 설명된다. 그러나, 데이터를 유지하기 위해서 임의의 데이터 정밀도 또는 구조들을 이용하는 트랜잭션 실행과 연관된 충돌들을 검출하도록 모니터들, 속성들, 주석들 또는 다른 추적 메커니즘들이 이용될 수 있다.
판독 또는 기록 속성들은 데이터 아이템들과 연관된 상태들을 유지하기 위한 임의의 로직, 펌웨어 또는 구조를 포함한다. 예를 들어, 데이터 아이템에 대한 속성들은 비트 벡터를 포함하는데, 비트 벡터에서의 각 비트는, 트랜잭션 로딩됨, 트랜잭션 기록됨, 넌-트랜잭션 로딩됨, 넌-트랜잭션 기록됨, 트랜잭션 로딩되지 않음, 트랜잭션 기록되지 않음, 넌-트랜잭션 로딩되지 않음, 넌-트랜잭션 기록되지 않음, 액세스 충돌 검출됨, 액세스 충돌 검출되지 않음, 판독 요구, 판독 요구 없음, 기록 요구, 기록 요구 없음, 소유권 요구, 소유권 요구 없음, 또는 데이터 아이템을 유지하기 위해서 메모리 로케이션 또는 데이터 아이템과 연관된 임의의 다른 속성이나 상태와 같이, 데이터 아이템의 속성을 나타낸다. 다른 예로서, 데이터 아이템에 대한 속성들은 인코딩된 값을 포함한다. 예를 들어, 4개의 상태들: (1) 트랜잭션 기록됨; (2) 트랜잭션 판독됨; (3) 트랜잭션 기록되지 않음; 및 (4) 트랜잭션 판독되지 않음과 같은 상태들이, 2개의 속성 비트들, 즉 00, 01, 11 및 10의 4개의 이진 값들을 이용하여 인코딩된다.
설계에 기초하여, 캐시 일관성 요구들과 캐시 라인들의 모니터링된 일관성 상태들의 상이한 조합들은, 공유 판독 상태에 있는 데이터 아이템을 유지하는 캐시 라인 및 이 데이터 아이템에 대한 기록 요구를 나타내는 스누프와 같은 잠재적인 충돌들을 야기시킨다. 반대로, 버퍼링된 기록 상태에 있는 데이터 아이템을 유지하는 캐시 라인 및 이 데이터 아이템에 대한 판독 요구를 나타내는 외부 스누프는 잠재적으로 충돌하는 것으로 고려될 수 있다. 일 실시예에 있어서, 액세스 요구들과 속성 상태들의 이러한 조합들을 검출하기 위해서, 스누프 로직은 충돌 검출/리포팅을 위한 로직 및/또는 모니터들과 같은 충돌 검출/리포팅 로직에 연결된다.
일 실시예에 있어서, 데이터에 대한 속성이나 특성과 같은 메타데이터는 메모리에 로컬 유지된다. 일례로서, 데이터는 캐시 메모리의 엔트리에 캐싱되는 한편, 이 데이터에 대한 메타데이터는 캐시의 다른 엔트리에 유지된다. 비록, 이 예에서는, 캐시 메모리 내의 공간에 대하여 메타데이터가 데이터와 잠재적으로 경쟁하지만, 데이터 어레이에 대한 추가적인 확장 또는 추가적인 별도의 저장 구조(structures) 없이도 국부적으로 메타데이터를 보유(hold)할 수 있으므로 메모리 계층(hierarchy) 전반에 걸쳐 영속적인 메타데이터를 증식시키거나 또는 추가적인 저장 구조를 추가하는 고가의 비용 없이도 메타데이터를 효율적으로 지원하게 된다.
일 실시예에서, 하드웨어에서 메타데이터를 데이터로 물리적으로 매핑시키는 것은 소프트웨어에 직접적으로 보이지 않는다. 그 결과로서, 이 예에서는, 메타데이터 액세스 동작들은 데이터 어드레스들을 참조하고, 메타데이터를 적절하게 액세스하기 위한 올바른 번역(correct translation), 즉, 매핑을 수행하는 데에 하드웨어에 의존한다. 일 실시예에서, 하나 이상의 메타피지컬(metaphysical) 어드레스 공간(들)이 메타데이터를 액세스하기 위한 물리적 어드레스 공간 상에 오버레이(overlay)된다. 본질적으로, 메모리에 보유되는 데이터를 참조하는 데이터 어드레스는 메타데이터 어드레스를 획득하도록 번역/조작되는데, 이러한 메타데이터 어드레스는 다른 번역된 위치에서 동일한 메모리 내의 메타데이터를 액세스하는 데에 이용된다.
예시를 위하여, 메타피지컬 값이 메타데이터 어드레스를 획득하도록 데이터 어드레스에 첨부된다. 제1 어드레스를 제2 어드레스로 번역하는 방법은 어떠한 방법이라도 이용될 수 있다. 데이터 어드레스를 메타데이터 어드레스로 번역하는 예는 물리적 어드레스 또는 가상 어드레스에 메타피지컬 값을 추가하여 더한 것(a virtual address plus addition of a metaphysical value)을 이용하여 메타데이터 어드레스로부터 데이터 어드레스를 분리하는 것을 포함한다. 다른 예로서, 데이터 어드레스는 별개의 메타데이터 어드레스를 획득하기 위하여 별도의 번역 테이블/로직(logic)을 이용하여 번역될 수 있다.
따라서, 메모리는 소프트웨어에 대하여 투명한 방식으로 데이터 아이템들에 대한 메타데이터를 보유할 수 있다. 하드웨어가 명시적인 동작 코드(명령어의 op 코드) 또는 명령어를 메타데이터 액세스 마이크로 동작(들)으로 디코딩한 것 중 하나를 통하여 메타데이터로의 액세스 동작을 탐지한다면, 하드웨어는 액세스 동작에 의해 참조되는 데이터 어드레스의 필수적인 번역을 수행하여 이에 따라 메타데이터를 액세스한다. 여기에서, 메타데이터는 손실형(lossy)일 수 있는데, 즉, 축출할 메타데이터를 보유하는 엔트리의 선택 시에 메타데이터가 손실되는 것이다. 그러나, 메타데이터의 손실은 모니터링 속성(monitoring attribute)들의 손실이나 충돌의 핸들링과 유사한 방식으로 홀드(hold)될 수 있는데, 이러한 방식은 대리인 정리 번호가 P29129이고, Gad Sheaffer 등이 저술한 발명의 명칭이 "Registering a User-Handler in Hardware for Transactional Memory Event Handling"인 출원 번호 XX/XXX,XXX에 기재되어 있다.
앞서 도 1을 처음에 참조하여 상술한 바와 같이, 프로세서(100)의 아키텍처(architecture) 순전히 설명을 위한 예시이다. 마찬가지로, 메타데이터를 참조하기 위하여 데이터 어드레스들을 번역하는 특정 예들 또한 예시적인데, 이는 데이터를 동일한 메모리의 개별적인 엔트리들 내의 메타데이터와 연관시키는 방법이라면 어떤 방법이라도 이용될 수 있기 때문이다.
도 2a를 참조하여 보면, 데이터와 연관된 메타데이터를 보유하기 위한 메타피지컬 어드레스 공간의 실시예가 도시된다. 컨트롤 로직(250), 태그 어레이(205), 및 데이터 어레이(207)와 같은 캐시 메모리의 부분들이 도시되는 반면에, 캐시 룩업, 히트(hit) 및 미쓰(miss) 회로와 같은 특정 컨트롤 회로소자(circuitry)와, 기타 상위(larger) 구조들은 설명을 간단히 하기 위하여 도시되지 않는다. 가장 일반적인 캐시의 예로는 도 1에 도시된 바와 같이 제1 레벨 캐시 또는 제2 레벨 캐시와 같은 데이터 캐시를 포함한다. 그러나, 캐시는 명령어 캐시, 트레이스(trace) 캐시, 또는 기타 공지된 캐시 또한 포함할 수 있다.
불필요한 설명의 불명료화를 방지하기 위하여 캐시 아키텍처를 자세하기 기술하지는 않았지만, 캐시는 다양한 방식으로 구성될 수 있다. 예를 들면, 캐시는 메모리 어드레스가 캐시의 어느 곳에서든지 보유될 수 있는, 즉, 완전 결합형(fully associative), 메모리 어드레스들의 특정 범위가 캐시의 특정 세트들로 제한되는 세트 결합형(set associative), 또는 복수의 어드레스들이 캐시 내의 단일 위치들에 보유되어야 하는 직접 매핑 캐시(direct mapped cache)일 수 있다. 본 명세서에서 기술되는 방법 및 장치는 어떠한 캐시 구성으로라도 구현될 수 있음을 유의한다.
도시된 바와 같이, 캐시는 데이터 캐시 메모리 또는 데이터 어레이라고도 칭할 수 있는 데이터 영역(207), 데이터 어레이(207)에 연관된 태그 어레이(205), 및 태그 어레이(205) 및 데이터 어레이(207)에 연관된 컨트롤 로직(230)을 포함한다. 데이터 영역(207)은 엘리먼트(210, 215, 220, 및 225)를 포함한다. 본 명세서에서 이용되는 캐시 엘리먼트는 캐시 라인, 캐시 엔트리, 캐시 위치, 또는 캐시 세트와 같이 캐시의 임의의 단위의(granularity) 구조적인 엘리먼트를 말하는 것이다. 예를 들면, 엘리먼트(210)는 세트 내에서, 복수의 라인들 중 한 라인과 같이, 복수의 엔트리들 중 한 엔트리를 포함한다.
도시된 바와 같이, 메타데이터(209) 및 데이터 아이템(208)은 데이터 어레이(207)의 분리된 엔트리들로 보유된다. 그러나, 메타데이터(209)는 데이터 아이템(208)의 속성 또는 프로퍼티(property)들을 나타낸다는 점에서 데이터 아이템(208)과 연관되어 있으며, 엔트리(210)와 연관된 데이터 아이템(208)에 대한 데이터 어드레스는 엔트리(215) 내의 메타데이터(209)를 참조하기 위한 메타데이터 어드레스로서 이용되거나 이러한 메타데이터 어드레스로 번역될 수 있다. 일 실시예에서, 이런식으로 메타데이터(209)를 보유하는 것은 손실형이라고 간주된다. 다시 말하면, 메타데이터(209)는 손실형 메타데이터라고 간주된다. 본질적으로, 메타데이터(209)는, 메모리 계층 전반에 걸쳐 데이터 아이템(208)을 추적하는 영속적인 데이터와는 다르게, 국부적인 구성체(construct)이다.
예를 들면, 컨트롤 로직(250)은 축출할 엔트리(215)를 선택한 다음, 메타데이터(209)가 축출된다. 메타데이터(209)는 데이터 어드레스 위치에 존재하지 않기 때문에, 정보가 유지되지 못하거나 상위 레벨 메모리에 라이트 백(write back)되지 않는다. 즉, 메타데이터(209)가 손실된다. 여기서, 이하 보다 상세히 기술될 바와 같이, 캐시 컨트롤 로직(250)은, 무효 상태(invalid state)와 같은, 라인(215)의 캐시 일관성 상태(cache coherency state)에 의해서나, 엔트리(215)가 메타데이터(209)를 보유함을 나타내는 메타데이터 값을 보유하는 확장 필드(217)에 의해서는 라이트-백(write-back)을 수행하지 않을 것이다.
상술한 바와 같이, 메타데이터(209)는 데이터 아이템(208)에 관련된 임의의 속성, 프로퍼티, 또는 정보를 포함한다. 트랜젝셔널(transactional) 메모리 시스템 내에서는, 메타데이터(209)는 복수의 유용한 방식으로 이용될 수 있다. 첫번째 예로서, 메타데이터(209)는 데이터 아이템(208)에 대한 판독 속성, 기입 속성, 및/또는 버퍼링 속성과 같은 속성들을 포함한다. 여기서, 데이터 아이템(208)이 트랜젝셔널하게 판독되면, 메타데이터(209)는 데이터 아이템(208)이 판독되었음을 나타내도록 업데이트되고 모니터링되는데, 즉, 그 다음에는 데이터 아이템(208)에 대한 외부적인 기입은 충돌로서 간주된다. 이러한 구현에서, 스눕 로직(snoop logic)은 엔트리(215) 내의 메타데이터(209)의 스눕, 즉, 엔트리(215) 내의 메타데이터의 테스트를 수행하도록 수정될 수 있다.
다른 예로서, 메타데이터는, 트랜젝셔널하게 기입된 데이터 아이템(208)에 대한 백업 위치, 데이터 아이템(208)이 이전에 트랜젝션 내에 액세스되고/거나 백업되었는지 여부, 데이터 아이템(208)이 취소할 수 없는(irrevocable)/제어하기 힘든(obstinate) 트랜젝션과 연관되었는지 여부, 데이터 아이템(209)이 손실되었는지 여부, 또는 기타 공지된 트랜젝션 관련 설명 정보와 같은, 다른 트랜젝션 관련 정보를 포함한다. 또한, 상술한 바와 같이, 메타데이터의 사용은 트랜젝셔널 정보에 제한되지 않는다. 결론적으로는, 메타데이터(209)는 또한 데이터 아이템(208)에 연관된 정보, 프로퍼티, 속성, 또는 상태를 포함할 수 있다.
도시된 바와 같이, 태그 어레이(205)는 데이터 어레이(207)의 데이터 엔트리 (210, 215, 220, 및 225)에 각각 대응하는 태그 엔트리(211, 216, 211, 및 226)를 포함한다. 통상적으로, 엔트리(211)와 같은 태그 엔트리는 엔트리(210)에 보유되는 데이터 아이템(208)에 연관된 어드레스의 일부를 보유해야 한다. 캐시에 액세스할 때, 태그 어레이(205)는 태그 값을 이용하여 액세스 동작 어드레스로부터 올바른 대응하는 엔트리로의 인덱스까지 검색/룩업된다. 일 실시예에서, 어드레스(201)와 같은 어드레스는 태그 확장 필드(212, 217, 222, 및 227)에서 태그 어레이(205)에서 보유되어야 할 확장 비트들로 확장된다. 여기서, 확장 필드는 대응하는 데이터 엔트리가 데이터 또는 메타데이터를 보유하고 있는지 나타내기 위한 값을 보유해야 한다. 예로서, 확장 필드(212)는 데이터 아이템(208)과 같은 데이터가 데이터 엔트리(210)에 보유됨을 나타내는 데이터 값을 보유하는 한편, 확장 필드(217)는 데이터 엔트리(215)가 메타데이터(209)와 같은 메타데이터를 보유함을 나타내는 메타피지컬 값을 보유한다.
확장 필드(217)와 같은 확장 필드에서 보유되어야할 메타피지컬 값은 대응하는 엔트리가 메타데이터를 보유함을 표시하기 위한 임의의 값을 포함할 수 있다. 또한, 메타피지컬 값은, 명령어 파라미터에 의해 제공되는, 캐시 컨트롤 로직(250)에서의 디폴트 세팅이나 컨트롤 레지스터, 또는 이들의 조합과 같이, 하드웨어에 의해 제공될 수 있다.
일 실시예에서, 확장 필드(217)는 태그 엔트리(216)의 MSB(Most Significant Bit)와 같은 단일 비트를 보유해야 한다. 여기서, 엔트리(215)가 메타데이터를 보유한다면, 엔트리(217)는 논리적 하이(high) 값와 같은 제1 논리 값을 보유한다. 대조적으로, 확장 필드(212)는 엔트리(210)가 데이터를 보유함을 나타내기 위해 논리적인 로우(low) 값과 같은 제2 논리적 값을 보유한다. 예시를 위하여, 데이터 어드레스와 메타데이터 어드레스 간의 가장 기본적인 번역 방법에 관련하여 간단한 예가 기술되는데, 즉, 여기에서 태그 엔트리(211 및 216)는 데이터 아이템(208 및 209)에 대해서는 동일하고 확장 필드만 다르다. 여기서, 물리적 어드레스 부분과 같은 어드레스(201)의 일부는 태그 어레이(205)의 태그 엔트리들에 보유되어야 한다.
데이터 아이템(208)에 대한 데이터 어드레스를 참조하는 액세스 동작이 수신된다고 가정하자. 컨트롤 로직(208)은 데이터 어드레스에 대한 태그 매치(tag match)가 존재하는지를 판정하기 위하여 태그 어레이(205)의 검색을 수행한다. 여기서, 액세스 동작이 데이터 아이템(208)을 액세스하기 위한 정상 데이터 액세스 동작이라면, 데이터 값은 데이터 어드레스와 연관되고 이 검색은 엔트리(211) 및 확장 필드(212)와의 매치라는 결과를 낸다. 여기서, 확장 필드(217)가 메타피지컬 값, 즉, 이 예에서는 논리적 값을 포함하므로, 매치는 엔트리(216) 사이에 존재하지 않는다. 대조적으로, 액세스 동작이 메타데이터 액세스 동작을 포함한다면, 논리적 값인 메타피지컬 값이 데이터 어드레스에 첨부되고 이 검색은 확장 필드(217)를 가지는 엔트리(216)의 히트라는 결과를 낸다. 마찬가지로, 확장 필드(212)는 데이터 값을 보유하기 때문에, 엔트리(211)에 대해서는 히트가 없다.
이 예에서 예시하고 있는 바와 같이, 프로그램은, 데이터 아이템(208)과 같은 데이터 아이템의 동일한 어드레스를 참조하는 데이터 액세스 동작 또는 메타데이터 액세스 동작과 같은 개별적인 동작들을 포함할 수 있으며, 하드웨어는 이들 액세스를 물리적 어드레스 공간 및 메타피지컬 어드레스 공간과 같은 서로 다른 어드레스 공간들에 매핑할 수 있다. 데이터 및 메타데이터에 대한 태그 엔트리들에서 개별적인 값들이 이용될 수 있는 경우, 어드레스 공간은 직교한다(orthogonal). 즉, 데이터 아이템을 보유하는 대응하는 데이터 엔트리에 대한 확장 필드가 메타데이터 액세스 동작의 룩업 확장 값과 매치하지 않기 때문에 메타데이터 액세스 동작은 데이터 엔트리를 히트하거나 수정하지 않는다. 그러나, 메타데이터 및 데이터 어드레스 공간이 캐시 내의 공간에 대해서 경쟁하기 때문에, 경쟁을 통하여 서로 영향을 줄 수 있다.
또한, 손실형 메타데이터의 일 실시예에서, 메타데이터 액세스 동작에 대한 태그 어레이(205)의 미쓰는 캐시 메모리 영역(domain) 외부에서의 미쓰를 서비스(service)하지 않는다. 본질적으로, 손실형 메타데이터(209)가 캐시 영역 내에서 국부적으로 보유되기 때문에, 그 요청을 서비스하기 위해 외부적으로 미쓰를 전달할 이유가 없다. 결과적으로, 손실형 메타데이터에 대한 미쓰들은 잠재적으로 빠르고 효율적인 방식으로 서비스된다. 예로서, 캐시 블록이 메타데이터에 할당되면 외부적 응답을 기다릴 것 없이 소정의 디폴트 값으로 초기화된다.
상기 예시 외에도, 일 실시예에서는, 태그 어레이(205)의 확장 필드들이 다중 비트들을 포함한다. 첫번째 예로서, 태그 어레이(205) 내의 다중 비트들은 잠재적으로 데이터 어드레스 공간 상에 오버레이되는 개별적인 다중 메타피지컬 어드레스 공간들을 포함한다. 여기서, 각 비트 또는 비트 그루핑은 별도의 메타데이터, 동일하거나 다른 메타데이터에 연관된 개별적인 처리 엘리먼트들, 동일하거나 다른 메타데이터를 가지는 프로그램의 서로 다른 파트들, 동일하거나 다른 메타데이터를 가지는 서로 다른 서브시스템들, 또는 어드레스 공간과 연관시키기 위한 임의의 기타 공지된 엘리먼트에 대한 메타피지컬 어드레스 공간에 대응한다.
예를 들어, 2개의 코어들과 같은 2개의 처리 엘리먼트들이 캐시로의 액세스를 공유한다고 가정하자. 여기서, 확장 필드(217)의 제1 비트는 제1 처리 엘리먼트에 연관된 메타피지컬 어드레스 공간에 대한 것이고 확장 필드(218)의 제2 비트는 제2 처리 엘리먼트에 연관된 제2 메타피지컬 어드레스 공간에 대한 것이다. 상기한 것으로부터 예를 들자면, 제1 처리 엘리먼트에 대하여 데이터 어드레스(201)로의 메타데이터 액세스에 직면하게 되면, 제1 비트가 메타피지컬 논리 값으로 세팅되면서 태그 어레이(205)의 검색이 수행되는데, 이는 제2 처리 엘리먼트에 대한 메타피지컬 어드레스 공간에 대한 히트가 일어나지 않음을 보장한다.
제1 처리 엘리먼트가 제2 메타피지컬 어드레스 공간 내의 제2 처리 엘리먼트에 의해 속성이 세팅되었는지를 체크해야 하는 경우 등에서와 같이 일부 예에서는 처리 엘리먼트가 다른 메타피지컬 어드레스 공간을 액세스하는 것이 바람직할 수 있음을 유의한다. 일 실시예에서, 확장 피드는 다른 정보를 포함한다. 예를 들면, 다중 처리 엘리먼트들에 대한 다중 비트들 대신에, 컨텍스트 ID 등의 처리 엘리먼트 식별자(identifier)가 다중 비트들로 제공될 수 있다. 또한, 확장 필드의 비트들은 컨트롤 레지스터 값들, 명령어 파라미터 값들, 또는 기타 값들을 이용하여 채워질 수 있다.
메타데이터 액세스 동작들은 데이터를 액세스하기 위한 명시적인 명령어/동작들을 포함할 수 있다. 여기서, 프로세서의 디코더들이 명령어 세트 아키텍처의 동작(op) 코드에 의해 메타데이터 액세스 동작들을 인식할 수 있다. 또한, 더 크고 더 복잡한 명령어가,디코딩시에, 메타데이터 액세스 마이크로-동작을 포함할 수 있다. 예시를 위하여, 데이터 아이템(208)을 백업하라는 명령어가 제1 마이크로-동작으로 디코딩되어 이전 버전의 데이터 아이템(208)의 백업 위치로의 기입을 수행하고 제2 마이크로-동작으로 디코딩되어 메타데이터(209)가 백업 위치의 어드레스를 보유하도록 업데이트시킨다.
상술한 바를 참조하여 볼 때, 일 실시예에서, 메타데이터(209)는 하드웨어 내의 데이터 아이템(208)과 연관된다. 도시된 바와 같이, 데이터 아이템(208) 및 메타데이터(209)는 압축해제된 형태인데, 즉, 메타데이터와 데이터 간은 1-대-1 관계이다. 다시 말하면, 메타데이터(209)의 크기는 데이터 아이템(208)과 동일하다. 메타데이터의 압축은 이하 보다 상세히 기술된다. 그럼에도 불구하고, 일 실시예에서, 하드웨어에서의 메타데이터(209)의 데이터 아이템(208)과의 연관은 데이터 아이템(208)에 대한 엔트리(210)로 인덱싱된 데이터 어드레스를 메타데이터(209)에 대한 엔트리(215)로 인덱싱된 메타데이터 어드레스로 번역하기 위한 로직을 포함한다. 번역의 예로는 메타피지컬 값을 추가하고 번역하지 않는 것(no translation with addition of a metaphysical value), 메타피지컬 값을 추가한 정상 데이터 어드레스 번역(normal data address translation with addition of a metaphysical value), 및 메타피지컬 번역 로직으로의 별도의 번역(separate translation with metaphysical translation logic)을 포함한다. 메타데이터의 데이터로의 번역의 배타적이지 않은 예들의 목록은 도 3a 및 3b를 참조하여 이하 보다 상세히 기술한다.
잠시 도 2b를 참조하여 보면, 데이터에 연관된 메타데이터를 보유하기 위한 메타피지컬 어드레스 공간의 다른 실시예가 도시된다. 상술한 바와 같이, 메타데이터가 데이터와 동일한 어레이에 보유되면, 이 메타데이터는 데이터와 캐시 공간에 대하여 경쟁할 수 있다. 따라서, 도 2b에서 도시한 바와 같이, 일 실시예에서는, 메타데이터는 병렬식 캐시 메모리(260)로 보유된다. 여기서, 상술하였고 이하 기술할 방법 및 장치는, 데이터 어드레스로부터 메타데이터 어드레스를 획득하는 것과 동일한 방식으로 수행될 수 있다. 그러나, 메타데이터 어드레스에 대한 엔트리 데이터 어레이(207)를 선택하는 것 대신에, 병렬식 메타데이터 어레이(260) 내의 엔트리가 선택된다. 예로서, 어드레스 확장(230)에서 보유되는 메타피지컬 값과 같은 메타피지컬 식별자 값에 기초하여 어레이들, 세트들, 방식들, 블록들 등등 사이에서 선택을 하는 데에 멀티플렉서가 이용될 수 있다. 따라서, 본 명세서의 설명과 마찬가지로, 메타데이터 어드레스는 주어진 데이터 아이템의 데이터 어드레스로부터 획득될 수 있다. 그러나, 이 예에서는 엔트리의 선택은, 데이터 어레이(207) 내에서가 아닌 병렬 어레이(260)에서 이루어진다. 메타데이터(209)는 동일한 방식으로 데이터 아이템(208)에 연관되지만, 다른 물리적 저장 구조로 보유됨을 유의한다.
도 3a를 참조하여 보면, 메타피지컬 어드레스 공간으로의 액세스를 지원하기 위한 구조의 실시예가 도시된다. 여기서, AGU(address generation unit; 320)는 어드레스들을 생성해야하는데, 이는, 상술한 바와 같이 액세스 동작들에 대한 응답일 수 있다. 어드레싱 및 번역은, 이하, 가상 어드레스 번역, 즉, 참조되는 가상 어드레스들을 물리적 어드레스로 번역하기 위하여 프로세서에서 정의된 페이지 테이블을 종종 이용하는 물리적 메모리의 가상적인 뷰(view)를 이용하는 프로세서를 참조하여 기술된다. 그러나, 어드레싱은 다양한 방식으로 구현될 수 있으며, 따라서, 본원에 기술된 방법 및 장치는 임의의 어드레싱 방법을 이용하여 구현될 수 있다.
일 실시예에서, 데이터 아이템은 데이터 어드레스(301)의 메타데이터 어드레스로의 번역을 통하여 메타데이터와 연관된다. 첫번째 예로서, 번역은 통상적인, 가상 어드레스의 물리적 어드레스로의 번역 없이 데이터 어드레스(301)의 확장을 포함한다. 본질적으로 메타데이터 어드레스에 대하여 데이터 어드레스의 가상 어드레스가 이용된다. 반대로, 메타데이터 어드레스는 번역 구조를 통해 데이터 어드레스들로 동일한 방식으로 번역될 수 있다.
도시된 바와 같이, TLB(translation lookaside buffer; 325)는 가상 어드레스(201)와 같은 가상 어드레스를 물리적 어드레스로 번역해야 한다. 일부 프로세서 아키텍처에서는, 가상 어드레스와 물리적 어드레스가 어드레스(201)의 4K 바이트 페이지 당 비트 0-11와 같은, 어드레스의 일부를 공유한다. 첫번째 예로서, 메타데이터 어드레스는 데이터 어드레스와 동일하다. 그 결과로서, 어레이(305) 내의 캐시 태그들은 데이터와 메타데이터 엔트리를 구별하는 확장 필드를 제외하고는 데이터와 그 관련 메타데이터에 대하여 동일한다.
예시를 위하여, 도 2a를 잠깐 다시 참조한다. 여기서, 메타데이터 엔트리(215)에 대응하는 태그 엔트리(216)는 데이터 엔트리(210)에 대응하는 태그 엔트리(211)와 동일한다. 그러나, 확장 필드(212)는 엔트리(210)가 데이터를 보유함을 나타내는 데이터 값을 보유하고 확장 필드(217)는 엔트리(215)가 메타데이터를 보유함을 나타내는 메타데이터 값을 보유한다. 따라서, 데이터 엔트리(215)로부터의 메타데이터(209)의 판독을 위한 캐시 룩업 시에 메타데이터 값은 엔트리(215)에 대응하는 태그 엔트리(217)를 히트하도록 태그 값에 첨부된다. 마찬가지로, 메타데이터(209)의 저장 동작에서는, 데이터 어레이(207)에서 명령어 파라미터 또는 레지스터에 보유된 값 중 하나에 기초하여 확장 필드(217)에 로딩되는 메타피지컬 값으로 엔트리(215)가 할당된다.
상기 설명으로부터, 확장 태그 엔트리들에 보유되는 데이터 값은 첨부된/확장된 메타데이터 값과 매치하지 않기 때문에, 동일한 데이터 어드레스를 가지는 메타데이터 액세스조차도 메타데이터 엔트리만을 히트한다는 것을 유의한다. 확장 필드와는 다르게 데이터 태그 값들이 수정되지 않은 시나리오에서는, 데이터에 대한 메타데이터의 로컬리티(locality)가 잠재적으로 유리하다. 이 예에서, 데이터 어레이(207) 내의 세트를 선택하기 위한 어드레스의 부분들이 동일하기 때문에 엔트리(210 및 215)는 세트 연관 캐시(set associative cache)의 동일한 세트에 있을 수 있다.
도 3b를 참조하여 보면 메타피지컬 어드레스 공간에 대한 액세스를 지원하기 위한 구조의 다른 실시예가 도시된다. 여기서도 마찬가지로, TLB(325)가 가상 어드레스(301)를 물리적 어드레스로 번역해야 한다. TLB(325)는 최근 번역들을 보유하기 위해 룩업 테이블에서와 동일한 방식으로 동작한다. 또한, 최근의 번역이 발견되지 않았다면, 가상 어드레스는 종종 TLB와 연관된 처리 엘리먼트의 레지스터들에 정의된 페이지 테이블들에 기초하여 번역된다. 일 실시예에서, 데이터 어드레스를 메타데이터 액세스를 위한 메타데이터 어드레스로 번역하기 위하여 MAT(metaphysical address translation) 버퍼(350)가 제공된다. 예로서, MAT 버퍼(350)는 TLB(325)와 동일한 방식으로 동작한다. MAT 버퍼(350)는, 일 실시예에서, 레지스터에 정의된 메타피지컬 페이지 테이블 또는 기타 정보에 기초하여 데이터 어드레스(301)를 메타데이터 어드레스로 번역해야 한다.
번역 로직(350)에 연결된 캐시 룩업 로직은 메타데이터 어드레스의 태그 부분이 태그 어레이에 포함된 태그 엔트리에 보유되는 태그 값과 매치한다는 것에 응답하여 태그 엔트리에 대한 히트를 판정해야 한다. 여기서, 메타데이터 값은, 메타피지컬 어드레스 공간과 물리적 어드레스 공간의 분리를 돕기 위하여 별도로 번역된 경우에도, 또한 어드레스에 첨부될 수 있다. 결과로서, 이 예에서, 메타데이터 액세스 동작에 의해 참조되는 데이터 어드레스에 대한 히트는 메타피지컬 번역 로직(350)을 통한 어드레스(301)의 메타데이터 어드레스로의 번역 및 메타데이터 어드레스의 태그 어레이(305) 내의 캐시 태그로의 매칭을 포함한다. 이하 기술할 바와 같이, 메타피지컬 어드레스 번역 로직(350)은 압축률에 기초하여 데이터 어드레스를 메타데이터 어드레스로 번역한다.
그러나, 번역 방법과는 관계 없이, 즉, 개별적인 테이블들을 통한 번역이나 수정 없이, 일 실시예에서는, 데이터에 대한 메타데이터는 압축되는 것이다. 다시 말하면, 압축률은 메타데이터와 비교해 본 데이터의 양이다. 예를 들면, 압축률이 8, 즉, 8:1이라면, 1 비트의 메타데이터에 대하여 8 비트의 데이터를 포함하거나, 또는 1 바이트(쿼드워드)의 메타데이터에 대하여 8 바이트의 데이터를 포함한다.
도 4는 메타데이터에 대한 데이터의 압축률이 8인 실시예를 도시한다. 제어 로직은 메타데이터 액세스 동작에 의해 참조되는 데이터 어드레스(401)를 수신해야 한다. 압축에서는, log2(N)의 비트수만큼 시프트되고/거나 제거되는데, 여기서 N은 메타데이터에 대한 데이터의 압축률이다. 도시된 예에서, 압축률이 8이라면, 메타데이터 어드레스(402)에 대하여 3개의 비트가 시프트 다운되고 제거된다. 본질적으로, 메모리 내의 특정 데이터 바이트를 참조하기 위한 64 비트를 포함하는 어드레스(401)는 3 비트 만큼 줄여져서(truncated by three bits) 바이트 단위로 메모리 내의 메타데이터를 참조하는 데에 이용되는 메타데이터 바이트 어드레스(402)를 형성하고; 이로부터, 메타데이터 바이트 어드레스를 형성하기 위해 이전에 어드레스로부터 제거된 3비트를 이용하여 1 비트의 메타데이터가 선택된다.
일 실시예에서, 시프트/제거된 비트는 다른 비트로 교체된다. 도시한 바와 같이, 어드레스(401)가 시프트된 후에 차수가 높은 비트(high order bits)들이 0으로 교체된다. 그러나, 시프트/제거된 비트는 메타데이터 액세스 동작과 연관된 컨텍스트 ID(identifier)와 같은 다른 데이터 또는 정보로 교체될 수 있다. 이 예에서는 최하위 숫자 비트들이 제거되었지만, 캐시 구성, 캐시 회로 타이밍, 데이터와 메타데이터 간의 충돌의 최소화와 같은 임의의 수의 인자에 기초하여 어느 위치의 비트들이라도 제거되고 교체될 수 있다.
예를 들면, 데이터 어드레스는 log2(N)만큼 시프트되는 것이 아니라, 어드레스 비트 0:2가 0이 될 수 있다. 결과적으로, 동일한 것인 물리적 어드레스와 가상 어드레스의 비트는 상기 예에서처럼 시프트되지 않아, 비트 11: 3과 같이 수정되지 않은 비트를 가지는 뱅크 및 세트의 사전-선택을 가능하게 한다. 여기서, 제거된 비트 0:2를 이용하여 비트를 선택하는 대신에, 차수가 높은 3비트와 같이 서로 다른 3개의 비트를 이용하여 한 바이트 중에서 한 비트를 선택하는 것이 행해진다. 이 구현은 잠재적으로는 타이밍에 친화적이지만, 메타데이터가 데이터에 인접하지 않을 수도 있다. 즉, 차수가 높은 태그 값이 다르기 때문에 메타데이터에 대한 데이터의 로컬리티가 없을 수도 있다.
일 실시예에서, 어드레스(401)가 시프트되는 비트인지, 제거되는 비트인지, 또는 교체되는 비트인지던 간에, 메타피지컬 값들을 포함하는 어드레스 확장 태그가 메타데이터 어드레스(402)에 첨부된다. 도시된 바와 같이, 메타피지컬 값은 어드레스(402)가 메타데이터 어드레스임을 나타내는 논리적인 1개의 값을 포함한다. 상술한 바와 같이, 메타피지컬 값은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합에 의해, 예를 들어, 컨트롤 레지스터나 명령어 파라미터 등에 의해 정의된 임의의 고정 값을 포함할 수 있다. 또한, 상술한 바와 같이, 일 실시예에서, 비트 63-65와 같이 시프트되고 0이된 비트, 또는 도 4에 도시되지 않은 메타피지컬 값을 포함하는 확장 필드 내의 추가적인 비트가 다른 정보를 포함하도록 증가한다. 예를 들면, 코어, 컨텍스트, 또는 스레드 ID 등의 처리 엘리먼트 ID가 확장으로서 어드레스(402)에 첨부된다.
일단 적절한 확장 비트가 첨부되면, 태그 어레이(405)가, 비트 64를 가지는 확장 필드를 포함하는 메타데이터 어드레스(402)의 태그 부분을 이용하여 검색된다. 메타데이터 로드/테스트 동작 또는 기입 동작에서는, 매칭 태그값, 즉, 확장 비트 및 메타데이터 어드레스(402)와, 확장 필드(417)를 포함하는 태그 엔트리(416)와 같은 태그 어레이(405) 내의 태그 엔트리 간의 태그 매치에 포함되는 가상 어드레스의 일부를 찾기 위하여 태그 어레이(405)가 검색된다.
그러나, 메타데이터 기입 동작이 태그 어레이(405)에 대하여 미쓰라면, 즉, 메타데이터가 아직 생성되지 않았다면, 메타데이터용 캐시 메모리를 위하여 엔트리가 정상 방식으로 할당된다. 예를 들면, 메타데이터 어드레스(402) 및 LRU(Last Recently Used) 알고리즘과 같은 캐시 교체 알고리즘에 기초하여 엔트리(415)와 같은 엔트리가 선택되고, 할당되고, 메타데이터 디폴트 값으로 초기화된다. 그 결과로, 메타데이터는 잠재적으로 공간에 대하여 일반 데이터와 경쟁한다.
도 5를 참조하여 보면, 데이터를 메타데이터로 압축하고 확장 필들를 이용하는 것에 대한 다른 실시예가 도시된다. 여기서, 메타데이터의 한 비트는 64 바이트를 제시한다. 즉, 512:1의 비율이다. 상술한 바와 마찬가지로, 데이터 어드레스(501)는 데이터 어드레스(501)를 log2(512) 비트, 즉, 9 비트 만큼 시프트 다운함으로써 메타데이터 어드레스(502)를 형성하도록 번역/수정된다. 여기서도 여전히, 비트를 선택하는 데에는, 비트 0:2 대신에 비트 6:8이 이용되어, 512 비트 단위로의 선택을 통한 압축을 효율적으로 할 수 있게 해준다. 그 결과, 시프팅된 가상 어드레스의 나머지 부분, 즉 비트 63:21은 메타데이터 어드레스(502)의 태그 값(503) 파트로서 이용된다.
그러나, 어드레스(502)는 9 비트 만큼 시프트되었으므로, 어드레스(502)의 높은 차수 부분은 정보를 보유하기 위해 9개의 열린 비트 위치들을 가진다. 일 실시예에서, 9 비트는 컨텍스트 ID 및/또는 스레드 ID와 같은 식별자를 보유해야 한다. 또한, 메타피지컬 공간 값들은 이들 비트들로 보유될 수도 있거나 어드레스가 메타피지컬 공간 비트에 의해 확장될 수 있다. 상술한 검색 및 교체와 동일한 방식으로, 태그 어레이(505)는 메타데이터 태그(503)로 검색된다. 여기에서, 식별자와 어드레스 공간이 매치하지 않는다면, 히트 발견되지 않았음, 즉, 미쓰라고 판정된다. 결과적으로, 이 예는 잠재적으로 스레드 ID 및/또는 컨택스트 ID 단위로 메타데이터를 제공하는 능력을 제공한다. 그러나, 다른 스레드에 대한 모니터 메타데이터가 관련 데이터 아이템은 다른 스레드에 의해 모니터링되는지 판정하기 위해 스레드에 의해 체크되어야 하는 경우 등과 같은 일부 구현에서는 ID들 간의 액세스가 유리할 수 있다. 이 시나리오에서는, 한 스레드가 다른 스레드의 메타데이터를 히트할 수 있게 해주기 위해 마스크가 태그 비교 값에 적용될 수 있다.
일 실시예에서, 메타데이터에 대한 시프트된 어드레스가 일반적인 데이터 액세스로 멀티플렉싱된다. 여기에서, 메타피지컬 공간 값들이 멀티플렉서 입력으로서 이용되어 일반 데이터 캐시 액세스와 메타데이터 캐시 액세스 간에서의 선택을 할 수 있다. 또한, 저장 메타데이터 정보가 이전의 구현들에서의 저장 전달(store forwarding) 수행과 유사한 방식으로 메타데이터 로드들에 전달될 수 있다. 그러나, 일 구현에서는, 압축률들 간의 전달을 방지하기와 같은, 메타데이터 어드레스에 추가적인 제약이 가해질 수 있다.
일 실시예에서, 다중 동시 압축비(multiple concurrent compression ratio)가 하드웨어에 의해 지원된다. 여기서, 확장 태그 비트들 내에 압축비의 표현이 보유된다. 그 결과, 태그 어레이의 검색 중에 압축비가 고려된다. 또한, 메타데이터 저장소가 메타데이터 로드에 전달해야 하는지를 결정하기 위해 압축비가 테스트될 수 있다.
일 실시예에서, 단일 압축비를 이용하여 캐시 하드웨어가 구현되지만, 다중 압축비를 소프트웨어에 제공하기 위해 다른 하드웨어 지원을 포함한다. 일례로서, 도 4에 도시된 바와 같이, 8:1 압축비를 이용하여 캐시 하드웨어가 구현되는 것으로 가정한다. 그러나, 서로 다른 단위(granularity)에서 메타데이터에 액세스하기 위한 메타데이터 액세스 연산이 디코딩되어, 메타데이터의 디폴트 양을 판독하기 위한 마이크로-연산 및 판독된 메타데이터의 적절한 파트를 테스트하기 위한 테스트 마이크로-연산을 포함한다. 일례로서, 판독된 메타데이터의 디폴트 양은 32 비트이다. 그러나, 서로 다른 단위/8:1의 압축에 대한 테스트 연산은 판독된 32 비트의 메타데이터 중 올바른 비트들을 테스트하는데, 이는 메타데이터 어드레스의 다수의 LSB 등 소정 수의 어드레스 비트, 및/또는 컨텍스트 ID에 기초할 수 있다.
일례로서, 데이터 바이트 당 1 비트의 메타데이터에서 비정렬 데이터에 대한 메타데이터를 지원하는 구성에서, 메타데이터 어드레스의 3개의 LSB에 기초하여 판독된 메타데이터의 32 비트 중 중요도가 가장 낮은 8 비트로부터 하나의 비트가 선택된다. 1 워드의 데이터에서, 상기 어드레스의 3개의 LSB에 기초하여 판독된 메타데이터의 32 비트 중 중요도가 가장 낮은 16 비트로부터 2개의 연속하는 메타데이터의 비트가 선택되고, 계속하여 128 비트의 메타데이터 크기에 대해 16 비트에 대한 방식과 마찬가지로 진행된다.
일 실시예에서, 전술한 구성에서, 이를 통과하는 메타데이터 어드레스 비트에 기초하여 좌측 이동 연산에 의해 마스크가 생성된다. 좌측 이동 연산을 생성하기 위한 마스크의 일례로서 다음을 포함한다:
8:1 압축: 0xFFFE<<Address[2:0];
16:1 압축: 0xFFFC<<Address[2:0];
32:1 압축: 0xFFF0<<Address[2:0];
64:1 압축: 0xFF00<<Address[2:0];
128:1 압축: 0x0000<<Address[2:0].
이 마스크는 로드/판독 마이크로-연산에 의해 판독된 32 비트의 메타데이터와 비트 단위로 논리적으로 OR 연산되며, 그 결과로서의 32 비트는 그 후 메타데이터의 테스트/플래그의 설정을 행하기 위해 논리적으로 AND 연산된다.
또 다른 구현예로서, 주어진 데이터 크기에 대해 단일 비트가 이용된다 - 이에 따라, 비정렬된 데이터의 지원을 허용하지 않는다. 이러한 구성에서, 이를 통과하고 엘리먼트 ID 비트들을 처리하는 메타데이터 어드레스 비트들의 서브세트에 기초하여 좌측 이동 연산에 의해 마스크가 생성된다. 따라서, 비트-퍼-바이트 압축 데이터에서, 각각의 바이트에 대해 모든 메타데이터 비트들이 이용된다. 비트-퍼-월드(bit-per-world) 압축 메타데이터에서는, 32 바이트 데이터 피연산자에 대해, 판독된 32 비트의 메타데이터 중에서 단지 하나의 비트가 이용될 때까지는 단지 매회 2번째 비트가 이용된다. 메타데이터 스토리지가 큰 데이터 사이즈에 대해 보다 많은 스파스(sparse)(큰 압축비)를 얻는 경우, 여분의 공간을 이용하여 다중 컨텍스트에 대한 메타데이터를 나란히 저장할 기회가 존재하게 되는데, 이는 어드레스 LSB 비트 및 컨텍스트 ID(CID)의 조합에 기초하여, 판독된 32 메타데이터 비트 중에서 우측 메타데이터 비트가 선택된다는 것을 의미한다.
좌측 이동 연산을 생성하기 위한 마스크의 일례로는 다음을 포함한다:
8:1 압축: 0x0001<< 00 & Address[2:0];
16:1 압축: 0x0001<< 00 & CID[0] & Address[2:1];
32:1 압축: 0x0001<< 00 & CID[1:0] & Address[2];
64:1 압축: 0x0001<< 00 & CID[2:0];
128:1 압축: 0x0001<< 0 & CID[3:0];
256:1 압축: 0x0001<< CID[4:0].
이 마스크는 제1 마이크로-연산에 의해 판독된 32 비트의 메타데이터와 비트 단위로 논리적으로 AND 연산되며, 그 결과로서의 32 비트는 메타데이터의 테스트 및 플래그의 잠재적 설정을 행하기 위해 논리적으로 OR 연산된다.
도 6을 참조하면, 데이터의 메타데이터를 액세스하는 방법에 대한 플로우차트가 도시되어 있다. 도 6의 플로우는 실질적으로 직렬 방식으로 도시되어 있지만, 이 플로우는 적어도 부분적으로 병렬로 수행될 수 있을 뿐만 아니라, 잠재적으로 상이한 순서로 수행될 수도 있다. 플로우(620)에서, 주어진 데이터 아이템에 대해 데이터 어드레스를 참조하는 메타데이터 연산에 인카운터(encounter)된다. 메타데이터 연산의 예로는 로드/테스트 및 저장/기입/클리어 연산들 또는 마이크로-연산들을 포함한다. 그러나, 메타데이터 액세스 연산은 메타데이터에 액세스하는 명시적 소프트웨어 명령어들/연산들 외에, 관련 메타데이터이 업데이트를 암시적으로 요구하는 데이터 아이템에의 액세스 등의 보다 복잡한 명령어의 일부로서 디코딩되는 암시적 마이크로-연산들일 수도 있다. 또한, 구현예들은 보호링 변경(protection ring transition), 상이한 프로세서 연산 모드로의 변경, 또는 메모리 페이지의 리맵핑 등 소정의 시스템 이벤트에 기초하여, 주어진 컨텍스트, 스레드 또는 프로세서에 대해 모든 메타데이터를 벌크-클리어(bulk-clear)하도록 선택할 수 있다.
참조된 데이터 어드레스로부터 메타데이터 어드레스가 결정된다. 메타데이터 어드레스를 결정하는 예로 다음을 포함한다:
데이터 어드레스를, 물리적 어드레스 변환에 가상인 노멀 데이터를 이용한 데이터 어드레스로 변환하고, 데이터 어드레스에 메타피지컬인(metaphysical) 확장자를 부가하여 메타데이터 어드레스를 형성하는 것;
가상 데이터 어드레스에 메타피지컬인 확장자를 부가하여 메타데이터 어드레스를 형성하는 것;
데이터 어드레스를, 메타피지컬인 변환 테이블 로직을 이용하여 물리적 메타데이터 어드레스로 변환하고, 물리적 메타데이터 어드레스에 메타피지컬인 확장자를 부가하여 메타데이터 어드레스를 형성하는 것.
또한, 변환은 각각의 압축비에 대해 메타데이터를 분리하여 저장하도록 데이터의 압축비를 메타데이터에 포함시킬 수 있다, 즉 압축비에 기초할 수 있다.
플로우 630에서, 메타데이터 어드레스에 기초하여 캐시 메모리의 메타데이터 엔트리가 결정된다. 일례로서, 태그 어레이를 검색하는 데에 메타데이터 어드레스의 태그 부분이 이용된다. 메타피지컬 값을 포함하는 태그 부분이 태그 엔트리와 일치하지 않는 경우, 누락이 발생한다. 일 실시예에서, 캐시에 누락이 발생한 서비스에 스눕(snoop) 요청을 발행하는 대신, 메타데이터가 캐시 메모리 내에만 보유된 소실 메타데이터인 경우에, 캐시 도메인 외부에의 요청없이 누락이 국소적으로 제공된다. 그 결과, 엔트리가 노멀 캐시 할당 정책에 따라 그 엔트리 내에 보유된 적절한 메타데이터 태그와 함께 할당되며, 데이터 스토리지 엘리먼트가 디폴트 메타데이터 값에 의해 초기화된다. 결과적으로, 연관된 데이터 아이템들과 관련하여 메타데이터의 타이밍 및 국소성(locality)이 마찬가지로 잠재적으로 향상된다. 반면, 히트가 발생하는 경우, 메타데이터 엔트리는 바로 결정된다.
엔트리의 결정이 히트 또는 누락을 통해 그리고 엔트리의 할당을 통해 결정되는지에 따라, 메타데이터가 적절하게 액세스된다. 예를 들어, 로드 또는 테스트 연산에서, 메타데이터가 판독된다. 반면, 저장 연산에서는, 메타데이터는 대응하는 메타데이터 엔트리에서 업데이트된다. 따라서, 알 수 있는 바와 같이, 로컬 캐시 메모리 내에서 고가의 부가 스토리지 구조 또는 캐시 메모리의 데이터 어레이에 대한 주석의 비트없이 소실되는 방식으로 메타데이터가 보유될 수 있다. 또한, 메타데이터가 압축 방식(즉, 데이터의 메타데이터에 대한 압축비)으로 보유될 수 있다. 하드웨어가 단일 또는 다중의 압축비로 구현할 수 있으며, 어느 경우에든, 소프트웨어에 다중 압축비를 제공한다.
본 명세서에서 사용된 모듈은 임의의 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 지칭한다. 분리하여 도시된 모듈 경계들은 흔히 변하고 잠재적으로 오버랩된다. 예를 들어, 제1 및 제2 모듈이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 고유할 수 있지만, 잠재적으로는 일부 독립 하드웨어, 소프트웨어, 또는 펌웨어를 보유한다. 일 실시예에서, 로직이라는 용어의 사용은 트랜지스터, 레지스터 등의 하드웨어, 또는 프로그래밍가능한 로직 디바이스 등의 그 외 하드웨어를 포함한다. 그러나, 다른 실시예에서, 로직은 또한 소프트웨어 또는 펌웨어나 마이크로-코드 등의 하드웨어와 통합되는 코드를 포함한다.
본 명세서에서 사용되는 바와 같이, 값이란 숫자, 상태, 논리 상태, 또는 이진 논리 상태의 임의의 공지된 표현을 포함한다. 주로, 논리 레벨, 논리 값, 또는 논리적 값의 사용은 단순히 이진 논리 상태들을 나타내는 1 및 0을 지칭한다. 예를 들어, 1은 높은 논리 레벨을 지칭하며, 0은 낮은 논리 레벨을 지칭한다. 일 실시예에서, 트랜지스터, 또는 플래시 셀 등의 스토리지 셀은 단일 논리 값 또는 다중 논리 값을 보유할 수 있다. 그러나, 컴퓨터 시스템에서 값들의 다른 표현들이 이용되었다. 예를 들어, 십진수 10이 또한 이진값 1010 및 십육진수 문자 A로서 표현될 수도 있다. 따라서, 값은 컴퓨터 시스템 내에 보유될 수 있는 임의의 정보 표현을 포함한다.
또한, 상태들은 값들 또는 값의 일부에 의해 표현될 수 있다. 일례로서, 논리 1 등의 제1 값은 디폴트 또는 초기 상태를 나타낼 수 있는 반면, 논리 0 등의 제2 값은 넌-디폴트 상태를 나타낼 수 있다. 또한, 일 실시예에서, 재설정 및 설정이라는 용어는 디폴트 및 업데이트된 값 또는 상태를 각각 지칭한다. 예를 들어, 디폴트값은 잠재적으로 높은 논리 값(즉, 재설정)을 포함하는 반면, 업데이트된 값은 잠재적으로 낮은 논리 값(즉, 설정)을 포함한다. 임의의 수의 상태들을 나타내기 위해 값들의 임의의 조합이 이용될 수 있다.
전술한 방법들, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들이 프로세싱 엘리먼트에 의해 실행가능한 머신-액세스가능 또는 머신 판독가능 매체 상에 저장된 명령어들 또는 코드를 통해 구현될 수 있다. 머신-액세스가능/판독가능 매체는 컴퓨터 또는 전자 시스템 등의 머신에 의해 판독가능한 형태로 정보를 제공하는(즉, 저장하고 및/또는 전송하는) 임의의 메카니즘을 포함한다. 예를 들어, 머신-액세스가능 매체는 SRAM(static RAM) 또는 DRAM(dynamic RAM) 등의 RAM(random-access memory); ROM; 자성 또는 광학 저장 매체; 플래시 메모리 디바이스; 전기 저장 장치, 광학 저장 장치, 음향 저장 장치 또는 그 외 형태의 전파 신호(예컨대, 반송파, 적외선 신호, 디지털 신호) 저장 장치 등을 포함한다. 예를 들어, 머신은 전파된 신호에 전달되는 정보를 보유할 수 있는 매체로부터, 반송파 등의 전파 신호의 수신을 통해 저장 장치에 액세스할 수 있다.
본 명세서 전체를 통해 언급된 "일 실시예" 또는 "실시예"는 그 실시예와 관련하여 기술된 특유의 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되어 있다는 것을 의미한다. 따라서, 본 명세서 전체를 통해 다양한 부분에서 "일 실시예에서", "실시예에서"라는 문구가 모두 동일한 실시예를 지칭하는 것은 아니다. 또한, 특유의 특징, 구조, 또는 특성은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
전술한 명세서에서, 특정 실시예를 참조하여 상세한 설명이 기술되었다. 그러나, 첨부된 청구범위에 개시된 본 발명의 보다 광범위한 사상 및 범위 내에서 다양한 변경 및 개조가 행해질 수 있다는 것은 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아닌 예시적인 의미로 간주되어야 한다. 또한, 전술한 실시예의 이용 및 그 외 예시적인 언어는 반드시 동일한 실시예 또는 동일한 예를 지칭하는 것이 아니며, 상이한 실시예 및 구별되는 실시예, 및 잠재적으로 동일한 실시예를 지칭할 수 있다.

Claims (37)

  1. 데이터 아이템과 관련된 소실된 메타데이터를 보유하기 위한 제1 데이터 엔트리를 포함하는 데이터 캐시 메모리 - 상기 데이터 아이템은 상기 데이터 캐시 메모리의 제2 데이터 엔트리 내에 보유됨 -
    를 포함하는 장치.
  2. 제1항에 있어서,
    상기 제1 데이터 엔트리가 메타데이터를 보유하고 있다는 것을 나타내는 메타데이터 값을 보유하기 위한 상기 제1 데이터 엔트리와 관련된 제1 확장 필드, 및 상기 제2 데이터 엔트리가 데이터를 보유하고 있다는 것을 나타내는 데이터 값을 보유하기 위한 상기 제2 데이터 엔트리와 관련된 제2 확장 필드를 더 포함하는 장치.
  3. 제2항에 있어서,
    상기 제1 확장 필드는 상기 소실된 메타데이터와 관련된 프로세싱 엘리먼트를 나타내는 프로세싱 엘리먼트 ID(identifier)를 더 보유하는 장치.
  4. 제1항에 있어서,
    상기 데이터 아이템과 관련된 상기 소실된 메타데이터는 상기 데이터 아이템에 대한 속성을 포함하고, 상기 속성은 판독 모니터 속성, 기입 모니터 속성, 및 버퍼링 속성으로 이루어진 그룹으로부터 선택되는 장치.
  5. 제2항에 있어서,
    상기 제1 확장 필드는 상기 제1 데이터 엔트리에 대응하는 제1 태그 엔트리 내에 보유되며, 상기 제2 확장 필드는 상기 제2 데이터 엔트리에 대응하는 제2 태그 엔트리 내에 보유되는 장치.
  6. 제5항에 있어서,
    상기 메타데이터 값을 보유하는 상기 제1 확장 필드를 포함하는 제1 태그 엔트리의 값에 기초하여, 상기 소실된 메타데이터에 액세스하도록 상기 데이터 아이템과 관련된 어드레스를 참조하는 메타데이터 액세스 연산에 응답하여, 상기 제1 데이터 엔트리에 대응하는 제1 태그 엔트리를 배치하기 위해 상기 제1 태그 엔트리 및 상기 제2 태그 엔트리를 포함하는 태그 어레이를 검색하기 위한 캐시 컨트롤 로직을 더 포함하는 장치.
  7. 제5항에 있어서,
    상기 제1 태그 엔트리는 상기 소실된 메타데이터와 관련된 프로세싱 엘리먼트 ID 및 상기 데이터 아이템과 관련된 어드레스의 일부를 더 보유하는 장치.
  8. 제7항에 있어서,
    상기 소실된 메타데이터에 액세스하도록 상기 데이터 아이템에 대해 어드레스를 참조하는 메타데이터 액세스 연산을 수신하기 위한 캐시 컨트롤 로직을 더 포함하며, 상기 캐시 컨트롤 로직은 압축비에 기초하여 상기 어드레스를 다수의 비트만큼 이동시키고, 상기 프로세싱 엘리먼트 ID를 상기 어드레스에 부가하고, 상기 메타데이터 값을 상기 어드레스에 부가하여 메타데이터 어드레스를 형성하며, 상기 컨트롤 로직은 상기 제1 태그 엔트리를 배치하도록 상기 메타데이터 어드레스의 태그 부분과 함께 상기 제1 태그 엔트리 및 상기 제2 태그 엔트리를 포함하는 태그 어레이를 더 검색하는 장치.
  9. 제1항에 있어서,
    상기 제1 데이터 엔트리가 메타데이터를 보유하고 있다는 것을 나타내는 상기 메타데이터 값을 보유하는 상기 제1 데이터 엔트리와 관련된 상기 제1 확장 필드에 응답하여, 제거(eviction)를 위한 제1 데이터 엔트리를 선택하고, 상기 소실된 메타데이터의 상위 레벨 메모리로의 재기입(write-back)을 개시하지 않게 하기 위한 캐시 컨트롤 로직을 더 포함하는 장치.
  10. 제1 데이터 엔트리 및 제2 데이터 엔트리를 포함하는 캐시 메모리의 데이터 어레이; 및
    상기 데이터 엔트리가 데이터를 보유하고 있다는 것을 나타내는 물리적 값, 및 상기 데이터 엔트리가 상기 데이터 어레이의 제2 데이터 엔트리 내에 보유된 데이터 아이템에 대한 메타데이터를 보유하고 있다는 것을 나타내는 메타피지컬(metaphysical) 값을 보유하기 위한 상기 제1 데이터 엔트리와 관련된 태그 엔트리를 포함하는 상기 캐시 메모리의 태그 어레이
    를 포함하는 장치.
  11. 제10항에 있어서,
    메타데이타 유형을 갖는 액세스 연산에 의해 참조되는 어드레스를 수신하고, 상기 메타데이터 유형을 갖는 액세스에 응답하여 상기 메타피지컬 값을 상기 어드레스에 부가하여 메타데이터 어드레스를 형성하고, 상기 태그 엔트리에 보유된 태그 값과 일치하는 메타피지컬 값을 포함하는 메타데이터 어드레스의 태그 부분에 응답하여 상기 제1 데이터 엔트리에 대한 히트(hit)를 판정하도록 상기 태그 어레이에 결합되는 컨트롤 로직을 더 포함하는 장치.
  12. 제11항에 있어서,
    상기 데이터 엔트리가 메타데이터를 보유하고 있다는 것을 나타내는 상기 메타피지컬 값을 보유하기 위한 상기 제1 태그 엔트리는 상기 데이터 엔트리가 메타데이터를 보유하고 있다는 것을 나타내는 제1 논리 값에 설정된 어드레스 확장 비트를 보유하기 위한 제1 태그 엔트리를 포함하고, 상기 메타피지컬 값을 상기 어드레스에 부가하여 메타데이터 어드레스를 형성하기 위한 상기 컨트롤 로직은 제1 논리 값을 상기 어드레스에 부가하여 상기 메타데이터 어드레스를 형성하기 위한 컨트롤 로직을 포함하는 장치.
  13. 제10항에 있어서,
    상기 데이터 아이템과 관련된 어드레스를 참조하는 메타데이터 유형의 액세스 연산을 수신하고, 상기 어드레스를 메타데이터 어드레스로 변환하기 위한 변환 로직;
    상기 태그 어레이에 포함되는 상기 태그 엔트리 내에 보유된 태그 값과 일치하는 상기 메타데이터 어드레스의 태그 부분에 응답하여, 상기 태그 엔트리에 대한 히트를 판정하기 위한 상기 변환 로직에 결합된 캐시 룩업 로직; 및
    상기 제1 데이터 엔트리와 관련된 상기 태그 엔트리에 대한 히트를 판정하는 상기 캐시 룩업 로직에 응답하여, 상기 제1 데이터 엔트리에 대해 상기 액세스 연산을 수행하기 위한 상기 캐시 룩업 로직에 결합된 컨트롤 로직을 더 포함하는 장치.
  14. 제13항에 있어서,
    상기 어드레스를 상기 메타데이터 어드레스로 변환하기 위한 상기 변환 로직은 압축비 N에 기초하며, N은 메타데이터량에 대한 데이터량인 장치.
  15. 제14항에 있어서,
    압축비 N에 기초하여 상기 어드레스를 상기 메타데이터 어드레스로 변환하기 위한 상기 변환 로직은, 상기 어드레스를 log2(N) 비트만큼 이동시키고, 상기 메타피지컬 값을 상기 어드레스에 부가하여 상기 메타데이터 어드레스를 형성하기 위한 변환 로직을 포함하는 장치.
  16. 제15항에 있어서,
    상기 액세스 연산과 관련된 프로세싱 엘리먼트에 대한 프로세싱 엘리먼트 ID를 보유하기 위한 컨트롤 레지스터를 더 포함하고, 압축비 N에 기초하여 상기 어드레스를 상기 메타데이터 어드레스로 변환하기 위한 상기 변환 로직은, 상기 어드레스로부터 log2(N) 개의 비트를 제거하고, 제거된 log2(N) 비트의 적어도 일부를 상기 프로세싱 엘리먼트 ID로 대체하는 것을 더 포함하는 장치.
  17. 제13항에 있어서,
    메타피지컬 페이지 테이블들을 정의하기 위한 레지스터들을 더 포함하고, 상기 어드레스를 상기 메타데이터 어드레스로 변환하기 위한 상기 변환 로직은 레지스터들에 정의된 메타피지컬 페이지 테이블들에 기초하여 상기 어드레스를 상기 메타데이터 어드레스로 변환하기 위한 MTLB(meta-physical translation lookaside buffer)를 포함하는 장치.
  18. 프로세서로서,
    캐시 메모리; 및
    상기 캐시 메모리에 결합된 로직 - 상기 로직은, 데이터 아이템을 참조하기 위한 어드레스의 적어도 일부를 수신하고, 상기 어드레스의 일부를 메타피지컬 확장자(metaphysical extension)와 연관시키고, 상기 어드레스 및 상기 메타피지컬 확장자에 기초하여 상기 캐시 메모리의 데이터 아이템 엔트리 내에 보유된 데이터 아이템과 관련된 메타데이터에 액세스하기 위한 캐시메모리의 메타데이터 엔트리를 결정함 -
    을 포함하는 프로세서.
  19. 제18항에 있어서,
    상기 데이터 아이템을 참조하기 위한 상기 어드레스의 적어도 일부를 수신하는 상기 로직은 상기 어드레스를 참조하는 메타데이터 액세스 연산을 수신하는 컨트롤 로직에 응답하는 프로세서.
  20. 제18항에 있어서,
    상기 어드레스의 일부를 메타피지컬 확장자와 연관시키는 상기 로직은 상기 메타피지컬 확장자를 상기 어드레스의 일부의 MSB(Most Significant Bit)에 부가하는 로직을 포함하는 프로세서.
  21. 제20항에 있어서,
    상기 메타피지컬 확장자는 단일의 메타피지컬 확장 비트를 포함하는 프로세서.
  22. 제20항에 있어서,
    상기 메타피지컬 확장자는 복수의 메타피지컬 확장 비트를 포함하는 프로세서.
  23. 제22항에 있어서,
    상기 복수의 메타피지컬 확장 비트의 각각은 개별적인 메타피지컬 어드레스 공간에 대응하는 프로세서.
  24. 제22항에 있어서,
    상기 복수의 메타피지컬 확장 비트는 단일의 메타피지컬 식별자 비트 및 복수의 프로세싱 엘리먼트 식별자 비트를 포함하는 프로세서.
  25. 제18항에 있어서,
    상기 데이터 아이템과 관련된 메타데이터는 상기 캐시 메모리로부터 상기 메타데이터 엔트리의 제거 시에 소실되며, 상기 메타데이터는 상기 데이터 아이템에 대한 속성들을 포함하는 프로세서.
  26. 캐시 메모리의 데이터 어레이;
    데이터의 메타데이터에 대한 압축비에 기초하여, 상기 데이터 어레이의 데이터 엔트리 내의 데이터 아이템과 관련된 데이터 어드레스를 상기 캐시 메모리 내의 상기 데이터 어레이의 메타데이터 엔트리와 관련된 메타데이터 어드레스로 변환하기 위한 어드레스 변환 로직; 및
    상기 어드레스 변환 로직 및 상기 데이터 어레이에 결합되어, 상기 데이터 어드레스 및 상기 데이터 어드레스를 변환하는 상기 어드레스 변환 로직을 참조하는 메타데이터 액세스 연산을 수신하는 것에 응답하여, 상기 데이터 어레이의 상기 메타데이터 엔트리에 액세스하기 위한 컨트롤 로직
    을 포함하는 시스템.
  27. 제26항에 있어서,
    상기 어드레스 변환 로직은 메타피지컬 페이지 테이블을 정의하기 위한 스토리지 및 상기 압축비에 기초한 상기 메타피지컬 페이지 테이블을 이용하여 상기 데이터 어드레스를 상기 메타데이터 어드레스로 변환하는 메타피지컬 변환 버퍼를 포함하는 시스템.
  28. 제26항에 있어서,
    상기 어드레스 변환 로직이 데이터의 메타데이터에 대한 압축비에 기초하여 상기 데이터 어드레스를 상기 메타데이터 어드레스로 변환하는 것은, 상기 데이터 어드레스를 2를 밑으로 하는 비트 압축비의 로그만큼 아래로 이동시켜 이동된 어드레스를 형성하고, 상기 이동된 어드레스를 메타피지컬 확장값과 연관시켜 상기 메타데이터 어드레스를 형성하는 것을 포함하는 시스템.
  29. 제28항에 있어서,
    상기 어드레스 변환 로직이 데이터의 메타데이터에 대한 압축비에 기초하여 상기 데이터 어드레스를 상기 메타데이터 어드레스로 변환하는 것은, 상기 이동된 어드레스를 메타피지컬 확장값과 연관시켜 상기 메타데이터 어드레스를 형성하기 전에, 프로세싱 엘리먼트 식별자를 상기 이동된 어드레스와 연관시키는 것을 더 포함하는 시스템.
  30. 캐시 메모리의 데이터 엔트리 내에 보유된 데이터 아이템에 대한 데이터 어드레스를 참조하는 메타데이터 연산에 인카운터되는 단계;
    상기 데이터 어드레스로부터 메타데이터 어드레스를 판정하는 단계;
    상기 메타데이터 어드레스에 기초하여 상기 캐시 메모리의 메타데이터 엔트리를 판정하는 단계; 및
    상기 메타데이터 엔트리를 판정하는 것에 응답하여, 상기 메타데이터 엔트리 내의 메타데이터에 액세스하는 단계
    를 포함하는 방법.
  31. 제30항에 있어서,
    상기 데이터 어드레스로부터 메타데이터 어드레스를 판정하는 단계는, 상기 데이터 어드레스를 데이터 어드레스로 변환하는 단계 및 상기 데이터 어드레스에 메타피지컬 확장자를 부가하여 상기 메타데이터 어드레스를 형성하는 단계를 포함하는 방법.
  32. 제30항에 있어서,
    상기 데이터 어드레스로부터 메타데이터 어드레스를 판정하는 단계는, 메타피지컬 변환 테이블 로직을 이용하여 상기 데이터 어드레스를 물리적 메타데이터 어드레스로 변환하는 단계 및 상기 물리적 메타데이터 어드레스에 메타피지컬 확장자를 부가하여 상기 메타데이터 어드레스를 형성하는 단계를 포함하는 방법.
  33. 제32항에 있어서,
    메타피지컬 변환 테이블 로직을 이용하여 상기 데이터 어드레스를 물리적 메타데이터 어드레스로 변환하는 단계는, 데이터의 메타데이터에 대한 압축비에 기초하는 방법.
  34. 제30항에 있어서,
    상기 데이터 어드레스는 가상 데이터 어드레스를 포함하고, 상기 데이터 어드레스로부터 메타데이터 어드레스를 판정하는 단계는, 상기 가상 데이터 어드레스에 메타피지컬 확장자를 부가하여 상기 메타데이터 어드레스를 형성하는 단계를 포함하는 방법.
  35. 제30항에 있어서,
    상기 메타데이터 연산은 신규의 데이터를 저장하기 위한 저장 메타데이터 연산을 포함하고, 상기 메타데이터 엔트리 내의 메타데이터에 액세스하는 단계는 상기 신규의 데이터를 상기 메타데이터 엔트리에 저장하는 단계를 포함하는 방법.
  36. 제30항에 있어서,
    상기 메타데이터 연산은 상기 메타데이터를 로드하기 위한 로드 메타데이터 연산을 포함하고, 상기 메타데이터 엔트리 내의 메타데이터에 액세스하는 단계는 상기 메타데이터를 상기 메타데이터 엔트리로부터 로드하는 단계를 포함하는 방법.
  37. 제30항에 있어서,
    상기 메타데이터는 상기 데이터 아이템에 대한 속성, 상기 데이터 아이템에 대한 프로세싱 엘리먼트 식별자, 및 상기 데이터 아이템에 대한 백업 데이터의 위치로 이루어진 그룹으로부터 선택되는 방법.
KR1020117007691A 2008-12-30 2009-12-15 하드웨어에서 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간 KR101299317B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/346,500 US8806101B2 (en) 2008-12-30 2008-12-30 Metaphysical address space for holding lossy metadata in hardware
US12/346,500 2008-12-30
PCT/US2009/067983 WO2010077842A2 (en) 2008-12-30 2009-12-15 Metaphysical address space for holding lossy metadata in hardware

Publications (2)

Publication Number Publication Date
KR20110050719A true KR20110050719A (ko) 2011-05-16
KR101299317B1 KR101299317B1 (ko) 2013-08-26

Family

ID=42286183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117007691A KR101299317B1 (ko) 2008-12-30 2009-12-15 하드웨어에서 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간

Country Status (6)

Country Link
US (1) US8806101B2 (ko)
JP (1) JP5451776B2 (ko)
KR (1) KR101299317B1 (ko)
CN (1) CN101770429B (ko)
TW (1) TWI446261B (ko)
WO (1) WO2010077842A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150079408A (ko) * 2013-12-31 2015-07-08 삼성전자주식회사 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8825936B2 (en) * 2009-08-03 2014-09-02 Quantum Corporation Systems and methods for increasing data volume sparseness
US8533440B2 (en) 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US10223204B2 (en) 2011-12-22 2019-03-05 Intel Corporation Apparatus and method for detecting and recovering from data fetch errors
US8886883B1 (en) * 2012-03-31 2014-11-11 Emc Corporation System and method for improving cache performance
CN103207844B (zh) * 2013-04-18 2017-06-06 上海云间半导体科技有限公司 缓存系统及缓存访问方法
US9411745B2 (en) * 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9514061B1 (en) * 2015-05-20 2016-12-06 Qualcomm Incorporated Method and apparatus for cache tag compression
US9507628B1 (en) 2015-09-28 2016-11-29 International Business Machines Corporation Memory access request for a memory protocol
SG11201803730TA (en) * 2015-11-04 2018-06-28 Samsung Electronics Co Ltd Systems and methods for implementing coherent memory in a multiprocessor system
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10607665B2 (en) * 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10191791B2 (en) * 2016-07-02 2019-01-29 Intel Corporation Enhanced address space layout randomization
US20180088829A1 (en) * 2016-09-29 2018-03-29 Qualcomm Incorporated Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
TWI661300B (zh) * 2017-09-15 2019-06-01 旺宏電子股份有限公司 記憶體的資料管理方法及記憶體裝置
GB2568059B (en) * 2017-11-02 2020-04-08 Advanced Risc Mach Ltd Method for locating metadata
US11150910B2 (en) 2018-02-02 2021-10-19 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
TW201937393A (zh) 2018-02-02 2019-09-16 美商多佛微系統公司 用於安全初始化的策略編輯之系統和方法
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
CN110865945B (zh) * 2018-08-28 2022-11-11 上海忆芯实业有限公司 存储设备的扩展地址空间
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
EP3881190A1 (en) * 2018-11-12 2021-09-22 Dover Microsystems, Inc. Systems and methods for metadata encoding
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
WO2020155431A1 (en) * 2019-01-31 2020-08-06 Huawei Technologies Co., Ltd. Method and apparatus for accessing caches in clustered storage systems
US11656995B2 (en) * 2019-11-26 2023-05-23 Micron Technology, Inc. Dynamic access granularity in a cache media
US11366774B2 (en) * 2020-09-24 2022-06-21 Adesto Technologies Corporation Memory latency reduction in XIP mode
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) * 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6549996B1 (en) * 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US20030005219A1 (en) * 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7032125B2 (en) * 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7047390B2 (en) * 2003-06-17 2006-05-16 International Business Machines Corporation Method, system, and program for managing a relationship between one target volume and one source volume
FR2859307A1 (fr) * 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4753549B2 (ja) * 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
CN100553209C (zh) * 2004-08-19 2009-10-21 诺基亚公司 为控制网络上多媒体数据的部署而对目录服务器数据进行高速缓存
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US7533215B2 (en) * 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8225297B2 (en) * 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8001538B2 (en) * 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US7991965B2 (en) * 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US8195832B2 (en) * 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
JP2008305424A (ja) * 2008-07-28 2008-12-18 Hitachi Ltd ディスクシステムとそのキャッシュ制御方法
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) * 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150079408A (ko) * 2013-12-31 2015-07-08 삼성전자주식회사 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템

Also Published As

Publication number Publication date
US20100169382A1 (en) 2010-07-01
US8806101B2 (en) 2014-08-12
KR101299317B1 (ko) 2013-08-26
CN101770429A (zh) 2010-07-07
TW201030609A (en) 2010-08-16
CN101770429B (zh) 2014-09-10
WO2010077842A3 (en) 2010-09-23
WO2010077842A2 (en) 2010-07-08
JP2012512491A (ja) 2012-05-31
TWI446261B (zh) 2014-07-21
JP5451776B2 (ja) 2014-03-26

Similar Documents

Publication Publication Date Title
KR101299317B1 (ko) 하드웨어에서 손실성 메타데이터를 유지하기 위한 메타피지컬 어드레스 공간
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
US8799582B2 (en) Extending cache coherency protocols to support locally buffered data
US10387324B2 (en) Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
US8769212B2 (en) Memory model for hardware attributes within a transactional memory system
KR101370314B1 (ko) 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US20080005504A1 (en) Global overflow method for virtualized transactional memory
US20090216950A1 (en) Push for Sharing Instruction
TWI723069B (zh) 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee