KR101697446B1 - 임베딩된 코드에 대한 보호 스킴 - Google Patents

임베딩된 코드에 대한 보호 스킴 Download PDF

Info

Publication number
KR101697446B1
KR101697446B1 KR1020157006545A KR20157006545A KR101697446B1 KR 101697446 B1 KR101697446 B1 KR 101697446B1 KR 1020157006545 A KR1020157006545 A KR 1020157006545A KR 20157006545 A KR20157006545 A KR 20157006545A KR 101697446 B1 KR101697446 B1 KR 101697446B1
Authority
KR
South Korea
Prior art keywords
memory
protection
protected memory
integrated circuit
protected
Prior art date
Application number
KR1020157006545A
Other languages
English (en)
Other versions
KR20150046119A (ko
Inventor
프라납 부마
카를로스 바스토
쿨부샨 칼라
Original Assignee
시놉시스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시놉시스, 인크. filed Critical 시놉시스, 인크.
Publication of KR20150046119A publication Critical patent/KR20150046119A/ko
Application granted granted Critical
Publication of KR101697446B1 publication Critical patent/KR101697446B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

집적 회로에서 메모리 구역에 대한 액세스를 제어하기 위한 코드 보호 스킴은, 다중 프로세싱 스테이지들을 포함하는 명령 파이프라인을 갖는 프로세서를 포함한다. 제 1 프로세싱 스테이지는 하나 이상의 명령들을 수신한다. 제 2 프로세싱 스테이지는 제 1 프로세싱 스테이지로부터 메모리의 보호된 메모리 구역을 식별하는 어드레스 정보 및 식별된 보호된 메모리 구역에 대한 보호 정보를 수신한다. 보호 정보는 각각의 보호된 메모리 구역에 할당된 보호 상태를 나타낸다. 수신된 명령의 명령 유형 및 특정 보호된 메모리 구역과 연관된 보호 정보에 기초하여, 제 2 프로세싱 스테이지는, 프로세서 또는 다른 외부 호스트에 의한 특정 보호된 메모리 구역에 대한 액세스를 인에이블 또는 디스에이블할지 여부를 결정한다.

Description

임베딩된 코드에 대한 보호 스킴{PROTECTION SCHEME FOR EMBEDDED CODE}
본 출원은 2012년 8월 15일 출원된 미국 가출원 제 61/683,645 호의 이익을 주장하고, 이는 그 전체가 참조에 의해 통합된다.
이 개시물은 일반적으로, 프로세싱 디바이스에 상주하는 임베딩된 (embedded) 애플리케이션들의 분야에 관한 것이다.
감소하는 폼 팩터를 갖는 디바이스들에서 보다 많은 컴퓨팅 파워에 대한 요구에 의해 시스템-온-칩 (system-on-chip; SoC) 디바이스는 다이 면적 당 보다 많은 기능성을 패키징하는 것을 계속하고 있다. 이들 고도로 집적된 디바이스들은 다양한 지적 재산 (intellectual property; IP) 블록들을 복잡한 분산된 컴퓨팅 시스템 내에 결합한다. 이들 디바이스들은 또한, 전력 소모 관리, 애플리케이션 레벨 소프트웨어 실행, 오디오/비디오 프로세싱, 및 무선 트랜시버들 동작과 같은 태스크 (task) 를 수행하기 위해 다중 프로세서 코어들 상에서 실행되는 임베딩된 소프트웨어의 수트 (suite) 를 포함한다.
이들 디바이스들은 고도로 집적되기 때문에, 임베딩된 소프트웨어 모듈들 및 IP 블록들 사이의 상호작용들은 SoC 디바이스의 전체 성능에 심각하게 기여할 수도 있다. SoC 디바이스의 개발 및 출시 동안, SoC 프로바이더들은 SoC 의 원하는 전체 성능 레벨을 달성하기 위해 이들 상호작용들을 구현, 테스트, 및 최적화하기 위해 몇몇 임베딩된 소프트웨어 판매자들과 공동으로 작업할 수도 있다. 하지만, 협업이 SoC 프로바이더에게 혜택을 줄 수도 있는 한편, 협업은 또한 임베딩된 소프트웨어 프로바이더들 사이의 임베딩된 코드의 프라이버시 및 악성 소프트웨어에 대해 어떻게 보호할지에 관한 관심사들을 증가시킨다.
집적 회로에서 메모리 구역 (region) 에 대한 액세스 (access) 를 제어하기 위한 코드 보호 스킴은, 다중 프로세싱 스테이지들 (stages) 을 포함하는 명령 파이프라인을 갖는 프로세서를 포함한다. 제 1 프로세싱 스테이지는 하나 이상의 명령들을 수신한다. 제 2 프로세싱 스테이지는 제 1 프로세싱 스테이지로부터의 메모리의 보호된 메모리 구역을 식별하는 어드레스 정보 및 식별된 보호된 메모리 구역에 대한 보호 정보를 수신한다. 보호 정보는 각각의 보호된 메모리 구역에 할당된 보호 상태 (protection state) 를 나타낸다. 수신된 명령의 명령 유형 (type) 및 특정 보호된 메모리 구역과 연관된 보호 정보에 기초하여, 제 2 프로세싱 스테이지는, 프로세서 또는 다른 외부 호스트에 의한 특정 보호된 메모리 구역에 대한 액세스를 인에이블 (enable) 또는 디스에이블 (disable) 할지 여부를 결정한다.
도 1 은 일 실시형태에 따른, 시스템-온-칩 (SoC) 디바이스에서 프로세싱 디바이스에 대한 코드 보호 시스템의 컴포넌트들을 나타내는 블록도이다.
도 2 는 일 실시형태에 따른, 프로세싱 디바이스에 대한 코드 보호 스킴 (scheme) 의 기능적 아키텍처 (architecture) 의 블록도를 보다 상세히 나타낸다.
도 3 은 일 실시형태에 따른, 프로세싱 디바이스에 대한 코드 보호 스킴의 프로세서 파이프라인 및 보호된 메모리 구역들의 기능적 아키텍처의 블록도를 보다 상세히 나타낸다.
도 4 는 일 실시형태에 따른, 프로세싱 디바이스에 대한 코드 보호 스킴의 메모리 맵 (map) 의 블록도를 보다 상세히 나타낸다.
도 5 는 일 실시형태에 따른, 도 1 의 코드 보호 시스템의 동작 파형들을 나타낸다.
도면들 및 이하의 설명은 오직 예시의 목적들을 위해 선호되는 실시형태들을 나타낸다. 이하의 논의로부터, 본 명세서에 개시된 구조들 및 방법들의 대안적인 실시형태들은 청구된 주제들로부터 벗어남이 없이 채용될 수도 있는 실행가능한 대안들로서 쉽게 인식될 것이다.
수개의 실시형태들에 대한 참조가 이제 이루어질 것이고, 그것의 예들이 첨부 도면들에 도시된다. 실현가능한 어디든지 유사 또는 동일한 참조 부호들이 도면들에서 사용될 수도 있고 유사 또는 동일한 기능성을 나타낼 수도 있다는 것에 유의하여야 한다. 도면들은 오직 예시의 목적들을 위해서 개시된 시스템 (또는 방법) 의 실시형태들을 묘사한다. 도들은 오직 예시의 목적들을 위해서 개시된 시스템 (또는 방법) 의 실시형태들을 묘사한다. 당해 기술분야에서 통상의 지식을 가진 자 (이하, '통상의 기술자' 라 함) 라면, 이하의 설명으로부터, 본 명세서에서 예시된 구조들 및 방법들의 대안적인 실시형태들이 본 명세서에서 설명된 원리들로부터 벗어남이 없이 채용될 수도 있다는 것을 쉽게 인식할 것이다.
코드 보호 시스템 아키텍처
도 1 은 시스템-온-칩 (SoC) 디바이스 (100) 에서 프로세싱 디바이스에 대한 코드 보호 시스템의 컴포넌트들의 일 실시형태이다. 코드 보호 시스템은 프로세싱 엘리먼트 (102), 메모리 맵 (106), 및 보호 비트 관리 엘리먼트 (108) 를 포함한다. 제어기 (110) 는 예시적인 SoC 디바이스를 보이기 위해 나타나고, 코드 보호 시스템의 범위를 제한하려는 의도는 아니다.
프로세싱 엘리먼트 (102) 는 일반적으로, 명령들 (예를 들어, 코드 또는 소프트웨어) 를 실행하기 위한 프로세싱 디바이스를 포함한다. 프로세싱 엘리먼트 (102) 는, 메모리 맵 (106) 에 액세스하고 제어기 (110) 와 커맨드들을 교환하기 위해 축소 명령 집합 컴퓨팅 (RISC) 프로세서, 디지털 신호 프로세서 (DSP), 그래픽 프로세서 유닛 (GPU), 애플리케이션들 프로세서 (예를 들어, 모바일 애플리케이션 프로세서), 비디오 프로세서, 또는 중앙 처리 유닛 (CPU) 으로서 동작하도록 구성되고 프로그래밍될 수도 있다는 점에서 특수화된 프로세서일 수도 있다. 프로세싱 엘리먼트 (102) 는 파이프라인 (104) 을 포함한다. 파이프라인 (104) 은 도 2 를 참조하여 더 설명되는 바와 같이 직렬로 연결된 다수의 데이터 프로세싱 스테이지들을 포함한다. 파이프라인 (104) 은 또한, 도 2 를 참조하여 더 설명되는 바와 같이 프로세싱 엘리먼트 (102) 에 의해 액세스가능한 지정된 메모리 구역들에 대해 코드 보호를 구현하도록 구성된 하드웨어 엘리먼트들 (예를 들어, 조합적 로직 또는 스위치들) 을 포함한다.
프로세싱 엘리먼트 (102) 는 전자적 포맷들로 표현된 단일 또는 다중 프로세서 코어들일 수도 있다. 일예에서, 프로세싱 엘리먼트 (102) 는, 레지스터 전송 언어 (RTL) 또는 하드웨어 기술 언어 (HDL) 와 같은, 회로 기술 언어로 표현된 구성가능한 (configurable) 프로세서 코어이다. 다른 예에서, 프로세싱 엘리먼트 (102) 는 배치되고 라우팅된 설계 또는 설계 레이아웃 포맷 (format) (예를 들어, 그래픽 데이터 시스템 II 또는 GDS II) 으로서 나타날 수도 있다. 추가적인 예에서, 프로세싱 엘리먼트 (102) 는 이 개시물에서 설명되고 실리콘으로 구현되거나 그렇지 않으면 물리적 디바이스로 변환되는 방법들과 일치하는 코드 보호를 구현하도록 구성될 수도 있다.
메모리 맵 (106) 은 어떻게 프로세싱 엘리먼트 (102) 에 액세스가능한 메모리가 파티셔닝 또는 구조화되는지를 나타내는 데이터 (예를 들어, 코드) 의 구조를 기술한다. 메모리 맵 (106) 은 보안되지 않은 (unsecured) 버스를 이용하여 프로세싱 엘리먼트 (102) 에 커플링될 수도 있다. 일예에서, 메모리 맵 (106) 은 다수의 구역들로 파티셔닝되고, 각각의 구역은 프로세서 엘리먼트 (102) 에 의해 고유하게 어드레스가능 (addressable) 하다. 메모리 맵 (106) 의 구역들은 프로세싱 엘리먼트 (102) 에 의해 정의 또는 지정될 수도 있다. 보호된 소프트웨어가 제 3 자 비보호 (unprotected) 소프트웨어와 메모리를 공유하는 것을 허용하기 위해, 각각의 개별 메모리 구역은 보호된 구역 또는 보호되지 않은 구역으로서 추가로 지정될 수도 있다. 일예에서, 메모리 맵 (106) 의 메모리 구역들은 프로세서 엘리먼트 (102) 를 구성하기 위해 옵션 (option) 의 선택을 수신하는 것에 응답하여 보호된 또는 보호되지 않은 것으로서 지정될 수도 있다.
메모리 맵 (106) 에서 기술된 보호 구역들에 대한 액세스를 제어하기 위해, 코드 보호 시스템은 추가로 보호 비트 관리 엘리먼트 (108) 를 포함한다. 보호 비트 관리 엘리먼트 (108) 는 보안된 버스를 통해 SoC 로부터 보호 설정 (setting) 을 수신하고, 메모리 맵 (106) 의 각각의 구역에 대응하는 고유한 보호 비트를 명시하는 보호 정보를 생성한다. 일 구현에서, 보호 비트 관리 엘리먼트 (108) 는 회로 엘리먼트들로 이루어진 별개의 제어기이다. 다른 구현에서, 보호 비트 관리 엘리먼트는 이전에 설명된 기능들을 수행하도록 동작하는 집적 회로의 다른 부분들과 공유된 회로 엘리먼트들을 포함한다. 일예에서, 보호 비트 (protect bit) 는 멀티-비트 값이고, 여기서, 멀티-비트 값에서의 각 비트는 메모리 맵 (106) 에서 명시된 구역과 연관되거나 그렇지 않으면 메모리 맵 (106) 에서 명시된 구역에 맵핑된다. 메모리 맵 (106) 의 구역에 대응하는 비트가 설정될 때, 그 구역에 대한 로드/저장 (load/store) 액세스는 허용되지 않지만, 그 구역으로부터의 비-로드/저장 (non-load/store) 명령의 실행은 허용된다. 그렇지 않으면 로드/저장 액세스는 허용되지 않는다. 보호 비트 관리 엘리먼트 (108) 는 프로세싱 엘리먼트 (102) 와 연관된 지적 재산 (IP) 블록에 대해 외부에 있는 레지스터에서 명시될 수도 있다. 보호 비트 관리 엘리먼트 (108) 는, 관리 유형 (예를 들어, 레지스터-기반, 퓨즈-기반 등), 어떻게 보호 비트들이 설정되는지 (예를 들어, 정적 또는 동적), 및 체크 섬 및 판매자 선택가능 보호 비트 관리를 포함하는 다른 보호 비트 관리 방법들을 명시하도록 구성될 수도 있다. 판매자 선택가능 보호 비트 관리는, 보호 비트들을 구성하도록 구성된 툴 (tool) 에 의해 수신될 때 그 판매자와 연관된 코드를 포함하는 메모리의 보호된 구역들에 대해 보호 비트들의 설정을 변경하는 것을 허용하는 사용자 패스워드 및 SoC 프로바이더 패스워드를 포함할 수도 있다. 설정들이 툴에 의해 재설정될 때, 판매자는 그 툴이, 이전 사용자 패스워드를 사용하는 그 사용자에 대해 지정된 메모리의 보호된 구역들에 대해 보호 비트 설정들로의 추가적인 변경들을 실시하는 것을 방지하기 위해 패스워드를 재설정한다.
일 실시형태에서, 보호 비트 관리 엘리먼트 (108) 는 다수의 메모리 로케이션들 (locations) 로 이루어진 레지스터이고, 보안된 버스를 통해 프로세싱 엘리먼트 (102) 에 커플링된다. 레지스터에서의 각 메모리 로케이션은 메모리 맵 (106) 의 특정 구역에 대응한다. 일예에서, 보호 비트를 설정하기 위해, 로직 하이 (logic high) (또는 "1") 가 보호된 구역으로 지정된 메모리 맵 (106) 의 특정 구역에 대응하는 레지스터의 메모리 로케이션에 저장된다. 그리고, 비보호로서 지정된 메모리 맵 (106) 의 특정 구역에 대해, 로직 로우 (logic low) (또는 "0") 가 메모리 맵 (106) 에서 기술된 특정 비보호 구역 (unprotected region) 에 대응하는 메모리 로케이션에 저장된다. 다른 예에서, 보호 비트를 설정하기 위해 로직 로우 (또는 "0") 가 보호 구역으로 지정된 메모리 맵 (106) 의 특정 구역에 대응하는 레지스터의 메모리 로케이션에 저장되고, 로직 하이 (또는 "1") 가 비보호 구역에 대응하는 메모리 맵 (106) 에서 기술된 구역에 대응하는 메모리 로케이션에 저장된다. 다른 실시형태에서, 보호 비트 관리 엘리먼트 (108) 는 퓨즈-기반 접근법 (fused-based approach) 일 수도 있다. 예를 들어, 퓨즈-기반 접근법에서, 퓨즈들 (fuses) 은 상기 기술된 레지스터-기반 접근법에서 기술된 레지스터와 같이, 레지스터에 저장된 값들에 기초하여 끊어진다. 로직 하이 (또는 "1") 또는 로직 로우 (또는 "0") 는 보호 비트를 설정 (즉, 보호된 메모리 구역을 인에이블) 또는 보호 비트를 클리어 (clear) (즉, 보호된 메모리 구역을 디스에이블) 하기 위해 이용될 수도 있다.
보호 비트 관리 엘리먼트 (108) 는 보호 비트를 정적으로 또는 동적으로 설정하도록 구성될 수도 있다. 일예에서, 보호 비트들은 SoC 디바이스의 제조 동안 퓨즈-기반 접근법을 정적으로 이용하여 설정된다. 다른 예에서, 보호 비트들은, 프로세싱 엘리먼트 (102) 가 명령 랜덤 액세스 메모리 (RAM) 로딩 동안과 같이 중단 (halt) 또는 유휴 (idle) 상태에 있을 때 동적으로 설정된다.
제어기 (110) 는 프로세싱 엘리먼트 (102) 와 하나의 또는 결합 명령들 또는 데이터를 교환하기 위해 커플링된 임의의 디바이스일 수도 있다. 예를 들어, 제어기 (110) 는 SoC (100) 의 외부에 있는 디버거 (debugger) 에 연결하기 위해 조인트 테스트 액션 그룹 (Joint Test Action Group; JTAG) 과 같은 제 1 포트, 및 프로세싱 엘리먼트 (102) 에 의해 액세스가능한 메모리에 저장된 디버그 소프트웨어를 실행하기 위해 프로세싱 엘리먼트 (102) 에 커플링된 제 2 포트를 갖는 디버그 (debug) 제어기일 수도 있다.
도 2 는 프로세싱 디바이스에 대한 코드 보호 스킴의 프로세싱 엘리먼트 파이프라인 (104) 및 메모리 공간 (106) 의 기능적 아키텍처의 블록도를 더 자세히 나타낸다. 도 2 에 도시된 바와 같이, 코드 보호는 파이프라인 (104) 에서 구현된다. 파이프라인 (104) 에서 코드 보호를 구현하는 것은, 그것이 임베딩된 프로세서들에 대한 다른 코드 보호 솔루션들 (solutions) 에 비해 면적 및 전력 효율적인 구성가능한 (configurable) 코드 보호 시스템을 제공하기 때문에, 유익하다. 예를 들어, 다른 코드 보호 솔루션들은 전용의 별개의 보호된 메모리 공간을 이용하고, 이는 개시된 실시형태들에 비해 보다 많은 면적 및 전력을 필요로 한다. 다른 솔루션들은 코드 보호를 제공하기 위해 트러스트 메모리 관리 유닛 (MMU) 으로서 동작하는 전용 임베딩된 하드웨어를 이용한다. 트러스트 MMU 는 개시된 실시형태들에 비해 추가적인 다이 면적 (die area) 을 소모할 뿐만 아니라, 가외의 (extra) 프로세싱 전력을 또한 소모하며, 설계 엔지니어에게 임베딩된 또는 깊게 임베딩된 프로세서 코어들에 대한 코드 보호를 구현하기 위해 추가적인 RTL 개발의 짐을 지운다.
임베딩된 또는 깊게 임베딩된 프로세서 코어들에 대한 다른 코드 보호 솔루션들에 비해, 도 2 의 코드 보호 시스템은 메모리 맵 (106) 의 보호된 구역에 대한 액세스를 조정하는 동작을 파이프라인 (104) 내로 통합한다. 도 2 에 도시된 바와 같이, 파이프라인 (104) 은 직렬로 커플링된 다수의 프로세싱 스테이지들을 포함한다. 비록 3 개의 프로세싱 스테이지들, 페치 (fetch) (204), 실행 (execute) (206), 및 커밋 (commit) (208) 이 도 2 에 도시되지만, 프로세싱 엘리먼트 (102) 의 기능성 및 SoC 디바이스의 설계 요건들에 기초하여 추가적인 프로세싱 스테이지들이 이용될 수도 있다.
페치 (204) 스테이지는 비보호 메모리 구역 (210) 또는 보호된 메모리 구역 (212) 으로부터 명령 액세스를 수신한다. 명령 액세스는 제어기 (110), 프로세서 코드, 외부 호스트, 또는 프로세싱 엘리먼트 (102) 와 통신하도록 커플링된 임의의 다른 소스로부터의 커맨드 (command) 일 수도 있다. 예를 들어, 명령 액세스는 읽기 (read), 쓰기 (write), 또는 실행 커맨드일 수도 있다. 실행 (206) 스테이지는 페치 (204) 스테이지에 의해 프로세싱된 명령 액세스와 연관된 커맨드를 수신하고, 수신된 명령과 일치하는 동작을 수행한다. 예를 들어, 실행 (206) 스테이지는 레지스터-대-레지스터 동작 (예를 들어, 가산, 감산, 비교, 또는 다른 논리적 연산), 다중-사이클 명령, 또는 보호된 메모리 구역 (212) 에 대한 로드/저장 명령들 외의 다른 동작들을 수행할 수도 있다. 실행 (206) 스테이지는 보호 비트 (202) 의 설정과는 독립적으로 비보호 메모리 구역 (210) 또는 보호된 메모리 구역 (212) 으로부터의 커맨드들을 실행할 수도 있다. 커밋 (208) 스테이지는 명령 및 데이터 메모리 액세스 사이를 구별하고, 보호되는 것으로서 지정된 메모리의 구역들에 대한 메모리 액세스를 조정한다. 특히, 커밋 (208) 스테이지는 대응하는 보호된 메모리 구역 (212) 과 연관된 보호 비트의 상태에 기초하여 메모리 맵 (106) 내의 보호된 메모리 구역 (212) 에 대한 로드/저장 액세스를 조정한다. 일예에서, 도 1 에 대해 전술된 바와 같은 보호 비트 관리 스킴에 기초하여 메모리의 각 구역에 하나의 보호 비트가 할당된다.
특정 보호된 메모리 구역 (212) 에 대한 로드/저장 액세스를 조정하기 위해, 커밋 (208) 스테이지는 보호 비트들 (202) 을 수신하고, 보호 비트들 (202) 의 대응하는 비트의 상태에 따라 특정 보호된 메모리 구역 (212) 에 대한 액세스를 인에이블 또는 디스에이블시킨다. 예를 들어, 보호 비트들 (202) 이 설정될 때마다, 대응하는 보호된 메모리 구역 (212) 에 대한 모든 읽기 및 쓰기 (예를 들어, 로드/저장) 액세스가 디스에이블된다. 실제로, 보호 비트들 (202) 이 설정될 때, 커밋 (208) 스테이지와 보호된 메모리 구역 (212) 사이의 연결은 디스에이블된다. 커밋 (208) 스테이지와 비보호 메모리 구역 (210) 사이의 연결은 하지만 인에이블된 상태로 남는다. 다르게 말하면, 보호 비트들 (202) 은, 일단 설정되고 나면, SoC 프로바이더에 의해 보호되는 것으로서 지정된 메모리의 구역들에 대한 로드/저장 액세스를 디스에이블한다.
추가적으로, 보호 비트 (202) 가 특정 보호된 메모리 구역 (212) 에 대해 설정될 때, 그 보호된 메모리 구역 (212) 에 액세스하기 위한 임의의 시도는, 특정 SoC 또는 특정 보호된 메모리 구역에 대한 코드 보호 사용 모드에 따라 예외 (exception) 를 발생시킨다. 이 예외는, 예를 들어, 벡터 명칭, 벡터 오프셋, 벡터 번호, 원인 코드 (cause code), 파라미터, 또는 ECR 값 중 하나 또는 조합을 포함할 수도 있다. 코드 보호 사용 모드는 메모리 맵 (106) 에서 메모리 참조들의 그룹에 대해 적용되는 특정 보호 규칙들 (rules) 을 명시한다. 예를 들어, 제 1 코드 보호 사용 모드에 따라, 임의의 공존하는 보호 스킴이 보호 위반 (violation) 을 검출하는 경우에 보호 위반 예외가 상승된다 (raised). 다수의 보호 스킴이 동시에 또는 실질적으로 같은 시간에 발생하는 예외를 상승시키는 경우에서, 예외들은 동일한 벡터 및 원인 코드를 공유한다. 하지만, 각각의 보호 스킴은 보고 목적들을 위해 구별가능할 수도 있다. 예를 들어, 코드 보호가 스택 체킹 (stack checking) 과 공존하는 경우에, 각각의 보호 스킴은 8-비트 파라미터에서의 그 자신의 별개의 비트를 설정하고, 여기서, 8-비트 파라미터의 비트 0 은 코드 보호 위반들에 대응하고; 비트 1 은 스택 체킹 위반들에 대응하며; 비트 2 는 MPU 허가 위반들에 대응하고, 비트 3 는 MMU 허가 위반들에 대응한다.
도 3 은 프로세싱 디바이스에 대한 코드 보호 스킴의 커밋 (208) 스테이지 및 보호된 메모리 구역들 (212) 의 기능적 아키텍처의 블록도를 더 자세히 나타낸다. 도 3 에서 도시된 바와 같이, 커밋 (208) 스테이지는 보호된 메모리 구역들 (212) 에 대한 로드/저장 액세스를 조정하는 다수의 스위치들 (예를 들어, 스위치들 (302, 304, 및 306)) 을 포함한다. 각 스위치는 특정 보호된 메모리 구역에 대응하는 읽기/쓰기 신호에 커플링된 입력 및 그 각기의 보호된 메모리 구역에 대한 읽기/쓰기 액세스를 가능하게 하는 회로에 커플링된 출력을 갖는다. 스위치 상태 (예를 들어, 인에이블됨/디스에이블됨) 는 특정 보호된 메모리 구역과 연관된 보호 비트의 값에 의해 결정된다. 예를 들어, 스위치 (302) 의 상태는 구역 0 에 대한 보호 비트의 값에 기초하여 결정된다. 따라서, 메모리 구역 0 에 대한 보호 비트가 인에이블되는 경우에 (예를 들어, 스위치 (302) 가 개방되는 경우에), 보호된 메모리 구역 0 에 지향된 로드/저장 동작은 디스에이블된다. 스위치들 (302, 304, 및 306) 은 상기 설명된 동작을 수행하기 위해 조합적인 로직 또는 게이트들로 구현될 수도 있다. 예를 들어, 스위치 (302) 는 인버터의 출력에 커플링된 하나의 입력을 갖는 2 개의 입력 AND 게이트로서 구현될 수도 있다. 이 예에서, 인버터의 입력은 메모리 구역 0 에 대한 보호 비트에 커플링된다. AND 게이트의 다른 입력은 읽기/쓰기 구역 0 으로 라벨링된 신호에 연결된다. 이 예에서, 구역 0 에 대한 보호 비트가 인에이블된 채로 (즉, 로직 하이 (또는 "1")) 남아 있는 한, 인버터의 출력은 로직 로우 (또는 "0") 에 남아 있을 것이고, 이는 AND 게이트의 출력이 역시 로직 "0" 에 남아 있는 것을 야기한다.
도 4 는 프로세싱 디바이스에 대한 코드 보호 스킴의 메모리 맵의 블록도의 보다 자세한 예를 나타낸다. 도 4 에서 도시된 바와 같이, 메모리 맵 (106) 은 보호 또는 비보호 중 어느 일방으로서 SoC 프로바이더에 의해 지정된 다수의 구역들로 파티셔닝될 수도 있다. 일예에서, 메모리 맵 (106) 은 256 구역들로 파티셔닝된다. 각 구역은, 각기의 메모리 구역이 보호되는지 또는 보호되지 않는지 여부를 나타내는 값을 갖는 보호 비트와 연관될 수도 있다. 도 4 에서 도시된 바와 같이, 메모리 구역들 (2, 3, 4, 및 255) 은 비보호로서 지정된다. 메모리 구역들 (1, 3, 91, 및 101) 은 보호된 것으로서 지정되고, 프라이버시 또는 악성 소프트웨어 공격들에 민감한 판매자 코드인 코드, 보호 비트들의 관리와 연관된 코드 (예를 들어, 동적 보호 비트 생성을 위한 코드 또는 보호 비트들을 생성하기 위한 퓨즈 로직), 또는 예외/인터럽트 핸들링 (exception/interrupt handling) 과 연관된 코드를 포함한다.
도 5 는 도 1 의 코드 보호 시스템의 동작 파형들을 나타낸다. 도 5 에 도시된 동작 파형들은 4 개의 구역들로 파티셔닝된 메모리 공간을 갖는 코드 보호 시스템의 동작을 나타낸다. 구역들 1-4 로 라벨링된 신호 파형들은 각기의 메모리 구역과 연관된 보호 비트의 값을 나타낸다. 예를 들어, 구역들 1 및 3 은 오프 (OFF) 로서 라벨링되고, 따라서 비보호 메모리 구역들로서 지정된다. 오프 상태는 디스에이블된 것으로서 구역들 1 및 3 과 연관된 보호 비트의 값을 반영한다. 구역들 2 및 4 는 온 (ON) 으로 라벨링되고, 따라서 보호된 메모리 구역들로서 지정된다. 온 상태는 인에이블된 것으로서 구역들 2 및 4 와 연관된 보호 비트의 값을 반영한다. 신호 파형 라벨링된 프로그램 카운터 (508) 에 의해 표시된 값은 코드가 그 기간 동안 실행되는 메모리의 구역을 나타낸다. 예를 들어, 코드는 구역 #1 로부터 실행되고, 뒤이어 구역 #2 가 실행된다. 명령들 (즉, 코드) 은 임의의 메모리 구역들에서부터, 임의의 순서로 실행될 수 있다.
파형 라벨링된 명령들 (510) 은 주어진 기간에서 실행되는 명령의 유형을 나타낸다. 로드 또는 저장 명령에 대해, 명령은 LD/ST rx, #n 으로서 포맷된다. 여기서, LD 는 로드 명령을 나타내고, ST 는 저장 명령을 나타내며, rx 는 구역 "n" 으로부터/으로의 레지스터 "x" 를 나타낸다. ADD, SUB, CMP 로 라벨링된 명령들은 명령들 가산, 감산, 비교에 각각 대응하고, 이들은 비-로드/저장 명령들이다. 예외 핸들러 (exception handler) 로 라벨링된 명령들은 이전 명령이 예외를 야기했다는 것을 나타낸다. 전술한 바와 같이, 보호된 메모리 구역에 지향된 로드/저장 명령을 실행하기 위한 시도에 응답하여 예외가 생성된다. 예외 검출 (512) 로 라벨링된 신호 파형은 신호 파형 (510) 상의 예외 핸들러의 발생에 응답하여 로직 로우 (또는 "0") 에서 로직 하이 (또는 "1") 로 천이한다.
도 5 에 도시된 바와 같이, 도 5 에 걸쳐 좌측에서부터 우측으로 이동하는 제 1 명령에 따라, 프로세싱 엘리먼트 (102) 는 레지스터 0 및 레지스터 1 에 저장된 값들을 가산한다. ADD 는 비-로드/저장 명령이기 때문에, 코드 보호 스킴의 상태는 ADD 명령의 실행을 금지하지 않는다. 이하의 명령은, 레지스터 1 로부터 메모리 구역 #1 로 명령을 로드하기 위해, 프로세싱 엘리먼트 (102) 의 관점에서 동작하는 로드/저장 명령이다. 이 로드 명령은, 메모리 구역 #1 이 오프로 라벨링되기 때문에 허가되고, 따라서 비보호로서 지정된다. 이하의 명령, ST r2, #4 는 저장 명령이고, 레지스터 2 에서의 값을 메모리 구역 #4 에 저장하기 위해 실행되는 경우에 (예를 들어, 보호된 메모리 구역 #4 에 쓰기하려는 잠재적인 악성 소프트웨어 시도) 동작된다. 이 경우에, 메모리 구역 #4 는 온으로 라벨링되고, 따라서 보호된다. 이에 따라, 제 3 명령에서 표시된 저장 명령은 허가되지 않고, 예외 핸들러가 다음 명령 사이클에서 생성되게끔 한다. 예외 핸들러는, 실행되는 동안 보호된 메모리 구역 예외에 대해 데이터를 저장하기 위한 시도 및 비보호 메모리 구역을 나타낼 수도 있다. 이것은 메모리 구역 #4 에 코드를 저장한 판매자가 메모리 구역 #4 에 쓰기를 시도한 경우에도 참이다. 제 6 명령, LD r4, #2 에 대해서도 유사하고, 이는, 메모리 구역 #2 에 저장된 값을 레지스터 4 에 로드하기 위해, 프로세싱 엘리먼트 (102) 에 의해 실행되는 경우에 (예를 들어, 보호된 메모리 구역 #2 에 저장된 코드를 읽기 위한 시도) 동작한다. 이 경우에, 메모리 구역 #2 는 온으로 라벨링되고, 따라서 보호된다. 이에 따라, 제 6 명령에서 표시된 저장 명령은 허가되지 않고, 다음 명령 사이클에서 예외 핸들러가 생성되게끔 한다. 예외 핸들러는 실행되는 동안 보호된 메모리 구역 예외에 대한 로드 및 보호된 메모리 구역을 나타낼 수도 있다. 이는 메모리 구역 #2 에 코드를 저장한 판매자가 메모리 구역 #2 로부터 읽기를 시도한 경우에도 참이다.
추가적인 고려사항들
개시된 구성은 보호된 구역들로서 지정된 메모리의 영역들에 저장된 정보에 대해 프라이버시 및 악성 소프트웨어에 대한 보호를 유익하게 제공한다. 면적 및 전력 소모를 감소시키기 위해, 개시된 구성들은 프로세서 파이프라인에서 구현된다. 예를 들어, 일 구성에서, 개시된 코드 보호 시스템은 메모리의 보호된 구역에 대한 로드/저장 액세스를 조정하는 동작을 파이프라인 스테이지들 중 하나 내에 통합한다. 통합은 추가적인 조합 로직의 최소 사용 및 메모리 공간의 각 구역과 연관된 보호 비트들의 사용을 포함한다. 보호 비트들이 인에이블될 때, 대응하는 보호된 메모리 구역에 지향된 읽기 및 쓰기 동작들은 다른 호스트 프로세서 또는 디버거에 의해 허가되지 않는다. 보호 비트들은 특정 설계 요건들에 따라 SoC 프로바이더에 의해 설정될 수도 있다. 이러한 유연성은, 코드 보호를 제공하기 위해 트러스트 메모리 관리 유닛 (MMU) 으로서 동작하는 별개의 보호된 메모리 공간 또는 전용 임베딩된 하드웨어를 이용하는 다른 코드 보호 솔루션들에 비해 면적 및 전력 효율적인 구성가능한 코드 보호 시스템을 제공한다.
개시된 실시형태들은 프로세서 코어의 구성 (configuration) 동안 코드 보호 피처들 (features) 의 구현을 커버한다. 예를 들어, 개시된 실시형태들은, 컴퓨팅 시스템에 의해 수신된 선택에 기초하여 개시된 코드 보호 피처들을 통합하도록 프로세서 코어를 구성할지 여부를 선택하도록 동작가능한 코드를 포함하는 컴퓨팅 시스템을 커버한다. 이와 같이, 개시된 실시형태들은, 프로세서에 의해 실행될 때 프로세서 코어가 개시된 코드 보호 피처들을 통합하도록 구성할지 여부를 선택하도록 이러한 개발 툴을 구현하는 코드를 포함하는 컴퓨터 판독가능 매체를 커버한다. 개시된 실시형태들은 또한, 개시된 코드 보호 시스템을 통합하는 프로세서 코어의 전기적 표현 (electrical representation) 을 커버하고, 이는 이러한 개발 툴로부터 출력될 수도 있다. 개시된 실시형태들은, 개시된 코드 보호 시스템의 회로 표현을 구체화하는 컴퓨팅 디바이스를 더 커버한다.
실시형태들의 이전 설명은 예시의 목적을 위해 제시되었고; 그것은 망라적인 것으로 의도되거나 실시형태들을 개시된 정확한 형태들에 한정하려는 의도가 아니다. 통상의 기술자는, 상기 개시에 비추어 많은 변형들 및 변화들이 가능하다는 것을 이해할 수 있다.
이 설명의 몇몇 부분들은 실시형태들을 정보에 대한 연산들의 심볼적 표현들 및 알고리즘들의 면에서 설명한다. 이들 알고리즘적 기술들 및 심볼적 표현들은 통상의 기술자가 그들의 작업을 다른 통상의 기술자에게 전달하기 위해 데이터 프로세싱 기술분야에서 통상적으로 사용된다. 이들 동작들은, 기능적으로, 계산학적으로, 또는 논리적으로 기술되었지만, 컴퓨터 프로그램들 또는 등가의 전기적 회로들, 마이크로코드 등에 의해 구현되는 것으로 이해된다. 또한, 이들 동작들의 배열들을 일반성의 상실 없이 모듈들로서 지칭하는 것이 때로는 편리하다는 것이 또한 증명되었다. 기술된 동작들 및 그들의 연관된 모듈들은 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다.
본 명세서에서 설명된 단계들, 동작들, 또는 프로세스들 중 임의의 것은 하나 이상의 하드웨어 또는 소프트웨어 모듈들 단독으로 또는 다른 디바이스들과의 결합으로 수행 또는 구현될 수도 있다. 일 실시형태에서, 소프트웨어 모듈은, 설명된 단계들, 동작들, 또는 프로세스들 중 어느 것 또는 전부를 수행하기 위해 컴퓨터 프로세서에 의해 실행될 수 있는, 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로 구현된다. 이것은, 본 명세서에서 설명된 개시 코드 보호 시스템 실시형태들의 컴포넌트들에 대응하는 레지스터 전송 언어 (RTL) 또는 하드웨어 기술 언어 (HDL) 와 같은, 회로 기술 언어를 합성하기 위해, 프로세싱 엘리먼트 및 SoC 컴포넌트들을 구성하기 위해 컴퓨터 프로세스에 의해 실행되는 코드를 포함한다. 이것은, 배치된 및 라우팅된 설계 또는 설계 레이아웃 포맷으로서 개시된 실시형태들의 임의의 부분을 생성하기 위한 컴퓨터 프로세스 (예를 들어, 그래픽 데이터 시스템 II 또는 GDS II) 에 의해 실행되는 코드를 더 포함한다.
개시된 실시형태들은 또한 본 명세서에서의 동작들을 수행하기 위한 장치에 관련될 수도 있다. 이 장치는 요구되는 목적들을 위해 특별하게 구축될 수도 있고, 및/또는, 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨팅 디바이스를 포함할 수도 있다. 이러한 컴퓨터 프로그램은 비-일시적 (non-transitory), 유형의 (tangible) 컴퓨터 판독가능 저장 매체, 또는 전자적 명령들을 저장하기에 적합한 임의의 유형의 매체에 저장될 수도 있고, 이들은 컴퓨터 시스템 버스에 커플링될 수도 있다. 또한, 명세서에서 지칭된 임의의 컴퓨팅 시스템들은 단일 프로세서를 포함할 수도 있고, 또는, 증가된 컴퓨팅 성능을 위해 다중 프로세서 설계들을 채용하는 아키텍처일 수도 있다.
개시된 실시형태들은 또한 본 명세서에서 설명된 컴퓨팅 프로세스에 의해 생성되는 제품에 관련될 수도 있다. 이러한 제품은 컴퓨팅 프로세스로부터 발생되는 정보를 포함할 수도 있고, 여기서 정보는 비-일시적, 유형의 컴퓨터-판독가능 저장 매체에 저장되고, 본 명세서에서 설명된 컴퓨터 프로그램 제품 또는 다른 데이터 조합의 임의의 실시형태를 포함할 수도 있다.
마지막으로, 명세서에서 사용된 언어는 주로 가독성 및 설명 목적들을 위해 선택되었고, 그것은 발명적 주제를 기술하거나 제한하기 위해 선택되지는 않았을 것이다. 따라서, 개시된 실시형태들의 범위는 이 상세한 설명에 의해서가 아니고 그보다는 그것에 기초한 애플리케이션 상에서 나오는 임의의 청구항들에 의해서 제한되는 것으로 의도된다. 이에 따라, 실시형태들의 개시는 예시적인 것으로 의도되고, 범위에서 제한하는 것으로 의도되지 아니하며, 이하의 청구항들에서 전개되는 바와 같이 의도된다.

Claims (28)

  1. 메모리 및 프로세서를 포함하는 집적 회로로서,
    상기 메모리는 하나 이상의 메모리 구역들을 포함하고,
    상기 프로세서는,
    복수의 프로세싱 스테이지들로 이루어진 명령 파이프라인;
    하나 이상의 명령들을 수신하도록 커플링된 제 1 입력을 갖는, 상기 복수의 프로세싱 스테이지들 중의 제 1 프로세싱 스테이지; 및
    제 1 프로세싱 스테이지에 커플링된, 상기 복수의 프로세싱 스테이지들 중의 제 2 프로세싱 스테이지를 포함하며,
    상기 제 2 프로세싱 스테이지는,
    상기 메모리의 보호된 메모리 구역을 식별하는 어드레스 정보를 수신하는 것으로서, 상기 보호된 메모리 구역은 상기 제 1 프로세싱 스테이지로부터 수신된 명령과 연관되는, 상기 어드레스 정보를 수신하는 것;
    식별된 보호된 메모리 구역에 대한 보호 정보를 수신하는 것으로서, 상기 보호 정보는 상기 식별된 보호된 메모리 구역에 할당된 보호 상태를 나타내는 보호 비트를 포함하는, 상기 보호 정보를 수신하는 것; 및
    상기 식별된 보호된 메모리 구역에 대한 상기 보호 비트의 값과 연관된 상기 제 2 프로세싱 스테이지에 포함되는 스위치의 상태를 제어함으로써 상기 식별된 보호된 메모리 구역에 대한 액세스를 제어하는 것
    을 하도록 구성되는, 집적 회로.
  2. 제 1 항에 있어서,
    상기 제 2 프로세싱 스테이지는, 코드 보호 제어기로부터 상기 메모리의 하나 이상의 보호된 메모리 구역들에 대한 보호 정보를 수신하도록 커플링되는, 집적 회로.
  3. 제 2 항에 있어서,
    상기 집적 회로는, 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 보호 정보 설정들 (settings) 을 보안 버스를 이용하여 상기 코드 보호 제어기에 전송하도록 구성되는, 집적 회로.
  4. 제 2 항에 있어서,
    상기 집적 회로는, 하나 이상의 퓨즈 설정들에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하도록 구성되는, 집적 회로.
  5. 제 2 항에 있어서,
    상기 집적 회로는, 하나 이상의 레지스터 설정들에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하도록 구성되는, 집적 회로.
  6. 제 2 항에 있어서,
    상기 집적 회로는, 하나 이상의 퓨즈 설정들 및 하나 이상의 레지스터 설정들의 조합에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하도록 구성되는, 집적 회로.
  7. 제 2 항에 있어서,
    상기 집적 회로는, 상기 프로세서가 유휴 상태일 때 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 변경하도록 구성되는, 집적 회로.
  8. 제 1 항에 있어서,
    메모리 액세스 유형을 갖는 명령들에 대해, 상기 제 2 프로세싱 스테이지는, 상기 식별된 보호된 메모리 구역에 할당된 상기 보호 상태가 설정될 때 상기 식별된 보호된 메모리 구역에 대한 액세스를 디스에이블하도록 상기 스위치를 제 1 상태로 하고, 상기 식별된 보호된 메모리 구역에 할당된 상기 보호 상태가 설정되지 않을 때 상기 식별된 보호된 메모리 구역에 대한 액세스를 인에이블하도록 상기 스위치를 제 2 상태로 하도록 구성되는, 집적 회로.
  9. 제 1 항에 있어서,
    메모리 액세스 유형을 갖는 명령들에 대해, 상기 제 2 프로세싱 스테이지는,
    상기 식별된 보호된 메모리 구역에 할당된 상기 보호 상태가 설정될 때 상기 식별된 보호된 메모리 구역에 대한 액세스를 디스에이블하고; 그리고
    상기 식별된 보호된 메모리 구역의 코드 보호 사용 모드에 기초하여 예외를 발생시키도록 구성되는, 집적 회로.
  10. 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법으로서,
    상기 메모리는 하나 이상의 메모리 구역들을 포함하고,
    상기 방법은,
    컴퓨팅 시스템에서, 상기 프로세서의 명령 파이프라인을 구성하기 위한 하나 이상의 구성 설정들 (configuration settings) 을 수신하는 단계로서, 상기 명령 파이프라인은 복수의 프로세싱 스테이지들을 포함하는, 상기 하나 이상의 구성 설정들을 수신하는 단계;
    수신된 상기 하나 이상의 구성 설정들에 기초하여 하나 이상의 명령들을 수신하도록, 상기 복수의 프로세싱 스테이지들 중의 제 1 프로세싱 스테이지를 구성하는 단계;
    상기 제 1 프로세싱 스테이지에 의해 수신된 명령과 연관된 어드레스 정보를 수신하도록 제 2 프로세싱 스테이지를 구성하는 단계로서, 상기 어드레스 정보는 상기 메모리의 보호된 메모리 구역을 식별하는, 상기 어드레스 정보를 수신하도록 제 2 프로세싱 스테이지를 구성하는 단계;
    상기 보호된 메모리 구역에 대한 보호 정보를 수신하도록 상기 제 2 프로세싱 스테이지를 구성하는 단계로서, 상기 보호 정보는 상기 보호된 메모리 구역에 할당된 보호 상태를 나타내는 보호 비트를 포함하고, 상기 제 2 프로세싱 스테이지는 스위치를 포함하며, 상기 스위치의 상태는 상기 보호 비트의 값에 의해 결정되는, 상기 보호 정보를 수신하도록 상기 제 2 프로세싱 스테이지를 구성하는 단계; 및
    상기 스위치의 상기 상태와 연관된 상기 식별된 보호된 메모리 구역에 대한 액세스를 제어하도록 상기 제 2 프로세싱 스테이지를 구성하는 단계를 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  11. 제 10 항에 있어서,
    상기 제 2 프로세싱 스테이지는, 코드 보호 제어기로부터 상기 메모리의 하나 이상의 보호된 메모리 구역들에 대한 보호 정보를 수신하도록 커플링되는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  12. 제 11 항에 있어서,
    상기 하나 이상의 구성 설정들을 수신하는 단계에 응답하여, 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 보호 정보 설정들 (settings) 을 보안 버스를 이용하여 상기 코드 보호 제어기에 전송하도록 상기 집적 회로를 구성하는 단계를 더 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  13. 제 11 항에 있어서,
    상기 하나 이상의 구성 설정들을 수신하는 단계에 응답하여, 하나 이상의 퓨즈 설정들에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하도록 상기 집적 회로를 구성하는 단계를 더 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  14. 제 11 항에 있어서,
    상기 하나 이상의 구성 설정들을 수신하는 단계에 응답하여, 하나 이상의 레지스터 설정들에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하도록 상기 집적 회로를 구성하는 단계를 더 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  15. 제 11 항에 있어서,
    상기 하나 이상의 구성 설정들을 수신하는 단계에 응답하여, 상기 프로세서가 유휴 상태일 때 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 변경하도록 상기 집적 회로를 구성하는 단계를 더 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  16. 제 11 항에 있어서,
    하나 이상의 프로세서 구성 설정들을 수신하는 것에 응답하여, 식별된 상기 보호된 메모리 구역에 할당된 상기 보호 상태가 설정될 때 메모리 액세스 유형을 갖는 명령들에 대해 상기 보호된 메모리 구역에 대한 액세스를 디스에이블하도록 상기 집적 회로의 상기 제 2 프로세싱 스테이지를 구성하는 단계를 더 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  17. 제 11 항에 있어서,
    하나 이상의 프로세서 구성 설정들을 수신하는 것에 응답하여,
    식별된 상기 보호된 메모리 구역에 할당된 상기 보호 상태가 설정될 때, 메모리 액세스 유형을 갖는 명령들에 대해 상기 식별된 보호된 메모리 구역에 대한 액세스를 디스에이블하고; 그리고
    상기 식별된 보호된 메모리 구역의 코드 보호 사용 모드에 기초하여 예외를 발생시키도록
    상기 집적 회로의 상기 제 2 프로세싱 스테이지를 구성하는 단계를 더 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  18. 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법으로서,
    상기 집적 회로는 복수의 프로세싱 스테이지들로 이루어진 명령 파이프라인을 포함하고,
    상기 방법은,
    상기 복수의 프로세싱 스테이지들 중의 제 1 프로세싱 스테이지에서, 하나 이상의 명령들을 수신하는 단계;
    상기 복수의 프로세싱 스테이지들 중의 제 2 프로세싱 스테이지에서 상기 제 1 프로세싱 스테이지로부터, 상기 메모리의 보호된 메모리 구역을 식별하는 어드레스 정보를 수신하는 단계로서, 상기 보호된 메모리 구역은 상기 제 1 프로세싱 스테이지로부터 수신된 명령과 연관되는, 상기 어드레스 정보를 수신하는 단계;
    식별된 보호된 메모리 구역에 대한 보호 정보를 수신하는 단계로서, 상기 보호 정보는 상기 식별된 보호된 메모리 구역에 할당된 보호 상태를 나타내는 보호 비트를 포함하는, 상기 보호 정보를 수신하는 단계;
    상기 보호 비트와 연관된 상기 제 2 프로세싱 스테이지에 포함된 스위치의 동작 상태를 제어하는 단계; 및
    상기 보호 비트의 값과 연관된 상기 스위치의 상기 동작 상태를 제어함으로써 상기 식별된 보호된 메모리 구역에 대한 액세스를 제어하는 단계를 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  19. 제 18 항에 있어서,
    상기 제 2 프로세싱 스테이지에서, 코드 보호 제어기로부터 상기 메모리의 하나 이상의 보호된 메모리 구역들에 대한 보호 정보를 수신하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  20. 제 19 항에 있어서,
    상기 집적 회로에 의해, 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 보호 정보 설정들을 생성하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  21. 제 19 항에 있어서,
    상기 집적 회로에 의해, 하나 이상의 퓨즈 설정들에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  22. 제 19 항에 있어서,
    상기 집적 회로에 의해, 하나 이상의 레지스터 설정들에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  23. 제 19 항에 있어서,
    상기 집적 회로에 의해, 하나 이상의 퓨즈 설정들 및 하나 이상의 레지스터 설정들의 조합에 기초하여 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 생성하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  24. 제 19 항에 있어서,
    상기 집적 회로에 의해, 프로세서가 유휴 상태일 때 상기 메모리의 상기 하나 이상의 보호된 메모리 구역들에 대한 코드 보호 정보 설정들을 변경하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  25. 제 18 항에 있어서,
    상기 식별된 보호된 메모리 구역에 할당된 상기 보호 상태가 설정될 때, 메모리 액세스 유형을 갖는 명령들에 대해 상기 식별된 보호된 메모리 구역에 대한 액세스를 금지하는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  26. 제 18 항에 있어서,
    메모리 액세스 유형을 갖는 명령들에 대해,
    상기 식별된 보호된 메모리 구역에 할당된 상기 보호 상태가 설정될 때 상기 식별된 보호된 메모리 구역에 대한 액세스를 금지하고; 그리고
    상기 식별된 보호된 메모리 구역의 코드 보호 사용 모드에 기초하여 예외를 발생시키는 단계를 더 포함하는, 집적 회로에서 메모리의 하나 이상의 구역들에 대한 액세스를 제어하는 방법.
  27. 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법으로서,
    상기 메모리는 하나 이상의 메모리 구역들을 포함하고,
    상기 방법은,
    컴퓨팅 시스템에서, 상기 프로세서의 명령 파이프라인을 구성하기 위한 하나 이상의 구성 설정들 (configuration settings) 을 수신하는 단계;
    수신된 상기 하나 이상의 구성 설정들에 기초하여 하나 이상의 명령들을 수신하도록 상기 명령 파이프라인을 구성하는 단계;
    수신된 명령과 연관된 어드레스 정보를 수신하도록 상기 명령 파이프라인을 구성하는 단계로서, 상기 어드레스 정보는 상기 메모리의 보호된 메모리 구역을 식별하는, 상기 어드레스 정보를 수신하도록 상기 명령 파이프라인을 구성하는 단계;
    상기 보호된 메모리 구역에 대한 보호 정보를 수신하도록 상기 명령 파이프라인을 구성하는 단계로서, 상기 보호 정보는 상기 보호된 메모리 구역에 할당된 보호 상태를 나타내는 보호 비트를 포함하고, 상기 명령 파이프라인은 스위치를 포함하며, 상기 스위치의 상태는 상기 보호 비트의 값에 의해 결정되는, 상기 보호 정보를 수신하도록 상기 명령 파이프라인을 구성하는 단계; 및
    상기 스위치의 상기 상태와 연관된 상기 식별된 보호된 메모리 구역에 대한 액세스를 제어하도록 상기 명령 파이프라인을 구성하는 단계를 포함하는, 메모리 및 프로세서를 포함하는 집적 회로의 전자적 표현을 생성하는 방법.
  28. 프로세서로서,
    상기 프로세서는,
    복수의 프로세싱 스테이지들로 이루어진 명령 파이프라인;
    메모리로부터 하나 이상의 명령들을 수신하도록 커플링된 제 1 입력을 갖는, 상기 복수의 프로세싱 스테이지들 중의 제 1 프로세싱 스테이지로서, 상기 하나 이상의 명령들의 각각은 명령 유형을 갖는, 상기 제 1 프로세싱 스테이지; 및
    상기 제 1 프로세싱 스테이지에 커플링된, 상기 복수의 프로세싱 스테이지들 중의 제 2 프로세싱 스테이지를 포함하고,
    상기 제 2 프로세싱 스테이지는,
    상기 메모리의 보호된 메모리 구역을 식별하는 어드레스 정보를 수신하는 것으로서, 상기 보호된 메모리 구역은 상기 제 1 프로세싱 스테이지로부터 수신된 명령과 연관되는, 상기 어드레스 정보를 수신하는 것;
    상기 메모리의 식별된 보호된 메모리 구역에 대한 보호 정보를 수신하는 것으로서, 상기 보호 정보는 상기 식별된 보호된 메모리 구역에 할당된 보호 상태를 나타내는 보호 비트를 포함하는, 상기 보호 정보를 수신하는 것; 및
    상기 식별된 보호된 메모리 구역에 대한 상기 보호 비트의 값과 연관된 상기 제 2 프로세싱 스테이지에 포함된 스위치의 상태를 제어함으로써 상기 식별된 보호된 메모리 구역에 대한 액세스를 제어하는 것
    을 하도록 구성되는, 프로세서.
KR1020157006545A 2012-08-15 2013-08-14 임베딩된 코드에 대한 보호 스킴 KR101697446B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261683645P 2012-08-15 2012-08-15
US61/683,645 2012-08-15
PCT/US2013/055010 WO2014028663A2 (en) 2012-08-15 2013-08-14 Protection scheme for embedded code

Publications (2)

Publication Number Publication Date
KR20150046119A KR20150046119A (ko) 2015-04-29
KR101697446B1 true KR101697446B1 (ko) 2017-01-17

Family

ID=50101603

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157006545A KR101697446B1 (ko) 2012-08-15 2013-08-14 임베딩된 코드에 대한 보호 스킴

Country Status (5)

Country Link
US (3) US9514064B2 (ko)
KR (1) KR101697446B1 (ko)
CN (1) CN104662548B (ko)
DE (1) DE112013004065B4 (ko)
WO (1) WO2014028663A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11030122B2 (en) * 2014-04-08 2021-06-08 Micron Technology, Inc. Apparatuses and methods for securing an access protection scheme
US20160048353A1 (en) * 2014-08-13 2016-02-18 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US10223289B2 (en) 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US10102391B2 (en) * 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9767320B2 (en) * 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US20190370439A1 (en) * 2018-05-29 2019-12-05 Sunasic Technologies, Inc. Secure system on chip for protecting software program from tampering, rehosting and piracy and method for operating the same
US10725687B1 (en) * 2019-03-19 2020-07-28 Western Digital Technologies, Inc. Settable replay protected memory block characteristics in a logic unit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060156033A1 (en) * 2002-11-27 2006-07-13 Koninklijke Philips Electronics N.V. Chip integrated protection means
US20120191933A1 (en) * 2010-09-21 2012-07-26 Texas Instruments Incorporated Device Security Features Supporting a Distributed Shared Memory System

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3520102B2 (ja) 1993-12-28 2004-04-19 株式会社東芝 マイクロコンピュータ
US6754784B1 (en) 2000-02-01 2004-06-22 Cirrus Logic, Inc. Methods and circuits for securing encached information
JP2006127246A (ja) * 2004-10-29 2006-05-18 Toshiba Corp コンテンツ選択装置、コンテンツ多重化装置、コンテンツ選択方法及びコンテンツ多重化方法
US20060168485A1 (en) * 2005-01-26 2006-07-27 Via Technologies, Inc Updating instruction fault status register
GB0604784D0 (en) 2006-03-09 2006-04-19 Ttp Communications Ltd Integrity protection
JP2007280347A (ja) * 2006-03-14 2007-10-25 Ricoh Co Ltd メモリカード及びメモリカード制御切替方法
WO2008032332A1 (en) 2006-09-13 2008-03-20 Shyam Prasad Kompadav Shetty Protection scheme for embedded software
US7895404B2 (en) * 2008-02-14 2011-02-22 Atmel Rousset S.A.S. Access rights on a memory map
JP5342649B2 (ja) * 2008-11-24 2013-11-13 サーティコム コーポレーション ハードウェアベースセキュリティのためのシステムおよび方法
US20120036308A1 (en) 2010-08-06 2012-02-09 Swanson Robert C Supporting a secure readable memory region for pre-boot and secure mode operations
WO2013101246A1 (en) * 2011-12-31 2013-07-04 Intel Corporation Processor that detects when system management mode attempts to reach program code outside of protected space
CN103714018B (zh) * 2013-12-11 2016-04-27 中国电子科技集团公司第三十研究所 芯片存储电路的安全访问控制方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060156033A1 (en) * 2002-11-27 2006-07-13 Koninklijke Philips Electronics N.V. Chip integrated protection means
US20120191933A1 (en) * 2010-09-21 2012-07-26 Texas Instruments Incorporated Device Security Features Supporting a Distributed Shared Memory System

Also Published As

Publication number Publication date
CN104662548B (zh) 2018-04-13
WO2014028663A3 (en) 2014-05-01
US20170046282A1 (en) 2017-02-16
US20150220458A1 (en) 2015-08-06
WO2014028663A2 (en) 2014-02-20
CN104662548A (zh) 2015-05-27
US20170329723A1 (en) 2017-11-16
US9514064B2 (en) 2016-12-06
DE112013004065T5 (de) 2015-04-23
KR20150046119A (ko) 2015-04-29
DE112013004065B4 (de) 2022-03-24
US9715463B2 (en) 2017-07-25
US10678710B2 (en) 2020-06-09

Similar Documents

Publication Publication Date Title
KR101697446B1 (ko) 임베딩된 코드에 대한 보호 스킴
TWI655643B (zh) 用於辨識對應目標記憶體位址之記憶體屬性單元之區域之區域辨識操作
US10445154B2 (en) Firmware-related event notification
US20180059184A1 (en) Jtag debug apparatus and jtag debug method
US8954804B2 (en) Secure boot circuit and method
US20190180041A1 (en) Reconfigurable system-on-chip security architecture
JP2016516228A (ja) システムオンチップ内のスレーブユニットへの、コントロール下でのアクセス方法および回路装置
TWI610197B (zh) 保護客戶抵抗旁路攻擊的技術
US20070180269A1 (en) I/O address translation blocking in a secure system during power-on-reset
JP5703378B2 (ja) アラインメント制御
US9753870B2 (en) Hardware monitor with context switching and selection based on a data memory access and for raising an interrupt when a memory access address is outside of an address range of the selected context
WO2008030727A2 (en) Access control of memory space in microprocessor systems
CN110276214B (zh) 一种基于从机访问保护的双核可信soc架构及方法
US9557787B2 (en) Data processor and data processing system
US20080005427A1 (en) Information processing apparatus having an access protection function and method of controlling access to the information processing apparatus
WO2007057832A2 (en) Vector shuffle unit
US9678899B2 (en) Method and apparatus for providing memory protection
US20230185904A1 (en) Method and system for freedom from interference (ffi)
US11836026B1 (en) System-on-chip with DVFM protection circuit
JP4574759B2 (ja) デジタルデータ処理回路用記憶手段への書込みアクセスを制御する方法及び装置
US9910794B2 (en) Processing data
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法
JP2009271597A (ja) プロセッサ
WO2023249881A1 (en) Pointer authentication
JP2017004337A (ja) マルチ・プログラマブルデバイス・システムとその制御方法

Legal Events

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

Payment date: 20191217

Year of fee payment: 4