KR101431205B1 - 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 - Google Patents
캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 Download PDFInfo
- Publication number
- KR101431205B1 KR101431205B1 KR1020070070369A KR20070070369A KR101431205B1 KR 101431205 B1 KR101431205 B1 KR 101431205B1 KR 1020070070369 A KR1020070070369 A KR 1020070070369A KR 20070070369 A KR20070070369 A KR 20070070369A KR 101431205 B1 KR101431205 B1 KR 101431205B1
- Authority
- KR
- South Korea
- Prior art keywords
- cache memory
- data
- memory area
- offset
- received
- Prior art date
Links
Images
Classifications
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0608—Saving storage space on storage systems
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
캐시 메모리 장치가 개시된다. 상기 캐시 메모리 장치는 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리, 및 컨트롤 블록을 포함한다. 상기 컨트롤 블록은 수신될 데이터의 종류를 판단하고 판단 결과에 기초하여 수신되는 데이터의 헤드를 제1캐시 메모리 영역으로 전송, 상기 수신되는 데이터의 바디를 제2캐시 메모리 영역으로 전송, 또는 상기 수신되는 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 수행한다.
SSD, 캐시 메모리 장치, 오프셋, 섹터
Description
본 발명은 반도체 장치에 관한 것으로서, 특히 호스트와 불휘발성 메모리 장치 사이에서 데이터의 쓰기/읽기 성능을 향상시킬 수 있는 캐시 메모리 장치 및 상기 캐시 메모리 장치의 데이터 처리 방법에 관한 것이다.
직렬 ATA(Serial Advanced Technology Attachment ; 이하 SATA)향 솔리드 스테이트 디스크(Solid State Disk ; 이하 SSD)를 포함하는 시스템에서, 호스트의 데이터 전송 속도는 상기 SATA향 SSD 예컨대, 낸드 타입(NAND type) EEPROM (Electrically Erasable and Programmable Read Only Memory ; 이하 EEPROM) 기반의 불휘발성 메모리 장치의 데이터 전송 속도보다 훨씬 빠르기 때문에, 상기 SATA향 SSD를 포함하는 시스템은 원활한 데이터 전송을 위하여 대용량 버퍼를 사용해야한다.
도 1은 종래 기술에 따른 버퍼를 포함하는 불휘발성 메모리 시스템의 블락도를 나타낸다. 도 1을 참조하면, 불휘발성 메모리 시스템(10)은 호스트(20), 버퍼(30), 및 불휘발성 메모리 장치(40)를 포함한다.
불휘발성 메모리 시스템(10)에서, 호스트(20)의 데이터 처리 속도가 불휘발성 메모리 장치(40)의 데이터 처리 속도보다 훨씬 빠르기 때문에, 호스트(20)부터 불휘발성 메모리 장치(40)로 전송되는 데이터를 저장하기 위하여 대용량의 버퍼(30)를 사용한다. 따라서, 버퍼(30)는 호스트(20)로부터 출력된 데이터 또는 호스트(20)로 출력될 데이터를 임시 저장한다. 버퍼(30)는 SDRAM(Synchronous Dynamic Random Access Memory)과 같은 휘발성 메모리 장치로 구현될 수 있다.
불휘발성 메모리 장치(40)는 버퍼(30)로부터 출력된 데이터를 수신하여 저장한다. 불휘발성 메모리 장치(40)는 낸드 타입 EEPROM과 같은 불휘발성 메모리 셀들을 포함하는 메모리 셀 어레이(41), 및 페이지 버퍼(43)를 포함한다. 메모리 셀 어레이(41)는 페이지 버퍼(43)를 통하여 버퍼(30)와 데이터를 주고받는다.
이 경우, 버퍼(30)가 불휘발성 메모리 장치(40)로 전송되는 데이터를 단순히 바이패스(bypass)하는 용도로 사용되기 때문에, 버퍼(30)를 포함하는 불휘발성 메모리 시스템(10)의 효율은 낮아진다.
또한, 페이지 버퍼(43)는 한 페이지 단위(예컨대, n섹터, n은 자연수, n=8)로 데이터를 읽거나 쓴다. 예컨대, 버퍼(30)와 불휘발성 메모리 장치(40) 사이에 네 개의 채널들이 존재하고, 32-섹터(=4*8-섹터) 단위로 버퍼(30)로부터 불휘발성 메모리 장치(40)로 데이터가 전송되는 경우, 불휘발성 메모리 시스템(10)은 완전한 성능(full performance)으로 동작할 수 있다.
그러나, 버퍼(30)로부터 불휘발성 메모리 장치(40)로 전송되는 데이터가 32-섹터보다 작은 경우, 네 개의 채널들이 전부 사용되지 못하므로 불휘발성 메모리 시스템(10)의 효율은 낮아진다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 상술한 문제점들을 해결하기 위하여 안출된 것으로서 호스트와 불휘발성 메모리 장치 사이에서 데이터의 쓰기/읽기 성능을 향상시킬 수 있는 캐시 메모리 장치 및 상기 캐시 메모리 장치의 데이터 처리 방법을 제공하는 것이다.
또한, 본 발명이 이루고자 하는 기술적 과제는 캐시 메모리 장치를 포함하는 시스템을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 캐시 메모리 장치의 데이터 처리 방법은 수신될 데이터의 종류를 판단하는 (a)단계와 판단 결과에 기초하여 수신되는 데이터의 헤드를 제1캐시 메모리 영역으로 전송, 상기 수신되는 데이터의 바디를 제2캐시 메모리 영역으로 전송, 또는 상기 수신되는 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 수행하는 (b)단계를 포함한다.
상기 (a)단계는 논리적 블록 주소 값과 섹터 카운트 값을 수신하는 단계; 및 수신된 논리적 블록 주소 값과 슈퍼페이지 크기 값에 기초하여 오프셋을 계산하고, 계산된 오프셋, 및 수신된 섹터 카운트 값과 상기 슈퍼페이지 크기 값의 비에 기초하여 상기 수신될 데이터의 종류를 판단하는 단계를 포함한다.
상기 (b)단계는 계산된 오프셋과 상기 판단 결과에 기초하여, 상기 헤드 또 는 상기 테일 중에서 적어도 하나를 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송 또는 상기 바디를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송 중에서 적어도 하나는 수행하는 단계를 포함한다.
상기 캐시 메모리 장치의 데이터 처리 방법은 상기 제2캐시 메모리 영역에 저장된 상기 바디를 채널을 통하여 외부 불휘발성 메모리 장치로 전송하는 단계를 더 포함한다.
상기 오프셋은 상기 수신된 논리적 블록 주소 값을 상기 슈퍼페이지 크기 값으로 나눈 나머지이다. 상기 슈퍼페이지 크기 값은 상기 캐시 메모리 장치와 외부 불휘발성 메모리 장치 사이의 채널들의 수와 상기 외부 불휘발성 메모리 장치 내에 구현된 하나의 페이지 버퍼에 저장될 수 있는 섹터들의 수의 곱이다.
상기 기술적 과제를 달성하기 위한 캐시 메모리 장치의 데이터 처리 방법은 수신될 데이터에 바디가 포함되는지의 여부를 판단하는 (a)단계와 판단 결과에 기초하여, 상기 바디를 포함하지 않는 수신되는 데이터를 제1캐시 메모리 영역으로 전송하거나 또는 상기 바디를 포함하는 상기 수신되는 데이터를 제2캐시 메모리 영역으로 전송하는 (b)단계를 포함한다.
상기 (a)단계는 논리적 블록 주소 값과 섹터 카운트 값을 수신하는 단계; 수신된 논리적 블록 주소 값과 슈퍼페이지 크기 값에 기초하여 오프셋을 계산하는 단계; 및 계산된 오프셋, 및 수신된 섹터 카운트 값과 상기 슈퍼페이지 크기 값의 비에 기초하여 상기 수신될 데이터에 상기 바디가 포함되어 있는지의 여부를 판단하는 단계를 포함한다. 상기 캐시 메모리 장치의 데이터 처리 방법은 상기 제2캐시 메모리 영역에 저장된 상기 바디를 포함하는 상기 데이터를 채널을 통하여 외부 불휘발성 메모리 장치로 전송하는 단계를 더 포함한다.
상기 기술적 과제를 달성하기 위한 캐시 메모리 장치는 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리; 및 컨트롤 블록을 포함한다. 상기 컨트롤 블록은 수신될 데이터의 종류를 판단하고, 판단 결과에 기초하여 수신되는 데이터의 헤드를 제1캐시 메모리 영역으로 전송, 상기 수신되는 데이터의 바디를 제2캐시 메모리 영역으로 전송, 또는 상기 수신되는 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 수행한다.
상기 컨트롤 블록은 오프셋 계산기, 판단 유닛, 및 컨트롤러를 포함한다. 상기 오프셋 계산기는 논리적 블록 주소 값과 슈퍼페이지 크기 값에 기초하여 오프셋을 계산한다. 상기 판단 유닛은 계산된 오프셋, 및 섹터 카운트 값과 상기 슈퍼페이지 크기 값에 기초하여 상기 수신될 데이터의 종류를 판단한다. 상기 컨트롤러는 상기 오프셋 계산기에 의하여 계산된 오프셋과 상기 판단 유닛으로부터 출력된 판단 결과에 기초하여, 상기 헤드 또는 상기 테일 중에서 적어도 하나를 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송, 또는 상기 바디를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송 중에서 적어도 하나를 제어한다.
상기 기술적 과제를 달성하기 위한 캐시 메모리 장치는 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리; 및 컨트롤 블록을 포함한다. 상기 컨트롤 블록은 수신될 데이터에 바디가 포함되는지의 여부를 판단하고, 판단 결과에 기초하여 상기 바디를 포함하지 않는 수신되는 데이터를 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 상기 수신되는 데이터를 제2캐시 메모리 영역으로 전송한다.
상기 컨트롤 블록은 오프셋 계산기, 판단 유닛, 및 컨트롤러를 포함한다. 상기 오프셋 계산기는 논리적 블록 주소 값과 슈퍼페이지 크기 값에 기초하여 오프셋을 계산한다. 상기 판단 유닛은 계산된 오프셋, 및 섹터 카운트 값과 상기 슈퍼페이지 크기 값의 비에 기초하여 상기 수신될 데이터에 바디가 포함되어 있는지의 여부를 판단한다. 상기 컨트롤러는 상기 데이터를 수신하고, 상기 판단 유닛으로부터 출력된 판단 결과에 기초하여 상기 바디를 포함하지 않는 상기 수신된 데이터를 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 상기 수신된 데이터를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송한다.
상기 기술적 과제를 달성하기 위한 시스템은 캐시 메모리 장치, 불휘발성 메모리 장치, 및 상기 캐시 메모리 장치와 상기 불휘발성 메모리 장치 사이에 접속된 다수의 채널들을 포함한다. 상기 캐시 메모리 장치는 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리, 및 컨트롤 블록을 포함한다.
상기 컨트롤 블록은 수신될 데이터의 종류를 판단하고 판단 결과에 기초하여 수신되는 데이터의 헤드를 제1캐시 메모리 영역으로 전송, 상기 수신되는 데이터의 바디를 제2캐시 메모리 영역으로 전송, 또는 상기 수신되는 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 제어한다. 상기 컨트롤 블록 은 상기 제2캐시 메모리 장치에 저장된 상기 바디를 상기 다수의 채널들 중에서 적어도 하나의 채널을 통하여 상기 불휘발성 메모리 장치로 전송한다.
상기 기술적 과제를 달성하기 위한 시스템은 캐시 메모리 장치, 불휘발성 메모리 장치, 및 상기 캐시 메모리 장치와 상기 불휘발성 메모리 장치 사이에 접속된 다수의 채널들을 포함한다. 상기 캐시 메모리 장치는 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리, 및 컨트롤 블록을 포함한다.
상기 컨트롤러는 수신될 데이터에 바디가 포함되는지의 여부를 판단하고 판단 결과에 기초하여 상기 바디를 포함하지 않는 수신되는 데이터를 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 상기 수신되는 데이터를 제2캐시 메모리 영역으로 전송한다. 상기 컨트롤 블록은 상기 제2캐시 메모리 장치에 저장된 상기 바디를 포함하는 상기 데이터를 상기 다수의 채널들 중에서 적어도 하나의 채널을 통하여 상기 불휘발성 메모리 장치로 전송한다.
상술한 바와 같이 본 발명의 실시 예에 따른 캐시 메모리 장치는, 바디를 저장하기 위한 저장 영역과 헤드 또는 테일 중에서 적어도 하나를 저장하기 위한 저장 영역을 포함하며, 바디 또는 바디를 포함하는 데이터를 따로 처리하므로 호스트와 불휘발성 메모리 장치 사이에 데이터의 쓰기/읽기 성능을 향상시키는 효과가 있다.
또한, 상술한 바와 같이 본 발명의 실시 예에 따른 캐시 메모리 장치는 바디를 포함하는 데이터를 메모리의 저장 영역에 저장한 후, 저장된 상기 데이터를 불 휘발성 메모리 장치로 전송하므로, 호스트와 불휘발성 메모리 장치 사이에 데이터의 쓰기/읽기 성능을 향상시키는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다. 이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일 실시 예에 따른 캐시 메모리 장치를 포함하는 불휘발성 메모리 시스템의 블락도를 나타낸다. 도 2를 참조하면, 컴퓨터 시스템, 오디오 시스템, 홈 오토메이션, 또는 이동 전자 장치와 같은 불휘발성 메모리 시스템(100)은 호스트(110), 캐시 메모리 장치(120), 및 불휘발성 메모리 장치(150)를 포함한다.
호스트(110)와 캐시 메모리 장치(120)는 SATA 프로토콜을 이용하여 데이터를 주고받을수 있다. SATA 향 SSD는 캐시 메모리 장치(120)와 불휘발성 메모리 장치 (150)를 포함한다. 호스트(110)는 캐시 메모리 장치(120)를 통하여 불휘발성 메모리 장치(150)와 데이터를 주고받는다.
호스트(110)는 논리적 블록 주소(Logical Block Address; LBA) 값과 섹터 카운트 값을 캐시 메모리 장치(120)로 출력하고, 쓰기 데이터(DATA)를 캐시 메모리 장치(120)로 출력한다.
캐시 메모리 장치(120)는 호스트(110)와 불휘발성 메모리 장치들(161 내지 168) 사이에서 전송되는 데이터를 임시 저장한다. 캐시 메모리 장치(120)는 컨트롤 블록(130)과 메모리(140)를 포함한다.
컨트롤 블록(130)은 LBA 값과 섹터 카운트 값을 수신하고, 수신된 LBA 값과 슈퍼페이지 크기 값에 기초하여 오프셋을 계산하고, 수신된 섹터 카운트 값과 상기 슈퍼페이지 크기 값의 비(ratio)를 계산하고, 계산된 오프셋과 계산된 비에 기초하여 수신될 데이터의 종류(또는 구조)를 판단한다.
본 명세서에서 사용되는 데이터의 종류들은 7가지로 분류된다. 즉, 헤드(head)만을 포함하는 데이터, 바디(body)만을 포함하는 데이터, 테일(tail)만을 포함하는 데이터, 헤드와 바디를 포함하는 데이터, 헤드와 테일을 포함하는 데이터, 바디와 테일을 포함하는 데이터, 및 헤드와 바디와 테일을 모두 포함하는 데이터이다.
수신될 데이터의 종류가 판단된 후, 컨트롤 블록(130)은 데이터(DATA)를 수신하고, 계산된 오프셋과 계산된 비에 기초하여 수신된 데이터(DATA)에 포함된 헤드를 제1포인터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141)으로 전송하거나, 수신된 데이터(DATA)에 포함된 바디를 제2포인터(Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143)으로 전송하거나, 수신된 데이터(DATA)에 포함된 테일을 제1포인터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141)으로 전송한다.
SDRAM 또는 DDR SDRAM과 같은 휘발성 메모리로 구현될 수 있는 메모리(140)는 헤드 또는 테일 중에서 적어도 하나를 저장하기 위한 제1캐시 메모리 영역(141), 및 적어도 하나의 바디를 저장하기 위한 제2캐시 메모리 영역(143)을 포 함한다.
캐시 메모리 장치(120)와 불휘발성 메모리 장치(150) 사이에는 n(n은 자연수, 예컨대, n=4)개의 채널들(151, 153, 155, 및 157)이 존재한다. 즉, 캐시 메모리 장치(120)와 불휘발성 메모리 장치(150)는 n개의 채널들(151, 153, 155, 및 157) 중에서 적어도 하나의 채널을 통하여 데이터를 주고받는다.
n개의 채널들(151, 153, 155, 및 157) 각각에는 다수의 불휘발성 메모리들(161과 165, 162와 166, 163과 167, 및 164와 168)이 접속되고, 다수의 불휘발성 메모리들(161과 165, 162와 166, 163과 167, 및 164와 168) 각각은 메모리 셀 어레이(11)와 페이지 버퍼(13)를 포함한다.
메모리 셀 어레이(11)는 다수의 EEPROM들을 포함하고, 다수의 EEPROM들 각각은 SLC(Single Level Cell) 또는 MLC(Multi Level Cell)로 구현될 수 있다.
페이지 버퍼(13)는 m(m은 자연수, m=8)-섹터를 저장할 수 있다. 예컨대, 하나의 섹터는 k(k는 자연수, 예컨대, k=512 또는 k=1024) 바이트가 될 수 있다. 메모리 셀 어레이(11)와 캐시 메모리 장치(120)는 페이지 버퍼(13)와 대응되는 채널을 통하여 데이터를 주고받는다.
제1캐시 메모리 영역(141) 또는 제2캐시 메모리 영역(143)은 다수의 단위 메모리 영역들을 포함하며, 상기 다수의 단위 메모리 영역들 각각은 슈퍼페이지 크기를 갖는다.
예컨대, 슈퍼페이지 크기(=n*m)는 캐시 메모리 장치(120)와 불휘발성 메모리 장치(150) 사이에 접속된 채널들의 수(예컨대, n=4)와 불휘발성 메모리(161) 내의 페이지 버퍼(13)에 저장될 수 있는 섹터들의 수(예컨대, m=8)의 곱으로 결정된다. 따라서, 본 발명의 실시 예에 따른 슈퍼페이지 크기는 32-섹터이다. 상기 32-섹터에서 숫자 "32"를 슈퍼페이지 크기 값이라 한다. 슈퍼페이지 크기는 바디의 크기와 같다.
도 3은 본 발명의 실시 예에 따라 데이터를 분류하는 방법을 설명하기 위한 개략도이고, 도 4는 도 2에 도시된 컨트롤 블록(130)을 포함하는 캐시 메모리 장치(120)의 블록도이고, 도 5는 본 발명의 일 실시 예에 따른 캐시 메모리 장치의 데이터 처리 방법을 나타내는 흐름도이다. 도 2, 도 3, 도 4, 및 도 5를 참조하여 캐시 메모리 장치(120)의 데이터 처리 방법을 설명한다.
컨트롤 블록(130)은 설정 유닛(201), 오프셋 계산기(203), 판단 유닛(205), 및 컨트롤러(207)를 포함한다. 오프셋 계산기(203)와 판단 유닛(205)은 설정 유닛(201)으로부터 출력된 슈퍼페이지 크기 값(SPV=32)을 수신한다. 설정 유닛(201)은 레지스터와 같은 데이터 저장 장치로 구현될 수 있으며, 슈퍼페이지 크기 값(SPV=32)은 하드웨어 또는 소프트웨어를 통하여 설정될 수 있다.
캐시 메모리 장치(120)는 호스트(110)로부터 출력된 LBA 값(예컨대, LBA6에서 6)과 섹터 카운트 값(예컨대, 80)을 수신한다(도 5의 S10).
컨트롤 블록(130)의 오프셋 계산기(203)는 수신된 LBA 값(예컨대, 6)을 슈퍼페이지 크기 값(SPV=32)으로 나눈 나머지(예컨대, 6), 즉 오프셋을 계산한다(도 5의 S20).
컨트롤 블록(130)의 판단 유닛(205)은 수신된 섹터 카운트 값(예컨대, 80)과 슈퍼페이지 크기 값(SPV=32)의 비를 계산하고, 오프셋 계산기(203)에 의하여 계산된 오프셋과 계산된 비에 기초하여 수신될 데이터(DATA)의 종류를 판단한다(도 5의 S20). 오프셋 계산기(203)와 판단 유닛(205)은 판단 블락을 구성할 수 있다.
예컨대, LBA 값이 6이고 섹터 카운트 값이 80인 경우, 판단 유닛(205)은 오프셋 계산기(203)에 의하여 계산된 오프셋(예컨대, 6)과 계산된 비에 기초하여 수신될 데이터(DATA)가 하나의 헤드와 하나의 바디와 하나의 테일을 포함하는 데이터임을 판단할 수 있다.
도 3에 도시된 각각의 숫자는 각각의 섹터가 저장될 메모리의 저장 영역을 나타낸다. 도 3에서는 헤드, 바디, 및 테일을 정의하기 위하여, 도 2와 도 4와 달리 헤드 또는 테일 중에서 적어도 하나를 저장하기 위한 제1캐시 메모리 영역과 바디를 저장하기 위한 제2캐시 메모리 영역을 별도로 분리하지 않았다.
LBA 값이 6이고 섹터 카운트 값이 80인 경우, 오프셋 계산기(203)에 의하여 계산된 오프셋이 6이므로, 섹터 카운트 값 80에 상응하는 데이터(즉, 80-섹터들을 포함하는 데이터)가 섹터 단위로 숫자 "6"으로 표현된 영역에서부터 숫자"85"로 표현된 영역까지 순차적으로 저장된다고 가정할 때, 숫자 "6"으로 표현된 영역에서부터 숫자"31"로 표현된 영역까지 저장되는 섹터들은 헤드(head)라고 정의하고, 숫자 "32"로 표현된 영역에서부터 숫자"63"으로 표현된 영역까지 저장되는 섹터들은 바디(body)라고 정의하고, 숫자 "64"로 표현된 영역에서부터 숫자"85"로 표현된 영역까지 저장되는 섹터들은 테일(tail)이라고 정의한다.
본 발명의 실시 예에서는 헤드 또는 테일 중에서 적어도 하나를 제1포인 터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141)에 저장하고, 적어도 하나의 바디를 제2포인터(Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143)에 저장한다.
다른 예들로서, 수신된 LBA 값이 0이고 수신된 섹터 카운트 값이 64인 경우, 판단 유닛(205)은 오프셋 계산기(203)에 의하여 계산된 오프셋(예컨대, 0)과 계산된 비에 기초하여 수신될 데이터(DATA)가 두 개의 바디들 만을 포함하는 데이터임을 판단할 수 있다. 그리고, 수신된 LBA 값이 38이고 수신된 섹터 카운트 값이 2인 경우, 판단 유닛(205)은 오프셋 계산기(203)에 의하여 계산된 오프셋(예컨대, 6)과 계산된 비에 기초하여 수신될 데이터(DATA)가 하나의 헤드만을 포함하는 데이터임을 판단할 수 있다. 또한, 수신된 LBA 값이 32이고 수신된 섹터 카운트 값이 8인 경우, 판단 유닛(205)은 오프셋 계산기(203)에 의하여 계산된 오프셋(예컨대, 0)과 계산된 비에 기초하여 수신될 데이터(DATA)가 하나의 테일 만을 포함하는 데이터임을 판단할 수 있다.
예컨대, 헤드는 오프셋이 존재하고 수신된 데이터의 크기가 슈퍼페이지 크기보다 작은 데이터이고, 바디는 오프셋이 존재하지 않고 수신된 데이터의 크기가 슈퍼페이지 크기의 배수인 데이터이고, 테일은 오프셋이 존재하지 않고 데이터의 크기가 슈퍼페이지 크기보다 작은 데이터이다.
컨트롤러(207)는 호스트(110)로부터 출력된 섹터 카운트 값(예컨대, 80)에 상응하는 데이터를 수신하면서, 오프셋 계산기(203)에 의하여 계산된 오프셋(예컨대, 6)과 판단 유닛(205)의 판단 결과(ITD)에 기초하여 헤드를 제1포인터 (Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141)로 전송하고, 바디를 제2포인터(Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143)로 전송하고, 테일을 제1포인터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141)로 전송한다(도 5의 S30).
좀더 구체적으로 설명하면, 오프셋이 존재하는 경우, 헤드 플래그는 헤드의 첫 번째 섹터가 입력되지 전에 활성화된다. 따라서 컨트롤러(207)는 활성화된 헤드 플래그와 오프셋 계산기(203)로부터 출력된 오프셋에 기초하여 입력된 상기 헤드(DATA)의 첫 번째 섹터를 제1포인터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141)의 숫자 "6"으로 표현된 영역에 저장한다.
상기 헤드의 첫 번째 섹터가 제1캐시 메모리 영역(141)의 숫자 "6"으로 표현된 영역에 저장되는 동안, 상기 헤드 플래그는 비활성화되고, 바디 플래그는 활성화된다.
제1캐시 메모리 영역(141)의 숫자 "31"으로 표현된 영역에 상기 헤드의 마지막 섹터가 저장되는 동안, 컨트롤러(207)는 활성화된 바디 플래그에 응답하여 다음에 입력될 섹터가 바디의 첫 번째 섹터임을 판단한다.
상기 헤드의 마지막 섹터가 완전히 저장되고 바디의 첫 번째 섹터가 입력되기 전에, 컨트롤러(207)는 활성화된 바디 플래그에 응답하여 제1포인터(Pointer1)를 제2포인터(Pointer2)로 변경한다.
따라서, 바디의 첫 번째 섹터 내지 마지막 섹터는 제2포인터(Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143)의 숫자"32"로 표현된 영역에서부터 숫자 "63"으로 표현된 영역까지 순차적으로 저장된다. 바디의 첫 번째 섹터가 제2캐시 메모리 영역(143)의 숫자"32"로 표현된 영역에 저장되는 동안, 상기 바디 플래그는 비활성화되고 테일 플래그는 활성화된다. 제2캐시 메모리 영역(143)의 숫자 "63"으로 표현된 영역에 바디의 마지막 섹터가 저장되는 동안, 컨트롤러(207)는 활성화된 테일 플래그에 응답하여 다음에 입력될 섹터가 테일의 첫 번째 섹터임을 판단한다.
상기 바디의 마지막 섹터가 완전히 저장되고 테일의 첫 번째 섹터가 입력되기 전에, 컨트롤러(207)는 활성화된 테일 플래그에 응답하여 제2포인터(Pointer2)를 제1포인터(Pointer1)로 변경한다.
따라서, 테일의 첫 번째 섹터 내지 마지막 섹터는 제2포인터(Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143)의 숫자 "64"로 표현된 영역에서부터 숫자"85"로 표현된 영역까지 순차적으로 저장된다. 예컨대, 판단 유닛(205)의 판단 결과(ITD)에는 헤드 플래그, 바디 플래그, 및 테일 플래그가 포함될 수 있다. 또한, 컨트롤러(207)는 판단 유닛(205)의 판단 결과(ITD)에 기초하여 헤드 플래그, 바디 플래그, 및 테일 플래그를 발생할 수 있다. 이 경우 컨트롤러(207)는 헤드 플래그, 바디 플래그, 및 테일 플래그를 저장할 수 있는 레지스터와 같은 저장 장치를 포함할 수 있다.
바디의 첫 번째 섹터 내지 마지막 섹터가 제2캐시 메모리 영역(143)에 완전히 저장된 후, 컨트롤러(207)는 제2캐시 메모리 영역(143)에 저장된 바디(예컨대, 32섹터)를 불휘발성 메모리 장치(150)로 전송할 수 있다(도 5의 S40). 컨트롤 블록(130)은 제2캐시 메모리 영역(143)에 저장된 바디 (예컨대, 32섹터)를 불휘발성 메모리 장치(150)로 전송하는 타이밍을 제어할 수 있다.
예컨대, 컨트롤 블록(130)은 제2캐시 메모리 영역(143)에 저장된 바디(예컨대, 32-섹터)를 채널들의 수(예컨대, 4)로 나누고, 나누어진 8-섹터씩 다수의 채널들(151, 153, 155, 및 157) 각각을 통하여 각각의 메모리(161, 162, 163, 및 164)로 전송할 수 있다.
도 6은 도 2에 도시된 캐시 메모리 장치를 이용하여 불휘발성 메모리 장치에 데이터를 쓰고 읽는 동작을 설명하기 위한 흐름도를 나타낸다.
호스트(110)가 쓰기 명령과 LBA 값 0과 섹터 카운트 값 64를 출력하고, 쓰기 명령과 LBA 값 38과 섹터 카운트 값 2를 출력하고, 읽기 명령과 LBA 값 32와 섹터 카운트 값 8을 순차적으로 출력할 때, 도 2, 도 4, 및 도 6을 참조하여 본 발명의 실시 예에 따른 캐시 메모리 장치(120)의 동작을 설명하면 다음과 같다.
첫 번째, 컨트롤 블록(130)은 쓰기 명령, LBA 값 0, 및 섹터 카운트 값 64를 수신한다. 컨트롤 블록(130)은 LBA 값 0, 섹터 카운트 값 64, 및 슈퍼페이지 크기 값 32에 기초하여 오프셋(예컨대, 0)을 계산하고, 수신될 데이터(DATA)가 두 개의 바디들만을 포함하는 데이터임을 판단한다.
컨트롤 블록(130)은 활성화된 바디 플래그에 기초하여 수신되는 데이터, 즉 64섹터들을 포함하는 두 개의 바디들을 제2포인터(Pointer2)가 지시하는 제2캐시 메모리 영역(143)의 영역들(0 내지 63)에 저장한다(도 6(a)). 컨트롤 블록(130)은 각 채널(151, 153, 155, 및 157)로 16-섹터씩 전송한다(도 6(b)). 각 채널(151, 153, 155, 및 157)로 전송되는 섹터들의 크기는 전체 바디의 크기(예컨대, 64-섹 터)를 채널들의 수(예컨대, 4)로 나눈 크기이다.
두 번째, 컨트롤 블록(130)은 쓰기 명령, LBA 값 38, 및 섹터 카운트 값 2를 수신한다. 컨트롤 블록(130)은 LBA 값 38, 섹터 카운트 값 2, 및 슈퍼페이지 크기 값 32에 기초하여 오프셋(예컨대, 6)을 계산하고, 수신될 데이터(DATA)가 헤드만 포함하는 데이터임을 판단한다.
활성화된 헤드 플래그에 기초하여 컨트롤 블록(130)은 수신되는 헤드, 즉 두 개의 섹터들 각각을 제1포인터(Pointer1)가 지시하는 제1캐시 메모리 영역(141)의 제7번째 메모리 영역(38')과 제8번째 메모리 영역(39')에 오프셋(예컨대, 6)을 반영하여 저장한다(도 6(c)). 이때, 제1캐시 메모리 영역(141)의 제7번째 메모리 영역(38')과 제8번째 메모리 영역(39')에 저장된 섹터들은 불휘발성 메모리 장치(150)로 전송하지 않는다.
세 번째, 컨트롤 블록(130)은 읽기 명령, LBA 값 32, 및 섹터 카운트 값 8을 수신한다. 컨트롤 블록(130)은 LBA 값 32, 섹터 카운트 값 8, 및 슈퍼페이지 크기 값 32에 기초하여 오프셋(예컨대, 0)을 계산하고, 불휘발성 메모리 장치(150)의 메모리(161)로부터 읽혀질 데이터가 테일 만을 포함하는 데이터임을 판단한다.
컨트롤 블록(130)의 제어하에, 메모리(161)의 페이지 버퍼(13)에는 메모리 셀 어레이(11)로부터 출력된 8-섹터들이 저장된다(도 6(d)). 컨트롤 블록(130)은 페이지 버퍼(13)로부터 숫자"32"부터 숫자"37"에 저장된 섹터들만을 제1캐시 메모리 영역(141)로 읽어올 수 있다(도 6(e)).
도 7은 본 발명의 다른 실시예에 따른 캐시 메모리 장치를 포함하는 불휘발 성 메모리 시스템의 블락도를 나타내고, 도 8은 도 7에 도시된 컨트롤 블록을 포함하는 캐시 메모리 장치의 블록도이고, 도 9는 본 발명의 다른 실시 예에 따른 캐시 메모리 장치의 데이터 처리 방법을 나타내는 흐름도이다.
도 7, 도 8, 및 도 9를 참조하여, 캐시 메모리 장치(121)가 바디를 포함하지 않는 제1데이터를 제1포인터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역 (141')으로 전송하는 과정, 또는 바디를 포함하는 제2데이터를 제2포인터 (Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143')으로 전송하는 과정을 설명하면 다음과 같다.
우선, 오프셋 계산기(203)와 판단 유닛(205)은 설정 유닛(201)으로부터 출력된 슈퍼페이지 크기 값(SPV=32)을 수신한다.
캐시 메모리 장치(121)는 호스트(110)로부터 출력된 LBA 값 (예컨대, 6)과 섹터 카운트 값 (예컨대, 80)을 수신한다 (도 9의 S11).
오프셋 계산기(203)는 수신된 LBA 값(예컨대, 6)을 슈퍼페이지 크기 값(SPV=32)으로 나눈 나머지, 즉 오프셋을 계산한다(도 9의 S21).
판단 유닛(205)은 수신된 섹터 카운트 값(예컨대, 80)과 슈퍼페이지 크기 값(SPV=32)의 비를 계산하고, 오프셋 계산기(203)에 의하여 계산된 오프셋과 계산된 비에 기초하여 수신될 데이터(DATA)에 바디가 포함되어 있는지의 여부를 판단한다(도 9의 S21). 오프셋 6과 섹터 카운트 값 80을 갖는 데이터(DATA)는 하나의 헤드와 하나의 바디와 하나의 테일을 포함한다.
따라서, 컨트롤러(207')는 오프셋 6과 섹터 카운트 값 80을 갖는 데이 터(DATA)를 제2포인터(Pointer2)에 의하여 지정된 제2캐시 메모리 영역(143')으로 전송한다(도 9의 S31). 제2캐시 메모리 영역(143')에 저장된 데이터는 컨트롤 블락(121)의 제어하에 불휘발성 메모리 장치(150)로 전송된다(도 9의 S41).
그러나, 컨트롤 블록(121)이 호스트(110)로부터 출력된 LBA 값(예컨대, 38)과 섹터 카운트 값(예컨대, 2)을 수신하는 경우, 컨트롤 블록(121)은 오프셋 6과 섹터 카운트 값 2를 갖는 데이터를 제1포인터(Pointer1)에 의하여 지정된 제1캐시 메모리 영역(141')으로 전송한다(도 9의 S31).
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 종래 기술에 따른 버퍼를 포함하는 불휘발성 메모리 시스템의 블락도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 캐시 메모리 장치를 포함하는 불휘발성 메모리 시스템의 블락도를 나타낸다.
도 3은 본 발명의 실시 예에 따라 데이터를 분류하는 방법을 설명하기 위한 개략도이다.
도 4는 도 2에 도시된 컨트롤 블록을 포함하는 캐시 메모리 장치의 블록도이다.
도 5는 본 발명의 일 실시 예에 따른 캐시 메모리 장치의 데이터 처리 방법을 나타내는 흐름도이다.
도 6은 도 2에 도시된 캐시 메모리 장치를 이용하여 불휘발성 메모리 장치에 데이터를 쓰고 읽는 동작을 설명하기 위한 흐름도를 나타낸다.
도 7은 본 발명의 다른 실시예에 따른 캐시 메모리 장치를 포함하는 불휘발성 메모리 시스템의 블락도를 나타낸다.
도 8은 도 7에 도시된 컨트롤 블록을 포함하는 캐시 메모리 장치의 블록도이다.
도 9는 본 발명의 다른 실시 예에 따른 캐시 메모리 장치의 데이터 처리 방 법을 나타내는 흐름도이다.
Claims (16)
- 수신될 데이터의 종류를 판단하는 (a)단계; 및판단의 결과에 기초하여, 수신된 데이터의 헤드를 제1캐시 메모리 영역으로 전송, 상기 수신된 데이터의 바디를 제2캐시 메모리 영역으로 전송, 및 상기 수신된 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 수행하는 (b)단계를 포함하고,상기 헤드는 오프셋이 존재하고 상기 수신된 데이터의 크기가 슈퍼페이지 크기보다 작은 데이터이고, 상기 바디는 상기 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 상기 슈퍼페이지 크기의 배수인 데이터이고, 상기 테일은 상기 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 상기 슈퍼페이지 크기보다 작은 데이터인 캐시 메모리 장치의 데이터 처리 방법.
- 제1항에 있어서, 상기 (a)단계는,논리적 블록 주소 값과 섹터 카운트 값을 수신하는 단계; 및수신된 논리적 블록 주소 값과 상기 슈퍼페이지 크기에 기초하여 상기 오프셋을 계산하고, 계산된 오프셋, 및 수신된 섹터 카운트 값과 상기 슈퍼페이지 크기의 비에 기초하여 상기 수신될 데이터의 종류를 판단하는 단계를 포함하며,상기 (b)단계는,계산된 오프셋과 상기 판단의 결과에 기초하여, 상기 헤드 또는 상기 테일을 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송 또는 상기 바디를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송 중에서 적어도 하나는 수행하는 단계를 포함하는 캐시 메모리 장치의 데이터 처리 방법.
- 제1항에 있어서, 상기 캐시 메모리 장치의 데이터 처리 방법은,상기 제2캐시 메모리 영역에 저장된 상기 바디를 채널을 통하여 외부 불휘발성 메모리 장치로 전송하는 단계를 더 포함하는 캐시 메모리 장치의 데이터 처리 방법.
- 제2항에 있어서, 상기 오프셋은 상기 수신된 논리적 블록 주소 값을 상기 슈퍼페이지 크기로 나눈 나머지인 캐시 메모리 장치의 데이터 처리 방법.
- 제2항에 있어서, 상기 슈퍼페이지 크기는 상기 캐시 메모리 장치와 외부 불휘발성 메모리 장치 사이의 채널들의 수와 상기 외부 불휘발성 메모리 장치 내에 구현된 하나의 페이지 버퍼에 저장될 수 있는 섹터들의 수의 곱인 캐시 메모리 장치의 데이터 처리 방법.
- 수신될 데이터에 바디가 포함되는지의 여부를 판단하는 (a)단계; 및판단의 결과에 기초하여, 상기 바디를 포함하지 않는 수신된 데이터를 제1캐시 메모리 영역으로 전송하거나 또는 상기 바디를 포함하는 수신된 데이터를 제2캐시 메모리 영역으로 전송하는 (b)단계를 포함하고,상기 바디는 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 슈퍼페이지 크기의 배수인 데이터를 의미하는 캐시 메모리 장치의 데이터 처리 방법.
- 제6항에 있어서, 상기 (a)단계는,논리적 블록 주소 값과 섹터 카운트 값을 수신하는 단계;수신된 논리적 블록 주소 값과 상기 슈퍼페이지 크기에 기초하여 상기 오프셋을 계산하는 단계; 및계산된 오프셋, 및 수신된 섹터 카운트 값과 상기 슈퍼페이지 크기의 비에 기초하여 상기 수신될 데이터에 상기 바디가 포함되어 있는지의 여부를 판단하는 단계를 포함하는 캐시 메모리 장치의 데이터 처리 방법.
- 제6항에 있어서, 상기 캐시 메모리 장치의 데이터 처리 방법은,상기 제2캐시 메모리 영역에 저장되고 상기 바디를 포함하는 수신된 데이터를 채널을 통하여 외부 불휘발성 메모리 장치로 전송하는 단계를 더 포함하는 캐시 메모리 장치의 데이터 처리 방법.
- 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리; 및수신될 데이터의 종류를 판단하고, 판단의 결과에 기초하여 수신된 데이터의 헤드를 상기 제1캐시 메모리 영역으로 전송, 상기 수신된 데이터의 바디를 상기 제2캐시 메모리 영역으로 전송, 및 상기 수신된 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 수행하는 컨트롤 블록을 포함하며,상기 헤드는 오프셋이 존재하고 상기 수신된 데이터의 크기가 슈퍼페이지 크기보다 작은 데이터이고, 상기 바디는 상기 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 상기 슈퍼페이지 크기의 배수인 데이터이고, 상기 테일은 상기 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 상기 슈퍼페이지 크기보다 작은 데이터인 캐시 메모리 장치.
- 제9항에 있어서, 상기 컨트롤 블록은,논리적 블록 주소 값과 상기 슈퍼페이지 크기에 기초하여 상기 오프셋을 계산하는 오프셋 계산기;계산된 오프셋, 및 섹터 카운트 값과 상기 슈퍼페이지 크기의 비에 기초하여 상기 수신될 데이터의 종류를 판단하는 판단 유닛; 및상기 오프셋 계산기에 의하여 계산된 오프셋과 상기 판단 유닛으로부터 출력된 판단의 결과에 기초하여, 상기 헤드 또는 상기 테일을 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로의 전송과 상기 바디를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로의 전송 중에서 적어도 하나를 제어하는 컨트롤러를 포함하는 캐시 메모리 장치.
- 제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리; 및수신될 데이터에 바디가 포함되는지의 여부를 판단하고, 판단의 결과에 기초하여, 상기 바디를 포함하지 않는 수신된 데이터를 상기 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 수신된 데이터를 상기 제2캐시 메모리 영역으로 전송하는 컨트롤 블록을 포함하고,상기 바디는 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 슈퍼페이지 크기의 배수인 데이터를 의미하는 캐시 메모리 장치.
- 제11항에 있어서, 상기 컨트롤 블록은,논리적 블록 주소 값과 상기 슈퍼페이지 크기에 기초하여 상기 오프셋을 계산하는 오프셋 계산기;계산된 오프셋, 및 섹터 카운트 값과 상기 슈퍼페이지 크기의 비에 기초하여 상기 수신될 데이터에 상기 바디가 포함되어 있는지의 여부를 판단하는 판단 유닛; 및상기 데이터를 수신하고, 상기 판단 유닛으로부터 출력된 판단의 결과에 기초하여, 상기 바디를 포함하지 않는 수신된 데이터를 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 수신된 데이터를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송하는 컨트롤러를 포함하는 캐시 메모리 장치.
- 캐시 메모리 장치, 불휘발성 메모리 장치, 및 상기 캐시 메모리 장치와 상기 불휘발성 메모리 장치 사이에 접속된 다수의 채널들을 포함하는 시스템에 있어서,상기 캐시 메모리 장치는,제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리; 및수신될 데이터의 종류를 판단하고, 판단의 결과에 기초하여 수신된 데이터의 헤드를 상기 제1캐시 메모리 영역으로 전송, 상기 수신된 데이터의 바디를 상기 제2캐시 메모리 영역으로 전송, 및 상기 수신된 데이터의 테일을 상기 제1캐시 메모리 영역으로 전송 중에서 적어도 하나를 제어하는 컨트롤 블록을 포함하며,상기 컨트롤 블록은 상기 제2캐시 메모리 장치에 저장된 상기 바디를 상기 다수의 채널들 중에서 적어도 하나의 채널을 통하여 상기 불휘발성 메모리 장치로 전송하고,상기 헤드는 오프셋이 존재하고 상기 수신된 데이터의 크기가 슈퍼페이지 크기보다 작은 데이터이고, 상기 바디는 상기 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 상기 슈퍼페이지 크기의 배수인 데이터이고, 상기 테일은 상기 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 상기 슈퍼페이지 크기보다 작은 데이터인 시스템.
- 제13항에 있어서, 상기 컨트롤 블록은,논리적 블록 주소 값과 상기 슈퍼페이지 크기에 기초하여 상기 오프셋을 계산하는 오프셋 계산기;계산된 오프셋, 및 섹터 카운트 값과 상기 슈퍼페이지 크기의 비에 기초하여 상기 수신될 데이터의 종류를 판단하는 판단 유닛; 및상기 오프셋 계산기에 의하여 계산된 오프셋과 상기 판단 유닛으로부터 출력된 판단의 결과에 기초하여, 상기 헤드 또는 상기 테일을 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송과 상기 바디를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송 중에서 적어도 하나를 제어하는 컨트롤러를 포함하는 시스템.
- 캐시 메모리 장치, 불휘발성 메모리 장치, 및 상기 캐시 메모리 장치와 상기 불휘발성 메모리 장치 사이에 접속된 다수의 채널들을 포함하는 시스템에 있어서,상기 캐시 메모리 장치는,제1캐시 메모리 영역과 제2캐시 메모리 영역을 포함하는 메모리; 및수신될 데이터에 바디가 포함되는지의 여부를 판단하고, 판단의 결과에 기초하여, 상기 바디를 포함하지 않는 수신된 데이터를 상기 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 수신된 데이터를 상기 제2캐시 메모리 영역으로 전송하는 컨트롤 블록을 포함하며,상기 컨트롤 블록은 상기 제2캐시 메모리 장치에 저장된 상기 바디를 포함하는 상기 데이터를 상기 다수의 채널들 중에서 적어도 하나의 채널을 통하여 상기 불휘발성 메모리 장치로 전송하고,상기 바디는 오프셋이 존재하지 않고 상기 수신된 데이터의 크기가 슈퍼페이지 크기의 배수인 데이터를 의미하는 시스템.
- 제15항에 있어서, 상기 컨트롤 블록은,논리적 블록 주소 값과 상기 슈퍼페이지 크기에 기초하여 상기 오프셋을 계산하는 오프셋 계산기;계산된 오프셋, 및 섹터 카운트 값과 상기 슈퍼페이지 크기의 비에 기초하여 상기 수신될 데이터에 상기 바디가 포함되어 있는지의 여부를 판단하는 판단 유닛; 및상기 데이터를 수신하고, 상기 판단 유닛으로부터 출력된 판단 결과에 기초하여, 상기 바디를 포함하지 않는 수신된 데이터를 제1포인터에 의하여 지정된 상기 제1캐시 메모리 영역으로 전송하거나 상기 바디를 포함하는 수신된 데이터를 제2포인터에 의하여 지정된 상기 제2캐시 메모리 영역으로 전송하는 컨트롤러를 포함하는 시스템.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070070369A KR101431205B1 (ko) | 2007-07-13 | 2007-07-13 | 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 |
US12/146,950 US20090019234A1 (en) | 2007-07-13 | 2008-06-26 | Cache memory device and data processing method of the device |
TW097126166A TWI525430B (zh) | 2007-07-13 | 2008-07-10 | 快取記憶體裝置以及該裝置的資料處理方法 |
US14/561,470 US9262079B2 (en) | 2007-07-13 | 2014-12-05 | Cache memory device and data processing method of the device |
US15/007,584 US10095436B2 (en) | 2007-07-13 | 2016-01-27 | Cache memory device and data processing method of the device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070070369A KR101431205B1 (ko) | 2007-07-13 | 2007-07-13 | 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090006920A KR20090006920A (ko) | 2009-01-16 |
KR101431205B1 true KR101431205B1 (ko) | 2014-08-18 |
Family
ID=40254087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070070369A KR101431205B1 (ko) | 2007-07-13 | 2007-07-13 | 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 |
Country Status (3)
Country | Link |
---|---|
US (3) | US20090019234A1 (ko) |
KR (1) | KR101431205B1 (ko) |
TW (1) | TWI525430B (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101431205B1 (ko) | 2007-07-13 | 2014-08-18 | 삼성전자주식회사 | 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 |
WO2010089795A1 (en) * | 2009-02-03 | 2010-08-12 | Hitachi, Ltd. | Storage control device, and control method for cache memory |
US9898402B2 (en) * | 2011-07-01 | 2018-02-20 | Micron Technology, Inc. | Unaligned data coalescing |
KR101374065B1 (ko) * | 2012-05-23 | 2014-03-13 | 아주대학교산학협력단 | 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치 |
CN104182701B (zh) * | 2014-08-15 | 2017-02-22 | 华为技术有限公司 | 一种阵列控制器、阵列和数据处理方法 |
CN105589919B (zh) * | 2015-09-18 | 2018-01-09 | 广州市动景计算机科技有限公司 | 网页资源处理方法及装置 |
US10802712B2 (en) * | 2015-10-13 | 2020-10-13 | Axell Corporation | Information processing apparatus and method of processing information |
JP6424330B2 (ja) * | 2015-10-13 | 2018-11-21 | 株式会社アクセル | 情報処理装置、及び情報処理方法 |
CN107015978B (zh) * | 2016-01-27 | 2020-07-07 | 阿里巴巴(中国)有限公司 | 一种网页资源处理方法以及装置 |
US20180292991A1 (en) * | 2017-04-11 | 2018-10-11 | Micron Technology, Inc. | Memory protocol with programmable buffer and cache size |
CN107122136B (zh) * | 2017-04-25 | 2021-02-02 | 浙江宇视科技有限公司 | 一种容量获取方法及装置 |
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5651136A (en) * | 1995-06-06 | 1997-07-22 | International Business Machines Corporation | System and method for increasing cache efficiency through optimized data allocation |
US20070143545A1 (en) | 2004-03-08 | 2007-06-21 | Conley Kevin M | Flash Controller Cache Architecture |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574944A (en) * | 1993-12-15 | 1996-11-12 | Convex Computer Corporation | System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context |
US5860091A (en) * | 1996-06-28 | 1999-01-12 | Symbios, Inc. | Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications |
JPH11272551A (ja) | 1998-03-19 | 1999-10-08 | Hitachi Ltd | キャッシュメモリのフラッシュ制御方式およびキャッシュメモリ |
US6687158B2 (en) | 2001-12-21 | 2004-02-03 | Fujitsu Limited | Gapless programming for a NAND type flash memory |
US6711635B1 (en) * | 2002-09-30 | 2004-03-23 | Western Digital Technologies, Inc. | Disk drive employing thresholds for cache memory allocation |
KR100562134B1 (ko) * | 2004-01-09 | 2006-03-21 | 주식회사 하이닉스반도체 | 플래시 메모리 소자의 페이지 버퍼 |
KR20060089108A (ko) | 2005-02-03 | 2006-08-08 | 엘지전자 주식회사 | Sdram을 이용한 캐시 버퍼 장치 |
KR100939333B1 (ko) | 2005-09-29 | 2010-01-28 | 한국전자통신연구원 | 카운터를 이용해 데이터를 임의의 크기로 분할하고재구성하는 방법 및 그 장치 |
US7660911B2 (en) * | 2006-12-20 | 2010-02-09 | Smart Modular Technologies, Inc. | Block-based data striping to flash memory |
KR101431205B1 (ko) | 2007-07-13 | 2014-08-18 | 삼성전자주식회사 | 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 |
US8924631B2 (en) * | 2011-09-15 | 2014-12-30 | Sandisk Technologies Inc. | Method and system for random write unalignment handling |
-
2007
- 2007-07-13 KR KR1020070070369A patent/KR101431205B1/ko active IP Right Grant
-
2008
- 2008-06-26 US US12/146,950 patent/US20090019234A1/en not_active Abandoned
- 2008-07-10 TW TW097126166A patent/TWI525430B/zh active
-
2014
- 2014-12-05 US US14/561,470 patent/US9262079B2/en active Active
-
2016
- 2016-01-27 US US15/007,584 patent/US10095436B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5651136A (en) * | 1995-06-06 | 1997-07-22 | International Business Machines Corporation | System and method for increasing cache efficiency through optimized data allocation |
US20070143545A1 (en) | 2004-03-08 | 2007-06-21 | Conley Kevin M | Flash Controller Cache Architecture |
Also Published As
Publication number | Publication date |
---|---|
US20090019234A1 (en) | 2009-01-15 |
TWI525430B (zh) | 2016-03-11 |
US9262079B2 (en) | 2016-02-16 |
US20160139814A1 (en) | 2016-05-19 |
US10095436B2 (en) | 2018-10-09 |
TW200903250A (en) | 2009-01-16 |
US20150081962A1 (en) | 2015-03-19 |
KR20090006920A (ko) | 2009-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101431205B1 (ko) | 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법 | |
KR101626084B1 (ko) | 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법 | |
US9875027B2 (en) | Data transmitting method, memory control circuit unit and memory storage device | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US8144515B2 (en) | Interleaved flash storage system and method | |
US8738842B2 (en) | Solid state disk controller and data processing method thereof | |
US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
CN107179877B (zh) | 数据传输方法、存储器控制电路单元与存储器存储装置 | |
US10503433B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
CN107544922B (zh) | 数据写入方法、存储器控制电路单元及存储器存储装置 | |
US10346052B2 (en) | Memory system with priority processing and operating method thereof | |
CN111158579A (zh) | 固态硬盘及其数据存取的方法 | |
TWI523030B (zh) | 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN114746942A (zh) | 用于存储器子系统的容量扩展 | |
US9733832B2 (en) | Buffer memory accessing method, memory controller and memory storage device | |
CN111078146A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
US20230024660A1 (en) | Method for managing memory buffer, memory control circuit unit and memory storage apparatus | |
KR20110072205A (ko) | 불휘발성 메모리 장치 및 그것의 데이터 저장 방법 | |
KR102695482B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20230153011A1 (en) | Multi-page parity data storage in a memory device | |
US11586379B2 (en) | Memory system and method of operating the same | |
TWI760697B (zh) | 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9778864B2 (en) | Data storage device using non-sequential segment access and operating method thereof | |
CN114333930B (zh) | 多通道存储器存储装置、控制电路单元及其数据读取方法 | |
US20240319897A1 (en) | Control method of flash memory controller and associated flash memory controller and storage device |
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 | ||
FPAY | Annual fee payment |
Payment date: 20180731 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190731 Year of fee payment: 6 |