KR102148889B1 - 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 - Google Patents
메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 Download PDFInfo
- Publication number
- KR102148889B1 KR102148889B1 KR1020140107128A KR20140107128A KR102148889B1 KR 102148889 B1 KR102148889 B1 KR 102148889B1 KR 1020140107128 A KR1020140107128 A KR 1020140107128A KR 20140107128 A KR20140107128 A KR 20140107128A KR 102148889 B1 KR102148889 B1 KR 102148889B1
- Authority
- KR
- South Korea
- Prior art keywords
- logical
- area
- host
- memory controller
- block address
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 244
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 22
- 238000010586 diagram Methods 0.000 description 30
- 239000004065 semiconductor Substances 0.000 description 9
- 239000005711 Benzoic acid Substances 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 3
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 229910052732 germanium Inorganic materials 0.000 description 2
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004291 sulphur dioxide Substances 0.000 description 2
- 101100028951 Homo sapiens PDIA2 gene Proteins 0.000 description 1
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100036351 Protein disulfide-isomerase A2 Human genes 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000011668 ascorbic acid Substances 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 239000004148 curcumin Substances 0.000 description 1
- 229910052738 indium Inorganic materials 0.000 description 1
- APFVFJFRJDLVQX-UHFFFAOYSA-N indium atom Chemical compound [In] APFVFJFRJDLVQX-UHFFFAOYSA-N 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000004334 sorbic acid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 물리 저장 영역을 포함하는 불휘발성 메모리 장치; 및 제1 및 제2 논리 영역들을 기반으로 물리 저장 영역을 관리하는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는 호스트로부터 제1 논리 영역의 일부에 대응하는 논리 블록 어드레스 범위 및 커맨드를 수신하도록 구성되고, 호스트로부터 데이터, 논리 블록 어드레스, 및 쓰기 커맨드를 수신하여 제2 논리 영역에 대한 업데이트를 수행하도록 구성되며, 업데이트시, 수신된 논리 블록 어드레스가 논리 블록 어드레스 범위에 포함된 경우, 메모리 컨트롤러는 쓰기 커맨드에 응답하여 데이터가 제2 논리 영역에 기입되도록 수신된 논리 블록 어드레스를 제2 논리 영역의 논리 페이지 넘버로 리다이렉션한다.
Description
본 발명은 반도체 메모리에 관한 것으로, 더욱 상세하게는 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템에 관한 것이다.
반도체 메모리(semiconductor memory)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화 인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억 장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile Memory Device) 및 불휘발성 메모리 장치(Nonvolatile Memory Device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 저장 회로 (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다.
플래시 메모리는 빠른 동작 속도, 저전력, 저소음, 고용량 등의 이점으로 인해 다양한 분야에서 사용된다. 고용량의 플래시 메모리가 다양한 분야에서 사용됨에 따라, 최근에는 플래시 메모리에 대한 다양한 보안 기술이 개발되고 있다. 예를 들어, 암호화 소프트웨어를 기반으로 드라이브를 암호화하는 풀-디스크 암호화(FDE; Full Disk Encryption), 드라이브 스스로 암호화를 수행하는 자가 암호화 드라이브(SED; Self Encryption Drive)와 같은 암호화 기술들이 제공되고 있다.
특히, 자가 암호화 드라이브(SED)는 드라이브 스스로 암호화 및 복호화를 수행할 뿐만 아니라, 프리-부트 인증(pre-boot authentication)을 지원한다. 자가 암호화 드라이브와 연결된 호스트가 부팅하거나 또는 자가 암호화 드라이브가 호스트와 링크 업될 때, 호스트는 드라이브의 유저 영역을 로드하는 대신에 프리-부트 영역을 로드하여 프리-부트 인증 동작을 수행한다. 프리-부트 인증이 성공된 경우에만 호스트가 드라이브의 유저 영역에 접근할 수 있기 때문에, 유저 영역이 보호된다. 상술된 인증 동작을 위한 기능은 쉐도우 마스터 부트 레코드(shadow MBR; shadow master boot record)를 기반으로 제공된다. 이러한 쉐도우 마스터 부트 레코드의 업데이트가 요구되는 경우, 호스트가 쉐도우 마스터 부트 레코드를 인식할 수 없기 때문에 별도의 업데이트 또는 관리 방법이 요구된다.
본 발명의 목적은 쉐도우 마스터 부트 레코드(shadow MBR) 영역에 대한 업데이트 동작에서 향상된 성능을 갖는 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템을 제공하는데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 시스템은 물리 저장 영역을 포함하는 불휘발성 메모리 장치; 및 제1 및 제2 논리 영역들을 기반으로 상기 물리 저장 영역을 관리하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 호스트로부터 상기 제1 논리 영역의 일부에 대응하는 논리 블록 어드레스 범위 및 커맨드를 수신하도록 구성되고, 상기 호스트로부터 데이터, 논리 블록 어드레스, 및 쓰기 커맨드를 수신하여 상기 제2 논리 영역에 대한 업데이트를 수행하도록 구성되며, 상기 업데이트시, 상기 수신된 논리 블록 어드레스가 상기 논리 블록 어드레스 범위에 포함된 경우, 상기 메모리 컨트롤러는 상기 쓰기 커맨드에 응답하여 상기 데이터가 상기 제2 논리 영역에 기입되도록 상기 수신된 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션한다.
실시 예로서, 부팅 동작시, 상기 메모리 컨트롤러는 상기 호스트로부터 시작 논리 블록 어드레스를 수신하되, 프리-부트 인증 전인 경우 상기 메모리 컨트롤러는 상기 제2 논리 영역이 상기 호스트에 의해 저장 영역으로서 인식되도록 상기 시작 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션하고, 상기 프리-부트 인증이 완료된 경우 상기 메모리 컨트롤러는 상기 제1 논리 영역이 상기 호스트에 의해 상기 저장 영역으로서 인식되도록 상기 시작 논리 블록 어드레스를 상기 제1 논리 영역의 논리 페이지 넘버로 리다이렉션한다.
실시 예로서, 상기 제1 논리 영역은 상기 제1 논리 영역의 크기, 종류, 또는 상태와 관련된 정보를 포함하는 마스터 부트 레코드(MBR)를 포함하고, 상기 제2 논리 영역은 상기 제2 논리 영역의 크기, 종류, 또는 상태와 관련된 정보를 포함하는 쉐도우 마스터 부트 레코드(shadow MBR)를 포함한다.
실시 예로서, 부팅 동작시, 상기 메모리 컨트롤러는 상기 호스트로부터 시작 논리 블록 어드레스를 수신하고, 프리-부트 인증 전인 경우, 상기 메모리 컨트롤러는 상기 쉐도우 마스터 부트 레코드가 상기 호스트에 의해 읽어지도록 상기 시작 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션하고, 상기 프리-부트 인증이 완료된 경우, 상기 메모리 컨트롤러는 상기 마스터 부트 레코드가 상기 호스트에 의해 읽어지도록 상기 시작 논리 블록 어드레스를 상기 제1 논리 영역의 논리 페이지 넘버로 리다이렉션한다.
실시 예로서, 상기 쉐도우 마스터 부트 레코드가 상기 호스트에 의해 읽어질 경우, 상기 제2 논리 영역이 상기 호스트에 의해 상기 저장 영역으로 인식되고, 상기 마스터 부트 레코드가 상기 호스트에 의해 읽어질 경우, 상기 제1 논리 영역이 상기 호스트에 의해 상기 저장 영역으로 인식된다.
실시 예로서, 상기 메모리 컨트롤러는 상기 커맨드에 응답하여 상기 제2 논리 영역의 업데이트를 가리키는 플래그 정보를 상기 제1 논리 영역 중 일부 영역에 기입한다.
실시 예로서, 상기 제2 논리 영역에 대한 업데이트가 완료된 경우, 상기 메모리 컨트롤러는 상기 플래그 정보를 삭제한다.
실시 예로서, 상기 메모리 컨트롤러는 저장 회로를 포함하고, 상기 커맨드에 응답하여 상기 제2 논리 영역의 업데이트를 가리키는 플래그 정보를 상기 저장 회로에 기입한다.
실시 예로서, 상기 커맨드는 상기 메모리 컨트롤러 및 상기 호스트 간의 인터페이스 규격에 따라 정의된 커맨드들의 조합, 예비 커맨드, 또는 벤더 커맨드이다.
실시 예로서, 상기 메모리 컨트롤러는 상기 호스트로부터 수신된 논리 블록 어드레스를 상기 제1 및 제2 논리 영역들 중 어느 하나의 논리 페이지 넘버로 리다이렉션하는 호스트 인터페이스를 포함한다.
실시 예로서, 상기 메모리 컨트롤러는 상기 제1 및 제2 논리 영역들의 논리 페이지 넘버들 및 상기 물리 저장 영역의 물리 페이지 넘버들의 대응 관계를 관리한다.
실시 예로서, 상기 메모리 컨트롤러는 상기 대응 관계 및 상기 리다이렉션된 논리 페이지 넘버를 기반으로 상기 데이터를 상기 물리 저장 영역에 기입한다.
본 발명의 다른 실시 예에 따른 불휘발성 메모리 시스템은 물리 저장 영역을 포함하는 불휘발성 메모리 장치; 제1, 제2, 및 제3 논리 영역들을 기반으로 상기 물리 저장 영역을 관리하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 호스트로부터 상기 제1 논리 영역의 일부에 대응하는 논리 블록 어드레스 범위 및 커맨드를 수신하고, 상기 호스트로부터 데이터, 논리 블록 어드레스, 및 쓰기 커맨드를 수신하여 상기 제2 논리 영역에 대한 업데이트를 수행하되, 상기 수신된 논리 블록 어드레스가 상기 논리 블록 어드레스 범위에 포함된 경우, 상기 메모리 컨트롤러는 상기 쓰기 커맨드에 응답하여 상기 데이터가 상기 제3 논리 영역에 기입되도록 상기 수신된 논리 블록 어드레스를 상기 제3 논리 영역의 논리 페이지 넘버로 리다이렉션한다.
실시 예로서, 상기 제1 논리 영역은 상기 호스트에 의해 유저 데이터가 기입 및 독출되는 유저 영역이고, 상기 제2 논리 영역은 프리-부트 인증을 위한 메인 프리-부트 영역이고, 상기 제3 논리 영역은 상기 제2 논리 영역의 업데이트를 위한 서브 프리-부트 영역이다.
실시 예로서, 상기 메모리 컨트롤러는 상기 제2 논리 영역을 상기 서브 프리-부트 영역으로 설정하고, 상기 제3 논리 영역을 상기 메인 프리-부트 영역으로 설정한다.
실시 예로서, 상기 제2 논리 영역에 대한 업데이트가 완료된 이 후에 상기 호스트와 연결될 때, 상기 메모리 컨트롤러는 상기 호스트로부터 시작 논리 블록 어드레스를 수신하고, 상기 제1 논리 영역 및 상기 데이터가 기입된 제3 논리 영역 중 어느 하나가 상기 호스트에 의해 상기 저장 영역으로서 인식되도록 상기 시작 논리 블록 어드레스를 리다이렉션한다.
본 발명의 또 다른 실시 예에 따른 제1 및 제2 논리 영역들을 기반으로 불휘발성 메모리 장치의 물리 저장 영역을 관리하는 메모리 컨트롤러의 동작 방법은 호스트로부터 상기 제1 논리 영역의 일부와 대응되는 논리 블록 어드레스 범위 및 커맨드를 수신하는 단계; 및 상기 호스트부터 논리 블록 어드레스, 쓰기 커맨드, 및 데이터를 수신하여 상기 제2 논리 영역을 업데이트하는 단계를 포함하되, 상기 호스트부터 논리 블록 어드레스, 쓰기 커맨드, 및 데이터를 수신하여 상기 제2 논리 영역을 업데이트하는 단계는, 상기 수신된 논리 블록 어드레스가 상기 논리 블록 어드레스 범위에 포함되는 경우 상기 데이터가 상기 제2 논리 영역에 기입되도록 상기 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션하는 단계를 포함한다.
실시 예로서, 상기 제1 및 제2 논리 영역들 중 어느 하나가 상기 호스트에 의해 저장 영역으로서 인식된다.
실시 예로서, 상기 커맨드에 응답하여 상기 제2 논리 영역의 업데이트를 가리키는 플래그 정보를 상기 제1 논리 영역에 기입하는 단계를 더 포함한다.
실시 예로서, 상기 제2 논리 영역에 대한 업데이트가 완료된 경우 상기 플래그 정보를 삭제한다.
본 발명에 따르면, 쉐도우 마스터 부트 레코드(shadow MBR)을 업데이트할 때, 할당된 업데이트 영역이 아닌 쉐도우 마스터 부트 레코드(shadow MBR) 영역에 데이터가 기입되도록 논리 블록 어드레스를 리다이렉션함으로써 업데이트 데이터가 프리-부트 영역(또는 쉐도우 마스터 부트 레코드 영역)에 기입된다. 따라서, 할당된 업데이트 영역이 연속적인 논리 어드레스를 갖지 않아도 되므로, 향상된 신뢰성 및 향상된 성능을 갖는 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 2는 도 1의 사용자 시스템의 소프트웨어 계층(software layer)을 보여주는 블록도이다.
도 3은 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 4는 도 1의 불휘발성 메모리 장치를 상세하게 보여주는 블록도이다.
도 5는 도 1의 사용자 시스템의 논리 영역들 및 물리 영역들을 상세하게 설명하기 위한 블록도이다.
도 6 및 도 7은 프리-부트 인증 동작을 설명하기 위한 블록도들이다.
도 8 내지 도 10은 제2 논리 영역에 대한 업데이트 방법을 설명하기 위한 블록도들이다.
도 11은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 12는 도 11의 S140 단계를 설명하기 위한 블록도들이다.
도 13은 도 11의 S140 단계의 다른 실시 예를 설명하기 위한 블록도이다.
도 14 내지 도 16은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도 및 블록도들이다.
도 17은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 18은 도 17에 도시된 동작을 설명하기 위한 블록도이다.
도 19는 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러를 보여주는 블로도이다.
도 20은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 21은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 22는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다.
도 2는 도 1의 사용자 시스템의 소프트웨어 계층(software layer)을 보여주는 블록도이다.
도 3은 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 4는 도 1의 불휘발성 메모리 장치를 상세하게 보여주는 블록도이다.
도 5는 도 1의 사용자 시스템의 논리 영역들 및 물리 영역들을 상세하게 설명하기 위한 블록도이다.
도 6 및 도 7은 프리-부트 인증 동작을 설명하기 위한 블록도들이다.
도 8 내지 도 10은 제2 논리 영역에 대한 업데이트 방법을 설명하기 위한 블록도들이다.
도 11은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 12는 도 11의 S140 단계를 설명하기 위한 블록도들이다.
도 13은 도 11의 S140 단계의 다른 실시 예를 설명하기 위한 블록도이다.
도 14 내지 도 16은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도 및 블록도들이다.
도 17은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 18은 도 17에 도시된 동작을 설명하기 위한 블록도이다.
도 19는 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러를 보여주는 블로도이다.
도 20은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 21은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 22는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세하게 설명하기 위하여 본 발명의 실시 예들을 첨부된 도면들을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 예시적으로, 사용자 시스템(1000)은 UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP (portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등과 같은 컴퓨팅 시스템들 중 하나로 제공될 수 있다.
사용자 시스템(1000)은 호스트(1010) 및 불휘발성 메모리 시스템(1200)을 포함한다. 호스트(1010)는 불휘발성 메모리 시스템(1100)에 데이터(DATA)를 저장하거나, 또는 불휘발성 메모리 시스템(1100)에 저장된 데이터(DATA)를 읽을 수 있다. 예를 들어, 호스트(101)는 논리 블록 어드레스(LBA) 및 커맨드(CMD)를 불휘발성 메모리 시스템(1100)으로 전송하여 불휘발성 메모리 시스템(102)에 저장된 데이터(DATA)를 읽거나 또는 불휘발성 메모리 시스템(1100)에 데이터를 저장할 수 있다.
예시적으로, 호스트(1010)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, eMMC(Embedded MMC) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, eSATA(external SATA) 프로토콜, SCSI (Bmall computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, MIPI (Mobile Industry Processor Interface) 프로토콜, UFS(Universal Flash Storage) 프로토콜, NVM-e(Nonvolatile Memory express) 프로토콜, UFS(Universal Flash Storage) 프로토콜, WIFI 프로토콜, Bluetooth 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나에 기반하여 불휘발성 메모리 시스템(1100)과 통신할 수 있다.
불휘발성 메모리 시스템(1100)은 메모리 컨트롤러(1110) 및 불휘발성 메모리 장치(1120)를 포함할 수 있다. 예시적으로, 메모리 컨트롤러(1110) 또는 불휘발성 메모리 장치(1120)는 다양한 형태의 패키지로 실장될 수 있다. 예를 들면, 메모리 컨트롤러(1110) 또는 불휘발성 메모리 장치(1120)는 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(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
메모리 컨트롤러(1110)는 호스트(1010)로부터 수신된 신호들에 응답하여 불휘발성 메모리 장치(1120)를 제어할 수 있다.
불휘발성 메모리 장치(1120)는 메모리 컨트롤러(1110)의 제어에 따라 데이터(DATA)를 저장하거나 또는 저장된 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다. 예시적으로, 이하에서 불휘발성 메모리 장치(1120)는 NAND 플래시에 기반된 것으로 가정되나, 본 발명의 기술적 사상이 이에 한정되는 것은 아니며, 불휘발성 메모리 장치(1120)는 NAND 플래시, NOR 플래시, MRAM, FRAM, ReRAM, PRAM 등과 같은 불휘발성 메모리 소자들을 기반으로 구현될 수 있다.
예시적으로, 불휘발성 메모리 시스템(1100)은 자가 암호화 드라이브(SED; Self Encryption Drive) 기능을 지원할 수 있다. 자가 암호화 드라이브(SED)는 디바이스 스스로 암호화 및 복호화를 수행할 수 있고, 프리-부트 인증(pre-boot authentication)을 지원할 수 있다. 예시적으로, 프리-부트 인증은 패스워드, 음성 인식, 지문 인식, 인증서, 디바이스 ID 등과 같은 다양한 인증 방식들을 포함할 수 있다.
예를 들어, 메모리 컨트롤러(1110)는 논리 저장 영역(A200)을 기반으로 불휘발성 메모리 장치(1120)의 물리 저장 영역(A300)을 관리할 수 있다. 예를 들어, 메모리 컨트롤러(1110)는 논리 저장 영역(A200)의 논리 페이지 넘버들(LPN) 및 불휘발성 메모리 장치(1120)의 물리 저장 영역(A300)의 물리적 페이지 넘버(PPN)의 대응 관계를 관리할 수 있다. 논리 저장 영역(A200)은 제1 및 제2 논리 영역들(A210, A220)로 구분될 수 있다. 예시적으로, 제1 논리 영역(A210)은 사용자에게 일반적으로 사용되는 유저 영역(User Area)일 수 있고, 제2 논리 영역(A220)은 프리-부트 인증을 수행하기 위한 정보(예를 들어, 쉐도우 마스터 부트 레코드, 프리-운영 체제 등)를 포함하는 프리 부트 영역(또는 쉐도우 마스터 부트 레코드 영역(sMBR area; shadow master boot record area))일 수 있다. 예시적으로, 제1 논리 영역(A210)은 마스터 부트 레코드(MBR)를 포함하고, 제2 논리 영역(A220)은 쉐도우 마스터 부트 레코드(sMBR)를 포함할 수 있다.
호스트(1010)는 부팅 동작 시(또는 링크-업 시) 불휘발성 메모리 시스템(1100)을 인식하기 위하여 시작 논리 블록 어드레스(LBA0, 또는 제 0 논리 블록 어드레스)를 불휘발성 메모리 시스템(1100)으로 전송하여 읽기 동작을 수행할 수 있다.
이 때, 프리-부트 인증 전인 경우, 메모리 컨트롤러(1100)는 호스트(1010)가 제2 논리 영역(A220)을 인식하도록 시작 논리 블록 어드레스(LBA0)를 제2 논리 영역(A220)의 논리 페이지 넘버(LPN)로 리다이렉션(redirection)할 수 있다. 리다이렉션된 제2 논리 영역(A220)의 논리 페이지 넘버(LPN)와 대응되는 물리 저장 영역에는 쉐도우 마스터 부트 레코드가 포함될 수 있다. 즉, 호스트(1010)는 쉐도우 마스터 부트 레코드(sMBR)를 읽어 제2 논리 영역(A220)을 호스트 뷰(A100)로서 인식할 수 있다. 예시적으로, 호스트 뷰(A100)는 호스트(1010)에 의해 인식되는 불휘발성 메모리 시스템(1100)의 저장 영역을 가리킨다.
예시적으로, 리다이렉션(redirection)은 호스트(1010)로부터 수신된 논리 블록 어드레스(LBA)를 메모리 컨트롤러(1110)에 의해 관리되는 논리 페이지 넘버(LPN)로 변환하는 동작을 가리킨다.
프리-부트 인증이 완료된 경우, 메모리 컨트롤러(1110)는 호스트(1010)가 제1 논리 영역(A210)을 인식하도록 시작 논리 블록 어드레스(LBA0)를 제1 논리 영역(A210)의 논리 페이지 넘버(LPN)로 리다이렉션할 수 있다. 리다이렉션된 제1 논리 영역(A210)의 논리 페이지 넘버(LPN)와 대응되는 물리 저장 영역에는 마스터 부트 레코드가 포함될 수 있다. 즉, 호스트(1010)는 마스터 부트 레코드(MBR)를 읽어 제1 논리 영역(A210)을 호스트 뷰(A100)로서 인식할 수 있다.
메모리 컨트롤러(1110)는 변환된 논리 페이지 넘버(LPN)를 기반으로 불휘발성 메모리 장치(1120)에 저장된 데이터를 읽거나, 또는 불휘발성 메모리 장치(1120)에 데이터를 저장할 수 있다. 예시적으로, 상술된 프리-부트 인증 동작 및 논리 영역들은 도 5 내지 도 7을 참조하여 더욱 상세하게 설명된다.
본 발명에 따른 사용자 시스템(1000)은 제2 논리 영역(A220, 즉, 프리 부트 영역 또는 쉐도우 마스터 부트 레코드 영역)을 업데이트할 수 있다. 예를 들어, 호스트(1010)는 메모리 컨트롤러(1100)에 의해 관리되는 제1 논리 영역(A210)의 일부를 제2 논리 영역(A220)을 업데이트하기 위한 업데이트 영역으로 할당하고, 할당된 업데이트 영역에 업데이트 데이터가 기입되도록 쓰기 커맨드 및 업데이트 데이터를 불휘발성 메모리 시스템(1100)으로 전송할 수 있다.
이 후, 호스트(1010)에 의해 할당된 업데이트 영역에 대한 쓰기 커맨드가 메모리 컨트롤러(1100)로 수신된 경우, 메모리 컨트롤러(1100)는 할당된 업데이트 영역에 업데이트 데이터를 기입하는 대신에 제2 논리 영역(A220)에 업데이트 데이터가 기입되도록 논리 블록 어드레스를 리다이렉션할 수 있다. 상술된 사용자 시스템(1000)의 제2 논리 영역(A220)에 대한 업데이트 동작은 도 8 내지 도 19를 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 사용자 시스템의 소프트웨어 계층(software layer)을 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 사용자 시스템(1000)의 소프트웨어 계층은 애플리케이션 계층(1011), 파일 시스템(1012), 호스트 인터페이스 계층(1110), 및 플래시 변환 계층(1120)을 포함할 수 있다.
애플리케이션 계층(1011)은 사용자 시스템(1000)에서 구동되는 다양한 응용 프로그램을 가리킨다. 예를 들어, 애플리케이션(1011)은 문서 편집기, 웹 브라우저, 영상 재생기, 게임 프로그램 등을 포함할 수 있다. 예시적으로, 애플리케이션(1011)은 제2 영역(A220)의 업데이트를 관리 및 실행하는 벤더 프로그램(vendor program)을 포함할 수 있다.
파일 시스템(1012)은 어플리케이션(1011)에 의해 사용되는 파일 또는 데이터, 및 불휘발성 메모리 시스템(1100)으로부터 인식되는 저장 영역을 조직화하고 관리하는 역할을 수행한다. 예를 들어, 파일 시스템(1012)은 파일 또는 데이터의 논리 블록 어드레스(LBA)를 불휘발성 메모리 시스템(1100)로 제공할 수 있다. 예시적으로, 파일 시스템(1012)은 호스트(1010)의 운영 체제(OS; Operating System)에 따라 다른 형태를 가질 수 있다.
예시적으로, 파일 시스템(1012)은 FAT(File Allocation Table), FAT32, NTFS(NT File System), HFS(Hierarchical File System), JSF2(Journaled File System2), XFS, ODS-5(On-Disk Structure-5), UDF, ZFS, UFS(Unix File System), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, 또는 WinFS 등을 포함할 수 있다.
예시적으로, 파일 시스템(1012)은 데이터를 섹터 단위로 정의할 수 있다. 파일 시스템(1012)은 논리 블록 어드레스(LBA)를 기반으로 데이터를 관리할 수 있다. 예시적으로, 파일 시스템(1012)은 호스트(1010)에 의해 구동될 수 있다.
호스트 인터페이스 계층(1111, HIL; host interface layer, 이하에서, “HIL”이라 칭함)은 호스트(1010)로부터 수신된 신호들 또는 정보를 불휘발성 메모리 시스템(1100)에서 사용 가능한 신호들 또는 정보로 변환하는 역할을 수행한다. 예를 들어, HIL(1111)은 호스트(1010)로부터 수신된 논리 블록 어드레스(LBA)를 논리 페이지 넘버(LPN)로 변환(또는, 리다이렉션)할 수 있다. 이 때, HIL(1111)은 프리-부트 인증 여부에 따라 수신된 논리 블록 어드레스(LBA)가 서로 다른 영역의 논리 페이지 넘버(LPN)로 변환되도록 구성될 수 있다. 즉, 프리-부트 인증 여부에 따라 호스트(1010)에서 호스트 뷰(A10)로서 인식되는 불휘발성 메모리 시스템(1100)의 영역은 서로 다를 수 있다.
플래시 변환 계층(1112, FTL; flash translation layer, 이하에서, “FTL”이라 칭함.)은 불휘발성 메모리 장치(1112)가 효율적으로 사용되도록 논리 페이지 넘버(LPN) 및 물리 페이지 넘버(PPN)를 서로 맵핑할 수 있다. 예를 들어, 불휘발성 메모리 장치(1120)의 데이터 쓰기 및 읽기 단위들은 페이지 단위이고, 소거 단위는 블록 단위이다. 또한, 불휘발성 메모리 장치(1120)는 덮어쓰기를 지원하지 않기 때문에, 불휘발성 메모리 장치(1120)의 효율적인 관리를 위하여 HIL(1111)에 의해 변환된 논리 페이지 넘버(LPN)를 불휘발성 메모리 장치(1120)의 물리 페이지 넘버(PPN)으로 변환하는 주소 변환 동작이 요구된다. FTL(1112)은 상술된 주소 변환 동작을 맵핑 테이블을 통해 관리한다. 예시적으로, FTL(112)은 불휘발성 메모리 장치(1120)가 효율적으로 관리될 수 있도록 가비지 컬렉션(GC; garbage collection), 마모도 관리(wear-leveling) 등과 같은 동작을 수행할 수 있다.
예시적으로, HIL(1111)의 주소 변환 동작(즉, 리다이렉션 동작)에 의해 파일 시스템(1012)에서 조직화되는 논리 영역이 바뀔 수 있다. 호스트(101)는 파일 시스템(1012)에 의해 조직화된 논리 영역을 호스트 뷰(A100)로서 인식할 수 있다.
도 3은 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다. 도 1 내지 도 3을 참조하면, 메모리 컨트롤러(1110)는 호스트 인터페이스 계층(1111, HIL), 플래시 변환 계층(1112, FTL), 프로세서(1113), SRAM(1114), ROM(1115), 에러 정정 코드 엔진(1116), 및 플래시 인터페이스 계층(1117)을 포함할 수 있다. HIL(1111) 및 FTL(1112)은 도 2를 참조하여 설명되었으므로, 이에 대한 상세한 설명 생략된다.
프로세서(1113)는 메모리 컨트롤러(1110)의 제반 동작을 제어할 수 있다. 예시적으로, HIL(1111) 및 FTL(1112)은 소프트웨어 형태로 SRAM(1114)에 저장되며, 프로세서(1113)에 의해 구동될 수 있다.
SRAM(1114)은 메모리 컨트롤러(1110)의 버퍼 메모리, 캐시 메모리, 동작 메모리 등으로 사용될 수 있다. ROM(1115)은 메모리 컨트롤러(1110)가 동작 또는 부팅하는데 요구되는 정보를 펌웨어(firmware) 형태로 저장할 수 있다. 에러 정정 코드 엔진(1116)은 불휘발성 메모리 장치(1120)에 저장될 데이터에 대한 에러 정정 코드를 생성하거나 또는 불휘발성 메모리 장치(1120)로부터 읽은 데이터의 에러를 검출하고 정정할 수 있다. 메모리 컨트롤러(1110)는 플래시 인터페이스 계층(1117)을 통해 불휘발성 메모리 장치(1120)와 통신할 수 있다. 예시적으로, 플래시 인터페이스 계층(1117)은 낸드 인터페이스(NAND interface)를 포함할 수 있다.
도 4는 도 1의 불휘발성 메모리 장치를 상세하게 보여주는 블록도이다. 도 1 및 도 4를 참조하면, 불휘발성 메모리 장치(1120)는 메모리 셀 어레이(1121), 어드레스 디코더(1122), 제어 로직 회로 및 전압 발생기(1123), 페이지 버퍼(1124), 및 입출력 회로(1125)를 포함할 수 있다.
메모리 셀 어레이(1121)는 복수의 메모리 블록들을 포함한다. 복수의 메모리 블록들 각각은 복수의 셀 스트링들을 포함한다. 복수의 셀 스트링들 각각은 비트 라인(BL)과 연결되고, 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들 각각은 워드 라인(WL)과 연결된다. 예시적으로, 복수의 메모리 블록들 각각은 3차원 구조의 메모리 블록들일 수 있다.
어드레스 디코더(1122)는 스트링 선택 라인들(SSL), 워드 라인들(WL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(1121)와 연결된다. 메모리 컨트롤러(1110)로부터 물리 페이지 넘버(PPN, 또는 물리 페이지 넘버(PPN)가 포함된 물리 어드레스)를 수신할 수 있다. 어드레스 디코더(1122)는 수신된 물리 페이지 넘버(PPN)를 디코딩하여 복수의 워드 라인들(WL) 중 적어도 하나의 워드 라인을 선택하고, 선택된 적어도 하나의 워드 라인을 구동할 수 있다.
제어 로직 회로 및 전압 발생기(1123)는 메모리 컨트롤러(1110)로부터 커맨드(cmd) 및 제어 신호(CTRL)를 수신하고, 수신된 커맨드(cmd) 및 제어 신호(CTRL)에 응답하여 어드레스 디코더(1122), 페이지 버퍼(1124), 및 입출력 회로(1125)를 제어할 수 있다.
제어 로직 회로 및 전압 발생기(1123)는 불휘발성 메모리 장치(1120)가 동작하는데 요구되는 다양한 전압들을 생성할 수 있다. 예를 들어, 제어 로직 회로 및 전압 발생기(1123)는 복수의 선택 읽기 전압들, 복수의 프로그램 전압들, 복수의 비선택 읽기 전압들, 복수의 패스 전압들, 복수의 소거 전압들 등과 같은 다양한 전압들을 생성할 수 있다.
페이지 버퍼(1124)는 비트 라인들(BL)을 통해 메모리 셀 어레이(1121)와 연결된다. 페이지 버퍼(1124)는 제어 로직 회로 및 전압 발생기(1123)의 제어에 따라 메모리 셀 어레이(1121)에 데이터가 기입되도록 비트 라인(BL)을 제어할 수 있다. 또는 페이지 버퍼(1124)는 제어 로직 회로 및 전압 발생기(1123)의 제어에 따라 메모리 셀 어레이(1121)에 저장된 데이터(DATA)가 독출되도록 비트 라인(BL)을 제어할 수 있다. 예시적으로, 페이지 버퍼(1124)는 카피-백(copy-back) 동작을 지원할 수 있다.
입출력 회로(1125)는 메모리 컨트롤러(1110)로부터 데이터(DATA)를 수신하여 페이지 버퍼(124)로 전달할 수 있다. 또는 입출력 회로(1125)는 페이지 버퍼(1124)로부터 읽은 데이터(DATA)를 수신하여 메모리 컨트롤러(110)로 전달할 수 있다. 예시적으로, 입출력 회로(1125)는 글로벌 버퍼를 포함할 수 있다.
도 5는 도 1의 사용자 시스템의 논리 영역들 및 물리 영역들을 상세하게 설명하기 위한 블록도이다. 도 6 및 도 7은 프리-부트 인증 동작을 설명하기 위한 블록도들이다.
간결한 설명을 위하여, 이하에서, 호스트 뷰(A100)는 호스트(1010)에 의해 인식되는 불휘발성 메모리 시스템(1100)의 논리 저장 영역(즉, 호스트(1010)에서 바라보는 불휘발성 메모리 시스템(1100)의 저장 영역)이며, 논리 블록 어드레스(LBA)를 기반으로 조직화되는 것으로 가정한다.
또한, 논리 저장 영역(A200)은 제1 논리 영역(A210) 및 제2 논리 영역(A220)을 포함하고, 제1 및 제2 논리 영역들(A210, A220)은 메모리 컨트롤러(1110)에 의해 정의된 논리 영역들이며, 논리 페이지 넘버(LPN)에 의해 관리되며, 각각 논리 페이지 넘버들(LPN0000~LPN1999) 및 논리 페이지 넘버들(LPN2000~LPN2099)을 포함하는 것으로 가정한다.
제1 논리 영역(A210)은 사용자에 의해 데이터가 기입 또는 독출되는 유저 영역이고, 제2 논리 영역(A220)은 프리-부트 인증을 위한 프리-부트 영역(또는 쉐도우 마스터 부트 레코드 영역(shadow master boot record area))인 것인 것으로 가정한다.
물리 저장 영역(A300)은 제1 내지 제3 물리 영역들(A310, A320, A330)을 포함하고, 제1 내지 제3 물리 영역들(A310, A320, A330)은 각각 불휘발성 메모리 장치(1120)에 포함된 물리 페이지들을 포함하고, 물리 페이지 넘버(PPN)에 의해 관리되는 것으로 가정한다.
간결한 설명을 위하여 상술된 바와 같이 본 발명에서 사용되는 참조 번호 및 용어들을 정의하였으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명의 사상 범위 내에서 다양하게 변형될 수 있다.
먼저, 도 5를 참조하면, 호스트(1010)는 호스트 뷰(A100)로서 불휘발성 메모리 시스템(1100)의 저장 영역을 인식할 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 논리 페이지 넘버(LPN)를 기반으로 논리 저장 영역(A200)을 관리할 수 있다. 논리 저장 영역(A200)은 제1 논리 영역(A210) 및 제2 논리 영역(A220)을 포함한다. 메모리 컨트롤러(1110)의 HIL(111)은 제1 및 제2 논리 영역들(A210, A220) 중 어느 하나가 호스트 뷰(A100)로써 호스트(1010)에 인식되도록 논리 블록 어드레스(LBA)를 논리 페이지 넘버(LPN)로 리다이렉션(redirection)할 수 있다. 예시적으로, 제1 논리 영역(A210)은 사용자에 의해 데이터가 저장되고 독출되는 유저 영역을 가리키고, 제2 논리 영역(A220)은 프리-부트 인증을 위한 영역을 가리킨다. 예시적으로, 제1 논리 영역(A210)은 마스터 부트 레코드(MBR; master boot record)를 포함하고, 제2 논리 영역(A220)은 쉐도우 마스터 부트 레코드(sMBR; shadow master boot record)를 포함할 수 있다.
불휘발성 메모리 장치(1120)는 물리 저장 영역(A300)을 포함한다. 물리 저장 영역(A300)은 실제 데이터가 저장되는 물리적인 저장 영역을 가리킨다. 물리 저장 영역(A300)은 제1 내지 제3 물리 영역들(A310, A320, A330)을 포함한다. 제1 물리 영역(A310)은 FTL(112)에 의해 제1 논리 영역(A210)과 맵핑된다. 제2 물리 영역(A320)은 FTL (112)에 의해 제2 논리 영역(A220)과 맵핑된다. 제3 물리 영역(A330)은 제1 또는 제2 물리 영역(A310 or A320)에서 배드 블록이 발생할 때, 배드 블록과 대체되는 메모리 블록들을 포함할 수 있다. 또는 제3 물리 영역(A330)은 프리 블록들을 포함할 수 있다.
다음으로, 도 6을 참조하면, 호스트(1010)가 부팅될 경우(또는, 불휘발성 메모리 시스템(1100)과 링크 업될 경우), 호스트(1010)는 시작 논리 블록 어드레스(LBA0000)에 대한 읽기 동작을 수행할 수 있다. 예시적으로, 시작 논리 블록 어드레스(LBA0000)와 대응되는 저장 영역은 마스터 부트 레코드(MBR) 또는 쉐도우 마스터 부트 레코드(sMBR)를 포함할 수 있다. 호스트(1010)는 마스터 부트 레코드(MBR) 또는 쉐도우 마스터 부트 레코드(sMBR)를 읽음으로써 불휘발성 메모리 시스템(1100)의 저장 영역을 호스트 뷰(A100)로써 인식할 수 있다.
메모리 컨트롤러(1110)의 HIL(1111)은 호스트(1010)로부터 수신된 시작 논리 블록 어드레스(LBA0000)를 논리 페이지 넘버(LPN)로 리다이렉션할 수 있다. 이 때, 호스트(1010)가 프리-부트 인증을 수행하지 않은 경우, 메모리 컨트롤러(1100)는 호스트(1010)가 제2 논리 영역(A220)을 호스트 뷰(A10)로써 인식하도록 수신된 시작 논리 블록 어드레스(LBA0000)를 제2 논리 영역(A220)의 시작 논리 페이지 넘버(LPN2000)로 리다이렉션(redirection)할 수 있다.
예시적으로, 제2 논리 영역(A220)의 시작 논리 페이지 넘버(LPN2000)에 대응되는 물리 영역에는 쉐도우 마스터 부트 레코드(sMBR)가 존재할 수 있다. 쉐도우 마스터 부트 레코드(sMBR, 미도시)는 제2 논리 영역(A220)의 크기, 종류, 상태 등과 같은 정보를 포함할 수 있다. 예시적으로, 쉐도우 마스터 부트 레코드(sMBR)는 호스트(1010)에 의해 정의될 수 있다.
호스트(1010)는 쉐도우 마스터 부트 레코드(sMBR)를 읽어 제2 논리 영역(A220)을 호스트 뷰(A100)로서 인식할 수 있다. 예시적으로, 호스트(1010)의 프로세서(미도시)에 의해 구동되는 펌웨어가 쉐도우 마스터 부트 레코드(sMBR)를 읽고, 실행할 수 있다.
메모리 컨트롤러(1110)의 FTL(1112)은 제2 논리 영역(A220)의 논리 페이지 넘버들(LPN2000~LPN2099)과 대응되는 제2 물리 영역(A320)의 물리 페이지 넘버들(PPN)을 관리할 것이다.
이 때, 호스트(1010)는 제2 논리 영역(A220)을 호스트 뷰(A100)로 인식하고, 제2 물리 영역(A320)에 저장된 데이터가 로드된다. 즉, 호스트(101)가 프리-부트 인증을 수행하기 전인 경우, 제2 논리 영역(A220)만 인식되고 제1 논리 영역(A210)은 인식되지 않기 때문에, 호스트(1010)는 제1 논리 영역(A210)을 인식하지 못하거나 또는 제1 물리 영역(A310)을 엑세스할 수 없다.
다음으로, 도 7을 참조하면, 호스트(1010)가 프리-부트 인증이 완료된 경우, 호스트(1010)는 시작 논리 블록 어드레스(LBA0000)에 대한 읽기 동작을 수행할 수 있다. 예시적으로, 프리-부트 인증이 완료된 경우, 메모리 컨트롤러(1110)는 호스트(1010)와 재 링크 업(relink-up)할 수 있다. 즉, 프리-부트 인증이 완료된 경우, 메모리 컨트롤러(1110)는 호스트(1010)와 연결을 종료한 뒤, 다시 호스트(1010)와의 연결을 시도한다. 이 때, 호스트(1010)는 시작 논리 블록 어드레스(LBA0000)에 대한 읽기 동작을 수행할 수 있다.
프리-부트 인증이 완료되었으므로, 메모리 컨트롤러(1110)는 호스트(1010)가 제1 논리 영역(A210)을 인식하도록 수신된 시작 논리 블록 어드레스(LBA0000)를 제1 논리 영역(A210)의 시작 논리 페이지 넘버(LPN0000)로 리다이렉션한다.
이 경우, 호스트(1010)는 제1 논리 영역(A210)을 호스트 뷰(A100)로 인식할 수 있다. 예를 들어, 제1 논리 영역(A210)의 시작 논리 페이지 넘버(LPN0000)와 대응되는 저장 영역은 마스터 부트 레코드(MBR; master boot record, 미도시)를 포함할 수 있다. 예시적으로, 마스터 부트 레코드(MBR)는 제1 논리 영역(A210)의 크기, 종류, 상태 등과 같은 정보를 포함할 수 있다. 예시적으로, 마스터 부트 레코드(MBR)는 호스트(1010)의 파일 시스템(1012)에 의해 정의될 수 있다. 시작 논리 블록 어드레스(LBA0000)가 제1 논리 영역(A210)의 시작 논리 페이지 넘버(LPN0000)로 리다이렉션됨으로써, 호스트(1010)는 마스터 부트 레코드(MBR)를 읽고, 제1 논리 영역(A210)을 호스트 뷰(A100)로 인식할 수 있다.
FTL(112)은 제1 논리 영역(A210)의 논리 페이지 넘버들(LPN0000~LPN1999) 및 제1 물리 영역(A310)의 물리 페이지 넘버들(PPN)의 매핑 정보를 관리할 수 있다.
예시적으로, 호스트 인터페이스 계층(111)에 의해 관리되는 논리 블록 어드레스들(LBA) 및 논리 페이지 넘버들(LPN)은 각각에 대하여 순차적으로 증가할 수 있다. 그러나, FTL(112)에 의해 관리되는 물리 페이지 넘버들(PPN)은 논리 페이지 넘버들(LPN)에 대하여 비순차적일 수 있다.
도 8 내지 도 10은 제2 논리 영역에 대한 업데이트 방법을 설명하기 위한 블록도들이다. 간결한 설명 및 도면의 간결성을 위하여, 제2 논리 영역(A220)에 대한 업데이트 방법을 설명하는데 불필요한 구성 요소들은 생략된다.
간결한 설명을 위하여, 호스트 뷰(A10) 및 논리 영역(A20)을 참조하여 사용자 시스템(1000)의 동작이 설명되나 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 논리 저장 영역(A200), 제1 논리 영역(A210), 또는 제2 논리 영역(A220)에 데이터를 저장하는 것은 논리 저장 영역(A200), 제1 논리 영역(A21), 또는 제2 논리 영역(A220)과 대응되는 물리 저장 영역(A300)에 데이터가 저장됨을 의미하고, 논리 저장 영역(A200), 제1 논리 영역(A210), 또는 제2 논리 영역(A220)과 대응되는 물리 저장 영역(A300)은 FTL(1112)에 의해 관리되는 것을 가리킨다.
먼저, 도 8을 참조하면, 호스트(1010)는 제2 논리 영역(A220)을 업데이트하기 위하여 호스트 뷰(A100) 중 일부 영역을 업데이트 영역(A110)으로 할당할 수 있다. 예시적으로, 호스트(1010)가 제1 논리 영역(A210)을 호스트 뷰(A100)로 인식하고 있을 때, 업데이트 영역(A110)이 할당될 수 있다. 업데이트 영역(A110)을 할당하는 동작은 제조사 프로그램(vendor program), 사용자 프로그램 등과 같은 애플리케이션 계층(1011, 도 2 참조) 또는 파일 시스템(1012, 도 2 참조)에서 수행될 수 있다.
호스트(1010)는 할당된 업데이트 영역(A110)의 정보(AUA) 및 커맨드(CMD_vu)를 메모리 컨트롤러(1110)에 전송할 수 있다. 예시적으로, 할당된 업데이트 영역(A110)의 정보(AUA)는 할당된 업데이트 영역(A110)의 논리 블록 어드레스 및 논리 블록 어드레스 길이, 또는 논리 블록 어드레스 범위와 같은 정보를 포함할 수 있다. 예시적으로, 커맨드(CMD_vu)는 HIL(1111)에 의해 정의된 예비 커맨드(reserved command)이거나, 또는 HIL(1111)에 의해 정의된 커맨드들의 조합이거나 또는 HIL(1111)에 의해 정의되지 않은 특정 커맨드이거나, 또는 벤더 커맨드(vendor command)일 수 있다. 예시적으로, 커맨드(CMD_vu)는 할당된 업데이트 영역(A110)의 정보(AUA)를 메모리 컨트롤러(1110)로 알리기 위한 커맨드일 수 있다.
메모리 컨트롤러(1110)는 수신된 업데이트 영역(A110)의 정보(AUA)에 대응되는 영역을 업데이트 논리 영역(A230)으로 설정할 수 있다. 예시적으로, 메모리 컨트롤러(1110)는 업데이트 영역(A110)의 정보(AUA)에 대응되는 업데이트 논리 영역(A230)의 정보를 SRAM(114)에 저장하고 관리할 수 있다.
다음으로, 도 9를 참조하면, 호스트(1010)는 업데이트 영역(A110)에 업데이트 데이터(DATA_u0 ~ DATA_u2)가 기입되도록 쓰기 커맨드(CMD_w), 논리 블록 어드레스(LBA) 및 업데이트 데이터(DATA_u0 ~ DATA_u2)를 메모리 컨트롤러(1110)로 전송할 수 있다. 예시적으로, 전송되는 논리 블록 어드레스(LBA)는 업데이트 영역(A110)에 포함되는 어드레스일 수 있다.
메모리 컨트롤러(1110)는 수신된 업데이트 데이터(DATA_u0 ~ DATA_u2)를 수신된 논리 블록 어드레스(LBA)와 대응되는 영역(즉, 업데이트 논리 영역(A230))에 저장할 수 있다. 예시적으로, 업데이트 논리 영역(A230)에 저장된 업데이트 데이터(DATA_u0 ~ DATA_u2)는 제1 물리 영역(A31, 도 5 참조) 중 업데이트 논리 영역(A230)과 대응되는 물리 영역에 실제로 저장될 것이다. 상술된 업데이트 논리 영역(A230)에 대응되는 물리 영역은 FTL(112)의 어드레스 변환 동작을 기반으로 관리될 수 있다.
다음으로, 도 10을 참조하면, 업데이트 데이터(DATA_u0~DATA_u2)가 모두 기입된 이후, 호스트(1010)는 업데이트 완료 정보(INF)를 메모리 컨트롤러(1110)로 전송할 수 있다. 메모리 컨트롤러(1110)는 업데이트 완료 정보(INF)에 응답하여 제2 논리 영역(A220)을 유저 영역으로 반환할 수 있다. 즉, 메모리 컨트롤러(1110)가 제2 논리 영역(A22)을 유저 영역으로 반환함으로써 호스트(1010)는 제1 논리 영역(A110) 및 제2 논리 영역(A220)을 호스트 뷰(A100)로서 인식할 수 있다.
이 후, 프리-부트 인증이 요구되는 경우, 메모리 컨트롤러(1110)는 호스트(1010)가 업데이트 영역(A230)을 인식하도록 리다이렉션 동작을 수행할 수 있다.
상술된 바와 같이 호스트(1010)는 제2 논리 영역(A220)을 업데이트하기 위하여 호스트 뷰(A100) 중 일부를 업데이트 영역(A110)으로 할당한다. 이 때, 업데이트 영역(A110)이 불연속적인 논리 블록 어드레스(LBA)를 갖는 경우(즉, 업데이트 영역(A110)이 단편화된 경우), 업데이트 논리 영역(A230) 또한 불연속적인 논리 페이지 넘버(LPN)를 갖는다. 이로 인하여, 업데이트 동작이 완료된 이후, 업데이트 논리 영역(A230)에 대한 별도의 관리가 요구되는 문제점이 있다.
도 11은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도이다. 도 12는 도 11의 S140 단계를 설명하기 위한 블록도들이다. 간결한 설명을 위하여, S110 단계 내지 S130 단계의 동작들은 도 8을 참조하여 설명되었으므로, 이에 대한 설명은 상세한 생략된다.
도 11 및 도 12를 참조하면, S110 단계에서, 메모리 컨트롤러(2110)는 호스트(2010)로부터 업데이트 영역의 정보(ALA) 및 커맨드(CMD_vu)를 수신할 수 있다. 업데이트 영역(B110)의 정보(ALA) 및 커맨드(CMD_vu)는 도 8을 참조하여 설명되었으므로, 이에 대한 설명은 생략된다.
S120 단계에서, 메모리 컨트롤러(2110)는 수신된 업데이트 영역(B110)의 정보(ALA)와 대응되는 논리 영역을 업데이트 논리 영역(A230)으로 할당할 수 있다.
S130 단계에서, 메모리 컨트롤러(2110)는 호스트(2010)로부터 쓰기 커맨드(CMD_w), 업데이트 데이터(DATA_u), 및 논리 블록 어드레스(LBA)를 수신할 수 있다. 예시적으로, S130 단계에서 수신되는 논리 블록 어드레스(LBA)는 업데이트 영역의 정보(ALA)에 포함되는 논리 블록 어드레스(LBA)일 수 있다.
S140 단계에서, 메모리 컨트롤러(2110)는 수신된 업데이트 데이터(DATA_u)가 제2 논리 영역(B220)에 기입되도록 수신된 논리 블록 어드레스(LBA)를 제2 논리 영역(B220)의 논리 페이지 넘버(LPN)으로 리다이렉션할 수 있다.
예를 들어, 도 8 내지 도 10을 참조하여 설명된 업데이트 방법에서는 수신된 논리 블록 어드레스에 대응되는 영역(즉, 업데이트 논리 영역)에 업데이트 데이터를 기입하였으나, 도 11의 동작에 따른 메모리 컨트롤러(2110)는 업데이트 논리 영역(B230)이 아닌 제2 논리 영역(B220, 즉, 호스트(2010)에 의해 인식되지 않는 논리 저장 영역)에 업데이트 데이터를 기입한다.
다시 말해서, 논리 블록 어드레스(LBA)는 업데이트 영역(B110)의 정보(ALA)에 포함될 것이다. 즉, 일반적인 경우, 업데이트 데이터(DATA_u0)는 업데이트 논리 영역(A230)에 기입될 것이다.
그러나, 본 발명의 실시 예에 따른 메모리 컨트롤러(2110)는, 제2 논리 영역(B220)의 업데이트 동작을 수행하는 경우, 업데이트 영역(B110)의 정보(ALA)에 포함되는 논리 블록 어드레스들(LBA)을 업데이트 논리 영역(B230)의 논리 페이지 넘버들(LPN)이 아닌 제2 논리 영역(B220)의 논리 페이지 넘버들(LPN)로 리다이렉션(redirection)할 것이다. 즉, 수신된 논리 블록 어드레스들(LBA)이 제2 논리 영역(B220)의 논리 페이지 넘버들(LPN)로 리다이렉션(redirection)됨으로써, 업데이트 데이터(DATA_u0~DATA_u2)가 업데이트 논리 영역(B230)이 아닌 제2 논리 영역(B220)에 기입될 것이다.
S150 단계에서, 업데이트 동작을 완료한 이후에, 메모리 컨트롤러(1110)는 업데이트 논리 영역(B230)을 해제(release)할 수 있다. 예를 들어, 메모리 컨트롤러(1110)는 호스트(1010)의 제어에 따라 업데이트 논리 영역(B230)을 제1 논리 영역(B210)으로 반환할 수 있다. 예시적으로, S150 단계의 해제 동작은 호스트(2010)의 애플리케이션 또는 파일 시스템에서 수행될 수 있다.
도 13은 도 11의 S140 단계의 다른 실시 예를 설명하기 위한 블록도이다. 도 13을 참조하면, 호스트(3010)에 의해 할당된 업데이트 영역들(C111, C112, C113)은 서로 불연속적인 논리 블록 어드레스를 가질 수 있다. 즉, 할당된 업데이트 영역이 단편화될 수 있다.
이 경우, 호스트(3010)는 업데이트 영역들(C111, C112, C113) 각각의 정보를 메모리 컨트롤러(3110)로 전송할 수 있다. 메모리 컨트롤러(3110)는 수신된 정보를 기반으로 업데이트 영역들(C111, C112, C113)과 대응하는 논리 영역들을 업데이트 논리 영역들(C231, C232, C233)로로 할당할 수 있다.
이 후, 도 12를 참조하여 설명된 바와 동일한 방법을 기반으로 업데이트 데이터(DATA_u0~DATA_u2)를 제2 논리 영역(C220)에 기입할 수 있다.
상술된 바와 같이 본 발명에 따른 메모리 컨트롤러(3110)는 제2 논리 영역(C220)을 업데이트할 경우, 할당된 업데이트 논리 영역(C230)에 업데이트 데이터를 기입하는 대신에 제2 논리 영역(C220)에 업데이트 데이터가 기입되도록 논리 블록 어드레스를 제2 논리 영역(C220)의 논리 페이지 넘버(LPN)로 리다이렉션할 수 있다. 이에 따라, 할당된 업데이트 영역이 불연속적인 논리 블록 어드레스를 갖더라도 제2 논리 영역에 대한 업데이트 동작을 안정적이고 효율적으로 수행할 수 있다. 따라서, 향상된 성능 및 신뢰성을 갖는 사용자 시스템이 제공된다.
도 14 내지 도 16은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도 및 블록도들이다. 도 1, 및 도 14 내지 도 16을 참조하면, S210 내지 S230 단계들은 S110 내지 S130 단계들과 동일하므로, 이에 대한 설명은 생략된다.
S240 단계에서, 메모리 컨트롤러(110)는 제2 논리 영역(D221)에 업데이트 데이터가 기입되도록 수신된 논리 블록 어드레스(LBA)를 제3 논리 영역(D222)의 논리 페이지 넘버(LPN)로 리다이렉션할 수 있다.
예를 들어, 도 15에 도시된 바와 같이 메모리 컨트롤러(110)에 의해 관리되는 논리 영역(D200)은 제1 내지 제3 논리 영역들(D210, D221, D222)을 포함할 수 있다. 예시적으로, 제1 논리 영역(D210)은 유저 영역이고, 제2 논리 영역(D221)은 메인 프리 부트 영역(main pre-boot area)이고, 제3 논리 영역(D222)은 서브 프리 부트 영역(sub pre-boot area)일 수 있다.
프리-부트 인증이 수행되지 않은 경우, 메모리 컨트롤러(4110)는 호스트(4010)가 제2 논리 영역(D221, 즉, 메인 sMBR 영역)을 호스트 뷰(D100)로 인식하도록 논리 블록 어드레스(LBA)를 리다이렉션할 수 있다.
제2 논리 영역(D221)에 대한 업데이트시, 메모리 컨트롤러(4110)는 업데이트 데이터(DATA_u0~DATA_u2)가 제3 논리 영역(D222)에 기입되도록 논리 블록 어드레스(LBA)를 리다이렉션할 것이다. 이 때, 제2 및 제3 논리 영역들(D221, D222)은 서로 논리적으로 구분된 영역들이며, 호스트(4101)에 의해 인식되지 않는 논리 저장 영역일 수 있다.
업데이트 데이터(DATA_u0~DATA_u2)가 모두 제3 논리 영역(D222)에 업데이트된 이후, S250 단계에서, 메모리 컨트롤러(4110)는 제3 논리 영역(D222) 및 제2 논리 영역(D221)을 서로 스왑할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 도 16에 도시된 바와 같이 업데이트 데이터(DATA_u0~DATA_u3)가 저장된 제3 논리 영역(D222)을 메인 sMBR 영역으로 설정하고, 제2 논리 영역(D221)을 서브 sMBR 논리 영역으로 설정할 수 있다. 이 후, 프리-부트 인증이 요구되는 경우, 메모리 컨트롤러(4110)는 메인 sMBR 논리 영역으로 설정된 제3 논리 영역(D222)이 호스트 뷰(D100)으로 인식되도록 시작 논리 블록 어드레스(LBA)를 리다이렉션할 것이다. 또한, 이후, 프리-부트 영역에 대한 업데이트가 요구되는 경우, 메모리 컨트롤러(4110)는 업데이트 데이터를 서브 sMBR 논리 영역으로 설정된 제2 논리 영역(D221)에 기입할 수 있다.
예시적으로, 도 15 및 도 16를 참조하여 설명된 메모리 컨트롤러(4110)의 동작 방법은 업데이트 영역(D110)이 단편화되었을 경우에도 적용될 수 있다.
상술된 본 발명의 실시 예에 따르면, 프리 부트 영역이 업데이트될 때, 할당된 업데이트 영역이 아닌 프리 부트 영역에 업데이트 데이터를 기입함으로써 향상된 신뢰성 및 성능을 갖는 사용자 시스템이 제공된다.
도 17은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러의 동작을 보여주는 순서도이다. 도 18은 도 17에 도시된 동작을 설명하기 위한 블록도이다. 도 17 및 도 18을 참조하면, S310 및 S320 단계들은 도 11의 S110 및 S120 단계들과 동일하므로 이에 대한 설명은 생략된다.
S330 단계에서, 메모리 컨트롤러(5110)는 플래그 정보(FLAG)를 프로그램한다. 플래그 정보(FLAG)는 제2 논리 영역(E220)이 업데이트 중임을 가리키는 정보이다. 예를 들어, 도 18에 도시된 바와 같이 메모리 컨트롤러(5110)는 제1 논리 영역(E210, 즉, 유저 영역)에 플래그 정보(FLAG)를 기입할 수 있다. 예시적으로, 플래그 정보(FLAG)는 특정 패턴의 데이터, 임의 데이터, 또는 하나의 비트 등과 같이 다양한 패턴들 중 어느 하나로 제공될 수 있다.
예시적으로, 플래그 정보(FLAG)는 호스트(5010)의 제어에 따라 프로그램될 수 있다. 예시적으로, 호스트(5010)는 제1 논리 영역(E210)에 포함된 마스터 부트 레코드(MBR)를 읽을 때, 플래그 정보(FLAG)를 함께 읽을 수 있다.
이 후, 메모리 컨트롤러(5110)는 S340 내지 S360 단계들을 수행한다. S340 내지 S360 단계들은 도 11의 S130 내지 S150 단계들과 동일하므로, 이에 대한 설명은 생략된다.
이 후, S360 단계에서, 메모리 컨트롤러(5110)는 제1 논리 영역(E210) 플래그 정보(FLAG)를 소거한다. 예를 들어, 업데이트 동작이 완료된 이후, 메모리 컨트롤러(5110)는 호스트(5010)의 제어에 따라 플래그 정보(FLAG)를 소거할 수 있다. 이 경우, 호스트(5010)가 제1 논리 영역(E210)에 포함된 마스터 부트 레코드(MBR)를 읽을 때, 플래그 정보(FLAG)가 읽어지지 않을 것이다.
상술된 본 발명의 다른 실시 예에 따르면, 메모리 컨트롤러(5110)는 제2 논리 영역(즉, 프리 부트 영역)을 업데이트할 때, 플래그 정보(FLAG)를 기입한다. 이 경우, 제2 논리 영역을 업데이트하는 도중에 전원이 차단되거나 또는 외부 요인으로 인하여 업데이트 동작이 중단될 경우, 호스트(5010)는 플래그 정보(FLAG)를 기반으로 제2 논리 영역이 업데이트 중임을 인지할 수 있다. 따라서, 제2 논리 영역에 대한 업데이트 동작의 신뢰성이 향상된다.
예시적으로, 호스트(5010)가 제1 논리 영역(E210)의 마스터 부트 레코드(MBR; 미도시)을 읽고, 읽은 마스터 부트 레코드(MBR; 미도시)를 실행함으로써 플래그 정보(FLAG)가 읽어질 수 있다.
도 19는 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러를 보여주는 블로도이다. 도 19를 참조하면, 메모리 컨트롤러(6110)는 호스트 인터페이스 계층(6111), 플래시 변환 계층(6112), 프로세서(6113), SRAM(6114), ROM(6115), ECC 엔진(6116), 플래시 인터페이스 계층(6117), 및 저장 회로(6118)을 포함할 수 있다. 호스트 인터페이스 계층(6111), 플래시 변환 계층(6112), 프로세서(6113), SRAM(6114), ROM(6115), ECC 엔진(6116), 및 플래시 인터페이스 계층(6117)은 도 2 및 도 3을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 19의 메모리 컨트롤러(6110)는 도 3의 메모리 컨트롤러(1110)와 비교하여 저장 회로(6118)를 더 포함한다. 저장 회로(6118)는 퓨즈 회로, 레지스터 회로 등과 같은 저장 매체로 구현될 수 있다. 메모리 컨트롤러(6110)는 제2 논리 영역(즉, 프리 부트 영역)을 업데이트할 때, 저장 회로(6118)에 플래그 정보(FLAG)를 저장할 수 있다. 예를 들어, 호스트(6010)는 제2 논리 영역을 업데이트하기 위하여 메모리 컨트롤러(6110)로 커맨드(CMD_vu, 즉, 벤더 커맨드) 및 업데이트 영역의 정보(ALA)를 전송할 수 있다. 메모리 컨트롤러(6110)는 커맨드(CMD_vu)에 응답하여 업데이트 영역의 정보(ALA)에 대응되는 논리 저장 영역을 업데이트 논리 영역으로 할당하고, 플래그 정보(FLAG)를 저장 회로(6118)에 저장할 수 있다. 예시적으로, 플래그 정보(FLAG)는 특정 패턴의 데이터, 임의 데이터, 또는 하나의 비트 등과 같이 다양한 패턴들 중 어느 하나로 제공될 수 있다.
메모리 컨트롤러(6110)는 업데이트 동작을 완료한 이후 저장 회로(6118)에 저장된 플래그 정보(FLAG)를 삭제할 수 있다. 예를 들어, 메모리 컨트롤러(6110)는 제2 논리 영역에 업데이트 데이터가 모두 기입되었는지 판단할 수 있다. 제2 논리 영역에 업데이트 데이터가 모두 기입된 경우 메모리 컨트롤러(6110)는 저장 회로(6118)에 저장된 플래그 정보(FLAG)를 삭제할 수 있다. 또는 호스트(6010)는 제2 논리 영역에 대한 업데이트가 완료되었음을 가리키는 정보를 메모리 컨트롤러(6110)로 전송할 수 있다. 이 때, 메모리 컨트롤러(6110)는 수신된 정보에 응답하여 저장 회로(6118)에 저장된 플래그 정보(FLAG)를 삭제할 수 있다.
도 20은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다. 도 20을 참조하면, 메모리 카드 시스템(10000)은 컨트롤러(11000), 불휘발성 메모리(12000), 및 커넥터(13000)를 포함한다.
컨트롤러(11000)는 불휘발성 메모리(12000)와 연결된다. 컨트롤러(11000)는 불휘발성 메모리(12000)를 액세스하도록 구성된다. 예를 들어, 컨트롤러(12000)는 불휘발성 메모리(11000)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(12000)는 불휘발성 메모리(11000) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(12000)는 불휘발성 메모리(11000)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(11000)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
컨트롤러(11000)는 커넥터(13000)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(11000)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(12000)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embeded MMC), 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), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다.
예시적으로, 컨트롤러(11000)는 도 1 내지 도 19를 참조하여 설명된 메모리 컨트롤러일 수 있다. 불휘발성 메모리(12000)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 컨트롤러(11000) 및 불휘발성 메모리(12000)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(12000) 및 불휘발성 메모리(11000)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 컨트롤러(11000) 및 불휘발성 메모리(11000)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(11000) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
예시적으로, 메모리 카드 시스템(10000)은 자가 암호화 드라이브(SED) 기능을 지원할 수 있고, 메모리 컨트롤러(11000)는 프리 부트 영역을 관리할 수 있다. 메모리 카드 시스템(10000)은 도 1 내지 도 19를 참조하여 설명된 방법을 기반으로 프리 부트 영역에 대한 업데이트 동작을 수행할 수 있다.
도 21은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 21을 참조하면, SSD 시스템(20000)은 호스트(21000) 및 SSD(22000)를 포함한다. SSD(22000)는 신호 커넥터(20001)를 통해 호스트(21000)와 신호(SIG)를 주고 받고, 전원 커넥터(20002)를 통해 전원(PWR)을 입력받는다. SSD(22000)는 SSD 컨트롤러(22100), 복수의 플래시 메모리들(22210~222n0), 보조 전원 장치(22300), 및 버퍼 메모리(22400)를 포함한다.
SSD 컨트롤러(22100)는 호스트(21000)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(22210~222n0)을 제어할 수 있다. 예시적으로, 신호(SIG)는 호스트(21000) 및 SSD(22000)의 인터페이스에 기반된 신호들일 수 있다. 예시적으로, SSD 컨트롤러(2210)는 도 1 내지 도 19를 참조하여 설명된 메모리 컨트롤러일 수 있다.
보조 전원 장치(22300)는 전원 커넥터(20002)를 통해 호스트(21000)와 연결된다. 보조 전원 장치(22300)는 호스트(21000)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 보조 전원 장치(22300)는 호스트(21000)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(20000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(22300)는 SSD(22000) 내에 위치할 수도 있고, SSD(22000) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(22300)는 메인 보드에 위치하며, SSD(22000)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(22400)는 SSD(22000)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(22400)는 호스트(21000)로부터 수신된 데이터 또는 복수의 플래시 메모리들(22210~222n0)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(22210~222n0)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(22400)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
예시적으로, SSD 컨트롤러(22100)는 도 1 내지 도 19를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 예시적으로, SSD(22000)는 탈착식 장치(removable drive)로 제공될 수 있다. SSD(22000)는 호스트(21000)의 보조 저장 매체 또는 외장형 저장 매체로 사용될 수 있다.
도 22는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다. 도 22를 참조하면, 사용자 시스템(30000)은 애플리케이션 프로세서(31000), 메모리 모듈(32000), 네트워크 모듈(33000), 스토리지 모듈(34000), 및 사용자 인터페이스(35000)를 포함한다.
애플리케이션 프로세서(31000)는 사용자 시스템(30000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(3100)는 사용자 시스템(30000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(31000)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(32000)은 사용자 시스템(30000)의 주메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(32000)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 예시적으로 애플리케이션 프로세서(31000) 및 메모리 모듈(32000)은 POP(Package on Package)를 기반으로 패키지화되어 실장될 수 있다.
네트워크 모듈(33000)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(33000)은 애플리케이션 프로세서(31000)에 포함될 수 있다.
스토리지 모듈(34000)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(34000)은 애플리케이션 프로세서(31000)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(34000)은 스토리지 모듈(34000)에 저장된 데이터를 애플리케이션 프로세서(31000)로 전송할 수 있다. 예시적으로, 스토리지 모듈(34000)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다. 예시적으로, 스토리지 모듈(34000)은 사용자 시스템(30000)의 메모리 카드, 외장형 드라이브 등과 같은 탈착식 저장 매체(removable drive)로 제공될 수 있다.
예시적으로, 스토리지 모듈(3400)은 도 1 내지 도 19를 참조하여 설명된 불휘발성 메모리 시스템일 수 있다.
사용자 인터페이스(3500)는 애플리케이션 프로세서(3100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(3500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
상술된 본 발명의 실시 예들에 따르면, 불휘발성 메모리 시스템은 메모리 컨트롤러 및 불휘발성 메모리 장치를 포함한다. 메모리 컨트롤러는 불휘발성 메모리 장치를 제1 및 제2 논리 영역들로 분할하여 관리할 수 있다. 이 때, 제1 논리 영역은 호스트(또는 사용자)에 의해 데이터가 저장 또는 독출되는 유저 영역을 가리키고, 제2 논리 영역은 프리-부트 인증을 위한 프리 부트 영역을 가리킬 수 있다. 불휘발성 메모리 시스템과 연결된 호스트는 제2 논리 영역을 업데이트할 수 있다. 이 때, 호스트는 제1 논리 영역 중 일부를 제2 논리 영역을 업데이트하기 위한 영역으로 할당하고, 할당된 논리 영역의 정보를 메모리 컨트롤러로 제공한다. 메모리 컨트롤러는 할당된 논리 영역에 대응하는 쓰기 커맨드에 대하여 할당된 논리 영역이 아닌 제2 논리 영역에 데이터를 기입하여 제2 논리 영역을 업데이트한다. 따라서, 향상된 신뢰성 및 성능을 갖는 불휘발성 메모리 시스템이 제공된다.
본 발명의 상세한 설명에서는 구체적인 실시 예들에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
1000 : 사용자 시스템
1010 : 호스트
1100 : 불휘발성 메모리 시스템
1110 : 메모리 컨트롤러
1120 : 불휘발성 메모리 장치
1111 : 호스트 인터페이스 계층(HIL)
1112 : 플래시 변환 계층(FTL)
A100, B100, C100, D100, E100 : 호스트 뷰
A200, B200, C200, D200, E200 : 논리 저장 영역
A210, B210, C210, D210, E210 : 제1 논리 영역
A220, B220, C220, D220, E220 : 제2 논리 영역
A300, B300, C300, D300, E300 : 물리 저장 영역
1010 : 호스트
1100 : 불휘발성 메모리 시스템
1110 : 메모리 컨트롤러
1120 : 불휘발성 메모리 장치
1111 : 호스트 인터페이스 계층(HIL)
1112 : 플래시 변환 계층(FTL)
A100, B100, C100, D100, E100 : 호스트 뷰
A200, B200, C200, D200, E200 : 논리 저장 영역
A210, B210, C210, D210, E210 : 제1 논리 영역
A220, B220, C220, D220, E220 : 제2 논리 영역
A300, B300, C300, D300, E300 : 물리 저장 영역
Claims (10)
- 물리 저장 영역을 포함하는 불휘발성 메모리 장치; 및
제1 및 제2 논리 영역들을 기반으로 상기 물리 저장 영역을 관리하고, 호스트로부터 상기 제1 논리 영역의 일부에 대응하는 논리 블록 어드레스 범위 및 커맨드를 수신하도록 구성되고, 상기 호스트로부터 데이터, 논리 블록 어드레스, 및 쓰기 커맨드를 수신하여 상기 제2 논리 영역에 대한 업데이트를 수행하도록 구성되는 메모리 컨트롤러를 포함하고,
상기 업데이트시 상기 수신된 논리 블록 어드레스가 상기 논리 블록 어드레스 범위에 포함된 경우, 상기 메모리 컨트롤러는 상기 쓰기 커맨드에 응답하여 상기 데이터가 상기 제2 논리 영역에 기입되도록 상기 수신된 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션하는 불휘발성 메모리 시스템. - 제 1 항에 있어서,
부팅 동작시, 상기 메모리 컨트롤러는 상기 호스트로부터 시작 논리 블록 어드레스를 수신하고,
프리-부트 인증 전인 경우, 상기 메모리 컨트롤러는 상기 제2 논리 영역이 상기 호스트에 의해 저장 영역으로서 인식되도록 상기 시작 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션하고,
상기 프리-부트 인증이 완료된 경우 상기 메모리 컨트롤러는 상기 제1 논리 영역이 상기 호스트에 의해 상기 저장 영역으로서 인식되도록 상기 시작 논리 블록 어드레스를 상기 제1 논리 영역의 논리 페이지 넘버로 리다이렉션하는 불휘발성 메모리 시스템. - 제 1 항에 있어서,
상기 제1 논리 영역은 상기 제1 논리 영역의 크기, 종류, 또는 상태와 관련된 정보를 포함하는 마스터 부트 레코드(MBR; master boot record)를 포함하고, 상기 제2 논리 영역은 상기 제2 논리 영역의 크기, 종류, 또는 상태와 관련된 정보를 포함하는 쉐도우 마스터 부트 레코드(shadow MBR)를 포함하는 불휘발성 메모리 시스템. - 제 3 항에 있어서,
부팅 동작시, 상기 메모리 컨트롤러는 상기 호스트로부터 시작 논리 블록 어드레스를 수신하고,
프리-부트 인증 전인 경우, 상기 메모리 컨트롤러는 상기 쉐도우 마스터 부트 레코드가 상기 호스트에 의해 읽어지도록 상기 시작 논리 블록 어드레스를 상기 제2 논리 영역의 논리 페이지 넘버로 리다이렉션하고,
상기 프리-부트 인증이 완료된 경우, 상기 메모리 컨트롤러는 상기 마스터 부트 레코드가 상기 호스트에 의해 읽어지도록 상기 시작 논리 블록 어드레스를 상기 제1 논리 영역의 논리 페이지 넘버로 리다이렉션하는 불휘발성 메모리 시스템. - 제 4 항에 있어서,
상기 쉐도우 마스터 부트 레코드가 상기 호스트에 의해 읽어질 경우, 상기 제2 논리 영역이 상기 호스트에 의해 상기 저장 영역으로 인식되고,
상기 마스터 부트 레코드가 상기 호스트에 의해 읽어질 경우, 상기 제1 논리 영역이 상기 호스트에 의해 상기 저장 영역으로 인식되는 불휘발성 메모리 시스템. - 제 1 항에 있어서,
상기 메모리 컨트롤러는 상기 커맨드에 응답하여 상기 제2 논리 영역의 업데이트를 가리키는 플래그 정보를 상기 제1 논리 영역 중 일부 영역에 기입하는 불휘발성 메모리 시스템. - 제 6 항에 있어서,
상기 제2 논리 영역에 대한 업데이트가 완료된 경우, 상기 메모리 컨트롤러는 상기 플래그 정보를 삭제하는 불휘발성 메모리 시스템. - 제 1 항에 있어서,
상기 커맨드는 상기 메모리 컨트롤러 및 상기 호스트 간의 인터페이스 규격에 따라 정의된 커맨드들의 조합, 예비 커맨드, 또는 벤더 커맨드인 불휘발성 메모리 시스템. - 제 1 항에 있어서,
상기 메모리 컨트롤러는 상기 제1 및 제2 논리 영역들의 논리 페이지 넘버들 및 상기 물리 저장 영역의 물리 페이지 넘버들의 대응 관계를 관리하는 불휘발성 메모리 시스템. - 물리 저장 영역을 포함하는 불휘발성 메모리 장치; 및
제1, 제2, 및 제3 논리 영역들을 기반으로 상기 물리 저장 영역을 관리하고, 호스트로부터 상기 제1 논리 영역의 일부에 대응하는 논리 블록 어드레스 범위 및 커맨드를 수신하고, 상기 호스트로부터 데이터, 논리 블록 어드레스, 및 쓰기 커맨드를 수신하여 상기 제2 논리 영역에 대한 업데이트를 수행하도록 구성된 메모리 컨트롤러를 포함하고,
상기 수신된 논리 블록 어드레스가 상기 논리 블록 어드레스 범위에 포함된 경우, 상기 메모리 컨트롤러는 상기 쓰기 커맨드에 응답하여 상기 데이터가 상기 제3 논리 영역에 기입되도록 상기 수신된 논리 블록 어드레스를 상기 제3 논리 영역의 논리 페이지 넘버로 리다이렉션하는 불휘발성 메모리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140107128A KR102148889B1 (ko) | 2014-08-18 | 2014-08-18 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
US14/822,321 US9760503B2 (en) | 2014-08-18 | 2015-08-10 | Operation method of memory controller and nonvolatile memory system including the memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140107128A KR102148889B1 (ko) | 2014-08-18 | 2014-08-18 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160021957A KR20160021957A (ko) | 2016-02-29 |
KR102148889B1 true KR102148889B1 (ko) | 2020-08-31 |
Family
ID=55302264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140107128A KR102148889B1 (ko) | 2014-08-18 | 2014-08-18 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9760503B2 (ko) |
KR (1) | KR102148889B1 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170371573A1 (en) * | 2016-06-24 | 2017-12-28 | Samsung Electronics Co., Ltd. | Method of operating storage medium, method of operating host controlling the storage medium, and method of operating user system including the storage medium and the host |
US11182303B2 (en) * | 2016-12-21 | 2021-11-23 | Vmware, Inc. | Constructing bootloader address space without guaranteed physical memory layout |
US10068663B1 (en) * | 2017-05-30 | 2018-09-04 | Seagate Technology Llc | Data storage device with rewriteable in-place memory |
US10621117B2 (en) | 2017-06-15 | 2020-04-14 | Micron Technology, Inc. | Controlling memory devices using a shared channel |
KR102435890B1 (ko) * | 2017-08-17 | 2022-08-25 | 삼성전자주식회사 | 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법 |
KR102445674B1 (ko) * | 2017-12-18 | 2022-09-22 | 삼성전자주식회사 | 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법 |
US11263124B2 (en) | 2018-08-03 | 2022-03-01 | Micron Technology, Inc. | Host-resident translation layer validity check |
KR102567097B1 (ko) * | 2018-12-05 | 2023-08-14 | 삼성전자주식회사 | 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법 |
US11226907B2 (en) | 2018-12-19 | 2022-01-18 | Micron Technology, Inc. | Host-resident translation layer validity check techniques |
KR20200076531A (ko) * | 2018-12-19 | 2020-06-29 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR20200077276A (ko) | 2018-12-20 | 2020-06-30 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR20200078101A (ko) * | 2018-12-21 | 2020-07-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11226894B2 (en) | 2018-12-21 | 2022-01-18 | Micron Technology, Inc. | Host-based flash memory maintenance techniques |
KR20200099882A (ko) * | 2019-02-15 | 2020-08-25 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
JP2020154540A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム及び制御システム |
CN109918918B (zh) * | 2019-03-19 | 2021-04-23 | 联芸科技(杭州)有限公司 | 一种基于固态盘主控的可信计算***实现方案 |
KR20200129863A (ko) * | 2019-05-10 | 2020-11-18 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
US11294827B2 (en) * | 2019-09-12 | 2022-04-05 | Western Digital Technologies, Inc. | Non-sequential zoned namespaces |
US11016686B2 (en) * | 2019-09-18 | 2021-05-25 | Wolly Inc. | Apparatus and method of bad location management for storage class memory using distributed pointers |
KR20210069480A (ko) | 2019-12-03 | 2021-06-11 | 삼성전자주식회사 | 메모리 컨트롤러를 포함하는 스토리지 장치 및 비휘발성 메모리 시스템과 이의 동작 방법 |
KR20210069481A (ko) * | 2019-12-03 | 2021-06-11 | 삼성전자주식회사 | 메모리 컨트롤러를 포함하는 스토리지 장치 및 비휘발성 메모리 시스템과 이의 동작 방법 |
CN113223584A (zh) * | 2021-05-26 | 2021-08-06 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据读取方法 |
KR102365312B1 (ko) | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026415A1 (en) | 2004-07-28 | 2006-02-02 | Inventec Corporation | Method of updating a portion BIOS |
US20130024682A1 (en) | 2011-07-19 | 2013-01-24 | Boris Dolgunov | Storage Device and Method for Updating a Shadow Master Boot Record |
US20130205110A1 (en) | 2012-02-06 | 2013-08-08 | Doron Kettner | Storage Device and Method for Selective Data Compression |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6717956B1 (en) | 2000-03-03 | 2004-04-06 | Luminous Networks, Inc. | Dual-mode virtual network addressing |
US7173929B1 (en) * | 2001-12-10 | 2007-02-06 | Incipient, Inc. | Fast path for performing data operations |
US6986015B2 (en) * | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US8442938B2 (en) | 2005-01-14 | 2013-05-14 | Siemens Aktiengesellschaft | Child data structure update in data management system |
US7743203B2 (en) * | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
JP5219410B2 (ja) | 2007-06-27 | 2013-06-26 | 京セラ株式会社 | 携帯端末装置 |
US8195912B2 (en) | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US20100011350A1 (en) | 2008-07-14 | 2010-01-14 | Zayas Fernando A | Method And System For Managing An Initial Boot Image In An Information Storage Device |
JP5565040B2 (ja) | 2010-03-30 | 2014-08-06 | 富士通株式会社 | 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム |
US8566603B2 (en) | 2010-06-14 | 2013-10-22 | Seagate Technology Llc | Managing security operating modes |
JP5521824B2 (ja) | 2010-06-24 | 2014-06-18 | 富士通株式会社 | 情報処理装置及び起動方法 |
US9202059B2 (en) | 2011-03-01 | 2015-12-01 | Apurva M. Bhansali | Methods, systems, and apparatuses for managing a hard drive security system |
US8539246B2 (en) | 2011-03-16 | 2013-09-17 | Lenovo (Singapore) Pte. Ltd. | Secure resume for encrypted drives |
US9158672B1 (en) * | 2011-10-17 | 2015-10-13 | Rambus Inc. | Dynamic deterministic address translation for shuffled memory spaces |
US8996787B2 (en) | 2012-02-06 | 2015-03-31 | Sandisk Technologies Inc. | Storage device aware of I/O transaction and stored data |
US9047176B2 (en) | 2012-02-06 | 2015-06-02 | Sandisk Technologies Inc. | Storage device and method for utilizing unused storage space |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9336129B2 (en) * | 2013-10-02 | 2016-05-10 | Sandisk Technologies Inc. | System and method for bank logical data remapping |
US10379741B2 (en) * | 2014-04-17 | 2019-08-13 | Seagate Technology Llc | Dynamic storage device region provisioning |
-
2014
- 2014-08-18 KR KR1020140107128A patent/KR102148889B1/ko active IP Right Grant
-
2015
- 2015-08-10 US US14/822,321 patent/US9760503B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026415A1 (en) | 2004-07-28 | 2006-02-02 | Inventec Corporation | Method of updating a portion BIOS |
US20130024682A1 (en) | 2011-07-19 | 2013-01-24 | Boris Dolgunov | Storage Device and Method for Updating a Shadow Master Boot Record |
US20130205110A1 (en) | 2012-02-06 | 2013-08-08 | Doron Kettner | Storage Device and Method for Selective Data Compression |
Also Published As
Publication number | Publication date |
---|---|
US20160048459A1 (en) | 2016-02-18 |
KR20160021957A (ko) | 2016-02-29 |
US9760503B2 (en) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102148889B1 (ko) | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 | |
KR102291803B1 (ko) | 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법 | |
US10430083B2 (en) | Memory scheduling method for changing command order and method of operating memory system | |
KR102580820B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102291806B1 (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
KR102254392B1 (ko) | 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 | |
US11657022B2 (en) | Host and storage system for securely deleting files and operating method of the host | |
KR102211865B1 (ko) | 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법 | |
KR20160078611A (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
US11216332B2 (en) | Memory controller and method of operating the same | |
KR102558901B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20160103236A (ko) | 저장 장치 및 그것의 동작 방법 | |
KR20200086143A (ko) | 저장 장치 및 그것의 데이터 처리 방법 | |
US11288189B2 (en) | Memory controller and method of operating the same | |
US20160378375A1 (en) | Memory system and method of operating the same | |
KR20220087785A (ko) | 메모리 컨트롤러 및 이를 포함하는 저장 장치 | |
KR20220087782A (ko) | 메모리 컨트롤러 및 이를 포함하는 저장 장치 | |
KR102435863B1 (ko) | 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법 | |
US20210200469A1 (en) | Memory controller having data compressor and method of operating the same | |
US11762769B2 (en) | Memory controller based on flush operation and method of operating the same | |
US11487662B2 (en) | Memory controller and storage device including the same | |
KR20220005322A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
KR20210085499A (ko) | 저장 장치 및 그 동작 방법 | |
KR20230048769A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
KR20220169397A (ko) | 컴퓨팅 시스템 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |