KR101024819B1 - 메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템 - Google Patents

메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템 Download PDF

Info

Publication number
KR101024819B1
KR101024819B1 KR1020040031024A KR20040031024A KR101024819B1 KR 101024819 B1 KR101024819 B1 KR 101024819B1 KR 1020040031024 A KR1020040031024 A KR 1020040031024A KR 20040031024 A KR20040031024 A KR 20040031024A KR 101024819 B1 KR101024819 B1 KR 101024819B1
Authority
KR
South Korea
Prior art keywords
request
memory
address translation
policy
translation map
Prior art date
Application number
KR1020040031024A
Other languages
English (en)
Other versions
KR20040094382A (ko
Inventor
마르쿠스 페이나도
폴 잉글랜드
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040094382A publication Critical patent/KR20040094382A/ko
Application granted granted Critical
Publication of KR101024819B1 publication Critical patent/KR101024819B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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

Abstract

소정의 메모리 액세스 제어 알고리즘들이 효율적으로 구현될 수 있도록 해주는 메카니즘들이 개시된다. 메모리 액세스 제어가 주소 변환 맵(또는 맵들의 집합)에 대한 변화를 제어하는 것에 기초할 때, 특정한 맵 변화가 허용할 수 없는 방법으로 메모리가 액세스되는 것을 허용하는지를 판정할 필요가 있을 수 있다. 전체 맵의 평가를 수행하는 것보다 더 효율적으로 이러한 판정이 이루어질 수 있도록 해주기 위하여 맵에 관한 특정한 데이터가 캐시될 수 있다.
메모리 액세스, 주소 변환 맵, 알고리즘, 컴퓨터 보안

Description

메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템{IMPLEMENTATION OF MEMORY ACCESS CONTROL USING OPTIMIZATIONS}
도 1은 본 발명의 특징이 구현될 수도 있는 컴퓨팅 환경의 블럭도.
도 2는 주소 변환 맵을 통해 가상 주소 지정을 구현하는 메모리 시스템의 블럭도.
도 3은 속성들을 갖는 예시적인 페이지 테이블의 블럭도.
도 4는 메모리 액세스 제어를 구현하는데에 이용될 수도 있는 조건을 나타내는 두 개의 예시적인 교차하지 않는 집합의 블럭도.
도 5는 주소 변환 맵을 나타내는, 방향성을 갖는 라벨형 그래프의 블럭도.
도 6은 예시적인 메모리 액세스 제어 프로세스의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
110 : 컴퓨터
120 : 프로세싱 유닛
121 : 시스템 버스
130 : 시스템 메모리
본 출원은 2003년 5월 2일자로 출원된 "Techniques for Efficient Implementation of Memory Access Control"이란 명칭의 미국 가출원 60/467,343의 권리를 주장한다.
본 발명은 일반적으로 컴퓨터 보안 분야에 관한 것이다. 보다 구체적으로는, 본 발명은 주소 변환 제어(address translation control)를 이용하여 분리형(isolated) 또는 "커튼형(curtained)" 메모리를 구현하기 위한 효율적인 기술에 관한 것이다.
몇몇 환경에서는, 액세스가 제한된 분리 또는 "커튼된" 메모리 부분을 갖는 것이 바람직하다. 예를 들면, 하나의 컴퓨터는 서로 협력하는 두 개의 운영 체제를 가동시킬 수도 있는데, 여기서 하나의 운영 체제는 보안 상태에 있으며 나머지 하나는 보안 상태에 있지 않다. 이 경우, 보안되지 않은 운영 체제에 의해 액세스될 수 없는 비밀 정보를 저장할 수 있는 커튼형 메모리를 보안된 운영 체제가 가지는 것이 바람직하다.
커튼형 메모리를 구현하는 방법중 하나는 주소 변환 제어를 통하는 것이다. 현재의 많은 컴퓨터들에서는 가상 메모리 시스템이 이용되는데, 이 가상 메모리 시스템에서는, 컴퓨터 상에서 가동되는 소프트웨어가 가상 주소를 이용하여 메모리의 주소를 지정하고 메모리 관리 유닛이 주소 변환 맵 세트를 이용하여 가상 주소를 물리적 주소로 변환한다. 전형적으로, 각 프로세스는 자기 자신의 주소 변환 맵을 가져서, 가상 주소 및 물리적 주소간의 맵핑이 프로세스들 간에 변경되도록 한다. 소정의 프로세스의 주소 변환 맵을, 프로세스의 맵이 물리적 메모리의 소정의 블럭(예를 들면, 페이지)에 대한 임의의 가상 주소를 상기 프로세스에 노출시키지 않도록 구성하는 것이 가능하다. 이에 따라, 보안된 프로세스만이 물리적 메모리의 소정의 블럭에 대한 가상 주소를 가지도록 함으로써, 주소 변환 맵의 컨텐츠를 제어하여 커튼형 메모리를 구현하는 것이 가능하다.
커튼형 메모리를 구현하는데에 이러한 메카니즘이 이용될 때 발생하는 하나의 문제점은, 주소 변환 맵이 메모리에 저장됨으로 인해, 메모리에 기입하는 모든 동작이 잠재적으로 맵들에 영향을 미칠 수 있어서 커튼형 메모리에 대한 가상 주소가 커튼형 메모리에 액세스되지 않아야 할 프로세스에 노출될 수도 있다는 것이다. 이러한 가상 주소가 노출되는 것을 방지하기 위한 방법중 하나는, 커튼형 메모리의 어떠한 페이지도, 커튼형 메모리에 액세스되지 않아야 하는 임의의 프로세스의 맵 내의 가상 주소를 가지지 않도록 하기 위해 메모리 상의 기록 동작이 수행될 때마다 모든 맵의 모든 엘리먼트를 체크하는 것이다. 그러나, 기록 동작이 자주 발생되는 경우, 이 기술은 효율적이지 않다.
전술한 바로부터, 종래 기술의 문제점을 극복하기 위한 메카니즘이 필요하게 된다.
본 발명은 주소 변환 맵에 대한 변경을 효율적으로 제어하기 위한 메카니즘을 제공한다. 커튼형 메모리는, 커튼형 메모리의 하나의 블럭에 대한 하나의 가상 주소가 커튼형 메모리에 액세스하도록 허용되지 않은 프로세스(또는 그 밖의 다른 엔티티(entity))에 노출될 수도 있는 상태에 주소 변환 맵이 진입하지 못하도록 함으로써 구현될 수 있다. "정책(policy)"은, 어떤 메모리 액세스 동작이 허용되는지를 정의하며, 메모리 액세스 제어 시스템은 주소 변환 맵이 이 정책을 위반하는 임의의 상태에 진입하지 못하도록 동작할 수 있다.
이러한 가상 주소가 노출될 수도 있는 상태는 종종 소정의 속성을 만족시키는 두 개 이상의 집합의 교집합(intersection)(또는 여집합(non-intersection)), 또는 소정의 속성을 만족시키는 페이지들의 수에 기초하여 정의될 수 있다. 정의된 집합의 구성요소들인 페이지들의 아이덴티티가 저장되거나 캐싱되어, 주소 변환 맵의 상태를 변경시킬 수도 있는 기록 동작이 수행될 때마다 이 집합의 멤버십이 계산될 필요가 없게 된다. 하나의 집합 내의 페이지들의 아이덴티티는, 예를 들어 비트 벡터로서 저장될 수 있으며, 합집합(union), 교집합 등과 같은 집합 연산은 이러한 비트 벡터에 대해 효율적으로 수행될 수 있다. 몇몇 경우에, 특정 속성을 만족시키는 정확한 집합이 계산되기 어려울 수도 있지만, 이 정책에 따르는 것은 소정의 잘 정의된 부분 집합 또는 포함 집합(superset)을 실질적인 집합에 대한 프록시로서 이용함으로써 보장될 수 있음이 수학적으로 증명가능할 수도 있다. 부분 집합 또는 포함 집합이 실제의 집합보다 비교적 계산하기 쉬울 경우, 부분 집합 또는 포함 집합이 실제의 집합 대신에 이용될 수도 있다.
또한, 소정의 기록 동작의 허용도가, 소정의 통계치의 카운트, 예를 들면, 소정의 속성을 만족시키는 페이지들의 수, 소정의 페이지에 대한 참조(reference)의 수 등의 면에서 정의될 수 있다. 이러한 통계치는 참조 카운터로서 효율적으로 저장되거나 캐싱될 수 있으며, 이 참조 카운터는 증분 및 감분 연산을 통해 갱신될 수 있다. 비트 벡터 또는 카운터는, 맵이 상태를 변경할 때마다 갱신될 수 있으며, 그 후 상기 정책 하에서 메모리 액세스 동작을 평가하는데에 효율적으로 이용된다.
본 발명의 그 밖의 다른 특징들은 이하에 기술된다.
이하의 바람직한 실시예의 상세한 설명과 전술한 발명의 요약은 첨부된 도면과 결부시켜 읽으면 더욱 잘 이해될 것이다. 본 발명을 예시하기 위해 도면에는 본 발명의 예시적인 구조가 도시되어 있지만, 본 발명은 개시된 특정 방법 및 수단으로 제한되는 것은 아니다.
예시적인 컴퓨팅 구성
도 1은 본 발명의 특징이 구현될 수 있는 컴퓨팅 환경의 예를 나타낸다. 이 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일례이며 본 발명의 사용 또는 기능의 범위를 제한하기 위하여 의도된 것이 아니다. 컴퓨팅 환경(100)은 이 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 이들의 조합에 관한 임의의 종속성 또는 필요조건을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성과 함께 동작된다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋 탑 박스(set top box), 프로그래머블 고객 전자장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 내장 시스템, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산 컴퓨팅 환경을 포함할 수 있지만, 이에 한정되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령의 일반적인 컨텍스트에서 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈과 다른 데이터는 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 결합하는 시스템 버스(121)를 포함할 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 국부적 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 국부적 버스, 및 주변 컴포넌트 상호접속(PCI) 버스(또한 메자닌 버스(Mezzanine bus)로 공지됨)를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능 매체일 수 있으며, 휘발성 및 불휘발성 매체, 분리형 및 비분리형 매체 양쪽 모두를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터 등의 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 전송 메카니즘 등의 변조 데이터 신호의 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. 용어 "변조 데이터 신호"는 정보를 신호로 인코딩하는 것과 같은 방법으로 설정되고 변경된 그 특성 중의 하나 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 네트워크 등의 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의 임의의 조합이 컴퓨터 판독가능 매체의 범위내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 불휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동시 등의 컴퓨터(110)내의 소자들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 즉시 동작하는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, 이에 한정되지 않지만, 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/불휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1은 비분리형 불휘발성 자기 매체로부터 판독하거나 그 자기 매체로 기입하는 하드 디스크 드라이브(140), 분리형 불휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크로 기입하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크로 기입하는 광학 디스크 드라이브(155)를 도시한다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/불휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이 브(141)는 일반적으로 인터페이스(140) 등의 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150) 등의 분리형 인터페이스에 의해 시스템 버스(121)에 접속된다.
상술하고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 운영 체제(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 운영 체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 동등물임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 키보드(162) 및 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 등의 입력 장치를 통해 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시하지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터 페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터 외에도, 컴퓨터는 또한 출력 주변 인터페이스(190)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180) 등의 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 다른 공통 네트워크 노드일 수 있으며, 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 일반적으로 컴퓨터(110)에 관하여 상술한 많은 소자 또는 모든 소자를 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크, 인트라넷, 및 인터넷에서 공통적이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하는 모뎀(172) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 한정되지는 않지만, 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축 하는 다른 수단이 사용될 수 있다.
주소 변환을 이용한 메모리 액세스
컴퓨터 시스템 내의 메모리(예를 들면, 도 1에 도시된 RAM(132))는 각 바이트마다 물리적 주소를 갖는다. 이에 따라, 메모리를 구성하는 바이트들은 번호가 매겨진 것으로 보일 수 있으며 여기서 각 바이트는 자신의 번호에 의해 명백하게 식별될 수 있다. 이 경우, 이 번호는 물리적 주소를 형성한다. 예를 들면, 256 바이트 메모리에서, 이 바이트들은 0에서 228-1 까지의 물리적 주소를 가질 수 있다. 그러나, 현대의 컴퓨터 시스템에서, 메모리는 일반적으로 자신의 물리적 주소에 의해 액세스되지 않으며, 오히려 가상 주소에 의해 액세스된다. 물리적 주소를 가상 주소로 변환하는데에 주소 변환 맵이 이용된다.
도 2는 주소 변환 맵과, 실제의 컴퓨터 시스템에서의 사용의 예를 나타낸 도면이다. 도 2에 도시된 이 예시적인 주소 변환 맵은 "페이징(paging)" 구조이며, 여기서 메모리는 "페이지"라 불리는 블럭들에 할당되어 있다. 도 2는 INTEL x86 프로세서 상에서 이용되는 페이징 구조를 나타낸다.
도 2에서, 페이지 디렉토리(202)는 페이지 테이블 204(1), 204(2), 204(3)과 같은 페이지 테이블들(즉, 페이지 테이블들의 물리적 베이스 주소)들에 대한 포인터들의 어레이를 포함한다. 그리고, 각 페이지 테이블은 페이지들(예를 들면, 페이지 206(1), 206(2), 206(3), 206(4))의 베이스 주소들에 대한 포인터들의 어레이를 포함하고 또한 전술한 바와 같은, 판독 전용/판독-기록 속성과 같은 정보, 존재/존재하지 않음(present/non-present) 비트 등을 포함할 수도 있다. 페이지들은 RAM(132)에서 고정된 길이를 갖는 부분들이다. 또한, 전형적으로 페이지 디렉토리 및 페이지 테이블들도 RAM(132)에 저장된다. 특정 페이지의 위치 결정을 위해 페이지 디렉토리(레벨 1) 및 페이지 테이블(레벨 2) 양쪽 모두를 거칠 필요가 있기 때문에 도 2에 도시된 페이징 구조는 2 레벨 페이징 구조이다. 본 기술 분야에 통상의 지식을 가진 자라면, 임의의 수의 레벨을 갖는 페이징 구조를 설계하는 것이 가능하며 본 발명은 그러한 모든 페이징 구조에 적용될 수 있음을 알 것이다. 또한, INTEL x86 프로세서는 전형적으로 도 2에 도시된 2 레벨 페이징 구조를 사용하지만 1 레벨 또는 3 레벨 페이징 구조를 이용하도록 구성될 수도 있음이 본 기술 분야에 공지되어 있다.
도 2의 페이징 구조에서, 하나의 페이지 상의 임의의 바이트는, 페이지 디렉토리 오프셋(211), 페이지 테이블 오프셋(212), 및 페이지 오프셋(213)을 포함하는 가상 주소(210)에 의해 식별될 수 있다. 이에 따라, 물리적 주소의 위치 결정을 위해, 메모리 관리 유닛(MMU)(220)은 페이지 디렉토리 오프셋(211)을 이용하여 페이지 디렉토리(202) 내에 특정 엔트리의 위치를 결정한다. 이 엔트리는 페이지 테이블의 물리적 베이스 주소이며, 이에 따라 MMU(220)는 페이지 테이블중 하나(예를 들면, 페이지 테이블 204(1))의 위치 결정을 위해 이 주소를 디레퍼런스(dereference)한다. 그 후, MMU(220)는 페이지 테이블 오프셋(212)을 식별된 페이지 테이블로의 인덱스로서 사용하여 그 오프셋에서 발견되는 엔트리를 검색한다. 이 엔트리는 페이지(예를 들면, 페이지 206(1))의 물리적 베이스 주소 가며, 이에 따라 MMU는 페이지 오프셋(213)을 식별된 페이지의 베이스 주소에 추가하여 물리적 메모리의 특정 바이트의 위치 결정을 행한다. MMU(220)는 또한, 도 3과 관련하여 이하에 설명하는 바와 같이, 페이지가 판독 전용 또는 판독-기록으로 표시되어 있는지 여부와, 그 페이지가 존재하거나 존재하지 않는 것으로 표시되어 있는지 여부 등과 같은 정보를 고려하도록 구성될 수도 있다.
도 2의 페이징 구조는 또한 페이지 디렉토리로의 포인터를 포함하는 저장 장소(201)를 포함한다. MMU(220)는, 가상 주소(210)를 변환하기 시작할 때 이 포인터를 이용하여 페이지 디렉토리(202)의 위치를 결정한다. INTEL x86 프로세서의 예에서, 저장 장소(201)는 CR3로 명칭된 레지스터에 대응하는데, 즉 INTEL x86 프로세서 상에서, 레지스터 CR3는 현재의 컨텍스트에 대한 페이지 디렉토리의 물리적 주소를 저장한다. 이에 따라, 다른 변환 테이블 세트(즉, 페이지 디렉토리 및 페이지 테이블의 두 개 이상의 세트)를 구축하고, 새로운 페이지 디렉토리의 베이스 주소를 저장 장소(201)에 단순히 기입하는 것으로도 어떤 변환 테이블의 세트가 적용되는지를 변경하는 것이 가능하다. 이 기술의 통상적인 사용 방법중 하나는, 컴퓨터 상에서 동작하는 각 프로세스에 대해 자기 자신의 페이지 디렉토리 및 페이지 테이블들을 갖게 하는 것인데, 여기서 "컨텍스트 스위치"(즉, 무엇보다도 가상 메모리 시스템이 새로운 프로세스의 주소 스페이스에 대해 포인트하도록 하는 동작)가, 새로운 프로세스의 페이지 디렉토리의 베이스 주소를 저장 장소(201)에 기입함으로써 수행된다. 각 프로세스가 자기 자신의 페이지 디렉토리를 갖는 경우, 현재 가동중인 프로세스의 아이덴티티는 어떤 값이 저장 장소(201)에 로드되는지를 결정 한다.
페이지들에 대한 포인터를 포함하는 것 외에도, 페이지 테이블들 및 페이지 디렉토리들은 또한 그 페이지들에 대한 "속성"을 포함할 수도 있다. 도 3은, 포인터 및 속성 양쪽 모두를 포함하는 예시적인 페이지 테이블 204(1)을 상세하게 나타낸 도면이다. 페이지 테이블 204(1) 내의 각 엔트리는 특정 페이지의 주소(302)와, 엔트리에 의해 포인트되는 페이지가 "판독 전용"인지 여부를 나타내는 비트(304)와, 엔트리에 의해 포인트되는 페이지가 "존재"하는지 여부를 나타내는 비트(306)를 포함한다. 이에 따라, 페이지 테이블 204(1) 내의 제1 엔트리(301)가 페이지 206(1)(도 2에 도시됨)에 대해 포인트할 경우, 비트(304)는, 0 또는 1로 세트되어 있는지 여부에 따라 MMU(220)(도 2에 도시됨)가 페이지 206(1)가 판독 및 기록 양쪽, 혹은 판독만 되도록 허용하는지 여부를 나타낸다. 마찬가지로, 비트(306)는, 페이지 206(1)가 메모리 내에 존재하는지 여부를 나타낸다. (예를 들어 메모리 내의 다른 페이지들에 대한 공간 확보를 위해 페이지 206(1)의 컨텐츠가 디스크로 이동된 경우 비트(306)는 0으로 세트되어서 페이지 206(1)가 존재하지 않음을 나타낼 수도 있다.) 그 밖의 속성들도 또한 페이지 테이블 204(1) 내에 저장될 수 있다.
메모리 액세스 제어를 위한 주소 변환 맵의 이용
메모리가 가상 주소에 의해 액세스되는 시스템에서, 가상 주소가 소정의 물리적 주소로 변환되지 않도록 주소 변환 맵이 구성되는 경우, 그 물리적 주소에 의해 표시되는 메모리는 액세스가능하지 않다는 경험적 지식(observation)에 기초하 여 메모리에 대한 액세스를 제한하는 시스템을 구현할 수 있다. 예를 들면, 도 2와 관련하여 전술한 페이징 구조에서, 메모리의 소정의 페이지(예를 들면, 페이지 206(1))는, 맵을 통해 그 페이지에 도달하는 경로가 없도록 함으로써 액세스되지 않도록 될 수 있다. 이러한 경로가 없을 때, 그 페이지로 변환될 수 있는 가상 주소(210)가 없을 것이다. 모든 메모리 액세스가 가상 주소에 의해 행해지는 시스템에서, 메모리의 소정의 페이지(또는 그 밖의 부분)로의 가상 주소를 부정하도록 주소 변환 맵에 대해 제어함으로써 효율적으로 메모리의 그 부분이 액세스되지 않도록 된다. 메모리의 소정의 물리적 주소 지정을 허용하는 시스템에서도, 메모리는, 물리적 주소에 기초한 액세스 요구에 대한 제어로 주소 변환 맵에 대한 제어를 보충함으로써 액세스가능하지 않게 될 수 있다.
메모리에 대한 액세스를 제어하기 위해 주소 변환 맵의 컨텐츠를 제어하는 기술은 이하와 같이 공식으로 기술될 수 있다. 여기서, S는 잠재적으로 메모리에 액세스할 수 있는 소스의 집합인 것으로 가정한다. 또한 P는 메모리의 어떤 부분이 어떤 소스에 의해 액세스될 수 있는지를 정의하는 정책인 것으로 가정한다. 이에 따라, s∈S가 소스인 경우, MP(s)는 주소 변환 맵을 통해 소스 s에 액세스할 수 있는 메모리 부분(예를 들면, 가상 주소를 갖는 메모리 장소의 집합)을 나타내며, NA(P, s)는, 소스 s가 정책 P 하에서 액세스가 허용되지 않는 메모리의 부분들을 나타낸다. (각 프로세스가 자기 자신의 주소 변환 맵을 갖는 경우, 소스의 개념이 프로세스의 예보다 일반화된 것으로 이해될지라도, 각 프로세스는 서로 다른 "소스"로서 보여질 수 있다.) 이에 따라, 정책의 규약은 NA(P,s) ∩MP(s) = Φ라는 조건이 만족되는 한 보장될 수 있다. 이 조건은 도 4에 도시되며, 여기서 메모리 장소의 집합으로서의 메모리(132)와, 주소 변환 맵핑을 통해 소스에 보여질 수 있는 메모리 장소의 집합으로서의 MP(s)와, 소스 s가 정책 P 하에서 액세스되지 않는 메모리 장소의 집합으로서의 NA(P,s)가 도시된다. 소스 s가 주소 변환 맵핑을 통해 주소 지정할 수 있는 장소(MP(s))중 어느 것도, 소스 s가 정책 P 하에서 액세스되는 것이 허용되지 않는 메모리 장소의 집합에 포함되지 않기 때문에, 도 4에 도시된 조건은 소스 s에 따라 정책 P를 효율적으로 규약한다.
이에 따라, 메모리(132)의 부분들에 대한 소스 s의 액세스를 제어하는 문제는 몇몇 예시적인 상황에서 감소되어 도 4에 도시된 조건이 항상 진실(true)인 것을 보장하게 된다. 이 문제를 해결하기 위한 하나의 해결책은, 주소 변환 맵핑, 정책, 또는 현재의 소스를 변경할 가능성을 갖는 임의의 동작(예를 들면, 메모리 기록, CR3 레지스터의 로드 등)을 평가하는 것이다. 본 발명은 이러한 평가가 효율적으로 되도록 해주는 기술을 제공한다.
도 4에 도시된 조건은 메모리 액세스 제어를 구현하는 데에 이용될 수 있는 하나의 조건의 예에 지나지 않음을 알 것이다. 도 4의 테마에 대한 그 밖의 다른 변수, 예를 들면, 주소 변환 맵에 포함되는 메모리 장소의 집합, 소스 s가 액세스는 가능하지만 기록(또는 판독)이 허용되지 않는 메모리 장소의 집합 등을 포함하는 것들이 가능하다. 그러나, 메모리 액세스 제어에 대한 조건들은 전형적으로 두 개 이상의 메모리 장소의 집합의 여집합(non-intersection)을 검증하는 것을 포함함을 알 것이다.
또한, MP(s)가 소스 s에게 보여질 수 있는 "맵핑된 페이지"인 것으로 보여질 수 있지만, 메모리 액세스 제어의 개념은 페이징 구조를 사용하는 시스템에 한정되지 않음을 알아야 한다. 전형적인 구현시, 어떤 메모리 장소가 소스가 정책 하에서 기록이 허용되는지, 혹은 어떤 메모리 장소가 소스로 맵핑되는지에 대한 결정이 페이지 마다(per page basis) 행해진다. 그러나, 본 발명은 메모리가 페이지마다 할당되거나, 메모리에 대한 액세스가 페이지 마다 허용 또는 제한되는 경우에 한정되는 것은 아니다.
액세스 변환을 위한 일반화된 모델
도 2에 도시되고 전술된 주소 변환 맵은 방향성을 갖는 라벨형 그래프(directed labeled graph)의 모델을 이용하여 일반화될 수 있다. 이하에서는 주소 변환 맵의 소정의 유형에 대한 일반화된 모델에 대해 설명한다.
이 모델에서, B는 기본 집합이며, L은 하나의 알파벳이다. B 및 L이 주어질 경우, G=(V, E)가 에지 라벨을 갖는 방향성 그래프이며 이에 따라 V⊆B 및 E⊆{(v,w,l):v∈V, w∈V, l∈L}이 된다. E의 임의의 구성요소는 라벨 l을 갖는, 버텍스(vertex) v로부터 버텍스 w까지의 방향성을 갖는 에지로서 해석될 수 있다. 이 버텍스들도 또한 라벨될 수 있다.
도 5는 전술한 모델에 따른 그래프를 나타낸 도면이다. 그래프(500)는 버텍스들(502, 504, 506, 508, 510, 512)을 포함한다. 이들 버텍스들은 도시된 방식으로 에지들(522, 524, 526, 528, 530, 532, 534)에 의해 연결된다. 각 에지는 하나의 알파벳으로부터의 하나의 심볼로 라벨링된다. 이 예에서, 알파벳은 심볼들, A, B 및 C를 포함한다. 이에 따라, 에지들(522, 524)은 심볼 A로 라벨되고, 에지들(526, 528, 532)은 심볼 B로 라벨되고, 에지들(530, 534)은 심볼 C로 라벨된다. 또한, 그래프(500)에서 버텍스들이 아닌 기본 집합의 구성요소들(예를 들면, 구성요소(550, 552))이 존재할 수도 있다.
그래프(500)의 컴포넌트들이 도 2에 도시된 주소 변환 맵의 소정의 컴포넌트들에 대응함을 알아야 한다. 예를 들면, 도 2에서 페이지 디렉토리(202), 페이지 테이블(204(1)-204(3)), 및 페이지(206(1)-206(4))는 그래프에서 버텍스들로서 보여질 수 있다. 이들 버텍스들을 연결하는 포인터들(예를 들면, 페이지 테이블 204(1) 내의 엔트리로부터 페이지들 206(1) 및 206(2)로의 포인터들)은 그래프의 에지들로서 보여질 수 있다. 그리고, 도 3과 관련하여, 엔트리의 속성들(304, 306)(예를 들면, 판독 전용 및 존재 비트들)이 에지에 대한 라벨로서 보여질 수 있다. 따라서, "알파벳"은 속성들과 치환가능한 집합이다. (두 개의 바이너리 속성들이 존재하는 도 3의 예에서, 4 개의 가능한 조합이 존재하며 이에 따라 알파벳으로 된 4개의 심볼들이 존재한다.) 속성들이 사용되지 않는 경우에, 알파벳은 "닐(nil)" 심볼로 구성될 수 있다. 또한, 메모리의 할당되지 않은 페이지들은 입력되는 에지들을 갖지 않는 기본 집합의 구성요소들에 대응한다.
전술한 바와 같은 그래프의 모델 내에서, "상태"를 정의하는 것이 가능하다. B 및 L이 주어질 경우, "상태"는 쌍(R,G)이며, 여기서 G는 전술한 바와 같이 정의된 방향성을 갖는 라벨형 그래프이며 R⊆V는 G의 버텍스들의 집합이다. R은 "루트(root) 버텍스들"의 집합이다. 루트 버텍스들은, 그래프에 대한 루트로서 합 법적으로 기능할 수 있는 기본 집합 내의 버텍스들의 집합을 나타낸다. 도 2의 예에서, 합법적인 디렉토리의 집합(즉, INTEL x86 프로세서 상의 CR3 레지스터와 같은 저장 장소(201)에 로드되도록 허용된 값들)은 "루트 버텍스들"의 집합이다. B 및 L이 주어질 경우, S는 모든 상태들의 집합이다.
전술한 바와 같이 정의된 모델에 따르면, 주소 변환 메카니즘(address translation mechanism; ATM)은 이하와 같이 모델링될 수 있다.
- 버텍스들의 기본 집합 B
- 알파벳 L(비어 있을 가능성이 있음)
- 초기 상태 s0 ∈ S(S는 하나의 상태임)
- 상태 천이 룰들의 집합(비어 있을 가능성이 있음)
- 주소 변환 기능
- 글로벌 플래그
상태 천이 룰들은 ATM을 하나의 상태에서 다른 상태로 변경한다. 이에 따라, 상태 천이 룰들의 집합을, ri:S →S(여기서, i는 소정의 인덱스)로 정의하는 것이 가능하며, 이는 ATM의 현재 상태를 변경한다. ATM은 이하의 천이 룰들의 유형들중 어느 것이나 가질 수 있다.
- G의 에지들의 변경(추가, 제거, 다시 라벨링)
- G의 버텍스들을 추가하거나 제거함
- 루트 집합 R을 변경함
예를 들면, 도 2 및 도 3의 예에서, 하나의 페이지에 대한 하나의 포인터를 제거하거나 하나의 페이지의 속성을 변경하는 것은 그래프의 에지의 변경에 대응한다. 새로운 페이지 디렉토리들, 새로운 페이지 테이블들, 또는 새로운 데이터 페이지들을 추가하는 것은 버텍스를 추가하거나 제거하는 것에 대응한다. 베이스 주소가 저장 장소(201)(예를 들면, 레지스터 CR3)에 로드될 수 있는 새로운 페이지 디렉토리를 정의하는 것은 루트 집합의 변경에 대응한다. 본질적으로, 현재의 상태는, 주소 변환 수단에 의해 어떤 메모리 장소들이 잠재적으로 액세스가능하지를 정의한다.
전술한 바와 같이, 메모리에 대한 액세스는 주소 변환 맵에 대한 조건을 제한함으로써 제어될 수도 있으며 이에 따라 주소 변환 맵은, 소스가 정책 하에서 액세스가 허용되지 않는 메모리의 부분에 대한 임의의 가상 주소를 소스에 노출시키지 않는다. 또한, 이전에 알려진 바와 같이, 이들 조건들의 계속되는 존재는, 이 조건의 진실(truth)에 잠재적으로 영향을 미칠 수도 있는 동작이 수행될 때 평가될 수 있다. 메모리 액세스 제어에 대한 이 기술을 보는 방식중 하나는, ATM의 적법한 상태가 S의 소정의 부분 집합 T로 제한되거나, 현재의 상태에 대한 소정의 속성(또는 술어(predicate)) P가 항상 진실이어야 한다는 것이다.
소정의 속성 P(이는 전술한 정책 P와는 다른 것임)가 주어질 경우, 상태를 s로부터 ri(s)로 변경할 수도 있는 조치(소정의 i에 대한 ri의 실행)를 수행하기 위한 요구는, P(ri(s))가 진실인지 여부, 즉 ri의 실행으로부터 발생될 새로운(제안 된) 상태가 속성 P를 가지게 될지 여부를 판정하도록 평가될 수 있다. P의 진실이, 메모리 액세스에 대한 제한이 침해되지 않을 것을 암시하는 경우, P(ri(s))의 진실은, ri의 실행에 의해 야기된 상태 변화가 진행되도록 허용되어야 함을 의미한다. 이와 다른 경우, 이 동작은 진행되도록 허용되어서는 안된다.
모든 메모리 기록은 ATM의 상태를 잠재적으로 변경할 수도 있음을 알아야 한다. 이에 따라, 이하와 같은 두 개의 규약이 이루어져야 한다.
- 알고리즘은 P(s)를 연산해야 한다(빈번할 가능성이 있음).
- 전형적으로, 새로운 상태 s'는 오래된 상태 s로부터 얻어진다.
오래된 상태가 속성 P를 갖고 있었는 경우, P(s)를 가정하고 그 생성된 s'로의 변경(의 제한된 수)가 P의 침해로 되는지 여부만을 분석함으로써 P(s')를 결정하는 복잡성을 감소시키는 것이 가능할 수도 있다.
본 발명은 P의 진실이 효율적으로 평가되도록 허용하는 기술을 제공한다. 이하에 기술하는 바와 같이, 많은 경우에 있어서, 상태 천이 하에서 P의 진실을 확인하기 위해 어떤 테스트들이 수행될 필요가 있는지와 어떤 테스트들을 피할 수 있는지를 결정하는데에 후에 이용될 수 있는, ATM의 현재의 상태에 관한 소정의 대표적인 정보를 저장(혹은 캐싱)함으로써 이 효율성이 획득될 수 있다.
예시적인 속성 등급들
속성 P의 유형중 하나는, 버텍스들의 집합으로 표현될 수 있는 속성이다. 예를 들면, 도 4에 도시되고 전술된 조건은 본질적으로, MP(s) 및 NA(P,s)의 집합 들이 서로 교차하지 않는 속성이다. 버텍스들의 집합들과, 이들 집합들간의 관계로 표현될 수 있는 많은 속성들은 하나의 집합 내에 버텍스들의 아이덴티티를 저장(또는 캐싱)함으로써 효율적으로 구현될 수 있다.
ATM이 메모리 액세스 제어 조건을 만족시키는 상태에 있는지를 평가하는데에 유용할 수 있는 집합들의 예는 이하와 같다.
1. 루트 버텍스들로부터 거리 k에 있는 버텍스들의 집합. 공식으로 나타내면, S가 버텍스들의 집합이고 w가 버텍스일 경우, dk(S,w)가, S 내의 소정의 버텍스으로부터 버텍스 w까지의 길이 k의 (방향성을 갖는) 경로가 존재한다는 제어문(statement)을 나타내는 경우, Sd = {v ∈ V: dk(S,v)} 이다. 그 후, S가 루트 버텍스일 경우, Sd는 루트로부터의 거리 d에서의 페이지들의 집합을 나타낸다. 예를 들면, 버텍스(502)가 그래프(500)의 루트일 경우, 루트 버텍스로부터 거리 1을 갖는 버텍스의 집합은 버텍스들(502, 510)로 구성되는데, 이는 이들 버텍스들중 하나가 하나의 에지를 가로질러 루트로부터 도달할 수 있기 때문이다. 도 2에 도시된 페이지 맵을 참조하면, 페이지 디렉토리(202)는 루트로부터 거리 1이며, 페이지 테이블 204(1) 내지 204(3)은 루트로부터 거리 2이다. 이에 따라, 도 2의 예에서, 페이지 디렉토리 및 페이지 테이블의 주소들은, 각각 루트로부터 거리 1 및 2인 페이지들의 아이덴티티를 저장함으로써 캐싱될 수 있다.
2. 에지 라벨들에 의해 결정되는 집합들. 예를 들어, 도 5를 참조하면, 인-에지(in-edge) 라벨된 "A"를 갖는 버텍스들의 집합은 버텍스들(504, 510)로 구성되 고 인-에지 라벨된 "B"를 갖는 버텍스들의 집합은 버텍스들(504, 506, 512)로 구성된다. 속성들이 에지 라벨들에 대응하는 도 2의 페이지 맵에서, 하나의 집합은 소정의 속성을 갖는 페이지들로서 정의될 수도 있다. 예를 들면, 이는, 판독 전용으로 표시된 페이지들의 집합을 정의(및 캐싱)하는데에 유용할 수도 있으며 이 경우 판독 전용 비트가 "온(on)"(도 3에 도시된 참조 번호 304)인 페이지들의 집합이 정의될 수 있다. (하나의 페이지가 하나의 페이지 맵에서 한번 이상 참조되는 것이 가능한데, 이 경우 하나의 페이지에 대한 서로 다른 참조들은 서로 다르게 자신의 판독 전용 속성 집합을 가질 수도 있으며; 이 경우, 이 집합의 정의는 충돌을 해결할 수도 있는데, 예를 들면, 그 페이지에 대한 적어도 하나의 참조가 판독 전용 속성을 가지는 경우, 혹은 그 페이지에 대한 모든 참조가 판독 전용 속성을 가지는 경우 등에 그 페이지가 그 집합 내에 있는 것이다.
국부적 속성 및 국부적이 아닌 속성들간에 구별이 이루어질 수 있다. 국부적 특성은 소정의 버텍스 상으로 발생되는 에지들로부터 계산될 수 있다. 즉, 버텍스 v가 v로 발생되는 에지들만으로부터의 속성 P를 가지는지를 결정하는 것이 가능한 경우, P는 국부적인 것으로 된다. 이와 다른 경우, P는 국부적이 아니다. 국부적 속성의 예는, "버텍스는 판독-기록으로 라벨된 인-에지를 갖는다"라는 것이다. 국부적이 아닌 속성의 예는, "(x86 머신 상의) 페이지는 판독-기록 맵핑을 갖는다"라는 것이다.
3. 몇몇 속성을 갖는 k개의 에지들의 타겟인 버텍스들의 집합. 공식으로 나타내면, P, Q가 술어이고 w가 버텍스인 경우 이하와 같이 된다.
In-degP,Q(w) = |{v∈V:P(v) 및 (v,w,l)∈E 및 Q(l)}|
하나의 집합은 소정의 인-디그리(in-degree)를 갖는 버텍스들의 집합으로 정의될 수도 있다.
{v∈V: In-degP,Q(v) = k}
유사하게, 집합들은 불균등하게 정의될 수 있는데, 예로써, 소정의 속성을 갖는 k개 이상의(혹은 k개보다 적은) 에지들의 타겟인 버텍스들의 집합을 들 수 있다.
예를 들면, 도 5를 참조하면, 적어도 하나의 "C" 라벨된 인-에지를 갖는 버텍스들의 집합은 버텍스들(508, 512)로 구성된다. 도 2의 페이지 맵을 참조하면, 이 집합 정의 유형은 페이지들의 카테고리를 캐싱하는데에 사용될 수 있는데, 예로써, 두 개 이상의 맵핑을 갖는 페이지들의 집합, 정확히 하나의 판독 전용 맵핑을 갖는 페이지들의 집합 등을 들 수 있다.
4. 유사한 집합이 아웃-디그리(out-degree)에 기초하여 정의될 수도 있는데, 즉, 소정의 속성을 갖는 k개의 아웃 에지들(out edges)(혹은 k 개 이상의 아웃 에지들, 혹은 k개 보다 적은 아웃 에지들)을 갖는 버텍스들의 집합. 예를 들어, 도 5를 참조하면, 정확히 두 개의 "A" 라벨된 아웃 에지들을 갖는 버텍스들의 집합은 버텍스(502)로 구성된다. 도 2는 유사한 예들을 포함하는데, 예를 들면 적어도 3개의 아웃 에지들(즉, 다른 페이지들에 대한 참조)을 갖는 페이지들의 집합이 페이지 디렉토리(202)를 포함한다.
이들 집합들은 통상의 집합 연산(예를 들면, 합집합, 교집합, 여집합(complement), 차집합(set difference))을 통해 결합될 수 있다. 예를 들면, S2가 루트로부터 거리 2에 있는 페이지들의 집합인 경우, x86 CPU의 소정의 구성 장치 내의 판독-기록 맵핑들을 갖는 페이지들의 집합은 이하와 같이 표현될 수 있다.
({x:x는 큰 페이지의 인-에지를 가짐} 교집합 {x:x는 r/w 인-에지를 가짐} 교집합 S2) 합집합 ({x:x는 작은 페이지의 인 에지를 가짐} 교집합 {x:x는 r/w 맵핑을 가짐} 교집합 S3)
일반적(naive) 알고리즘은 모든 버텍스 v를 통과하고, 그 집합에 속하는지를 테스트함으로써 각각의 상태 변화 시에 이 집합들을 재계산할 수도 있다. 이것은 비용이 많이 들 수 있다. 알고리즘이, 상술한 유형들의 집합들로 표현될 수 있는 상태 속성들을 계산하면, 알고리즘은 앞서 설명된 바와 같은 캐싱 스킴들(caching schemes)을 이용할 수 있다.
캐싱 스킴들:
상태 변화들의 효율적인 계산용으로 데이터를 캐싱하는데에 다양한 스킴들이 이용될 수 있다. 실례의 캐싱 스킴들이 아래에 설명된다.
스킴 1: 단순 집합 캐싱
이 스킴은 집합을 명시적으로 계산하여, 이를 저장(캐싱)한다. 각각의 후속되는 상태 변화 시에, 알고리즘은 캐시를 갱신한다. 일 예에서, 캐시는 다음과 같 은 액세스 연산들에 노출되어 유지될 수 있다.
-Init() -- 캐시를 빈 집합와 같은 소정의 잘 정의된 값으로 초기화한다.
-Add(S) -- 캐시에 S(단일 원소 혹은 원소들의 집합)를 추가한다.
-Remove(S) -- 캐시로부터 S(단일 원소 혹은 원소들의 집합)를 제거한다.
-Showcache(S) -- 현재 캐시되어 있는 모든 원소들을 리턴한다.
캐시는 (예를 들어 효율을 높이기 위해) 추가적인 액세스 연산들에 노출될 수도 있다.
이러한 캐시를 나타내기 위한 방법중 하나는 비트 벡터를 통하는 것이다. 예를 들어, 시스템이 216개의 물리적 메모리 페이지를 갖는다면, 216 비트 길이(즉, 8Kbytes)인 벡터가 각 페이지에 대한 부울 값을 나타낼 수 있다. n번째 비트는, n번째 페이지가 정의된 집합 내에 있는지 여부에 따라 온 또는 오프이다. 따라서, 정의된 페이지들 집합이 주어지면, 집합 내의 멤버쉽은 페이지당 한 비트의 비용으로 캐시될 수 있다. 비트별 "or" 및 "and" 연산자를 이용함으로써, 합집합 및 교집합과 같은 집합 연산들이 이러한 유형의 표현들로 수행되기에 매우 간편함을 알 것이다.
스킴 2: 포함 집합, 부분 집합
메모리 액세스 제어를 수행하는 기초 알고리즘의 상세 내역들에 따라, 캐시는 정확한 타겟 집합을 포함할 필요가 없을 수도 있다. 예를 들어, 캐시는 타겟 집합의 소정의 포함 집합이나 소정의 부분 집합을 캐시하는 것으로 충분할 수 있 다. 이것은 캐시를 유지하는 비용을 감소시킬 수 있다. 도 3의 예에서, 메모리 액세스 제어 조건은 MPS(s)가 NA(P, s)와 교차하지 않는 것을 요구한다. 그러나, NA(P, s)의 정확한 멤버들을 계산하는 것이 불편하거나 비실용적이면, NA(P, s)의 소정의 포함 집합을 계산하여 캐시하고, 그런 다음 MP(s)가 NA(P, s)의 계산된 포함 집합과 교차하지 않도록 하는 것이 가능할 수도 있다. 이 기술은 이와 다른 경우 허용될 수 있는 소정의 상태 변화들의 거절을 유발할 수 있으나, 허용되지 않아야 할 임의의 상태 변화들을 허용하지 않을 것이며, 이로써 메모리 액세스 제어에 대한 조건을 보존할 것이다.
스킴 3: 예약된 에지 표현
전형적으로, 에지들은 소스 버텍스 내에 혹은 그와 함께 저장된다. 예를 들어, 도 2에서, 페이지 디렉토리와 페이지 테이블들은 다른 페이지들에 대한 포인터들 및 그들의 속성들을 저장한다. 버텍스가 주어지면, 모든 나가는(outgoing) 에지들의 타겟들을 찾는 것은 전형적으로 쉽다. 이와 동시에, 모든 인-에지들의 소스들을 찾는 것은 전형적으로 비용이 많이 든다. 버텍스가 그의 인-에지들에 관한 정보를 아무 것도 전달하고 있지 않기 때문에, 모든 인-에지들을 찾기 위해 모든 에지들의 철저한 검색이 요구될 수도 있다.
알고리즘이 버텍스들의 인-에지들, 또는 이들로부터 구해질 수 있는 정보에 대한 고속 액세스를 필요로 하면, 각 버텍스의 인-에지들에 관한 정보를 그 버텍스과 어떻게든 관련된 데이터 구조 내에 명시적으로 저장하는 것이 바람직할 수 있다. 상기 "어떻게든 관련된"이란 용어는, 버텍스가 주어지면, 데이터 구조를 찾는 것(예를 들어, 어레이 검색)이 쉽다는 것을 의미한다.
가장 극단적인 경우에, 데이터 구조는 모든 인-에지들을 저장한다. 이 경우에, 데이터 구조는 상기에서 정의된 것과 같은, 원소들이 에지들인 캐시일 수 있다. (또한, 캐시들은 집합들 또는 다중 집합들을 저장할 수 있다.) 이 구조가 저장되는 저장 장치는 버텍스의 인-에지들의 개수에 비례하고, 이러한 유형의 구조들이 모든 버텍스들에 대해 유지된다면, 총 저장 장치는 그래프 내의 에지들의 개수에 비례한다.
종종 적은 용량의 저장 장치를 필요로 할 수 있는 유도된 정보를 저장하는 것으로 충분하다. 예를 들어, 알고리즘은 각 버텍스의 인-에지들의 개수만을 저장할 수 있다. 이 경우, 캐시는 참조 카운터로서 구현될 수 있다. 참조 카운터는 전형적으로 다음과 같은 액세스 연산들에 노출된다.
-Init() -- 캐시를 0과 같은 소정의 잘 정의된 값으로 초기화한다.
-Increment()
-Decrement()
-GetValue()
참조 카운터들 (혹은 그와 유사한 데이터 구조들)의 통상적인 이용 방법중 하나는 집합들을 구성하는 것이다. 예를 들어, 예시적인 메모리 액세스 제어 알고리즘은 인-에지들이 없는 버텍스들의 집합, 즉 참조 카운트가 0인 버텍스들의 집합을 계산해야 할 수도 있다. 참조 카운터들의 콜렉션은 다음과 같이 이 집합의 캐시(스킴 1)를 제어할 수 있다. 즉, 참조 카운터의 값이 바뀔 때마다, 알고리즘은 카운터가 영으로 되었는지를 테스트한다. 그렇다면, 알고리즘은 버텍스를 캐시에 추가한다. 마찬가지로, 알고리즘은 0인 참조 카운터가 다른 값을 얻는 이벤트가 있는지 감시한다. 이 이벤트에서, 알고리즘은 버텍스를 캐시로부터 제거한다.
다음은 캐싱을 이용하는 예들이다.
- d=1, 2, 3에 대한 Sd의 포함 집합 Sd'의 캐싱
- d=2, 3에 대해: 캐시는 (a) 명시적으로 저장되거나, 혹은 (b) 참조 카운터에 의해 구동될 수 있음
- 국부적인 라벨 속성을 계산: "인-에지들의 판독-기록을 가짐" 및 "인-에지들의 많고/적은 페이지를 가짐"
- 국부적이 아닌 속성들을 계산: "판독-기록 맵핑을 가짐"
- S2 내의 버텍스들의 인-에지들의 판독-기록의 횟수에 대해 참조 카운터를 이용.
이 정보는 국부적이 아닌 속성 "판독-기록 맵핑을 가짐"의 계산 속도를 증가시키기 위해 사용될 수 있다.
저장된 정보를 이용한 메모리 액세스 제어를 위한 예시적인 프로세스
도 6은 본 명세서에 개시된 기술을 이용하여, 메모리 액세스 제어를 수행하기 위한 예시적인 프로세스를 나타낸다.
처음에, 메모리를 액세스하기 위한 요청이 수신된다(단계 602). 액세스 요청이 수신될 때, 메모리 액세스 제어 시스템은 요청을 평가하여 이 요청의 실행이 메모리 액세스를 관장하는 정책에 따르는 것인지의 여부를 판정한다(단계 604). 메모리 액세스 정책들의 예들은 위에서 기술되었다. 한가지 예로서, 정책은 소정의 페이지들을 소스들의 집합에 대한 출입 금지 영역(off-limits)으로서 정의하고, 정책은 출입 금지 영역 페이지들 중 하나에 대해, 생성이나, 그 페이지를 액세스하도록 허용되지 않은 소스들 중 하나에게 보여질 수도 있는 맵핑을 초래하게 되는 임의의 액세스 요청을 금지할 수 있다. 이 요청의 평가는 저장되거나 캐싱된 캐시된 정보에 의해 도움을 받을 수 있다(단계 606). 이 저장되거나 캐싱된 정보는 예를 들면 정당한 페이지 디렉토리들을 포함하는 것으로 알려진 페이지들의 집합인 페이지 맵(들)에 관한 정보를 포함할 수 있다.
요청을 실행하는 것이 정책의 준수를 유지할 것으로 판정되면(단계 608), 이 요청은 처리되도록 허용된다(단계 612). 그렇지 않으면, 이 요청은 차단되거나, 또는 정책을 위반하지 않을 형태로 변경된다(단계 610). 정책을 위반하지 않는 형태로 요청을 변경하는 한가지 예는 다음과 같다. 요청이, 출입 금지 영역 페이지에 맵핑을 초래하게 될, 페이지 테이블에 엔트리를 기록하고자 하면, 엔트리는 기록되지만 페이지의 "존재" 비트가 턴오프되도록 요청이 변경될 수 있다. 따라서, 새롭게 맵핑된 페이지를 액세스하기 위한 임의의 미래의 시도는 예외를 발생시키게 되어,예외 핸들러가 출입 금지 페이지에 대한 액세스를 궁극적으로 방해할 수 있다. 이러한 방식으로(혹은 소정의 다른 방식으로) 요청이 변경되면, 변경된 요청이 처리되도록 허용된다(단계 614). 변경되거나 변경되지 않은 요청이 수행된 후, 요청의 실행이 캐싱된 정보에 대한 변경을 유발한다면, 캐시는 갱신될 수 있다(단 계 616).
상술한 예들은 단순히 설명을 목적으로 제공되었고, 본 발명을 제한하려고 해석되어서는 안된다. 본 발명은 다양한 실시예들을 참조하여 설명되었으나, 본 명세서에서 사용된 단어들은 설명 및 예시의 단어들일 뿐 제한하는 단어들이 아니다. 또한, 비록 본 발명은 특정한 수단, 물질, 및 실시예들을 참조하여 설명되었으나, 본 발명은 본 명세서에 개시된 특정물들로만 제한되는 것은 아니다. 오히려, 본 발명은 첨부된 청구범위의 범위 내에 있는 기능적으로 등가적인 모든 구조, 방법, 및 용도들까지 확장된다. 본 명세서의 교시를 이해하는 당업자는 본 발명에 대해 다양한 변형을 할 수 있을 것이고, 이러한 변형들은 본 발명의 범위 및 사상을 벗어나지 않고서 이루어질 것이다.
본 발명에 따르면 소정의 메모리 액세스 제어 알고리즘들이 효율적으로 구현될 수 있도록 해주는 메카니즘들이 제공된다.

Claims (45)

  1. 메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체로서, 상기 방법은,
    메모리의 일부분을 액세스하기 위한 요청을 수신하는 단계 - 상기 요청은 주소 변환 맵을 통해 변환가능한 식별자를 통해 액세스될 상기 메모리의 일부분을 식별함 -;
    상기 주소 변환 맵에 관한 캐싱된 정보를 기초로, 상기 요청의 실행이 상기 메모리에 대한 액세스를 제한하는 정책(policy)을 위반할지의 여부를 판정하는 단계 - 상기 캐싱된 정보는 미리 정해진 특성(a predetermined property)을 갖는 상기 주소 변환 맵의 페이지들의 집합을 식별하는 데이터를 포함함 - ;
    상기 요청의 실행이 상기 정책을 위반하지 않을 것이라면, 상기 요청에 따라 상기 메모리에의 액세스를 허용하는 단계; 및
    상기 요청의 실행이 상기 정책을 위반할 것이라면,
    상기 요청을 차단하거나, 또는
    상기 요청이 상기 정책을 위반하지 않도록 상기 요청을 변경하고 상기 변경한 요청을 수행하는 단계
    를 포함하는 컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서,
    상기 요청은 상기 메모리의 상기 일부분에 기록하기 위한 요청을 포함하는 컴퓨터 판독가능 저장 매체.
  3. 제1항에 있어서,
    상기 주소 변환 맵은 상기 메모리에 저장되고, 상기 요청은 상기 주소 변환 맵이 저장되어 있는 메모리의 일부분에 기록하기 위한 요청을 포함하는 컴퓨터 판독가능 저장 매체.
  4. 제1항에 있어서,
    상기 캐싱된 정보는 상기 주소 변환 맵의 루트(root)로부터 미리 정해진 거리에 위치된 상기 주소 변환 맵 내의 페이지들의 집합을 식별하는 데이터를 포함하는 컴퓨터 판독가능 저장 매체.
  5. 제1항에 있어서,
    상기 캐싱된 정보는 특정 페이지(a specified page)에 대한 다수의 참조(reference)들을 나타내는 데이터를 포함하는 컴퓨터 판독가능 저장 매체.
  6. 제1항에 있어서,
    상기 캐싱된 정보는 특정 페이지에 대한 다수의 참조들을 나타내는 데이터를 포함하고, 상기 참조들은 특정 속성(a specified attribute)을 갖는 컴퓨터 판독가능 저장 매체.
  7. 제1항에 있어서,
    상기 캐싱된 정보는 상기 주소 변환 맵 내의 특정 페이지가 참조하는 다수의 페이지들을 나타내는 데이터를 포함하는 컴퓨터 판독가능 저장 매체.
  8. 제1항에 있어서,
    상기 캐싱된 정보는 상기 주소 변환 맵 내의 특정 페이지가 참조하고, 상기 특정 페이지가 특정 속성을 부여(assign)하는 다수의 페이지들을 나타내는 데이터를 포함하는 컴퓨터 판독가능 저장 매체.
  9. 제1항에 있어서,
    상기 정책의 준수(compliance with said policy)는 집합 내의 페이지의 멤버쉽에 기초하여 판정되고, 상기 캐싱된 정보는 상기 집합의 진포함 집합(a proper superset of said set)을 포함하고, 상기 요청의 실행이 상기 정책을 위반할지의 여부를 판정하는 상기 단계는 상기 페이지가 상기 포함 집합의 멤버인지의 여부를 평가하는 단계를 포함하는 컴퓨터 판독가능 저장 매체.
  10. 제1항에 있어서,
    상기 정책의 준수는 집합 내의 페이지의 멤버쉽에 기초하여 판정되고, 상기 캐싱된 정보는 상기 집합의 진부분 집합(a proper subset of said set)을 포함하고, 상기 요청의 실행이 상기 정책을 위반할지의 여부를 판정하는 상기 단계는 상기 페이지가 상기 부분 집합의 멤버인지의 여부를 평가하는 단계를 포함하는 컴퓨터 판독가능 저장 매체.
  11. 주소 변환 맵을 통해 액세스가 제공되는 컴퓨터 메모리를 관리하는 방법으로서,
    상기 주소 변환 맵의 상태의 적어도 하나의 양상에 관한 정보를 저장하는 단계 - 저장된 정보는 미리 정해진 특성을 갖는 상기 주소 변환 맵의 페이지들의 집합을 식별하는 데이터를 포함함 - ;
    상기 컴퓨터 메모리를 액세스하기 위한 요청을 수신하는 단계;
    상기 저장된 정보에 적어도 부분적으로 기초하여, 상기 요청의 실행이 상기 컴퓨터 메모리에 대한 액세스를 제한하는 정책을 위반하지 않을 것이라고 판정하는 단계;
    상기 요청이 실행되도록 허용하는 단계; 및
    상기 요청의 실행 결과 발생하는 상기 주소 변환 맵의 상태를 반영하도록 상기 저장된 정보를 갱신하는 단계
    를 포함하는 컴퓨터 메모리 관리 방법.
  12. 제11항에 있어서,
    상기 요청은 상기 컴퓨터 메모리의 일부분에 기록하기 위한 요청을 포함하는 컴퓨터 메모리 관리 방법.
  13. 제11항에 있어서,
    상기 주소 변환 맵은 상기 컴퓨터 메모리에 저장되고, 상기 요청은 상기 주소 변환 맵이 저장되어 있는 메모리의 일부분에 기록하기 위한 요청을 포함하는 컴퓨터 메모리 관리 방법.
  14. 제11항에 있어서,
    상기 저장된 정보는 상기 주소 변환 맵의 루트로부터 미리 정해진 거리에 위치되어 있는 상기 주소 변환 맵 내의 페이지들의 집합을 식별하는 데이터를 포함하는 컴퓨터 메모리 관리 방법.
  15. 제11항에 있어서,
    상기 저장된 정보는 특정 페이지에 대한 다수의 참조들을 나타내는 데이터를 포함하는 컴퓨터 메모리 관리 방법.
  16. 제11항에 있어서,
    상기 저장된 정보는 특정 페이지에 대한 다수의 참조들을 나타내는 데이터를 포함하고, 상기 참조들은 특정 속성을 갖는 컴퓨터 메모리 관리 방법.
  17. 제11항에 있어서,
    상기 저장된 정보는 상기 주소 변환 맵 내의 특정 페이지가 참조하는 다수의 페이지들을 나타내는 데이터를 포함하는 컴퓨터 메모리 관리 방법.
  18. 제11항에 있어서,
    상기 저장된 정보는 상기 주소 변환 맵 내의 특정 페이지가 참조하고, 상기 특정 페이지가 특정 속성을 부여하는 다수의 페이지들을 나타내는 데이터를 포함하는 컴퓨터 메모리 관리 방법.
  19. 제11항에 있어서,
    상기 정책의 준수는 집합 내의 페이지의 멤버쉽에 기초하여 판정되고, 상기 저장된 정보는 상기 집합의 진포함 집합을 포함하고, 상기 요청의 실행이 상기 정책을 위반하지 않을 것이라고 판정하는 상기 단계는 상기 페이지가 상기 포함 집합의 멤버인지의 여부를 평가하는 단계를 포함하는 컴퓨터 메모리 관리 방법.
  20. 제11항에 있어서,
    상기 정책의 준수는 집합 내의 페이지의 멤버쉽에 기초하여 판정되고, 상기 저장된 정보는 상기 집합의 진부분 집합을 포함하고, 상기 요청의 실행이 상기 정책을 위반하지 않을 것이라고 판정하는 상기 단계는 상기 페이지가 상기 부분 집합의 멤버인지의 여부를 평가하는 단계를 포함하는 컴퓨터 메모리 관리 방법.
  21. 주소 변환 맵에 의해서 주소 지정(addressing)되는 메모리에 대한 액세스를 제어하기 위한 시스템으로서,
    상기 메모리에 대한 액세스를 제한하는 정책을 저장하는 하나 이상의 저장 장치 장소들(one or more storage locations);
    상기 주소 변환 맵에 관한 정보를 저장하는 캐시(cache) - 상기 캐시에 저장된 상기 정보는 미리 정해진 특성을 갖는 상기 주소 변환 맵의 페이지들의 집합을 식별하는 데이터를 포함함 - ; 및
    상기 메모리를 액세스하기 위한 요청을 수신하고, 상기 캐시에 저장된 상기 정보에 적어도 부분적으로 기초하여, 상기 요청이 상기 정책 하에서 허용가능한 지의 여부를 판정하는 로직(logic)
    을 포함하고,
    상기 로직은 상기 요청이 상기 정책 하에서 허용가능하다고 판정되면 상기 요청이 처리되도록 허용하고,
    상기 로직은 상기 요청이 상기 정책 하에서 허용가능하지 않다고 판정되면, (1) 상기 요청을 차단하거나, 또는 (2) 상기 요청을 상기 정책 하에서 허용가능한 형태로 변경하고 상기 변경된 요청이 처리되도록 허용하는 메모리 액세스 제어 시스템.
  22. 제21항에 있어서,
    상기 요청은 상기 메모리의 일부분에 기록하기 위한 요청을 포함하는 메모리 액세스 제어 시스템.
  23. 제21항에 있어서,
    상기 주소 변환 맵은 상기 메모리에 저장되고, 상기 요청은 상기 주소 변환 맵이 저장되어 있는 메모리의 일부분에 기록하기 위한 요청을 포함하는 메모리 액세스 제어 시스템.
  24. 제21항에 있어서,
    상기 캐시에 저장된 상기 정보는 상기 주소 변환 맵의 루트로부터 미리 정해진 거리에 위치되어 있는 상기 주소 변환 맵 내의 페이지들의 집합을 식별하는 데이터를 포함하는 메모리 액세스 제어 시스템.
  25. 제21항에 있어서,
    상기 캐시에 저장된 상기 정보는 특정 페이지에 대한 다수의 참조들을 나타내는 데이터를 포함하는 메모리 액세스 제어 시스템.
  26. 제21항에 있어서,
    상기 캐시에 저장된 상기 정보는 특정 페이지에 대한 다수의 참조들을 나타내는 데이터를 포함하고, 상기 참조들은 특정 속성을 갖는 메모리 액세스 제어 시스템.
  27. 제21항에 있어서,
    상기 캐시에 저장된 상기 정보는 상기 주소 변환 맵 내의 특정 페이지가 참조하는 다수의 페이지들을 나타내는 데이터를 포함하는 메모리 액세스 제어 시스템.
  28. 제21항에 있어서,
    상기 캐시에 저장된 상기 정보는, 상기 주소 변환 맵 내의 특정 페이지가 참조하고 상기 특정 페이지가 특정 속성을 부여하는 다수의 페이지들을 나타내는 데이터를 포함하는 메모리 액세스 제어 시스템.
  29. 제21항에 있어서,
    상기 정책의 준수는 집합 내의 페이지의 멤버쉽에 기초하여 판정되고, 상기 캐시에 저장된 상기 정보는 상기 집합의 진포함 집합을 포함하고, 상기 로직은 상기 페이지가 상기 포함 집합의 멤버인지의 여부를 평가함으로써 상기 요청을 허용하는 것이 상기 정책을 위반할지의 여부를 판정하는 메모리 액세스 제어 시스템.
  30. 제21항에 있어서,
    상기 정책의 준수는 집합 내의 페이지의 멤버쉽에 기초하여 판정되고, 상기 캐시에 저장된 상기 정보는 상기 집합의 진부분 집합을 포함하고, 상기 로직은 상기 페이지가 상기 부분 집합의 멤버인지의 여부를 평가함으로써 상기 요청을 허용하는 것이 상기 정책을 위반할지의 여부를 판정하는 메모리 액세스 제어 시스템.
  31. 제21항에 있어서,
    상기 로직은 하드웨어와 소프트웨어 중 적어도 하나로 구현되는 메모리 액세스 제어 시스템.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
KR1020040031024A 2003-05-02 2004-05-03 메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템 KR101024819B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US46734303P 2003-05-02 2003-05-02
US60/467,343 2003-05-02
US10/610,666 US7139892B2 (en) 2003-05-02 2003-06-30 Implementation of memory access control using optimizations
US10/610,666 2003-06-30

Publications (2)

Publication Number Publication Date
KR20040094382A KR20040094382A (ko) 2004-11-09
KR101024819B1 true KR101024819B1 (ko) 2011-03-31

Family

ID=32995081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040031024A KR101024819B1 (ko) 2003-05-02 2004-05-03 메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템

Country Status (13)

Country Link
US (2) US7139892B2 (ko)
EP (1) EP1473616B1 (ko)
JP (1) JP4672281B2 (ko)
KR (1) KR101024819B1 (ko)
CN (1) CN100426262C (ko)
AU (1) AU2004201803B2 (ko)
BR (1) BRPI0401685A (ko)
CA (2) CA2465255A1 (ko)
MX (1) MXPA04004145A (ko)
MY (1) MY138723A (ko)
RU (1) RU2364932C2 (ko)
TW (1) TWI346287B (ko)
ZA (1) ZA200403291B (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050165837A1 (en) * 2004-01-22 2005-07-28 International Business Machines Corporation System and method for embedded java memory footprint performance improvement
US20050183077A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation System and method for JIT memory footprint improvement for embedded java devices
US20050283770A1 (en) * 2004-06-18 2005-12-22 Karp Alan H Detecting memory address bounds violations
US7395422B2 (en) * 2005-04-13 2008-07-01 Hewlett-Packard Development Company, L.P. Method and system of changing a startup list of programs to determine whether computer system performance increases
US8301767B1 (en) * 2005-12-21 2012-10-30 Mcafee, Inc. System, method and computer program product for controlling network communications based on policy compliance
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
WO2007085122A1 (en) * 2006-01-26 2007-08-02 Intel Corporation Optimizing memory accesses for network applications using indexed register files
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US7886112B2 (en) * 2006-05-24 2011-02-08 Sony Computer Entertainment Inc. Methods and apparatus for providing simultaneous software/hardware cache fill
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US20080244262A1 (en) * 2007-03-30 2008-10-02 Intel Corporation Enhanced supplicant framework for wireless communications
CN101295265A (zh) * 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US8462161B1 (en) * 2009-01-20 2013-06-11 Kount Inc. System and method for fast component enumeration in graphs with implicit edges
CN101645054B (zh) * 2009-08-25 2011-07-13 中兴通讯股份有限公司 一种数据采集卡、数据采集卡的扩展控制系统及其方法
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8650337B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US11636031B2 (en) 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
FR2980905B1 (fr) * 2011-09-29 2014-03-14 Continental Automotive France Procede d'effacement d'informations memorisees dans une memoire reinscriptible non volatile, support de memorisation et calculateur de vehicule automobile
CN104067218B (zh) * 2011-12-28 2019-06-18 英特尔公司 分配存储器访问控制策略
US8937317B2 (en) 2012-12-28 2015-01-20 Avogy, Inc. Method and system for co-packaging gallium nitride electronics
US9324645B2 (en) 2013-05-23 2016-04-26 Avogy, Inc. Method and system for co-packaging vertical gallium nitride power devices
US9324809B2 (en) 2013-11-18 2016-04-26 Avogy, Inc. Method and system for interleaved boost converter with co-packaged gallium nitride power devices
US9864691B1 (en) * 2013-12-13 2018-01-09 EMC IP Holding Company LLC Deletion indication implementation based on internal model
US9652434B1 (en) * 2013-12-13 2017-05-16 Emc Corporation Modification indication implementation based on internal model
US9886301B2 (en) * 2015-05-04 2018-02-06 Strato Scale Ltd. Probabilistic deduplication-aware workload migration
US10303621B1 (en) * 2017-03-07 2019-05-28 Amazon Technologies, Inc. Data protection through address modification

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604864A (en) 1994-05-26 1997-02-18 Sumitomo Metal Industries, Ltd. Method and system for detecting invalid access to a memory
US20020116590A1 (en) 2001-02-20 2002-08-22 International Business Machines Corporation Method of managing memory
US6442664B1 (en) 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US20020144077A1 (en) 2001-03-30 2002-10-03 Andersson Peter Kock Mechanism to extend computer memory protection schemes

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0256653A (ja) * 1988-08-23 1990-02-26 Toshiba Corp 階層化メモリ管理方式
EP0481735A3 (en) * 1990-10-19 1993-01-13 Array Technology Corporation Address protection circuit
US5179441A (en) * 1991-12-18 1993-01-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Near real-time stereo vision system
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
DE69638018D1 (de) 1995-02-13 2009-10-15 Intertrust Tech Corp Systeme und Verfahren zur Verwaltung von gesicherten Transaktionen und zum Schutz von elektronischen Rechten
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
JPH0973412A (ja) * 1995-06-30 1997-03-18 Toshiba Corp データ転送方法及びメモリ管理装置
US5729466A (en) * 1996-04-03 1998-03-17 Cadence Design Systems, Inc. Optimization multiple performance criteria by simulating the behavior of a constraint graph expanded by subgraphs derived from PWL convex cost functions
US5663891A (en) * 1996-04-03 1997-09-02 Cadence Design Systems, Inc. Optimization of multiple performance criteria of integrated circuits by expanding a constraint graph with subgraphs derived from multiple PWL convex cost functions
US5701460A (en) * 1996-05-23 1997-12-23 Microsoft Corporation Intelligent joining system for a relational database
US5991408A (en) * 1997-05-16 1999-11-23 Veridicom, Inc. Identification and security using biometric measurements
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6807537B1 (en) * 1997-12-04 2004-10-19 Microsoft Corporation Mixtures of Bayesian networks
US6271856B1 (en) * 1998-11-19 2001-08-07 Paraform, Inc. Creating and modifying parameterizations of surfaces
US6321314B1 (en) * 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US20020118207A1 (en) * 2000-12-22 2002-08-29 Nortel Networks Limited Method and apparatus for determining graph planarity
US6938138B2 (en) * 2001-01-11 2005-08-30 International Business Machines Corporation Method and apparatus for managing access to memory
US6836836B2 (en) * 2001-01-19 2004-12-28 Sony Corporation Memory protection control device and method
JP2002237142A (ja) * 2001-02-09 2002-08-23 Matsushita Electric Ind Co Ltd 磁気記憶媒体、そのトラックピッチ制御方法、その媒体のための磁気記録装置
US20030077607A1 (en) * 2001-03-10 2003-04-24 Hopfinger Anton J. Methods and tools for nucleic acid sequence analysis, selection, and generation
US20030079103A1 (en) * 2001-10-24 2003-04-24 Morrow Michael W. Apparatus and method to perform address translation
US7388988B2 (en) * 2002-01-14 2008-06-17 Hewlett-Packard Development Company, L.P. Systems and methods for processing boundary information of a graphical object
US7565509B2 (en) 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US6986006B2 (en) 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7139890B2 (en) * 2002-04-30 2006-11-21 Intel Corporation Methods and arrangements to interface memory
US6963959B2 (en) * 2002-10-31 2005-11-08 International Business Machines Corporation Storage system and method for reorganizing data to improve prefetch effectiveness and reduce seek distance
US6986017B2 (en) * 2003-04-24 2006-01-10 International Business Machines Corporation Buffer pre-registration
US7085909B2 (en) * 2003-04-29 2006-08-01 International Business Machines Corporation Method, system and computer program product for implementing copy-on-write of a file
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604864A (en) 1994-05-26 1997-02-18 Sumitomo Metal Industries, Ltd. Method and system for detecting invalid access to a memory
US6442664B1 (en) 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US20020116590A1 (en) 2001-02-20 2002-08-22 International Business Machines Corporation Method of managing memory
US20020144077A1 (en) 2001-03-30 2002-10-03 Andersson Peter Kock Mechanism to extend computer memory protection schemes

Also Published As

Publication number Publication date
TWI346287B (en) 2011-08-01
MY138723A (en) 2009-07-31
AU2004201803A1 (en) 2004-11-18
KR20040094382A (ko) 2004-11-09
US7605816B2 (en) 2009-10-20
EP1473616A3 (en) 2008-05-07
ZA200403291B (en) 2005-03-30
CA2465255A1 (en) 2004-11-02
BRPI0401685A (pt) 2005-01-18
US7139892B2 (en) 2006-11-21
CN1577295A (zh) 2005-02-09
EP1473616A2 (en) 2004-11-03
RU2004113567A (ru) 2005-10-27
EP1473616B1 (en) 2017-09-27
RU2364932C2 (ru) 2009-08-20
US20040221126A1 (en) 2004-11-04
CA2712081A1 (en) 2004-11-02
US20060265557A1 (en) 2006-11-23
JP2004334870A (ja) 2004-11-25
JP4672281B2 (ja) 2011-04-20
MXPA04004145A (es) 2005-07-05
TW200508862A (en) 2005-03-01
AU2004201803B2 (en) 2009-11-12
CN100426262C (zh) 2008-10-15

Similar Documents

Publication Publication Date Title
KR101024819B1 (ko) 메모리 액세스 요청을 처리하는 방법을 수행하기 위한 컴퓨터 실행가능 명령들이 인코딩되어 있는 컴퓨터 판독가능 저장 매체, 컴퓨터 메모리 관리 방법, 및 메모리 액세스 제어 시스템
KR101150079B1 (ko) 어드레스 번역 컨트롤을 위한 그림자 페이지 테이블
US7058768B2 (en) Memory isolation through address translation data edit control
US7650478B2 (en) Using limits on address translation to control access to an addressable entity
JP3944504B2 (ja) 変換索引バッファのレイジー・フラッシング
CN1877547B (zh) 提供扩展的存储器保护
TWI499973B (zh) 利用暫存器擴充來管理與施用中央處理單元中之元資料的技術
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
Bird et al. Lighthouse: Hardware Support for Enforcing Information Flow Control on ManyCore Systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150217

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 8