KR20220156028A - 메모리 액세서 무효화 - Google Patents

메모리 액세서 무효화 Download PDF

Info

Publication number
KR20220156028A
KR20220156028A KR1020227035803A KR20227035803A KR20220156028A KR 20220156028 A KR20220156028 A KR 20220156028A KR 1020227035803 A KR1020227035803 A KR 1020227035803A KR 20227035803 A KR20227035803 A KR 20227035803A KR 20220156028 A KR20220156028 A KR 20220156028A
Authority
KR
South Korea
Prior art keywords
accessors
memory
accessor
equivalent
circuitry
Prior art date
Application number
KR1020227035803A
Other languages
English (en)
Inventor
마티아스 로트하르 뵈트쳐
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20220156028A publication Critical patent/KR20220156028A/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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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/1441Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

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)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Abstract

복수의 메모리 세그먼트들(370a, 370b, 370c, 370d)로 논리적으로 분할되는 물리적 어드레스 공간을 제공하고 연관된 유효성 표시자들을 갖는 복수의 액세서들(380)을 저장하는 메모리 회로부(110)를 포함하는 데이터 프로세싱 장치(300)가 제공된다. 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 물리적 어드레스 공간의 영역에 대한 액세스를 제어한다. 추적 회로부(310)는 메모리 세그먼트들 중 어느 메모리 세그먼트가 액세서들을 포함하는지를 추적하고, 무효화 회로부(320)는 추적 회로부를 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하고, 액세서 및 등가의 액세서들 각각의 연관된 유효성 표시자를, 액세서 및 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 액세서 및 등가의 액세서들을 무효화한다.

Description

메모리 액세서 무효화
본 발명은 미국방위고등연구계획국(Defense Advanced Research Projects Agency, DARPA)이 부여한 계약번호 HR001118C0016 하에서 정부 지원으로 행해졌다. 정부는 본 발명에 소정의 권리들을 갖는다.
본 발명은 데이터 프로세싱에 관한 것이다. 특히, 본 발명은 메모리 시스템들과 관련이 있다.
데이터 프로세싱 시스템에서, 메모리 액세서(memory accessor)들이 메모리의 특정 구역들에 대한 액세스를 제어하는 데 사용될 수 있다. 그러한 액세서들은 메모리에 대한 참조, 및 메모리 참조가 지정된 방식으로만 사용될 수 있도록 하는 액세스 제약들 둘 모두를 포함할 수 있다. 적절한 때에, 액세서는 무효화될 수 있다. 그러나, 액세서가 복제되었을 경우, 그러한 액세서의 복제물들도 또한 무효화되는 것이 중요하다. 이것이 행해지지 않는 경우, 그러한 복제물들의 소유자는, 메모리 공간이 용도 변경되었더라도, 메모리 공간에 계속 액세스할 수 있을 수 있다. 그러나, 액세서들의 복제물들의 위치를 알아내기 위해 메모리 전체에 걸쳐 스캔하는 것은 매우 시간 소모적이고/이거나 자원 집약적일 수 있다.
제1 예시적인 구성에서 보면, 데이터 프로세싱 장치가 제공되며, 데이터 프로세싱 장치는, 복수의 메모리 세그먼트들로 논리적으로 분할되는 물리적 어드레스 공간을 제공하기 위한 그리고 연관된 유효성 표시자들을 갖는 복수의 액세서들을 저장하기 위한 메모리 회로부 - 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 물리적 어드레스 공간의 영역에 대한 액세스를 제어함 -; 메모리 세그먼트들 중 어느 메모리 세그먼트가 액세서들을 포함하는지를 추적하기 위한 추적 회로부; 및 추적 회로부를 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하기 위한 그리고 액세서 및 등가의 액세서들 각각의 연관된 유효성 표시자를, 액세서 및 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 액세서 및 등가의 액세서들을 무효화하기 위한 무효화 회로부를 포함한다.
제2 예시적인 구성에서 보면, 데이터 프로세싱 방법이 제공되며, 데이터 프로세싱 방법은, 메모리의 물리적 어드레스 공간을 복수의 메모리 세그먼트들로 논리적으로 분할하는 단계; 연관된 유효성 표시자들을 갖는 복수의 액세서들을 저장하는 단계 - 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 물리적 어드레스 공간의 영역에 대한 액세스를 제어함 -; 메모리 세그먼트들 중 어느 메모리 세그먼트가 액세서들을 포함하는지를 추적하는 단계; 추적 회로부를 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하는 단계; 및 액세서 및 등가의 액세서들 각각의 연관된 유효성 표시자를, 액세서 및 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 액세서 및 등가의 액세서들을 무효화하는 단계를 포함한다.
제3 예시적인 구성에서 보면, 명령어 실행 환경을 제공하기 위해 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램이 제공되며, 컴퓨터 프로그램은, 연관된 유효성 표시자들을 갖는 복수의 액세서들을 저장하기 위한 복수의 데이터 구조들 - 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 데이터 구조들 중 하나의 데이터 구조에 대한 액세스를 제어함 -; 데이터 구조들 중 어느 데이터 구조가 액세서들을 포함하는지를 추적하기 위한 추적 프로그램 로직; 및 추적 프로그램 로직을 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하기 위한 그리고 액세서 및 등가의 액세서들 각각의 연관된 유효성 표시자를, 액세서 및 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 액세서 및 등가의 액세서들을 무효화하기 위한 무효화 프로그램 로직을 포함한다.
본 발명은, 단지 예로서, 첨부 도면에 예시된 바와 같은 본 발명의 실시예들을 참조하여 추가로 설명될 것이다.
도 1은 일부 실시예들에 따른 액세서의 예를 예시한다.
도 2a 및 도 2b는 개인 정보에 대한 액세스를 얻기 위해 캐퍼빌리티(capability) 복제물이 사용될 수 있는 방식을 예시한다.
도 3은 일부 실시예들에 따른 데이터 프로세싱 장치를 예시한다.
도 4는 일부 실시예들에 따른, 등가의 액세스들을 무효화하는 프로세스를 보여주는 흐름도를 예시한다.
도 5는 일부 실시예들에 따른, 블룸 필터 엔트리(bloom filter entry)를 재구축하는 프로세스를 보여주는 흐름도를 예시한다.
도 6은 일부 실시예들에 따른, 현재 설명된 기법에 대해 이루어질 수 있는 다수의 개선사항들을 예시한다.
도 7은 일부 실시예들에 따른 데이터 프로세싱의 프로세스를 보여주는 흐름도를 예시한다.
도 8은 일부 실시예들에 따라 사용될 수 있는 시뮬레이터 구현예를 예시한다.
첨부 도면을 참조하여 실시예들을 논의하기 전에, 실시예들 및 연관된 이점들에 대한 하기의 설명이 제공된다.
하나의 예시적인 구성에 따라, 데이터 프로세싱 장치가 제공되며, 데이터 프로세싱 장치는, 복수의 메모리 세그먼트들로 논리적으로 분할되는 물리적 어드레스 공간을 제공하기 위한 그리고 연관된 유효성 표시자들을 갖는 복수의 액세서들을 저장하기 위한 메모리 회로부 - 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 물리적 어드레스 공간의 영역에 대한 액세스를 제어함 -; 메모리 세그먼트들 중 어느 메모리 세그먼트가 액세서들을 포함하는지를 추적하기 위한 추적 회로부; 및 추적 회로부를 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하기 위한 그리고 액세서 및 등가의 액세서들 각각의 연관된 유효성 표시자를, 액세서 및 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 액세서 및 등가의 액세서들을 무효화하기 위한 무효화 회로부를 포함한다.
메모리는 물리적 어드레스 공간(이는 메모리의 특정 저장 셀을 어드레싱하는 데 사용됨)을 제공한다. 이러한 어드레스 공간은 다수의 메모리 세그먼트들로 분할된다. 어드레스 공간은 정확히 메모리 세그먼트들로 분할될 필요가 없으며, 복수의 메모리 세그먼트들 외부에 속하는 어드레스 공간의 구역들이 있을 수 있다는 것에 유의한다. 메모리 세그먼트들은 상이한 크기들의 것일 수 있고, 예를 들어, 소프트웨어에 의해 임의로 선택될 수 있다. 액세서들은 어드레스 공간의 구역들에 액세스하는 데 사용된다. 액세서들은, 예를 들어, 어드레스 공간 내의 위치에 대한 참조를, 참조가 어떻게 사용될 수 있는지에 대한 하나 이상의 제약들과 함께, 그리고 액세서가 유효함(예를 들어, 손상되지 않았음)을 나타내기 위한 유효성 표시자를 포함하는 데이터 구조들의 형태를 취할 수 있다. 액세서들은 메모리 내에, 예를 들어, 메모리 세그먼트들 내에 저장될 수 있고, 추적 회로부는 물리적 메모리의 어느 세그먼트들이 액세서들을 포함하는지를 결정할 수 있다. 그 결과, 액세서(및 그것이 참조하는 메모리)가 더 이상 사용되지 않는다는 것을 나타내기 위한 무효화 요청이 수신될 때, 메모리 내의 임의의 등가의 액세서들을 결정하기 위해 추적 회로부가 컨설팅(consulting)될 수 있다. 이러한 방식으로, 액세서 및 등가하다고 고려되는 그러한 액세서들은 무효화된다. 따라서, 그러한 액세서의 복제물이 무효화될 때, 액세서의 복제물들이 유효한 상태로 유지되는 것을 억제하거나 방지하는 것이 가능하다. 따라서, 이는, 악의적인 또는 불량하게 형성된 코드 섹션들(예컨대, 신뢰되지 않은 라이브러리들)이, 무효화되고 이어서 용도 변경된 메모리에 저장된 비밀 정보에 대한 액세스를 얻는 것을 방지한다. 액세서들이 메모리 영역들에 대한 액세스를 제어하는 것으로 언급되어 있지만, 그들은 각각의 메모리 영역에 대한 액세스를 배타적으로 제어하지는 않는다는 것에 유의한다. 특히, 메모리의 동일한 영역을 향해, 또는 메모리의 중첩하는 구역들로 지향되는 다수의 액세서들이 있을 수 있다. 추가로, 액세서들에 의해 승인된 액세스를 오버라이딩(overriding)하는 자리에 다른 회로들 또는 메커니즘들이 있을 수 있다.
액세서가 무효화되어 있는 액세서와 등가의 액세스인지 여부를 결정하는 다수의 방식들이 있다. 그러나, 일부 예들에서, 등가의 액세서들은 액세서들 중, 어드레스 공간의 영역에 대한 액세스를 제어하는 액세서들을 포함한다. 이러한 예들에서, 액세서는, 그것이, 무효화되어 있는 액세서가 그에 대한 액세스를 제어하는 물리적 어드레스 공간의 동일한 영역에 대한 액세스를 제어하는 경우 등가하다고 고려된다. 따라서, 무효화되어 있는 어드레스 공간의 동일한 영역에 대한 액세스를 승인할 그러한 액세서들을 무효화하는 것이 가능하다. 그 결과, 메모리의 이러한 구역이 재사용되는 경우, 그러한 액세서들은 어드레스 공간의 그러한 구역에 저장된 임의의 콘텐츠들에 액세스하는 데 사용될 수 없다.
일부 예들에서, 액세서는 포인터를 포함한다. 포인터는 추가의 데이터가 저장될 수 있는 메모리 내의 위치에 대한 참조라고 고려될 수 있다. 따라서, 액세서는, 예를 들어 메모리 세그먼트들 중 하나의 메모리 세그먼트 내의 바이트를 참조하는 역할을 하는 포인터를 포함할 수 있다.
일부 예들에서, 액세서는 포인터가 액세스하는 데 사용될 수 있는 물리적 어드레스 공간의 영역을 정의하는 경계 정보를 포함한다. 경계 정보를 제공함으로써, 포인터가 경계 외부에 속하는 위치에 액세스하는 데 사용되는 것을 방지하는 것이 가능하다. 예를 들어, 경계들이 1000의 어드레스 하한 및 2000의 어드레스 상한을 정의하는 경우, 그리고 포인터 P가 어드레스 1999를 가리키는 경우, 액세서는 포인터가 P+5와 동일한 어드레스에 액세스하는 데 사용되는 것을 방지하는데, 그 이유는, 이러한 결과(2004)가 1000 내지 2000의 범위 외부에 속할 것이기 때문이다. 경계 정보는 다수의 방식들로 정의될 수 있다. 예를 들어, 경계 정보는 전술한 바와 같이 하한 및 상한을 포함할 수 있다. 다른 예들에서, 경계 정보는 하한 및 오프셋을 포함할 수 있는데, 여기서, 오프셋은, 오프셋을 하한에 더함으로써 상한을 결정하는 데 사용될 수 있다. 다른 예들에서, 상한이 제공될 수 있고 오프셋이 하한을 정의하는 데 사용될 수 있다. 다른 예들에서, 포인터에 관한 2개의 오프셋들은 하한 및 상한을 나타내기 위해 제공될 수 있다. 또 다른 예들에서, 경계 정보는 액세스가 금지되는 위치를 정의하는 데 사용될 수 있으며, 이때, 모든 다른 메모리 위치들은 포인터를 통해 액세스가능한 것으로 정의된다. 다른 기법들이 이전의 설명으로부터 당업자에게 명백해질 것이다. 액세서는 경계 정보만을 포함하는 것으로 제한되지 않는다는 것에 유의한다. 일부 예들에서, 액세서는 또한, 포인터가 어드레스 공간에 액세스하는 데 사용될 수 있는 방식을 제어하는 허가 정보를 포함할 수 있다. 예를 들어, 일부 예들에서, 액세서는 포인터를 판독 동작들을 위해 사용되는 것으로 제한하는 데 사용될 수 있다.
일부 예들에서, 등가의 액세서들은 액세서들 중, 경계 정보가 액세서의 경계 정보와 매칭되는 액세서들을 포함한다. 액세서가 무효화되어 있는 액세서와 등가하다고 고려되는지 여부를 결정하는 또 다른 방식은 경계 정보를 고려함에 의한 것이다. 예를 들어, 2개의 액세서들은, 그러한 액세서들 사이에 경계 정보가 매칭되는 경우, 등가하다고 고려될 수 있다. 그러한 테스트는 허가들의 매칭을 포함하거나 배제할 수 있다는 점에 유의한다. 예를 들어, 2개의 액세서들은, 추가로, 허가들이 매칭되는 경우, 또는 허가들의 하나의 세트가 무효화될 액세서의 허가들의 서브세트인 경우, 등가하다고 고려될 수 있다. 다른 예들에서, 허가들은 등가성을 결정할 때 고려되지 않을 수 있다.
일부 예들에서, 등가의 액세서들은 액세서들 중, 경계 정보가 물리적 어드레스 공간의 영역의 하위 영역을 정의하는 액세서들을 포함한다. 이러한 예들에서, 경계 정보의 정확한 매칭이 요구되는 것은 아니다. 대신, 고려되고 있는 액세서에 의해 정의되는 영역이 무효화되어 있는 액세서에 대한 어드레스 공간의 영역의 하위 영역인 경우, 액세서는 무효화되어 있는 액세서와 등가하다고 고려될 것이다. 어드레스 공간의 영역이 무효화될 경우, 그러한 어드레스 공간의 일부를 참조하는 임의의 액세서도 또한 무효화될 것인데, 그 이유는, 그러한 액세서에 의해 참조되고 있는 메모리가 경계 무효화가 발생한 결과로서 무효가 될 것이기 때문임이 이해될 것이다. 예를 들어, 메모리 위치들 2 내지 98에 액세스하는 액세서는 어드레스들 0 내지 100의 영역을 정의하는 액세서와 등가하다고 고려된다.
추적 회로부가, 어느 메모리 세그먼트들이 액세서들을 포함하는지를 추적할 수 있는 다수의 방식들이 있다. 그러나, 일부 예들에서, 추적 회로부는 메모리 세그먼트들 각각이 액세서들 중 하나의 액세서를 포함하는지 여부를 나타내도록 적응된다. 그러한 추적 회로부는, 추적 회로부가 추적하는 메모리 세그먼트들 각각에 대해, 그러한 메모리 세그먼트가 액세서를 포함하는지 여부를 나타냄으로써 동작한다. 그러한 정보는 액세서가 생성되거나 복제되는 시간에 결정될 수 있다. 전용 명령어가 액세서들을 유효하게 생성하거나 복제하는 데 사용되는 경우, 그러한 명령어는, 명령어를 호출하는 것이 추적 회로부로 하여금 메모리 세그먼트들 내의 액세서들의 위치를 나타내기 위해 업데이트되게 하는 그러한 방식으로 설계될 수 있다. 그러한 기법은 메모리 세그먼트들 각각의 크기에 대한 트레이드오프(trade off)를 제공할 수 있음이 이해될 것이다. 특히, 추적 회로부가, 각각의 메모리 세그먼트가 액세서를 포함하는지 여부의 표시자를 제공하는 경우, 메모리 세그먼트들의 수가 작으면, 추적 회로부를 위해 더 작은 저장 공간이 요구될 것이다. 그러나, 이것은, 더 큰 메모리 세그먼트들이 액세서를 포함할 가능성이 높아지기 때문에, 덜 유용한 정보를 제공한다. 유사하게, 이러한 더 제한된 정보는 액세서들의 위치를 더 정확하게 알아내는 것을 불가능하게 한다.
일부 예들에서, 추적 회로부는 복수의 비트들을 포함하는 비트 필드를 포함하고; 복수의 비트들은 메모리 세그먼트들 중 어느 메모리 세그먼트가 액세서들 중 하나의 액세서를 포함하는지를 나타내도록 적응된다. 이러한 예들에서, 비트 필드는 복수의 비트들을 제공하는 데 사용된다. 비트 필드의 비트들의 서브세트들(비트 벡터들)은 특정 메모리 세그먼트들을 표현하는 데 사용된다. 따라서, 각각의 비트 벡터를 고려함으로써, 특정 메모리 세그먼트가 액세서를 포함하는지 여부를 결정하는 것이 가능하다. 간단한 예에서, 각각의 메모리 세그먼트에 대해 단일 비트가 제공될 수 있으며, 이 단일 비트는 그러한 메모리 세그먼트가 액세서를 포함하는지 또는 아닌지 여부를 간단하게 나타내는데, 비트 필드 내의 '1'은 메모리 세그먼트가 액세서를 포함함을 나타내는데 사용될 수 있는 한편, '0'은 메모리 세그먼트가 액세서를 포함하지 않음을 나타내는 데 사용될 수 있다. 반대의 인코딩이 또한 가능하다. 비트 필드를 사용하여 이러한 정보를 저장함으로써, 메모리 세그먼트들 각각의 콘텐츠들은 콤팩트한 방식으로 표현될 수 있다.
일부 예들에서, 추적 회로부는 해시 테이블을 포함하고; 해시 테이블은 액세서의 적어도 일부의 해시를 입력으로서 수용한다. 여기서 용어 "해시 테이블"은 해시 함수를 사용하여 해시 테이블의 입력 및/또는 콘텐츠들이 생성되는 테이블을 지칭하는 데 사용된다. 예를 들어, 입력 값에 대해 해싱을 수행함으로써 테이블에 대한 룩업 인덱스가 생성될 수 있어, 특정 엔트리를 찾기 위해 테이블의 각각의 엔트리를 수동으로 스캔하기보다는, 테이블의 특정 인덱스에 바로 액세스하는 것이 가능하게 된다. 해시 함수는 큰 입력 도메인으로부터의 입력을 더 작은 출력 도메인의 출력으로 변환시키는 함수인 것으로 고려될 수 있다. 프로세스는 암호화될 (단방향일) 필요는 없다. 이러한 예들에서, 해시 테이블에 대한 입력을 제공하기 위해 액세서의 적어도 일부(예를 들어, 경계 정보)가 해싱된다. 그러한 데이터 구조를 사용함으로써, 메모리 세그먼트가 임의의 액세서를 포함하는지 여부뿐만 아니라, 주어진 메모리 세그먼트가 해싱된 입력을 갖는(예를 들어, 동일한 경계 정보를 갖는) 액세서를 포함할 수 있는지 여부 또는 어느 메모리 세그먼트들이 해싱된 입력을 갖는 액세서를 포함할 수 있는지를 결정하는 것이 가능하다. 이는, 주어진 메모리 세그먼트가 관심 있는 액세서를 포함하는지 여부에 대한 더 지능적인 평가를 제공하는 것을 가능하게 한다. 해시 함수에 대한 입력은 2개의 액세서들 사이에 등가성을 정의하는 것으로 고려되는 액세서의 그러한 요소들에 기초할 수 있다. 예를 들어, 2개의 액세서들이 그들의 경계 및 특권 정보가 매칭되는 경우 등가하다고 고려되면, 이들은 해시에 대한 입력들로서 제공되어, 추적 회로부가 등가의 액세서들을 포함하는 메모리 세그먼트들을 식별하는 데 도움을 줄 수 있게 할 수 있다.
일부 예들에서, 추적 회로부는 블룸 필터를 포함한다. 블룸 필터는, 이러한 경우에, 특정 품질들을 갖는 액세서가 주어진 메모리 세그먼트 내에 속하는지 여부를 결정하는 데 사용될 수 있는 데이터 구조이다. 블룸 필터들은 거짓 긍정들이 가능한 것이다. 다시 말해, 블룸 필터는, 등가의 액세서가 존재하지 않을 때, 주어진 메모리 세그먼트가 등가의 액세서를 포함한다고 보고할 수 있다. 그러나, 거짓 부정은 발생하지 않는데, 즉, 블룸 필터는, 등가의 액세서가 존재할 때, 메모리 세그먼트에 등가의 액세서가 존재하지 않는다는 표시를 반환하지 않는다. 이것은, 액세서를 검색하기 위해 메모리 세그먼트의 추가 분석을 불필요하게 수행하는 것이 불편하지만, 등가의 액세서가 존재하는 것으로 보고되지 않았기 때문에 등가의 액세서를 무효화하지 않는 것이 안전하지 않은 경우에, 무효화에 중요하다. 블룸 필터는, 다수의 비트들이 메모리 세그먼트들 중 하나의 메모리 세그먼트에 대응하는, 비트 필드를 사용하여 구현될 수 있다. 각각의 메모리 세그먼트에 할당된 비트들의 수는 증가된 저장 공간을 대가로 거짓 긍정들의 가능성을 감소시킨다.
일부 예들에서, 무효화 회로부는, 추적 회로부가 주어진 메모리 세그먼트가 액세서들 중 하나의 액세서를 포함한다고 나타낼 때, 주어진 메모리 세그먼트의 스위핑(sweeping)을 수행하도록 그리고 주어진 메모리 세그먼트에 대응하는 블룸 필터의 엔트리를 재구축하도록 적응된다. 추적 회로부는 (특정 확률로) 특정 메모리 세그먼트가 등가의 액세서를 포함한다는 것을 나타내기 위해 사용될 수 있다. 블룸 필터 엔트리는 새로운 액세서들이 메모리 세그먼트에 추가되거나 그로 이동된 결과로서 업데이트될 수 있지만, 블룸 필터는 이러한 액세서들이 메모리 세그먼트로부터 이동되거나 그로부터 제거될 때는 업데이트될 수 없다. 이는 (제거되고 있는 액세서를 제외한) 엔트리의 이전 버전이 알려져 있지 않거나 유지되지 않을 수 있기 때문이다. 따라서, 주어진 메모리 세그먼트에 대한 엔트리는, 그러한 엔트리가 주기적으로 재구축되지 않는 한, 결국 포화될 것이다(예를 들어, 액세서가 존재한다고 항상 나타냄).
일부 예들에서, 무효화 회로부는 주어진 메모리 세그먼트 내의 액세서들 각각의 연관된 유효성 표시자를 고려함으로써 주어진 메모리 세그먼트에 대응하는 블룸 필터의 엔트리를 재구축하도록 적응된다. 이러한 예들에서, 스위핑이 발생할 때, 블룸 필터의 엔트리의 재구축은 액세서들 각각의 유효성 표시자를 고려한다. 특히, 블룸 필터 엔트리는 무효하다고 고려되는 액세서들에 대해서는 업데이트되지 않는다. 이는, 무효하되어, 액세서들이 사용될 수 없기 때문이다.
일부 예들에서, 주어진 메모리 세그먼트에 대응하는 블룸 필터의 엔트리는 액세서들 중, 주어진 메모리 세그먼트에 있는 액세서들의 재기입을 수행함으로써 재구축되고; 무효화 회로부는, 연관된 유효성 표시자가 유효성을 나타낼 때, 메모리에 액세서를 물리적으로 기입하는 것을 억제함으로써 재기입이 수행되는 동작의 스위핑 모드에서 동작하도록 적응된다. 캐퍼빌리티를 생성하거나 복제하기 위한 명령어들이 또한 추적 회로부의 관련 엔트리를 업데이트하는 것을 담당하는 상황들에서, 그러한 동일한 명령어들이 스위핑 동안 블룸 필터 엔트리를 재생성하기 위해 사용될 수 있다. 이러한 상황들에서, 이러한 명령어들이 데이터를 메모리에 다시 물리적으로 기입하지 않는 동작의 스위핑 모드가 제공될 수 있다. 따라서, 이는 메모리 기입이 실제로 수행되지 않기 때문에, 메모리 대역폭을 절약한다. 이러한 기법을 사용하여 데이터가 메모리에 다시 기입되지 않더라도, 무효화되어 있는 엔트리들은 그들의 (현재 무효한) 유효성 표시자를 여전히 메모리에 물리적으로 기입되게 할 것이라는 점에 유의한다. 또한, 블룸 필터 테이블 엔트리는 이러한 엔트리들을 포함하도록 업데이트되지 않는데, 그 이유는, 그들이 이제 무효하다고 고려되기 때문이다.
일부 예들에서, 무효화 회로부는, 추적 회로부가 주어진 메모리 세그먼트가 액세서들 중 하나의 액세서를 포함한다고 나타낼 때, 등가의 액세서들을 결정하기 위해 주어진 메모리 세그먼트를 스위핑하도록 적응된다. 메모리 세그먼트가 등가의 액세서를 포함할 수 있다고 평가되었을 경우, (그들이 존재하는 경우) 등가의 액세서들의 위치를 알아내기 위해 메모리 세그먼트를 스캔할 필요가 있다. 일부 실시예들에서, 동시에, 스위핑되고 있는 메모리 세그먼트에 대응하는 블룸 필터의 엔트리가 재구축된다. 특히, 주어진 메모리 세그먼트 내에 위치된 액세서들의 전체 세트가 주어진 메모리 세그먼트에 대해 제공되는 블룸 필터의 엔트리를 재생성하는 데 사용될 수 있다. 메모리 세그먼트들의 크기는 스캔이 발생하는 데 걸릴 시간에 영향을 미친다는 것에 유의한다. 전술한 바와 같이, 메모리 세그먼트들의 수는 추적 회로부에 필요한 저장소의 양에 영향을 미친다. 그러나, 더 적은 메모리 세그먼트들이 제공되는 경우(이에 의해 더 작은 추적 회로부를 사용함), 각각의 메모리 세그먼트는 더 커질 가능성이 있고, 이에 의해, 스위핑 시간이 더 길어진다.
일부 예들에서, 무효화 회로부는, 추적 회로부가 주어진 메모리 세그먼트에 액세서들 각각이 없다고 나타낼 때, 주어진 메모리 세그먼트를 스위핑하는 것을 억제하도록 적응된다. 추적 회로부가, 주어진 메모리 세그먼트가 액세서들을 포함하지 않는다고 나타내는 경우, 주어진 메모리 세그먼트는, 그러한 메모리 세그먼트 내에 임의의 등가의 액세서들이 있는지 여부를 결정하기 위해 스위핑될 필요가 없다. 그 결과, 추적 회로부는 스캔이 수행되는 메모리 세그먼트들의 수를 감소시키기 위해 사용될 수 있다.
일부 예들에서, 메모리 회로부는 활성 스택 영역을 포함하도록 추가로 논리적으로 분할되고; 추적 회로부는 활성 스택 영역을 추적하기 위한 비트 필드를 포함하고; 추적 회로부는 메모리 세그먼트들을 추적하기 위한 해시 테이블 또는 블룸 필터를 포함한다. 그러한 데이터 프로세싱 장치에서, 활성 스택 영역은 현재 활성인 스레드가 일시적인 데이터 값들을 저장하기 위해 사용된다. 이러한 데이터 값들의 특질은 그들이 주기적으로 수정되고, 추가되고, 삭제될 수 있다는 것이다. 그러한 데이터 값들은 액세서들을 포함할 수 있다. 따라서, 활성 스택 영역에 대해, 블룸 필터 엔트리는 빠르게 포화될 것이고, 이에 의해, 등가의 액세스가 존재했었다고 (심지어 그것이 아니었더라도) 규칙적으로 나타낸다는 것이 이해될 것이다. 그 결과, 이러한 실시예들에서는, 액세서가 활성 스택 영역 내에 존재하는지 또는 아닌지 여부를 나타내기 위해 더 간단한 비트 필드가 사용되는 한편, 메모리의 적어도 일부 다른 구역들은 해시 테이블 엔트리들 또는 블룸 필터 엔트리들을 사용하여 표현되는데, 그 이유는, 메모리의 그러한 섹션들이 덜 빈번한 수정이 이루어짐으로 인해 포화될 가능성이 낮기 때문이다.
일부 다른 예들에서, 메모리 회로부는 활성 스택 영역을 포함하도록 추가로 논리적으로 분할되고; 추적 회로부는 활성 스택 영역을 추적하는데 제약을 받는다. 이러한 예들에서, 추적 회로부는 단순히 활성 스택 영역을 완전히 추적하는데 제약을 받을 수 있다. 이는 추적 회로부가 활성 스택 영역을, 액세서를 포함하는 것으로 항상 보고할 가능성이 있다는 사실을 인식하고 이루어질 수 있다. 따라서, 활성 스택 영역은 추적 회로부를 참조하여 등가의 액세서에 대해 항상 스위핑될 수 있다.
일부 예들에서, 추적 회로부는 액세서들 중, 메모리 세그먼트들 외부에 저장된 액세서들을 추가로 추적하도록 적응된다. 이러한 예들에서, 메모리 세그먼트들 외부의 메모리의 구역들에 대해서는 더 간단한 추적이 사용될 수 있다. 특히, 메모리 세그먼트들 외부에 속하는 메모리의 상이한 부분에 각각이 대응하는 일련의 비트들을 사용하여, 액세서가 메모리의 그 구역 내에 위치되는지 여부를 나타낼 수 있다.
이제 도면을 참조하여 특정 실시예들이 설명될 것이다.
도 1은 일부 실시예들에 따른 캐퍼빌리티(100)(이는 청구된 액세서의 예임)의 예를 예시한다. 캐퍼빌리티는 포인터(130)를 통해 제공되는, 메모리 내의 위치에 대한 액세스를 제어하는 데 사용된다. 특히, 캐퍼빌리티(100)는, 메모리(110)에 액세스하기 위해 포인터(130)가 사용될 수 있는 방식을 제어하는 메타데이터(120)를 포함한다. 이러한 예에서, 메타데이터(120)는 허가들(150)의 세트를 포함한다. 허가들(150)은 포인터가 사용될 수 있는 방식을 나타낸다. 예를 들어, 허가들(150)은, 포인터(130)가 메모리(110)에 대한 판독 액세스를 위해 사용될 수 있음을 나타낼 수 있다. 그러한 경우, 기입 액세스를 위해 포인터(130)를 사용하려는 시도는, 예를 들어, 예외가 발생하게 함으로써, 실패할 것이다. 메타데이터(120)는 또한, 기초 어드레스(160) 및 한계 어드레스(170)의 형태의 경계 정보(160, 170)를 포함한다. 이러한 어드레스들은 함께 메모리(110)의 물리적 영역(180)을 정의한다. 경계 정보(160, 170)는, 포인터(130)가 이러한 영역(180) 외부의 어드레스에 액세스하는 데 사용되는 경우, 예를 들어, 예외가 발생함으로써 요청이 실패할 것임을 의미한다. 캐퍼빌리티(100)는 또한 태그(150)를 포함한다. 이러한 예에서, 태그(140)는 메타데이터(120)의 일부가 아니다. 그러나, 다른 예들에서, 태그(140)는 메타데이터(120)의 일부를 형성할 수 있다. 태그(140)(이는 청구된 유효성 표시자의 예임)는, 캐퍼빌리티(100)가 유효한지 그리고/또는 손상되지 않았는지 여부를 나타내는 데 사용된다. 예를 들어, 태그(140)는 캐퍼빌리티가 무효함/손상됨을 나타내기 위해 '0'으로 설정될 수 있는 반면, '1'은 캐퍼빌리티(100)가 유효함/손상되지 않음을 나타낼 수 있다.
경계 정보(160, 170)는 포인터에 관련하여 표현될 수 있으며, 이러한 경우, 경계 정보를 표현하는 데 사용되는 비트들의 수는 포인터를 표현하는 데 사용되는 비트들의 수보다 실질적으로 더 작을 수 있다는 점에 유의한다. 이러한 경우, 포인터가 업데이트될 때, 업데이트된 포인터가 오래된 경계들(포인터 및 관련 경계들을 사용하여 계산된 바와 같음) 내에 놓일지 여부가 우선 결정된다. 그렇지 않은 경우, 캐퍼빌리티는 무효화된다.
포인터(130) 및 메타데이터(120) 둘 모두는 사용자 애플리케이션에 의해 액세스가능할 수 있다. 그러나, 메타데이터(120)를 직접 수정하려는 시도는 태그(140)로 하여금 캐퍼빌리티가 무효화/손상되었음을 나타내게 한다. 일부 실시예들은 액세서의 메타데이터가 특별한 명령어들을 사용하여 적법하게 수정될 수 있게 할 수 있다(예를 들어, 그것은 경계들을 감소시키거나 허가들을 제거하는 데 사용됨). 그러나, 그러한 동작의 세부사항은 본 개시내용의 범주를 벗어나는 것이다. 유효한 캐퍼빌리티들은 특별한 명령어들에 의해 생성될 수 있다(이는 동작의 특권이 주어진 모드를 요구할 수 있음). 따라서, 캐퍼빌리티들은 메모리에 대한 액세스를 보호하기 위해 사용될 수 있다. 예를 들어, 메모리 할당 요청이 서비스될 때, 할당된 메모리의 영역을 정의하고 그 메모리 영역에 액세스하기 위한 포인터(130)를 제공하는 캐퍼빌리티가 반환될 수 있다. 포인터를 사용하여 메모리 영역 외부의 구역에 액세스하려는 시도는 실패할 것이다.
캐퍼빌리티는 이와 달리, 그것이 복제될 수 있다는 의미에서, 정규 데이터 구조로서 취급될 수 있다. 예를 들어, 캐퍼빌리티(100)는 메모리(110) 내의 여러 위치들(190a, 190b, 190c)에 복제된 것으로 도시되어 있다. 그러나, 이는 문제를 야기할 수 있다. 특히, 캐퍼빌리티들 중 하나의 캐퍼빌리티(190a)가 무효화될 때, 캐퍼빌리티의 다른 복제물들(190b, 190c)도 또한 무효화되도록 위치되어야 한다. 그렇지 않은 경우, 이러한 복제물들은 도 2a 및 도 2b와 관련하여 예시된 바와 같이 개인 정보에 액세스하는 데 사용될 수 있다. 복제물들의 위치를 알아내는 하나의 방식은 메모리(110)의 전체를 스캔함에 의한 것이다. 그러나, 이는 시간 소모적이고 자원 집약적이다. 따라서, 본 기법은 무효화될 캐퍼빌리티의 등가물들의 복제물들을 무효화하기 위해 요구되는 자원들을 감소시키고자 한다.
도 2a 및 도 2b는 개인 정보에 대한 액세스를 얻기 위해 캐퍼빌리티 복제물이 사용될 수 있는 방식을 예시한다. 이러한 예에서, 구획 A(이는 희생자임)는, 신뢰되지 않은 라이브러리의 형태를 취할 수 있는 구획 B(공격자)를 호출한다. 먼저, 구획 A는 할당된 메모리 구역(공유0)을 가리키는 캐퍼빌리티 C1을 생성한다. 이어서, 구획 A는 구획 B에 대한 함수 호출을 행하고, 캐퍼빌리티 C1을 전달한다. 구획 B 내에서, 캐퍼빌리티 C1은 힙(heap)에 저장된다. 이어서, 구획 B는 캐퍼빌리티 C1을 사용하여 예상되는 바와 같이 요청된 동작을 수행한다. 이어서, 구획 B는 구획 A로 다시 복귀한다. 구획 A는 이어서, 캐퍼빌리티 C1이 가리키는 메모리 공유0를 해제(free)한다. "해제" 명령은 캐퍼빌리티 C1만을 무효화하며, 이에 따라, 구획 B에 의해 유지된 복제물은 무효화되지 않는다. 대신, 구획 B에 의해 유지된 복제물은 유효한 캐퍼빌리티로 유지되며, 이는 공유0에 의해 정의되었던 메모리의 구역(이제 해제되었음)에 액세스하는 데 사용될 수 있다. 구획 A는 이제, 비밀 데이터를 포함하는 제2 캐퍼빌리티 C2를 생성한다. 메모리 할당이 작동하는 방식으로 인해, 이러한 메모리 할당이 이전에 공유0에 할당되었던 메모리의 적어도 일부를 사용할 합당한 가능성이 있다. 특히, 캐퍼빌리티 C2는 캐퍼빌리티 C1과 중첩하는 메모리의 영역을 참조할 가능성이 있다. 이어서, 구획 A는 영역 공유1을 나타내는 추가의 캐퍼빌리티 C3을 생성한다. 이어서, 구획 A는 구획 B에 대한 제2 호출을 행하는데, 이때에는, 캐퍼빌리티 C3을 전달한다. 구획 B가 이제 힙에 저장되었던 그의 캐퍼빌리티 C1의 복제물을 사용하는 경우, 구획 B는 실제로, 비밀 데이터를 포함하는 캐퍼빌리티 C2에 의해 참조되는 메모리의 구역에 액세스하고 있을 것이다. 도 2b에 예시된 바와 같이, 이는, 캐퍼빌리티 C1에 의해 포함되는 메모리의 영역이 C2를 통해 비밀 데이터를 저장하는 데 사용되는 메모리의 구역과 중첩하기 때문이다. 이러한 특정 예에서, 캐퍼빌리티 C1이 단지 C2의 일부로 확장되기 때문에, 구획 B가 비밀 데이터의 일부에만 액세스할 수 있을 수 있다. 그러나, 역이 참이고, 캐퍼빌리티 C1이 C2를 커버할 뿐만 아니라 C3도 또한 커버하는 상황들이 있을 수 있다. 이러한 프로세스 전반에 걸쳐, 캐퍼빌리티들에 대한 어떠한 제약들도 위반하지 않는다는 점에 유의한다. 특히, 메타데이터가 수정되지 않는다면, 캐퍼빌리티가 복제되는 것은 적법하다. 추가로, 캐퍼빌리티 C1의 무효화가 캐퍼빌리티의 복제물들로 하여금 무효화되게 하지 않기 때문에, 구획 B의 힙에 저장된 캐퍼빌리티 C1의 복제물은 무효화되지 않으며, 이에 따라, 실제로, 참조되는 메모리의 구역이 용도 변경되었더라도 계속 사용될 수 있다. 본 기법은 이러한 문제를 해결하려고 한다.
도 3은 일부 실시예들에 따른 데이터 프로세싱 장치(300)를 예시한다. 데이터 프로세싱 장치(300)는 물리적 어드레스 공간을 정의하는 메모리 회로부(110)를 포함한다. 이러한 물리적 어드레스 공간의 적어도 일부는 다수의 세그먼트들(370a, 370b, 370c, 370d)로 논리적으로 분할된다. 이러한 예에서, 캐퍼빌리티 C0(380)는 세그먼트들 중 하나의 세그먼트(370a) 내에 저장된다. 캐퍼빌리티가 세그먼트들(370a, 370b, 370c, 370d) 각각 내에 저장되어 있는지 여부를 추적하는 추적 회로부(310)가 제공된다. 이러한 예에서, 추적 회로부(310)는 블룸 필터를 포함한다. 블룸 필터(310)는 다수의 비트 벡터들(330, 340, 350, 360)로 이루어진 비트 필드를 제공한다. 비트 벡터들(330, 340, 350, 360) 각각은 세그먼트들(370a, 370b, 370c, 370d) 중 하나의 세그먼트에 대응한다. 논리 분할들은 일관되게 크기가 정해질 수 있거나 또는 그렇지 않을 수 있고, 각각의 세그먼트의 크기는, 예를 들어, 시작 시에 또는 소프트웨어에 의한 런타임 시에 임의로 선택될 수 있다는 점에 유의한다.
비트 벡터들(330, 340, 350, 360) 각각의 콘텐츠들은 대응하는 메모리 세그먼트 내의 각각의 캐퍼빌리티의 경계들을 해싱함으로써 계산된다. 예를 들어, 제1 세그먼트(370a) 내의 유일한 캐퍼빌리티가 캐퍼빌리티 C0(380)라고 가정되는 경우, 대응하는 비트 벡터(330)는 캐퍼빌리티 C0(380)의 경계들을 해싱함으로써 생성된다. 캐퍼빌리티가 제1 세그먼트(370a)에 추가되거나 그로 이동될 때마다, 그러한 캐퍼빌리티의 경계들의 해싱이 이루어지고, 그러한 세그먼트(370a)에 대응하는 기존 비트 벡터(330)에 대해 논리 OR이 수행된다. 블룸 필터의 경우, 캐퍼빌리티(380)가 대응하는 메모리 세그먼트(370a)로부터 제거되는 결과로서 비트 벡터들(330, 340, 350, 360)에 대해 수정이 이루어지지 않는다는 것에 유의한다. 그 결과, 다수의 추가들(논리 OR들)을 통해, 메모리 세그먼트(370a)에 대응하는 비트 벡터(330)는 포화될 것이다. 다시 말해, 대응하는 비트 벡터(330)는 모두 1이 될 것이다. 이는 블룸 필터를 주기적으로 재구축함으로써 해결될 수 있다. 추적 회로부의 콘텐츠들은 특권이 주어지며, 이에 따라, 정의된 방식으로만, 예를 들어, 하드웨어에 의해서만, 또는 일부 실시예들에서, 운영 체제가 진입할 수 있는 특권이 주어진 모드를 통해서 액세스될 수 있다.
캐퍼빌리티(380)의 무효화가 수행될 때, 무효화 회로부(320)는 추적 회로부(310)를 컨설팅하여 메모리(300) 내의 등가의 캐퍼빌리티들을 검색한다. 철회 회로부(revocation circuitry)에 의해 현재 타깃화된 어드레스 공간에 액세스할 수 있는 스레드들은 철회가 완료될 때까지 중단된다. 또한, 잠재적으로 상기 어드레스 공간에 액세스할 수 있는 소프트웨어에 관한 인터럽트(interrupt)들이 불가능하게 된다. 따라서, 등가의 캐퍼빌리티가 이미 고려된 메모리의 부분으로 전달될 수 없으며, 이는 캐퍼빌리티 누락을 야기할 수 있다. 이러한 예들에서, 무효화될 캐퍼빌리티(380)의 해시가 만들어진다. 이어서, 해시는 비트 벡터들(330, 340, 350, 360) 각각과 비교되는데, 이 비트 벡터들은 대응하는 메모리 세그먼트 내에 저장된 캐퍼빌리티들의 해시들의 논리 OR을 수행함으로써 자체적으로 생성되었다. 이러한 비교는 무효화될 캐퍼빌리티(380)의 경계들의 해시와 테스트될 비트 벡터 사이에 논리 AND 연산을 수행함으로써 달성될 수 있다. 그 결과가 무효화될 캐퍼빌리티(380)의 경계들의 해시와 동일한 경우, 추적 회로부(310)의 그러한 엔트리 상에서 히트(hit)가 발생하였다.
예를 들어, 캐퍼빌리티 C1의 경계들이 캐퍼빌리티 C0의 경계들에 속하는 경우, C1이 C0과 등가인 상황을 고려한다. 이는 각각의 캐퍼빌리티의 상한과 하한을 개별적으로 고려함으로써 달성될 수 있다. 상한에 대하여, 각각의 캐퍼빌리티의 상한의 최하위 '1' 및 모든 하위 비트들은 '1'로 설정된다. 예를 들어, C0의 상한이 00001000인 경우, 이것은 00001111로 해싱되고, C1의 상한이 00000100인 경우, 이것은 00000111로 해싱된다. 이들 사이의 논리 AND는 00000111을 생성하며, 이는 C1의 해싱된 상한과 동일하다. 다시 말해, C1의 상한은 C0의 상한 이하이다.
하한에 대하여, C1이 아닌 C0에 대한 AND 연산의 결과를 체크함으로써 동일한 연산이 수행될 수 있다. 이는 C0이 C1 이하인지 여부를 나타내며, 이는 C1이 C0 이상임을 암시한다.
두 조건들 모두가 충족되기 때문에, C1의 상한 및 하한은 C0의 상한 및 하한 내에 있으며, 이에 따라, C1은 C0의 하위 영역을 정의한다. 메모리 세그먼트에 대한 해시 엔트리가 다수의 캐퍼빌리티들을 포함하는 경우, 각각의 캐퍼빌리티의 상위 및 하위 경계들은 논리 OR들을 사용해 개별적으로 조합되어, 조합된 하위 경계들 및 조합된 상위 경계들을 제공한다. 다른 해시 알고리즘들이 당업자에게 알려질 것이다.
블룸 필터의 특질은, 히트가 발생하더라도, 이것이 엔트리가 존재한다고 보장하지 않는다는 것임에 유의한다. 따라서, 등가의 캐퍼빌리티가 정말 존재하는지 여부를 결정하기 위해 대응하는 메모리 세그먼트를 검색할 필요가 있다. 이는 관련 메모리 세그먼트를 스위핑함으로써 달성될 수 있다. 예를 들어, 추적 회로부(310)의 엔트리(350)에서 히트가 발생하는 경우, 메모리 회로부(110)의 대응하는 메모리 세그먼트(370c) 상에서 스위핑이 발생한다. 추적 회로부(310)의 모든 엔트리(330, 340, 350, 360)에서 히트가 발생하는 것은 아닐 수 있다고 예상되기 때문에, 메모리의 소정의 세그먼트들(370a, 370b, 370c, 370d)은 스위핑될 필요가 없고, 따라서, 대응하는 캐퍼빌리티들을 찾기 위해 전체 메모리(110)가 검색될 필요가 없다고 예상될 수 있다.
이러한 예에서, 블룸 필터가 사용된다는 점에 유의한다. 그러나, 다른 예들에서, 각각의 메모리 세그먼트(370a, 370b, 370c, 370d)가 액세서/캐퍼빌리티를 포함하는지 또는 아닌지 여부를 나타내기 위해 더 작은 비트 필드가 사용될 수 있다. 특히, 대응하는 메모리 세그먼트(370a, 370b, 370c, 370d)가 캐퍼빌리티를 포함한다는 것을 나타내기 위해 특정 엔트리에 대해 '1'이 사용될 수 있는 반면, 그 메모리 세그먼트(370a, 370b, 370c, 370d)가 캐퍼빌리티를 포함하지 않음을 나타내기 위해 '0'이 사용될 수 있다. 그러한 데이터 구조는 그것이 블룸 필터보다 더 작다는 이점을 갖는다. 그러나, 이러한 데이터 구조는 경계 정보가 고려되지 않기 때문에 상이한 캐퍼빌리티들 사이를 구별하는 능력이 없다. 그 결과, 그러한 데이터 구조가, 특정 경계들을 갖는 캐퍼빌리티가 그러한 메모리 세그먼트 내에 위치되는지 여부의 표시를 제공하는 것이 가능하지 않으며, 메모리 세그먼트의 추가의 분석이 필요할 가능성이 더 높다. 다른 옵션은 각각의 메모리 세그먼트 내에서의 캐퍼빌리티들의 경계들을 추적하는 것이다. 예를 들어, 일부 실시예들은 그러한 메모리 세그먼트 내의 각각의 캐퍼빌리티의 최소 기초 어드레스 및 최대 한계(예를 들어, 상단) 어드레스를 추적할 수 있다. 이러한 어드레스들의 비트들(예컨대, 최하위 비트들)을 폐기함으로써 또는 최대 및 최소 어드레스들의 해시를 추적함으로써, 추적 회로부에서 공간이 절약될 수 있다. 이러한 추가 정보를 추적함으로써, 메모리 세그먼트가 더 자세히 조사될 가능성이 적어진다. 이러한 정보를 추적하는 추가의 방식은, 추적 회로부 자체가 메모리 세그먼트 내에서의 각각의 캐퍼빌리티의 경계 정보(정확한 어드레스들, 관련 비트들, 또는 해시 중 어느 하나)를 기록하는 것이다. 이것은 거짓 긍정이 발생할 확률을 감소시킬 것이다. 그러나, 추적 회로부 내의 각각의 엔트리를 체크하는 것은 더 오래 걸릴 것이고, 추적 회로부에 대해 추가의 저장 공간이 요구될 것이다.
이러한 예에서, 추적 회로부(310)는 별개의 요소로서 도시되어 있지만, 다른 예들에서, 추적 회로부는, 예를 들어, 중앙 처리 장치(CPU) 상에서 실행되는 일련의 명령어들의 형태를 취할 수 있다. 이러한 실시예들에서, 추적과 연관된 동작들은, 예를 들어, 운영 체제 또는 하이퍼바이저에 의해 실시될 수 있다. 추적 회로부가 별개의 유닛인지 또는 아닌지 여부에 관계없이, 추적 회로부에 의해 사용되는 데이터(추적 데이터)는 메모리 계층구조 내에 (예를 들어, 메인 메모리 내에) 저장될 수 있거나 전용 저장 회로부에 저장될 수 있다.
도 4는 일부 실시예들에 따른, 등가의 액세스들을 무효화하는 프로세스를 보여주는 흐름도(400)를 예시한다. 프로세스는 특정 액세서에 대한 무효화 요청이 수신되는 단계(405)에서 시작한다. 단계(410)에서, 무효화될 액세스를 정의하는 경계들이 해싱된다. 이어서, 단계(415)에서, 추적 회로부(310)에 고려될 엔트리들이 더 많이 있는지 여부가 결정된다. 없는 경우, 추적 회로부(310)의 스캔은 완료되고, 프로세스는 단계(405)로 복귀함으로써 재시작하여 무효화될 다음 액세서를 기다린다. 그렇지 않으면, 단계(420)에서, 추적 회로부(310)의 다음 엔트리가 고려되고, 단계(425)에서, 단계(410)에서 계산되었던 해싱된 경계들에 대한 히트가 있는지 여부가 결정된다. 없는 경우, 프로세스는 단계(415)로 복귀하여, 추적 회로부(310) 내의 임의의 추가의 엔트리들을 고려한다. 그렇지 않으면, 프로세스는 단계(430)로 진행하고, 여기서, 히트한 엔트리에 대응하는 메모리 세그먼트가 스위핑된다. 특히, 단계(435)는, 스위핑될 세그먼트 내에 고려될 엔트리가 더 많이 있는지 여부를 결정한다. 그러한 엔트리는 바이트로 이루어질 수 있거나 또는 액세서(예를 들어, 캐퍼빌리티)의 것과 크기가 동일한 메모리의 블록으로 이루어질 수 있다. 예를 들어, 캐퍼빌리티의 길이가 128 비트인 경우, 고려되는 엔트리들은 128 비트의 배수일 수 있으며, 이에 따라, 캐퍼빌리티는 복수의 엔트리들에 걸쳐 분산되지 않게 될 것이다. 고려될 엔트리들이 더 없는 경우, 프로세스는 단계(415)로 복귀한다. 그렇지 않으면, 프로세스는 메모리 세그먼트의 다음 엔트리가 획득되는 단계(440)로 진행한다. 단계(445)는, 고려되고 있는 엔트리가 무효화될 액세서의 경계들의 하위 영역을 표현하는 액세서인지 여부를 고려한다. 그렇지 않은 경우, 이러한 예에서, 고려되고 있는 엔트리는 등가의 액세서가 아니며, 따라서, 프로세스는 단계(435)로 복귀한다. 그렇지 않으면, 프로세스는 단계(450)로 진행하고, 여기서, 메모리 세그먼트의 현재 엔트리와 무효화될 액세서의 허가들 사이에 등가성이 있는지 여부가 결정된다. 이것은 허가들이 매칭되는 경우에 또는 허가들의 하나의 세트가 다른 것의 허가의 서브세트인 경우에 발생할 수 있다. 그렇지 않은 경우, 이러한 예에서, 액세서들은 등가하다고 고려되지 않으며, 이에 따라, 프로세스는 단계(435)로 복귀한다. 그렇지 않으면, 액세서들은 등가하다고 고려되고, 현재 엔트리 내의 액세서는, 프로세스가 단계(435)로 복귀하기 전에, 단계(455)에서 무효화된다.
허가들을 체크하는 것은, 무효화되지 않을, (예를 들어) 판독 캐퍼빌리티 또는 실행 캐퍼빌리티에 의해 또한 커버되는 영역에 대해 기입 캐퍼빌리티를 철회하는 것을 가능하게 한다.
따라서, 추적 회로부의 엔트리들 각각이 히트에 대해 테스트된다. 히트가 발생하는 경우, 히트하는 엔트리에 대응하는 메모리 세그먼트는 스위핑된다. 히트하는 메모리 세그먼트들 내의 각각의 엔트리는 그들이 등가의 액세서들인지 또는 아닌지 여부를 결정하기 위해 테스트된다. 이러한 예에서, 액세서는, (a) 그것이 무효화될 액세서에 의해 정의된 경계들의 하위 영역을 참조하고 (b) 허가들이 동일한 경우, 등가하다고 고려된다. 다른 예들에서, 등가성을 테스트하기 위해 다른 테스트들이 제공될 수 있다. 예를 들어, 두 영역들은 동일해야 할 수 있다. 일부 예들에서, 허가들이 매칭할 필요가 없거나, 하나의 액세서의 허가들이 단지 다른 액세서의 허가들의 서브세트이도록 요구될 것이다. 추가의 테스트들이 또한 추가될 수 있다. 특히, 이러한 예는 테스트될 액세서의 유효성 태그가 설정되는 것을 명시적으로 요구하지 않는다. 그러나, 이미 무효한 액세서를 무효화할 필요는 없으며, 그 결과, 수행될 수 있는 추가의 테스트는 특정 엔트리가 현재 유효한 액세서를 포함하는지 또는 아닌지 여부에 대한 것이다. 테스트되는 액세서가 유효하지 않은 경우, 비-등가성이 가정된다.
전술한 바와 같이, 블룸 필터는 특정 메모리 세그먼트가 무효화될 액세서에 대한 등가의 액세서를 포함하는지 여부에 대한 확률적 결정을 제공하기 위해 사용될 수 있다. 특히, 블룸 필터는 등가성을 정의하는 액세서 파라미터들(예를 들어, 경계들 및/또는 허가들)의 해시를 사용하여 파퓰레이팅(populating)된다. 그러나, 블룸 필터는 블룸 필터의 엔트리에 추가될 해시와 블룸 필터의 현재 값 사이에 논리 OR을 수행함으로써 파퓰레이팅되기 때문에, 캐퍼빌리티가 제거되고 있다는 것을 표현하도록 블룸 필터의 엔트리를 업데이트하는 것은 매우 어렵다. 따라서, 다수의 추가들 및 제거들 후에, 대응하는 메모리 세그먼트 내에 캐퍼빌리티가 남아 있지 않더라도, 블룸 필터 엔트리는 항상 히트할 수 있다. 이러한 상황이 해결될 수 있는 하나의 방식은, 대응하는 메모리 세그먼트 내의 현재 유효한 엔트리들을 고려하고 무효한 그러한 엔트리들을 무시하면서, 메모리 세그먼트의 엔트리가 주기적으로 재구축되는 것이다.
도 5는, 대응하는 블룸 필터 엔트리에서 히트가 발생할 때, 메모리 세그먼트에 대한 블룸 필터 엔트리를 재구축하는 프로세스를 도시하는 흐름도(500)를 예시한다. 단계(505) 내지 단계(555)는 도 4에 도시된 단계(430) 내지 단계(455)에 대한 대체물로서 사용될 수 있다. 도 5와 관련하여 예시된 프로세스는, 기존의 기입 메커니즘들이 블룸 필터 테이블 엔트리의 재구축을 수행하도록 용도 변경될 수 있게 하는 동작의 '스위핑 모드'를 사용한다. 특히, 이러한 프로세스는, 캐퍼빌리티가 메모리에 기입될 때, 기입을 수행하는 명령어가 또한 추적 회로부를 업데이트한다고 가정한다.
프로세스는, 블룸 필터의 특정 엔트리 상에서 히트가 발생할 때, 단계(505)에서 시작된다. 단계(505)에서, 히트가 발생한 블룸 필터의 대응하는 엔트리가 소거된다. 단계(510)에서, 대응하는 메모리 세그먼트의 스위핑이 시작된다. 이는 또한, 무효화 회로부에 대한 동작의 '스위핑 모드'를 개시한다. 단계(515)에서, 고려되고 있는 세그먼트에 대해 더 많은 엔트리들이 있는지 여부가 결정된다. 없는 경우, 프로세스는 다른 메모리 세그먼트들이 히트할 수 있는지 여부를 고려하는 것으로 복귀한다. 예를 들어, 이는 도 4에 도시된 단계(415)로 복귀하게 할 수 있다. 더 많은 엔트리들이 있는 경우, 단계(520)에서, 메모리 세그먼트 내의 다음 엔트리가 고려된다. 단계(525)에서, 메모리 세그먼트 내의 엔트리가 캐퍼빌리티인지 여부가 결정된다. 그렇지 않은 경우, 프로세스는 단계(515)로 복귀한다. 단계(540)에서, 이러한 캐퍼빌리티가 무효화될 캐퍼빌리티에 의해 정의된 경계들의 하위 영역을 정의하는지 여부가 결정된다. 그렇지 않은 경우, 프로세스는 아래에서 논의되는 단계(555)로 진행한다. 그런 경우, 단계(545)에서, 이전에 설명된 바와 같이, 허가 사이에 등가성이 있는지 여부가 결정된다(예를 들어, 일부 실시예들에서 매칭 또는 서브세트). 그렇지 않은 경우, 프로세스는 단계(555)로 진행한다. 그렇지 않으면, 프로세스는 단계(550)로 진행하고, 여기서, 캐퍼빌리티는, 그것이 등가의 캐퍼빌리티라고 고려되므로, 무효화된다. 이어서, 프로세스는 단계(535)로 진행하고, 여기서, 유효성 태그가 캐퍼빌리티가 무효하다는 것을 나타내도록 캐퍼빌리티에 대해 설정된다. 단계(555)에서, 데이터의 재기입이 수행된다. 다시, 데이터를 재기입하는 프로세스는 기존의 기입 메커니즘을 사용하여 달성되며, 이는, 스위핑 모드가 관여되기 때문에, 실제로 데이터가 메모리에 다시 물리적으로 재기입되는 것을 요구하지 않는다. 이는, 블룸 필터 테이블 엔트리를 업데이트하기 위해 기입 메커니즘의 기존의 프로세스를 사용하는 것을 가능하게 한다. 그러나, 이러한 상황에서, 캐퍼빌리티에 대한 데이터가 이미 메모리에 있기 때문에, 데이터가 실제로 메모리에 기입될 필요는 없다. 따라서, 기입 메커니즘이 호출되지만, 어떠한 데이터도 메모리에 물리적으로 기입되지 않고 메모리 위치의 기존 콘텐츠들이 동일하게 유지된다. 이는, 기입 프로세스가 발생하는데 데이터가 제공될 필요가 없기 때문에, 메모리 대역폭에 대한 영향을 감소시키면서 기존 메커니즘을 재사용하는 것을 가능하게 한다. 재기입이 수행되면, 프로세스는 단계(515)로 복귀한다.
스위핑 모드의 결과로서, 물리적으로 기입되는 데이터의 양은 감소된다. 특히, 엔트리가 무효화되는 경우, 태그만이 기입될 필요가 있다. 다른 경우에, 어떠한 데이터도 실제로 기입되지 않고, 기입 메커니즘은 단지 필터를 업데이트하는 데 사용된다.
도 6은 현재 설명된 기법에 대해 이루어질 수 있는 다수의 개선사항들을 예시한다. 특히, 메모리(110)에 의해 제공되는 어드레스 공간은 안전하지 않은 메모리(605) 및 안전한 메모리(610)로 분할될 수 있다. 안전하지 않은 메모리(605) 내의 메모리의 제1 섹션(615a) 및 메모리의 안전한 섹션(610) 내의 메모리의 제2 섹션(615b)에 대해 상이한 추적 테이블들(예를 들어, 블룸 필터 테이블들)이 제공될 수 있다. 이는 안전하지 않은 메모리(605)와 안전한 메모리(610)의 격리를 돕기 위해 사용될 수 있다.
도 6에 예시된 바와 같이, 모든 메모리가 추적 회로부(310)의 테이블에 의해 커버될 필요는 없다는 것이 이해될 것이다. 예를 들어, 안전하지 않은 메모리(605)를 고려하면, 메모리의 일부(615a)는 블룸 필터 테이블에 의해 커버되는 반면, 메모리의 다른 섹션들(625, 630, 635, 640)은 메모리의 그러한 섹션이 액세서/캐퍼빌리티를 포함하는지 또는 아닌지 여부를 나타내기 위해 단지 플래그를 사용한다. 블룸 필터와는 대조적으로, 플래그의 사용은, 메모리의 섹션이 캐퍼빌리티를 포함할 가능성이 매우 낮은(그리고 그에 따라, 상세한 보고가 불필요함) 경우에, 또는 관련 블룸 필터 엔트리의 포화가 가능하도록 캐퍼빌리티들이 빈번하게 추가되고 제거되는 경우에 적절할 수 있다. 이러한 후자의 상황은, 특정 위협의 동작 동안 데이터 값들을 일시적으로 저장하는 데 사용되는 데이터 구조인 애플리케이션 스택의 경우에 특히 가능성이 있다.
상기 설명은 다수의 보안 도메인들에 대해 다수의 테이블들이 어떻게 제공될 수 있는지를 예시한다. 그러나, 추적 회로부가 전체 어드레스 공간을 추적하는 것을 회피하도록 메모리 공간이 관리될 수 있는 다른 방식들이 있다. 일부 실시예들에서, 추적 회로부는 각각의 상이한 스레드 또는 특권 레벨에 대해 하나의 테이블(예를 들어, 블룸 필터 테이블)을 제공할 수 있다. 이어서, 검색될 테이블은 스레드가 변경됨에 따라 스위칭될 수 있다. 그 결과, 검색될 메모리의 양은 현재 스레드와 관련된 메모리의 구역만으로 감소될 수 있으며, 이는 더 미세한 입도의 추적이 발생할 수 있게 한다. 캐퍼빌리티들이 스레드들 사이에서 공유되는 경우, (현재 스레드에 대한) 현재 블룸 필터 테이블뿐만 아니라, 캐퍼빌리티를 공유할 수 있는 스레드들과 관련된 테이블들을 체크할 필요가 있다. 일부 실시예들에서, 각각의 메모리 보호 유닛(Memory Protection unit, MPU)에 대해 하나의 테이블이 제공될 수 있다.
이전의 설명에서, 추적 회로부 내의 각각의 엔트리는 어느 엔트리들이 '히트'하는지 결정하기 위해 고려된다고 가정된다. 각각의 '히트'에 대하여, 대응하는 메모리 세그먼트가 이어서, 등가의 액세서들/캐퍼빌리티들을 발견하기 위해 검색된다. 다른 실시예들에서, 스레드에 할당된 어드레스 공간의 최소 및 최대 어드레스들이 그러한 스레드에 대해 추적된다. 무효화가 발생할 때, 최소 및 최대 한계들에 속하는 메모리 세그먼트들에 대응하는 그러한 엔트리들만이 고려된다. 이러한 방식으로, 어떠한 할당도 발생하지 않은 메모리 세그먼트들은 '스킵(skip)'된다. 일부 실시예들에서, 메모리 할당들 자체가 추적된다. 다른 실시예들은 캐퍼빌리티 기억장치들의 최소 및 최대 어드레스들을 추적하여, 캐퍼빌리티들을 포함하는 메모리의 그러한 구역들만이 고려되게 할 수 있다. 또 다른 실시예들은 유효한 MPU 영역들 내의 그러한 엔트리들만을 고려할 수 있다.
런타임 동안, 추적될 메모리의 양이 변할 수 있고, 이는 보상될 수 있다. 이를 수행하는 하나의 방식은 메모리의 주요 추적 영역(들) 외부의 구역들에 대해 상기 '플래그' 시스템을 사용하는 것이다. 더 많은 엔트리들을 저장하도록 테이블을 확장하는 것(충분한 저장소를 제공하는 것이 가능함)이 추가로 가능하다. 추가의 저장소가 이용가능하지 않은 경우, '세그먼트 크기', 예를 들어, 추적 회로부 내의 엔트리에 의해 커버되는 각각의 메모리 영역의 크기를 증가시킴으로써 보상하는 것이 가능하다.
추적 회로부를 업데이트하는 관점에서, 추적 회로부 내에 빈번하게 액세스되는 엔트리들을 저장하기 위한 버퍼가 제공될 수 있다. 이는, 추적 회로부에 의해 사용되는 데이터 구조가 이와 달리 긴 지연을 갖는 경우(예를 들어, 그것이 메인 메모리에 저장되어 있는 경우)에 특히 유익하다. 메모리-내 업데이트 명령어를 포함하는 것이 추가로 가능하다. 그러한 명령어는 메모리 내의 값을 획득하고, 연산(예컨대, 메모리 내의 값과 추가 값 사이의 논리 OR 연산)을 수행하고, 결과를 메모리에 다시 기입할 것이다. 이러한 방식으로, 추적 회로부의 데이터에 대한 업데이트는, 데이터가 메모리로부터 취출되고, 시간 소모적일 일련의 메모리 트랜잭션들 상에서 동작되고, 그 일련의 메모리 트랜잭션들에 다시 기입되어야 할 필요 없이, 수행될 수 있다.
도 7은 일부 실시예들에 따른 데이터 프로세싱의 프로세스를 보여주는 흐름도(700)를 예시한다. 단계(710)에서, 메모리 세그먼트들로 어드레스 공간이 제공된다. 어드레스 공간이 정확히 메모리 세그먼트들로 분할될 의무는 없으며, 메모리 세그먼트들의 외부에 속하는 어드레스 공간의 섹션들이 있을 수 있다. 단계(720)에서, 어드레스 공간의 특정 영역들에 액세스하는 데 사용되는 하나 이상의 액세서들이 저장된다. 단계(730)에서, 특정 메모리 세그먼트들이 액세서들을 포함하는지 여부를 결정하기 위해 메모리 세그먼트들 상에서 추적이 수행된다. 이는 캐퍼빌리티 동작들을 수행하는 명령어들에 추적 캐퍼빌리티를 추가함으로써 달성될 수 있다. 예를 들어, 캐퍼빌리티들을 생성하거나 복제하기 위해 제공되는 명령어들이 추적 회로부(310)를 업데이트하도록 확장될 수 있다. 단계(740)에서, 액세서들 중 하나의 액세서에 대해 무효화 요청이 수신된다. 단계(750)에서, 단계(730)에서 추적을 수행하는 데 사용되는 추적 회로부를 참조하여 등가의 액세서들이 결정된다. 등가물들이 결정됐으면, 단계(760)에서, 그러한 등가의 액세서들은 무효화된다.
이러한 방식으로 추적 회로부를 사용함으로써, 많은 상황들에서, 등가의 액세서들을 찾기 위해 메모리의 어드레스 공간 전체가 검색될 필요가 없게 된다. 대신에, 추적 회로부를 사용하여 검색될 필요가 있는 메모리의 섹션을 제한함으로써, 등가의 액세서들을 무효화하기 위해 수행되는 프로세스의 자원 집약도(resource intensiveness)를 감소시키는 것이 가능하다. 이러한 방식으로 등가의 액세서들을 무효화함으로써, 자원 효율적인 방식으로 메모리의 구역들에 대한 비인가된 액세스를 제약하는 것이 가능하다.
도 8은 사용될 수 있는 시뮬레이터 구현예를 예시한다. 전술된 실시예들은 관심 기법들을 지원하는 특정 프로세싱 하드웨어를 동작시키기 위한 장치 및 방법들과 관련하여 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 명세서에서 기술되는 실시예들에 따라 명령어 실행 환경을 제공하는 것이 또한 가능하다. 그러한 컴퓨터 프로그램들은, 그들이 하드웨어 아키텍처의 소프트웨어 기반 구현예를 제공하는 한, 종종 시뮬레이터들로 지칭된다. 다양한 시뮬레이터 컴퓨터 프로그램들은 에뮬레이터들, 가상 머신들, 모델들, 및 동적 이진 변환기(dynamic binary translator)들을 포함한 이진 변환기들을 포함한다. 전형적으로, 시뮬레이터 구현예는 호스트 프로세서(830) 상에서 실행되어, 호스트 운영 체제(820)를 선택적으로 실행하여, 시뮬레이터 프로그램(810)을 지원할 수 있다. 일부 배열들에서, 하드웨어와 제공된 명령어 실행 환경 사이에 다수의 시뮬레이션 계층들이 있을 수 있고/있거나, 동일한 호스트 프로세서 상에 제공된 다수의 별개의 명령어 실행 환경들이 있을 수 있다. 이력상, 강력한 프로세서들이 합리적인 속도로 실행되는 시뮬레이터 구현예들을 제공하는 데 요구되었지만, 그러한 접근법은 호환성 또는 재사용 이유들을 위해 다른 프로세서에 고유한 코드를 실행하려는 요구가 있을 때와 같은 소정 상황들에서 정당화될 수 있다. 예를 들어, 시뮬레이터 구현예는 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능성을 명령어 실행 환경에 제공할 수 있거나, 또는 상이한 하드웨어 아키텍처와 전형적으로 연관된 명령어 실행 환경을 제공할 수 있다. 시뮬레이션의 개요가 문헌["Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63]에서 주어진다.
실시예들이 특정 하드웨어 구성물들 또는 특징부들을 참조하여 전술되었음을 고려한 결과로, 시뮬레이션된 실시예에서, 동등한 기능성이 적합한 소프트웨어 구성물들 또는 특징부들에 의해 제공될 수 있다. 예를 들어, 특정 회로부는 시뮬레이션된 실시예에서 컴퓨터 프로그램 로직으로서 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어가 시뮬레이션된 실시예에서 소프트웨어 데이터 구조로서 구현될 수 있다. 전술된 실시예들에서 언급된 하드웨어 요소들 중 하나 이상의 하드웨어 요소들이 호스트 하드웨어(예를 들어, 호스트 프로세서(830)) 상에 존재하는 배열들에서, 일부 시뮬레이션된 실시예들은, 적합한 경우, 호스트 하드웨어를 사용할 수 있다.
시뮬레이터 프로그램(810)은 컴퓨터 판독가능 저장 매체(이는 비일시적 매체일 수 있음) 상에 저장될 수 있고, 타깃 코드(800)(이는 애플리케이션들, 운영 체제들, 및 하이퍼바이저를 포함할 수 있음)에 프로그램 인터페이스(명령어 실행 환경)를 제공하는데, 이는 시뮬레이터 프로그램(810)에 의해 모델링되는 하드웨어 아키텍처의 인터페이스와 동일하다. 따라서, 타깃 코드(800)의 프로그램 명령어들은 시뮬레이터 프로그램(810)을 사용하여 명령어 실행 환경 내로부터 실행되어, 위에서 논의된 장치(300)의 하드웨어 특징부들을 실제로 갖지 않는 호스트 컴퓨터(830)가 그러한 특징부들을 에뮬레이팅할 수 있게 할 수 있다.
이러한 예에서, 시뮬레이터 프로그램(810)은 메모리 데이터 구조(812)를 사용하여 타깃 코드(800)에 의해 액세스될 수 있는 메모리를 에뮬레이팅한다. 메모리 데이터 구조(812)는, 타깃 코드(800)에 의해 생성되고/되거나 사용될 수 있고 메모리 데이터 구조(812) 내의 메모리 요소들(816)에 액세스하는 데 사용되는 하나 이상의 액세서 데이터 구조들(814)을 포함한다. 다시, 메모리 요소들(816)은 타깃 코드(800)에 의해 생성되고/되거나 사용될 수 있다. 시뮬레이터 프로그램(810)은 또한, 도 3과 관련하여 논의된 추적 회로부(810)의 기능성을 에뮬레이팅하고 메모리 데이터 구조(812) 내의 액세서 데이터 구조들(814)의 사용을 추적하는 추적 프로그램 로직(818)을 포함한다. 또한, 시뮬레이션(810)은 메모리 데이터 구조(812) 내의 등가의 액세서 데이터 구조들(814)을 무효화하기 위해 무효화 프로그램 로직(819)을 사용한다.
본 출원에서, "...하도록 구성된"이라는 말은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 프로세싱 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은, 장치 요소가, 정의된 동작을 제공하기 위해 어떤 방식으로든 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에서 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않으며, 첨부된 청구항들에 의해 한정된 바와 같은 본 발명의 범위 및 사상으로부터 벗어남이 없이 실시예들에서 다양한 변경들, 추가들 및 수정들이 당업자에 의해 이루어질 수 있다는 것이 이해되어야 한다. 예를 들어, 본 발명의 범주로부터 벗어남이 없이 독립 청구항들의 특징들과 종속 청구항들의 특징들의 다양한 조합이 이루어질 수 있다.

Claims (20)

  1. 데이터 프로세싱 장치로서,
    복수의 메모리 세그먼트들로 논리적으로 분할되는 물리적 어드레스 공간을 제공하기 위한 그리고 연관된 유효성 표시자들을 갖는 복수의 액세서(accessor)들을 저장하기 위한 메모리 회로부 - 상기 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 상기 물리적 어드레스 공간의 영역에 대한 액세스를 제어함 -;
    상기 메모리 세그먼트들 중 어느 메모리 세그먼트가 상기 액세서들을 포함하는지를 추적하기 위한 추적 회로부; 및
    상기 추적 회로부를 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하기 위한 그리고 상기 액세서 및 상기 등가의 액세서들 각각의 연관된 유효성 표시자를, 상기 액세서 및 상기 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 상기 액세서 및 상기 등가의 액세서들을 무효화하기 위한 무효화 회로부를 포함하는, 데이터 프로세싱 장치.
  2. 제1항에 있어서,
    상기 등가의 액세서들은 상기 액세서들 중, 상기 물리적 어드레스 공간의 영역에 대한 액세스를 제어하는 액세서들을 포함하는, 데이터 프로세싱 장치.
  3. 제1항 또는 제2항에 있어서, 상기 액세서는 포인터를 포함하는, 데이터 프로세싱 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 액세서는 상기 포인터가 액세스하는 데 사용될 수 있는 상기 물리적 어드레스 공간의 영역을 정의하는 경계 정보를 포함하는, 데이터 프로세싱 장치.
  5. 제4항에 있어서,
    상기 등가의 액세서들은 상기 액세서들 중, 상기 경계 정보가 상기 액세서의 경계 정보와 매칭되는 액세서들을 포함하는, 데이터 프로세싱 장치.
  6. 제4항에 있어서,
    상기 등가의 액세서들은 상기 액세서들 중, 상기 경계 정보가 상기 물리적 어드레스 공간의 영역의 하위 영역을 정의하는 액세서들을 포함하는, 데이터 프로세싱 장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 추적 회로부는 상기 메모리 세그먼트들 각각이 상기 액세서들 중 하나의 액세서를 포함하는지 여부를 나타내도록 적응되는, 데이터 프로세싱 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 추적 회로부는 복수의 비트들을 포함하는 비트 필드를 포함하고,
    상기 복수의 비트들은 상기 메모리 세그먼트들 중 어느 메모리 세그먼트가 상기 액세서들 중 하나의 액세서를 포함하는지를 나타내도록 적응되는, 데이터 프로세싱 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 추적 회로부는 해시 테이블을 포함하고,
    상기 해시 테이블은 상기 액세서의 적어도 일부의 해시를 입력으로서 수용하는, 데이터 프로세싱 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 추적 회로부는 블룸 필터(bloom filter)를 포함하는, 데이터 프로세싱 장치.
  11. 제10항에 있어서,
    상기 무효화 회로부는, 상기 추적 회로부가 주어진 메모리 세그먼트가 상기 액세서들 중 하나의 액세서를 포함한다고 나타낼 때, 상기 주어진 메모리 세그먼트의 스위핑(sweeping)을 수행하도록 그리고 상기 주어진 메모리 세그먼트에 대응하는 상기 블룸 필터의 엔트리를 재구축하도록 적응되는, 데이터 프로세싱 장치.
  12. 제11항에 있어서,
    상기 무효화 회로부는, 상기 주어진 메모리 세그먼트 내의 상기 액세서들 각각의 연관된 유효성 표시자를 고려함으로써 상기 주어진 메모리 세그먼트에 대응하는 상기 블룸 필터의 엔트리를 재구축하도록 적응되는, 데이터 프로세싱 장치.
  13. 제11항 또는 제12항에 있어서,
    상기 주어진 메모리 세그먼트에 대응하는 상기 블룸 필터의 엔트리는 상기 액세서들 중, 상기 주어진 메모리 세그먼트에 있는 액세서들의 재기입을 수행함으로써 재구축되고,
    상기 무효화 회로부는, 상기 연관된 유효성 표시자가 유효성을 나타낼 때, 상기 메모리에 상기 액세서를 물리적으로 기입하는 것을 억제함으로써 상기 재기입이 수행되는 동작의 스위핑 모드에서 동작하도록 적응되는, 데이터 프로세싱 장치.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    상기 무효화 회로부는, 상기 추적 회로부가 주어진 메모리 세그먼트가 상기 액세서들 중 하나의 액세서를 포함한다고 나타낼 때, 상기 등가의 액세서들을 결정하기 위해 상기 주어진 메모리 세그먼트를 스위핑하도록 적응되는, 데이터 프로세싱 장치.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 무효화 회로부는, 상기 추적 회로부가 주어진 메모리 세그먼트에 상기 액세서들 각각이 없다고 나타낼 때, 상기 등가의 액세서들을 결정하기 위해 상기 주어진 메모리 세그먼트를 스위핑하는 것을 억제하도록 적응되는, 데이터 프로세싱 장치.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서,
    상기 메모리 회로부는 활성 스택 영역을 포함하도록 추가로 논리적으로 분할되고,
    상기 추적 회로부는 상기 활성 스택 영역을 추적하기 위한 비트 필드를 포함하고,
    상기 추적 회로부는 상기 메모리 세그먼트들을 추적하기 위한 해시 테이블 또는 블룸 필터를 포함하는, 데이터 프로세싱 장치.
  17. 제1항 내지 제15항 중 어느 한 항에 있어서,
    상기 메모리 회로부는 활성 스택 영역을 포함하도록 추가로 논리적으로 분할되고,
    상기 추적 회로부는 상기 활성 스택 영역을 추적하는데 제약을 받는, 데이터 프로세싱 장치.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서,
    상기 추적 회로부는 상기 액세서들 중, 상기 메모리 세그먼트들 외부에 저장된 액세서들을 추가로 추적하도록 적응되는, 데이터 프로세싱 장치.
  19. 데이터 프로세싱 방법으로서,
    메모리의 물리적 어드레스 공간을 복수의 메모리 세그먼트들로 논리적으로 분할하는 단계;
    연관된 유효성 표시자들을 갖는 복수의 액세서들을 저장하는 단계 - 상기 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 상기 물리적 어드레스 공간의 영역에 대한 액세스를 제어함 -;
    상기 메모리 세그먼트들 중 어느 메모리 세그먼트가 상기 액세서들을 포함하는지를 추적하는 단계;
    상기 추적 회로부를 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하는 단계; 및
    상기 액세서 및 상기 등가의 액세서들 각각의 연관된 유효성 표시자를, 상기 액세서 및 상기 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 상기 액세서 및 상기 등가의 액세서들을 무효화하는 단계를 포함하는, 데이터 프로세싱 방법.
  20. 명령어 실행 환경을 제공하기 위해 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램으로서,
    연관된 유효성 표시자들을 갖는 복수의 액세서들을 저장하기 위한 복수의 데이터 구조들 - 상기 액세서들 각각은 적어도 그의 연관된 유효성 표시자에 따라 상기 데이터 구조들 중 하나의 데이터 구조에 대한 액세스를 제어함 -;
    상기 데이터 구조들 중 어느 데이터 구조가 상기 액세서들을 포함하는지를 추적하기 위한 추적 프로그램 로직; 및
    상기 추적 프로그램 로직을 참조하여 등가의 액세서들의 세트를 결정함으로써 액세서를 무효화하라는 요청에 응답하기 위한 그리고 상기 액세서 및 상기 등가의 액세서들 각각의 연관된 유효성 표시자를, 상기 액세서 및 상기 등가의 액세서들이 무효하다고 나타내도록 설정함으로써 상기 액세서 및 상기 등가의 액세서들을 무효화하기 위한 무효화 프로그램 로직을 포함하는, 컴퓨터 프로그램.
KR1020227035803A 2020-03-20 2021-01-08 메모리 액세서 무효화 KR20220156028A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/825,021 2020-03-20
US16/825,021 US11200175B2 (en) 2020-03-20 2020-03-20 Memory accessor invailidation
PCT/GB2021/050044 WO2021186142A1 (en) 2020-03-20 2021-01-08 Memory accessor invalidation

Publications (1)

Publication Number Publication Date
KR20220156028A true KR20220156028A (ko) 2022-11-24

Family

ID=74183461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227035803A KR20220156028A (ko) 2020-03-20 2021-01-08 메모리 액세서 무효화

Country Status (6)

Country Link
US (1) US11200175B2 (ko)
EP (1) EP4121862A1 (ko)
JP (1) JP2023518042A (ko)
KR (1) KR20220156028A (ko)
CN (1) CN115398410A (ko)
WO (1) WO2021186142A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230342289A1 (en) * 2022-04-21 2023-10-26 Arm Limited Apparatus and method for managing capabilities

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
CN108701002B (zh) * 2016-02-29 2021-10-29 株式会社日立制作所 虚拟存储系统
US9772943B1 (en) 2016-04-01 2017-09-26 Cavium, Inc. Managing synonyms in virtual-address caches
GB2562062B (en) 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
GB2565069B (en) 2017-07-31 2021-01-06 Advanced Risc Mach Ltd Address translation cache
WO2019159472A1 (ja) 2018-02-15 2019-08-22 ソニー株式会社 メモリ管理装置及びメモリ管理方法、並びに情報処理装置

Also Published As

Publication number Publication date
WO2021186142A1 (en) 2021-09-23
US11200175B2 (en) 2021-12-14
EP4121862A1 (en) 2023-01-25
US20210294748A1 (en) 2021-09-23
JP2023518042A (ja) 2023-04-27
CN115398410A (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
US7287140B1 (en) System and technique for fine-grained computer memory protection
US5845331A (en) Memory system including guarded pointers
CN100587700C (zh) 在虚拟技术环境中操作的软件代理的篡改保护方法和装置
US8799879B2 (en) Method and apparatus for protecting translated code in a virtual machine
CN112424758A (zh) 使用存储在存储器系统中的存储器保护表的存储器保护单元
EP3881189B1 (en) An apparatus and method for controlling memory accesses
US11507521B2 (en) Apparatus and method for controlling use of bounded pointers
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
US20210311997A1 (en) Binary search procedure for control table stored in memory system
US20230236925A1 (en) Tag checking apparatus and method
KR20220156028A (ko) 메모리 액세서 무효화
Blair et al. Mpkalloc: Efficient heap meta-data integrity through hardware memory protection keys
US20230342289A1 (en) Apparatus and method for managing capabilities
JP7369720B2 (ja) アクションをトリガするための装置及び方法
Zhou et al. PointerLock: Protecting Function Pointers with Access Control on Page
Bang et al. Enhancing a Lock-and-key Scheme with MTE to Mitigate Use-After-Frees
CN118202349A (zh) 用于处理密封能力的技术