KR20200135882A - 메모리 액세스 결정 - Google Patents

메모리 액세스 결정 Download PDF

Info

Publication number
KR20200135882A
KR20200135882A KR1020207033684A KR20207033684A KR20200135882A KR 20200135882 A KR20200135882 A KR 20200135882A KR 1020207033684 A KR1020207033684 A KR 1020207033684A KR 20207033684 A KR20207033684 A KR 20207033684A KR 20200135882 A KR20200135882 A KR 20200135882A
Authority
KR
South Korea
Prior art keywords
memory
privilege level
access
command
address
Prior art date
Application number
KR1020207033684A
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 KR20200135882A publication Critical patent/KR20200135882A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • G06F12/1441Protection 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 for a range
    • 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
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

컴퓨터 메모리 액세스 결정과 관련된 장치 및 방법이 설명된다. 커맨드는 메모리 시스템(예를 들어, DRAM을 갖거나 이용하는 시스템)에서 수신될 수 있다. 커맨드는 메모리 동작 및 복수의 특권 비트를 포함할 수 있다. 메모리 동작과 연관된 특권 레벨 또는 메모리 어드레스가 식별될 수 있다. 특권 레벨은 메모리 어드레스에 대응할 수 있으며 메모리 어드레스에 액세스할 수 있는 특권 레벨을 서술할 수 있다. 메모리 동작 또는 특정 데이터를 요청하거나 대응하는 명령어를 프롬프트하는 애플리케이션이 복수의 특권 비트 및 특권 레벨을 사용하여 메모리 어드레스에 액세스할 자격이 있는지에 대해 결정이 이루어질 수 있다. 메모리 동작이 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 메모리 동작이 처리될 수 있다.

Description

메모리 액세스 결정
본 개시내용은 일반적으로 메모리에 관한 것으로, 특히 메모리로의 액세스 특권을 결정하는 것과 연관된 장치 및 방법에 관한 것이다.
메모리 디바이스는 전형적으로 컴퓨터 또는 다른 전자 디바이스의 내부, 반도체, 집적 회로로서 제공된다. 휘발성 및 비 휘발성 메모리를 비롯한 많은 상이한 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지하기 위해 전력을 필요로 할 수 있으며 그 중에서도 랜덤 액세스 메모리(Random-Access Memory)(RAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory)(DRAM) 및 동기식 동적 랜덤 액세스 메모리(Synchronous Dynamic Random Access Memory)(SDRAM)를 포함한다. 비 휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있으며, 그 중에서도 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(read only memory)(ROM), 전기적 소거 가능 프로그램 가능 ROM(Electrically Erasable Programmable ROM)(EEPROM), 소거 가능 프로그램 가능 ROM(Erasable Programmable ROM)(EPROM), 및 가변 저항 메모리(resistance variable memory), 이를 테면 상변화 랜덤 액세스 메모리(phase change random access memory)(PCRAM), 저항성 랜덤 액세스 메모리(resistive random access memory)(RRAM) 및 자기저항성 랜덤 액세스 메모리(magneticoresistive random access memory)(MRAM)를 포함할 수 있다.
메모리는 또한 광범위한 전자 애플리케이션을 위한 휘발성 및 비 휘발성 데이터 저장소로서 사용된다. 비 휘발성 메모리는 예를 들어 퍼스널 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 셀룰러 텔레폰, MP3 플레이어와 같은 휴대용 음악 플레이어, 영화 플레이어 및 다른 전자 디바이스에 사용될 수 있다. 메모리 셀은 어레이로 배열될 수 있으며, 어레이는 메모리 디바이스에서 사용된다.
다양한 컴퓨팅 시스템은 한 세트의 명령어(예를 들어, 프로그램, 애플리케이션 등)의 실행과 관련하여 액세스되는 메모리(예를 들어, 메모리 시스템)에 결합되는 다수의 처리 자원을 포함한다. 컴퓨터 아키텍처 특징은 데이터에 액세스하려는 애플리케이션이나 프로그램이 그렇게 할 자격이 있는지 또는 그렇게 할 것으로 예상되는지에 관계없이, 종종 불법적인 목적으로 메모리에 저장된 데이터에 액세스하는 데 악용될 수 있다.
도 1a는 본 개시내용의 다수의 실시예에 따라 메모리 시스템을 포함하고 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템의 형태의 장치의 블록도이다.
도 1b는 본 개시내용의 다수의 실시예에 따라 메모리 시스템을 포함하고 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템의 형태의 장치의 블록도이다.
도 1c는 본 개시내용의 다수의 실시예에 따라 캐시 시스템을 포함하고 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템의 형태의 장치의 블록도이다.
도 2는 본 개시내용의 다수의 실시예에 따라 메모리 액세스 특권을 검증할 수 있는 메모리 시스템의 블록도이다.
도 3a는 본 개시내용의 일부 실시예에 따른 메모리 액세스 검증 로직의 블록도이다.
도 3b는 본 개시내용의 일부 실시예에 따른 메모리 액세스 검증 로직의 블록도이다.
도 4는 본 개시내용과 일관하는 메모리 액세스 검증을 위한 방법의 예시적인 흐름도를 도시한다.
도 5는 본 개시내용과 일관하는 메모리 액세스 검증을 위한 방법의 예시적인 흐름도를 도시한다.
본 개시내용은 메모리 액세스 검증과 관련된 장치 및 방법을 포함한다. 본 명세서에 설명된 바와 같이, 메모리 아키텍처는 컴퓨터(예를 들어, 중앙 처리 유닛(central processing unit)(CPU) 아키텍처의 특징이 데이터로의 특권 없는 액세스(unprivileged access)에 악용될 때 야기되는 문제를 방지하기 위해 활용될 수 있다. 메모리 시스템은 특권 부여된(privileged) 데이터와 비특권(non-privileged) 데이터를 포함할 수 있다. 특권 부여된 데이터는 특권을 통해 보호되는 데이터인 반면 비특권 데이터는 특권을 통해 보호되지 않는다. 처리 자원은 특권 부여된 데이터 및 비특권 데이터에 액세스할 수 있다. 처리 자원은 추측 실행(speculative execution) 동안 특권 부여된 데이터 및 비특권 데이터에 액세스할 수 있다. 본 명세서에 설명된 바와 같이, 특권 부여된 데이터로의 액세스를 제어하거나 제한하는 것을 돕기 위해 메모리 시스템에서 또는 메모리 시스템과 함께 도구 및 기술이 사용될 수 있다.
예시적인 방법은 메모리 커맨드 및 복수의 특권 비트를 포함하는 요청을 수신하는 단계 및 메모리 커맨드에 대응하는 메모리 어드레스와 연관된 특권 레벨을 식별하는 단계를 포함할 수 있다. 방법은 또한 메모리 커맨드에 대응하는 메모리 동작이 복수의 특권 비트 및 특권 레벨을 사용하여 메모리 어드레스에 액세스할 수 있는지를 결정하는 단계, 및 메모리 동작이 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 메모리 동작을 처리하는 단계를 포함할 수 있다.
컴퓨팅 시스템은 분기 예측(branch prediction) 및/또는 추측 실행을 이용하여 성능을 개선할 수 있다. 분기 예측은 분기하는 비용을 완화하려 시도하는 컴퓨터 아키텍처에 대한 접근법이다. 본 명세서에서 사용되는 바와 같이, 분기는 조건문의 가능한 실행 스트림이다. 조건문은 조건문의 결과에 기초하여 프로그램의 실행을 상이한 스트림으로 향하게 할 수 있는 하나 이상의 분기를 포함할 수 있다. 예를 들어, 조건문은 다른 유형의 조건문 중에서도 if-then-else 문 또는 case 문을 포함할 수 있다. 조건문은 추가 실행을 위해 분기를 선택하는 데 사용될 수 있는 부울 조건(Boolean condition)을 포함할 수 있다.
분기 예측에서, 처리 자원은 분기를 선택하고 분기를 실행할 수 있으며, 여기서 분기는 실행 중인 작업에 따라 달라진다. 예를 들어, 처리 자원은 동작(예를 들어, 판독 동작)이 완료되기를 기다리는 동안 분기를 선택하고 분기에 대응하는 커맨드를 처리할 수 있다. 동작을 완료하면, 처리 자원은 예측된 분기를 폐기하거나 또는 예측된 분기와 연관된 추측 계산을 커밋할 수 있다.
추측 실행 또는 추측 계산으로 지칭될 수 있는 추측은 처리 자원이 현재 필요하지 않은 커맨드를 수행하는 최적화 기술이다. 커맨드의 실행은 커맨드가 필요하다고 알게 된 후에 커맨드를 수행함으로써 초래될 지연을 방지하기 위해 커맨드가 실제로 필요한지를 알기 전에 수행된다. 예를 들어, 하나의 분기가 선택될 가능성이 가장 높은 분기로서 예측된 후에, 추측 컴퓨팅은 분기의 선택으로부터 도출된 실행 작업을 포함할 수 있다. 추측 컴퓨팅은 명령어(예를 들어, 커맨드/동작)의 비 순차적 실행을 의미한다. 본 명세서에서 사용되는 바와 같이, 처리 자원은 메모리 자원에 커맨드를 발행할 수 있다. 메모리 자원은 커맨드를 처리하고 커맨드에 대응하는 메모리 동작을 수행할 수 있다.
다양한 예에서, 추측 실행은 보안 취약점으로 이어질 수 있다. 예를 들어, 추측 실행은 특권 없는 엔티티(예를 들어, 사용자)가 특권 부여된 데이터에 액세스하는 기회를 제공할 수 있다. 본 명세서에 사용되는 바와 같이, 특권 부여된 데이터는 특정한 특권 레벨을 통해 보호되고 특정한 특권 레벨을 가진 데이터에 액세스하는 허가를 승인받지 않은 엔티티(예를 들어, 특권 없는 사용자)가 액세스할 수 없도록 설계된 데이터를 의미한다. 추측 계산은 특권 부여된 데이터에 액세스하는 데 사용되는 특권 레벨을 검증하지 않고 특권 부여된 데이터를 캐시로 이동함으로써 특권 없는 엔티티가 간접 채널(indirect channel) 또는 "부채널(side channel)"을 통해 특권 부여된 데이터에 액세스하는 기회를 제공할 수 있다.
물리적 디바이스에 의해 수행되는 계산은 계산의 공칭 출력을 넘어서 관찰 가능한 부작용을 남길 수 있다. 부채널 공격은 부작용을 악용하여 그렇게 하지 않았더라면 이용 가능하지 않은 특권 부여된 데이터를 추출한다. 예를 들어, 분기 예측 및 추측 계산은 특권 부여된 데이터를 처리 자원에 이용 가능한 캐시 및/또는 레지스터로 이동하는 것을 포함할 수 있다. 예측을 폐기하는 것은 캐시에 저장된 데이터를 폐기(예를 들어, 삭제)하는 것을 포함하지 않을 수 있다. 부채널 공격은 캐시에 저장된 특권 부여된 데이터에 액세스하는 것을 포함될 수 있다.
분기 예측 및 추측 실행의 취약성을 이용하는 부채널 공격의 두 가지 예는 멜트다운(Meltdown)으로 알려진 공격 유형과 스펙터(Spectre)로 알려진 연결 유형을 포함한다. 멜트다운 공격은 데이터 값이 캐시 미스로부터 포착될 수 있는 부채널 공격이다. 스펙터 공격은 명령어의 추측 실행이 정보를 유출하는 특권 부여된 동작을 수행하게 할 수 있다. 두 공격 모두에서 악용된 취약성은 궁극적으로 식별되고 해결될 수 있지만, 공격은 명령어를 실행하여 특권 부여된 정보에 액세스한다.
멜트다운 유형의 공격은 추측 실행에 의존하여 메모리 위치(예를 들어, 어드레스)의 내용을 누설한다. 처리 자원은 커널을 사용자의 어드레스 공간에 매핑하여 더 빠른 트랩 및 액세스를 용이하게 할 수 있다. 그러나 처리 자원은 커널 어드레스 공간에 액세스할 수 있는(예를 들어, 그에 대해 동작하는) 허가를 갖지 못할 수 있다. 처리 자원은 선택될 분기를 검증하는 동안 달리 특권 없는(예를 들어, 불법적) 메모리 커맨드를 발행할 수 있다. 메모리 커맨드에 대응하는 불법적 메모리 동작(들)을 되돌리는 경우, 처리 자원은 예외를 발행하거나 리턴(return)(예를 들어, 예외 발생(throw))할 수 있다. 악성 코드는, 처리 자원을 통해, 예외를 억제하고 현재 어느 어레이 캐시 라인이 캐시에 있는지를 결정함으로써 특권 부여된 데이터로의 액세스를 가능하게 할 수 있다.
스펙터 유형의 공격은 추측 실행을 악용하고 처리 자원의 분기 타겟 버퍼(branch target buffer)(BTB)를 지나치게 한다. BTB는 취해진 조건 분기(conditional branch) 또는 무조건 분기(unconditional branch) 명령어의 타겟을, 그 분기 명령어의 타겟이 처리 자원의 실행 유닛에 의해 계산되기 전에 예측하는 처리 자원의 일부분이다. 한 번 더 되풀이하면, 스펙터 유형의 공격에서, 처리 자원은 특권 부여된 데이터를 캐시에 배치하도록 구성할 수 있으며, 그런 다음 특권 없는 엔터티에 의해 캐시로부터 추출될 수 있다.
분기 예측 및 예측 실행과 연관된 취약성을 해결하기 위해 다수의 상이한 접근법이 사용될 수 있다. 예를 들어, 분기 예측 및/또는 추측 실행이 디스에이블될 수 있거나 또는 페이지 부재(page fault)에 대한 추측을 방지하는 규칙이 제공될 수 있다. 그러나 두 옵션 모두는 시스템에 미치는 상당한 성능 영향을 제공할 수 있는 분기 예측 및 추측 실행을 수행하는 능력을 제한한다.
다수의 실시예에서, 메모리 동작이 수행되어야하는지를 결정하기 위해 메모리 디바이스에서 특권이 시행될 수 있다. 특권은, 예를 들어 본 명세서에 설명된 다양한 실시예를 사용하여 시행될 수 있다.
본 개시내용의 다음의 상세한 설명에서, 본 개시내용의 일부를 형성하고 본 개시내용의 다수의 실시예가 어떻게 실시될 수 있는지를 예시를 통해 도시하는 첨부 도면이 참조된다. 이들 실시예는 관련 기술분야의 통상의 기술자가 본 개시내용의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예가 이용될 수 있고 프로세스, 전기적 및/또는 구조적 변경이 본 개시내용의 범위를 벗어나지 않고 이루어질 수 있다는 것을 이해해야 한다. 본 명세서에서 사용되는 바와 같이, 지정어 "N"은 그렇게 지정된 다수의 특정한 특징이 본 개시내용의 다수의 실시예와 함께 포함될 수 있음을 나타낸다.
본 명세서에서 사용되는 바와 같이, "다수의" 어떤 것은 그러한 것 중 하나 이상을 지칭할 수 있다. 예를 들어, 다수의 메모리 디바이스는 하나 이상의 메모리 디바이스를 의미할 수 있다. "복수"의 어떤 것은 둘 이상을 의미한다. 또한, 특히 도면에서 참조 번호와 관련하여 본 명세서에서 사용되는 것으로 "N"과 같은 지정어는 그렇게 지정된 다수의 특정한 특징이 본 개시내용의 다수의 실시예와 함께 포함될 수 있음을 나타낸다.
본 명세서에서 도면은 첫 번째 숫자 또는 숫자들이 도면의 번호에 대응하고 나머지 숫자는 도면의 요소 또는 컴포넌트를 식별하는 번호 지정 관행을 따른다. 서로 다른 도면에서 유사한 요소 또는 컴포넌트는 유사한 숫자를 사용하여 식별될 수 있다. 인식하는 바와 같이, 본 명세서의 다양한 실시예에 도시된 요소는 본 개시내용의 다수의 부가적 실시예를 제공하기 위해 추가되고, 교환되고 및/또는 제거될 수 있다. 또한, 도면에 제공된 요소의 비율 및 상대적인 규모는 본 개시내용의 다양한 실시예를 예시하려는 것이며 제한적인 의미로 사용되지 않는다.
도 1a는 본 개시내용의 다수의 실시예에 따라 메모리 시스템(120)을 포함하고 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템(160)의 형태의 장치의 블록도이다. 본 명세서에서 사용된 바와 같이, "장치"는, 이것으로 제한되는 것은 아니지만 회로 또는 회로들, 다이 또는 다이들, 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들과 같은 다양한 구조 또는 구조들의 조합을 지칭할 수 있다. 예를 들어, 호스트(102) 및/또는 메모리 시스템(120)은 개별적으로 "장치"로 지칭될 수 있다.
메모리 시스템(120)은 다수의 채널을 포함할 수 있으며, 각각의 채널은 그에 대응하는 다수의 디바이스(예를 들어, 칩, 다이 등)를 갖는다. 각각의 디바이스는 다수의 뱅크(예를 들어, 메모리 셀)를 포함할 수 있다. 도 1a에 도시되지 않았지만, 메모리 시스템(120)은 다수의 메모리 채널을 서비스할 수 있는 컨트롤러를 포함할 수 있다. 대안적으로, 컨트롤러는 다수의 별개 제어기로 (예를 들어, 다수 채널의 각각에 대해 하나씩) 구현될 수 있다. 예를 들어, 메모리 시스템(120)은 복수의 모듈(예를 들어, 듀얼 인-라인 메모리 모듈(dual in-line memory module)(DIMM))을 포함할 수 있다.
호스트(102)는 적합한 인터페이스를 통해 메모리 시스템(120)과 (예를 들어, 컨트롤러를 통해) 통신할 수 있다. 컴퓨팅 시스템(160)은 다른 시스템 중에서도, 랩톱 컴퓨터, 퍼스널 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 디바이스, 모바일 텔레폰, PDA, 메모리 카드 판독기, 인터페이스 허브, 센서, 사물 인터넷(Internet-of-Things)(IoT) 가능 디바이스일 수 있으며, 호스트(102)는 (예를 들어, 컨트롤러를 통해) 메모리 시스템(120)에 액세스할 수 있는 다수의 처리 자원(예를 들어, 하나 이상의 프로세서)를 포함할 수 있다. 호스트(102)는 (예를 들어, 메모리 시스템(120)으로부터) 로드될 수 있는 운영 체제(operating system)(OS) 및/또는 다양한 애플리케이션의 실행을 담당할 수 있다.
컨트롤러는 호스트(102)로부터 메모리 액세스 요청을 (예를 들어, 로드 및 저장 커맨드로 각각 지칭될 수 있는 판독 및 기입 커맨드의 형태로) 수신할 수 있다. 컨트롤러는, 예를 들어 적합한 프로토콜을 사용하는 버스와 같은 물리적 인터페이스를 포함할 수 있는 하나 이상의 인터페이스를 통해 호스트(102)와 메모리 시스템(120) 사이에서 커맨드 및/또는 데이터를 전송할 수 있다. 이러한 프로토콜은 사용자 정의되거나 독점적일 수 있고, 또는 하나 이상의 인터페이스는 표준화된 프로토콜, 이를테면 DDR4, DDR5, HMC, HBM (또는 유사/후속 메모리 인터페이스 표준), 주변 컴포넌트 상호연결 익스프레스(Peripheral Component Interconnect Express)(PCIe), Gen-Z, CCIX, DDR 기반 동기식 메모리 프로토콜 등을 사용할 수 있다.
예를 들어, 인터페이스는 조합된 어드레스, 커맨드, 및 각각의 어드레스, 커맨드 및 데이터 신호용 데이터 버스 또는 별개의 버스를 포함할 수 있다. 컨트롤러는 하드웨어, 펌웨어 또는 소프트웨어, 또는 세 가지의 임의의 조합 형태의 제어 회로를 포함할 수 있다. 예를 들어, 컨트롤러는 상태 머신, 시퀀서 및/또는 인쇄 회로 기판에 결합된 주문형 집적 회로(application specific integrated circuit)(ASIC)의 형태로 구현될 수 있는 일부 다른 유형의 제어 회로를 포함할 수 있다. 다수의 실시예에서, 컨트롤러는 호스트(102)와 함께 (예를 들어, 시스템 온 칩(system-on-chip)(SOC) 구성으로) 배치될 수 있다. 또한, 컨트롤러는 메모리 시스템(120)과 함께 배치될 수 있다.
메모리 시스템(120)은 다수의 메모리 디바이스를 포함할 수 있다. 메모리 디바이스는 (예를 들어, 어레이로부터 데이터를 판독하고 데이터를 어레이에 기입하기 위해) 어레이(들)에 액세스하는 것과 연관된, 메모리 셀의 다수의 어레이(예를 들어, 뱅크) 및 대응하는 지원 회로(예를 들어, 어드레스 회로, I/O 회로, 제어 회로, 판독/기입 회로 등)를 각각 포함할 수 있는 다수의 물리적 메모리 "칩" 또는 다이를 포함할 수 있다. 예를 들어, 메모리 디바이스는 다수의 DRAM 디바이스, SRAM 디바이스, PCRAM 디바이스, RRAM 디바이스, FeRAM, 상변화 메모리, 3DXP 및/또는 플래시 메모리 디바이스를 포함할 수 있다. 다수의 실시예에서, 메모리 시스템(120)은 컴퓨팅 시스템의 메인 메모리로서 기능할 수 있다.
호스트(102)는 메모리 시스템(120)에 커맨드(134) 및/또는 자격 증명을 제공할 수 있다. 커맨드(134)는 어드레스 정보를 포함할 수 있다. 일부 예에서, 호스트(102)는 메모리 커맨드 및 메모리 어드레스 정보를 포함하는 시그널링을 커맨드/어드레스 버스를 통해 전송하고, 메모리 커맨드 및 메모리 어드레스 정보는 메모리 시스템(120)의 각자의 핀 또는 대응하는 핀에서 수신된다. 더블 데이터 레이트(double-data rate) 프로토콜 사양(예를 들어, DDR4, DDR5 등)에 따라 동작하는 시스템이 이러한 방식을 사용할 수 있다. 자격 증명은 커맨드(134) 및/또는 대응하는 동작의 특권 레벨을 정의하는 특권 비트를 포함할 수 있다. 커맨드(134)는 메모리 시스템(120)에서 실행될 대응하는 메모리 동작을 가질 수 있다. 호스트(102)로부터 메모리 시스템(120)으로 제공되는 커맨드는 특권 레벨을 포함할 수 있다. 특권 레벨은 호스트(102)를 통해 커맨드(134)를 제공하는 애플리케이션 및/또는 쓰레드의 특권 레벨을 서술할 수 있다. 본 명세서에서 사용되는 바와 같이, 애플리케이션은 조정된 기능, 작업 및/또는 활동을 수행하기 위해 실행될 수 있는 컴퓨터 판독 가능 명령어를 서술할 수 있다. 쓰레드는 처리 자원에 대응하는 레지스터의 값을 서술할 수 있다. 레지스터에 저장된 값은 하나 이상의 애플리케이션 또는 하나 이상의 애플리케이션의 일부의 실행을 제어하는 데 사용할 수 있다. 기능, 작업 및/또는 활동은 메모리 커맨드(134)에 대응하는 메모리 동작을 사용하여 수행되어 데이터를 판독 및/또는 메모리에 기입할 수 있다. 예를 들어, 기능, 작업 및/또는 활동은 메모리 시스템에 저장된 데이터를 사용하여 메모리 시스템(120)에서 수행될 논리 동작과 같은 커맨드(134)에 대응하는 다른 동작 중에서도, 판독 동작 및/또는 기입 동작을 포함할 수 있다. 특권 레벨은 다수의 특권 비트를 사용하여 서술될 수 있다.
특권 비트는 메모리 시스템(120)에 제공되는 각각의 커맨드와 함께 제공될 수 있다. 예를 들어, 호스트(102)는 특권 비트를 생성하고 각각의 메모리 커맨드(134)에 제공하도록 구성될 수 있다. 일부 예에서, 특권 비트는 메모리 커맨드(134)를 통해 제공되는 메모리 동작과 통합될 수 있다. 예를 들어, 특권 비트는 메모리 커맨드를 제공하는 데 사용되는 핀에 대응하는 핀을 사용하여 제공될 수 있다. 특권 비트는 메모리 커맨드(134)와 무관할 수 있다. 예를 들어, 특권 비트는 커맨드(134)와 별도로 제공될 수 있다. 특권 비트는 커맨드를 제공하는 데 사용되는 핀에 대응하지 않는 핀을 사용하여 제공될 수 있다.
메모리 시스템(120)은 또한 특권 비트 및 메모리 동작을 수신하도록 구성될 수 있다. 특권 비트 및 메모리 동작은 요청 및/또는 커맨드(134)의 형태로 수신될 수 있다. 예를 들어, 메모리 커맨드(134)는 메모리 동작 및/또는 특권 비트를 포함할 수 있다. 다른 예에서, 메모리 동작은 수신된 커맨드(134)에 기초하여 선택/생성될 수 있다. 커맨드(134)는 메모리 동작과 연관된 메모리 어드레스를 포함할 수 있다. 예를 들어, 메모리 커맨드(134)가 판독 커맨드이고 대응하는 메모리 동작이 판독 동작이면, 메모리 어드레스는 판독될 베이스 어드레스(base address)일 수 있다. 메모리 동작은 또한 메모리 동작과 연관된 복수의 메모리 어드레스를 포함할 수 있다. 복수의 메모리 어드레스는 판독될 또는 기입될 메모리 어드레스의 범위를 정의할 수 있다. 복수의 메모리 어드레스는 연속적 (예를 들어, 연이은) 어드레스 및/또는 불연속적 어드레스일 수 있다. 일부 예에서, 복수의 메모리 어드레스는 메모리 동작이 복수의 메모리 어드레스 각각을 사용하여 개별적으로 반복되도록 요청하는 단일 메모리 동작 및/또는 커맨드(134)와 함께 제공될 수 있다. 예를 들어, 두 개의 메모리 어드레스가 메모리 동작과 함께 제공되면, 메모리 동작은 첫 번째로 제1 메모리 어드레스에서 수행되고 두 번째로 제2 메모리 어드레스에서 수행될 수 있다.
메모리 커맨드(134)와 함께 제공된 메모리 어드레스(들)에 대한 특권 레벨이 식별될 수 있다. 특권 레벨은 메모리 어드레스에 액세스하는 데 필요한 특권 레벨을 나타낼 수 있다. 메모리 어드레스와 연관된 특권 레벨은 메모리 동작과 연관된 특권 비트와 비교되어 메모리 동작이 메모리 어드레스에 액세스하는 데 필요한 적절한 특권 레벨을 갖고 있는지를 결정할 수 있다. 예를 들어, 메모리 동작과 대응하는 특권 비트는 제1 개수의 특권 비트일 수 있고, 메모리 어드레스와 대응하는 특권 레벨은 제2 개수의 특권 비트를 생성하는데 사용될 수 있다. 제1 개수의 특권 비트는 제2 개수의 특권 비트와 비교할 수 있다. 메모리 동작은 제1 개수의 특권 비트가 제2 개수의 특권 비트와 매칭한다고 결정하는 것에 응답하여 수행될 수 있다. 예를 들어, 메모리 동작은 메모리 동작이 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여 수행될 수 있다. 메모리 동작은 제1 개수의 특권 비트가 제2 개수의 특권 비트와 매칭하면 메모리 어드레스에 액세스할 수 있다. 다양한 예에서, 제1 개수의 특권 비트가 제2 개수의 특권 비트와 매칭하지 않는다고 결정하는 것에 응답하여 메모리 동작이 수행되는 것이 방지될 수 있다.
일부 실시예에서, 메모리 시스템(120)은, 메모리 액세스 검증 로직을 통해, 메모리 동작이 (예를 들어, 불충분한 특권 레벨로 인해) 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여 예외를 생성할 수 있다. 이것은 "예외 발생(throwing an exception)"으로 지칭할 수 있으며, 하나 이상의 메모리 동작의 실행을 일시 중단할 수 있다. 본 명세서에서 사용되는 바와 같이, 예외는 비정상적인 프로그램 제어 흐름에서 일어나는 오류 조건 또는 상태를 표시할 수 있다. 즉, 예외는 하나 이상의 메모리 동작의 실행 흐름을 인터럽트할 수 있다. 호스트(102)는, 처리 자원을 통해, 예외의 생성 및/또는 수신에 응답하여 미리 등록된 예외 핸들러를 실행할 수 있다. 일부 예에서, 메모리 시스템(120)의 처리 자원은 예외를 생성할 수 있고 예외 핸들러(exception handler)를 실행할 수 있다. 호스트(102)의 처리 자원은 예외를 수신할 수 있고 예외 핸들러를 실행할 수 있다.
예외는, 예를 들어 데이터가 메모리 시스템(120)으로부터 호스트(102)로 이동되기 전에 발생되고 처리될 수 있다. 예를 들어, 예외는 데이터가 메모리 시스템으로부터 호스트(102)에 대응하는 캐시로 이동되는 것을 방지할 수 있다.
일부 예에서, 메모리 시스템(120)은 메모리 동작에 의해 액세스되는 특권 부여된 데이터와는 상이한 미리 결정된 데이터를 제공함으로써 메모리 동작의 실행을 인터럽트할 수 있다. 예를 들어, 메모리 시스템(120)은 메모리 동작과 함께 제공되는 특권 비트가 메모리 어드레스에 대응하는 특권 레벨에 대응하지 않는다고 결정하는 것에 응답하여 모두 "0" 및/또는 모두 "1"을 포함하는 데이터 패턴을 제공할 수 있다. 데이터 패턴을 제공하게 되면 메모리 동작과 연관된 실행 스트림이 특권 부여된 데이터를 계속 제공하지 않게 할 수 있다.
메모리 시스템(120)에 저장된 특권 부여된 데이터와 연관된 특권 레벨은 특권 레지스터(137) 및/또는 메모리 시스템(120)의 메모리 디바이스(예를 들어, 메모리 셀 어레이)에 특권 비트로서 저장될 수 있다. 일부 예에서, 특권 비트는 메모리 커맨드(134)와 함께 제공되는 메모리 동작으로부터 도출될 수 있다. 예를 들어, 메모리 시스템(120)은 어드레스를, 특권 레지스터(137) 및/또는 메모리 디바이스로부터의 비트에 액세스하지 않고, 특권 부여되는 것으로 그리고 특권의 레벨로서 식별하도록 구성될 수 있다. 예를 들어, 메모리 시스템(120)은 메모리 어드레스로부터 특권 비트를 생성할 수 있다.
데이터 패턴은 메모리 작업에 메모리 어드레스에 액세스하지 못하는 것을 식별할 수 있다. 예를 들어, 처리 자원은 메모리 시스템(120)에 의해 제공된 데이터를 분석함으로써 메모리 동작이 메모리 어드레스에 액세스할 수 있는지를 결정하도록 구성될 수 있다. 처리 자원은 메모리 시스템(120)에 의해 제공된 데이터 패턴에 기초하여 메모리 시스템(120)에 의해 제공된 데이터로부터 부재 및/또는 메타데이터를 식별할 수 있다. 예를 들어, 제1 데이터 패턴은 메모리 동작을 어드레스의 범위에 액세스하지 못하는 것으로 서술할 수 있는 반면, 제2 데이터 패턴은 메모리 동작을 전체 어드레스 범위가 아니라 어드레스 범위의 일부에 액세스하지 못하는 것으로 서술할 수 있다. 본 명세서에 설명된 예는 패턴의 유형 및/또는 데이터 패턴의 유형과 연관될 수 있는 메타데이터로 제한되지 않아야 한다.
메모리 동작 및/또는 허가 비트를 포함하는 커맨드(134)(예를 들어, 요청)는 예측된 분기의 일부일 수 있고 추측적일 수 있다. 예를 들어, BTB는 분기를 예측할 수 있고 처리 자원은 추측 메모리 동작 및/또는 분기에 대응하는 메모리 커맨드(134)를 선택할 수 있다. 처리 자원은 메모리 동작 및 디폴트 특권 비트를 포함하는 요청을 생성할 수 있다. 디폴트 특권 비트는 최저 특권 레벨일 수 있고 및/또는 처리 자원에 의해 실행되는 쓰레드에 대응할 수 있다. 메모리 시스템(120)은 위에서 설명한 바와 같이 메모리 동작이 디폴트 특권 비트를 사용하여 메모리 어드레스에 액세스할 수 있는지를 결정할 수 있다.
도 1b는 본 개시내용의 다수의 실시예에 따라 메모리 시스템을 포함하고 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템의 형태의 장치의 블록도이다. 도 1b의 예에서, 커맨드(138)와 연관된 특권 레벨은 별도의 메시지 및/또는 특수 커맨드(136-1)에서 제공될 수 있다.
특수 커맨드(136-1)는 특수 커맨드(136-1)와 별도로 제공되는 다수의 메모리 커맨드(138)에 대한 특권 레벨을 정의하는 호스트(102)로부터 메모리 시스템(120)으로 제공되는 메시지일 수 있다. 특수 커맨드(136-1)는 메모리 시스템(120)의 모드 레지스터(예를 들어, 모드 레지스터(139))에 저장될 특권 레벨을 제공할 수 있다. 특권 레벨은 특수 커맨드(136-2)를 사용하여 리셋될 수 있다. 특수 커맨드(136-2)는 또한 호스트(102)로부터 메모리 시스템(120)으로 제공될 수 있다. 메모리 시스템(120)은 특수 커맨드(136-2)를 수신하는 것에 응답하여 시스템(120)의 모드 레지스터(139)를 리셋할 수 있다.
특수 커맨드(136-1)를 수신하면, 메모리 시스템(120)은 메모리 액세스 검증 로직을 통해 특수 커맨드(136-1)와 함께 제공된 특권 비트를 추출할 수 있다. 특권 비트는 예를 들어 특수 커맨드(136-1)를 따르는 임의의 메모리 커맨드의 특권 레벨을 식별할 수 있다. 메모리 시스템(120)은 특권 비트를 메모리 시스템(120)의 모드 레지스터(139)에 저장할 수 있다. 모드 레지스터(139)는 메모리 커맨드(138)의 특권 레벨을 식별하는 데 사용될 수 있는 특권 모드를 정의할 수 있다.
메모리 시스템(120)은 분리되거나 통합될 수 있는 다수의 모드 레지스터(139)를 포함할 수 있다. 예를 들어, 메모리 시스템(120)은 특정 쓰레드 및/또는 처리 자원에 대응하는 모드 레지스터를 제공하는 부분으로 분할되는 복수의 연속 레지스터(예를 들어, 모드 레지스터(139))를 포함할 수 있다. 메모리 시스템(120)은 또한 연속적이지 않은 복수의 모드 레지스터(139)를 포함할 수 있으며, 여기서 복수의 모드 레지스터(139) 각각은 하나 이상의 쓰레드 및/또는 처리 자원에 대응한다. 메모리 시스템(120)은 복수의 모드 레지스터(139)를 이용하여 복수의 상이한 쓰레드 및/또는 처리 자원에 대한 특권 모드를 특권 비트의 형태로 저장할 수 있다. 예를 들어, 메모리 시스템(120)은 제1 특권 모드를 제1 쓰레드 및/또는 처리 자원에 대응하는 제1 특권 레지스터에 저장할 수 있고, 메모리 시스템(120)은 제2 특권 모드를 제2 쓰레드 및/또는 처리 자원에 대응하는 제2 특권 레지스터에 저장할 수 있다. 그렇게 하면, 일부 예에서, 메모리 시스템(120)이 상이한 쓰레드 및/또는 처리 자원에 대한 특권 모드를 추적할 수 있게 하고 메모리 시스템(120)이 상이한 특권 모드에 대응하는 메모리 자원의 액세스에 대한 특권에 기반한 제한(privilege-based restriction)을 구현할 수 있게 한다.
상이한 쓰레드 및/또는 처리 자원에 대응하는 특권 모드를 구현하는 것은 쓰레드 ID를 사용하여 특권 모드를 식별하는 것 및/또는 자원 ID를 처리하는 것 또는 특권 모드가 대응하는 쓰레드 ID 및/또는 처리 ID에 대해 존재하지 않는다고 결정하는 것을 포함할 수 있다. 이러한 예에서, 특수 커맨드(136-1)는 특권 모드 및 식별(ID)을 포함할 수 있다. 특권 모드는 ID를 이용하여 모드 레지스터(139)에 저장될 수 있다. 예를 들어, 제1 ID 및 제1 특권 모드는 제1 모드 레지스터에 저장될 수 있고, 제2 ID 및 제2 특권 모드는 제2 모드 레지스터에 저장될 수 있다.
일부 실시예에서, 모드 레지스터(139)는 상이한 ID와 연관될 수 있다. 예를 들어, 제1 모드 레지스터는 제1 ID(예를 들어, 쓰레드 ID 및/또는 처리 자원 ID)에 대응하는 특권 모드를 저장할 수 있는 반면 제2 모드 레지스터는 제2 ID에 대응하는 특권 모드를 저장할 수 있다. 모드 레지스터(139)를 ID와 연관시키는 것은 특권 모드에 대응하는 ID를 저장할 필요성을 제거함으로써 저장되는 데이터의 양을 줄일 수 있다. 예를 들어, 제1 모드 레지스터는 제1 ID를 저장하지 않고 제1 ID에 대응하는 특권 모드를 저장할 수 있고, 제2 모드 레지스터는 제2 ID를 저장하지 않고 제2 ID에 대응하는 특권 모드를 저장할 수 있다. 특권 모드 및 ID가 모드 레지스터(139)에 저장되는 것으로 설명되지만, 특권 모드 및 ID는 메모리 디바이스와 같은 메모리 시스템(120)의 메모리 자원에도 또한 저장될 수 있다.
메모리 동작 및 일부 예에서는 ID를 포함하는 메모리 커맨드(138)를 수신하는 것에 응답하여, 메모리 시스템(120)은 저장된 특권 모드를 이용하여 메모리 커맨드(138)를 처리할지를 결정할 수 있다. 예를 들어, 메모리 시스템(120)은 메모리 커맨드(138)를 수신하는 것에 응답하여 모드 레지스터(139)로부터 특권 모드를 검색할 수 있다. 검색된 특권 모드는 메모리 커맨드(138)에 대응할 수 있다. 예를 들어, 다수의 특권 모드가 모드 레지스터(139)에 저장되면, 메모리 시스템(120)은 특권 모드를 검색하기 위해 메모리 커맨드(138)와 함께 제공된 ID를 이용할 수 있다. 단일 특권 모드가 모드 레지스터(139)에 저장되어 있으면, 메모리 시스템(120)은 ID를 이용하지 않고 특권 모드를 검색할 수 있다.
메모리 시스템(120)은 호스트(102)로부터 수신된 특권 모드를 메모리 어드레스에 대응하는 특권 모드와 비교할 수 있다. 메모리 커맨드(138)에 대응하는 특권 모드가 메모리 어드레스에 대응하는 특권 모드에 의해 식별된 특권 레벨과 동일한 특권 레벨임을 식별하면, 메모리 시스템은 메모리 커맨드(138)와 함께 제공된 대응하는 메모리 동작을 처리함으로써 메모리 커맨드를 처리할 수 있다. 메모리 커맨드(138)에 대응하는 특권 모드가 메모리 어드레스에 대응하는 특권 모드에 의해 식별된 특권 레벨과 동일한 특권 레벨임을 식별하지 않으면, 메모리 시스템(120)은 메모리 커맨드(138)와 함께 제공된 메모리 동작의 처리를 삼갈 수 있다.
메모리 시스템(120)은 특수 커맨드(136-1)를 통해 수신된 특권 모드를 이용하여 복수의 특권 커맨드(138)의 특권 레벨을 검증할 수 있다. 특수 커맨드(136-1)를 통해 특권 모드를 전달하는 것은 호스트(102)와 메모리 시스템(120) 사이의 통신 프로토콜을 변경하지 않고 특권 모드를 전달하는 능력을 제공한다. 즉, 쓰레드에서 그리고 호스트(102)의 처리 자원에 의해 실행되는, 호스트(102)가 아닌 애플리케이션은 특수 커맨드(136-1)를 통해 특권 레벨을 제공하는 역할을 한다.
모드 레지스터(139)는 특수 커맨드(136-2)를 사용하여 리셋될 수 있다. 예를 들어, 특권 모드를 이용하는 메모리 커맨드(138)를 제공할 때, 애플리케이션은 호스트(102)를 통해, 특수 커맨드(136-2)를 제공하여 호스트(102)로부터 제공되는 미래의 메모리 커맨드의 특권 레벨을 리셋할 수 있다.
예를 들어, 특수 커맨드(136-2)는 특권 모드를 나타내는 다수의 비트를 포함할 수 있다. 일부 예에서, 특수 커맨드(136-2)는 특권 모드를 나타내는 제1 개수의 비트 및 특권 모드에 대응하는 ID(예를 들어, 쓰레드 ID 및/또는 프로세서 ID)를 나타내는 제2 개수의 비트를 포함할 수 있다.
일부 예에서, 모드 레지스터(139)는 특수 커맨드(136-2)를 수신하지 않고 리셋될 수 있다. 예를 들어, 메모리 시스템(120)은 호스트(102)가 메모리 커맨드(138)를 제공한 이래로 미리 결정된 지속기간의 시간이 지난 후에 모드 레지스터(139)를 리셋할 수 있다. 일부 예에서, 메모리 시스템(120)은 호스트(102)가 모드 레지스터(139)에 대응하는 ID를 갖는 메모리 커맨드(138)를 제공한 이래로 미리 결정된 지속기간의 시간이 지난 후에 모드 레지스터(139)를 리셋할 수 있다.
일부 실시예에서, 호스트(102)는 분기 예측 및/또는 추축을 수행할 때, 특수 커맨드(136-1)를 제공하지 않고 메모리 커맨드(138)를 제공할 수 있다. 특수 커맨드(136-1)는 비교 동작의 일부일 수 있고, 비교 동작이 완료되기 전에 메모리 커맨드(138)가 생성되면 이와 같이 실행되지 않을 수 있다. 그러한 예에서, 호스트(102)는 메모리 커맨드(138)를 제공할 수 있고 메모리 시스템(120)은 특수 커맨드(136-1)가 제공되지 않았다고 결정할 수 있고 및/또는 모드 레지스터(139)에는 설정된 특권 모드가 없다고 결정할 수 있다. 메모리 디바이스(120)는 어느 특권 모드도 모드 레지스터(139)에서 식별되지 않으면 디폴트 특권 모드를 이용하여 메모리 커맨드(138)가 메모리 커맨드(138)에 포함된 메모리 어드레스의 범위에 저장되어 있는 특권 부여된 데이터에 액세스할 수 있는지를 결정할 수 있다.
일부 예에서, 메모리 시스템(120)은 모드 레지스터(139)로부터, 메모리 커맨드(138)에서 제공된 메모리 어드레스와 연관된 제1 특권 레벨에 액세스할 수 있다. 메모리 시스템(120)은 요청(예를 들어, 특수 커맨드(136-1))과 연관된 제2 특권 레벨에 액세스할 수 있다. 제2 특권 레벨은 메모리 시스템(120)의 메모리 디바이스, 레지스터, 및/또는 메모리 자원으로부터 액세스될 수 있다. 제2 특권 레벨은 특권 모드로서 저장될 수 있지만 특권 레벨로서 사용될 수 있다. 메모리 시스템(120)은 제1 특권 레벨과 제2 특권 레벨을 비교하여 메모리 커맨드(138)를 통해 제공된 메모리 동작이 메모리 어드레스에 액세스할 수 있는지를 결정할 수 있다. 메모리 시스템(120)은 제1 특권 레벨과 제2 특권 레벨을 이용하여 비교를 수행할 수 있다.
메모리 동작이 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 메모리 시스템(120)은 메모리 동작을 처리하여 메모리 동작을 수행할 수 있다. 메모리 동작이 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 메모리 시스템(120)은 메모리 동작을 처리하는 것을 삼갈 수 있다. 제2 특권 레벨은 메모리 커맨드(138)를 발행한 쓰레드, 메모리 커맨드(138)를 발행한 프로세서, 및/또는 메모리 커맨드(138)를 발행한 애플리케이션의 특권 레벨에 대응할 수 있다. 일부 예에서, 메모리 커맨드(138)와 연관된 제2 특권 레벨은 운영 체제(OS), 하이퍼바이저 또는 요청을 발행하는 특권 시스템 애플리케이션의 특권 레벨일 수 있다.
제1 특권 레벨을 제2 특권 레벨과 비교하는 것은 모드 레지스터(139)에 저장된 제1 개수의 특권 비트를 메모리 시스템(120)에 저장된 제2 개수의 특권 비트와 비교하는 것을 포함할 수 있다. 제1 특권 레벨을 제2 특권 레벨과 비교하는 것은 제1 특권 레벨이 제2 특권 레벨과 동일한지를 결정하는 것을 더 포함할 수 있다. 제1 특권 레벨이 제2 특권 레벨과 같다고 결정하는 것에 응답하여, 메모리 시스템(120)은 메모리 동작이 메모리 어드레스에 액세스할 수 있다고 결정할 수 있다.
도 1c는 본 개시내용의 다수의 실시예에 따라 캐시 시스템(162)을 포함하고 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템의 형태의 장치의 블록도이다. 캐시 시스템(162)은 캐시(146)로 지칭되는 캐시(146-1 내지 146-N)(예를 들어, 레벨 1 캐시, 레벨 2 캐시,…, 최종 레벨 캐시)를 포함한다. 도 1c는 또한 처리 자원(144)으로 지칭되는 처리 자원(144-1 및 144-2)을 포함한다.
캐시 시스템(162)은 메모리 시스템일 수 있다. 이와 같이, 도 1a 및 도 1b의 메모리 시스템(120)을 사용하여 제공되는 예는 캐시 시스템(162)에 적용 가능하다. 캐시 시스템(162)은 데이터의 추가 요청이 더 빨리 서비스될 수 있도록 데이터를 저장하는 하드웨어 또는 소프트웨어 컴포넌트를 포함할 수 있다. 캐시(146-1 및 146-2)는 레벨 1 캐시를 포함할 수 있다. 캐시(146-1)는 처리 자원(144-1)에 대응할 수 있고 캐시(146-2)는 처리 자원(144-2)에 대응할 수 있다. 각각의 처리 자원(144)은 대응하는 캐시를 이용할 수 있다. 예를 들어, 처리 자원(144-1)은 캐시(146-2)가 아닌 캐시(146-1)를 이용할 수 있는 반면, 처리 자원(144-2)은 캐시(146-1)가 아닌 캐시(146-2)를 이용할 수 있다. 캐시(146-2 내지 146-N)는 공용 캐시일 수 있다. 즉, 캐시(146-2 내지 146-N)는 두 처리 자원(144) 모두에 의해 이용될 수 있다.
캐시(146)로부터의 데이터는 사용에 기초하여 캐시(146) 사이에서 이동될 수 있다. 예를 들어, 자주 액세스되는 데이터는 캐시(146)에 저장될 수 있고, 반면에 덜 자주 액세스되는 데이터는 캐시(146-N)에 저장될 수 있다.
데이터는 메모리 시스템(120)으로부터 캐시 시스템(162)으로 복사될 수 있다. 일부 예에서, 처리 자원(144-1 및 144-2)은 메모리 시스템으로부터 데이터를 검색할 수 있다. 메모리 시스템으로부터 검색된 데이터는 캐시(146)에 저장될 수 있다. 이와 같이, 캐시(146)는 특권 부여된 데이터를 포함할 수 있다.
특권 부여된 데이터는 캐시(146) 중 임의의 캐시에 저장될 수 있다. 예를 들어, 특권 부여된 데이터는 캐시(146-1), 캐시(146-2), 캐시(146-3,…) 및/또는 캐시(146-N)에 저장될 수 있다. 이와 같이, 캐시 중 임의의 캐시로의 액세스는 메모리 동작이 캐시(146)에 저장된 데이터에 액세스하기에 충분한 특권 레벨을 갖는지를 결정하기 위해 검증될 수 있다.
캐시 시스템(162)은 도 2에서 설명된 메모리 액세스 검증 로직을 포함할 수 있다. 캐시 시스템(162)은 예를 들어 도 1a에 설명된 바와 같이 각각의 메모리 동작 및/또는 메모리 커맨드와 함께 제공된 특권 비트를 사용하여 메모리 액세스를 검증할 수 있다. 캐시 시스템(162)은 예를 들어 특수 커맨드에서 제공되는 특권 비트를 이용하여 메모리 액세스를 검증할 수 있다.
일부 예에서, 데이터로의 액세스는 캐시(146) 중 하나로부터 캐시(146) 중 다른 하나로 데이터의 이동을 포함할 수 있다. 예를 들어, 데이터가 캐시(146-N)로부터 캐시(146-1, 146-2 및/또는 146-3)로 이동되면 액세스가 검증될 수 있다. 데이터가 캐시(146-1)로부터 캐시(146-2, 146-3 및/또는 146-N)로 이동되면 데이터가 또한 검증될 수 있다.
일부 예에서, 캐시 시스템(162)은 메모리 액세스 검증 로직에서 커맨드를 수신할 수 있다. 커맨드는 메모리 동작 및 제1 특권 레벨을 포함할 수 있다. 커맨드 및/또는 메모리 동작은 메모리 동작이 액세스하는 복수의 어드레스를 포함할 수 있다. 제1 특권 레벨은 특권 비트를 사용하여 나타낼 수 있다.
캐시 시스템(162)은 캐시의 복수의 메모리 어드레스와 연관된 제2 특권 레벨을 식별할 수 있으며, 여기서 복수의 메모리 어드레스는 메모리 동작과 연관된다. 캐시 시스템(162)은 제1 특권 레벨 및 제2 특권 레벨을 사용하여, 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있는지를 결정할 수 있다. 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 캐시 시스템(162)은 메모리 동작을 처리하여 캐시(146)의 복수의 메모리 어드레스로의 액세스를 제공할 수 있다.
일부 예에서, 캐시 시스템(163)은 메모리 동작이 특권 레벨의 계층, 제1 특권 레벨 및 제2 특권 레벨을 사용하여 복수의 메모리 어드레스에 액세스할 수 있는지를 결정할 수 있다. 특권 레벨의 계층은 복수의 특권 레벨 및 복수의 특권 레벨 간의 관계를 정의할 수 있다. 예를 들어, 특권 레벨의 계층은 가장 높은 특권 레벨을 갖는 메모리 동작이 더 낮은 특권 레벨을 갖는 데이터에 액세스할 수 있고 가장 낮은 특권 레벨을 갖는 메모리 동작이 더 높은 특권 레벨을 갖는 데이터에 액세스하지 못한다는 것을 정의할 수 있다. 이와 같이, 특권 레벨의 계층은 메모리 동작의 특권 레벨 및 데이터의 특권 레벨에 우선 순위를 지정할 수 있다. 특권 레벨의 계층은 또한 도 1a 및 도 1b의 예에 적용될 수 있으므로, 메모리 시스템(120)은 특권 레벨의 계층을 구현하여 메모리 동작 및/또는 메모리 커맨드가 데이터에 액세스할 수 있는지를 결정할 수 있다.
캐시 시스템(162)은 특권 레벨의 계층을 사용하여 제1 특권 레벨이 제2 특권 레벨과 동일한 특권 레벨 또는 그보다 높은 특권 레벨을 갖는지를 결정할 수 있다. 캐시 시스템(162)은 또한 특권 레벨의 계층을 사용하여 제1 특권 레벨이 제2 특권 레벨보다 낮은 특권 레벨을 갖는지를 결정할 수 있다.
캐시 시스템(162)은 제1 특권 레벨이 제2 특권 레벨과 동일한 특권 레벨 또는 그 보다 높은 특권 레벨을 갖는다고 결정하는 것에 응답하여 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있다고 결정할 수 있다. 캐시 시스템(162)은 또한 제1 특권 레벨이 제2 특권 레벨보다 낮은 특권 레벨을 갖는다고 결정하는 것에 응답하여 메모리 동작이 복수의 메모리 어드레스에 액세스하지 못한다고 결정할 수 있다.
캐시 시스템(162)은 또한 도 1b에서 설명된 특수 커맨드(136-1) 및 특수 커맨드(136-2)를 이용하여 특권을 평가할 수 있다. 예를 들어, 메모리 커맨드의 특권 레벨은 특수 커맨드를 이용하여 제공되어 단일 특권 레벨이 메모리 동작을 포함하는 복수의 메모리 커맨드에 대응할 수 있도록 할 수 있다. 복수의 메모리 커맨드 및/또는 메모리 동작과 연관된 특권 레벨은 특권 모드로서 서술될 수 있다. 캐시(146)는 특권 모드 및/또는 우선 순위 레벨을 메모리 디바이스 또는 메모리 시스템에, 캐시(146)에, 및/또는 처리 자원(144) 및/또는 캐시 시스템(162)에 대응하는 레지스터에 저장할 수 있다.
예를 들어, 캐시 시스템(162)은 캐시에 대해 복수의 메모리 동작을 수행할 커맨드(예를 들어, 요청)를 수신할 수 있다. 복수의 메모리 동작과 연관된 캐시의 복수의 메모리 어드레스가 식별될 수 있다. 복수의 메모리 어드레스와 연관된 제1 특권 레벨은 캐시(146), 처리 자원(144)의 레지스터, 및/또는 캐시 시스템(162)의 레지스터로부터 액세스될 수 있다. 요청과 연관된 제2 특권 레벨이 액세스될 수 있다. 제2 특권 레벨은 캐시(146), 처리 자원의 레지스터(144), 및/또는 캐시 시스템(162)의 레지스터에 저장될 수 있다.
캐시 시스템(162)은 복수의 메모리 동작이 제1 특권 레벨 및 제2 특권 레벨을 사용하여 복수의 메모리 어드레스에 액세스할 수 있는지를 결정할 수 있다. 복수의 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 캐시 시스템(162)은 복수의 메모리 동작을 처리하여 캐시(146)의 복수의 메모리 어드레스로의 액세스를 제공할 수 있다.
도 2는 본 개시내용의 다수의 실시예에 따라 메모리 액세스 특권을 검증할 수 있는 컴퓨팅 시스템(220)의 블록도이다. 메모리 시스템(220)은 메모리 액세스 검증 로직(202), 행 디코더(204), 열 디코더(206) 및 메모리 페이지(208)를 포함한다.
명료함을 위해, 메모리 시스템(220)은 본 개시내용과 특별히 관련된 특징에 초점을 맞추도록 단순화되었다. 메모리 어레이(208)는 예를 들어 DRAM 어레이, SRAM 어레이, STT RAM 어레이, PCRAM 어레이, TRAM 어레이, RRAM 어레이, NAND 플래시 어레이 및/또는 NOR 플래시 어레이일 수 있다. 어레이(208)는 액세스 라인(본 명세서에서 워드 라인 또는 선택 라인으로 지칭될 수 있음)에 의해 결합된 행 및 감지 라인에 의해 결합된 열에서 배열된 메모리 셀을 포함할 수 있다. 도 2에는 단일 어레이(208)가 도시되지만, 실시예는 그렇게 제한되지 않는다. 예를 들어, 메모리 시스템(220)은 다수의 어레이(208)(예를 들어, 다수의 DRAM 셀 뱅크)를 각각 포함하는 다수의 메모리 디바이스를 포함할 수 있다.
메모리 시스템(220)은 I/O 회로를 통해 I/O 버스(예를 들어, 데이터 버스)를 통해 제공되는 어드레스 신호를 래치하는 어드레스 회로를 포함한다. 어드레스 신호는 메모리 어레이(208)에 액세스하기 위해 행 디코더(204) 및 열 디코더(206)에 의해 수신되고 디코딩된다. 데이터는 감지 회로를 사용하여 데이터 라인 상의 전압 및/또는 전류 변화를 감지함으로써 메모리 어레이(208)로부터 판독될 수 있다. 감지 회로는 메모리 어레이(206)로부터 데이터의 페이지(예를 들어, 행)를 판독하고 래치할 수 있다. I/O 회로는 I/O 버스를 통해 호스트와의 양방향 데이터 통신에 사용될 수 있다.
컨트롤러는 호스트로부터 제어 버스에 의해 제공되는 신호를 디코딩한다. 이러한 신호는 데이터 판독, 데이터 기입 및 데이터 소거 동작을 비롯한, 메모리 어레이(208)에 대해 수행되는 동작을 제어하는 데 사용되는 칩 인에이블 신호, 기입 인에이블 신호 및 어드레스 래치 신호를 포함할 수 있다. 다양한 실시예에서, 컨트롤러는 호스트로부터 명령어를 실행하는 역할을 한다. 컨트롤러는 상태 머신, 시퀀서 또는 일부 다른 유형의 컨트롤러일 수 있다.
메모리 액세스 검증 로직(202)은 행 디코더(204) 및/또는 열 디코더(206)에 연결되어 메모리 어레이(208)에 대해 수행되는 메모리 동작을 수행할 수 있다. 메모리 액세스 검증 로직(202)은 또한 상태 머신, 시퀀서, 또는 일부 다른 유형의 컨트롤러일 수 있으며 처리 자원으로 지칭될 수 있다. 메모리 액세스 검증 로직(202)은 메모리 어레이(208)에 저장된 데이터의 액세스를 검증할 수 있다. 메모리 액세스 검증 로직(202)은 도 1a 내지 도 1c에서 설명된 예를 수행할 수 있다.
액세스가 검증될 때, 메모리 액세스 검증 로직(202)은 메모리 커맨드와 일치하는 행 디코더(204) 및/또는 열 디코더(206)에 신호를 제공함으로써 메모리 동작 및/또는 메모리 커맨드를 처리할 수 있다. 액세스가 검증되지 않으면, 메모리 액세스 검증 로직(202)은 예외를 발생하고 및/또는 출력 스트림을 통해 미리 결정된 데이터를 제공할 수 있으며, 여기서 미리 결정된 데이터는 요청된 데이터가 아니다.
일부 예에서, 도 1a 내지 도 1c에서 설명된 예의 일부는 컨트롤러 및/또는 메모리 액세스 검증 로직(202)에서 수행될 수 있다. 예를 들어, 컨트롤러는 액세스가 승인되는지를 결정하고 상기 결정을 메모리 액세스 검증 로직(202)에 제공할 수 있다. 메모리 액세스 검증 로직은 메모리 동작을 처리하고 및/또는 예외를 발생하고 및/또는 미리 결정된 데이터를 제공할 수 있다. 도 1a 내지 도 1c에서 제공된 예의 다른 버전은 컨트롤러 및/또는 메모리 액세스 검증 로직(202)을 사용하여 구현될 수 있다.
메모리 액세스 검증 로직(202)은 도 3a 및 도 3b에서 설명된 바와 같은 결정 로직을 포함할 수 있다. 결정 로직은 도 1a 내지 도 1c에서 설명된 예의 일부를 구현할 수 있다.
도 3a는 본 개시내용의 일부 실시예에 따른 메모리 액세스 검증 로직(302)의 블록도이다. 메모리 액세스 검증 로직(302)은 결정 로직(310), 메타데이터 서술 모듈(312), 현재 모드 모듈(314) 및 레지스터(316)를 포함할 수 있다.
결정 로직(310)은 액세스를 승인할지를 결정할 수 있다. 예를 들어, 결정 로직(310)은 어드레스를 수신할 수 있다. 결정 로직(310)은 메타데이터 서술 모듈(312)을 통해 어드레스와 연관된 메타데이터에 액세스할 수 있다. 어드레스와 연관된 메타데이터는 다른 것 중에서도 어드레스와 연관된 특권 레벨을 포함할 수 있다. 메타데이터 서술 모듈(312)은 메모리 시스템의 레지스터 및/또는 메모리 어레이로부터 메타데이터에 액세스할 수 있다.
메타데이터는 다수의 비트를 포함할 수 있다. 예를 들어, 메타데이터는 특권 레벨을 제공하는 단일 비트를 포함할 수 있다. 0-비트는 사용자 특권 레벨을 나타내고 1-비트는 커널 특권 레벨을 나타낼 수 있다. 메타데이터는 또한 하나 초과의 비트를 포함할 수 있다. 예를 들어, 메타데이터는 복수의 비트를 포함할 수 있으며, 여기서 복수의 비트 중 일부는 특권 레벨 또는 특권 모드를 나타내는 특권 비트이다.
결정 로직(310)은 또한 모드 모듈(314)을 이용하여 메모리 동작과 연관된 특권 비트를 검색할 수 있다. 일부 예에서, 특권 비트는 특권 레벨을 나타낼 수 있다. 특권 비트는 또한 특권 모드로 간주될 수 있다. 모드 모듈(314)은 레지스터(316)로부터 특권 비트를 검색할 수 있다. 레지스터(316)는 특권 레지스터 및/또는 모드 레지스터일 수 있다.
레지스터(316)는 메모리 시스템 또는 호스트에 로컬일 수 있다. 예를 들어, 결정 로직(310)이 호스트에서 구현되면, 레지스터(316)는 호스트에 로컬일 수 있다. 결정 로직(310)이 메모리 시스템에서 구현되면, 레지스터(316)는 메모리 시스템에 로컬일 수 있다.
결정 로직(310)은 메타데이터를 특권 모드와 비교하여 어드레스로의 액세스를 승인할지를 결정할 수 있다.
도 3b는 본 개시내용의 일부 실시예에 따른 메모리 액세스 검증 로직(302)의 블록도이다. 일부 예에서, 메모리 액세스 검증 로직(302)은 결정 로직(310)을 포함할 수 있다. 결정 로직(310)은 베이스 모듈(base module)(320) 및 바운드 모듈(bound module)(322)을 포함할 수 있다.
결정 로직(310)은 수신된 어드레스 또는 수신된 어드레스 범위가 보호되는지를 결정할 수 있다. 결정 로직(310)은 베이스 모듈(320) 및 바운드 모듈(322)을 이용하여 어드레스가 보호되는지를 결정할 수 있다.
결정 로직(310)은 베이스 모듈(320)로부터 베이스 어드레스를 요청할 수 있다. 베이스 모듈(320)은 단일의 베이스 어드레스 또는 다수의 베이스 어드레스를 저장할 수 있다. 베이스 모듈(320)은 베이스 어드레스를 리턴할 수 있다. 결정 로직(310)은 어드레스를 베이스 어드레스와 비교하여 어드레스가 베이스 어드레스보다 크거나 같은지를 결정할 수 있다.
일부 예에서, 결정 로직(310)은 어드레스를 베이스 모듈(320)에 제공할 수 있다. 베이스 모듈(320)은 어드레스(예를 들어, 결정 로직(310)에 의해 수신된 어드레스)를 하나 이상의 베이스 어드레스와 비교하여 어드레스가 베이스 어드레스 중 하나보다 크거나 같은지를 결정할 수 있다. 베이스 모듈(320)은 결정을 리턴할 수 있다. 베이스 모듈(320)이 다수의 베이스 어드레스를 저장하면, 베이스 모듈(320)은 결정 및 베이스 어드레스를 리턴할 수 있다. 예를 들어, 베이스 모듈(320)은 어드레스가 베이스 어드레스보다 크거나 같다는 결정을 리턴할 수 있고 또한 베이스 어드레스를 리턴할 수 있다.
결정 로직(310)은 또한 어드레스가 바운드 어드레스보다 작거나 같은지를 결정할 수 있다. 예를 들어, 결정 로직(310)은 베이스 어드레스를 사용하여 바운드 어드레스를 요청할 수 있다. 바운드 모듈(322)은 베이스 어드레스를 수신할 수 있고 대응하는 바운드 어드레스를 제공할 수 있다. 바운드 모듈(322)이 단일의 바운드 어드레스를 저장하는 예에서, 바운드 모듈(322)은 베이스 어드레스를 수신하지 않고 바운드 어드레스를 제공할 수 있다. 바운드 모듈(322)은 베이스 어드레스를 대응하는 바운드 어드레스에 액세스하는 인덱스로서 이용할 수 있다. 결정 로직(310)은 바운드 모듈(322)로부터 수신된 바운드 어드레스를 어드레스와 비교하여 어드레스가 바운드 어드레스보다 작거나 같은지를 결정할 수 있다.
일부 예에서, 결정 로직(310)은 어드레스 및/또는 베이스 어드레스를 바운드 모듈(322)에 제공할 수 있다. 바운드 로직(322)은 어드레스를 바운드 어드레스와 비교하여 어드레스가 바운드 어드레스보다 작거나 같은지를 결정할 수 있다. 바운드 모듈(322)은 결정을 결정 로직(310)에 제공할 수 있다. 바운드 모듈(322)은 베이스 어드레스를 이용하여 바운드 어드레스를 검색할 수 있다. 예를 들어, 바운드 모듈(322)은 베이스 어드레스를 바운드 어드레스를 검색하는 인덱스로서 이용할 수 있다.
결정 로직(310)은 어드레스가 베이스 어드레스보다 크거나 같고 바운드 어드레스보다 작거나 같은지를 결정하여 어드레스가 보호되는지를 결정할 수 있다. 어드레스가 베이스 어드레스보다 크거나 같고 바운드 어드레스보다 작거나 같으면, 어드레스는 보호된다. 어드레스가 베이스 어드레스보다 작거나 바운드 어드레스보다 크면, 어드레스가 보호되지 않는다.
일부 예에서, 결정 로직(310) 및/또는 바운드 모듈(322)은 또한 어드레스가 베이스 어드레스와 바운드의 조합보다 작거나 같은지를 결정할 수 있다. 바운드는 바운드 사이즈일 수 있다. 바운드 어드레스는 베이스 어드레스와 바운드 어드레스로부터 생성될 수 있다. 예를 들어, 베이스 어드레스에 바운드가 추가되어 바운드 어드레스를 생성할 수 있다. 바운드는 바운드 모듈(322)로부터 수신될 수 있고 및/또는 베이스 어드레스와 함께 수신되고 바운드 모듈(322)에 제공될 수 있다. 일부 예에서, 결정 로직(310)은 어드레스가 베이스 어드레스보다 크거나 같고 베이스 어드레스와 바운드(예를 들어, 바운드 어드레스)의 조합보다 작거나 같은지를 결정하여 어드레스가 보호되는지를 결정할 수 있다.
도 4는 본 개시내용과 일관하는 메모리 액세스 검증을 위한 방법의 예시적인 흐름도를 도시한다. 컴퓨터 판독 가능 명령어로서 저장된 방법은 처리 자원에 의해 실행될 수 있다. 처리 자원은 호스트 및/또는 메모리 시스템에 통합될 수 있다. 블록(471)에서, 방법(470)은 메모리 커맨드 및 메모리 어드레스를 포함하는 시그널링을 수신하는 단계를 포함한다. 블록(472)에서, 방법(470)은 메모리 어드레스와 연관된 제1 특권 레벨을 나타내는 제1 값을 식별하는 단계를 포함한다. 블록(473)에서, 방법(470)은 메모리 커맨드와 연관된 제2 특권 레벨을 나타내는 제2 값을 식별하는 단계를 포함한다. 블록(474)에서, 방법(470)은 메모리 어드레스에서 메모리 커맨드를 실행하거나 또는 제1 값을 제2 값과 비교하는 것에 적어도 부분적으로 기초하여 메모리 커맨드를 실행하는 것을 삼가는 단계를 포함한다.
방법(470)은 메모리 동작이 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 메모리 동작을 처리하는 것을 삼갈 수 있다. 방법(470)은 또한 메모리 동작이 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 메모리 동작을 처리하는 단계를 포함할 수 있다.
메모리 커맨드와 연관된 제2 특권 레벨은 메모리 어드레스에 대해 메모리 커맨드를 프롬프트(prompt)했던 쓰레드의 특권 레벨일 수 있다. 일부 예에서, 메모리 커맨드와 연관된 제2 특권 레벨은 메모리 어드레스에 있는 데이터의 요청을 제공하는 애플리케이션의 특권 레벨이다. 메모리 커맨드와 연관된 제2 특권 레벨은 또한 메모리 어드레스에 대해 메모리 커맨드를 프롬프트했던 운영 체제, 하이퍼바이저 또는 특권 부여된 시스템 소프트웨어 중 하나 이상의 특권 레벨일 수 있다.
일부 예에서, 제1 값을 제2 값과 비교하는 단계는 제1 특권 레벨이 제2 값과 동등하다고 결정하는 단계를 포함할 수 있으며, 여기서 메모리 커맨드는 메모리 어드레스에서 실행된다. 일부 예에서, 제1 값 및 제2 값이 상이한 전하/전압을 갖더라도 상이한 전하/전압이 동일한 값을 나타낸다면 제1 값 및 제2 값은 동일할 수 있다.
일부 예에서, 제2 특권 레벨을 나타내는 제2 값을 식별하는 단계는 복수의 레지스터로부터 하나 이상의 레지스터를 판독하는 단계를 포함한다. 다른 예에서, 제2 특권 레벨을 나타내는 제2 값을 식별하는 단계는 수신 시그널링의 메모리 어드레스와 연관된 셀을 포함하는 어레이의 하나 이상의 셀을 판독하는 단계를 포함한다.
도 5는 본 개시내용과 일관하는 메모리 액세스 검증을 위한 방법의 예시적인 흐름도를 도시한다. 블록(581)에서, 방법(580)은 캐시와 연관된 메모리 액세스 검증 로직에서 커맨드를 수신하는 단계를 포함하며, 여기서 커맨드는 메모리 동작 및 제1 특권 레벨을 포함한다. 블록(582)에서, 방법(580)은 캐시의 복수의 메모리 어드레스와 연관된 제2 특권 레벨을 식별하는 단계를 포함하며, 여기서 복수의 메모리 어드레스는 메모리 동작과 연관된다. 블록(583)에서, 방법(580)은 제1 특권 레벨 및 제2 특권 레벨을 사용하여, 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있는지를 결정하는 단계를 포함한다. 블록(584)에서, 방법(580)은 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 메모리 동작을 처리하여 캐시의 복수의 메모리 어드레스로의 액세스를 제공하는 단계를 포함한다.
방법(580)은 메모리 동작이 허가 레벨의 계층, 제1 특권 레벨 및 제2 특권 레벨을 사용하여 복수의 메모리 어드레스에 액세스할 수 있는지를 결정하는 단계를 더 포함할 수 있다. 일부 예에서, 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있는지를 결정하는 단계는 허가 레벨의 계층을 사용하여 제1 특권 레벨이 제2 특권 레벨과 동일한 특권 레벨 또는 그 보다 높은 특권 레벨을 갖는지를 결정하는 단계 및 허가 레벨의 계층을 사용하여 제1 특권 레벨이 제2 특권 레벨보다 낮은 특권 레벨을 갖는지를 결정하는 단계를 더 포함한다.
방법(580)은 제1 특권 레벨이 제2 특권 레벨과 동일한 특권 레벨 또는 그 보다 높은 특권 레벨을 갖는다고 결정하는 것에 응답하여 메모리 동작이 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 단계를 더 포함할 수 있다. 방법은 또한 제1 특권 레벨이 제2 특권 레벨보다 낮은 특권 레벨을 갖는다고 결정하는 것에 응답하여 메모리 동작이 복수의 메모리 어드레스에 액세스하지 못한다고 결정하는 단계를 더 포함할 수 있다.
특정 실시예가 본 명세서에 예시되고 설명되었지만, 관련 기술분야의 통상의 기술자라면 동일한 결과를 달성하도록 계획된 배열이 도시된 특정 실시예를 대체할 수 있다는 것을 이해할 것이다. 본 개시내용은 본 개시내용의 다양한 실시예의 적응 또는 변형을 망라하는 것으로 의도된다. 위의 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어졌다는 것을 이해해야 할 것이다. 위의 설명을 검토해 보면 관련 기술분야의 통상의 기술자에게는 위의 실시예의 조합 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예가 명백해질 것이다. 본 개시내용의 다양한 실시예의 범위는 위의 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 그러므로 본 개시내용의 다양한 실시예의 범위는 첨부된 청구항을 참조하되, 그러한 청구항의 자격이 있는 균등물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 본 개시내용을 간소화하기 위해 다양한 특징이 단일 실시예에서 함께 모여 있다. 개시내용의 이러한 방법은 본 개시내용의 개시된 실시예가 각 청구항에 명시적으로 나열된 것보다 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 다음의 청구항이 반영하는 바와 같이, 본 발명의 주제는 개시된 단일 실시예의 모든 특징보다 적다. 따라서, 다음의 청구항은 상세한 설명에 통합되며, 각 청구항은 별개의 실시예로서 그 자체로 성립한다.

Claims (20)

  1. 방법으로서,
    메모리 커맨드 및 메모리 어드레스를 포함하는 시그널링을 수신하는 단계;
    상기 메모리 어드레스와 연관된 제1 특권 레벨을 나타내는 제1 값을 식별하는 단계;
    상기 메모리 커맨드와 연관된 제2 특권 레벨을 나타내는 제2 값을 식별하는 단계; 및
    상기 메모리 어드레스에서 상기 메모리 커맨드를 실행하거나 또는 상기 제1 값을 상기 제2 값과 비교하는 것에 적어도 부분적으로 기초하여 상기 메모리 커맨드를 실행하는 것을 삼가는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 메모리 동작이 상기 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 상기 메모리 동작을 처리하는 것을 삼가는,
    방법.
  3. 제1항에 있어서,
    상기 메모리 커맨드와 연관된 상기 제2 특권 레벨은,
    상기 메모리 어드레스에 대해 상기 메모리 커맨드를 프롬프트(prompt)했던 쓰레드; 및
    상기 메모리 어드레스에 있는 데이터의 요청을 제공하는 애플리케이션 중 적어도 하나의 특권 레벨인,
    방법.
  4. 제1항에 있어서,
    상기 메모리 커맨드와 연관된 상기 제2 특권 레벨은 상기 메모리 어드레스에 대해 상기 메모리 커맨드를 프롬프트했던 운영 체제(operating system)(OS), 하이퍼바이저 또는 특권 부여된(privileged) 시스템 소프트웨어 중 하나 이상의 특권 레벨인,
    방법.
  5. 제1항에 있어서,
    상기 제1 값을 상기 제2 값과 비교하는 단계는 상기 제1 특권 레벨이 상기 제2 값과 동등하다고 결정하는 단계를 포함하며, 상기 메모리 커맨드는 상기 메모리 어드레스에서 실행되는,
    방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제2 특권 레벨을 나타내는 상기 제2 값을 식별하는 단계는,
    복수의 레지스터로부터 하나 이상의 레지스터를 판독하는 단계; 및
    상기 수신된 시그널링의 상기 메모리 어드레스와 연관된 셀을 포함하는 어레이의 하나 이상의 셀을 판독하는 단계 중 하나를 포함하는,
    방법.
  7. 장치로서,
    메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 메모리 액세스 검증 로직을 포함하고, 상기 메모리 액세스 검증 로직은,
    메모리 동작 및 복수의 특권 비트를 포함하는 커맨드를 수신하고;
    상기 메모리 동작에 대응하는 메모리 어드레스와 연관된 특권 레벨을 식별하고;
    상기 메모리 동작이 상기 복수의 특권 비트 및 상기 특권 레벨을 사용하여 상기 메모리 어드레스에 액세스할 수 있는지를 결정하고; 그리고
    상기 메모리 동작이 상기 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 상기 메모리 동작을 처리하도록 구성되는,
    장치.
  8. 제7항에 있어서,
    상기 메모리 액세스 검증 로직은 또한 상기 메모리 동작이 상기 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 상기 메모리 동작을 처리하는 것을 삼가하도록 구성되는,
    장치.
  9. 제8항에 있어서,
    상기 메모리 액세스 검증 로직은 또한 상기 메모리 동작이 상기 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 예외를 발행하도록 구성되는,
    장치.
  10. 제8항에 있어서,
    상기 메모리 액세스 검증 로직은 또한 상기 메모리 동작이 상기 메모리 어드레스에 액세스하지 못한다고 결정하는 것에 응답하여, 상기 커맨드에 대응하는 미리 결정된 데이터를 제공하도록 구성되는,
    장치.
  11. 제10항에 있어서,
    상기 미리 결정된 데이터는 상기 메모리 동작을 상기 메모리 어드레스에 액세스하지 못하는 것으로 식별하는 데이터 패턴을 포함하는,
    장치.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 커맨드는 분기 예측(branch prediction) 동안 수행되는 메모리 동작의 시퀀스의 일부인,
    장치.
  13. 장치로서,
    복수의 레지스터;
    캐시; 및
    상기 메모리 디바이스에 결합된 메모리 액세스 검증 로직을 포함하고, 상기 메모리 액세스 검증 로직은,
    상기 캐시에 대해 복수의 메모리 동작을 수행하기 위한 커맨드를 수신하고;
    상기 복수의 메모리 동작과 연관된 상기 캐시의 복수의 메모리 어드레스를 식별하고;
    상기 복수의 메모리 어드레스와 연관된 제1 특권 레벨에 액세스하고;
    상기 커맨드와 연관된 제2 특권 레벨 - 상기 제2 특권 레벨은 상기 복수의 레지스터에 저장됨 - 에 액세스하고;
    상기 복수의 메모리 동작이 상기 제1 특권 레벨 및 상기 제2 특권 레벨을 사용하여 상기 복수의 메모리 어드레스에 액세스할 수 있는지를 결정할 수 있는지를 결정하고; 그리고
    상기 복수의 메모리 동작이 상기 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 상기 복수의 메모리 동작을 처리하여 상기 캐시의 상기 복수의 메모리 어드레스로의 액세스를 제공하도록 구성되는,
    장치.
  14. 제13항에 있어서,
    상기 메모리 액세스 검증 로직은 또한 자격 증명(credential)으로 식별자(ID)를 인증하여 상기 복수의 레지스터로의 액세스를 제공하도록 구성되는,
    장치.
  15. 제14항에 있어서,
    상기 메모리 액세스 검증 로직은 또한 상기 ID를 인증하는 것에 응답하여, 상기 제2 특권 레벨을 상기 복수의 레지스터에 저장하도록 구성되는,
    장치.
  16. 제14항 또는 제15항에 있어서,
    상기 ID 및 상기 자격 증명은 처리 자원, 프로세서에 의해 호스팅되는 애플리케이션, 또는 상기 프로세서의 쓰레드 중 하나에 대응하는,
    장치.
  17. 제14항 또는 제15항에 있어서,
    상기 메모리 액세스 검증 로직은 또한 상기 ID를 인증하는 것에 응답하여, 디폴트 값을 상기 복수의 레지스터에 저장하도록 구성되는,
    장치.
  18. 방법으로서,
    캐시와 연관된 메모리 액세스 검증 로직에서 커맨드 - 상기 커맨드는 메모리 동작 및 제1 특권 레벨을 포함함 - 를 수신하는 단계;
    상기 캐시의 복수의 메모리 어드레스 - 상기 복수의 메모리 어드레스는 상기 메모리 동작과 연관됨 - 와 연관된 제2 특권 레벨을 식별하는 단계;
    상기 제1 특권 레벨 및 상기 제2 특권 레벨을 사용하여, 상기 메모리 동작이 상기 복수의 메모리 어드레스에 액세스할 수 있는지를 결정하는 단계; 및
    상기 메모리 동작이 상기 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 것에 응답하여, 상기 메모리 동작을 처리하여 상기 캐시의 상기 복수의 메모리 어드레스로의 액세스를 제공하는 단계를 포함하는,
    방법.
  19. 제18항에 있어서,
    상기 메모리 동작이 상기 복수의 메모리 어드레스에 액세스할 수 있는지를 허가 레벨의 계층, 상기 제1 특권 레벨 및 상기 제2 특권 레벨을 사용하여 상기 메모리 동작이 상기 복수의 메모리 어드레스에 액세스할 수 있는지를 결정하는 단계는,
    상기 허가 레벨의 계층을 사용하여 상기 제1 특권 레벨이 상기 제2 특권 레벨과 동일한 특권 레벨 또는 그보다 높은 특권 레벨을 갖는지를 결정하는 단계; 및
    상기 허가 레벨의 계층을 사용하여 상기 제1 특권 레벨이 상기 제2 특권 레벨보다 낮은 특권 레벨을 갖는지를 결정하는 단계를 더 포함하는,
    방법.
  20. 제19항에 있어서,
    상기 제1 특권 레벨이 상기 제2 특권 레벨과 동일한 특권 레벨 또는 그 보다 높은 특권 레벨을 갖는다고 결정하는 것에 응답하여 상기 메모리 동작이 상기 복수의 메모리 어드레스에 액세스할 수 있다고 결정하는 단계; 및
    상기 제1 특권 레벨이 상기 제2 특권 레벨보다 낮은 특권 레벨을 갖는다고 결정하는 것에 응답하여 상기 메모리 동작이 상기 복수의 메모리 어드레스에 액세스하지 못한다고 결정하는 단계를 더 포함하는,
    방법.
KR1020207033684A 2018-06-15 2019-04-29 메모리 액세스 결정 KR20200135882A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/010,174 2018-06-15
US16/010,174 US10909046B2 (en) 2018-06-15 2018-06-15 Memory access determination
PCT/US2019/029572 WO2019240886A1 (en) 2018-06-15 2019-04-29 Memory access determination

Publications (1)

Publication Number Publication Date
KR20200135882A true KR20200135882A (ko) 2020-12-03

Family

ID=68839941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207033684A KR20200135882A (ko) 2018-06-15 2019-04-29 메모리 액세스 결정

Country Status (5)

Country Link
US (2) US10909046B2 (ko)
EP (1) EP3807772A4 (ko)
KR (1) KR20200135882A (ko)
CN (1) CN112204535A (ko)
WO (1) WO2019240886A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11635965B2 (en) 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
US11029957B1 (en) * 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code
US11188471B2 (en) 2020-04-03 2021-11-30 Alibaba Group Holding Limited Cache coherency for host-device systems
US11489844B2 (en) * 2020-04-17 2022-11-01 Twistlock Ltd. On-the-fly creation of transient least privileged roles for serverless functions

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052523A (ja) * 1991-06-25 1993-01-08 Sharp Corp アクセス制御装置
US6173316B1 (en) * 1998-04-08 2001-01-09 Geoworks Corporation Wireless communication device with markup language based man-machine interface
US6986137B1 (en) * 1999-09-28 2006-01-10 International Business Machines Corporation Method, system and program products for managing logical processors of a computing environment
US6745307B2 (en) 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US6854039B1 (en) * 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
GB2396930B (en) 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
DE602004031719D1 (de) 2004-07-01 2011-04-21 Texas Instruments Inc Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus
US20060149918A1 (en) * 2004-12-30 2006-07-06 Rudelic John C Memory with modifiable address map
US20070056042A1 (en) 2005-09-08 2007-03-08 Bahman Qawami Mobile memory system for secure storage and delivery of media content
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8464069B2 (en) 2007-02-05 2013-06-11 Freescale Semiconductors, Inc. Secure data access methods and apparatus
KR101396831B1 (ko) 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US8478959B1 (en) * 2007-11-13 2013-07-02 Nvidia Corporation Method and system for protecting content in graphics memory
US8667575B2 (en) * 2009-12-23 2014-03-04 Citrix Systems, Inc. Systems and methods for AAA-traffic management information sharing across cores in a multi-core system
US8621149B2 (en) 2009-12-23 2013-12-31 Intel Corporation Controlling access to a cache memory using privilege level information
US8682639B2 (en) * 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8656106B2 (en) * 2010-12-16 2014-02-18 International Business Machines Corporation Managing unforced injections of cache lines into a cache utilizing predetermined address ranges
US9116845B2 (en) * 2011-02-23 2015-08-25 Freescale Semiconductor, Inc. Remote permissions provisioning for storage in a cache and device therefor
US9208109B2 (en) * 2011-06-01 2015-12-08 Altera Corporation Memory controllers with dynamic port priority assignment capabilities
US20130290637A1 (en) * 2012-04-30 2013-10-31 Broadcom Corporation Per processor bus access control in a multi-processor cpu
US9672164B2 (en) * 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
JP6158952B2 (ja) * 2013-02-05 2017-07-05 エイアールエム リミテッド データ処理装置のメモリ・アクセス動作の操作
US9015835B2 (en) * 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
US9679122B1 (en) * 2014-06-11 2017-06-13 Red Hat, Inc. Methods and apparatus for using credentials to access computing resources
US9619405B2 (en) 2014-11-24 2017-04-11 Nxp Usa, Inc. Device having memory access protection
MA41915A (fr) * 2015-04-07 2018-02-13 Benjamin Gittins Unités de requête de transfert de mémoire programmable
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统
US20170123800A1 (en) * 2015-11-04 2017-05-04 International Business Machines Corporation Selective resource activation based on privilege level
KR20170060739A (ko) * 2015-11-25 2017-06-02 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US10430580B2 (en) * 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
US10650158B2 (en) * 2018-04-17 2020-05-12 SecureCircle, LLC System and method for secure file access of derivative works

Also Published As

Publication number Publication date
CN112204535A (zh) 2021-01-08
EP3807772A1 (en) 2021-04-21
WO2019240886A1 (en) 2019-12-19
US10909046B2 (en) 2021-02-02
US20190384726A1 (en) 2019-12-19
EP3807772A4 (en) 2022-03-16
US20210157749A1 (en) 2021-05-27
US11977495B2 (en) 2024-05-07

Similar Documents

Publication Publication Date Title
US20240134677A1 (en) Protected regions management of memory
TWI620095B (zh) 用以確保存取保護計畫之裝置及有形機器可讀媒體
US11977495B2 (en) Memory access determination
US10915457B2 (en) Memory access control through permissions specified in page table entries for execution domains
US11914726B2 (en) Access control for processor registers based on execution domains
US11126453B2 (en) Protected regions management of memory
US11474955B2 (en) Memory disablement for data security
US10768831B2 (en) Non-persistent unlock for secure memory
US11644982B2 (en) Unauthorized access command logging for memory
US20240143196A1 (en) Unauthorized memory access mitigation

Legal Events

Date Code Title Description
A201 Request for examination
E90F Notification of reason for final refusal
E601 Decision to refuse application