KR20230042455A - 인-메모리 디바이스 액세스 제어를 위한 방법들 및 장치 - Google Patents

인-메모리 디바이스 액세스 제어를 위한 방법들 및 장치 Download PDF

Info

Publication number
KR20230042455A
KR20230042455A KR1020237001834A KR20237001834A KR20230042455A KR 20230042455 A KR20230042455 A KR 20230042455A KR 1020237001834 A KR1020237001834 A KR 1020237001834A KR 20237001834 A KR20237001834 A KR 20237001834A KR 20230042455 A KR20230042455 A KR 20230042455A
Authority
KR
South Korea
Prior art keywords
soc
memory
access
memory device
request message
Prior art date
Application number
KR1020237001834A
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 KR20230042455A publication Critical patent/KR20230042455A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

다양한 실시형태들은 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법들 및 시스템들을 포함할 수도 있다. 다양한 방법들은 메모리 디바이스의 메모리 액세스 제어를 구성하기 위한 구성 메시지를 SOC 로부터 수신하는 단계, 및 구성 메시지에 기초하여 메모리 액세스 제어를 구성하는 단계를 포함할 수도 있다. 다양한 실시형태들은 메모리 디바이스의 메모리 셀 어레이의 메모리 액세스 범위 및 메모리 베이스 어드레스에 대한 액세스를 요청하는 액세스 요청 메시지를 SOC 로부터 수신하는 것을 포함할 수도 있고, 액세스 요청 메시지는 판독/기입 동작을 포함한다. 다양한 실시형태들은 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 액세스 요청 메시지를 구성된 메모리 액세스 제어와 비교하는 것을 포함할 수도 있다. 다양한 실시형태들은 액세스 요청 메시지가 허용가능하다고 결정하는 것에 응답하여 판독/기입 동작을 수행하는 것을 더 포함할 수도 있다.

Description

인-메모리 디바이스 액세스 제어를 위한 방법들 및 장치
관련 출원들
본 출원은 2020 년 7 월 24 일 출원된 "Methods And Apparatus For In-Memory Device Access Control" 라는 명칭의 미국 특허 출원 제 16/937,907 호에 대한 우선권의 이익을 주장하며, 그 전체 내용들은 모든 목적들을 위해 본 명세서에 참조로 통합된다.
전형적으로, 시스템 메모리 액세스 제어는, 예컨대 메모리 관리 유닛 (MMU), 입력/출력 MMU, 또는 시스템 MMU 를 통해 마스터 측에 의해, 또는 예컨대 이중 데이터 레이트 (DDR) 서브시스템 앞의 메모리 보호 유닛 (MPU) 의 구현을 통해 슬레이브 측을 경유하여, 애플리케이션 프로세서 (AP) 또는 시스템-온-칩 (SOC) 내에서, 독점 기능으로서 구현되었다. SOC 에 의한 메모리의 보안 구성 및 이에 대한 액세스들을 구현하기 위해, SOC 는 메모리 액세스를 감독 및 보호하고, 메모리 액세스 제어 프로세스들이 시스템 성능을 방해하거나 저하시키지 않도록 보장하며, 프로세스간 손상, 누설, 피해, 및/또는 보안 공격들을 방지하기 위한 보호들을 제공하기 위한 하드웨어 및 소프트웨어를 포함할 수도 있다.
사물 인터넷 (Internet-of-Things; IoT), 웨어러블 디바이스, 및 다른 소형 폼 팩터 디바이스들과 같은 사용 경우들을 진전시키기 위해 새로운 SOC들이 개발되고 있다. 이러한 사용 경우들은 SOC들의 물리적 사이즈, 비용, 및 전력 소비를 감소시키기 위해 SOC 로부터 외부 디바이스들 및/또는 하드웨어로 하드웨어 및/또는 소프트웨어의 일부 부분들을 오프로딩하는 것을 유리하게 할 수도 있다. 그러나, 종래에 SOC 내에 로컬로 구현되었던 외부 디바이스들로의 하드웨어 및 소프트웨어 오프로딩은 보안 리스크들 및 성능 저하를 유발할 수도 있다.
다양한 양태들은 SOC 에 의한 메모리 디바이스의 판독/기입 트랜잭션 시퀀스의 일부로서 SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법들을 구현하는 방법들 및 메모리 디바이스들을 포함한다. 다양한 양태들은 메모리 디바이스의 메모리 액세스 제어를 구성하기 위한 구성 메시지를 SOC 로부터 수신하는 단계, 구성 메시지에 기초하여 메모리 액세스 제어를 구성하는 단계, 메모리 디바이스의 메모리 셀 어레이의 메모리 액세스 범위 및 메모리 베이스 어드레스에 대한 액세스를 요청하는 액세스 요청 메시지를 SOC 로부터 수신하는 단계로서, 액세스 요청 메시지는 판독/기입 동작을 포함하는, 상기 액세스 요청 메시지를 수신하는 단계, 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 액세스 요청 메시지를 구성된 메모리 액세스 제어와 비교하는 단계, 및 액세스 요청 메시지가 허용가능하다고 결정하는 것에 응답하여 판독/기입 동작을 수행하는 단계를 포함할 수도 있다.
일부 양태들에서, 구성 메시지는 구성 보안 도메인 ID 를 포함할 수도 있고, 액세스 요청 메시지는 요청된 보안 도메인 ID 를 포함할 수도 있다. 일부 양태들에서, 구성 메시지는 구성 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지일 수도 있고, 액세스 요청 메시지는 요청된 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지일 수도 있다. 일부 양태들에서, 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 액세스 요청 메시지를 구성된 메모리 액세스 제어와 비교하는 단계는, 구성 보안 도메인 ID 가 요청된 보안 도메인 ID 와 매칭하는지 여부를 결정하는 단계, 및 구성 보안 도메인 ID 가 요청된 보안 도메인 ID 와 매칭한다고 결정하는 것에 응답하여, 액세스 요청 메시지가 허용가능하다고 결정하는 단계, 및 액세스 요청 메시지가 허용가능함을 표시하는 통지를 SOC 로 송신하는 단계를 포함할 수도 있다. 그러한 양태들은, 구성 보안 도메인 ID 가 요청된 보안 도메인 ID 와 매칭하지 않는다고 결정하는 것에 응답하여, 액세스 요청 메시지가 허용가능하지 않다고 결정하는 단계, 메모리 베이스 에드레스, 메모리 액세스 범위, 및 요청된 보안 도메인 ID 를 포함하는 에러 정보를 저장하는 단계, 액세스 요청 메시지가 허용가능하지 않음을 표시하는 통지를 SOC 로 송신하는 단계, 및 SOC 로부터 에러 인터럽트 요청을 수신하는 것에 응답하여 SOC 로 에러 정보를 송신하는 단계를 더 포함할 수도 있다.
일부 양태들은 SOC 로부터 잠금해제 패스워드를 수신하는 단계, 수신된 잠금해제 패스워드가 메모리 디바이스에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭하는지 여부를 결정하는 단계, 및 수신된 잠금해제 패스워드가 허용가능한 패스워드들의 세트 내의 패스워드와 매칭한다고 결정하는 것에 응답하여 메모리 액세스 제어가 구성 메시지를 수신할 수 있도록 메모리 디바이스 게이트 로직을 잠금해제하는 단계를 더 포함할 수도 있다. 일부 양태들은 SOC 로부터, 메모리 디바이스의 레지스터 내에 잠금 비트를 설정하도록 구성된 잠금 커맨드를 수신하는 단계, 및 구성된 메모리 액세스 제어에 대한 구성 변경들을 방지하도록 잠금 비트를 설정하는 단계를 더 포함할 수도 있다.
추가 양태들은 위에 요약된 방법들 중 임의의 것의 동작들을 수행하도록 구성된 프로세서를 갖는 메모리 디바이스를 포함한다. 추가 양태들은 상기 요약된 방법들 중 임의의 것의 기능들을 수행하는 수단을 갖는 메모리 디바이스를 포함한다.
본 명세서에 통합되고 본 명세서의 부분을 구성하는 첨부 도면들은, 예시적인 실시형태들을 도시하고, 위에 주어진 일반적인 설명 및 하기에 주어진 상세한 설명과 함께, 다양한 실시형태들의 특징들을 설명하도록 제공한다.
도 1 은 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 예시의 컴퓨팅 시스템 (100) 을 도시하는 컴포넌트 블록 다이어그램이다.
도 2 는 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 게이트를 포함하는 예시의 컴퓨팅 시스템 (200) 을 도시하는 컴포넌트 블록 다이어그램이다.
도 3 은 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 예시의 컴퓨팅 시스템 (300) 을 도시하는 컴포넌트 블록 다이어그램이다.
도 4 는 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 방법 (400) 을 도시하는 프로세스 플로우 다이어그램이다.
도 5 는 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 데이터 및 구성 트랜잭션 경로들을 포함하는 예시의 컴포넌트 시스템 (500) 을 도시하는 컴포넌트 블록 다이어그램이다.
도 6 은 일부 실시형태들에 따른 보안 인-메모리 디바이스의 액세스 위반들을 모니터링하기 위한 방법 (600) 을 도시하는 프로세스 플로우 다이어그램이다.
도 7 은 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 시스템 메모리 맵 (700) 을 도시한다.
도 8 은 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 을 도시하는 프로세스 플로우 다이어그램이다.
도 9 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다.
도 10 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다.
도 11 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다.
도 12 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다.
도 13 은 일부 실시형태들에 따른 스마트 워치 (1300) 의 형태로 예시의 웨어러블 컴퓨팅 디바이스를 도시한다.
도 14 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공할 수도 있는 네트워크 컴퓨팅 디바이스 (1400) 의 예의 컴포넌트 블록 다이어그램이다.
도 15 는 일부 실시형태들을 구현하기에 적합한 스마트폰 (1500) 형태의 예시의 무선 디바이스의 컴포넌트 블록 다이어그램이다.
다양한 실시형태들이 첨부 도면들을 참조하여 상세하게 설명될 것이다. 가능하다면, 동일한 참조 번호들은 도면들 전반에 걸쳐 동일하거나 유사한 부분들을 지칭하는데 사용될 것이다. 특정 예들 및 실시형태들에 대해 이루어진 참조들은 예시를 위한 것이며 다양한 실시형태들 또는 청구항들의 범위를 제한하도록 의도되지 않는다.
다양한 실시형태들은 보안 리스크들 및 성능 저하를 도입하지 않으면서 SOC 사이즈, 비용, 및 전력 소비를 감소시키기 위해 하드웨어 및/또는 소프트웨어의 일부 부분들을 외부 디바이스들에 오프로딩하는 것을 가능하게 하기 위한 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 솔루션들을 제공한다.
용어 "무선 디바이스" 는 본 명세서에서 셀룰러 전화기들, 스마트폰들, 휴대용 컴퓨팅 디바이스들, 개인용 또는 모바일 멀티-미디어 플레이어들, 자율 차량들, 자율 및 반자율 차량들 내의 무선 통신 엘리먼트들, 다양한 모바일 플랫폼들에 부착되거나 이에 통합된 무선 디바이스들, 멀티미디어 인터넷-인에이블형 셀룰러 전화기들, 및 메모리, 무선 통신 컴포넌트들 및 프로그램가능 프로세서를 포함하는 유사한 전자 디바이스들 중 임의의 하나 또는 전부를 지칭하기 위해 사용된다.
용어 "시스템-온-칩(system-on-a-chip)" (SOC) 은, 단일 기판 상에 집적된 다중 리소스들 또는 프로세서들을 포함하는 단일 집적 회로 (IC) 칩을 지칭하도록 본 명세서에서 사용된다. 단일 SOC 는 디지털, 아날로그, 혼합된 신호, 및 무선 주파수 기능들을 위한 회로부를 포함할 수도 있다. 단일 SOC 는 또한 임의의 수의 범용 또는 특수화된 프로세서 (디지털 신호 프로세서, 모뎀 프로세서, 비디오 프로세서 등), 메모리 블록 (예컨대, ROM, RAM, 플래시 등), 및 리소스 (예컨대, 타이머, 전압 레귤레이터, 오실레이터 등) 를 포함할 수도 있다. SOC 는 또한 통합된 리소스 및 프로세서를 제어할 뿐만 아니라, 주변 디바이스를 제어하기 위한 소프트웨어를 포함할 수도 있다.
용어 "시스템-인-패키지(system in a package)"(SIP) 는 본 명세서에서 2 이상의 IC 칩들, 기판들, 또는 SoC들 상에 다중의 리소스들, 계산 유닛들, 코어들 및/또는 프로세서들을 포함하는 단일 모듈 또는 패키지를 지칭하도록 사용된다. 예를 들어, SIP 는 다중 IC 칩들 또는 반도체 다이들이 수직 구성으로 적층되는 단일 기판을 포함할 수도 있다. 유사하게, SIP 는 다중 IC들 또는 반도체 다이들이 통합 기판 내에 패키징되는 하나 이상의 멀티-칩 모듈 (MCM) 을 포함할 수도 있다. SIP 는 또한 고속 통신 회로부를 통해 함께 커플링되고 단일 마더보드 상에서 또는 단일 무선 디바이스에서와 같이 매우 근접하여 패키징된 다중의 독립적인 SOC들을 포함할 수도 있다. SOC들의 근접성은 고속 통신들과 메모리 및 리소스들의 공유를 용이하게 한다.
종래의 컴퓨팅 디바이스들에서, 메모리 액세스 제어 컴포넌트들 및 회로부는 그러한 컴퓨팅 디바이스들 내에 물리적으로 위치된다. 예를 들어, 외부 랜덤 액세스 메모리 (RAM) 에 액세스하기 위해, SOC 는 RAM 에 대한 액세스가 SOC 에 의해 제어되도록 SOC 의 물리적 레이아웃 내에서 메모리 액세스 제어를 위한 컴포넌트들 및 회로부를 포함할 것이다.
다양한 실시형태들은 SOC 내에서 대신 메모리 디바이스 내에서 보안 메모리 액세스 제어를 구현한다. 다양한 실시형태들은 메모리 디바이스 내에서 액세스 제어를 인에이블하는 것, 각각의 트랜잭션에서 개시자의 보안 도메인을 메모리에 전달하는 것, 구성, 정책 시행, 및 에러 표시를 포함하는 메모리 디바이스에서의 액세스 제어를 시행하는 것, 판독/기입 시퀀스의 일부로서 액세스 에러 표시를 체크하는 것, 및 시스템 초기화 시퀀스의 일부로서 메모리 디바이스에 대한 액세스 제어를 확립하는 것을 포함할 수도 있다.
다양한 실시형태들은 SOC 가 SOC 의 물리적 레이아웃 외부에 있지만 SOC 와 전기적으로 통신하는 메모리 디바이스 내에 위치된 메모리 액세스 제어를 구성할 수 있도록 하는 SOC 내의, 게이트들 및 퓨즈들과 같은 보안 메커니즘들을 포함한다. SOC 로부터 메모리 디바이스 또는 디바이스들로 메모리 액세스 제어를 오프로딩함으로써, SOC 물리적 사이즈, 비용, 및 전력 소비가 감소될 수도 있다. SOC 대신에 메모리 디바이스 내에서 메모리 액세스 제어를 구현하는 부가적인 이점들은, 광범위한 SOC 공급자들에 걸쳐 독점적인 액세스 제어 방식들에 대한 필요성을 제거하고 , 따라서 표준화 및 통신성을 증가시키는 것, 보안 메모리 시스템들에서 낮은 또는 중간 복잡성 마이크로프로세서 칩들의 사용을 허용하는 것, 다수의 마이크로프로세서들, 애플리케이션 프로세서들 (AP들), 또는 SOC들에 걸쳐 액세스 제어 펌웨어/소프트웨어를 재사용하는 것, 및 계산 및 액세스 제어와 같은 기능성을 포함할 수 있는 새롭고 더 복잡한 메모리 디바이스들 (예를 들어, 메모리 컴퓨팅 디바이스들에/근방에) 을 개발하는 것을 포함한다.
도 1 은 일부 실시형태들에 따른 SOC 내에서 대신 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 예시의 컴퓨팅 시스템 (100) 을 도시하는 컴포넌트 블록 다이어그램이다. 다양한 실시형태들은 프로세싱 디바이스 (예를 들어, AP, SOC, SIP 등) 와 전기적으로 통신하는 시스템 내에서 구현될 수도 있는 RAM (122) 과 같은 메모리 디바이스 내의 메모리 액세스 제어 하드웨어 블록을 구현하는 것을 포함한다. 다양한 실시형태들은 메모리 디바이스, 예컨대 동적 RAM (DRAM), 저장 메모리, 비휘발성 RAM (NVRAM), 또는 시스템 내의 SOC (140) 와 전기적으로 통신할 수 있는 임의의 다른 타입의 메모리 디바이스 또는 모듈의 형태로 구현될 수도 있다.
SOC 는 하나 이상의 보안 RAM 디바이스를 갖는 시스템 내에서 구현될 수도 있다. 따라서, 비보안 SOC 와 보안 RAM 사이의 보안 레벨을 확립하기 위해 부가적인 핸드셰이킹 프로토콜들 또는 프로세스들이 수행될 수도 있다. 예를 들어, 버스 (120)(예를 들어, 고속 버스, RAM 버스 등) 를 통해 SOC (140) 와 RAM (122) 사이에 신뢰를 확립하기 위해 부가적인 프로세스들이 수행될 수도 있다. SOC 는 신뢰된 프로그램 (102), 중앙 프로세싱 유닛 (CPU)(104), 정적 RAM (SRAM)(106), 판독-전용 메모리 (ROM)(108), 프론트 엔드 (112), 인터페이스 제어기 (114), 및 물리적 인터페이스 (PHY)(116) 를 포함하는 RAM 메모리 제어기 (110), 저장 메모리 (144) 에 액세스하기 위한 저장 메모리 제어기 (142), 및 퓨즈들 (146) 을 포함할 수도 있다. RAM (122) 은 PHY (124) 및 RAM 셀 어레이 (138) 를 포함할 수도 있다. RAM (122) 은 게이트 (126) 및 퓨즈들 (128) 을 포함하는 신뢰 하드웨어 블록 (125) 을 더 포함할 수도 있다. RAM (122) 은 액세스 제어 구성 블록 (132), 액세스 위반 신드롬 블록 (134), 및 정책 시행 블록 (136) 을 포함하는 액세스 제어 하드웨어 블록 (130) 을 더 포함할 수도 있다. SOC (140) 는 SOC (140) 가 액세스 제어 하드웨어 블록 (130) 을 구성할 수 있도록 하기 위한 핸드쉐이킹 프로토콜들을 통신하기 위해 PHY (116) 를 통해 RAM (122) 의 PHY (124) 에 전기적으로 커플링될 수도 있다. RAM (122) 의, 게이트 (126) 및 퓨즈들 (128) 을 포함하는 신뢰 하드웨어 블록 (125) 은 SOC (140) 와 RAM (122) 사이에 신뢰를 확립하도록 구현될 수도 있다. 신뢰가 확립되면, SOC (140) 는 그 후 다양한 실시형태들에 따라 메모리 보호를 제공하도록 액세스 제어 하드웨어 블록 (130) 을 구성할 수도 있다.
일부 실시형태들에서, RAM (122) 내의 액세스 제어 하드웨어 블록 (130) 은 SOC 내에서 물리적으로 종래의 액세스 제어와 기능성에서 유사할 수도 있고, 개시자, 보안 도메인, 물리적 어드레스, 및 액세스 타입을 체크하여 그것이 판독 또는 기입 액세스인지 여부를 결정하는 것, 및 그 후 인가된 트랜잭션들을 위해 RAM 셀 어레이 (138) 로의 메모리 액세스를 허용하는 것을 포함하는 프로세스들을 수행할 수도 있다. 게이트 (126) 는 액세스 제어 하드웨어 블록 (130) 이 액세스 제어 구성 블록 (132) 을 통해 초기화될 수도 있기 전에 잠금해제될 수도 있다. 잠금해제는 CPU (104) 상에서 실행되는 신뢰된 프로그램 (102) 이 RAM (122) 에 잠금해제 패스워드를 전송할 때 발생할 수도 있으며, 여기서 패스워드는 퓨즈들 (128) 에 상주하는 값에 대해 체크된다. 패스워드는 비밀일 수도 있으며 RAM 퓨즈들 (128) 에 미리 프로비져닝될 수도 있다. 패스워드 잠금해제가 성공적이면, 게이트 (126) 는 액세스 제어 구성 블록 (132) 에 대한 판독/기입 액세스를 개방할 수도 있고, 신뢰된 프로그램 (102) 은 액세스 제어 구성 블록 (132) 을 그것이 종래의 방법들에 따라 SOC 내에 포함된 것과 동일하게 초기화할 수도 있다. 초기화를 완료한 후, 게이트 (126) 는 잠금 상태로 리턴될 수도 있다. 액세스 제어 구성 블록 (132) 에 대한 부가적인 변경들은 항상 이러한 잠금해제/변경/잠금 절차를 따를 수도 있다. 액세스 제어 하드웨어 블록 (130) 이 초기화되면, 정책 시행 블록 (136) 은 SOC (140) 와 RAM 셀 어레이 (138) 사이의 미션 모드 트래픽을 모니터링하고 조절할 수도 있다.
도 2 는 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위해 구성된 신뢰 하드웨어 블록 (125) 에서 로직 (204) 에 커플링된 게이트 (126) 의 상세들을 나타내는 예시의 컴퓨팅 시스템 (200) 을 도시하는 컴포넌트 블록 다이어그램이다.
도 1 및 도 2 를 참조하면, 게이트 (126) 는 하나 이상의 패스 게이트 (202) 및 제어 로직 (204) 을 포함할 수도 있다. 패스 게이트들 (202) 은 RAM 셀 어레이 (138) 에 대한 액세스를 제공할 수도 있는 액세스 제어 하드웨어 블록 (130) 에 PHY (124) 를 연결/연결해제하는 하나 이상의 인-라인 스위치를 포함할 수도 있다. 위에 언급된 바와 같이, PHY (124) 는 버스 (120) 와 연관된 연결들을 제공할 수도 있다. 연결들 (120d) 은 데이터 신호들에 대응하고, 연결들 (120c) 은 어드레스/제어 신호들에 대응한다. PHY (124) 는 연결들 (120d) 과 연관된 데이터 신호들을 연결들 (214d) 을 통해 신뢰 하드웨어 블록 (125) 의 제어 로직 (204) 및 패스 게이트들 (202) 에 제공할 수도 있다. PHY (124) 는 연결들 (120c) 과 연관된 어드레스/제어 신호들을 연결들 (214c) 을 통해 신뢰 하드웨어 블록 (125) 의 제어 로직 (204) 및 패스 게이트들 (202) 에 제공할 수도 있다.
도 2 에 추가로 도시된 바와 같이, 각각의 패스 게이트 (202) 는 제1 콘택 및 제 2 콘택을 포함할 수도 있다. 제 1 콘택은 대응하는 데이터 연결(들)(214d) 및 어드레스/제어 연결들 (214c) 에 전기적으로 커플링될 수도 있고 스위치 또는 게이트의 다른 측 상의 제 2 콘택은 대응하는 게이팅된 데이터 연결(들)(216d) 및 게이팅된 어드레스/제어 연결들 (216c) 에 전기적으로 커플링될 수도 있다.  제어 로직 (204) 은 개별 스위치들을 개방 및 폐쇄하기 위해 게이트 제어 신호들이 제공될 수도 있는 연결(들)(218) 을 통해 각각의 패스 게이트 (202) 에 전기적으로 커플링될 수도 있다. 이와 관련하여, 신뢰 하드웨어 블록 (125) 의 "잠금 상태" 는 게이팅된 연결들 (216d 및 216c) 로의 액세스를 방지하기 위해 패스 게이트들 (202) 이 개방되는 동작 상태에 대응할 수도 있다.
패스 게이트 (202) 기능의 대안의 실시형태들은 게이트 제어 (218) 에 의해 제어되는 출력 인에이블을 갖는 양방향 트랜시버, 게이트 제어 (218) 의 제어 하에서 전력 레일을 통해 파워 온/오프될 수도 있는 양방향 트랜시버, 또는 게이트 제어 (218) 의 제어 하에서 출력 인에이블 또는 전력 레일을 가질 수도 있는 양방향 래치/레지스터를 포함할 수도 있다. 채용된 회로들은 양방향 시그널링을 위해 의도적으로 설계될 수도 있거나, 또는 기입 및 판독 데이터 트래픽에 대응하는 각각의 (예를 들어, 순방향 및 역방향) 방향을 핸들링하기 위한 2개의 별도의 회로로 구성될 수도 있다.
일부 실시형태들에서, 메모리 디바이스 (122) 가 파워 다운될 때, 제어 로직 (204) 은 SOC (140) 의 전력 관리자 제어기로부터 대응하는 커맨드를 수신할 수도 있고, 이에 응답하여, "잠금" 게이트 제어 신호를 연결(들)(218) 을 통해 패스 게이트들 (202) 에 전송할 수도 있다. 게이트 제어 신호들은 개별 신호들 (예를 들어, 하나의 패스 게이트에 대한 하나의 게이트 제어 와이어) 또는 단일 신호 (예를 들어, 모든 패스 게이트들에 대한 하나의 게이트 제어) 를 포함할 수도 있다. 일부 실시형태들에서, 패스 게이트들 (202) 은 액세스 제어 하드웨어 블록 (130) 을 RAM 셀 어레이 (138) 에 파워-업 또는 파워-다운하는 파워 스위치로 대체될 수도 있다. "잠금" 게이트 제어 신호에 응답하여, 패스 게이트들 (202) 은 게이팅된 연결들 (216d 및 216c) 로의 액세스를 방지하기 위해 개방될 수도 있다.  이러한 방식으로, 메모리 디바이스가 부팅될 때, 게이트 메커니즘 (126) 은 초기에 판독/기입 동작들이 RAM 메모리 셀 어레이 (138) 에 액세스하는 것을 방지하기 위해 개방 포지션에 있는 패스 게이트들 (202) 로 "잠금 상태" 에 있다.
도 1 을 참조하여 설명된 바와 같이, 시스템 (200) 이 부팅되고 신뢰된 프로그램 (102) 이 CPU (104) 상에서 실행을 시작할 때, SOC (140) 상의 퓨즈(들)(146) 에 저장된 잠금해제 패스워드가 페치되고 제어기 (110) 에 제공될 수도 있으며, 이는 PHY (116) 를 통해 PHY (124) 에 값을 송신한다. 신뢰 하드웨어 블록 (125) 에서의 제어 로직 (204) 은 예를 들어, 신뢰 하드웨어 블록 (125) 에서의 퓨즈 데이터 버스 (220) 및 퓨즈 제어 버스 (222) 를 통해 퓨즈(들)(128) 에 프로비저닝된 패스 게이트 값을 페치할 수도 있다. 도 2 에 도시된 바와 같이, 신뢰 하드웨어 블록 (125) 및/또는 퓨즈(들)(128) 은 제어 로직 (204) 과의 통신을 용이하게 하기 위한 제어기 (212) 를 포함할 수도 있다. 제어 로직 (204) 은 패스 게이트 값을 SOC (140) 로부터 수신된 잠금해제 패스워드와 비교할 수도 있다. 잠금해제 패스워드가 패스 게이트 값과 매칭하는 경우, 제어 로직 (204) 은 연결(들)(218) 을 통해 패스 게이트 (202) 에 "잠금해제" 게이트 제어 신호를 전송할 수도 있다. "잠금해제" 게이트 제어 신호에 응답하여, 패스 게이트들 (202) 은 폐쇄되어, 데이터 연결(들)(214d) 및 어드레스/제어 연결들 (214c) 을 각각, 게이팅된 연결(들)(216d) 및 게이팅된 어드레스/제어 연결들 (216c) 에 연결할 수도 있다. 이러한 "잠금해제 상태" 에서, 게이트 메커니즘 (126) 은 데이터 버스 (224d) 및 제어 버스 (224c) 를 통해 액세스 제어 하드웨어 블록 (130) 에 대한 제한되지 않은 액세스를 제공할 수도 있다.
위에 언급된 바와 같이, SOC (140) 와 게이팅된 RAM (122) 사이의 패스워드 교환은 다양한 방식들로 구현될 수도 있다. 일부 실시형태들에서, 단순한 암호화되지 않은 패스워드 교환이 퓨즈(들)(146, 128) 을 통해 구현될 수도 있다. 일부 실시형태들에서, 보안 패스워드 교환은 더 정교한 또는 부가적인 핸드쉐이킹 프로토콜들 또는 프로세스들을 통해 보안의 레벨을 개선하기 위해 임의의 바람직한 암호화 알고리즘(들)을 채용할 수도 있다. 도 2 에 도시된 바와 같이, 보안 패스워드 교환이 암호화를 채용할 때, 신뢰 하드웨어 블록 (125) 에서의 제어 로직 (204) 은 디코드 함수 (블록 (206)), 해시 함수 (블록 (208)), 및 체크 함수 (블록 (210)) 를 지원하기 위한 로직 모듈들을 포함할 수도 있다.
신뢰 하드웨어 블록 (125) 에서의 디코드 로직 (206) 은 버스 (214c) 를 통해 제어 및 어드레스 정보를, 그리고 버스 (214d) 를 통해 데이터를 수신할 수도 있다.  일부 실시형태들에서, 미리결정된 및/또는 표준화된 프로토콜은 제어 로직 (204) 을 제어하고, 키들 및 패스워드들과 같은 정보를 교환하거나, 퓨즈들 (128) 과 같은 엘리먼트들의 초기화 및 프로그래밍을 위해 구현될 수도 있다. 예를 들어, 디코드 로직 (206) 에 의해 디코딩될 수도 있고 그 후 특정 커맨드 기능을 개시할 수 있는 특정 커맨드가 제어 및 어드레스 버스 (214d) 상에 있을 수도 있다. 일부 실시형태들은 리셋 게이트 로직, 다중의 위치들에서의 프로그램 퓨즈 데이터, 프로그램 사설 키, 프로그램 패스워드, 프로그램 자체-파괴 실패 시도들, 인에이블 탬퍼 메커니즘, 입력 키 모듈러스 p, 입력 키 베이스 g, 취출 해시, 잠금해제 암호화되지 않은 패스워드, 잠금해제 암호화된 패스워드 등과 같은, 각각의 타입의 기능과 연관된 고유 커맨드 및 데이터를 포함할 수도 있다.
신뢰 하드웨어 블록 (125) 에서의 디코드 로직 (206) 은 들어오는 제어, 어드레스 및 데이터에 응답하여 적절한 동작들을 파싱 및 트리거하는 것을 담당할 수도 있다. 도 2 에 도시된 바와 같이, 제어 및 어드레스 (214c) 및 데이터 (214d) 연결들은 패스 게이트들 (202) 에 도달하고, 잠금해제되는 경우, RAM 셀 어레이 판독, RAM 셀 어레이 기입, RAM 셀 어레이 페이지 선택, RAM 셀 어레이 리페어, RAM 디바이스 구성, PHY 어드밴스드 구성, 및 변조 방지 기능들과 관련되지 않은 임의의 다른 기능성과 같은 유사한 미리결정된 및/또는 표준화된 미션-모드 동작들을 수행할 수도 있는 액세스 제어 하드웨어 블록 (130) 으로 전파할 수도 있다.
해시 함수 (208) 는 비밀 키 교환 절차에 대한 모듈로 산술 연산들을 수행할 수도 있고 룩업 테이블들 및/또는 모듈로 가산 순차 및 병렬 계산 로직을 포함할 수도 있다. 체크 함수 (210) 는 SOC (140) 로부터 전송된 패스워드를 신뢰 하드웨어 블록 (125) 에서의 로컬 퓨즈들 (128) 내로 이전에 프로그램된 로컬 카피에 대해 비교하기 위해 신뢰 하드웨어 블록 (125) 의 제어 로직 (204) 에 포함될 수도 있다. 복호화 로직 (미도시) 은 외부 버스 (120) 를 통해 이동할 때 스누퍼(snooper)가 패스워드를 뷰잉하는 것을 방지하기 위해 SOC (140) 가 암호화를 사용하여 패스워드를 전송할 수 있도록 하게 위해 신뢰 하드웨어 블록 (125) 의 체크 함수 (210) 내에 포함될 수도 있다. SOC (140) 가 패스워드를 암호화하면, 복호화 로직은 먼저 Diffie-Hellman 방법과 같은 보안 교환 프로세스 동안 도출된 공유된 비밀 키를 사용하여 패스워드를 복호화할 수도 있다.
일부 실시형태들에서, 다중의 성공적이지 않은 잠금해제 이벤트들이 발생한 경우에, 신뢰 하드웨어 블록(125) 에서의 퓨즈들 (128) 은 제어 로직 (204) 을 영구적으로 디스에이블하도록 활성화될 수도 있으며, 이에 의해 메모리에 대한 향후 액세스를 방지한다.
도 3 은 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 예시의 컴퓨팅 시스템 (300) 을 도시하는 컴포넌트 블록 다이어그램이다. 도 1 내지 도 3 을 참조하면, SOC (140) 는 CPU (104) 에 의해 구현되는 신뢰된 프로그램 (102) 에 부가하여 다양한 신뢰된 프로그램을 구현하는 프로세싱 유닛들을 포함할 수도 있다. 예를 들어, SOC (140) 는 네트워크 프로세싱 유닛 (NPU)(308) 이 버스 (118) 에 전기적으로 연결되는 신뢰된 프로그램 (306) 을 구현하는 NPU (308) 를 포함할 수도 있다.
RAM (122) 과 전기적으로 통신하는 SOC (140) 는 SOC 가 RAM 셀 어레이 (138) 의 새로운 액세스 시도를 수행할 때마다 액세스 제어 하드웨어 블록 (130) 을 구성할 수도 있다. 액세스 제어 하드웨어 블록 (130) 을 구성하기 전에, SOC (140) 및 RAM (122) 은 미션 모드 메모리 액세스 필터링을 구성하기 위해 초기화될 수도 있다. 예를 들어, 키 교환 및 보안 채널 확립은 SOC (140) 가 액세스 제어 하드웨어 블록 (130) 을 구성하고 초기화하기 전에 수행될 수 있다. SOC (140) 의 보안 엔티티 또는 컴포넌트는 게이트 (126) 를 개방하기 위한 키 또는 패스워드를 포함할 수도 있다. 상술한 바와 같이, SOC (140) 는 키를 RAM (122) 에 송신하여 게이트 (126) 를 개방하여 그 후, SOC (140) 가 RAM 셀 어레이 (138) 의 적절한 액세스를 초기화하기 위해 액세스 제어 하드웨어 블록 (130) 을 구성하게 할 수도 있다. 액세스 제어 하드웨어 블록 (130) 의 구성 후에, SOC (140) 는 액세스 제어 하드웨어 블록 (130) 에 대한 추가 수정을 방지하기 위해 RAM (122) 내에 잠금 비트를 설정할 수도 있다. SOC (140) 의 보안 엔티티는 또한 확립된 보안 채널을 통한 메모리 정보의 교환 후에 후속 향후 메모리 액세스 시도들에 대해 구성을 다시 변경하기 위해 액세스 제어 하드웨어 블록 (130) 에 커맨드들을 발행할 수도 있다. 즉, SOC (140) 는 SOC (140) 의 보안 엔티티에 저장된 키 또는 패스워드/패스코드를 사용하여 게이트 (126) 를 잠금해제하고, 적절한 메모리 액세스 정보로 액세스 제어 하드웨어 블록 (130) 을 구성하고, RAM 셀 어레이 (138) 에 대한 액세스가 진행 중인 동안 보안 채널의 수정을 방지하도록 구성을 잠금하고, 보안 채널이 구성되고 잠금된 후에 액세스 제어 하드웨어 블록 (130) 이 RAM 셀 어레이 (138) 에 액세스하기 시작하는 것을 가능하게 할 수도 있다.
RAM (122) 은 SOC (140) 에 의한 사이드 제어를 위한 레지스터 인터페이스들을 제공할 수도 있다. RAM (122) 은 구성의 추가 수정을 방지하기 위해 RAM 셀 어레이 (138) 내의 각각의 액세스 영역에 대한 잠금 비트를 포함할 수도 있다. 잠금 비트들은 액세스 제어 하드웨어 블록 (130) 의 가장 최근의 구성에 잠금하기 위해 SOC-투-RAM 초기화 후에 설정, 인에이블, 또는 다르게는 구성될 수도 있다. RAM (122) 은 RAM 셀 어레이 (138) 의 각각의 액세스 영역에 대한 인에이블 비트를 포함할 수도 있어서, 인에이블 비트 설정이 구성된 액세스 제어 하드웨어 블록 (130) 의 시행 (예를 들어, 정책 시행 블록 (136) 을 통해) 을 허용한다.
SOC (140) 는 RAM (122) 에 전송된 커맨드 내의 액세스 정보를 인코딩함으로써 RAM 셀 어레이 (138) 의 특정 부분들 또는 도메인들에 액세스하도록 액세스 제어 하드웨어 블록 (130) 을 구성할 수도 있다. 예를 들어, SOC (140) 는 데이터 및 액세스/제어 채널들 (예를 들어, 연결들 (120d, 120c, 214d, 214c, 216d, 216c)) 을 통해 RAM (122) 에 송신된 커맨드 내의 메모리 베이스 어드레스 (예를 들어, addr 32), 메모리 데이터 사이즈 및/또는 범위 (예를 들어, 데이터 34), 및 액세스 도메인 ID (예를 들어, ID 36) 에 관한 정보를 인코딩할 수도 있다. 각각의 액세스 영역에 대한 베이스 어드레스 및 사이즈 정보는 RAM 셀 어레이 (138) 의 메모리 셀 로우들의 입도(granularity) 와 같은 메모리 디바이스 액세싱 방식에 따라 표현될 수도 있다. 일부 예들에서, 액세스 도메인 ID/보안 도메인 ID 는 데이터 및 액세스/제어 채널들과 별도인 버스를 통해 RAM (122) 으로 송신될 수도 있다. 예를 들어, RAM 메모리 제어기 (110) 는 보안 도메인 ID 를 PHY (124) 에 그리고 후속하여 연결들 (302i 및 304i) 을 통해 액세스 제어 하드웨어 블록 (130) 에 송신할 수도 있다.
인코딩된 커맨드는 각각의 액세스 영역 또는 도메인에 대한 정확한 구성에 액세스하기 위한 정보를 포함할 수도 있다. 인코딩된 커맨드는 보안 ID 또는 도메인 ID 를 포함할 수도 있고, 정책 시행 블록 (136) 은 SOC (140) 가 어느 도메인들에 액세스하려고 시도하고 있는지를 검증하기 위해 보안 ID 를 체크할 수도 있다. 인코딩된 커맨드는 또한 RAM 셀 어레이 (138) 의 각각의 지원된 보안 도메인에 대한 판독 및 기입 액세스 허가들을 특정하기 위한 정보를 포함할 수도 있다. 즉, 인코딩된 커맨드는 보안 도메인으로부터 메모리 정보를 판독할지, 보안 도메인에 메모리 정보를 기입할지, 또는 보안 도메인으로부터 판독하고 보안 도메인에 기록할지 여부를 특정할 수도 있다. 예를 들어, RAM (122) 은 AP, 그래픽스, 디지털 신호 프로세싱 (DSP), 및 보안 프로세서와 같은 4개의 SOC (140) 측 보안 도메인에 매핑될 수도 있는 4개의 보안 도메인을 지원할 수도 있다. 각각의 액세스 제어 영역에 대해, 각각의 보안 도메인에 대한 판독 허가를 표시하기 위한 4 비트, 및 각각의 보안 도메인에 대한 기입 허가를 표시하기 위한 4 비트가 있을 수도 있다. SOC (140) 는 보안 도메인 ID 가 SOC (140) 보안 도메인에 어떻게 매핑되는지를 구성할 수도 있다. 예를 들어, SOC (140) 는 보안 ID 값 0 을 AP 하이-레벨 오퍼레이팅 시스템 (high-level operating system; HLOS) 에, 1 을 AP 보안 엔티티에, 2 를 그래픽스에, 그리고 3 을 보안 프로세서에 정의하거나 그렇지 않으면 속성화할 수도 있다. 판독/기입 액세스 허가들은 RAM 셀 어레이 (138) 내의 각각의 특정 보안 도메인에 대한 인코딩된 커맨드에서 특정될 수 있다.
일부 실시형태들에서, 액세스 제어 하드웨어 블록 (130) 의 액세스 위반 신드롬 블록 (134) 은 액세스 제어 하드웨어 블록 (130) 이 구성된 후에 액세스 제어 구성 이전 및 그 동안 그리고 확립된 보안 채널 및 이에 걸친 메모리 교환 동안 발생하는 임의의 에러들을 모니터링하고 보고할 수도 있다. RAM (122) 은 액세스 위반 신드롬 블록 (134) 에 의해 에러가 관찰되었을 때 SOC (140) 로 인터럽트 신호를 송신할 수도 있는 에러 인터럽트 핀을 포함할 수도 있다. 예를 들어, 액세스 위반 신드롬 블록은 액세스 제어 하드웨어 블록 (130) 이 적절하게 구성된 후에 메모리 액세스 (예를 들어, RAM 셀 어레이 (138) 내의 보안 도메인들로부터 판독 및/또는 보안 도메인들에 기입) 동안 하나 이상의 에러가 발생했음을 관찰할 수도 있다. 에러(들)을 관찰하고 기록하는 것에 응답하여, 액세스 제어는 그 후 연결들 (304e 및 302e) 을 통해 PHY (124) 로부터 SOC (140) 의 RAM 메모리 제어기 (110) 에 에러 인터럽트 신호를 전송할 수도 있다. 에러 표시/인터럽트 신호/핀 (예를 들어, 연결 (302e)) 은 판독 또는 기입 커맨드가 실행된 후 적어도 하나의 클록 사이클에서 SOC (140) 에 의해 감지될 수도 있다. 판독 에러들에 대해, 에러 표시는 판독 응답의 일부일 수도 있어서, 판독 응답은 데이터 버스 (예를 들어, 연결 (120d)) 상의 정의되지 않은 값을 포함할 수도 있다. 기입 에러들에 대해, 부가적인 클록 사이클이 에러 인터럽트 핀을 감지하기 위해 요구될 수도 있어서, 액세스 위반 신드롬 블록 (134) 은 기입 커맨드가 부정확하게 실행되었는지 또는 적절히 실행될 수 없는지를 분석하고, 그 후 기입 커맨드가 하나 이상의 에러를 초래했음을 표시하는 SOC (140) 에 송신하기 위한 표시를 생성할 수도 있다. 액세스 위반 신드롬 블록 (134) 에 의해 생성된 에러 표시는 에러의 타입 (예를 들어, 판독/기록 에러), RAM 셀 어레이 (138) 에 대응하는 에러 어드레스, 및 에러가 어느 보안 도메인 ID 에 대응하는지를 포함할 수도 있다. 예를 들어, 에러 인터럽트 신호에서 보고된 보안 도메인 ID 는 에러(들)가 발생했을 때 SOC (140) 의 보안 도메인들 (예를 들어, AP HLOS, AP 보안 엔티티, 그래픽스, 보안 프로세서 등) 중 어느 것이 RAM 셀 어레이 (138) 에 액세스하려고 시도했는지를 식별할 수도 있다.
에러 표시는 단일 판독 또는 기입 동작의 결과로서 발생하는 하나 이상의 에러에 대한 이러한 정보를 포함할 수도 있다. 예를 들어, 액세스 위반 신드롬 블록 (134) 은 발생된 에러들 중 적어도 하나를 감지하기 위해 SOC (140) 가 클로킹되기 전에 발생했을 수도 있는 일련의 에러들을 저장할 수도 있다. 따라서, 액세스 위반 신드롬 블록 (134) 을 통해 에러들의 버퍼를 생성하는 것은 SOC (140) 가 가장 최근에 관찰된 에러 이전에 하나 이상의 클록 사이클에서 발생했을 수도 있는 임의의 에러들을 누락하지 않으면서 하나의 클록 사이클에서 에러들의 포괄적인 보고를 수신하게 할 수도 있다. 일부 실시형태들에서, SOC (140) 에 보고된 에러 표시는 메모리 액세스 커맨드가 액세스 제어 구성 블록 (132), 정책 시행 블록 (136), 및 RAM 셀 어레이 (138) 에서의 데이터 및/또는 제어 연결들에 따라 거부되었을 수 있는 곳의 표시를 포함할 수도 있다. 일부 예들에서, 액세스 위반 신드롬 블록 (134) 은 하나 이상의 메모리 액세스 커맨드의 결과로서 발생한 에러들의 수를 카운트하는 카운터를 포함할 수도 있다.
도 4 는 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 방법 (400) 을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 4 를 참조하면, 방법 (400) 의 동작들은 외부 메모리 디바이스 (예를 들어, RAM (122)) 를 구성하는 SOC (예를 들어, SOC (140)) 의 프로세서 (예를 들어, CPU (104), NPU (308)) 에 의해 수행될 수도 있다.
블록들 (402-418) 에서 수행된 동작들의 순서는 단지 예시적인 것이며, 블록들 (402-418) 의 동작들은 임의의 순서로 그리고 일부 실시형태들에서 부분적으로 동시에 수행될 수도 있다. 일부 실시형태들에서, 방법 (400) 은 외부 메모리 디바이스와 독립적으로, 그러나 이와 함께 디바이스의 프로세서에 의해 수행될 수도 있다. 예를 들어, 방법 (400) 은 보안 메모리 채널들을 확립하고 외부 메모리 디바이스의 메모리에 액세스하기 위한 커맨드들을 발행하고 다르게는 설명된 바와 같은 액션들을 취하고 데이터를 저장하도록 구성되는 SOC 내의 전용 하드웨어에서 또는 SOC 의 프로세서 내에서 실행되는 소프트웨어 모듈로서 구현될 수도 있다.
블록 (402) 에서, 메모리 디바이스에 대한 액세스가 디스에이블될 수도 있다. 디폴트에서, 인-메모리 보안 액세스 제어를 갖도록 설계된 메모리 디바이스는 디스에이블된 상태에 있을 수도 있으며, 여기서 메모리 디바이스는 SOC 와 같은 외부 프로세싱 디바이스에 의해 구성가능할 수도 있다. 예를 들어, 도 1 내지 도 3 을 참조하여 설명된 바와 같이, 메모리 디바이스는 RAM (122) 일 수도 있으며, 이는 임의의 프로세싱 디바이스 (예를 들어, SOC (140)) 가 RAM (122) 과 전기적으로 커플링/페어링될 시 메모리 (예를 들어, RAM 셀 어레이 (138)) 에 대한 액세스를 갖지 않게 되도록 개방 상태에서의 패스 게이트들 (202) 을 가질 수도 있다. 메모리 디바이스의 초기 조건은 또한 사설 키가 비어있는/프로그램되지 않은 디폴트 상태 또는 0 의 디폴트 값을 가질 수도 있도록 초기화 또는 다르게는 프로그램되지 않은 키들/패스코드들/패스워드들에 대한 디폴트 값들을 가질 수도 있다. 예를 들어, RAM (122) 의 퓨즈들 (128) 은 0 의 디폴트 사설 키 값을 가질 수도 있다.
블록 (404) 에서, SOC 및 메모리 디바이스가 페어링될 수도 있다. 팩토리 초기화는 SOC 및 외부 메모리 디바이스를 포함하는 시스템의 필드 구현 전에 발생할 수도 있어서, SOC 및 메모리 디바이스는 SOC 와 메모리 디바이스 사이에 보안 액세스 채널들을 확립하는 것을 허용하기 위해 특정 키들/패스워드들/패스워드들로 프로그램되거나 발행된다. 초기화는 SOC 를 메모리 디바이스로부터 잠금하기 전에 사설 키(들), 패스워드(들), 및 최대 액세스 시도들의 수를 버닝하는 것을 포함할 수도 있다. 예를 들어, SOC 에 의한 다수의 실패한 액세스 시도들 후에, 메모리 디바이스는 (예를 들어, 게이트들의 상태 변경을 방지/잠금해제 상태로 게이트들을 유지함으로써) 액세스 제어를 디스에이블하여, 메모리 디바이스와 전기 통신하는 비인가된 SOC 에 의한 잠재적 해킹 공격들을 방지할 수도 있다.
블록 (406) 에서, 페어 외부 메모리 디바이스 및 SOC 를 포함하는 시스템이 부팅될 수도 있다. 시스템 부트업은 SOC 와 메모리 디바이스를 물리적으로 (즉, 하드-와이어링된 시스템에서) 페어링하고 그 후 시스템을 전력 온하는 것을 포함할 수도 있다. 예를 들어, SOC (140) 는 SOC (140) 및 RAM (122) 이 단일 시스템 하우징 내에 물리적으로 위치되고 커플링되도록 RAM (122) 에 하드와이어링될 수도 있다.
블록 (408) 에서, SOC 및 메모리 디바이스가 파워 온 되고 부팅되면, SOC 는 도 2 를 참조하여 설명된 바와 같이 메모리 디바이스의 신뢰 하드웨어 블록 (125) 과 키/패스워드 정보를 교환할 수도 있다. 디폴트 잠금 상태에 있는 메모리 디바이스, 신뢰 하드웨어 블록 (125) 은 SOC 로부터 키/패스워드 정보를 수신할 수도 있고, 로직 (204) 은 수신된 키/패스워드 정보를 퓨즈 메모리 (128) 에 저장된 정보와 비교하여 SOC 가 메모리 디바이스의 액세스 제어 하드웨어 블록 (130) 의 액세스 제어 정책을 구성하기 위한 권한을 갖는지 여부를 검증할 수도 있다. 로직 (204) 이 SOC 권한을 검증하면, 신뢰 하드웨어 블록 (125) 은 SOC 에 대한 게이트 (126) 를 잠금해제하여 액세스 제어 하드웨어 블록 (130) 의 액세스 제어를 구성할 수도 있다. SOC 는 메모리 디바이스가 액세스가 승인되어야 하는지를 결정할 수 있도록 하기 위해 메모리 디바이스에 송신하기 위한 공개 키들의 세트로부터 랜덤으로 선택할 수도 있다. 공개 키들의 세트는 블록 (404) 에서 설명된 바와 같이 SOC 에 의해 구성되고 저장될 수도 있다.
결정 블록 (410) 에서, 신뢰 하드웨어 블록 (125) 의 로직 (204) 은 SOC 에 의해 제공된 키 정보가 유효한지 여부를 결정할 수도 있다. 일부 실시형태들에서, 신뢰 하드웨어 블록 (125) 의 로직 (204) 은 블록 (404) 에서 설명된 프로세스들에 따라 메모리 디바이스에서 초기화된 개인 키 정보에 대해 비교함으로써 결정 블록 (410) 에서 키가 유효한지 여부를 결정할 수도 있다. 도 2 를 참조하여 설명된 바와 같이, 신뢰 하드웨어 블록 (125) 의 제어 로직 (204) 에 의해 결정된 바와 같이, SOC 에 의해 송신된 키가 무효한 경우 잠금 상태 (즉, 게이트 개방) 로 유지될 것이거나, 또는 키가 유효한 경우 메모리 디바이스는 잠금해제 상태 (즉, 게이트 폐쇄) 로 변경될 것이다.
SOC 에 의해 제공된 키가 유효하지 않다고 결정하는 것에 응답하여 (즉, 결정 블록(410) = "아니오"), SOC 는 소정 수의 액세스 시도들이 발생할 수도 있고 메모리 디바이스가 잠금 상태로 유지될 때까지 블록 (408) 에서 설명된 바와 같이 다른 공개 키들을 선택함으로써 추가 액세스 시도들을 시도할 수도 있다.
SOC 에 의해 제공된 키가 유효했다고 결정하는 것 (즉, 결정 블록 (410) = "예") 에 응답하여, 신뢰 하드웨어 블록 (125) 은 블록 (412) 에서 SOC 와의 보안 연결을 확립하고 SOC 가 메모리 (예를 들어, RAM 셀 어레이 (138)) 에 판독/기입 커맨드들을 발행하기 전에 구성 목적들을 위해 액세스 제어 하드웨어 블록 (130) 에 액세스할 수 있도록 하기 위해 잠금해제할 수도 있다. 이 프로세스는 도 2 를 참조하여 설명된 바와 같이 SOC 및 페어링된 메모리 디바이스에 의해 수행될 수도 있다. 일부 실시형태들에서, SOC 에 의한 액세스를 승인하는 것은 액세스 제어를 구성하기 위해 메모리 디바이스의 레지스터들을 잠금해제하는 것을 포함할 수도 있다.
블록 (414) 에서, SOC 는 액세스 제어 하드웨어 블록 (130) 의 메모리 액세스 제어를 구성하고 후속하여 잠금하기 위해 메모리 디바이스에 커맨드들을 전송할 수도 있다. 도 3 을 참조하여 설명된 바와 같이, SOC 는 보안 채널에 걸쳐 판독/기입 메모리 동작들을 수행하는 준비로 액세스 제어 하드웨어 블록 (130) 의 액세스 제어를 구성하기 위해 인코딩된 커맨드들을 메모리 디바이스에 발행할 수도 있다. SOC 에 의해 송신되고 메모리 디바이스의 액세스 제어 구성 블록에 의해 수신된 인코딩된 커맨드들은, SOC 의 어느 보안 엔티티들이 메모리의 특정 부분들에 액세스하려고 시도하고 있는지 그리고 메모리 디바이스 내에서 어떤 그리고 어느 정도의 메모리가 액세스될 것인지를 결정하기 위해 베이스 어드레스, 사이즈 또는 어드레스 범위, 및 보안 도메인 ID 를 포함하는 액세스 구성 파라미터들을 포함할 수 있다. SOC 의 프로세서는 메모리 정보를 교환하기 위한 보안 채널을 준비하기 위해 액세스 제어 하드웨어 블록 (130) 에서의 액세스 제어 구성 블록 (132) 에 판독/기입 동작들을 발행할 수도 있다.
일부 실시형태들에서, 판독/기입 커맨드들은 JEDEC 메모리 표준들에 따라 SOC 로부터 메모리 디바이스로 송신될 수도 있다. 예를 들어, JEDEC 표준들을 구현하는 것은 JEDEC CMD 및 DATA 버스를 통해 판독/기입 커맨드들을 송신하는 것을 포함할 수도 있으며, 여기서, cmd opcode* 는 동작이 판독 또는 기입인지를 특정한다. 예를 들어, 표 1 및 표 2 는 판독, 기입, Cas-2, MRW-1, 및 MRW-2 (모드 레지스터 기입) 가 기존 JEDEC 커맨드들인 JEDEC 표준을 사용하여 액세스 구성 파라미터들 (예를들어, 베이스 어드레스, 어드레스 범위, 보안 도메인 ID) 를 정의하기 위해 액세스 제어 구성 블록의 어드레스 공간을 구성하기 위한 기입 커맨드를 예시한다. 특별 기입 (Write Special) 및 특별 Cas-2 (Cas-2 Special) 은 메모리 디바이스의 액세스 제어 구성 블록의 레지스터 공간을 프로그램하는데 사용된 수정된 JEDEC 프로토콜 커맨드들인 커맨드들일 수도 있다.
Figure pct00001
Figure pct00002
SOC 가 표 1 및 표 2 에 나타낸 바와 같은 커맨드들을 실행하는 결과로서, 액세스 제어 구성의 레지스터 공간의 32 바이트는 액세스 구성 파라미터들을 정의하도록 구성된다. 표 1 및 표 2 에 나타낸 커맨드들은 각각의 보안 도메인에 대해 액세스 제어 구성 블록 내의 부가 어드레스 공간들을 구성하기 위해 필요한 횟수만큼 반복될 수도 있다.
일부 실시형태들에서, JEDEC 프로토콜들은 SOC 및 메모리 디바이스를 포함하는 시스템의 애플리케이션에 의존하여 다양한 포맷들로 활용될 수도 있어서, 메모리 디바이스는 표준화되거나 애플리케이션 특정적일 수도 있다. 예를 들어, 표 3 및 표 4 는 기존의 JEDEC 커맨드들을 사용하여 액세스 구성 파라미터들을 정의하기 위해 액세스 제어 구성 블록의 어드레스 공간을 구성하기 위한 일련의 커맨드들을 예시한다.
Figure pct00003
Figure pct00004
표 3 및 표 4 에 나타낸 커맨드들에 부가하여, SOC 는 수정될 액세스 구성 어드레스를 특정하는 메모리 디바이스의 액세스 제어 하드웨어 블록 (130) 내의 액세스 제어 구성 블록에 명령을 송신할 수도 있다. 예를 들어, SOC 는 액세스 구성 어드레스를 정의하는 8 바이트의 데이터 및 액세스 구성 파라미터들을 정의하는 24 바이트의 데이터를 포함하는 32-바이트 커맨드를 송신할 수도 있다. 이 명령은 SOC 가 Cas-2 커맨드를 실행하는 것과 나란히, 동시에, 또는 실질적으로 동시에 송신될 수도 있어서, 메모리 디바이스의 액세스 제어 하드웨어 블록 (130) 내의 액세스 제어 구성 블록이 기입 및 Cas-2 커맨드를 수신된 액세스 구성 어드레스 및 파라미터 정보와 연관시킬 수도 있다. 이와 같이, 액세스 제어 하드웨어 블록 (130) 내의 액세스 제어 구성 블록은 다른 버스 인터페이스에 걸쳐 Cas-2 커맨드를 수신할 때 하나의 버스 인터페이스에 걸쳐 액세스 구성 어드레스 및 파라미터 정보를 포함하는 명령의 수신을 구체적으로 모니터링하도록 구성될 수도 있다. 표 3 및 표 4 에 나타낸 커맨드들은 각각의 보안 도메인에 대해 액세스 제어 구성 블록 내의 부가 어드레스 공간들을 구성하기 위해 필요한 횟수만큼 반복될 수도 있다.
표 1 내지 표 4 는 SOC 가 액세스 제어 구성 블록의 어드레스 공간에 액세스 구성 파라미터들을 기입할 수 있도록 하기 위한 예만을 보여준다. 판독 커맨드는 기입 커맨드와 유사한 방식으로 액세스 제어 하드웨어 블록 (130) 내의 액세스 제어 구성 블록의 레지스터 공간으로부터 액세스 구성 파라미터 정보를 판독하기 위해 실행될 수도 있다 (즉, 표 1 내지 표 4 의 JEDEC 커맨드들에서 "기입" 을 "판독" 으로 대체함).
SOC 는 상술한 바와 같이, 메모리 디바이스의 액세스 제어 하드웨어 블록 (130) 내의 액세스 제어 구성 블록으로 특정 어드레스 공간들에 기입함으로써 액세스 구성 파라미터들을 구성할 수도 있다. 액세스 구성 파라미터들은 SOC 와 메모리 디바이스 사이에 보안 채널을 확립하기 위해 액세스 제어 구성이 셋업되고 잠금된 후에 SOC 에 의해 수행되는 액세스들의 허용가능한 타입들을 정의할 수도 있다. 예를 들어, SOC 는 액세스 제어 하드웨어 블록 (130) 의 액세스 제어 내에서 미리 구성된 베이스 어드레스들, 어드레스 범위들 및 보안 도메인 ID들에 대응하는 판독 및 기입 동작들을 수행할 수도 있다. SOC 가 예를 들어, 액세스 구성 파라미터들을 구성할 때 정의되지 않았던 보안 도메인에 데이터를 판독 또는 기입하기 위한 요청을 행하도록 시도하면, 액세스 제어 하드웨어 블록 (130) 은 에러를 기록하고 에러와 관련된 정보를 포함하는 인터럽트를 SOC 에 전송할 것이다 (즉, 도 3 의 액세스 위반 신드롬 블록 (134) 을 참조하여 설명된 바와 같음).
액세스 제어 하드웨어 블록 (130) 의 액세스 제어가 SOC 에 의해 발행된 커맨드들에 따라 구성되면, SOC 는 또한 구성에 대한 수정을 방지하기 위해 현재 액세스 제어 구성에서 잠금하기 위한 잠금 비트를 설정하도록 메모리 디바이스의 액세스 제어 하드웨어 블록 (130) 에 커맨드들을 발행할 수도 있다. 일부 실시형태들에서, SOC 는 새로운 정책 변경들 또는 메모리 변경들을 구현하는 것과 같은, 액세스 제어 구성에서의 변경들을 허용하기 위해 잠금 비트를 설정해제하기 위해 메모리에 커맨드를 발행할 수도 있다. SOC 는 또한 현재 구성된 액세스 제어의 시행을 허용하기 위해 인에이블 비트를 설정하도록 메모리 디바이스에 커맨드들을 발행할 수도 있다 (즉, 구성된 액세스 제어 구성 블록에 따라 SOC 와 메모리 디바이스 사이에 보안 채널을 확립하기 위해).
블록 (416) 에서, SOC 는 메모리 디바이스의 메모리 어레이에 액세스할 수도 있다. 예를 들어, 액세스 제어 하드웨어 블록 (130) 을 구성한 후, SOC (140) 는 판독/기입 동작들을 수행하기 위해 RAM 셀 어레이 (138) 에 액세스할 수도 있다. SOC 에 의해 송신되고 메모리 디바이스에 의해 수신된 인코딩된 커맨드들은 SOC 의 어느 보안 엔티티들이 메모리 디바이스 내의 메모리의 특정 부분들에 액세스하려고 시도하고 있는지를 결정하기 위해 보안 도메인 ID들을 포함하는 부가 정보를 포함할 수 있다. SOC 의 프로세서는 액세스 보호 없이 페이지 개방/폐쇄 동작들을 발행할 수도 있고, 액세스 보호로 판독/기입 동작들을 발행할 수도 있다.
일부 실시형태들에서, 판독/기입 커맨드들은 JEDEC 메모리 표준들에 따라 SOC 로부터 메모리 디바이스로 송신될 수도 있다. 예를 들어, JEDEC 표준들을 구현하는 것은 JEDEC CMD 및 DATA 버스를 통해 판독/기입 커맨드들을 송신하는 것을 포함할 수도 있으며, 여기서, cmd opcode* 는 동작의 타입 (예를 들어, 판독, 기입, 또는 컬럼 어드레스 스트로브) 을 특정한다. JEDEC 표준은 보안 도메인을 특정하는 액세스 제어 ID** 를 포함하도록 적응, 수정, 활용, 또는 그렇지 않으면 구현될 수도 있다. 예를 들어, 표 5 내지 표 7 은 JEDEC 표준에 따른 판독 커맨드를 예시하며, 여기서 Cas-3 은 보안 도메인을 특정하는 액세스 제어 ID 를 포함하기 위한 새로운 부가 JEDEC 커맨드이다. 판독, 기입, Cas-2, MRW-1, 및 MRW-2 (모드 레지스터 기입) 는 기존 JEDEC 커맨드들이다.
Figure pct00005
Figure pct00006
Figure pct00007
SOC 가 메모리 디바이스의 액세스 제어에 인코딩된 커맨드들 판독, Cas-2, 및 Cas-3 을 실행하는 결과는 Cas-3 커맨드에서 특정된 보안 도메인 ID 에 대응하는 메모리 위치로부터 32 바이트의 데이터를 판독하고 있다. 표 5 내지 표 7 은 SOC 가 메모리 디바이스로부터 32 바이트를 판독할 수 있도록 하기 위한 예만을 보여준다. 기입 커맨드는 판독 커맨드와 유사한 방식으로 보안 도메인 ID 에 대응하는 메모리 위치에 32 바이트를 기입하도록 실행될 수도 있다 (즉, JEDEC 커맨드들에서 "판독" 을 "기입"으로 대체함).
일부 실시형태들에서, JEDEC 프로토콜들은 SOC 및 메모리 디바이스를 포함하는 시스템의 애플리케이션에 의존하여 다양한 포맷들로 활용될 수도 있어서, 메모리 디바이스는 표준화되거나 애플리케이션 특정적일 수도 있다. 예를 들어, 표 8 내지 표 11 은 메모리 디바이스로부터 32 바이트의 데이터를 판독하기 위한 일련의 커맨드들을 예시한다.
Figure pct00008
Figure pct00009
Figure pct00010
Figure pct00011
SOC 는 보안 도메인 ID 를 특정하는 메모리 디바이스의 액세스 제어에 명령을 송신할 수도 있다. 예를 들어, SOC 는 1 바이트의 데이터를 포함하는 32-바이트 커맨드를 특정 보안 도메인 ID 에 송신할 수도 있고, 여기서 다른 31 바이트는 무시되거나, 관련되지 않거나, 또는 보안 도메인을 식별하기 위한 것 이외의 목적을 위한 정보를 포함한다. 이 명령은 SOC 가 Cas-2 커맨드를 실행하는 것과 나란히, 동시에, 또는 실질적으로 동시에 송신될 수도 있어서, 메모리 디바이스의 액세스 제어가 기입 및 Cas-2 커맨드를 특정된 보안 도메인 ID 와 연관시킬 수도 있다. 이와 같이, 액세스 제어는 다른 버스 인터페이스에 걸쳐 Cas-2 커맨드를 수신할 때 하나의 버스 인터페이스에 걸쳐 보안 도메인 ID 를 포함하는 명령의 수신을 구체적으로 모니터링하도록 구성될 수도 있다. 예를 들어, 도 3 을 참조하여 설명된 바와 같이, 액세스 제어 하드웨어 블록 (130) 은 연결들 (216d, 216) 에 걸쳐 Cas-2 커맨드를 수신할 수도 있고, 연결 (304i) 에 걸쳐 보안 도메인 ID 를 수신할 수도 있다. 표 8 내지 표 11 은 SOC 가 메모리 디바이스로부터 32 바이트를 판독할 수 있도록 하기 위한 예만을 보여준다. 기입 커맨드는 판독 커맨드와 유사한 방식으로 보안 도메인 ID 에 대응하는 메모리 위치에 32 바이트를 기입하도록 실행될 수도 있다 (즉, JEDEC 커맨드들에서 "판독" 을 "기입"으로 대체함). 오버헤드를 감소시키기 위해, 부가적인 동작 모드는, 보안 도메인 ID 가 액세스 제어 하드웨어 블록 (130) 에 의해 수신되면, 새로운 보안 도메인 ID 를 재전송할 필요성 없이 가장 최근의 보안 도메인 ID 에 대응하는 후속 판독 또는 기입 커맨드들이 성공적으로 수신될 수도 있다는 것이다. SOC (140) 는 모두 동일한 보안 도메인 ID 에 속하는 복수의 판독 또는 기입 트랜잭션들을 RAM (122) 에 전송함으로써 이러한 기회를 이용할 수도 있으며, 예를 들어 액세스 제어 하드웨어 블록 (130) 은 새로운 보안 도메인 ID 가 수신될 때까지 현재 보안 도메인 ID 를 유지하고 후속 판독 또는 기입 트랜잭션들에 적용할 것이다. 따라서, 동일한 ID 를 갖는 트랜잭션들을 번들링하는 것은 표 5, 표 6 및 표 7 에서 불필요한 보안 도메인 ID 셋업을 제거할 수 있다.
표 12 내지 표 14 는 보안 도메인 ID(들)를 특정하기 위해 JEDEC 프로토콜들을 구현하는 다른 예시의 포맷을 예시한다.
Figure pct00012
Figure pct00013
Figure pct00014
표 12 내지 표 14 는 SOC 가 메모리 디바이스로부터 32 바이트를 판독할 수 있도록 하기 위한 예만을 보여준다. 기입 커맨드는 판독 커맨드와 유사한 방식으로 보안 도메인 ID 에 대응하는 메모리 위치에 32 바이트를 기입하도록 실행될 수도 있다 (즉, JEDEC 커맨드들에서 "판독" 을 "기입"으로 대체함). 다시, 가장 최근의 보안 도메인 ID 는 활성 상태로 유지될 수 있고, SOC (140) 는 동일한 보안 도메인 ID 에 대응하는 판독 또는 기입 트랜잭션들을 번들링 (연속 발행) 하고, 표 12 및 표 13 에서 소비된 오버헤드를 감소시킬 수 있다.
도 4 를 다시 참조하면, 블록 (418) 에서, SOC 는 새로운 액세스 제어 정책, 프로그램을 구현할 수도 있거나, 또는 메모리 버퍼 할당이 업데이트되었을 수도 있으며, 따라서 메모리 디바이스 액세스 제어가 업데이트 SOC 메모리 버퍼 할당에 기초하여 재구성될 것을 요구할 수도 있다. SOC 메모리 버퍼 할당이 재구성되거나 업데이트되었다고 결정할 때, 블록 (408-416) 에서 설명된 프로세스들은 메모리 디바이스의 액세스 제어를 재구성하기 위해 반복될 수도 있다. 메모리 디바이스 액세스 제어에 반영되지 않은 업데이트된 메모리로 SOC 를 구현하는 것은 에러들을 초래할 것이고, 따라서 SOC 측 사용 경우에 대한 업데이트된 메모리 할당에 적응하도록 메모리 디바이스가 재구성될 것을 필요로 한다.
도 5 는 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 데이터 및 구성 트랜잭션 경로들을 포함하는 예시의 컴포넌트 시스템 (500) 을 도시하는 컴포넌트 블록 다이어그램이다. 도 1 내지 도 5 를 참조하면, 시스템 (500) 은 보안 엔티티 (예를 들어, 퓨즈들, 신뢰 구역)(502) 및 HLOS (504) 를 포함할 수도 있는 CPU (104) 를 포함할 수도 있다. 시스템 (500) 은 정책 데이터 구조 (506) 를 포함할 수도 있는 RAM (122) 을 포함할 수도 있다. 시스템은 구성 모드 트랜잭션들 및 미션 모드 데이터 트랜잭션들을 구현하기 위한 다양한 하드웨어 블록들 및 경로들을 포함할 수도 있으며, 여기서 트랜잭션들의 세트들 양자 모두는 동일한 인터페이스 PHY (124) 를 통해 중계된다.
구성 모드 트랜잭션들은 PHY (124) 에 의해 액세스 제어 구성 블록 (132) 에 중계될 수도 있으며, 여기서 경로 (508) 는 중계 어드레스 및 데이터 정보에 대한 연결들 뿐만 아니라, 중계 액세스 도메인 정보에 대한 연결들 (514i) 을 포함한다. 경로 (508) 를 통해 중계된 데이터는 미션 모드 데이터 트랜잭션들의 준비에서 액세스 제어 구성 블록 (132) 을 구성하기 위해 베이스 어드레스, 사이즈 또는 어드레스 범위, 및 보안 도메인 ID 를 포함할 수도 있다. 경로 (508) 에 걸쳐 중계된 구성 트랜잭션들은 방법 (400)(도 4) 의 블록 (414) 을 참조하여 설명된 바와 같이 수행될 수도 있다.
미션 모드 데이터 트랜잭션들은 PHY (124) 에 의해 정책 시행 블록 (136) 에 중계될 수도 있으며, 여기서 경로 (510) 는 중계 어드레스 및 데이터 정보에 대한 연결들 뿐만 아니라, 중계 액세스 도메인 정보에 대한 연결들 (512i) 을 포함한다. 경로 (510) 를 통해 중계된 정보는 RAM 셀 어레이 (138) 내의 특정 위치에 판독 또는 기입하기 위한 어드레스 정보 및 데이터를 포함할 수도 있다. 경로 (510) 에 걸쳐 중계된 미션 모드 데이터 트랜잭션들은 방법 (400)(도 4) 의 블록 (416) 을 참조하여 설명된 바와 같이 수행될 수도 있다.
도 6 은 일부 실시형태들에 따른 보안 인-메모리 디바이스의 액세스 위반들을 모니터링하기 위한 방법 (600) 을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 6 을 참조하면, 방법 (600) 의 동작들은 외부 메모리 디바이스 (예를 들어, RAM (122)) 의 액세스 제어 하드웨어 블록 (예를 들어, 130) 및 SOC (예를 들어, SOC (140)) 의 프로세서 (예를 들어, CPU (104), NPU (308)) 에 의해 수행될 수도 있다.
블록들 (602-620) 에서 수행된 동작들의 순서는 단지 예시적인 것이며, 블록들 (602-620) 의 동작들은 임의의 순서로 그리고 일부 실시형태들에서 부분적으로 동시에 수행될 수도 있다. 일부 실시형태들에서, 방법 (600) 은 외부 메모리 디바이스와 독립적으로, 그러나 이와 함께 디바이스의 프로세서에 의해 수행될 수도 있다. 예를 들어, 방법 (600) 은 외부 메모리 디바이스의 메모리에 액세스하려고 시도하기 위한 커맨드들을 발행하고 다르게는 설명된 바와 같은 액션들을 취하고 데이터를 저장하도록 구성되는 SOC 내의 전용 하드웨어에서 또는 SOC 의 프로세서 내에서 실행되는 소프트웨어 모듈로서 구현될 수도 있다.
블록 (602) 에서, 메모리 디바이스의 액세스 제어는 액세스 제어 하드웨어 블록에 의해 구성되고 인에이블될 수도 있다. 이는 방법 (400)(도 4) 의 블록들 (402-414) 을 참조하여 설명된 바와 같이 수행될 수도 있어서, SOC 가 메모리 디바이스 셀 어레이 내의 메모리로부터 판독 및/또는 메모리에 기입할 수 있도록 하기 위해 SOC 가 메모리 디바이스의 액세스 제어 하드웨어 블록의 액세스 제어를 구성하도록 한다.
블록 (604) 에서, SOC 프로세서는 액세스 제어 ID 와 함께 액세스 요청을 SOC 메모리 제어기에 전송할 수도 있다. 예를 들어, 도 3 을 참조하여 설명된 바와 같이, CPU (104) 는 RAM 셀 어레이 (138) 내의 특정 메모리에 액세스하기 위한 메모리 액세스 요청을 생성할 수도 있다. 액세스 요청은 CPU (104) 에 의해 버스 (118) 에 걸쳐 RAM 메모리 제어기 (110) 로 송신될 수도 있다. 액세스 요청은 CPU (104) 가 요청의 소스였음을 식별하기 위한 액세스 제어 ID (예를 들어, 보안 도메인 ID) 를 포함할 수도 있다. 다른 예로서, NPU (308) 는 RAM 메모리 제어기 (110) 에 액세스 제어 ID 를 포함하는 액세스 요청을 송신할 수도 있으며, 여기서 NPU (308) 의 액세스 제어 ID 는 CPU (104) 의 액세스 제어 ID 와 상이하다.
단계 (606) 에서, SOC 메모리 제어기는 SOC 프로세서로부터 액세스 요청을 수신하는 것에 응답하여 액세스 제어 ID 를 포함하는 판독/기입 커맨드를 메모리 디바이스로 송신할 수도 있다. 이는 방법 (400)(도 4) 의 블록 (416) 을 참조하여 설명된 바와 같이 수행될 수도 있다.
블록 (608) 에서, 액세스 제어 하드웨어 블록은 액세스 요청을 액세스 제어 구성과 비교할 수도 있다. 예를 들어, 도 3 을 참조하여 설명된 바와 같이, 액세스 제어 하드웨어 블록 (130) 내의 정책 시행 블록 (136) 은 PHY (124) 로부터 액세스 요청을 수신하고, 블록 (602) 에서 구성된 액세스 제어 구성에 기초하여 판독/기입 커맨드를 포함하는 액세스 요청이 허용가능한지 여부를 결정할 수도 있다. 액세스 제어 하드웨어 블록 (130) 내의 정책 시행 블록 (136) 은 액세스 요청을 분석하여 베이스 어드레스, 어드레스 범위, 및 보안 도메인 ID 를 결정한 다음, (예를 들어, 액세스 제어 구성 블록 (132) 에 의해 정의된 바와 같이) 메모리 정보 및 보안 도메인 ID 를 메모리 액세스 제어 구성과 비교할 수도 있다. 식별된 메모리 위치 및 범위는 RAM 메모리 셀 어레이 (138) 내의 메모리 정보를 식별하기 위해 사용될 수도 있다. 보안 ID 는 액세스 요청을 초기화한 SOC 의 보안 도메인을 식별할 수도 있어서, 보안 도메인 ID 에 대응하는 보안 도메인이 식별된 메모리 어드레스 및 범위에서 판독/기입 동작을 요청한다.
결정 블록 (610) 에서, 메모리 디바이스의 액세스 제어 하드웨어 블록 (130) 은 액세스 요청 및 액세스 제어 구성에 기초하여 SOC 가 메모리 디바이스 메모리 셀 어레이에 대한 액세스를 승인받아야 하는지 여부를 결정할 수도 있다. 액세스 제어 하드웨어 블록 (130) 은 메모리 액세스 제어의 구성에 포함되지 않은 다른 보안 도메인 ID들을 특정하는 액세스 요청들을 거부하면서, 특정 보안 도메인 ID들 및 대응하는 메모리 어드레스 위치들 및 범위들에 기초하여 메모리 셀 어레이에 대한 액세스 요청들을 허용하면서, 예를 들어 정책 시행 블록 (136) 을 구현하도록 구성될 수도 있다.
예를 들어, 도 7 은 일부 실시형태들에 따른 보안 인-메모리 디바이스 액세스 제어를 제공하기 위한 시스템 메모리 맵 (700) 을 도시한다. 이러한 예에 대해, SOC 의 CPU 는 0 의 보안 도메인 ID 에 기인하고, 동일한 SOC 의 NPU 는 1 의 보안 도메인 ID 1 에 기인하는 것이 가정될 수도 있다. 메모리 액세스 제어의 구성 동안, 메모리 디바이스는 CPU 및 NPU 에 대응하는 0 및 1 의 보안 도메인 ID들을 포함하는 구성 메시지들을 수신할 수도 있다. 구성 메시지들은 메모리 디바이스가 대응하는 보안 도메인 ID 에 기초하여 액세스를 허용해야 하는 메모리 어드레스 위치들 및 범위들을 포함할 수도 있다. 예를 들어, 방법 (400)(도 4) 에서 설명된 바와 같이, 메모리 디바이스는 메모리 어드레스 범위 (704) 에 대해 NPU 및 CPU 에 의해 요청된 판독/기입 동작을 허용하고, 그리고 메모리 어드레스 범위 (702) 에 대한 NPU 에 의한 판독/기입 동작들을 허용하지 않으면서, 메모리 어드레스 범위 (702) 에 대한 CPU 에 의한 판독/기입 동작들을 허용하도록 액세스 제어를 구성하기 위한 구성 메시지들을 수신했을 수도 있다. 다른 예로서, 액세스 제어는 CPU 를 제외하고 메모리 어드레스 범위 (702) 에 대한 판독 동작들을 허용하지만 기입 동작들을 허용하지 않도록 구성될 수도 있어서, NPU 보안 도메인을 포함하는 CPU 이외의 모든 다른 보안 도메인들은 메모리 어드레스 범위 (702) 에 기입하지 않을 수도 있다. 따라서, NPU 가 메모리 어드레스 범위 (702) 에 기입하도록 요청하는 동작 (706) 을 수행하는 경우, 메모리 디바이스의 정책 시행은 요청이 1 의 보안 도메인 ID 를 포함하는 것을 체크하고, 0 의 보안 도메인 ID 를 포함하는 요청만이 메모리 어드레스 범위 (702) 에 기입하도록 허용된다고 결정하며, 요청을 거부할 수도 있다.
도 6 을 다시 참조하면, 액세스 제어 구성에 기초하여 액세스 요청의 메모리 어드레스 위치 및 범위와 보안 도메인 ID 가 허용되지 않는다고 결정하는 것에 응답하여 (즉, 결정 블록 (610) = "아니오"), 그 후 액세스 요청의 판독/기입이 수행되지 않을 수도 있고, 액세스 요청 정보를 포함하여 에러가 기록될 수도 있으며 (예를 들어, 액세스 위반 신드롬 블록 (134) 을 통해), 새로운 액세스 요청이 블록 (604) 에서 수행될 수도 있다.
액세스 요청의 메모리 어드레스 위치 및 범위와 보안 도메인 ID 가 액세스 제어 구성에 기초하여 허용된다고 결정하는 것에 응답하여 (즉, 결정 블록 (610) = "예"), 그 후 블록 (612) 에서 액세스 요청의 판독/기입이 수행될 수도 있다. 블록 (608, 610 및 612) 은 블록 (604 및 606) 에서 액세스 제어 ID 를 재전송해야하지 않으면서 복수의 판독 및/또는 기입 트랜잭션이 진행되게 할 수도 있다. 그렇다면, 모든 트랜잭션들은 블록 (604 및 606) 에서 제공된 현재 보안 도메인 ID 에 속하는 것으로 핸들링될 것이고, 개별 판독 또는 기입 트랜잭션들의 각각이 현재 보안 도메인 ID 에 대해 평가되고 개별적으로 액세스가 승인 또는 거부될 것이다.
블록 (614) 에서, SOC 메모리 제어기는 응답 데이터를 래치하고 에러 표시 신호를 분석한다. 예를 들어, 도 3 을 참조하여 설명된 바와 같이, 정책 시행 블록 (136) 에 전송된 액세스 요청 동안, 또는 RAM 셀 어레이 (138) 에 대한 판독/기입 동작 동안 하나 이상의 에러가 발생했을 수도 있다. 액세스 위반 신드롬은 임의의 에러들을 로깅하고, 그 후 SOC 가 에러 정보를 취출하기 위한 커맨드 요청을 전송할 때 에러 정보를 연결들 (304e 및 302e) 에 걸쳐 SOC 에 전송할 수도 있다. 그 후, RAM 메모리 제어기 (110) 는 판독/기입 동작이 수행된 후 (예를 들어, 연결 (120d) 에서) 응답 데이터를 래치할 수도 있고, 액세스 요청 및/또는 판독/기입 동작 동안 임의의 에러들이 발생했는지 여부를 표시하는 에러 신호가 존재하는지를 결정하기 위해 연결 (302e) 을 체크할 수도 있다.
결정 블록 (616) 에서, SOC 는 메모리 디바이스로부터 수신된 에러 신호에 기초하여 에러가 발생했는지 여부를 결정할 수도 있다. 에러가 발생하지 않았다고 결정하는 것에 응답하여 (즉, 결정 블록 (410) = "아니오"), 에러 인터럽트가 SOC 에 보고되지 않고, 블록 (604) 에 따라 새로운 액세스 요청이 수행될 수도 있다.
에러가 발생했다고 결정하는 것에 응답하여 (즉, 결정 블록 (410) = "예"), SOC 메모리 제어기는 블록 (618) 에서 메모리 디바이스로부터 에러 정보를 요청할 수도 있다. 액세스 위반 신드롬에 의해 캡처된 에러 정보는 메모리 디바이스에 의해 SOC 로 송신될 수도 있다.
블록 (620) 에서, SOC 메모리 제어기는 에러 정보를 저장하고 로컬로 저장한 다음, 액세스 및/또는 판독/기입 에러를 로깅 및/또는 교정하기 위해 임의의 필요한 동작들을 수행하도록 SOC 마스터 제어에 대한 인터럽트를 트리거할 수도 있다.
도 8 은 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 8 을 참조하면, 방법 (800) 의 동작들은 SOC (예를 들어, SOC (140)) 의 외부 프로세서 (예를 들어, CPU (104), NPU (308)) 와 전기적으로 통신하는 메모리 디바이스 (예를 들어, RAM (122)) 에서의 액세스 제어 하드웨어 블록 (예를 들어, 130) 에 의해 수행될 수도 있다.
블록들 (802-810) 에서 수행된 동작들의 순서는 단지 예시적인 것이며, 블록들 (802-810) 의 동작들은 임의의 순서로 그리고 일부 실시형태들에서 부분적으로 동시에 수행될 수도 있다. 일부 실시형태들에서, 방법 (800) 은 SOC 의 외부 프로세서와 독립적으로, 그러나 이와 함께 메모리 디바이스 내의 액세스 제어 하드웨어 블록에 의해 수행될 수도 있다. 예를 들어, 방법 (800) 은 SOC 의 프로세서로부터 수신된 메모리 액세스 제어 구성 및 미션 모드 커맨드들을 실행하는, 메모리 디바이스 내의 전용 하드웨어일 수 있는 액세스 제어 하드웨어 블록으로서 구현될 수도 있다.
블록 (802) 에서, 액세스 제어 하드웨어 블록은 메모리 디바이스의 메모리 액세스 제어를 구성하기 위한 구성 메시지를 SOC 로부터 수신하는 것을 포함하는 동작들을 수행할 수도 있다. 일부 실시형태들에서, 구성 메시지는 메모리 디바이스의 액세스 제어 하드웨어 블록에 의한 액세스 제어를 구성하는데 사용된 구성 보안 도메인 ID 를 포함할 수도 있다. 일부 실시형태들에서, 구성 메시지는 구성 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지일 수도 있다.
블록 (804) 에서, 액세스 제어 하드웨어 블록은 구성 메시지에 기초하여 메모리 액세스 제어를 구성하는 것을 포함하는 동작들을 수행할 수도 있다.
블록 (806) 에서, 액세스 제어 하드웨어 블록은 메모리 디바이스의 메모리 셀 어레이의 메모리 액세스 범위 및 메모리 베이스 어드레스에 대한 액세스를 요청하는 액세스 요청 메시지를 SOC 로부터 수신하는 것을 포함하는 동작들을 수행할 수도 있다. 일부 실시형태들에서, 액세스 요청 메시지는 판독/기입 동작을 포함할 수도 있다. 일부 실시형태들에서, 액세스 요청 메시지는 SOC 의 어떤 보안 도메인이 판독/기입 동작을 요청하는지를 식별하는데 사용된 요청된 보안 도메인 ID 를 포함할 수도 있다. 일부 실시형태들에서, 액세스 요청 메시지는 요청된 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지일 수도 있다.
블록 (808) 에서, 액세스 제어 하드웨어 블록은 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 액세스 요청 메시지를 구성된 메모리 액세스 제어와 비교하는 것을 포함하는 동작들을 수행할 수도 있다.
블록 (810) 에서, 액세스 제어 하드웨어 블록은 액세스 요청 메시지가 허용가능하다고 결정하는 것에 응답하여, 판독/기입 동작들을 허용하는 것을 포함하는 동작들을 수행할 수도 있다.
도 9 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 액세스 제어 하드웨어 블록에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 9 를 참조하면, 방법 (900) 의 동작들은 SOC (예를 들어, SOC (140)) 의 외부 프로세서 (예를 들어, CPU (104), NPU (308)) 와 전기적으로 통신하는 메모리 디바이스 (예를 들어, RAM (122)) 에서의 액세스 제어 하드웨어 블록 (예를 들어, 130) 에 의해 수행될 수도 있다.
방법 (800)(도 8) 의 블록 (808) 의 동작들의 수행에 후속하여, 메모리 디바이스의 액세스 제어 하드웨어 블록은 블록 (902) 에서 구성 보안 도메인 ID 가 요청된 보안 도메인 ID 와 매칭하는지 여부를 결정하는 것을 포함하는 동작들을 수행할 수도 있다. 이는 방법 (800)(도 8) 의 블록 (808) 에서 설명된 동작들의 일부로서 수행될 수도 있다.
블록 (904) 에서, 액세스 제어 하드웨어 블록은 구성 보안 도메인 ID 가 요청된 보안 도메인 ID 와 매칭한다고 결정하는 것에 응답하여 액세스 요청 메시지가 허용가능하다고 결정하는 것을 포함하는 동작들을 수행할 수도 있다.
그 후 액세스 제어 하드웨어 블록은 설명된 바와 같이 방법 (800)(도 8) 의 블록 (810) 의 동작들을 수행할 수도 있다.
도 10 은 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스의 액세스 제어 하드웨어 블록에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 10 을 참조하면, 방법 (1000) 의 동작들은 SOC (예를 들어, SOC (140)) 의 외부 프로세서 (예를 들어, CPU (104), NPU (308)) 와 전기적으로 통신하는 메모리 디바이스 (예를 들어, RAM (122)) 의 액세스 제어 하드웨어 블록 (예를 들어, 130) 에 의해 수행될 수도 있다.
방법 (800)(도 8) 의 블록 (808) 의 동작들의 수행에 후속하여, 메모리 디바이스의 액세스 제어 하드웨어 블록은 블록 (1002) 에서 구성 보안 도메인 ID 가 요청된 보안 도메인 ID 와 매칭하지 않는다고 결정하는 것에 응답하여 액세스 요청 메시지가 허용가능하지 않다고 결정하는 것을 포함하는 동작들을 수행할 수도 있다. 이는 방법 (800)(도 8) 의 블록 (808) 에서 설명된 프로세스들의 일부로서 수행될 수도 있다.
블록 (1004) 에서, 액세스 제어 하드웨어 블록은 메모리 베이스 어드레스, 메모리 액세스 범위, 및 요청된 보안 도메인 ID 를 포함하는 에러 정보를 저장하는 것을 포함하는 동작들을 수행할 수도 있다.
블록 (1006) 에서, 액세스 제어 하드웨어 블록은 에러 정보를 SOC 로 송신하는 것을 포함하는 동작들을 수행할 수도 있다.
도 11 은 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스의 신뢰 하드웨어 블록에 의해 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 11 을 참조하면, 방법 (1100) 의 동작들은 SOC (예를 들어, SOC (140)) 의 외부 프로세서 (예를 들어, CPU (104), NPU (308)) 와 전기적으로 통신하는 메모리 디바이스 (예를 들어, RAM (122)) 의 신뢰 하드웨어 블록 (예를 들어, 125) 에 의해 수행될 수도 있다.
블록 (1102) 에서, 메모리 디바이스의 신뢰 하드웨어 블록은 SOC 로부터 잠금해제 패스워드를 수신하는 것을 포함하는 동작들을 수행할 수도 있다.
블록 (1104) 에서, 신뢰 하드웨어 블록은 수신된 잠금해제 패스워드가 메모리 디바이스에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭하는지 여부를 결정하는 것을 포함하는 동작들을 수행할 수도 있다.
블록 (1106) 에서, 신뢰 하드웨어 블록은 수신된 잠금해제 패스워드가 허용가능한 패스워드들의 세트 내의 패스워드와 매칭한다고 결정하는 것에 응답하여 액세스 제어 하드웨어 블록이 구성 메시지를 수신할 수 있도록 메모리 디바이스 게이트 로직을 잠금해제하는 것을 포함하는 동작들을 수행할 수도 있다.
그 후 액세스 제어 하드웨어 블록은 설명된 바와 같이 방법 (800)(도 8) 의 블록 (802) 의 동작들을 수행할 수도 있다.
도 12 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공하기 위한 방법 (800) 의 일부로서 메모리 디바이스에 수행될 수도 있는 대안의 동작들을 도시하는 프로세스 플로우 다이어그램이다. 도 1 내지 도 12 를 참조하면, 방법 (1200) 의 동작들은 SOC (예를 들어, SOC (140)) 의 외부 프로세서 (예를 들어, CPU (104), NPU (308)) 와 전기적으로 통신하는 메모리 디바이스 (예를 들어, RAM (122)) 의 액세스 제어 하드웨어 블록 (예를 들어, 130) 에 의해 수행될 수도 있다.
방법 (800)(도 8) 의 블록 (804) 의 동작들의 수행에 후속하여, 메모리 디바이스의 액세스 제어 하드웨어 블록은 블록 (1202) 에서 메모리 디바이스의 레지스터 내에 잠금 비트를 설정하도록 구성된 잠금 커맨드를, SOC 로부터 수신하는 것을 포함하는 동작들을 수행할 수도 있다.
블록 (1204) 에서, 액세스 제어 하드웨어 블록은 구성된 메모리 액세스 제어에 대한 구성 변경들을 방지하기 위해 잠금 비트를 설정하는 것을 포함하는 동작들을 수행할 수도 있다.
그 후 액세스 제어 하드웨어 블록은 설명된 바와 같이 방법 (800)(도 8) 의 블록 (806) 의 동작들을 수행할 수도 있다.
다양한 실시형태들은 웨어러블 컴퓨팅 디바이스와 같은 다양한 컴퓨팅 디바이스들 내에서 구현될 수도 있다. 도 13 은 일부 실시형태들에 따른 스마트 워치 (1300) 의 형태로 예시의 웨어러블 컴퓨팅 디바이스를 도시한다. 스마트 워치 (1300) 는 내부 메모리들 (1304 및 1306) 에 커플링된 프로세서 (1302) 를 포함할 수도 있다. 내부 메모리들 (1304, 1306) 은 휘발성 또는 비휘발성 메모리들일 수도 있고, 또한 보안 및/또는 암호화된 메모리들, 또는 비보안 및/또는 암호화되지 않은 메모리들, 또는 이들의 임의의 조합일 수도 있다. 프로세서 (1302) 는 또한 저항성 감지 터치스크린, 용량성 감지 터치스크린 적외선 감지 터치스크린 등과 같은 터치스크린 디스플레이 (1320) 에 커플링될 수도 있다. 부가적으로, 스마트 워치 (1300) 는, 프로세서 (1302) 에 커플링될 수도 있는, 하나 이상의 무선 데이터 링크 (1312), 예컨대 하나 이상의 Bluetooth® 트랜시버, Peanut 트랜시버, Wi-Fi 트랜시버, ANT+ 트랜시버 등에 연결될 수도 있는 전자기 방사를 전송 및 수신하기 위한 하나 이상의 안테나 (1308) 를 가질 수도 있다. 스마트 워치 (1300) 는 또한 사용자 입력들을 수신하기 위한 물리적 가상 버튼들 (1322 및 1310) 뿐만 아니라 사용자 입력들을 수신하기 위한 슬라이드 센서 (1316) 를 포함할 수도 있다.
무선 데이터 링크들 (1312) 및 연결된 트랜시버(들)는 응답하는 무선 트랜시버에 커플링된 RAM/NVRAM 과 같은 외부 메모리 디바이스들과 전기적으로 페어링하고 통신하기 위해 사용될 수도 있다. 예를 들어, 도 3 을 참조하여 설명된 바와 같이, 스마트 워치 (1300) 는 외부 메모리 디바이스 (예를 들어, RAM (122)) 와 일시적으로 페어링될 수도 있어서, 프로세서 (예를 들어, CPU (104)) 는 메모리 디바이스의 메모리 (예를 들어, RAM 셀 어레이 (138)) 에 액세스하기 위한 커맨드들을 발행하는 준비로 메모리 액세스 제어 (예를 들어, 액세스 제어 하드웨어 블록 (130)) 를 구성할 수도 있다.
터치스크린 디스플레이 (1320) 는 사용자의 손끝 또는 스타일러스가 표면을 터치하고 있는 스크린 상의 위치들을 나타내는 신호들을 터치스크린 디스플레이 (1320) 로부터 수신하고 터치 이벤트들의 좌표들에 관한 정보를 프로세서 (1302) 에 출력하도록 구성되는 터치스크린 인터페이스 모듈에 커플링될 수도 있다. 또한, 프로세서 (1302) 는 사용자가 가상 버튼과 같은 그래픽 인터페이스 아이콘과 상호작용했을 때를 검출하기 위해 터치스크린 인터페이스 모듈로부터 수신된 터치 이벤트들의 위치와 터치스크린 디스플레이 (1320) 상에 제시된 이미지들을 상관시키기 위한 프로세서 실행가능 명령들로 구성될 수도 있다.
프로세서 (1302) 는 다양한 실시형태들의 기능들을 포함하여, 다양한 기능들을 수행하기 위해 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수도 있다. 일부 디바이스들에서, 무선 통신 기능들에 전용된 하나의 프로세서 및 다른 애플리케이션들을 실행하는 것에 전용된 하나의 프로세서와 같은 다중 프로세서들이 제공될 수도 있다. 통상적으로, 소프트웨어 애플리케이션들은 프로세서 (1302) 에 액세스 및 로딩되기 전에 내부 메모리에 저장될 수도 있다. 프로세서 (1302) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 많은 디바이스들에서, 내부 메모리는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리, 또는 이들의 조합일 수도 있다. 이 설명의 목적들을 위해, 메모리에 대한 일반적인 참조는 모바일 디바이스에 플러깅된 내부 메모리 또는 탈착가능 메모리 및 프로세서 (1302) 자체 내의 메모리를 포함하는 프로세서 (1302) 에 의해 액세스가능한 메모리를 지칭한다.
도 14 는 일부 실시형태들에 따른 시스템-온-칩 (SOC) 에 의해 메모리 디바이스의 보안 인-메모리 디바이스 액세스를 제공할 수도 있는 네트워크 컴퓨팅 디바이스 (1400) 의 예의 컴포넌트 블록 다이어그램이다. 도 1 내지 도 14 를 참조하면, 네트워크 컴퓨팅 디바이스 (1400) 는 기지국과 같은 통신 네트워크의 네트워크 엘리먼트로서 기능할 수도 있다. 네트워크 컴퓨팅 디바이스 (1400) 는 휘발성 메모리 (1402) 및 대용량 비휘발성 메모리 (1408)(예를 들어, RAM(122)) 에 커플링된 프로세서 (1410)(예를 들어, CPU (104), NPU (308)) 를 포함할 수도 있다. 네트워크 컴퓨팅 디바이스 (1400) 는 또한, 프로세서 (1410) 에 커플링된 플로피 디스크 드라이브, 컴팩트 디스크 (CD) 또는 디지털 비디오 디스크 (DVD) 드라이브 (1406) 와 같은 주변 메모리 액세스 디바이스를 포함할 수도 있다. 네크워크 컴퓨팅 디바이스 (1400) 는 또한, 다른 시스템 컴퓨터들 및 서버들에 커플링된 인터넷 또는 로컬 영역 네트워크와 같은 네트워크와의 데이터 접속들을 확립하기 위하여 프로세서 (1410) 에 커플링된 네트워크 액세스 포트들 (1404)(또는 인터페이스들) 을 포함할 수도 있다. 네트워크 컴퓨팅 디바이스 (1400) 는 무선 통신 링크에 접속될 수도 있는 전자기 방사를 전송 및 수신하기 위한 하나 이상의 안테나 (1404) 를 포함할 수도 있다. 네트워크 컴퓨팅 디바이스 (1400) 는 주변기기들, 외부 메모리, 또는 다른 디바이스들에 커플링하기 위한 USB, 파이어와이어, 썬더볼트 등과 같은 부가적인 액세스 포트들을 포함할 수도 있다.
도 15 는 일부 실시형태들을 구현하기에 적합한 스마트폰 (1500) 형태로 예시의 무선 디바이스의 컴포넌트 블록 다이어그램이다. 도 1 내지 도 15 를 참조하면, 스마트폰 (1500) 은 제 2 SOC (1502)(예컨대 5G 가능 SOC) 에 커플링된 제 1 SOC (140)(예컨대 SOC-CPU) 를 포함할 수도 있다. 제 1 및 제 2 SOC들 (140, 1502) 은 내부 메모리 (1516)(예를 들어, SRAM (106)), 디스플레이 (1512), 및 스피커 (1514) 에 커플링될 수도 있다. 부가적으로, 스마트폰 (1500) 은 제 1 또는 제 2 SOC들 (140, 1502) 에서 하나 이상의 프로세서에 커플링된 셀룰러 전화 트랜시버 (1508) 또는 무선 데이터 링크에 접속될 수도 있는 전자기 방사를 전송 및 수신하기 위한 안테나 (1504) 를 포함할 수 있다. 예를 들어, 안테나 (1504) 는 구성 및 미션 모드 메모리 액세스 커맨드들을 외부 메모리 디바이스 (예를 들어, RAM (122)) 에 전기적으로 연결하고 발행하는데 사용될 수도 있다. 스마트 폰 (1500) 은 통상적으로 또한 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 로커 스위치들 (1520) 을 포함한다.
통상적인 스마트폰 (1500) 은 또한, 마이크로폰으로부터 수신된 사운드를 무선 송신에 적합한 데이터 패킷들로 디지털화하고 수신된 사운드 데이터 패킷들을 디코딩하여 사운드를 생성하기 위해 스피커에 제공되는 아날로그 신호들을 생성하는, 사운드 인코딩/디코딩 (CODEC) 회로 (1510) 를 포함한다. 또한, 제 1 및 제 2 SOC들 (140, 1502) 에서의 프로세서들, 무선 트랜시버 (1508) 및 CODEC (1510) 중 하나 이상은 디지털 신호 프로세서 (DSP) 회로 (별도로 나타내지 않음) 를 포함할 수도 있다.
스마트 워치 (1300) 의 프로세서들, 무선 네트워크 컴퓨팅 디바이스 (1400), 및 스마트 폰 (1500) 의 프로세서들은 본 명세서에 설명된 다양한 실시형태들의 기능들을 포함하는, 다양한 기능들을 수행하기 위해 프로세서 실행가능 명령들에 의해 구성될 수도 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수도 있다. 일부 무선 디바이스들에서, 무선 통신 기능들에 전용된 SOC (1502) 내의 하나의 프로세서 및 다른 애플리케이션들을 실행하는 것에 전용된 SOC (140) 내의 하나의 프로세서와 같은 다중 프로세서들이 제공될 수도 있다. 통상적으로, 소프트웨어 애플리케이션들 (예를 들어, 신뢰된 프로그램들 (102, 306)) 은, 프로세서에 액세스 및 로딩되기 전에 메모리 (1506, 1516) 에 저장될 수도 있다. 프로세서들은 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다.
본 출원에서 사용된 바와 같이, 용어들 "컴포넌트", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 예컨대 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 포함하지만 이에 제한되지 않도록 의도되며, 이들은 특정한 동작들 또는 기능들을 수행하도록 구성된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행의 스레드, 프로그램, 또는 컴퓨터일 수도 있지만, 이에 제한되지 않는다. 예시로서, 무선 디바이스 상에서 실행하는 애플리케이션 및 무선 디바이스 양자 모두 컴포넌트로서 지칭될 수도 있다. 하나 이상의 컴포넌트는 프로세스 또는 실행의 스레드 내에 상주할 수도 있고 컴포넌트는 하나의 프로세서 또는 코어 상에 로컬화되거나 2 이상의 프로세서들 또는 코어들 사이에서 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 명령들 또는 데이터 구조들이 저장된 다양한 비일시적 컴퓨터 판독가능 매체들로부터 실행할 수도 있다. 컴포넌트들은 로컬 또는 원격 프로세스들, 기능 또는 절차 호출들, 전자 신호들, 데이터 패킷들, 메모리 판독/기입들, 및 다른 알려진 네트워크, 컴퓨터, 프로세서, 또는 프로세스 관련 통신 방법론들에 의해 통신할 수도 있다.
예시되고 설명된 다양한 실시형태들은 청구항들의 다양한 특징들을 예시하기 위한 예들로서 단지 제공된다. 하지만, 임의의 주어진 실시형태에 대해 도시되고 설명된 특징들은 반드시 연관된 실시형태로 제한될 필요는 없으며, 도시되고 설명된 다른 실시형태들과 사용되거나 결합될 수도 있다. 추가로, 청구항들은 어느 하나의 예시적인 실시형태에 의해 제한되도록 의도되지 않는다. 예를 들어, 본 명세서에 개시된 방법들의 동작들 중 하나 이상은 본 명세서에 개시된 방법들의 하나 이상의 동작으로 대체되거나 조합될 수도 있다.
전술한 방법 설명들 및 프로세스 플로우 다이어그램들은 단지 예시적인 예들로서 제공될 뿐이고 다양한 실시형태들의 블록들이 제시된 순서로 수행될 수도 있음을 요구 또는 의미하도록 의도되지 않는다. 당업자에 의해 인식될 바와 같이, 전술한 실시형태들에의 블록들의 순서는 임의의 순서로 수행될 수도 있다. "그 이후", "그 후", "다음" 등과 같은 단어들은 블록들의 순서를 제한하도록 의도되지 않으며; 이들 단어들은 방법들의 설명을 통해 독자를 안내하도록 간단히 사용된다. 추가로, 예를 들어, 관사들 ("a," "an" 또는 "the") 을 사용하여 단수로의 청구항 엘리먼트들에 대한 임의의 언급은 그 엘리먼트를 단수로 한정하는 것으로서 해석되지는 않는다.
본 명세서에 사용된 바와 같이, 아이템들의 리스트 "중 적어도 하나" 를 지칭하는 구절은, 단일 멤버들을 포함한 그러한 아이템들의 임의의 조합을 지칭한다. 일 예로서, "a, b, 또는 c: 중 적어도 하나" 는 a, b, c, a-b, a-c, b-c, 및 a-b-c 를 포함하도록 의도된다.
본 명세서에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 블록들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 양자의 조합으로 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호교환 가능성을 분명히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 블록들이 일반적으로 그들의 기능성의 관점에서 상기 기술되었다. 그러한 기능성이 하드웨어로서 구현될지 또는 소프트웨어로서 구현될지는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자는 설명된 기능성을 각각의 특정 애플리케이션에 대하여 다양한 방식으로 구현할 수도 있지만, 그러한 실시형태의 결정들이 다양한 실시형태들의 범위로부터의 벗어남을 야기하는 것으로 해석되지는 않아야 한다.
본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들 및 회로들을 구현하는데 사용되는 하드웨어 및 데이터 프로세싱 장치는 범용 단일- 또는 멀티-칩 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서, 또는 임의의 종래 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 조합, 예컨대 DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 이상의 마이크로프로세서, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다. 일부 실시형태들에서, 특정 프로세스들 및 방법들은 주어진 기능에 특정되는 회로부에 의해 수행될 수도 있다.
하나 이상의 양태에서, 설명된 기능들은, 본 명세서에 개시된 구조들 및 이들의 그 구조적 균등물들을 포함하여, 하드웨어, 디지털 전자 회로부, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 본 명세서에 설명된 청구물의 실시형태들은 하나 이상의 컴퓨터 프로그램, 즉 데이터 프로세싱 장치에 의한 실행을 위해, 또는 이 장치의 동작을 제어하기 위해 컴퓨터 판독가능 매체 상에 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈을 사용하여 구현될 수도 있다.
다양한 실시예들의 동작들을 수행하기 위해 프로그램가능 프로세서 상에서 실행하기 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드" 는 C, C++, C#, Smalltalk, Java, JavaScript, Visual Basic, Structured Query Language (예를 들어, Transact-SQL), Perl 과 같은 하이 레벨 프로그래밍 언어로, 또는 다양한 다른 프로그래밍 언어들로 기입될 수도 있다. 본 출원에서 사용된 바와 같이 프로그램 코드 또는 컴퓨터 판독 가능 저장 매체 상에 저장된 프로그램들은 포맷이 프로세서에 의해 이해가능한 (오브젝트 코드와 같은) 머신 언어 코드를 지칭할 수도 있다.
소프트웨어에서 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령 또는 코드로서 저장 또는 송신될 수도 있다. 본 명세서에 개시된 방법 또는 알고리즘의 프로세스들은 컴퓨터 판독가능 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈에서 구현될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 프로그램을 일 장소로부터 다른 장소로 전송하도록 인에이블될 수도 있는 임의의 매체를 포함하는 통신 매체들 및 컴퓨터 저장 매체들 양자 모두를 포함한다. 저장 매체는, 컴퓨터에 의해 액세스될 수도 있는 임의의 가용 매체일 수도 있다. 제한이 아닌 예로서, 그러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 지칭될 수도 있다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들은 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다. 부가적으로, 방법 또는 알고리즘의 동작들은 코드들 및 명령들 중 하나 또는 그 임의의 조합 또는 그 세트로서 머신 판독가능 매체 및 컴퓨터 판독가능 매체 상에 상주할 수도 있으며, 이들은 컴퓨터 프로그램 제품에 통합될 수도 있다.
본 개시에서 설명된 실시형태들에 대한 다양한 수정들은 당업자에게 용이하게 자명할 수도 있으며, 본 명세서에 정의된 일반적인 원리들은 본 개시의 범위로부터 벗어나지 않으면서 다른 실시형태들에 적용될 수도 있다. 따라서, 청구항들은 본 명세서에 나타낸 실시형태들에 제한되도록 의도되는 것이 아니라, 본 명세서에 개시된 이러한 개시, 원리들 및 신규한 피처들과 일치하는 최광의 범위에 부합되는 것으로 의도된다.

Claims (23)

  1. 메모리 디바이스의 판독/기입 트랜잭션 시퀀스의 일부로서 시스템 온 칩 (SOC) 에 액세스 패스/위반 피드백을 표시하기 위한 방법으로서,
    상기 메모리 디바이스의 메모리 액세스 제어를 구성하기 위한 구성 메시지를 상기 SOC 로부터 수신하는 단계;
    상기 구성 메시지에 기초하여 상기 메모리 액세스 제어를 구성하는 단계;
    상기 메모리 디바이스의 메모리 셀 어레이의 메모리 액세스 범위 및 메모리 베이스 어드레스에 대한 액세스를 요청하는 액세스 요청 메시지를 상기 SOC 로부터 수신하는 단계로서, 상기 액세스 요청 메시지는 판독/기입 동작을 포함하는, 상기 액세스 요청 메시지를 수신하는 단계;
    상기 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 상기 액세스 요청 메시지를 구성된 상기 메모리 액세스 제어와 비교하는 단계; 및
    상기 액세스 요청 메시지가 허용가능하다고 결정하는 것에 응답하여 상기 판독/기입 동작을 수행하는 단계를 포함하는, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 구성 메시지는 구성 보안 도메인 ID 를 포함하고; 그리고
    상기 액세스 요청 메시지는 요청된 보안 도메인 ID 를 포함하는, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 상기 액세스 요청 메시지를 구성된 상기 메모리 액세스 제어와 비교하는 단계는,
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭하는지 여부를 결정하는 단계; 및
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭한다고 결정하는 것에 응답하여:
    상기 액세스 요청 메시지가 허용가능하다고 결정하는 단계; 및
    상기 액세스 요청 메시지가 허용가능함을 표시하는 통지를 상기 SOC 로 송신하는 단계를 포함하는, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  4. 제 3 항에 있어서,
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭하지 않는다고 결정하는 것에 응답하여:
    상기 액세스 요청 메시지가 허용가능하지 않다고 결정하는 단계;
    상기 메모리 베이스 에드레스, 상기 메모리 액세스 범위, 및 상기 요청된 보안 도메인 ID 를 포함하는 에러 정보를 저장하는 단계;
    상기 액세스 요청 메시지가 허용가능하지 않음을 표시하는 통지를 상기 SOC 로 송신하는 단계; 및
    상기 SOC 로부터 에러 인터럽트 요청을 수신하는 것에 응답하여 상기 SOC 로 상기 에러 정보를 송신하는 단계를 더 포함하는, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  5. 제 2 항에 있어서,
    상기 구성 메시지는 상기 구성 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지이고; 그리고
    상기 액세스 요청 메시지는 상기 요청된 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지인, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 SOC 로부터 잠금해제 패스워드를 수신하는 단계;
    수신된 상기 잠금해제 패스워드가 상기 메모리 디바이스에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭하는지 여부를 결정하는 단계; 및
    상기 수신된 잠금해제 패스워드가 상기 허용가능한 패스워드들의 세트 내의 패스워드와 매칭한다고 결정하는 것에 응답하여 상기 메모리 액세스 제어가 상기 구성 메시지를 수신할 수 있도록 메모리 디바이스 게이트 로직을 잠금해제하는 단계를 더 포함하는, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 SOC 로부터, 상기 메모리 디바이스의 레지스터 내에 잠금 비트를 설정하도록 구성된 잠금 커맨드를 수신하는 단계; 및
    상기 구성된 메모리 액세스 제어에 대한 구성 변경들을 방지하도록 상기 잠금 비트를 설정하는 단계를 더 포함하는, SOC 에 액세스 패스/위반 피드백을 표시하기 위한 방법.
  8. 메모리 디바이스로서,
    메모리 셀 어레이;
    신뢰 하드웨어 블록; 및
    동작들을 수행하도록 구성된 액세스 제어 하드웨어 블록을 포함하고, 상기 동작들은,
    상기 메모리 디바이스의 메모리 액세스 제어를 구성하기 위한 구성 메시지를 시스템-온-칩 (SOC) 으로부터 수신하는 것;
    상기 구성 메시지에 기초하여 메모리 액세스 제어를 구성하는 것;
    상기 메모리 셀 어레이의 메모리 액세스 범위 및 메모리 베이스 어드레스에 대한 액세스를 요청하는 액세스 요청 메시지를 상기 SOC 로부터 수신하는 것으로서, 상기 액세스 요청 메시지는 판독/기입 동작을 포함하는, 상기 액세스 요청 메시지를 수신하는 것;
    상기 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 상기 액세스 요청 메시지를 구성된 상기 메모리 액세스 제어와 비교하는 것; 및
    상기 액세스 요청 메시지가 허용가능하다고 결정하는 것에 응답하여 상기 판독/기입 동작을 수행하는 것을 포함하는, 메모리 디바이스.
  9. 제 8 항에 있어서,
    상기 액세스 제어 하드웨어 블록은,
    상기 SOC 로부터 상기 구성 메시지를 수신하는 것이 구성 보안 도메인 ID 를 포함하는 구성 메시지를 수신하는 것을 포함하고; 그리고
    상기 SOC 로부터 액세스 요청 메시지를 수신하는 것이 요청된 보안 도메인 ID 를 포함하는 액세스 요청 메시지를 수신하는 것을 포함하도록
    동작들을 수행하도록 구성되는, 메모리 디바이스.
  10. 제 9 항에 있어서,
    상기 액세스 제어 하드웨어 블록은,
    상기 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 상기 액세스 요청 메시지를 구성된 상기 메모리 액세스 제어와 비교하는 것이,
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭하는지 여부를 결정하는 것; 및
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭한다고 결정하는 것에 응답하여:
    상기 액세스 요청 메시지가 허용가능하다고 결정하는 것; 및
    상기 액세스 요청 메시지가 허용가능함을 표시하는 통지를 상기 SOC 로 송신하는 것
    을 포함하도록 동작들을 수행하도록 구성되는, 메모리 디바이스.
  11. 제 10 항에 있어서,
    상기 액세스 제어 하드웨어 블록은,
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭하지 않는다고 결정하는 것에 응답하여:
    상기 액세스 요청 메시지가 허용가능하지 않다고 결정하는 것;
    상기 메모리 베이스 에드레스, 상기 메모리 액세스 범위, 및 상기 요청된 보안 도메인 ID 를 포함하는 에러 정보를 저장하는 것;
    상기 액세스 요청 메시지가 허용가능하지 않음을 표시하는 통지를 상기 SOC 로 송신하는 것; 및
    상기 SOC 로부터 에러 인터럽트 요청을 수신하는 것에 응답하여 상기 SOC 로 상기 에러 정보를 송신하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 메모리 디바이스.
  12. 제 9 항에 있어서,
    상기 액세스 제어 하드웨어 블록은,
    상기 SOC 로부터 상기 구성 메시지를 수신하는 것이 상기 구성 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지를 수신하는 것을 포함하고; 그리고
    상기 SOC 로부터 액세스 요청 메시지를 수신하는 것이 상기 요청된 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지를 수신하는 것을 포함하도록
    동작들을 수행하도록 구성되는, 메모리 디바이스.
  13. 제 8 항에 있어서,
    상기 신뢰 하드웨어 블록은,
    상기 SOC 로부터 잠금해제 패스워드를 수신하는 것;
    수신된 상기 잠금해제 패스워드가 상기 메모리 디바이스에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭하는지 여부를 결정하는 것; 및
    상기 수신된 잠금해제 패스워드가 상기 허용가능한 패스워드들의 세트 내의 패스워드와 매칭한다고 결정하는 것에 응답하여 상기 액세스 제어 하드웨어 블록이 상기 구성 메시지를 수신할 수 있도록 메모리 디바이스 게이트 로직을 잠금해제하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 메모리 디바이스.
  14. 제 8 항에 있어서,
    상기 액세스 제어 하드웨어 블록은,
    상기 SOC 로부터, 상기 메모리 디바이스의 레지스터 내에 잠금 비트를 설정하도록 구성된 잠금 커맨드를 수신하는 것; 및
    상기 구성된 메모리 액세스 제어에 대한 구성 변경들을 방지하도록 상기 잠금 비트를 설정하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 메모리 디바이스.
  15. 제 13 항에 있어서,
    상기 신뢰 하드웨어 블록은,
    허용가능한 패스워드들의 세트를 저장하도록 구성된 퓨즈 메모리;
    상기 메모리 디바이스 게이트 로직을 포함하는 패스 게이트; 및
    상기 퓨즈 메모리 및 상기 패스 게이트에 커플링된 로직 블록을 포함하고, 상기 로직 블록은,
    수신된 상기 잠금해제 패스워드가 상기 퓨즈 메모리에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭하는지 여부를 결정하고; 그리고
    상기 수신된 잠금해제 패스워드가 상기 퓨즈 메모리에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭한다고 결정하는 것에 응답하여 상기 메모리 디바이스 게이트 로직을 잠금해제하도록 상기 패스 게이트에 시그널링하도록 구성되는, 메모리 디바이스.
  16. 제 8 항에 있어서,
    상기 액세스 제어 하드웨어 블록은,
    액세스 제어 구성 블록;
    액세스 위반 신드롬; 및
    정책 시행 블록
    을 포함하는, 메모리 디바이스.
  17. 메모리 디바이스로서,
    메모리 셀 어레이;
    상기 메모리 디바이스의 메모리 액세스 제어를 구성하기 위한 구성 메시지를 시스템-온-칩 (SOC) 으로부터 수신하는 수단;
    상기 구성 메시지에 기초하여 상기 메모리 액세스 제어를 구성하는 수단;
    상기 메모리 셀 어레이의 메모리 액세스 범위 및 메모리 베이스 어드레스에 대한 액세스를 요청하는 액세스 요청 메시지를 상기 SOC 로부터 수신하는 수단으로서, 상기 액세스 요청 메시지는 판독/기입 동작을 포함하는, 상기 액세스 요청 메시지를 수신하는 수단;
    상기 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 상기 액세스 요청 메시지를 구성된 상기 메모리 액세스 제어와 비교하는 수단; 및
    상기 액세스 요청 메시지가 허용가능하다고 결정하는 것에 응답하여 상기 판독/기입 동작을 수행하는 수단을 포함하는, 메모리 디바이스.
  18. 제 17 항에 있어서,
    상기 SOC 로부터 상기 구성 메시지를 수신하는 수단은 구성 보안 도메인 ID 를 포함하는 구성 메시지를 수신하는 수단을 포함하고; 그리고
    상기 SOC 로부터 액세스 요청 메시지를 수신하는 수단은 요청된 보안 도메인 ID 를 포함하는 액세스 요청 메시지를 수신하는 수단을 포함하는, 메모리 디바이스.
  19. 제 18 항에 있어서,
    상기 액세스 요청 메시지가 허용가능한지 여부를 결정하기 위해 상기 액세스 요청 메시지를 구성된 상기 메모리 액세스 제어와 비교하는 수단은,
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭하는지 여부를 결정하는 수단;
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭한다고 결정하는 것에 응답하여 상기 액세스 요청 메시지가 허용가능하다고 결정하는 수단; 및
    상기 액세스 요청 메시지가 허용가능함을 표시하는 통지를 상기 SOC 로 송신하는 수단을 포함하는, 메모리 디바이스.
  20. 제 19 항에 있어서,
    상기 구성 보안 도메인 ID 가 상기 요청된 보안 도메인 ID 와 매칭하지 않는다고 결정하는 것에 응답하여 상기 액세스 요청 메시지가 허용가능하지 않다고 결정하는 수단; 및
    상기 메모리 베이스 에드레스, 상기 메모리 액세스 범위, 및 상기 요청된 보안 도메인 ID 를 포함하는 에러 정보를 저장하는 수단;
    상기 액세스 요청 메시지가 허용가능하지 않음을 표시하는 통지를 상기 SOC 로 송신하는 수단; 및
    상기 SOC 로부터 에러 인터럽트 요청을 수신하는 것에 응답하여 상기 SOC 에 상기 에러 정보를 송신하는 수단을 더 포함하는, 메모리 디바이스.
  21. 제 18 항에 있어서,
    상기 SOC 로부터 상기 구성 메시지를 수신하는 수단은 상기 구성 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지를 수신하는 수단을 포함하고; 그리고
    상기 SOC 로부터 액세스 요청 메시지를 수신하는 수단은 상기 요청된 보안 도메인 ID 를 포함하는 인코딩된 JEDEC 메시지를 수신하는 수단을 포함하는, 메모리 디바이스.
  22. 제 17 항에 있어서,
    상기 SOC 로부터 잠금해제 패스워드를 수신하는 수단;
    수신된 상기 잠금해제 패스워드가 상기 메모리 디바이스에 저장된 허용가능한 패스워드들의 세트 내의 패스워드와 매칭하는지 여부를 결정하는 수단; 및
    상기 수신된 잠금해제 패스워드가 상기 허용가능한 패스워드들의 세트 내의 패스워드와 매칭한다고 결정하는 것에 응답하여 상기 메모리 액세스 제어가 상기 구성 메시지를 수신할 수 있도록 메모리 디바이스 게이트 로직을 잠금해제하는 수단을 더 포함하는, 메모리 디바이스.
  23. 제 17 항에 있어서,
    상기 SOC 로부터, 상기 메모리 디바이스의 레지스터 내에 잠금 비트를 설정하도록 구성된 잠금 커맨드를 수신하는 수단; 및
    상기 구성된 메모리 액세스 제어에 대한 구성 변경들을 방지하도록 상기 잠금 비트를 설정하는 수단을 더 포함하는, 메모리 디바이스.
KR1020237001834A 2020-07-24 2021-07-19 인-메모리 디바이스 액세스 제어를 위한 방법들 및 장치 KR20230042455A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/937,907 US11636231B2 (en) 2020-07-24 2020-07-24 Methods and apparatus for in-memory device access control
US16/937,907 2020-07-24
PCT/US2021/042148 WO2022020225A1 (en) 2020-07-24 2021-07-19 Methods and apparatus for in-memory device access control

Publications (1)

Publication Number Publication Date
KR20230042455A true KR20230042455A (ko) 2023-03-28

Family

ID=77301004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237001834A KR20230042455A (ko) 2020-07-24 2021-07-19 인-메모리 디바이스 액세스 제어를 위한 방법들 및 장치

Country Status (7)

Country Link
US (1) US11636231B2 (ko)
EP (1) EP4185980B1 (ko)
KR (1) KR20230042455A (ko)
CN (1) CN116157797A (ko)
BR (1) BR112023000518A2 (ko)
TW (1) TW202221498A (ko)
WO (1) WO2022020225A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220035956A1 (en) * 2020-07-30 2022-02-03 Hewlett Packard Enterprise Development Lp Password-based access control for programmable logic devices
CN115918116A (zh) * 2020-10-09 2023-04-04 Oppo广东移动通信有限公司 信息处理方法、装置及存储介质
US12067261B2 (en) * 2021-07-15 2024-08-20 Rambus Inc. Serial presence detect logging
CN118519959A (zh) * 2024-07-24 2024-08-20 山东航天电子技术研究所 一种多用途通用性数据处理与控制SiP微系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612977B2 (en) * 2011-07-15 2017-04-04 Standard Microsystems Corporation Method and system for controlling access to embedded nonvolatile memories
US8893267B1 (en) * 2011-08-17 2014-11-18 Applied Micro Circuits Corporation System and method for partitioning resources in a system-on-chip (SoC)
US8775757B2 (en) * 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
CN105468962A (zh) * 2014-09-03 2016-04-06 阿里巴巴集团控股有限公司 用户界面解锁的方法及装置
US20180121125A1 (en) * 2016-11-01 2018-05-03 Qualcomm Incorporated Method and apparatus for managing resource access control hardware in a system-on-chip device
US10387333B2 (en) * 2017-01-05 2019-08-20 Qualcomm Incorporated Non-volatile random access memory with gated security access
US10591975B2 (en) * 2017-10-30 2020-03-17 Qualcomm Incorporated Memory access management for low-power use cases of a system on chip via secure non-volatile random access memory

Also Published As

Publication number Publication date
EP4185980B1 (en) 2024-07-10
US11636231B2 (en) 2023-04-25
WO2022020225A1 (en) 2022-01-27
BR112023000518A2 (pt) 2023-01-31
CN116157797A (zh) 2023-05-23
US20220027520A1 (en) 2022-01-27
EP4185980A1 (en) 2023-05-31
TW202221498A (zh) 2022-06-01
EP4185980C0 (en) 2024-07-10

Similar Documents

Publication Publication Date Title
US11636231B2 (en) Methods and apparatus for in-memory device access control
US11630904B2 (en) System, apparatus and method for configurable trusted input/output access from authorized software
US9202061B1 (en) Security enclave processor boot control
US9419794B2 (en) Key management using security enclave processor
US8775757B2 (en) Trust zone support in system on a chip having security enclave processor
US8832465B2 (en) Security enclave processor for a system on a chip
EP3274850B1 (en) Protecting a memory
US9043632B2 (en) Security enclave processor power control
US9853974B2 (en) Implementing access control by system-on-chip
US10318765B2 (en) Protecting critical data structures in an embedded hypervisor system
EP1801700B1 (en) Method and systems to restrict usage of a DMA channel
KR101870847B1 (ko) 단말 디바이스의 디버그 포트 제어 방법 및 장치
JP2017518558A (ja) アクセス保護スキームを確保するための装置及び方法
US20170277916A1 (en) Secure control of self-encrypting storage devices
WO2020029254A1 (zh) 一种SoC芯片及总线访问控制方法
US11615207B2 (en) Security processor configured to authenticate user and authorize user for user data and computing system including the same
US11468199B2 (en) Authenticated debug for computing systems
US9331855B2 (en) Apparatus, system, and method for providing attribute identity control associated with a processor
KR20240064635A (ko) 신뢰 수준 향상을 위한 센서 정보를 이용하는 장치 및 방법
US20240184890A1 (en) On-demand and secure hardware license-based sku creation for asics
JP2024515238A (ja) セキュアなシリアルペリフェラルインターフェイス通信
TW202240591A (zh) 唯讀記憶體(rom)安全性
TW202240406A (zh) 唯讀記憶體(rom)安全性
CN115905108A (zh) 一种用于risc-v芯片的iopmp架构实现方法
JPH0556035A (ja) 暗号集積回路装置,その管理方法及び暗号データ通信システム