KR20150062646A - 전자 시스템 및 이의 동작 방법 - Google Patents
전자 시스템 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20150062646A KR20150062646A KR1020130147508A KR20130147508A KR20150062646A KR 20150062646 A KR20150062646 A KR 20150062646A KR 1020130147508 A KR1020130147508 A KR 1020130147508A KR 20130147508 A KR20130147508 A KR 20130147508A KR 20150062646 A KR20150062646 A KR 20150062646A
- Authority
- KR
- South Korea
- Prior art keywords
- volatile memory
- integrated controller
- memory
- memory device
- host
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Memory System (AREA)
Abstract
하나의 통합 컨트롤러로 서로 다른 메모리를 제어하는 전자 시스템에 있어서, 호스트, 휘발성 메모리 장치, 비휘발성 메모리 장치, 및 상기 호스트의 제어에 따라 상기 휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 관리하는 통합 컨트롤러를 포함하고, 상기 통합 컨트롤러는 상기 비휘발성 메모리 장치의 일부 영역을 가상 휘발성 메모리 영역으로 할당하는 전자 시스템이 제공된다.
Description
본 발명은 전자 시스템 및 이의 동작 방법에 관한 것이다.
스마트폰 등에 이용되는 메모리 시스템은 워킹(working) 메모리로 동작하는 휘발성 메모리(예컨대, Dynamic Random Access Memory; DRAM) 및 스토리지(storage)용 비휘발성 메모리를 포함한다.
DRAM의 사이즈가 작아지면서 오류 발생 가능성이 증가한다. 따라서 데이터 기입 시 DRAM 내에 오류 정정 코드(Error Correction Code; ECC)를 추가로 저장하고, 데이터 독출 시 ECC를 함께 독출하여 상기 오류를 정정할 수 있다. 그러나 상기 ECC를 이용할 경우 DRAM 내에 부가적 저장 공간이 필요하여 DRAM 내 데이터 저장 공간의 용량이 감소할 수 있다.
한편, 휘발성 메모리 및 비휘발성 메모리 각각이 별도의 매핑 테이블을 저장하는 경우, 메모리 리소스를 중복하여 사용하는 단점이 있다.
본 발명이 이루고자 하는 기술적인 과제는 휘발성 메모리 장치 및 비휘발성 메모리 장치를 통합 관리하는 전자 시스템 및 이의 동작 방법을 제공하는 것이다.
본 발명의 일 실시예에 따르면, 하나의 통합 컨트롤러로 서로 다른 메모리를 제어하는 전자 시스템에 있어서, 호스트, 휘발성 메모리 장치, 비휘발성 메모리 장치, 및 상기 호스트의 제어에 따라 상기 휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 관리하는 통합 컨트롤러를 포함하고, 상기 통합 컨트롤러는 상기 비휘발성 메모리 장치의 일부 영역을 가상 휘발성 메모리 영역으로 할당하는 전자 시스템이 제공된다.
상기 휘발성 메모리 장치는 상기 호스트의 논리주소를 상기 휘발성 메모리 장치의 물리주소에 상응하는 제1 물리주소 및 상기 비휘발성 메모리 장치의 물리주소에 상응하는 제2 물리주소에 매핑하는 매핑 테이블을 포함할 수 있다.
상기 매핑 테이블은 각 엔트리에 상응하는 유효성 비트(Valid)를 포함하고, 상기 통합 컨트롤러는 상기 휘발성 메모리 장치로부터 상기 매핑 테이블을 수신하며, 상기 호스트의 논리주소에 상응하는 상기 유효성 비트가 제1 레벨이면 상기 휘발성 메모리 장치에 액세스하고, 상기 호스트의 논리주소에 상응하는 상기 유효성 비트가 제2 레벨이면 상기 비휘발성 메모리 장치에 액세스할 수 있다.
상기 제1 물리주소 및 상기 제2 물리주소는 서로 다를 수 있다.
상기 휘발성 메모리 장치는 휘발성 데이터 및 상기 휘발성 데이터에 상응하는 오류정정코드(Error Correcting Code; ECC)를 저장할 수 있다.
상기 통합 컨트롤러는 상기 비휘발성 메모리 장치에서 상기 오류정정코드에 상응하는 용량을 상기 가상 휘발성 메모리 영역으로 할당할 수 있다.
상기 통합 컨트롤러는 상기 호스트로부터 상기 휘발성 메모리의 인터페이스에 상응하는 적어도 하나의 제1 신호를 수신하고, 상기 제1 신호에 따라 상기 휘발성 메모리 또는 상기 비휘발성 메모리에 액세스할 수 있다.
상기 통합 컨트롤러는 상기 제1 신호를 상기 비휘발성 메모리의 인터페이스에 상응하는 적어도 하나의 제2 신호로 변환하는 NVM 인터페이스를 포함할 수 있다.
상기 통합 컨트롤러는 상기 제1 신호를 상기 휘발성 메모리로 출력하거나, 또는 상기 제2 신호를 상기 비휘발성 메모리로 출력할 수 있다.
상기 호스트 및 상기 통합 컨트롤러는 하나의 시스템-온 칩(System-on Chip; SoC)에 포함될 수 있다.
본 발명의 다른 실시예에 따르면, 가상 주소를 포함하는 메모리 액세스 요청을 수신하는 단계, 주 기억 장치로부터 매핑 테이블을 수신하는 단계, 상기 매핑 테이블 및 상기 가상 주소에 따라 상기 주 기억 장치에 액세스할지 또는 보조 기억 장치에 액세스할지 여부를 판단하는 단계, 상기 매핑 테이블에 따라 상기 가상 주소를 물리 주소로 변환하는 단계, 및 상기 판단 결과 및 상기 물리 주소에 따라 상기 주 기억 장치 또는 상기 보조 기억 장치에 액세스하는 단계를 포함하는 전자 시스템의 동작 방법이 제공된다.
상기 전자 시스템의 동작 방법은 호스트로부터 상기 주 기억 장치의 인터페이스에 상응하는 적어도 하나의 제1 신호를 수신하는 단계를 더 포함할 수 있다.
상기 판단 결과 및 상기 물리 주소에 따라 상기 주 기억 장치 또는 상기 보조 기억 장치에 액세스하는 단계는 상기 주 기억 장치에 액세스한다는 판단 결과에 따라, 상기 제1 신호를 상기 주 기억 장치로 출력하는 단계를 포함할 수 있다.
상기 판단 결과 및 상기 물리 주소에 따라 상기 주 기억 장치 또는 상기 보조 기억 장치에 액세스하는 단계는 상기 보조 기억 장치에 액세스한다는 판단 결과에 따라, 상기 제1 신호를 상기 보조 기억 장치의 인터페이스에 상응하는 적어도 하나의 제2 신호로 변환하는 단계, 및 상기 제2 신호를 상기 보조 기억 장치로 출력하는 단계를 포함할 수 있다.
상기 전자 시스템의 동작 방법은 상기 주 기억 장치에 데이터 및 상기 데이터에 상응하는 오류정정코드(Error Correcting Code; ECC)를 저장하는 단계, 및 상기 비휘발성 메모리 장치에서 상기 오류정정코드에 상응하는 용량을 가상 DRAM 영역으로 할당하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 휘발성 메모리 장치용 메모리 컨트롤러 및 비휘발성 메모리 장치용 스토리지 컨트롤러를 하나로 합침으로써, 스토리지 컨트롤러를 별도로 이용하는 것에 비하여 비용이 절감되고, 휘발성 메모리 장치 또한 ECC를 활용할 수 있으며, 휘발성 메모리 장치의 ECC에 의해 소모된 용량을 비휘발성 메모리 장치를 이용하여 보전할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 2는 본 발명의 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 3은 도 1의 일부분을 보다 자세하게 나타낸 블록도이다.
도 4는 도 1의 CPU 내 소프트웨어 스택(Software stack)을 나타낸다.
도 5는 도 3의 매핑 테이블의 일 실시예를 나타낸다.
도 6은 도 1의 전자 시스템의 일 실시예에 따른 동작을 나타내는 순서도이다.
도 7은 도 1의 전자 시스템의 다른 실시예에 따른 동작을 나타내는 순서도이다.
도 2는 본 발명의 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 3은 도 1의 일부분을 보다 자세하게 나타낸 블록도이다.
도 4는 도 1의 CPU 내 소프트웨어 스택(Software stack)을 나타낸다.
도 5는 도 3의 매핑 테이블의 일 실시예를 나타낸다.
도 6은 도 1의 전자 시스템의 일 실시예에 따른 동작을 나타내는 순서도이다.
도 7은 도 1의 전자 시스템의 다른 실시예에 따른 동작을 나타내는 순서도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 1을 참조하면, 전자 시스템(1)은 이동 전화기, 스마트폰, 태블릿 컴퓨터(tablet computer), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고 다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고 다닐 수 있는 장치(handheld device)로 구현될 수 있다.
전자 시스템(1)은 시스템-온-칩(System-on-chip; SoC, 10), 통합 컨트롤러(UMC Controller, 20), 메인 메모리(30) 및 스토리지 장치(40)를 포함할 수 있다.
SoC(10)은 전자 시스템 또는 다른 전자 시스템을 구현하기 위해 다양한 기능 블록들을 집적한 하나의 집적 회로(integrated circuit(IC))를 의미한다.
SoC(10)는 적어도 하나의 IP(Intellectual Property, 110), 중앙처리장치(Central Processing Unit; CPU, 120), 시스템 메모리(130), 메모리 컨트롤러(140), 메모리 관리 유닛(Memory Management Unit; MMU, 150) 및 캐시 메모리(160)를 포함할 수 있다. SoC(100)는 도시된 구성요소 외에도 다른 구성요소, 예컨대, TV 프로세서 및 전원관리부(power management IC; PMIC)를 더 포함할 수 있다.
IP(110)라 함은 SoC에 집적될 수 있는 회로(circuit), 로직(logic), 또는 이들의 조합을 의미한다. 또한, 상기 회로 또는 상기 로직에는 코드(code)가 저장될 수 있다. IP(110)는 CPU(120)에 의해서 제어될 수 있다.
IP(110)는 예를 들면, GPU(Graphic Processing Unit), MFC(Multi-Format Codec), 비디오 모듈(예컨대, 카메라 인터페이스(Camera Interface), JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서(Video Processor), 또는 믹서(Mixer), 등), 오디오 시스템(Audio System), 드라이버(Driver), 디스플레이 드라이버(Display Driver), 시리얼 포트(Serial Port), 시스템 타이머(System Timer), 워치독타이머(Watch Dog Timer) 또는 아날로그-디지털 컨버터(Analog-to-Digital Converter) 등일 수 있다.
프로세서(processor)라고도 불릴 수 있는 CPU(120)는 메인 메모리(30)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(110)는 클락 신호 발생기(미 도시)로부터 출력된 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(120)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다. 상기 멀티-코어 프로세서는 다수의 가속기를 동시에 구동할 수 있으므로, 상기 멀티-코어 프로세서를 포함하는 데이터 처리 시스템은 멀티-가속(multi-acceleration)을 수행할 수 있다.
시스템 메모리(130), 캐시 메모리(160), 메인 메모리(30) 및 스토리지 장치(40)에 저장된 프로그램들 및/또는 데이터는 필요에 따라 CPU(120)의 메모리에 로드(load)될 수 있다.
시스템 메모리(130)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 시스템 메모리(130)는 영구적으로 프로그램들 및/또는 데이터를 저장할 수 있는 ROM(Read-Only Memory) 또는 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있는 RAM(Random Access Memory)으로 구현될 수 있다. ROM은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다. RAM은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
메모리 콘트롤러(140)는 통합 컨트롤러(20)와 인터페이스하기 위한 블록이다. 메모리 콘트롤러(140)는 통합 컨트롤러(20)의 동작을 전반적으로 제어하며, 또한 호스트와 통합 컨트롤러(20) 간의 제반 데이터 교환을 제어한다. 예컨대, 메모리 콘트롤러(140)는 호스트의 요청에 따라 통합 컨트롤러(20)를 제어하여 메인 메모리(30) 또는 스토리지 장치(40)에 데이터를 기입 또는 독출할 수 있다.
여기서, 호스트는 IP(110) 또는 CPU(120)와 같은 마스터 장치일 수 있다.
MMU(150)는 CPU(120)가 메인 메모리(30) 및 스토리지 장치(40)에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품일 수 있다. MMU(150)는 메모리 주소 변환, 메모리 보호, 캐시 관리 및 버스 중재를 수행할 수 있다. 실시예에 따라, MMU(150)는 뱅크 스위칭을 담당할 수 있다.
MMU(150)는 동적 주소 변환을 위한 변환 색인 버퍼(translation lookaside buffer; TLB, 151)를 포함할 수 있다.
캐시 메모리(160)는 메인 메모리(30)의 긴 액세스 레이턴시에 따른 성능 저하를 줄이기 위하여 이용될 수 있다. 캐시 메모리(160)는 휘발성 메모리 장치, 예컨대 SRAM으로 구현될 수 있다.
메인 메모리(30) 및 스토리지 장치(40)는 CPU(120)가 실행하기 위한 명령 및 데이터를 저장할 수 있다. 실시예에 따라, 메인 메모리(30)는 휘발성 메모리 장치로 구현되고, 스토리지 장치(40)는 불휘발성 메모리 장치로 구현될 수 있다.
예컨대, 메인 메모리(30)는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
스토리지 장치(40)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(nano Floating Gate Memory: nFGm), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
각 구성 요소(110, 120, 130, 140, 150, 및 160)는 시스템 버스(170)를 통하여 서로 통신할 수 있다.
통합 컨트롤러(20)는 메모리 관리 유닛(150)의 제어에 따라 휘발성 메모리 장치(30) 및 비휘발성 메모리 장치(40)를 통합적으로 관리할 수 있다.
통합 컨트롤러(20)는 메모리 컨트롤러(140)로부터 휘발성 메모리(30)의 인터페이스, 예컨대 DDR(Double Data Rate) 인터페이스에 상응하는 적어도 하나의 제1 신호(C1)를 수신할 수 있다. 실시예에 따라, 제1 신호는 RAS(Row Address Strobe) 신호 및 CAS(Column Address Strobe) 신호를 포함할 수 있다.
통합 컨트롤러(20)는 제1 신호(C1)에 따라 휘발성 메모리(30) 또는 비휘발성 메모리(40)에 액세스할 수 있다.
예컨대, 통합 컨트롤러(20)는 제1 신호(C1)를 휘발성 메모리(30)로 출력하거나, 제1 신호(C1)를 비휘발성 메모리(40), 예컨대 플래시 메모리의 인터페이스에 상응하는 적어도 하나의 제2 신호(C2)로 변환하여 비휘발성 메모리(40)로 출력할 수 있다.
도 2는 본 발명의 다른 실시예에 따른 전자 시스템을 나타내는 블록도이다. 도 2에 도시된 전자 시스템(2)은 도 1에 도시된 것과 대부분 동일하므로, 이하에서는 차이점을 위주로 설명한다.
도 2를 참조하면, 전자 시스템(2)은 이동 전화기, 스마트폰, 태블릿 컴퓨터(tablet computer), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고 다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고 다닐 수 있는 장치(handheld device)로 구현될 수 있다.
전자 시스템(2)은 시스템-온-칩(System-on-chip; SoC, 10), 메인 메모리(30) 및 스토리지 장치(40)를 포함할 수 있다.
SoC(10)은 전자 시스템 또는 다른 전자 시스템을 구현하기 위해 다양한 기능 블록들을 집적한 하나의 집적 회로(integrated circuit(IC))를 의미한다.
SoC(10)는 적어도 하나의 IP(Intellectual Property, 110), 중앙처리장치(Central Processing Unit; CPU, 120), 시스템 메모리(130), 메모리 컨트롤러(140), 메모리 관리 유닛(Memory Management Unit; MMU, 150), 캐시 메모리(160) 및 통합 컨트롤러(UMC Controller, 20)를 포함할 수 있다. SoC(100)는 도시된 구성요소 외에도 다른 구성요소, 예컨대, TV 프로세서 및 전원관리부(power management IC; PMIC)를 더 포함할 수 있다.
IP(110)라 함은 SoC에 집적될 수 있는 회로(circuit), 로직(logic), 또는 이들의 조합을 의미한다. 또한, 상기 회로 또는 상기 로직에는 코드(code)가 저장될 수 있다. IP(110)는 CPU(120)에 의해서 제어될 수 있다.
IP(110)는 예를 들면, GPU(Graphic Processing Unit), MFC(Multi-Format Codec), 비디오 모듈(예컨대, 카메라 인터페이스(Camera Interface), JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서(Video Processor), 또는 믹서(Mixer), 등), 오디오 시스템(Audio System), 드라이버(Driver), 디스플레이 드라이버(Display Driver), 시리얼 포트(Serial Port), 시스템 타이머(System Timer), 워치독타이머(Watch Dog Timer) 또는 아날로그-디지털 컨버터(Analog-to-Digital Converter) 등일 수 있다.
프로세서(processor)라고도 불릴 수 있는 CPU(120)는 메인 메모리(30)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(110)는 클락 신호 발생기(미 도시)로부터 출력된 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(120)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다. 상기 멀티-코어 프로세서는 다수의 가속기를 동시에 구동할 수 있으므로, 상기 멀티-코어 프로세서를 포함하는 데이터 처리 시스템은 멀티-가속(multi-acceleration)을 수행할 수 있다.
시스템 메모리(130), 캐시 메모리(160), 메인 메모리(30) 및 스토리지 장치(40)에 저장된 프로그램들 및/또는 데이터는 필요에 따라 CPU(120)의 메모리에 로드(load)될 수 있다.
시스템 메모리(130)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 시스템 메모리(130)는 영구적으로 프로그램들 및/또는 데이터를 저장할 수 있는 ROM(Read-Only Memory) 또는 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있는 RAM(Random Access Memory)으로 구현될 수 있다. ROM은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다. RAM은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
메모리 콘트롤러(140)는 통합 컨트롤러(20)와 인터페이스하기 위한 블록이다. 메모리 콘트롤러(140)는 통합 컨트롤러(20)의 동작을 전반적으로 제어하며, 또한 호스트와 통합 컨트롤러(20) 간의 제반 데이터 교환을 제어한다. 예컨대, 메모리 콘트롤러(140)는 호스트의 요청에 따라 통합 컨트롤러(20)를 제어하여 메인 메모리(30) 또는 스토리지 장치(40)에 데이터를 기입 또는 독출할 수 있다.
여기서, 호스트는 IP(110) 또는 CPU(120)와 같은 마스터 장치일 수 있다.
MMU(150)는 CPU(120)가 메인 메모리(30) 및 스토리지 장치(40)에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품일 수 있다. MMU(150)는 메모리 주소 변환, 메모리 보호, 캐시 관리 및 버스 중재를 수행할 수 있다. 실시예에 따라, MMU(150)는 뱅크 스위칭을 담당할 수 있다.
MMU(150)는 동적 주소 변환을 위한 변환 색인 버퍼(translation lookaside buffer; TLB, 151)를 포함할 수 있다.
캐시 메모리(160)는 메인 메모리(30)의 긴 액세스 레이턴시에 따른 성능 저하를 줄이기 위하여 이용될 수 있다. 캐시 메모리(160)는 휘발성 메모리 장치, 예컨대 SRAM으로 구현될 수 있다.
메인 메모리(30) 및 스토리지 장치(40)는 CPU(120)가 실행하기 위한 명령 및 데이터를 저장할 수 있다. 실시예에 따라, 메인 메모리(30)는 휘발성 메모리 장치로 구현되고, 스토리지 장치(40)는 불휘발성 메모리 장치로 구현될 수 있다.
예컨대, 메인 메모리(30)는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다. 이하에서는 메인 메모리(30)는 DRAM으로 구현되는 것으로 가정하고 설명한다.
스토리지 장치(40)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(nano Floating Gate Memory: nFGm), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
각 구성 요소(110, 120, 130, 140, 150, 및 160)는 시스템 버스(170)를 통하여 서로 통신할 수 있다.
통합 컨트롤러(20)는 메모리 관리 유닛(150)의 제어에 따라 휘발성 메모리 장치(30) 및 비휘발성 메모리 장치(40)를 통합적으로 관리할 수 있다.
통합 컨트롤러(20)는 메모리 컨트롤러(140)로부터 휘발성 메모리(30)의 인터페이스, 예컨대 DDR(Double Data Rate) 인터페이스에 상응하는 적어도 하나의 제1 신호(C1)를 수신할 수 있다. 실시예에 따라, 제1 신호는 RAS(Row Address Strobe) 신호 및 CAS(Column Address Strobe) 신호를 포함할 수 있다.
통합 컨트롤러(20)는 제1 신호(C1)에 따라 휘발성 메모리(30) 또는 비휘발성 메모리(40)에 액세스할 수 있다.
예컨대, 통합 컨트롤러(20)는 제1 신호(C1)를 휘발성 메모리(30)로 출력하거나, 제1 신호(C1)를 비휘발성 메모리(40), 예컨대 플래시 메모리의 인터페이스에 상응하는 적어도 하나의 제2 신호(C2)로 변환하여 비휘발성 메모리(40)로 출력할 수 있다.
본 발명의 실시예에 따르면, 휘발성 메모리 장치용 메모리 컨트롤러 및 비휘발성 메모리 장치용 스토리지 컨트롤러를 하나로 합침으로써, 스토리지 컨트롤러를 별도로 이용하는 것에 비하여 비용이 절감되고, 휘발성 메모리 장치 또한 ECC를 활용할 수 있으며, 휘발성 메모리 장치의 ECC에 의해 소모된 용량을 비휘발성 메모리 장치를 이용하여 보전할 수 있는 효과가 있다.
도 3은 도 1의 일부분을 보다 자세하게 나타낸 블록도이다.
도 1 및 도 3을 참조하면, 통합 컨트롤러(20)는 컨트롤 로직(210), 통합 메모리(220), DRAM 인터페이스(230), NVM(Non-Volatile Memory) 인터페이스(240) 및 ECC 블록(250)을 포함할 수 있다.
컨트롤 로직(210)은 메모리 컨트롤러(140)의 제어에 따라 각 구성 요소(220, 230, 240, 250)의 동작을 제어할 수 있다.
통합 메모리(220)는 실시예에 따라 SRAM으로 구현될 수 있으며, DRAM(30)으로부터 수신한 매핑 테이블(33)을 저장할 수 있다.
DRAM 인터페이스(230)는 컨트롤 로직(210)과 DRAM(30) 간의 제반 데이터 교환을 제어할 수 있다. DRAM 인터페이스(230)는 컨트롤 로직(210)의 제어에 따라, DRAM(30)으로부터 매핑 테이블(33)을 수신할 수 있다.
NVM 인터페이스(240)는 컨트롤 로직(210)과 스토리지 장치(40) 간의 제반 데이터 교환을 제어할 수 있다.
ECC 블록(250)은 데이터 기입 시 오류 정정 코드(Error Correction Code; ECC)를 생성하고, 데이터 독출 시 ECC를 이용하여 오류를 정정하기 위한 블록이다.
ECC 블록(250)은 DRAM ECC 블록(251) 및 NVM ECC 블록(253)을 포함할 수 있다.
DRAM ECC 블록(251)은 데이터를 DRAM(30)에 기입 시 상기 데이터에 따라 오류 정정 코드(Error Correction Code; ECC)를 생성하여 DRAM(30)의 ECC 영역(31)에 추가로 저장하고, 데이터 독출 시 ECC를 함께 독출하여 에러를 정정할 수 있다.
NVM ECC 블록(253)은 데이터를 스토리지 장치(40)에 기입 시 오류 정정 코드(Error Correction Code; ECC)를 생성하여 스토리지 장치(40)에 추가로 저장하고, 데이터 독출 시 ECC를 함께 독출하여 에러를 정정할 수 있다.
컨트롤 로직(210)은 스토리지 장치(40)의 일부 영역을 가상 DRAM 영역(41)으로 할당하도록 NVM 인터페이스(240)를 제어할 수 있다.
예컨대, 컨트롤 로직(210)은 DRAM(30)의 ECC 영역(31)에 상응하는 용량을 가상 DRAM 영역(41)으로 할당할 수 있다. 그러나 본 발명의 실시예가 이에 한정되는 것은 아니다.
도 4는 도 1의 CPU 내 소프트웨어 스택(Software stack)을 나타낸다.
도 1 및 도 4를 참조하면, 통합 컨트롤러(20)를 이용하지 않고 스토리지 장치(40) 전용의 컨트롤러(미도시)를 이용하는 경우, 어플리케이션(310)이 특정 파일에 대한 리드 커맨드 콜(read command call)을 파일 시스템(320)으로 보내면, 파일 시스템(320)은 상기 리드 커맨드 콜에 따라 스토리지 장치(40)에서 특정 용량을 독출하라는 명령을 장치 드라이버(330)로 보낼 수 있다. 장치 드라이버(330)는 상기 명령에 따라 스토리지 장치(40) 전용의 컨트롤러를 제어하여 스토리지 장치(40)에서 데이터를 독출할 수 있다.
상술한 바와 같은 스토리지 패스에 따르면, CPU(120)가 파일 시스템(320), 즉 OS(Operating System)를 거치는 긴 경로를 통해 스토리지 장치(40)에 접근하므로 동작 속도가 느린 단점이 있다.
본 발명에 따르면, MMU(150)의 통합 드라이버(341)는 매핑 테이블을 관리할 수 있다. 어플리케이션(310)의 리드 커맨드 콜에 따라, MMU(150)의 메모리 관리 계층(340)은 통합 드라이버(341)를 이용하여 특정한 물리 주소에서 데이터를 특정 용량만큼 독출하라는 명령을 통합 컨트롤러(20)로 보낼 수 있다.
따라서 OS를 거치지 않고 하나의 계층만을 통해 어플리케이션(310)이 스토리지 장치(40)에 액세스할 수 있으므로 성능이 개선되는 효과가 있다.
도 5는 도 3의 매핑 테이블의 일 실시예를 나타낸다.
도 1, 도 3 및 도 5를 참조하면, 매핑 테이블(33)은 논리주소(Logical Block Address; LBA) 및 물리주소(Physical Block Address; PBA)를 포함할 수 있다.
매핑 테이블(33)은 메모리 관리 유닛(150)의 논리주소(LBA, 예컨대 0~1000)를 DRAM(30)의 물리주소에 상응하는 제1 물리주소(예컨대, 0~600) 및 스토리지 장치(40)의 물리주소에 상응하는 제2 물리주소(예컨대, 1100~1400)에 매핑할 수 있다.
실시예에 따라, 매핑 테이블(33)은 각 엔트리에 상응하는 유효성 비트(Valid)를 더 포함할 수 있다. 유효성 비트(Valid)는 상응하는 논리주소(LBA) 또는 물리주소(PBA)가 DRAM(30)에 상응하는지 또는 스토리지 장치(40)에 상응하는지를 나타낼 수 있다.
예컨대 통합 컨트롤러(20)는 호스트(10)의 논리주소(LBA)에 상응하는 유효성 비트(Valid)가 제1 레벨이면 DRAM(30)에 액세스하고, 호스트(10)의 논리주소(LBA)에 상응하는 유효성 비트(Valid)가 제2 레벨이면 스토리지 장치(40)에 액세스할 수 있다.
실시예에 따라, 제1 물리주소 및 제2 물리주소는 서로 다를 수 있다. 예컨대 제1 물리주소는 1000 이하의 값을 갖고, 제2 물리주소는 1000을 초과하는 값을 가질 수 있다. 통합 컨트롤러(20)는 제1 및 제2 물리주소의 값에 따라 DRAM(30) 또는 스토리지 장치(40)에 액세스할 수 있다.
통합 컨트롤러(20)는 DRAM(30)의 물리주소(0~600)에 데이터를 기입할 때, 상기 데이터에 대한 ECC를 생성하여 ECC 영역(31)의 물리주소(700~1000)에 추가로 저장할 수 있다.
통합 컨트롤러(20)는 스토리지 장치(40)의 일부 영역, 즉 물리주소(1100~1400)에 상응하는 영역을 가상 DRAM 영역(41)으로 할당할 수 있다.
DRAM(30)이 9GB의 용량을 갖고, ECC 영역(31)에 1GB를 할당하는 경우를 가정하면, DRAM(30)에서 실제 사용할 수 있는 용량은 8GB로 축소되므로 가격 경쟁력이 악화되는 문제점이 있다.
본 발명의 실시예에 따르면, 통합 컨트롤러(20)는 DRAM(30)에 9GB 데이터를 저장하여야 하는 경우, DRAM(30)에 8GB 데이터를 저장하고, 스토리지 장치(40)의 영역 1GB를 가상 DRAM 영역(41)으로 설정하여 나머지 1GB 데이터를 저장한다. 따라서 호스트(10)는 DRAM(30)이 9GB 용량을 저장하는 것으로 인식할 수 있다.
저장한 데이터를 독출 시 1/9의 확률로 페이지 폴트가 발생할 수 있으나, 대부분의 데이터는 DRAM(30)의 일부 영역에만 저장되므로 크게 성능이 저하되지 않는다. 따라서 DRAM(30)에 ECC를 추가로 저장하더라도, 사용자는 큰 성능 저하 없이 DRAM(30)의 유저 용량(user space)을 모두 사용할 수 있는 효과가 있다.
도 6은 도 1의 전자 시스템의 일 실시예에 따른 동작을 나타내는 순서도이다.
도 1 및 도 6을 참조하면, MMU(150)는 가상 주소를 포함하는 메모리 액세스 요청을 수신한다(S11).
MMU(150)는 주 기억 장치(또는 메인 메모리, 30)로부터 매핑 테이블을 수신할 수 있다(S13).
MMU(150)는 TLB(151), 상기 매핑 테이블 및 상기 가상 주소에 따라 주 기억 장치(30)에 액세스할지 또는 보조 기억 장치(또는 스토리지 장치, 40)에 액세스할지 여부를 판단할 수 있다(S15).
MMU(150)는 상기 매핑 테이블에 따라 상기 가상 주소를 물리 주소로 변환할 수 있다(S17).
MMU(150)는 판단 결과 및 상기 물리 주소에 따라 통합 컨트롤러(20)를 제어하여, 주 기억 장치(30) 또는 보조 기억 장치(40)에 액세스할 수 있다(S19).
도 7은 도 1의 전자 시스템의 다른 실시예에 따른 동작을 나타내는 순서도이다.
도 1, 도 3 및 도 7을 참조하면, MMU(150)는 CPU(120)로부터 가상 주소를 포함하는 메모리 액세스 요청을 수신할 수 있다(S21).
MMU(150)는 상기 가상 주소가 TLB(151)에 있는지 판단할 수 있다(S23).
상기 가상 주소가 TLB(151)에 없으면, MMU(150)는 상기 가상 주소가 매핑 테이블에서 유효한지, 즉 상기 가상 주소에 상응하는 유효성 비트가 제1 레벨을 갖는지 판단할 수 있다(S25).
상기 가상 주소가 유효하지 않으면, 페이지 폴트가 발생한다. 이에 따라 CPU(120)가 실행하는 OS(Operating System)의 페이지 폴트 핸들러(page fault handler)는 통합 컨트롤러(20)를 제어하여 스토리지 장치(예컨대 플래시 메모리, 40) 내 가상 휘발성 메모리 영역(41)의 데이터를 주 기억 장치(30)로 이동시킬 수 있다. 이때 FIFO(first in, first out), LFU(least frequently used) 및 LRU(least recently used) 기법 등이 이용될 수 있다.
상기 데이터 이동에 따라 MMU(150)는 매핑 테이블을 업데이트할 수 있다(S29).
MMU(150)가 매핑 테이블을 업데이트하거나, 가상 주소가 유효한 경우, MMU(150)는 매핑 테이블의 가상 주소를 TLB(151)에 가져올 수 있다(S31).
MMU(150)는 매핑 테이블의 가상 주소를 TLB(151)에 가져오거나, 가상 주소가 TLB(151)에 있는 경우, TLB(151)를 이용하여 가상 주소를 물리 주소로 변환할 수 있다(S33).
MMU(150)는 통합 컨트롤러(20)를 제어하여, 주 기억 장치(예컨대 DRAM, 30)의 물리주소에서 데이터를 독출할 수 있다(S35).
통합 컨트롤러(20)는 호스트(예컨대 SoC, 10)로부터 DRAM(30)의 인터페이스에 상응하는 적어도 하나의 제1 신호(C1)를 수신할 수 있다.
MMU(150)가 주 기억 장치(30)에 액세스해야 한다고 판단하는 경우, 통합 컨트롤러(20)는 제1 신호(C1)를 주 기억 장치(30)로 출력할 수 있다.
MMU(150)가 보조 기억 장치(40)에 액세스해야 한다고 판단하는 경우, 통합 컨트롤러(20)의 NVM 인터페이스(240)는 제1 신호(C1)를 보조 기억 장치(예컨대 플래시 메모리, 40)의 인터페이스에 상응하는 적어도 하나의 제2 신호(C2)로 변환할 수 있다. 통합 컨트롤러(20)는 제2 신호(C2)를 보조 기억 장치(40)로 출력할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 객체 정보 추정 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: SoC
20: 통합 컨트롤러
30: 휘발성 메모리 장치 40: 비휘발성 메모리 장치
30: 휘발성 메모리 장치 40: 비휘발성 메모리 장치
Claims (10)
- 하나의 통합 컨트롤러로 서로 다른 메모리를 제어하는 전자 시스템에 있어서,
호스트;
상기 호스트에 연결되는 통합 컨트롤러;
상기 통합 컨트롤러에 연결되는 휘발성 메모리 장치; 및
상기 통합 컨트롤러에 연결되는 비휘발성 메모리 장치를 포함하고,
상기 통합 컨트롤러는
상기 호스트의 제어에 따라 상기 휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 관리하며, 상기 비휘발성 메모리 장치의 일부 영역을 가상 휘발성 메모리 영역으로 할당하는 전자 시스템. - 제1항에 있어서, 상기 휘발성 메모리 장치는
상기 호스트의 논리주소를 상기 휘발성 메모리 장치의 물리주소에 상응하는 제1 물리주소 및 상기 비휘발성 메모리 장치의 물리주소에 상응하는 제2 물리주소에 매핑하는 매핑 테이블을 포함하는 전자 시스템. - 제2항에 있어서, 상기 매핑 테이블은
각 엔트리에 상응하는 유효성 비트(Valid)를 포함하고,
상기 통합 컨트롤러는
상기 휘발성 메모리 장치로부터 상기 매핑 테이블을 수신하며, 상기 호스트의 논리주소에 상응하는 상기 유효성 비트가 제1 레벨이면 상기 휘발성 메모리 장치에 액세스하고, 상기 호스트의 논리주소에 상응하는 상기 유효성 비트가 제2 레벨이면 상기 비휘발성 메모리 장치에 액세스하는 전자 시스템. - 제2항에 있어서, 상기 제1 물리주소 및 상기 제2 물리주소는
서로 다른 전자 시스템. - 제1항에 있어서, 상기 휘발성 메모리 장치는
휘발성 데이터 및 상기 휘발성 데이터에 상응하는 오류정정코드(Error Correcting Code; ECC)를 저장하는 전자 시스템. - 제5항에 있어서, 상기 통합 컨트롤러는
상기 비휘발성 메모리 장치에서 상기 오류정정코드에 상응하는 용량을 상기 가상 휘발성 메모리 영역으로 할당하는 전자 시스템. - 제1항에 있어서, 상기 통합 컨트롤러는
상기 호스트로부터 상기 휘발성 메모리의 인터페이스에 상응하는 적어도 하나의 제1 신호를 수신하고, 상기 제1 신호에 따라 상기 휘발성 메모리 또는 상기 비휘발성 메모리에 액세스하는 전자 시스템. - 제7항에 있어서, 상기 통합 컨트롤러는
상기 제1 신호를 상기 비휘발성 메모리의 인터페이스에 상응하는 적어도 하나의 제2 신호로 변환하는 NVM 인터페이스를 포함하는 전자 시스템. - 제8항에 있어서, 상기 통합 컨트롤러는
상기 제1 신호를 상기 휘발성 메모리로 출력하거나, 또는 상기 제2 신호를 상기 비휘발성 메모리로 출력하는 전자 시스템. - 가상 주소를 포함하는 메모리 액세스 요청을 수신하는 단계;
주 기억 장치로부터 매핑 테이블을 수신하는 단계;
상기 매핑 테이블 및 상기 가상 주소에 따라 상기 주 기억 장치에 액세스할지 또는 보조 기억 장치에 액세스할지 여부를 판단하는 단계;
상기 매핑 테이블에 따라 상기 가상 주소를 물리 주소로 변환하는 단계; 및
상기 판단 결과 및 상기 물리 주소에 따라 상기 주 기억 장치 또는 상기 보조 기억 장치에 액세스하는 단계를 포함하는 전자 시스템의 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130147508A KR20150062646A (ko) | 2013-11-29 | 2013-11-29 | 전자 시스템 및 이의 동작 방법 |
US14/476,964 US20150153965A1 (en) | 2013-11-29 | 2014-09-04 | Electronic system and method of operating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130147508A KR20150062646A (ko) | 2013-11-29 | 2013-11-29 | 전자 시스템 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150062646A true KR20150062646A (ko) | 2015-06-08 |
Family
ID=53265365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130147508A KR20150062646A (ko) | 2013-11-29 | 2013-11-29 | 전자 시스템 및 이의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150153965A1 (ko) |
KR (1) | KR20150062646A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10180906B2 (en) * | 2016-07-26 | 2019-01-15 | Samsung Electronics Co., Ltd. | HBM with in-memory cache manager |
KR20180044635A (ko) * | 2016-10-24 | 2018-05-03 | 삼성전자주식회사 | 저장 시스템 및 그것의 동작 방법 |
KR20200074467A (ko) | 2018-12-17 | 2020-06-25 | 삼성전자주식회사 | 에러 정정 코드 회로, 반도체 메모리 장치 및 메모리 시스템 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06195258A (ja) * | 1992-07-08 | 1994-07-15 | Nec Corp | 半導体記憶装置 |
US20060080515A1 (en) * | 2004-10-12 | 2006-04-13 | Lefthand Networks, Inc. | Non-Volatile Memory Backup for Network Storage System |
US8102557B2 (en) * | 2006-11-13 | 2012-01-24 | Samsung Electronics Co., Ltd. | System and method for disabling access to non-volatile storage in a multi-function peripheral |
US8886892B2 (en) * | 2007-01-26 | 2014-11-11 | Hewlett-Packard Development Company, L.P. | Memory module and method employing a multiplexer to replace a memory device |
JP4897524B2 (ja) * | 2007-03-15 | 2012-03-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのライト性能低下防止方法 |
US7797503B2 (en) * | 2007-06-26 | 2010-09-14 | International Business Machines Corporation | Configurable memory system and method for providing atomic counting operations in a memory device |
JP5087347B2 (ja) * | 2007-09-06 | 2012-12-05 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
KR101449524B1 (ko) * | 2008-03-12 | 2014-10-14 | 삼성전자주식회사 | 스토리지 장치 및 컴퓨팅 시스템 |
JP2011170589A (ja) * | 2010-02-18 | 2011-09-01 | Nec Corp | ストレージ制御装置、ストレージ装置およびストレージ制御方法 |
JP5720210B2 (ja) * | 2010-12-02 | 2015-05-20 | 富士通株式会社 | アクセス制御装置、誤り訂正制御方法およびストレージ装置 |
KR101717081B1 (ko) * | 2011-03-23 | 2017-03-28 | 삼성전자주식회사 | 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치 |
JP2014052978A (ja) * | 2012-09-10 | 2014-03-20 | Toshiba Corp | 不揮発性半導体メモリの制御方法及びメモリシステム |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
WO2014120193A1 (en) * | 2013-01-31 | 2014-08-07 | Hewlett-Packard Development Company, L. P. | Non-volatile multi-level-cell memory with decoupled bits for higher performance and energy efficiency |
US10268592B2 (en) * | 2014-01-31 | 2019-04-23 | Avago Technologies International Sales Pte. Limited | System, method and computer-readable medium for dynamically mapping a non-volatile memory store |
-
2013
- 2013-11-29 KR KR1020130147508A patent/KR20150062646A/ko not_active Application Discontinuation
-
2014
- 2014-09-04 US US14/476,964 patent/US20150153965A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20150153965A1 (en) | 2015-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719443B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
US11132298B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
US11200176B2 (en) | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy | |
US9269438B2 (en) | System and method for intelligently flushing data from a processor into a memory subsystem | |
US9317429B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels | |
US9286205B2 (en) | Apparatus and method for phase change memory drift management | |
US9208084B2 (en) | Extended main memory hierarchy having flash memory for page fault handling | |
US9811456B2 (en) | Reliable wear-leveling for non-volatile memory and method therefor | |
US20120151127A1 (en) | Method of storing data in a storing device including a volatile memory device | |
US20170206033A1 (en) | Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme | |
US11030088B2 (en) | Pseudo main memory system | |
KR20170087044A (ko) | Os 및 애플리케이션 투명 메모리 압축 기술 | |
US11016905B1 (en) | Storage class memory access | |
JP7228528B2 (ja) | サイレントアクティブページ移行障害 | |
US10073644B2 (en) | Electronic apparatus including memory modules that can operate in either memory mode or storage mode | |
KR102219288B1 (ko) | 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법 | |
KR20150062646A (ko) | 전자 시스템 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |