KR20200116970A - 메타데이터 처리를 위한 명령어를 변환시키기 위한 시스템 및 방법 - Google Patents

메타데이터 처리를 위한 명령어를 변환시키기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200116970A
KR20200116970A KR1020207025284A KR20207025284A KR20200116970A KR 20200116970 A KR20200116970 A KR 20200116970A KR 1020207025284 A KR1020207025284 A KR 1020207025284A KR 20207025284 A KR20207025284 A KR 20207025284A KR 20200116970 A KR20200116970 A KR 20200116970A
Authority
KR
South Korea
Prior art keywords
instruction
metadata
policy
instructions
tag
Prior art date
Application number
KR1020207025284A
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 KR20200116970A publication Critical patent/KR20200116970A/ko

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • G06F9/3859
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

적어도 하나의 양상에 따르면, 하드웨어 시스템은 호스트 프로세서, 정책 엔진, 및 인터로크를 포함한다. 이 컴포넌트는 보안 정책을 시행하도록 상호 작용할 수 있다. 호스트 프로세서는 명령어를 실행시킬 수 있고 명령어 정보를 정책 엔진에 그리고 실행된 명령어의 결과를 인터로크에 제공할 수 있다. 정책 엔진은 실행된 명령어가 명령어 정보를 사용하는 하나 이상의 보안 정책에 따라 허용 가능한지를 결정할 수 있다. 인터로크는 명령어가 허용 가능하다는 표시가 정책 엔진으로부터 수신될 때까지 실행된 명령어의 결과를 버퍼링할 수 있다. 이어서 인터로크는 실행된 명령어의 결과를 내보낼 수 있다. 정책 엔진은 호스트 프로세서로부터 수신된 명령어를 변환시키거나 또는 삽입된 명령어를 정책 평가 파이프라인에 부가하여 정책 엔진의 융통성을 증가시키고 보안 정책의 시행을 가능하게 하도록 구성될 수 있다.

Description

메타데이터 처리를 위한 명령어를 변환시키기 위한 시스템 및 방법
관련 출원
본 출원은 미국 특허 가출원 일련번호 제62/635,319호(출원일: 2018년 2월 26일, 발명의 명칭: "SYSTEMS AND METHODS FOR TRANSFORMING INSTRUCTIONS FOR METADATA PROCESSING", 대리인 문서: 제D0821.70001US01호), 미국 특허 가출원 일련번호 제62/625,746호(출원일: 2018년 2월 2일, 발명의 명칭: "SYSTEMS AND METHODS FOR TRANSLATING BETWEEN INSTRUCTION SET ARCHITECTURES", 대리인 문서: 제D0821.70001US00호) 및 미국 특허 가출원 일련번호 제62/625,802호(출원일: 2018년 2월 2일, 발명의 명칭: "SYSTEMS AND METHODS FOR SECURING INTERRUPT SERVICE ROUTINE ENTRY", 대리인 문서: 제D0821.70004US00호)의 35 U.S.C. § 119(e)하에서 이득을 주장한다.
본 출원은,
Figure pct00001
미국 특허 가출원 일련번호 제62/625,822호(출원일: 2018년 2월 2일, 발명의 명칭: "SYSTEMS AND METHODS FOR SECURE INITIALIZATION", 대리인 문서: 제D0821.70000US00호) 및 미국 특허 가출원 일련번호 제62/635,289호(출원일: 2018년 2월 26일, 발명의 명칭: "SYSTEMS AND METHODS FOR SECURE INITIALIZATION", 대리인 문서: 제D0821.70000US01호)의 35 U.S.C. § 119(e)하에서 이득을 주장하는, 국제 특허 출원 제 호(발명의 명칭: "SYSTEMS AND METHODS FOR SECURE INITIALIZATION", 대리인 문서: 제D0821.70000WO00호); 및
Figure pct00002
미국 특허 가출원 일련번호 제62/625,770호(출원일: 2018년 2월 2일, 발명의 명칭: "SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING", 대리인 문서: 제D0821.70003US00호) 및 특허 가출원 일련번호 제 62/635,475호(출원일: 2018년 2월 26일, 발명의 명칭: "SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING", 대리인 문서: 제D0821.70003US01호)의 35 U.S.C. § 119(e)하에서 이득을 주장하는, 국제 특허 출원 제 호(발명의 명칭: "SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING", 대리인 문서: 제D0821.70003WO00호)와 같은 날에 출원되었다.
위에서 언급한 출원의 각각은 전문이 참조에 의해 본 명세서에 원용된다.
컴퓨터 보안은 개인으로부터 사업 내지 정부 기관에 이르기까지, 모든 사회 계층에서 점점 시급한 고려사항이 되어왔다. 예를 들어, 2015년에, 보안 연구가는 공격자가 인터넷을 통해 지프 체로키(Jeep Cherokee)의 온보드 컴퓨터 시스템을 해킹하고 차량의 대시보드 기능, 조향, 제동 및 변속을 제어하게 한다는 제로-데이 취약성을 식별했다. 2017년에, 워너크라이 랜섬웨어 공격(WannaCry ransomware attack)은 전세계적으로 200,000개보다 더 많은 컴퓨터에 영향을 준 것으로 추정되었고, 이것은 적어도 수억 달러의 경제적 손실을 발생시킨다. 특히, 공격은 영국의 수개의 국립 보건원 병원에서의 작동(operation)에 심각한 손상을 주었다. 동일한 연도에, 에퀴팩스(Equifax), 미국의 소비자 신용 보고 기관에서의 데이터 침해, 개인 데이터, 예컨대, 전체 이름, 소셜 보안 번호, 생일, 주소, 운전자의 면허 번호, 신용 카드 번호 등의 노출이 있었다. 이 공격은 14천만 초과의 소비자에 영향을 준 것으로 보고된다.
보안 전문가는 꾸준히 공격자를 따라잡으려고 하고 있다. 취약성이 보고되자마자, 보안 전문가는 취약성을 수습하기 시작한다. 취약성을 적시 방식으로 수습하는데 실패한(예를 들어, 부적절한 행정 및/또는 자원의 부족에 기인하여) 개인 및 기관은 공격자의 타깃이 되기 쉽다.
일부 보안 소프트웨어는 컴퓨터에서 그리고/또는 네트워크 내에서 액티비티를 모니터링하고, 공격을 나타낼 수도 있는 패턴을 찾는다. 이러한 방식은 악성 코드가 먼저 실행되는 것을 방지하지 못한다. 종종 손상은 어떤 의심스러운 패턴이 출현할 때까지 행해진다.
적어도 하나의 양상에 따르면, 방법이 제공된다. 방법은, 제1 명령어와 연관된 제1 명령어 정보를 수신하는 작동; 제1 명령어와 연관된 제1 데이터 구조에 액세스하는 작동; 상기 제1 데이터 구조에 적어도 부분적으로 기초하여, 제1 처리 또는 제2 처리를 수행하는지를 결정하는 작동; 제1 처리가 수행된다는 결정에 응답하여, 제1 명령어와 연관된 제1 데이터 구조로부터 제1 메타데이터를 식별하는 것; 및 제1 메타데이터와 함께 제1 명령어 정보를 출력하는 것을 포함하는 제1 처리를 수행하는 작동; 제2 처리가 수행된다는 결정에 응답하여, 제1 명령어와 연관된 제1 데이터 구조로부터 위치 정보를 식별하는 것; 위치 정보를 사용하여 적어도 하나의 제2 데이터 구조에 액세스하는 것; 적어도 하나의 제2 데이터 구조로부터, 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보 및 대응하는 제2 메타데이터를 식별하는 것; 및 대응하는 제2 메타데이터와 함께 제2 명령어 정보를 출력하는 것을 포함하는 제2 처리를 수행하는 작동을 포함한다.
일부 실시형태에서, 적어도 하나의 제2 명령어는 복수의 제2 명령어를 포함하고; 제2 메타데이터는 복수의 제2 명령어에 각각 대응하는 제2 메타데이터의 복수의 피스를 포함한다.
일부 실시형태에서, 제1 명령어 정보를 수신하는 작동은, 입력 명령어 세트 아키텍처(instruction set architecture: ISA) 내 명령어 정보를 출력 ISA 내 명령어 정보로 변환하도록 프로그래밍된 하드웨어 변환기(hardware translator)로부터 제1 명령어 정보를 수신하는 것을 포함하고; 제1 명령어 정보는 출력 ISA에 있다.
일부 실시형태에서, 방법은, 호스트 프로세서로부터 입력 ISA 내에 있는 제3 명령어 정보를 수신하는 작동; 및 하드웨어 변환기에 의해, 제3 명령어 정보를 출력 ISA에 있는 제1 명령어 정보로 변환하는 작동을 더 포함한다.
일부 실시형태에서, 제1 명령어 정보를 수신하는 작동은 제1 명령어 정보를 메모리 위치로부터 검색하는 것을 포함하고, 방법은, 소프트웨어 변환기(software translator)에 의해, 입력 명령어 세트 아키텍처(ISA) 내 제3 명령어 정보를 출력 ISA에 있는 제1 명령어 정보로 변환하는 작동; 및 소프트웨어 변환기에 의해, 제1 명령어 정보를 메모리 위치에 저장하는 작동을 더 포함한다.
일부 실시형태에서, 제1 데이터 구조에 액세스하는 작동은, 태그 맵 테이블(tag map table) 내 엔트리로부터 제1 데이터 구조에 액세스하는 것을 포함하고, 엔트리는 제1 명령어와 연관된다.
일부 실시형태에서, 제1 데이터 구조에 액세스하는 작동은, 태그 맵 테이블 내 제1 명령어와 연관되는 엔트리로부터 포인터에 액세스하는 것; 및 포인터를 사용하여 메타데이터 메모리로부터 제1 데이터 구조에 액세스하는 것을 포함한다.
일부 실시형태에서, 방법은 제1 명령어와 연관된 제1 데이터 구조로부터 플래그를 식별하는 작동을 더 포함한다.
일부 실시형태에서, 제1 데이터 구조에 적어도 부분적으로 기초하여 제1 처리 또는 제2 처리를 수행하는지를 결정하는 것은, 플래그에 적어도 부분적으로 기초하여 제1 처리 또는 제2 처리를 수행하는지를 결정하는 것을 포함한다.
일부 실시형태에서, 제1 명령어는 명령어 경로 내 제1 분기 명령어이고 명령어 경로는 명령어 경로를 시작하는 제1 분기 명령어, 명령어 경로를 종료하는 제2 분기 명령어 및 제1 분기 명령어와 제2 분기 명령어 사이의 적어도 하나의 중간 명령어를 포함한다.
일부 실시형태에서, 적어도 하나의 제2 명령어는 명령어 경로와 동일한 세트 작동을 수행한다.
일부 실시형태에서, 방법은, 명령어 경로 내 명령어보다 더 작은 수의 작동을 포함하는 명령어 경로에 의해 수행되는 하나 이상의 작동의 세트를 식별하는 작동; 및 하나 이상의 작동의 세트에 기초하여 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보를 생성하는 작동을 더 포함한다.
적어도 하나의 양상에 따르면, 방법이 제공된다. 방법은 제1 명령어 세트 아키텍처(ISA) 내 제1 명령어와 연관된 제1 명령어 정보를 수신하는 단계; 제1 명령어에 대응하고 제1 ISA와 상이한 제2 ISA에 있는 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보를 획득하는 단계로서, 제2 명령어 정보를 획득하는 작동은 제1 명령어를 포함하는 제1 ISA 내 제1 복수의 명령어와 적어도 하나의 제2 명령어를 포함하는 제2 ISA 내 제2 복수의 명령어 사이의 관계의 세트를 사용하여 수행되고, 관계의 세트는 제2 복수의 명령어 중 2개 이상의 명령어의 세트에 매핑되는 제1 복수의 명령어 내 단일의 명령어 사이의 관계를 포함하는, 제2 명령어 정보를 획득하는 단계; 적어도 하나의 제2 명령어와 연관된 메타데이터를 식별하는 단계; 제1 명령어가 적어도 하나의 제2 명령어와 연관된 메타데이터를 사용하여 적어도 하나의 규칙을 위반하는지 결정하는 단계; 및 제1 명령어가 적어도 하나의 규칙을 위반하는 것에 응답하여, 제1 명령어가 적어도 하나의 규칙을 위반한다는 표시(indication)를 출력하는 단계를 포함한다.
적어도 하나의 양상에 따르면, 방법이 제공된다. 방법은 태그 처리 하드웨어를 사용하여, 콘텍스트 변화(context change) 후 제1 명령어인 명령어와 연관된 명령어 정보를 수신하는 단계; 태그 처리 하드웨어를 사용하여, 메타데이터와 수신된 명령어 정보를 연관시키는 단계로서, 메타데이터는 수신된 명령어 정보가 콘텍스트 변화 후 제1 명령어와 연관된다는 표시를 포함하는, 메타데이터와 수신된 명령어 정보를 연관시키는 단계; 태그 처리 하드웨어를 사용하여, 정책 프로세서를 트리거링해서 수신된 명령어 정보와 연관된 메타데이터를 판독하는 단계; 및 적어도 부분적으로 정책 프로세서를 사용하여, 수신된 명령어와 연관된 메타데이터를 판독하는 것에 응답하여, 제1 저장 위치와 연관된 적어도 일부 메타데이터 및 제2, 상이한 저장 위치와 연관된 적어도 일부 메타데이터를 변경하는 단계를 포함한다.
일부 실시형태에서, 명령어 정보를 수신하는 것은, 인터럽트 서비스 루틴(ISR) 내 제1 명령어인 명령어와 연관된 명령어 정보를 수신하는 것을 포함한다.
일부 실시형태에서, 제1 저장 위치는 호스트 프로세서가 ISR을 실행시키지 않을 때 인터럽트 프로그램 가능 카운터 값의 저장 위치이고 제2 저장 위치는 호스트 프로세서가 ISR을 실행시킬 때 인터럽트 프로그램 가능 카운터 값의 저장 위치이다.
적어도 하나의 양상에 따르면, 정책 엔진이 제공된다. 정책 엔진은 태그 처리 하드웨어 또는 정책 프로세서 중 적어도 하나를 포함할 수 있다. 태그 처리 하드웨어 또는 정책 프로세서 중 적어도 하나는 작동의 세트를 수행하도록 구성될 수 있다. 작동은 호스트 프로세서에 의해 실행되는 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하는 것을 포함할 수 있다. 작동은 제1 명령어 정보를 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보로 변환시키는(transforming) 것을 포함할 수 있다. 작동은 적어도 하나의 제1 명령어가 적어도 하나의 제2 명령어에 대응하는 제2 메타데이터를 사용하여 정책에 따라 허용 가능한지를 결정하는 것을 포함할 수 있다. 작동은 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 제공하기 위한 표시를 인터로크(interlock)에 제공하는 것을 더 포함할 수 있다.
적어도 하나의 양상에 따르면, 또 다른 시스템이 제공된다. 이 시스템은 정책 엔진을 포함할 수 있다. 정책 엔진은 작동의 세트를 수행하도록 구성될 수 있다. 작동은 호스트 프로세서에 의해 실행되는 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하는 것을 포함할 수 있다. 작동은 제1 명령어 정보를 수신하는 것에 응답하여, 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보 및 제2 명령어와 연관된 제2 메타데이터를 획득하는 것을 더 포함할 수 있다. 작동은 또한 제2 명령어 정보 및 제2 메타데이터 중 적어도 하나를 사용하여 업데이트 메타데이터를 생성하는 것을 포함할 수 있다. 작동은 생성된 업데이트 메타데이터를 사용하여 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하는 것을 더 포함할 수 있다. 작동은 또한 호스트 프로세서에 의해 이전에 실행된 적어도 하나의 명령어가 적어도 하나의 정책에 따라 허용 가능하다고 결정하는 것을 포함할 수 있고, 결정은 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 업데이트된 적어도 하나에 기초한다. 작동은 부가적으로 결정에 응답하여, 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 내보내기 위한 표시를 인터로크에 제공하는 것을 포함할 수 있다.
적어도 하나의 양상에 따르면, 추가의 시스템이 제공된다. 이 시스템은 정책 엔진을 포함할 수 있다. 정책 엔진은 작동의 세트를 수행하도록 구성될 수 있다. 작동은 호스트 프로세서에 의해 실행되는 호스트 명령어 세트 아키텍처(ISA) 내 제1 명령어와 연관된 명령어 정보를 수신하는 것을 포함할 수 있다. 작동은 또한 명령어 정보의 변환(translation)을 생성하는 것을 포함할 수 있고, 변환은 호스트 ISA에서 이루어지지 않는다. 작동은 부가적으로 명령어 정보의 변환을 사용하여 메타데이터를 획득하는 것을 포함할 수 있다. 작동은 또한 적어도 하나의 제1 명령어가 메타데이터를 사용하여 정책에 따라 허용 가능하다고 결정하는 것을 포함할 수 있다. 작동은 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 내보내기 위한 표시를 인터로크에 제공하는 것을 더 포함할 수 있다.
적어도 하나의 양상에 따르면, 추가의 시스템이 제공된다. 이 시스템은 정책 엔진을 포함할 수 있다. 정책 엔진은 작동의 세트를 수행하도록 구성될 수 있다. 작동은 호스트 프로세서에 의해 사용되는 호스트 명령어 세트 아키텍처(ISA) 내 제1 명령어와 연관된 명령어 정보를 수신하는 것을 포함할 수 있다. 작동은 명령어 정보의 변환을 생성하는 것을 더 포함할 수 있고, 변환은 호스트 ISA에서 이루어지지 않는다. 작동은 또한 제1 명령어의 어드레스를 사용하여 메타데이터를 획득하는 것; 및 메타데이터를 사용하여, 적어도 하나의 제1 명령어가 정책에 따라 허용 가능한지를 결정하는 것을 포함할 수 있다.
도 1은 일부 실시형태에 따른, 정책을 시행하기 위한 실례가 되는 하드웨어 시스템(100)을 도시하는 도면.
도 2는 일부 실시형태에 따른, 정책을 시행하기 위한 실례가 되는 소프트웨어 시스템(200)을 도시하는 도면.
도 3은 일부 실시형태에 따른, 메타데이터와 명령어 정보를 연관시키기 위한 도 1의 태깅 처리 하드웨어(140)의 실례가 되는 구현예를 도시하는 도면.
도 4는 변환된 명령어를 사용하는 정책 엔진에 의해 수행되는 실례가 되는 정책 시행 과정을 도시하는 도면.
도 5는 추가된 명령어를 사용하는 정책 엔진에 의한 실례가 되는 정책 시행 과정을 도시하는 도면.
도 6은 일부 실시형태에 따른, 정책 엔진을 사용하여 정책을 시행하기 위한 실례가 되는 하드웨어 시스템(600)을 도시하는 도면.
도 7은 본 개시내용의 임의의 양상이 구현될 수도 있는 실례가 되는 컴퓨터(700)를 개략적으로 도시하는 도면.
공격자가 이용하는 많은 취약성은 데이터와 실행 가능한 명령어가 동일한 메모리에서 혼합되는 컴퓨터 아키텍처 설계에서 유래한다. 이 혼합은 공격자가 악성 코드를 데이터로서 위장함으로써 악성 코드를 원격 컴퓨터에 투입하게 한다. 예를 들어, 프로그램은 버퍼를 컴퓨터의 메모리에 할당하여 네트워크를 통해 수신된 데이터를 저장할 수도 있다. 프로그램이 버퍼가 보유할 수 있는 데이터보다 더 많은 데이터를 수신하지만, 데이터를 버퍼에 기입하기 전에 수신된 데이터의 크기를 확인하지 않는다면, 수신된 데이터 중 일부는 버퍼의 경계를 넘어, 인접한 메모리에 기입될 것이다. 공격자는 이 거동을 이용하여 악성 코드를 인접한 메모리에 투입할 수도 있다. 실행 가능한 코드가 인접한 메모리에 할당된다면, 악성 코드는 결국 컴퓨터에 의해 실행될 수도 있다.
컴퓨터 하드웨어를 더 보안 의식이 있게 만들기 위한 기법이 제안되어 왔다. 예를 들어, 메모리 위치는 보안 정책을 시행할 때 사용되는 메타데이터와 연관될 수도 있고, 명령어는 보안 정책에 대한 준수를 위해 확인될 수도 있다. 예를 들어, 실행될 명령어를 고려할 때, 명령어와 연관된 메타데이터 및/또는 명령어의 하나 이상의 피연산자와 연관된 메타데이터는 명령어가 허용되어야 하는지를 결정하도록 확인될 수도 있다. 부가적으로 또는 대안적으로, 적절한 메타데이터는 명령어의 출력과 연관될 수도 있다.
도 1은 일부 실시형태에 따른, 정책을 시행하기 위한 실례가 되는 하드웨어 시스템(100)을 도시한다. 이 실시예에서, 시스템(100)은 임의의 적합한 명령어 세트 아키텍처(instruction set architecture: ISA), 예컨대, 축소 명령어 세트 컴퓨팅(reduced instruction set computing: RISC) 아키텍처 또는 복잡 명령어 세트 컴퓨팅(complex instruction set computing: CISC) 아키텍처를 가질 수도 있는, 호스트 프로세서(110)를 포함한다. 호스트 프로세서(110)는 기입 인터로크(112)를 통해 메모리 액세스를 수행할 수도 있다. 기입 인터로크(112)는 데이터를 다양한 컴포넌트, 예컨대, 기입 인터로크(112), 애플리케이션 메모리(120), 메타데이터 메모리(125), 판독 전용 메모리(read-only memory: ROM)(130), 하나 이상의 주변 장치(135) 등 간에 전송하도록 구성된 시스템 버스(115)에 연결될 수도 있다.
일부 실시형태에서, 호스트 프로세서(110)에 의해 조작된(예를 들어, 수정된, 소비된 그리고/또는 생성된) 데이터는 애플리케이션 메모리(120)에 저장될 수도 있다. 이러한 데이터는 정책을 시행하기 위해 사용되는 메타데이터로부터 구별되는 바와 같이, "애플리케이션 데이터"로서 본 명세서에서 지칭된다. 메타데이터는 메타데이터 메모리(125)에 저장될 수도 있다. 애플리케이션 데이터는 운영 체제(operating system: OS)에 의해 조작된 데이터, OS의 명령어, 하나 이상의 사용자 애플리케이션에 의해 조작된 데이터 및/또는 하나 이상의 사용자 애플리케이션의 명령어를 포함할 수도 있다는 것이 이해되어야 한다.
일부 실시형태에서, 애플리케이션 메모리(120)와 메타데이터 메모리(125)는 물리적으로 분리될 수도 있고, 호스트 프로세서(110)는 메타데이터 메모리(125)에 액세스하지 않을 수도 있다. 이 방식으로, 공격자가 악성 코드를 애플리케이션 메모리(120)에 투입하는데 성공하고 호스트 프로세서(110)가 악성 코드를 실행하게 할지라도, 메타데이터 메모리(125)는 영향을 받지 않을 수도 있다. 그러나, 본 개시내용의 양상은 애플리케이션 데이터 및 메타데이터를 물리적으로 분리된 메모리에 저장하는 것으로 제한되지 않는다는 것이 이해되어야 한다. 부가적으로 또는 대안적으로, 메타데이터는 애플리케이션 데이터와 동일한 메모리에 저장될 수도 있고, 호스트 프로세서(110)에서 실행되는 명령어가 메타데이터를 수정하는 것을 방지하기 위한 적절한 보호 방식을 구현하는 메모리 관리 컴포넌트가 사용될 수도 있다. 부가적으로 또는 대안적으로, 메타데이터는 동일한 메모리에서 애플리케이션 데이터와 혼합될 수도 있고, 하나 이상의 정책이 메타데이터를 보호하도록 사용될 수도 있다.
일부 실시형태에서, 태그 처리 하드웨어(140)는 호스트 프로세서(110)에 의해 실행되는 명령어가 하나 이상의 정책을 준수하는 것을 보장하도록 제공될 수도 있다. 태그 처리 하드웨어(140)는 임의의 적합한 회로 컴포넌트 또는 회로 컴포넌트의 조합을 포함할 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 애플리케이션 메모리(120) 내 어드레스와 메타데이터 메모리(125) 내 어드레스를 매핑하는 태그 맵 테이블(142)을 포함할 수도 있다. 예를 들어, 태그 맵 테이블(142)은 애플리케이션 메모리(120) 내 어드레스(X)와 메타데이터 메모리(125) 내 어드레스(Y)를 매핑할 수도 있다. 이러한 어드레스(Y)는 "메타데이터 태그" 또는 간단히 "태그"로서 본 명세서에서 지칭된다. 어드레스(Y)에 저장된 값은 또한 "메타데이터 태그" 또는 간단히 "태그"로서 본 명세서에서 지칭된다.
일부 실시형태에서, 어드레스(Y)에 저장된 값은 결국 어드레스(Z)일 수도 있다. 이러한 우회는 임의의 적합한 횟수로 반복될 수도 있고, 결국 메타데이터를 저장하기 위한 메타데이터 메모리(125)에서 데이터 구조를 초래할 수도 있다. 이러한 메타데이터뿐만 아니라, 임의의 중간의 어드레스(예를 들어, 어드레스(Z))는 또한 "메타데이터 태그" 또는 간단히 "태그"로서 본 명세서에서 지칭된다.
본 개시내용의 양상이 어드레스를 메타데이터 메모리에 저장하는 태그 맵 테이블로 제한되지 않는다는 것이 이해되어야 한다. 일부 실시형태에서, 태그 맵 테이블 엔트리 자체가 메타데이터를 저장할 수도 있어서, 태그 처리 하드웨어(140)는 메모리 작동을 수행하는 일 없이 메타데이터에 액세스할 수도 있다. 일부 실시형태에서, 태그 맵 테이블 엔트리는 선택된 비트 패턴을 저장할 수도 있고, 비트 패턴의 제1 부분은 메타데이터를 인코딩할 수도 있고, 비트 패턴의 제2 부분은 추가의 메타데이터가 저장될 수도 있는 메타데이터 메모리 내 어드레스를 인코딩할 수도 있다. 이것은 속도와 표현도 사이의 바람직한 균형을 제공할 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 태그 맵 테이블 엔트리 자체에 저장된 메타데이터만을 사용하여, 특정한 정책을 신속하게 확인할 수도 있다. 더 복잡한 규칙을 가진 다른 정책에 대해, 태그 처리 하드웨어(140)는 메타데이터 메모리(125)에 저장된 추가의 메타데이터에 액세스할 수도 있다.
도 1을 다시 참조하면, 애플리케이션 메모리 어드레스와 메타데이터 메모리 어드레스를 매핑함으로써, 태그 맵 테이블(142)은 애플리케이션 데이터와 애플리케이션 데이터를 설명하는 메타데이터 간의 연관성을 생성할 수도 있다. 따라서, 하나의 실시예에서, 메타데이터 메모리 어드레스(Y)에 저장된 메타데이터와 애플리케이션 메모리 어드레스(X)에 저장된 애플리케이션 데이터와의 연관성은 애플리케이션 데이터가 판독 가능하고, 기입 가능하고/하거나 실행 가능할 수도 있다는 것을 나타낼 수도 있다. 따라서, 또 다른 실시예에서, 메타데이터 메모리 어드레스(Y)에 저장된 메타데이터와 애플리케이션 메모리 어드레스(X)에 저장된 애플리케이션 데이터와의 연관성은 애플리케이션 데이터의 유형(예를 들어, 정수, 포인터, 16-비트 워드, 32-비트 워드 등)을 나타낼 수도 있다. 시행될 정책에 따라, 정책과 관련된 임의의 적합한 메타데이터는 애플리케이션 데이터의 피스와 연관될 수도 있다.
일부 실시형태에서, 메타데이터 메모리 어드레스(Z)는 메타데이터 메모리 어드레스(Y)에 저장될 수도 있다. 애플리케이션 메모리 어드레스(X)에 저장된 애플리케이션 데이터와 연관될 메타데이터는 메타데이터 메모리 어드레스(Y) 대신에(또는 그에 더하여) 메타데이터 메모리 어드레스(Z)에 저장될 수도 있다. 예를 들어, 메타데이터 심볼 "RED"의 이진 표현은 메타데이터 메모리 어드레스(Z)에 저장될 수도 있다. 메타데이터 메모리 어드레스(Z)를 메타데이터 메모리 어드레스(Y)에 저장함으로써, 애플리케이션 메모리 어드레스(X)에 저장된 애플리케이션 데이터는 "RED"로 태깅될 수도 있다.
이 방식으로, 메타데이터 심볼 "RED"의 이진 표현은 메타데이터 메모리(120)에 단 1회 저장될 수도 있다. 예를 들어, 또 다른 애플리케이션 메모리 어드레스(X')에 저장된 애플리케이션 데이터가 또한 "RED"로 태깅된다면, 태그 맵 테이블(142)은 메타데이터 메모리 어드레스(Z)가 또한 저장되는 메타데이터 메모리 어드레스(Y')와 애플리케이션 메모리 어드레스(X')를 매핑할 수도 있다.
게다가, 이 방식으로, 태그 업데이트가 간소화될 수도 있다. 예를 들어, 애플리케이션 메모리 어드레스(X)에 저장된 애플리케이션 데이터가 후속 시간에서 "BLUE"로 태깅된다면, 메타데이터 메모리 어드레스(Z')가 메타데이터 메모리 어드레스(Y)에 기입되어, 메타데이터 메모리 어드레스(Z)를 교체할 수도 있고, 메타데이터 심볼 "BLUE"의 이진 표현이 메타데이터 메모리 어드레스(Z')에 저장될 수도 있다.
따라서, 발명자는 임의의 적합한 길이(N)의 메타데이터 메모리 어드레스의 사슬이 태깅을 위해 사용될 수도 있다[N=0(예를 들어, 메타데이터 심볼의 이진 표현이 메타데이터 메모리 어드레스(Y) 자체에 저장되는 경우)을 포함함]는 것을 인지하고 이해한다.
애플리케이션 데이터와 메타데이터 간의 연관성(또한 본 명세서에서 "태깅"으로서 지칭됨)은 임의의 적합한 입상도 및/또는 가변 입상에서 이루어질 수도 있다. 예를 들어, 태깅은 워드 단위 기반으로 이루어질 수도 있다. 부가적으로 또는 대안적으로, 메모리 내 구역이 단일의 태그와 매핑될 수도 있어서, 이 구역 내 모든 워드가 동일한 메타데이터와 연관된다. 이것은 유리하게는 태그 맵 테이블(142) 및/또는 메타데이터 메모리(125)의 크기를 감소시킬 수도 있다. 예를 들어, 단일의 태그는, 어드레스 범위 내 상이한 어드레스에 각각 대응하는 다수의 태그를 유지하는 것과 대조적으로, 전체 어드레스 범위에 대해 유지될 수도 있다.
일부 실시형태에서, 태그 처리 하드웨어(140)가 하나 이상의 보안 규칙을 명령어와 연관된 메타데이터 및/또는 명령어의 하나 이상의 피연산자와 연관된 메타데이터에 적용하여 명령어가 허용되어야 하는지를 결정하도록 구성될 수도 있다. 예를 들어, 호스트 프로세서(110)는 명령어를 페치할(fetch) 수도 있고 실행시킬 수도 있고, 명령어를 실행시킨 결과를 기입 인터로크(112)에 큐잉할(큐) 수도 있다. 이 결과가 애플리케이션 메모리(120)에 다시 기입되기 전에, 호스트 프로세서(110)는 명령어 유형(예를 들어, 연산 코드(opcode)), 명령어가 저장되는 어드레스, 명령어에 의해 참조되는 하나 이상의 메모리 어드레스 및/또는 하나 이상의 레지스터 식별자를 태그 처리 하드웨어(140)로 전송할 수도 있다. 이러한 레지스터 식별자는 명령어를 실행시킬 때 호스트 프로세서(110)에 의해 사용되는 레지스터, 예컨대, 피연산자 또는 명령어의 결과를 저장하기 위한 레지스터를 식별할 수도 있다.
일부 실시형태에서, 파괴적 판독 명령어는 기입 명령어에 더하여 또는 그 대신에 큐잉될 수도 있다. 예를 들어, 파괴적 판독 명령어의 타깃 어드레스에 액세스하려는 후속의 명령어는 캐시 저장되지 않은 메모리 구역에서 큐잉될 수도 있다. 파괴적 판독 명령어가 허용되어야 한다고 결정된다면 그리고 그러할 때, 큐잉된 명령어는 실행을 위해 로딩될 수도 있다.
일부 실시형태에서, 파괴적 판독 명령어가 진행될 수도 있고, 타깃 어드레스로부터 판독된 데이터가 버퍼에서 캡처될 수도 있다. 파괴된 판독 명령어가 허용되어야 한다고 결정된다면 그리고 그러할 때, 버퍼에서 캡처된 데이터는 폐기될 수도 있다. 파괴적 판독 명령어가 허용되지 않아야 한다고 결정된다면 그리고 그러할 때, 버퍼에서 캡처된 데이터는 타깃 어드레스로 복원될 수도 있다. 부가적으로 또는 대안적으로, 후속의 판독이 버퍼링된 데이터에 의해 서비스될 수도 있다.
본 개시내용의 양상이 호스트 프로세서에 의해 실행되는 명령어, 예컨대, 호스트 프로세서의 실행 파이프라인에 의해 회수되는 명령어에 관한 메타데이터 처리를 수행하는 것으로 제한되지 않는다는 것이 이해되어야 한다. 일부 실시형태에서, 메타데이터 처리는 호스트 프로세서의 실행 파이프라인 전, 동안 그리고/또는 후에 명령어에 관해서 수행될 수도 있다.
일부 실시형태에서, 호스트 프로세서(110)로부터 수신된 어드레스(예를 들어, 명령어가 저장되는 어드레스 또는 명령어에 의해 참조되는 어드레스)를 고려할 때, 태그 처리 하드웨어(140)가 태그 맵 테이블(142)을 사용하여 대응하는 태그를 식별할 수도 있다. 부가적으로 또는 대안적으로, 호스트 프로세서(110)로부터 수신된 레지스터 식별자에 대해, 태그 처리 하드웨어(140)는 태그 처리 하드웨어(140) 내 태그 레지스터 파일(146)로부터의 태그에 액세스할 수도 있다.
일부 실시형태에서, 애플리케이션 메모리 어드레스가 태그 맵 테이블(142) 내 대응하는 태그를 갖지 않는다면, 태그 처리 하드웨어(140)는 쿼리(query)를 정책 프로세서(150)로 전송할 수도 있다. 쿼리는 애플리케이션 메모리 어드레스를 질문에 포함할 수도 있고, 정책 프로세서(150)는 애플리케이션 메모리 어드레스에 대한 태그를 리턴할 수도 있다. 부가적으로 또는 대안적으로, 정책 프로세서(150)는 애플리케이션 메모리 어드레스를 포함하는 어드레스 범위에 대한 새로운 태그 맵 엔트리를 생성할 수도 있다. 이 방식으로, 적절한 태그는 질문 내 애플리케이션 메모리 어드레스와 연관되는 태그 맵 테이블(142)에서 미래의 참조를 위해 이용 가능하게 될 수도 있다.
일부 실시형태에서, 태그 처리 하드웨어(140)는 호스트 프로세서(110)에 의해 실행되는 명령어가 허용되어야 하는지를 확인하기 위한 쿼리를 정책 프로세서(150)로 전송할 수도 있다. 쿼리는 하나 이상의 입력, 예컨대, 명령어의 명령어 유형(예를 들어, 연산 코드), 프로그램 카운터에 대한 태그, 명령어가 페치되는 애플리케이션 메모리 어드레스에 대한 태그(예를 들어, 프로그램 카운터가 가리키는 메모리 내 워드), 명령어의 피연산자가 저장되는 레지스터에 대한 태그 및/또는 명령어에 의해 참조되는 애플리케이션 메모리 어드레스에 대한 태그를 포함할 수도 있다. 하나의 실시예에서, 명령어는 로드 명령어일 수도 있고, 명령어의 피연산자는 애플리케이션 데이터가 로딩되는 애플리케이션 메모리 어드레스일 수도 있다. 쿼리는 특히, 애플리케이션 메모리 어드레스가 저장되는 레지스터에 대한 태그뿐만 아니라, 애플리케이션 메모리 어드레스 자체에 대한 태그를 포함할 수도 있다. 또 다른 실시예에서, 명령어는 연산 명령어일 수도 있고, 2개의 피연산자가 있을 수도 있다. 쿼리는 특히, 제1 피연산자가 저장되는 제1 레지스터에 대한 제1 태그 및 제2 피연산자가 저장되는 제2 레지스터에 대한 제2 태그를 포함할 수도 있다.
본 개시내용의 양상이 단일의 명령어에 관한 메타데이터 처리를 한 번에 수행하는 것으로 제한되지 않는다는 것이 또한 이해되어야 한다. 일부 실시형태에서, 예를 들어, 단일의 쿼리를 통해 정책 프로세서(150)로의, 호스트 프로세서의 ISA 내 다수의 명령어가 번들로서 함께 확인될 수도 있다. 이러한 쿼리는 정책 프로세서(150)가 번들 내 모든 명령어를 확인하게 하도록 더 많은 입력을 포함할 수도 있다. 유사하게, 단일의 쿼리를 통해 정책 프로세서(150)로의, 다수의 작동에 의미상으로 대응할 수도 있는, CISC 명령어가 확인될 수도 있고, 쿼리는 정책 프로세서(150)가 CISC 명령어 내 모든 구성 작동을 확인하게 하도록 충분한 입력을 포함할 수도 있다.
일부 실시형태에서, 정책 프로세서(150)는 구성 가능한 처리 장치, 예컨대, 마이크로프로세서, 필드-프로그램 가능 게이트 어레이(field-programmable gate array: FPGA) 및/또는 임의의 다른 적합한 회로망을 포함할 수도 있다. 정책 프로세서(150)는 호스트 프로세서(110)의 허용된 작동을 설명하는 하나 이상의 정책을 내부에 로딩할 수도 있다. 태그 처리 하드웨어(140)로부터의 쿼리에 응답하여, 정책 프로세서(150)는 정책 중 하나 이상의 정책을 평가하여 질문 내 명령어가 허용되어야 하는지를 결정할 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 질문 내 명령어와 관련된 하나 이상의 입력(예를 들어, 위에서 설명된 바와 같음)과 함께, 인터럽트 신호를 정책 프로세서(150)로 전송할 수도 있다. 정책 프로세서(150)는 즉각적인 또는 연기된 처리를 위해 쿼리의 입력을 작동 메모리(예를 들어, 하나 이상의 큐)에 저장할 수도 있다. 예를 들어, 정책 프로세서(150)는 일부 적합한 방식으로(예를 들어, 각각의 쿼리와 연관된 우선도 플래그에 기초하여) 쿼리의 처리의 우선순위를 매길 수도 있다.
일부 실시형태에서, 정책 프로세서(150)가 하나 이상의 입력((예를 들어, 하나 이상의 입력 태그)에 관한 하나 이상의 정책을 평가하여 질문 내 명령어가 허용되어야 하는지를 결정할 수도 있다. 명령어가 허용되지 않는다면, 정책 프로세서(150)는 태그 처리 하드웨어(140)에 통지할 수도 있다. 명령어가 허용된다면, 정책 프로세서(150)는 태그 처리 하드웨어(140)로 리턴될 하나 이상의 출력(예를 들어, 하나 이상의 출력 태그)을 산출할 수도 있다. 하나의 실시예로서, 명령어는 저장 명령어일 수도 있고, 정책 프로세서(150)는 애플리케이션 데이터가 저장되는 애플리케이션 메모리 어드레스에 대한 출력 태그를 산출할 수도 있다. 또 다른 실시예로서, 명령어는 연산 명령어일 수도 있고, 정책 프로세서(150)는 연산 명령어를 실행시키는 결과를 저장하기 위한 레지스터에 대한 출력 태그를 산출할 수도 있다.
일부 실시형태에서, 정책 프로세서(150)는 정책의 평가에 관한 과업에 더하여 또는 그 대신에 하나 이상의 과업을 수행하도록 프로그래밍될 수도 있다. 예를 들어, 정책 프로세서(150)는 태그 초기화, 부트 로딩, 애플리케이션 로딩, 메타데이터 메모리(125)에 대한 메모리 관리(예를 들어, 정보 정리), 로깅, 디버깅 지원, 및/또는 인터럽트 처리에 관한 과업을 수행할 수도 있다. 이 과업 중 하나 이상의 과업은 백그라운드(예를 들어, 태그 처리 하드웨어(140)로부터의 쿼리를 서비스하는 것 사이)에서 수행될 수도 있다. 일부 실시형태에서, 태그 처리 하드웨어(140)는 결정에 대한 하나 이상의 입력 태그 및/또는 하나 이상의 출력 태그를 매핑하기 위한 규칙 캐시(144)를 포함할 수도 있다. 예를 들어, 규칙 캐시(144)로의 쿼리는 호스트 프로세서(110)에 의해 실행되는 명령어가 허용되어야 하는지를 확인하도록 정책 프로세서(150)에 대한 쿼리로서 유사하게 구성될 수도 있다. 캐시 히트가 있다면, 규칙 캐시(144)는 명령어가 허용되어야 하는지에 대한 결정 및/또는 하나 이상의 출력 태그(예를 들어, 정책 프로세서(150)와 관련되어 위에서 설명된 바와 같음)를 출력할 수도 있다. 규칙 캐시(144) 내 이러한 매핑은 정책 프로세서(150)로부터 쿼리 응답을 사용하여 생성될 수도 있다. 그러나, 이것은 필요하지 않고, 일부 실시형태에서와 같이, 하나 이상의 매핑이 사전에 규칙 캐시(144)에 설치될 수도 있다.
일부 실시형태에서, 규칙 캐시(144)는 성능 향상을 제공하도록 사용될 수도 있다. 예를 들어, 하나 이상의 입력 태그를 가진 정책 프로세서(150)를 쿼리하기 전에, 태그 처리 하드웨어(140)는 하나 이상의 입력 태그를 가진 규칙 캐시(144)를 먼저 쿼리할 수도 있다. 캐시 히트의 경우에, 태그 처리 하드웨어(140)는 정책 프로세서(150)를 쿼리하는 일 없이, 규칙 캐시(144)로부터 결정 및/또는 하나 이상의 출력 태그를 진행할 수도 있다. 이것은 상당한 가속을 제공할 수도 있다. 캐시 미스의 경우에, 태그 처리 하드웨어(140)는 정책 프로세서(150)를 쿼리할 수도 있고 잠재적인 미래의 사용을 위해 정책 프로세서(150)로부터의 응답을 규칙 캐시(144)에 설치할 수도 있다.
일부 실시형태에서, 태그 처리 하드웨어(140)가 질문 내 명령어가 허용되어야 한다고 (예를 들어, 규칙 캐시(144)의 히트 또는 규칙 캐시(144)의 미스에 기초하여, 정책 위반이 발견되지 않는 것을 나타내는 정책 프로세서(150)로부터의 응답에 뒤이어) 결정한다면, 태그 처리 하드웨어(140)는 명령어를 실행시키는 결과가 메모리에 다시 기입될 수도 있다는 것을 기입 인터로크(112)에 나타낼 수도 있다. 부가적으로 또는 대안적으로, 태그 처리 하드웨어(140)는 메타데이터 메모리(125), 태그 맵 테이블(142), 및/또는 하나 이상의 출력 태그(예를 들어, 규칙 캐시(144) 또는 정책 프로세서(150)로부터 수신된 바와 같음)를 가진 태그 레지스터 파일(146)을 업데이트할 수도 있다. 하나의 실시예로서, 저장 명령어에 대해, 메타데이터 메모리(125)는 태그 맵 테이블(142)에 의한 어드레스 변환을 통해 업데이트될 수도 있다. 예를 들어, 저장 명령어에 의해 참조되는 애플리케이션 메모리 어드레스는 태그 맵 테이블(142)로부터 메타데이터 메모리 어드레스를 검색하도록 사용될 수도 있고, 규칙 캐시(144) 또는 정책 프로세서(150)로부터 수신된 메타데이터는 메타데이터 메모리 어드레스에서 메타데이터 메모리(125)에 저장될 수도 있다. 업데이트될 메타데이터가 태그 맵 테이블(142) 내 엔트리에 저장되는(메타데이터 메모리(125)에 저장되는 것과 대조적으로) 또 다른 실시예로서, 태그 맵 테이블(142) 내 엔트리가 업데이트될 수도 있다. 또 다른 실시예로서, 연산 명령어에 대해, 연산 명령어를 실행시키는 결과를 저장하기 위한 호스트 프로세서(110)에 의해 사용되는 레지스터에 대응하는 태그 레지스터 파일(146) 내 엔트리가 적절한 태그를 갖게 업데이트될 수도 있다.
일부 실시형태에서, 태그 처리 하드웨어(140)가 질문 내 명령어가 정책 위반을 나타낸다고 (예를 들어, 규칙 캐시(144)의 미스에 기초하여, 정책 위반이 발견되는 것을 나타내는 정책 프로세서(150)로부터의 응답에 뒤이어) 결정한다면, 태그 처리 하드웨어(140)는 메모리에 다시 기입되는 것 대신에, 명령어를 실행시키는 결과가 폐기되어야 한다는 것을 기입 인터로크(112)에 나타낼 수도 있다. 부가적으로 또는 대안적으로, 태그 처리 하드웨어(140)는 인터럽트를 호스트 프로세서(110)로 전송할 수도 있다. 인터럽트를 수신하는 것에 응답하여, 호스트 프로세서(110)는 임의의 적합한 위반 처리 코드로 전환될 수도 있다. 예를 들어, 호스트 프로세서(100)는 위반을 중단할 수도 있고, 재설정할 수도 있고, 로깅할 수도 있고 애플리케이션 코드 및/또는 애플리케이션 데이터에 관한 무결성 확인을 계속할 수도 있고, 수행할 수도 있고, 조작자에게 통지할 수도 있고, 등을 할 수도 있다.
일부 실시형태에서, 태그 처리 하드웨어(140)는 하나 이상의 구성 레지스터를 포함할 수도 있다. 이러한 레지스터는 태그 처리 하드웨어(140)의 구성 인터페이스를 통해 액세스 가능할 수도 있다(예를 들어, 정책 프로세서(150)에 의해). 일부 실시형태에서, 태그 레지스터 파일(146)은 구성 레지스터로서 구현될 수도 있다. 부가적으로 또는 대안적으로, 하나 이상의 애플리케이션 구성 레지스터 및/또는 하나 이상의 메타데이터 구성 레지스터가 있을 수도 있다.
구현예의 상세사항이 도 1에 도시되고 위에서 논의되지만, 본 개시내용의 양상이 임의의 특정한 컴포넌트 또는 컴포넌트의 조합의 사용 또는 컴포넌트의 임의의 특정한 배열로 제한되지 않는다는 것이 이해되어야 한다. 예를 들어, 일부 실시형태에서, 정책 프로세서(150)의 하나 이상의 기능이 호스트 프로세서(110)에 의해 수행될 수도 있다. 실시예로서, 호스트 프로세서(110)는 상이한 작동 모드, 예컨대, 사용자 애플리케이션에 대한 사용자 모드 및 운영 체제에 대한 특권 모드를 가질 수도 있다. 정책-관련 코드(예를 들어, 태깅, 정책 평가 등)는 운영 체제와 동일한 특권 모드 또는 상이한 특권 모드(예를 들어, 권한 상승에 대한 훨씬 더 많은 보호를 가짐)로 진행될 수도 있다.
도 2는 일부 실시형태에 따른, 정책을 시행하기 위한 실례가 되는 소프트웨어 시스템(200)을 도시한다. 예를 들어, 소프트웨어 시스템(200)은 실행 가능한 코드를 생성하고/하거나 실행 가능한 코드를 도 1에 도시된 실례가 되는 하드웨어 시스템(100)에 로딩하도록 프로그래밍될 수도 있다.
도 2에 도시된 실시예에서, 소프트웨어 시스템(200)은 컴파일러(205), 링커(210), 및 로더(loader)(215)를 가진 소프트웨어 툴체인을 포함한다. 컴파일러(205)는 소스 코드를 실행 가능한 코드로 처리하도록 프로그래밍될 수도 있고, 소스 코드는 상위 계층 언어일 수도 있고 실행 가능한 코드는 하위 계층 언어일 수도 있다. 링커(210)는 컴파일러(205)에 의해 생성된 다수의 객체 파일과 단일의 객체 파일을 결합하여 로더(215)에 의해 메모리(예를 들어, 도 1의 실시예에서 실례가 되는 애플리케이션 메모리(120))에 로딩되게 하도록 프로그래밍될 수도 있다. 도시되지 않았지만, 링커(210)에 의해 출력되는 객체 파일은 적합한 포맷으로 변환될 수도 있고 영구 저장소, 예컨대, 플래시 메모리, 하드 디스크, 판독 전용 메모리(ROM) 등에 저장될 수도 있다. 로더(215)는 객체 파일을 영구 저장소로부터 검색할 수도 있고, 이 객체 파일을 랜덤 액세스 메모리(random-access memory: RAM)에 로딩할 수도 있다.
일부 실시형태에서, 컴파일러(205)는 정책을 시행할 때 사용되는 정보를 생성하도록 프로그래밍될 수도 있다. 예를 들어, 컴파일러(205)가 소스 코드를 실행 가능한 코드로 변환할 때, 컴파일러(205)는 데이터 유형, 프로그램 시맨틱 및/또는 메모리 레이아웃에 관한 정보를 생성할 수도 있다. 하나의 실시예로서, 컴파일러(205)는 함수의 하나 이상의 명령어와 컨벤션 작동(convention operation)의 호출(예를 들어, 하나 이상의 매개변수를 발신자 함수로부터 수신자 함수로 지나가게 하는 것, 하나 이상의 값을 수신자 함수로부터 발신자 함수로 리턴하는 것, 수신자 함수가 제어를 발신자 함수로 다시 리턴 등을 할 때 리턴 어드레스를 저장하여 실행이 발신자 함수의 코드로 재개되는 경우를 나타내는 것)을 구현하는 하나 이상의 명령어 간의 경계를 표시하도록 프로그래밍될 수도 있다. 이러한 경계는 예를 들어, 특정한 명령어를 함수 프롤로그 또는 함수 에필로그로서 태깅하도록 초기화 동안 사용될 수도 있다. 실행 시간에, 스택 정책이 시행될 수도 있어서, 함수 프롤로그 명령어가 실행될 때, 호출 스택 내 특정한 위치(예를 들어, 리턴 어드레스가 저장되는 곳)가 "프레임" 위치로서 태깅될 수도 있고, 함수 에필로그 명령어가 실행될 때, "프레임" 태그가 제거될 수도 있다. 스택 정책은 함수(함수 프롤로그 및 함수 에필로그와 대조적임)의 본체를 구현하는 명령어가 오직 "프레임" 위치에 대한 액세스를 판독한다는 것을 나타낼 수도 있다. 이것은 공격자가 리턴 어드레스를 덮어쓰는 것을 방지할 수도 있어서 제어를 얻는다.
또 다른 실시예로서, 컴파일러(205)는 예를 들어, 제어 흐름 분석을 수행하여 하나 이상의 제어 전달 지점 및 각각의 목적지를 식별하도록 프로그래밍될 수도 있다. 이러한 정보는 제어 흐름 정책을 시행할 때 사용될 수도 있다. 추가의 또 다른 실시예로서, 컴파일러(205)는 예를 들어, 유형 라벨, 예컨대, 포인터, 정수, 부동 소수점 수(Floating-Point Number) 등을 적용함으로써, 유형 분석을 수행하도록 프로그래밍될 수도 있다. 이러한 정보는 오용(예를 들어, 부동 소수점 수를 포인터로서 사용함)을 방지하는 정책을 시행하도록 사용될 수도 있다.
도 2에 도시되지 않았지만, 소프트웨어 시스템(200)은 일부 실시형태에서, 링커(210)에 의해 생성되는 객체 코드(소스 코드와 대조적임)를 입력으로서 취하도록 프로그래밍된 이진 분석 컴포넌트를 포함할 수도 있고, 컴파일러(205)에 의해 수행된 분석(예를 들어, 제어 흐름 분석, 유형 분석 등)과 유사한 하나 이상의 분석을 수행할 수도 있다.
도 2의 실시예에서, 소프트웨어 시스템(200)은 정책 컴파일러(220) 및 정책 링커(225)를 더 포함한다. 정책 컴파일러(220)는 정책 언어로 기입된 정책을 정책 코드로 변환하도록 프로그래밍될 수도 있다. 예를 들어, 정책 컴파일러(220)는 정책 코드를 C 또는 일부 다른 적합한 프로그래밍 언어로 출력할 수도 있다. 부가적으로 또는 대안적으로, 정책 컴파일러(220)는 정책에 의해 참조되는 하나 이상의 메타데이터 심볼을 출력할 수도 있다. 초기화 때, 이러한 메타데이터 심볼은 하나 이상의 메모리 위치, 레지스터, 및/또는 타깃 시스템의 다른 기계 상태와 연관될 수도 있고, 타깃 시스템의 메타데이터 메모리 또는 일부 다른 하드웨어 저장소(예를 들어, 레지스터)에 로딩될 메타데이터의 이진 표현으로 변경될 수도 있다. 위에서 논의되는 바와 같이, 이러한 메타데이터의 이진 표현 또는 이진 표현이 저장되는 위치에 대한 포인터는 때때로 "태그"로서 본 명세서에서 지칭된다.
본 개시내용의 양상이 로드 시간에 메타데이터 심볼을 변경하는 것으로 제한되지 않는다는 것이 이해되어야 한다. 일부 실시형태에서, 하나 이상의 메타데이터 심볼은 정적으로(예를 들어, 컴파일 시간 또는 링크 시간에) 변경될 수도 있다. 예를 들어, 정책 컴파일러(220)는 하나 이상의 적용 가능한 정책을 처리할 수도 있고, 하나 이상의 정책에 의해 규정된 하나 이상의 메타데이터 심볼을 정적으로-규정된 이진 표현으로 변경할 수도 있다. 부가적으로 또는 대안적으로, 정책 링커(225)는 하나 이상의 메타데이터 심볼을 정적으로-규정된 이진 표현 또는 정적으로-규정된 이진 표현을 저장하는 데이터 구조에 대한 포인터로 변경할 수도 있다. 발명자는 메타데이터 심볼을 정적으로 변경하는 것이 유리하게는 로드 시간 처리를 감소시킬 수도 있다는 것을 인지하고 이해하였다. 그러나, 본 개시내용의 양상은 메타데이터 심볼을 임의의 특정한 방식으로 변경하는 것으로 제한되지 않는다.
일부 실시형태에서, 정책 링커(225)는 객체 코드(예를 들어, 링커(210)에 의해 출력되는 것으로서), 정책 코드(예를 들어, 정책 컴파일러(220)에 의해 출력되는 것으로서), 및/또는 타깃 설명을 처리하여, 초기화 사양을 출력하도록 프로그래밍될 수도 있다. 초기화 사양은 하나 이상의 하드웨어 컴포넌트(예를 들어, 도 1에 도시된 실례가 되는 하드웨어 시스템(100)) 및/또는 하나 이상의 소프트웨어 컴포넌트(예를 들어, 운영 체제, 하나 이상의 사용자 애플리케이션 등)를 가진 타깃 시스템을 안전하게 초기화하도록 로더(215)에 의해 사용될 수도 있다.
일부 실시형태에서, 타깃 설명은 복수의 지명된 엔티티의 설명을 포함할 수도 있다. 지명된 엔티티는 타깃 시스템의 컴포넌트를 나타낼 수도 있다. 하나의 실시예로서, 지명된 엔티티는 하드웨어 컴포넌트, 예컨대, 구성 레지스터, 프로그램 카운터, 레지스터 파일, 타이머, 상태 플래그, 메모리 전달 장치, 입력/출력 디바이스 등을 나타낼 수도 있다. 또 다른 실시예로서, 지명된 엔티티는 소프트웨어 컴포넌트, 예컨대, 함수, 모듈, 구동기, 서비스 루틴 등을 나타낼 수도 있다.
일부 실시형태에서, 정책 링커(225)는 타깃 설명을 검색하여 정책과 관련되는 하나 이상의 엔티티를 식별하도록 프로그래밍될 수도 있다. 예를 들어, 정책은 특정한 엔티티 이름과 대응하는 메타데이터 심볼을 매핑할 수도 있고, 정책 링커(225)는 타깃 설명을 검색하여 이 엔티티 이름을 가진 엔티티를 식별할 수도 있다. 정책 링커(225)는 타깃 설명으로부터 이 엔티티의 설명을 식별할 수도 있고, 설명을 사용하여 링커(210)에 의해 출력된 객체 코드에 적절한 메타데이터 심볼로 주석을 달 수도 있다. 예를 들어, 정책 링커(225)는 판독 라벨을 실행 가능하고 링크 가능한 포맷(Executable and Linkable Format: ELF) 파일의 .rodata 섹션에, 판독 라벨 및 기입 라벨을 ELF 파일의 .data 섹션에 그리고 실행 라벨을 ELF 파일의 .text 섹션에 적용할 수도 있다. 이러한 정보는 메모리 액세스 제어 및/또는 실행 가능한 코드 보호에 대한 정책을 (예를 들어, 판독, 기입 및/또는 실행 특권을 확인함으로써) 시행하도록 사용될 수도 있다.
본 개시내용의 양상은 타깃 설명을 정책 링커(225)에 제공하는 것으로 제한되지 않는다는 것이 이해되어야 한다. 일부 실시형태에서, 타깃 설명은 정책 링커(225)에 더하여 또는 그 대신에, 정책 컴파일러(220)에 제공될 수도 있다. 정책 컴파일러(220)는 오류에 대한 타깃 설명을 확인할 수도 있다. 예를 들어, 정책에서 참조되는 엔티티가 타깃 설명에서 존재하지 않는다면, 오류는 정책 컴파일러(220)에 의해 플래깅될 수도 있다. 부가적으로 또는 대안적으로, 정책 컴파일러(220)는 시행될 하나 이상의 정책과 관련되는 엔티티에 대한 타깃 설명을 검색할 수도 있고, 오직 관련된 엔티티에 대한 엔티티 설명을 포함하는 필터링된 타깃 설명을 생성할 수도 있다. 예를 들어, 정책 컴파일러(220)는 시행될 정책의 "초기" 내역 내 엔티티 이름과 타깃 설명 내 엔티티 설명을 매칭할 수도 있고, 대응하는 "초기" 내역이 없는 엔티티 설명을 타깃 설명으로부터 제거할 수도 있다.
일부 실시형태에서, 로더(215)는 정책 링커(225)에 의해 생성되는 초기화 사양에 기초하여 타깃 시스템을 초기화할 수도 있다. 예를 들어, 도 1의 실시예를 참조하면, 로더(215)는 데이터 및/또는 명령어를 애플리케이션 메모리(120)에 로딩할 수도 있고, 초기화 사양을 사용하여 애플리케이션 메모리(120)에 로딩되는 데이터 및/또는 명령어와 연관된 메타데이터 라벨을 식별할 수도 있다. 로더(215)는 초기화 사양 내 메타데이터 라벨을 각각의 이진 표현으로 변경할 수도 있다. 그러나, 본 개시내용의 양상은 로드 시간에 메타데이터 라벨을 변경하는 것으로 제한되지 않는다는 것이 이해되어야 한다. 일부 실시형태에서, 수많은 메타데이터 라벨이 정책 링킹 동안 알려져 있을 수도 있고, 따라서 메타데이터 라벨이 그때, 예를 들어, 정책 링커(225)에 의해 변경될 수도 있다. 이것은 유리하게는 초기화 사양의 로드 시간 처리를 감소시킬 수도 있다.
일부 실시형태에서, 정책 링커(225) 및/또는 로더(215)는 다시 메타데이터 라벨로의 메타데이터의 이진 표현의 매핑을 유지할 수도 있다. 이러한 매핑은 예를 들어, 디버거(debugger)(230)에 의해 사용될 수도 있다. 예를 들어, 일부 실시형태에서, 디버거(230)는 하나 이상의 엔티티 그리고 각각의 엔티티에 대해, 엔티티와 연관된 하나 이상의 메타데이터 라벨의 세트를 나열할 수도 있는, 초기화 사양의 인간 판독 가능 버전을 디스플레이하도록 제공될 수도 있다. 부가적으로 또는 대안적으로, 디버거(230)는 메타데이터 라벨로 주석이 달린 어셈블리 코드, 예컨대, 메타데이터 라벨로 주석이 달린 객체 코드를 디스어셈블(disassemble)함으로써 생성된 어셈블리 코드를 디스플레이하도록 프로그래밍될 수도 있다. 이러한 어셈블리 코드의 실시예가 도 6에 도시되고 아래에서 논의된다. 디버깅 동안, 디버거(230)는 실행 동안 프로그램을 중단할 수도 있고, 인간 판독 가능 형태인, 엔티티 및/또는 엔티티와 연관된 메타데이터 태그의 검사를 허용할 수도 있다. 예를 들어, 디버거(230)는 정책 위반에 수반된 엔티티 및/또는 정책 위반을 유발하는 메타데이터 태그의 검사를 허용할 수도 있다. 디버거(230)는 다시 메타데이터 라벨로의 메타데이터의 이진 표현의 매핑을 사용하여 그렇게 행해질 수도 있다.
일부 실시형태에서, 종래의 디버깅 툴은 예를 들어, 위에서 설명된 바와 같은, 정책 시행과 관련된 이슈의 검토를 허용하도록 연장될 수도 있다. 부가적으로 또는 대안적으로, 독립형 정책 디버깅 툴이 제공될 수도 있다.
일부 실시형태에서, 로더(215)는 메타데이터 라벨의 이진 표현을 메타데이터 메모리(125)에 로딩할 수도 있고, 애플리케이션 메모리 어드레스와 메타데이터 메모리 어드레스 간의 매핑을 태그 맵 테이블(142)에 기록할 수도 있다. 예를 들어, 로더(215)는 명령어가 애플리케이션 메모리(120)에 저장되는 애플리케이션 메모리 어드레스와 명령어와 연관된 메타데이터가 메타데이터 메모리(125)에 저장되는 메타데이터 메모리 어드레스를 매핑하는 태그 맵 테이블(142) 내에 엔트리를 생성할 수도 있다. 부가적으로 또는 대안적으로, 로더(215)는 메타데이터를 태그 맵 테이블(142) 자체(메타데이터 메모리(125)와 대조적임)에 저장하여, 임의의 메모리 작동을 수행하는 일 없이 액세스할 수도 있다.
일부 실시형태에서, 로더(215)는 태그 맵 테이블(142)에 더하여 또는 그 대신에 태그 레지스터 파일(146)을 초기화할 수도 있다. 예를 들어, 태그 레지스터 파일(146)은 복수의 엔티티에 각각 대응하는 복수의 레지스터를 포함할 수도 있다. 로더(215)는 초기화 사양으로부터 엔티티와 연관된 메타데이터를 식별할 수도 있고, 메타데이터를 태그 레지스터 파일(146)의 각각의 레지스터에 저장할 수도 있다.
도 1의 실시예를 다시 참조하면, 로더(215)는 일부 실시형태에서, 정책 프로세서(150)에 의한 실행을 위해 정책 코드(예를 들어, 정책 컴파일러(220)에 의해 출력되는 바와 같음)를 메타데이터 메모리(125)에 로딩할 수도 있다. 부가적으로 또는 대안적으로, 개별적인 메모리(도 1에서 미도시)는 정책 프로세서(150)에 의한 사용을 위해 제공될 수도 있고, 로더(215)는 정책 코드 및/또는 연관된 데이터를 개별적인 메모리에 로딩할 수도 있다.
일부 실시형태에서, 메타데이터 라벨은 다수의 메타데이터 심볼에 기초할 수도 있다. 예를 들어, 엔티티는 다수의 정책을 겪을 수도 있고, 따라서 상이한 정책과 각각 대응하는 상이한 메타데이터 심볼과 연관될 수도 있다. 발명자는 메타데이터 심볼의 동일한 세트가 로더(215)에 의해 동일한 이진 표현(본 명세서에서 때때로 "캐노니컬(canonical)" 표현으로서 지칭됨)으로 변경되는 것이 바람직할 수도 있다는 것을 인지하고 이해하였다. 예를 들어, 메타데이터 라벨 {A, B, C} 및 메타데이터 라벨 {B, A, C}은 로더(215)에 의해 동일한 이진 표현으로 변경될 수도 있다. 이 방식으로, 구문상으로 상이하지만 의미상으로 동일한 메타데이터 라벨은 동일한 이진 표현을 가질 수도 있다.
발명자는 메타데이터의 이진 표현이 메타데이터 저장소에서 복사되지 않는 것을 보장하는 것이 바람직할 수도 있다는 것을 더 인지하고 이해하였다. 예를 들어, 위에서 논의되는 바와 같이, 도 1의 실시예에서 실례가 되는 규칙 캐시(144)는 입력 태그와 출력 태그를 매핑할 수도 있고, 일부 실시형태에서, 입력 태그는 이진 표현 자체와 대조적으로, 메타데이터의 이진 표현이 저장되는 메타데이터 메모리 어드레스일 수도 있다. 발명자는 메타데이터의 동일한 이진 표현이 2개의 상이한 메타데이터 메모리 어드레스(X 및 Y)에 저장된다면, 규칙 캐시(144)가 이미 메타데이터 메모리 어드레스(X)에 대한 매핑을 저장할지라도, 규칙 캐시(144)가 메타데이터 메모리 어드레스(Y)를 "인지"할 수 없다는 것을 인지하고 이해하였다. 이것은 다수의 불필요한 규칙 캐시 미스를 발생시킬 수도 있고, 이는 시스템 성능을 저하시킨다.
게다가, 발명자는 메타데이터의 이진 표현과 그 저장 위치 사이의 일대일 대응을 갖는 것이 메타데이터 비교를 용이하게 할 수도 있다는 것을 인지하고 이해하였다. 예를 들어, 메타데이터의 2개의 피스 사이의 대등은 메타데이터의 이진 표현을 비교하는 것과 대조적으로, 메타데이터 메모리 어드레스를 비교함으로써 간단히 결정될 수도 있다. 이것은 특히, 이진 표현이 큰 경우에(예를 들어, 단일의 메타데이터 라벨로 패킹된 많은 메타데이터 심볼), 상당한 성능 개선을 발생시킬 수도 있다.
따라서, 일부 실시형태에서, 로더(215)는 메타데이터의 이진 표현을 (예를 들어, 메타데이터 메모리(125)에) 저장하기 전에, 메타데이터의 이진 표현이 이미 저장되었는지를 확인할 수도 있다. 메타데이터의 이진 표현이 이것이 다시 상이한 저장 위치에 저장되는 것 대신에 이미 저장되었다면, 로더(215)는 기존의 저장 위치와 관련될 수도 있다. 이러한 확인은 시동 때 그리고/또는 프로그램이 시동에 후속하여 (동적 링킹이 있거나 없이) 로딩될 때 행해질 수도 있다.
부가적으로 또는 대안적으로, 유사한 확인은 메타데이터의 이진 표현이 하나 이상의 정책을 평가하는 결과로서 (예를 들어, 실례가 되는 정책 프로세서(150)에 의해) 생성될 때 수행될 수도 있다. 메타데이터의 이진 표현이 이미 저장되었다면, 기존의 저장 위치에 대한 참조가 사용될 수도 있다(예를 들어, 실례가 되는 규칙 캐시(144)에 설치됨).
일부 실시형태에서, 로더(215)는 해시값과 저장 위치를 매핑하는 해시 테이블을 생성할 수도 있다. 메타데이터의 이진 표현을 저장하기 전에, 로더(215)가 해시 함수를 사용하여 메타데이터의 이진 표현을 해시값으로 축소시키고, 해시 테이블이 해시값과 연관된 엔트리를 이미 포함하는지를 확인할 수도 있다. 만약 그러하다면, 로더(215)는 메타데이터의 이진 표현이 이미 저장되었는지를 결정할 수도 있고, 엔트리로부터, 메타데이터의 이진 표현과 관련된 정보(예를 들어, 메타데이터의 이진 표현에 대한 포인터 또는 이 포인터에 대한 포인터)를 검색할 수도 있다. 해시 테이블이 이미 해시값과 연관된 엔트리를 포함하지 않는다면, 로더(215)는 메타데이터의 이진 표현을 (예를 들어, 레지스터 또는 메타데이터 메모리 내 위치에) 저장할 수도 있고, 새로운 엔트리를 해시값과 연관되는 해시 테이블에서 생성할 수도 있고, 적절한 정보(예를 들어, 레지스터 식별자, 메타데이터 메모리 내 메타데이터의 이진 표현에 대한 포인터, 이 포인터에 대한 포인터 등)를 새로운 엔트리에 저장할 수도 있다. 그러나, 본 개시내용의 양상은 이미 저장된 메타데이터의 이진 표현을 추적하기 위한 해시 테이블의 사용으로 제한되지 않는다는 것이 이해되어야 한다. 부가적으로 또는 대안적으로, 다른 데이터 구조, 예컨대, 그래프 데이터 구조, 주문 목록, 미주문 목록 등이 사용될 수도 있다. 임의의 적합한 데이터 구조 또는 데이터 구조의 조합은 임의의 적합한 기준 또는 기준의 조합, 예컨대, 액세스 시간, 메모리 사용 등에 기초하여 선택될 수도 있다.
기법이 구현예의 임의의 특정한 방식으로 제한되지 않기 때문에, 위에서 소개되고 아래에서 더 상세히 논의되는 기법이 임의의 수많은 방식으로 구현될 수도 있다는 것이 이해되어야 한다. 구현의 상세사항의 실시예는 실례 목적으로만 본 명세서에서 제공된다. 게다가, 본 개시내용의 양상이 임의의 특정한 기법 또는 기법의 조합의 사용으로 제한되지 않기 때문에, 본 명세서에 개시된 기법은 개별적으로 또는 임의의 적합한 조합으로 사용될 수도 있다.
예를 들어, 컴파일러(예를 들어, 도 2의 실시예에서 실례가 되는 컴파일러(205) 및/또는 실례가 되는 정책 컴파일러(220))를 포함하는 실시예가 본 명세서에서 논의지만, 본 개시내용의 양상은 이것으로 제한되지 않는다는 것이 이해되어야 한다. 일부 실시형태에서, 소프트웨어 툴체인은 인터프리터로서 구현될 수도 있다. 예를 들어, 지연 초기화 방식은 하나 이상의 디폴트 심볼(예를 들어, "미초기화됨(UNINITIALIZED)")이 시동 때 태깅을 위해 사용될 수도 있는 경우에 구현될 수도 있고, 정책 프로세서(예를 들어, 도 1의 실시예에서 실례가 되는 정책 프로세서(150))는 하나 이상의 정책을 평가할 수도 있고 하나 이상의 디폴트 심볼을 적시 방식으로 변경할 수도 있다.
위에서 논의되는 바와 같이, 정책 규칙의 세트는 호스트 프로세서에 대한 명령어와 연관된 메타데이터에 적용되어 명령어가 허용되어야 하는지를 결정할 수도 있다. 본 개시내용의 양상은 이 명령어와 연관된 메타데이터의 처리를 간소화하기 위한 기법에 관한 것이다. 일부 실시형태에서, 새로운 기법이 호스트 프로세서에 대한 명령어를 변환시켜서 메타데이터 처리를 (예를 들어, 호스트 프로세서에 의해 처리되는 명령어를 변경하는 일 없이) 용이하게 한다. 이 기법은, 복잡한 명령어를 2개 이상의 더 간단한 명령어의 세트로 나누는 것(이하에 "언롤링"으로서 지칭됨), 명령어(들)를 제거하는 것(예를 들어, 메타데이터 처리와 관련되지 않은 명령어를 제거하는 것), 새로운 명령어(들)를 추가하는 것(예를 들어, 명시적 명령어가 아닌 호스트 프로세서에 의해 수행되는 암시적 작동을 캡처하기 위한 명령어를 추가하는 것) 및/또는 명령어를 완전히 교체하는 것(예를 들어, 하나의 명령어를 또 다른, 상이한 명령어로 교체하는 것)을 포함하는 임의의 다양한 방식으로 명령어를 변환시킬 수도 있다. 발명자는 이 기법이 아래에서 더 상세히 설명되는 바와 같이 메타데이터 처리에서 무수한 다른 복잡한 상황을 간략화할 수도 있다는 것을 인지하고 이해하였다. 따라서, 정책을 생성하고/하거나 이 복잡한 명령어가 정책을 위반하는지를 결정하는 계산 복잡성이 상당히 감소될 수도 있다.
메타데이터 처리를 위한 명령어를 변환시키기 위한 이 기법은 예를 들어, 도 1에 도시된 하드웨어 시스템(100) 내 태그 처리 하드웨어(140)를 사용하는 임의의 다양한 방식으로 구현될 수도 있다. 일부 실시형태에서, 태그 처리 하드웨어(140)는 호스트 프로세서(110)에 대한 명령어(예를 들어, 호스트 프로세서(110)에 의해 실행되는 명령어, 호스트 프로세서(110)에 의해 현재 실행되는 명령어 또는 호스트 프로세서(110)에 의해 아직 실행되지 않은 명령어)와 연관된 명령어 정보를 수신할 수도 있다. 명령어와 연관된 명령어 정보는 예를 들어, 명령어 또는 명령어의 임의의 성분, 예컨대, 전체 명령어 자체, 명령어의 명령어 유형(예를 들어, 연산 코드), 명령어가 저장되는 어드레스, 피연산자가 저장되는 레지스터 및/또는 명령어에 의해 참조되는 하나 이상의 메모리 어드레스를 나타내는 임의의 정보를 포함할 수도 있다. 명령어 정보를 수신할 때, 태그 처리 하드웨어(140)는 명령어가 메타데이터 처리를 위해 변환되어야 하거나 또는 변경되지 않은 채로 남아있을 수도 있는지를 결정할 수도 있다. 태그 처리 하드웨어(140)가 명령어가 변환되어야 한다고 결정한다면, 태그 처리 하드웨어(140)는 수신된 명령어를 교체할 수도 있는 변환된 명령어와 연관된 상이한 명령어 정보를 획득할 수도 있다. 게다가, 태그 처리 하드웨어(140)는 변환된 명령어와 연관된 메타데이터를 획득할 수도 있다. 그 외에, 태그 처리 하드웨어(140)는 수신된 명령어 정보를 온전하게 둘 수도 있고 수신된 명령어 정보와 연관된 메타데이터를 획득할 수도 있다.
태그 처리 하드웨어(140)는 특정한 명령어가 수신된 명령어 정보에 관한 정보를 저장하는 제1 데이터 구조와 같은, 명령어 정보와 연관된 메타데이터를 사용하여 변환되어야 하는지를 결정할 수도 있다. 제1 데이터 구조는 예를 들어, 명령어가 허용되어야 하는지를 결정하도록 처리될 메타데이터 또는 수신된 명령어 정보(메타데이터 처리 목적용) 및 연관된 메타데이터를 무효화하도록 사용될 변환된 명령어(들)와 연관된 명령어 정보를 저장하는 다른 데이터 구조(들)(예를 들어, 제2 데이터 구조 및/또는 제3 데이터 구조)에 대한 포인터를 포함할 수도 있다. 태그 맵 테이블(142)은 제1 데이터 구조를 바로 저장할 수도 있고/있거나 제1 데이터 구조의 위치에 대한 포인터(예를 들어, 제1 데이터 구조가 저장되는 메타데이터 메모리(125) 내 위치에 대한 포인터)를 저장할 수도 있다.
태그 처리 하드웨어(140)는 명령어가 임의의 다양한 방식으로 제1 데이터 구조를 사용하여 변환되어야 하는지를 결정할 수도 있다. 일부 실시형태에서, 제1 데이터 구조는 명령어가 변환되어야 하는지를 나타내는 플래그(예를 들어, 비트)를 포함할 수도 있다. 따라서, 태그 처리 하드웨어(140)는 제1 데이터 구조에 저장된 플래그를 판독할 수도 있고 플래그의 상태에 기초하여 명령어가 변환되어야 하는지를 결정할 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 플래그에 응답하는 메타데이터가 제1 상태에 있을 때 제1 데이터 구조 내 부가적인 정보를 해석할 수도 있고 플래그에 응답하는 포인터가 제2 상태에 있을 때 제1 데이터 구조 내 부가적인 정보를 해석할 수도 있다. 부가적으로 또는 대안적으로, 태그 처리 하드웨어는 명령어가 변환되어야 하는지를 나타낼 제1 데이터 구조의 특정한 범위의 값을 해석하도록 구성될 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 제1 데이터 구조의 값이 값의 프로그래밍된 범위 내에 있다면 제1 데이터 구조 내 정보를 제2 데이터 구조에 대한 포인터로서 해석할 수도 있고 제1 데이터 구조 내 정보를 제1 데이터 구조의 값이 프로그래밍된 범위 외에 있는 것에 응답하는 메타데이터로서 해석할 수도 있다.
일단 태그 처리 하드웨어(140)가 명령어가 변환되어야 하는지를 결정한다면, 태그 처리 하드웨어(140)는 규칙 캐시(144)에 제공될 수도 있는 명령어 정보 및 연관된 메타데이터를 생성하여 호스트 프로세서(110)에 대한 명령어가 정책을 위반하는지를 결정할 수도 있다. 이 정보를 생성하도록 채용된 특정한 방법은 명령어 정보가 변환되어야 하는지에 의존할 수도 있다.
태그 처리 하드웨어(140)가 명령어 정보가 변환되어야 한다고 결정한다면, 태그 처리 하드웨어(140)는 (예를 들어, 제1 데이터 구조에서 포인터를 사용하여) 제1 데이터 구조에서 식별된 다른 데이터 구조에 액세스할 수도 있어서 새로운 명령어 정보 및 연관된 메타데이터를 획득하고 출력한다. 다른 방식으로, 태그 처리 하드웨어(140)는 제1 데이터 구조로부터 직접적으로 메타데이터를 획득할 수도 있고 제1 데이터 구조로부터 획득된 연관된 메타데이터와 함께 수신된 명령어 정보를 출력할 수도 있다.
메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법은 유리하게는 예를 들어, 복잡한 명령어를 다수의 더 작은 명령어로 나누도록(예를 들어, 복잡한 명령어를 언롤링) 채용될 수도 있다. 발명자는 일부 ISA에서 특정한 명령어가 수개의 하위 계층 작동을 실행시킬 수도 있다는 것을 인지하였다. 예를 들어, ARM T32 ISA의 버전 7에서 PUSH 명령어는 최대 16개의 값을 연속적인 메모리 위치에 저장하고 스택 포인터 레지스터를 증분시킨다. 따라서, 단일의 PUSH 명령어는 최대 17개의 상이한 하드웨어 엔티티(예를 들어, 스택 포인터 레지스터에 더하여, 새로운 값에 대한 최대 16개의 메모리 위치)의 상태 변화를 유발할 수도 있다. 메타데이터와 이러한 복잡한 명령어를 직접적으로 연관시키려는 시도는 어려울 수도 있고, 처리 시간, 메모리 사용, 및/또는 정책을 생성하고 이 복잡한 명령어가 정책을 위반하는지를 결정하는 복잡성을 증가시킬 수도 있다. 본 명세서에서 설명된 기법을 사용하여, ARM T32 ISA의 버전 7의 PUSH 명령어는 더 작은 수의 저장 위치(예를 들어, 2개 이하의 저장 위치)를 각각 오직 수반하는 저장 작동의 세트로 변환될 수도 있다. 예를 들어, 복잡한 명령어와 연관된 제1 데이터 구조는 더 간단한, 더 작은 명령어에 대한 연관된 메타데이터와 함께 규칙 캐시로 출력될 수도 있는 더 간단한, 더 작은 명령어의 새로운 세트(복잡한 명령어 대신)로 태그 프로세서(140)를 향하게 하는 포인터를 포함할 수도 있다. 복잡한 명령어를 이러한 방식으로 언롤링하는 것은 명령어가 정책을 위반하는지를 결정하는 계산 복잡성과 함께 명령어와 연관된 메타데이터의 크기 및 복잡성을 감소시킨다. 따라서, 이 새로운 기법은 시스템이 소수의 계산 자원과 함께 이 복잡한 명령어와 연관된 메타데이터를 처리하게 한다.
발명자는 메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법이 태그 처리 하드웨어(140)가 호스트 프로세서(110), 예컨대, 인터럽트 서비스 루틴(interrupt service routine: ISR)을 시작하고, 스레드(thread)를 전환하고/하거나 시스템 호출을 행하는 호스트 프로세서(110)에 의한 명령어의 실행과 연관된 콘텍스트의 변화와 연관된 암시적 명령어를 포함하는, 암시적 명령어(예를 들어, 호스트 프로세서에 의해 실행되는 연관된 명시적 명령어가 없는 작동)를 처리하게 하도록 채용될 수도 있다는 것을 더 이해하였다. 이 실시형태에서, 메타데이터 처리를 위한 명령어를 변환시키기 위한 기법은 호스트 프로세서(110)에 대한 임의의 암시적 명령어를 정확하게 반영하는 규칙 캐시에 제공될 수도 있는 새로운 명령어 정보 및 연관된 메타데이터를 생성하도록 채용될 수도 있다.
ISR이 트리거링될 때, 호스트 프로세서(110)는 인터럽트 프로그램 카운터(program counter: PC)의 현재 값을 선택된 메모리 위치(예를 들어, 호스트 프로세서(110)의 특정한 디자인에 의존적임)에 자동으로 저장할 수도 있고 인터럽트 PC에 대한 교체로서 ISR용 PC를 로딩할 수도 있다. 그 결과, 호스트 프로세서(110)는 이러한 작동을 수행하도록 임의의 명시적 명령어를 수신하는 일 없이 인터럽트 PC 및 ISR용 PC 둘 다의 저장 위치를 변경할 수도 있다. 게다가, 태그 처리 하드웨어(140)에 의해 수신되는 명령어 정보는 이 저장 작동이 발생했다는 것을 직접적으로 반영하지 않을 수도 있다. 메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법은 이 암시적 작동의 성능을 반영하는 새로운 명령어 정보 및 연관된 메타데이터를 생성하도록 채용될 수도 있다. 예를 들어, ISR의 제1 명령어와 연관된 제1 데이터 구조는 호스트 프로세서에 의해 수행되는 참 작동을 반영하는 다른 데이터 구조 내 하나 이상의 명령어의 세트 및 연관된 메타데이터에 대한 포인터(예를 들어, ISR용 PC 및 인터럽트 PC의 저장 위치를 변경하기 위한 명령어와 결합된 ISR의 제1 명령어)를 포함할 수도 있다. 따라서, 규칙 캐시에 제공된 명령어 정보 및 연관된 메타데이터는 호스트 프로세서(110)에 의해 수행되는 암시적 저장 명령어와 함께 ISR의 제1 명령어 둘 다를 캡처한다.
여전히 추가의 다른 기법이 암시적 명령어를 처리하도록 채용될 수도 있다는 것이 이해되어야 한다. 일부 실시형태에서, 규칙 캐시(144)가 더 이상 이 특정한 상황을 처리하지 못하기 때문에, 태그 처리 시스템(140)은 이 암시적 명령어를 처리하고 따라서 규칙 캐시(144)의 크기를 감소시키도록 정책 프로세서(150)를 의도적으로 트리거링할 수도 있다. 예를 들어, 제1 데이터 구조는 규칙 캐시(144)에 저장된 대응하는 규칙이 없는 콘텍스트 변화 후 제1 명령어(예를 들어, ISR의 제1 명령어)와 연관된 특정한 메타데이터를 저장할 수도 있다. 따라서, 규칙 캐시(144)는 규칙 캐시 미스의 트리거 및 규칙 캐시 내 규칙에 대한 콘텍스트 변화 후 제1 명령어와 연관된 특정한 메타데이터를 매칭하는데에 성공하지 못할 것이다. 규칙 캐시 미스는 태그 처리 하드웨어(140)가 응답을 위해 정책 프로세서(150)를 쿼리하게 할 수도 있다. 정책 프로세서(150)는 결국 특정한 메타데이터를 판독할 수도 있고 콘텍스트 변화 후 제1 명령어를 처리하는 것에 특정한 과정을 수행할 수도 있다. 예를 들어, ISR의 경우에, 정책 프로세서(150)는 적절한 변화를 수행할 수도 있어서 이 암시적 작동 자체를 반영하고(예를 들어, 메타데이터의 동일한 스와프를 수행하고) 태그 처리 하드웨어(140)를 ISR의 제1 명령어에 적용 가능한 단일의-사용 규칙에 제공한다. 일부 실시형태에서, 정책 프로세서(150)는 단일의-사용 규칙을 태그 처리 하드웨어(140)에 제공하고 이어서 적절한 변화를 수행하여, 태그 처리 하드웨어(140)가 명령어를 대기하는 시간량을 감소시킬 수도 있다. 대안적으로 또는 부가적으로, 정책 프로세서는 규칙 캐시 미스를 겪은 명령어의 작동을 반영하도록 적절한 변화를 수행할 수도 있고, 따라서 단일의-사용 규칙은 NOP 규칙일 수도 있다.
발명자는 메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법이 호스트 프로세서(110)에 의해 실행되는 컴퓨터 프로그램에 대한 명령어를 변화시키는 일 없이 태그 처리 하드웨어(140)에 의해 처리되는 보안 루틴을 생성하도록 채용될 수도 있다는 것을 더 이해하였다. 예를 들어, 태그 처리 하드웨어(140)는 보안 루틴에 대한 명령어 정보(및 연관된 메타데이터)를 가진 특정한 명령어와 연관된 명령어 정보를 보충할 수도 있다. 그 결과, 결합된 명령어 정보(및 연관된 메타데이터)는 입력으로서 규칙 캐시(144)에 제공될 수도 있다. 따라서, 규칙 캐시(144)(및/또는 태그 처리 하드웨어(140) 내 다른 컴포넌트)는 보안 루틴과 연관된 작동을 유발할 수도 있다.
컴퓨터 프로그램에 대한 보안 정책을 생성할 때, 호스트 프로세서(110)에 의한 컴퓨터 프로그램의 실행 동안 특정한 포인트에서(예를 들어, 인터럽트 엔트리에서, 시스템 호출에서, 재설정 벡터에서 그리고/또는 보편적 함수 호출에서) 시스템의 메타데이터 상태의 변화를 발생시키는 것이 바람직할 수도 있다. 예를 들어, 다양한 규칙은 컴퓨터 프로그램의 실행 동안 이 포인트에서 활성화(또는 비활성화)되어야 할 수도 있다. 부가적인 메타데이터와 이 명령어를 연관시킴으로써 이 변화를 유발하려는 시도는 규칙 캐시(144)가 처리되는 것을 어렵게 할 수도 있다. 게다가, 메타데이터와 처리될 이 명령어를 연관시키는 목적을 위해 기능(예를 들어, NOP)을 간단히 수행하지 못하는 실행 가능한 프로그램에 명령어를 추가하는 것은, 이것이 애플리케이션 이진의 변경뿐만 아니라 성능 패널티의 발생(예를 들어, 이 추가의 명령어를 실행시키도록 호스트 프로세서(110)에 강요함으로써)을 요구하기 때문에 문제가 된다. 본 명세서에서 설명된 기법은 태그 처리 하드웨어(140)가 보안 루틴과 연관된 부가적인 명령어 정보(및 연관된 메타데이터)를 가진 특정한 명령어(예를 들어, 위에서 임의의 특정한 포인트에서의 명령어)와 연관된 명령어 정보를 보충하게 하도록 채용될 수도 있다.
보안 루틴이 임의의 다양한 기능, 예컨대, 보안 특권을 변경하는 것, 규칙을 (예를 들어, 규칙 캐시(144)에서) 활성화시키는 것 및/또는 규칙을 (예를 들어, 규칙 캐시(144)에서) 비활성화시키는 것을 수행할 수도 있다는 것이 이해되어야 한다. 예를 들어, 보안 특권은 하위 특권 사용자 애플리케이션으로부터 상위 특권 운영 체제로 제어를 이송시키는 시스템 호출 요구에서 변화될 수도 있다. 따라서, 태그 프로세서(140)는 하드웨어에서 이러한 특권 모드를 구현하지 않는 프로세서에서 규정된 특권 모드를 유발할 수도 있다. 게다가, 하드웨어에서 이러한 특권 모드를 구현하는 호스트 프로세서에 대해, 특권 모드를 구현하는 기능이 태그 프로세서(140)에 의해 수행될 수도 있기 때문에, 저장 및/또는 복구 기계 맥락으로부터 발생하는 성능 패널티가 제거될 수도 있다. 또 다른 실시예에서, 보안 루틴은 특정한 기능에 대한 엔트리에 관한 특권을 상승시키고 기능의 완료 때 특권을 낮추는 미세 분화된 보안 정책을 생성하도록 채용될 수도 있다. 따라서, 특권 시스템 호출의 개념은 보통의 소프트웨어 기능으로 확장될 수도 있다. 추가의 또 다른 실시예에서, 보안 루틴은 라이브러리 기능의 특정한 실시를 식별할 수도 있다. 이 실시예에서, 메모리 안전 정책은 메모리의 구역을 초기화하는 것에 의존할 수도 있고 메모리 할당 코드는 공유 라이브러리 내 메모리 설정 기능을 사용한다. 기능 전에 보안 루틴을 실행하는 것은 메모리 설정 기능이 컴퓨터 프로그램에 의한 보통의 사용 대신에 메모리를 초기화하도록 호출될 때 식별을 허용할 수도 있다.
발명자는 메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법이 제한된 정보가 호스트 프로세서(110)로부터 액세스 가능할지라도 메타데이터 처리를 가능하게 하도록 채용될 수도 있다는 것을 더 이해하였다. 예를 들어, 태그 처리 하드웨어(140)에 의해 수신된 명령어 정보는 호스트 프로세서에 대한 특정한 명령어에 대한 명령어 정보(예를 들어, 호스트 프로세서에 대한 명령어의 필터링된 표현)만을 포함할 수도 있다. 일부 실시형태에서, 수신된 명령어 정보는 분기 명령어에 관한 정보만을 포함할 수도 있고 다른 비-분기 명령어에 관한 정보를 생략할 수도 있다. 이 실시형태에서, 분기 명령어와 연관된 명령어 정보는 분기 명령어로 시작하고 그다음의 후속의 분기 명령어로 종료되는 전체 명령어 경로에 대응하는 하나 이상의 명령어의 세트로 언롤링될 수도 있다. 따라서, 태그 처리 하드웨어(140)는 오직 호스트 프로세서(110)에 대한 명령어(예를 들어, 오직 분기 명령어)의 일부에 기초하여 명령어 정보 및 연관된 메타데이터를 규칙 캐시(144)에 제공할 수도 있다. 그 결과, 태그 처리 하드웨어(140)와 명령어 정보의 소스(예를 들어, 호스트 프로세서(110)) 사이의 대역폭 필요조건이 상당히 감소된다. 따라서, 소수의(만약에 있다면) 변경은 적절한 정보를 태그 처리 하드웨어(140)에 제공하여 메타데이터 처리를 가능하게 하도록 호스트 프로세서(110)에 대해 이루어져야 할 수도 있다.
분기 명령어는 분기 명령어를 포함하는 전체 명령어 경로에 대응하는 하나 이상의 명령어의 세트로 임의의 다양한 방식으로 언롤링될 수도 있다. 일부 실시형태에서, 소프트웨어 애플리케이션(예를 들어, 소프트웨어 툴체인)은 호스트 프로세서(110)에 의해 실행될 컴퓨터 프로그램에 대한 명령어를 각각 제1 분기 명령어로 시작하고, 제2 분기 명령어로 종료되고, 제1 분기 명령어와 제2 분기 명령어 사이의 하나 이상의 중간 명령어를 비교하는 명령어 경로로 분할할 수도 있다. 따라서, 이 명령어 경로는 분기를 포함하지 않는 컴퓨터 프로그램 내 명령어의 가장 긴 연속적인 세그먼트일 수도 있다. 세그먼트 내 모든 명령어와 연관된 명령어 정보(연관된 메타데이터와 함께)는 (예를 들어, 호스트 프로세서(110)에 의한 컴퓨터 프로그램의 실행 전에) 제1 분기 명령어와 연관되는 데이터 구조에 저장될 수도 있다. 그 결과, 태그 처리 하드웨어(140)는 분기 명령어를 분기 명령어가 대응하는 명령어 경로와 연관된 모든 명령어로 언롤링할 수도 있다.
다양한 기법, 예컨대, 정적 코드 분석 기법이 전체 명령어 경로를 동일한 순 효과를 달성하는(예를 들어, 의미상으로 같은) 명령어의 더 작은 세트로 압축시키도록 채용될 수도 있다는 것이 이해되어야 한다. 명령어의 이 더 작은 세트는 전체 명령어 경로 대신에 데이터 구조 내 분기 명령어와 연관될 수도 있다. 따라서, 미리 결정된 분기 명령어에 대한 태그 처리 하드웨어(140)에 의해 생성된 명령어 정보 및 연관된 메타데이터의 크기가 감소될 수도 있다. 예를 들어, 명령어 경로는 명령어 경로 내 작동을 결정하도록 분석될 수도 있다. 명령어 경로 내 식별된 작동은 결국 동일한 시맨틱을 달성하는 명령어 경로 내 결정된 작동에 기초하여 명령어의 더 작은 세트를 생성하도록 채용될 수도 있다. 그 결과, 다수의 명령어를 사용하여 구현되는 특정한 작동(예컨대, 공제 작동 및 시프트 작동의 시퀀스)은 더 작은 수의 명령어(예를 들어, 단일의 분할 작동)로 간소화될 수도 있다. 게다가, 명령어 경로 내 하나 이상의 명령어는 특정한 명령어가 메타데이터 처리 목적에 대해 무관한 경우에 명령어의 간소화된 세트를 형성하도록 완전히 제거될 수도 있다.
메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법은 메타데이터와 명령어 정보를 연관시키고/시키거나 명령어가 정책을 위반하는지를 결정하는 과정을 더 간소화하도록 다른 기법과 결합되어 사용될 수도 있다. 일부 실시형태에서, 태그 처리 하드웨어(140)는 호스트 프로세서(110)에 의해 사용되는 ISA와 분리되고 구별되는 자체 ISA를 채용할 수도 있다. 태그 처리 하드웨어(140) 내에 채용된 ISA는 메타데이터의 연관성 및 분석을 위해 특별히 설계될 수도 있다. 따라서, 태그 처리 하드웨어(140)와 무관한 명령어 내 임의의 정보, 예컨대, 상이한 수학적 연산에 대한 연산 코드 간의 구분은 수정될 수 있거나 또는 완전히 제거될 수 있다. 예를 들어, 연산 코드, 즉, AND, OR, XOR, NOT, ADD, SUBTRACT, MULTIPLY, DIVIDE, REMAINDER, SHIFT 사이의 차이는 메타데이터와 이 명령어를 연관시키는 목적을 위해 중요하지 않을 수도 있다. 따라서, 모든 이 연산 코드는 태그 처리 하드웨어에 의해 사용되는 ISA 내 단일의 연산 코드에 매핑될 수도 있다.
태그 처리에서 개별적인 ISA를 채용하는 것은 태그 처리 하드웨어(140) 전반에 걸쳐 호스트 프로세서(110)에 의해 채용되는 ISA를 사용하는 것을 통해 임의의 수의 이득을 제공할 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 호스트 프로세서(110)에 의해 채용되는 ISA에 대해 애그노스틱(agnostic)일 수도 있다. 따라서, 동일한(또는 상당히 유사한) 태그 처리 하드웨어(140)가 사용될 수도 있고 상이한 ISA를 가진 매우 다양한 프로세서 유형을 갖는다. 게다가, 태그 처리 하드웨어(140)에 의해 적용되는 정책은, 정책이 오직 단일의 ISA 내 명령어 및 연관된 메타데이터에 관하여 작동되도록 설계되어야 하기 때문에 더 간단하게 기입될 수도 있고, 더 입증 가능할 수도 있고, 상이한 ISA에 걸쳐 더 휴대 가능할 수도 있다. 게다가 더, 하드웨어 영역은 새로운 ISA가 호스트 ISA보다 더 작은 수의 잠재적인 연산 코드를 가질 수도 있기 때문에(예를 들어, 단일의 피연산자에 대한 다양한 수학적 연산 코드의 간소화 때문에) 명령어 연산 코드를 표현하도록 더 작은 수의 비트를 필요로 함으로써 감소될 수도 있다. 예를 들어, 연산 코드를 나타내도록 요구되는 비트의 수가 감소될 수도 있고, 따라서 연산 코드를 저장하기 위해 필요한 메모리 용량을 감소시킬 수도 있다. 부가적으로, 규칙 캐시가 연산 코드를 규칙이 위반되는지를 결정하기 위한 입력으로서 수신하는 실시형태에서, 규칙 캐시의 폭은 연산 코드를 나타내도록 필요한 비트의 감소된 수에 기인하여 감소될 수도 있다.
메타데이터 처리를 위한 명령어를 변환시키기 위한 본 명세서에서 설명된 기법을 수행하고 호스트 ISA와 상이한 자체 ISA를 채용하도록 구성되는 태그 처리 시스템(140)의 예시적인 구현예가 도 3에 도시된다. 도시된 바와 같이, 태그 처리 하드웨어(140)는 제1 ISA(314) 내 명령어와 연관되는 제3 명령어 정보(301)를 수신한다. 제3 명령어 정보(301)는 변환기(304)를 사용하여 제1 ISA(314)로부터 제2, 상이한 ISA(316)로 변환되어 제1 명령어 정보(303)를 생성할 수도 있다. 태깅 컴포넌트(306)가 태그 맵 테이블(142) 내 정보 및/또는 제1, 제2, 및/또는 제3 데이터 구조(308, 310, 312)에 저장된 정보를 사용하여 제2 명령어 정보(305) 및 연관된 메타데이터(307)를 식별할 수도 있다. 태깅 컴포넌트(306)에 의해 출력되는 제2 명령어 정보(305) 및 연관된 메타데이터(307)가 결국 태그 처리 하드웨어(140)에 의해 채용되어, 명령어가 정책을 (예를 들어, 위에서 설명된 기법 중 임의의 기법을 사용하여) 위반하는지를 결정할 수도 있다.
제3 명령어 정보(301)는 제1 ISA(314) 내 호스트 프로세서를 위한 명령어를 나타내는 정보를 포함할 수도 있다. 제3 명령어 정보(301)는 예를 들어, 정보의 다음의 피스 중 하나 이상의 피스, 즉, (1) 명령어 유형(예를 들어, 연산 코드), (2) 명령어가 저장되는 어드레스, (3) 명령어에 의해 참조되는 하나 이상의 메모리 어드레스, (4) 하나 이상의 레지스터 식별자, (5) 명령어 자체 또는 명령어의 임의의 성분 및/또는 (6) 조건부 명령어가 실행되었는지 아닌지를 나타내는 신호를 포함할 수도 있다. 제3 명령어 정보(110)가 수신되는 특정한 방식은 특정한 구현예에 기초하여 변경될 수도 있다.
일부 실시형태에서, 제3 명령어 정보(301)는 호스트 프로세서의 최종 처리 단계에 의해 출력되는 명령어를 나타내는 정보를 포함할 수도 있다. 따라서, 제3 명령어 정보(301)는 회수 명령어(예를 들어, 호스트 프로세서에 의해 완전히 실행되고 프로그램 흐름의 실행을 위해 필요한 명령어)에 관한 정보를 오직 포함할 수도 있다. 이 실시형태에서, 제3 명령어 정보(301)는 제1 명령어 정보(303)를 생성하도록 변환을 위한 변환기(304)에 직접적으로 제공될 수도 있다.
일부 실시형태에서, 제3 명령어 정보(301)는 호스트 프로세서의 중간 단계(예를 들어, 최종 단계보다 더 이전의 단계)에 의해 출력되는 명령어에 관한 정보를 포함할 수도 있다. 따라서, 제3 명령어 정보(301)는 컴퓨터 프로그램의 실행을 위해 필요한 명령어(예를 들어, 회수 명령어일 명령어)와 컴퓨터 프로그램의 실행을 위해 필요하지 않은 명령어(예를 들어, 회수 명령어가 아닐 명령어) 둘 다에 관한 정보를 포함할 수도 있다. 이 실시형태에서, 태그 처리 하드웨어(140)는 회수 명령어일 명령어와 연관된 정보를 절대 회수되지 않는 명령어와 연관된 정보로부터 분리하기 위한 메커니즘을 구현할 수도 있다. 따라서, 회수 명령어(예를 들어, 완전히 실행될 명령어)일 명령어와 연관된 정보만이 변환기(304)에 제공될 수도 있고 반면에 회수되지 않을 명령어(예를 들어, 완전히 실행되지 않을 명령어)에 관한 정보는 무시될 수도 있다. 임의의 다양한 기법은 명령어 정보를 분리하도록 채용될 수도 있다. 예를 들어, 한 쌍의 선입선출(First-In-First-Out: FIFO) 큐가 채용될 수도 있고 제1 FIFO 큐는 호스트 프로세서로부터 수신된 명령어를 캡처할 수도 있고, 회수될 일부 명령어와 절대 회수되지 않을 일부 명령어의 혼합뿐만 아니라, 이 명령어의 각각이 저장되는 대응하는 어드레스를 포함한다. 제2 FIFO 큐는 호스트 프로세서에 의해 회수되는 명령어의 어드레스를 캡처할 수도 있다. 일단 FIFO 큐 둘 다가 비어 있지 않다면, 태그 처리 하드웨어(140)는 제1 FIFO 큐 내 명령어 어드레스가 제2 FIFO 큐 내 명령어 어드레스와 매칭될 때까지(예를 들어, 제1 FIFO 큐에 저장된 특정한 명령어가 회수되는 것을 나타냄) 제1 FIFO 내 명령어를 팝 오프할(pop off) 수도 있다. 제1 FIFO 큐 내 매칭 명령어는 결국 제1 명령어 정보(303)로의 변환을 위해 변환기(304)에 제공될 수도 있다.
일부 실시형태에서, 제3 명령어 정보(301)는 호스트 프로세서로부터 수신된 명령어 어드레스에 기초하여 명령어를 페치하도록 호스트 프로세서의 명령어 캐시의 판독 인터페이스를 스누핑(snooping)하고 캐시(예를 들어, 미러 캐시)의 미러 이미지를 유지함으로써 획득될 수도 있다. 이 실시형태에서, 태그 처리 하드웨어(140)는 L1 캐시의 판독 인터페이스를 스누핑함으로써 호스트 프로세서의 L1 캐시의 미러를 유지할 수도 있다. L1 캐시가 판독하는 모든 명령어에 대해, 태그 처리 하드웨어(140)는 미러 캐시에 포함된 대응하는 명령어를 제1 명령어 정보(303)로의 변환을 위한 변환기(304)로의 입력으로서 제공할 수도 있다. 호스트 프로세서의 파이프라인 지연 및/또는 호스트 프로세서로부터 정보를 수신할 때의 지연을 처리하기 위해, 미러 캐시로의 기입은 동일한 사이클 수만큼 지연될 수도 있다. 예를 들어, L1 캐시가 재충전 작용을 행하게 하는 명령어는 최근에 소비된 명령어를 포함하는 L1 캐시 내 라인의 퇴거(및/또는 덮어쓰기)를 유발할 수도 있다. 태그 처리 하드웨어(140)가 L1 캐시를 실시간으로 미러링한다면, 태그 처리 하드웨어(140)는 호스트 프로세서로부터 아직 흐르지 않은 미러 캐시로부터의 명령어(들)를 포함하는 라인을 (호스트 프로세서 내 파이프라인 지연에 기인하여) 퇴거시킬 수도 있다. 그러나, 태그 처리 하드웨어(140)가 미러 캐시를 업데이트하기 전에 호스트 프로세서로부터 흐르도록 호스트 프로세서의 단계의 수와 동일한 명령어의 수를 대기한다면, 미러 캐시 내 모든 라인은 명령어 페치가 호스트 프로세서에서 발생할 때 L1 캐시의 상태와 매칭된다. 호스트 L1 캐시 및 미러링된 L1 캐시가 상이한 퇴거 정책을 갖는 가능성에 기인하여, 메커니즘은 또한 미러 캐시가 미스(예를 들어, 캐시 저장되지 않은 코드, 캐시의 크기를 초과하는 선형 코드에 대한 프로그램 흐름 변화 이벤트 등에 의해 유발됨)를 겪을 때 메인 메모리로부터 명령어 비트를 판독하기 위해 제공될 수도 있다.
일부 실시형태에서, 제3 명령어 정보(301)는 메인 메모리로부터 명령어를 리페치하기 위해 호스트 프로세서로부터 수신된 명령어 어드레스를 사용하여 태그 처리 하드웨어(140)에 의해 획득될 수도 있다. 이 실시형태에서, 태그 처리 하드웨어(140)는 예를 들어, 호스트 프로세서로부터 수신된 명령어와 연관된 명령어 어드레스를 사용하여 메인 메모리로부터 명령어를 판독할 수도 있다. 따라서, 태그 처리 하드웨어(140)는 호스트 프로세서의 L1 캐시의 미러 이미지를 유지할 필요가 없을 수도 있다. 그러나, 일부 실시형태에서, 태그 처리 하드웨어(140)는 L1 캐시의 미러 이미지인 미러 캐시를 활용할 수도 있다. 미러 캐시를 채용하는 것은 유리하게는 시간적으로 가깝게 2회 발생하는 명령어의 각각의 라인에 대한 메모리 페치를 방지할 수도 있다. 따라서, 하드웨어의 전력 소비 및 메모리 대역폭 혼잡이 감소될 수도 있다. 위에서 논의된 스누프 방법과 달리, 이 방법은 태그 처리 하드웨어(140) 내 미러 캐시가 호스트 프로세서의 L1 명령어 캐시와 동일한 크기 및 형상을 갖길 요구하지 않을 수도 있다. 일부 실시형태에서, 이 방법이 최근에 페치된 라인의 버퍼를 덧붙이도록 호스트의 L1 판독 인터페이스의 스누핑을 활용할 수도 있어서 태그 처리 하드웨어(140)의 미러 캐시 내 미스가 이 버퍼링된 라인 중 하나를 히트할 수도 있다. 일부 실시형태에서, 이 방법에서, 태그 처리 하드웨어(140) 내 미러 캐시에 저장된 명령어 데이터는 예를 들어, ISA 변환을 겪기 전 또는 후의 데이터일 수도 있다. 미러 캐시 내 명령어를 변환하는 것은 유리하게는 명령어의 크기를 감소시킬 수도 있고(예를 들어, 변환된 명령어가 호스트 명령어보다 더 작을 수도 있기 때문에), 이는 미러 캐시의 크기뿐만 아니라 전력을 감소시킬 수도 있다.
위에서 논의되는 바와 같이, 태그 처리 하드웨어(140)는 호스트 프로세서에 의해 채용된 ISA(예를 들어, 제1 ISA(314))와 상이한 자체 ISA(예를 들어, 제2 ISA(316))를 채용할 수도 있다. 따라서, 태그 처리 하드웨어(140)는 제1 ISA에 있는 제3 명령어 정보(301)를 제2 ISA에 있는 대응하는 제1 명령어 정보(303)로 변환하기 위한 컴포넌트를 포함할 수도 있다. 이 변환은 하드웨어 변환기, 소프트웨어 변환기 또는 이들의 임의의 조합으로서 구현될 수도 있는, 변환기(304)에 의해 적어도 부분적으로 수행될 수도 있다.
제3 명령어 정보(301)를 제1 명령어 정보(303)로 변환하기 위해 변환기(304)에 의해 채용된 특정한 방법은 특정한 구현예에 기초하여 변경될 수도 있다. 일부 실시형태에서, 변환기(304)는 태그 처리 하드웨어(140)의 실행 시간 동안 동적으로 변환을 수행할 수도 있다. 이 실시형태에서, 변환기(304)는 이 변환을 수행하기 위해 제1 및 제2 ISA(314 및 316) 각각 사이의 알려진 관계의 세트(예를 들어, 룩업 테이블의 형태임)를 채용할 수도 있다. 예를 들어, 변환기(304)가 제1 ISA 내 연산 코드와 제2 ISA 내 연산 코드 사이의 매핑을 사용하여(예를 들어, 제1 ISA(314) 내 연산 코드(ADD 및 SUBTRACT)가 제2 ISA(316) 내 연산 코드(MATH OPERATION)와 매핑됨) 명령어의 연산 코드 부분을 제1 ISA(314)로부터 제2 ISA(316)로 변환할 수도 있다. 다른 실시형태에서, 제1 및 제2 ISA(314 및 316), 각각 사이의 컴퓨터 프로그램 내 명령어의 변환은 태그 처리 하드웨어(140)의 실행 전에 수행될 수도 있고 메모리에 저장될 수도 있다. 이 실시형태에서, 변환기(304)는 제1 ISA(314) 내 입력 명령어와 매칭되는 제2 ISA(316) 내 사전 변환된 명령어를 메모리로부터 검색할 수도 있다. 그 결과, 변환기(304)의 복잡성이 감소될 수도 있다.
일부 실시형태에서, 제1 ISA(314) 내 특정한 명령어는 제2 ISA(316) 내 단일의 명령어와 말끔히 매핑되지 않을 수도 있다. 대신에, 제1 ISA(314) 내 이 명령어는 제2 ISA(316) 내 복수의 명령어와 매핑될 수도 있다(예를 들어, 제1 ISA(314) 내 이 명령어는 다수의 더 간단한 명령어로 언롤링되어야 함). 이 실시형태에서, 변환기(304)는 제2 ISA(316) 내 다수의 명령어에 대응하는 제1 ISA(314) 내 명령어를 완전히 변환하지 못할 수도 있다. 변환기(304)는 대신에, 완전히 변환되는 제2 명령어 정보(305)를 생성하기 위해 태깅 컴포넌트(306)에 의해 결국 사용될 수도 있는 미변환된(또는 부분적으로 변환된) 제1 명령어 정보(303)를 태깅 컴포넌트(306)에 제공할 수도 있다. 예를 들어, 제3 명령어 정보(301)가 제2 ISA(316) 내 다수의 명령어와 매핑되는 것에 응답하여, 변환기(304)는 간단히 제1 ISA(314) 내 제3 명령어 정보(301)를 제1 명령어 정보(303)로서 태깅 컴포넌트(306)로 통과시킬 수도 있다. 대안적으로, 변환기(304)는 수신된 제3 명령어 정보(301)가 대응하는 제2 ISA(316) 내 명령어의 세트 내 단일의 명령어(예를 들어, 제1 명령어)를 제1 명령어 정보(303)로서 출력할 수도 있다. 이 실시예에서, 변환기(304)는 또한 변환이 불완전하다는 것을 태깅 컴포넌트(306)에 통지하기 위한 플래그를 출력할 수도 있다.
변환되어야 하는 명령어 사이의 구분은 태그 처리 하드웨어(140)의 실행 시간 전에 결정될 수도 있다. 일부 실시형태에서, 소프트웨어 애플리케이션(예를 들어, 소프트웨어 툴체인)은 변환되어야 하는 호스트 프로세서에 의해 실행될 컴퓨터 프로그램 내 명령어를 식별할 수도 있다. 이 실시형태에서, 소프트웨어 애플리케이션은 컴퓨터 프로그램 내 어떤 명령어가 변환되어야 하는지의 표시를 생성할 수도 있고 이 표시를 메타데이터 메모리(예를 들어, 메타데이터 메모리(125))에 저장할 수도 있다. 예를 들어, 소프트웨어 애플리케이션은 미리 결정된 명령어가 변환되어야 하는지를 나타내는 플래그를 포함하는 각각의 명령어에 대한 제1 데이터 구조(308)를 생성할 수도 있다. 명령어가 변환될 필요가 없다면(도 3에서 상태 "0"으로 도시됨), 제1 데이터 구조(308) 내 플래그는 각각의 명령어(예를 들어, 특정한 제1 데이터 구조(308)와 대응하는 명령어)와 연관될 메타데이터를 수반할 수도 있다. 명령어가 변환되어야 한다면(도 3에서 상태 "1"으로 도시됨), 제1 데이터 구조(308) 내 플래그는 새로운 명령어 정보(제3 데이터 구조(312)로서 도시됨) 및 연관된 메타데이터(제2 데이터 구조(310)로서 도시됨)를 포함하는 다른 데이터 구조(들)에 대한 포인터(들)를 수반할 수도 있다. 일부 실시형태에서, 제1 데이터 구조(308)는 오직 제2 및 제3 데이터 구조(310 및 312) 중 하나에 대한 포인터를 포함할 수도 있다. 이 실시형태에서, 나머지 데이터 구조(예를 들어, 제1 데이터 구조(308)에 대한 명시적 포인터가 없는 데이터 구조)는 다른 데이터 구조(예를 들어, 제1 데이터 구조(308)에 대한 명시적 포인터가 있는 데이터 구조)와 이격된 메모리 내 고정된 오프셋에 위치될 수도 있다. 이에 의해, 데이터 구조(310 및 312) 중 하나는 제1 데이터 구조(308) 내 포인터를 사용하여 발견될 수도 있고 나머지 데이터 구조는 포인터의 타깃으로부터 이격되어 고정된 거리에 있는 또 다른 메모리 위치를 판독함으로써 발견될 수도 있다. 다른 실시형태에서, 제1 데이터 구조(308)는 제2 데이터 구조(310) 및 제3 데이터 구조(312) 둘 다에 대한 포인터를 포함할 수도 있다.
이 제2 및 제3 데이터 구조(310 및 312), 각각이 부가적인 명령어 정보 및/또는 메타데이터가 필요하다면 추가의 또 다른 데이터 구조에 대한 포인터를 더 포함할 수도 있다는 것이 이해되어야 한다. 예를 들어, 제3 데이터 구조(312)는 일부 명령어 정보 및 부가적인 명령어 정보를 가진 또 다른 데이터 구조에 대한 포인터를 포함할 수도 있다. 이 실시예에서, 제3 데이터 구조(312) 내 플래그는 부가적인 정보가 이용 가능하다는 것을 나타내도록 설정될 수도 있다(예를 들어, 플래그는 상태 "0" 대신에 상태 "1"일 수도 있음). 유사하게, 제2 데이터 구조(310)는 일부 메타데이터 및 부가적인 메타데이터를 가진 또 다른 데이터 구조에 대한 포인터를 포함할 수도 있다.
일부 실시형태에서, 특정한 명령어가 변환되어야 하는지에 관한 저장된 정보는 제2 ISA(316)에서 완전히 변환(예를 들어, 적절하게 변환)되는 제2 명령어 정보(305) 및 연관된 메타데이터(307)를 생성하기 위해 태깅 컴포넌트(306)에 의해 채용될 수도 있다. 이 실시형태에서, 태깅 컴포넌트(306)는 제1 명령어 정보(303)와 연관된 제1 데이터 구조(308)의 위치를 찾을 수도 있다. 예를 들어, 태깅 컴포넌트(306)는 제1 명령어 정보(303)에 대응하는 태그 맵 테이블(142) 내 엔트리를 식별할 수도 있고 관련된 제1 데이터 구조(308)의 위치에 대한 포인터 또는 관련된 제1 데이터 구조(308) 자체를 포함할 수도 있다. 일단 태깅 컴포넌트(306)가 관련된 제1 데이터 구조(308)를 식별한다면, 태깅 컴포넌트(306)는 제1 명령어 정보(303)가 변환되어야 하는지를 결정하도록 제1 데이터 구조(308)에 포함된 플래그를 판독할 수도 있다. 플래그가 제1 명령어 정보(303)가 변환될 필요가 없다는 것을 나타낸다면, 태깅 컴포넌트(306)는 제1 명령어 정보(303)와 연관된 메타데이터를 제1 데이터 구조(308)로부터 검색할 수도 있고 이 메타데이터를 메타데이터(307)로서 출력할 수도 있다. 게다가, 태깅 컴포넌트(306)는 제1 명령어 정보(303)를 제2 명령어 정보(305)로서 직접적으로 출력할 수도 있다. 플래그가 제1 명령어 정보(303)가 변환될 필요가 없다는 것을 나타낸다면, 태깅 컴포넌트(306)는 새로운 명령어 정보(제3 데이터 구조(312)로서 도시됨) 및 새로운 명령어와 연관된 메타데이터(제2 데이터 구조(310)로서 도시됨)를 포함하는 다른 데이터 구조에 대해 제1 데이터 구조(308)에 포함된 포인터를 판독할 수도 있다. 게다가, 태깅 컴포넌트(306)는 제3 데이터 구조(312) 내 새로운 명령어 정보를 제2 명령어 정보(305)로서 출력할 수도 있고 제2 데이터 구조(310) 내 메타데이터를 메타데이터(307)로서 출력할 수도 있다.
다양한 변경이 본 개시내용의 범위로부터 벗어나는 일 없이 도 3에 도시된 태그 처리 하드웨어(140)의 특정한 구현예에 대해 이루어질 수도 있다는 것이 이해되어야 한다. 예를 들어, 변환기(304)와 태깅 컴포넌트(306)는 단일의 컴포넌트로 결합될 수도 있다. 이 실시예에서, 태그 맵 테이블(142)은 제3 명령어 정보(301)와 제1 데이터 구조(308) 사이의 관계를 설명하는 정보를 포함할 수도 있다(예를 들어, 태그 맵 테이블(142)은 제3 명령어 정보(301)와 대응하는 제1 데이터 구조의 저장 위치를 매칭하는 엔트리를 포함할 수도 있음). 게다가, 제1 데이터 구조(308)는 새로운 명령어 정보와 연관된 메타데이터에 더하여 제3 명령어(301)의 사전 변환된(및/또는 언롤링된) 버전인 새로운 명령어 정보를 포함하는 다른 데이터 구조에 대한 포인터를 포함할 수도 있다. 따라서, 결합된 변환기와 태깅 컴포넌트는 연관된 메타데이터 및 제2 ISA로 변환되는 명령어 정보의 저장 위치에 대한 포인터를 식별하도록 제1 데이터 구조(308)에 액세스할 수도 있다. 명령어 정보는 결국 제2 명령어 정보(305)로서 제공될 수도 있고 연관된 메타데이터는 메타데이터(307)로서 출력될 수도 있다.
도 6은 일부 실시형태에 따른, 정책 엔진을 사용하여 정책을 시행하기 위한 실례가 되는 하드웨어 시스템(600)을 도시한다. 컴퓨팅 시스템은 본 명세서에서 설명된 바와 같은 보안 정책을 시행하도록 구성될 수 있는 하드웨어 시스템(600)를 포함할 수 있다. 이 하드웨어 시스템은 호스트 프로세서(110), 정책 엔진(610), 및 인터로크(112)를 포함할 수 있다. 이 컴포넌트는 보안 정책을 시행하도록 상호 작용할 수 있다. 호스트 프로세서(110)는 명령어를 실행시킬 수 있고 명령어 정보를 정책 엔진(610)에 그리고 실행된 명령어의 결과를 인터로크(112)에 제공할 수 있다. 정책 엔진(610)은 실행된 명령어가 명령어 정보를 사용하는 하나 이상의 보안 정책에 따라 허용 가능한지를 결정할 수 있다. 인터로크(112)는 명령어가 허용 가능하다는 표시가 정책 엔진(610)으로부터 수신될 때까지 실행된 명령어의 결과를 버퍼링할 수 있다. 이어서 인터로크(112)는 컴퓨터 시스템의 나머지에 의한 사용을 위한 실행된 명령어의 결과를 내보낼 수 있다.
정책 엔진(610)은 실행된 명령어가 명령어와 연관된 메타데이터에 기초하여 허용 가능한지를 결정할 수 있다. 메타데이터는 메모리 위치 또는 엔티티, 예컨대, 컴퓨팅 시스템의 하드웨어 컴포넌트 또는 소프트웨어 컴포넌트와 관련될 수도 있다. 이 아키텍처의 효율 및 융통성을 증가시키기 위한 다수의 개선예가 본 명세서에 개시된다.
특히, 발명자는 호스트 프로세서(110)로부터 수신된 명령어를 하나 이상의 다른 명령어로 변환시키도록 정책 엔진(610)을 구성하는 것이 정책 엔진(610)의 복잡성의 감소를 포함하는 이득을 제공할 수 있고 속도 정책 평가에 대한 기회를 제공할 수 있다는 것을 인지하고 이해하였다.
발명자는 또한 삽입된 명령어를 정책 평가 파이프라인에 추가하도록 정책 엔진(610)을 구성하는 것이 추론된 호스트 프로세서(110) 작동을 처리하기 위한 능력을 포함하는 이득을 제공할 수 있고 종합적인 보안 정책에 대한 추가의 지원을 제공할 수 있다는 것을 인지하고 이해하였다.
발명자는 호스트 프로세서(110)로부터 수신된 명령어를 중간 표현으로 변환시키도록 정책 엔진(610)을 구성하는 것이 구상된 시스템 및 방법의 휴대성 및 융통성을 증가시킬 수 있다는 것을 더 인지하고 이해하였다. 이러한 실시형태에서, 호스트 프로세서(110) 명령어로부터 중간 표현으로의 변환은 중간 표현에 기초한 보안 정책의 평가와는 따로 처리될 수 있고 최적화될 수 있다.
발명자는 개시된 정책 엔진(610)이 하드웨어(예를 들어, 응용 주문형 집적 회로 또는 이산형 컴포넌트의 컬렉션) 단독으로 또는 펌웨어(예를 들어, 특정한 호스트 프로세서 및/또는 인터로크와 함께 작동하도록 프로그래밍된 필드-프로그램 가능 게이트 어레이 또는 프로그램 가능 판독 전용 메모리) 및/또는 소프트웨어(예를 들어, 소프트웨어에서 구현되는 하나 이상의 정책을 구현하도록 구성된 정책 프로세서)와 조합하여 실현될 수도 있다는 것을 더 인지하고 이해하였다. 태그 처리 하드웨어(140) 및 정책 프로세서(150)에 대해 편의를 위해 아래에서 설명되었지만, 이 설명은 제한적인 것으로 의도되지 않는다.
정책 엔진(610)은 호스트 프로세서(110)에 의해 실행되는 명령어가 하나 이상의 정책을 준수하는 것을 보장하도록 구성될 수 있다. 정책 엔진(610)은 이 과업을 수행하기 위해 적합한 하드웨어, 펌웨어, 및/또는 소프트웨어의 임의의 적합한 조합을 포함할 수 있다. 예를 들어, 정책 엔진(610)은 태그 처리 하드웨어(140) 및 정책 프로세서(150)를 포함할 수 있다. 일부 실시형태에서, 태그 처리 하드웨어(140)는 정책 결정의 신속한 실행을 위해 구성될 수도 있다. 다양한 실시형태에서, 정책 프로세서(150)는 특정 경우 또는 복잡한 정책 결정(예를 들어, 함수 호출 또는 인터럽트 처리를 포함하는 정책 결정) 및/또는 초기 정책 결정(예를 들어, 특정한 명령어, 명령어의 세트, 메모리 위치 및/또는 엔티티에 대한 정책의 제1 평가)을 처리하도록 구성될 수도 있다.
도 4는 변환된 명령어를 사용하는 정책 엔진(610)에 의해 수행되는 실례가 되는 정책 시행 과정(400)을 도시한다. 과정(400)은 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하고, 제1 명령어 정보를 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보로 변환시키고, 적어도 하나의 제1 명령어가 적어도 하나의 제2 명령어에 대응하는 제2 메타데이터를 사용하는 정책에 따라 허용 가능하다고 결정하고, 표시를 인터로크에 제공하는 작동을 포함할 수 있다. 이 표시는 인터로크가 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 컴퓨팅 시스템의 나머지에 제공하도록 명령할 수도 있다. 이 방식으로, 적어도 하나의 제1 명령어의 허용 가능성은 적어도 하나의 제2 명령어와 연관된 메타데이터를 사용하여 결정될 수 있다.
일부 실시형태에서, 적어도 하나의 제2 명령어는 적어도 하나의 제1 명령어와 같은 더 간단한 명령어(또는 더 제한된 명령어의 세트로부터의 명령어)를 포함할 수도 있다. 적어도 하나의 제2 명령어를 평가하도록 정책 엔진(610)을 구성하는 것은 더 간단한 정책 엔진(제2 명령어가 더 간단해질 수도 있거나 또는 더 제한된 명령어의 세트 내에 속하기 때문에)을 허용할 수 있다. 다양한 실시형태에서, 제2 명령어는 정책 엔진(610)이 정책을 평가할 때 효율을 실현하게 하는, 다수의 제1 명령어에 대응할 수도 있다.
작동(410)에서, 정책 엔진(610)은 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신할 수 있다. 본 명세서에서 설명되는 바와 같이, 제1 명령어 정보는 전체 명령어 자체, 명령어의 명령어 유형(예를 들어, 연산 코드), 명령어가 저장되는 어드레스, 피연산자가 저장되는 레지스터 및/또는 명령어에 의해 참조되는 하나 이상의 메모리 어드레스와 같은, 명령어 또는 명령어의 임의의 성분을 나타내는 임의의 정보를 포함할 수 있다. 이 제1 명령어 정보는 본 명세서에서 설명된 임의의 방식에 따라 수신될 수 있다.
작동(420)에서, 정책 엔진(610)은 제1 명령어 정보를 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보로 변환시킬 수 있다. 일부 실시형태에서, 적어도 하나의 제2 명령어는 제1 명령어와 같은 명령어를 포함할 수 있다. 일부 경우에, 하나 이상의 제1 명령어는 하나 이상의 제1 명령어가 제2 명령어의 세트로 변환 가능할 때 하나 이상의 제2 명령어와 같을 수도 있다. 예를 들어, ARM T32 ISA의 버전 7의 PUSH 명령어는 각각 오직 소수의 저장 위치(예를 들어, 2보다 더 많지 않은 저장 위치)를 수반하는 저장 작동의 세트로 변환될 수 있다. 부가적인 실시예로서, 덧셈 명령어의 세트는 곱셈 명령어로 변환될 수 있다. 다양한 경우에, 하나 이상의 제1 명령어는 동일한 피연산자를 가진 호스트 프로세서에 의한, 적어도 하나의 제1 명령어 및 복수의 명령어의 실행이 동일한 출력을 생성할 때 복수의 명령어와 같을 수도 있다. 이 방식으로, 호스트 프로세서(110)에 의한 실행하에서, 제1 명령어 및 복수의 명령어는 동일한 입력-출력 관계를 가질 수도 있다. 예를 들어, 적어도 하나의 제1 명령어 또는 복수의 명령어는 컴퓨팅 시스템의 상태에 영향을 주지 않는 명령어를 포함할 수 있다. 일부 경우에, 적어도 하나의 제1 명령어 및 복수의 명령어는 동일한 엔티티 및/또는 메모리 위치에 영향을 줄 수 있다. 예를 들어, 메모리 위치, 엔티티 등에 영향을 주는 다수의 작동은, 명령어를 실행시킴으로써 생성된 값보다는, 정책 엔진(610)이 명령어가 실행될 수도 있는지를 처리할 수도 있을 때, 동일한 메모리 위치, 엔티티 등에 영향을 주는 단일의 작동과 같을 수도 있다. 다수의 작동 대신에 단일의 작동을 평가하는 것은 정책 엔진(610)의 효율 및 속도를 증가시킬 수도 있다.
일부 실시형태에서, 제2 명령어 정보는 적어도 하나의 제2 명령어 자체, 적어도 하나의 제2 명령어의 명령어 유형(예를 들어, 연산 코드), 적어도 하나의 제2 명령어가 저장되는 어드레스, 피연산자가 저장되는 레지스터 및/또는 적어도 하나의 제2 명령어에 의해 참조되는 하나 이상의 메모리 어드레스와 같은, 적어도 하나의 제2 명령어 또는 명령어의 임의의 성분을 나타내는 임의의 정보를 포함할 수 있다.
다양한 실시형태에서, 정책 엔진(610)은 제1 명령어 정보를 사용하여 제2 명령어 정보를 획득할 수 있다. 예를 들어, 정책 엔진(610)은 본 명세서에서 설명된 방식 중 적어도 하나의 방식을 사용하여, 적어도 하나의 제1 명령어와 연관된 제1 메타데이터를 획득할 수 있다. 제1 메타데이터는 제2 명령어 정보 및/또는 메타데이터의 위치를 나타낼 수 있다. 예를 들어, 제1 메타데이터는 적어도 하나의 데이터 구조에 대한 적어도 하나의 포인터를 포함할 수 있다. 적어도 하나의 데이터 구조는 제2 명령어 정보(적어도 하나의 제1 명령어와 같은 복수의 명령어에 대응할 수도 있음)를 획득할 수 있다. 일부 실시형태에서, 정책 엔진(610)이 제2 명령어 정보를 사용하여 적어도 하나의 제2 명령어와 연관된 메타데이터를 획득할 수 있다. 다양한 실시형태에서, 적어도 하나의 데이터 구조는 적어도 하나의 제2 명령어에 대한 메타데이터를 포함할 수 있다.
일부 실시형태에서, 적어도 하나의 제1 명령어는 제1 분기 명령어일 수 있거나 또는 이것을 포함할 수 있다. 위에서 설명된 바와 같이, 호스트 프로세서는 분기 명령어에 관한 정보만을 제공하고 다른 비-분기 명령어에 관한 정보를 생략하도록 구성될 수도 있다. 이러한 실시형태에서, 적어도 하나의 제2 명령어는 제1 분기 명령어를 포함하는 명령어 경로를 포함할 수 있다. 대안적으로, 적어도 하나의 제2 명령어는 명령어 경로와 의미상으로 같은 명령어의 세트를 포함할 수 있다. 의미상으로 같은 명령어는 명령어 경로에서 하나 이상의 명령어를 생략할 수도 있다. 게다가, 의미상으로 같은 명령어는 단일의 작동에 대응하는 명령어 경로 내 하나 이상의 명령어를 이 작동을 나타내는 명령어로 교체할 수도 있다. 정책 엔진(610)은 제1 명령어 정보를 사용하여 명령어 경로에 대한 제2 명령어 정보를 획득할 수 있다. 예를 들어, 정책 엔진(610)이 제1 명령어 정보를 사용하여 분기 명령어에 대응하는 제1 메타데이터를 획득할 수 있다. 제1 메타데이터는 명령어 경로에 대한 명령어 정보 및/또는 메타데이터의 위치를 나타낼 수 있다. 예를 들어, 제1 메타데이터는 명령어 경로에 대한 명령어 정보 및/또는 메타데이터의 위치를 나타내는 포인터를 포함할 수 있다.
작동(430)에서, 정책 엔진(610)은 적어도 하나의 제1 명령어가 적어도 하나의 제2 명령어에 대응하는 제2 메타데이터를 사용하는 정책에 따라 허용 가능하다고 결정할 수 있다. 이 평가는 본 명세서의 어느 곳에 설명된 바와 같이 진행될 수도 있다. 작동(440)에서, 정책 엔진(610)은 표시를 인터로크에 제공할 수 있다. 인터로크는 적어도 하나의 제1 명령어의 결과(들)를 컴퓨터 시스템의 나머지에 내보낼 수도 있다.
도 5는 추가된 명령어를 사용하는 정책 엔진(610)에 의한 실례가 되는 정책 시행 과정(500)을 도시한다. 과정(500)은 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하고, 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보 및 제2 메타데이터를 획득하고, 제2 명령어 정보 및 제2 메타데이터 중 적어도 하나를 사용하여 제3 메타데이터를 생성하고, 제3 메타데이터를 사용하여 정책 메타데이터를 업데이트하는 작동을 포함할 수 있다. 일단 정책 메타데이터가 업데이트된다면, 정책 엔진(610)은 호스트 프로세서에 의해 실행되는 후속의 명령어가 업데이트된 정책 메타데이터에 기초한 정책에 따라 허용 가능한지를 결정할 수도 있다. 이러한 명령어가 허용 가능할 때, 정책 엔진(610)은 허용 가능성의 표시를 인터로크에 제공할 수 있다. 이어서 인터로크는 후속의 명령어를 실행시키는 큐잉된 결과를 시스템의 나머지에 제공할 수 있다.
작동(510)에서, 정책 엔진(610)은 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신할 수도 있다. 본 명세서에서 설명되는 바와 같이, 제1 명령어 정보는 전체 명령어 자체, 명령어의 명령어 유형(예를 들어, 연산 코드), 명령어가 저장되는 어드레스, 피연산자가 저장되는 레지스터 및/또는 명령어에 의해 참조되는 하나 이상의 메모리 어드레스와 같은, 명령어 또는 명령어의 임의의 성분을 나타내는 임의의 정보를 포함할 수 있다. 이 제1 명령어 정보는 본 명세서에서 설명된 임의의 방식에 따라 수신될 수 있다.
일부 실시형태에서, 적어도 하나의 제1 명령어는 호스트 프로세서 콘텍스트의 변화와 연관될 수 있다. 일부 경우에, 호스트 프로세서 콘텍스트의 이 변화는 인터럽트 서비스 루틴의 개시, 스레드 전환, 제외 또는 시스템 호출에 대응할 수 있다. 예를 들어, 제1 명령어는 인터럽트 서비스 루틴에서 초기 명령어일 수 있거나 또는 인터럽트 벡터 테이블 내 어드레스와 관련될 수 있다.
작동(520)에서, 정책 엔진(610)은 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보 및 제2 메타데이터를 획득할 수도 있다. 적어도 하나의 제2 명령어는 하나 이상의 삽입된 명령어를 포함할 수도 있다. 삽입된 명령어의 포함은 적어도 하나의 제2 명령어가 적어도 하나의 제1 명령어와 의미상으로 상이하게 할 수도 있다. 예를 들어, 삽입된 명령어가 호스트 프로세서(110)에 의해 실행될 수 있는 명령어에 대응할 수도 있는 동안, 보안 엔진(610)은 삽입된 명령어가 적어도 하나의 제1 명령어에 포함되었는지에 관계 없이 삽입된 명령어를 획득하여, 메타데이터의 업데이트를 유발하게 하도록 구성될 수도 있다. 예를 들어, 적어도 하나의 제2 명령어는 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나에 대한 업데이트를 유발하도록 획득될 수도 있다. 이 업데이트는 메타데이터가 정책 엔진(150)에 의해 시행되는 하나 이상의 정책 시행과 일치하거나 또는 일치하게 유지되는 것을 보장할 수 있다.
다양한 실시형태에서, 적어도 하나의 제2 명령어는 콘텍스트를 변화시킬 때 호스트 프로세서에 의해 수행되는 작동에 대응하는 명령어의 세트를 포함할 수 있다. 이 명령어는 사전 규정될 수도 있고 호스트 프로세서의 유형에 의존적일 수도 있다. 예를 들어, 호스트 프로세서가 콘텍스트 변화(예를 들어, 인터럽트를 서비스)의 특정한 유형을 실행시킬 때, 호스트 프로세서는 호스트 프로세서의 아키텍처에 의존적인 작동의 표준 세트를 수행할 수도 있다. 정책 엔진(610)은 적어도 하나의 제1 명령어의 수신에 기초하여 이 작동의 성능을 추론하도록 구성될 수도 있다. 따라서, 컴퓨팅 디바이스의 상태를 정확하게 반영하기 위해, 정책 엔진(610)이 부가적인 명령어를 정책 평가 파이프라에 추가할 수도 있어서, 태그 맵 테이블, 태그 레지스터 파일, 및/또는 메타데이터 메모리가 시스템의 상태를 정확하게 반영한다.
일부 실시형태에서, 태그 처리 하드웨어(140)가 수신된 적어도 하나의 명령어를 사용하여 제2 메타데이터 및 제2 명령어 정보를 획득할 수도 있다. 일부 경우에, 태그 처리 하드웨어(140)는 수신된 제1 명령어 정보를 사용하여 제1 메타데이터를 획득할 수도 있다. 제1 메타데이터는 제2 메타데이터 및 제2 명령어 정보의 위치를 나타낼 수도 있다. 예를 들어, 제1 메타데이터는 적어도 하나의 데이터 구조에 대한 적어도 하나의 포인터를 포함할 수도 있다. 적어도 하나의 데이터 구조는 제2 명령어 정보를 포함할 수도 있다. 일부 경우에, 태그 처리 하드웨어(140)는 제2 명령어 정보를 사용하여 제2 메타데이터를 획득하도록 구성될 수도 있다. 다양한 경우에, 적어도 하나의 데이터 구조는 제2 메타데이터를 포함할 수도 있다.
작동(530)에서, 정책 엔진(610)은 제2 명령어 정보 및 제2 메타데이터 중 적어도 하나를 사용하여 업데이트 메타데이터를 생성할 수도 있다. 예를 들어, 태그 처리 하드웨어(140)는 규칙 캐시(144)를 사용하여 제2 메타데이터와 업데이트 메타데이터를 매핑하도록 구성될 수 있다. 부가적인 실시예로서, 정책 프로세서(150)는 하나 이상의 정책을 제2 메타데이터에 적용함으로써 업데이트 메타데이터를 생성하도록 구성될 수 있다. 예를 들어, 태그 처리 하드웨어(140)는 제1 명령어를 허용하는 권한에 대해 정책 프로세서(150)를 쿼리할 수도 있다. 본 명세서에서 논의되는 바와 같이, 태그 처리 하드웨어(140)는 규칙 캐시를 유지하도록 구성될 수 있다. 이 규칙 캐시가 제1 명령어에 대한 엔트리를 포함하지 않아서, 태그 처리 하드웨어(140)가 제1 명령어를 허용하는 권한에 대해 정책 프로세서(150)를 쿼리하게 할 수도 있다. 정책 프로세서(150)는 쿼리를 수신하도록 구성될 수 있다. 쿼리에 응답하여, 정책 프로세서(150)는 업데이트 메타데이터를 결정할 수 있다.
일부 경우에, 정책 프로세서(150)는 업데이트 메타데이터에 대해 평가하는 단일의-사용 규칙을 태그 처리 하드웨어(140)에 제공하도록 구성될 수 있다. 태그 처리 하드웨어(140)는 이 단일의-사용 규칙을 수신하도록 구성될 수 있다. 규칙이 단일의 사용에 대해서일 때, 태그 처리 하드웨어(140)는 규칙을 규칙 캐시에 저장하지 않을 수도 있지만, 단일의-사용 규칙을 평가하여 업데이트 메타데이터를 생성할 수도 있다. 대안적으로, 태그 처리 하드웨어(140)는 단일의-사용 규칙을 규칙 캐시에 저장할 수도 있고, 규칙 캐시가 사용될 때 규칙 캐시로부터의 이 규칙을 제거하거나 또는 무효화하도록 구성될 수도 있다.
작동(540)에서, 정책 엔진(610)은 생성된 업데이트 메타데이터를 사용하여 메타데이터 저장 위치를 업데이트할 수 있다. 일부 실시형태에서, 태그 처리 하드웨어(140)는 생성된 업데이트 메타데이터를 사용하여 메타데이터 저장 위치를 업데이트할 수 있다. 다양한 실시형태에서, 메타데이터 저장 위치는 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 포함할 수 있다. 예를 들어, 태그 처리 하드웨어(140)는 새로운 메타데이터를 메타데이터 메모리의 위치에 기입할 수도 있거나; 또는 태그 맵 테이블 및/또는 태그 레지스터 파일에서 하나 이상의 엔트리를 생성, 변경 또는 삭제할 수도 있다. 다양한 경우에, 정책 프로세서(150)는 생성된 업데이트 메타데이터를 사용하여 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하도록 구성될 수 있다. 예를 들어, 정책 프로세서(150)는 태그 맵 테이블 및/또는 태그 레지스터 파일을 직접적으로 업데이트함으로써 태그 처리 하드웨어(140)의 상태에 직접적으로 영향을 줄 수 있다. 부가적인 실시예로서, 정책 프로세서(150)는 업데이트된 메타데이터를 메타데이터 메모리의 위치에 기입할 수 있거나 또는 태그 처리 하드웨어(140)가 태그 처리 하드웨어(140) 내 메모리 또는 레지스터 값을 직접적으로 변경함으로써 업데이트된 메타데이터를 메타데이터 메모리의 위치에 기입하게 할 수 있다.
일부 실시형태에서, 업데이트 메타데이터는 보안 루틴과 관련된다. 예를 들어, 보안 루틴은 시스템 호출 및/또는 비-시스템 함수 호출에 응답하여 보안 특권을 변경함으로써 소프트웨어-규정된 특권 모드를 유발할 수도 있다. 예를 들어, 시스템 호출이 발생할 때, 업데이트 메타데이터는 시스템 호출을 위해 적절한 상위 특권 레벨을 발생시킬 수도 있다. 일단 시스템 호출이 종료된다면, 업데이트 메타데이터는 사용자를 위해 적절한 하위 특권 레벨로의 리턴을 발생시킬 수도 있다. 특권 레벨의 이 변화는 생성된 업데이트 메타데이터를 사용하여 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트함으로써 구현될 수도 있다.
다양한 실시형태에서, 정책 엔진(610)은 스택 정책을 구현할 수도 있다. 이 스택 정책은 함수 호출 동안 호출 스택 내 특정한 위치에 대한 판독 전용 액세스를 명시할 수도 있다. 예를 들어, 함수의 본체와 연관된 명령어는 함수에 대한 컨벤션(예를 들어, 함수 프롤로그 및 함수 에필로그)을 호출함으로써 생성되는 값을 포함하는 호출 스택의 위치에 대한 함수 호출 동안 판독 전용 액세스를 가질 수도 있다. 정책 엔진(610)은 함수 호출 동안 함수 프롤로그 및 함수 에필로그를 메타데이터 태그(예를 들어, "프레임"의 라벨)로 라벨 표시함으로써 이 정책을 구현할 수도 있다. 정책 엔진(610)은 함수 호출 동안 이 메타데이터 태그와 연관된 메모리 위치를 타깃하는 기입 또는 파괴적 판독을 거부하도록 구성될 수도 있다. 제1 명령어가 함수에 대한 호출의 완료를 나타낼 때, 제1 명령어와 연관된 메타데이터는 정책 엔진(610)이 적어도 하나의 제2 명령어 정보 및 제2 메타데이터를 획득하게 할 수도 있고, 적어도 하나의 제2 명령어 정보 및 제2 메타데이터는 정책 엔진(610)이 어드레스를 판독 전용으로서 표시하는 메타데이터를 호출 스택의 위치로부터 제거하게 한다. 이 업데이트는 메타데이터 태그를 함수 프롤로그 및 함수 에필로그를 이전에 포함하는 위치로부터 관계 해제할 수도 있다.
작동(550)에서, 정책 엔진(610)은 후속하여 실행된 명령어가 업데이트된 정책 메타데이터에 기초한 정책에 따라 허용 가능한지를 결정하도록 구성될 수 있다. 일부 경우에, 일단 메타데이터가 작동(540)에서 업데이트된다면, 정책 엔진(610)은 후속의 허용 가능성을 결정할 때 업데이트된 메타데이터에 자동으로 의존적일 수도 있다. 작동(560)에서, 나타낼 때, 정책 엔진(610)이 표시를 인터로크(112)에 제공하여 이러한 후속하여 실행되고 허용된 명령어의 결과를 내보내게 할 수 있다.
실례가 되는 컴퓨터
도 7은 본 개시내용의 임의의 양상이 구현될 수도 있는 실례가 되는 컴퓨터(700)를 개략적으로 도시한다.
도 7에 도시된 실시형태에서, 컴퓨터(700)는 하나 이상의 프로세서를 가진 처리 장치(701) 및 예를 들어, 휘발성 및/또는 비휘발성 메모리를 포함할 수도 있는 비일시적 컴퓨터 판독 가능 저장 매체(702)를 포함한다. 메모리(702)는 처리 장치(701)를 프로그래밍하여 본 명세서에서 설명된 기능 중 임의의 기능을 수행하게 하기 위한 하나 이상의 명령어를 저장할 수도 있다. 컴퓨터(700)는 또한 시스템 메모리(702)에 더하여 다른 유형의 비일시적 컴퓨터 판독 가능 매체, 예컨대, 저장소(705)(예를 들어, 하나 이상의 디스크 드라이브)를 포함할 수도 있다. 저장소(705)는 또한 메모리(702)로 로딩될 수도 있는, 응용 프로그램(예를 들어, 소프트웨어 라이브러리)에 의해 사용되는 하나 이상의 응용 프로그램 및/또는 자원을 저장할 수도 있다.
컴퓨터(700)는 하나 이상의 입력 디바이스 및/또는 출력 디바이스, 예컨대, 도 7에 예시된 디바이스(706 및 707)를 가질 수도 있다. 이 디바이스는 예를 들어, 사용자 인터페이스를 제공하도록 사용될 수도 있다. 사용자 인터페이스를 제공하도록 사용될 수도 있는 출력 디바이스의 예는 출력의 시각 제시를 위한 프린터 및 디스플레이 스크린, 출력의 가청 제시를 위한 스피커 및 다른 소리 생성 디바이스를 포함한다. 사용자 인터페이스를 위해 사용될 수도 있는 입력 디바이스의 예는 키보드 및 포인팅 디바이스(예를 들어, 마우스, 터치패드 및 디지털 태블릿)를 포함한다. 또 다른 실시예로서, 입력 디바이스(707)는 오디오 신호를 캡처하기 위한 마이크로폰을 포함할 수도 있고, 출력 디바이스(706)는 시각적 렌더링을 위한 디스플레이 스크린 및/또는 인식된 텍스트를 가청 렌더링하기 위한 스피커를 포함할 수도 있다.
도 7에 도시된 실시예에서, 컴퓨터(700)는 또한 다양한 네트워크(예를 들어, 네트워크(720))를 통한 통신을 가능하게 하도록 하나 이상의 네트워크 인터페이스(예를 들어, 네트워크 인터페이스(710))를 포함한다. 네트워크의 예는 근거리 네트워크(예를 들어, 기업 내 네트워크) 및 광역 네트워크(예를 들어, 인터넷)를 포함한다. 이러한 네트워크는 임의의 적합한 기술에 기초할 수도 있고 임의의 적합한 프로토콜에 따라 작동할 수도 있고, 무선 네트워크 및/또는 유선 네트워크(예를 들어, 광섬유 네트워크)를 포함할 수도 있다.
게다가, 본 기술은 다음의 구성으로 구현될 수 있다:
(1) 시스템으로서, 정책 엔진을 포함하되, 정책 엔진은, 호스트 프로세서에 의해 실행되는 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하고; 제1 명령어 정보를 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보로 변환시키고; 적어도 하나의 제2 명령어에 대응하는 제2 메타데이터를 사용하여, 적어도 하나의 제1 명령어가 정책에 따라 허용 가능한지를 결정하도록 구성되는, 시스템.
(2) (1)에 있어서, 정책 엔진은 적어도 하나의 제1 명령어가 허용 가능하다고 결정하는 것에 응답하여, 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 내보내는 표시를 인터로크에 제공하도록 더 구성되는, 시스템.
(3) (1) 또는 (2)에 있어서, 제1 명령어 정보를 제2 명령어 정보로 변환시키는 것은, 제1 명령어 정보를 사용하여 적어도 하나의 제1 명령어와 연관된 제1 메타데이터를 획득하는 것; 및 제1 메타데이터를 사용하여, 적어도 하나의 제1 명령어와 같은 복수의 명령어에 대한 명령어 정보 및 메타데이터를 획득하는 것을 포함하고; 그리고 제2 메타데이터는 복수의 명령어에 대한 메타데이터를 포함하는, 시스템.
(4) (3)에 있어서, 제1 메타데이터는 적어도 하나의 데이터 구조에 대한 적어도 하나의 포인터를 포함하고, 적어도 하나의 데이터 구조는, 복수의 명령어에 대한 명령어 정보; 및 복수의 명령어에 대한 메타데이터를 포함하는, 시스템.
(5) (3) 또는 (4)에 있어서, 복수의 명령어는 적어도 하나의 제1 명령어가 복수의 명령어로 변환 가능할 때 적어도 하나의 제1 명령어와 같은, 시스템.
(6) (3) 또는 (4)에 있어서, 복수의 명령어는 적어도 하나의 제1 명령어의 제1 실행 및 복수의 명령어의 제2 실행이 동일한 입력-출력 거동을 가질 때 적어도 하나의 제1 명령어와 같은, 시스템.
(7) (3) 또는 (4)에 있어서, 복수의 명령어는 적어도 하나의 제1 명령어의 제1 실행 및 복수의 명령어의 제2 실행이 동일한 엔티티 및/또는 메모리 위치의 값에 영향을 줄 때 적어도 하나의 제1 명령어와 같은, 시스템.
(8) (1) 내지 (7) 중 어느 하나에 있어서, 적어도 하나의 제1 명령어는 제1 분기 명령어를 포함하고; 그리고 적어도 하나의 제2 명령어는 제1 분기 명령어를 포함한 명령어 경로를 포함하는, 시스템.
(9) (1) 내지 (7) 중 어느 하나에 있어서, 적어도 하나의 제1 명령어는 제1 분기 명령어를 포함하고; 그리고 적어도 하나의 제2 명령어는, 명령어 경로에서 하나 이상의 명령어를 생략하고; 그리고/또는 단일의 작동에 대응하는 명령어 경로 내 하나 이상의 명령어를 작동을 나타내는 명령어로 교체하는 명령어의 세트를 포함하는, 시스템.
(10) 시스템으로서, 정책 엔진을 포함하되, 정책 엔진은, 호스트 프로세서에 의해 실행되는 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하고; 제1 명령어 정보를 수신하는 것에 응답하여, 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보; 및 적어도 하나의 제2 명령어와 연관된 제2 메타데이터를 획득하고; 제2 명령어 정보 또는 제2 메타데이터 중 적어도 하나를 사용하여 제3 메타데이터를 생성하고; 제3 메타데이터를 사용하여 메타데이터 저장 위치를 업데이트하고; 그리고 호스트 프로세서에 의해 실행되는 적어도 하나의 명령어가 적어도 하나의 정책에 따라 허용 가능한지를 결정하도록 구성되는, 시스템.
(11) (10)에 있어서, 메타데이터 저장 위치는 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 포함하는, 시스템.
(12) (10) 또는 (11)에 있어서, 정책 엔진은 결정에 응답하여, 적어도 하나의 명령어를 실행시키는 큐잉된 결과를 내보내기 위한 표시를 인터로크에 제공하도록 더 구성되는, 시스템.
(13) (10) 내지 (12) 중 어느 하나에 있어서, 적어도 하나의 제1 명령어는 호스트 프로세서 콘텍스트의 변화와 연관되고; 그리고 적어도 하나의 제2 명령어는 콘텍스트를 변화시킬 때 호스트 프로세서에 의해 수행되는 작동에 대응하는 명령어의 세트를 포함하는, 시스템.
(14) (13)에 있어서, 호스트 프로세서 콘텍스트의 변화는 인터럽트 서비스 루틴의 개시, 스레드 전환, 제외 또는 시스템 호출에 대응하는, 시스템.
(15) (13) 또는 (14)에 있어서, 명령어의 세트는 호스트 프로세서의 유형에 더 대응하는, 시스템.
(16) (10) 내지 (15) 중 어느 하나에 있어서, 정책 엔진은 제1 명령어 정보를 사용하여 제1 메타데이터를 획득하도록 구성된 태그 처리 하드웨어를 포함하고, 제1 메타데이터는 제2 명령어 정보 및 제2 메타데이터를 포함하는 적어도 하나의 데이터 구조에 대한 적어도 하나의 포인터를 포함하는, 시스템.
(17) (10) 내지 (15) 중 어느 하나에 있어서, 정책 엔진은 제1 명령어 정보를 수신하고; 그리고 제1 명령어 정보를 수신하는 것에 응답하여, 정책 프로세서에 쿼리해서 제1 명령어를 유효화하도록 구성된 태그 처리 하드웨어를 포함하고; 그리고 정책 엔진은 쿼리를 수신하고; 그리고 쿼리에 응답하여 제3 메타데이터를 결정하도록 구성된 정책 프로세서를 포함하는, 시스템.
(18) (17)에 있어서, 정책 프로세서는 업데이트 메타데이터에 대해 평가하는 단일의-사용 규칙을 태그 처리 하드웨어에 제공하도록 더 구성되고; 그리고 태그 처리 하드웨어는 단일의-사용 규칙을 수신하고; 단일의-사용 규칙을 평가하여 업데이트 메타데이터를 생성하고; 그리고 생성된 업데이트 메타데이터를 사용하여 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하도록 더 구성되는, 시스템.
(19) (17)에 있어서, 정책 프로세서는 메타데이터 저장 위치를 업데이트하도록 더 구성되는, 시스템.
(20) (10) 내지 (19) 중 어느 하나에 있어서, 적어도 하나의 제2 명령어는 메타데이터 저장 위치의 업데이트를 유발하도록 획득된 삽입된 명령어를 포함하는, 시스템.
(21) (20)에 있어서, 삽입된 명령어는 적어도 하나의 제2 명령어가 적어도 하나의 제1 명령어와 의미상으로 상이하게 하는, 시스템.
(22) (20) 또는 (21)에 있어서, 제3 메타데이터는 보안 루틴과 관련되고; 그리고 생성된 제3 메타데이터를 사용하여 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하는 것은 보안 루틴을 구현하는, 시스템.
(23) (22)에 있어서, 보안 루틴은 시스템 호출 및/또는 비-시스템 함수 호출에 응답하여 보안 특권을 변화시킴으로써 소프트웨어-규정된 특권 모드를 유발하는, 시스템.
(24) (20) 또는 (21)에 있어서, 정책 엔진은 함수에 대한 호출 동안 함수의 본체 내 명령어에 의한 메타데이터 태그와 연관된 호출 스택 내 위치에 대한 판독 전용 액세스를 명시하는 스택 정책을 구현하고; 제1 명령어는 함수에 대한 호출의 완료를 나타내고; 그리고 생성된 업데이트 메타데이터를 사용하여 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하는 것은 메타데이터 태그와 호출 스택 내 위치를 비연관시키는 것을 포함하는, 시스템.
(25) (24)에 있어서, 호출 스택 내 위치는 함수에 대한 컨벤션을 호출함으로써 생성되는 데이터를 포함하는, 시스템.
(26) 시스템으로서, 정책 엔진을 포함하되, 정책 엔진은, 호스트 프로세서에 의해 사용되는 호스트 명령어 세트 아키텍처(Instruction Set Architecture: ISA) 내 제1 명령어와 연관된 명령어 정보를 수신하고; 명령어 정보의 변환을 생성하고, 변환은 호스트 ISA에서 이루어지지 않고; 제1 명령어의 어드레스를 사용하여 메타데이터를 획득하고; 그리고 메타데이터를 사용하여, 적어도 하나의 제1 명령어가 정책에 따라 허용 가능한지를 결정하도록 구성되는, 시스템.
(27) (26)에 있어서, 태그 처리 하드웨어 또는 정책 프로세서 중 적어도 하나는 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 제공하기 위한 표시를 인터로크에 제공하도록 더 구성되는, 시스템.
(28) (26) 또는 (27)에 있어서, 명령어 정보의 변환은 정책 엔진 ISA에서 이루어지는, 시스템.
(29) (26) 또는 (27)에 있어서, 명령어 정보의 변환을 생성하는 것은 사전 결정된 매핑에 따라 호스트 ISA 내 제1 명령어를 정책 엔진 ISA 내 제2 명령어로 변환하는 것을 포함하는, 시스템.
(30) (29)에 있어서, 사전 결정된 매핑은 필드-프로그램 가능 게이트 어레이 또는 전용 논리 회로를 사용하여 구현되는, 시스템.
(31) (26) 또는 (27)에 있어서, 명령어 정보의 변환을 생성하는 것은 메타데이터 및 정책 엔진 ISA 내 적어도 하나의 명령어를 포함하는 적어도 하나의 데이터 구조를 식별하는 것을 포함하고, 그리고 명령어 정보의 변환은 정책 엔진 ISA 내 적어도 하나의 명령어를 포함하는, 시스템.
따라서 적어도 하나의 실시형태의 수개의 양상을 설명하기 때문에, 당업자는 다양한 대안, 변경 및 개선이 손쉽게 발생할 것임을 이해한다. 이러한 대안, 변경 및 개선은 본 개시내용의 범위 및 정신 내에 있는 것으로 의도된다. 따라서, 다음의 설명 및 도면은 오직 실시예와 관련된다.
본 개시내용의 위에서 설명된 실시형태는 수많은 방식 중 임의의 방식으로 구현될 수 있다. 예를 들어, 실시형태는 하드웨어, 소프트웨어 또는 이들의 조합을 사용하여 구현될 수도 있다. 소프트웨어에서 구현될 때, 소프트웨어 코드는 단일의 컴퓨터에 제공되든 또는 다수의 컴퓨터 중에 분포되든, 임의의 적합한 프로세서 또는 프로세서의 콜렉션에서 실행될 수도 있다.
또한, 본 명세서에서 개략적으로 서술된 다양한 방법 또는 과정은 다양한 운영 체제 또는 플랫폼 중 임의의 것을 실행시키는 하나 이상의 프로세서에서 실행 가능한 소프트웨어로서 코딩될 수도 있다. 이러한 소프트웨어는 스크립팅 언어 및/또는 스크립팅 툴을 포함하는, 임의의 복수의 적합한 프로그래밍 언어 및/또는 프로그래밍 툴을 사용하여 기입될 수도 있다. 일부 경우에, 이러한 소프트웨어는 프레임워크 또는 가상 기계에서 실행되는 실행 가능한 기계 언어 코드 또는 중간 코드로서 컴파일링될 수도 있다. 부가적으로 또는 대안적으로, 이러한 소프트웨어가 해석될 수도 있다.
본 명세서에 개시된 기법은 하나 이상의 프로세서에서 실행될 때, 위에서 논의된 본 개시내용의 다양한 실시형태를 구현하는 방법을 수행하는 하나 이상의 프로그램에 의해 인코딩된 비일시적 컴퓨터 판독 가능 매체(또는 다수의 컴퓨터 판독 가능 매체)(예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 콤팩트 디스크, 광 디스크, 자기 테이프, 플래시 메모리, 필드 프로그램 가능 게이트 어레이 또는 다른 반도체 디바이스의 회로 구성 또는 다른 비일시적, 유형(tangible) 컴퓨터 저장 매체)로서 구현될 수도 있다. 컴퓨터 판독 가능 매체 또는 매체들은, 매체에 저장된 프로그램 또는 프로그램들이 위에서 논의되는 바와 같은 본 개시내용의 다양한 양상을 구현하도록 하나 이상의 상이한 컴퓨터 또는 다른 프로세서에 로딩될 수도 있도록, 수송 가능할 수도 있다.
용어 "프로그램" 또는 "소프트웨어"는 위에서 논의되는 바와 같은 본 개시내용의 다양한 양상을 구현하기 위해 하나 이상의 프로세서를 프로그래밍하도록 채용될 수도 있는 임의의 유형의 컴퓨터 코드 또는 컴퓨터-실행 가능한 명령어의 세트를 나타내도록 본 명세서에서 사용된다. 게다가, 이 실시형태의 하나의 양상에 따르면, 실행될 때, 본 개시내용의 방법을 수행하는 하나 이상의 컴퓨터 프로그램이 단일의 컴퓨터 또는 프로세서에서 없어야 하지만, 본 개시내용의 다양한 양상을 구현하기 위해 복수의 상이한 컴퓨터 또는 프로세서 간에 모듈러 방식으로 분포될 수도 있다는 것이 이해되어야 한다.
컴퓨터-실행 가능한 명령어는 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행되는, 프로그램 모듈과 같은, 많은 형태일 수도 있다. 프로그램 모듈은 특정한 과업을 수행하거나 또는 특정한 추상 데이터 유형을 구현하는, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함할 수도 있다. 프로그램 모듈의 기능은 다양한 실시형태에서 원하는 대로 결합될 수도 있거나 또는 분포될 수도 있다.
또한, 데이터 구조는 임의의 적합한 형태로 컴퓨터 판독 가능 매체에 저장될 수도 있다. 예시의 명료성을 위해, 데이터 구조는 데이터 구조 내 위치를 통해 관련되는 필드를 갖게 도시될 수도 있다. 이러한 관계는 마찬가지로 필드 사이의 관계를 전달하는 컴퓨터 판독 가능 매체의 위치에 필드를 위한 저장소를 할당함으로써 달성될 수도 있다. 그러나, 임의의 적합한 메커니즘은 데이터 구성요소 사이의 관계를 확립하는 포인터, 태그 또는 다른 메커니즘의 사용을 통해를 포함해서, 데이터 구조의 필드 내 정보 사이의 관계를 확립하도록 사용될 수도 있다.
본 개시내용의 다양한 특징 및 양상은 단독으로, 2개 이상의 임의의 조합으로 또는 전술한 내용에서 설명된 실시형태에서 특별히 논의되지 않은 다양한 배열로 사용될 수도 있고, 따라서 전술한 설명에 제시되거나 또는 도면에 예시된 컴포넌트의 배열 및 상세사항으로 제한되지 않는다. 예를 들어, 하나의 실시형태에서 설명된 양상은 다른 실시형태에서 설명된 양상과 임의의 방식으로 결합될 수도 있다.
또한, 본 명세서에 개시된 기법이 방법으로서 구현될 수도 있고, 방법의 실시예가 제공된다. 방법의 부분으로서 수행되는 작동은 임의의 적합한 방식으로 지시될 수도 있다. 따라서, 실례가 되는 실시형태에서 순차적인 작동으로서 도시될지라도, 일부 작동을 동시에 수행하는 것을 포함할 수도 있는, 작동이 예시된 것과 상이한 순서로 수행되는 실시형태가 구성될 수도 있다.
청구항 구성요소를 수식하기 위한 청구항 내 서수 용어, 예컨대, "제1", "제2", "제3" 등의 사용은 하나의 청구항 구성요소에 대한 또 다른 청구항 구성요소의 임의의 우선도, 우선권 또는 방법의 작동이 수행되는 시간적 순서를 자체 내포하는 것이 아니라 특정한 이름을 가진 하나의 청구항 구성요소를 동일한 이름(하지만 서수 용어의 사용)을 가진 또 다른 구성요소로부터 구별하여 청구항 구성요소를 구별하기 위한 라벨로서 단지 사용된다.
또한, 본 명세서에서 사용되는 용어 및 전문 용어는 설명의 목적을 위한 것이고 제한하기 위한 것으로서 간주되어서는 안 된다. "포함하는(including)", "구성되는(comprising)", "갖는(having)", "함유하는(containing)", "수반하는(involving)" 및 본 명세서의 이들의 변형의 사용은 이후에 나열되는 아이템 및 아이템의 등가물뿐만 아니라 부가적인 아이템을 포함하는 것으로 의도된다.

Claims (31)

  1. 시스템으로서,
    정책 엔진을 포함하되, 상기 정책 엔진은,
    호스트 프로세서에 의해 실행되는 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하고;
    상기 제1 명령어 정보를 적어도 하나의 제2 명령어와 연관된 제2 명령어 정보로 변환시키고(transform);
    상기 적어도 하나의 제2 명령어에 대응하는 제2 메타데이터를 사용하여, 상기 적어도 하나의 제1 명령어가 정책에 따라 허용 가능한지를 결정하도록
    구성되는, 시스템.
  2. 제1항에 있어서,
    적어도 하나의 제1 명령어가 허용 가능하다고 결정하는 것에 응답하여, 상기 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 내보내는 표시(indication)를 인터로크(interlock)에 제공하도록 구성되는, 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 명령어 정보를 상기 제2 명령어 정보로 변환시키는 것은,
    상기 제1 명령어 정보를 사용하여 상기 적어도 하나의 제1 명령어와 연관된 제1 메타데이터를 획득하는 것; 및
    상기 제1 메타데이터를 사용하여, 상기 적어도 하나의 제1 명령어와 같은 복수의 명령어에 대한 명령어 정보 및 메타데이터를 획득하는 것
    을 포함하고; 그리고
    상기 제2 메타데이터는 상기 복수의 명령어에 대한 메타데이터를 포함하는, 시스템.
  4. 제3항에 있어서,
    상기 제1 메타데이터는 적어도 하나의 데이터 구조에 대한 적어도 하나의 포인터를 포함하고, 상기 적어도 하나의 데이터 구조는,
    상기 복수의 명령어에 대한 상기 명령어 정보; 및
    상기 복수의 명령어에 대한 상기 메타데이터
    를 포함하는, 시스템.
  5. 제3항 또는 제4항에 있어서,
    상기 복수의 명령어는 상기 적어도 하나의 제1 명령어가 상기 복수의 명령어로 변환 가능할 때 상기 적어도 하나의 제1 명령어와 같은, 시스템.
  6. 제3항 또는 제4항에 있어서,
    상기 복수의 명령어는 상기 적어도 하나의 제1 명령어의 제1 실행 및 상기 복수의 명령어의 제2 실행이 동일한 입력-출력 거동을 가질 때 상기 적어도 하나의 제1 명령어와 같은, 시스템.
  7. 제3항 또는 제4항에 있어서,
    상기 복수의 명령어는 상기 적어도 하나의 제1 명령어의 제1 실행 및 상기 복수의 명령어의 제2 실행이 동일한 엔티티 및/또는 메모리 위치의 값에 영향을 줄 때 상기 적어도 하나의 제1 명령어와 같은, 시스템.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 적어도 하나의 제1 명령어는 제1 분기 명령어를 포함하고; 그리고
    상기 적어도 하나의 제2 명령어는 상기 제1 분기 명령어를 포함한 명령어 경로를 포함하는, 시스템.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 적어도 하나의 제1 명령어는 제1 분기 명령어를 포함하고; 그리고
    상기 적어도 하나의 제2 명령어는,
    상기 명령어 경로에서 하나 이상의 명령어를 생략하고; 그리고/또는
    단일의 작동(single operation)에 대응하는 상기 명령어 경로 내 하나 이상의 명령어를 상기 작동을 나타내는 명령어로 교체하는
    명령어의 세트를 포함하는, 시스템.
  10. 시스템으로서,
    정책 엔진을 포함하되, 상기 정책 엔진은,
    호스트 프로세서에 의해 실행되는 적어도 하나의 제1 명령어와 연관된 제1 명령어 정보를 수신하고;
    상기 제1 명령어 정보를 수신하는 것에 응답하여,
    적어도 하나의 제2 명령어와 연관된 제2 명령어 정보; 및
    상기 적어도 하나의 제2 명령어와 연관된 제2 메타데이터
    를 획득하고;
    상기 제2 명령어 정보 또는 제2 메타데이터 중 적어도 하나를 사용하여 제3 메타데이터를 생성하고;
    상기 제3 메타데이터를 사용하여 메타데이터 저장 위치를 업데이트하고; 그리고
    상기 호스트 프로세서에 의해 실행되는 적어도 하나의 명령어가 적어도 하나의 정책에 따라 허용 가능한지를 결정하도록
    구성되되, 상기 결정은 태그 맵 테이블(tag map table), 태그 레지스터 파일 또는 메타데이터 메모리 중 업데이트된 적어도 하나에 기초하는, 시스템.
  11. 제10항에 있어서,
    상기 메타데이터 저장 위치는 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 포함하는, 시스템.
  12. 제10항 또는 제11항에 있어서,
    상기 정책 엔진은,
    결정에 응답하여, 상기 적어도 하나의 명령어를 실행시키는 큐잉된 결과를 내보내기 위한 표시를 인터로크에 제공하도록 더 구성되는, 시스템.
  13. 제12항에 있어서,
    상기 적어도 하나의 제1 명령어는 호스트 프로세서 콘텍스트(context)의 변화와 연관되고; 그리고
    상기 적어도 하나의 제2 명령어는 콘텍스트를 변화시킬 때 상기 호스트 프로세서에 의해 수행되는 작동에 대응하는 명령어의 세트를 포함하는, 시스템.
  14. 제13항에 있어서,
    상기 호스트 프로세서 콘텍스트의 변화는 인터럽트 서비스 루틴의 개시, 스레드 전환, 제외 또는 시스템 호출에 대응하는, 시스템.
  15. 제13항 또는 제14항에 있어서,
    상기 명령어의 세트는 상기 호스트 프로세서의 유형에 더 대응하는, 시스템.
  16. 제10항 내지 제15항 중 어느 한 항에 있어서,
    상기 정책 엔진은,
    상기 제1 명령어 정보를 사용하여 제1 메타데이터를 획득하도록 구성된 태그 처리 하드웨어를 포함하되, 상기 제1 메타데이터는 상기 제2 명령어 정보 및 상기 제2 메타데이터를 포함하는 적어도 하나의 데이터 구조에 대한 적어도 하나의 포인터를 포함하는, 시스템.
  17. 제10항 내지 제15항 중 어느 한 항에 있어서,
    상기 정책 엔진은,
    상기 제1 명령어 정보를 수신하고; 그리고
    상기 제1 명령어 정보를 수신하는 것에 응답하여, 상기 정책 프로세서에 쿼리(query)해서 상기 제1 명령어를 유효화하도록
    구성된 태그 처리 하드웨어를 포함하고; 그리고
    상기 정책 엔진은,
    상기 쿼리를 수신하고; 그리고
    상기 쿼리에 응답하여 상기 제3 메타데이터를 결정하도록
    구성된 정책 프로세서를 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 정책 엔진은,
    상기 제3 메타데이터를 생성할 때 사용되는 단일의-사용 규칙을 상기 태그 처리 하드웨어에 제공하도록 구성된 정책 프로세서를 포함하고; 그리고
    상기 정책 엔진은,
    상기 단일의-사용 규칙을 수신하고;
    상기 단일의-사용 규칙을 평가하여 상기 제3 메타데이터를 생성하고; 그리고
    상기 메타데이터 저장 위치를 업데이트하도록
    구성된 태그 처리 하드웨어를 포함하는, 시스템.
  19. 제17항에 있어서,
    상기 정책 프로세서는 상기 메타데이터 저장 위치를 업데이트하도록 더 구성되는, 시스템.
  20. 제10항 내지 제19항 중 어느 한 항에 있어서,
    상기 적어도 하나의 제2 명령어는 상기 메타데이터 저장 위치의 업데이트를 유발하도록 획득된 삽입된 명령어를 포함하는, 시스템.
  21. 제20항에 있어서,
    상기 삽입된 명령어는 상기 적어도 하나의 제2 명령어가 상기 적어도 하나의 제1 명령어와 의미상으로 상이하게 하는, 시스템.
  22. 제20항 또는 제21항에 있어서,
    상기 제3 메타데이터는 보안 루틴과 관련되고; 그리고
    생성된 제3 메타데이터를 사용하여 상기 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하는 것은 상기 보안 루틴을 구현하는, 시스템.
  23. 제22항에 있어서,
    상기 보안 루틴은 시스템 호출 및/또는 비-시스템 함수 호출에 응답하여 보안 특권을 변화시킴으로써 소프트웨어-규정된 특권 모드를 유발하는, 시스템.
  24. 제20항 또는 제21항에 있어서,
    상기 정책 엔진은 함수에 대한 호출 동안 상기 함수의 본체 내 명령어에 의한 메타데이터 태그와 연관된 호출 스택 내 위치에 대한 판독 전용 액세스를 명시(specifying)하는 스택 정책을 구현하고;
    상기 제1 명령어는 상기 함수에 대한 호출의 완료를 나타내고; 그리고
    상기 생성된 제3 메타데이터를 사용하여 상기 태그 맵 테이블, 태그 레지스터 파일 또는 메타데이터 메모리 중 적어도 하나를 업데이트하는 것은 상기 메타데이터 태그와 상기 호출 스택 내 위치를 비연관시키는 것을 포함하는, 시스템.
  25. 제24항에 있어서,
    상기 호출 스택 내 위치는 상기 함수에 대한 컨벤션(convention)을 호출함으로써 생성되는 데이터를 포함하는, 시스템.
  26. 시스템으로서,
    정책 엔진을 포함하되, 상기 정책 엔진은,
    호스트 프로세서에 의해 사용되는 호스트 명령어 세트 아키텍처(Instruction Set Architecture: ISA) 내 제1 명령어와 연관된 명령어 정보를 수신하고;
    상기 명령어 정보의 변환(translation)을 생성하고, 상기 변환은 상기 호스트 ISA에서 이루어지지 않고;
    상기 제1 명령어의 어드레스를 사용하여 메타데이터를 획득하고; 그리고
    상기 메타데이터를 사용하여, 상기 적어도 하나의 제1 명령어가 정책에 따라 허용 가능한지를 결정하도록
    구성되는, 시스템.
  27. 제26항에 있어서,
    상기 정책 엔진은 상기 적어도 하나의 제1 명령어를 실행시키는 큐잉된 결과를 내보내기 위한 표시를 인터로크에 제공하도록 더 구성되는, 시스템.
  28. 제26항 또는 제27항에 있어서,
    상기 명령어 정보의 변환은 정책 엔진 ISA에서 이루어지는, 시스템.
  29. 제26항 또는 제27항에 있어서,
    상기 명령어 정보의 변환을 생성하는 것은 사전 결정된 매핑에 따라 상기 호스트 ISA 내 상기 제1 명령어를 정책 엔진 ISA 내 제2 명령어로 변환하는 것을 포함하는, 시스템.
  30. 제29항에 있어서,
    상기 사전 결정된 매핑은 필드-프로그램 가능 게이트 어레이(field-programmable gate array) 또는 전용 논리 회로를 사용하여 구현되는, 시스템.
  31. 제26항 또는 제27항에 있어서,
    상기 명령어 정보의 변환을 생성하는 것은 상기 메타데이터 및 정책 엔진 ISA 내 적어도 하나의 명령어를 포함하는 적어도 하나의 데이터 구조를 식별하는 것을 포함하고, 그리고
    상기 명령어 정보의 변환은 상기 정책 엔진 ISA 내 상기 적어도 하나의 명령어를 포함하는, 시스템.
KR1020207025284A 2018-02-02 2019-02-01 메타데이터 처리를 위한 명령어를 변환시키기 위한 시스템 및 방법 KR20200116970A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862625802P 2018-02-02 2018-02-02
US201862625746P 2018-02-02 2018-02-02
US62/625,802 2018-02-02
US62/625,746 2018-02-02
US201862635319P 2018-02-26 2018-02-26
US62/635,319 2018-02-26
PCT/US2019/016276 WO2019152795A1 (en) 2018-02-02 2019-02-01 Systems and methods for transforming instructions for metadata processing

Publications (1)

Publication Number Publication Date
KR20200116970A true KR20200116970A (ko) 2020-10-13

Family

ID=65494526

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207025284A KR20200116970A (ko) 2018-02-02 2019-02-01 메타데이터 처리를 위한 명령어를 변환시키기 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US20210357497A9 (ko)
EP (1) EP3746922B1 (ko)
KR (1) KR20200116970A (ko)
TW (1) TW201941049A (ko)
WO (1) WO2019152795A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102230443B1 (ko) * 2020-12-14 2021-03-22 주식회사 이글루시큐리티 스크립트를 이용한 보안 취약점 진단 시 위험성 명령어 차단 및 대체 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11860997B2 (en) * 2018-06-26 2024-01-02 Nokia Technologies Oy Method and apparatus for attestation
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11232208B2 (en) 2019-02-26 2022-01-25 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for adaptive metadata architecture
US11201800B2 (en) * 2019-04-03 2021-12-14 Cisco Technology, Inc. On-path dynamic policy enforcement and endpoint-aware policy enforcement for endpoints
US12019736B2 (en) 2020-02-27 2024-06-25 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for main memory tag compression
US11500643B2 (en) * 2020-11-13 2022-11-15 Centaur Technology, Inc. Spectre fixes with indirect valid table
US11907124B2 (en) * 2022-03-31 2024-02-20 International Business Machines Corporation Using a shadow copy of a cache in a cache hierarchy
WO2024049816A1 (en) * 2022-09-02 2024-03-07 Exaloop, Inc. Systems and methods for enhancing execution of interpreted computer languages
CN116028141B (zh) * 2023-03-30 2023-07-04 菲特(天津)检测技术有限公司 标签数据的处理方法、系统及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078763B2 (en) * 2014-11-19 2018-09-18 BAE Systems Information and Electronic Systems Integration Incc Programmable unit for metadata processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102230443B1 (ko) * 2020-12-14 2021-03-22 주식회사 이글루시큐리티 스크립트를 이용한 보안 취약점 진단 시 위험성 명령어 차단 및 대체 방법

Also Published As

Publication number Publication date
US20210357497A9 (en) 2021-11-18
EP3746922B1 (en) 2024-06-05
WO2019152795A1 (en) 2019-08-08
US20210073375A1 (en) 2021-03-11
TW201941049A (zh) 2019-10-16
EP3746922A1 (en) 2020-12-09

Similar Documents

Publication Publication Date Title
EP3746922B1 (en) Systems and methods for transforming instructions for metadata processing
US11977613B2 (en) System and method for translating mapping policy into code
US11875180B2 (en) Systems and methods for stalling host processor
US20220374415A1 (en) Systems and methods for updating metadata
US20220092173A1 (en) Systems and methods for metadata classification
CN112041837A (zh) 用于政策执行处理的系统及方法
US20220050904A1 (en) Systems and methods for data lifecycle protection
US11797398B2 (en) Systems and methods for checking safety properties
US20220012329A1 (en) Systems and methods for metadata encoding
US20210055954A1 (en) Systems and methods for post cache interlocking
US20220129343A1 (en) Systems and methods for reducing exception latency
US20220198014A1 (en) Systems and methods for policy violation processing
Allievi et al. Windows internals, part 2
WO2023034586A1 (en) Systems and methods for on-demand loading of metadata

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal