KR20210068393A - 메모리 액세스 제어 - Google Patents

메모리 액세스 제어 Download PDF

Info

Publication number
KR20210068393A
KR20210068393A KR1020217005754A KR20217005754A KR20210068393A KR 20210068393 A KR20210068393 A KR 20210068393A KR 1020217005754 A KR1020217005754 A KR 1020217005754A KR 20217005754 A KR20217005754 A KR 20217005754A KR 20210068393 A KR20210068393 A KR 20210068393A
Authority
KR
South Korea
Prior art keywords
process group
memory address
access
memory
designated
Prior art date
Application number
KR1020217005754A
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 KR20210068393A publication Critical patent/KR20210068393A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Vehicle Body Suspensions (AREA)

Abstract

장치로서, 한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 다중 스레드 처리 소자를 구비하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고, 상기 장치는, 프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의해 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 메모리 어드레스 변환회로를 더 구비하고, 상기 메모리 어드레스 변환회로는, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키고, 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하도록 구성된다.

Description

메모리 액세스 제어
본 발명은 메모리 액세스 제어에 관한 것이다.
데이터 처리장치의 일부 실시예는 한 개 이상의 스레드들 각각을 한 개 이상의 소위 구획(compartment) 또는 프로세스 그룹들로서 프로세스들을 처리한다. 메모리 액세스는, 소위 하이브리드 구획의 경우 앰비언트(ambient)(범용) 자격(capability), 또는 소위 순종(pure) 구획의 경우 구획 특유의(compartment-specific) 자격과 같이, 소위 자격 데이터에 의해 결정된다.
이와 같은 구획의 예는 논문 "CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization", 2015 IEEE Symposium on Security and Privacy, 17-21 May 2015, ISBN 978-1-4673-6949-7에 기재되어 있는데, 참조를 위해 본 논문의 내용을 본 명세서에 원용한다.
공유 메모리 어드레스들 또는 영역들에 의해 구획들이 서로 통신하는 것이 유용할 수 있다. 그러나, 예를 들어, 메모리 어드레스 또는 영역을 다른 용도에 재할당하기 위해, 이와 같은 공유 액세스를 취소할 수 있는 것이 유용할 것으로 생각된다. 임의의 시점에서, 공유 메모리에 대한 현재 진행중인 참조가 여전히 유효한지 시스템이 파악하는 것이 곤란할 수 있기 때문에, 이것이 곤란할 수 있다.
일 구성예에서는, 장치로서,
한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 다중 스레드 처리 소자를 구비하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
상기 장치는,
프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의한 요구된 메모리 액세스에 응답하여 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 메모리 어드레스 변환회로를 더 구비하고,
상기 메모리 어드레스 변환회로는, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키고, 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하도록 구성된 장치가 제공된다.
또 다른 구성예에서는, 방법으로서,
다중 스레드 처리 소자를 사용하여, 한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 단계를 포함하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
상기 방법은,
메모리 어드레스 변환회로를 사용하여, 프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의해 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 단계와,
상기 메모리 어드레스 변환회로가, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키는 단계와,
상기 메모리 어드레스 변환회로가, 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하는 단계를 더 포함하는 방법이 제공된다.
본 발명의 또 다른 발명내용 및 특징은 첨부된 청구범위에 의해 정의된다.
이하, 다음의 첨부도면에 도시된 실시예를 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 데이터 처리장치를 개략적으로 나타낸 것이다.
도 2는 제한 포인터를 개략적으로 나타낸 것이다.
도 3은 자격 레지스터의 사용을 개략적으로 나타낸 것이다.
도 4는 자격 필드들의 세트를 개략적으로 나타낸 것이다.
도 5는 변환 색인 버퍼(TLB)와 메모리 관리 유닛(MMU)의 사용을 개략적으로 나타낸 것이다.
도 6은 TLB 및 MMU에 의한 동작을 나타낸 개략적인 흐름도이다.
도 7은 구획들의 세트를 개략적으로 나타낸 것이다.
도 8은 구획 관리자에 의한 공유 메모리 영역의 확립을 개략적으로 나타낸 것이다.
도 9는 공유 메모리 영역의 사용을 개략적으로 나타낸 것이다.
도 10은 공유 메모리 영역의 재할당을 개략적으로 나타낸 것이다.
도 11은 메모리 어드레스 변환 유닛을 개략적으로 나타낸 것이다.
도 12 및 도 13은 메모리 액세스 조건을 개략적으로 나타낸 것이다.
도 14 내지 도 16은 공유 메모리 영역의 재할당을 개략적으로 나타낸 것이다.
도 17 내지 도 21은 각각의 방법을 나타낸 개략적인 흐름도이다.
도 22는 시뮬레이터 구현을 개략적으로 나타낸 것이다.
첨부도면을 참조하여 실시예를 설명하기 전에, 이하의 실시예의 설명이 주어진다.
예시적인 실시예는, 장치로서,
한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 다중 스레드 처리 소자를 구비하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
상기 장치는,
프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의한 요구된 메모리 액세스에 응답하여 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 메모리 어드레스 변환회로를 더 구비하고,
상기 메모리 어드레스 변환회로는, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키고, 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하도록 구성된 장치를 제공한다.
본 발명은, MMU 및/또는 TLB 등의 메모리 어드레스 변환회로에 의해 취급된 제어 메카니즘을 사용하여 프로세스 그룹들 또는 구획들 사이에서의 메모리 어드레스들 또는 영역들의 공유를 허용할 수 있으므로, 단지 메모리 어드레스 변환회로에 의해 유지된 허가 데이터를 변경함으로써 공유 액세스가 취소될 수 있다.
예시적인 구성예서, 상기 처리 소자는, 각각의 프로세스 그룹에 적어도 프로세스 그룹 식별자를 할당하도록 동작가능한 프로세스 그룹 관리자를 구현하도록 구성된다. 예를 들어, 프로세스 그룹 관리자는, 2개 이상의 프로세스 그룹들 사이에서 액세스를 공유하려는 메모리 어드레스 범위에 대해, 2개 이상의 프로세스 그룹에 대한 프로세스 그룹 식별자들을 메모리 어드레스 변환회로에 제공하도록 동작가능한 것과 같이, 다른 기능을 가져도 된다. 이와 같은 경우, 메모리 어드레스 변환회로는 2개 이상의 프로세스 그룹에 대한 프로세스 그룹 식별자들을 허가 데이터로서 기억하도록 구성될 수 있다. 이것은 전체 프로세스 관리자가 메모리 어드레스 변환회로에 의해 유지된 허가 데이터를 유지하는 간편한 방법을 제공할 수 있다. 일부 실시예에서, 프로세스 그룹 관리자는, 지정된 프로세스 그룹이 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자의 메모리 어드레스 변환회로에 의해 유지된 허가 데이터로부터의 삭제를 개시함으로써 메모리 어드레스 범위에 대한 액세스의 취소를 개시하도록 구성된다.
예시적인 실시예에서, 액세스의 허용가능성은 다양한 프로세스 그룹 종류들마다 다를 수 있다. 예를 들어, 제1 프로세스 그룹 종류에 대해, 상기 자격 데이터는 제1 종류의 모든 프로세스 그룹들에 적용가능한 허용되는 메모리 어드레스 범위를 정의하고, 제2 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 대해, 상기 자격 데이터는 상기 제2 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 적용가능한 허용되는 메모리 어드레스 범위를 정의한다.
일부 실시예에서, 제1 프로세스 그룹 종류(예를 들어, 소위 하이브리드 종류 등)를 갖는 지정된 프로세스 그룹에 대해, 상기 메모리 어드레스 변환회로는,
(i) 상기 지정된 가상 메모리 어드레스가 지정된 프로세스 그룹에 대한 허용되는 메모리 어드레스 범위 내에 놓이는 것으로 상기 자격 데이터가 표시하거나, 또는
(ii) 지정된 프로세스 그룹에 대한 상기 프로세스 그룹 식별자가 상기 허가 데이터에 의해 정의된 프로세스 그룹 식별자이거나, (i) 및 (ii) 모두일 때,
지정된 가상 메모리 어드레스에 대한 액세스를 허용하고,
그렇지 않은 경우에는 액세스를 금지하도록 구성된다.
일부 실시예에서, 제2 프로세스 그룹 종류(소위 순종 종류 등)를 갖는 지정된 프로세스 그룹에 대해, 상기 메모리 어드레스 변환회로는,
(i) 상기 지정된 가상 메모리 어드레스가 지정된 프로세스 그룹에 대한 허용되는 메모리 어드레스 범위 내에 놓이는 것으로 상기 자격 데이터가 표시하고, 및
(ii) 지정된 프로세스 그룹에 대한 상기 프로세스 그룹 식별자가 상기 허가 데이터에 의해 정의된 프로세스 그룹 식별자일 때,
지정된 가상 메모리 어드레스에 대한 액세스를 허용하고,
그렇지 않은 경우에는 액세스를 금지하도록 구성된다.
예를 들어, 메모리 어드레스 변환회로는, 메모리 관리 유닛과 변환 색인 버퍼 중에서 한 개 또는 양쪽을 구비한다.
또 다른 예시적인 실시예는, 방법으로서,
다중 스레드 처리 소자를 사용하여, 한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 단계를 포함하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
상기 방법은,
메모리 어드레스 변환회로를 사용하여, 프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의해 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 단계와,
상기 메모리 어드레스 변환회로가, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키는 단계와,
상기 메모리 어드레스 변환회로가, 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하는 단계를 더 포함하는 방법을 제공한다.
이하, 첨부도면을 참조하면, 도 1은 명령들을 처리하는 처리 파이프라인(4)을 구비한 데이터 처리장치(2)를 개략적으로 나타낸 것이다. 본 실시예에서, 처리 파이프라인(4)은, 페치 스테이지(6), 디코드 스테이지(8), 발행 스테이지(10), 실행 스테이지 또는 처리 소자(12), 및 후기록(write back) 스테이지(14)를 포함하는 다수의 파이프라인 스테이지들을 포함하지만, 다른 종류 또는 다른 조합의 스테이지들이 설치될 수 있다는 것은 자명하다. 예를 들어, 레지스터 재명명을 행하는 재명명 스테이지가 일부 구현예에서 포함될 수도 있다. 처리할 명령은 스테이지로부터 다른 스테이지로 이동하며, 한 개의 스테이지에서 명령이 보류중인 동안, 다른 명령이 파이프라인(4)의 다른 스테이지에서 보류중일 수 있다.
페치 스테이지(6)는 레벨 1(L1) 명령 캐시(20)로부터 명령을 페치한다. 페치 스테이지(6)는 보통 연속된 명령 어드레스들로부터 순차적으로 명령들을 페치한다. 그러나, 페치 스테이지는 분기 명령들의 결과를 예측하는 분기 예측기(2)를 더 가져도 되고, 페치 스테이지(6)는, 분기를 탈 것으로 예측되는 경우에는 (비순차적인) 분기 타겟 어드레스로부터 명령들을 페치하거나, 분기를 타지 않을 것으로 예측되는 경우에는 다음의 순차 어드레스로부터 명령들을 페치할 수 있다. 분기 예측기(22)는, 특정한 분기를 탈 것 같은지 타지 않을 것 같은지를 예측하는 정보를 기억하는 한 개 이상의 분기 이력 테이블을 포함해도 된다. 예를 들어, 불기 이력 테이블은, 이전에 실행된 분기들의 실제 결과를 추적하거나 분기들에 대해 행해진 예측의 신뢰도를 나타내는 카운터를 구비해도 된다. 분기 예측기(22)는, 분기 명령들의 이전의 타겟 어드레스들을 캐시하는 분기 타겟 어드레스 캐시(BTAC)(24)를 더 구비하므로, 동일한 분기 명령을 추후에 마주쳤을 때 이것들을 예측할 수 있다.
페치된 명령들은 디코드 스테이지(8)에 전달되고, 디코드 스테이지는 명령들을 디코드하여 디코드된 명령들을 발생한다. 디코드된 명령들은, 실행 스테이지912)를 제어하여 적절한 처리 연산을 실행하게 하는 제어 정보를 포함한다. 캐시(20)로부터 페치된 일부의 더 복잡한 명령들에 대해, 디코드 스테이지(8)는 이들 명령들을 마이크로-연산(μop 또는 uop)으로 알려진 복수의 디코드된 명령들에 매핑한다. 이 때문에, L1 명령 캐시(20)로부터 페치된 명령과 파이프라인의 후속 스테이지들에 의해 보이는 명령 사이에 1 대 1 관계가 존재하지 않을 수도 있다. 일반적으로, 본 출원에서 "명령"은 마이크로 연산을 포함하는 것으로 해석되어야 한다.
디코드된 명령들은 발행 스테이지(10)에 전달되고, 이 발행 스테이지는 명령의 실행에 필요한 피연산자들이 이용가능한지 판정하고, 이들 피연산자들이 이용가능할 때 실행을 위한 명령을 발행한다. 일부 구현예는 순차 처리를 지원하여, 명령들이 L1 명령 캐시(20)f부터 페치되었던 프로그램 순서와 일치하는 순서로 실행하기 위해 명령들이 발행된다. 다른 구현예는 비순차 실행을 지원하므로, 프로그램 순서와 다른 순서로 명령들이 실행 스테이지(12)에 발행될 수 있다. 이전의 명령이 피연산자를 기다리면서 중지되는 동안, 피연산자들이 이용가능한 프로그램 순서에서 후속 명령이 먼저 실행될 수 있기 때문에, 비순차 처리가 성능을 향상시키는데 유용할 수 있다.
발행 스테이지(10)는 명령들을 실행 스테이지(12)에 발행하고, 실행 스테이지에서는 명령들이 실행되어 다양한 데이터 처리 연산을 행한다. 예를 들어, 실행 스테이지는, 정수값에 대해 산술 또는 논리 연산을 행하는 산술/논리 유닛(ALU)(30), 부동소수점 형태로 표현된 값에 대해 연산을 행하는 부동소수점(FP) 유닛(32), 및 레벨 1(L1) 데이터 캐시(36)로부터 레지스터(40)에 데이터 값을 로드하는 로드 연산 또는 레지스터(40)로부터 L1 데이터 캐시(36)에 데이터 값을 기억하는 스토어 연산을 행하는 로드/스토어 유닛(34)을 포함하는 다수의 실행 유닛들(30, 32, 34)을 구비해도 된다. 이때, 이것들은 설치될 수 있는 실행 유닛들의 종류들의 일례에 지나지 않으며, 다수의 다른 종류가 더 설치될 수 있다는 것은 자명하다. 그후, 실행된 명령들의 결과가 후기록 스테이지(14)에 의해 레지스터(40)에 다시 기록된다.
L1 명령 캐시(20)와 L1 데이터 캐시(36)는 복수의 레벨의 캐시들을 포함하는 캐시 계층구조의 일부이다. 예를 들어, 레벨 2(l2) 캐시(44)가 더 설치될 수 있으며, 옵션으로 추가적인 레벨의 캐시가 설치될 수도 있다. 본 실시예에서는, L2 캐시(44)가 L1 명령 캐시(20)와 L1 데이터 캐시(36) 사이에서 공유되지만, 다른 실시예는 별개의 L2 명령 및 데이터 캐시들을 가져도 된다. 페치할 명령이 L1 명령 캐시(20)에 있지 않으면, l2 캐시(44)로부터 페치될 수 있으며, 마찬가지로 명령이 L2 캐시(44)에 있지 않으면, 메인 메모리(50)로부터 페치될 수 있다. 마찬가지로, 로드 명령에 응답하여, 데이터가 L1 데이터 캐시(36)에 있지 않으면 L2 캐시(44)로부터 페치될 수 있으며 필요한 경우에는 메모리(50)에서 페치될 수 있다. 캐시 계층구조를 관리하기 위해 모든 공지의 방식이 사용된다.
프로그램 명령들과 데이터 값들을 참조하기 위해 파이프라인(4)에 의해 사용된 어드레스는 가상 어드레스이지만, 적어도 메인 메모리(50), 옵션으로 적어도 일부 레벨의 캐시 계층구조가 물리적으로 어드레스가 지정되어도 된다. 이 때문에, 메모리 관리 유닛(MMU)(53)의 제어하에서 파이프라인(4)에 의해 사용된 가상 어드레스를 캐시나 메모리를 액세스하는데 사용된 물리 어드레스로 변환하기 위해 변환 색인 버퍼(52)(TLB)가 설치된다. 예를 들어, TLB(52)는, 가상 어드레스 공간의 대응하는 페이지의 가상 페이지 어드레스("VPA")와, 대응하는 페이지 내부의 가상 어드레스를 물리 어드레스로 변환하기 위해 가상 페이지 어드레스가 매핑되어야 하는 대응하는 물리 페이지 어드레스("PPA")를 각각 지정하는 다수의 엔트리를 포함한다. 예를 들어, 가상 및 물리 페이지 어드레스들은 대응하는 가상 및 물리 어드레스의 최상위 부분에 대응하고, 가상 어드레스를 물리 어드레스에 매핑할 때 나머지 최하위 부분은 변경되지 않은 상태로 남는다. 어드레스 변환 정보 이외에, 각각의 TLB 엔트리는 파이프라인(4)의 특정한 모드에서 어드레스들의 특정한 페이지가 액세스가능한지 여부를 나타내는 것과 같은 액세스 허가를 지정하는 일부 정보("perm")를 더 포함한다. 일부 구현예에서, TLB 엔트리들은, 캐시 계층구조의 어떤 레벨들이 판독 또는 기록 동작에 응답하여 갱신되는지(예를 들어, 캐시가 후기록 또는 동시기록(write through) 모드에서 동작하는지) 정의하는 캐시 팔러시 정보, 또는 파이프라인(4)에 의해 데이터 액세스가 발행된 순서에 비해 대응하는 페이지 내부의 어드레스들에 대한 데이터 액세스가 메모리 시스템에 의해 순서가 변경될 수 있는지 여부를 정의하는 정보 등과 같이, 대응하는 어드레스들의 페이지의 다른 속성을 더 정의할 수도 있다.
도 1에는 단일 레벨 TLB(52)가 도시되어 있지만, 변환의 계층구조가 MMU(53)에 의해 제공될 수 있으며, 및/또는 복수의 TLB들이 설치되어 레벨 1(L1) TLB(52)가 다수의 최근에 액세스된 페이지들의 어드레스를 변환하기 위한 TLB 엔트리를 포함하고, 더 큰 수의 페이지들에 대한 엔트리를 기억하기 위해 레벨 2(L2) TLB가 설치될 수도 있다는 것을 알 수 있다. L1 TLB에 필요한 엔트리가 존재하지 않으면, L2 TLB로부터, 또는 계층구조 내부의 또 다른 TLB들로부터 이것을 페치할 수 있다. 이와 달리, 소위 중간 물리 어드레스(IPA)를 사용하여, 가상 어드레스로부터 IPA로 제1 변환이 행해지고 IPA로부터 물리 어드레스로 제2 레벨의 변환이 행해져도 된다. 이에 따라, 복수 레벨의 어드레스 변환이 사용될 수 있으므로, 예를 들어, 제1 TLB(또는 TLB들의 계층구조)를 사용하여 가상 어드레스를 중간 어드레스로 변환하고, 한 개 이상의 추가적인 TLB(들)를 사용하는 제2 레벨의 어드레스 변환이 중간 어드레스를 캐시나 메모리를 액세스하는데 사용된 물리 어드레스로 변환한다. 이것은, 예를 들어, 제1 레벨의 어드레스 변환이 운영체계에 의해 관리되고 제2 레벨의 어드레스 변환이 하이퍼바이저에 의해 관리되는 가상화를 지원하는데 유용할 수 있다.
도 1에는, 도면을 간략화하기 위해, 단일 스테이지 및 레벨의 TLB(52)가 도시되어 있다.
액세스하려는 페이지에 대한 필요한 엔트리가 TLB에 존재하지 않는 경우, MMU(53)에 의해 페이지 테이블 워크가 행해져 메모리(50) 내부의 소위 페이지 테이블을 액세스할 수 있다. 본 발명에서는 모든 공지된 TLB 관리 방식이 사용될 수 있다.
도 1에 도시된 것과 같이, 장치(2)는 제한 포인터 레지스터들의 세트(60)를 갖는다. 도 1에는 제한 포인터 레지스터들의 세트가 범용 데이터 레지스터들의 세트(40)와 물리적으로 분리된 것으로 도시되어 있지만, 일 구현예에서는, 동일한 물리 스토리지를 사용하여 범용 데이터 레지스터들과 제한 포인터 레지스터들을 제공해도 된다.
각각의 제한 포인터 레지스터(60)는, 액세스할 데이터 값의 어드레스를 결정하는데 사용되는 포인터 값(62)과, 대응하는 포인터(62)를 사용할 때 허용되는 어드레스들의 범위를 지정하는 범위 정보(64)를 포함한다. 제한 포인터 레지스터(60)는, 포인터의 사용에 대한 한 개 이상의 제약/허가를 정의하는 제약 정보(66)(허가 정보로도 불린다)를 더 포함해도 된다. 예를 들어, 제약(66)을 사용하여, 포인터(62)를 사용하는 명령의 종류, 또는 포인터가 사용될 수 있는 파이프라인(4)의 모드를 제한할 수도 있다. 이 때문에, 범위 정보(64) 및 제약 정보(66)는 포인터(62)가 사용되는 것이 허용되는 자격들 C0-CM-1을 정의하는 것으로 생각된다. 정의된 자격을 벗어나 포인터(62)를 사용하려는 시도가 행해지면, 에러가 발생될 수 있다. 범위 정보(64)는, 예를 들어, 포인터들이 특정한 알려진 경계 내부에 유지되고 민감한 정보나 보안 정보를 포함할 수도 있는 메모리 어드레스 공간의 다른 영역으로 벗어나지 않도록 보장하는데 유용할 수 있다. 범용 데이터 레지스터 및 제한 포인터 레지스터 모드를 위해 동일한 물리 스토리지를 사용하는 구현예에서는, 일 구현예에서 포인터 값(62)이 예를 들어 대응하는 범용 레지스터에 대해 사용된 것과 동일한 스토리지 위치 내부에 기억될 수도 있다.
실행 스테이지(12)는 한 개 이상의 처리 스레드들을 실행하는 다중 스레드 처리 소자로 구현될 수 있다.
도 2는 허용되는 범위를 사용하여 데이터 또는 명령에 대한 승인되지 않은 액세스를 방지하는 명령들의 종류의 일례를 나타낸 것이다. 도 2의 상단부에 나타낸 것과 같이, 특정한 제한 포인터 레지스터 PR1은, 지정된 포인터 값(62)과, 본 실시예에서는 허용되는 범위의 하한값을 정의하는 하한 어드레스(68)와 허용되는 범위의 상한값을 정의하는 상한 어드레스(69)를 사용하여 지정되는 범위 정보(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에 기억되고, 제한 포인터 스토리지 소자(60)의 세트 내부의 각각의 포인터들에 제공된 범위 및 제약 정보와 마찬가지로, PCC(80)는 범위 정보(84)와 이와 관련된 제약 정보(86)를 더 제공한다. 도 1에는, 디폴트 데이터 자격(DDC) 레지스터(90)와 시스템 액세스 자격(SAC) 레지스터(95)가 더 도시되어 있는데, 이것들은 후술할 것이다.
도 3은 개별적인 데이터 블록들이 자격(즉, 제한 포인터 및 이와 관련된 제약 정보)을 나타내는지 또는 정규 데이터를 나타내는지 식별하기 위해 이들 데이터 블록과 관련하여 태그 비트를 사용하는 방법을 개략적으로 나타낸 것이다. 특히, 메모리 어드레스 공간(110)은, 보통 지정된 크기를 갖는 일련의 데이터 블록들(115)을 기억한다. 단지 예시를 들면, 본 실시예에서는 각각의 데이터 블록이 128 비트를 포함하는 것으로 가정한다. 각각의 데이터 블록(115)과 관련하여, 태그 필드(120)가 설치되는데, 이 태그 필드는 일 실시예에서는 태그 비트로 불리는 단일 비트 필드이며, 이 태그 필드가 세트되어 관련된 데이터 블록이 자격을 나타내는 것을 식별하고, 클리어되어 관련된 데이터 블록이 정규 데이터를 나타내므로 자격으로서 취급될 수 없다는 것을 표시한다. 이때, 세트 또는 클리어 상태와 관련된 실제 값은 구현예 따라 다를 수 있지만, 단지 예를 들어, 일 구현예서는 태그 비트가 1의 값을 가지면, 이것은 관련된 데이터 블록이 자격이라는 것을 나타내고, 태그 비트가 0의 값을 가지면, 이것은 관련된 데이터 블록이 정규 데이터를 포함한다는 것을 나타낸다.
도 3에 도시된 자격 레지스터(100) 등과 같이, (자격 레지스터로도 불리는) 제한 포인터 레지스터(60)들 중에서 한 개 내부에 자격이 로드될 때, 태그 비트가 자격 정보와 함께 이동한다. 따라서, 자격이 자격 레지스터(100) 내부에 로드될 때, 포인터(102), 범위 정보(104) 및 제약 정보(106)(이하에서는 허가 정보로 부른다)가 자격 레지스터 내부에 로드된다. 더구나, 자격 레지스터와 관련하여, 또는 자격 레지스터 내부의 특정한 비트 필드로서, 태그 비트(108)가 세트되어 콘텐츠가 자격을 나타낸다는 것을 식별한다. 마찬가지로, 자격이 메모리에 다시 기억될 때, 자격이 기억되는 데이터 블록과 관련하여 해당 태그 비트(120)가 세트된다. 이와 같은 접근방법에 의해, 자격과 정규 데이터를 구별하여, 정규 데이터가 자격으로서 사용될 수 없도록 보장하는 것이 가능하다.
도 1로 되돌아가, 본 발명에서 설명하는 기술에 따르면, 제한 포인터와 관련된 일반적인 정보 이외에, 이 제한 포인터를 사용하여 액세스를 제어하는 대응하는 메모리 영역과 관련된 제1 토큰값을 포함하는 취소가능한 제한 포인터가 발생될 수 있다. 더구나, 메모리 영역의 할당된 인스턴스와 관련된 취소가능한 제한 포인터와 관련하여 사용하기 위해, 메모리 내부의 헤더 위치에 기억되는 헤더가 제공되는데, 이 헤더는 취소가능한 제한 포인터와 관련하여 사용할 제1 토큰값으로 초기화되는 기억된 값을 갖는 제1 토큰 필드를 갖는다. 헤더 위치는 취소가능한 제한 포인터에 의해 제공된 범위 정보로부터 유도가능하도록 구성되어, 제한 포인터를 사용하여 메모리 어드레스를 발생할 때 헤더의 위치를 알아낼 수 있다. 할당된 메모리 영역이 그후에 할당이 해제되면, 제1 토큰 필드 내부의 기억된 값이 수정된다.
자격
고급 어플리케이션은 JAVA 및 JavaScript 등의 "안전한" 제약 실행 환경에서 실행되도록 구성될 수 있지만, 시스템의 하위 층이 일반적으로 하드웨어 상의 실제 실행에 대한 링크를 제공해야만 한다. 그 결과, 이와 같은 거의 모든 층은 보통 수천만 라인의 신뢰된(그러나, 신뢰할 수 있지는 않은) 코드로 구성된 C/C++ 프로그래밍 언어로 기록된다.
악의적인 공격이 대한 더 강력한 선천적인 면역을 제공하기 위한 근본적인 아키텍처를 제공하는 것이 목적이다. 자격은 이와 같은 전략의 일부를 제공할 수 있다.
자격 데이터 종류는 한 개 이상의 아키텍처상 정의된 자원을 액세스할 수 있는 권한의 위임가능한 토큰을 나타낸다. 자격은 다음과 같은 3가지 종류로 크게 나뉜다:
1) 데이터 전송 및 명령 페치를 위해 메모리의 범위에 대한 액세스를 허가하는데 사용되는 메모리 자격
2) 특정한 시스템 동작에 대한 액세스를 허가하는데 사용되는 시스템 액세스 자격
3) 오브젝트 종류를 갖는 다른 자격들을 캡슐화(encapsulate)하는데 사용되는 밀봉9sealing) 자격.
각각의 자격은 다수의 논리 필드를 포함하고, 이들 논리 필드 중에서 일부는 특정한 자격 종류에만 존재한다. 이와 같은 필드의 예를 도 4에 개략적으로 나타낸다.
자격 레지스터들을 사용하여 자격들을 유지하고 메모리 시스템으로의 확장을 정의하므로, 자격이 범용 메모리에 유지될 때, 자격 속성이 실행된다. 명령들이 메모리로부터 로드 및 스토어 자격에 제공될 수 있고, 자격 레지스터를 사용하여 메모리의 데이터와 자격을 액세스하고, 자격을 사용하여 분기하고, 새로운 권한을 구축하지 않고 자격 레지스터에 유지된 자격들을 처리할 수 있다.
자격들의 사용으로 인한 제약은 기존의 MMU 및 예외 레벨 기반의 제약에 의해 실행된 이상이다. 자격들의 사용은 이미 이들 메카니즘에 의해 제공된 보호를 약화시키지 않도록 구성될 수 있다.
앰비언트 자격
앰비언트 자격을 정의하는 1개 이상(예를 들어, 3개의) 앰비언트 자격 레지스터가 설치될 수 있다. 이들 설비를 사용하여, 각각의 예외 레벨에서 자격 확장의 앰비언트 효과가 유효화 및 무효화될 수 있다. 어떤 예외 레벨에서 앰비언트 효과를 유효화하는 것은, 앰비언트 자격 레지스터들의 효과를 가능하게 하고, 예외 진입 및 레벨로의 반환 거동을 수정하고, 어드레스들 상에서 자연스럽게 동작하는 다수의 기존의 명령들의 거동을 수정한다. 일부 실시예에서는, 다음과 같은 3가지 앰비언트 자격 레지스터가 주어진다:
(a) 프로그램 카운터 자격(PCC) 레지스터
이것은 명령 페치들의 사용을 제한한다. PCC 경계 및 허가는 자격 분기 및 복귀 명령들을 사용하여 예외 진입 및 반환시에 갱신된다.
(b) 디폴트 데이터 자격(DDC) 레지스터
PCC는 프로그램 카운터에 대한 데이터 액세스에 영향을 미친다. 디폴트 데이터 자격의 암시적인 사용이나 기준 레지스터로서의 자격의 명시적인 사용에 의해 제한된다.
(c) 시스템 액세스 자격(SAC) 레지스터
시스템 레지스터 및 시스템 동작에 대한 액세스는 SAC 레지스터에 유지된 허가에 의해 제한될 수 있다.
변환 색인 버퍼 및 메모리 관리 유닛
도 1의 장치에서, MMU(53)가 필요한 주된 이유는, TLB(52)에 로컬하게 현재 기억되지 않은 어드레스 변환을 처리하는 것이다. 이것이 행해지는 방식을 이하에서 더 설명한다. 이들 문제를 처리시에, 도 5를 참조하면, TLB(52)에 현재 유지되어 있지 않은 변환에 대해, MMU(130)는 변환할 가상 어드레스(500)와 관련된 요구(510)를 TLB로부터 수신하고 필요한 어드레스(PA)(530)를 나타내는 응답(520)을 TLB(52)에 반환하고, 그후 이 필요한 어드레스가 TLB(52)에 의해 출력된다. 한편, TLB에 의해 이미 버퍼링되는 변환은, MMU(53)로부터 TLB가 취득해야 하는 것보다 일반적으로 다소 더 신속하게, TLB에 의해 간단히 출력된다. 따라서, 시스템의 나머지의 관점에서, TLB는 필요한 변환을 제공하지만, 이것이 발생하는 속도는 변환이 이미 TLB에 의해 버퍼링되는지 여부에 의존한다.
이들 동작도 도 6의 흐름도에 개략적으로 도시되어 있는데, (도 6에 스텝 600으로 나타낸) TLB(52)에 대한 VA(500)의 공급이 대응하는 PA(53)에 대한 요구를 구성한다.
전술한 것과 같이, TLB는 VA와 PA 사이의 변환의 캐시 또는 스토어를 포함한다. TLB가 특정한 VA의 PA로의 변환을 기억하는 기준은 TLB의 동작에 대한 공지된 기술에 따라 확립될 수 있다. 캐시된 변환은, 최근에 사용된 변환, 빈번하게 사용된 변환, 및/또는 (최근에 액세스된 VA들에 가까운 VA들과 관련된 변환 등과 같이) 곧 필요할 것으로 예측되는 변환을 포함할 수도 있다. 대체로, 상황은, TLB가 모든 가능한 VA의 PA로의 변환들의 세트의 서브셋의 캐시를 포함하므로, 특정한 VA의 PA로의 변환이 요구될 때, 변환이 이미 TLB에 있는 캐시 내부에 유지되는 것으로 판명되거나 유지되지 않을 수도 있다는 것이다.
따라서, 다음 스텝 610에서, TLB는, 필요한 변환이 실제로 현재 TLB에 의해 캐시되어 있는지("적중") 여부를 검출한다. 결과가 긍정이면, 스텝 640으로 제어가 건네져, 필요한 메모리 액세스에서 사용하기 위해 PA(530)가 반환된다.
결과가 부정이면, 스텝 620으로 제어가 건네져, TLB(52)가 필요한 VA(510)을 포함하는 요구를 MMU(53)에 송신한다. MMU(53)는, (예를 들어, 페이지 테이블 워크(PTW) 기술을 사용하여) 필요한 VA의 PA로의 변환을 유도하고, 적어도 VA(510)에 대응하는 PA(520)(와, 본 실시예에서는, 후술하는 일부 허가 데이터)를 다시 TLB(102)로 송신하여, 스텝 630에서 캐시 또는 버퍼링된 변환으로서 기억된다.
최종적으로, 스텝 640에서, TLB(52)는 TLB(52)에 기억된 변환을 적용하여 출력 PA(530)를 제공한다.
구획
본 실시예의 장치에서는, 프로세스가 한 개 이상의 소위 구획들의 콜렉션으로서 모델링된다. 예를 들어, 실행 스테이지(12)는, 한 개 이상의 처리 스레드들을 한 개 이상의 프로세스 그룹들 또는 구획들로서 처리 스레드들을 실행하는 다중 스레드 처리 소자로 구현되며, 각각의 프로세스 그룹 또는 구획은, 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 구획 식별자(후술하는 CID)를 갖는다.
구획들은 하이브리드(하이브리드 구획 또는 HC) 또는 순종(순종 구획 또는 PC)이며 구획 관리자(CM)의 인스턴스에 의해 관리된다. 구획 관리자 CM은 가용 가상 메모리 어드레스 범위의 대부분 또는 전체를 볼 수 있는 능력을 갖는 신뢰되고 신뢰할 수 있는 구성요소인 것으로 생각된다. 따라서, 일 구성예에서, 처리 소자(12)는, 각각의 프로세스 그룹에 프로세스 그룹 식별자를 할당하도록 적어도 동작가능한 프로세스 그룹 관리자를 구현하도록 구성된다.
각각의 구획은 한 개 이상의 스레드를 포함한다. 스케줄에 집어넣을 수 있는 엔티티는 스레드이다. 도 7은 (메모리 어드레스가 좌측으로부터 우측으로 증가하는 것으로 개략적으로 도시된) 가상 메모리 어드레스(VMA) 공간(700) 내부의 이와 같은 구성을 개략적으로 나타낸 것이다. 이때, 유저 공간 엔티티들만 도시하였다.
(도 7에 도시된 HC1, HC2와 같은) 하이브리드 구획에 대해서는, 전술한 관련된 DDC에 의해 데이터 액세스가 제한된다. 하이브리드 구획은 보통 어플리케이션에 의해 사용되고 앰비언트 자격에 의해 제한된다. 이들 하이브리드 구획은 자격을 생성할 수 있지만, 이것이 필수적인 것은 아니다.
(도 7에 도시된 PC1, PC2와 같은) 순종 구획에 대해서는, 이 순종 구획에 특정한 한 개 이상의 자격들의 특정한 세트에서 인코드된 범위들에 의해 동작이 제한된다. 순종 구획은 포인터를 사용하지 않으며 자격만 사용한다.
따라서, 이들 예에서, 제1(하이브리드) 프로세스 그룹 종류에 대해서는, 자격 데이터가 제1 종류를 갖는 모든 프로세스 그룹들에 적용가능한 허용된 메모리 어드레스 범위를 정의하고,
제2(순종) 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 대해서는, 자격 데이터가 제2 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 적용가능한 허용된 메모리 어드레스 범위를 정의한다.
구획화(compartmentalization)의 예시적인 사용에서는, 공유 메모리 또는 메모리 영역들을 거쳐 구획들이 서로 통신하도록 허용함으로써, 예를 들어, 효율을 증진시키기 위해, 다수의 시스템 호출을 줄일 수 있는 특징이 제공될 수 있다. 즉, 한 개보다 많은 수의 구획이 이와 같은 공유 메모리 또는 메모리 영역을 액세스할 수 있다.
도 8은, 구획 관리자 CM(800)이 구획들(810, 820)의 설치 뿐만 아니라, 복수의 구획들에 의해 액세스가능한 가상 메모리 내부의 한 개 이상의 공유 메모리 공간들(830)의 생성을 감독하는 이와 같은 구성을 개략적으로 나타낸 것이다.
도 9는, 예시적인 순종 구획들 PC1 및 PC2 사이에서 공유되는 메모리 영역 SM1과 하이브리드 구획 HC1 및 HC2 사이에서 공유되는 또 다른 예시적인 공유 메모리 공간 SM2를 (도 7과 유사한 포맷으로) 개략적으로 나타낸 것이다. 공유 메모리 공간에 대한 액세스는 화살표 900 등의 화살표에 의해 개략적으로 나타낸다.
본 실시예는 이와 같은 접근방법의 기본적인 버전의 다음과 같은 특정한 특징을 설명한다:
첫 번째 특징은, 하이브리드 구획들 사이에서 메모리를 공유하기 위해서는, 공유 메모리가 각각의 DDC로 이루어진 연속된 범위 내부에 존재해야 한다는 것이다.
두 번째 특징은, 2개의 구획들 사이에서 메모리 영역이 공유되면, 공유 메모리에 대한 모든 우세한 참조들의 세트가 알려지지 않기 때문에, 메모리 영역이 안정하게 해제될 수 없다는 것이다.
유효한 참조가 (특정한 시간에) 레지스터에 기억되거나, 스택 상에 푸시되거나, 또는 데이터로서 보존된다. 따라서, 공유 메모리가 해제되더라도, 이 공유 메모리에 대한 유효한 참조가 실행 도크의 일부에 의해 이들 형태들 중에서 한 개로 유지된다. 이와 같이 보유된 참조는, 이 메모리 영역이 중복된 메모리 어드레스 범위에 재할당된 후에도, 이전에 공유되었지만 더 이상 공유되지 않는 데이터가 변경되거나 "스니핑"(판독 또는 샘플링)될 수도 있는 잠재적인 방법을 제공할 것이다. 이와 같은 결과는, 바람직하지 않은 "비워진 후의 이용(use-after-free)" 상황으로 불릴 수 있으며, 도 10에 개략적으로 도시되어 있는데, 이 도면은 CM(1020)에 의해 할당되어 구획들 1030 및 1040 사이에서 공유하는 공유 메모리(1010)를 스니핑 또는 액세스하는 이전에 승인된(그러나 더 이상 승인되지 않은) 구획 1000을 나타낸다.
본 발명의 실시예들은, 구획들이 메모리 영역들을 액세스하거나 공유하기 위한 허가를 효율적으로 취소하는 취소 메카니즘을 제공함으로써, 이들 과제를 해소한다. 한가지 가능한 대안적인 실시예의 취소 메카니즘은, 메모리 영역의 매핑 및 언매핑(un-mapping)을 빈번하게 사용하여 참조를 취소하는 향상된 MMU 환경설정을 포함할 수 있다. 그러나, 이와 같은 접근방법은, 구획 관리자의 코드 복잡성을 증가시킬 수 있으며 아마도 TLB 압력(처리 요구사항)을 허용되지 않는 레벨로 상승시킬 수 있기 때문에, 본 실시예에서는 사용되지 않는다.
따라서, 본 발명의 실시예는, 유효한 참조를 남기지 않고 이 유효한 참조의 번호를 알지 못하는 과제를 해소하는 또 다른 기술을 제공한다.
구획 식별자
구획들은 항상 시스템에서 고유하게 식별된다. 이것을 위해, 적절한 식별자 생성방법이 사용된다. 구획 식별자(CID)는, 프로세스의 인라인 부분과 관련되는 것을 제외하고는, 프로세스 식별자(PID)와 동일하다. 현재의 CID는 레지스터에 기억된다. 각각의 CID들은 (본 실시예에서는) 다른 우세한 CID들 중에서 고유하다.
변환 기술자
해결책의 근거는, 새로운 변환 기술자(TD) 포맷을 확장으로 구현하는 것이다. 이와 같은 기술자는 이 메모리 범위를 액세스하는 구획들을 정의하는 (예를 들어) 최대 2개의 CID들을 포함한다. (예를 들어, 순종 구획과 관련되는) 후술하는 적어도 일부 상황에서는 TD에 CID가 세트되지 않으면, 메모리가 액세스 불가능하다. 더구나, 이 아키텍처는, 앰비언트 자격을 포함하는 자격들을 통해 스토어 및 로드 연산이 행해지고 있을 때 다른 메모리 액세스 검사를 갖도록 변경된다.
도 11은, 각각의 VA의 PA로의 변환과 관련된 한 개 이상의 속성들(1102)을 캐시(1100) 내부에 버퍼링하는 TLB(52') 또는 (예를 들어, TLB가 사용되지 않는 경우) MMU(53')의 사용을 개략적으로 나타낸 것으로, 속성이 TD를 포함하고 있다. TLB(52') 및/또는 MMU(53')는, 메모리 관리 유닛, 및 변환 색인 버퍼 중에서 한 개 또는 양쪽을 포함하는 메모리 어드레스 변환회로의 사용 예를 제공한다.
일부 실시예에서, TLB(52')/MMU(53')는, 특정한 메모리 어드레스, 페이지 또는 영역을 액세스하려고 시도하는 구획의 CID(1110)를 입력으로서 수신하고, 콘트롤러(1120)를 사용하여, 기억된 속성을 참조하여 액세스가 허용되는지 아닌지를 검출한다.
콘트롤러(1120)에 의해 행해지는 검사와 그 결과 얻어지는 액세스 허가는 다음과 같이 구현된다.
(TLB 및/또는 MMU 등의) 메모리 어드레스 변환회로는, 한 개 이상의 프로세스 그룹들의 처리 스레드에 의해 요구된 메모리 액세스에 응답하여 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하도록 구성된다. 또한, 이 메모리 어드레스 변환회로는, 지정된 가상 메모리 액세스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들(CID들)을 정의하는 (TD 등의) 허가 데이터를, 지정된 가상 어드레스의 대응하는 물리 메모리 어드레스로의 변환과 관련시키고, 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 자격 데이터와, 허가 데이터가 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 지정된 가상 메모리 어드레스에 대한 액세스를 금지하도록 더 구성된다.
하이브리드 구획에 대한 액세스
테스트는 다음과 같다: [DDC의 검사] OR {CID를 찾기 위한 MMU 검사]
즉, 도 12의 표에 도시된 것과 같이, 좌측 2개의 열 중에서 어느 한 개 또는 양쪽이 참이면(액세스가 허용된 DDC 경계 내부에 있으며, TD가 이 CID를 정의하면), 액세스가 허용된다.
제시된 구성은 하이브리드 구획들과의 메모리 공유를 단순화할 수 있다. 공유 메모리는 DDC 경계 밖에 있지만 액세스 가능하다. 공유 메모리가 새로운 TD에 의해 기술되고 CID들이 적절히 설정되는 경우, 액세스가 MMU에 의해 승인된다. 공유 메모리가 DDC 경계 밖에 있으며 TD가 존재하지 않는 경우, 액세스가 거부된다.
따라서, 이들 실시예에서는, 제1 (하이브리드) 프로세스 그룹 종류의 지정된 프로세스 그룹에 대해,
(i) 지정된 가상 메모리 어드레스가 지정된 프로세스 그룹에 대한 허용된 메모리 어드레스 범위 내에 놓이는 것으로 자격 데이터가 표시하거나,
(ii) 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자가 허가 데이터에 의해 정의된 프로세스 그룹 식별자이나, (i) 및 (ii) 모두일 때,
메모리 어드레스 변환회로가 지정된 가상 메모리 어드레스에 대한 액세스를 허용하고,
그렇지 않은 경우에는 액세스를 금지하도록 구성된다.
순종 구획에 대한 액세스
테스트는 다음과 같다: [자격의 검사] AND [세트된 경우, MMU 및 CID 검사]
즉, 도 13의 표로 나타낸 것과 같이, 좌측 2개의 열 모두가 참이고(유효한 자격에 의해 액세스가 정의되고, TD가 이 CID를 정의하고), 메모리 어드레스 또는 영역이 달리 매핑되지 않은 경우, 액세스가 허용된다.
본 구성은 순종 구획에 관해 보안을 강화하거나 확고하게 할 수 있다. 이전에는, 유효한 자격이 존재하면 이와 같은 구획이 데이터를 액세스할 수 있었다. 제시된 TD 포맷은 이와 같은 거동을 변경한다.
따라서, 이들 실시예에서는, 제2(순종) 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 대해, 메모리 어드레스 변환회로는,
(i) 지정된 가상 메모리 어드레스가 지정된 프로세스 그룹에 대한 허용되는 메모리 어드레스 범위 내에 놓이는 것으로 자격 데이터가 표시하고, 및
(ii) 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자가 허가 데이터에 의해 정의된 프로세스 그룹 식별자일 때,
지정된 가상 메모리 어드레스에 대한 액세스를 허용하고,
그렇지 않은 경우에는 액세스를 금지하도록 구성된다.
이들 테스트를 위한 MMU의 사용
본 구성은, (이전에 제한된 MMU의 경우에서와 같이) 더 하부 층의 액세스 제어기가 아니라, 전술한 허가 특징에 대한 동일한 허가 제공자로서의 액세스 검사 처리 MMU를 제공한다.
실시예 - 도 14 내지 도 16
이하, 구획 관리자(1400)가 가상 메모리 경계 A, B에 의해 정의된 공유 메모리 영역(1410)에 대한 액세스를 생성 및 감독하는 도 14 내지 도 16을 참조하여 이들 기술의 실시예를 설명한다. 공유 메모리 영역에 대한 액세스는, 속성 데이터(1102)가 참고되는 TLB(52')/MMU(53')에 의한 메모리 어드레스 변환을 필요로 한다. 도 14 내지 도 16에서는, TD의 CID에 관련되는 전술한 테스트만 도시한다.
도 14에서는, 각각의 CID들 CID1 및 CID2를 갖는 구획들(1420, 1430) 사이에서 공유 메모리 영역(1410)이 공유되도록 확립되었다. TD가 "CID1 또는 CID2"를 지어하므로, 구획들(1420, 1430)에 의한 액세스가 (CID와 관련되는 테스트의 일부의 관점에서) 허용된다.
도 15에서는, 공유 메모리가 CID3, CID4의 각각의 CID들을 갖는 구획들 1500, 1510에 재할당되었다. TD가 "CID1 또는 CID2"를 지정하므로, 구획들 1500, 1510에 의한 액세스가 (CID와 관련되는 테스트의 일부의 관점에서) 허용된다. 그러나, CID=CID1을 갖는 구획 1420에 의한 시도된 액세스는, 메모리 변환에서 행해진 CID 테스트를 통과하지 못하므로, 허가되지 않는다.
이에 따라, 공유 메모리가 성공적으로 재할당되었다. 공유 메모리에 대한 미해결된 참조를 식별하고 위치를 파악할 필요가 없이, 공유 메모리 영역과 관련된 TD를 수정함으로써, 구획 1420에 이전에 부여된 허가가 제거되었다.
도 16에 또 다른 실시예에가 도시되어 있는데, 이때에는 메모리 영역 1410의 공유 속성이 취소되어, CID=CID3를 갖는 구획에 대해서만 액세스가 허가된다. 메모리 변환을 요구하는 구획의 CID와 TD 비교의 실패에 의해 구획 1420, 1510(또는 사실상 다른 모든 구획)에 의한 시도된 액세스가 허용되지 않는다.
도 17 및 도 18은 이들 프로세스를 요약하는 개략적인 흐름도이다.
도 17은 하이브리드 구획에 관한 것이다. 스텝 1710에서, 관련된 DDC에 의해 설정된 경계를 고려하는 것이 허용되는지에 관해 메모리 액세스가 검사된다. (스텝 1710에서) 결과가 yes이면, 액세스가 허용된다. 그렇지 않은 경우에는, 스텝 1720에서, CID가 TD에 의해 지정된 한 개 이상의 CID들의 그룹에 의해 커버되는지에 관해 MMU 또는 TLB에 의해 검사가 행해진다. (스텝 1730에서) yes이면, 액세스가 허용된다. 그렇지 않으면 액세스가 허용되지 않는다.
순종 구획에 대해서는, 도 18을 참조한다. 스텝 180에서, 액세스하는 구획에 관한 자격의 유효성이 검사된다. (스텝 1810에서) 유효한 경우, 스텝 1820으로 제어가 건네진다. 그렇지 않은 경우에는, 액세스가 허용되지 않는다. 스텝 1820에서, TD에 대해 요구하는 구획의 CID가 TLB/MMU에 의해 검사된다. (스텝 1830에서) CID가 TD에 의해 지정된 한 개 이상에 의해 커버되는 경우, 액세스가 허용된다. 그렇지 않으면, 액세스가 허용되지 않는다.
잠재적인 이점
전술한 것과 같이, 유효한 참조가 여전히 존재하더라도, TD 포맷을 변경함으로써, 공유 메모리의 할당이 용이하게 취소될 수 있다. 이 이외에, CID들이 새로운 TD 포맷에서 적절히 설정되면, VMA 범위가 언제라도 재사용된다. 공유의 한쪽에서 매핑을 실제로 유지하면서 공유 메모리가 언제나 취소될 수 있다(따라서, 예를 들어, CID3 만을 지정하도록 TD를 변경함으로써, CID4에 관한 한 CID3 및 CID4 사이의 공유 메모리가 취소되지만 CID3에 대해서는 유지된다).
모든 메모리 액세스가 어쨌든 어드레스 변환을 겪기 때문에, 본 발명의 해결책은 성능상의 불이익을 갖지 않는다.
TD 포맷이 잠재적으로 TLB 관리를 단순화하여, 아마도 TLB 플러시(flush)를 줄인다. 순종 구획은 한 개의 TLB 엔트리로 서술되며, 액세스 종류가 자격에서 인코딩된다. 하이브리드 구획은 메모리 종류당 한 개의 TLB 엔트리를 갖고, 액세스 종류가 MMU에 의해 실행된다.
TD의 채워짐(population)
도 19를 참조하면, 일 구성예에서, 구획 관리자(또는 프로세스 그룹 관리자)는 메모리의 공유를 감독하는 역할을 하는 프로세스로서 동작한다. 일부 실시예에서는, CM 그 자체가 TD 필드를 채우며, 다른 실시예에서는 TD 필드를 채우도록 커널에게 요구하는 특권을 갖는 것은 엔티티이다. (실시예들에서) CM 이외의 구획은 TD 필드를 채우거나 이것을 하도록 커널에게 요구할 수 있는 특권을 갖지 않는다.
2개 이상의 프로세스 그룹 사이에 액세스가 공유되는 메모리 액세스 범위에 대해, CM은, (스텝 1900에서) 2개 이상의 프로세스 그룹에 대한 프로세스 그룹 식별자들을 메모리 어드레스 변환회로에 제공하거나 제공하도록 커널에게 요구할 수 있으며, 메모리 어드레스 변환회로는 (스텝 1910에서) 2개 이상의 프로세스 그룹에 대한 프로세스 그룹 식별자들을 허가 데이터로서 기억하도록 구성되고, 이것은 공유 메모리 영역을 확립하는 일부분으로서 행해질 수 있다.
마찬가지로, CM(프로세스 그룹 관리자)은, (스텝 2010에서) 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자의 메모리 어드레스 변환회로에 의해 유지된 허가 데이터로부터의 삭제를 개시함으로써, (도 20의 스텝 2000에서) 지정된 프로세스 그룹에 의한 메모리 어드레스 범위에 대한 액세스의 취소를 개시하도록 구성된다.
도 21은, 방법으로서,
(스텝 2100에서) 다중 스레드 처리 소자를 사용하여, 한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 단계를 포함하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
상기 방법은,
(스텝 2110에서) 메모리 어드레스 변환회로를 사용하여, 프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의해 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 단계와,
(스텝 2120에서) 상기 메모리 어드레스 변환회로가, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키는 단계와,
(스텝 2130에서) 상기 메모리 어드레스 변환회로가, 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하는 단계를 더 포함하는 방법을 나타낸 개략적인 흐름도이다.
도 22는 사용될 수 있는 시뮬레이터 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 처리 하드웨어를 작동하기 위한 장치 및 방법에 관해 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 발명에서 설명한 실시예에 따라 명령 실행 환경을 제공하는 것도 가능하다.
이와 같은 컴퓨터 프로그램은, 하드웨어 아키텍처의 소프트웨어 기반의 구현을 제공하는 한, 시뮬레이터로 부르는 경우가 많다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상머신, 모델, 및 동적 이진 변환기를 포함하는 이진 변환기를 포함한다. 보통, 시뮬레이터 구현은, 옵션으로 시뮬레이터 프로그램(2210)을 지원하는 호스트 운영체계(2220)를 실행하는 호스트 프로세서(2230) 상에서 실행된다. 일부 구성예서는, 하드웨어와 제공된 명령 실행 환경 사이에 복수 층의 시뮬레이션이 존재하고, 및/또는 동일한 호스트 프로세서 상에서 복수의 별개의 명령 실행 환경이 제공된다. 역사적으로, 합당한 속도에서 실행되는 시뮬레이터 구현을 제공하기 위해 강력한 프로세서들이 요구되었지만, 이와 같은 접근방법은, 호환성이나 재사용 이유로 인해 다른 프로세서에 대해 네이티브한 코드를 실행하려는 요구가 있을 때 등과 같은, 특정한 상황에서 정당화된다. 예를 들어, 시뮬레이터 구현은, 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능을 갖는 명령 실행 환경을 제공하거나, 보통 다양한 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공한다. 시뮬레이터의 개관에 대해서는 "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53-63에 기재되어 있다.
본 실시예를 특정한 하드웨어 구성 또는 특징을 참조하여 설명하였지만, 시뮬레이션된 실시예에서는, 적절한 소프트웨어 구성 또는 특징에 의해 동등한 기능이 제공된다. 예를 들어, 특정한 회로가 시뮬레이션된 실시예에서는 컴퓨터 프로그램 논리로 구현된다. 마찬가지로, 레지스터 또는 캐시 등의 메모리 하드웨어도 시뮬레이션된 실시예에서는 소프트웨어 데이터 구조로 구현된다. 전술한 실시예에서 참조한 한 개 이상의 하드웨어 구성요소들이 호스트 하드웨어(예를 들어, 호스트 프로세서(2230) 상에 존재하는 구성예서는, 적절한 경우에, 일부 시뮬레이션된 실시예가 호스트 하드웨어를 이용한다.
시뮬레이터 프로그램(2210)은, 컴퓨터 판독가능한 기억매체(이것은 비일시적인 매체일 수도 있다)에 기억되고, 시뮬레이터 프로그램(2210)에 의해 모델링되고 있는 하드웨어 아키텍처의 응용 프로그램 인터페이스와 동일한 타겟 코드(2200)(이것은 어플리케이션, 운영체계 및 하이퍼바이저를 포함할 수도 있다)에 대한 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 전술한 기능을 포함하는, 타겟 코드(2200)의 프로그램 명령들은 시뮬레이터 프로그램(2210)을 사용하여 명령 실행 환경 내에서 실행됨으로써, 전술한 장치의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(2230)가 이들 특징을 에뮬레이트할 수 있다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치(전술한 처리 소자 등)가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (9)

  1. 장치로서,
    한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 다중 스레드 처리 소자를 구비하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
    상기 장치는,
    프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의해 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 메모리 어드레스 변환회로를 더 구비하고,
    상기 메모리 어드레스 변환회로는, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키고, 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하도록 구성된 장치.
  2. 제 1항에 있어서,
    상기 처리 소자는, 각각의 프로세스 그룹에 적어도 프로세스 그룹 식별자를 할당하도록 동작가능한 프로세스 그룹 관리자를 구현하도록 구성된 장치.
  3. 제 1항에 있어서,
    제1 프로세스 그룹 종류에 대해, 상기 자격 데이터는 제1 종류의 모든 프로세스 그룹들에 적용가능한 허용되는 메모리 어드레스 범위를 정의하고,
    제2 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 대해, 상기 자격 데이터는 상기 제2 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 적용가능한 허용되는 메모리 어드레스 범위를 정의하는 장치.
  4. 제 3항에 있어서,
    상기 제1 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 대해, 상기 메모리 어드레스 변환회로는,
    (i) 상기 지정된 가상 메모리 어드레스가 지정된 프로세스 그룹에 대한 허용되는 메모리 어드레스 범위 내에 놓이는 것으로 상기 자격 데이터가 표시하거나, 또는
    (ii) 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자가 상기 허가 데이터에 의해 정의된 프로세스 그룹 식별자이거나, (i) 및 (ii) 모두일 때,
    상기 지정된 가상 메모리 어드레스에 대한 액세스를 허용하고,
    그렇지 않은 경우에는 액세스를 금지하도록 구성된 장치.
  5. 제 3항에 있어서,
    상기 제2 프로세스 그룹 종류를 갖는 지정된 프로세스 그룹에 대해, 상기 메모리 어드레스 변환회로는,
    (i) 상기 지정된 가상 메모리 어드레스가 지정된 프로세스 그룹에 대한 허용되는 메모리 어드레스 범위 내에 놓이는 것으로 상기 자격 데이터가 표시하고, 및
    (ii) 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자가 상기 허가 데이터에 의해 정의된 프로세스 그룹 식별자일 때,
    상기 지정된 가상 메모리 어드레스에 대한 액세스를 허용하고,
    그렇지 않은 경우에는 액세스를 금지하도록 구성된 장치.
  6. 제 2항에 있어서,
    상기 프로세스 그룹 관리자는, 2개 이상의 프로세스 그룹들 사이에서 액세스가 공유되는 메모리 어드레스 범위에 대해, 상기 2개 이상의 프로세스 그룹들에 대한 프로세스 그룹 식별자들을 상기 메모리 어드레스 변환회로에 제공하도록 동작가능하고,
    상기 메모리 어드레스 변환회로는 상기 2개 이상의 프로세스 그룹들에 대한 프로세스 그룹 식별자들을 상기 허가 데이터로서 기억하도록 구성된 장치.
  7. 제 6항에 있어서,
    상기 프로세스 그룹 관리자는, 지정된 프로세스 그룹에 대한 프로세스 그룹 식별자의 상기 메모리 어드레스 변환회로에 의해 유지된 상기 허가 데이터로부터의 삭제를 개시함으로써, 지정된 프로세스 그룹에 의한 메모리 어드레스 범위에 대한 액세스의 취소를 개시하도록 구성된 장치.
  8. 제 1항에 있어서,
    상기 메모리 어드레스 변환회로는 메모리 관리 유닛과 변환 색인 버퍼 중에서 한 개 또는 양쪽을 구비한 장치.
  9. 방법으로서,
    다중 스레드 처리 소자를 사용하여, 한 개 이상의 처리 스레드들 각각을 한 개 이상의 프로세스 그룹들로서 처리 스레드들을 실행하는 단계를 포함하고, 이때 각각의 프로세스 그룹은, 상기 한 개 이상의 프로세스 그룹들 중에서 고유하고 자격 데이터에 의해 가상 메모리 어드레스 공간 내부의 각각의 메모리 어드레스 범위와 관련되는 프로세스 그룹 식별자를 갖고,
    상기 방법은,
    메모리 어드레스 변환회로를 사용하여, 프로세스 그룹들 중에서 한 개의 프로세스 그룹의 처리 스레드에 의해 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 단계와,
    상기 메모리 어드레스 변환회로가, 지정된 가상 메모리 어드레스를 액세스하는 것이 허가된 각각의 프로세스 그룹들을 나타내는 한 개 이상의 프로세스 그룹 식별자들을 정의하는 허가 데이터를, 상기 지정된 가상 어드레스 메모리의 대응하는 물리 메모리 어드레스로의 변환과 관련시키는 단계와,
    상기 메모리 어드레스 변환회로가, 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹과 관련된 상기 자격 데이터와, 상기 허가 데이터가 상기 메모리 액세스를 요구하는 처리 스레드의 프로세스 그룹의 프로세스 그룹 식별자를 정의하는지 여부의 검출에 따라, 상기 지정된 가상 메모리 어드레스에 대한 액세스를 금지하는 단계를 더 포함하는 방법.
KR1020217005754A 2018-10-15 2019-08-23 메모리 액세스 제어 KR20210068393A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1816742.9 2018-10-15
GB1816742.9A GB2578099B (en) 2018-10-15 2018-10-15 Memory access control
PCT/GB2019/052373 WO2020079387A1 (en) 2018-10-15 2019-08-23 Memory access control

Publications (1)

Publication Number Publication Date
KR20210068393A true KR20210068393A (ko) 2021-06-09

Family

ID=64394849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217005754A KR20210068393A (ko) 2018-10-15 2019-08-23 메모리 액세스 제어

Country Status (8)

Country Link
US (1) US11573911B2 (ko)
EP (1) EP3818447B1 (ko)
JP (1) JP7425786B2 (ko)
KR (1) KR20210068393A (ko)
CN (1) CN112585590B (ko)
GB (1) GB2578099B (ko)
TW (1) TWI807094B (ko)
WO (1) WO2020079387A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2593487B (en) * 2020-03-24 2022-05-04 Advanced Risc Mach Ltd Apparatus and method

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02105240A (ja) * 1988-10-13 1990-04-17 Fuji Xerox Co Ltd 仮想記憶管理装置
US5845129A (en) * 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
JP2000276405A (ja) * 1999-01-19 2000-10-06 Matsushita Electric Ind Co Ltd アドレス変換装置及びこのアドレス変換装置を有するコンピュータシステム
US6564311B2 (en) * 1999-01-19 2003-05-13 Matsushita Electric Industrial Co., Ltd. Apparatus for translation between virtual and physical addresses using a virtual page number, a physical page number, a process identifier and a global bit
US7782329B2 (en) * 2004-12-10 2010-08-24 Rockwell Collins, Inc. Method and apparatus for protected graphics generation
WO2008155841A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 演算処理装置および演算処理方法
US8146107B2 (en) * 2007-07-10 2012-03-27 Mitel Networks Corporation Virtual machine environment for interfacing a real time operating system environment with a native host operating system
KR101013509B1 (ko) * 2008-01-04 2011-02-11 주식회사 마크애니 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법
US8677098B2 (en) * 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US9164812B2 (en) * 2009-06-16 2015-10-20 International Business Machines Corporation Method and system to manage memory accesses from multithread programs on multiprocessor systems
US9336413B2 (en) * 2013-11-22 2016-05-10 Oracle International Corporation Method and system for fast permission changes for virtual addresses
US9747218B2 (en) * 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US10007619B2 (en) 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
US10614210B2 (en) * 2015-07-31 2020-04-07 Digital Guardian, Inc. Systems and methods of protecting data from injected malware
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
US9766899B2 (en) * 2015-12-28 2017-09-19 Google Inc. Bootloader control via device identifier
US10402333B2 (en) * 2016-01-18 2019-09-03 Hitachi, Ltd. Computer system including plurality of types of memory devices and method

Also Published As

Publication number Publication date
JP7425786B2 (ja) 2024-01-31
US20210334220A1 (en) 2021-10-28
EP3818447A1 (en) 2021-05-12
GB2578099A (en) 2020-04-22
TWI807094B (zh) 2023-07-01
CN112585590B (zh) 2024-07-19
GB2578099B (en) 2021-05-12
EP3818447B1 (en) 2023-08-23
WO2020079387A1 (en) 2020-04-23
JP2022502729A (ja) 2022-01-11
US11573911B2 (en) 2023-02-07
GB201816742D0 (en) 2018-11-28
CN112585590A (zh) 2021-03-30
TW202016742A (zh) 2020-05-01

Similar Documents

Publication Publication Date Title
KR20180136976A (ko) 자격 메타데이터에 대해 연산을 행하는 장치 및 방법
KR102605793B1 (ko) 자격들의 이용을 관리하는 장치 및 방법
CN112449698B (zh) 用于数据处理的装置、方法和计算机存储介质
KR102533823B1 (ko) 자격과 관련된 허가들을 해석하는 장치 및 방법
KR102586257B1 (ko) 명령들의 실행을 제어하는 장치 및 방법
KR20230017832A (ko) Tag 체킹 장치 및 방법
KR102547479B1 (ko) 명령 세트의 변경을 제어하는 장치 및 방법
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
JP7425786B2 (ja) メモリ・アクセス制御
US20240202139A1 (en) Technique for constraining access to memory using capabilities
KR20240089653A (ko) 봉인 캐퍼빌리티를 핸들링하는 기술
US12056062B2 (en) Apparatus and method for capability-based processing
US20240193101A1 (en) Technique for constraining access to memory using capabilities
US20240086579A1 (en) Key capability storage
TW202340955A (zh) 使用能力約束記憶體存取之技術
WO2024094956A1 (en) Region identifier based on instruction fetch address
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質

Legal Events

Date Code Title Description
A201 Request for examination