KR20210110598A - 추론적 실행을 위한 보안 예측기 - Google Patents

추론적 실행을 위한 보안 예측기 Download PDF

Info

Publication number
KR20210110598A
KR20210110598A KR1020217020544A KR20217020544A KR20210110598A KR 20210110598 A KR20210110598 A KR 20210110598A KR 1020217020544 A KR1020217020544 A KR 1020217020544A KR 20217020544 A KR20217020544 A KR 20217020544A KR 20210110598 A KR20210110598 A KR 20210110598A
Authority
KR
South Korea
Prior art keywords
predictor
mode
circuit
entries
subset
Prior art date
Application number
KR1020217020544A
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 KR20210110598A publication Critical patent/KR20210110598A/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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

추론적 실행을 위한 보안 예측기에 대한 시스템 및 방법이 개시된다. 일부 구현은 프로세서에서 스펙터(Spectre)-클래스 공격과 같은 부-채널 공격을 제거하거나 완화시킬 수 있다. 예를 들어, 명령을 실행하기 위한 집적 회로는 제1 모드에서 동작할 때, 예측기 엔트리의 세트에 저장된 데이터를 사용하여 예측을 생성하는 예측기 회로를 포함한다. 예를 들어, 집적 회로는 집적 회로에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하고; 보안 도메인 천이에 응답하여, 예측기 회로의 모드를 제1 모드로부터 제2 모드로 변경하고, 예측기 엔트리의 세트의 리셋을 호출하고, 제2 모드는 예측기 엔트리의 세트 중 예측기 엔트리의 제1 서브세트의 사용을 방지하고; 리셋의 완료 후, 모드를 제1 모드로 변경하도록 구성될 수 있다.

Description

추론적 실행을 위한 보안 예측기
본 개시는 추론적 실행을 위한 보안 예측기에 관한 것이다.
프로세서 분기 예측 및 추론적 실행에 의존하는 부-채널 공격이 개시되었다. Intel x86 프로세서의 경우, 이러한 공격 중 첫 번째 공격은 처음에 스펙터(Spectre)로 라벨링되었으며, 이러한 공격의 다른 변종 또는 클래스가 존재한다. 간단히 말해서, 이러한 공격은 프로세스/컨텍스트 및/또는 특권 레벨 변경 후, 타겟의 비밀 데이터를 캐시 메모리로 로딩하는 공격자에 의해 선택된 코드를 실행하는 훈련 분기 예측기에 의존한다. 공격자에 의해 사용되는 타겟 코드는 타겟 프로세스 또는 공유 라이브러리로부터의 코드일 수 있으므로, 타겟 프로세스가 해당 코드를 실행하는 것은 합법적이다. 공격자 프로세스가 프로세서의 제어를 다시 획득한 후, 공격자는 캐시의 동일한 위치로부터 데이터를 판독하는 데 걸리는 시간을 측정할 수 있으며, 이에 의해 어떠한 타겟 데이터가 캐시에 존재하는지를 결정하고, 따라서 타겟 프로세스의 데이터의 값을 결정할 수 있다. 이러한 공격을 완화시키는 것은 안전하고 신뢰성 있는 컴퓨팅을 위해 중요하다.
본 개시는 첨부 도면과 함께 읽을 때 후속하는 상세한 설명으로부터 가장 잘 이해된다. 통상적인 관행에 따라, 도면의 다양한 피처는 스케일대로가 아님이 강조된다. 반대로, 다양한 피처의 크기는 명확성을 위해 임의로 확장 또는 축소된다.
도 1은 보안 예측으로 명령을 실행하기 위한 집적 회로의 예의 블록도이다.
도 2는 보안 예측을 위한 예측기 회로의 예의 블록도이다.
도 3은 보안 예측으로 명령을 실행하기 위한 시스템의 예의 블록도이다.
도 4는 보안 예측으로 명령을 실행하기 위한 기술의 예의 흐름도이다.
도 5는 예측기에 대한 리셋 동작 동안 예측기 엔트리 세트의 서브세트에 기초한 예측으로 명령을 실행하기 위한 기술의 예의 흐름도이다.
개요
추론적 실행을 위한 보안 예측기의 구현이 본원에 개시된다. 일부 구현은 이전에 알려진 해결책보다 더 효율적으로 프로세서(예를 들어, x86, ARM 및/또는 RISC-V CPU와 같은 CPU)에 대한 부-채널 공격(예를 들어, 스펙터-클래스 공격)의 가능성을 제거하거나 완화시키는 데 사용될 수 있다.
보안 예측을 위한 시스템 및 방법이 개시된다. 집적 회로(예를 들어, 프로세서 또는 마이크로컨트롤러)는 명령 세트 아키텍처(ISA)(예를 들어, RISC V 명령 세트)의 명령을 디코딩 및 실행하도록 구성될 수 있다. 집적 회로는 파이프라이닝된 아키텍처를 구현할 수 있다. 집적 회로는 파이프라이닝된 아키텍처에서 명령을 실행할 때 지연을 감소시킴으로써 성능을 개선하기 위한 예측기 회로(예를 들어, 분기 예측기)를 포함할 수 있다. 예측기 회로는 대응하는 명령에 대한 예측을 결정하는 데 사용될 수 있는 엔트리에 배열된 예측 데이터에 액세스한다.
집적 회로는 집적 회로에 의해 실행되는 소프트웨어에 대해 보안 도메인 천이가 발생할 때를 검출하도록 구성될 수 있다. 예를 들어, 보안 도메인 천이는 암시적으로 또는 명시적으로 보안 도메인 천이와 연관된 명령을 디코딩하는 것에 기초하여 검출될 수 있다. 예를 들어, 소프트웨어에서 보안 도메인 경계를 표시하기 위한 특수 명령이 사용될 수 있거나 기존 명령이 보안 도메인 천이를 유발하는 것으로 인터프리팅될 수 있다. 일부 구현에서, 인터럽트(interrupt) 신호 수신에 기초하여 보안 도메인 천이가 검출될 수 있다.
보안 도메인 천이가 검출될 때, 예측기 엔트리의 세트를 포함하는 예측기의 상태는 해당 상태의 데이터가 보안 도메인 간에 정보를 전달하는 것을 방지하기 위해 리셋될 수 있다. 예측기의 상태가 클 수 있고 전체 상태를 리셋하는 것이 완료하는 데 여러 클럭 사이클이 소요될 수 있으므로, 예측기가 리셋으로 마킹된 예측기 엔트리를 사용하여 리셋 동작을 위해 지정된 시간 간격 중에 예측을 생성하는 것을 방지하는 하나 이상의 제한된 모드에서 동작하도록 구성될 수 있다. 예를 들어, 제한된 모드에서, 예측기 회로는 리셋의 시간 간격 동안 추론적 실행을 용이하게 하기 위해 예측을 생성하는 것을 비활성화할 수 있다. 예를 들어, 제한된 모드에서, 예측기 회로는 리셋의 시간 간격 동안 예측기 엔트리에 의존하지 않는 정적 예측을 생성하도록 구성될 수 있다. 일부 구현에서, 예측기 회로는 예측기 상태의 서브세트에 기초하여 예측을 생성할 수 있는 하이브리드 예측기를 포함할 수 있다. 예를 들어, 제한된 모드에서, 예측기 엔트리의 분리된 서브세트가 리셋 중에 사용 가능하지 않은 동안, 예측기 회로는 예측기 엔트리의 서브세트에 기초하여 예측을 생성하도록 구성될 수 있다. 일부 구현에서, 리셋 동작의 시간 간격의 지속 시간은 고정되며, 이는 타이밍 변화 및/또는 지터 방지(예를 들어, 실시간 어플리케이션의 경우)를 통한 정보 누출 방지와 같은 이점을 제공할 수 있다.
본원에서 사용되는 "회로"라는 용어는 하나 이상의 기능을 구현하도록 구성된 전자 구성 요소(예를 들어, 트랜지스터, 저항, 커패시터 및/또는 인덕터)의 배열을 지칭한다. 예를 들어, 회로는 논리 함수를 집합적으로 구현하는 논리 게이트를 형성하기 위해 상호 연결된 하나 이상의 트랜지스터를 포함할 수 있다.
본원에서 사용되는 "마이크로아키텍처 상태"라는 용어는 집적 회로에 의해 실행되는 소프트웨어에 의해 직접 액세스할 수 없는 집적 회로(예를 들어, 프로세서 또는 마이크로컨트롤러)의 상태(예를 들어, 데이터의 비트)의 일부를 지칭한다. 예를 들어, 마이크로아키텍처 상태는 캐시에 저장된 데이터 및/또는 제어-흐름 실행에 대한 예측을 수행하는 데 사용되는 제어-흐름 예측기에 의해 저장된 데이터를 포함할 수 있다.
상세 사항
도 1은 보안 예측으로 명령을 실행하기 위한 집적 회로(110)의 예의 블록도이다. 예를 들어, 집적 회로(110)는 프로세서, 마이크로프로세서, 마이크로컨트롤러 또는 IP 코어일 수 있다. 집적 회로(110)는 예측기 회로(120) 및 보안 도메인 천이 검출 회로(130)를 포함한다. 예를 들어, 예측기 회로(120)는 값 예측기, 메모리 의존성 예측기, 프리-페치(pre-fetch) 예측기, 제어-흐름 예측기, 분기 예측기, 분기-이력 테이블, 분기 타겟 버퍼 및/또는 리턴 어드레스 스택(return address stack) 예측기를 포함할 수 있다. 예를 들어, 예측기 회로(120)는 제1 모드(예를 들어, 표준 또는 정상 모드)에서 동작할 때, 예측기 엔트리 세트 중 임의의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 사용되는 명령의 추론적 실행에 사용되는 예측을 생성하도록 구성될 수 있다. 예를 들어, 보안 도메인 천이 검출 회로(130)는 집적 회로(110)(예를 들어, 프로세서)가 다른 프로세스로 컨텍스트 스위칭할 때, 또는 사용자 프로세스에서 운영 체제(커널 모드)로 또는 운영 체제에서 가상 머신 하이퍼바이저(하이퍼바이저 모드)로 스위칭할 때를 검출할 수 있다. 일부 구현에서, 보안 도메인 천이 검출 회로(130)는 보안 도메인의 천이와 명시적 또는 암시적으로 연관된 명령의 디코딩에 기초하여 천이를 검출할 수 있다. 일부 구현에서, 보안 도메인 천이 검출 회로(130)는 인터럽트 신호 수신에 기초하여 천이를 검출할 수 있다. 예측기 회로(120)는 보안 도메인 천이 검출 회로(130)가 보안 도메인 천이 이벤트를 검출할 때 예측기 회로(120)의 상태를 리셋하도록 구성된 예측기 리셋 회로(140)를 포함한다. 예를 들어, 예측기 엔트리의 세트는 전체적으로 또는 부분적으로 SRAM에 저장될 수 있으며 완전히 리셋하는 데 여러 클럭 사이클이 소요될 수 있다. 리셋 동작이 수행되는 동안, 예측기 회로(120)는 리셋을 위해 스케줄링된 예측기 상태의 일부 또는 전부(예를 들어, 예측기 엔트리의 서브세트)를 사용하는 것을 피하도록 구성될 수 있다. 예를 들어, 리셋을 수행하는 데 사용되는 시간 간격 동안, 예측기 회로(120)는 예측을 모두 비활성화하거나, 임의의 예측기 엔트리에 의존하지 않는 정적 예측을 생성하거나, 이미 리셋된 예측기 엔트리의 세트의 서브세트(예를 들어, 플립-플롭에 저장되고 보안 도메인 천이의 검출 시 즉시 리셋될 수 있는 엔트리의 서브세트)에 기초하여 예측을 생성할 수 있다. 예를 들어, 예측기 회로(120)는 예측기 엔트리의 서브세트를 사용하여 예측을 생성할 수 있는 하이브리드 예측기를 포함할 수 있다. 일부 구현에서, 리셋 동작은 고정된 지속 시간의 시간 간격 동안 실행될 수 있으며, 이는 (예를 들어, 실시간 어플리케이션에 대한 성능을 개선하기 위해) 리셋 지연 형태의 정보 누출을 방지하고 지터(jitter)의 소스를 방지할 수 있다. 예를 들어, 예측기 회로(120)는 도 2의 예측기 회로(210)로 구현될 수 있다. 예를 들어, 집적 회로(110)는 도 4의 기술(400)을 구현하는 데 사용될 수 있다.
예를 들어, 집적 회로(110)는 보안 도메인 천이 검출 회로(130)를 사용하여 집적 회로(110)에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하고, 보안 도메인 천이에 응답하여, 예측기 회로(120)의 모드를 제1 모드에서 제2 모드로 변경하고, 예측기 리셋 회로(140)에 리셋 신호를 입력함으로써 예측기 엔트리의 세트의 리셋을 호출하도록 구성될 수 있다. 제2 모드는 예측기 회로(120)가 예측기 엔트리의 세트의 예측기 엔트리의 적어도 제1 서브세트를 사용하여 예측을 생성하는 것을 방지할 수 있다. 집적 회로(110)는 예측기 상태 리셋의 완료 후, 예측기 회로의 모드를 제1 모드로 변경하여 정상 예측을 재개하도록 구성될 수 있다. 일부 구현에서, 집적 회로(110)는 리셋의 부분적인 완료에 응답하여, 예측기 회로(120)의 모드를 아직 리셋되지 않은 예측기 엔트리의 세트의 제3 서브세트의 사용을 방지하면서 예측기 회로(120)가 리셋된 예측기 엔트리의 세트의 제2 서브세트를 사용할 수 있게 하는 제3 모드로 변경하도록 구성될 수 있다. 제2 서브세트 및 제3 서브세트는 제1 서브세트의 비어 있지 않고 분리된 서브세트일 수 있다. 집적 회로(110)는 리셋의 완료 전에 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하도록 구성될 수 있다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로(120)가 예측을 생성하는 것을 방지한다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로(120)가 예측기 엔트리의 세트 모두를 사용하는 것을 방지하고 예측기 회로(120)로 하여금 정적 예측을 생성하게 한다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로(120)로 하여금 예측기 엔트리의 제1 서브세트로부터 분리된 예측기 엔트리의 세트의 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하게 한다. 예를 들어, 예측기 회로(120)는, 제1 모드에서 동작할 때, 예측기 엔트리의 세트의 제2 서브세트에 기초하여 결정된 예측과 제2 세트로부터 분리된 예측기 엔트리의 세트의 하나 이상의 각각의 추가 서브세트에 기초한 하나 이상의 예측의 조합에 기초하여 예측을 생성할 수 있다. 일부 구현에서, 보안 도메인 천이 검출 회로(130)는 보안 도메인 천이와 연관된 명령의 디코딩에 기초하여 보안 도메인 천이를 검출하도록 구성된다. 일부 구현에서, 보안 도메인 천이 검출 회로(130)는 인터럽트 신호 수신에 기초하여 보안 도메인 천이를 검출하도록 구성된다. 일부 구현에서, 리셋을 호출하는 것과 예측기 회로의 모드를 제1 모드로 변경하는 것 사이의 시간 간격은 고정된 지속 시간을 가지며, 이는 리셋 동작의 타이밍을 통한 정보 누출을 방지하고/방지하거나 지터를 감소 또는 제거할 수 있다.
도 2는 보안 예측을 위한 예측기 회로(210)의 예의 블록도이다. 예측기 회로(210)는 예측 결정 회로(230); 예측기 엔트리를 갖는 예측 데이터의 테이블(240); 예측 업데이트 회로(250) 및 예측기 리셋 회로(252)를 포함한다. 예를 들어, 예측 결정 회로(230)는 서브젝트 명령에 대응하는 예측 데이터의 테이블(240)의 엔트리의 데이터에 기초하여 명령에 대한 예측(260)(예를 들어, 분기 예측 또는 값 예측)을 결정하도록 구성될 수 있다. 그러나, 보안 도메인 천이가 검출되면, 예측기 리셋 신호가 예측기 회로(210)에 입력되어 예측기 리셋 회로(252)로 하여금 예측 데이터의 테이블(240)에 저장된 예측기 엔트리의 리셋을 수행하게 하고, 예측 모드 선택 신호가 예측기 회로(210)에 입력되어 예측 결정 회로가 예측(260)을 생성하는 방식을 수정한다. 예를 들어, 예측기 회로(210)의 모드 변경은 예측(260)이 예측 데이터의 테이블(240)의 예측기 엔트리에 의존하지 않는 정적 예측으로서 생성되게 하거나 예측(260)의 생성을 방지할 수 있다. 예를 들어, 예측기 회로(210)의 모드 변경은 예측(260)이 리셋 동작의 초기 단계에서 리셋된 예측 데이터의 테이블(240)의 예측기 엔트리(예를 들어, 플립-플롭에 저장된 엔트리)의 서브세트에만 액세스하여 생성되게 할 수 있다. 예를 들어, 예측기 회로(210)는 도 4의 기술(400)을 구현하는 데 사용될 수 있다.
예를 들어, 예측기 회로(210)는 분기 예측기를 포함할 수 있고 예측(260)은 서브젝트 분기 명령이 취해질 것인지에 대한 예측을 포함할 수 있다. 예를 들어, 예측 데이터의 테이블(240)의 엔트리는 최근에 대응하는 분기 명령이 취해진 빈도를 반영하는 각각의 카운터(예를 들어, 2-비트 포화 카운터)를 포함할 수 있다. 일부 구현에서, 예측기 회로(210)는 분기-이력 테이블을 포함한다. 예를 들어, 예측 데이터의 테이블(240)의 엔트리는 최근에 대응하는 분기 명령의 분기 이력을 반영하는 각각의 시프트 레지스터를 포함할 수 있다. 예를 들어, 예측 데이터 테이블(240)의 엔트리는 프로그램 카운터에 의해 인덱싱될 수 있다. 제1 모드(예를 들어, 표준 또는 정상 모드)에서 예측 결정 회로(230)는 명령에 대응하는 예측 데이터의 테이블(240)의 엔트리의 데이터에 기초하여 명령에 대한 예측(260)을 결정하도록 구성될 수 있다. 예를 들어, 예측 데이터의 테이블(240)의 대응하는 엔트리의 포화 카운터가 임계값을 초과하면, 분기 명령에 대한 예측(260)이 "취득"될 수 있다. 예를 들어, 제2 모드(예를 들어, 제한된 리셋 모드)에서, 예측 결정 회로(230)는 명령에 대한 예측(260)을 정적 예측으로 결정하도록 구성될 수 있다. 예를 들어, 제2 모드(예를 들어, 제한된 리셋 모드)에서, 예측 결정 회로(230)는 리셋되었고 리셋 작의 초기 단계에서 그리고 보안 사용을 위해 이용 가능한 예측기 엔트리의 세트의 서브세트로부터의 데이터에 기초하여 명령에 대한 예측(260)을 결정하도록 구성될 수 있다.
예측 업데이트 회로(250)는 명령 실행 후 예측 데이터의 테이블(240)을 업데이트하도록 구성된다. 예를 들어, 분기 명령이 취해지면, 예측 업데이트 회로(250)는 분기 명령에 대응하는 예측 데이터의 테이블(240)의 엔트리에서 포화 카운터를 증가시킬 수 있다. 예를 들어, 분기 명령이 취해지지 않으면, 예측 업데이트 회로(250)는 분기 명령에 대응하는 예측 데이터의 테이블(240)의 엔트리에서 포화 카운터를 감소시킬 수 있다.
예측기 리셋 회로(252)는 예측 데이터의 테이블(240)에 저장된 예측기 엔트리의 세트에 대해 리셋 동작을 수행하도록 구성될 수 있다. 예를 들어, 예측기 회로는 보안 도메인 천이가 검출될 때 검출기 회로로부터 예측기 리셋 신호를 수신할 수 있고, 이는 예측기 리셋 회로(252)로 하여금 예측 데이터의 테이블(240)의 예측기 엔트리의 리셋을 개시하게 할 수 있다. 예를 들어, 예측 데이터의 테이블(240)의 예측기 엔트리 중 일부 또는 전부가 SRAM에 저장될 수 있다. 모든 예측기 엔트리를 리셋(예를 들어, 엔트리 값을 0 또는 일부 다른 기본값 또는 초기값으로 설정)하는 것은 여러 클럭 사이클이 소요될 수 있다. 예를 들어, 완전한 리셋 동작은 여러 클럭 사이클에 걸친 시간 간격 동안 예측기 리셋 회로(252)에 의해 수행될 수 있다. 일부 구현에서, 예측 데이터의 테이블(240)의 예측기 엔트리 중 일부는 예측기 리셋 신호가 수신될 때 단일 클럭 사이클에서 소거되거나 리셋될 수 있는 플립-플롭 또는 레지스터에 저장될 수 있다. 예를 들어, 플립-플롭에 저장된 예측기 엔트리의 서브세트는 예측기 리셋 신호가 수신된 후 첫 번째 클럭 사이클에서 소거될 수 있는 반면, SRAM에 저장된 예측기 엔트리의 다른 분리된 서브세트는 (예를 들어, SRAM의 다른 부분에 대한 일련의 기입으로) 더 긴 시간 간격의 과정을 통해 리셋될 수 있다.
도 3은 보안 예측으로 명령을 실행하기 위한 시스템(300)의 예의 블록도이다. 시스템(300)은 명령을 저장하는 메모리(302) 및 명령을 실행하도록 구성된 집적 회로(310)를 포함한다. 예를 들어, 집적 회로(310)는 프로세서, 마이크로프로세서, 마이크로컨트롤러 또는 IP 코어일 수 있다. 집적 회로(310)는 상호 접속 인터페이스 회로(312); 캐시(314); 메모리(302)로부터 페칭(fetching)된 명령을 저장하도록 구성된 명령 디코드 버퍼(320); 명령 디코드 버퍼(320)로부터의 명령을 디코딩하고 실행을 위해 하나 이상의 실행 자원 회로(340, 342, 344 및 346)에 대응하는 마이크로-연산을 전달하도록 구성된 명령 디코더 회로(330); 예측기 회로(350); 및 보안 도메인 천이 검출 회로(360)를 포함한다. 예를 들어, 예측기 회로(350)는 도 2의 예측기 회로(210)로서 구현될 수 있다. 예를 들어, 집적 회로(310)는 도 4의 기술(400)을 구현하도록 구성될 수 있다.
상호 접속 인터페이스 회로(312)(예를 들어, 버스 인터페이스 회로)는 메모리(302)를 포함하는 외부 디바이스로 그리고 외부 디바이스로부터 데이터를 전달하도록 구성된다. 예를 들어, 상호 접속 인터페이스 회로(312)는 메모리(302)로부터 명령을 페칭하고 명령이 집적 회로(310)의 파이프라이닝된 아키텍처에 의해 프로세싱되는 동안 명령 디코드 버퍼(320)에 이를 저장하도록 구성될 수 있다. 예를 들어, 상호 접속 인터페이스 회로(312)는 파이프라인의 라이트 백(write back) 단계 동안 명령의 실행으로부터 발생하는 데이터를 메모리(302)에 기입하도록 구성될 수 있다. 예를 들어, 상호 접속 인터페이스 회로(312)는 데이터 블록(예를 들어, 명령)을 페칭할 수 있다. 상호 접속 인터페이스 회로(312)는 캐시(314)를 사용하여 데이터 전송을 최적화하도록 구성될 수 있다.
집적 회로(310)는 실행을 위해 디코딩되는 동안 메모리(302)로부터 페칭된 명령을 저장하도록 구성된 명령 디코드 버퍼(320)를 포함한다. 예를 들어, 명령 디코드 버퍼(320)는 집적 회로(310)의 파이프라이닝된 및/또는 슈퍼스칼라(superscalar) 아키텍처를 용이하게 하는 깊이(예를 들어, 4, 8, 12, 16 또는 24 명령)를 가질 수 있다. 명령은 집적 회로(310)에 의해 지원되는 명령 세트(예를 들어, RISC V 명령 세트, x86 명령 세트, ARM 명령 세트 또는 MIPS 명령 세트)의 멤버일 수 있다.
집적 회로(310)는 명령 세트를 지원하기 위해 명령 또는 마이크로-연산을 실행하도록 구성된 하나 이상의 실행 자원 회로(340, 342, 344 및 346)를 포함한다. 예를 들어, 명령 세트는 RISC V 명령 세트일 수 있다. 예를 들어, 하나 이상의 실행 자원 회로(340, 342, 344 및 346)는 가산기, 시프터(예를 들어, 배럴(barrel) 시프터), 곱셈기 및/또는 부동 포인트 유닛을 포함할 수 있다. 하나 이상의 실행 자원 회로(340, 342, 344 및 346)는 명령 실행의 결과에 기초하여 내부 레지스터 및/또는 플래그 또는 상태 비트(도 3에 명시적으로 나타내지 않음) 및 마이크로 아키텍처 상태를 포함하여 집적 회로(310)의 상태를 업데이트할 수 있다. 명령 실행의 결과는 또한 (예를 들어, 파이프라이닝된 실행의 후속 단계 동안) 메모리(302)에 기입될 수 있다.
집적 회로(310)는 명령 디코드 버퍼(320)의 명령을 디코딩하도록 구성된 명령 디코더 회로(330)를 포함한다. 명령 디코드 버퍼(320)는 명령을 하나 이상의 실행 자원 회로(340, 342, 344 및 346)를 사용하여 집적 회로(310)에 의해 내부에서 실행되는 대응 마이크로-연산으로 변환할 수 있다. 명령 디코더 회로(330)는 실행을 위해 명령을 스케줄링하고 추론적 실행을 구현하기 위해 예측기 회로(350)로부터의 예측을 사용하도록 구성된다.
집적 회로(310)는 추론적 실행을 가능하게 하는 예측을 생성하도록 구성된 예측기 회로(350)를 포함한다. 예측기 회로(350)의 예측기 엔트리는 명령(예를 들어, 분기 명령)에 대한 예측을 결정하는 데 사용되는 데이터(예를 들어, 카운터)를 저장할 수 있다. 예를 들어, 예측기 회로(350)는 값 예측기, 메모리 의존성 예측기, 프리-페치 예측기, 제어-흐름 예측기, 분기 예측기, 분기-이력 테이블, 분기 타겟 버퍼 및/또는 리턴 어드레스 스택(return address stack) 예측기를 포함할 수 있다. 예를 들어, 예측기 회로(350)는 제1 모드(예를 들어, 표준 또는 정상 모드)에서 동작할 때, 예측기 엔트리의 세트 중 임의의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 명령의 추론적 실행을 위해 사용되는 예측을 생성하도록 구성될 수 있다. 예측기 회로(350)는 예측기 엔트리의 데이터가 정보 누출에 대한 부-채널로서 사용되는 것을 방지하기 위해 집적 회로(310)에 의해 실행되는 소프트웨어에서 보안 도메인 천이가 발생할 때 호출될 수 있는 예측기 엔트리의 세트의 리셋을 지원할 수 있다. 리셋 동작은 완료하는 데 단일 클럭 사이클보다 더 많이 소요될 수 있으므로, 예측기 회로(350)는 리셋 동작을 수행하기 위해 할당된 시간 간격 동안 리셋을 위해 스케줄링된 예측기 엔트리가 사용되는 것을 방지하는 제한 모드를 또한 지원할 수 있다. 예를 들어, 예측기 회로(350)는 예측기 회로(350)를 비활성화하고 예측기 상태의 리셋을 위해 할당된 시간 간격 동안 예측의 생성을 방지하는 제한 모드를 지원할 수 있다. 예를 들어, 예측기 회로(350)는 예측기 회로(350)로 하여금 예측기 상태의 리셋을 위해 할당된 시간 간격 동안 정적 예측을 생성하게 하는 제한 모드를 지원할 수 있다. 예를 들어, 예측기 회로(350)는 예측기 회로(350)로 하여금 리셋 동작의 초기 단계 동안 리셋된 예측기 엔트리의 서브세트만을 사용하여 예측을 생성하게 하는 제한 모드를 지원할 수 있다. 일부 구현에서, 예측기 회로(350)는 예측기 엔트리의 세트의 하나 이상의 서브세트에 기초하여 예측을 생성하도록 구성된 하이브리드 예측기이다. 예를 들어, 예측기 회로(350)는 다수결 방식, 고정된 계층 또는 서브세트의 우선도, 이용 가능한 서브세트로부터의 예측 중에서 선택하는 메타-예측을 사용하여, 또는 각각의 서브세트를 사용하여 생성된 예측에 대한 예측 신뢰도 스코어에 기초하여 예측기 엔트리의 복수의 각각의 서브세트로부터의 예측을 조합할 수 있다. 예를 들어, 이러한 하이브리드 방식은 예측기 엔트리의 세트의 일부가 리셋 동작 동안 사용할 수 없는 동안 합리적인 예측을 결정하는 데 사용될 수 있다.
집적 회로(310)는 집적 회로(310)에 의해 실행되는 소프트웨어가 하나의 보안 도메인에서 다른 보안 도메인으로 변경될 때를 검출하도록 구성된 보안 도메인 천이 회로(360)를 포함한다. 예를 들어, 보안 도메인 천이 검출 회로(360)는 집적 회로(310)가 다른 프로세스로 컨텍스트 스위칭을 수행하거나, 인터럽트를 수신하거나, 사용자 프로세스에서 운영 체제로 스위칭하거나, 운영 체제에서 가상 머신 하이퍼바이저로 스위칭할 때의 천이를 검출할 수 있다. 일부 구현에서, 보안 도메인 천이 검출 회로(360)는 보안 도메인 천이와 연관된 명령을 (예를 들어, 명령 디코더 회로(330)를 사용하여) 디코딩하는 것에 기초하여 보안 도메인 천이를 검출할 수 있다. 디코딩된 명령은 보안 도메인의 천이와 명시적으로 또는 암시적으로 연관될 수 있다. 예를 들어, 디코딩된 명령은 명령 직전 또는 직후에 개시되는 보안 도메인 경계를 강제하려는 소프트웨어 작성자의 의도를 시그널링하는 명시적인 목적을 갖는 특수 명령일 수 있다. 예를 들어, 명령은 보안 도메인 천이와 암시적으로 연관되는 프로시저 호출 또는 반환 명령일 수 있다. 일부 구현에서, 보안 도메인 천이 검출 회로(360)는 인터럽트 신호 수신에 기초하여 보안 도메인 천이를 검출할 수 있다. 보안 도메인 천이가 검출되면, 보안 도메인 천이 검출 회로(360)는 모드 선택 신호 및/또는 리셋 신호를 예측기 회로(350)에 발행할 수 있다.
예를 들어, 집적 회로(310)는 보안 도메인 천이 검출 회로(360)를 사용하여 집적 회로(310)에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하고, 보안 도메인 천이에 응답하여, 예측기 회로(350)의 모드를 제1 모드에서 제2 모드로 변경하고 예측기 엔트리의 세트의 리셋을 호출하도록 구성될 수 있다. 제2 모드는 예측기 회로(350)가 예측기 엔트리의 세트의 예측기 엔트리의 적어도 제1 서브세트를 사용하여 예측을 생성하기 것을 방지할 수 있다. 집적 회로(310)는 리셋의 완료 후, 예측기 회로의 모드를 제1 모드로 변경하여 정상 예측을 재개하도록 구성될 수 있다. 일부 구현에서, 집적 회로(310)는 리셋의 부분적인 완료에 응답하여, 예측기 회로(350)의 모드를 아직 리셋되지 않은 예측기 엔트리의 세트의 제3 서브세트의 사용을 방지하면서 리셋된 예측기 엔트리의 세트의 제2 서브세트를 예측기 회로(350)가 사용할 수 있게 하는 제3 모드로 변경하도록 구성될 수 있다. 제2 서브세트 및 제3 서브세트는 제1 서브세트의 비어 있지 않고 분리된 서브세트일 수 있다. 집적 회로(310)는 리셋의 완료 전에 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하도록 구성될 수 있다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로(350)가 예측을 생성하는 것을 방지한다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로(350)가 예측기 엔트리의 세트 모두를 사용하는 것을 방지하고 예측기 회로(350)로 하여금 정적 예측을 생성하게 한다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로(350)로 하여금 예측기 엔트리의 제1 서브세트로부터 분리된 예측기 엔트리의 세트의 제2 서브세트에 있는 예측기 엔트리에 기초하여 예측을 생성하게 한다. 예를 들어, 예측기 회로(350)는, 제1 모드에서 동작할 때, 예측기 엔트리의 세트의 제2 서브세트에 기초하여 결정된 예측과 제2 세트로부터 분리된 예측기 엔트리의 세트의 하나 이상의 각각의 추가 서브세트에 기초한 하나 이상의 예측의 조합에 기초하여 예측을 생성할 수 있다. 일부 구현에서, 보안 도메인 천이 검출 회로(360)는 보안 도메인 천이와 연관된 명령의 디코딩에 기초하여 보안 도메인 천이를 검출하도록 구성된다. 일부 구현에서, 보안 도메인 천이 검출 회로(360)는 인터럽트 신호 수신에 기초하여 보안 도메인 천이를 검출하도록 구성된다. 일부 구현에서, 리셋을 호출하는 것과 예측기 회로의 모드를 제1 모드로 변경하는 것 사이의 시간 간격은 고정된 지속 시간을 가지며, 이는 리셋 동작의 타이밍을 통한 정보 누출을 방지하고/방지하거나 지터를 감소 또는 제거할 수 있다.
도 4는 보안 예측으로 명령을 실행하기 위한 기술(400)의 예의 흐름도이다. 기술(400)은 집적 회로에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출(410)하고; 보안 도메인 천이에 응답하여, 예측기 엔트리의 세트의 리셋을 호출하고(420), 예측기 회로의 모드를 제1 모드에서 제2 모드로 변경(430)하고; 리셋 시간 간격 동안 예측기 엔트리에 대한 액세스를 제한하는 예측기 회로에 대한 하나 이상의 제한 모드를 사용하여 실행을 계속하고(440); 리셋의 완료 후, 예측기 회로의 모드를 제1 모드로 변경하고(450), 예측기 엔트리에 대한 완전한 액세스를 갖는 제1 모드를 사용하여 실행을 계속하는 것(460)을 포함한다. 예를 들어, 예측기 회로는 제어-흐름 예측기, 값 예측기, 분기 예측기, 분기-이력 테이블, 분기 타겟 버퍼 및/또는 리턴 어드레스 스택 예측기를 포함할 수 있다. 예를 들어, 기술(400)은 도 1의 집적 회로(110)를 사용하여 구현될 수 있다. 예를 들어, 기술(400)은 도 2의 예측기 회로(210)를 사용하여 구현될 수 있다. 예를 들어, 기술(400)은 도 3의 시스템(300)을 사용하여 구현될 수 있다.
기술(400)은 제1 모드(예를 들어, 정상 모드의 표준)에서 동작할 때 예측기 엔트리의 세트 중 임의의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 명령의 추론적 실행을 위해 사용되는 예측을 생성하도록 구성된 예측기 회로를 포함하는 집적 회로(예를 들어, 집적 회로(310))에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하는 것(410)을 포함한다. 일부 구현에서, 보안 도메인 천이는 보안 도메인 천이와 연관된 명령의 디코딩에 기초하여 검출될 수 있다(410). 예를 들어, 소프트웨어에서 보안 도메인 경계를 명시적으로 표시하는 데 사용될 수 있는 특수 명령이 디코딩될 수 있다. 예를 들어, 다른 목적(예를 들어, 프로시저 호출 또는 리턴 명령)을 제공하는 명령이 보안 도메인 천이와 암시 적으로 연관될 수 있으며, 보안 도메인 천이는 이러한 암시적으로 연관된 명령 중 하나의 디코딩에 기초하여 검출될 수 있다(410). 일부 구현에서, 보안 도메인 천이는 인터럽트 신호 수신에 기초하여 검출된다(410). 예를 들어, 특정 인터럽트가 보안 도메인 천이와 연관될 수 있거나, 모든 인터럽트가 보안 도메인 천이와 연관될 수 있다. 일부 구현에서, 보안 도메인 천이는 명령의 디코딩에 기초하고 또한 보안 도메인 천이와 연관된 집적 회로(예를 들어, 프로세서)의 내부 상태에 기초하여 검출된다(410). 예를 들어, 보안 도메인 천이는 예외-리턴 명령을 디코딩 또는 실행하는 것에 기초하고 보안 도메인 천이와 연관된 값을 갖는 착신지의 특권 모드에 기초하여 검출될 수 있으며(410), 여기서 프로세서 상태는 어떤 특권 모드가 리턴될 것인지를 기록한다.
(동작 415에서) 보안 도메인 천이가 검출되면, 기술(400)은 보안 도메인 천이에 응답하여, 예측기 회로의 모드를 제1 모드에서 제2 모드로 변경하고(430) 예측기 엔트리의 세트의 리셋을 호출하는 것(420)을 포함한다. 제2 모드는 예측기 회로가 예측기 엔트리의 세트의 예측기 엔트리의 적어도 제1 서브세트를 사용하여 예측을 생성하는 것을 방지할 수 있다. 예를 들어, 제2 모드에서의 동작은 예측기 회로가 예측을 생성하는 것을 방지할 수 있다. 예를 들어, 제2 모드에서의 동작은 예측기 회로가 예측기 엔트리의 세트의 모두를 사용하는 것을 방지할 수 있고 예측기 회로로 하여금 정적 예측을 생성하게 할 수 있다. 일부 구현에서, 제2 모드에서의 동작은 예측기 회로가 예측기 엔트리의 제1 서브세트로부터 분리된 예측기 엔트리의 세트의 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하게 한다. 예를 들어, 예측기 회로는 예측기 상태에 포함된 예측기 엔트리의 하나 이상의 서브세트에 기초하여 예측을 생성할 수 있는 하이브리드 예측기를 포함할 수 있다. 예를 들어, 예측기 회로는 다수결 방식, 고정된 계층 또는 서브세트의 우선도, 이용 가능한 서브세트로부터의 예측 중에서 선택하는 메타-예측을 사용하여, 또는 각각의 서브세트를 사용하여 생성된 예측에 대한 예측 신뢰도 스코어에 기초하여 예측기 엔트리의 복수의 각각의 서브세트로부터의 예측을 조합할 수 있다. 정상 모드에서, 예측기 회로는 예측기 엔트리 세트의 복수의 서브세트에 기초하여 예측을 조합함으로써 예측을 생성할 수 있다. 예를 들어, 예측기 회로는 제1 모드에서 동작할 때, 예측기 엔트리의 세트의 제2 서브세트에 기초하여 결정된 예측과 제2 세트로부터 분리된 예측기 엔트리의 세트의 하나 이상의 각각의 추가 서브세트에 기초한 하나 이상의 예측의 조합에 기초하여 예측을 생성할 수 있다. 예를 들어, 제2 모드(예를 들어, 제한 모드)에서, 예측기 회로는 리셋 동작 동안 이용 가능해질 때 예측기 엔트리의 하나 이상의 서브세트만에 기초하여 예측을 결정하도록 구성될 수 있다.
기술(400)은 리셋 시간 간격 동안 예측기 엔트리에 대한 액세스를 제한하는 예측기 회로에 대한 하나 이상의 제한된 모드를 사용하여 실행을 계속하는 것(440)을 포함한다. 예를 들어, 명령의 실행을 계속하는 것(440)은 추론적 실행을 용이하게 하기 위해 제2 모드에서 동작하는 예측기 회로에 의해 결정된 예측을 사용하는 것을 포함할 수 있다. 일부 구현에서, 제2 모드에서 동작하는 동안 예측기 회로에 의해 어떠한 예측도 생성되지 않고, 리셋 동작이 완료될 때까지 추론적 실행의 이점 없이 실행이 계속된다(440). 예를 들어, 도 5의 기술(500)은 추론적 실행을 계속하기 위해(440) 리셋 동작 동안 예측기의 성능을 개선하기 위해 이용 가능하게 될 때 예측기 엔트리 세트의 추가 부분을 활용하도록 구현될 수 있다.
(동작 445에서) 리셋이 완료되면, 기술(400)은 리셋 완료 후, 예측기 회로의 모드를 제1 모드(예를 들어, 표준 또는 정상 모드)로 변경하는 것(450)을 포함한다. 일부 구현에서, 리셋을 호출하는 것(420)과 예측기 회로의 모드를 제1 모드로 변경하는 것(450) 사이의 시간 간격은 고정된 지속 시간을 갖는다. 고정된 지속 시간을 갖도록 이 시간 간격을 제한하면 타이밍 정보의 형태로 보안 도메인 경계를 통한 정보 누출 방지 및/또는 (예를 들어, 실시간 어플리케이션의 경우) 지터의 소스 방지와 같은 이점을 제공할 수 있다.
예측기 회로의 모드가 제1 모드(예를 들어, 표준 또는 정상 모드)로 다시 변경된 후(450), 기술(400)은 예측기 엔트리에 대한 완전한 액세스를 갖는 제1 모드를 사용하여 실행을 계속하는 것(460)을 포함한다. (예를 들어, 예측 업데이트 회로(250)를 사용하여) 예측 업데이트하는 실행을 계속한(460) 일정 시간 후 예측기 엔트리의 세트를 포함하는 예측기 상태는 안정화되고 새로운 보안 도메인 내의 조건에 대해 조정된 유용한 값으로 수렴할 수 있다. 도 5는 예측기에 대한 리셋 동작 동안 예측기 엔트리 세트의 서브세트에 기초하여 예측으로 명령을 실행하기 위한 기술(500)의 예의 흐름도이다.
도 5는 예측기에 대한 리셋 동작 동안 예측기 엔트리 세트의 서브세트에 기초하여 예측으로 명령을 실행하기 위한 기술(500)의 예의 흐름도이다. 기술(500)은 리셋의 부분적인 완료에 응답하여, 아직 리셋되지 않은 예측기 엔트리 세트의 제3 서브세트의 사용을 방지하면서 리셋된 예측기 엔트리 세트의 제2 서브세트를 예측기 회로가 사용할 수 있게 하는 제3 모드(예를 들어, 추가적인 덜 제한적인 모드)로 예측기 회로의 모드를 변경하는 것(510)을 포함한다. 제2 서브세트 및 제3 서브세트는 제1 서브세트의 비어 있지 않고 분리된 서브세트일 수 있다. 기술(500)은 리셋의 완료 전에 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하는 것(520)을 포함한다. 예를 들어, 기술(500)은 해당 서브세트가 리셋 동작 동안 이용 가능하게 될 때 하이브리드 예측기에서 예측기 엔트리의 추가 서브세트를 이용하는 데 사용될 수 있다.
제1 양태에서, 본 명세서에 설명된 주제는 명령을 실행하기 위한 집적 회로에 구현될 수 있으며, 이는 제1 모드에서 동작할 때, 임의의 예측기 엔트리의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 명령의 추론적 실행에 사용되는 예측을 생성하도록 구성된 예측기 회로를 포함하고, 집적 회로는, 집적 회로에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하고; 보안 도메인 천이에 응답하여, 예측기 회로의 모드를 제1 모드로부터 제2 모드로 변경하고, 예측기 엔트리의 세트의 리셋을 호출하며, 제2 모드는 예측기 회로가 예측기 엔트리의 세트 중 예측기 엔트리의 적어도 제1 서브세트를 사용하여 예측을 생성하는 것을 방지하고; 리셋의 완료 후, 예측기 회로의 모드를 제1 모드로 변경하도록 구성된다.
제2 양태에서, 본 명세서에 설명된 주제는 방법으로 구현될 수 있으며, 이는 제1 모드에서 동작할 때, 임의의 예측기 엔트리의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 명령의 추론적 실행에 사용되는 예측을 생성하도록 구성된 예측기 회로를 포함하는 집적 회로에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하는 단계; 보안 도메인 천이에 응답하여, 예측기 회로의 모드를 제1 모드로부터 제2 모드로 변경하고, 예측기 엔트리의 세트의 리셋을 호출하는 단계로서, 제2 모드는 예측기 회로가 예측기 엔트리의 세트 중 예측기 엔트리들의 적어도 제1 서브세트를 사용하여 예측을 생성하는 것을 방지하는, 호출하는 단계; 및 리셋의 완료 후, 예측기 회로의 모드를 제1 모드로 변경하는 단계를 포함한다.
본 개시는 특정 실시예와 관련하여 설명되었지만, 본 개시는 개시된 실시예에 제한되지 않고, 반대로 첨부된 청구항의 범위 내에 포함되는 다양한 수정 및 등가 구성을 포함하도록 의도된 것임을 이해해야 하며, 그 범위는 법에 의해 허용되는 이러한 모든 수정 및 등가 구조를 포함하도록 가장 넓은 해석에 따라야 한다.

Claims (30)

  1. 명령들을 실행하기 위한 집적 회로에 있어서,
    제1 모드에서 동작할 때, 임의의 예측기 엔트리들의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 명령들의 추론적 실행(speculative execution)에 사용되는 예측들을 생성하도록 구성된 예측기 회로를 포함하고, 상기 집적 회로는,
    상기 집적 회로에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이(security domain transition)를 검출하고;
    상기 보안 도메인 천이에 응답하여, 상기 예측기 회로의 모드를 상기 제1 모드로부터 제2 모드로 변경하고, 상기 예측기 엔트리들의 세트의 리셋을 호출하며 - 상기 제2 모드는 상기 예측기 회로가 상기 예측기 엔트리들의 세트 중 예측기 엔트리들의 적어도 제1 서브세트를 사용하여 예측들을 생성하는 것을 방지함 - ;
    상기 리셋의 완료 후, 상기 예측기 회로의 모드를 상기 제1 모드로 변경하도록
    구성되는 것인, 집적 회로.
  2. 제1항에 있어서,
    상기 집적 회로는:
    상기 리셋의 부분적인 완료에 응답하여, 아직 리셋되지 않은 상기 예측기 엔트리들의 세트의 제3 서브세트의 사용을 방지하면서, 리셋된 상기 예측기 엔트리들의 세트의 제2 서브세트를 상기 예측기 회로가 사용할 수 있게 하는 제3 모드로 상기 예측기 회로의 모드를 변경하고 - 상기 제2 서브세트 및 상기 제3 서브세트는 상기 제1 서브세트의 비어 있지 않고 분리된(disjoint) 서브세트들임 - ;
    상기 리셋의 완료 전에 상기 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하도록
    구성되는 것인, 집적 회로.
  3. 제1항 또는 제2항에 있어서,
    상기 제2 모드에서의 동작은 상기 예측기 회로가 예측들을 생성하는 것을 방지하는 것인, 집적 회로.
  4. 제1항 또는 제2항에 있어서,
    상기 제2 모드에서의 동작은 상기 예측기 회로가 상기 예측기 엔트리들의 모든 세트를 사용하는 것을 방지하고 상기 예측기 회로로 하여금 정적 예측(static prediction)을 생성하게 하는 것인, 집적 회로.
  5. 제1항에 있어서,
    상기 제2 모드에서의 동작은 상기 예측기 회로로 하여금 상기 예측기 엔트리들의 상기 제1 서브세트로부터 분리된 상기 예측기 엔트리들의 세트의 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하게 하는 것인, 집적 회로.
  6. 제5항에 있어서,
    상기 예측기 회로는, 상기 제1 모드에서 동작할 때, 상기 예측기 엔트리들의 세트의 상기 제2 서브세트에 기초하여 결정된 예측과 상기 제2 세트로부터 분리된 상기 예측기 엔트리들의 세트의 하나 이상의 각각의 추가 서브세트에 기초한 하나 이상의 예측의 조합에 기초하여 예측을 생성하는 것인, 집적 회로.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 집적 회로는 보안 도메인 천이들과 연관된 명령의 디코딩에 기초하여 상기 보안 도메인 천이를 검출하도록 구성되는 것인, 집적 회로.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 집적 회로는 보안 도메인 천이들과 연관된 상기 집적 회로의 내부 상태에 기초하여 상기 보안 도메인 천이를 검출하도록 구성되는 것인, 집적 회로.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 집적 회로는 인터럽트(interrupt) 신호 수신에 기초하여 상기 보안 도메인 천이를 검출하도록 구성되는 것인, 집적 회로.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 리셋을 호출하는 것과 상기 예측기 회로의 모드를 상기 제1 모드로 변경하는 것 사이의 시간 간격은 고정된 지속 시간을 갖는 것인, 집적 회로.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 예측기 회로는 제어-흐름 예측기를 포함하는 것인, 집적 회로.
  12. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 예측기 회로는 값 예측기를 포함하는 것인, 집적 회로.
  13. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 예측기 회로는 분기-이력(branch-history) 테이블을 포함하는 것인, 집적 회로.
  14. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 예측기 회로는 분기 타겟 버퍼를 포함하는 것인, 집적 회로.
  15. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 예측기 회로는 리턴 어드레스 스택(return address stack) 예측기를 포함하는 것인, 집적 회로.
  16. 방법에 있어서,
    제1 모드에서 동작할 때, 임의의 예측기 엔트리들의 세트로부터 선택된 하나 이상의 엔트리에 저장된 데이터를 사용하여 명령들의 추론적 실행에 사용되는 예측들을 생성하도록 구성된 예측기 회로를 포함하는 집적 회로에 의해 실행되는 소프트웨어에 대한 보안 도메인 천이를 검출하는 단계;
    상기 보안 도메인 천이에 응답하여, 상기 예측기 회로의 모드를 상기 제1 모드로부터 제2 모드로 변경하고, 상기 예측기 엔트리들의 세트의 리셋을 호출하는 단계 - 상기 제2 모드는 상기 예측기 회로가 상기 예측기 엔트리들의 세트 중 상기 예측기 엔트리들의 적어도 제1 서브세트를 사용하여 예측들을 생성하는 것을 방지함 - ; 및
    상기 리셋의 완료 후, 상기 예측기 회로의 모드를 상기 제1 모드로 변경하는 단계
    를 포함하는, 방법.
  17. 제16항에 있어서,
    상기 리셋의 부분적인 완료에 응답하여, 아직 리셋되지 않은 상기 예측기 엔트리들의 세트의 제3 서브세트의 사용을 방지하면서, 리셋된 상기 예측기 엔트리들의 세트의 제2 서브세트를 상기 예측기 회로가 사용할 수 있게 하는 제3 모드로 상기 예측기 회로의 모드를 변경하는 단계 - 상기 제2 서브세트 및 상기 제3 서브세트는 상기 제1 서브세트의 비어 있지 않고 분리된 서브세트들임 - ; 및
    상기 리셋의 완료 전에 상기 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하는 단계
    를 포함하는, 방법.
  18. 제16항 또는 제17항에 있어서,
    상기 제2 모드에서의 동작은 상기 예측기 회로가 예측들을 생성하는 것을 방지하는 것인, 방법.
  19. 제16항 또는 제17항에 있어서,
    상기 제2 모드에서의 동작은 상기 예측기 회로가 상기 예측기 엔트리들의 모든 세트를 사용하는 것을 방지하고 상기 예측기 회로로 하여금 정적 예측을 생성하게 하는 것인, 방법.
  20. 제16항에 있어서,
    상기 제2 모드에서의 동작은 상기 예측기 회로로 하여금 상기 예측기 엔트리들의 상기 제1 서브세트로부터 분리된 상기 예측기 엔트리들의 세트의 제2 서브세트의 예측기 엔트리에 기초하여 예측을 생성하게 하는 것인, 방법.
  21. 제20항에 있어서,
    상기 예측기 회로는, 상기 제1 모드에서 동작할 때, 상기 예측기 엔트리들의 세트의 상기 제2 서브세트에 기초하여 결정된 예측과 상기 제2 세트로부터 분리된 상기 예측기 엔트리들의 세트의 하나 이상의 각각의 추가 서브세트에 기초한 하나 이상의 예측의 조합에 기초하여 예측을 생성하는 것인, 방법.
  22. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 보안 도메인 천이는 보안 도메인 천이들과 연관된 명령의 디코딩에 기초하여 검출되는 것인, 방법.
  23. 제16항 내지 제22항 중 어느 한 항에 있어서,
    상기 보안 도메인 천이는 보안 도메인 천이들과 연관된 상기 집적 회로의 내부 상태에 기초하여 검출되는 것인, 방법.
  24. 제16항 내지 제23항 중 어느 한 항에 있어서,
    상기 보안 도메인 천이는 인터럽트 신호 수신에 기초하여 검출되는 것인, 방법.
  25. 제16항 내지 제24항 중 어느 한 항에 있어서,
    상기 리셋을 호출하는 것과 상기 예측기 회로의 모드를 상기 제1 모드로 변경하는 것 사이의 시간 간격은 고정된 지속 시간을 갖는 것인, 방법.
  26. 제16항 내지 제25항 중 어느 한 항에 있어서,
    상기 예측기 회로는 제어-흐름 예측기를 포함하는 것인, 방법.
  27. 제16항 내지 제25항 중 어느 한 항에 있어서,
    상기 예측기 회로는 값 예측기를 포함하는 것인, 방법.
  28. 제16항 내지 제25항 중 어느 한 항에 있어서,
    상기 예측기 회로는 분기-이력 테이블을 포함하는 것인, 방법.
  29. 제16항 내지 제25항 중 어느 한 항에 있어서,
    상기 예측기 회로는 분기 타겟 버퍼를 포함하는 것인, 방법.
  30. 제16항 내지 제25항 중 어느 한 항에 있어서,
    상기 예측기 회로는 리턴 어드레스 스택 예측기를 포함하는 것인, 방법.
KR1020217020544A 2018-12-31 2019-12-20 추론적 실행을 위한 보안 예측기 KR20210110598A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862787248P 2018-12-31 2018-12-31
US62/787,248 2018-12-31
US16/362,121 US11429392B2 (en) 2018-12-31 2019-03-22 Secure predictors for speculative execution
US16/362,121 2019-03-22
PCT/US2019/067794 WO2020142262A1 (en) 2018-12-31 2019-12-20 Secure predictors for speculative execution

Publications (1)

Publication Number Publication Date
KR20210110598A true KR20210110598A (ko) 2021-09-08

Family

ID=71122966

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217020544A KR20210110598A (ko) 2018-12-31 2019-12-20 추론적 실행을 위한 보안 예측기

Country Status (5)

Country Link
US (1) US11429392B2 (ko)
EP (1) EP3906493A1 (ko)
KR (1) KR20210110598A (ko)
CN (1) CN113228024A (ko)
WO (1) WO2020142262A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11443044B2 (en) * 2019-09-23 2022-09-13 International Business Machines Corporation Targeted very long delay for increasing speculative execution progression
DE102020134681A1 (de) 2020-01-31 2021-08-05 Intel Corporation Vorrichtungen, verfahren und systeme für anweisungen zum anfordern eines verlaufs-resets eines prozessorkerns
US11436018B2 (en) * 2020-01-31 2022-09-06 Intel Corporation Apparatuses, methods, and systems for instructions to request a history reset of a processor core
US20220206819A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Dynamic detection of speculation vulnerabilities
KR102514257B1 (ko) * 2021-02-19 2023-03-29 한국전자통신연구원 제어 흐름 무결성 위반 탐지 장치 및 방법
US11861368B2 (en) * 2022-05-24 2024-01-02 Arm Limited Re-enabling use of prediction table after execution state switch

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US20090089564A1 (en) * 2006-12-06 2009-04-02 Brickell Ernie F Protecting a Branch Instruction from Side Channel Vulnerabilities
US8555040B2 (en) 2010-05-24 2013-10-08 Apple Inc. Indirect branch target predictor that prevents speculation if mispredict is expected
US9201658B2 (en) 2012-09-24 2015-12-01 Apple Inc. Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US10001998B2 (en) 2014-04-18 2018-06-19 Oracle International Corporation Dynamically enabled branch prediction
US10540181B2 (en) * 2018-01-19 2020-01-21 Marvell World Trade Ltd. Managing branch prediction information for different contexts
US10705848B2 (en) * 2018-05-24 2020-07-07 Arm Limited TAGE branch predictor with perceptron predictor as fallback predictor
US10831491B2 (en) * 2018-06-29 2020-11-10 Intel Corporation Selective access to partitioned branch transfer buffer (BTB) content

Also Published As

Publication number Publication date
CN113228024A (zh) 2021-08-06
WO2020142262A1 (en) 2020-07-09
US20200210197A1 (en) 2020-07-02
EP3906493A1 (en) 2021-11-10
US11429392B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
US11429392B2 (en) Secure predictors for speculative execution
US11681533B2 (en) Restricted speculative execution mode to prevent observable side effects
US11347507B2 (en) Secure control flow prediction
Li et al. Conditional speculation: An effective approach to safeguard out-of-order execution against spectre attacks
US10360162B2 (en) Processing systems and methods for transitioning between privilege states based on an address of a next instruction to be fetched
CN105980993B (zh) 数据处理设备和方法
JP6902029B2 (ja) 有界ポインタを管理するための装置および方法
CN112988624A (zh) 用于保护影子栈的处理器、方法、系统和指令
CN104978284B (zh) 处理器子程序高速缓冲存储器
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
KR20140113585A (ko) 명령어 에뮬레이션 프로세서, 방법 및 시스템
US20220292183A1 (en) Secure control flow prediction
US11995446B2 (en) Branch predictor storing encrypted information
WO2019197797A1 (en) An apparatus and method for controlling allocation of instructions into an instruction cache storage
CN110235103B (zh) 基于块的微架构中具有不同特权等级的模式之间的推测性转变
US10324727B2 (en) Memory dependence prediction
Feng et al. Constant-Time Loading: Modifying CPU Pipeline to Defeat Cache Side-Channel Attacks
US9501667B2 (en) Security domain prediction
JP2011070290A (ja) データプロセッサ
US11989425B2 (en) Apparatus and method for controlling access to a set of memory mapped control registers
Nazarenus Mitigation of actual cpu attacks–a hare and hedgehog race not to win