KR20240063179A - 제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서 - Google Patents

제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서 Download PDF

Info

Publication number
KR20240063179A
KR20240063179A KR1020247013873A KR20247013873A KR20240063179A KR 20240063179 A KR20240063179 A KR 20240063179A KR 1020247013873 A KR1020247013873 A KR 1020247013873A KR 20247013873 A KR20247013873 A KR 20247013873A KR 20240063179 A KR20240063179 A KR 20240063179A
Authority
KR
South Korea
Prior art keywords
branch
processor
instruction
redundant
thread
Prior art date
Application number
KR1020247013873A
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
Priority claimed from US17/485,436 external-priority patent/US12111913B2/en
Priority claimed from US17/485,471 external-priority patent/US11921843B2/en
Application filed by 세레모픽 인코포레이티드 filed Critical 세레모픽 인코포레이티드
Publication of KR20240063179A publication Critical patent/KR20240063179A/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/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
    • 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/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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

장애 검출 기능을 구비한 보안 프로세서는, 용장 브랜치 프로세서 스레드로 실행되는 코어 스레드를 구비한다. 구성의 일례에서는, 코어 스레드는 완전한 명령 세트를 실행하도록 구성된 완전히 기능적인 코어 프로세서 상에서 동작하고, 용장 브랜치 프로세서 스레드는, 초기화 명령과, 브랜치 명령 등의 플로우 제어 명령만이 포함되어 있으며, 완전한 명령 세트의 서브 세트, 특히 브랜치 제어 변수 초기화와 브랜치 명령을 실행하도록 구성된 용장 브랜치 프로세서 상에서 동작하여 용장 브랜치 프로세서 아키텍쳐를 대폭 간소화한다. 장애 상태는, 브랜치 성립/불성립과 브랜치 타겟의 이력을 비교하거나, 코어 스레드가 용장 브랜치 프로세서 스레드의 프로그램 카운터 액티비티를 비교함으로써 검출된다.

Description

제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서
본 발명은 스레드(thread) 보안 프로세서에 관한 것이다. 특히, 본 발명은 단일 스레드 및 멀티 스레드 애플리케이션에서 실행된 프로그램에 대한 침입을 검출하기 위한 아키텍처에 관한 것이다.
파이프라인(pipeline) 프로세서는 컴퓨터 아키텍처 분야에서 잘 알려져 있다. 일련의 파이프라인 스테이지 중 각 스테이지는 연산을 수행하고 그 결과를 다음 스테이지로 전달한다.
컴퓨터 아키텍처의 일반화된 보안 문제는 '코드 삽입' 문제이고, 일반적으로 보안 위반의 일부로 악성 개체가 실행 가능한 코드를 바람직하지 않은 작업을 수행하는 코드로 대체한다. 악성 코드 주입은 버퍼 오버런(buffer overrun)을 통해 실행될 수 있고 이에 의해 실행 가능한 코드를 포함하는 긴 데이터 문자열이 입력되고 해당 데이터 문자열을 처리하는 프로그램이 데이터 길이를 줄이거나 점검하지 않아서 실행 코드 공간에 인접한 메모리에 데이터 버퍼 오버런이 발생하고 그 결과 악성 코드가 실행 코드 공간에서 실행된다. 다른 많은 악의적인 기술이 코드 삽입 공격을 수행하는 데 사용될 수 있다.
종래 기술의 접근법 중 하나는 프로세서를 복제하고 결과를 비교하고 동일한 코드를 실행한 결과를 비교하는 것이다. 그러나 이러한 종래 기술 시스템의 바람직하지 않은 삽입 코드의 실행을 검출하고 방지하는 데 필요한 계산 및 하드웨어 오버헤드는 과도한 전력 소비 및 계산 비효율성을 초래한다.
파이프라인 프로세서 아키텍처에 삽입된 코드의 실행을 검출하기 위한 개선된 시스템 및 방법을 제공하는 것이 바람직하다.
본 발명의 제1 목적은 기본 코어 프로세서와 용장 브랜치 프로세서를 포함하는 보안 파이프라인 프로세서를 제공하는 것으로서, 기본 코어 프로세서는 메모리 액세스, 계산 및 메모리 어드레싱 명령에 대한 어드레스 산술을 처리하며, 용장 브랜치 프로세서는 브랜치 초기화 명령, 조건부 또는 무조건 브랜치 명령 및 반복 변수 명령 만을 실행하고, 기본 코어 프로세서 및 용장 브랜치 프로세서는 장애 검출 출력의 비교 및 생성을 위해 브랜치 스테이터스를 장애 검출기로 출력한다.
본 발명의 제2 목적은 기본 코어 파이프라인 프로세서와 용장 브랜치 파이프라인 프로세서를 포함하는 보안 파이프라인 프로세서를 제공하는 것으로서, 기본 코어 파이프라인은 메모리 액세스, 계산 및 메모리 어드레싱 명령에 대한 어드레스 산술을 처리하며, 용장 브랜치 프로세서는 브랜치 초기화 명령, 조건부 또는 무조건 브랜치 명령, NOP 명령 및 반복 변수 명령 만을 처리하며, 기본 코어 프로세서 및 용장 브랜치 프로세서는 장애 검출 출력의 비교 및 생성을 위해 브랜치 스테이터스를 장애 검출기로 출력한다.
본 발명의 제3 목적은 제1 스레드와 제2 스레드를 포함하는 복수의 스레드를 실행하는 보안 멀티 스레드 프로세서를 제공하는 것으로서, 제1 스레드는 코어 프로그램이고, 제2 스레드는 용장 브랜치 프로세서 프로그램이고, 제1 스레드의 코어 프로그램은 메모리 액세스 명령, 계산 명령 및 메모리 어드레싱 명령을 위한 어드레스 산술 명령을 포함하고, 용장 브랜치 프로세서 프로그램(또는 용장 브랜치 프로세서 스레드)은 브랜치 초기화 명령, 조건부 또는 무조건 브랜치 명령 및 반복 변수 명령을 포함하고, 멀티 스레드 프로세서는 제1 스레드와 제2 스레드로부터 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 중 적어도 하나를 포함하는 브랜치 스테이터스의 리스트를 장애 검출기로 출력한다.
본 발명의 제4 목적은 보안 프로세서용 장애 검출기를 제공하는 것으로서, 장애 검출기는 제1 프로세서와 제2 프로세서로부터 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 중 적어도 하나를 포함하는 브랜치 스테이터스를 수신하고, 장애 검출기는 브랜치 스테이터스를 순차적으로 비교하여 브랜치 성립/불성립, 브랜치 방향 또는 브랜치 타겟의 오프셋 중 어느 하나가 서로 일치하지 않는 경우 장애를 생성시킨다.
본 발명의 제5 목적은 코어 프로그램으로부터 용장 브랜치 프로그램을 생성하는 프로세스를 제공하는 것으로서, 상기 프로세스는 초기화 명령, 반복 명령 및 브랜치 명령을 포함하는 실행 루프의 식별을 포함하고, 상기 프로세서는 초기화 명령으로부터 새로운 반복 변수를 식별함으로써 용장 브랜치 프로그램을 생성하고, 새로운 반복 변수를 사용한 초기화 명령, 새로운 반복 변수를 사용한 반복 명령, 반복 변수를 사용한 브랜치 명령을 포함하는 프로그램을 생성한다.
본 발명의 제6 목적은 코어 프로그램으로부터 용장 브랜치 프로그램을 생성하는 프로세스로서, 상기 프로세스는 초기화 명령, 반복 명령 및 브랜치 명령을 포함하는 실행 루프의 식별을 포함하고, 상기 프로세스는 초기화 명령으로부터 새로운 반복 변수를 식별함으로써 용장 브랜치 프로그램을 생성하고, 새로운 반복 변수를 이용한 초기화 명령, 새로운 반복 변수를 이용한 반복 명령 및 반복 변수를 이용한 브랜치 명령을 포함하는 프로그램을 생성하고, 다른 명령들을 NOP 명령으로 교체하여 용장 브랜치 프로그램의 명령 수를 코어 프로그램의 명령 수와 동일하게 유지한다.
본 발명의 제1 예에서, 보안 프로세서는 코어 프로세서와 용장 브랜치 프로세서를 포함하며, 코어 프로세서와 용장 브랜치 프로세서 각각은, 프로그램 어드레스 생성을 위한 페치 어드레스 스테이지와, 프로그램 액세스로부터의 명령을 개별 연산 작업으로 디코딩하고 디코딩된 승산 명령을 수신하고 승산 연산을 수행하는 제1 실행 스테이지의 ALU에 비승산 명령을 전달하고 승산 연산을 수행하지 않는 사이클에서 로드/저장 스테이지에 결과를 전송하는 산술 논리 유닛(ALU)을 포함하는 제2 실행 스테이지에서 사용하기 위한 비승산 명령을 디코딩하는 디코딩 스테이지를 포함하는 복수의 파이프라인 스테이지를 포함한다. 로드/저장 스테이지는 레지스터 파일이나 외부 메모리로부터 결과를 판독하고 기록한다.
레지스터 파일용 데이터는 라이트 백 스테이지(Write Back Stage)에서 처리된다. 코어 프로세서는 제어 명령, 데이터 명령 및 브랜치 제어 명령으로 언급되는 제어 명령의 서브 세트를 실행하며, 브랜치 제어 명령은 초기화 명령, 브랜치 명령과 관련된 브랜치 산술 명령, 비연산(NOP) 명령 및 브랜치 명령 중 적어도 하나를 포함한다. 코어 프로세서는 제어 명령, 브랜치 제어 명령, 필요한 연산을 수행하기 위한 데이터 명령을 포함하는 메인 프로그램을 실행하고, 용장 브랜치 프로세서는 브랜치 반복 변수 초기화, 조건부 및 무조건 브랜치 및 조건부 브랜치 명령과 관련된 변수의 증가 또는 감소와 같은 관련된 반복 변수 변경 명령 중 적어도 하나를 포함하는 브랜치 제어 명령만 실행한다. 코어 프로세서 및 용장 브랜치 프로세서는 브랜치 성립/불성립, 브랜치 방향 및/또는 브랜치 타겟 어드레스 중 적어도 하나를 포함하는 브랜치 스테이터스 정보를 출력한다. 장애 검출기는 코어 프로세서와 용장 브랜치 프로세서로부터의 브랜치 스테이터스 정보를 순차적으로 비교하고 브랜치 스테이터스 정보 비교에 실패하면 장애 검출 출력을 생성한다. 이러한 비교는 브랜치 성립/불성립, 브랜치 방향 또는 브랜치 타겟의 오프셋 값의 일치를 검사할 수 있다.
도 1은 양방향 완전 용장 오류 검출 프로세서에 대한 블록도를 도시한다.
도 2는 기본 코어 파이프라인 프로세서 스레드와, 기본 코어 파이프라인 프로세서의 명령을 검사하여 결정된 명령을 실행하는 용장 브랜치 프로세서 스레드를 사용하는 본 발명의 제1 예에 대한 블록도를 도시한다.
도 3a및 도 3b는 코어 프로세서 스레드 및 용장 브랜치 프로세서 스레드에 대한 예시적인 MIPS 명령을 도시한다.
도 4a 및 도 4b는 코어 프로세서 스레드 및 용장 브랜치 프로세서 스레드에 대한 MIPS 명령의 다른 예를 도시한다.
도 5a 및 도 5b는 장애 검출기에 대한 블록도를 도시한다.
도 6은 코어 스레드로부터 용장 브랜치 프로세서 스레드를 생성하기 위한 흐름도를 도시한다.
도 7은 본 발명의 멀티 스레드 변형에 대한 블록도를 도시한다.
도 1은 각각 동일한 프로그램을 실행하고 동일한 스테이지를 갖는 동일한 처리 블록(101A 및 101B)을 포함하는 완전 용장 장애 검출 파이프라인 프로세서의 예를 도시한다. 프로세서(101A)를 검사하면, 프로그램 명령은 프로그램 카운터(105A)를 사용하여 페치(fetch) 스테이지(104A)에 의해 페치되는 명령 메모리(116A)에 저장되고, 이전에 검색된 명령은 명령 메모리(116A)보다는 오히려 명령 캐시(107A)로부터 대안적으로 복구될 수 있다.
페치 스테이지(104A)는 검색된 명령을 디코드 스테이지(106A)로 전달하고, 이는 검색된 연산코드를 디코드 실행 스테이지(108A) 및 실행 스테이지(110A)에 의해 수행되는 특정 연산으로 변환한다. 로드/저장 스테이지(112A)는 레지스터 액세스를 요구하는 명령을 처리하고, 라이트 백 스테이지(114A)는 변경된 데이터를 관련된 레지스터 파일(118A)에 다시 기록한다. 완전 용장 장애 검출 모드에서는 두 개의 동일한 프로세서가 필요하며 파이프라인 프로세서(101A 및 101B)로 도시된다. 두 개의 프로세서는 동일한 명령을 실행하고 시스템(100)은 두 개의 프로세서 사이의 불일치를 검출하고 그 불일치에 기초하여 장애 검출(126)을 어써트(assert)한다. 저전력 또는 고밀도 프로세서의 경우 장애 검출만으로 충분하여 장애 검출 시에 시스템을 다시 초기화하고 보안 프로그램 실행을 다시 설정하는 경우가 종종 있다. 도 2의 예시적인 시스템은 장애 검출을 수행하는 비용으로 인해 전력 소비와 시스템 복잡성을 두 배로 늘리므로 이 장애 검출 기능을 사용할 수 없다.
도 1의 프로세서에 의해 실행되는 명령은 조건부 또는 무조건 브랜치 명령(관련된 브랜치 반복 변수 초기화 및 변경 명령 포함)과 같은 제어 플로우 명령과 메모리 액세스, 계산 및 메모리 어드레싱을 위한 어드레스 산술에 관련된 명령과 같은 데이터 명령의 두 가지 범주로 분류된다.
다양한 벤치마크에 대한 명령의 분석을 통해 브랜치 명령과 같은 제어 플로우 명령은 다양한 벤치마크에서 실행된 명령의 2%~20%를 나타내고, 브랜치 명령은 일반적인 애플리케이션에서 실행된 명령의 평균 5%~10%를 나타내는 것으로 드러났다. 낮은 백분율의 브랜치 명령을 활용하는 실행 아키텍처를 통해 전력을 절약하면서 도 1과 같은 완전 용장 아키텍처의 보안을 제공하는 아키텍처를 제공하는 것이 바람직하다.
도 2는 브랜치 공격 검출(200)을 갖는 예시적인 보안 프로세서를 도시한다. 도 2의 본 발명에서, 코어 프로세서(201A)는 모든 명령(제어 명령, 브랜치 제어 명령 및 데이터 명령)을 실행하고, 용장 브랜치 프로세서(201B)는 코어 프로세서(201A)에 의해 실행된 프로그램에서 파생된 프로그램을 실행하지만 브랜치 제어 명령이 존재하고, 데이터 명령은 동일한 프로그램 길이에 대한 NOP(연산 없음) 명령으로 대체되거나 삭제 및 축소되어 이에 따라 브랜치 타겟이 조정된다. 장애 검출(224)은 서로 일치해야 하거나 서로 고정된 오프셋을 가져야 하는 두 개의 프로세서에 의해 생성된 브랜치 스테이터스 정보를 비교하고 차이가 검출되면 장애 검출 출력(226)을 생성한다. 브랜치 명령(조건부 또는 무조건)을 실행하면 브랜치와 관련된 스테이터스 레지스터가 갱신된다. 산술을 위한 스테이터스 레지스터의 스테이터스 플래그는 "동일", "보다 큼", "보다 작음", "0", "오버플로우(overflow)" 및 조건 브랜치 명령에 사용하기 위한 기타 잘 알려진 다양한 예들일 수 있다. 브랜치는 절대적(특정 어드레스에 대한) 또는 상대적(도 3a/4a 및 도 3b/4b 각각에서 "레이블 1" 및 "레이블 2"로 표시된 프로그램의 실행을 위한 새로운 위치를 식별하는 현재 어드레스에 오프셋이 추가됨)일 수 있다. 브랜치가 수행되면 프로그램 카운터 오프셋 값 또는 절대값이 프로그램 카운터에 적용되어 프로그램의 실행이 재개되는 새로운 브랜치 타겟 어드레스("브랜치 타겟"이라고도 함)를 생성할 수 있고, 브랜치 방향은 프로그램 메모리에서 정방향 또는 역방향일 수 있다. 본 발명에서는 코어 프로세서와 용장 브랜치 프로세서의 브랜치 동작을 비교하는 데 사용되는 예를 일반적으로 "브랜치 스테이터스" 정보라고 언급하며, 이는 브랜치 성립/불성립, 브랜치 방향 또는 디코드 스테이지(206A/206B 또는 208A/208B)에 의해 제공되는 타겟 주소(211A/211B) 또는 프로그램, 페치 스테이지(208A/208B)에 의해 제공될 수 있는 카운터 값(213A/213B) 중 하나 이상을 포함할 수 있다. 장애 검출기(224)는 용장 브랜치 프로그램과 코어 프로그램 사이의 브랜치 스테이터스 정보의 차이(divergence)를 검출함으로써 장애를 검출하기 위해 이들 입력의 임의의 조합을 사용할 수 있다.
본 발명의 차등 프로세서 실시예에서, 기본 코어 파이프라인 프로세서(201A)는 도 1의 임의의 프로세서(101A, 101B, 101C)에서와 같이 모든 처리 요소를 포함하고, 용장 브랜치 파이프라인 프로세서(201B)는 파이프라인 디코드 스테이지(206B), 디코드 실행 스테이지(208B), 실행 스테이지(210B), 로드/저장 스테이지(212B) 및 브랜치 반복 변수 관련 명령(반복 변수 초기화 및 변경), 조건부 및 무조건 브랜치 명령 및 NOP 명령과 같은 앞서 설명된 특정 브랜치 제어 명령만을 처리하는 라이트 백 스테이지(214B)와 함께 복잡성이 감소된 스테이지 요소를 가지는 반면, 대응하는 코어 파이프라인 프로세서(201A)는 제어 및 데이터 명령의 전체 세트를 포함하여 모든 명령을 처리하도록 구성된다. 기능이 감소한 용장 브랜치 프로세서를 갖는 차등 프로세서 실시예의 제1 예에서, 코어 프로세서(201A)에 비해 용장 브랜치 프로세서(201B)의 복잡성이 감소함으로써 전력 절감이 실현된다. 차등 프로세서 예의 제1 예에서, 기본 코어 프로세서(201A)는 완전 기능 프로그램을 실행하고, 용장 브랜치 프로세서는 비초기화 및 비브랜치 명령을 대체하는 NOP 명령(루프 브랜치, 루프 초기화 및 루프 변수 변경과 관련되지 않은 명령)을 사용하여 완전 기능 프로그램의 변경된 버전을 실행하고 장애 검출기가 사용할 브랜치 스테이터스 정보의 리스트를 생성하여 코어 프로세서와 용장 브랜치 프로세서 사이의 브랜치 스테이터스 정보의 시퀀스를 비교한다.
이러한 제1 예에서, 코어 프로세서와 용장 브랜치 프로세서용 각 프로그램은 동기식으로 실행되거나(브랜치와 프로그램 카운터가 즉시 비교될 수 있음) 또는 두 프로그램이 비동기식으로 또는 서로 다른 속도로 실행되어 브랜치 스테이터스 정보가 두 프로세스 간에 다를 때 장애 상태를 검출하기 위한 브랜치 비교 이력을 남길 수 있다. 차등 프로세서 실시예의 제2 예에서는 완전한 기능을 갖춘 프로그램의 변경된 버전의 NOP 명령이 삭제되므로 용장 브랜치 프로세서는 루프 변수 초기화, 루프 변수 변경 및 조건부 또는 무조건 브랜치 명령만 실행하고, 브랜치 성립/불성립, 브랜치 방향, 브랜치 타겟 중 적어도 하나를 포함할 수 있는 브랜치 스테이터스를 생성하고, 장애 검출기에 의해 기본 코어 프로세서와 비교하여 사용할 브랜치 타겟 추적을 형성한다.
단일 프로세서에서 용장 브랜치 프로그램과 코어 프로그램을 개별적으로 실행하는 본 발명의 단일 프로세서 변형에서, 단일 프로세서는 브랜치 스테이터스 정보의 리스트의 사전 계산을 위해 용장 브랜치 프로세스를 먼저 실행하거나 용장 브랜치 프로세스를 주기적으로 실행할 수 있다. 이러한 사전 계산된 브랜치 스테이터스 정보는 도 5b의 도면부호 512와 같은 리스트에 로드될 수 있고, 이후 단일 프로세서는 도 5b의 도면부호 510에 로드되는 코어 프로세서 브랜치 스테이터스 정보의 리스트을 생성하는 코어 프로세스의 실행으로 전환할 수 있으며, 새로 도달하는 각 브랜치 스테이터스 정보 진입은 도면부호 512의 해당 시퀀스에 대해 확인된다. 이러한 방식으로, 브랜치 스테이터스 정보의 전체 시퀀스 또는 시퀀스 일부가 사전 계산되거나, 서브 루틴별로 또는 스레드별로, 기본 단위별로 주기적으로 계산될 수 있다.
본 발명의 밸런스형 프로세서의 실시예에서는, 주 코어 파이프라인 프로세서(201A)와 용장 브랜치 프로세서(20IB)는 동일한 기능을 갖고, 본 발명의 제1 예에서는, 용장 브랜치 프로세서 프로그램은 불균등 프로세서 실시예에 대해 설명한 바와 같이, 주 코어 파이프라인 프로세서의 브랜치 스테이터스와 일치하는 브랜치 스테이터스를 생성하는 데 필요한 루프 변수 초기화, 루프 변수 변경 및 루프 브랜치 명령 이외의 모든 명령을 치환하는 NOP 명령 갖고 있다. 밸런스형 프로세서 실시예에 대한 제1 예에서는, 코어 프로세서 프로그램의 미변경 명령과 비교하여 NOP 명령의 실행에 의해 전력 절감이 실현되고, 장애 검출기는 브랜치 스테이터스(브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 어드레스)의 비교를 수행하여 장애를 검출하고, 장애 출력을 어써트한다. 밸런스형 프로세서의 실시예의 제2 예에서는, 제1 예의 NOP 명령이 삭제되고, 초기화 명령과 및 루프 브랜치 명령만 남게 되며, 장애 검출기는 코어 프로세서와 용장 브랜치 프로세서 사이의 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟을 비교한다.
도 3A 및 3B는 "Sum of A*X Plus Y"의 약어인 "saxpy"로 알려진 적화 연산의 명령의 예를 나타내고 있다. 도시된 예에서는, 초기화 스텝(302)은 선택된 브랜치 수에 대한 카운터로 사용되는 레지스터 2의 루프 변수 초기화를 포함하고, 레지스터 2는 간접 어드레스 지정(레지스터 내용에 의한 어드레스 지정)에 사용되며, x(i)는 레지스터 2 플러스 0 포인트의 오프셋을, y(i)는 레지스터 2 플러스 4000 포인트의 오프셋을 가리킨다. 레지스터 4는 루프 변수 증분 카운터로서, 이 예에서는 위치 0에서 시작하는 x(i)와 위치 4000에서 시작하는 y(i)의 배열을 사용하여 a*x(i)+y(i)의 100개의 값을 누적하기 위해 100으로 설정되어 있다. 레지스터 5는 saxpy 연산에 사용되는 상수 'a'이며, 도시된 바와 같이 루프(306)에서 실행되고, 레지스터 2(루프 반복 변수 i)가 100에 도달하면 종료된다. 도 3a의 연산은 코어 프로세서(201A)에서 실행된다. 도 3B는 용장 브랜치 프로세서(201B)에 의해 실행되는 명령의 예를 도시하고 있으며, 여기서 용장 브랜치 프로세서는 스텝 308에서 루프 초기화만 실행하고 루프(310)는 반복 횟수를 카운트하여, 코어 프로세서에 의해 생성된 브랜치 스테이터스 리스트와 일치하는 브랜치 스테이터스의 리스트가 작성된다.
도 4a는 도 3a의 코어 프로세서 스레드를 도시하고 있다. 도 4b는 브랜치 카운터 레지스터(6)를 초기화하고 루프 브랜치가 아닌 다른 명령을 무연산(nop) 명령으로 치환함으로써, 도 4A의 코어 프로세서 스레드로부터 파생된 용장 브랜치 프로세서 스레드를 도시하고 있다. 동작의 한 예에서는, 코어 프로세서(201A)와 용장 브랜치 프로세서(201B)는 각각, 클록 사이클마다 하나의 명령을 실행하고 함께 클록된다.
그러나 디코드 스텝(206B), 디코드/실행 스텝(206B), 실행 스텝(210B), 로드-스토어 스텝(212B) 및 라이트 백 스텝(214B)은 도 4b의 축소된 명령 세트의 초기화 및 브랜치 명령의 서브 세트를 지원하는 것만을 필요로 하는 반면, 코어 프로세서(201A)는 완전한 기능을 가지며 명령 세트의 모든 명령을 지원한다. 다른 동작 예에서, 코어 프로세서(201A)와 용장 브랜치 프로세서(201B)는 비동기적으로 또는 서로 다른 속도로 실행되며, 브랜치 성립/미성립, 브랜치 방향 및 브랜치 타겟과 같은 브랜치 스테이터스의 기록은 코어 프로세서(201A)와 용장 브랜치 프로세서(201B)각각에 대해 유지되고, 장애 검출을 위해 비교된다.
도 4a 및 도 4b의 명령이, 클록 사이클 당 1 명령 베이스로 각각의 코어 프로세서(201A) 및 용장 브랜치 프로세서(201B) 상에서 실행되는 본 발명의 일 예에서는, 코어 프로세서(201A) 및 용장 브랜치 프로세서(201B)의 프로그램 카운터는 메모리 위치의 차와 동등한 고정 오프셋으로 상호 추적한다. 코어 프로세서(201A)의 프로그램 메모리의 파손이 발생하면, 두 프로세서의 브랜치 스테이터스 이력이 브랜치되고, 장애 검출 출력(226)이 어써트되게 된다. 장애가 검출되면, 프로세서의 올바른 동작을 복원하고, 장애의 원인을 특정하기 위해, 시스템의 리셋, 장애 보고, 또는 기타 동작이 실행되는 경우가 있다.
도 5a 및 5b는 프로세서(201A 및 201B)의 동기 동작 및 비동기 동작을 위한 장애 검출기의 예를 각각 도시한다. 도 5a는 도 4a 및 4b의 코어 및 용장 스레드용의 프로그램 카운터 기반 장애 검출기를 도시하고 있으며, 두 스레드는 각각의 코어 및 용장 프로세서 상에서 병렬로 실행되고, 두 프로세서가 각각의 코어 및 용장 브랜치 프로세서의 고정 프로그램 카운터(205A 및 205B)의 오프셋을 유지한다.
최소한의 브랜치 스테이터스 이력이 필요하며, 오프셋 비교기(502)는 두 프로그램 카운터 입력(205A 및 205B)을 선택적으로 사전에 프로그래밍된 예상 오프셋(504)과 비교하고, 두 프로그램 카운터 간의 차가 오프셋에, 하나 또는 두 개의 명령과 같은 비동기 명령 실행을 고려한 임계값을 더한 값을 초과할 때 장애 출력(506)을 생성한다.
코어 스레드와 용장 브랜치 스레드가 비동기이고 또는 다른 시간에 동작하지만, 동일 브랜치 특성을 갖는 경우(예를 들면 도 3a의 코어 프로세서 스레드와 도 3b의 용장 브랜치 코어 프로세서 스레드의 길이가 다른 경우), 도 5b는 도 3a의 프로그램을 실행하는 코어 프로세서(201A) 및 도 3b의 프로그램을 실행하는 용장 브랜치 프로세서(201B)등으로부터의 브랜치 스테이터스 이력의 리스트가 포함되는 장애 검출기를 나타내며, 여기서 브랜치 스테이터스 이력은 브랜치 성립/불성립, 브랜치 방향 및 시??셜 테이블 엔트리로서 저장되는 관련 타겟 어드레스 필드 중 적어도 하나를 포함할 수 있고, 코어 프로세서와 용장 브랜치 프로세서는, 각각의 브랜치 스테이터스 이력 리스트(510 및 512)를 유지한다. 테이블 비교기(514)는, 코어 프로세서 및 용장 브랜치 프로세서에 의해 행해진 결정의 엔트리마다의 축차 비교를 실행하고, 다른 브랜치 결과의 검출 시에 장애 검출 출력(516)을 생성한다.
본 발명은, 여러 가지 다른 방법으로 실시할 수 있다. 도 2는, 기능이 저하된 용장 브랜치 프로세서(201B)를 구비한 코어 프로세서(201A)를 나타내고 있으며, 이들은 동시에 동작하도록 구성되어 있고, 용장 브랜치 프로세서(201B)의 복잡성의 저감에 의해 실현되는 전력 절약화가 도모되고 있어서, 각 파이프라인 스테이지는 레지스터의 초기화 및 용장 브랜치 프로세서(201B) 내의 브랜치 제어 로직을 서포트하기만 하면 된다. 다른 예에서는, 본 발명은 도 4b의 nop 명령에 의해 치환된 원래의 명령 보다도 내부 액티비티가 감소되기 때문에, NOP(무연산 또는 nop) 명령의 소비 전력이 적어서, 동등한 능력의 용장 브랜치 프로세서(201B)를 이용하여 실시할 수도 있다.
단일 파이프라인 프로세서에 관한 본 발명의 다른 실시예에 있어서, 도 7은, 멀티 스레드 프로세서를 도시하며, 여기서 코어 스레드 및 용장 브랜치 스레드는, 단일 프로세서(700) 내의 별개의 스레드로서, 일 예에서는, 본 명세서에 전체적으로 참조로 원용하는 미국 특허 제7,761,688호에 기재된 바와 같이 배열 T1 T2 T1 T2 …같은 멀티 스레드 기능을 구비한 단일 프로세서(700) 상의 시??셜 스레드 1(T1) 및 스레드 2(T2)로서 동작할 수 있다. 멀티 스레드 프로세서가 코어 스레드(T1)와 용장 브랜치 스레드(T2)의 각각의 명령을, 브랜치 관련 이외의 명령에 대한 NOP 명령 치환을 사용하여 실행하는 경우, 도 4b에서 도 4a에 도시한 바와 같은 명령 수의 균등화가 실행되고, 두 스레드가 각각의 스레드의 프로그램 카운터와 실행 스테이지의 결과를 상호 추적하기 위해, 도 5a의 프로그램 카운터의 발산, 또는 도 5b의 브랜치 성립/불성립, 브랜치 방향, 브랜치 타겟 어드레스 비교 등의 브랜치 스테이터스 내의 발산이 실행되게 된다. 이 경우, 단일 프로세서는, 멀티플렉서(703)사 사용하기 위한 브랜치 스테이터스를 수반하는 스레드 식별자(thread_id)를 출력하고, 멀티플렉서는, 장애 검출기(706)(대응하는 입력(208A 및 208A)을 구비한 도 5b의 장애 검출기 등)에 입력되는 제1 스레드 브랜치 스테이터스(T1 BrSt 705) 및 제2 스레드 브랜치 스테이터스(T2 BrSt 707)를 출력한다. 도 7에 도시된 예는, 도 2의 단일 프로세서의 변형이며, 참조 번호의 말미에 C가 붙어 있는 것은 유사한 동작을 나타내고 있다. 스레드 발생기(702)는, 프로그램 카운터(712) 뿐 아니라, 스레드에 관련지어진 특정 레지스터 파일을 thread_id에 의해 선택하기 위해 사용되는 thread_id(702)를 생성한다. 장애 검출기(706)는, 도 5b의 스레드 검출기로서 동작하지만, 도 5b의 510 및 512로의 브랜치 스테이터스 입력은 thread_id에 따라서 각 테이블(510 및 512)에 적용되는 개별 브랜치 스테이터스 값이다. 예를 들어, 스레드 ID가 T1 T2 T1 T2 … 사이에서 바뀌고, 브랜치 스테이터스(BS)(213)의 출력이 대응하는 시??스 BS1 BS2 BS3 BS4 … 인 경우, thread_id는 BS1과 BS3는 T1과 관련된 시??셜 엔트리로서, BS2와 BS4를 T2와 관련된 시??셜 엔트리로서 배치하기 위해 사용된다. 혹은, 스레드는, 다른 시간 등에 비동기로 실행할 수도 있는데, 그 경우, 도 5b의 장애 검출기를 사용하여 나중에 실행중인 스레드를 이전에 실행 중인 스레드와 비교할 수 있고, 스레드를 일시적으로 변화할 가능성이 있는 테스트에 의존하는 브랜치 대신 고정된 반복 횟수로 반복 처리하기에 최적이다. 이 예에서는, 코어 스레드(11)는 리스트(510)을 생성하고, 용장 브랜치 스레드(T2)는 장애 검출기에 의해 사용되는 리스트(512)를 생성하고, 장애 검출기는 두 리스트 내의 엔트리의 시??스를 비교하여 장애 스테이터스를 검출한다. 본 발명의 다른 예에서는, 프로세서는 장애 검출을 위해 코어 스레드 및 용장 브랜치 스레드를 정기적으로 실행하기만 하면 되며, 다른 때에는 코어 스레드만 실행하면 된다.
도 6은 도 2의 201B와 같은 용장 브랜치 프로세서에서 실행하기 위한 용장 브랜치 프로세서 실행 가능 코드(또는 프로그램)를 생성하기 위한 예시적인 프로세스를 도시한다. 스텝 602는, 도 4a의 406과 같은 코어 프로그램 반복 루프를 특정하고 도 4A의 명령의 수와 일치하는 용장 브랜치 프로세서 코드(604)에 메모리를 할당한다. 스텝 606은, 도 4a의 명령(403) 등의 코어 프로그램 루프의 초기화를 식별하고, 그것을 코드 공간 내의 대응하는 위치에 카피하고, 스텝 610에서의 초기화에 사용하는 미사용 레지스터를 식별하고, 대응하는 브랜치 명령을, 코어 프로그램 내의 오프셋과 일치하는 오프셋을 사용하여 용장 브랜치 프로세서 코드의 대응하는 위치에 카피하고, 스텝 610의 빈 레지스터를 사용하도록 용장 브랜치 프로세서 코드 브랜치 명령을 조정한다. 다른 명령은 옵션 스텝(614)에서 NOP(무연산)로서 저장되고, 그에 의해 도 4a의 코어 프로세서 프로그램으로부터 도 4b의 용장 브랜치 프로세서 프로그램을 작성한다. 혹은, 스텝(614)의 NOP 명령은 실행되지 않고, 도 3b에 도시한 바와 같이, 반복 변수의 변경에 이어서 조건부 브랜치가 행해진다.
본 발명의 많은 태양이 가능하다.
본 발명의 제1 태양에서, 장애 검출용 파이프라인 프로세서는, 멀티 스레드 파이프라인 프로세서와 장애 검출기를 구비하고,
상기 멀티 스레드 파이프라인 프로세서는, 제어 명령 및 데이터 명령을 실행하고, 브랜치 명령으로부터의 브랜치 스테이터스를 장애 검출기에 출력하도록 되어 있고,
상기 멀티 스레드 파이프라인 프로세서는, 다른 명령 사이클에서, 적어도 하나의 스레드는 실행 가능 프로그램 스레드이고 적어도 하나의 스레드는 용장 브랜치 프로그램 스레드인 적어도 두 프로그램 스레드를 실행하도록 구성되고,
상기 실행 가능 프로그램 스레드는, 제어 명령, 데이터 명령 및 브랜치 제어 명령을 갖고, 브랜치 제어 명령은 제어 명령의 서브 세트이고,
상기 용장 브랜치 스레드 브랜치 제어 명령만을 갖고,
상기 장애 검출기는, 실행 가능 프로그램 스레드와 용장 브랜치 스레드 사이의 브랜치 스테이터스를 비교하여 실행 가능 프로그램의 브랜치 스테이터스가 용장 브랜치 스레드의 브랜치 스테이터스와 일치하지 않는 경우에 장애 검출 출력을 어써트한다.
본 발명의 제2 태양에서, 제1 태양의 장애 검출용 파이프라인 프로세서는, 브랜치 변수 초기화 명령, 브랜치 변수 변경 명령, 브랜치 명령 중 적어도 하나를 포함하는 브랜치 제어 명령을 갖는다.
본 발명의 제3 태양에서는, 제1 태양의 장애 검출용 파이프라인 프로세서에 있어서, 브랜치 스테이터스는 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 중 적어도 하나를 포함한다.
본 발명의 제4 태양에서는, 제1 태양의 장애 검출용 파이프라인 프로세서는 실행 가능 프로그램 스레드와 용장 브랜치 스레드의 대응 엔트리에 대한 브랜치 스테이터스 리스트의 비교를 포함하는 장애 검출기를 갖는다.
본 발명의 제5 태양에서는, 제4 태양의 장애 검출용 파이프라인 프로세서에 있어서, 실행 가능 프로그램 스레드의 실행에 앞서 용장 브랜치 스레드에 의해 생성되는 브랜치 스테이터스 리스트를 갖는다.
본 발명의 제6 태양에서는, 제4 태양의 장애 검출용 파이프라인 프로세서는, 실행 가능 프로그램 스레드에 의해 생성된 브랜치 스테이터스의 제1 리스트와, 용장 브랜치 스레드에 의해 생성된 브랜치 스테이터스의 제2 리스트를 포함하는 브랜치 스테이터스 리스트를 갖는다.
본 발명의 제7 태양에서, 제1 태양의 장애 검출용 파이프라인 프로세서는, 실행 가능 프로그램 스레드로부터 브랜치 제어 명령 이외의 명령을 무연산(NOP) 명령으로 치환함으로써 파생된 용장 브랜치 스레드를 갖는다.
본 발명의 제8 태양에서, 제1 태양의 장애 검출용 파이프라인 프로세서는, 실행 가능 프로그램 스레드로부터, 브랜치 타겟 어드레스를 저장하면서 브랜치 제어 명령 이외의 명령을 삭제함으로써 용장 브랜치 스레드를 도출한다.
본 발명의 제9 태양에서, 프로세서는 파이프라인 프로세서와 장애 검출기를 포함하며,
상기 파이프라인 프로세서는, 복수의 실행 가능 프로그램 스레드를 실행하도록 구성되어 있고, 적어도 제1 실행 가능 스레드 및 제2 실행 가능 스레드에 대한 스레드 식별자 및 브랜치 스테이터스 정보를 출력하고,
상기 제1 실행 가능 스레드는 제1 고유 스레드 식별자와 연관되어 있으며 데이터 명령, 제어 명령 및 제어 명령의 서브 세트인 브랜치 제어 명령을 포함하고,
상기 제2 실행 가능 스레드는 제2 고유 스레드 식별자와 연관되어 있으며 브랜치 제어 명령만을 포함하고,
상기 장애 검출기는, 파이프라인 프로세서로부터 브랜치 스테이터스 정보를 수신하고, 상기 브랜치 스테이터스 정보에는 제1 실행 가능 스레드와 관련된 스레드 식별자와 제2 실행 가능 스레드와 관련된 스레드 식별자가 수반되며,
상기 장애 검출기는, 제1 스레드 식별자와 연관된 브랜치 스테이터스 정보와 제2 스레드 식별자와 연관된 브랜치 스테이터스 정보를 비교하여, 비교가 일치하지 않는 경우 장애 상태임을 어써트한다.
본 발명의 제10 태양에서는, 제9 태양의 장애 검출용 파이프라인 프로세서는 반복 변수 초기화 명령, 반복 변수 변경 명령 및 브랜치 명령을 포함하는 브랜치 제어 명령을 갖는다.
본 발명의 제11 태양에서는, 제9 태양의 장애 검출용 파이프라인 프로세서는 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 중 적어도 하나를 포함하는 브랜치 스테이터스를 갖는다.
본 발명의 제12 태양에서는, 제9 태양의 장애 검출용 파이프라인 프로세서 있어서 상기 장애 검출기는, 실행 가능 프로그램 스레드와 용장 브랜치 스레드의 대응하는 엔트리에 대한 브랜치 스테이터스의 리스트를 비교한다.
본 발명의 제13 태양에서는, 제12 태양의 장애 검출용 파이프라인 프로세서 있어서 실행 가능 프로그램 스레드의 실행 이전에 용장 브랜치 스레드에 의해 생성된 브랜치 스테이터스의 리스트를 갖는다.
본 발명의 제14 태양에서는, 본 발명의 제12 태양의 장애 검출용 파이프라인 프로세서는 브랜치 스테이터스의 리스트가, 실행 가능 프로그램 스레드에 의해 생성된 브랜치 스테이터스의 제1 리스트와, 용장 프로그램 스레드에 의해 생성된 브랜치 스테이터스의 제2 리스트를 포함한다.
본 발명의 제15 태양에서, 제9 태양의 프로세서는, 용장 브랜치 스레드가 브랜치 제어 명령 이외의 명령을 무연산(NOP) 명령으로 치환함으로써, 실행 가능 프로그램 스레드로부터 도출된다.
본 발명의 제16 태양에서, 제9 태양의 프로세서는, 용장 브랜치 스레드의 브랜치 타겟 어드레스를 유지하면서, 실행 가능 프로그램 스레드로부터 도출된 브랜치 제어 명령 이외의 명령을 삭제하여 용장 브랜치 스레드를 도출하고, 용장 브랜치 스레드의 명령 수를 삭감한다.
본 발명의 제17 태양에서, 장애 검출용 파이프라인 프로세서는, 멀티 스레드 동작용으로 구성되고,
상기 파이프라인 프로세서는,
적어도 하나의 스테이지가 브랜치 명령에 대해 동작하여, 브랜치 방향, 브랜치 성립/불성립, 브랜치 타겟 중 적어도 하나를 포함하는 브랜치 스테이터스를 생성하는 복수의 순차 스테이지와, 복수의 실행 스레드와, 장애 검출기를 포함하고,
상기 복수의 실행 스레드는,
연관된 제1 thread_id와, 제어 명령, 상기 제어 명령의 서브 세트로서의 브랜치 제어 명령 및 데이터 명령을 포함하는 실행 명령을 갖는 제1 스레드와,
연관된 제2 thread_id와, 제어 명령만을 포함하는 실행 명령을 갖는 제2 스레드를 포함하고,
상기 브랜치 제어 명령은, 조건부 브랜치 명령, 무조건 브랜치 명령, 무연산(NOP) 명령, 브랜치 변수 초기화 명령 및 조건부 브랜치 명령과 연관된 브랜치 변수 변경 명령 중 적어도 하나를 포함하고,
상기 장애 검출기는,
연관된 제1 스레드 ID 및 제2 스레드 ID를 수반하는 파이프라인 프로세서로부터 브랜치 스테이터스를 수신하고,
상기 장애 검출기는, 제1 thread_id와 제2 thread_id의 브랜치 스테이터스를 일반과 비교하여 일치되는지를 대조하고, 일치가 발견되지 않는 경우에는 장애 출력을 어써트하도록 되어 있다.
본 발명의 제18 태양에서, 제17 태양의 장애 검출용 파이프라인 프로세서는, 상기 실행 제어 명령에는 축소 명령 세트 컴퓨터(RSIC) 명령 세트로부터의 명령이 포함된다.
본 발명의 제19 태양에서, 제17 태양의 장애 검출용 파이프라인 프로세서는, 산술연산 명령을 포함하는 데이터 명령을 갖는다.
본 발명의 제20 태양에서는, 제 17 태양의 장애 검출용 파이프라인 프로세서에 있어서, 장애 검출기가 제1 스레드와의 브랜치 스테이터스 비교에 앞서서 제2 스레드를 실행하여 브랜치 스테이터스 리스트를 생성한다.

Claims (20)

  1. 코어 프로세서 및 용장 브랜치 프로세서와, 장애 검출기를 구비하고,
    상기 코어 프로세서는, 제어 명령과, 제어 명령의 서브 세트인 브랜치 제어 명령을 실행하도록되어 있고, 상기 브랜치 제어 명령은, 변수 초기화 명령, 브랜치 명령, 브랜치 명령에 관련된 변수 산술 명령, 및 무연산(NOP) 명령 중 적어도 하나를 포함하고,
    상기 코어 프로세서는, 차례로, 라이트 백(writeback) 스테이지에 접속된 로드 스토어 스테이지에 접속된 실행 스테이지에 접속된 디코드 실행 스테이지에 접속된 디코드 스테이지에 접속된 페치(fetch) 스테이지를 구비하여 제어 명령 및 데이터 명령을 실행하도록 구성되어 있고,
    상기 용장 브랜치 프로세서는 상기 용장 브랜치 프로세서는, 차례로, 라이트 백 스테이지에 접속된 로드 스토어 스테이지에 접속된 디코드 스테이지에 접속된 페치 스테이지를 구비하고, 디코드 스테이지에 접속된 디코드 실행 스테이지, 실행 스테이지에 접속된 실행 스테이지, 페치 스테이지를 구비하여 브랜치 제어 명령만을 실행하도록 구성되어 있고,
    상기 장애 검출기는, 코어 프로세서로부터의 브랜치 스테이터스 값과, 상기 용장 브랜치 프로세서로부터의 브랜치 스테이터스 값을 수신하며, 상기 브랜치 스테이터스 값은 브랜치 타겟, 브랜치 방향 및 브랜치 성립/불성립 중 적어도 하나를 포함하고,
    상기 장애 검출기는, 코어 프로세서의 브랜치 타겟, 브랜치 방향 및 브랜치 성립/불성립을 포함하는 브랜치 스테이터스 중 적어도 하나가, 용장 브랜치 프로세서의 브랜치 타겟, 브랜치 방향 및 브랜치 성립/불성립을 포함하는 브랜치 스테이터스와 일치하지 않을 때 출력을 어써트(assert)하도록 되어 있는,
    코어 프로세서와 용장 브랜치 프로세서로 구성되는 장애 검출 파이프라인 프로세서.
  2. 제1항에 있어서, 상기 브랜치 명령은, 적어도 조건부 브랜치 명령 또는 무조건 브랜치 명령을 포함하는, 장애 검출 파이프라인 프로세서.
  3. 제1항에 있어서, 상기 실행 제어 명령은 및 상기 실행 데이터 명령은, 축소 명령 세트 컴퓨터(RSIC)로부터의 명령을 포함하는, 장애 검출 파이프라인 프로세서.
  4. 제1항에 있어서, 상기 데이터 명령은, 산술 연산 명령을 포함하는, 장애 검출 파이프라인 프로세서.
  5. 제4항에 있어서, 상기 산술 연산 명령은, 가산 명령 및 승산 명령을 포함하는, 장애 검출 파이프라인 프로세서.
  6. 제1항에 있어서, 상기 코어 프로그램은, Sum a*x(i) + y(i) 연산을 실행하는, 장애 검출 파이프라인 프로세서.
  7. 제1항에 있어서, 상기 장애 검출기는, 코어 프로세서 브랜치 테이블과 용장 브랜치 프로세서 브랜치 테이블을 구비하고, 각 코어 프로세서 브랜치 테이블과 용장 브랜치 프로세서 브랜치 테이블은, 일련의 브랜치 스테이터스 값을 포함하는, 장애 검출 파이프라인 프로세서.
  8. 제1항에 있어서, 상기 코어 프로세서 및 용장 브랜치 프로세서는, 제1 시간 간격 중에는 동시에 동작하도록 구성되고, 제2 시간 간격 중에는 따로따로 동작하도록 구성되는, 장애 검출 파이프라인 프로세서.
  9. 제1항에 있어서, 상기 장애 검출기는, 브랜치 성립/불성립, 브랜치 방향, 및/또는 브랜치 타겟위치의 리스트 중 적어도 하나를 포함하는 브랜치 스테이터스 값의 리스트를 구비한 테이블을 포함하는, 장애 검출 파이프라인 프로세서.
  10. 제9항에 있어서, 상기 브랜치 스테이터스 값의 리스트는, 코어 프로세서에 의해 프로그램 실행 전에 용장 브랜치 프로세서에 의해 계산되는, 장애 검출 파이프라인 프로세서.
  11. 코어 프로세서 스레드로부터 실행 가능한 용장 브랜치 프로세스 스레드를 생성하는 프로세스로서,
    상기 코어 프로세서 스레드는 적어도 데이터 명령과 제어 명령을 갖고, 상기 제어 명령은, 브랜치 제어 변수 초기화 명령, 브랜치 제어 변수 변경 명령 및 브랜치 명령 중 적어도 하나를 포함하는 브랜치 제어 명령의 서브 세트를 포함하며,
    상기 프로세스는,
    상기 코어 프로세서 스레드 내의 실행 브랜치 제어를 식별하는 스텝;
    상기 코어 프로세서 스레드 내의 실행 브랜치 제어의 브랜치 제어 초기화 값을 식별하는 스텝;
    상기 코어 프로세서 스레드 내의 실행 브랜치 제어를 식별하고, 실행 가능한 용장 브랜치 프로세서 스레드 내의 대응 위치에 브랜치 제어의 초기화를 삽입하는 스텝;
    코어 프로세서 스레드 내의 브랜치 제어 조건부 브랜치를 식별하고, 대응하는 조건부 브랜치 명령을 실행 가능한 용장 브랜치 프로세서 스레드의 대응 위치에 삽입하는 스텝;
    브랜치 제어 명령이 아닌 코어 프로세서 스레드 실행 브랜치 제어 내의 실행 가능한 명령을 식별하고, 실행 가능한 용장 브랜치 프로세서 스레드의 대응 위치에 무연산(No Operation) 명령을 삽입하는 스텝
    를 포함하는, 프로세스.
  12. 제11항에 있어서, 상기 용장 브랜치 프로세스 스레드는, 코어 프로세스 스레드의 대응 브랜치 타겟으로부터의 고정 오프셋인 브랜치 타겟을 갖는, 프로세스.
  13. 제11항에 있어서, 상기 제어 명령 및 데이터 명령은, 축소 명령 세트 컴퓨터(RSIC) 명령인, 프로세스.
  14. 코어 프로세서 스레드로부터 실행 가능한 용장 브랜치 프로세스 스레드를 생성하기 위한 프로세스로서, 상기 코어 프로세서 스레드는 적어도 브랜치 제어 명령과 데이터 명령을 갖고,
    상기 프로세스는,
    상기 코어 프로세서 스레드 내의 실행 루프를 식별하는 스텝;
    상기 코어 프로세서 스레드 내의 실행 루프 변수를 위한 초기화 값을 식별하는 스텝;
    상기 코어 프로세서 스레드 내의 실행 브랜치 제어를 식별하고, 실행 가능한 용장 브랜치 프로세서 스레드 내의 대응 위치에 실행 루프 변수 초기화를 삽입하는 스텝;
    코어 프로세서 스레드 내의 실행 루프 변수의 변경을 식별하고, 실행 가능한 용장 브랜치 프로세서 스레드 내의 대응 위치에 실행 루프 변수의 변경을 삽입하는 스텝;
    를 포함하는, 프로세스.
  15. 제어 명령 및 데이터 명령을 실행하도록 구성된 코어 프로세서와, 용장 브랜치 프로세서 및 장애 검출기를 구비하고,
    상기 제어 명령은, 무연산(NOP) 명령, 브랜치 제어 변수 초기화 명령, 브랜치 제어 변수 변경 명령, 조건부 브랜치 명령, 무조건 브랜치 명령 중 적어도 하나를 포함하는 브랜치 제어 명령의 서브 세트를 포함하고,
    상기 코어 프로세서는, 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 중 적어도 하나를 포함하는 브랜치 스테이터스를 생성하고,
    상기 용장 브랜치 프로세서는, 브랜치 성립/불성립, 브랜치 방향 및 브랜치 타겟 중 적어도 하나를 포함하는 브랜치 스테이터스를 생성하고 브랜치 제어 명령만을 실행하도록 구성되어 있고,
    상기 장애 검출기는, 코어 프로세서로부터의 브랜치 스테이터스와 용장 브랜치 프로세서로부터의 브랜치 스테이터스를 비교하도록 구성되어 있으며,
    상기 장애 검출기는, 코어 프로세서와 용장 브랜치 프로세서로부터의 대응하는 브랜치 스테이터스가 같은 값이 아닌 경우, 장애 검출기는 장애 출력을 어써트하도록 되어 있는, 장애 검출 파이프라인 프로세서.
  16. 제15항에 있어서, 상기 장애 검출기는 상기 코어 프로세서와 용장 브랜치 프로세서로부터의 브랜치 스테이터스를 리스트 내에 저장하는, 장애 검출 파이프라인 프로세서.
  17. 제15항에 있어서, 상기 용장 브랜치 프로세서는, 코어 프로세서가 브랜치 스테이터스의 리스트를 생성하는 실행에 앞서, 브랜치 스테이터스의 리스트를 생성하는, 장애 검출 파이프라인 프로세서.
  18. 제15항에 있어서, 코어 프로세서는, 축소 명령 세트(RSIC) 명령을 실행하도록 구성되어 있는, 장애 검출 파이프라인 프로세서.
  19. 제15항에 있어서, 상기 용장 브랜치 프로세서 브랜치 제어 명령은 무조건 브랜치인, 장애 검출 파이프라인 프로세서.
  20. 제15항에 있어서, 상기 용장 브랜치 프로세서 브랜치 제어 명령은, 반복 변수 초기화, 반복 변수 변경 및 조건부 브랜치인, 장애 검출 파이프라인 프로세서.
KR1020247013873A 2021-09-26 2022-09-25 제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서 KR20240063179A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17/485,471 2021-09-26
US17/485,436 2021-09-26
US17/485,436 US12111913B2 (en) 2021-09-26 2021-09-26 Core processor and redundant branch processor with control flow attack detection
US17/485,471 US11921843B2 (en) 2021-09-26 2021-09-26 Multi-threaded secure processor with control flow attack detection
PCT/US2022/044645 WO2023049422A2 (en) 2021-09-26 2022-09-25 Core processor and redundant branch processor with control flow attack detection

Publications (1)

Publication Number Publication Date
KR20240063179A true KR20240063179A (ko) 2024-05-13

Family

ID=85719629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247013873A KR20240063179A (ko) 2021-09-26 2022-09-25 제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서

Country Status (3)

Country Link
KR (1) KR20240063179A (ko)
DE (1) DE112022004589T5 (ko)
WO (1) WO2023049422A2 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US20040003210A1 (en) * 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
US7966538B2 (en) * 2007-10-18 2011-06-21 The Regents Of The University Of Michigan Microprocessor and method for detecting faults therein
JP5395383B2 (ja) * 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
US8621273B2 (en) * 2010-11-29 2013-12-31 Infineon Technologies Ag Enhanced scalable CPU for coded execution of SW in high-dependable safety relevant applications
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture

Also Published As

Publication number Publication date
DE112022004589T5 (de) 2024-10-24
WO2023049422A2 (en) 2023-03-30
WO2023049422A3 (en) 2023-05-04

Similar Documents

Publication Publication Date Title
US9135015B1 (en) Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US5996060A (en) System and method for concurrent processing
US8386754B2 (en) Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism
US9977674B2 (en) Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction
US6263427B1 (en) Branch prediction mechanism
US9361111B2 (en) Tracking speculative execution of instructions for a register renaming data store
US10078518B2 (en) Intelligent context management
TW201737066A (zh) 程式迴圈控制
US20200065101A1 (en) Computer Processor Employing Operand Data With Associated Meta-Data
TW201737060A (zh) 程式迴圈控制
US20210365265A1 (en) Processor achieving zero-overhead loop
Meixner et al. Error detection using dynamic dataflow verification
US7673294B2 (en) Mechanism for pipelining loops with irregular loop control
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
US10102003B2 (en) Intelligent context management
CN118541672A (zh) 具有控制流攻击检测的核心处理器和冗余分支处理器
US12111913B2 (en) Core processor and redundant branch processor with control flow attack detection
US10963260B2 (en) Branch predictor
US10963253B2 (en) Varying micro-operation composition based on estimated value of predicate value for predicated vector instruction
KR20240063179A (ko) 제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
CN111936968A (zh) 一种指令执行方法及装置
KR20180126518A (ko) 벡터 명령 처리
US7302555B2 (en) Zero overhead branching and looping in time stationary processors
US20040230777A1 (en) Method and system for altering processor execution of a group of instructions