KR20200002932A - 자격 메타데이터를 관리하는 장치 및 방법 - Google Patents
자격 메타데이터를 관리하는 장치 및 방법 Download PDFInfo
- Publication number
- KR20200002932A KR20200002932A KR1020197034067A KR20197034067A KR20200002932A KR 20200002932 A KR20200002932 A KR 20200002932A KR 1020197034067 A KR1020197034067 A KR 1020197034067A KR 20197034067 A KR20197034067 A KR 20197034067A KR 20200002932 A KR20200002932 A KR 20200002932A
- Authority
- KR
- South Korea
- Prior art keywords
- entitlement
- data
- data block
- metadata
- cache
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000003860 storage Methods 0.000 claims abstract description 139
- 230000015654 memory Effects 0.000 claims abstract description 115
- 230000004048 modification Effects 0.000 claims abstract description 102
- 238000012986 modification Methods 0.000 claims abstract description 102
- 238000012797 qualification Methods 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 28
- 239000003550 marker Substances 0.000 claims description 75
- 238000012545 processing Methods 0.000 claims description 19
- 239000003795 chemical substances by application Substances 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 12
- 230000005055 memory storage Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims 2
- 235000019580 granularity Nutrition 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101100270992 Caenorhabditis elegans asna-1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000013519 translation 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/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- 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/3816—Instruction alignment, e.g. cache line crossing
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional 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)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
Abstract
캐시 스토리지를 포함하는 장치와 이와 같은 캐시 스토리지를 작동하는 방법이 제공된다. 캐시 스토리지 내부의 데이터 블록들은, 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 데이터 블록과 관련되어 기억된 자격 메타데이터를 갖는다. 적어도 한가지 종류의 자격은 제한 포인터이다. 캐시 스토리지 내부의 데이터 블록에 대한 기록에 응답하여, 자격 메타데이터 수정 마커가 데이터 블록과 관련하여 설정되어, 데이터 블록이 캐시 스토리지에 기억된 이후에 데이터 블록과 관련된 자격 메타데이터가 변경되었는지 여부를 표시한다. 이것은 시스템의 보안을 지원하여, 의도하지 않는 경우에, 데이터 값으로부터 자격으로의 데이터 블록의 사용의 수정이 일어날 수 없도록 한다. 자격 메타데이터가 메모리에 다른 데이터와 별개로 기억될 때, 메모리에 대한 더 적은 수의 액세스가 행해질 수 있으므로, 효율도 얻어진다.
Description
본 발명은, 자격(capability) 메타데이터를 관리하는 장치 및 방법에 관한 것이다.
자격 기반의 아키텍처에서는, 지정된 처리에 대해 일정한 자격이 정의되고, 이 정의된 자격을 벗어나는 동작을 행하는 시도가 존재하는 경우에 에러가 유발될 수 있다. 자격은 다양한 형태를 취할 수 있지만, 한가지 종류의 자격은 제한 포인터(bounded pointer)("팻 포인터(fat pointer)"로 불린다)이다. 제한 포인터에 대해, 예를 들어, 액세스할 데이터 값이나 실행할 명령의 어드레스를 식별하거나 이 어드레스를 판정하기 위해 사용된다. 그러나, 포인터 값은 이 포인터 값을 사용할 때 허용가능한 어드레스들의 범위를 나타내는 관련된 범위 정보를 더 가질 수 있다. 이것은, 포인터로부터 결정된 어드레스가 특정한 경계값 내부에 유지되어 보안이나 거동의 기능적 정확성을 유지하도록 보장하는데 유용할 수 있다. 더구나, 제한 포인터의 포인터 값과 관련하여 특정한 허가/제한 정보가 지정될 수도 있다. 제한 포인터에 대한 범위 정보와 허가/제한 정보는 자격 정보로 불릴 수도 있으며, 자격 기반의 아키텍처 내에서 이와 같은 제한 포인터(그것의 관련된 자격 정보를 포함)는 자격으로 불릴 수도 있다. 자격 메타데이터는 장치의 기억 소자에 기억된 데이터와 관련하여 기억될 수도 있다. 자격 메타데이터를 사용하여, 관련된 데이터 블록이 자격을 지정하는지, 또는 그 대신에 자격을 표시하지 않는 데이터(여기에서는 범용 데이터로도 불린다)를 포함하는지 식별할 수 있다. 자격 메타데이터는 특정한 추가 정보를 더 지정할 수 있다. 지정된 데이터를 액세스할 때, 관련된 자격 메타데이터를 참조하여, 데이터 블록이 자격을 나타내는지 또는 범용 데이터를 나타내는지 판정할 수 있다. 이것들은 자격 기반의 아키텍처를 채용하는 시스템의 기억 소자 내부의 자격 메타데이터를 관리하는 개량된 메카니즘을 제공할 필요성을 갖고 있다.
본 발명에서 설명하는 일 실시예에서는, 장치로서, 데이터 블록들을 기억하는 캐시 스토리지를 구비하고, 각각의 데이터 블록은, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 데이터 블록과 관련되어 기억된 자격 메타데이터를 갖고, 적어도 한가지 종류의 자격은 제한 포인터이고, 상기 장치는, 상기 캐시 스토리지에 기억된 데이터 블록에 대한 기록에 응답하여 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 캐시 제어회로를 더 구비하고, 상기 자격 메타데이터 수정 마커의 값은, 상기 캐시 스토리지에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 장치가 제공된다.
본 발명에서 설명하는 일 실시예에서는, 캐시 스토리지의 작동방법으로서, 상기 캐시 스토리지에 데이터 블록들을 기억하는 단계와, 각각의 데이터 블록과 관련하여, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 자격 메타데이터를 기억하는 단계를 포함하고, 적어도 한가지 종류의 자격은 제한 포인터이고, 상기 작동방법은, 상기 캐시 스토리지에 기억된 데이터 블록에 대한 기록에 응답하여, 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 단계를 더 포함하고, 상기 자격 메타데이터 수정 마커의 값은, 상기 캐시 스토리지에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 작동방법이 제공된다.
본 발명에서 설명하는 일 실시예에서는, 장치로서, 데이터 블록들을 캐싱하는 수단과, 각각의 데이터 블록과 관련하여, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 자격 메타데이터를 기억하는 수단을 구비하고, 적어도 한가지 종류의 자격은 제한 포인터이고, 상기 장치는, 데이터 블록에 대한 기록에 응답하여, 데이터 블록들을 캐싱하는 상기 수단에 기억된 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 수단을 더 구비하고, 상기 자격 메타데이터 수정 마커의 값은, 데이터 블록들을 캐싱하는 상기 수단에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 장치가 제공된다.
이하, 다음의 첨부도면에 도시된 실시예를 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 일 실시예에 따른 장치를 개략적으로 나타낸 것이다.
도 2는 제한 포인터 기억 소자들의 세트 내부의 포인터 값을 설정하거나 액세스하려는 시도가 존재하는 경우에 에러가 유발되는 명령들의 종류의 예를 나타낸 것으로, 이때 포인터 값을 사용하여 관련된 범위 정보에 의해 표시된 범위 외부의 어드레스를 지정한다.
도 3은 일 실시예에 따른, 제한 포인터와 관련된 자격 태그 비트의 사용을 예시한 것이다.
도 4는 일 실시예에 따른, 관련된 자격 메타데이터 정보와 함께, 제한 포인터의 형태를 취하는 자격 내부에 설치된 다양한 필드들을 개략적으로 나타낸 것이다.
도 5a는 일 실시예에 따라 관련된 자격 메타데이터와 자격 태그 더티(dirty) 비트와 함께 2개의 값이 기억되는 예시적인 캐시 라인을 나타낸 것이다.
도 5b는 일 실시예에 따라 캐시 라인 내부의 각각의 자격 태그에 대해 관련된 자격 메타데이터와 자격 태그 더티 비트를 갖는 2개의 값을 기억하는 예시적인 캐시 라인을 나타낸 것이다.
도 5c는 일 실시예에 따른, 캐시 라인에 기억된 값이 기록 동작에 의해 갱신될 때 이 캐시 라인 내부의 자격 태그 더티 비트를 갱신하는데 사용되는 회로를 개략적으로 나타낸 것이다.
도 6은 일 실시예에 따른, 2 레벨의 캐시 스토리지, 메모리 제어기, 자격 테이블 캐시 및 메모리를 구비한 일 실시예의 장치를 개략적으로 나타낸 것이다.
도 7a는 데이터 기록 트랜잭션이 자격 메타데이터를 포함해야 하는지 결정하기 위해 일 실시예에서 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 7b는 자격 태그 더티 비트의 값에 근거하여 데이터 기록 트랜잭션 내부의 자격 메타데이터의 포함을 금지하는 회로의 일례를 나타낸 것이다.
도 8은 일 실시예에 따른, 메모리로부터 자격 태그 테이블들의 라인들을 일시적으로 기억하기 위한 자격 태그 테이블의 이용과 퇴출 및 로드에 의한 갱신을 나타낸 것이다.
도 9는 일 실시예에 따른, 캐시 라인 내부에 기억된 값과 관련된 자격 태그가 갱신될 때 자격 태그 더티 비트를 갱신하기 위해 캐시 내부에서 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 10은 일 실시예에 따른, 자격 태그 테이블 캐시에 기억된 자격 태그 더티 비트 정보와 자격 태그 비트들에 근거하여, 메모리 액세스가 수신될 때 메모리 제어기에 의해 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 11, 도 12 및 도 13은 일 실시예에 따른, 데이터가 캐시 내부로 전달되거나 데이터가 캐시로부터 외부로 전달될 때, 캐시데이터와 자격 태그 클린(clean)/더티 스테이터스(status)들이 전달된 데이터와 함께 전체가 제공되거나, 일부가 제공되거나, 또는 제공되지 않을 때, 이들 데이터와 자격 태그 클린/더티 스테이터스들을 결정하기 위해 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 14는 도 11-도 13에서 언급한 스테이터스들의 조합을 일부 요약하는 테이블을 나타낸 것이다.
도 15는 사용되는 가상머신 환경을 나타낸 것이다.
도 2는 제한 포인터 기억 소자들의 세트 내부의 포인터 값을 설정하거나 액세스하려는 시도가 존재하는 경우에 에러가 유발되는 명령들의 종류의 예를 나타낸 것으로, 이때 포인터 값을 사용하여 관련된 범위 정보에 의해 표시된 범위 외부의 어드레스를 지정한다.
도 3은 일 실시예에 따른, 제한 포인터와 관련된 자격 태그 비트의 사용을 예시한 것이다.
도 4는 일 실시예에 따른, 관련된 자격 메타데이터 정보와 함께, 제한 포인터의 형태를 취하는 자격 내부에 설치된 다양한 필드들을 개략적으로 나타낸 것이다.
도 5a는 일 실시예에 따라 관련된 자격 메타데이터와 자격 태그 더티(dirty) 비트와 함께 2개의 값이 기억되는 예시적인 캐시 라인을 나타낸 것이다.
도 5b는 일 실시예에 따라 캐시 라인 내부의 각각의 자격 태그에 대해 관련된 자격 메타데이터와 자격 태그 더티 비트를 갖는 2개의 값을 기억하는 예시적인 캐시 라인을 나타낸 것이다.
도 5c는 일 실시예에 따른, 캐시 라인에 기억된 값이 기록 동작에 의해 갱신될 때 이 캐시 라인 내부의 자격 태그 더티 비트를 갱신하는데 사용되는 회로를 개략적으로 나타낸 것이다.
도 6은 일 실시예에 따른, 2 레벨의 캐시 스토리지, 메모리 제어기, 자격 테이블 캐시 및 메모리를 구비한 일 실시예의 장치를 개략적으로 나타낸 것이다.
도 7a는 데이터 기록 트랜잭션이 자격 메타데이터를 포함해야 하는지 결정하기 위해 일 실시예에서 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 7b는 자격 태그 더티 비트의 값에 근거하여 데이터 기록 트랜잭션 내부의 자격 메타데이터의 포함을 금지하는 회로의 일례를 나타낸 것이다.
도 8은 일 실시예에 따른, 메모리로부터 자격 태그 테이블들의 라인들을 일시적으로 기억하기 위한 자격 태그 테이블의 이용과 퇴출 및 로드에 의한 갱신을 나타낸 것이다.
도 9는 일 실시예에 따른, 캐시 라인 내부에 기억된 값과 관련된 자격 태그가 갱신될 때 자격 태그 더티 비트를 갱신하기 위해 캐시 내부에서 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 10은 일 실시예에 따른, 자격 태그 테이블 캐시에 기억된 자격 태그 더티 비트 정보와 자격 태그 비트들에 근거하여, 메모리 액세스가 수신될 때 메모리 제어기에 의해 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 11, 도 12 및 도 13은 일 실시예에 따른, 데이터가 캐시 내부로 전달되거나 데이터가 캐시로부터 외부로 전달될 때, 캐시데이터와 자격 태그 클린(clean)/더티 스테이터스(status)들이 전달된 데이터와 함께 전체가 제공되거나, 일부가 제공되거나, 또는 제공되지 않을 때, 이들 데이터와 자격 태그 클린/더티 스테이터스들을 결정하기 위해 취해지는 스텝들의 시퀀스를 나타낸 것이다.
도 14는 도 11-도 13에서 언급한 스테이터스들의 조합을 일부 요약하는 테이블을 나타낸 것이다.
도 15는 사용되는 가상머신 환경을 나타낸 것이다.
도면을 참조하여 특정한 실시예를 설명하기 전에, 이하의 실시예의 설명이 주어진다.
전술한 것과 같이, 자격 기반의 아키텍처에서는, 지정된 처리에 대해 특정한 자격이 정의되고, 이 정의된 자격을 벗어나는 동작을 행하려는 시도가 존재하는 경우 에러가 유발될 수 있다. 다양한 종류의 자격이 정의될 수도 있지만, 한가지 종류의 자격은 제한 포인터이다(이것은 일 실시예에서는 포인터 값과 이와 관련된 범위 및 허가 정보를 포함한다). 이와 같은 자격 기반의 아키텍처를 채용하는 장치는, 일반적으로, 메모리에 기억된 값들과, 기억된 각각의 값과 관련하여 제공된 자격 메타데이터를 액세스하여, 이 값이 자격을 나타내는지 또는 그 대신에 범용 데이터를 나타내는지 식별한다. 따라서, 용어 "값"은 본 발명에서는 일반적으로 자격이나 데이터 값을 언급하는데 사용되고, 구별이 필요한 경우, 용어 "자격" 또는 "데이터 값"이 사용된다. 더구나, 다른 실시예에서는, "데이터 블록"은 다양한 입상도(granularity)의 정보에 해당하는 것으로 이해해야 한다. 예를 들어, 한가지 극단적인 예에서, 데이터 블록은 아키텍처 내에서 참조될 수 있는 비트들의 최소 그룹에 대응할 수 있으며, 자격 메타데이터의 관련된 항목은 이 그룹이 자격을 표시하는지, 또는 그 대신에 범용 데이터를 표시하는지를 나타낸다. 역으로, 다른 실시예에서는, 데이터 블록이 비트들의 임의의 커다란 정의된 그룹에 대응할 수 있으며, 자격 메타데이터의 관련된 항목은 이 그룹이 자격을 표시하는지, 또는 그 대신에 범용 데이터를 표시하는지 나타낸다. 특정한 명령을 이용하여, 그것의 자격 메타데이터에 의해 자격으로서 기억되거나 라벨이 붙여진 값을 참조하고, 이 자격에 따라 동작을 행할 수 있다. 예를 들어, 제한 포인터를 고려하면, 이와 같은 명령의 실행은 자격 포인터가 검색되도록 할 수 있으며, 그후 자격 포인터 내부의 포인터 값을 사용하여 명령의 실행중에 필요한 메모리 내부의 어드레스를 유도할 수 있다. 포인터 값을 직접 이용하여 메모리 어드레스를 식별하거나, 예를 들면, 포인터 값에 대한 오프셋의 가산에 의해, 메모리 어드레스를 유도해도 된다. 그후, 메모리 어드레스가 범위 정보에 의해 지정된 범위 내부에 존재하고 허가 정보에서 지정된 허가를 만족하면, 동작의 진행이 허용된다.
특히, 일 실시예에서는, 캐시 스토리지를 구비한 장치가 제공되고, 캐시 스토리지와 관련된 캐시 제어회로가 캐시 스토리지에 기억된 데이터 블록들과 관련하여 자격 메타데이터 수정 마커를 관리하고, 자격 메타데이터 수정 마커를 사용하여, z시 스토리에 데이터 블록이 기억된 이후에 (데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 나타내는) 자격 메타데이터가 수정되었는지 여부를 표시한다. 데이터 항목이 캐싱된 이후에 수정되었는지 여부를 표시하기 위해 캐싱된 데이터 항목과 관련하여 기억되는 데이터 "더티" 비트와 유사하게, 본 발명에서는 자격 메타데이터 수정 마커는 자격 태그 "더티" 비트로도 불린다. 자격을 지정하는 데이터 블록과 데이터 값을 지정하는 데이터 블록 사이의 상당한 기능 차이로 인해, 장치 내부에서, 따라서 이와 같은 데이터 블록이 캐싱될 때에는, 이들 2가지 종류의 데이터 블록 사이의 신중한 구별이 보통 필요하다. 자격 메타데이터 수정 마커의 제공은, 특히, 예를 들면, 해당 데이터 값을 액세스하는데 사용된 자격으로부터 상속된 허가를 사용하여, 의도하지 않은 경우에 한가지 종류로부터 다른 종류로의 수정이 일어날 수 없도록 이것을 지원하지만, 관련된 자격 메타데이터를 갖는 이와 같은 데이터 블록들의 기억에 대해 효율이 얻어지도록 더 제공한다. 이와 같은 후자의 특징의 한가지 예는, 데이터 블록들과 그들의 관련된 자격 메타데이터가 별도로 기억되어, 예를 들어, 스토리지에 대한 별개의 액세스를 필요로 하는 경우에 발생될 수 있다. 캐시 스토리지에 데이터 블록이 기억된 이후에 지정된 스토리지 블록과 관련된 자격 메타데이터가 변경되었는지 여부를 아는 것은, 예를 들면, 스토리지에 대한 더 적은 액세스가 행해지게 할 수 있다.
데이터 항목이 캐싱된 이후에 이 데이터 항목이 수정되었는지 여부를 표시하기 위해 캐싱된 데이터 항목과 관련하여 기억되는 데이터 "더티" 비트를 다시 참조하면, 이와 같은 캐시 더티 비트들의 구현은 사실상, 데이터 항목에 대한 기록이 발생하였는지 여부를 추적하는 것이 일반적이라는 점에 주목하기 바란다. 즉, 이와 같은 접근방법은, 데이터 항목이 이전에 가진 값을 재기록한 데이터 항목에 대한 기록과 데이터 항목이 이전에 가진 값과 다른 값을 기록한 데이터 항목에 대한 기록을 구별하지 않는다. 이것은, 모든 데이터 비트들을 검사하여 실제 변경이 발생하였는지 여부를 확인하는 것이 보통 너무 비쌀 것이기(그리고 가치가 없기) 때문이다. 그러나, 본 기술에 따르면, 일반적으로 상대적으로 더 적은 수의 자격 메타데이터가 존재할 것으로 예상되므로, 이들 비트가 실제로 변경되었는지 확인하는 것이 훨씬 더 가능성이 있을 것이다. 더구나, 메모리의 데이터 블록이 보통 연장된 기간 동안 그것의 현재의 사용량(데이터 또는 자격)을 유지하게 된다는 것이 더 예상된다. 그렇지만, 자격 메타데이터 수정 마커의 값이, 캐시 스토리지에 데이터 블록이 기억된 이후 (데이터 블록이 실제로 변경되었는지 검사하지 않고) 데이터 블록과 관련된 자격 메타데이터가 기록되었는지 여부를 표시하는 실시예도 제공된다.
자격 메타데이터 수정 마커들과 데이터 블록들 사이의 관련성은 시스템 요구에 따라 다양하게 구성된다. 일부 실시예에서는, 한 개의 자격 메타데이터 수정 마커가 상기 데이터 블록을 포함하는 복수의 데이터 블록들에 대응한다. 캐시에 기억된 데이터에 대한 다양한 레벨의 입사도가 상정되지만, 일부 실시예에서, 데이터 블록과 관련하여 캐시 제어회로에 의해 설정된 자격 메타데이터 수정 마커는 캐시 스토리지 내부의 각각의 캐시 라인에 대해 단일 비트이다. 다른 실시예들은 자격 메타데이터 수정 마커의 다양한 입상도를 가질 수 있는데, 즉 각각이 단지 몇 개의 데이터 블록들에 대응하거나 각각이 큰 수의 데이터 블록들에 대응한다. 일부 실시예에서는, 각각의 데이터 블록에 대한 자격 메타데이터 수정 마커가 존재함으로써. 데이터 블록과 관련하여 설정된 자격 메타데이터 수정 마커가 상기 데이터 블록과 1 대 1 대응을 갖는다.
자격 메타데이터 수정 마커에 의해 제공된 정보는 다양하게 사용될 수 있지만, 일부 실시예에서, 상기 장치는, 상기 캐시 스토리지로부터 추가적인 스토리지 레벨로의 지정된 데이터 블록과 이와 관련된 자격 메타데이터에 대한 수신된 기록 트랜잭션에 응답하여, 지정된 데이터 블록이 캐시 스토리지에 기억된 이후에 자격 메타데이터가 변경되지 않았다는 것을 자격 메타데이터 수정 마커의 값이 표시할 때, 관련된 자격 메타데이터와 추가적인 스토리지 레벨에 대한 기록 트랜잭션을 금지하는 메모리 제어기를 더 구비한다. 따라서, 메모리 제어기는, 지정된 데이터 블록에 대한 이와 같은 기록 트랜잭션을 취급할 때, 이 자격 메타데이터가 변경되지 않은 것이 알려지는 경우에, 기록 트랜잭션의 타겟인 스토리지에서 그것의 관련된 자격 메타데이터가 갱신될 필요가 없다. 즉, 자격이 캐시에 기억되었고 수정되었지만 자격을 남기거나, 역으로 데이터 값이 캐시 스토리지에 기억되었고 수정되었지만 데이터 값을 남기는 경우에는, "값" 그 자체가 타겟 스토리지에 대한 기록 트랜잭션에 의해 갱신될 필요가 있으며, 관련된 자격 메타데이터가 갱신될 필요가 있는 것은 아니다.
트랜잭션의 타겟인 추가적인 스토리지는, 다양한 형태를 취할 수 있지만, 일부 실시예에서는, 메모리 스토리지이다. 다른 실시예에서는, 이것이 추가적인 캐시 스토리지 레벨이다. 추가적인 스토리지가 메모리 스토리지인 경우에는, 기록 트랜잭션이 메모리 스토리지 내부의 관련된 자격 메타데이터에 대한 판독-수정-기록 트랜잭션이다. 따라서, 타겟 자격 메타데이터가 수정되지 않았다는 것을 알기 때문에 이와 같은 판독-수정-기록 트랜잭션을 회피할 수 있는 경우에는, 관련된 자격 메타데이터 스토리지에 대한 2개의 별개의 판독 및 기록 트랜잭션을 회피할 수 있다.
일부 실시예에서는, 특별히 자격 메타데이터에 대한 캐시 스토리지게 더 제공될 수도 있는데, 이것은, 메모리 내부의 자격 메타데이터에 대한 액세스와 관련된 대기시간의 회피를 더 지원하기 위해, 캐시 스토리지보다 높은 메모리 계층 레벨(즉, 캐시 스토리지와 메모리 사이)에서 제공된다. 이와 같은 실시예에서는, 메모리 제어기가 자격 메타데이터 캐시 스토리지 내부에 캐싱된 자격 메타데이터를 참조함으로써, 메모리에 대한 액세스가 필요한지 여부를 결정하고, 특히 적어도 한 개의 데이터 블록이 캐시 스토리지에 기억된 이후에 필요한 자격 메타데이터가 변경되지 않은 것으로 자격 메타데이터 수정 마커가 표시할 때, 이와 같은 액세스를 회피할 수 있다. 따라서, 일부 실시예에서, 장치는, 캐시 스토리지보다 높은 메모리 계층 레벨에 자격 메타데이터를 기억하는 자격 메타데이터 캐시 스토리지를 더 구비하고, 메모리 제어기는 적어도 한 개의 데이터 블록에 대한 메모리 액세스 트랜잭션에 응답하여, 적어도 한 개의 데이터 블록과 관련된 필요한 자격 메타데이터를 반환하고, 상기 메모리 제어기는, 적어도 한 개의 데이터 블록에 대한 메모리 액세스 트랜잭션에 응답하여, 필요한 자격 메타데이터가 자격 메타데이터 캐시 스토리지에 기억되지 않을 때, 적어도 한 개의 데이터 블록이 캐시 스토리지에 기억된 이후 필요한 자격 메타데이터가 변경되지 않은 것을 적어도 한 개의 데이터 블록과 관련된 자격 메타데이터 수정 마커의 값이 표시하지 않는 경우, 자격 메타데이터 캐시 스토리지로부터의 현재 기억된 자격 메타데이터의 퇴출과 자격 메타데이터 캐시 스토리지 내부에의 필요한 자격 메타데이터의 검색을 개시한다.
자격 메타데이터는 자격 메타데이터 캐시 스토리지에 다양하게 기억될 수 있지만, 자격 메타데이터의 복수의 비트들 중에서 어느 것이 세트되는지 아닌지를 자격 메타데이터 캐시 스토리지에 기억된 한 개의 비트가 표시하는 콤팩트한 스토리지 포맷이 달성될 수도 있다. 따라서, 이것은, 메모리 내부에 기억된 대응하는 데이터가 사실상 데이터 값 만(자격이 아니다)을 포함하는 메모리의 상당한 인접한 청크들이 존재하는 것이 예상되며, 자격 메타데이터 캐시 스토리지 내부의 정보를 사용한 이와 같은 섹션들의 식별시에, 적어도 한 개의 데이터 블록을 액세스하고 대응하는 자격 메타데이터를 액세스할 필요를 없앰으로써, 메모리 액세스 트랜잭션을 구현하는데 스토리지에 대한 한번의 액세스만 필요하게 되기 때문에, 메모리 내부에 기억된 대응하는 데이터가 사실상 데이터 값 만을 포함하는지 여부를 신속하게 식별할 수 있게 하는 메카니즘을 제공한다.
사실상, 예를 들어, 자격 메타데이터의 테이블들이 다양한 입상도에서 메모리에 기억되고, 자격 메타데이터 캐시 스토리지가 통상적인 라인 기반의 캐싱 구조로 테이블들의 라인들을 유지할 수 있는 경우, 자격 메타데이터 캐시 스토리지에 기억된 정보가 계층적으로 기억될 수도 있다. 그후, 이들 테이블들 중에서 한 개에 있는 각각의 비트는 예를 들어 더 낮은 레벨의 테이블에 있는 비트들의 인접한 세트가 세트되는지 여부를 표시할 수 있으며, 최하 레벨 테이블에서는, 각각의 비트가 개별적인 자격 메타데이터 태그를 표시할 수 있다. 따라서, 이와 같은 자격 메타데이터 캐시 스토리지가 존재할 때, 자격 메타데이터 수정 마커는 메모리 제어기가, 자격 메타데이터의 적절한 라인이 자격 메타데이터 캐시 내부에 있도록 보장할 필요성을 없게 할 수 있다(이에 따라 자격 메타데이터 정보의 신속한 판독 또는 기록을 가능하게 한다). 라인이 존재하지 않는다면, 메모리에 대한 가능한 후기록(write back)을 갖는 자격 메타데이터 캐시로부터의 기존 라인의 퇴출과, 그후에 자격 메타데이터를 포함하는 라인의 로드와, 또한 (이 정보에 대한 캐시 스토리지의 전술한 계층 레벨들이 자격 메타데이터 캐시 스토리지에서 사용되는 경우에) 더 거친(coarser) 입도의 자격 메타데이터 테이블 정보를 나타내는 추가적인 라인들이 교대로 퇴출되고 캐시로부터 유용한 정보를 후기록하는 것을 필요로 할 것이다. 그러나, 자격 메타데이터 수정 정보를 이용가능한 경우에는, 메모리로부터의 판독 이후에 자격 메타데이터가 변경되지 않았다는 표시는 자격 메타데이터 캐시 내용에 변경을 필요로 하지 않을 것이다.
그러나, 지정된 캐시 라인 내부에 더 미세한 입상도의 정보가 존재할 수도 있으며, 캐시 라인의 각각의 부분들에 대해 자격 메타데이터 수정 마커가 제공될 수도 있다. 따라서, 일부 실시예에서는, 캐시 스토리지가 캐시 라인들에 데이터 블록들을 기억할 수 있으며, 데이터 블록과 관련하여 캐시 제어회로에 의해 설정된 자격 메타데이터 수정 마커는 캐시 스토리지 내부의 각각의 캐시 라인에 대한 복수의 비트들 중에서 한 개이고, 각각의 캐시 라인에 대한 복수의 비트들 중에서 각각의 비트는, 상기 캐시 라인의 각각의 부분이 캐시 스토리지에 기억된 이후에 상기 캐시 라인의 각각의 부분에 대한 자격 메타데이터가 변경되었는지 여부를 나타낸다. 라인의 일부를 각각 나타내는 캐시 라인마다 제공되는 이와 같은 복수의 자격 태그 더티 비트들은, 캐시 라인의 각각의 부분들에 대해 제공된 동일한 입상도의 데이터 더티 비트들까지 제공될 수도 있다. 따라서, 일부 실시예에서, 캐시 제어회로는, 캐시 스토리지 내부에 기억된 데이터 블록에 대한 기록에 응답하여, 데이터 블록 부분과 관련하여 데이터 수정 마커를 기억하고, 데이터 수정 마커의 값은, 데이터 블록이 캐시 스토리지에 기억된 이후에 데이터 블록 부분이 기록되었는지 여부를 나타내고, 자격 메타데이터 수정 마커에 대응하는 상기 캐시 라인의 각각의 부분은 적어도 데이터 블록 부분만큼 크다. 전술한 설명에 따르면, 모든 데이터 비트들을 검사하여 실제 변화가 발생하였는지 확인하는 것은 일반적으로 너무 비싸기(그리고 가치가 없기) 때문에, 이 데이터 블록 부분이 기록되었는지 여부를(데이터 블록 부분이 실제로 변경되었는지 여부가 아니다) 모니터링한다.
전술한 것과 같이, 장치 내부에 설치된 메모리 제어기는, 지정된 데이터 블록이 (메모리로부터) 캐시 스토리지에 기억된 이후 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 변경되지 않았다는 것을 나타내는 자격 메타데이터 수정 마커의 값을 이용하여, 메모리에 대한 액세스를 피할 수 있다. 그러나, 본 발명은, 자격 메타데이터의 올바른 관리에 대한 추가적인 레벨의 보안을 제공하고, 특히 동일한 메모리 공간에 대해 동작하는 다수의 에이전트들에 의해 틀린 자격이 "위조될(forged)" 수 없도록 보장하기 위해, 복수의 에이전트들이 동일한 메모리 공간을 액세스할 수 있는 일부 실시예에서 이것이 일어날 수 없도록 보장하기 위한 조치가 취해지는 것을 더 제안한다.
따라서, 일부 실시예에서, 장치는, 캐시 스토리지로부터 추가적인 스토리지 레벨로의 지정된 데이터 블록과 이와 관련된 자격 메타데이터에 대한 수신된 기록 트랜잭션에 응답하여, 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 그것이 데이터 값인 것을 표시하고, 지정된 데이터 블록이 캐시 스토리지에 기억된 이후 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 변경되지 않았다는 것을 자격 메타데이터 수정 마커의 값이 표시할 때, 메모리 기록 트랜잭션을 발행하여, 메모리에 기억된 자격 메타데이터가 능동적으로 설정되게 함으로써, 지정된 데이터 블록이 데이터 값이라는 것을 표시하는 메모리 제어기를 더 구비한다. 따라서, (자격 메타데이터 수정 마커의 값에 의해) 자격이 변경되지 않았다는 것을 알게 되더라도, 지정된 데이터 블록이 데이터 값이라는 것을 나타내는 값으로(본 발명에서 설명하는 실시예에서는, 이 값이 0일 때이지만, 이것은 임의의 구현상의 선택으로서 인식된다) 자격 메타데이터를 명시적으로 세트(또는 그 대신에, 리셋)함으로써, 지정된 데이터 블록이 데이터 값을 유지해야 하는 경우, 동일한 메모리 위치(그러나 다른 에이전트들)와의 복수의 상호작용에 의해 갱신이 불가능함으로써, 자격을 무심코 또는 악의적으로 위조할 수 없도록 하는 것이 선택될 수도 있다. 예를 들어, 에이전트 A가 관련된 자격 태그가 세트되지 않은 채(자격이 아니라 데이터를 표시한다) 메모리에서 데이터를 판독하고, 그후 에이전트 B가 자격을 동일한 위치에 기록한 다음, 자격 태그들이 여전히 세트되지 않은 채(자격 태그들이 수정되지 않은 것으로 표기된 채) 에이전트 A로부터의 퇴출이 행해지는 경우, 메모리 제어기가 에이전트 A로부터 기록시에 태그들을 클리어하지 않도록 선택한다면, 이것은 자격이 A 데이터와 B 태그로부터 위조될 수 있게 할 것이다. 표시된 데이터의 자격 메타데이터를 명시적으로 리셋하면 이것을 회피할 수 있다.
이것에 대한 또 다른 접근방법이 일부 실시예에서 주어지는데, 이때 장치는, 캐시 스토리지로부터 추가적인 스토리지 레벨로의 지정된 데이터 블록과 이와 관련된 자격 메타데이터에 대한 수신된 기록 트랜잭션에 응답하여, 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 그것이 데이터 값인 것을 표시하고, 지정된 데이터 블록이 캐시 스토리지에 기억된 이후, 다른 에이전트가 메모리 내부의 지정된 데이터 블록과 이와 관련된 자격 메타데이터 중에서 적어도 한 개에 대한 기록 동작을 행하였다는 신호를 메모리 제어기가 수신하였을 때, 메모리 기록 트랜잭션을 발행하여, 메모리에 기억된 자격 메타데이터가 능동적으로 설정되게 함으로써, 지정된 데이터 블록이 데이터 값이라는 것을 표시하는 상기 메모리 제어기를 더 구비한다. 따라서, 또 다른 에이전트가 동일한 메모리 위치에 대해 기록 동작을 행하였다는 것이 명시적으로 알려진 경우에, 지정된 데이터 블록이 데이터 값이라는 것을 표시하도록 리셋되도록 보장하기 위한 자격 메타데이터의 명시적인 리셋을 행함으로써, 이와 같은 자격 위조의 가능성을 회피한다. 또 다른 접근방법은, 에이전트 A 및 에이전트 B가 동일한 메모리 위치를 액세스하는 것을 금지하는 것을 포함할 수도 있다.
본 발명은, 데이터 블록이 캐시 스토리지 내부로 또는 캐시 스토리로부터 외부로 전달될 때, 일부 실시예가 자격 메타데이터 수정 마커 및/또는 데이터 수정 마커를 전달하지 않을 수도 있다는 것을 더 고려한다. 즉, 데이터 블록이 (캐시 내부로 또는 캐시로부터 외부로에 상관없이) 전달될 때, 캐시 내부에 데이터 블록과 관련되어 기억되는 자격 태그 더티 비트들 및/또는 데이터 더티 비트들이 데이터 블록과 함께 이동하지 않을 수도 있다. 이와 같은 상황에서는, 자격 메타데이터 수정 마커 및/또는 데이터 수정 마커(자격 태그 더티 비트 및/또는 데이터 더티 비트)가 될 것으로 추측되는 것에 관해 전달의 대상에 대해 일정한 제약이 가해져도 된다.
일부 실시예에서, 장치는, 캐시 스토리지 내부로 또는 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 데이터 블록과 관련된 자격 메타데이터가 변경되었다는 것을 자격 메타데이터 수정 마커의 값이 표시할 때, 데이터 블록이 수정된 것으로 취급되게 한다.
일부 실시예에서, 장치는, 캐시 스토리지 내부로 또는 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 데이터 수정 마커가 전달되지 않을 경우, 전달이 더 낮은 캐시 층에 대한 것일 때에는 데이터 블록 및 자격 메타데이터 수정 마커가 클린(clean)인 것으로 취급되게 하고, 전달이 더 낮은 캐시 층에 대한 것이 아닐 때에는 데이터 블록 및 자격 메타데이터 수정 마커가 수정된 것으로 취급되게 한다.
일부 실시예에서, 장치는, 캐시 스토리지 내부로 또는 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 자격 메타데이터 수정 마커가 전달되지 않는 경우, 데이터 수정 마커로부터 자격 메타데이터 수정 마커의 값이 추론되게 한다.
일부 실시예에서, 장치는, 캐시 스토리지 내부로 또는 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 자격 메타데이터가 전달되지 않는 경우, 데이터 수정 마커와 자격 메타데이터 수정 마커가 모두 수정되지 않은 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터를 데이터 값을 지정하는 것으로서 데이터 블록을 식별하는 것으로 취급하게 하고, 데이터 수정 마커와 자격 메타데이터 수정 마커가 모두 수정된 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터를 데이터 값을 지정하는 것으로서 데이터 블록을 식별하는 것으로 취급하게 하고, 데이터 수정 마커가 수정된 것으로 표시하고 자격 메타데이터 수정 마커가 수정되지 않은 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터 수정 마커의 로컬 복사본이 유효한 것으로 취급하게 한다.
일부 실시예에서, 장치는, 캐시 스토리지 내부로 또는 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 자격 메타데이터가 전달되지 않는 경우, 데이터 수정 마커와 자격 메타데이터 수정 마커가 모두 수정되지 않은 것으로 표시하거나 데이터 수정 마커와 자격 메타데이터 수정 마커가 모두 수정된 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터를 유효한 것으로 취급하게 하고, 데이터 수정 마커가 수정된 것으로 표시하고 자격 메타데이터 수정 마커가 수정되지 않은 것으로 표시할 때에는, 전달 대상에게, 자격 메타데이터의 로컬 복사본을 수정하지 않는 것, 자격 메타데이터의 로컬 복사본을 갱신하는 것과, 자격 메타데이터의 로컬 복사본이 전달된 자격 메타데이터와 다른 경우 에러를 보고하는 것 중에서 한가지를 행하게 한다.
일부 실시예에서는, 캐시 스토리지의 작동방법으로서, 상기 캐시 스토리지에 데이터 블록들을 기억하는 단계와, 각각의 데이터 블록과 관련하여, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 자격 메타데이터를 기억하는 단계를 포함하고, 적어도 한가지 종류의 자격은 제한 포인터이고, 상기 작동방법은, 상기 캐시 스토리지에 기억된 데이터 블록에 대한 기록에 응답하여, 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 단계를 더 포함하고, 상기 자격 메타데이터 수정 마커의 값은, 상기 캐시 스토리지에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 작동방법이 제공된다.
일부 실시예에서는, 장치로서, 데이터 블록들을 캐싱하는 수단과, 각각의 데이터 블록과 관련하여, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 자격 메타데이터를 기억하는 수단을 구비하고, 적어도 한가지 종류의 자격은 제한 포인터이고, 상기 장치는, 데이터 블록에 대한 기록에 응답하여, 데이터 블록들을 캐싱하는 상기 수단에 기억된 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 수단을 더 구비하고, 상기 자격 메타데이터 수정 마커의 값은, 데이터 블록들을 캐싱하는 상기 수단에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 장치가 제공된다.
이하, 도면을 참조하여 일부 특정한 실시예를 설명한다.
도 1은 명령을 처리하는 처리 파이프라인(4)을 포함하는 데이터 처리장치(2)의 일례를 개략적으로 나타낸 것이다. 본 실시예에서, 처리 파이프라인(4)은 페치 스테이지(6), 디코드 스테이지(8), 발행 스테이지(10), 실행 스테이지(12) 및 후기록 스테이지(14)를 포함하는 다수의 파이프라인 스테이지들을 포함하지만, 다른 종류 또는 조합의 스테이지들이 설치될 수도 있다는 것은 자명하다. 예를 들어, 일부 실시예에서는 레지스터 재명명(renaming)을 행하는 재명명 스테이지가 포함될 수도 있다. 처리할 명령들은 스테이지로부터 스테이지로 이동하고, 한 개의 스테이지에 명령이 보류중인 동안, 파이프라인(4)의 다른 스테이지에서 다른 명령이 보류중일 수도 있다.
페치 스테이지(6)는 레벨 1(L1) 명령 캐시(20)로부터 명령을 페치한다. 페치 스테이지(6)는 보통 연속된 명령 어드레스들로부터 명령을 순차적으로 페치한다. 그러나, 페치 스테이지가 분기 명령들의 결과를 예측하는 예측 자격(명시적으로 도시하지는 않는다)을 더 갖고, 분기를 타는 것으로 예측되는 경우에는 페치 스테이지(6)가 (비순차적인) 분기 타겟 어드레스로부터 명령을 페치하거나, 분기를 타지 않는 것으로 예측되는 경우에는 다음의 순차 어드레스로부터 명령을 페치할 수 있다. 페치된 명령은 디코드 스테이지(8)에 전달되어, 명령을 디코드하여 디코드된 명령을 발생한다. 디코드된 명령은 적절한 처리 연산을 실행하도록 실행 스테이지(12)를 제어하는 제어 정보를 포함한다. 캐시(20)로부터 페치된 일부 더 복잡한 명령에 대해서는, 디코드 스테이지(8)가 이들 명령을 복수의 디코드된 명령에 매핑하는데, 이것은 마이크로-연산(μops 또는 uops)으로 알려져 있다). 따라서, L1 명령 캐시(20)로부터 페치된 명령과 파이프라인의 후속 스테이지들에 의해 보이는 명령 사이에는 1 대 1 관계가 존재하지 않을 수도 있다. 일반적으로, 본 출원에서 "명령"에 대한 언급은 마이크로 연산을 포함하는 것으로 해석되어야 한다.
디코드된 명령은 발행 스테이지(10)에 전달되고, 발행 스테이지는 명령의 실행에 필요한 피연산자가 이용가능한지 판정하고, 피연산자가 이용가능할 때에는 실행을 위한 명령을 발행한다. 일부 실시예는 순차적인 처리를 지원하므로, L1 명령 캐시(20)에서 명령들이 페치되었던 프로그램 순서와 일치하는 순서로 실행을 위해 명령들이 발행된다. 다른 실시예는 비순차 실행을 지원하므로, 명령이 프로그램 순서와 다른 순서로 실행 스테이지에 발행될 수 있다. 비순차 처리는, 피연산자를 대기하면서 이전 명령이 실행중지되는 동안, 피연산자가 이용가능한 프로그램 순서에 있어서 나중의 명령이 먼저 실행될 수 있기 때문에 성능을 향상시키는데 유용할 수 있다.
발행 스테이지(10)는 명령을 실행 스테이지(12)에 발행하여, 실행 스테이지에서 명령들이 실행되어 다양한 데이터 처리 연산을 행한다. 예를 들어, 실행 스테이지는, 정수값에 대해 산술 또는 논리 연산을 행하는 산술/논리 유닛(ALU)(30)과, 부동소수점 형태로 표현되는 값에 대해 연산을 행하는 부동소수점(FP) 유닛(32)과, 레벨(L1) 데이터 캐시(36)로부터 레지스터(40)에 데이터 값을 로드하는 로드 연산 또는 레지스터(40)로부터 L1 데이터 캐시(36)에 데이터 값을 기억하는 스토어 연산을 행하는 로드/스토어 유닛(34)을 포함하는 다수의 실행 유닛(30, 32, 34)을 포함한다. 이때, 이들은 설치될 수 있는 실행 유닛의 종류의 일부 예에 지나지 않으며, 다수의 다른 종류가 설치될 수도 있다는 것은 자명하다. 처리 연산을 행하기 위해, 실행 스테이지(12)는 레지스터들의 세트(40)로부터 데이터 값을 판독한다. 그후, 실행된 명령의 결과는 후기록 스테이지(14)에 의해 레지스터(40)에 다시 기록된다.
L1 명령 캐시(20)와 L1 데이터 캐시(36)는 복수 레벨의 캐시를 포함하는 캐시 계층구조의 일부이다. 예를 들어, 레벨 2 캐시(44)거 더 설치될 수도 있고, 옵션으로 또 다른 레벨의 캐시가 설치될 수도 있다. 본 실시예에서는, L2 캐시(44)가 L1 명령 캐시(20)와 L1 데이터 캐시(36) 사이에서 공유되지만, 다른 실시예는 별개의 L2 명령 및 데이터 캐시를 가져도 된다. 페치할 명령이 L1 명령 캐시(20)에 있지 않으면, L2 캐시로부터 페치할 수 있으며, 마찬가지로 명령이 L2 캐시(44)에 있지 않으면, 메인 메모리(50)에서 페치할 수 있다. 캐시 계층구조를 관리하기 위해 모든 공지된 방식을 사용할 수 있다. L1 데이터 캐시(36)와 L2 캐시(44)는, 다른 도면을 참조하여 이하에서 더욱 상세히 설명하는 제어(CTRL) 회로를 포함하는 것으로 더 도시되어 있다.
프로그램 명령과 데이터 값을 참조하기 위해 파이프라인(4)에 의해 사용되는 어드레스는 가상 어드레스이어도 되지만, 적어도 메인 메모리(5), 옵션으로 적어도 일부 레벨의 캐시 계층구조도 물리적으로 어드레스가 지정된다. (명시적으로 도시하지 않은) 변환 색인 버퍼(translation lookaside buffer: TLB)가 파이프라인(4)에 의해 사용된 가상 어드레스를 캐시 또는 메모리를 액세스하는데 사용된 물리 어드레스로 변환하기 위해 설치된다.
도 1에 도시된 것처럼, 상기 장치(2)는, 일 세트의 제한 포인터 레지스터들(60)을 가져도 된다. 그 일 세트의 제한 포인터 레지스터들이 도 1에서 일 세트의 범용 데이터 레지스터들(40)에 대해 물리적으로 분리된 것으로서 도시되어 있지만, 일 실시예에서는 동일한 물리적 스토리지는, 범용 데이터 레지스터들과 제한 포인터 레지스터들의 양쪽을 제공하는데 사용되어도 된다.
각 제한 포인터 레지스터(60)는, 액세스되는 데이터 값의 어드레스를 결정하는데 사용되어도 되는 포인터 값(62)과, 대응한 포인터(62)를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 범위 정보(64)를 포함한다. 제한 포인터 레지스터(60)는, 포인터의 이용에 관해 하나 이상의 제한들/허가들을 명시하여도 되는 제한 정보(66)(여기서는 허가 정보라고도 함)도 포함하여도 된다. 예컨대, 상기 제한 정보(66)는, 포인터(62)를 사용하여도 되는 명령들의 타입들, 또는 포인터가 사용될 수 있는 파이프라인(4)의 모드들을, 제한하는데 사용될 수 있었다. 따라서, 상기 범위 정보(64)와 제한 정보(66)는, 사용할 포인터(62)가 허용되는 자격들을 명시하는데 고려될 수도 있다. 명시된 자격들외에서 포인터(62)를 사용하려고 시도할 때, 오류가 기동될 수 있다. 상기 범위 정보(64)는, 예를 들면, 포인터들이, 특정한 공지된 한계내에 있고, 민감하거나 안전한 정보를 포함할지도 모르는 메모리 어드레스 공간의 그 밖의 영역들에 벗어나지 않는 것을 보장하는데 유용할 수 있다. 동일한 물리적 스토리지가 범용 데이터 레지스터들과 제한 포인터 레지스터들과의 양쪽에 사용되는 실시예에 있어서, 일 실시예에서, 상기 포인터 값(62)은, 예컨대, 대응한 범용 레지스터에 사용된 것처럼 동일한 기억장소내에 기억되어도 된다.
도 2는 허용 가능한 범위를 사용하여 데이터나 명령들에의 비인증 액세스에 대해 보호하는 명령들의 타입들의 일례를 도시한 것이다. 도 2의 상부에 도시된 것처럼, 특별한 제한 포인터 레지스터 PR1은, 본 예에서 허용 가능한 범위의 하계(lower bound)를 명시하는 하계 어드레스(68)와 허용 가능한 범위의 상계(upper bound)를 명시하는 상계 어드레스(69)를 사용하여 지정되는, 주어진 포인터 값(62)과 범위 정보(64)를 포함한다. 예를 들면, 상기 하계 어드레스(68)와 상계 어드레스(69)는, 어드레스들 80000 내지 81000의 범위를 명시하도록 세트된다. 오류들은, 특정한 명령들이 상기 제한 포인터 레지스터 PR1을 참조하고 포인터(62)로부터 결정된 어드레스가 이 범위외에 있을 때, 기동될 수도 있다.
예를 들면, 도 2의 파트 A에 도시된 것처럼, 일부 시스템들에서, 오류는, 포인터 레지스터(60)에서의 포인터(62)의 값을, 범위 정보(64)에서 지정한 범위외에 있는 값으로 세트하려는 시도가 있는 경우(여기서는, 포인터가 직접 어드레스를 지정하는 것으로 한다) 기동될 수도 있다. 이것은, 그 포인터를 사용한 임의의 액세스들이 안전하게 상기 허용된 범위내에 있도록 보장될 수 있게 상기 포인터(62)가 상기 지정된 범위외의 어떠한 값도 취하는 것을 피한다. 또는, 도 2의 파트 B에 도시된 것처럼, 오류는, 해당 어드레스 상기 지정된 범위외에 있을 때 명령이 그 포인터(62)의 어드레스에 의해 특정된 장소에 액세스하려고 시도할 때 기동될 수 있다. 따라서, 그래도 상기 포인터(62)를 상기 지정된 범위외의 값으로 세트하도록 허용 가능할 수도 있지만, 포인터 어드레스(또는 그 포인터로부터 얻어진 어드레스)에서의 데이터 액세스가 시도되면, 오류는 그 어드레스가 상기 허용된 범위외에 있을 경우 기동될 수도 있다. 그 밖의 시스템들은, 도 2의 파트 A와 B에 도시된 명령의 타입들 양쪽에 응답하여 오류들을 기동할 수도 있다.
범위 정보(64)는 상이한 방식들로 세트될 수 있다. 예컨대, 보안 코드, 또는 운영체계 또는 하이퍼바이저는, 주어진 포인터를 고려한 범위를 지정하여도 된다. 예컨대, 명령 세트 아키텍처는, 주어진 포인터(62)에 대한 범위 정보(64)를 세트 또는 수정하기 위한 다수의 명령들을 포함하여도 되고, 이 명령들의 실행은 특정한 소프트웨어 또는 상기 프로세서(4)의 특정한 모드들 또는 예외 레벨들로 제한될 수 있다. 상기 범위 정보(64)를 세트 또는 수정하기 위한 임의의 공지된 기술이 사용될 수 있다.
포인터를 참조하여 특정한 명령들을 실행할 때 실행 스테이지(12)에서 사용되어도 되는 실행 제한 포인터 기억소자들(60)의 세트와 아울러, 프로그램 카운터 자격(PCC) 레지스터(80)는 레벨 1 명령 캐시(20)로부터 명령들을 페치중일 때 페치 스테이지(6)에서 유사한 기능성을 제공하는데도 사용될 수도 있다. 특히, 프로그램 카운터 포인터는 필드(82)에 기억되어도 되고, 이때의 PCC(80)는, 제한 포인터 기억소자들(60)의 세트에서 상기 포인터들의 각각에 제공된 범위 및 제한 정보와 유사한, 범위 정보(84)와 임의의 적절한 제한 정보(86)를 제공한다.
도 3은 개개의 데이터 블록들과 관련지어, 그 데이터 블록들이 자격(즉, 제한 포인터와 관련된 제한 정보)을 표현하는지, 통상의 데이터를 표현하는지를 특정하는데 어떻게 태그 비트를 사용하는지를 개략적으로 도시한 것이다. 특히, 메모리 어드레스 공간(110)은, 일반적으로 사이즈가 지정될 일련의 데이터 블록들(115)을 기억할 것이다. 단순히 설명을 위해서, 본 에에서는 각 데이터 블록이 128비트로 이루어진다고 한다. 각 데이터 블록(115)과 관련지어, 일례에서, 그 관련된 데이터 블록이 자격을 표현하는 것을 특정하도록 세트되고, 그 관련된 데이터 블록이 통상의 데이터를 표현하는 것을 나타내도록 클리어되므로, 자격으로서 취급될 수 없는, 태그 비트라고 하는 단일의 비트 필드인 태그 필드(120)를 제공한다. 세트 또는 클리어 상태와 관련된 실제의 값이 실시예에 따라 달라질 수 있지만, 단순히 설명으로만, 일 실시예에서는 상기 태그 비트의 값이 1이면, 그것은 관련된 데이터 블록이 자격인 것을 나타내고, 태그 비트의 값이 0이면, 그것은 관련된 데이터 블록이 통상의 데이터를 갖는 것을 나타낸다는 것을 알 것이다.
제한 포인터 레지스터들(60)의 하나(여기서는 자격 레지스터라고도 함), 이를테면 도 3에 도시된 자격 레지스터(100)에 자격을 로딩할 때, 태그 비트는 그 자격 정보와 함께 이동한다. 이에 따라, 자격이 자격 레지스터(100)에 로딩될 때, 포인터(102), 범위 정보(104) 및 제한 정보(106)(이후, 허가 정보라고 함)는 자격 레지스터에 로딩될 것이다. 추가로, 해당 자격 레지스터와 관련지어, 또는 그 자격 레지스터내의 특유의 비트 필드로서, 태그 비트(108)는, 콘텐츠가 자격을 표현하는 것을 특정하도록 세트될 것이다. 마찬가지로, 자격이 메모리에 돌아가게 기억될 때, 해당하는 태그 비트(120)는, 그 자격이 기억되는 데이터 블록과 관련지어 세트될 것이다. 이러한 해결방법에 의해, 자격과 통상의 데이터를 구별함에 따라서, 통상의 데이터가 자격으로서 사용될 수 없도록 보장하는 것이 가능하다.
도 3에서는, 태그 비트를 포함하는 태그 필드를 참조하였지만, 더욱 일반적인 실시예에서는 태그 비트가 각각의 자격과 관련되는 자격 메타데이터의 일례이다. 따라서, 도 4에 도시된 것과 같이, 시스템의 기억 소자에 기억된 자격(150)(이것이 자격 레지스터들(60) 중에서 한 개인지 또는 메모리 어드레스 공간(110) 내부의 메모리 위치인지에 관계없이)은 그것과 관련된 자격 메타데이터(155)를 갖는다. 자격 메타데이터는 관련된 데이터 블록(150)이 실제로 자격을 표시하는지 또는 그 대신에 범용 데이터로서 해석되어야 하는지 식별하며, 일 실시예에서 이 정보는 자격 메타데이터(155) 내부에 태그 비트로서 인코드된다. 자격 메는 일 실시예에서는 태그 비트만을 포함하지만, 다른 실시예에서는 필요한 경우에는 추가 정보를 포함해도 된다. 예를 들어, 데이터의 종류가 더 세분될 수도 있으며, 자격 메타데이터가 예를 들어 특정한 특권 레벨에 의한 소유권, 미세 입도(fine-grained)의 허가, 예를 들어, 판독 전용 등을 표시한다.
자격은 다양한 형태를 취할 수 있지만, 도 4에 도시된 실시예에서는 자격이 제한 포인터이다. 도시된 것과 같이, 제한 포인터는 포인터 값(160), 범위 정보(165) 및 허가 속성(170)으로 구성된다. 범위 정보와 허가 속성은 총괄적으로 제한 포인터의 속성으로 불려도 된다.
도 5a는 일부 실시예에서 기억되는 예시적인 캐시 라인(200)을 나타낸 것이다. 도시된 것과 같이, 캐시 라인(200)은, 태그 어드레스(201), 유효 비트(202), 더티 비트(203), 자격 태그 더티 비트(204), 자격 태그 205 및 206과, 데이터 값 207 및 208을 포함한다. 자격 태그와 데이터 값의 라벨이 나타내는 것과 같이, 각각의 데이터 값에 대해 제공되는 자격 태그가 존재한다. 이와 달리, 이 캐시 라인에서는, 이 캐시 라인의 수명중에 자격 태그 205 또는 206이 수정되는지 아닌지를 추적하기 위해 사용되는 단지 한 개의 자격 태그 더티 비트(204)가 제공된다는 것에 주목하기 바란다. 도 5b는 도 5a에 나타낸 것과 유사한, 일부 실시예에서 기억되는 또 다른 캐시 라인(210)을 나타낸 것이다. 도시된 것과 같이, 캐시 라인(210)은, 태그 어드레스(201), 유효 비트(212), 더티 비트(213), 2개의 자격 태그 더티 비트 214 및 215, 자격 태그 216 및 217과, 데이터 값 218 및 219를 포함한다. 도 5a와 도 5b의 예시적인 캐시 라인의 유일한 차이점은, 도 5b의 실시예에서는, 2개의 자격 태그 더티 비트 214 및 215가 제공되어, 자격 태그 216 및 217의 각각에 대해 한 개씩 존재한다는 것이다.
도 5c는 데이터 값의 기록이 발행할 때, 이 데이터 값과 관련하여 기억된 자격 태그 더티 비트를 갱신하기 위해 일 실시예에서 사용되는 회로를 개략적으로 나타낸 것이다. 이 회로는, 데이터 값 230과 그것의 관련된 자격 태그 232가 기억된 데이터 값 234 및 자격 태그 235로서 (예를 들어, 캐시 라인에) 기억되도록 하기 전에 기록 트랜잭션을 겪는 데이터 값 230과 그것의 관련된 자격 태그 232를 버퍼링하도록 구성된다. 이 회로는, 그것의 입력으로서 기록 트랜잭션의 일부로서 제공된 자격 태그 232와 (이전에 기억된) 자격 태그 236을 취하는 비교 로직(238)을 더 구비한다. 이들이 기억된 데이터와 관련하여 기억된 자격 태그 더티 비트 238과 다르면, 값 234가 자격 태그가 변경되었다는 것을 표시하도록 설정된다. 이때, 데이터 값 234에 갱신이 행해질 때마다(이것은 자격 태그를 실제로 변경하지는 않는다) 자격 태그 더티 비트 238이 설정되는 더 간단한 변형예도 제시되는데(명시적으로 도시하지는 않는다), 이와 같은 구성은 자격 태그값들의 전체의 비트 단위의 비교를 필요로 하지 않는다는 이점을 갖는다. 그러나, 자격 태그값이 비교적 작을 것으로 예상되는 경우에는, 이와 같은 구성에 의해 얻어지는 이점이 비교적 제한될 수도 있다.
도 6은 일 실시예의 데이터 처리 시스템(250)을 개략적으로 나타낸 것이다. 이 시스템은, CPU(252), (로컬 캐시 제어 256을 갖는) 레벨 1 데이터 캐시(254), (로컬 캐시 제어 260을 갖는) 레벨 2 (통합) 캐시(258), 메모리 제어기(262), 자격 테이블 캐시(264) 및 메인 메모리(266)를 포함한다. 이들 구성요소는 본 발명이 속하는 기술분야의 당업자에게 있어서는 자명한 캐시 계층구조이 형태로 배치되는데, 더 작고 더 빠른 캐시 스토리지가 CPU(252)에 더 가까운 더 낮은 캐시 레벨에 설치되고, 더 느리고 더 큰 캐시 자격이 메모리(266)에 더 가까운 더 높은 캐시 레벨에 설치된다. 도 6에 도시된 것과 같이, 메모리 제어기(262)와 메인 메모리(266) 사이에 추가적인 캐시 레벨(268)이 더 설치되어도 된다. 도 6에 나타낸 구성요소들의 일부의 특정한 구성을 이하의 첨부도면을 참조하여 더욱 상세히 설명한다.
도 7a는 데이터 기록 트랜잭션이 자격 메타데이터를 포함해야 하는지 아닌지 판정하기 위해 일 실시예에서 취해지는 스텝들의 시퀀스를 나타낸 것이다. 예를 들어, 이들 스텝은 도 6에 도시된 메모리 제어기(262)에 의해 실행된다. 스텝 280에서, 캐시/메모리 계층의 다음 레벨을 목표로 하는 기록 트랜잭션이 행해질 때까지 흐름이 반복된다. 기록 트랜잭션이 행해지면, 스텝 282로 흐름이 진행하여, 기록 트랜잭션의 대상인 데이터 값에 대한 자격 태그 더티 비트(CTD)가 0인지, 즉 기록 트랜잭션의 대상인 데이터 값 또는 값들과 관련된 자격 태그 비트(들)가 수정되지 않았다는 것을 나타내는지 아닌지 판정한다. 이것이 아닌 경우에는, 즉 자격 태그 비트(들)가 수정된 경우에는, 스텝 284로 흐름이 진행하여, 자격 태그 비트(들)를 포함하는 기록 트랜잭션이 계속된다. 즉, 이들 자격 태그들의 로컬에 유지된 값들도 캐시/메모리 계층의 다음 레벨로 기록된다. 이때, 도 7a에서 언급한 기록 트랜잭션은 사실상 판독-수정-기록 트랜잭션이므로, 스텝 284에서(그리고 이하의 스텝 288에서도 마찬가지로) 기록 트랜잭션을 진행하는 것은 자격 태그에 대한 초기 판독 트랜잭션을 포함하는 것으로 해석되어야 한다(또는 제어 흐름에 따라서는 포함하지 않는다). 그러나, 스텝 282에서, 자격 태그 더티 비트(들)가 세트되지 않은 것으로(0) 판정되어, 자격 태그 비트(들)의 수정이 일어나지 않았다는 것을 나타내는 경우에는, 스텝 286으로 흐름이 진행한다. 스텝 286에서, 자격 태그(들)가 (자격과 달리) 데이터를 표시하는지와, "능동 자격 태그(CT) 설정"이 현재 인에이블되어 있는지 판정한다. 이것은 자격 태그에 대해 추가적인 보안 레벨을 제공하는 기술이며, 예를 들어, 동일한 메모리 위치에 대한 복수의 에이전트의 기록과 관련하여 유용할 수 있다. 이와 같은 "능동 자격 태그(CT) 설정"은 일반적으로 설정되거나, 예를 들어, 다른 코어로부터 수신된 기록 활동 정보(도 6의 메모리 제어기에 대한 입력을 참조)에 근거하여 설정될 수 있다. 이들 조건 모두가 참이면, 스텝 284로 흐름이 진행하여, 자격 태그를 포함하는 기록 트랜잭션이 진행된다. 이것은, 자격 태그들이 변경되지 않은 것처럼 보이더라도, 이들 자격 태그가 명시적으로 리셋되어, 발생되지 않아야 하는 자격의 위조(무심코 또는 악의적인 것에 무관하게)를 방지하는 추가적인 보호 레벨을 제공하기 위한 데이터 값(자격이 아니다)을 표시하는 것을 제공한다. 그렇지 않은 경우에는, 스텝 286으로부터 스텝 288로 흐름이 진행하여, 자격 태그 비트(들)를 갖지 않은 기록 트랜잭션이 진행된다. 즉, 다음의 메모리 레벨에 갱신된 값만 기록된다.
도 7b는 이와 같은 기능을 구현하기 위해 사용되는 회로의 일례를 제공하는데, 이때 값(290)과 그것의 관련된 자격 태그들(292)이 버퍼들 294 및 296에 일시적으로 기억되고, 버퍼 296은 값(290)과 관련되어 기억된 자격 태그 더티 비트(298)로부터 취한 추가적인 인에이블(EN) 입력을 갖는다. 따라서, 이것은, CTD 비트(298)의 설정이, 자격 태그(292)가 다음 스토리지 레벨에 대한 액세스의 일부를 구성하게 된다는 것을 의미한다.
도 8은 일 실시예에서 도 6의 항목 264로 나타낸 것과 같은 자격 태그 캐시를 개략적으로 나타낸 것이다. 이와 같은 자격 태그 캐시는 예를 들어 메모리 제어기(262)의 일부를 구성하거나 별도로 설치되어도 된다. 사용시에, 캐시 메모리 계층의 다음 레벨(이것은 메모리(266)이거나 추가적인 캐시 레벨(268)일 수 있다)에 전달할 기록 트랜잭션의 처리시에 메모리 제어기는 이와 같은 자격 태그 캐시를 참조한다. 예를 들어, 메모리 제어기(262)가 더티 캐시 라인을 퇴출한 (CPU(252)에 더 가까운) 더 낮은 캐시 레벨에 의해 개시된 후기록 트랜잭션을 처시하고 있을 때 이것이 일어날 수 있다. 메모리 제어기가 캐시 메모리 내부의 다음 레벨에 이 트랜잭션을 전달하는 경우, 이것은 한 개의 캐시 레벨로부터 포괄적인 캐시 배치에 참가하고 있는 다른 캐시 레벨에 더티 데이터를 다기 기록하는 것이 될 수 있다.
도 8에 282로 라벨이 붙여진 자격 태그 캐시는, 메모리의 일부에서 검색된 다수의 캐시 라인에 자격 태그 테이블 정보를 기억한다(도 6 참조). 캐시 라인에 자격 태그 테이블 정보를 기억하는 것은 기록 트랜잭션의 대상인 값의 대응하는 태그 어드레스에 근거한다. 필요한 경우에는, 태그 어드레스를 자격 태그 캐시에 대한 색인으로 변환하는 변환회로(280)가 설치된다. 일반적으로, 자격 태그 캐시의 동작은 통상적인 캐시 동작 절차에 따라 행해지는데, 캐시는 일반적으로 전체가 점유되고, 캐시 부적중(miss)이 발생하면, 필요한 캐시 라인이 메모리에서 검색되고, 교체할 희생자 캐시 라인이 선택된다.
도 8에 나타낸 자격 태그 캐시(28) 내부의 캐시 라인들은, 도면의 하부에 나타낸 자격 태그 테이블 정보의 계층 구조에 대한 자격 태그 테이블 정보를 기억한다. (본 실시예에서는 8 비트를 갖는) 이 구조의 최상위 레벨 테이블(286)의 각각의 비트는, 다음의 하위 레벨 테이블에 이t는 비트들이 세트되는지 아닌지를 표시한다. 따라서, 도시된 실시예에서는, 테이블 290의 어떤 비트도 세트되지 않은 경우에는 테이블 286의 "요약" 비트가 세트되지 않는다. 역으로, 테이블 288의 2개의 비트가 세트된 경우에는, 테이블 286의 "요약" 비트가 세트된다. 테이블 288/290과 다음 하위 레벨에 위치한 이들 테이블을 요약한 테이블들(292, 294, 296 및 298로 라벨이 붙여진 테이블) 사이의 관계에도 동일한 원리가 적용된다.
단순한 메모리 시스템에서, 메모리 제어기가 자격 태그를 관련된 데이터로부터 물리 메모리의 별개의 영역에 기억한다는 것을 고려하면, 자격 태그 캐시(282)의 제공의 이점을 알 수 있다. 이와 같은 경우, 자격 태그 더티 정보가 존재하지 않는다면, 예를 들어, 최종 레벨 캐시로부터 메모리에의 기록시에, 메모리 제어기가 실제로, 데이터를 유지하는 메모리에 대한 첫 번째 기록과, 자격 태그 정보를 포함하는 메모리에 대한 두 번째 판독/수정-기록을 포함하는 2개의 기록 트랜잭션을 수행할 필요가 있을 것이다. 그러나, 자격 태그가 변경되지 않았다는 것을 표시하는 자격 태그 더티 정보의 이용가능성으로 인해, 이와 같은 추가적인 판독-수정-기록 동작이 필요하지 않게 될 것이다.
이와 관련하여, 자격 태그 메모리에 필요한 여분의 참조의 비용을 경감하기 위해, (도 8의 282와 같은) 자격 태그 캐시를 설치하여 메모리에 대한 이들 추가적인 액세스의 일부를 줄인다. 그러나, 이와 같은 자격 태그 캐시가 존재한다면, 여기에서 제안한 자격 태그 더티 정보가 없으면, 자격 태그 정보의 적정한 라인이 태그 캐시 내부에 존재하여 태그 정보의 신속한 판독 또는 기록을 가능하게 하도록 메모리 제어기가 보장할 필요가 있을 것이다. 라인이 존재하지 않는다면, 태그 캐시로부터 기존 라인의 퇴출을 필요로 할 것이며, 메모리에 대한 후기록과, 그후의 태그 비트를 포함하는 라인과, 더 거친 입도의 태그 정보 테이블을 표시하는 적절한 추가적인 라인들의 로드가 태그 캐시로부터 유용한 정보를 교대로 퇴출하고 아마도 이 정보를 기록한다. 이에 따라, (점선 화살표 연장을 사용하여) 도 8에서 "로드" 및 "퇴출"을 나타내는 화살표는, 자격 태그 캐시의 각각의 이와 같은 갱신에 대해 한 개보다 많은 수의 캐시 라인이 로드되고 한 개보다 많은 수의 캐시 라인이 퇴출되는 것을 나타낸다. 이와 달리, 자격 태그 더티 정보가 이용가능하면, 메모리로부터의 판독 이후에 태그가 변경되지 않았다는 표시가 자격 태그 캐시 내용에 대한 변경을 필요로 하지 않을 것이다. 예를 들어, 계층의 최상위 레벨(286)에서 세트되지 않은("0") 한 개의 비트는, 메모리의 전체 부분이 데이터 값만 포함하고 자격을 포함하지 않는다는 것을 나타낼 수 있기 때문에, 자격 태그 정보의 기억의 계층적인 속성은 이와 같은 로컬에 기억된 자격 태그 정보의 참조를 더 가속화할 수 있다.
도 9는 본 발명에서 제시된 것과 같이 캐시 내부의 자격 태그 더티 비트를 관리할 때 일 실시예에서 취해지는 스텝들의 시퀀스를 나타낸 것이다. 이 흐름은 스텝 300에서 시작하는 것으로 도시되어 있는데, 이 스텝에서는 값이 캐시의 캐시 라인에 기억되고 자격 태그 정보가 이 값과 함께 원자적으로 기억된 것으로 가정한다. 그후, 스텝 302로 처리가 진행되어, 이 캐시 라인에 대한 기록을 행할 것인지 판정한다. 행하지 않는 경우에는, 스텝 308로 흐름이 진행하여, 이 캐시 라인의 퇴출을 행할 것인지 판정하고, 퇴출을 행할 경우에는 이 캐시 라인의 (현재) 수명이 끝난 것이며, 스텝 310에서 흐름이 끝난다. 그러나, 스텝 302에서 이 캐시 라인에 대한 기록을 행할 것으로 판정되는 경우에는, 스텝 304에서 기록의 대상인 이 값에 대한 자격 태그가 수정되었는지 판정한다. 예를 들어, 자격 태그의 현재 기억된 값과 기록의 대상인 값과 함께 제공되고 있는 자격 태그의 값 사이에서 비트 단위의 비교가 행해질 수 있다. 태그가 수정된 것으로 밝혀진 경우에는, 스텝 306으로 처리를 진행하여, 이 수정을 표시하는 대응하는 자격 태그 더티 비트가 세트된다. (전술한 것과 같이) 이와 같은 캐시 라인의 퇴출을 행할 것인지 판정하는 다음 스텝 308에서 경로가 수렴하고, 퇴출하는 경우에는 이 캐시 라인의 (현재) 수명이 끝나며, 스텝 310에서 흐름이 종료한다. 그렇지 않은 경우에는, 이 캐시 라인이 캐시 내부에 유지되고 흐름이 스텝 302로 되돌아간다.
도 10은 본 발명에서 제안되는 것과 같이 자격 태그 캐시를 액세스할 때 일 실시예에서 취해지는 스텝들의 시퀀스를 나타낸 것이다. 예를 들어, 이것들은 264와 같은 자격 태그 캐시를 액세스할 때 261과 같은 메모리 제어기에 의해 행해지는 스텝이어도 된다(도 6 참조). 이 흐름은 320에서 개시하는 것으로 생각할 수 있는데, 이 스텝에서는 메모리 액세스가 수신될 때까지 처리를 대기한다. 예를 들어, 이것은 (도 6의 실시예에서) 메모리 266을 목표로 하는 기록 트랜잭션일 수도 있다. 실행할 메모리 액세스가 수신되면, 스텝 322로 처리가 진행되어, 대응하는 자격 태그 더티(CTD) 비트가 이용가능한지 판정된다. 이용가능한 경우에는, 다음 스텝 324에서, CTD 비트가 세트되어 있는지 검사한다. 세트되지 않아, 자격 태그가 수정되지 않은 것을 나타내는 경우에는, 스텝 334로 흐름을 진행하여, 자격 태그 액세스의 완료를 신호로 보내고, 메모리 액세스의 자격 태그 부분이 생략될 수 있다. 그러나, CTD 비트가 세트되거나, 대응하는 CTD 정보가 이용가능하지 않으면, 스텝 326으로 흐름이 진행하여, 메모리 제어기가, 메모리 액세스의 태그 어드레스 정보에 근거하여 룩업을 행하면서, 자격 태그 테이블 캐시를 액세스한다. 스텝 328에서 자격 태그 테이블 캐시에서 대응하는 자격 태그 정보가 발견되지 않으면(즉, "부적중"이 존재하면), 스텝 330을 거쳐 흐름이 진행하여, 한 개 이상의 자격 태그 테이블 라인들의 퇴출과 메모리에서 검색된 한 개 이상의 자격 태그 테이블 라인들의 새로운 할당에 의한 교체를 행한다. 그후(또는 스텝 328에서 "적중"으로부터 직접), 스텝 332에서 필요한 자격 태그 테이블 라인(들)이 액세스되고, 최종적으로 스텝 334에서 자격 태그 액세스의 완료의 신호가 전송된다. 스텝 334 후에, 스텝 320으로 처리가 되돌아간다.
도 11, 도 12 및 도 13은, 시스템이 자격 메타데이터 수정 마커(자격 태그 더티(CTD) 비트) 및/또는 데이터 수정 마커(데이터 더티 비트)를 더 전달하도록 구성되는지 여부에 따라 캐시 스토리지로 데이터가 전달되거나 캐시 스토리지로부터 외부로 데이터가 전달되는 상황에 대해 일부 실시예에서 시스템에 부과되는 일부 규칙을 나타낸 것이다. 즉, 캐시 내부의 데이터 블록과 관련하여 기억되는 자격 태그 더티 비트 및/또는 데이터 더티 비트는, 이것이 (캐시 내부로 또는 캐시로부터 외부로) 전달될 때 데이터 블록과 함께 이동하지 않을 수 있다. 이들 규칙은 자격 태그 더티 비트(들) 및/또는 데이터 더티 비트(들)가 취하는 것으로 가정하는 것에 관해 전달의 대상에 대해 특정한 제약을 가한다.
(캐시 스토리지 내부로 또는 캐시 스토리지의 외부로의 데이터의 전달시에) 도 11에서 스텝 400에서 개시하여, (스텝 402에서) 자격 태그 더티 비트(들)의 값이 데이터 블록과 관련된 자격 태그(들)가 변경된 것으로 표시하는 경우, (스텝 404에서) 데이터가 수정된 것으로 취급되어야 한다. 스텝 406으로 진행하여, 데이터 더티 비트(들)도 전달되지 않고, 전달이 (CPU를 향한) 하위 캐시 레벨에 대한 것인 경우(스텝 408), (스텝 410에서) 데이터와 자격 태그 더티 비트(들)가 클린인 것으로 취급되어야 한다. 그렇지 않으면(스텝 412), 데이터 및 자격 태그 더티 비트(들)가 더티인 것으로 취급되어야 한다.
자격 태그 더티 비트(들)도 전달되는 경우(스텝 414), 데이터 더티 비트(들)와 자격 태그 더티 비트(들)(스텝 410)가 제공된 대로 사용될 수 있다. 이들이 전달되지 않고(스텝 418로 진행), 자격 태그 더티 비트(들)도 전달되지 않으면, 데이터 더티 스테이터스로부터 자격 태그 더티 스테이터스를 추론해야만 한다. 따라서, 자격 태그 비트(들)가 전달되지 않는 경우(스텝 420으로 이끄는 스텝 418), (스텝 420에서) 데이터와 자격 태그(들)가 모두 더티하지 않은 것으로 표기되면, 자격 태그(들)가 세트되지 않은 것으로(즉 데이터를 표시하는 것으로) 취급되고, 스텝 424-도 12에서) 데이터와 자격 태그(들)가 모두 더티인 것으로 표기되면, (스텝 426에서) 자격 태그(들)가 세트되지 안은 것으로(즉, 데이터를 표시하는 것으로) 취급되고, (스텝 428에서) 데이터가 더티한 것으로 표기되고 자격 태그(들)가 더티하지 않은 것으로 취급된다.
스텝 418로부터, 자격 태그 비트(들)가 전달되는 경우(이해를 용이하게 하기 위해 스텝 434에서 반복된다), 스텝 436으로 처리가 진행된다. 여기에서, (스텝 436에서) 데이터 및 자격 태그(들)가 모두 더티하지 않은 것으로 표기되거나, (스텝 438에서) 데이터와 자격 태그(들) 모두가 더티란 것으로 표기되는 경우, (스텝 440에서) 전달된 자격 태그(들)가 타겟에 의해 사용되어야만 한다. 그렇지 않은 경우에는, (도 13의 스텝 442에서) 데이터가 더티인 것으로 표기되고 자격 태그(들)가 더티하지 않은 것으로 표기되는 경우에는, 타겟은, 자격 태그(들)의 복사본을 변경하지 않는 것과, 자격 태그(들)의 복사본을 갱신하는 것과, 자격 태그(들)의 복사본이 제공된 자격 태그(들)와 다른 경우에 에러를 보고하는 것 중에서 한가지를 선택해야 한다(스텝 446). 그렇지 않으면, 전달된 데이터 및 전달된 자격 태그(들)가 클린된다(스텝 444).
도 14는 전달된 데이터와 함께 트랜잭션에 존재하는 정보의 가능한 16가지 조합의 의미를 정의한 것이다. 본 발명의 다양한 실시예는, 트랜잭션이 이들 조합을 표시하는 방법, 즉 자격 태그 및/또는 태그 더티 상태가 트랜잭션에 존재하는지 여부를 구현에 맡겨두도록 선택할 수 있다. 이때, TDP=0가 단지 TD=DD인 것을 암시하기 때문에, 트랜잭션이 의미하는 것을 파악하기 위해 TDP는 대부분 무시할 수 있다. SS는 대부분 트랜잭션이 판독인지 기록인지 알려주지만, 캐시 라인들이 더티 비트와 함께 내측으로 이주한 후 TD/TP가 이와 같은 (약간 의외의) 상황이 취급되어야 하는 방법을 표시하는 실시예도 상정된다.
도 15는 사용될 수 있는 가상머신 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 처리 하드웨어를 작동하기 위한 장치 및 방법에 관해 본 발명을 구현하지만, 하드웨어 장치의 소위 가상머신 구현을 제공하는 것도 가능하다. 이들 가상머신 구현은 가상머신(VM) 프로그램(510)을 지원하는 호스트 운영체계(OS)(520)를 실행하는 호스트 프로세서(하드웨어)(530) 상에서 실행된다. 일반적으로, 합당한 속도에서 실행되는 가상머신 구현을 제공하기 위해서는 크고 강력한 프로세서가 필요하지만, 이와 같은 접근방법은, 호환성이나 재사용 이유로 인해 다른 프로세서에 대해 네이티브한 코드를 실행하려는 요구가 있을 때 등과 같은, 특정한 상황에서 정당화된다. 가상머신 프로그램(510)은 컴퓨터 판독가능한 기억매체(이것은 비일시적인 매체이어도 된다)에 기억되고, 가상머신 프로그램(5100에 의해 모델링되고 있는 장치인 실제 하드웨어에 의해 제공되는 응용 프로그램 인터페이스와 동일한 응용 프로그램(500)에 대한 응용 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 전술한 캐시 스토리지의 모델과 캐시 스토리지 작동방법에 대한 지원은 가상머신 프로그램(510)에서 제공되어, 이와 같은 물리 캐시 스토리지를 갖는 하드웨어 장치와 동일하게 거동하는 환경을 어플리케이션(500)에게 제공한다.
요약하면, 캐시 스토리지를 포함하는 장치와 이와 같은 캐시 스토리지를 작동하는 방법이 제공된다. 캐시 스토리지 내부의 데이터 블록들은, 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 데이터 블록과 관련되어 기억된 자격 메타데이터를 갖는다. 적어도 한가지 종류의 자격은 제한 포인터이다. 캐시 스토리지 내부의 데이터 블록에 대한 기록에 응답하여, 자격 메타데이터 수정 마커가 데이터 블록과 관련하여 설정되어, 데이터 블록이 캐시 스토리지에 기억된 이후에 데이터 블록과 관련된 자격 메타데이터가 변경되었는지 여부를 표시한다. 이것은 시스템의 보안을 지원하여, 의도하지 않는 경우에, 데이터 값으로부터 자격으로의 데이터 블록의 사용의 수정이 일어날 수 없도록 한다. 자격 메타데이터가 메모리에 다른 데이터와 별개로 기억될 때, 메모리에 대한 더 적은 수의 액세스가 행해질 수 있으므로, 효율도 얻어진다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.
Claims (24)
- 장치로서,
데이터 블록들을 기억하는 캐시 스토리지를 구비하고, 각각의 데이터 블록은, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 데이터 블록과 관련되어 기억된 자격 메타데이터를 갖고, 적어도 한가지 종류의 자격은 제한 포인터이고,
상기 장치는, 상기 캐시 스토리지에 기억된 데이터 블록에 대한 기록에 응답하여 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 캐시 제어회로를 더 구비하고, 상기 자격 메타데이터 수정 마커의 값은, 상기 캐시 스토리지에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 장치.
- 제 1항에 있어서,
데이터 블록과 관련하여 설정된 상기 자격 메타데이터 수정 마커는 상기 데이터 블록을 포함하는 복수의 데이터 블록들에 대응하는 장치.
- 제 2항에 있어서,
데이터 블록과 관련하여 설정된 상기 자격 메타데이터 수정 마커는 상기 캐시 스토리지 내부의 각각의 캐시 라인에 대해 단일 비트인 장치.
- 제 1항에 있어서,
데이터 블록과 관련하여 설정된 상기 자격 메타데이터 수정 마커는 상기 데이터 블록과 1 대 1 대응을 갖는 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 캐시 스토리지로부터 추가적인 스토리지 레벨로의 지정된 데이터 블록과 이와 관련된 자격 메타데이터에 대한 수신된 기록 트랜잭션에 응답하여, 지정된 데이터 블록이 상기 캐시 스토리지에 기억된 이후에 자격 메타데이터가 변경되지 않았다는 것을 상기 자격 메타데이터 수정 마커의 값이 표시할 때, 관련된 자격 메타데이터와 상기 추가적인 스토리지 레벨에 대한 기록 트랜잭션을 금지하는 메모리 제어기를 더 구비한 장치.
- 제 5항에 있어서,
상기 추가적인 스토리지 레벨은 메모리 스토리지인 장치.
- 제 5항에 있어서,
상기 추가적인 스토리지 레벨은 추가적인 캐시 스토리지 레벨인 장치.
- 제 6항에 있어서,
기록 트랜잭션은 상기 메모리 스토리지 내부의 관련된 자격 메타데이터에 대한 판독-수정-기록 트랜잭션인 장치.
- 제 5항 내지 제 8항 중 어느 한 항에 있어서,
상기 캐시 스토리지보다 높은 메모리 계층 레벨에 자격 메타데이터를 기억하는 자격 메타데이터 캐시 스토리지를 더 구비하고, 상기 메모리 제어기는 적어도 한 개의 데이터 블록에 대한 메모리 액세스 트랜잭션에 응답하여, 적어도 한 개의 데이터 블록과 관련된 필요한 자격 메타데이터를 반환하고,
상기 메모리 제어기는, 적어도 한 개의 데이터 블록에 대한 메모리 액세스 트랜잭션에 응답하여, 필요한 자격 메타데이터가 상기 자격 메타데이터 캐시 스토리지에 기억되지 않을 때, 적어도 한 개의 데이터 블록이 상기 캐시 스토리지에 기억된 이후 필요한 자격 메타데이터가 변경되지 않은 것을 적어도 한 개의 데이터 블록과 관련된 상기 자격 메타데이터 수정 마커의 값이 표시하지 않는 경우, 상기 자격 메타데이터 캐시 스토리지로부터의 현재 기억된 자격 메타데이터의 퇴출과 상기 자격 메타데이터 캐시 스토리지 내부에의 필요한 자격 메타데이터의 검색을 개시하는 장치.
- 제 9항에 있어서,
상기 자격 메타데이터 캐시 스토리지에 기억된 각각의 비트는, 자격 메타데이터의 복수의 비트들 중에서 어느 것이 세트되는지 아닌지를 나타내는 장치.
- 제 10항에 있어서,
상기 자격 메타데이터 캐시 스토리지는 적어도 2개의 계층 레벨의 스토리지를 포함하고, 더 높은 계층 레벨에 기억된 각각의 비트는 다음의 더 낮은 계층 레벨에 있는 복수의 비트들 중에서 어느 것이 세트되는지 아닌지를 나타내는 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 캐시 스토리지는 캐시 라인들에 데이터 블록들을 기억할 수 있으며, 데이터 블록과 관련하여 상기 캐시 제어회로에 의해 설정된 상기 자격 메타데이터 수정 마커는 상기 캐시 스토리지 내부의 각각의 캐시 라인에 대한 복수의 비트들 중에서 한 개이고, 각각의 캐시 라인에 대한 복수의 비트들 중에서 각각의 비트는, 상기 캐시 라인의 각각의 부분이 상기 캐시 스토리지에 기억된 이후에 상기 캐시 라인의 각각의 부분에 대한 자격 메타데이터가 변경되었는지 여부를 나타내는 장치.
- 제 12항에 있어서,
상기 캐시 제어회로는, 상기 캐시 스토리지 내부에 기억된 데이터 블록에 대한 기록에 응답하여, 데이터 블록 부분과 관련하여 데이터 수정 마커를 기억하고, 상기 데이터 수정 마커의 값은, 데이터 블록이 상기 캐시 스토리지에 기억된 이후에 데이터 블록 부분이 기록되었는지 여부를 나타내고,
상기 자격 메타데이터 수정 마커에 대응하는 상기 캐시 라인의 각각의 부분은 적어도 데이터 블록 부분만큼 큰 장치.
- 제 1항 내지 제 4항 중 어느 한 항에 있어서,
상기 캐시 스토리지로부터 추가적인 스토리지 레벨로의 지정된 데이터 블록과 이와 관련된 자격 메타데이터에 대한 수신된 기록 트랜잭션에 응답하여, 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 그것이 데이터 값인 것을 표시하고, 지정된 데이터 블록이 상기 캐시 스토리지에 기억된 이후 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 변경되지 않았다는 것을 상기 자격 메타데이터 수정 마커의 값이 표시할 때, 메모리 기록 트랜잭션을 발행하여, 메모리에 기억된 자격 메타데이터가 능동적으로 설정되게 함으로써, 지정된 데이터 블록이 데이터 값이라는 것을 표시하는 메모리 제어기를 더 구비한 장치.
- 제 1항 내지 제 4항 중 어느 한 항에 있어서,
상기 캐시 스토리지로부터 추가적인 스토리지 레벨로의 지정된 데이터 블록과 이와 관련된 자격 메타데이터에 대한 수신된 기록 트랜잭션에 응답하여, 지정된 데이터 블록과 관련되어 기억된 자격 메타데이터가 그것이 데이터 값인 것을 표시하고, 지정된 데이터 블록이 상기 캐시 스토리지에 기억된 이후, 다른 에이전트가 메모리 내부의 지정된 데이터 블록과 이와 관련된 자격 메타데이터 중에서 적어도 한 개에 대한 기록 동작을 행하였다는 신호를 메모리 제어기가 수신하였을 때, 메모리 기록 트랜잭션을 발행하여, 메모리에 기억된 자격 메타데이터가 능동적으로 설정되게 함으로써, 지정된 데이터 블록이 데이터 값이라는 것을 표시하는 상기 메모리 제어기를 더 구비한 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 장치는, 상기 캐시 스토리지 내부로 또는 상기 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 데이터 블록과 관련된 자격 메타데이터가 변경되었다는 것을 상기 자격 메타데이터 수정 마커의 값이 표시할 때, 데이터 블록이 수정된 것으로 취급되게 하는 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 장치는, 상기 캐시 스토리지 내부로 또는 상기 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 데이터 수정 마커가 전달되지 않을 경우,
전달이 더 낮은 캐시 층에 대한 것일 때에는 데이터 블록 및 상기 자격 메타데이터 수정 마커가 클린(clean)인 것으로 취급되게 하고,
전달이 더 낮은 캐시 층에 대한 것이 아닐 때에는 데이터 블록 및 상기 자격 메타데이터 수정 마커가 수정된 것으로 취급되게 하는 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 장치는, 상기 캐시 스토리지 내부로 또는 상기 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 상기 자격 메타데이터 수정 마커가 전달되지 않는 경우,
데이터 수정 마커로부터 상기 자격 메타데이터 수정 마커의 값이 추론되게 하는 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 장치는, 상기 캐시 스토리지 내부로 또는 상기 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 자격 메타데이터가 전달되지 않는 경우,
데이터 수정 마커와 상기 자격 메타데이터 수정 마커가 모두 수정되지 않은 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터를 데이터 값을 지정하는 것으로서 데이터 블록을 식별하는 것으로 취급하게 하고,
데이터 수정 마커와 상기 자격 메타데이터 수정 마커가 모두 수정된 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터를 데이터 값을 지정하는 것으로서 데이터 블록을 식별하는 것으로 취급하게 하고,
데이터 수정 마커가 수정된 것으로 표시하고 상기 자격 메타데이터 수정 마커가 수정되지 않은 것으로 표시할 때에는, 전달 대상에게 상기 자격 메타데이터 수정 마커의 로컬 복사본이 유효한 것으로 취급하게 하는 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 장치는, 캐시 스토리지 내부로 또는 상기 캐시 스토리지로부터 외부로의 데이터 블록의 전달에 응답하여, 자격 메타데이터가 전달되지 않는 경우,
데이터 수정 마커와 상기 자격 메타데이터 수정 마커가 모두 수정되지 않은 것으로 표시하거나 데이터 수정 마커와 상기 자격 메타데이터 수정 마커가 모두 수정된 것으로 표시할 때에는, 전달 대상에게 자격 메타데이터를 유효한 것으로 취급하게 하고,
데이터 수정 마커가 수정된 것으로 표시하고 상기 자격 메타데이터 수정 마커가 수정되지 않은 것으로 표시할 때에는, 전달 대상에게,
자격 메타데이터의 로컬 복사본을 수정하지 않는 것,
자격 메타데이터의 로컬 복사본을 갱신하는 것과,
자격 메타데이터의 로컬 복사본이 전달된 자격 메타데이터와 다른 경우 에러를 보고하는 것 중에서 한가지를 행하게 하는 장치.
- 호스트 데이터 처리장치를 제어하여 청구항 1 내지 20 중 어느 한 항에 기재된 장치에 대응하는 명령 실행 환경을 제공하게 하는 프로그램 명령을 포함하는 가상머신 컴퓨터 프로그램.
- 청구항 21에 기재된 가상머신 컴퓨터 프로그램을 기억하는 컴퓨터 판독가능한 기억매체.
- 캐시 스토리지의 작동방법으로서,
상기 캐시 스토리지에 데이터 블록들을 기억하는 단계와,
각각의 데이터 블록과 관련하여, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 자격 메타데이터를 기억하는 단계를 포함하고, 적어도 한가지 종류의 자격은 제한 포인터이고,
상기 작동방법은, 상기 캐시 스토리지에 기억된 데이터 블록에 대한 기록에 응답하여, 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 단계를 더 포함하고, 상기 자격 메타데이터 수정 마커의 값은, 상기 캐시 스토리지에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 캐시 스토리지의 작동방법.
- 장치로서,
데이터 블록들을 캐싱하는 수단과,
각각의 데이터 블록과 관련하여, 각각의 상기 데이터 블록이 자격을 지정하는지 또는 데이터 값을 지정하는지 식별하는 자격 메타데이터를 기억하는 수단을 구비하고, 적어도 한가지 종류의 자격은 제한 포인터이고,
상기 장치는, 데이터 블록에 대한 기록에 응답하여, 데이터 블록들을 캐싱하는 상기 수단에 기억된 데이터 블록과 관련하여 자격 메타데이터 수정 마커를 설정하는 수단을 더 구비하고, 상기 자격 메타데이터 수정 마커의 값은, 데이터 블록들을 캐싱하는 상기 수단에 데이터 블록이 기억된 이후에 데이터 블록과 관련된 상기 자격 메타데이터가 변경되었는지 여부를 표시하는 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1706971.7A GB2562062B (en) | 2017-05-02 | 2017-05-02 | An apparatus and method for managing capability metadata |
GB1706971.7 | 2017-05-02 | ||
PCT/GB2018/051034 WO2018203032A1 (en) | 2017-05-02 | 2018-04-19 | An apparatus and method for managing capability metadata |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200002932A true KR20200002932A (ko) | 2020-01-08 |
KR102590180B1 KR102590180B1 (ko) | 2023-10-17 |
Family
ID=59010913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197034067A KR102590180B1 (ko) | 2017-05-02 | 2018-04-19 | 자격 메타데이터를 관리하는 장치 및 방법 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11119925B2 (ko) |
EP (1) | EP3619615B1 (ko) |
JP (1) | JP7096840B2 (ko) |
KR (1) | KR102590180B1 (ko) |
CN (1) | CN111201518B (ko) |
GB (1) | GB2562062B (ko) |
IL (1) | IL270241B (ko) |
WO (1) | WO2018203032A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2586276B (en) * | 2019-08-16 | 2022-03-30 | Advanced Risc Mach Ltd | Capability write address tracking |
GB2592069B (en) * | 2020-02-17 | 2022-04-27 | Advanced Risc Mach Ltd | Address calculating instruction |
US11200175B2 (en) * | 2020-03-20 | 2021-12-14 | Arm Limited | Memory accessor invailidation |
CN112379929B (zh) * | 2020-11-13 | 2023-09-08 | 海光信息技术股份有限公司 | 一种指令替换方法、装置、处理器、电子设备及存储介质 |
JP2022144469A (ja) | 2021-03-19 | 2022-10-03 | キオクシア株式会社 | メモリシステム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450563A (en) * | 1992-10-30 | 1995-09-12 | International Business Machines Corporation | Storage protection keys in two level cache system |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826672B1 (en) * | 2000-05-16 | 2004-11-30 | Massachusetts Institute Of Technology | Capability addressing with tight object bounds |
US8321637B2 (en) * | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
CN102460376B (zh) * | 2009-06-26 | 2016-05-18 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US8635415B2 (en) | 2009-09-30 | 2014-01-21 | Intel Corporation | Managing and implementing metadata in central processing unit using register extensions |
US9753858B2 (en) * | 2011-11-30 | 2017-09-05 | Advanced Micro Devices, Inc. | DRAM cache with tags and data jointly stored in physical rows |
US9274956B1 (en) * | 2012-10-31 | 2016-03-01 | Amazon Technologies, Inc. | Intelligent cache eviction at storage gateways |
US9348598B2 (en) * | 2013-04-23 | 2016-05-24 | Arm Limited | Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry |
GB2526849B (en) * | 2014-06-05 | 2021-04-14 | Advanced Risc Mach Ltd | Dynamic cache allocation policy adaptation in a data processing apparatus |
US9336047B2 (en) * | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9514054B2 (en) * | 2014-07-08 | 2016-12-06 | Netapp, Inc. | Method to persistent invalidation to ensure cache durability |
US9916191B1 (en) * | 2014-12-19 | 2018-03-13 | EMC IP Holding Company LLC | Techniques for efficiently performing a filesystem consistency check |
US9804891B1 (en) * | 2015-03-20 | 2017-10-31 | Antara Teknik LLC | Parallelizing multiple signing and verifying operations within a secure routing context |
GB2540206B (en) * | 2015-07-10 | 2018-02-07 | Advanced Risc Mach Ltd | Apparatus and method for executing instruction using range information associated with a pointer |
GB2541714B (en) * | 2015-08-27 | 2018-02-14 | Advanced Risc Mach Ltd | An apparatus and method for controlling instruction execution behaviour |
US20180089088A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache |
-
2017
- 2017-05-02 GB GB1706971.7A patent/GB2562062B/en active Active
-
2018
- 2018-04-19 US US16/609,298 patent/US11119925B2/en active Active
- 2018-04-19 KR KR1020197034067A patent/KR102590180B1/ko active IP Right Grant
- 2018-04-19 CN CN201880027855.XA patent/CN111201518B/zh active Active
- 2018-04-19 WO PCT/GB2018/051034 patent/WO2018203032A1/en unknown
- 2018-04-19 EP EP18721116.4A patent/EP3619615B1/en active Active
- 2018-04-19 JP JP2019558514A patent/JP7096840B2/ja active Active
-
2019
- 2019-10-28 IL IL270241A patent/IL270241B/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450563A (en) * | 1992-10-30 | 1995-09-12 | International Business Machines Corporation | Storage protection keys in two level cache system |
Also Published As
Publication number | Publication date |
---|---|
IL270241B (en) | 2022-04-01 |
EP3619615B1 (en) | 2021-12-01 |
GB201706971D0 (en) | 2017-06-14 |
CN111201518A (zh) | 2020-05-26 |
WO2018203032A1 (en) | 2018-11-08 |
US20200192800A1 (en) | 2020-06-18 |
JP2020519991A (ja) | 2020-07-02 |
JP7096840B2 (ja) | 2022-07-06 |
CN111201518B (zh) | 2023-10-20 |
KR102590180B1 (ko) | 2023-10-17 |
GB2562062B (en) | 2019-08-14 |
US11119925B2 (en) | 2021-09-14 |
EP3619615A1 (en) | 2020-03-11 |
GB2562062A (en) | 2018-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102590180B1 (ko) | 자격 메타데이터를 관리하는 장치 및 방법 | |
JP5030796B2 (ja) | データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 | |
KR20180136976A (ko) | 자격 메타데이터에 대해 연산을 행하는 장치 및 방법 | |
CN108351935B (zh) | 用于控制有界指针的使用的设备及方法 | |
TWI770172B (zh) | 用於管理能力域的設備及方法 | |
CN110574009B (zh) | 用于管理对能力的使用的设备和方法 | |
TWI783996B (zh) | 用於詮釋與能力相關聯之權限的裝置及方法 | |
KR102699710B1 (ko) | 데이터 처리장치, 데이터 처리방법 및 컴퓨터 프로그램 | |
US11221951B1 (en) | Skipping tag check for tag-checked load operation | |
JP7269942B2 (ja) | 複数ガード・タグ設定命令 | |
KR20210043593A (ko) | 제한 포인터의 사용을 제어하는 장치 및 방법 | |
TWI801622B (zh) | 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |