KR20200100309A - 메모리 장치 및 시스템 - Google Patents

메모리 장치 및 시스템 Download PDF

Info

Publication number
KR20200100309A
KR20200100309A KR1020190018418A KR20190018418A KR20200100309A KR 20200100309 A KR20200100309 A KR 20200100309A KR 1020190018418 A KR1020190018418 A KR 1020190018418A KR 20190018418 A KR20190018418 A KR 20190018418A KR 20200100309 A KR20200100309 A KR 20200100309A
Authority
KR
South Korea
Prior art keywords
data
physical address
nonvolatile memory
error correction
address
Prior art date
Application number
KR1020190018418A
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 삼성전자주식회사
Priority to KR1020190018418A priority Critical patent/KR20200100309A/ko
Priority to US16/667,582 priority patent/US11847209B2/en
Priority to CN202010092536.6A priority patent/CN111581677A/zh
Publication of KR20200100309A publication Critical patent/KR20200100309A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/0646Configuration or reconfiguration
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/1433Protection 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 module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

메모리 장치가 제공된다. 상기 메모리 장치는 제1 물리 어드레스와, 제1 물리 어드레스와 다른 제2 물리 어드레스를 생성하는 어드레스 생성기, 제1 물리 어드레스를 포함하는 제1 비휘발성 메모리, 제2 물리 어드레스를 포함하는 제2 비휘발성 메모리, 및 제1 및 제2 비휘발성 메모리의 공격 여부를 감지하는 공격 감지 회로를 포함하고, 공격 감지 회로는, 제1 비휘발성 메모리로부터 제1 데이터를 제공받고, 제2 비휘발성 메모리로부터 제2 데이터를 제공받고, 제1 데이터와 제2 데이터를 서로 비교하고, 제1 데이터와 제2 데이터의 비교 결과에 기초하여, 제1 및 제2 비휘발성 메모리의 공격 여부를 결정한다.

Description

메모리 장치 및 시스템{A memory device and system}
본 발명은 메모리 장치 및 시스템에 관한 것이다. 더욱 구체적으로, 본 발명은 데이터의 외부 유출을 방지하거나, 프로그램 코드의 변경을 방지하기 위한, 보안 기능이 개선된 메모리 장치 및 시스템에 관한 것이다.
기술이 발전함에 따라, 다양한 분야에서 메모리 장치 및 시스템을 이용한다. 그러나, 개인정보와 같이 높은 보안이 요구되는 데이터들은 보안 기능이 향상된 메모리 장치에 저장될 필요가 있다.
스마트 카드와 같은 보안 메모리 장치는 암호키(cryptographic key), 주요 데이터(sensitive data), 주요 코드 등의 보안이 필요한 데이터를 처리할 수 있으며, 외부로부터의 공격 또는 보안 메모리 장치의 자체적인 문제로 인하여 상기 보안이 필요한 데이터에 에러가 발생할 수 있다. 예를 들어, 레이저나 엑스레이 등을 이용하여 오류가 반복적으로 주입되는 오류 기반 공격(fault attack)에 의하여 보안 메모리 장치에 저장된 데이터가 유출되거나, 프로그램 코드 등이 변경되어 큰 문제를 야기할 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 보안 기능이 개선된 메모리 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 보안 기능이 개선된 메모리 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 제1 물리 어드레스와, 제1 물리 어드레스와 다른 제2 물리 어드레스를 생성하는 어드레스 생성기, 제1 물리 어드레스를 포함하는 제1 비휘발성 메모리, 제2 물리 어드레스를 포함하는 제2 비휘발성 메모리, 및 제1 및 제2 비휘발성 메모리의 공격 여부를 감지하는 공격 감지 회로를 포함하고, 공격 감지 회로는, 제1 비휘발성 메모리로부터 제1 데이터를 제공받고, 제2 비휘발성 메모리로부터 제2 데이터를 제공받고, 제1 데이터와 제2 데이터를 서로 비교하고, 제1 데이터와 제2 데이터의 비교 결과에 기초하여, 제1 및 제2 비휘발성 메모리의 공격 여부를 결정한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 제1 및 제2 비휘발성 메모리, 식별자, 식별자와 관련된 제1 데이터, 및 제1 데이터에 대한 라이트(write) 요청을 수신하고, 식별자를 이용하여 제1 논리 어드레스를 생성하는 프로세서, 및 제1 논리 어드레스와 대응되는 제1 물리 어드레스와, 제1 논리 어드레스와 대응되고 제1 물리 어드레스와 다른 제2 물리 어드레스를 생성하는 어드레스 생성기를 포함하고, 프로세서는 제1 데이터에 대한 라이트 요청에 대응하여, 제1 데이터를 제1 비휘발성 메모리의 제1 물리 어드레스에 저장하고, 제1 데이터를 제2 비휘발성 메모리의 제2 물리 어드레스에 저장한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 제1 식별자와 대응되는 제1 물리 어드레스에, 제1 데이터를 저장하는 제1 비휘발성 메모리, 제1 식별자와 대응되고 제1 물리 어드레스와 다른 제2 물리 어드레스에, 제1 데이터와 다른 제2 데이터가 저장된 제2 비휘발성 메모리, 제1 및 제2 비휘발성 메모리의 공격 여부를 감지하는 공격 감지 회로, 및 외부로부터 제1 식별자와 대응되는 데이터의 리드 요청을 수신하는 프로세서를 포함하고, 프로세서는, 리드 요청에 대응하여, 제1 비휘발성 메모리의 제1 물리 어드레스에 액세스하여, 제1 데이터와 관련된 제3 데이터를 리드하고, 제2 비휘발성 메모리의 제2 물리 어드레스에 액세스하여, 제2 데이터와 관련된 제4 데이터를 리드하고, 공격 감지 회로는 제3 및 제4 데이터를 제공받아, 제3 및 제4 데이터에 기초하여 제1 및 제2 비휘발성 메모리의 공격 여부를 결정한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 시스템은 호스트와 메모리 장치를 포함하는 메모리 시스템으로서, 메모리 장치는 제1 및 제2 비휘발성 메모리를 포함하고, 메모리 장치는 호스트로부터 수신한 데이터의 리드(read) 요청에 따라, 제1 비휘발성 메모리의 제1 물리 어드레스에 저장된 제1 데이터와, 제2 비휘발성 메모리의 제2 물리 어드레스에 저장된 제2 데이터를 비교하고, 제1 데이터와 제2 데이터의 비교 결과에 기초하여, 제1 및 제2 비휘발성 메모리의 공격 여부를 결정하되, 제1 물리 어드레스와 제2 물리 어드레스는 서로 다르다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 예시적인 도면이다.
도 2는 몇몇 실시예에 따른 메모리 장치를 설명하기 위한 예시적인 도면이다.
도 3은 몇몇 실시예에 따른 프로세서를 설명하기 위한 예시적인 도면이다.
도 4 및 도 5는 몇몇 실시예에 따른 어드레스 생성기를 설명하기 위한 예시적인 도면이다.
도 6은 몇몇 실시예에 따른 공격 감지 회로를 설명하기 위한 예시적인 도면이다.
도 7 및 도 8은 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 라이트 동작을 설명하기 위한 예시적인 도면이다.
도 9 내지 도 12는 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 리드 동작을 설명하기 위한 예시적인 도면이다.
도 13은 몇몇 실시예에 따른 메모리 장치를 설명하기 위한 예시적인 도면이다.
도 14는 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 라이트 동작을 설명하기 위한 예시적인 도면이다.
도 15는 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 리드 동작을 설명하기 위한 예시적인 도면이다.
도 1은 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 예시적인 도면이다.
도 1을 참조하면, 몇몇 실시예에 따른 메모리 시스템은 호스트(200) 및 메모리 장치(100)를 포함할 수 있다. 몇몇 실시예에 따른 메모리 시스템은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), SAN(storage area network), NAS(network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
상기 모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(MID: mobile internet device), 웨어러블 컴퓨터, 사물 인터넷(IoT: internet of things) 장치, 만물 인터넷(IoE: internet of everything) 장치, 드론(drone), 신용 카드 시스템(credit card system), RFID 장치 또는 e-북 (e-book) 등으로 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
호스트(200)는 메모리 장치(100)와 연결될 수 있다. 호스트(200)는 메모리 장치(100)에 데이터 처리를 요청할 수 있다. 예를 들어, 호스트(200)는 메모리 장치(100)에 데이터의 리드(read), 라이트(write), 이레이즈(erase), 또는 업데이트(update) 동작 등을 요청할 수 있다. 메모리 장치(100)는 호스트(200)의 요청에 대응하는 동작을 수행할 수 있으며, 호스트(200)와 메모리 장치(100) 사이에서 데이터가 교환될 수 있다. 예를 들어, 메모리 장치(100)에 데이터 라이트가 필요한 경우, 호스트(200)는 데이터 라이트 요청과 함께, 라이트될 데이터 및 라이트될 데이터와 관련된 식별자를 메모리 장치(100)에 제공할 수 있다. 메모리 장치(100)는 식별자를 기초로 데이터가 라이트될 위치를 결정하여, 해당 위치에 데이터를 저장할 수 있다. 다른 예를 들어, 메모리 장치(100)에 저장된 데이터의 리드가 필요한 경우, 호스트(200)는 데이터 리드 요청과 함께, 리드될 데이터와 관련된 식별자를 메모리 장치(100)에 제공할 수 있다. 메모리 장치(100)는 수신한 식별자를 기초로, 리드될 데이터가 저장된 위치를 결정하고, 해당 위치에서 데이터를 리드하여 호스트(200)에 제공함으로써, 호스트(200)의 데이터 리드 요청에 대해 응답할 수 있다. 메모리 장치(100)에 대한 구체적인 설명을 위해, 도 2를 참조한다.
도 2는 몇몇 실시예에 따른 메모리 장치를 설명하기 위한 예시적인 도면이다.
도 2를 참조하면, 몇몇 실시예에 따른 메모리 장치(100)는 호스트 인터페이스(110), 프로세서(120), 버퍼 메모리(130), 어드레스 생성기(140), 비휘발성 메모리 컨트롤러(150), 제1 비휘발성 메모리(160_1), 제2 비휘발성 메모리(160_2) 및 공격 감지 회로(170)를 포함할 수 있다.
호스트 인터페이스(110)는 호스트(200)와 메모리 장치(100) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예를 들어, 호스트 인터페이스(110)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, NVMe(non volatile memory express) 프로토콜, 및 IDE (Integrated Drive Electronics) 프로토콜과 RFID 프로토콜 등과 같은 무선 프로토콜 중 적어도 하나를 통해 호스트(200)와 통신할 수 있다. 그러나, 실시예들이 이에 제한되지는 않고, 호스트 인터페이스(110)는 상술한 프로토콜 외 다양한 프로토콜을 이용하여 호스트(200)와 통신할 수 있다. 다시 말해서, 호스트 인터페이스(110)는 호스트(200)와 메모리 장치(100) 사이의 데이터, 요청 또는 응답이 교환되는 통로로서의 기능을 수행할 수 있다.
프로세서(120)는 메모리 장치(100)를 제어하기 위한 프로그램 코드를 실행할 수 있다. 예를 들어, 프로세서(120)는 호스트(200)로부터의 요청에 따라 데이터 라이트 동작 또는 데이터 리드 동작을 수행하기 위한 프로그램 코드를 실행할 수 있다.
몇몇 실시예에 따른 프로세서(120)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), AP(Application Processor) 및 MPU(Micro Processor Unit) 등을 포함할 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 프로세서(120)에 대한 추가적인 설명을 위해, 도 3을 참조한다.
도 3은 몇몇 실시예에 따른 프로세서를 설명하기 위한 예시적인 도면이다.
도 3을 참조하면, 프로세서(120)는 식별자 변환 모듈(122), 데이터 보호 모듈(124) 및 명령 제어 모듈(126)을 포함할 수 있다.
식별자 변환 모듈(122)은 호스트(200)에서 수신한 식별자(identifier)를 이용하여, 제1 논리 어드레스(LA, Logical Address)를 생성할 수 있다. 몇몇 실시예에 따르면, 식별자가 논리 어드레스 정보를 포함하고 있는 경우, 식별자 변환 모듈(122)은 식별자에 포함된 논리 어드레스 정보를 제1 논리 어드레스(LA)로 출력할 수 있다. 다른 몇몇 실시예에 따르면, 식별자가 논리 어드레스 정보를 포함하지 않는 경우, 식별자 변환 모듈(122)은 해당 식별자에 대응하는, 미리 정한 논리 어드레스를 제1 논리 어드레스(LA)로 출력할 수 있다.
예를 들어, 호스트(200)에서 수신한 식별자가 논리 어드레스 "0001"을 포함하고 있는 경우, 식별자 변환 모듈(122)은 제1 논리 어드레스(LA)로 "0001"을 출력할 수 있다. 다른 예를 들어, 호스트(200)에서 수신한 식별자가 "password"를 의미하는 경우, 식별자 변환 모듈(122)은 "password"에 대응하고, 미리 정한 논리 어드레스인 "0010"을 제1 논리 어드레스(LA)로 출력할 수 있다. 비록, 논리 어드레스가 4비트 데이터인 것으로 설명하였으나, 이는 예시적인 설명일 뿐 실시예들이 이에 제한되지는 않는다. 논리 어드레스는 16 비트, 64 비트, 256 비트 등 다양한 크기로 구현될 수 있다.
데이터 보호 모듈(124)은 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)의 데이터 보호 동작을 수행할 수 있다. 몇몇 실시예에 따르면, 공격 감지 회로(170)에서 공격 감지 신호(ADS)가 생성되면, 데이터 보호 모듈(124)은 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)의 데이터 보호 동작을 수행할 수 있다. 데이터 보호 모듈(124)의 데이터 보호 동작은 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)에 각각 저장된 제1 데이터(Data_1) 및 제2 데이터(Data_2)를 삭제함으로써 데이터의 외부 유출을 방지하거나, 호스트(200)로부터의 데이터 리드 요청에 대해 응답하지 않음으로써 데이터의 외부 유출을 방지하는 것을 포함할 수 있다.
명령 제어 모듈(126)은 외부로부터의 요청에 대응하여, 비휘발성 메모리 컨트롤러(150)에 데이터 처리 명령을 제공할 수 있다. 예를 들어, 명령 제어 모듈(126)은 호스트(200)로부터의 데이터 라이트 요청에 대응하여, 비휘발성 메모리 컨트롤러(150)에 데이터 라이트 명령을 제공할 수 있다. 다른 예를 들어, 명령 제어 모듈(126)은 호스트(200)로부터의 데이터 리드 요청에 대응하여, 비휘발성 메모리 컨트롤러(150)에 데이터 리드 명령을 제공할 수 있다. 그러나, 실시예들이 상술한 동작들에 제한되는 것은 아니고, 명령 제어 모듈(126)은 다양한 동작(예컨대, 백그라운드 동작, 이레이즈 동작 등)을 수행하기 위한 명령을 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다.
다시 도 2를 참조하면, 버퍼 메모리(130)는 데이터를 임시로 저장하는 메모리일 수 있다. 예를 들어, 호스트(200)로부터의 데이터 라이트 요청에 대응하여, 프로세서(120)는 호스트(200)에서 수신한 데이터를 임시로 버퍼 메모리(130)에 저장할 수 있다. 다른 예를 들어, 호스트(200)로부터의 데이터 리드 요청에 대응하여, 프로세서(120)는 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)에서 리드한 데이터를 임시로 버퍼 메모리(130)에 저장할 수 있다. 몇몇 실시예에 따른 버퍼 메모리(130)는 정적 램(SRAM: Static Random Access Memory), 빠른 정적 램(Fast-SRAM), 및/또는 동적 램(DRAM: Dynamic RAM) 등으로 구현될 수 있으나, 실시예들이 이에 제한되지는 않는다. 몇몇 도면에서는, 버퍼 메모리(130)가 독립적인 구성요소로 구현되는 것으로 도시하나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 버퍼 메모리(130)는 프로세서(120) 내에도 포함될 수 있고, 비휘발성 메모리 컨트롤러(150) 내에도 포함될 수 있다.
어드레스 생성기(140)는 프로세서(120)가 생성한 제1 논리 어드레스(LA)를 이용하여, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 생성할 수 있다. 이하에서는, 설명의 편의를 위해, 제1 비휘발성 메모리(160_1)의 물리 어드레스를 제1 물리 어드레스(PA_1)로, 제2 비휘발성 메모리(160_2)의 물리 어드레스를 제2 물리 어드레스(PA_2)로 정의한다. 제1 물리 어드레스(PA_1)의 물리적 위치와 제2 물리 어드레스(PA_2)의 물리적 위치는 서로 다르다. 다시 말해서, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 서로 다른 물리 어드레스이다. 어드레스 생성기(140)에 대한 예시적인 설명을 위해, 도 4 및 도 5를 참조한다.
도 4 및 도 5는 몇몇 실시예에 따른 어드레스 생성기를 설명하기 위한 예시적인 도면이다.
먼저 도 4를 참조하면, 몇몇 실시예에 따른 어드레스 생성기(140)는 제1 룩업 테이블(141)과 제2 룩업 테이블(142)을 포함할 수 있다. 제1 룩업 테이블(141)은 제1 비휘발성 메모리(160_1)와 관련될 수 있다. 다시 말해서, 제1 룩업 테이블(141)은 제1 논리 어드레스(LA)와, 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1) 사이의 대응 관계를 포함할 수 있다. 이와 유사하게, 제2 룩업 테이블(142)은 제2 비휘발성 메모리(160_2)와 관련될 수 있다. 다시 말해서, 제2 룩업 테이블(142)은 제1 논리 어드레스(LA)와, 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2) 사이의 대응 관계를 포함할 수 있다.
몇몇 실시예에 따르면, 제1 논리 어드레스(LA)와 제1 물리 어드레스(PA_1), 및 제1 논리 어드레스(LA)와 제2 물리 어드레스(PA_2)는 랜덤하게 매칭될 수 있다. 예를 들어, 어드레스 생성기(140)는 난수를 발생하여, 제1 물리 어드레스(PA_1) 및 제2 물리 어드레스(PA_2)를 생성하고, 이를 제1 논리 어드레스(LA)와 각각 매칭시켜, 제1 룩업 테이블(141) 및 제2 룩업 테이블(142)을 생성할 수 있다.
몇몇 실시예에 따르면, 프로세서(120)는 수신한 식별자를 제1 논리 어드레스(LA)로 변환하여, 어드레스 생성기(140)에 제공할 수 있다. 어드레스 생성기(140)는 수신한 제1 논리 어드레스(LA)와, 제1 룩업 테이블(141) 및 제2 룩업 테이블(142)을 이용하여 제1 물리 어드레스(PA_1) 및 제2 물리 어드레스(PA_2)를 생성할 수 있다. 예를 들어, 어드레스 생성기(140)는 프로세서(120)로부터 제1 논리 어드레스(LA)인 LA#0을 수신하면, 제1 룩업 테이블(141)을 참조하여, 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)를 PA#35로 결정할 수 있다. 또한, 어드레스 생성기(140)는 프로세서(120)로부터 제1 논리 어드레스(LA)인 LA#0을 수신하면, 제2 룩업 테이블(142)을 참조하여, 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)를 PA#5로 결정할 수 있다. 다만, 이러한 설명은 예시적인 것일 뿐이며, 실시예들이 이에 제한되지 않음은 물론이다. 상기 예시에서 확인 수 있는 바와 같이, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 서로 다른 어드레스이다.
도 5를 참조하면, 몇몇 실시예에 따른 어드레스 생성기(140)는 제1 어드레스 연산기(143)와 제2 어드레스 연산기(144)를 포함할 수 있다. 제1 어드레스 연산기(143)는 제1 논리 어드레스(LA)와 미리 정한 제1 물리 어드레스 생성 코드(PAC_1)를 제공받을 수 있다. 이와 유사하게, 제2 어드레스 연산기(144)는 제1 논리 어드레스(LA)와 미리 정한 제2 물리 어드레스 생성 코드(PAC_2)를 제공받을 수 있다. 제1 물리 어드레스 생성 코드(PAC_1)와 제2 물리 어드레스 생성 코드(PAC_2)는 서로 다를 수 있다.
예를 들어, 어드레스 생성기(140)가 프로세서(120)로부터 "1111"인 제1 논리 어드레스(LA)를 수신한 경우를 가정하여 설명한다. 이때, 제1 물리 어드레스 생성 코드(PAC_1)는 "0010"인 것으로 가정하고, 제2 물리 어드레스 생성 코드(PAC_2)는 "0011"인 것으로 가정하여 설명한다. 또한, 제1 어드레스 연산기(143)와 제2 어드레스 연산기(144)는 XOR 연산기인 것을 가정하여 설명한다. 이러한 예시는 설명의 편의를 위한 것이며, 본 발명의 기술 분야에서 통상의 지식을 가진 자는 다양한 방법으로 이를 구현할 수 있을 것이다.
제1 논리 어드레스(LA)인 "1111"은 제1 어드레스 연산기(143)에 입력될 수 있다. 이때, 제1 어드레스 연산기(143)는 "1111"과, 미리 정한 제1 물리 어드레스 생성 코드(PAC_1)인 "0010"을 XOR 연산한다. 제1 어드레스 연산기(143)의 출력은 "1101"일 수 있다. 다시 말해서, 어드레스 생성기(140)가 생성한 제1 물리 어드레스(PA_1)는 "1101"일 수 있다. 이와 유사하게, 제1 논리 어드레스(LA)인 "1111"은 제2 어드레스 연산기(144)에도 입력될 수 있다. 이때, 제2 어드레스 연산기(144)는 "1111"과, 미리 정한 제2 물리 어드레스 생성 코드(PAC_2)인 "0011"을 XOR 연산한다. 제2 어드레스 연산기의 출력은 "1100"일 수 있다. 다시 말해서, 어드레스 생성기(140)가 생성한 제2 물리 어드레스(PA_2)는 "1100"일 수 있다. 즉, 상술한 바와 같이, 어드레스 생성기(140)가 생성한 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 서로 다를 수 있다.
다시 도 2를 참조하면, 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)와, 호스트 인터페이스(110), 프로세서(120), 버퍼 메모리(130) 및 어드레스 생성기(140)와의 인터페이스를 제공하도록 구성될 수 있다. 또한, 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다. 예를 들어, 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)에 칩 인에이블 신호, 라이트 인에이블 신호 및 리드 인에이블 신호 등을 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 프로세서(120)로부터의 다양한 명령(예를 들어, 라이트 명령, 리드 명령 등)에 따라, 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리에 대한 데이터의 입출력을 제어할 수 있다. 비록 도면에는, 프로세서(120)와 비휘발성 메모리 컨트롤러(150)가 서로 구분되도록 도시하였으나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 다른 몇몇 실시예에서, 비휘발성 메모리 컨트롤러(150)는 생략되고, 프로세서(120)가 상술한 비휘발성 메모리 컨트롤러(150)의 동작들을 수행할 수도 있다.
제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에는 제1 데이터(Data_1)가 저장되어 있을 수 있다. 또한, 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에는 제2 데이터(Data_2)가 저장되어 있을 수 있다. 제1 데이터(Data_1)와 제2 데이터(Data_2)는 비휘발성 메모리 컨트롤러(150)의 제어에 따라, 공격 감지 회로(170)에 제공될 수 있다.
제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)는 서로 동일한 종류의 비휘발성 메모리일 수도 있고, 서로 다른 종류의 비휘발성 메모리일 수도 있다. 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)는 플래시 메모리(Flash Memory), 저항성 램(RRAM), 상변화 메모리(PRAM), 자기저항 메모리(MRAM), 강유전체 메모리(FRAM), 스핀주입 자화반전 메모리(Spin STT-RAM) 등을 포함할 수 있으나, 실시예들이 이러한 예시들에 제한되는 것은 아니다.
몇몇 도면에서는, 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)가 서로 분리된 것으로 도시하였으나, 실시예들이 이에 제한되는 것은 아니다. 몇몇 실시예에 따르면, 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)는 동일한 메모리의 서로 다른 영역을 의미할 수 있다. 예를 들어, 제1 비휘발성 메모리(160_1)는 플래시 메모리의 싱글 레벨 셀(SLC: Single Level Cell) 영역이고, 제2 비휘발성 메모리(160_2)는 동일한 플래시 메모리의 멀티 레벨 셀(MLC: Multi Level Cell) 영역일 수 있다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 다양한 방법 및 정책을 통해 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)를 적절하게 구현할 수 있을 것이다.
또한, 몇몇 실시예에 따른 메모리 장치(100)는 두개의 비휘발성 메모리를 포함하는 것으로 도시하였으나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 몇몇 실시예에 따른 메모리 장치(100)는 셋 이상의 비휘발성 메모리를 포함할 수 있다.
비록 도면에 도시하지는 않았으나, 몇몇 실시예에 따른 비휘발성 메모리 컨트롤러(150), 제1 비휘발성 메모리(160_1) 및/또는 제2 비휘발성 메모리(160_2)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline Integrated Circuit(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
비휘발성 메모리 컨트롤러(150), 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)는 하나의 반도체 장치로 집적될 수 있다. 예를 들어, 비휘발성 메모리 컨트롤러(150), 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 비휘발성 메모리 컨트롤러(150), 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 스마트 카드(smart card), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
공격 감지 회로(170)는 제1 비휘발성 메모리(160_1)에서 수신한 제1 데이터(Data_1)와, 제2 비휘발성 메모리(160_2)에서 수신한 제2 데이터(Data_2)를 이용하여, 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)의 공격 여부를 감지할 수 있다. 감지 결과에 따라, 공격 감지 회로(170)는 공격 감지 신호(ADS: Attack Detecting Signal) 및 공격 비감지 신호(ANDS: Attack Non-Detecting Signal) 중 어느 하나를 생성할 수 있다. 예시적 설명을 위해, 도 6을 참조한다.
도 6은 몇몇 실시예에 따른 공격 감지 회로를 설명하기 위한 예시적인 도면이다.
도 6을 참조하면, 공격 감지 회로(170)는 비교기(171)를 포함할 수 있다. 제1 비휘발성 메모리(160_1)는 제1 물리 어드레스(PA_1)에 저장된 제1 데이터(Data_1)를 공격 감지 회로(170)의 비교기(171)에 제공할 수 있다. 마찬가지로, 제2 비휘발성 메모리(160_2)는 제2 물리 어드레스(PA_2)에 저장된 제2 데이터(Data_2)를 공격 감지 회로(170)의 비교기(171)에 제공할 수 있다.
비교기(171)는 수신한 제1 데이터(Data_1)와 제2 데이터(Data_2)를 비교하고, 이를 기초로 공격 감지 신호(ADS) 및 공격 비감지 신호(ANDS) 중 어느 하나를 생성할 수 있다. 몇몇 실시예에 따르면, 비교기(171)는 제1 데이터(Data_1)와 제2 데이터(Data_2)가 서로 다른 경우, 공격 감지 신호(ADS)를 생성할 수 있다. 반면, 비교기(171)는 제1 데이터(Data_1)와 제2 데이터(Data_2)가 서로 동일한 경우, 공격 비감지 신호(ANDS)를 생성할 수 있다. 비교기(171)는 예를 들어, XOR 연산기 또는 XNOR 연산기 등을 이용하여 구현될 수 있으나, 실시예들이 이에 제한되지는 않는다. 즉, 몇몇 실시예에 따른 공격 감지 회로(170)는 제1 비휘발성 메모리(160_1)에서 수신한 제1 데이터(Data_1)와 제2 비휘발성 메모리(160_2)에서 수신한 제2 데이터(Data_2)를 이용하여, 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)의 공격 여부를 결정할 수 있다.
다시 도 2를 참조하면, 공격 감지 회로(170)는 공격 감지 신호(ADS) 및 공격 비감지 신호(ANDS) 중 어느 하나를 생성하여, 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 공격 감지 회로(170)에서 수신한 신호에 기초하여, 데이터를 출력하거나, 프로세서(120)에 공격 감지 알람을 전달할 수 있다. 프로세서(120)는 공격 감지 알람을 수신하면, 데이터 보호 동작을 수행할 수 있다.
몇몇 실시예에 따른 메모리 장치(100)는 보안 기능이 향상된 메모리 장치일 수 있다. 예를 들어, 메모리 장치(100)는 제1 비휘발성 메모리(160_1) 및 제2 비휘발성 메모리(160_2)가 보안 기능이 매우 중요한 스마트 카드(smart card)로 구현된 신용 카드일 수 있다. 그러나, 실시예들이 이에 제한되지는 않으며, 몇몇 실시예에 따른 메모리 장치(100)는 보안 기능이 중요하다고 판단되는 메인 서버 등에 이용될 수 있다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는, 다양한 분야에서, 보안 기능을 향상시키기 위해, 몇몇 실시예에 따라 설명되는 메모리 장치(100)를 구현하여, 그 목적을 달성할 수 있다.
몇몇 실시예에 따른 메모리 장치(100)는 호스트 인터페이스(110), 프로세서(120), 버퍼 메모리(130), 어드레스 생성기(140) 및 비휘발성 메모리 컨트롤러(150)가 버스(bus)를 통해 상호 연결되는 것으로 도시하였으나, 이는 예시적인 설명을 위한 것일 뿐이며, 구성요소 간의 연결 관계가 이러한 예시에 제한되는 것은 아니다. 예를 들어, 프로세서(120)와 어드레스 생성기(140)가 직접 연결되거나, 공격 감지 회로(170)와 프로세서(120)가 직접 연결될 수 있음은 물론이다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 필요에 따라, 연결 관계를 변경함으로써 본 발명의 몇몇 실시예들을 구현할 수 있을 것이다. 이하에서, 도 7 내지 도 12를 이용하여 몇몇 실시예에 따른 메모리 시스템, 및 메모리 장치의 구체적 동작에 대해 설명한다.
도 7 및 도 8은 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 라이트 동작을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 앞서 설명한 내용과 동일하거나 유사한 내용은 생략하거나 간단히 설명한다.
도 7 및 도 8을 참조하면, 프로세서(120)는 호스트(200)로부터 데이터 라이트 요청(Write Request), 라이트될 데이터(Data) 및 상기 라이트될 데이터와 관련된 식별자(Identifier)를 수신할 수 있다(S710). 전술한 바와 같이, 식별자는 논리 어드레스를 포함할 수도 있고, 포함하지 않을 수도 있다.
프로세서(120)는 수신한 식별자를 제1 논리 어드레스(LA)로 변환할 수 있다(S720). 예를 들어, 프로세서(120)의 식별자 변환 모듈(122)은 호스트(200)에서 수신한 식별자를 기초로, 제1 논리 어드레스(LA)를 생성할 수 있다. 프로세서(120)가 생성한 제1 논리 어드레스(LA)는 어드레스 생성기(140)에 제공될 수 있다.
어드레스 생성기(140)는 수신한 제1 논리 어드레스(LA)를 이용하여, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 생성할 수 있다(S730).
예를 들어, 어드레스 생성기(140)가 제1 룩업 테이블(141)과 제2 룩업 테이블(142)을 이용하는 경우, 어드레스 생성기(140)는 난수를 발생시켜, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 생성할 수 있다. 이어서, 어드레스 생성기(140)는 수신한 제1 논리 어드레스(LA)와 생성된 제1 물리 어드레스(PA_1)를 매칭시켜, 제1 룩업 테이블(141)을 생성할 수 있다. 마찬가지로, 어드레스 생성기(140)는 수신한 제1 논리 어드레스(LA)와 생성된 제2 물리 어드레스(PA_2)를 매칭시켜, 제2 룩업 테이블(142)을 생성할 수 있다.
예를 들어, 어드레스 생성기(140)가 제1 물리 어드레스 생성 코드(PAC_1)와 제2 물리 어드레스 생성 코드(PAC_2)를 이용하는 경우, 어드레스 생성기(140)는 제1 논리 어드레스(LA)와 제1 물리 어드레스 생성 코드(PAC_1)를 제1 어드레스 연산기(143)에 제공하여, 제1 물리 어드레스(PA_1)를 생성할 수 있다. 마찬가지로, 어드레스 생성기(140)는 제1 논리 어드레스(LA)와 제2 물리 어드레스 생성 코드(PAC_2)를 제2 어드레스 연산기(144)에 제공하여, 제2 물리 어드레스(PA_2)를 생성할 수 있다. 전술한 바와 같이, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 물리적으로 서로 다른 위치를 갖는다.
몇몇 실시예에 따르면, 어드레스 생성기(140)가 생성한 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 다시 프로세서(120)에 제공될 수 있다. 그러나, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)가 프로세서(120)에 제공되지 않고, 비휘발성 메모리 컨트롤러(150)에 제공될 수도 있다.
프로세서(120)는 라이트 명령(Write CMD)과 함께, 라이트될 데이터(Data), 제1 물리 어드레스(PA_1) 및 제2 물리 어드레스(PA_2)를 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 라이트될 데이터(Data)를 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에 제1 데이터(Data_1)로 저장할 수 있다. 또한, 비휘발성 메모리 컨트롤러(150)는 라이트될 데이터(Data)를 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에 제2 데이터(Data_2)로 저장할 수 있다(S740).
몇몇 실시예에 따르면, 라이트될 데이터(Data)가 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)에 각각 제1 데이터(Data_1)와 제2 데이터(Data_2)로 저장되기 때문에, 원칙적으로 제1 데이터(Data_1)와 제2 데이터(Data_2)는 서로 동일할 수 있다. 즉, 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에 저장된 제1 데이터(Data_1)는 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에 저장된 제2 데이터(Data_2)와 원칙적으로 동일할 수 있다. 다시 말해서, 몇몇 실시예에 따르면, 동일한 내용의 데이터가 비휘발성 메모리의 서로 다른 물리 어드레스에 각각 저장될 수 있다.
도 9 내지 도 12는 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 리드 동작을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 앞서 설명한 내용과 동일하거나 유사한 내용은 생략하거나 간단히 설명한다.
도 9 내지 도 12를 참조하면, 프로세서(120)는 호스트(200)로부터 데이터 리드 요청(Read Request) 및 리드될 데이터와 관련된 식별자(Identifier)를 수신할 수 있다(S910).
프로세서(120)는 수신한 식별자(Identifier)를 제1 논리 어드레스(LA)로 변환할 수 있다(S920). 예를 들어, 프로세서(120)의 식별자 변환 모듈(122)은 호스트(200)에서 수신한 식별자(Identifier)를 기초로, 제1 논리 어드레스(LA)를 생성할 수 있다. 프로세서(120)가 생성한 제1 논리 어드레스(LA)는 어드레스 생성기(140)에 제공될 수 있다.
어드레스 생성기(140)는 수신한 제1 논리 어드레스(LA)를 이용하여, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 생성할 수 있다(S930).
예를 들어, 어드레스 생성기(140)가 제1 룩업 테이블(141)과 제2 룩업 테이블(142)을 이용하는 경우, 어드레스 생성기(140)는 제1 룩업 테이블(141)과 제2 룩업 테이블(142)을 참조하여, 제1 논리 어드레스(LA)와 매칭되는 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 생성할 수 있다.
예를 들어, 어드레스 생성기(140)가 제1 물리 어드레스 생성 코드(PAC_1) 및 제2 물리 어드레스 생성 코드(PAC_2)를 이용하는 경우, 어드레스 생성기(140)는 제1 논리 어드레스(LA)와 제1 물리 어드레스 생성 코드(PAC_1)를 제1 어드레스 연산기(143)에 제공하여, 제1 물리 어드레스(PA_1)를 생성할 수 있다. 마찬가지로, 어드레스 생성기(140)는 제1 논리 어드레스(LA)와 제2 물리 어드레스 생성 코드(PAC_2)를 제2 어드레스 연산기(144)에 제공하여, 제2 물리 어드레스(PA_2)를 생성할 수 있다. 전술한 바와 같이, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 물리적으로 서로 다른 위치를 갖는다.
몇몇 실시예에 따르면, 어드레스 생성기(140)가 생성한 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 다시 프로세서(120)에 제공될 수 있다. 그러나, 실시예들이 이에 제한되지는 않고, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 프로세서(120)를 거치지 않고 바로 비휘발성 메모리 컨트롤러(150)에 제공될 수도 있다.
프로세서(120)는 리드 명령(Read CMD)과 함께, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에 액세스하여, 제1 데이터(Data_1)를 리드할 수 있다. 마찬가지로, 비휘발성 메모리 컨트롤러(150)는 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에 액세스하여, 제2 데이터(Data_2)를 리드할 수 있다.
리드된 제1 데이터(Data_1)와 제2 데이터(Data_2)는 공격 감지 회로(170)에 제공될 수 있다. 공격 감지 회로(170)는 제공받은 제1 데이터(Data_1)와 제2 데이터(Data_2)를 비교할 수 있다(S940).
공격 감지 회로(170)가 제공받은 제1 데이터(Data_1)와 제2 데이터(Data_2)가 서로 다른 경우(S950, N), 공격 감지 회로(170)는 공격 감지 신호(ADS)를 생성할 수 있다(S960). 공격 감지 회로(170)는 생성된 공격 감지 신호(ADS)를 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 그러나, 실시예들이 이에 제한되는 것은 아니고, 예를 들어, 공격 감지 신호(ADS)는 프로세서(120)에 직접 제공될 수도 있다. 비휘발성 메모리 컨트롤러(150)는 공격 감지 신호(ADS)를 수신하는 경우, 공격 감지 알람(attack detecting alarm)을 생성하여 프로세서(120)에 제공할 수 있다. 프로세서(120)는 공격 감지 알람을 수신하면, 데이터 보호 동작을 수행할 수 있다. 다시 말해서, 공격 감지 회로(170)에서 공격 감지 신호(ADS)가 생성되는 경우, 프로세서(120)는 데이터 보호 동작을 수행할 수 있다.
몇몇 실시예에 따른 데이터 보호 동작은, 제1 비휘발성 메모리(160_1)에 저장된 제1 데이터(Data_1)와 제2 비휘발성 메모리(160_2)에 저장된 제2 데이터(Data_2)가 외부로 유출되는 것을 방지하는 동작일 수 있다. 예를 들어, 데이터 보호 동작은 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에 저장된 제1 데이터(Data_1)와, 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에 저장된 제2 데이터(Data_2)를 삭제하는 것을 포함할 수 있다. 다른 예를 들어, 데이터 보호 동작은 프로세서(120)가 호스트(200)로부터의 데이터 리드 요청(Read Request)에 대해 응답하지 않는 것을 포함할 수 있다.
공격 감지 회로(170)가 제공받은 제1 데이터(Data_1)와 제2 데이터(Data_2)가 서로 동일한 경우(S950, Y), 공격 감지 회로(170)는 공격 비감지 신호(ANDS)를 생성할 수 있다(S980). 생성된 공격 비감지 신호(ANDS)는 비휘발성 메모리 컨트롤러(150)에 제공되고, 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1) 및 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2) 중 어느 하나에 액세스하여, 제1 데이터(Data_1) 및 제2 데이터(Data_2) 중 어느 하나를 출력할 수 있다. 다시 말해서, 공격 감지 회로(170)가 공격 비감지 신호(ANDS)를 생성하면, 제1 데이터(Data_1) 및 제2 데이터(Data_2) 중 어느 하나가 프로세서(120)에 제공될 수 있다(S990).
공격 비감지 신호(ANDS)가 생성된 경우, 비휘발성 메모리 컨트롤러(150)는 제1 데이터(Data_1)와 제2 데이터(Data_2)중 어느 데이터를 프로세서(120)에 제공할 것인지는 다양한 상황 및 정책에 따라 결정될 수 있다. 예를 들어, 제1 비휘발성 메모리(160_1)가 제2 비휘발성 메모리(160_2)에 비해 응답 속도가 빠른 경우, 비휘발성 메모리 컨트롤러(150)는 공격 비감지 신호(ANDS)를 수신하면, 제1 데이터(Data_1)를 프로세서(120)에 제공할 수 있다. 다른 예를 들어, 제1 비휘발성 메모리(160_1)는 플래시 메모리의 싱글 레벨 셀 영역이고, 제2 비휘발성 메모리(160_2)는 플래시 메모리의 멀티 레벨 셀 영역인 경우, 비휘발성 메모리 컨트롤러(150)는 공격 비감지 신호(ANDS)를 수신하면, 제1 데이터(Data_1)를 프로세서(120)에 제공할 수 있다. 그러나, 이러한 설명은 단순히 예시적인 설명이며, 실시예들이 이에 제한되는 것은 아니다.
공격자는 원하는 데이터를 획득하거나, 프로그램 코드를 변경시키기 위해, 제1 비휘발성 메모리(160_1) 및/또는 제2 비휘발성 메모리(160_2)에 물리적인 공격을 가할 수 있다. 예를 들어, 공격자는 제1 비휘발성 메모리(160_1) 및/또는 제2 비휘발성 메모리(160_2)에 레이저 광을 조사할 수 있다. 제1 비휘발성 메모리(160_1) 및/또는 제2 비휘발성 메모리(160_2)에 물리적인 공격이 가해지면, 제1 비휘발성 메모리(160_1) 및/또는 제2 비휘발성 메모리(160_2)에 저장된 제1 데이터(Data_1) 및/또는 제2 데이터(Data_2)가 일부 변경될 수 있다. 예를 들어, 제1 데이터(Data_1)가 "암호화된 패스워드"인 경우, 제1 비휘발성 메모리(160_1)의 물리적 공격에 의해, 제1 데이터(Data_1)는 "암호화되지 않은 패스워드"로 변경될 수 있다. 다른 예를 들어, 제1 데이터(Data_1)가 "외부적 접속이 발견되는 경우, 접속을 차단"하는 프로그램 코드인 경우, 제1 비휘발성 메모리(160_1)의 물리적 공격에 의해, 제1 데이터(Data_1)는 "외부적 접속이 발견되는 경우, 데이터를 제공"하는 프로그램 코드로 변경될 수 있다.
몇몇 실시예에 따르면, 동일한 데이터(예컨대, 전술한 라이트될 데이터(Data))가 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)와, 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에 각각 저장된다. 따라서, 공격자가 원하는 데이터를 얻거나, 프로그램 코드를 변경시키기 위해, 제1 비휘발성 메모리(160_1)를 공격하더라도, 제2 비휘발성 메모리(160_2)에는 공격이 가해지지 않을 수 있다. 따라서, 공격자의 공격에 의해, 제1 데이터(Data_1)가 변경되었더라도, 제2 데이터(Data_2)는 변경되지 않아, 공격 감지 신호(ADS)가 발생되므로 데이터의 유출 또는 프로그램 코드의 변경이 방지될 수 있다.
공격자가 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)를 동시에 공격하는 경우를 가정한다. 몇몇 실시예에 따르면, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)가 서로 다르기 때문에, 제1 데이터(Data_1)와 제2 데이터(Data_2) 중 어느 하나만 공격에 의해 영향을 받을 수 있다. 결국, 제1 데이터(Data_1)와 제2 데이터(Data_2) 중 어느 하나만 변경되기 때문에(즉, 프로세서(120)는 데이터 보호 동작을 수행하기 때문에), 공격자는 원하는 데이터를 얻거나, 프로그램 코드를 변경시킬 수 없다.
공격 형태에 따라(예컨대, 레이저 광의 크기에 따라), 제1 데이터(Data_1)와 제2 데이터(Data_2) 모두 공격에 의한 영향을 받는 경우도 있을 수 있다. 다만, 이 경우에도, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)가 서로 달라, 제1 데이터(Data_1)와 제2 데이터(Data_2) 각각은 공격에 의해 서로 다른 영향을 받을 수 있다. 예를 들어, 제1 데이터(Data_1)는 공격에 의해 전부 변경되고, 제2 데이터(Data_2)는 공격에 의해 일부만 변경될 수 있다. 따라서, 제1 데이터(Data_1)와 제2 데이터(Data_2)가 모두 변경되는 경우에도, 제1 데이터(Data_1)와 제2 데이터(Data_2)는 서로 달라, 공격 감지 신호(ADS)가 발생되고, 결국 공격자는 원하는 데이터를 얻거나, 프로그램 코드를 변경시킬 수 없다. 즉, 공격자가 제1 비휘발성 메모리(160_1)와 제2 비휘발성 메모리(160_2)를 동시에 공격하더라도, 여전히 데이터의 유출 또는 프로그램 코드의 변경이 방지될 수 있다.
도 13은 몇몇 실시예에 따른 메모리 장치를 설명하기 위한 예시적인 도면이다. 도 14는 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 라이트 동작을 설명하기 위한 예시적인 도면이다. 도 15는 몇몇 실시예에 따른 메모리 시스템 및 메모리 장치의 리드 동작을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 앞서 설명한 내용과 유사하거나 중복되는 내용은 생략하거나 간단히 설명한다.
도 1 및 도 13을 참조하면, 몇몇 실시예에 따른 메모리 장치(100)는 호스트 인터페이스(110), 프로세서(120), 버퍼 메모리(130), 어드레스 생성기(140), 비휘발성 메모리 컨트롤러(150), 제1 비휘발성 메모리(160_1), 제2 비휘발성 메모리(160_2), 공격 감지 회로(170), 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)를 포함할 수 있다.
제1 에러 정정 회로(180_1)는 제1 비휘발성 메모리(160_1)와 연결되고, 제2 에러 정정 회로(180_2)는 제2 비휘발성 메모리(160_2)와 연결될 수 있다. 비록 도면에는 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)가 비휘발성 메모리 컨트롤러(150)와 분리되는 것으로 도시되었으나, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)는 비휘발성 메모리 컨트롤러(150) 내에 포함될 수도 있다. 또한, 비록 도면에는 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)가 서로 분리된 구성요소로 도시하였으나, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 제1 에러 정정 회로(180_1)와 제2 에러 정정 회로(180_2)는 하나의 에러 정정 회로로 구현될 수도 있다.
제1 에러 정정 회로(180_1)는 제1 비휘발성 메모리(160_1)에 저장된 데이터에 에러가 존재하는지 여부를 검출하는데 이용될 수 있다. 또한, 제1 에러 정정 회로(180_1)는 제1 비휘발성 메모리(160_1)에 데이터를 저장할 때(즉, 데이터를 라이트할 때), 에러 검출을 위한 제1 에러 정정 코드(ECC_1)를 생성할 수 있다. 마찬가지로, 제2 에러 정정 회로(180_2)는 제2 비휘발성 메모리(160_2)에 저장된 데이터에 에러가 존재하는지 여부를 검출하는데 이용될 수 있다. 또한, 제2 에러 정정 회로(180_2)는 제2 비휘발성 메모리(160_2)에 데이터를 저장할 때, 에러 검출을 위한 제2 에러 정정 코드(ECC_2)를 생성할 수 있다. 예를 들어, 제1 에러 정정 코드(ECC_1) 및 제2 에러 정정 코드(ECC_2)는 패리티(parity) 비트, 해밍 코드(Hamming code) 등 일 수 있으나, 실시예들이 이에 제한되지는 않는다.
제1 비휘발성 메모리(160_1)는 제1 데이터(Data_1)와, 제1 에러 정정 회로(180_1)에서 생성된 제1 에러 정정 코드(ECC_1)를 저장할 수 있다. 몇몇 실시예에서, 제1 데이터(Data_1)가 저장되는 영역과 제1 에러 정정 코드(ECC_1)가 저장되는 영역은 서로 다를 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 마찬가지로, 제2 비휘발성 메모리(160_2)는 제2 데이터(Data_2)와, 제2 에러 정정 회로(180_2)에서 생성된 제2 에러 정정 코드(ECC_2)를 저장할 수 있다.
도 1, 도 13 및 도 14를 참조하면, 프로세서(120)는 호스트(200)로부터 데이터 라이트 요청과 함께, 라이트될 데이터 및 라이트될 데이터와 관련된 식별자를 수신할 수 있다(S1410).
프로세서(120)는 수신한 식별자로부터 제1 논리 어드레스(LA)를 생성할 수 있다(S1420).
생성된 제1 논리 어드레스(LA)는 어드레스 생성기(140)에 제공되고, 어드레스 생성기(140)는 제1 논리 어드레스(LA)를 이용하여, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 생성할 수 있다(S1430).
제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 다시 프로세서(120)에 제공되고, 프로세서(120)는 비휘발성 메모리 컨트롤러(150)에 데이터 라이트 명령과 함께, 라이트될 데이터, 제1 물리 어드레스(PA_1) 및 제2 물리 어드레스(PA_2)를 제공할 수 있다.
라이트될 데이터는 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)에 제공되고, 제1 에러 정정 회로(180_1)와 제2 에러 정정 회로(180_2)는 각각 라이트될 데이터를 이용하여, 제1 에러 정정 코드(ECC_1) 및 제2 에러 정정 코드(ECC_2)를 생성할 수 있다(S1435). 몇몇 실시예에 따르면, 제1 에러 정정 코드(ECC_1) 및 제2 에러 정정 코드(ECC_2)는 서로 동일할 수 있다.
비휘발성 메모리 컨트롤러(150)는 라이트될 데이터를 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에, 제1 데이터(Data_1)로 저장하고, 생성된 제1 에러 정정 코드(ECC_1)를 제1 비휘발성 메모리(160_1)의 특정 영역에 저장할 수 있다. 또한, 비휘발성 메모리 컨트롤러(150)는 라이트될 데이터를 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에, 제2 데이터(Data_2)로 저장하고, 생성된 제2 에러 정정 코드(ECC_2)를 제2 비휘발성 메모리(160_2)의 특정 영역에 저장할 수 있다(S1440).
도 1, 도 13 및 도 15를 참조하면, 프로세서(120)는 호스트(200)로부터 데이터 리드 요청과 함께, 리드될 데이터와 관련된 식별자를 수신한다(S1510).
프로세서(120)는 수신한 식별자를 제1 논리 어드레스(LA)로 변환하고(S1520), 제1 논리 어드레스(LA)는 어드레스 생성기(140)에 제공되어, 제1 물리 어드레스(PA_1) 및 제2 물리 어드레스(PA_2)가 생성될 수 있다(S1530).
제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)는 프로세서(120)에 제공될 수 있다. 프로세서(120)는 리드 명령과 함께, 제1 물리 어드레스(PA_1)와 제2 물리 어드레스(PA_2)를 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1)의 제1 물리 어드레스(PA_1)에 저장된 제1 데이터(Data_1)를 리드하여, 제1 에러 정정 회로(180_1)에 제공할 수 있다. 또한, 비휘발성 메모리 컨트롤러(150)는 제1 비휘발성 메모리(160_1)에서, 제1 에러 정정 코드(ECC_1)도 함께 리드하여, 제1 에러 정정 회로(180_1)에 제공할 수 있다. 마찬가지로, 비휘발성 메모리 컨트롤러(150)는 제2 비휘발성 메모리(160_2)의 제2 물리 어드레스(PA_2)에 저장된 제2 데이터(Data_2)를 리드하여, 제2 에러 정정 회로(180_2)에 제공할 수 있다. 또한, 비휘발성 메모리 컨트롤러(150)는 제2 비휘발성 메모리(160_2)에서, 제2 에러 정정 코드(ECC_2)도 함께 리드하여, 제2 에러 정정 회로(180_2)에 제공할 수 있다.
제1 에러 정정 회로(180_1)는 제1 에러 정정 코드(ECC_1)와 제1 데이터(Data_1)를 이용하여, 제1 데이터(Data_1)의 에러를 검출 및 정정할 수 있다. 마찬가지로, 제2 에러 정정 회로(180_2)는 제2 에러 정정 코드(ECC_2)와 제2 데이터(Data_2)를 이용하여, 제2 데이터(Data_2)의 에러를 검출 및 정정할 수 있다(S1535). 설명의 편의를 위해, 에러 정정된 제1 데이터(Data_1)와, 에러 정정된 제2 데이터(Data_2)를 각각 제3 데이터(Data_3) 및 제4 데이터(Data_4)로 정의한다. 제3 데이터(Data_3) 및 제4 데이터(Data_4)는 공격 감지 회로(170)에 제공될 수 있다. 공격 감지 회로(170)는 제3 데이터(Data_3) 및 제4 데이터(Data_4)를 수신하고, 이를 비교할 수 있다(S1540).
제3 데이터(Data_3)와 제4 데이터(Data_4)가 서로 다른 경우(S1550, N), 공격 감지 회로(170)는 공격 감지 신호(ADS)를 생성하여(S1560), 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 공격 감지 신호(ADS)를 수신하면, 프로세서(120)에 공격 감지 알람을 제공할 수 있다. 프로세서(120)는 공격 감지 알람을 수신하면, 데이터 보호 동작을 수행할 수 있다(S1570). 다시 말해서, 프로세서(120)는 공격 감지 신호(ADS)가 생성되면, 데이터 보호 동작을 수행할 수 있다.
제3 데이터(Data_3)와 제4 데이터(Data_4)가 서로 동일한 경우(S1550, Y), 공격 감지 회로(170)는 공격 비감지 신호(ANDS)를 생성하여(S1580), 비휘발성 메모리 컨트롤러(150)에 제공할 수 있다. 비휘발성 메모리 컨트롤러(150)는 공격 비감지 신호(ANDS)를 수신하면, 제3 데이터(Data_3)와 제4 데이터(Data_4) 중 어느 하나를 프로세서(120)에 제공할 수 있다(S1590). 프로세서(120)는 제3 데이터(Data_3)와 제4 데이터(Data_4) 중 어느 하나를 수신하하고, 이를 호스트(200)에 제공함으로써, 호스트(200)로부터의 데이터 리드 요청에 응답한다. 다시 말해서, 프로세서(120)는 공격 비감지 신호(ANDS)가 생성되면, 제3 데이터(Data_3) 및 제4 데이터(Data_4) 중 어느 하나를 외부에 제공할 수 있다.
몇몇 실시예에 따르면, 공격자에 의해 제1 데이터(Data_1) 및/또는 제2 데이터(Data_2)가 변경되었더라도, 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)를 통해, 원본 데이터로 복구될 수 있다. 데이터가 복구된다면, 결국 공격자는 원하는 데이터를 수신할 수 없다. 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)가 데이터를 복구할 수 없는 경우도 발생될 수 있으나, 이 경우 전술한 바와 같이 제1 데이터(Data_1)와 제2 데이터(Data_2)는 서로 달라 프로세서(120)에 의해 데이터 보호 동작이 수행되므로, 데이터의 유출 및 프로그램 코드의 변경이 방지될 수 있다.
몇몇 실시예에 따르면, 제1 비휘발성 메모리(160_1)에 저장된 제1 데이터(Data_1)와 제2 비휘발성 메모리(160_2)에 저장된 제2 데이터(Data_2)가 서로 다른 경우, 프로세서(120)는 데이터 보호 동작을 수행할 수 있다. 그러나, 상황에 따라, 공격자에 의한 공격 외의 다른 이유로 인해, 제1 데이터(Data_1) 및/또는 제2 데이터(Data_2)가 변경되는 경우도 발생될 수 있다. 이러한 경우에도, 프로세서(120)는 데이터 보호 동작을 수행할 수 있으나, 이는 의도한 동작이 아닐 수 있다. 따라서, 몇몇 실시예에 따른 메모리 장치(100)에 제1 에러 정정 회로(180_1) 및 제2 에러 정정 회로(180_2)를 더 포함시킴으로써, 공격자의 공격을 효과적으로 방어함과 동시에, 의도치 않은 데이터 보호 동작이 수행되는 것을 방지할 수 있을 것이다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110: 호스트 인터페이스 120: 프로세서
130: 버퍼 메모리 140: 어드레스 생성기
150: 비휘발성 메모리 컨트롤러 160_1, 160_2: 비휘발성 메모리
170: 공격 감지 회로 180_1, 180_2: 에러 정정 회로

Claims (20)

  1. 제1 물리 어드레스와, 상기 제1 물리 어드레스와 다른 제2 물리 어드레스를 생성하는 어드레스 생성기;
    상기 제1 물리 어드레스를 포함하는 제1 비휘발성 메모리;
    상기 제2 물리 어드레스를 포함하는 제2 비휘발성 메모리; 및
    상기 제1 및 제2 비휘발성 메모리의 공격 여부를 감지하는 공격 감지 회로를 포함하고,
    상기 공격 감지 회로는,
    상기 제1 비휘발성 메모리로부터 제1 데이터를 제공받고,
    상기 제2 비휘발성 메모리로부터 제2 데이터를 제공받고,
    상기 제1 데이터와 상기 제2 데이터를 서로 비교하고,
    상기 제1 데이터와 상기 제2 데이터의 비교 결과에 기초하여, 상기 제1 및 제2 비휘발성 메모리의 공격 여부를 결정하는 메모리 장치.
  2. 제 1항에 있어서,
    상기 공격 감지 회로는,
    상기 제1 데이터와 상기 제2 데이터가 서로 다른 경우, 상기 제1 및 제2 비휘발성 메모리의 공격이 존재하는 것으로 결정하고,
    상기 제1 데이터와 상기 제2 데이터가 서로 동일한 경우, 상기 제1 및 제2 비휘발성 메모리의 공격이 부존재하는 것으로 결정하는 메모리 장치.
  3. 제 1항에 있어서,
    데이터 보호 동작을 수행하는 프로세서를 더 포함하고,
    상기 공격 감지 회로는 상기 제1 데이터와 상기 제2 데이터가 서로 다른 경우, 공격 감지 신호를 생성하는 메모리 장치.
  4. 제 3항에 있어서,
    상기 프로세서는 상기 공격 감지 신호가 생성되면, 상기 데이터 보호 동작을 수행하고,
    상기 데이터 보호 동작은 상기 제1 물리 어드레스에 저장된 데이터와, 상기 제2 물리 어드레스에 저장된 데이터를 삭제하는 것을 포함하는 메모리 장치.
  5. 제 3항에 있어서,
    상기 프로세서는 상기 공격 감지 신호가 생성되면, 상기 데이터 보호 동작을 수행하고,
    상기 데이터 보호 동작은 외부의 데이터 리드 요청에 대해 응답하지 않는 것을 포함하는 메모리 장치.
  6. 제 1항에 있어서,
    제1 식별자 및 상기 제1 식별자에 대한 리드(read) 요청을 수신하는 프로세서를 더 포함하고,
    상기 프로세서는 상기 제1 식별자를 제1 논리 어드레스로 변환하여, 상기 어드레스 생성기에 제공하는 메모리 장치.
  7. 제 6항에 있어서,
    상기 어드레스 생성기는,
    상기 제1 논리 어드레스와 제1 물리 어드레스 생성 코드를 연산하여, 상기 제1 물리 어드레스를 생성하고,
    상기 제1 논리 어드레스와 제2 물리 어드레스 생성 코드를 연산하여, 상기 제2 물리 어드레스를 생성하는 메모리 장치.
  8. 제 6항에 있어서,
    상기 어드레스 생성기는,
    상기 제1 논리 어드레스와 제1 룩업 테이블을 이용하여, 상기 제1 물리 어드레스를 생성하고,
    상기 제1 논리 어드레스와 제2 룩업 테이블을 이용하여, 상기 제2 물리 어드레스를 생성하는 메모리 장치.
  9. 제 1항에 있어서,
    외부로부터 데이터 리드 요청을 수신하는 프로세서를 더 포함하고,
    상기 공격 감지 회로는 상기 제1 및 제2 데이터가 서로 동일한 경우, 공격 비감지 신호를 생성하고,
    상기 프로세서는 상기 공격 비감지 신호가 생성되면, 상기 제1 및 제2 데이터 중 어느 하나를 출력하는 메모리 장치.
  10. 제 9항에 있어서,
    상기 제1 비휘발성 메모리는 플래시 메모리(flash memory)의 싱글 레벨 셀(SLC: Single Level Cell) 영역이고,
    상기 제2 비휘발성 메모리는 플래시 메모리의 멀티 레벨 셀(MLC: Multi Level Cell) 영역이고,
    상기 프로세서는 상기 공격 비감지 회로가 생성되면, 상기 제1 데이터를 출력하는 메모리 장치.
  11. 제 1항에 있어서,
    상기 제1 비휘발성 메모리와 연결된 제1 에러 정정 회로; 및
    상기 제2 비휘발성 메모리와 연결된 제2 에러 정정 회로를 더 포함하고,
    상기 제1 및 제2 비휘발성 메모리는 각각 제1 및 제2 에러 정정 코드를 포함하고,
    상기 제1 에러 정정 회로는 상기 제1 물리 어드레스에 저장된 데이터와 상기 제1 에러 정정 코드를 이용하여, 상기 제1 데이터를 생성하고,
    상기 제2 에러 정정 회로는 상기 제2 물리 어드레스에 저장된 데이터와 상기 제2 에러 정정 코드를 이용하여, 상기 제2 데이터를 생성하는 메모리 장치.
  12. 제 1항에 있어서,
    제2 식별자, 상기 제2 식별자와 관련된 제3 데이터, 및 상기 제3 데이터에 대한 라이트(write) 요청을 수신하는 프로세서를 더 포함하고,
    상기 어드레스 생성기는 상기 제2 식별자로부터 제3 물리 어드레스와, 상기 제3 물리 어드레스와 다른 제4 물리 어드레스를 생성하고,
    상기 프로세서는 상기 제3 데이터에 대한 라이트 요청에 대응하여,
    상기 제1 비휘발성 메모리의 상기 제3 물리 어드레스에 상기 제3 데이터를 저장하고,
    상기 제2 비휘발성 메모리의 상기 제4 물리 어드레스에 상기 제3 데이터를 저장하는 메모리 장치.
  13. 제1 및 제2 비휘발성 메모리;
    식별자, 상기 식별자와 관련된 제1 데이터, 및 상기 제1 데이터에 대한 라이트(write) 요청을 수신하고, 상기 식별자를 이용하여 제1 논리 어드레스를 생성하는 프로세서; 및
    상기 제1 논리 어드레스와 대응되는 제1 물리 어드레스와, 상기 제1 논리 어드레스와 대응되고 상기 제1 물리 어드레스와 다른 제2 물리 어드레스를 생성하는 어드레스 생성기를 포함하고,
    상기 프로세서는 상기 제1 데이터에 대한 라이트 요청에 대응하여,
    상기 제1 데이터를 상기 제1 비휘발성 메모리의 상기 제1 물리 어드레스에 저장하고,
    상기 제1 데이터를 상기 제2 비휘발성 메모리의 상기 제2 물리 어드레스에 저장하는 메모리 장치.
  14. 제 13항에 있어서,
    상기 제1 비휘발성 메모리와 연결된 제1 에러 정정 회로; 및
    상기 제2 비휘발성 메모리와 연결된 제2 에러 정정 회로를 더 포함하고,
    상기 제1 에러 정정 회로는 상기 제1 데이터를 이용하여, 상기 제1 데이터의 에러 정정을 위한 제1 에러 정정 코드를 생성하고,
    상기 제2 에러 정정 회로는 상기 제1 데이터를 이용하여, 상기 제1 데이터의 에러 정정을 위한 제2 에러 정정 코드를 생성하는 메모리 장치.
  15. 제 13항에 있어서,
    상기 식별자는 상기 제1 및 제2 물리 어드레스에 대한 정보를 미포함하는 메모리 장치.
  16. 제1 식별자와 대응되는 제1 물리 어드레스에, 제1 데이터를 저장하는 제1 비휘발성 메모리;
    상기 제1 식별자와 대응되고 상기 제1 물리 어드레스와 다른 제2 물리 어드레스에, 상기 제1 데이터와 다른 제2 데이터가 저장된 제2 비휘발성 메모리;
    상기 제1 및 제2 비휘발성 메모리의 공격 여부를 감지하는 공격 감지 회로; 및
    외부로부터 상기 제1 식별자와 대응되는 데이터의 리드 요청을 수신하는 프로세서를 포함하고,
    상기 프로세서는, 상기 리드 요청에 대응하여,
    상기 제1 비휘발성 메모리의 상기 제1 물리 어드레스에 액세스하여, 상기 제1 데이터와 관련된 제3 데이터를 리드하고,
    상기 제2 비휘발성 메모리의 상기 제2 물리 어드레스에 액세스하여, 상기 제2 데이터와 관련된 제4 데이터를 리드하고,
    상기 공격 감지 회로는 상기 제3 및 제4 데이터를 제공받아, 상기 제3 및 제4 데이터에 기초하여 상기 제1 및 제2 비휘발성 메모리의 공격 여부를 결정하는 메모리 장치.
  17. 제 16항에 있어서,
    상기 리드 요청에 대응하여,
    상기 제1 비휘발성 메모리는 상기 제1 데이터를 상기 제3 데이터로 상기 공격 감지 회로에 제공하고,
    상기 제2 비휘발성 메모리는 상기 제1 데이터를 상기 제4 데이터로 상기 공격 감지 회로에 제공하고,
    상기 공격 감지 회로는 공격 감지 신호를 생성하고,
    상기 공격 감지 신호가 생성되면, 상기 프로세서는 상기 제1 및 제2 비휘발성 메모리의 데이터 보호 동작을 수행하는 메모리 장치.
  18. 제 16항에 있어서,
    상기 제1 비휘발성 메모리와 연결된 제1 에러 정정 회로; 및
    상기 제2 비휘발성 메모리와 연결된 제2 에러 정정 회로를 더 포함하는 메모리 장치.
  19. 제 18항에 있어서,
    상기 제1 및 제2 비휘발성 메모리는 각각 제1 및 제2 에러 정정 코드를 포함하고,
    상기 제1 에러 정정 회로는 상기 제1 데이터와 상기 제1 에러 정정 코드를 이용하여, 상기 제3 데이터를 생성하고,
    상기 제2 에러 정정 회로는 상기 제2 데이터와 상기 제2 에러 정정 코드를 이용하여, 상기 제4 데이터를 생성하는 메모리 장치.
  20. 제 19항에 있어서,
    상기 공격 감지 회로는 상기 제3 및 제4 데이터를 비교하여,
    상기 제3 및 제4 데이터가 서로 다른 경우, 상기 제1 및 제2 비휘발성 메모리에 공격이 존재하는 것으로 결정하고,
    상기 제3 및 제4 데이터가 서로 동일한 경우, 상기 제1 및 제2 비휘발성 메모리에 공격이 부존재하는 것으로 결정하는 메모리 장치.
KR1020190018418A 2019-02-18 2019-02-18 메모리 장치 및 시스템 KR20200100309A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190018418A KR20200100309A (ko) 2019-02-18 2019-02-18 메모리 장치 및 시스템
US16/667,582 US11847209B2 (en) 2019-02-18 2019-10-29 Memory device and system
CN202010092536.6A CN111581677A (zh) 2019-02-18 2020-02-14 存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190018418A KR20200100309A (ko) 2019-02-18 2019-02-18 메모리 장치 및 시스템

Publications (1)

Publication Number Publication Date
KR20200100309A true KR20200100309A (ko) 2020-08-26

Family

ID=72042111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190018418A KR20200100309A (ko) 2019-02-18 2019-02-18 메모리 장치 및 시스템

Country Status (3)

Country Link
US (1) US11847209B2 (ko)
KR (1) KR20200100309A (ko)
CN (1) CN111581677A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886351B2 (en) * 2020-03-25 2024-01-30 Red Hat, Inc. Memory efficient virtual address management for system calls
KR20220018757A (ko) * 2020-08-07 2022-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2620259B1 (fr) * 1987-03-31 1989-11-24 Smh Alcatel Dispositif de couplage de memoires non volatiles dans une machine electronique et machine a affranchir en faisant application
US6971042B2 (en) * 2002-04-18 2005-11-29 Huge Systems, Inc. Media server with single chip storage controller
FR2894709A1 (fr) * 2005-12-13 2007-06-15 Gemplus Sa "detecteur de destruction anormale de secteur memoire"
EP1906413A1 (en) * 2006-09-29 2008-04-02 Koninklijke Philips Electronics N.V. A secure non-volatile memory device and a method of protecting data therein
KR100837275B1 (ko) 2006-12-06 2008-06-11 삼성전자주식회사 빛을 감지하는 스마트 카드
KR101311963B1 (ko) 2007-08-06 2013-09-26 삼성전자주식회사 파워 어택으로부터 안전하게 데이터를 쓰고 읽을 수 있는반도체 메모리 장치 및 그 방법
JP4479775B2 (ja) * 2007-10-02 2010-06-09 株式会社デンソー 車両制御装置およびプログラム
KR101477630B1 (ko) 2007-10-09 2014-12-30 삼성전자주식회사 빛 공격을 검출할 수 있는 메모리 장치 및 그 방법
KR20090043823A (ko) 2007-10-30 2009-05-07 삼성전자주식회사 외부 공격을 감지할 수 있는 메모리 시스템
JP2010198252A (ja) 2009-02-24 2010-09-09 Nec Corp 不揮発メモリ装置、不揮発メモリの書込み方法、及び不揮発メモリ書込みプログラム
FR2956764B1 (fr) 2010-02-19 2012-11-09 St Microelectronics Rousset Protection de registres contre des perturbations unilaterales
US9269418B2 (en) 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
WO2014199199A1 (zh) * 2013-06-14 2014-12-18 三星电子株式会社 半导体存储器装置及其ecc方法
US9921969B2 (en) 2015-07-14 2018-03-20 Western Digital Technologies, Inc. Generation of random address mapping in non-volatile memories using local and global interleaving
US10481799B2 (en) 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US10303623B2 (en) * 2016-04-08 2019-05-28 Cryptography Research, Inc. Non-volatile memory for secure storage of authentication data
TWI661427B (zh) * 2018-04-02 2019-06-01 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
US10811112B2 (en) * 2018-09-29 2020-10-20 Western Digital Technologies, Inc. Wear leveling with wear-based attack detection for non-volatile memory

Also Published As

Publication number Publication date
CN111581677A (zh) 2020-08-25
US20200265137A1 (en) 2020-08-20
US11847209B2 (en) 2023-12-19

Similar Documents

Publication Publication Date Title
US20210117540A1 (en) Storage device and method for protecting against virus/malware thereof and computing system having the same
US10503934B2 (en) Secure subsystem
US9258111B2 (en) Memory device which protects secure data, method of operating the memory device, and method of generating authentication information
JP5500458B2 (ja) プロセッサメインメモリのメモリコンテンツのセキュリティ保護
US10552084B2 (en) Method of operating data storage device
US9977749B2 (en) Application processor and data processing system including the same
US11194486B2 (en) Storage data sanitization
US20130080787A1 (en) Memory storage apparatus, memory controller and password verification method
US20150078550A1 (en) Security processing unit with configurable access control
JP2015191670A (ja) ストレージシステム、それへの書込み防止遂行方法、及びそれへの書込み防止認証方法
KR102558901B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11818248B2 (en) Encoder and decoder using physically unclonable functions
US11847209B2 (en) Memory device and system
KR102538258B1 (ko) 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템
TW202101236A (zh) 使用者資料的加解密方法及裝置
US20240037233A1 (en) Ransomware and malicious software protection in ssd/ufs by nvme instructions log analysis based on machine-learning
KR20220124452A (ko) 스토리지 장치
KR20200128825A (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
US20230144135A1 (en) Trusted computing device and operating method thereof
KR20220026079A (ko) 스토리지 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right