KR20210071091A - 메모리를 위한 주소 난독화 - Google Patents

메모리를 위한 주소 난독화 Download PDF

Info

Publication number
KR20210071091A
KR20210071091A KR1020217017031A KR20217017031A KR20210071091A KR 20210071091 A KR20210071091 A KR 20210071091A KR 1020217017031 A KR1020217017031 A KR 1020217017031A KR 20217017031 A KR20217017031 A KR 20217017031A KR 20210071091 A KR20210071091 A KR 20210071091A
Authority
KR
South Korea
Prior art keywords
memory
mapping
logical
address
mapping function
Prior art date
Application number
KR1020217017031A
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 KR20210071091A publication Critical patent/KR20210071091A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Semiconductor Memories (AREA)
  • Memory System (AREA)

Abstract

메모리를 위한 주소 난독화를 위한 방법, 시스템, 및 디바이스가 설명된다. 매핑 함수는 데이터의 논리적 주소를 메모리 셀의 물리적 주소에 매핑할 수 있다. 매핑 함수는 매핑 서브구성요소를 포함하는 매핑 구성요소로 구현될 수 있다. 각각의 매핑 서브구성요소는 물리적 주소의 비트를 결정하기 위한 논리 함수를 구현하도록 독립적으로 구성 가능할 수 있다. 매핑 함수는 메모리 디바이스 또는 메모리 디바이스의 양태에 걸쳐 달라질 수 있으며 일부 경우에 시간에 따라 달라질 수 있다.

Description

메모리를 위한 주소 난독화
상호 참조
본 특허 출원은 미국 특허 출원 제16/192,068호(발명자: Morgan 외, 출원일: 2018년 11월 15일, 발명의 명칭: "ADDRESS OBFUSCATION FOR MEMORY")에 대한 우선권을 주장하며, 이 기초 출원은 양수인에게 양도되고, 이 기초 출원은 본 명세서에 전문이 참조에 의해 명백하게 원용된다.
다음의 내용은 일반적으로, 메모리 디바이스에 관한 것이고, 더 구체적으로, 메모리를 위한 주소 난독화(address obfuscation)에 관한 것이다.
메모리 디바이스는 컴퓨터, 무선 통신 디바이스, 카메라, 디지털 디스플레이, 등과 같은 다양한 전자 디바이스에서 정보를 저장하기 위해 널리 사용된다. 정보는 메모리 디바이스의 상이한 상태를 프로그래밍함으로써 저장된다. 예를 들면, 이진 디바이스는 가장 흔하게 논리 1 또는 논리 0으로 종종 표시된 2개의 상태 중 하나를 저장한다. 다른 디바이스에서, 2개보다 많은 상태가 저장될 수 있다. 저장된 정보에 액세스하기 위해, 디바이스의 구성요소는 메모리 디바이스에서 적어도 하나의 저장된 상태를 판독하거나, 감지할 수 있다. 정보를 저장하기 위해, 디바이스의 구성요소는 메모리 디바이스에 상태를 기록하거나, 프로그래밍할 수 있다.
자기 하드 디스켓, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 RAM(DRAM), 동기식 동적 RAM(SDRAM), 강유전성 RAM(FeRAM), 자기 RAM(MRAM), 저항성 RAM(RRAM), 플래시 메모리, 상 변화 메모리(PCM), 등을 포함하는 다양한 유형의 메모리 디바이스가 존재한다. 메모리 디바이스는 휘발성이거나 비휘발성일 수 있다. 비휘발성 메모리, 예컨대, FeRAM은 심지어 외부 전력원이 없는 경우에도 장기간 동안 그들의 저장된 논리 상태를 유지할 수 있다. 휘발성 메모리 디바이스 예컨대, DRAM은 그들이 외부 전력원에 의해 주기적으로 리프레시(refresh)되지 않는 한 시간에 따라 그들의 저장된 상태를 잃을 수 있다.
메모리 디바이스를 개선하는 것은 일반적으로, 다른 메트릭 중에서 메모리 셀 밀도의 증가, 판독/기록 속도의 증가, 신뢰성 증가, 데이터 보유의 증가, 전력 소비의 감소, 제조 비용의 감소, 또는 메모리 디바이스의 수명의 증가를 포함할 수 있다. 게다가, 일부 메모리 디바이스는 메모리 디바이스의 사용으로 인해 내구성이 제한되거나 수명이 단축된다. 메모리 디바이스의 사용은 정상적인 사용 또는 불량 행위자에 의한 고의적인 오용을 포함하는 임의의 수의 문제에 의해 야기될 수 있다. 메모리 디바이스 사용은 메모리 디바이스의 제조업체의 품질 인식에 영향을 미칠 수 있거나 메모리 디바이스의 예상 수명에 영향을 미칠 수 있다.
도 1은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 위한 시스템의 일례를 도시한 도면.
도 2는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 메모리 다이의 일례를 도시한 도면.
도 3은 본 발명의 예에 따른 메모리를 위한 주소 난독화를 지원하는 디바이스의 일례를 도시한 도면.
도 4a 및 도 4b는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 디바이스의 예를 도시한 도면.
도 5는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 매핑 함수의 일례를 도시한 도면.
도 6은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 매핑 함수 및 웨어 레벨링 기능(wear leveling function)의 일례를 도시한 도면.
도 7a는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 디바이스를 도시한 도면.
도 7b는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 매핑 함수의 일례를 도시한 도면.
도 8a 및 도 8b는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 디바이스의 예를 도시한 도면.
도 9는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 매핑 함수 및 웨어 레벨링 기능의 일례를 도시한 도면.
도 10은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 디바이스의 블록도.
도 11 내지 도 13은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 흐름도.
메모리 디바이스의 수명을 개선하는 것은 다수의 방식으로 성취될 수 있다. 메모리 디바이스의 개선된 수명 또는 내구성을 성취하는 하나의 방식은 메모리 디바이스의 메모리 셀 사이에 실질적으로 균일한 사용을 제공할 수 있는 웨어 레벨링을 통한 것이다. 웨어 레벨링은 예를 들면, 메모리 어레이 내의(또는 메모리 어레이에 걸쳐) 하나의 물리적 위치로부터 또 다른 물리적 위치로 데이터를 전송하는 것을 포함할 수 있으며, 이는 메모리 어레이의 하나의 메모리 셀이 또 다른 메모리 셀보다 더 많이(예컨대, 상당히 더 많이) 기록되거나 판독되는 것을 방지할 수 있다. 과도한 액세스는 자주 액세스되지 않는 메모리 셀과 비교하여 과도하게 사용된 메모리 셀의 수명을 감소시킬 수 있으며, 따라서, 웨어 레벨링은 메모리 셀로 하여금 조기에 장애가 있게 할 수 있는 개별적인 메모리 셀의 과용에 대해 메모리 디바이스를 보호할 수 있다.
메모리 디바이스 수명은 정상적인 사용을 통해서 영향을 받을 수 있을 뿐만 아니라, 악의적인 사용 - 예컨대, 행 해머 또는 다른 악의적인 공격에 의해 손상될 수 있다. 불량 행위자 관리자가 웨어 레벨링 기능이 메모리 어레이 내에서 데이터를 전송하는 패턴을 추론(역엔지니어링(reverse engineer))하면, 불량 행위자는 웨어 레벨링 기능을 우회하여 사용을 유발할 수 있다. 일부 예에서, 메모리 사용은 불량 행위자에 의한 민감한 데이터에 대한 무단 액세스 또는 장애 또는 저장 메커니즘 또는 보호된 프로세스 또는 기능의 무단 제어를 야기할 수 있다. 일부 예에서, 물리적 메모리 셀에 장애가 있을 수 있으며(검출형이 될 수 있으며), 이는 불량 행위자가 장애가 있는 셀에 대한 논리 데이터의 이동 진행을 따르고 그에 의해, 웨어 레벨링 기능의 이동 패턴을 역엔지니어링하는 것을 허용할 수 있다. 일부 경우에, 일단 웨어 레벨링 기능이 하나의 메모리 디바이스에서 역엔지니어링되었으면, 동일한 웨어 레벨링 기능을 이용하는 모든 메모리 디바이스가 불량 행위자에 의해 남용될 수 있다.
본 명세서에서 논의된 바와 같이, 메모리의 주소 난독화는 예측할 수 없는 방식으로 하나 이상의 메모리 어레이 내의 물리적 주소에 데이터에 대한 논리적 주소를 매핑하는 것을 포함할 수 있으며, 이는 메모리 어레이에 걸쳐 또는 동일한 메모리 어레이에 대해 시간에 따라 달라질 수 있다. 예를 들면, 데이터에 대한 논리적 주소를 데이터를 저장하는 메모리 셀의 물리적 주소에 매핑하기 위해 사용된 매핑 함수는 디바이스 당, 다이 당, 어레이 당 또는 다른 기준으로 선택 가능하거나, 맞춤화 가능할 수 있다. 일부 경우에, 데이터의 물리적 주소는 본 명세서에서 설명된 바와 같이 주소 난독화 기법에 따라 초기에 결정된 후에, 웨어 레벨링 기능에 따라 시간에 따라 변경될 수 있다(즉, 데이터가 하나의 메모리 셀로부터 또 다른 메모리 셀로 이동될 수 있다). 주소 난독화 기법, 및 시간에 따른 또는 메모리 개체에 걸친 그들의 변동성은 불량 행위자가 웨어 레벨링 기능을 역엔지니어링하기 위한 어려움을 증가시킬 수 있다.
게다가, 불량 행위자가 웨어 레벨링 기능을 역엔지니어링하는 것을 관리하더라도, 불량 행위자에 의해 얻어진 바와 같은 이러한 정보는 다른 디바이스, 다이, 어레이, 등을 위해, 또는 이후에 역엔지니어링된 디바이스, 다이, 어레이, 등을 위해 유용하지 않을 수 있는데, 이는 동작 매핑 함수 - 따라서, 데이터에 대한 논리적 주소와 데이터를 저장하는 메모리 셀의 물리적 주소 사이의 관계 - 가 시간에 따라 조정되거나(예컨대, 부트 또는 재부트 이벤트와 같은 트리거 이벤트 시에, 또는 스케줄링에 기반하여)(예컨대, 이러한 개체에 포함된 난수 생성기, 이러한 개체의 고유 식별자, 등에 기초하여) 디바이스, 다이, 어레이 등에 걸쳐 달라질 수 있다. 매핑 함수는 매우 많은 수의 가능한 매핑 함수가 지원될 수 있도록 비트 당 논리 연산의 선택 가능한 세트에 기초하여 논리적 주소 당 비트 단위로 구성 가능하고 가변적일 수 있다(예컨대, M개의 논리 연산 중 임의의 하나가 각각의 비트에 대해 선택될 수 있는 경우, N개의 비트를 갖는 논리적 주소에 대해, MN개의 가능한 매핑 함수가 지원될 수 있다).
데이터의 논리적 주소를 데이터를 저장하는 메모리 어레이 내의 메모리 셀의 물리적 주소에 매핑하는 구성 가능(예컨대, 선택 가능)하고 가변적인(예컨대, 동작 동안 동적으로 또는 청구 도중 또는 사후 제작 기법) 매핑 함수를 구현하기 위한 시스템 및 기법이 제공된다. 액세스 명령은 메모리 디바이스에서 및 호스트로부터 수신될 수 있고, 액세스 명령은 메모리 어레이에 저장된 데이터의 논리적 주소를 포함할 수 있고 물리적 주소는 논리적 주소 및 매핑 함수에 기초하여 결정될 수 있으며, 저장된 데이터가 액세스될 수 있다. 논리 연산은 논리적 주소의 각각의 개별적인 비트에 대해 선택될 수 있으며, 집합적으로 이 논리 연산은 매핑 함수를 구현할 수 있고, 여기서 메모리 셀에 대한 물리적 주소의 비트는 매핑 함수에 의해(예컨대, 기초하여) 결정될 수 있다. 매핑 함수(예컨대, 구성 논리 연산)은 본 명세서에서 더 상세하게 논의되는 바와 같이 다수의 베이스에서 다수의 방식으로 구성(선발, 선택)될 수 있으며, 일부 경우에 동적으로 또는 달리 시간에 따라 또는 디바이스에 걸쳐 달라질 수 있다.
본 발명의 특징은 메모리 시스템의 맥락으로 처음에 설명된다. 본 발명의 특징은 논리적 주소를 메모리 셀 레벨에서 물리적 주소에 매핑하도록 구성된 메모리 시스템 뿐만 아니라, 관련된 주소 난독화 및 웨어 레벨링 테이블의 맥락으로 설명된다. 본 발명의 이 및 다른 특징은 메모리를 위한 주소 난독화에 관련되는 장치 다이어그램, 시스템 다이어그램, 및 흐름도에 의해 더 도시되고 이를 참조하여 설명된다.
도 1은 본 명세서에 개시된 양태에 따른 하나 이상의 메모리 디바이스를 활용하는 시스템(100)의 일례를 도시한다. 시스템(100)은 외부 메모리 제어기(105), 메모리 디바이스(110), 및 외부 메모리 제어기(105)와 메모리 디바이스(110)를 결합하는 복수의 채널(115)을 포함할 수 있다. 시스템(100)은 하나 이상의 메모리 디바이스를 포함할 수 있지만, 설명의 용이를 위해, 하나 이상의 메모리 디바이스는 단일 메모리 디바이스(110)로서 설명될 수 있다.
시스템(100)은 컴퓨팅 디바이스, 모바일 컴퓨팅 디바이스, 무선 디바이스, 또는 그래픽 프로세싱 디바이스와 같은 전자 디바이스의 양태를 포함할 수 있다. 시스템(100)은 휴대용 전자 디바이스의 일례일 수 있다. 시스템(100)은 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 휴대폰, 착용 가능한 디바이스, 인터넷 연결 디바이스, 등의 일례일 수 있다. 메모리 디바이스(110)는 시스템(100)의 하나 이상의 다른 구성요소에 대한 데이터를 저장하도록 구성된 시스템의 구성요소일 수 있다. 일부 예에서, 시스템(100)은 기지국 또는 액세스 지점을 사용하여 다른 시스템 또는 디바이스와의 양방향 무선 통신을 위해 구성된다. 일부 예에서, 시스템(100)은 기계 유형 통신(MTC), 기계 대 기계(M2M) 통신, 또는 디바이스 대 디바이스(D2D) 통신을 할 수 있다.
시스템(100)의 적어도 일부는 호스트 디바이스의 예일 수 있다. 이러한 호스트 디바이스는 컴퓨팅 디바이스, 모바일 컴퓨팅 디바이스, 무선 디바이스, 그래픽 프로세싱 디바이스, 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 휴대폰, 착용가능한 디바이스, 인터넷 연결 디바이스, 일부 다른 고정식 또는 휴대용 전자 디바이스, 등과 같은 프로세스를 실행하기 위해 메모리를 사용하는 디바이스의 일례일 수 있다. 일부 경우에, 호스트 디바이스는 외부 메모리 제어기(105)의 기능을 구현하는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합을 언급할 수 있다. 일부 경우에, 외부 메모리 제어기(105)는 호스트 또는 호스트 디바이스로서 언급될 수 있다. 일부 예에서, 시스템(100)은 그래픽 카드이다. 일부 예에서 호스트는 메모리 어레이에 저장된 데이터의 논리적 주소를 포함할 수 있는 액세스 명령을 발행할 수 있다. 논리적 주소는 메모리 어레이 내의 물리적 주소에 매핑될 수 있고 물리적 주소는 논리적 주소 및 선택된 매핑 함수에 의해 적어도 부분적으로 결정될 수 있다.
일부 경우에, 메모리 디바이스(110)는 시스템(100)의 다른 구성요소와 통신하고 시스템(100)에 의해 잠재적으로 사용되거나 참조될 물리적 메모리 주소/공간을 제공하도록 구성되는 독립 디바이스 또는 구성요소일 수 있다. 일부 예에서, 메모리 디바이스(110)는 적어도 하나 또는 복수의 상이한 유형의 시스템(100)과 함께 작동하도록 구성 가능할 수 있다. 시스템(100)의 구성요소와 메모리 디바이스(110) 사이의 시그널링은 신호를 변조하기 위한 변조 방식, 신호를 전달하기 위한 상이한 핀 설계, 시스템(100) 및 메모리 디바이스(110)의 별개의 패키징, 시스템(100)과 메모리 디바이스(110) 사이의 클록 시그널링 및 동기화, 타이밍 규정, 및/또는 다른 인자를 지원하도록 동작 가능할 수 있다.
메모리 디바이스(110)는 시스템(100)의 구성요소에 대한 데이터를 저장하도록 구성될 수 있다. 일부 경우에, 메모리 디바이스(110)는 시스템(100)에 대해 슬레이브형 디바이스의 역할을 할 수 있다(예컨대, 외부 메모리 제어기(105)를 통해 시스템(100)에 의해 제공된 명령에 응답하고 이를 실행한다). 이러한 명령은 기록 동작을 위한 기록 명령, 판독 동작을 위한 판독 명령, 리프레시 동작을 위한 리프레시 명령, 또는 다른 명령과 같은, 액세스 동작을 위한 액세스 명령을 포함할 수 있다. 메모리 디바이스(110)는 데이터 저장을 위해 원하는 또는 명시된 용량을 지원하기 위해 2개 이상의 메모리 다이(160)(예컨대, 메모리 칩)를 포함할 수 있다. 2개 이상의 메모리 다이를 포함하는 메모리 디바이스(110)는 다중 다이 메모리 또는 패키지(다중 칩 메모리 또는 패키지로서 또한 언급됨)로서 언급될 수 있다. 일부 경우에, 상이한 메모리 디바이스(110), 또는 심지어 상이한 다이(160) 또는 다이(160) 내의 상이한 메모리 어레이(170)는 상이한 매핑 함수를 사용하여 논리적 주소를 물리적 주소에 매핑할 수 있다.
시스템(100)은 프로세서(120), 기본 입력/출력 시스템(BIOS) 구성요소(125), 하나 이상의 주변 구성요소(130), 및 입력/출력(I/O) 제어기(135)를 더 포함할 수 있다. 시스템(100)의 구성요소는 버스(140)를 사용하여 서로 전자 통신할 수 있다.
프로세서(120)는 시스템(100)의 적어도 일부를 제어하도록 구성될 수 있다. 프로세서(120)는 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 필드 프로그래밍 가능한 게이트 어레이(FPGA) 또는 다른 프로그래밍 가능한 논리 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 구성요소일 수 있거나, 이들 유형의 구성요소의 조합일 수 있다. 이러한 경우에, 프로세서(120)는 다른 예 중에서, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 범용 GPU(GPGPU), 또는 시스템 온 칩(system on a chip: SoC)의 일례일 수 있다.
BIOS 구성요소(125)는 시스템(100)의 다양한 하드웨어 구성요소를 초기화하고 실행할 수 있는 펌웨어로서 동작된 BIOS를 포함하는 소프트웨어 구성요소일 수 있다. BIOS 구성요소(125)는 또한, 프로세서(120)와 시스템(100)의 다양한 구성요소, 예컨대, 주변 구성요소(130), I/O 제어기(135) 등 사이의 데이터 흐름을 관리할 수 있다. BIOS 구성요소(125)는 판독 전용 메모리(ROM), 플래시 메모리, 또는 임의의 다른 비휘발성 메모리에 저장된 프로그램 또는 소프트웨어를 포함할 수 있다.
주변 구성요소(들)(130)는 임의의 입력 디바이스 또는 출력 디바이스, 또는 시스템(100)에 또는 이와 통합될 수 있는 이러한 디바이스에 대한 인터페이스일 수 있다. 예는 디스켓 제어기, 사운드 제어기, 그래픽 제어기, 이더넷 제어기, 모뎀, 범용 직렬 버스(USB) 제어기, 직렬 또는 병렬 포트, 또는 주변 구성요소 상호 연결부(PCI) 또는 가속된 그래픽 포트(AGP) 슬롯과 같은 주변 카드 슬롯을 포함할 수 있다. 주변 구성요소(들)(130)는 당업자에 의해 주변 장치로서 이해된 다른 구성요소일 수 있다.
I/O 제어기(135)는 프로세서(120)와 주변 구성요소(들)(130), 입력 디바이스(145), 또는 출력 디바이스(150) 사이의 데이터 통신을 관리할 수 있다. I/O 제어기(135)는 시스템(100)에 또는 이와 통합되지 않은 주변 장치를 관리할 수 있다. 일부 경우에, I/O 제어기(135)는 외부 주변 구성요소에 대한 물리적 연결부 또는 포트를 표현할 수 있다.
입력부(145)는 시스템(100) 또는 그것의 구성요소에 정보, 신호, 또는 데이터를 제공할 수 있는 시스템(100) 외부의 디바이스 또는 신호를 표현할 수 있다. 이것은 다른 디바이스와의 또는 이 사이의 사용자 인터페이스 또는 인터페이스를 포함할 수 있다. 일부 경우에, 입력부(145)는 하나 이상의 주변 구성요소(130)를 통해 시스템(100)과 인터페이싱하는 주변 장치일 수 있거나 I/O 제어기(135)에 의해 관리될 수 있다.
출력부(150)는 시스템(100) 또는 그것의 구성요소 중 임의의 것으로부터 출력을 수신하도록 구성된 시스템(100) 외부의 디바이스 또는 신호를 표현할 수 있다. 출력부(150)의 예는 디스플레이, 오디오 스피커, 인쇄 디바이스, 또는 인쇄 회로 기판의 또 다른 프로세서, 등을 포함할 수 있다. 일부 경우에, 출력부(150)는 하나 이상의 주변 구성요소(130)를 통해 시스템(100)과 인터페이싱하는 주변 장치일 수 있거나 I/O 제어기(135)에 의해 관리될 수 있다.
시스템(100)의 구성요소는 이의 기능을 수행하도록 설계된 범용 또는 특수 목적 회로로 구성될 수 있다. 이것은 본 명세서에 개시된 기능을 수행하도록 구성된 다양한 회로 요소 예를 들면, 전도성 라인, 트랜지스터, 커패시터, 인덕터, 저항기, 증폭기, 또는 다른 능동 또는 수동 요소를 포함할 수 있다. 시스템(100)은 본 명세서에서 논의된 바와 같이 선택 구성요소 및 매핑 구성요소를 부가적으로 포함할 수 있다.
메모리 디바이스(110)는 디바이스 메모리 제어기(155) 및 하나 이상의 메모리 다이(160)를 포함할 수 있다. 각각의 메모리 다이(160)는 로컬 메모리 제어기(165)(예컨대, 로컬 메모리 제어기(165-a), 로컬 메모리 제어기(165-b), 및/또는 로컬 메모리 제어기(165-N)) 및 메모리 어레이(170)(예컨대, 메모리 어레이(170-a), 메모리 어레이(170-b), 및/또는 메모리 어레이(170-N))를 포함할 수 있다. 메모리 어레이(170)는 메모리 셀의 집합(예컨대, 그리드)일 수 있으며, 각각의 메모리 셀은 적어도 1 비트의 디지털 데이터를 저장하도록 구성된다. 메모리 어레이(170) 및/또는 메모리 셀의 특징은 도 2를 참조하여 더 상세하게 설명된다. 각각의 메모리 어레이는 각각 대응하는 물리적 주소를 가질 수 있는 메모리 셀을 포함할 수 있다. 메모리 셀은 데이터를 저장할 수 있으며 데이터는 웨어 레벨링 목적을 위해 메모리 셀 사이에 주기적으로 전송될 수 있다. 메모리 어레이의 메모리 셀 사이에 데이터를 이동시킬 때, 데이터에 대한 논리적 주소는 메모리 디바이스(110)에 의해(예컨대, 그 안에 있는 하나 이상의 제어기에 의해) 또는 외부 메모리 제어기(105)에 의해 데이터의 위치를 추적하는 것을 지원하기 위해 정적(고정됨) 상태로 유지될 수 있다.
메모리 디바이스(110)는 메모리 셀의 2차원(2D) 어레이의 일례일 수 있거나 메모리 셀의 3차원(3D) 어레이의 일례일 수 있다. 예를 들면, 2D 메모리 디바이스는 단일 메모리 다이(160)를 포함할 수 있다. 3D 메모리 디바이스는 2개 이상의 메모리 다이(160)(예컨대, 메모리 다이(160-a), 메모리 다이(160-b), 및/또는 임의의 양의 메모리 다이(160-N))를 포함할 수 있다. 3D 메모리 디바이스에서, 복수의 메모리 다이(160-N)는 서로의 상단에 적층될 수 있다. 일부 경우에, 3D 메모리 디바이스의 메모리 다이(160-N)는 데크(deck), 레벨, 층, 또는 다이로서 언급될 수 있다. 3D 메모리 디바이스는 임의의 양의 적층된 메모리 다이(160-N)(예컨대, 2개의 하이, 3개의 하이, 4개의 하이, 5개의 하이, 6개의 하이, 7개의 하이, 8개의 하이)를 포함할 수 있다. 이것은 단일 2D 메모리 디바이스와 비교하여 기판에 배치될 수 있는 메모리 셀의 양을 증가시킬 수 있으며, 이는 결과적으로 생산 비용을 감소시키거나 메모리 어레이의 성능을 증가시키거나, 둘 모두를 수행할 수 있다. 일부 3D 메모리 디바이스에서, 상이한 데크는 일부 데크가 워드 라인, 디지트 라인, 및/또는 플레이트 라인 중 적어도 하나를 공유할 수 있도록 적어도 하나의 공통 액세스 라인을 공유할 수 있다.
디바이스 메모리 제어기(155)는 메모리 디바이스(110)의 동작을 제어하도록 구성된 회로 또는 구성요소를 포함할 수 있다. 이와 같이, 디바이스 메모리 제어기(155)는 메모리 디바이스(110)가 명령을 수행하는 것을 가능하게 하는 하드웨어, 펌웨어, 및 소프트웨어를 포함할 수 있고 메모리 디바이스(110)와 관련된 명령, 데이터, 또는 제어 정보를 수신, 송신, 또는 실행하도록 구성될 수 있다. 디바이스 메모리 제어기(155)는 외부 메모리 제어기(105), 하나 이상의 메모리 다이(160), 또는 프로세서(120)와 통신하도록 구성될 수 있다. 일부 경우에, 메모리 디바이스(110)는 외부 메모리 제어기(105)로부터 데이터 및/또는 명령을 수신할 수 있다. 예를 들면, 메모리 디바이스(110)는 메모리 디바이스(110)가 시스템(100)의 구성요소(예컨대, 프로세서(120))를 대신하여 특정 데이터를 저장한다는 것을 나타내는 기록 명령 또는 메모리 디바이스(110)가 메모리 다이(160)에 저장된 특정 데이터를 시스템(100)의 구성요소(예컨대, 프로세서(120))에 제공한다는 것을 나타내는 판독 명령을 수신할 수 있다. 일부 경우에, 디바이스 메모리 제어기(155)는 메모리 다이(160)의 로컬 메모리 제어기(165)와 결부하여 본 명세서에서 설명된 메모리 디바이스(110)의 동작을 제어할 수 있다. 디바이스 메모리 제어기(155) 및/또는 로컬 메모리 제어기(165)에 포함된 구성요소의 예는 외부 메모리 제어기(105)로부터 수신된 신호를 복조하기 위한 수신기, 신호를 변조하고 이를 외부 메모리 제어기(105)로 송신하기 위한 디코더, 로직, 디코더, 증폭기, 필터, 등을 포함할 수 있다.
로컬 메모리 제어기(165)(예컨대, 메모리 다이(160)에 로컬임)는 메모리 다이(160)의 동작을 제어하도록 구성될 수 있다. 또한, 로컬 메모리 제어기(165)는 디바이스 메모리 제어기(155)와 통신하도록(예컨대, 데이터 및/또는 명령을 수신하고 송신하도록) 구성될 수 있다. 로컬 메모리 제어기(165)는 본 명세서에서 설명된 바와 같이 메모리 디바이스(110)의 동작을 제어하기 위해 디바이스 메모리 제어기(155)를 지원할 수 있다. 일부 경우에, 메모리 디바이스(110)는 디바이스 메모리 제어기(155)를 포함하지 않으며, 로컬 메모리 제어기(165) 또는 외부 메모리 제어기(105)는 본 명세서에서 설명된 다양한 기능을 수행할 수 있다. 이와 같이, 로컬 메모리 제어기(165)는 디바이스 메모리 제어기(155)와, 다른 로컬 메모리 제어기(165)와, 또는 외부 메모리 제어기(105) 또는 프로세서(120)와 직접적으로 통신하도록 구성될 수 있다. 일부 예에서, 하나 이상의 메모리 제어기 - 예컨대, 디바이스 메모리 제어기(155) 또는 로컬 메모리 제어기(165) 중 하나 이상 - 는 선택 구성요소를 포함할 수 있다. 선택 구성요소는 물리적 주소의 각각의 비트에 대해(또는 일부 경우에 물리적 주소의 각각의 비트에 대해), 논리적 주소의 또는 더 많은 비트에 기초하여 물리적 주소의 비트를 결정하기 위한 대응하는 논리 연산을 선택할 수 있다. 논리 연산은 패스 스루(pass-through)(비반전, 투명) 연산, 반전 연산, 배타적 또는 (XOR) 연산, XNOR 연산, 주소 스왑 연산(address swap operation), 또는 당업자에 의해 인식될 수 있는 바와 같이 또 다른 적합한 논리 연산을 포함할 수 있다. 논리적 주소는 따라서, 요청된 데이터가 저장될 수 있는 물리적 주소에 매핑(매핑 함수에 의해 매핑)될 수 있다.
외부 메모리 제어기(105)는 시스템(100)의 구성요소(예컨대, 프로세서(120))와 메모리 디바이스(110) 사이로의 정보, 데이터, 및/또는 명령의 전달을 가능하게 하도록 구성될 수 있다. 외부 메모리 제어기(105)는 시스템(100)의 구성요소가 메모리 디바이스의 동작의 상세를 알 필요가 없을 수 있도록 시스템(100)의 구성요소와 메모리 디바이스(110) 사이의 연락자(liaison)의 역할을 할 수 있다. 시스템(100)의 구성요소는 외부 메모리 제어기(105)가 만족하는 요청(예컨대, 판독 명령 또는 기록 명령)을 외부 메모리 제어기(105)에 제공할 수 있다. 외부 메모리 제어기(105)는 시스템(100)의 구성요소와 메모리 디바이스(110) 사이에서 교환된 통신을 변환 또는 전환할 수 있다. 일부 경우에, 외부 메모리 제어기(105)는 공통 (소스) 시스템 클록 신호를 생성하는 시스템 클록을 포함할 수 있다. 일부 경우에, 외부 메모리 제어기(105)는 공통 (소스) 데이터 클록 신호를 생성하는 공통 데이터 클록을 포함할 수 있다.
일부 경우에, 외부 메모리 제어기(105) 또는 시스템(100)의 다른 구성요소, 또는 본 명세서에서 설명된 그것의 기능은 프로세서(120)에 의해 구현될 수 있다. 예를 들면, 외부 메모리 제어기(105)는 프로세서(120) 또는 시스템(100)의 다른 구성요소에 의해 구현된 하드웨어, 펌웨어, 또는 소프트웨어, 또는 이들의 일부 조합일 수 있다. 외부 메모리 제어기(105)가 메모리 디바이스(110) 외부에 있는 것으로서 묘사될지라도, 일부 경우에, 외부 메모리 제어기(105), 또는 본 명세서에서 설명된 그것의 기능은 메모리 디바이스(110)에 의해 구현될 수 있다. 예를 들면, 외부 메모리 제어기(105)는 디바이스 메모리 제어기(155) 또는 하나 이상의 로컬 메모리 제어기(165)에 의해 구현된 하드웨어, 펌웨어 또는 소프트웨어, 또는 이들의 일부 조합일 수 있다. 일부 경우에, 외부 메모리 제어기(105)는 외부 메모리 제어기(105)의 일부가 프로세서(120)에 의해 구현되고 다른 부분이 디바이스 메모리 제어기(155) 또는 로컬 메모리 제어기(165)에 의해 구현되도록 프로세서(120) 및 메모리 디바이스(110)에 걸쳐 분산될 수 있다. 마찬가지로, 일부 경우에, 본 명세서에서 디바이스 메모리 제어기(155) 또는 로컬 메모리 제어기(165)에 속하는 하나 이상의 기능은 일부 경우에 외부 메모리 제어기(105)(프로세서(120)와 분리되거나 이에 포함된 것과 같은)에 의해 수행될 수 있다.
시스템(100)의 구성요소는 복수의 채널(115)을 사용하여 메모리 디바이스(110)와 정보를 교환할 수 있다. 일부 예에서, 채널(115)은 외부 메모리 제어기(105)와 메모리 디바이스(110) 사이의 통신을 가능하게 할 수 있다. 각각의 채널(115)은 시스템(100)의 구성요소와 연관된 단자 사이의 하나 이상의 신호 경로 또는 송신 매체(예컨대, 전도체)를 포함할 수 있다. 예를 들면, 채널(115)은 외부 메모리 제어기(105)에 있는 하나 이상의 핀 또는 패드 및 메모리 디바이스(110)에 있는 하나 이상의 핀 또는 패드를 포함하는 제1 단자를 포함할 수 있다. 핀은 시스템(100)의 디바이스의 전도성 입력 또는 출력 지점의 일례일 수 있고, 핀은 채널의 일부의 역할을 하도록 구성될 수 있다.
일부 경우에, 단자의 핀 또는 패드는 채널(115)의 신호 경로의 일부일 수 있다. 부가적인 신호 경로는 시스템(100)의 구성요소 내에서 신호를 라우팅하기 위한 채널의 단자와 결합될 수 있다. 예를 들면, 메모리 디바이스(110)는 채널(115)의 단자로부터 메모리 디바이스(110)의 다양한 구성요소(예컨대, 디바이스 메모리 제어기(155), 메모리 다이(160), 로컬 메모리 제어기(165), 메모리 어레이(170))로 신호를 라우팅하는 신호 경로(예컨대, 메모리 다이(160) 내부와 같은, 메모리 디바이스(110) 또는 그것의 구성요소 내부의 신호 경로)를 포함할 수 있다.
채널(115)(및 연관된 신호 경로 및 단자)은 특정한 유형의 정보를 전달하는데 지정될 수 있다. 일부 경우에, 채널(115)은 통합된 채널일 수 있고 따라서, 다수의 개별적인 채널을 포함할 수 있다. 예를 들면, 데이터 채널(190)은 x4(예컨대, 4개의 신호 경로를 포함함), x8(예컨대, 8개의 신호 경로를 포함함), x16(16개의 신호 경로를 포함함), 등일 수 있다.
일부 경우에, 채널(115)은 하나 이상의 명령 및 주소(CA) 채널(186)을 포함할 수 있다. CA 채널(186)은 명령(예컨대, 주소 정보)과 연관된 제어 정보를 포함하는 메모리 디바이스(110)와 외부 메모리 제어기(105) 사이에 명령을 전달하도록 구성될 수 있다. 예를 들면, CA 채널(186)은 원하는 데이터의 주소와 함께 판독 명령을 포함할 수 있다. 일부 경우에, CA 채널(186)은 상승 클록 신호 에지 및/또는 하강 클록 신호 에지에 대해 등록될 수 있다. 일부 경우에, CA 채널(186)은 8개 또는 9개의 신호 경로를 포함할 수 있다. 일부 경우에, 메모리 디바이스(110)에 액세스될(이에 기록되거나 이로부터 판독될) 데이터에 대한 논리적 주소(논리적 주소 비트)는 하나 이상의 CA 채널(186)을 통해 메모리 디바이스에 의해 수신될 수 있다.
일부 경우에, 채널(115)은 하나 이상의 클록 신호(CK) 채널(188)을 포함할 수 있다. CK 채널(188)은 외부 메모리 제어기(105)와 메모리 디바이스(110) 사이에 하나 이상의 공통 클록 신호를 전달하도록 구성될 수 있다. 각각의 클록 신호는 하이 상태와 로우 상태 사이에서 발진하고 외부 메모리 제어기(105) 및 메모리 디바이스(110)의 동작을 조정하도록 구성될 수 있다. 일부 경우에, 클록 신호는 차동 출력일 수 있고(예컨대, CK_t 신호 및 CK_c 신호) CK 채널(188)의 신호 경로는 그에 따라 구성될 수 있다. 일부 경우에, 클럭 신호는 단일 종단될 수 있다. 일부 경우에, 클럭 신호는 1.5GHz 신호일 수 있다. CK 채널(188)은 임의의 수의 신호 경로를 포함할 수 있다. 일부 경우에, 클록 신호(CK)(예컨대, CK_t 신호 및 CK_c 신호)는 메모리 디바이스(110)에 대한 명령 및 주소지정 동작, 또는 메모리 디바이스(110)에 대한 다른 시스템 전반의 동작에 대한 타이밍 기준을 제공할 수 있다. 클록 신호(CK)는 따라서, 제어 클록 신호(CK), 명령 클록 신호(CK), 또는 시스템 클록 신호(CK)로서 다양하게 언급될 수 있다. 시스템 클록 신호(CK)는 하나 이상의 하드웨어 구성요소(예컨대, 발진기, 수정, 논리 게이트, 트랜지스터, 등)를 포함할 수 있는 시스템 클록에 의해 생성될 수 있다.
일부 경우에, 채널(115)은 하나 이상의 데이터(DQ) 채널(190)을 포함할 수 있다. 데이터 채널(190)은 외부 메모리 제어기(105)와 메모리 디바이스(110) 사이에 데이터 및/또는 제어 정보를 전달하도록 구성될 수 있다. 예를 들면, 데이터 채널(190)은 메모리 디바이스(110)에 기록될 정보(예컨대, 양방향) 또는 메모리 디바이스(110)로부터 판독된 정보를 전달할 수 있다. 데이터 채널(190)은 다양한 상이한 변조 방식(예컨대, NRZ, PAM4)을 사용하여 변조될 수 있는 신호를 전달할 수 있다.
일부 경우에, 채널(115)은 다른 목적에 지정될 수 있는 하나 이상의 다른 채널(192)을 포함할 수 있다. 이 다른 채널(192)은 임의의 수의 신호 경로를 포함할 수 있다.
채널(115)은 다양한 상이한 아키텍처를 사용하여 외부 메모리 제어기(105)를 메모리 디바이스(110)와 결합할 수 있다. 다양한 아키텍처의 예는 버스, 지점 대 지점 연결부, 크로스바, 실리콘 인터포저(silicon interposer)와 같은 고 밀도 인터포저, 또는 유기 기판에 형성된 채널 또는 이들의 일부 조합을 포함할 수 있다. 예를 들면, 일부 예에서, 신호 경로는 실리콘 인터포저 또는 유리 인터포저와 같은 고 밀도 인터포저를 적어도 부분적으로 포함할 수 있다.
채널(115)을 통해 전달된 신호는 다양한 상이한 변조 방식을 사용하여 변조될 수 있다. 일부 경우에, 외부 메모리 제어기(105)와 메모리 디바이스(110) 사이에 전달된 신호를 변조하기 위해 이진 심볼(또는 이진 레벨) 변조 방식이 사용될 수 있다. 이진 심볼 변조 방식은 M이 2와 같은 M-진 변조 방식의 일례일 수 있다. 이진 심볼 변조 방식의 각각의 심볼은 1 비트의 디지털 데이터를 표현하도록 구성될 수 있다(예컨대, 심볼은 논리 1 또는 논리 0을 표현할 수 있다). 이진 심볼 변조 방식의 예는 비제로 복귀(non-return-to zero: NRZ), 유니폴라 인코딩, 바이폴라 인코딩, 맨체스터 인코딩, 2개의 심볼을 갖는 펄스 진폭 변조(PAM)(예컨대, PAM2), 등을 포함하지만, 이로 제한되지 않는다.
일부 경우에, 다중 심볼(또는 다중 레벨) 변조 방식은 외부 메모리 제어기(105)와 메모리 디바이스(110) 사이에 전달된 신호를 변조하기 위해 사용될 수 있다. 다중 심볼 변조 방식은 M이 3보다 크거나 같은 M-진 변조 방식의 일례일 수 있다. 다중 심볼 변조 방식의 각각의 심볼은 1 비트보다 많은 디지털 데이터를 표현하도록 구성될 수 있다(예컨대, 심볼은 논리 00, 논리 01, 논리 10 또는 논리 11을 표현할 수 있다). 다중 심볼 변조 방식의 예는 PAM4, PAM8, 등, 직교 진폭 변조(QAM), 직교 위상 편이 변조(QPSK), 등을 포함하지만, 이로 제한되지 않는다. 다중 심볼 신호 또는 PAM4 신호는 1 비트보다 많은 정보를 인코딩하기 위해 적어도 3개의 레벨을 포함하는 변조 방식을 사용하여 변조되는 신호일 수 있다. 다중 심볼 변조 방식 및 심볼은 대안적으로 비이진, 다중 비트, 또는 고차 변조 방식 및 심볼로서 언급될 수 있다.
일부 경우에, 메모리 디바이스(110)는 데이터를 식별하기 위한 논리적 주소와 예측할 수 없는 방식으로 데이터를 저장하기 위한 물리적 주소 사이를 매핑하기 위해 주소 난독화를 구현할 수 있으며, 이는 웨어 레벨링 기법과 결부하여 동작할 수 있고, 불량 행위자가 역엔지니어링된 데이터 이동 패턴을 상이한 메모리 디바이스, 심지어 동일한 웨어 레벨링 기능을 이용하는 메모리 디바이스에 적용하는 것을 방지할 수 있다. 예를 들면, 메모리 디바이스(110)는 적어도 하나의 선택 구성요소 및 매핑 구성요소를 포함할 수 있다(예컨대, 일부 경우에, 다수의 다이(160) 또는 어레이(170)에 대응하는 다수의 선택 구성요소 및/또는 다수의 매핑 구성요소를 포함할 수 있다). 선택 구성요소는 인터페이스와 결합될 수 있고 매핑 함수를 선택할 수 있다. 매핑 함수는 데이터에 대한 논리적 주소를 메모리 어레이 내에 데이터를 저장하기 위한 하나 이상의 메모리 셀의 물리적 주소에 매핑할 수 있다. 예를 들면, 선택 구성요소는 물리적 주소의 각각의 비트에 대해, 논리적 주소의 또는 더 많은 비트에 기초하여 물리적 주소의 비트를 결정하기 위한 대응하는 논리 연산을 선택할 수 있다. 논리적 주소의 개별적인 비트의 각각은 물리적 주소를 결정하기 위해 하나 이상의 매핑 서브구성요소를 통해 라우팅될 수 있다. 매핑 함수(예컨대, 매핑 서브구성요소에 의해 구현된 논리 연산)은 예를 들면, 수 생성기(예컨대, 난수 생성기)에 의해 생성된 수(예컨대, 난수)에 기초하는 것을 포함하는 임의의 수의 방식으로 선택될 수 있다. 일부 경우에, 매핑 함수는 메모리 디바이스(110)와 연관된 하나 이상의 식별자(예컨대, 메모리 디바이스의 다이(160) 또는 어레이(170) 또는 다른 양태의 식별자)에 기초하여 (예컨대, 제작 동안 또는 제작 후에) 선택되거나 구성될 수 있다.
도 2는 본 발명의 다양한 예에 따른 메모리 다이(200)의 일례를 도시한다. 메모리 다이(200)는 도 1을 참조하여 설명된 메모리 다이(160)의 일례일 수 있다. 일부 경우에, 메모리 다이(200)는 메모리 칩, 메모리 디바이스, 또는 전자 메모리 장치로서 언급될 수 있다. 메모리 다이(200)는 상이한 논리 상태를 저장하도록 프로그래밍 가능한 하나 이상의 메모리 셀(205)을 포함할 수 있다. 각각의 메모리 셀(205)은 2개 이상의 상태를 저장하도록 프로그래밍 가능할 수 있다. 예를 들면, 메모리 셀(205)은 한 번에 1 비트의 디지털 논리(예컨대, 논리 0 및 논리 1)를 저장하도록 구성될 수 있다. 일부 경우에, 단일 메모리 셀(205)(예컨대, 다중 레벨 메모리 셀)은 한 번에 1 비트보다 많은 디지털 논리(예컨대, 논리 00, 논리 01, 논리 10 또는 논리 11)를 저장하도록 구성될 수 있다. 일부 경우에, 데이터는 메모리 셀에 저장될 수 있고 데이터는 그것과 연관된 논리적 주소를 가질 수 있다. 논리적 주소는 데이터에 대해 고정(정적)될 수 있으며 데이터가 저장되는 메모리 셀의 물리적 주소에 매핑될 수 있다. 일부 경우에, 데이터의 물리적 주소는 본 명세서에서 설명된 바와 같이 주소 난독화 기법에 따라 초기에 결정된 후에, 웨어 레벨링 기능에 따라 시간에 따라 변경될 수 있다(즉, 데이터가 하나의 메모리 셀로부터 또 다른 메모리 셀로 이동될 수 있다). 메모리 셀의 논리적 주소와 물리적 주소 사이의 매핑은 본 명세서에서 설명된 바와 같이 매핑 함수에 의해 제공될 수 있다.
메모리 셀(205)은 커패시터에 프로그램 가능한 상태를 나타내는 전하를 저장할 수 있다. DRAM 아키텍처는 프로그래밍 가능한 상태를 나타내는 전하를 저장하기 위해 유전체 재료를 포함하는 커패시터를 포함할 수 있다. 다른 메모리 아키텍처에서, 다른 저장 디바이스 및 구성요소가 가능하다. 예를 들면, 비선형 유전체 재료가 이용될 수 있다.
판독 및 기록과 같은 동작은 워드 라인(210) 및/또는 디지트 라인(215)과 같은 액세스 라인을 활성화하거나 선택함으로써 메모리 셀(205)에 대해 수행될 수 있다. 일부 경우에, 디지트 라인(215)은 비트 라인으로서 또한 언급될 수 있다. 액세스 라인, 워드 라인 및 디지트 라인, 또는 이와 유사한 것에 대한 참조는 이해 또는 동작의 손실 없이 상호 교환 가능하다. 워드 라인(210) 또는 디지트 라인(215)을 활성화하거나 선택하는 것은 각각의 라인에 전압을 인가하는 것을 포함할 수 있다.
메모리 다이(200)는 그리드형 패턴으로 배열된 액세스 라인(예컨대, 워드 라인(210) 및 디지트 라인(215))을 포함할 수 있다. 메모리 셀(205)은 워드 라인(210)과 디지트 라인(215)의 교차점에 배치될 수 있다. 워드 라인(210) 및 디지트 라인(215)을 바이어싱함으로써(예컨대, 워드 라인(210) 또는 디지트 라인(215)에 전압을 인가함), 단일 메모리 셀(205)은 그들의 교차점에서 액세스될 수 있다.
메모리 셀(205)에 액세스하는 것은 행 디코더(220) 또는 열 디코더(225)를 통해 제어될 수 있다. 예를 들면, 행 디코더(220)는 로컬 메모리 제어기(260)로부터 행 주소를 수신하고 수신된 행 주소에 기초하여 워드 라인(210)을 활성화할 수 있다. 열 디코더(225)는 로컬 메모리 제어기(260)로부터 열 주소를 수신할 수 있고 수신된 열 주소에 기초하여 디지트 라인(215)을 활성화할 수 있다. 예를 들면, 메모리 다이(200)는 WL_1 내지 WL_M으로 라벨링된 다수의 워드 라인(210), 및 DL_1 내지 DL_N으로 라벨링된 다수의 디지트 라인(215)을 포함할 수 있으며, 여기서 M 및 N은 메모리 어레이의 크기에 의존한다. 따라서, 워드 라인(210) 및 디지트 라인(215) 예컨대, WL_1 및 DL_3을 활성화함으로써, 그들의 교차점에 있는 메모리 셀(205)이 액세스될 수 있다. 2차원 또는 3차원 구성에서, 워드 라인(210)과 디지트 라인(215)의 교차점은 메모리 셀(205)의 주소로서 언급될 수 있고, 물리적 주소 비트로서 언급될 수 있는 물리적 주소를 포함하는 비트의 세트에 의해 식별될 수 있다.
메모리 셀(205)은 커패시터(230) 및 스위칭 구성요소(235)와 같은 논리 저장 구성요소를 포함할 수 있다. 커패시터(230)는 유전체 커패시터 또는 강유전체 커패시터의 일례일 수 있다. 커패시터(230)의 제1 노드는 스위칭 구성요소(235)와 결합될 수 있고 커패시터(230)의 제2 노드는 전압원(240)와 결합될 수 있다. 일부 경우에, 전압원(240)은 Val과 같은 셀 플레이트 기준 전압일 수 있거나, Vss와 같은 접지일 수 있다. 일부 경우에, 전압원(240)은 플레이트 라인 구동기와 결합된 플레이트 라인의 일례일 수 있다. 스위칭 구성요소(235)는 2개의 구성요소 사이의 전자 통신을 선택적으로 확립하거나 확립 해제하는 트랜지스터 또는 임의의 다른 유형의 스위치 디바이스의 일례일 수 있다.
메모리 셀(205)을 선택하거나 선택 해제하는 것은 스위칭 구성요소(235)를 활성화하거나 활성화 해제함으로써 달성될 수 있다. 커패시터(230)는 스위칭 구성요소(235)를 사용하여 디지트 라인(215)과 전자 통신할 수 있다. 예를 들면, 커패시터(230)는 스위칭 구성요소(235)가 활성화 해제될 때 디지트 라인(215)으로부터 분리될 수 있고, 커패시터(230)는 스위칭 구성요소(235)가 활성화될 때 디지트 라인(215)과 결합될 수 있다. 일부 경우에, 스위칭 구성요소(235)는 트랜지스터이고 그것의 동작은 트랜지스터 게이트에 전압을 인가함으로써 제어될 수 있으며, 여기서 트랜지스터 게이트와 트랜지스터 소스 사이의 전압 차이는 트랜지스터의 임계 전압보다 크거나 그 미만일 수 있다. 일부 경우에, 스위칭 구성요소(235)는 p형 트랜지스터 또는 n형 트랜지스터일 수 있다. 워드 라인(210)은 스위칭 구성요소(235)의 게이트와 전자 통신할 수 있고 워드 라인(210)에 인가되는 전압에 기초하여 스위칭 구성요소(235)를 활성화/활성화 해제할 수 있다.
워드 라인(210)은 메모리 셀(205)에 대한 액세스 동작을 수행하기 위해 사용될 수 있는 메모리 셀(205)과 전자 통신하는 전도성 라인일 수 있다. 일부 아키텍처에서, 워드 라인(210)은 메모리 셀(205)의 스위칭 구성요소(235)의 게이트와 전자 통신할 수 있고 메모리 셀의 스위칭 구성요소(235)를 제어하도록 구성될 수 있다. 일부 아키텍처에서, 워드 라인(210)은 메모리 셀(205)의 커패시터의 노드와 전자 통신할 수 있고 메모리 셀(205)은 스위칭 구성요소를 포함하지 않을 수 있다.
디지트 라인(215)은 메모리 셀(205)을 감지 구성요소(245)와 연결하는 전도성 라인일 수 있다. 일부 아키텍처에서, 메모리 셀(205)은 액세스 동작의 부분 동안 디지트 라인(215)과 선택적으로 결합될 수 있다. 예를 들면, 메모리 셀(205)의 스위칭 구성요소(235) 및 워드 라인(210)은 메모리 셀(205) 및 디지트 라인(215)의 커패시터(230)를 결합하고/하거나 분리하도록 구성될 수 있다. 일부 아키텍처에서, 메모리 셀(205)은 디지트 라인(215)과 (예컨대, 변함없이) 전자 통신할 수 있다.
로컬 메모리 제어기(260)는 다양한 구성요소(예컨대, 행 디코더(220), 열 디코더(225) 및 감지 구성요소(245))를 통해 메모리 셀(205)의 동작을 제어할 수 있다. 로컬 메모리 제어기(260)는 도 1을 참조하여 설명된 로컬 메모리 제어기(165)의 일례일 수 있다. 일부 경우에, 행 디코더(220), 열 디코더(225) 및 감지 구성요소(245) 중 하나 이상은 로컬 메모리 제어기(260)와 함께 배치될 수 있다. 로컬 메모리 제어기(260)는 외부 메모리 제어기(105)(또는 도 1을 참조하여 설명된 디바이스 메모리 제어기(155))로부터 명령 및/또는 데이터를 수신하고, 명령 및/또는 데이터를 메모리 다이(200)에 의해 사용될 수 있는 정보로 전환하고, 메모리 다이(200)에 대해 하나 이상의 동작을 수행하며, 하나 이상의 동작을 수행한 것에 응답하여 메모리 다이(200)로부터 외부 메모리 제어기(105)(또는 디바이스 메모리 제어기(155))로 데이터를 전달하도록 구성될 수 있다. 로컬 메모리 제어기(260)는 타깃 워드 라인(210) 및 타깃 디지트 라인(215)을 활성화하기 위해 행 및 열 주소 신호를 생성할 수 있다. 일부 경우에, 로컬 메모리 제어기(260)는 매핑 구성요소로부터 인터페이스를 통해 물리적 주소 비트를 포함하는 물리적 주소를 수신할 수 있다. 매핑 구성요소는 본 명세서에서 상세히 논의될 수 있다. 일부 경우에, 로컬 메모리 제어기(260)는 디바이스 메모리 제어기로부터 물리적 주소를 수신할 수 있다. 디바이스 메모리 제어는 인터페이스를 통해 및 매핑 구성요소로부터 물리적 주소를 수신할 수 있다.
로컬 메모리 제어기(260)는 또한, 메모리 다이(200)의 동작 동안 사용된 다양한 전압 또는 전류를 생성하고 제어할 수 있다. 일반적으로, 본 명세서에서 논의된 인가된 전압 또는 전류의 진폭, 형상, 또는 지속기간은 조정되거나 달라질 수 있고 메모리 다이(200)를 동작시키는데 논의된 다양한 동작에 대해 상이할 수 있다.
일부 경우에, 로컬 메모리 제어기(260)는 메모리 다이(200)의 하나 이상의 메모리 셀(205)에 대해 기록 동작(예컨대, 프로그래밍 동작)을 수행하도록 구성될 수 있다. 기록 동작 동안, 메모리 다이(200)의 메모리 셀(205)은 원하는 논리 상태를 저장하도록 프로그래밍될 수 있다. 일부 경우에, 복수의 메모리 셀(205)은 단일 기록 동작 동안 프로그래밍될 수 있다. 로컬 메모리 제어기(260)는 기록 동작을 수행할 타깃 메모리 셀(205)을 식별할 수 있다. 로컬 메모리 제어기(260)는 타깃 메모리 셀(205)(예컨대, 타깃 메모리 셀(205)의 주소)과 전자 통신하는 타깃 워드 라인(210) 및 타깃 디지트 라인(215)을 식별할 수 있다. 로컬 메모리 제어기(260)는 타깃 메모리 셀(205)에 액세스하기 위해 타깃 워드 라인(210) 및 타깃 디지트 라인(215)을 활성화할 수 있다(예컨대, 워드 라인(210) 또는 디지트 라인(215)에 전압을 인가할 수 있다). 로컬 메모리 제어기(260)는 메모리 셀(205)의 커패시터(230)에 특정 상태(예컨대, 전하)를 저장하기 위해 기록 동작 동안 디지트 라인(215)에 특정 신호(예컨대, 전압)를 인가할 수 있고, 특정 상태(예컨대, 전하)는 원하는 논리 상태를 나타낼 수 있다.
일부 경우에, 로컬 메모리 제어기(260)는 메모리 다이(200)의 하나 이상의 메모리 셀(205)에 대해 판독 동작(예컨대, 감지 동작)을 수행하도록 구성될 수 있다. 판독 동작 동안, 메모리 다이(200)의 메모리 셀(205)에 저장된 논리 상태가 결정될 수 있다. 일부 경우에, 복수의 메모리 셀(205)은 단일 판독 동작 동안 감지될 수 있다. 로컬 메모리 제어기(260)는 판독 동작을 수행할 타깃 메모리 셀(205)을 식별할 수 있다. 로컬 메모리 제어기(260)는 타깃 메모리 셀(205)(예컨대, 타깃 메모리 셀(205)의 주소)과 전자 통신하는 타깃 워드 라인(210) 및 타깃 디지트 라인(215)을 식별할 수 있다. 로컬 메모리 제어기(260)는 타깃 메모리 셀(205)에 액세스하기 위해 타깃 워드 라인(210) 및 타깃 디지트 라인(215)을 활성화할 수 있다(예컨대, 워드 라인(210) 또는 디지트 라인(215)에 전압을 인가할 수 있다). 타깃 메모리 셀(205)은 액세스 라인을 바이어싱한 것에 응답하여 신호를 감지 구성요소(245)로 전송할 수 있다. 감지 구성요소(245)는 신호를 증폭할 수 있다. 로컬 메모리 제어기(260)는 감지 구성요소(245)를 활성화하고(예컨대, 감지 구성요소를 래칭하고) 그에 의해, 메모리 셀(205)로부터 수신된 신호를 기준 신호(250)와 비교할 수 있다. 그 비교에 기초하여, 감지 구성요소(245)는 메모리 셀(205)에 저장되는 논리 상태를 결정할 수 있다. 로컬 메모리 제어기(260)는 메모리 셀(205)에 저장된 논리 상태를 판독 동작의 일부로서 외부 메모리 제어기(105)(또는 디바이스 메모리 제어기(155))에 전달할 수 있다.
일부 메모리 아키텍처에서, 메모리 셀(205)에 액세스하는 것은 메모리 셀(205)에 저장된 논리 상태를 저하시키거나 파괴할 수 있다. 예를 들면, DRAM 아키텍처에서 수행된 판독 동작은 타깃 메모리 셀의 커패시터를 부분적으로 또는 완전히 방전시킬 수 있다. 로컬 메모리 제어기(260)는 메모리 셀을 그것의 원래의 논리 상태로 되돌리기 위해 재기록 동작 또는 리프레시 동작을 수행할 수 있다. 로컬 메모리 제어기(260)는 판독 동작 후에 논리 상태를 타깃 메모리 셀에 재기록할 수 있다. 일부 경우에, 재기록 동작은 판독 동작의 일부로 고려될 수 있다. 부가적으로, 워드 라인(210)과 같은 단일 액세스 라인을 활성화하는 것은 그 액세스 라인과 전자 통신하는 일부 메모리 셀에 저장된 상태를 방해할 수 있다. 따라서, 재기록 동작 또는 리프레시 동작은 액세스되지 않았을 수 있는 하나 이상의 메모리 셀에 대해 수행될 수 있다.
도 3은 메모리를 위한 주소 난독화를 위한 시스템(300)의 일례를 도시한다. 일부 예에서, 시스템(300)은 상기 설명된 하나 이상의 구성요소를 포함할 수 있다. 예를 들면, 시스템(300)은 도 1을 참조하여 설명된 바와 같이 메모리 디바이스(110)의 일례일 수 있는 메모리 디바이스(310); 도 1을 참조하여 설명된 바와 같이 각각 메모리 다이(160)의 일례일 수 있는 메모리 다이(360); 도 1을 참조하여 설명된 바와 같이 각각 메모리 어레이(170)의 일례일 수 있는 메모리 어레이(365)를 포함할 수 있다. 시스템(300)은 선택 구성요소(380), 매핑 구성요소(390), 하나 이상의 매핑 서브구성요소(390), 및 인터페이스(395)를 포함할 수 있다. 일부 예에서, 인터페이스(395)는 메모리 어레이(365)의 메모리 셀에 저장된 데이터에 액세스하기 위한 논리적 주소를 수신하도록 구성될 수 있다. 인터페이스(395)에서 수신된 논리적 주소는 호스트 디바이스(예컨대, 외부 메모리 제어기(105) 또는 프로세서(120))에 의해 발행될 수 있다. 인터페이스(395)는 선택 구성요소(380)와 결합될 수 있다.
일부 예에서, 메모리 디바이스(310)는 하나 이상의 메모리 어레이(365)를 포함할 수 있는 하나 이상의 메모리 다이(360)를 포함할 수 있다. 메모리 어레이(365)는 각각 하나 이상의 로직 상태 예를 들면, 고 상태 및 저 상태, 또는 다른 비이진 상태를 저장할 수 있는 메모리 셀을 포함할 수 있다. 일부 예에서, 고 상태는 본 명세서에서 "1"로서 언급될 수 있고 저 상태는 본 명세서에서 "0"으로서 언급될 수 있다. 메모리 어레이(365)의 메모리 셀의 각각은 물리적 주소를 가질 수 있다. 메모리 셀의 물리적 주소는 메모리 다이의 또는 메모리 셀이 위치될 수 있는 메모리 어레이(365) 내의 물리적 위치를 나타내거나 반영할 수 있거나, 그렇지 않으면 메모리 셀을 식별할 수 있다.
도 3의 시스템(300)은 인터페이스(395) 및 매핑 구성요소(390)와 결합될 수 있는 선택 구성요소(380)를 포함할 수 있다. 선택 구성요소(380)는 매핑 구성요소(390)에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택하도록 구성될 수 있다. 예를 들면, 선택 구성요소(380)는 논리 연산의 지원된 세트로부터 각각의 매핑 서브구성요소(390)에 대한 논리 연산을 선택하도록 구성될 수 있다. 일부 경우에, 선택 구성요소(380)는 서로 독립적으로 매핑 서브구성요소(390)의 일부 또는 전부에 대한 논리 연산을 선택할 수 있다. 매핑 함수(예컨대, 선택된 논리 연산의 컬렉션)는 데이터의 논리적 주소를 메모리 어레이(365) 내에 데이터를 저장하는 메모리 셀의 물리적 주소에 매핑할 수 있다. 일부 경우에, 단일 매핑 구성요소(390)는 다수의 메모리 다이(360) 또는 다수의 메모리 어레이(365)와 상호 작용할 수 있다(그에 하나 이상의 매핑 함수를 제공할 수 있다). 일부 경우에, 매핑 구성요소(390)는 단일 메모리 다이(360) 또는 메모리 어레이(365)에 특정될 수 있다(예컨대, 이에 포함되거나 그렇지 않으면 이와 결합됨). 도 3의 예에서, 매핑 구성요소(390)는 매핑 서브구성요소(390-a, 390-b 및 390-c)를 포함할 수 있고 매핑 구성요소(390)는 논리적 주소를 수신하도록 구성될 수 있는 인터페이스와 결합될 수 있다.
일부 경우에, 선택 구성요소(380)는 시간에 따라 매핑 구성요소(390)에 의해 구현된 매핑 함수를 변경할 수 있다. 예를 들면, 선택 구성요소(380)는 이벤트 트리거(예컨대, 부트 또는 재부트 이벤트, 호스트 디바이스로부터의 명령, 임계치에 도달하는 액세스 동작의 카운트, 행 해머 이벤트 또는 다른 악의적인 공격의 검출, 등)에 응답하여 스케줄(주기적 또는 비주기적)에 따라 매핑 구성요소(390)에 의해 구현된 매핑 함수를 변경할 수 있다. 일부 경우에, 선택 구성요소(380)는 메모리 디바이스(310)(예컨대, 난수 생성기)의 또 다른 양태로부터 또는 호스트 디바이스로부터 수신된 수(예컨대, 난수)와 같은 입력에 기초하여 매핑 함수를 선택할 수 있다.
일부 경우에, 선택 구성요소(380)는 메모리 디바이스(310) 또는 다른 개체의(예컨대, 메모리 다이(360) 또는 메모리 어레이(365)의) 고유 식별자에 기초하여 매핑 함수를 선택할 수 있다. 예를 들면, 선택 구성요소(380)는 모드 레지스터로부터 고유 식별자의 일부 또는 전부를 판독할 수 있다. 일부 경우에, 매핑 구성요소(390)에 의해 구현된 매핑 함수는 제조 동안, 트림 파라미터(trim parameters)를 설정함으로써, 또는 퓨즈로드 절차를 통해 고정(하드 와이어링)될 수 있고, 선택 구성요소(380)는 고정된 매핑 함수의 표시자를 저장하거나 판독하도록 구성되며 그에 따라 매핑 구성요소(390)를 구성할 수 있다.
도 4a 및 도 4b는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 각각 지원하는 시스템(400 및 450)의 예를 도시한다. 일부 예에서, 도 4a 및 도 4b는 상기 설명된 하나 이상의 구성요소를 포함할 수 있다. 예를 들면, 도 4a 및 도 4b는 도 3을 참조하여 설명한 바와 같이 매핑 구성요소 및 매핑 서브구성요소를 포함할 수 있다.
이전에 논의된 바와 같이, 매핑 함수는 선택 구성요소에 의해 선택될 수 있고 매핑 구성요소에 의해 구현될 수 있다. 선택된 매핑 함수는 대응하는 물리적 주소(대응하는 물리적 주소 비트)를 결정하기 위해 논리적 주소(논리적 주소 비트)의 각각의 비트에 대해 수행할 선택된 논리 연산 또는 함수의 세트를 포함할 수 있다. 지원되고 선택 가능한 논리 연산은 반전, 비반전(패스 스루), OR, XOR, XNOR, AND, NAND, 등을 포함할 수 있다. 매핑 함수는 논리적 주소 비트의 각각에 대한 논리 연산을 포함할 수 있다. 예를 들면, 3 비트 논리적 주소의 경우에, 매핑 함수는 비트 0과 비트 1이 둘 모두 반전되고, 비트 2가 반전되지 않도록 논리 연산의 세트를 포함할 수 있다. 이러한 일례에서, 논리적 주소가 110이면, 이 매핑 함수는 000의 물리적 주소를 제공할 수 있다. 일부 경우에, 하나 이상의 선택된 논리 연산은 다수의 논리적 주소 비트(예컨대, 2개의 논리적 주소 비트의 XOR), 또는 다수의 논리적 주소로부터의 비트(예컨대, 주소 스왑으로서 언급될 수 있는 데이터의 2개의 세트와 연관된 논리적 주소로부터의 하나 이상의 비트의 스왑)에 기초할 수 있다. 논리 연산은 논리적 주소 비트의 각각의 비트 또는 각각의 결정된 물리적 주소 비트에 대해 독립적으로 선택 가능할 수 있으며, 또한 메모리 다이로부터 메모리 다이로, 메모리 어레이로부터 메모리 어레이로, 등뿐만 아니라 본 명세서에서 설명된 바와 같이 시간에 따라 달라질 수 있다. 논리적 주소 및 물리적 주소가 각각 임의의 수의 비트, 및 잠재적으로 매우 많은 수의 비트를 포함할 수 있지만, 본 명세서에서의 그 예가 예시의 명확성을 위해 적은 수의 비트로 설명될 수 있음을 이해해야 한다.
도 4a에 도시된 바와 같이, 논리적 주소는 논리적 주소 비트를 포함할 수 있다. 하나의 경우에, 논리적 주소는 110과 같은 3개의 논리적 주소 비트를 포함할 수 있는데, 여기서 0 비트는 1이고, 1 비트는 1이며, 2 비트는 0이다. 논리적 주소 비트는 매핑 서브구성요소 0(415-a), 매핑 서브구성요소 1(415-b), 및 매핑 서브구성요소 2(415-c)를 포함할 수 있는 매핑 구성요소(405)로의 입력일 수 있다. 매핑 구성요소는 물리적 주소 비트 0, 물리적 주소 비트 1 및 물리적 주소 비트 2와 같은 3개의 물리적 주소 비트를 포함할 수 있는 물리적 주소를 출력할 수 있다.
도 4a에 도시된 바와 같이, 선택 라인(410)은 3개의 매핑 서브구성요소(415-a, 415-b, 415-c)의 각각에 의해 적용될 논리 함수를 선택하는 것을 포함할 수 있는 매핑 구성요소(405)를 위한 매핑 함수를 선택할 수 있다. 매핑 서브구성요소(415)에 대해 선택된 논리 연산에 기초하여, 매핑 구성요소(405)는 하나 이상의 논리적 주소 비트를 적절하게 매핑 서브구성요소로 라우팅할 수 있다. 예를 들면, 매핑 서브구성요소(415)에 대한 논리 연산이 반전 또는 비반전 연산이면, 매핑 구성요소(405)는 매핑 서브구성요소(415)에 하나의 논리적 주소 비트만 라우팅할 수 있지만, 매핑 서브구성요소(415)에 대한 논리 연산이 XOR, XNOR, 또는 다른 조합 논리 연산이면, 매핑 구성요소(405)는 2개 이상의 논리적 주소 비트를 매핑 서브구성요소(415)로 라우팅할 수 있다.
일부 예에서, 선택 라인은 예컨대, 선택 구성요소에 의해 수신된 수에 기초하거나 메모리 다이의 고유 식별자에 기초하여 매핑 함수를 선택할 수 있는 선택 구성요소와 결합될 수 있다. 예를 들면, 고유 식별자는 일련의 수를 가질 수 있고, 하나의 예에서 선택 구성요소는 메모리 다이 ID의 마지막 3개의 수를 사용할 수 있다. 예를 들면, 마지막 3개의 수가 홀수, 홀수, 짝수이면, 선택 라인은 제1 매핑 함수를 선택할 수 있지만, 메모리 다이의 마지막 3개의 수가 홀수, 짝수, 짝수이면, 선택 라인은 제2 매핑 함수를 선택할 수 있다.
도 4b의 예에서, 논리적 주소 비트는 매핑 구성요소(405)에 제공될 수 있다. 매핑 구성요소(405)는 물리적 주소 비트를 출력할 수 있다. 물리적 주소 비트는 메모리 셀의 물리적 주소(예컨대, 410-a, 410b, 410c 등 내지 410-N)를 지정할 수 있다. 도 4a과 관련하여 이전에 논의된 바와 같이, 물리적 주소 011 또는 3은 3개의 물리적 주소 비트를 가질 수 있으며, 0 비트는 1이고, 1 비트는 1이며 2 비트는 0이다. 도 4b에 도시된 바와 같이, 하나 이상의 스크래치 셀이 존재할 수 있으며, 여기서 스크래치 셀은 물리적 주소가 매핑 함수를 통해 주소지정 가능하지 않지만 웨어 레벨링 목적을 위해 데이터가 전송될 수 있는 메모리 셀을 언급할 수 있다. 따라서, 도 4에서 도시된 바와 같이, 물리적 주소 공간이 논리적 주소 공간보다 클 수 있는데, 이는 물리적 주소 공간이 논리적 주소 공간에 의해 포함된 가능한 논리적 주소의 수보다 적어도 하나 더 많은 가능한 물리적 주소(따라서, 적어도 일부 경우에 적어도 하나의 부가적인 더 많은 중요한 비트)를 포함할 수 있기 때문이다.
도 5는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 메모리 어레이(500)의 일례를 도시한다. 일부 예에서, 도 5의 논의는 상기 설명된 하나 이상의 구성요소의 논의를 포함할 수 있다. 예를 들면, 도 5의 논의는 상기 언급된 바와 같이 메모리 어레이의 물리적 주소, 논리적 주소, 및 메모리 셀의 논의를 포함할 수 있다.
도 5의 예에서, 메모리 어레이(500)는 메모리 셀의 어레이이다. 개별적인 메모리 셀(510-a, 510-b, 510-c...510-N)은 각각 저장된 데이터를 포함할 수 있다. 도 5는 매핑 함수가 모든 비반전 또는 패스 스루 논리 연산을 포함하고, 따라서 각각의 물리적 주소 비트가 대응하는(동일한 의미의) 논리적 주소 비트와 같은 일례를 도시한다. 스크래치 셀이 이진수로 1000으로서 표현될 수 있는 여덟 번째 메모리 셀이므로 물리적 주소는 4개의 물리적 주소 비트로 표현될 수 있다.
예를 들면, 메모리 셀(510-a)은 물리적 주소 0000을 갖고 논리적 주소가 000인 데이터를 저장할 수 있고, 메모리 셀(510-b)은 물리적 주소 0001을 갖고 논리적 주소가 001인 데이터를 저장할 수 있으며, 메모리 셀(510-c)은 물리적 주소 0010을 갖고 논리적 주소가 010인 데이터를 저장할 수 있고, 등이다. 즉, 데이터는 3개의 최하위 비트가 데이터의 논리적 주소와 같은 물리적 주소를 갖는 메모리 셀에 저장될 수 있다.
일부 경우에, 각각의 논리적 주소 비트에 대해 비반전 또는 패스 스루 논리 연산을 포함하는, 도 5에 도시된 것과 같은 매핑 함수는 메모리 디바이스의 테스팅 또는 디버깅을 지원할 수 있다. 일부 경우에, 보안 키 - 예컨대, 명령 시퀀스 또는 메모리 디바이스에 대한 다른 특수화된 입력 - 는 선택 구성요소로 하여금 도 5에 도시된 매핑 함수를 선택하게 할 수 있다(예컨대, 비반전 또는 패스 스루 논리 연산을 구현하도록 모든 동작 매핑 서브구성요소를 구성한다).
도 6은 본 발명의 양태에 따른 메모리를 위한 주소 난독화 및 웨어 레벨링을 도시하는 테이블(600)의 일례를 도시한다. 일부 예에서, 도 6의 논의는 상기 설명된 하나 이상의 구성요소의 논의를 포함할 수 있다. 예를 들면, 도 6의 논의는 상기 언급된 바와 같이 메모리 어레이의 물리적 주소, 논리적 주소, 및 메모리 셀의 논의를 포함할 수 있다.
일부 예에서, 메모리 셀에 대한 반복된 액세스가 그 특정한 메모리 셀에서 장애를 조기에 야기할 수 있기 때문에, 데이터는 메모리 셀에 대한 웨어 레벨링을 제공하기 위해 상이한 물리적 위치(상이한 물리적 주소를 갖는 상이한 메모리 셀)로 주기적으로 이동될 수 있다. 웨어 레벨링은 메모리 어레이의 메모리 셀 사이에 스트레스(stress)를 분산시킬 수 있다. 시간에 따라 데이터를 상이한 메모리 셀로 이동함으로써, 메모리 셀의 수명 및 데이터를 저장하는 메모리 셀의 능력이 증가될 수 있다.
도 6에 도시된 테이블(600)은 도 5에 도시된 바와 같이 매핑 함수의 사용에 후속하는 일 예시적인 웨어 레벨링 기능의 동작을 도시한다. 따라서, "초기 매핑" 열은 도 5에서 매핑된 바와 같은 데이터를 보여주고, 메모리 셀(0) 내지 메모리 셀(7)의 각각은 메모리 셀의 물리적 주소의 3개의 최하위 비트와 같은 논리적 주소를 갖는 데이터를 저장한다. 메모리 셀(8)은 스크래치 메모리 셀로서 기능할 수 있고 그것의 물리적 주소가 논리적 주소 도메인을 넘어설 수 있기 때문에 초기에 비어 있을 수 있다.
예시적인 웨어 레벨링 알고리즘에 따라 시간에 따라 메모리 셀로부터 메모리 셀로의 데이터 이동은 도 6의 테이블(600)에 "1회 이동 후", "2회 이동 후", "3회 이동 후", 등으로서 표시된다. 이것은 데이터가 각각 제1회 이동되고, 제2회 이동되며, 제3회 이동되는 중임을 나타낸다. 따라서, 데이터는 그것이 상이한 메모리 셀로 이동되었거나 전송되었기 때문에 각각의 이동 후에 상이한 물리적 주소를 가질 수 있다.
웨어 레벨링 기능의 일부로서 그리고 "1회 이동 후" 열에 표시된 바와 같이 1회 이동 후에, 논리적 주소 111(7)을 가진 데이터는 이제 물리적 주소 1000(8)을 갖는 스크래치 메모리 셀에 저장되고, 물리적 주소 0111(7)을 갖는 메모리 셀은 비어 있다. 따라서, 논리적 주소 111(7)을 갖는 데이터의 물리적 주소는 제1 이동 동안 1씩 증분되었고, 1회 이동 후에 비어 있는 메모리 셀(메모리 셀(7))의 물리적 주소는 처음에 비어 있던 메모리 셀(메모리 셀(8))의 물리적 주소보다 하나 낮다.
웨어 레벨링 기능의 일부로서 그리고 "2회 이동 후" 열에 표시된 바와 같이 2회 이동 후에, 논리적 주소 110(6)을 가진 데이터는 이제 물리적 주소 0111(7)을 갖는 메모리 셀에 저장되고, 물리적 주소 0110(6)을 갖는 메모리 셀은 비어 있다. 따라서, 논리적 주소 110(6)을 갖는 데이터의 물리적 주소는 제2 이동 동안 1씩 증분되었고, 2회 이동 후에 비어 있는 메모리 셀(메모리 셀(6))의 물리적 주소는 1회 이동 후에 비어 있던 메모리 셀(메모리 셀(7))의 물리적 주소보다 하나 낮다.
테이블(600)에 도시된 바와 같이, 이 웨어 레벨링 이동 패턴은 임의의 시간 지속기간 및 임의의 수의 이동 동안 계속될 수 있다. 이동할 때마다 (i) 빈 메모리 셀의 물리적 주소보다 하나 낮은 물리적 주소에 저장된 데이터는 빈 메모리 셀로 이동되고 (ii) 이전에 이동된 데이터를 저장한 메모리 셀은 비게 된다. 메모리 셀 중 하나에 결함이 있게 되는 경우에(결함이 있음) - 예컨대, 행 해머 공격 또는 다른 이유로 인해 - 웨어 레벨링 패턴이 역엔지니어링될 수 있다. 예를 들면, 결함이 있는 메모리 셀에 저장된 데이터에 대한 액세스 동작(예컨대, 판독 또는 기록)에 결함이 있을 것이고, 결함 있는 데이터의 논리적 주소는 웨어 레벨링 이동에 기초하여 시간에 따라 변경될 것이다.
테이블(600)의 예에서, 메모리 셀(3)(물리적 주소 011)이 결함이 있게 되는 것으로 가정된다. 초기 기간 동안(5번째 이동이 발생하기 전에), 논리적 주소가 011(3)인 데이터에 대한 액세스 시도가 실패할 것이다. 후속적으로 (6번째 이동이 발생한 후에), 논리적 주소가 010(2)인 데이터에 대한 액세스 시도가 실패할 것이다. 결국 (일부 횟수의 부가적인 이동 후에), 논리적 주소가 001(1)인 데이터에 대한 액세스 시도가 실패할 것이다. 따라서, 데이터의 논리적 주소에 의해 식별된 바와 같이, 결함 있는 데이터의 패턴은 시간에 따라 분명해질 수 있다. 테이블(600)의 예에서, 데이터의 논리적 주소에 의해 식별된 바와 같이, 결함 있는 데이터의 패턴은 십진수로 3, 2, 1, 0, 7, 6, 5, 4, 등일 것이다. 메모리 셀 사이에서 그 데이터의 물리적 이동 패턴 - 즉 데이터가 저장되는 물리적 주소의 변경의 패턴 - 은 데이터의 논리적 주소에 의해 식별된 바와 같이, 결함 있는 데이터의 이러한 패턴으로부터 추론될 수 있다.
게다가, 동일한 웨어 레벨링 매핑 함수가 주어진 제조사 또는 모델의 모든 메모리 디바이스 내의 모든 메모리 어레이에 항상 적용되는 경우(예컨대, 하드와 이어링되거나 그렇지 않으면 정적으로 구성됨), 불량 행위자는 다른 메모리 디바이스 또는 메모리 어레이를 공격하기 위해(예컨대, 이러한 다른 메모리 디바이스 또는 메모리 어레이에 대한 행 해머 공격을 실행하기 위해) 하나의 메모리 디바이스 또는 메모리 어레이로부터 추론된 바와 같이 웨어 레벨링 패턴의 지식을 사용할 수 있다.
도 7a 및 도 7b는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 장치 및 본 발명의 양태에 따라 구현된 바와 같이 매핑 함수를 보여주는 테이블의 예를 도시한다. 일부 예에서, 도 7a 및 도 7b의 논의는 상기 설명된 하나 이상의 구성요소의 논의를 포함할 수 있다. 예를 들면, 도 7a 및 도 7b의 논의는 상기 언급된 바와 같이 메모리 어레이의 물리적 주소, 논리적 주소, 및 메모리 셀의 논의를 포함할 수 있다.
일부 예에서 및 도 7a에 도시된 바와 같이, 매핑 서브구성요소(700)는 논리적 주소의 비트에 기초하여 물리적 주소의 비트를 결정하도록 구성될 수 있다. 도 4a에서 논의된 바와 같이, 매핑 구성요소는 논리적 주소의 또는 더 많은 비트(또는 다수의 논리적 주소의 하나 이상의 비트)에 기초하여 물리적 주소의 대응하는 비트를 결정하도록 각각 구성될 수 있는(예컨대, 독립적으로) 매핑 서브구성요소를 포함할 수 있다.
매핑 서브구성요소(700)는 논리적 주소 비트를 입력으로서 수신하고 물리적 주소 비트를 출력으로서 제공하도록 구성될 수 있으며, 반전 논리 연산 또는 비반전(패스 스루) 논리 함수를 선택적으로 구현하도록 구성될 수 있다. 매핑 서브구성요소(700)의 상부 경로에 있는 3개의 인버터 로직 디바이스는 매핑 서브구성요소의 하부 경로에 있는 2개의 인버터 로직 디바이스와 지연 매칭될 수 있다. 상부 경로의 출력 및 하부 경로의 출력은 멀티플렉서 또는 다른 적합한 선택 회로의 각각의 입력부와 결합될 수 있고, 매핑 서브구성요소(700)의 선택 라인은 출력부로 라우팅할 2개의 경로 중 하나를 선택할 수 있으며, 이는 매핑 서브구성요소(700)에 대응하는 결정된 물리적 비트를 산출하기 위해 반전될 수 있다. 따라서, 상부 경로 또는 하부 경로를 선택함으로써, 선택 라인은 물리적 주소 비트가 반전되거나(예컨대, 논리적 주소 비트 입력의 반대 값) 반전되지 않을 수 있는지의(예컨대, 논리적 주소 비트 입력의 동일한 값) 여부를 제어할 수 있다. 이 예에서, 선택 라인이 상부 경로를 선택하면, 출력된 물리적 주소 비트는 논리적 주소 비트로부터 물리적 주소 비트로의 신호 경로의 결과적인 4개의 인버터로 인해 입력된 논리적 주소 비트와 동일한 값이 될 수 있다. 선택 라인이 하부 경로를 선택하면, 논리적 주소 비트로부터 물리적 주소 비트로의 신호 경로의 결과적인 3개의 인버터로 인해, 출력된 물리적 주소 비트가 반전되고 따라서, 입력된 논리적 주소 비트와 반대 값이 될 수 있다.
일부 예에서, 매핑 함수의 논리 연산은 일반적으로, 매핑 서브구성요소(700)에 의해 구현될 수 있다. 논리 연산은 물리적 주소 비트를 산출하기 위해 단일 논리적 주소 비트에 대한 함수를 수행하는 논리 요소일 수 있다. 예를 들면, 논리 연산은 반전 연산자일 수 있다. 반전 논리 연산을 사용함으로써, 매핑 서브구성요소가 관련 비트를 반대 값으로 변경할 수 있다. 예를 들면, 반전 논리 연산은 1 비트를 반전시킬 수 있고, 따라서 110이 100이 될 수 있거나, 반전 논리 연산이 0 비트를 반전시킬 수 있고, 따라서 110이 010이 될 수 있고, 등이다. 당업자는 임의의 수의 논리 연산 - 예컨대, XOR, XNOR, OR, NOR, AND, NAND, 등 - 이 적합한 논리 게이트 및 라우팅(스위칭) 회로의 조합을 통해 매핑 서브구성요소(700)에 의해 지원될 수 있고, 매핑 서브구성요소(700)가 하나 이상의 논리 연산의 임의의 조합을 사용하여 임의의 수의 논리적 주소 비트에 기초하여 물리적 주소 비트를 결정하기 위해 선택 가능한 방식으로 다수의 이러한 논리 연산을 지원하도록 구성될 수 있음을 인식할 것이다.
예를 들면, 일부 경우에, 매핑 서브구성요소에 의해 구현될 수 있는 논리 연산은 단일 물리적 주소 비트를 산출하기 위해 2개 이상의 논리적 주소 비트에 대해 동작할 수 있다. 예를 들면, 논리 연산은 OR 연산자일 수 있다. OR 논리 연산을 사용함으로써, 논리 연산을 수행하도록 논리적 주소 비트 중 2개가 지정될 수 있다. 하나의 경우에 OR 논리 연산은 논리적 주소 비트 1 비트 및 0 비트에 대해 수행되어 물리적 주소 비트의 0 비트를 산출할 수 있고, 여기서 물리적 주소 비트의 1 비트 및 2 비트는 동일하게 유지된다(예컨대, 1 비트 및 2 비트는 반전되지 않는다). 논리적 주소 011이 주어지고, OR 논리 연산을 사용하면, 0 및 1의 OR 함수가 1이므로, 물리적 주소 비트의 0 비트는 1이 될 수 있고, 따라서 물리적 주소 비트의 0 비트는 1이 되고 물리적 주소는 111이 된다.
또 다른 예로서, 매핑 서브구성요소에 의해 구현될 수 있는 논리 연산은 단일 물리적 주소 비트를 산출하기 위해 3개의 논리적 주소 비트에 대해 동작할 수 있다. 예를 들면, 논리 요소는 단일 물리적 주소 비트를 산출하기 위해 3개의 논리적 주소 비트에 대해 함수를 수행할 수 있다. 예를 들면, 물리적 주소의 1 비트는 다음의 함수일 수 있다: 논리적 주소 010에 대한 논리적 주소 비트의 1 비트 XOR 0 비트 xNOR 2 비트. 논리적 주소 1 비트가 1이므로 물리적 주소는 000이 될 수 있고, 이는 0이고 1을 산출하는 논리적 주소 0 비트로 XOR되고, 0이고 0을 산출하는 논리적 주소 2 비트와 XNORed된다. 그에 따라, 논리적 주소(010)를 사용하면, 1인 1 비트가 0이 되어, 물리적 주소 000이 된다.
일부 예에서 및 도 7b에 도시된 바와 같이, 테이블(750)은 논리적 주소의 3개의 이진 비트를 메모리 셀의 대응하는 물리적 주소에 매핑하는 것을 도시한다. 예를 들면, 값 0은 3개의 이진 비트 000으로 표현될 수 있다. 게다가, 개별적인 비트는 0 비트, 1 비트, 및 2 비트로서 언급될 수 있다. 예를 들면, 이진 값 110(6)을 사용하면, 2 비트는 1이고, 1 비트는 1이며, 0 비트는 0이다. 또 다른 예에서, 011 또는 이진 값 3, 2 비트는 0이고, 1 비트는 1이며 0 비트는 1이다.
도 7b에서, 값 1은 3개의 이진 비트 001로 표현될 수 있고, 값 2는 3개의 이진 비트 010으로 표현될 수 있고, 등이다. 도 7b에 도시된 바와 같이, 0 비트는 항상 반전되지 않을 수 있고, 논리적 주소의 각각의 1 비트는 항상 반전될 수 있으며, 2 비트는 항상 반전되지 않을 수 있다. 예를 들면, 값 0 또는 3개의 이진 비트 000은 1 비트가 반전된 후에 010 또는 값 2이 된다. 값 1 또는 3개의 이진 비트 001은 1 비트가 반전된 후에 011 또는 값 3이 된다. 값 2 또는 3개의 이진 비트 010은 1 비트가 반전된 후에 000 또는 값 0이 된다. 부가적으로, 도 7b의 테이블의 값은 도 7a에 도시된 바와 같이 3개의 매핑 서브구성요소를 사용하여 생성될 수 있으며, 여기서 물리적 주소 비트의 비트 0에 대한 매핑 서브구성요소는 논리적 주소의 비트 0을 거치도록 구성될 수 있고, 물리적 주소 비트의 비트 1에 대한 매핑 서브구성요소는 논리적 주소의 비트 1을 반전시키도록 구성될 수 있으며, 물리적 주소 비트의 비트 2에 대한 매핑 서브구성요소는 논리적 주소의 비트 2를 거치도록 구성될 수 있다.
도 8a 및 도 8b는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 메모리 어레이와 관련된 테이블(850) 및 매핑 구성요소(800)의 일례를 도시한다. 일부 예에서, 매핑 구성요소(800) 및 테이블(850)의 논의는 상기 설명된 하나 이상의 구성요소의 논의를 포함할 수 있다. 예를 들면, 도 8의 논의는 상기 설명된 바와 같이 메모리 어레이의 물리적 주소, 논리적 주소, 및 메모리 셀의 논의를 포함할 수 있다.
도 8a의 예에서, 매핑 구성요소(800)는 3개의 매핑 서브구성요소, 매핑 서브구성요소 0(800-a), 매핑 서브구성요소 1(800-b), 및 매핑 서브구성요소 2(800-c)를 포함한다. 도 4a와 유사하게, 선택 라인(810)은 3개의 매핑 서브구성요소의 각각에 의해 구현된 논리 연산을 선택할 수 있다. 하나의 예에서, 선택 라인(810)은 논리적 주소 비트 0을 거침으로써 물리적 주소 비트 0을 결정하도록 매핑 서브구성요소 0(800-a), 논리적 주소 비트 1을 반전시킴으로써 물리적 주소 비트 1을 결정하도록 매핑 서브구성요소 1(800-b), 및 논리적 주소 비트 2를 거침으로써 물리적 주소 비트 2를 결정하기 위해 매핑 서브구성요소 2(800-c)를 구성할 수 있다.
도 8b의 테이블(850)은 메모리 셀에 대한 데이터의 결과적인 매핑을 도시한다. 예를 들면, 논리적 주소가 010인 데이터는 물리적 주소가 000인 메모리 셀에 매핑될 수 있고, 논리적 주소가 010인 데이터는 물리적 주소가 000인 메모리 셀에 매핑될 수 있다. 매핑 구성요소(800)와 관련하여 논의된 바와 같이, 물리적 주소의 1 비트가 반전되었다. 논리적 주소는 010이고, 따라서 0 비트는 0이고, 1 비트는 1이며, 2 비트는 0였다. 매핑 구성요소(800)는 1 비트를 반전시켰고, 따라서 물리적 주소 000을 출력한다. 또 다른 예에서, 논리적 주소 110을 갖는 데이터는 물리적 주소의 1 비트가 반전되었기 때문에, 물리적 주소 100을 갖는 메모리 셀에 매핑될 수 있는 등이다.
도 9는 본 발명의 양태에 따른 메모리를 위한 주소 난독화 및 웨어 레벨링을 도시하는 테이블(900)의 일례를 도시한다. 일부 예에서, 도 9의 논의는 상기 설명된 하나 이상의 구성요소의 논의를 포함할 수 있다. 예를 들면, 도 9의 논의는 상기 언급된 바와 같이 메모리 어레이의 물리적 주소, 논리적 주소, 및 메모리 셀의 논의를 포함할 수 있다.
도 9에 도시된 테이블(900)은 이전에 도 6의 테이블(600)에 도시된 바와 같지만, 상이한 매핑 알고리즘에 따라 초기 주소 난독화를 따르는 일 예시적인 웨어 레벨링 기능의 동작을 도시한다. 테이블(900)에 도시된 바와 같이, 초기 매핑은 초기 물리적 주소의 비트 0 및 비트 2가 논리적 주소의 비트 0 및 비트 2의 비반전(패스 스루)에 각각 기초하여 결정되는 매핑 함수에 따라 수행될 수 있고, 초기 물리적 주소의 비트 1은 논리적 주소의 비트 1과 XOR되고 논리적 주소의 비트 2와 XNOR된 논리적 주소의 비트 0에 기초하여 결정된다.
따라서, 테이블(900)의 "초기 매핑" 열은 논리적 주소가 010(2)인 데이터가 물리적 주소가 000(0)인 메모리 셀에 매핑된다는 점에서 테이블(600)의 "초기 매핑" 열과 상이하다. 논리적 주소가 000(0)인 데이터는 물리적 주소가 010(2)인 메모리 셀에 매핑되고, 논리적 주소가 111(7)인 데이터는 물리적 주소가 101(5)인 메모리 셀에 매핑되며, 논리적 주소가 101(5)인 데이터는 물리적 주소가 111(7)인 메모리 셀에 매핑된다. 메모리 셀(8)은 다시 스크래치 메모리 셀로서 기능하고 그것의 물리적 주소 1000이 논리적 주소 도메인을 넘어설 수 있기 때문에 초기에 비어 있을 수 있다.
시간에 따른 메모리 셀로부터 메모리 셀로의 데이터 이동은 도 6의 테이블(600)을 참조하여 이전에 설명된 동일한 예시적인 웨어 레벨링 알고리즘에 따른다. 또한, 테이블(600)의 예에서와 같이, 테이블(900)의 예에서 메모리 셀(3)(물리적 주소 011)에 결함이 있는 것으로 가정된다.
그러나, 테이블(600)의 예와 달리, 데이터의 논리적 주소에 의해 식별된 바와 같이, 결함 있는 데이터의 패턴은 십진수로 3, 0, 1, 2, 5, 6, 7, 4...가 될 것이다(표(600)의 3, 2, 1, 0, 7, 6, 5, 4...와 반대이다). 따라서, 테이블(900)의 초기 매핑을 위해 선택된 상이한 매핑 알고리즘으로 인해, "결함 패턴"이 테이블(600)에서와 상이할 것이다. 테이블(600)에서 활용된 매핑 함수에 기초하여 웨어 레벨링 이동 패턴을 역엔지니어링하는 것으로부터 학습된 정보는 테이블(900)에서 활용된 매핑 함수가 메모리 디바이스에서 대신에 구현될 때 (예컨대, 행 해머 공격에 대해) 유용하지 않을 것이고, 이는 심지어 이동 패턴이 동일하더라도, 데이터의 논리적 주소와 그 데이터를 저장하는 메모리 셀의 물리적 주소 사이의 궁극적인 관계가 상이한 매핑 함수 따라서, 상이한 초기 매핑으로 인해 상이하기 때문이다.
본 명세서에서 설명된 바와 같이, 메모리 디바이스에 대해 구현된 매핑 함수는 매우 많은 수의 가능한 매핑 함수가 지원될 수 있도록 비트 당 논리 연산의 선택 가능한 세트에 기초하여 논리적 주소 비트 당 단위로 구성 가능하고 가변적일 수 있다(예컨대, M개의 논리 연산 중 임의의 하나가 각각의 비트에 대해 선택될 수 있는 N개의 비트를 갖는 논리적 주소에 대해, MN개의 가능한 매핑 함수가 지원될 수 있다). 예를 들면, 각각의 물리적 주소 비트를 결정하기 위해 활용될 수 있는 논리적 연산에 대해 4가지 선택 사항을 갖는 20 비트 논리적 주소를 가정하면, 이것은 1조개 이상의 가능한 구성을 산출할 수 있다. 게다가, 매핑 함수가 디바이스, 다이, 어레이, 뱅크, 타일, 또는 다른 메모리 개체에 걸쳐 동적으로 구성 가능(선택 가능, 가변적)하고/하거나 가변적이므로, 매핑 함수의 패턴은 메모리 개체에 걸쳐 또는 시간에 따라 달라질 수 있고, 하나의 메모리 개체에 기초하여 학습된 정보(예컨대, 불량 행위자에 의해)는 나중에 또는 또 다른 메모리 개체를 위해 유용하지 않을 수 있다. 게다가, 매핑 함수의 가변적 본질은 애초에 불량 행위자가 웨어 레벨링 이동 패턴을 학습하기 위한 어려움을 증가시키거나, 인센티브를 감소시킬 수 있다.
본 명세서에서 설명된 바와 같이, 메모리 셀의 물리적 주소 비트는 각각의 비트에 고유한 매핑 함수에 따라 결정될 수 있으며 매핑 함수는 임의의 수의 함수 또는 알고리즘으로부터, 및 임의의 수 또는 다양한 논리 연산을 포함하는 것으로서 선택될 수 있으며, 따라서 많은 수의 상이한 구성을 야기한다.
일부 경우에, 이 매핑 함수의 선택은 퓨즈 또는 안티 퓨즈를 사용함으로써 제조 레벨에서 이루어질 수 있다.
일부 경우에, 매핑 함수 선택은 메모리 디바이스의 회로를 랜덤화함으로써 랜덤하게 선발될 수 있다. 예를 들면, 선택 구성요소는 수 생성기 또는 난수 생성기 또는 랜덤화 회로에 의해 선발되거나 생성된 수에 기초하여 매핑 함수를 선택할 수 있다. 예를 들면, 수 생성기는 홀수인 수를 선택할 수 있고, 따라서 매핑 함수는 물리적 주소의 0 비트를 생성하기 위해 1 비트만 반전시킬 수 있으며 1 비트 및 2 비트는 반전되지 않고 물리적 주소의 1 비트 및 2 비트로 거쳐진다. 또 다른 예에서, 수 생성기는 홀수, 홀수, 짝수로 끝나는 수를 선택할 수 있으며, 따라서 매핑 함수는 0 비트 및 1 비트를 XOR하고 2 비트를 반전시키지 않을 수 있고, 등이다.
일부 예에서, 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택하는 것은 스케줄 또는 트리거 이벤트에 적어도 부분적으로 기초할 수 있다. 트리거 이벤트는 부트, 재부트, 미리 결정된 수의 액세스 초과, 행 해머 이벤트 검출, 등과 같은 이벤트일 수 있다.
일부 예에서, 선택 구성요소는 고유한 메모리 다이 식별자에 기초하여 매핑 함수를 선택할 수 있다. 예를 들면, 메모리 다이 식별자는 다수의 숫자를 가질 수 있으며 마지막 3개의 숫자가 짝수, 짝수, 짝수이면, 선택된 매핑 함수는 1 비트 및 2 비트를 XNOR하여 물리적 주소의 0 비트를 생성할 수 있고 0 비트 및 1 비트는 물리적 주소의 0 비트 및 1 비트에 대한 통과 지점일 수 있다.
매핑 함수의 선택이 기초할 수 있는 임의의 수의 요소가 존재할 수 있다. 여전히 또 다른 예에서, 랜덤화는 선형 피드백 시프트 레지스터 회로를 사용하여 수행될 수 있다. 여전히 또 다른 예에서, 상태가 동기 신호에 의해 트랩(trap)될 수 있도록, 카운터를 구동하는 비동기 발진기와 같은 다수의 신호의 변화 교차를 사용하여 랜덤화가 성취될 수 있다. 여전히 또 다른 예에서 그리고 휘발성 메모리의 경우에, 선택은 디바이스의 전원이 켜질 때마다 변경될 수 있다.
일부 예에서, 제조업체는 메모리 디바이스를 테스트하고 디버깅할 수 있으며, 일부 경우에, 제조업체는 직접 메모리 주소지정을 이용할 수 있다. 일부 예에서, 제조업자는 보안 키를 가질 수 있고 보안 키를 수신한 것에 적어도 부분적으로 기초하여 제2 매핑 함수를 선택할 수 있는 능력을 가질 수 있다. 보안 키는 제조업체가 직접 메모리 주소지정(예컨대, 제2 매핑 함수)을 가능하게 하는 것을 허용할 수 있다. 직접 메모리 주소지정을 사용할 때, 제조업체는 선택된 매핑 함수를 우선할 수 있어서 모든 메모리 셀이 반전되지 않게 하고, 따라서 제조업체가 관련 테스팅을 수행하는 것을 허용한다. 이 모드는 그것을 불량 행위자가 액세스 가능하지 않게 하도록 메모리 디바이스를 고객에게 배송하기 전에 가능하게 되지 않을 수 있다.
일부 예에서, 매핑 구성요소 또는 매핑 서브구성요소에 의해 지원된 논리 연산의 세트는 반전 연산, 비반전 연산, XOR 연산, XNOR 연산, 패스 스루 연산 또는 주소 스왑 함수를 포함할 수 있고, 이의 각각은 별개로 선택 가능할 수 있다. 주소 스왑 함수는 주소 중요성의 순서가 다이마다 고유하게 독립적이 되는 것을 허용할 수 있다. 도 9의 테이블(950)의 값은 도 3 내지 도 8과 관련하여 논의된 바와 같이 매핑 함수에 따라 매핑 서브구성요소를 사용하여 생성되고, 적절한 논리 연산을 성취하도록 구성될 수 있다.
도 10은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 메모리 디바이스(1005)의 블록도를 도시한다. 일부 예에서, 메모리 디바이스(1005)는 본 명세서에 개시된 바와 같이 메모리 시스템의 양태를 구현할 수 있다. 메모리 디바이스(1005)는 상기 설명된 바와 같은 메모리 디바이스와 유사할 수 있다. 메모리 디바이스(1005)는 선택 구성요소(1010), 수신 구성요소(1015), 결정 구성요소(1020), 액세스 구성요소(1025) 및 라우팅 구성요소(1030)를 포함할 수 있다. 이 구성요소의 각각은 서로 직접적으로 또는 (예컨대, 하나 이상의 버스를 통해) 간접적으로 통신할 수 있다.
선택 구성요소(1010)는 메모리 디바이스로 하여금 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택하게 할 수 있다. 각각의 매핑 함수는 메모리 디바이스에서 수신된 논리적 주소를 메모리 디바이스의 메모리 어레이 내의 물리적 주소에 매핑할 수 있다.
수신 구성요소(1015)는 메모리 디바이스로 하여금 메모리 어레이에 저장된 데이터의 논리적 주소를 포함하는 액세스 명령을 수신하게 할 수 있다.
결정 구성요소(1020)는 메모리 디바이스로 하여금 논리적 주소 및 선택된 매핑 함수에 기초하여 메모리 어레이 내의 물리적 주소를 결정하게 할 수 있다.
액세스 구성요소(1025)는 메모리 디바이스로 하여금 물리적 주소에 기초하여 메모리 어레이에 저장된 데이터에 액세스하게 할 수 있다.
도 11은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 흐름도를 도시한다. 방법(1100)의 동작은 본 명세서에서 설명된 바와 같이 제어기 또는 그것의 구성요소에 의해 구현될 수 있다. 예를 들면, 방법(1100)의 동작은 상기 설명된 바와 같이 제어기 및 메모리 디바이스에 의해 수행될 수 있다. 일부 예에서, 제어기는 하기에 설명된 기능을 수행하도록 메모리 디바이스의 기능적 요소를 제어하기 위해 명령어의 세트를 실행할 수 있다. 부가적으로 또는 대안적으로, 제어기는 특수 목적 하드웨어를 사용하여 하기에 설명된 기능의 양태를 수행할 수 있다.
(1105)에서, 제어기는 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택할 수 있으며, 세트 내 각각의 매핑 함수는 메모리 디바이스에서 수신된 논리적 주소를 메모리 디바이스의 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것이다. (1105)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1105)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 선택 구성요소에 의해 수행될 수 있다.
(1110)에서, 제어기는 메모리 어레이에 저장된 데이터의 논리적 주소를 포함하는 액세스 명령을 수신할 수 있다. (110)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1110)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 수신 구성요소에 의해 수행될 수 있다.
(1115)에서, 제어기는 논리적 주소 및 선택된 매핑 함수에 기초하여 메모리 어레이 내의 물리적 주소를 결정할 수 있다. (1115)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1115)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 결정 구성요소에 의해 수행될 수 있다.
(1120)에서, 제어기는 물리적 주소에 기초하여 메모리 어레이에 저장된 데이터에 액세스할 수 있다. (1120)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1120)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 액세스 구성요소에 의해 수행될 수 있다.
일부 예에서, 본 명세서에서 설명된 바와 같은 장치는 방법(1100)과 같은 방법 또는 방법들을 수행할 수 있다. 장치는 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택하는 것으로서, 세트 내 각각의 매핑 함수는 메모리 디바이스에서 수신된 논리적 주소를 메모리 디바이스의 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것인, 상기 매핑 함수를 선택하고, 메모리 어레이에 저장된 데이터의 논리적 주소를 포함하는 액세스 명령을 수신하고, 논리적 주소 및 선택된 매핑 함수에 기초하여 메모리 어레이 내의 물리적 주소를 결정하며, 물리적 주소에 기초하여 메모리 어레이에 저장된 데이터에 액세스하기 위한 특징, 수단, 또는 명령어(예컨대, 프로세서에 의해 실행 가능한 명령어를 저장하는 비일시적 컴퓨터 판독 가능한 매체)를 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예에서, 매핑 함수를 선택하는 것은 논리적 주소의 각각의 비트에 대해, 메모리 디바이스에 의해 지원된 논리 연산의 세트로부터 대응하는 논리 연산을 선택하는 것을 포함할 수 있고, 각각의 논리 연산은 논리적 주소의 비트에 적어도 부분적으로 기초하여 물리적 주소의 비트를 결정하기 위한 것이다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예에서, 물리적 주소를 결정하는 것은 세트로부터의 제1 논리 연산에 적어도 부분적으로 기초하여 물리적 주소의 제1 비트를 결정하는 것, 세트로부터의 제2 논리 연산에 적어도 부분적으로 기초하여 물리적 주소의 제2 비트를 결정하는 것을 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예에서, 물리적 주소를 결정하는 것은 대응하는 논리 연산을 구현하도록 구성된 매핑 서브구성요소를 통해 논리적 주소의 각각의 비트를 라우팅하는 것을 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예에서, 메모리 디바이스에 의해 지원된 논리 연산의 세트는 반전 연산, 논리적 주소의 제2 비트에 적어도 부분적으로 기초한 배타적 또는 (XOR) 연산, 또는 논리적 주소의 제2 비트에 적어도 부분적으로 기초한 배타적 NOR(XNOR) 연산, 패스 스루 연산, 주소 스왑 함수, 또는 이들의 임의의 조합을 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예는 난수를 생성하기 위한 동작, 특징, 수단, 또는 명령어를 더 포함할 수 있으며, 매핑 함수를 선택하는 것은 적어도 부분적으로 난수에 기초한다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예는 메모리 디바이스, 메모리 어레이, 또는 메모리 어레이를 포함하는 다이와 연관된 고유 식별자를 식별하기 위한 동작, 특징, 수단, 또는 명령어를 더 포함할 수 있고, 매핑 함수를 선택하는 것은 적어도 부분적으로 고유 식별자에 기초한다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예에서, 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택하는 것은 스케줄 또는 트리거 이벤트에 적어도 부분적으로 기초할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예는 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 제2 매핑 함수를 선택하고, 메모리 어레이에 저장된 다른 데이터에 대한 제2 논리적 주소를 포함하는 제2 액세스 명령을 수신하고, 제2 논리적 주소 및 제2 매핑 함수에 적어도 부분적으로 기초하여 메모리 어레이 내의 제2 물리적 주소를 결정하며, 제2 물리적 주소에 적어도 부분적으로 기초하여 메모리 어레이에 저장된 다른 데이터에 액세스하기 위한 동작, 특징, 수단, 또는 명령어를 더 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예는 보안 키를 수신하고 보안 키를 수신한 것 적어도 부분적으로 기초하여 제2 매핑 함수를 선택하기 위한 동작, 특징, 수단, 또는 명령어를 더 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예는 웨어 레벨링 절차에 따라 메모리 디바이스의 메모리 어레이 내의 물리적 주소 사이에 데이터를 전송하기 위한 동작, 특징, 수단, 또는 명령어를 더 포함할 수 있다.
본 명세서에서 설명된 방법, 장치, 및 비일시적 컴퓨터 판독 가능한 매체의 일부 예에서, 물리적 주소는 물리적 주소 공간에 대응하고 논리적 주소는 물리적 주소 공간보다 작은 논리적 주소 공간에 대응한다.
도 12는 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 방법(1200)을 도시하는 흐름도를 도시한다. 방법(1200)의 동작은 본 명세서에서 설명된 바와 같이 제어기 또는 그것의 구성요소에 의해 구현될 수 있다. 예를 들면, 방법(1200)의 동작은 상기 설명된 바와 같이 제어기에 의해 수행될 수 있다. 일부 예에서, 제어기는 하기에 설명된 기능을 수행하도록 메모리 디바이스의 기능적 요소를 제어하기 위해 명령어의 세트를 실행할 수 있다. 부가적으로 또는 대안적으로, 제어기는 특수 목적 하드웨어를 사용하여 하기에 설명된 기능의 양태를 수행할 수 있다.
(1205)에서, 제어기는 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택할 수 있으며, 세트 내 각각의 매핑 함수는 메모리 디바이스에서 수신된 논리적 주소를 메모리 디바이스의 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것이다. (1205)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1205)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 선택 구성요소에 의해 수행될 수 있다.
(1210)에서, 제어기는 논리적 주소의 각각의 비트에 대해, 메모리 디바이스에 의해 지원된 논리 연산의 세트로부터 대응하는 논리 연산을 선택할 수 있으며, 각각의 논리 연산은 논리적 주소의 비트에 기초하여 물리적 주소의 비트를 결정하기 위한 것이다. (1210)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1210)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 선택 구성요소에 의해 수행될 수 있다.
(1215)에서, 제어기는 메모리 어레이에 저장된 데이터의 논리적 주소를 포함하는 액세스 명령을 수신할 수 있다. (1215)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1215)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 수신 구성요소에 의해 수행될 수 있다.
(1220)에서, 제어기는 논리적 주소 및 선택된 매핑 함수에 기초하여 메모리 어레이 내의 물리적 주소를 결정할 수 있다. (1220)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1220)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 결정 구성요소에 의해 수행될 수 있다.
(1225)에서, 제어기는 물리적 주소에 기초하여 메모리 어레이에 저장된 데이터에 액세스할 수 있다. (1225)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1225)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 액세스 구성요소에 의해 수행될 수 있다.
도 13은 본 발명의 양태에 따른 메모리를 위한 주소 난독화를 지원하는 방법(1300)을 도시하는 흐름도를 도시한다. 방법(1300)의 동작은 본 명세서에서 설명된 바와 같이 제어기 또는 그것의 구성요소에 의해 구현될 수 있다. 예를 들면, 방법(1300)의 동작은 상기 설명된 바와 같이 제어기에 의해 수행될 수 있다. 일부 예에서, 제어기는 하기에 설명된 기능을 수행하도록 메모리 디바이스의 기능적 요소를 제어하기 위해 명령어의 세트를 실행할 수 있다. 부가적으로 또는 대안적으로, 제어기는 특수 목적 하드웨어를 사용하여 하기에 설명된 기능의 양태를 수행할 수 있다.
(1305)에서, 제어기는 메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택할 수 있으며, 세트 내 각각의 매핑 함수는 메모리 디바이스에서 수신된 논리적 주소를 메모리 디바이스의 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것이다. (1305)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1305)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 선택 구성요소에 의해 수행될 수 있다.
(1310)에서, 제어기는 논리적 주소의 각각의 비트에 대해, 메모리 디바이스에 의해 지원된 논리 연산의 세트로부터 대응하는 논리 연산을 선택할 수 있으며, 각각의 논리 연산은 논리적 주소의 비트에 기초하여 물리적 주소의 비트를 결정하기 위한 것이다. (1310)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1310)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 선택 구성요소에 의해 수행될 수 있다.
(1315)에서, 제어기는 대응하는 논리 연산을 구현하도록 구성된 매핑 서브구성요소를 통해 논리적 주소의 각각의 비트를 라우팅할 수 있다. (1315)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1315)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 라우팅 구성요소에 의해 수행될 수 있다.
(1320)에서, 제어기는 메모리 어레이에 저장된 데이터의 논리적 주소를 포함하는 액세스 명령을 수신할 수 있다. (1320)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1320)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 수신 구성요소에 의해 수행될 수 있다.
(1325)에서, 제어기는 논리적 주소 및 선택된 매핑 함수에 기초하여 메모리 어레이 내의 물리적 주소를 결정할 수 있다. (1325)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1325)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 결정 구성요소에 의해 수행될 수 있다.
(1330)에서, 제어기는 물리적 주소에 기초하여 메모리 어레이에 저장된 데이터에 액세스할 수 있다. (1330)의 동작은 본 명세서에서 설명된 방법에 따라 수행될 수 있다. 일부 예에서, (1330)의 동작의 양태는 도 10을 참조하여 설명된 바와 같이 액세스 구성요소에 의해 수행될 수 있다.
상기 설명된 방법이 가능한 구현을 설명하고, 동작 및 단계가 재배열되거나 그렇지 않으면, 수정될 수 있으며 다른 구현이 가능하다는 점에 유의해야 한다. 또한, 방법 중 2개 이상으로부터의 양태가 조합될 수 있다.
일부 예에서, 장치 또는 디바이스는 범용 또는 특수 목적 하드웨어를 사용하여 본 명세서에서 설명된 기능의 양태를 수행할 수 있다. 장치 또는 디바이스는 메모리 어레이에 저장된 데이터에 액세스하기 위한 논리적 주소를 수신하도록 구성된 인터페이스, 인터페이스와 결합되고 매핑 함수의 세트로부터 매핑 함수를 선택하도록 구성된 선택 구성요소로서, 세트 내 각각의 매핑 함수는 인터페이스를 통해 수신된 논리적 주소를 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것인, 상기 선택 구성요소, 선택 구성요소와 결합되고 인터페이스를 통해 수신된 논리적 주소를 선택된 매핑 함수에 적어도 부분적으로 기초하여 메모리 어레이 내의 물리적 주소에 매핑하도록 구성된 매핑 구성요소를 포함할 수 있다.
일부 예에서, 매핑 구성요소는 논리적 주소의 적어도 하나의 비트 및 적어도 하나의 논리 연산에 적어도 부분적으로 기초하여 메모리 어레이 내의 물리적 주소의 비트를 결정하도록 각각 구성된 복수의 매핑 서브구성요소를 포함하고, 선택 구성요소는 복수의 각각의 매핑 서브구성요소에 대한 대응하는 논리 연산을 선택한 것에 적어도 부분적으로 기초하여 매핑 함수를 선택하도록 구성된다. 일부 예에서, 선택 구성요소는 복수 중 제2 매핑 구성요소에 대한 제2 논리 연산과 무관하게 복수 중 제1 매핑 구성요소에 대한 제1 논리 연산을 선택하도록 구성된다.
일부 예에서, 장치 또는 디바이스는 수 생성기를 포함할 수 있고, 선택 구성요소는 수 생성기에 의해 생성된 수에 적어도 부분적으로 기초하여 매핑 함수를 선택하도록 구성된다. 일부 예에서, 선택 구성요소는 장치와 연관된 고유 식별자에 적어도 부분적으로 기초하여 매핑 함수를 선택하도록 구성된다. 일부 예에서, 선택 구성요소는 모드 레지스터 또는 비휘발성 메모리를 판독한 것에 적어도 부분적으로 기초하여 매핑 함수를 선택하도록 구성된다. 일부 예에서, 선택 구성요소는 주기적 스케줄 또는 트리거 이벤트에 적어도 부분적으로 기초하여 매핑 함수를 선택하도록 구성된다.
일부 예에서, 장치 또는 디바이스는 시간에 따라 메모리 어레이 내의 물리적 주소 사이에 데이터를 이동시키도록 구성된 웨어 레벨링 구성요소를 포함할 수 있다.
일부 예에서, 장치 또는 디바이스는 범용 또는 특수 목적 하드웨어를 사용하여 본 명세서에서 설명된 기능의 양태를 수행할 수 있다. 장치 또는 디바이스는 복수의 메모리 다이에 대한 논리적 주소를 수신하도록 구성된 인터페이스, 제1 메모리 어레이를 포함하고 제1 메모리 어레이에 대한 논리적 주소를 제1 매핑 함수에 따라 제1 메모리 어레이 내의 물리적 주소에 매핑하도록 구성된 복수의 메모리 다이 중 제1 메모리 다이, 및 제2 메모리 어레이를 포함하고 제2 메모리 어레이에 대한 논리적 주소를 제1 매핑 함수과 상이한 제2 매핑 함수에 따라 제2 메모리 어레이 내의 물리적 주소에 매핑하도록 구성된 복수의 메모리 다이 중 제2 메모리 다이를 포함할 수 있다.
일부 예에서, 장치 또는 디바이스는 제1 메모리 다이에 대한 제1 매핑 구성요소, 제2 메모리 다이에 대한 제2 매핑 구성요소, 및 제1 매핑 구성요소에 대한 제1 매핑 함수를 선택하고 제2 매핑 구성요소에 대한 제2 매핑 함수를 선택하도록 구성된 선택 구성요소를 포함할 수 있다. 일부 예에서, 선택 구성요소는 제2 매핑 함수와 독립적으로 제1 매핑 함수를 선택하도록 구성된다. 일부 예에서, 제1 메모리 다이는 제1 다이 식별자를 갖고, 제2 메모리 다이는 제2 다이 식별자를 가지며, 선택 구성요소는 제1 다이 식별자에 적어도 부분적으로 기초하여 제1 매핑 함수 및 제2 다이 식별자에 적어도 부분적으로 기초하여 제2 매핑 함수를 선택하도록 구성된다.
일부 예에서, 논리적 주소는 각각 복수의 비트를 포함하고, 제1 매핑 구성요소는 제1 대응하는 복수의 매핑 서브구성요소를 포함하고, 제2 매핑 구성요소는 제2 대응하는 복수의 매핑 서브구성요소를 포함하며, 제1 대응하는 복수의 및 제2 대응하는 복수의 각각의 매핑 서브구성요소는 선택 구성요소에 의해 독립적으로 구성 가능하다.
특정 특징이 DRAM 기술에 대해 또는 그의 맥락으로 본 명세서에서 설명될 수 있을지라도, 이것은 단지 예시의 목적을 위한 것이고, 당업자는 본 명세서에서의 교시가 임의의 유형의 메모리 디바이스에 적용될 수 있음을 인식할 것이다. 예를 들면, 본 명세서에서의 교시는 자기 하드 디스켓, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 RAM(DRAM), 동기식 동적 DRAM(SDRAM), 강유전성 RAM(FeRAM), 자기 RAM(MRAM), 저항성 RAM(RRAM), 플래시 메모리, 상 변화 메모리(PCM), 등과 같은 휘발성 또는 비휘발성 메모리 디바이스에 적용될 수 있다.
본 명세서에서 설명된 정보 및 신호는 다양한 상이한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있다. 예를 들면, 상기 설명에 걸쳐 참조될 수 있는 데이터, 명령어, 명령, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자기장 또는 입자, 광학장 또는 입자, 또는 이들의 임의의 조합에 의해 표현될 수 있다. 일부 도면은 신호를 단일 신호로서 도시할 수 있다; 그러나, 신호가 신호의 버스를 표현할 수 있고, 여기서 버스는 다양한 비트 폭을 가질 수 있음이 당업자에 의해 이해될 것이다.
용어 "전자 통신", "전도성 접촉부", "연결된", 및 "결합된"은 구성요소 사이의 신호의 흐름을 지원하는 구성요소 사이의 관계를 언급할 수 있다. 구성요소 사이의 신호의 흐름을 언제든지 지원할 수 있는 구성요소 사이에 임의의 전도성 경로가 존재하는 경우 구성요소는 서로 전자 통신하는(또는 전도성 접촉하거나 연결되거나 결합된) 것으로 고려된다. 임의의 주어진 시간에, 서로 전자 통신하는(또는 전도성 접촉하거나 연결되거나 결합된) 구성요소 사이의 전도성 경로는 연결된 구성요소를 포함하는 디바이스의 동작에 기초한 개방된 회로 또는 폐쇄된 회로일 수 있다. 연결된 구성요소 사이의 전도성 경로는 구성요소 사이의 직접 전도성 경로일 수 있거나 연결된 구성요소 사이의 전도성 경로는 스위치, 트랜지스터, 또는 다른 구성요소와 같은 중간 구성요소를 포함할 수 있는 간접 전도성 경로일 수 있다. 일부 경우에, 연결된 구성요소 사이의 신호의 흐름은 예를 들면, 스위치 또는 트랜지스터와 같은 하나 이상의 중간 구성요소를 사용하여 잠시 동안 중단될 수 있다.
용어 "결합하는"은 신호가 현재 전도성 경로를 통해 구성요소 사이에 전달될 수 없는 구성요소 사이의 개방된 회로 관계로부터 신호가 전도성 경로를 통해 구성요소 사이에 전달될 수 있는 구성요소 사이의 폐쇄된 회로 관계로 이동하는 조건을 언급한다. 제어기와 같은 구성요소가 다른 구성요소를 함께 결합할 때, 구성요소는 이전에 신호가 흐르는 것을 허용하지 않은 전도성 경로를 통해 다른 구성요소 사이에 신호가 흐르는 것을 허용하는 변경을 개시한다.
본 명세서에서 사용된 바와 같이, 용어 "실질적으로"는 수식된 특성(예컨대, 용어 실질적으로로 수식된 동사 또는 형용사)이 절대적일 필요는 없지만 특성의 장점을 성취할 만큼 충분히 가깝다는 것을 의미한다.
메모리 어레이를 포함하는 본 명세서에서 논의된 디바이스는 실리콘, 게르마늄, 실리콘 게르마늄 합금, 갈륨 비소, 질화 갈륨 등과 같은 반도체 기판에 형성될 수 있다. 일부 경우에, 기판은 반도체 웨이퍼이다. 다른 경우에, 기판은 실리콘 온 글래스(SOG) 또는 실리콘 온 사파이어(SOP)와 같은 실리콘 온 절연체(SOI) 기판, 또는 또 다른 기판의 반도체 재료의 에피택셜 층일 수 있다. 기판의 전도성, 또는 기판의 서브 영역은 인, 붕소, 또는 비소를 포함하지만, 이들로 제한되지 않는 다양한 화학 종을 사용하여 도핑을 통해 제어될 수 있다. 도핑은 기판의 초기 형성 또는 성장 동안, 이온 주입에 의해, 또는 임의의 다른 도핑 수단에 의해 수행될 수 있다.
본 명세서에서 논의된 스위칭 구성요소 또는 트랜지스터는 전계 효과 트랜지스터(FET)를 표현하고 소스, 드레인, 및 게이트를 포함하는 3 단자 디바이스를 포함할 수 있다. 단자는 전도성 재료 예로서, 금속을 통해 다른 전자 요소에 연결될 수 있다. 소스 및 드레인은 전도성일 수 있으며 고농도로 도핑된 예컨대, 축퇴된 반도체 영역을 포함할 수 있다. 소스 및 드레인은 약하게 도핑된 반도체 영역 또는 채널에 의해 분리될 수 있다. 채널이 n형(즉, 대부분의 캐리어가 신호임)이면, FET는 n형 FET로서 언급될 수 있다. 채널이 p형(즉, 대부분의 캐리어가 홀임)이면, FET는 p형 FET로서 언급될 수 있다. 채널은 절연 게이트 산화물에 의해 캡핑(capping)될 수 있다. 채널 전도성은 게이트에 전압을 인가함으로써 제어될 수 있다. 예를 들면, n형 FET 또는 p형 FET에 각각 양의 전압 또는 음의 전압을 인가하는 것은 채널이 전도성이 되는 것을 야기할 수 있다. 트랜지스터의 임계 전압보다 크거나 같은 전압이 트랜지스터 게이트에 인가될 때 트랜지스터는 "온" 또는 "활성화"될 수 있다. 트랜지스터의 임계 전압 미만의 전압이 트랜지스터 게이트에 인가될 때 트랜지스터는 "오프" 또는 "활성화 해제"될 수 있다.
첨부된 도면과 관련하여 본 명세서에서 제시된 설명은 예시적인 구성을 설명하며 구현될 수 있거나 청구항의 범위 내에 있는 모든 예를 표현하지 않는다. 본 명세서에서 사용된 용어 "예시적인"은 "일례, 사례, 또는 예시의 역할을 하는 것"을 의미하고, "선호된" 또는 "또 다른 예에 비해 유리함"을 의미하지 않는다. 상세한 설명은 설명된 기법의 이해를 제공하는 것에 대한 특정 상세를 포함한다. 이 기법은 그러나, 이 특정 상세 없이 실행될 수 있다. 일부 사례에서, 잘 알려진 구조 및 디바이스는 설명된 예의 개념을 모호하게 하는 것을 회피하기 위해 블록 다이어그램 형태로 도시된다.
첨부된 도면에서, 유사한 구성요소 또는 특징은 동일한 참조 라벨을 가질 수 있다. 게다가, 동일한 유형의 다양한 구성요소는 유사한 구성요소 사이를 구별하는 제2 라벨 및 대시에 의한 참조 라벨을 따름으로써 구별될 수 있다. 명세서에서 제1 참조 라벨만 사용되면, 설명은 제2 참조 라벨에 관계없이 동일한 제1 참조 라벨을 갖는 유사한 구성요소 중 임의의 하나에 적용 가능하다.
본 명세서에서 설명된 정보 및 신호는 다양한 상이한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있다. 예를 들면, 상기 설명에 걸쳐 참조될 수 있는 데이터, 명령어, 명령, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자기장 또는 입자, 광학장 또는 입자, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
본 명세서에서의 개시와 관련하여 설명된 다양한 예시적인 블록 및 모듈은 범용 프로세서, DSP, ASIC, FPGA 또는 다른 프로그래밍 가능한 논리 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 구성요소, 또는 본 명세서에서 설명된 기능을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스의 조합(예컨대, DSP 및 마이크로프로세서, 다수의 마이크로프로세서, DSP 코어와 결부된 하나 이상의 마이크로프로세서, 또는 임의의 다른 이들 구성의 조합)으로서 구현될 수 있다.
본 명세서에서 설명된 기능은 하드웨어, 프로세서에 의해 실행된 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 프로세서에 의해 실행된 소프트웨어로 구현되면, 기능은 컴퓨터 판독 가능한 매체의 하나 이상의 명령어 또는 부호에 저장되거나 하나 이상의 명령어 또는 부호로서 송신될 수 있다. 다른 예 및 구현은 본 발명 및 첨부된 청구항의 범위 내에 있다. 예를 들면, 소프트웨어의 본질로 인해, 상기 설명된 기능은 프로세서, 하드웨어, 펌웨어, 하드와이어링, 또는 이들 중 임의의 것의 조합에 의해 실행된 소프트웨어를 사용하여 구현될 수 있다. 기능을 구현하는 특징은 또한, 기능의 일부가 상이한 물리적 위치에서 구현되도록 분산되는 것을 포함하는 다양한 위치에 물리적으로 위치될 수 있다. 또한, 청구항에서를 포함하는 본 명세서에서 사용된 바와 같이, 항목의 목록(예를 들면, "~중 적어도 하나" 또는 "~중 하나 이상"과 같은 문구가 앞에 있는 항목의 목록)에서 사용된 바와 같이 "또는"은 예를 들면, A, B, 또는 C 중 적어도 하나의 목록이 A 또는 B 또는 C 또는 AB 또는 AC 또는 BC 또는 ABC(예컨대, A 및 B 및 C)를 의미하도록 포괄적 목록을 나타낸다. 또한, 본 명세서에 사용된 바와 같이, 문구 "~에 기초하여"는 폐쇄된 세트의 조건에 대한 참조로서 해석되지 않을 것이다. 예를 들면, "조건(A)에 기초하여"로서 설명되는 일 예시적인 단계는 본 발명의 범위를 벗어나지 않고 조건(A) 및 조건(B) 둘 모두에 기초할 수 있다. 즉, 본 명세서에서 사용된 바와 같이, 문구 "~에 기초하여"는 문구 "~에 적어도 부분적으로 기초하여"와 동일한 방식으로 해석될 것이다.
본 명세서에서의 설명은 당업자가 본 발명을 하거나 사용하는 것을 가능하게 하기 위해 제공된다. 본 발명에 대한 다양한 수정은 당업자에게 용이하게 명백할 것이며, 본 명세서에서 정의된 일반적인 원리는 본 발명의 범위를 벗어나지 않고 다른 변형에 적용될 수 있다. 따라서, 본 발명은 본 명세서에서 설명된 예 및 설계로 제한되지 않지만, 본 명세서에 개시된 원리 및 신규 특징과 일치하는 가장 넓은 범위에 부합되어야 한다.

Claims (25)

  1. 방법으로서,
    메모리 디바이스에 의해 지원된 매핑 함수의 세트로부터 매핑 함수를 선택하는 단계로서, 상기 세트 내 각각의 매핑 함수는 상기 메모리 디바이스에서 수신된 논리적 주소를 상기 메모리 디바이스의 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것인, 상기 매핑 함수를 선택하는 단계;
    상기 메모리 어레이에 저장된 데이터의 논리적 주소를 포함하는 액세스 명령을 수신하는 단계;
    상기 논리적 주소 및 상기 선택된 매핑 함수에 적어도 부분적으로 기초하여 상기 메모리 어레이 내의 물리적 주소를 결정하는 단계; 및
    상기 물리적 주소에 적어도 부분적으로 기초하여 상기 메모리 어레이에 저장된 상기 데이터에 액세스하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 매핑 함수를 선택하는 단계는,
    상기 논리적 주소의 각각의 비트에 대해, 상기 메모리 디바이스에 의해 지원된 논리 연산의 세트로부터 대응하는 논리 연산을 선택하는 단계를 포함하고, 상기 물리적 주소의 비트를 결정하기 위한 각각의 논리 연산은 상기 논리적 주소의 비트에 적어도 부분적으로 기초하는, 방법.
  3. 제2항에 있어서, 상기 물리적 주소를 결정하는 단계는,
    상기 세트로부터의 제1 논리 연산에 적어도 부분적으로 기초하여 상기 물리적 주소의 제1 비트를 결정하는 단계; 및
    상기 세트로부터의 제2 논리 연산에 적어도 부분적으로 기초하여 상기 물리적 주소의 제2 비트를 결정하는 단계를 포함하는, 방법.
  4. 제2항에 있어서, 상기 물리적 주소를 결정하는 단계는,
    상기 대응하는 논리 연산을 구현하도록 구성된 매핑 서브구성요소를 통해 상기 논리적 주소의 각각의 비트를 라우팅하는 단계를 포함하는, 방법.
  5. 제2항에 있어서, 상기 메모리 디바이스에 의해 지원된 상기 논리 연산의 세트는 반전 연산, 상기 논리적 주소의 제2 비트에 적어도 부분적으로 기초한 배타적 또는 (XOR) 연산, 또는 상기 논리적 주소의 제2 비트에 적어도 부분적으로 기초한 배타적 NOR(XNOR) 연산, 패스 스루 연산(pass-through operation), 주소 스왑 함수(address swap function), 또는 이들의 임의의 조합을 포함하는, 방법.
  6. 제1항에 있어서,
    난수를 생성하는 단계를 더 포함하되, 상기 매핑 함수를 선택하는 단계는 상기 난수에 적어도 부분적으로 기초하는, 방법.
  7. 제1항에 있어서,
    상기 메모리 디바이스, 상기 메모리 어레이, 또는 상기 메모리 어레이를 포함하는 다이와 연관된 고유 식별자를 식별하는 단계를 더 포함하되, 상기 매핑 함수를 선택하는 단계는 상기 고유 식별자에 적어도 부분적으로 기초하는, 방법.
  8. 제1항에 있어서, 상기 메모리 디바이스에 의해 지원된 상기 매핑 함수의 세트로부터 상기 매핑 함수를 선택하는 단계는 스케줄 또는 트리거 이벤트에 적어도 부분적으로 기초하는, 방법.
  9. 제1항에 있어서,
    상기 메모리 디바이스에 의해 지원된 상기 매핑 함수의 세트로부터 제2 매핑 함수를 선택하는 단계;
    상기 메모리 어레이에 저장된 다른 데이터에 대한 제2 논리적 주소를 포함하는 제2 액세스 명령을 수신하는 단계;
    상기 제2 논리적 주소 및 상기 제2 매핑 함수에 적어도 부분적으로 기초하여 상기 메모리 어레이 내의 제2 물리적 주소를 결정하는 단계; 및
    상기 제2 물리적 주소에 적어도 부분적으로 기초하여 상기 메모리 어레이에 저장된 다른 데이터에 액세스하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서,
    보안 키를 수신하는 단계; 및
    상기 보안 키를 수신하는 단계에 적어도 부분적으로 기초하여 제2 매핑 함수를 선택하는 단계를 더 포함하는, 방법.
  11. 제1항에 있어서,
    웨어 레벨링 절차(wear-leveling procedure)에 따라 상기 메모리 디바이스의 메모리 어레이 내의 물리적 주소 사이에 데이터를 전송하는 단계를 더 포함하는, 방법.
  12. 제1항에 있어서,
    상기 물리적 주소는 물리적 주소 공간에 대응하고; 그리고
    상기 논리적 주소는 상기 물리적 주소 공간보다 작은 논리적 주소 공간에 대응하는, 방법.
  13. 장치로서,
    메모리 어레이에 저장된 데이터에 액세스하기 위한 논리적 주소를 수신하도록 구성된 인터페이스;
    상기 인터페이스와 결합되고 매핑 함수의 세트로부터 매핑 함수를 선택하도록 구성된 선택 구성요소로서, 상기 세트 내 각각의 매핑 함수는 상기 인터페이스를 통해 수신된 논리적 주소를 상기 메모리 어레이 내의 물리적 주소에 매핑하기 위한 것인, 상기 선택 구성요소; 및
    선택 구성요소와 결합되고 상기 선택된 매핑 함수에 적어도 부분적으로 기초하여 상기 인터페이스를 통해 수신된 논리적 주소를 상기 메모리 어레이 내의 물리적 주소에 매핑하도록 구성된 매핑 구성요소
    를 포함하는, 장치.
  14. 제13항에 있어서,
    상기 매핑 구성요소는 상기 논리적 주소의 적어도 하나의 비트 및 적어도 하나의 논리 연산에 적어도 부분적으로 기초하여 상기 메모리 어레이 내의 물리적 주소의 비트를 각각 결정하도록 구성된 복수의 매핑 서브구성요소를 포함하고; 그리고
    상기 선택 구성요소는 상기 복수의 각각의 매핑 서브구성요소에 대한 상기 적어도 하나의 논리 연산을 선택한 것에 적어도 부분적으로 기초하여 상기 매핑 함수를 선택하도록 구성되는, 장치.
  15. 제14항에 있어서, 상기 선택 구성요소는 상기 복수 중 제2 매핑 구성요소에 대한 제2 논리 연산과 무관하게 상기 복수 중 제1 매핑 구성요소에 대한 제1 논리 연산을 선택하도록 구성되는, 장치.
  16. 제13항에 있어서,
    수 생성기를 더 포함하되, 상기 선택 구성요소는 상기 수 생성기에 의해 생성된 수에 적어도 부분적으로 기초하여 상기 매핑 함수를 선택하도록 구성되는, 장치.
  17. 제13항에 있어서, 상기 선택 구성요소는 상기 장치와 연관된 고유 식별자에 적어도 부분적으로 기초하여 상기 매핑 함수를 선택하도록 구성되는, 장치.
  18. 제13항에 있어서, 상기 선택 구성요소는 모드 레지스터 또는 비휘발성 메모리를 판독한 것에 적어도 부분적으로 기초하여 상기 매핑 함수를 선택하도록 구성되는, 장치.
  19. 제13항에 있어서, 상기 선택 구성요소는 주기적 스케줄 또는 트리거 이벤트에 적어도 부분적으로 기초하여 상기 매핑 함수를 선택하도록 구성되는, 장치.
  20. 제13항에 있어서,
    시간에 따라 상기 메모리 어레이 내의 물리적 주소 사이에 데이터를 이동시키도록 구성된 웨어 레벨링 구성요소를 더 포함하는, 장치.
  21. 장치로서,
    복수의 메모리 다이에 대한 논리적 주소를 수신하도록 구성된 인터페이스;
    제1 메모리 어레이를 포함하고 제1 매핑 함수에 따라 상기 제1 메모리 어레이에 대한 논리적 주소를 상기 제1 메모리 어레이 내의 물리적 주소에 매핑하도록 구성된 상기 복수의 메모리 다이 중 제1 메모리 다이; 및
    제2 메모리 어레이를 포함하고 상기 제1 매핑 함수와 상이한 제2 매핑 함수에 따라 상기 제2 메모리 어레이에 대한 논리적 주소를 상기 제2 메모리 어레이 내의 물리적 주소에 매핑하도록 구성된 상기 복수의 메모리 다이 중 제2 메모리 다이
    를 포함하는, 장치.
  22. 제21항에 있어서,
    상기 제1 메모리 다이에 대한 제1 매핑 구성요소;
    상기 제2 메모리 다이에 대한 제2 매핑 구성요소; 및
    상기 제1 매핑 구성요소에 대해 상기 제1 매핑 함수를 선택하고 상기 제2 매핑 구성요소에 대해 상기 제2 매핑 함수를 선택하도록 구성된 선택 구성요소
    를 더 포함하는, 장치.
  23. 제22항에 있어서, 상기 선택 구성요소는 상기 제2 매핑 함수과 독립적으로 상기 제1 매핑 함수를 선택하도록 구성되는, 장치.
  24. 제22항에 있어서,
    상기 제1 메모리 다이는 제1 다이 식별자를 갖고;
    상기 제2 메모리 다이는 제2 다이 식별자를 갖고; 그리고
    상기 선택 구성요소는 상기 제1 다이 식별자에 적어도 부분적으로 기초하여 상기 제1 매핑 함수 및 상기 제2 다이 식별자에 적어도 부분적으로 기초하여 상기 제2 매핑 함수를 선택하도록 구성되는, 장치.
  25. 제22항에 있어서,
    상기 논리적 주소는 각각 복수의 비트를 포함하고
    상기 제1 매핑 구성요소는 제1 대응하는 복수의 매핑 서브구성요소를 포함하고;
    상기 제2 매핑 구성요소는 제2 대응하는 복수의 매핑 서브구성요소를 포함하고; 그리고
    상기 제1 대응하는 복수의 및 상기 제2 대응하는 복수의 각각의 매핑 서브구성요소는 상기 선택 구성요소에 의해 독립적으로 구성 가능한, 장치.
KR1020217017031A 2018-11-15 2019-10-25 메모리를 위한 주소 난독화 KR20210071091A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/192,068 2018-11-15
US16/192,068 US11042490B2 (en) 2018-11-15 2018-11-15 Address obfuscation for memory
PCT/US2019/058147 WO2020101862A1 (en) 2018-11-15 2019-10-25 Address obfuscation for memory

Publications (1)

Publication Number Publication Date
KR20210071091A true KR20210071091A (ko) 2021-06-15

Family

ID=70726346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217017031A KR20210071091A (ko) 2018-11-15 2019-10-25 메모리를 위한 주소 난독화

Country Status (7)

Country Link
US (2) US11042490B2 (ko)
EP (1) EP3881186A4 (ko)
JP (1) JP2022507523A (ko)
KR (1) KR20210071091A (ko)
CN (1) CN113039529A (ko)
TW (1) TWI722613B (ko)
WO (1) WO2020101862A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11843597B2 (en) * 2016-05-18 2023-12-12 Vercrio, Inc. Automated scalable identity-proofing and authentication process
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US11194726B2 (en) * 2019-02-25 2021-12-07 Micron Technology, Inc. Stacked memory dice for combined access operations
US11182308B2 (en) * 2019-11-07 2021-11-23 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11132470B2 (en) * 2019-11-07 2021-09-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11030124B2 (en) 2019-11-07 2021-06-08 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11500788B2 (en) * 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US20210382992A1 (en) * 2019-11-22 2021-12-09 Pure Storage, Inc. Remote Analysis of Potentially Corrupt Data Written to a Storage System
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
JP6946485B2 (ja) * 2020-01-17 2021-10-06 株式会社東芝 磁気記憶装置
US11355165B2 (en) * 2020-04-27 2022-06-07 Micron Technology, Inc. Adjusting parameters of channel drivers based on temperature
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory
US20220091758A1 (en) * 2021-12-07 2022-03-24 Intel Corporation Securing sensitive data in memory
US11868662B2 (en) * 2022-05-24 2024-01-09 Western Digital Technologies, Inc. Storage system and method for hybrid mapping
TWI816456B (zh) * 2022-06-30 2023-09-21 新唐科技股份有限公司 密碼裝置及其密碼方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731310Y2 (ja) * 1987-07-23 1995-07-19 富士ゼロックス株式会社 メモリ装置
US5081675A (en) * 1989-11-13 1992-01-14 Kitti Kittirutsunetorn System for protection of software in memory against unauthorized use
EP0640228A1 (en) * 1992-05-12 1995-03-01 International Business Machines Corporation Method and apparatus for reducing memory wearout in a computer system
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
TW466407B (en) 2000-08-31 2001-12-01 Inst Information Industry Multiple variable address mapping circuit
US8135936B2 (en) 2009-12-23 2012-03-13 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
US8108596B2 (en) 2006-08-03 2012-01-31 Arm Limited Memory controller address mapping scheme
US20080152142A1 (en) * 2006-12-20 2008-06-26 Mark Buer Memory scrambler unit (msu)
JP2009086830A (ja) * 2007-09-28 2009-04-23 Toshiba Corp メモリコントローラ
CN101419573A (zh) * 2008-12-01 2009-04-29 成都市华为赛门铁克科技有限公司 一种存储管理的方法、系统和存储设备
CN101493794B (zh) * 2009-01-19 2011-12-21 成都市华为赛门铁克科技有限公司 一种闪存数据处理方法及装置
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
CN103026346B (zh) 2010-07-27 2016-01-20 国际商业机器公司 用于从固态存储器设备读取及写入数据的方法及存储系统
KR101155542B1 (ko) 2010-10-11 2012-06-18 성균관대학교산학협력단 Ssd 장치의 매핑 테이블 관리 방법
JP6016137B2 (ja) * 2011-05-24 2016-10-26 マーベル ワールド トレード リミテッド ソリッドステートドライブおよびその動作方法
US9158672B1 (en) 2011-10-17 2015-10-13 Rambus Inc. Dynamic deterministic address translation for shuffled memory spaces
US20130097403A1 (en) * 2011-10-18 2013-04-18 Rambus Inc. Address Mapping in Memory Systems
US9136873B2 (en) * 2013-03-11 2015-09-15 Intel Corporation Reduced uncorrectable memory errors
US20140328127A1 (en) 2013-05-02 2014-11-06 Skymedi Corporation Method of Managing Non-Volatile Memory and Non-Volatile Storage Device Using the Same
JP6180271B2 (ja) * 2013-10-09 2017-08-16 日本放送協会 映像記録装置及び映像記録方法
US10445232B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Determining control states for address mapping in non-volatile memories
US10255191B2 (en) 2015-08-13 2019-04-09 Advanced Micro Devices, Inc. Logical memory address regions
US20170123994A1 (en) * 2015-10-28 2017-05-04 Sandisk Technologies Inc. Handling Of Plane Failure In Non-Volatile Storage
US10049717B2 (en) * 2016-03-03 2018-08-14 Samsung Electronics Co., Ltd. Wear leveling for storage or memory device
US10761976B2 (en) 2016-11-28 2020-09-01 Arm Limited Method and apparatus for memory wear leveling
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
CN108536612B (zh) * 2017-03-03 2021-12-21 西部数据技术公司 确定用于非易失性存储器中的地址映射的控制状态
US20180329629A1 (en) * 2017-05-11 2018-11-15 WipeOS LLC Data wiping of solid-state drives
US11056206B2 (en) * 2017-10-11 2021-07-06 Western Digital Technologies, Inc. Non-volatile memory with dynamic wear leveling group configuration
KR102540964B1 (ko) * 2018-02-12 2023-06-07 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
US10540100B2 (en) * 2018-04-10 2020-01-21 Western Digital Technologies, Inc. Mapping-based wear leveling for non-volatile memory

Also Published As

Publication number Publication date
US11853230B2 (en) 2023-12-26
EP3881186A4 (en) 2022-08-10
US20200159674A1 (en) 2020-05-21
US11042490B2 (en) 2021-06-22
TWI722613B (zh) 2021-03-21
CN113039529A (zh) 2021-06-25
EP3881186A1 (en) 2021-09-22
JP2022507523A (ja) 2022-01-18
TW202027075A (zh) 2020-07-16
US20210279183A1 (en) 2021-09-09
WO2020101862A1 (en) 2020-05-22

Similar Documents

Publication Publication Date Title
US11853230B2 (en) Address obfuscation for memory
CN112352217B (zh) 基于数据极性的数据存储
US11625170B2 (en) Row hammer protection for a memory device
US11334435B2 (en) Safety event detection for a memory device
US11899982B2 (en) Command block management
WO2020167809A1 (en) Refresh rate management for memory
US20230028176A1 (en) Persistent health monitoring for volatile memory systems
KR20210087556A (ko) 메모리 장치를 위한 멀티 레벨 시그널링
WO2020081238A1 (en) Methods and devices for error correction
US11257534B2 (en) Current monitor for a memory device
US10949284B2 (en) Techniques using nonvolatile memory and volatile memory
CN112116932A (zh) 用于冗余的高效电力方案

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application