KR100621631B1 - 반도체 디스크 제어 장치 - Google Patents

반도체 디스크 제어 장치 Download PDF

Info

Publication number
KR100621631B1
KR100621631B1 KR1020050002611A KR20050002611A KR100621631B1 KR 100621631 B1 KR100621631 B1 KR 100621631B1 KR 1020050002611 A KR1020050002611 A KR 1020050002611A KR 20050002611 A KR20050002611 A KR 20050002611A KR 100621631 B1 KR100621631 B1 KR 100621631B1
Authority
KR
South Korea
Prior art keywords
data
port
block
control
memory
Prior art date
Application number
KR1020050002611A
Other languages
English (en)
Other versions
KR20060081928A (ko
Inventor
유동열
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020050002611A priority Critical patent/KR100621631B1/ko
Priority to US11/311,990 priority patent/US20060152981A1/en
Priority to TW094146675A priority patent/TWI319191B/zh
Priority to JP2006003004A priority patent/JP5032027B2/ja
Priority to DE102006002526A priority patent/DE102006002526B4/de
Priority to CN2006100049935A priority patent/CN1828511B/zh
Publication of KR20060081928A publication Critical patent/KR20060081928A/ko
Application granted granted Critical
Publication of KR100621631B1 publication Critical patent/KR100621631B1/ko
Priority to US12/491,813 priority patent/US8159889B2/en
Priority to US13/419,673 priority patent/US8917565B2/en
Priority to US14/543,549 priority patent/US9223650B2/en
Priority to US14/979,457 priority patent/US9652324B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Abstract

여기에 제시되는 반도체 디스크 제어 장치는 제 1 포트와; 복수 개의 채널들을 갖는 제 2 포트와; 씨피유 버스에 연결된 중앙처리장치와; 상기 제 2 포트에서 상기 제 1 포트로 또는 상기 제 1 포트에서 상기 제 2 포트로 전송될 데이터를 임시 저장하도록 구성된 버퍼 메모리와; 상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 버퍼 메모리의 읽기 및 쓰기 동작들을 제어하도록 구성된 버퍼 제어/중재 블록과; 상기 제 1 포트와 상기 버퍼 제어/중재 블록 사이에 연결되며, 상기 씨피유 버스의 사용없이 상기 버퍼 메모리에/로부터 저장될/읽혀진 데이터를 전송하도록 구성된 제 1 데이터 전송 블록과; 그리고 상기 제 2 포트와 상기 버퍼 제어/중재 블록 사이에 연결되며, 상기 씨피유 버스의 사용없이 상기 버퍼 메모리에/로부터 저장될/읽혀진 데이터를 전송하도록 구성된 제 2 데이터 전송 블록을 포함한다.

Description

반도체 디스크 제어 장치{SOLID STATE DISK CONTROLLER APPARATUS}
도 1은 본 발명에 따른 반도체 디스크 제어 장치를 보여주는 블록도;
도 2는 도 1에 도시된 버퍼 제어/중재 블록과 피포들을 연결하는 버스 구조를 보여주는 블록도;
도 3a 및 도 3b는 버퍼 제어/중재 블록과 피포들의 동작을 설명하기 위한 타이밍도들;
도 4는 도 1에 도시된 ECC 블록의 버스 구조를 보여주는 블록도;
도 5는 ECC 블록의 에러 검출 및 정정 동작을 설명하기 위한 타이밍도들;
도 6은 도 1에 도시된 플래시 인터페이스 제어 블록의 채널들 중 어느 하나를 보여주는 블록도;
도 7 내지 도 9는 은 4-웨이 인터리브 방식에 따른 쓰기 과정을 설명하기 위한 타이밍도들;
도 10은 도 1에 도시된 플래시 인터페이스 제어 블록을 보여주는 블록도;
도 11은 도 10에 도시된 플래시 인터페이스 제어 블록의 지연 회로에 의해서 지연된 페취 클록 신호를 보여주는 타이밍도;
도 12는 플래시 인터페이스 제어 블록의 채널들에 연결될 수 있는 메모리 종류를 보여주는 블록도; 그리고
도 13은 본 발명에 따른 반도체 디스크 제어 장치에 의해서 지원되는 제 2 채널의 다른 구조를 보여주는 블록도이다.
* 도면의 주요 부분에 대한 부호 설명 *
1000 : 반도체 디스크 제어 장치 1100 : SATA 인터페이스
1200 : 멀티플렉서 1300 : 호스트 인터페이스 제어 블록
1400 : CPU 1600 : 버퍼 제어/중재 블록
1700 : 버퍼 메모리 1800 : 플래시 인터페이스 제어 블록
1900_i : ECC 블록
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 반도체 디스크 제어 장치에 관한 것이다.
이 분야에 잘 알려진 바와 같이, 컴퓨터 시스템은 일반적으로 다양한 형태의 메모리 시스템들을 사용한다. 예를 들면, 컴퓨터 시스템은 반도체 장치들로 구성된 소위 메인 메모리를 사용한다. 이 반도체 장치들은 일반적으로 다음과 같은 속성을 갖는다. 반도체 장치들은 상당히 빠른 액세스 속도로 랜덤하게 쓰여지거나 읽혀지며, 일반적으로 랜덤 액세스 메모리라 불린다. 하지만, 반도체 메모리가 비교적 고가이기 때문에, 다른 고밀도 및 저가 메모리가 종종 사용된다. 예를 들면, 다른 메모리 시스템은 마그네틱 디스크 저장 시스템을 포함한다. 마그네틱 디스크 저장 시 스템의 경우 액세스 속도가 수십㎳인 반면에 메인 메모리의 경우 액세스 속도는 수백㎱이다. 디스크 저장 장치는 필요시 메인 메모리로 순차적으로 읽혀지는 대용량 데이터를 저장하는 데 사용된다. 다른 형태의 디스크와 같은 저장 장치는 반도체 디스크 (solid state disk: 이하, SSD라 칭함) (또는 반도체 드라이브라 불림)이다. SSD는 일반적인 하드 디스크 드라이브에서 사용되는 회전 접시 대신에 데이터를 저장하는 데 SDRAM과 같은 메모리 칩들을 사용한 데이터 저장 장치이다.
"SSD"라는 용어는 2가지 다른 종류의 제품들에 사용된다. SDRAM과 같은 고속 및 휘발성 메모리에 근거를 둔 첫 번째 형태의 SSD는 상당히 빠른 데이터 액세스에 의해서 특징지어 지며, 디스크 드라이브의 레이턴시에 의해서 지연되었던 어플리케이션의 속도를 늘리는 데 주로 사용된다. 이러한 SSD가 휘발성 메모리를 사용하기 때문에, 데이터 지속성을 보장하기 위해서 내부 배터리 및 백업 디스크 시스템이 일반적으로 SSD 내에 포함된다. 만약 전원이 어떤 이유로 인해 차단되면, 배터리는 모든 데이터를 램에서 백업 디스크로 복사하기에 충분히 긴 시간 동안 유니트로 전원을 공급한다. 전원이 복구됨에 따라, 데이터는 백업 디스크에서 램으로 다시 복사되고 SSD는 정상 동작을 재개한다. 이러한 장치들은 특히 많은 양의 램을 갖는 컴퓨터에서 특히 유용하다. 두 번째 타입의 SSD는 데이터를 저장하는 데 플래시 메모리를 사용한다. 이러한 SSD는 하드 드라이브의 대체를 위해서 일반적으로 사용된다. 첫 번째 타입과의 혼돈을 피하기 위해서, 이러한 디스크는 일반적으로 플래시 디스크라 불린다.
본 발명의 목적은 씨피유 버스 속도의 제한없이 데이터를 전송할 수 있는 반도체 디스크 제어 장치를 제공하는 것이다.
상술한 제반 목적을 달성하기 위한 본 발명의 특징에 따르면, 반도체 디스크 제어 장치는 제 1 포트와; 복수 개의 채널들을 갖는 제 2 포트와; 씨피유 버스에 연결된 중앙처리장치와; 상기 제 2 포트에서 상기 제 1 포트로 또는 상기 제 1 포트에서 상기 제 2 포트로 전송될 데이터를 임시 저장하도록 구성된 버퍼 메모리와; 상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 버퍼 메모리의 읽기 및 쓰기 동작들을 제어하도록 구성된 버퍼 제어/중재 블록과; 상기 제 1 포트와 상기 버퍼 제어/중재 블록 사이에 연결되며, 상기 씨피유 버스의 사용없이 상기 버퍼 메모리에/로부터 저장될/읽혀진 데이터를 전송하도록 구성된 제 1 데이터 전송 블록과; 그리고 상기 제 2 포트와 상기 버퍼 제어/중재 블록 사이에 연결되며, 상기 씨피유 버스의 사용없이 상기 버퍼 메모리에/로부터 저장될/읽혀진 데이터를 전송하도록 구성된 제 2 데이터 전송 블록을 포함한다.
바람직한 실시예에 있어서, 상기 제 1 데이터 전송 블록은 상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 제 1 포트를 통해 외부 호스트와 인터페이스하도록 구성된 호스트 인터페이스 제어 블록과; 그리고 상기 호스트 인터페이스 제어 블록과 상기 버퍼 제어/중재 블록 사이에 데이터 전송 경로를 제공하도록 구성된 제 1 피포를 포함한다.
바람직한 실시예에 있어서, 상기 제 1 포트는 직렬 ATA 인터페이스 방식의 외부 호스트와 연결되는 제 1 채널과; 병렬 ATA 인터페이스 방식의 외부 호스트와 연결되는 제 2 채널과; 상기 제 1 채널을 통해 입력되는/출력될 데이터를 직렬 ATA 포맷으로/병렬 ATA 포맷으로 변환하는 변환 블록과; 그리고 상기 제 2 채널을 통해 입력된 데이터 또는 상기 변환 블록으로부터 출력된 데이터를 선택적으로 상기 호스트 인터페이스 제어 블록으로 그리고 상기 호스트 인터페이스 제어 블록으로부터 출력된 데이터를 선택적으로 상기 제 2 채널 또는 상기 변환 블록으로 전달하는 멀티플렉서를 포함한다.
바람직한 실시예에 있어서, 상기 제 1 포트는 상기 제 1 채널을 통해 입력된 데이터가 상기 호스트 인터페이스 제어 블록으로 직접 전송되도록 그리고 상기 호스트 인터페이스 블록으로부터 출력된 데이터가 상기 제 1 채널을 통해 상기 직렬 ATA 인터페이스 방식의 외부 호스트로 직접 전송되도록 구성된다.
바람직한 실시예에 있어서, 상기 제 2 데이터 전송 블록은 상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 제 2 포트를 통해 반도체 메모리들과 인터페이스하도록 구성된 메모리 인터페이스 제어 블록과; 그리고 상기 제 2 포트의 채널들에 각각 대응하며, 상기 메모리 인터페이스 제어 블록과 상기 버퍼 제어/중재 블록 사이에 데이터 전송 경로들을 제공하도록 구성된 복수 개의 제 2 피포들을 포함한다.
바람직한 실시예에 있어서, 상기 제 2 피포들에 각각 연결되며, 대응하는 제 2 피포들을 통해 전송되는 데이터의 에러를 검출하도록 그리고 상기 반도체 메모리들로 전송되는 데이터의 에러정정코드를 생성하도록 구성된 복수 개의 에러정정코 드 블록들을 더 포함한다.
바람직한 실시예에 있어서, 상기 에러정정코드 블록들 각각은 대응하는 피포를 통해 전달되는 데이터로부터 에러가 검출될 때 상기 중앙처리장치의 개입없이 상기 에러 데이터를 정정하도록 구성된다.
바람직한 실시예에 있어서, 상기 제 2 포트의 채널들 각각에는 복수 개의 불 휘발성 메모리들이 연결된다.
바람직한 실시예에 있어서, 상기 각 채널에 연결된 불 휘발성 메모리들은 동일한 타입의 불 휘발성 메모리로 구성된다.
바람직한 실시예에 있어서, 상기 각 채널에는 동일한 타입의 불 휘발성 메모리들이 연결된다.
바람직한 실시예에 있어서, 상기 각 채널에는 상이한 타입의 불 휘발성 메모리들이 연결된다.
바람직한 실시예에 있어서, 상기 제 2 데이터 전송 블록은, 파워-업시, 상기 제 2 포트의 채널들에 연결된 불 휘발성 메모리들의 타입들을 진단하고 상기 진단된 결과에 따라 상기 각 채널의 불 휘발성 메모리들의 읽기 및 쓰기 동작들을 제어하도록 구성된다.
바람직한 실시예에 있어서, 상기 제 2 데이터 전송 블록은 상기 제 2 포트의 채널들에 대하여 읽기 및 쓰기 동작들이 요구될 때 하드웨어 및 소프트웨어 인터리브 방식들 중 어느 하나에 따라, 상기 제 2 포트의 채널들에 연결된, 상기 반도체 메모리들에 대한 읽기 및 쓰기 동작들을 제어하도록 구성된다.
바람직한 실시예에 있어서, 상기 버퍼 제어/중재 블록은 상기 제 1 및 제 2 피포들로부터 데이터 처리 요청이 발생할 때 라운드-로빈 방식에 따라 데이터를 처리하도록 구성된다.
바람직한 실시예에 있어서, 상기 메모리 인터페이스 제어 블록은 상기 제 2 포트를 통해 반도체 메모리로 전송될 제 1 클록 신호를 발생하도록 구성된 제어 로직과; 상기 반도체 메모리는 상기 제 1 클록 신호에 동기되어 데이터를 출력하며; 제 2 클록 신호에 동기되어 상기 반도체 메모리로부터 전송되는 데이터를 페취하도록 구성된 데이터 페취 레지스터와; 그리고 상기 제 1 클록 신호를 지연시켜 상기 제 2 클록 신호를 출력하는 지연 회로를 포함한다.
바람직한 실시예에 있어서, 상기 지연 회로의 지연 시간은 외부로부터 제공되는 지연 정보에 의해서 결정된다.
바람직한 실시예에 있어서, 상기 메모리 인터페이스 제어 블록은 상기 지연 회로의 지연 시간을 결정하기 위한 지연 정보를 저장하도록 구성된 레지스터를 더 포함한다.
본 발명의 예시적인 실시예들이 참조 도면들에 의거하여 이하 상세히 설명될 것이다.
도 1은 본 발명에 따른 반도체 디스크 제어 장치를 보여주는 블록도이다. 도 1을 참조하면, 본 발명에 따른 반도체 디스크 제어 장치 (1000)는 제 1 포트와 제 2 포트를 포함한다. 본 발명에 따른 반도체 디스크 제어 장치 (1000)는 제 1 포트를 통해 외부 호스트 (미도시됨)와 데이터를 주고 받는다. 제 1 포트는 2개의 채널 들 즉, 병렬 ATA 버스 (parallel AT attachment bus, 이하 PATA 버스라 칭함) (1001)와 직렬 ATA 버스 (serial AT attachment, 이하, SATA 버스라 칭함) (1002)를 포함한다. 제 2 포트는 복수의 채널들을 포함하며, 각 채널에는 복수의 불 휘발성 메모리들이 전기적으로 연결된다. 여기서, 각 채널에는 동일한 종류의 메모리들이 연결된다. 단일의 채널에 연결되는 불 휘발성 메모리는 단일-레벨 플래시 메모리, 멀티-레벨 플래시 메모리, One_NAND 플래시 메모리 (플래시 메모리 코어 및 메모리 제어 로직이 단일의 칩으로 구현된 것), 또는 그와 같은 것을 포함한다. 예를 들면, 하나의 채널에는 단일-레벨 플래시 메모리들이 연결되고, 다른 채널에는 멀티-레벨 플래시 메모리들이 연결되며, 또 다른 채널에는 One_NAND 플래시 메모리들이 연결될 수 있다. SATA 인터페이스 (도면에는 "SATA I/F"로 표기됨) (1100)는 디바이스 동글 (device gongle)이라 불리며, 직렬/병렬 데이터를 병렬/직렬 데이터로 변환한다. 예를 들면, SATA 인터페이스 (1100)는 SATA 버스 (1002)를 통해 전송되는 직렬 데이터를 입력받아 병렬 데이터로 변환한다. SATA 인터페이스 (1100)는 멀티플렉서 (1200)로부터 출력되는 병렬 데이터를 직렬 데이터로 변환한다. 멀티플렉서 (1200)는 PATA 버스 (1001)를 통해 입력되는 병렬 데이터를 호스트 인터페이스 제어 블록 (1300)으로 전달하거나, 호스트 인터페이스 제어 블록 (1300)으로부터 출력되는 데이터를 PATA 버스 (1001) 또는 SATA 인터페이스 (1100)로 전달한다. 제 1 포트의 PATA 버스 (1001) 및 SATA 버스 (1002) 중 어느 것이 사용될 지의 여부는 미리 설정될 것이다.
계속해서 도 1을 참조하면, 호스트 인터페이스 제어 블록 (1300)은 PATA 버 스 (1001) (또는 내부 IDE 버스라 칭함), SATA 버스 (1002), 그리고 CPU 버스 (1003)에 연결되어 있다. 호스트 인터페이스 제어 블록 (1300)은 CPU (1400)의 제어에 따라 인터페스 동작을 수행한다. 호스트 인터페이스 제어 블록 (1300)을 통해 입/출력될 데이터는 CPU 버스 (1003)를 경유하지 않고 버퍼 제어/중재 블록 (1600)과 피포 (L_FIFO) (1500)를 통해 버퍼 메모리 (1700)에 임시 저장된다. 예를 들면, 외부에서 전송되는 데이터는 CPU (1400)의 제어에 따라 호스트 인터페이스 제어 블록 (1300), 피포 (L_FIFO) (1500), 그리고 버퍼 제어/중재 블록 (1600)을 통해 버퍼 메모리 (1700)에 임시 저장된다. 마찬가지로, 버퍼 메모리 (1700)에 임시 저장된 데이터는 CPU (1400)의 제어에 따라 버퍼 제어/중재 블록 (1600), 피포 (L_FIFO) (1500), 그리고 호스트 인터페이스 제어 블록 (1300)을 통해 외부로 출력된다. 결과적으로, 데이터 전송 동작은 CPU 버스 (1003)의 사용없이 수행되며, 그 결과 데이터 전송 속도는 CPU 버스 (1003)의 속도에 영향을 받지 않는다. 피포 (L_FIFO) (1500)는 호스트 인터페이스 제어 블록 (1300)과 버퍼 제어/중재 블록 (1500) 사이에 연결되며, 내부 버스들 (1004, 1005)의 밴드폭이 서로 다른 경우 데이터 전송 도중 발생하는 미처리 데이터를 임시로 저장하는 데 사용된다. 동작 도중 피포 (L_FIFO) (1500)가 모두 데이터로 채워지지 않도록 피포 사이즈가 적절하게 결정되어야 한다. 호스트 인터페이스 제어 블록 (1300)은 레지스터 (1301)를 포함하며, 레지스터 (1301)에는, 예를 들면, 외부로부터의 동작 명령 및 어드레스가 저장될 것이다. 호스트 인터페이스 제어 블록 (1300)은 저장된 명령에 응답하여 CPU 버스 (1003)를 통해 CPU (1400)에게 쓰기 또는 읽기 동작을 알린다. CPU (1400)는 입력된 정보에 따라 호스트 인터페이스 제어 블록 (1300) 및 버퍼 제어/중재 블록 (1600)을 제어한다. 이는 이후 상세히 설명될 것이다.
플래시 인터페이스 제어 블록 (1800)은 제 2 포트를 통해 외부의 불 휘발성 메모리들과 데이터를 주고받는다. 플래시 인터페이스 제어 블록 (1800)은 낸드 플래시 메모리, One-NAND 플래시 메모리, 그리고 멀티-레벨 플래시 메모리를 지원하도록 구성된다. 플래시 인터페이스 제어 블록 (1800)은 소정 수의 채널들을 포함한다. 하나의 채널에는 복수 개의 불 휘발성 메모리들이 연결될 수 있다. 하나의 채널에는 동일한 종류의 메모리들이 연결된다. 상이한 채널들에는 다른 종류 또는 동일한 종류의 메모리들이 장착될 수 있다. 또한, 본 발명에 따른 반도체 디스크 제어 장치 (1000)는 다양한 종류의 불 휘발성 메모리들이 존재할 때 부팅시 장착된 불 휘발성 메모리들의 종류를 진단하는 기능을 구비한다. 이러한 기능은 잘 알려진 디바이스 ID의 읽기 동작을 통해 쉽게 달성될 수 있다. 서로 다른 채널에 대하여 읽기 및 프로그램 동작들이 수행될 때, 본 발명에 따른 반도체 디스크 제어 장치 (1000)의 플래시 인터페이스 제어 블록 (1800)은 소프트웨어 및 하드웨어 인터리브 동작들을 선택적으로 수행하도록 구성된다.
플래시 인터페이스 제어 블록 (1800)을 통해 전송되는 데이터는 피포(들) (R0_FIFO-Rn_FIFO)와 버퍼 제어/중재 블록 (1600)을 통해 버퍼 메모리 (1700)에 임시 저장된다. 플래시 인터페이스 제어 블록 (1800)을 통해 입/출력되는 데이터는 CPU 버스 (1003)를 경유하지 않고 버퍼 제어/중재 블록 (1600)과 피포(들) (R0_FIFO-Rn_FIFO)를 통해 버퍼 메모리 (1700)에 임시 저장된다. 예를 들면, 제 2 포트를 통해 입력된 데이터는 CPU (1400)의 제어에 따라 플래시 인터페이스 제어 블록 (1800), 피포(들), 그리고 버퍼 제어/중재 블록 (1600)을 통해 버퍼 메모리 (1700)에 임시 저장된다. 마찬가지로, 버퍼 메모리 (1700)에 임시 저장된 데이터는 CPU (1400)의 제어에 따라 버퍼 제어/중재 블록 (1600), 피포, 그리고 플래시 인터페이스 제어 블록 (1800)을 통해 제 2 포트로 전달된다. 결과적으로, 데이터 전송 동작은 CPU 버스 (1003)의 사용없이 수행되며, 그 결과 데이터 전송 속도는 CPU 버스 (1003)의 속도에 영향을 받지 않는다. 복수 개의 피포들 (R0_FIFO-Rn_FIFO)은 플래시 인터페이스 제어 블록 (1800)과 버퍼 제어/중재 블록 (1600) 사이에 연결되며, 내부 버스들 (1006<0:n>, 1007<0:n>)의 밴드폭이 서로 다른 경우 데이터 전송 도중 발생하는 미처리 데이터를 임시로 저장하는 데 사용된다. 동작 도중 피포가 모두 데이터로 채워지지 않도록 피포 사이즈가 적절하게 결정되어야 한다.
버퍼 제어/중재 블록 (1600)은 버퍼 메모리 (1700)의 읽기 및 쓰기 동작들을 제어하도록 구성된다. 예를 들면, 버퍼 제어/중재 블록 (1600)은 피포 (L_FIFO) (1500)를 통해 입력되는 데이터 또는 피포 (RO_FIFO-Rn_FIFO)을 통해 입력되는 데이터를 버퍼 메모리 (1700)에 저장한다. 버퍼 제어/중재 블록 (1600)은 불 휘발성 메모리에 쓰여질/외부로 전송될 데이터를 버퍼 메모리 (1700)로부터 읽는다. 또한, 버퍼 제어/중재 블록 (1600)은 동시에 데이터 처리 요청이 발생할 경우 라운드-로빈 방식 (round-robin way)으로 데이터를 처리하도록 구성된다. 이때, 임의의 요청을 처리하는 데 너무 많은 시간이 소비되지 않도록 한번에 처리되는 데이터 양이 한정되어야 한다. 버퍼 제어/중재 블록 (1600)은 피포들 (L_FIFO, RO_FIFO- Rn_FIFO)의 동시 요청을 모두 처리할 수 있도록 충분히 큰 데이터 처리 능력을 갖는다. 즉, 데이터 처리량 (버퍼 제어/중재 블록) >= 밴드폭 (L_FIFO+RO_FIFO+ ... +Rn_FIFO).
버퍼 제어/중재 블록 (1600)과 플래시 인터페이스 제어 블록 (1800) 사이에 병렬 연결된 피포들 (R0_FIFO-Rn_FIFO)에는 대응하는 에러 검사 정정 (error checking and correction: ECC) 블록들 (이하, ECC 블록들이라 칭함) (1900_0-1900_n)이 각각 연결되어 있다. 플래시 인터페이스 제어 블록 (1800)에서 버퍼 메모리 (1700)로 데이터가 임의의 피포 (예를 들면, R0_FIFO)를 통해 전송될 때, 이 피포 (R0_FIFO)에 대응하는 ECC 블록 (1900_0)은 피포 (R0_FIFO)를 통해 전송되는 데이터에 대해 에러 검출 동작을 수행한다. 만약 전송되는 데이터에서 에러가 발생하면, ECC 블록 (1900)은 버퍼 제어/중재 블록 (1600)에 에러 정정을 요청하여 버퍼 메모리 (1700) 내부의 에러 데이터를 수정하도록 구성된다. ECC 블록들 (1900_0-1900_n) 각각은, 대응하는 피포를 통해 플래시 인터페이스 제어 블록 (1800)으로 메인 데이터가 전송될 때, ECC 데이터를 생성하도록 구성된다. 생성된 ECC 데이터는 플래시 인터페이스 제어 블록 (1800)의 제어에 따라 메인 데이터와 함께 플래시 메모리에 저장될 것이다.
버퍼 메모리 (1700)는 외부 (외부 호스트 및 불 휘발성 메모리(들))에서 전송되는 데이터를 임시 저장하는 데 사용된다. 또한, 버퍼 메모리 (1700)는 CPU (1400)에 의해서 운용될 프로그램을 저장하는 데 사용된다. 버퍼 메모리 (1700)는, 바람직하게, SRAM으로 구성된다. 버퍼 메모리 (1700)는 외부 (외부 호스트 및 불 휘발성 메모리(들))에서 전송되는 데이터를 임시 저장하기 위한 SRAM과 CPU (1400)에 의해서 운용될 프로그램 및 데이터를 저장하기 위한 SRAM으로 구성될 수 있다. 하지만, 버퍼 메모리가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. CPU (1400)는 호스트 및 플래시 인터페이스 제어 블록들 (1300, 1800) 내의 제어 레지스터들 (1301, 1801)의 값들을 이용하여 임의의 명령을 발생하거나 읽기/쓰기 동작에 필요한 다양한 제어 정보를 제어 레지스터들 (1301, 1801)에 설정한다. 예를 들면, 외부에서 읽기/쓰기 명령이 입력되면, 읽기/쓰기 명령은 호스트 인터페이스 제어 블록 (1300)의 레지스터 (1301)에 저장된다. 호스트 인터페이스 제어 블록 (1300)은 저장된 명령에 따라 CPU (1400)에게 읽기/쓰기 명령이 입력되었음을 알려준다. CPU (1400)는 읽기/쓰기 명령에 따라 호스트 인터페이스 제어 블록 (1300) 및 버퍼 제어/중재 블록 (1600)을 제어한다. 또한, CPU (1400)는 플래시 인터페이스 제어 블록 (1800)의 레지스터 (1801)에 읽기/쓰기 명령을 저장한다. 플래시 인터페이스 제어 블록 (1800)은 레지스터 (1801)에 저장된 명령에 따라 제 2 채널을 통해 플래시 메모리들에 대한 읽기/쓰기 동작을 제어한다.
본 발명에 따르면, 제 2 포트에 연결되는 불 휘발성 메모리들에 대한 읽기 또는 쓰기 동작이 요구될 때, 데이터 전송은 반도체 디스크 제어 장치 (1000) 내의 CPU 버스 (1003)를 통해 수행되는 것이 아니라 피포 경로를 통해 수행된다. 즉, 제 1 포트에서 제 2 포트로의 (또는 제 2 포트에서 제 1 포트로의) 데이터 전송은 CPU 버스 (1003)의 사용없이 수행되며, 그 결과 데이터 전송 속도는 CPU 버스 (1003)의 속도에 영향을 받지 않는다.
도 2는 도 1에 도시된 버퍼 제어/중재 블록과 피포들을 연결하는 버스 구조를 보여주는 블록도이고, 도 3a 및 도 3b는 버퍼 제어/중재 블록과 피포들의 동작을 설명하기 위한 타이밍도들이다.
먼저, 도 2를 참조하면, 버퍼 제어/중재 블록 (1600)은 피포들 (L_FIFO, R0_FIFO-Rn_FIFO)로부터 데이터 처리에 대한 요청이 있을 때 데이터 처리 요청을 승인하도록 구성된다. 피포 (L_FIFO)와 버퍼 제어/중재 블록 (1600) 사이의 버스 (1005)는 요청 신호 (REQ0), 승인 신호 (GRT0), 읽기/쓰기 구별 신호 (RW0), 어드레스 (ADDRESS0), 읽기 데이터 (RD0), 쓰기 데이터 (WD0), 그리고 데이터 유효 구간 신호 (D_VALID0)를 전송하도록 구성된다. 마찬가지로, 피포들 (R0_FIFO-Rn_FIFO)과 버퍼 제어/중재 블록 (1600) 사이의 버스들 (1006_0-1006_n) 각각은 요청 신호 (REQ1), 승인 신호 (GRT1), 읽기/쓰기 구별 신호 (RW1), 어드레스 (ADD1), 읽기 데이터 (RD1), 쓰기 데이터 (WD1), 그리고 데이터 유효 구간 신호 (D_VALID1)를 전송하도록 구성된다.
버퍼 메모리 (1700)에서 피포 (L_FIFO)로 데이터를 전송하는 경우, 도 3a 도시된 바와 같이, 피포 (L_FIFO)는 읽기 동작을 위한 요청 신호 (REQ0)를 활성화시킨다. 이와 동시에, 읽고자 하는 데이터의 어드레스 (ADDRESS0)가 피포 (L_FIFO)에서 버퍼 제어/중재 블록 (1600)으로 전송된다. 요청 신호 (REQ0)가 활성화될 때, 버퍼 제어/중재 블록 (1600)은 이전에 진행중인 프로세스가 없거나 종료되었을 경우 승인 신호 (GRT0)를 활성화시킨다. 데이터 처리 요청이 승인됨에 따라, 피포 (L_FIFO)는 어드레스들을 순차적으로 버퍼 제어/중재 블록 (1600)으로 보낸다. 버퍼 제어/중재 블록 (1600)은 입력된 어드레스들 (ADD1-ADD8)에 따라 버퍼 메모리 (1700)로부터 데이터를 읽고, 유효한 데이터 구간 신호 (D_VALID0)의 활성화 동안 읽혀진 데이터를 피포 (L_FIFO)로 출력한다. 이때, 피포 (L_FIFO)는 미리 정해진 양의 데이터 (예를 들면, 8개의 N-비트 데이터)가 입력될 때 요청 신호 (REQ0)를 비활성화시키며, 이는 버퍼 제어/중재 블록 (1600)이 다른 피포의 요청을 처리하게 한다.
피포 (L_FIFO)에서 버퍼 메모리 (1700)로 데이터를 전송하는 경우, 도 3b 도시된 바와 같이, 피포 (L_FIFO)는 쓰기 동작을 위한 요청 신호 (REQ0)를 활성화시킨다. 요청 신호 (REQ0)가 활성화될 때, 버퍼 제어/중재 블록 (1600)은 이전에 진행중인 프로세스가 없거나 종료되었을 경우 승인 신호 (GRT0)를 활성화시킨다. 데이터 처리 요청이 승인됨에 따라, 도 3b에 도시된 바와 같이, 피포 (L_FIFO)는 쓰고자 하는 데이터와 함께 어드레스들을 버퍼 제어/중재 블록 (1600)으로 순차적으로 보낸다. 버퍼 제어/중재 블록 (1600)은 입력된 데이터를 버퍼 메모리 (1700)에 저장한다. 이때, 피포 (L_FIFO)는 미리 정해진 양의 데이터 (예를 들면, 8개의 N-비트 데이터)가 출력될 때 요청 신호 (REQ0)를 비활성화시키며, 이는 버퍼 제어/중재 블록 (1600)이 다른 피포의 요청을 처리하게 한다.
버퍼 메모리 (1700)에서 피포 (Ri_FIFO)로의 데이터 전송은 도 3a에 도시된 것과 동일하게 수행되고, 피포 (Ri_FIFO)에서 버퍼 메모리 (1700)로의 데이터 전송은 도 3b에 도시된 것과 동일하게 수행된다. 피포들 (R0_FIFO-Rn_FIFO)와 관련된 읽기 및 쓰기 동작들은 그러므로 생략된다.
도 4는 도 1에 도시된 ECC 블록의 버스 구조를 보여주는 블록도이고, 도 5는 ECC 블록의 에러 검출 및 정정 동작을 설명하기 위한 타이밍도들이다. 먼저, 도 4를 참조하면, ECC 블록 (1900_0)과 피포 (R0_FIFO)을 연결하기 위한 버스는 ECC 요청 신호 (ECC_REQ), ECC 읽기/쓰기 구별 신호 (ECC_RW), ECC 어드레스 (ECC_ADDRESS), ECC 정정 데이터 (ECC_RMWD), ECC 승인 신호 (ECC_GRT), 그리고 ECC 읽기 데이터 (ECC_RD)를 전송하도록 구성된다.
피포 (R0_FIFO)를 경유하여 버퍼 메모리 (1700)로 데이터가 전송된다고 가정하자. 만약 전송된 데이터에 에러가 발생하면, ECC 블록 (1900_0)은 ECC 요청 신호 (ECC_REQ)를 활성화시키며, 이 요청 신호 (ECC_REQ)는 에러 데이터의 어드레스 (ADD1)와 함께 피포 (R0_FIFO)를 통해 버퍼 제어/중재 블록 (1600)으로 전달된다. 버퍼 제어/중재 블록 (1600)은 에러 정정을 위한 요청 신호 (ECC_REQ)가 어드레스 (ADD1)와 함께 입력될 때 승인 신호 (ECC_GRT)를 활성화시킨다. 이때, ECC 읽기/쓰기 구별 신호 (ECC_RW)는 읽기 동작을 나타내도록 하이로 유지된다. ECC 읽기/쓰기 구별 신호 (ECC_RW)의 하이-레벨 상태시, 에러 데이터는 버퍼 제어/중재 블록 (1600)의 제어하에 버퍼 메모리 (1700)으로부터 읽혀진다. 그렇게 읽혀진 에러 데이터 (RD)는 피포 (R0_FIFO)를 통해 ECC 블록 (1900_0)으로 전달된다. 에러 데이터 (RD)는 ECC 블록 (1900_0)에서 정정되고, 에러-정정된 데이터 (RMWD)는 피포 (R0_FIFO)를 통해 버퍼 제어/중재 블록 (1600)으로 전달된다. 이때, ECC 읽기/쓰기 구별 신호 (ECC_RW)는 쓰기 동작을 나타내는 로우 레벨로 천이한다. 버퍼 제어/중 재 블록 (1600)은 ECC 읽기/쓰기 구별 신호 (ECC_RW)에 응답하여 에러-정정된 데이터 (RMWD)가 버퍼 메모리 (1700)에 저장되게 한다. 이후, 버퍼 제어/중재 블록 (1600)은 승인 신호 (ECC_GRT)를 비활성화시킨다.
도 6은 도 1에 도시된 플래시 인터페이스 제어 블록의 채널들 중 어느 하나를 보여주는 블록도이다.
도 6을 참조하면, 하나의 채널에는 복수 개의 불 휘발성 메모리들이 연결되어 있다. 예시적인 실시예에 있어서, 불 휘발성 메모리들은 낸드 플래시 메모리로 구성된다. 잘 알려진 바와 같이, 낸드 플래시 메모리는 명령/어드레스/데이터 멀티플렉싱 입/출력 구조 (command/address/data multiplexed I/O structure)를 갖는다. 이는 입출력 핀들을 통해 명령, 어드레스 및 데이터가 제공됨을 의미한다. 하나의 채널에 4개의 불 휘발성 메모리들이 연결된다고 가정하면, 채널은 메모리들 (M0, M1, M2, M3)에 공통으로 연결된 입출력 라인들 (1802), 대응하는 메모리들에 각각 연결된 4개의 칩 인에이블 신호 라인들 (1803a-1803d), 그리고 대응하는 메모리들에 각각 연결된 4개의 레디/비지 신호 라인들 (1804a-1804d)로 구성된다. 또한, 비록 도면에는 도시되지 않았지만, /WE, /RE, CLE, ALE, 등과 같은 다른 제어 신호들이 불 휘발성 메모리들에 공통으로 제공될 것이다.
4개의 플래시 메모리들 (M0-M3)이 하나의 채널에 연결된다고 가정하자. 이러한 가정하에서, 하드웨어 및 소프트웨어 인터리브 방식의 쓰기 동작이 이하 상세히 설명될 것이다. 쓰기 동작을 수행하기 위해서, CPU (1400)는 CPU 버스 (1003)를 통해 플래시 인터페이스 제어 블록 (1800)의 레지스터 (1801)에 쓰기 명령을 저장한 다. 플래시 인터페이스 제어 블록 (1800)은 레지스터 (1801)에 저장된 쓰기 명령에 응답하여 플래시 메모리들에 대한 쓰기 동작을 수행한다. 앞서 설명된 채널 구조의 경우, 쓰여질 섹터 수가 2개 이상이면, 플래시 메모리들에 대한 쓰기 동작들이 하드웨어 및 소프트웨어 인터리브 방식으로 수행될 수 있다. 먼저, 하드웨어 인터리브 방식의 쓰기 동작이 도 7을 참조하여 이하 설명될 것이다. 도 7에는 4-웨이 인터리브 방식에 따른 쓰기 과정을 설명하기 위한 타이밍도가 도시되어 있다.
도 7을 참조하면, 일단 CPU (1400)에 의해서 임의 채널에 대한 쓰기 명령이 플래시 인터페이스 제어 블록 (1800)의 레지스터 (1801)에 쓰여지면, 플래시 인터페이스 제어 블록 (1800)은 CPU (1400)의 개입없이 연속적으로 프로그램될 데이터를 플래시 메모리들 (M0-M3)로 전송한다. 예를 들면, 프로그램될 데이터가 명령 및 어드레스와 함께 채널 (즉, 입출력 라인들) (1802)을 통해 플래시 메모리 (M0)로 연속적으로 전송되고, 전송된 데이터는 일정 시간 (tPROG(M0)) 동안 플래시 메모리 (M0)의 메모리 셀 어레이에 저장된다. 플래시 메모리 (M0)의 쓰기 동작이 수행되면, 도 7에 도시된 바와 같이, 플래시 인터페이스 제어 블록 (1800)은 채널 (즉, 입출력 라인들) (1802)을 통해 다른 플래시 메모리 (M1)로 프로그램될 데이터를 전송한다. 마찬가지로, 앞서 설명된 것과 동일한 방식으로 나머지 플래시 메모리들 (M2, M3)로 프로그램될 데이터가 각각 전송된다. 따라서, 채널은 명령, 어드레스 및 데이터 전송 구간 동안만 플래시 메모리들 (M0-M3) 각각에 의해서 점유된다. 또한, 채널은 쓰기 동작의 패스/페일 여부를 판별하기 위한 상태 읽기 구간 각 플래시 메모리에 의해서 점유된다. 일단 모든 데이터가 프로그램되면, 플래시 인터페이 스 제어 블록 (1800)은 이를 CPU (1400)에 알려준다. 채널에 공통으로 연결된 플래시 메모리들에 프로그램될 데이터는 버퍼 메모리 (1700)에서 읽혀진 데이터이다.
이하, 소프트웨어 인터리브 방식의 쓰기 동작이 도 8을 참조하여 이하 설명될 것이다. 도 8에는 플래시 메모리의 프로그램 시간이 일정하게 유지된다는 가정하에서 4-웨이 인터리브 방식에 따른 쓰기 과정을 설명하기 위한 타이밍도가 도시되어 있다. 소프트웨어 인터리브 방식에 따르면, 도 8을 참조하면, 일단 CPU (1400)에 의해서 임의 채널에 대한 쓰기 명령이 플래시 인터페이스 제어 블록 (1800)의 레지스터 (1801)에 쓰여지면, 플래시 인터페이스 제어 블록 (1800)은 CPU (1400)의 제어에 따라 플래시 메모리들 (M0-M3)의 쓰기 동작들을 제어한다. 예를 들면, 프로그램될 데이터 (WD0)가 명령 및 어드레스와 함께 채널 (즉, 입출력 라인들)을 통해 플래시 메모리 (M0)로 순차적으로 전송된다. 일단 프로그램될 데이터 (WD0)가 플래시 메모리 (M0)로 전송되면, 플래시 인터페이스 제어 블록 (1800)은 플래시 메모리 (M0)의 데이터 전송이 완료되었음을 CPU (1400)에게 알려준다. CPU (1400)는 프로그램 데이터가 전송될 채널의 정보와 함께 쓰기 명령을 레지스터 (1801)에 저장한다. 이러한 과정 (도 8에서, 'a'로 표기된 구간)은 플래시 메모리 (M0)에 전송된 데이터 (WD0)가 프로그램되는 구간 (tPROG) 내에서 수행된다. 레지스터 (1801)에 다시 쓰기 명령이 저장되면, 플래시 인터페이스 제어 블록 (1800)은 프로그램될 데이터 (WD1)를 명령 및 어드레스와 함께 채널 (즉, 입출력 라인들)을 통해 플래시 메모리 (M1)로 순차적으로 전송한다. 마찬가지로, 나머지 플래시 메모리들 (M2, M3)로의 데이터 전송은 CPU (1400)의 제어에 따라 앞서 설명된 것과 동 일하게 수행되며, 그것에 대한 설명은 그러므로 생략된다.
하드웨어 인터리브 방식과 마찬가지로, 채널은 명령, 어드레스 및 데이터 전송 구간 동안만 플래시 메모리들 (M0-M3) 각각에 의해서 점유된다. 또한, 채널은 쓰기 동작의 패스/페일 여부를 판별하기 위한 상태 읽기 구간 동안 각 플래시 메모리에 의해서 점유된다.
앞서의 가정 (불 휘발성 메모리의 프로그램 시간이 일정하게 유지된다)과 달리, 플래시 메모리의 프로그램 시간 (tPROG)이 일정하게 유지되지 못한다. 즉, 플래시 메모리들의 프로그램 시간이 서로 다르기 때문에, 도 9에 도시된 바와 같이, 소프트웨어 인터리브 방식의 쓰기 동작 도중에 시간 손실이 발생할 수 있다.
도 10은 도 1에 도시된 플래시 인터페이스 제어 블록을 보여주는 블록도이다.
잘 알려진 바와 같이, REB와 같은 제어 신호를 이용하여 플래시 메모리로부터 플래시 인터페이스 제어 블록 (1800)으로 데이터가 전송된다. 이러한 경우, 데이터는 입출력 라인들의 라인 로딩 (line loading) 또는 전송 시간 (flight time)의 영향을 받아서 플래시 메모리로부터 플래시 인터페이스 제어 블록 (1800)으로 빠르게 또는 느리게 전송될 수 있다. 즉, 도 10에 도시된 바와 같이, A 지점의 데이터가 A' 지점으로 전달되는 시간은 시스템의 구성에 의해서 항상 달라지게 된다. 이러한 변화를 극복하기 위해서, 내부 데이터 페치 레지스터 (1810)의 데이터 페취 시점을 결정하는 페취 클록 신호 (F_CLK)의 페취 시간이 조정되어야 한다. 지연 회로 (1820)는 플래시 메모리에 인가되는 REB 신호에 응답하여 페취 클록 신호 (F_CLK)를 발생하며, 페취 클록 신호 (F_CLK)는 데이터 페취 레지스터 (1810)에 인가된다. 특히, 지연 회로 (1820)의 지연 시간은 플래시 인터페이스 제어 블록 (1800) 내의 레지스터 (1830)에 설정된 값에 의해서 또는 외부 패드 (1840)를 통해 인가되는 값에 따라 조정된다. 도 11에 도시된 바와 같이, REB 신호에 동기되어 출력되는 A 지점의 데이터는 △t 시간만큼 지연되어 A' 지점에 도달한다. 따라서, 지연 회로 (1820)를 통해 REB 신호를 △t만큼 지연시켜 페취 클록 신호 (F_CLK)를 생성함으로써 플래시 메모리로부터 전송되는 데이터를 안전하게 페취하는 것이 가능하다.
도 12는 플래시 인터페이스 제어 블록의 채널들에 연결될 수 있는 메모리 종류를 보여주는 블록도이다.
도 12를 참조하면, 하나의 채널에는 셀 당 1-비트 데이터가 저장되는 낸드 플래시 메모리들이 공통으로 연결되고, 다른 채널에는 셀 당 N-비트 데이터가 저장되는 낸드 플래시 메모리들이 공통으로 연결되며, 또 다른 채널에는 OneNAND 플래시 메모리들이 공통으로 연결될 수 있다. 다른 종류의 불 휘발성 메모리들이 각 채널에 연결될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
도 13은 본 발명에 따른 반도체 디스크 제어 장치에 의해서 지원되는 제 2 채널의 다른 구조를 보여주는 블록도이다.
도 13을 참조하면, x8 구조의 플래시 메모리들을 병렬로 연결하여 x16 구조의 플래시 메모리가 구성될 수 있다. 이러한 채널 구조에 따르면, 플래시 메모리들의 수 및 용량을 두 배로 늘리는 것이 가능하다. 두개의 칩들 중 하나는 입출력 라 인들 (IO[7:0])을 사용하고, 다른 하나는 입출력 라인들 (IO[15:8])을 사용한다. 이러한 경우, 모든 제어 신호들은 두 칩들에 의해서 공유되어야 한다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만, 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상 및 범위를 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
상술한 바와 같이, 반도체 디스크 제어 장치의 데이터 전송이 CPU 버스를 통해 수행되는 것이 아니라 피포 경로를 통해 수행됨에 따라, 반도체 디스크 제어 장치의 데이터 전송 속도가 CPU 버스의 속도에 영향을 받지 않는다.

Claims (29)

  1. 제 1 포트와;
    복수 개의 채널들을 갖는 제 2 포트와;
    씨피유 버스에 연결된 중앙처리장치와;
    상기 제 2 포트에서 상기 제 1 포트로 또는 상기 제 1 포트에서 상기 제 2 포트로 전송될 데이터를 임시 저장하도록 구성된 버퍼 메모리와;
    상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 버퍼 메모리의 읽기 및 쓰기 동작들을 제어하도록 구성된 버퍼 제어/중재 블록과;
    상기 제 1 포트와 상기 버퍼 제어/중재 블록 사이에 연결되며, 상기 씨피유 버스의 사용없이 상기 버퍼 메모리에/로부터 저장될/읽혀진 데이터를 전송하도록 구성된 제 1 데이터 전송 블록과; 그리고
    상기 제 2 포트와 상기 버퍼 제어/중재 블록 사이에 연결되며, 상기 씨피유 버스의 사용없이 상기 버퍼 메모리에/로부터 저장될/읽혀진 데이터를 전송하도록 구성된 제 2 데이터 전송 블록을 포함하는 반도체 디스크 제어 장치.
  2. 제 1 항에 있어서,
    상기 제 1 데이터 전송 블록은
    상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 제 1 포트를 통해 외부 호스트와 인터페이스하도록 구성된 호스트 인터페이스 제어 블록 과; 그리고
    상기 호스트 인터페이스 제어 블록과 상기 버퍼 제어/중재 블록 사이에 데이터 전송 경로를 제공하도록 구성된 제 1 피포를 포함하는 반도체 디스크 제어 장치.
  3. 제 2 항에 있어서,
    상기 제 1 포트는
    직렬 ATA 인터페이스 방식의 외부 호스트와 연결되는 제 1 채널과;
    병렬 ATA 인터페이스 방식의 외부 호스트와 연결되는 제 2 채널과;
    상기 제 1 채널을 통해 입력되는/출력될 데이터를 직렬 ATA 포맷으로/병렬 ATA 포맷으로 변환하는 변환 블록과; 그리고
    상기 제 2 채널을 통해 입력된 데이터 또는 상기 변환 블록으로부터 출력된 데이터를 선택적으로 상기 호스트 인터페이스 제어 블록으로 그리고 상기 호스트 인터페이스 제어 블록으로부터 출력된 데이터를 선택적으로 상기 제 2 채널 또는 상기 변환 블록으로 전달하는 멀티플렉서를 포함하는 반도체 디스크 제어 장치.
  4. 제 3 항에 있어서,
    상기 제 1 포트는 상기 제 1 채널을 통해 입력된 데이터가 상기 호스트 인터페이스 제어 블록으로 직접 전송되도록 그리고 상기 호스트 인터페이스 블록으로부터 출력된 데이터가 상기 제 1 채널을 통해 상기 직렬 ATA 인터페이스 방식의 외부 호스트로 직접 전송되도록 구성되는 반도체 디스크 제어 장치.
  5. 제 2 항에 있어서,
    상기 제 2 데이터 전송 블록은
    상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 제 2 포트를 통해 반도체 메모리들과 인터페이스하도록 구성된 메모리 인터페이스 제어 블록과; 그리고
    상기 제 2 포트의 채널들에 각각 대응하며, 상기 메모리 인터페이스 제어 블록과 상기 버퍼 제어/중재 블록 사이에 데이터 전송 경로들을 제공하도록 구성된 복수 개의 제 2 피포들을 포함하는 반도체 디스크 제어 장치.
  6. 제 5 항에 있어서,
    상기 제 2 피포들에 각각 연결되며, 대응하는 제 2 피포들을 통해 전송되는 데이터의 에러를 검출하도록 그리고 상기 반도체 메모리들로 전송되는 데이터의 에러정정코드를 생성하도록 구성된 복수 개의 에러정정코드 블록들을 더 포함하는 반도체 디스크 제어 장치.
  7. 제 6 항에 있어서,
    상기 에러정정코드 블록들 각각은 대응하는 피포를 통해 전달되는 데이터로부터 에러가 검출될 때 상기 중앙처리장치의 개입없이 상기 에러 데이터를 정정하 도록 구성되는 반도체 디스크 제어 장치.
  8. 제 1 항에 있어서,
    상기 제 2 포트의 채널들 각각에는 복수 개의 불 휘발성 메모리들이 연결되는 반도체 디스크 제어 장치.
  9. 제 8 항에 있어서,
    상기 각 채널에 연결된 불 휘발성 메모리들은 동일한 타입의 불 휘발성 메모리로 구성되는 반도체 디스크 제어 장치.
  10. 제 9 항에 있어서,
    상기 각 채널에는 동일한 타입의 불 휘발성 메모리들이 연결되는 반도체 디스크 제어 장치.
  11. 제 9 항에 있어서,
    상기 각 채널에는 상이한 타입의 불 휘발성 메모리들이 연결되는 반도체 디스크 제어 장치.
  12. 제 8 항에 있어서,
    상기 제 2 데이터 전송 블록은, 파워-업시, 상기 제 2 포트의 채널들에 연결 된 불 휘발성 메모리들의 타입들을 진단하고 상기 진단된 결과에 따라 상기 각 채널의 불 휘발성 메모리들의 읽기 및 쓰기 동작들을 제어하도록 구성되는 반도체 디스크 제어 장치.
  13. 제 5 항에 있어서,
    상기 제 2 데이터 전송 블록은 상기 제 2 포트의 채널들에 대하여 읽기 및 쓰기 동작들이 요구될 때 하드웨어 및 소프트웨어 인터리브 방식들 중 어느 하나에 따라, 상기 제 2 포트의 채널들에 연결된, 상기 반도체 메모리들에 대한 읽기 및 쓰기 동작들을 제어하도록 구성되는 반도체 디스크 제어 장치.
  14. 제 5 항에 있어서,
    상기 버퍼 제어/중재 블록은 상기 제 1 및 제 2 피포들로부터 데이터 처리 요청이 발생할 때 라운드-로빈 방식에 따라 데이터를 처리하도록 구성되는 반도체 디스크 제어 장치.
  15. 제 5 항에 있어서,
    상기 메모리 인터페이스 제어 블록은
    상기 제 2 포트를 통해 반도체 메모리로 전송될 제 1 클록 신호를 발생하도록 구성된 제어 로직과;
    상기 반도체 메모리는 상기 제 1 클록 신호에 동기되어 데이터를 출력하며;
    제 2 클록 신호에 동기되어 상기 반도체 메모리로부터 전송되는 데이터를 페취하도록 구성된 데이터 페취 레지스터와; 그리고
    상기 제 1 클록 신호를 지연시켜 상기 제 2 클록 신호를 출력하는 지연 회로를 포함하는 반도체 디스크 제어 장치.
  16. 제 15 항에 있어서,
    상기 지연 회로의 지연 시간은 외부로부터 제공되는 지연 정보에 의해서 결정되는 반도체 디스크 제어 장치.
  17. 제 15 항에 있어서,
    상기 메모리 인터페이스 제어 블록은 상기 지연 회로의 지연 시간을 결정하기 위한 지연 정보를 저장하도록 구성된 레지스터를 더 포함하는 반도체 디스크 제어 장치.
  18. 제 1 포트와;
    복수 개의 채널들을 갖는 제 2 포트와;
    씨피유 버스에 연결된 중앙처리장치와;
    상기 제 2 포트에서 상기 제 1 포트로 또는 상기 제 1 포트에서 상기 제 2 포트로 전송될 데이터를 임시 저장하도록 구성된 버퍼 메모리와;
    상기 제 1 포트 및 상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어 에 따라 외부 호스트와 인터페이스하도록 구성된 호스트 인터페이스 제어 블록과;
    상기 씨피유 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 상기 버퍼 메모리를 제어하도록 구성된 버퍼 제어/중재 블록과;
    상기 호스트 인터페이스 제어 블록과 상기 버퍼 제어/중재 블록 사이에 데이터 전송 경로를 제공하도록 구성된 제 1 피포와;
    상기 제 2 포트 및 상기 내부 제어 버스에 연결되며, 상기 중앙처리장치의 제어에 따라 불 휘발성 메모리들과 인터페이스하도록 구성된 메모리 인터페이스 제어 블록과; 그리고
    상기 메모리 인터페이스 제어 블록과 상기 버퍼 제어/중재 블록 사이에 데이터 전송 경로들을 제공하도록 구성된 복수 개의 제 2 피포들을 포함하는 반도체 디스크 제어 장치.
  19. 제 18 항에 있어서,
    상기 제 2 피포들에 각각 연결되며, 대응하는 제 2 피포들을 통해 전송되는 데이터의 에러를 검출하도록 그리고 상기 불 휘발성 메모리들로 전송되는 데이터의 에러정정코드를 생성하도록 구성된 복수 개의 에러정정코드 블록들을 더 포함하는 반도체 디스크 제어 장치.
  20. 제 19 항에 있어서,
    상기 에러정정코드 블록들 각각은 대응하는 피포를 통해 전달되는 데이터로 부터 에러가 검출될 때 상기 중앙처리장치의 개입없이 상기 에러 데이터를 정정하도록 구성되는 반도체 디스크 제어 장치.
  21. 제 18 항에 있어서,
    상기 각 채널에 연결된 불 휘발성 메모리들은 동일한 타입의 불 휘발성 메모리로 구성되는 반도체 디스크 제어 장치.
  22. 제 21 항에 있어서,
    상기 각 채널에는 동일한 타입의 불 휘발성 메모리들이 연결되는 반도체 디스크 제어 장치.
  23. 제 18 항에 있어서,
    상기 각 채널에는 상이한 타입의 불 휘발성 메모리들이 연결되는 반도체 디스크 제어 장치.
  24. 제 18 항에 있어서,
    상기 메모리 인터페이스 제어 블록은, 파워-업시, 상기 제 2 포트의 채널들에 연결된 불 휘발성 메모리들의 타입들을 진단하고 상기 진단된 결과에 따라 상기 각 채널의 불 휘발성 메모리들의 읽기 및 쓰기 동작들을 제어하도록 구성되는 반도체 디스크 제어 장치.
  25. 제 18 항에 있어서,
    상기 메모리 인터페이스 제어 블록은 상기 제 2 포트의 채널들에 대하여 읽기 및 쓰기 동작들이 요구될 때 하드웨어 및 소프트웨어 인터리브 방식들 중 어느 하나에 따라, 상기 제 2 포트의 채널들에 연결된, 상기 불 휘발성 메모리들에 대한 읽기 및 쓰기 동작들을 제어하도록 구성되는 반도체 디스크 제어 장치.
  26. 제 18 항에 있어서,
    상기 버퍼 제어/중재 블록은 상기 제 1 및 제 2 피포들로부터 데이터 처리 요청이 발생할 때 라운드-로빈 방식에 따라 데이터를 처리하도록 구성되는 반도체 디스크 제어 장치.
  27. 제 18 항에 있어서,
    상기 메모리 인터페이스 제어 블록은
    상기 제 2 포트를 통해 불 휘발성 메모리로 전송될 제 1 클록 신호를 발생하도록 구성된 제어 로직과;
    상기 불 휘발성 메모리는 상기 제 1 클록 신호에 동기되어 데이터를 출력하며;
    제 2 클록 신호에 동기되어 상기 불 휘발성 메모리로부터 전송되는 데이터를 페취하도록 구성된 데이터 페취 레지스터와; 그리고
    상기 제 1 클록 신호를 지연시켜 상기 제 2 클록 신호를 출력하는 지연 회로를 포함하는 반도체 디스크 제어 장치.
  28. 제 27 항에 있어서,
    상기 지연 회로의 지연 시간은 외부로부터 제공되는 지연 정보에 의해서 결정되는 반도체 디스크 제어 장치.
  29. 제 27 항에 있어서,
    상기 메모리 인터페이스 제어 블록은 상기 지연 회로의 지연 시간을 결정하기 위한 지연 정보를 저장하도록 구성된 레지스터를 더 포함하는 반도체 디스크 제어 장치.
KR1020050002611A 2005-01-11 2005-01-11 반도체 디스크 제어 장치 KR100621631B1 (ko)

Priority Applications (10)

Application Number Priority Date Filing Date Title
KR1020050002611A KR100621631B1 (ko) 2005-01-11 2005-01-11 반도체 디스크 제어 장치
US11/311,990 US20060152981A1 (en) 2005-01-11 2005-12-19 Solid state disk controller apparatus
TW094146675A TWI319191B (en) 2005-01-11 2005-12-27 Solid state disk controller apparatus and operating method thereof
JP2006003004A JP5032027B2 (ja) 2005-01-11 2006-01-10 半導体ディスク制御装置
DE102006002526A DE102006002526B4 (de) 2005-01-11 2006-01-11 Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
CN2006100049935A CN1828511B (zh) 2005-01-11 2006-01-11 固态盘控制器装置及操作方法
US12/491,813 US8159889B2 (en) 2005-01-11 2009-06-25 Solid state disk controller apparatus
US13/419,673 US8917565B2 (en) 2005-01-11 2012-03-14 Solid state disk controller apparatus
US14/543,549 US9223650B2 (en) 2005-01-11 2014-11-17 Solid state disk controller apparatus
US14/979,457 US9652324B2 (en) 2005-01-11 2015-12-27 Solid state disk controller apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050002611A KR100621631B1 (ko) 2005-01-11 2005-01-11 반도체 디스크 제어 장치

Publications (2)

Publication Number Publication Date
KR20060081928A KR20060081928A (ko) 2006-07-14
KR100621631B1 true KR100621631B1 (ko) 2006-09-13

Family

ID=36653071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050002611A KR100621631B1 (ko) 2005-01-11 2005-01-11 반도체 디스크 제어 장치

Country Status (6)

Country Link
US (5) US20060152981A1 (ko)
JP (1) JP5032027B2 (ko)
KR (1) KR100621631B1 (ko)
CN (1) CN1828511B (ko)
DE (1) DE102006002526B4 (ko)
TW (1) TWI319191B (ko)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US7493430B2 (en) 2005-07-14 2009-02-17 Quantum Corporation Data flow control and bridging architecture enhancing performance of removable data storage systems
US20070299994A1 (en) * 2006-06-21 2007-12-27 Broadcom Corporation, A California Corporation Disk controller, host interface module and methods for use therewith
DE102006045903B4 (de) * 2006-09-28 2016-06-02 Intel Deutschland Gmbh Prozessoranordnung mit einer Kopplungsvorrichtung zum Koppeln eines Speichers mit einem Prozessor, Datenverarbeitungsanordnung und Verfahren zum Übertragen von Daten
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008070814A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US8429677B2 (en) * 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US7460398B1 (en) * 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
KR101424782B1 (ko) * 2007-07-19 2014-08-04 삼성전자주식회사 솔리드 스테이트 디스크 컨트롤러 및 솔리드 스테이트디스크 컨트롤러의 데이터 처리 방법
US8001444B2 (en) * 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
CN101398745B (zh) * 2007-09-29 2011-12-21 群联电子股份有限公司 并行数据存取架构的固态盘存储系统与固态盘控制器
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US8719485B2 (en) * 2008-06-27 2014-05-06 Marvell World Trade Ltd. Solid-state disk with wireless functionality
JP2010020839A (ja) * 2008-07-10 2010-01-28 Panasonic Corp 半導体記憶装置
KR101391362B1 (ko) * 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
KR101491829B1 (ko) * 2008-08-14 2015-02-12 삼성전자주식회사 읽기 디스터번스를 방지하는 메모리 장치 및 그 방법
US9727473B2 (en) * 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
KR101529290B1 (ko) 2008-10-02 2015-06-17 삼성전자주식회사 반도체 디스크 장치 및 그것의 데이터 처리 방법
WO2010045445A2 (en) * 2008-10-15 2010-04-22 Marvell World Trade Ltd. Architecture for data storage systems
TWI385672B (zh) * 2008-11-05 2013-02-11 Lite On It Corp 儲存裝置之適應性多通道控制器及其方法
KR101014149B1 (ko) 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR20100058166A (ko) * 2008-11-24 2010-06-03 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US8732350B2 (en) * 2008-12-19 2014-05-20 Nvidia Corporation Method and system for improving direct memory access offload
US9208108B2 (en) * 2008-12-19 2015-12-08 Nvidia Corporation Method and system for improved flash controller commands selection
US8694750B2 (en) * 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US8370603B2 (en) * 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
KR101006748B1 (ko) * 2009-01-29 2011-01-10 (주)인디링스 패드들의 동시 스위칭을 제어하는 고체 상태 디스크를 위한컨트롤러
JP2010176646A (ja) * 2009-02-02 2010-08-12 Toshiba Information Systems (Japan) Corp メモリシステムおよびメモリシステムのインターリーブ制御方法
KR20100097964A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 불휘발성 메모리 장치의 소거 방법 및 그 독출 방법
TWI404067B (zh) * 2009-02-27 2013-08-01 Macronix Int Co Ltd 記憶體裝置及其操作方法
KR101504338B1 (ko) * 2009-03-04 2015-03-23 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법
KR20100099961A (ko) * 2009-03-04 2010-09-15 삼성전자주식회사 불휘발성 메모리 장치 및 그 동작 방법
US8285917B2 (en) * 2009-03-26 2012-10-09 Scaleo Chip Apparatus for enhancing flash memory access
CN101521041B (zh) * 2009-04-01 2013-02-13 北京泰科源科技有限责任公司 一种基于与非门结构内存的控制电路系统
US8205037B2 (en) 2009-04-08 2012-06-19 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips operating at different voltages
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
CN101866679A (zh) * 2009-04-17 2010-10-20 众杰科技股份有限公司 固态硬盘的结构
US8321647B2 (en) 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US8341338B2 (en) 2009-05-06 2012-12-25 Samsung Electronics Co., Ltd. Data storage device and related method of operation
US8495332B2 (en) * 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US8489907B2 (en) 2009-09-16 2013-07-16 Apple Inc. Method of selective power cycling of components in a memory device independently by reducing power to a memory array or memory controller
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
KR101574207B1 (ko) * 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
US8386650B2 (en) * 2009-12-16 2013-02-26 Intel Corporation Method to improve a solid state disk performance by using a programmable bus arbiter
US8683293B2 (en) * 2009-12-16 2014-03-25 Nvidia Corporation Method and system for fast two bit error correction
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
US9594675B2 (en) * 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
KR101008923B1 (ko) * 2010-01-15 2011-01-17 주식회사 노바칩스 다양한 종류의 반도체 메모리 장치들을 구비하는 반도체 메모리 시스템 및 이의 제어 방법
US9069687B2 (en) * 2010-01-29 2015-06-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory read-channel with selective transmission of error correction data
KR20110131648A (ko) * 2010-05-31 2011-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 메모리 카드 및 그것의 프로그램 방법
KR101734204B1 (ko) * 2010-06-01 2017-05-12 삼성전자주식회사 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법
JP4922442B2 (ja) 2010-07-29 2012-04-25 株式会社東芝 バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
JP2012128644A (ja) * 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
CN102541459A (zh) * 2010-12-17 2012-07-04 西安奇维测控科技有限公司 一种电子硬盘的页数据管理办法
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
JP5259755B2 (ja) 2011-02-25 2013-08-07 株式会社東芝 マルチチャネルを有するメモリ装置及び同装置におけるメモリアクセス方法
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8918595B2 (en) 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US8839024B2 (en) * 2011-07-22 2014-09-16 Taejin Info Tech Co., Ltd. Semiconductor storage device-based data restoration
JP2013069047A (ja) * 2011-09-21 2013-04-18 Toshiba Corp メモリシステム
CN103106155B (zh) * 2011-11-10 2015-10-21 群联电子股份有限公司 存储器储存装置、存储器控制器与其数据传输方法
JP2013137713A (ja) 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
JP5624578B2 (ja) * 2012-03-23 2014-11-12 株式会社東芝 メモリシステム
US8996782B2 (en) 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
JP5925549B2 (ja) * 2012-03-23 2016-05-25 株式会社東芝 メモリシステムおよびバンクインターリーブ方法
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
JP2014029634A (ja) * 2012-07-31 2014-02-13 International Business Maschines Corporation パケットバッファリングシステムおよび方法
US8954817B2 (en) 2012-07-31 2015-02-10 Kabushiki Kaisha Toshiba Storage apparatus and controller
US9471484B2 (en) 2012-09-19 2016-10-18 Novachips Canada Inc. Flash memory controller having dual mode pin-out
KR101951663B1 (ko) * 2012-12-14 2019-02-25 삼성전자주식회사 Crc 부호와 극 부호에 의한 부호화 방법 및 장치
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9706508B2 (en) * 2013-04-05 2017-07-11 Honeywell International Inc. Integrated avionics systems and methods
CN103235770B (zh) * 2013-04-25 2016-05-04 杭州华澜微电子股份有限公司 基于超位宽数字接口界面的固态存储器
JP2015215774A (ja) * 2014-05-12 2015-12-03 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US10210114B2 (en) * 2014-08-01 2019-02-19 Universiti Teknologi Malaysia Interrupt-driven I/O arbiter for a microcomputer system
CN104123103A (zh) * 2014-08-05 2014-10-29 南车株洲电力机车研究所有限公司 一种大容量存储装置
KR20160076889A (ko) * 2014-12-23 2016-07-01 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
JP5889462B2 (ja) * 2015-03-26 2016-03-22 株式会社日立製作所 半導体装置、不揮発性メモリ装置の制御方法
US9772777B2 (en) * 2015-04-27 2017-09-26 Southwest Research Institute Systems and methods for improved access to flash memory devices
TWI758957B (zh) 2015-05-28 2022-03-21 日商鎧俠股份有限公司 半導體裝置
KR102417182B1 (ko) * 2015-06-22 2022-07-05 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20160378352A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Efficient solid state drive data compression scheme and layout
JP6627346B2 (ja) * 2015-09-09 2020-01-08 ソニー株式会社 メモリコントローラ、記憶装置、情報処理システムおよびメモリ制御方法
FR3041806B1 (fr) * 2015-09-25 2017-10-20 Stmicroelectronics Rousset Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits
KR102392844B1 (ko) * 2017-03-10 2022-05-03 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 저장 장치
US10642535B2 (en) * 2018-01-23 2020-05-05 International Business Machines Corporation Register access in a distributed memory buffer system
TWI671637B (zh) * 2018-04-25 2019-09-11 點序科技股份有限公司 記憶體管理裝置及其操作方法
US10534551B1 (en) * 2018-06-22 2020-01-14 Micron Technology, Inc. Managing write operations during a power loss
CN110633054A (zh) * 2019-09-18 2019-12-31 深圳市硅格半导体有限公司 一种提高sata逻辑写性能的预启动方法及其系统
JP7413108B2 (ja) 2020-03-23 2024-01-15 キオクシア株式会社 半導体装置
JP7456010B2 (ja) * 2020-12-28 2024-03-26 キオクシア株式会社 メモリシステム
JP2023091307A (ja) * 2021-12-20 2023-06-30 キオクシア株式会社 半導体装置および制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010094034A (ko) * 2000-04-03 2001-10-31 정문술 메모리 및 입출력 포트 인터페이스 제어 장치
KR20030035326A (ko) * 2001-10-31 2003-05-09 엘지전자 주식회사 중앙처리장치와 주변 장치간의 버스 인터페이스 회로
KR20040078110A (ko) * 2001-12-10 2004-09-08 에멀럭스 디자인 앤드 매뉴팩처링 코포레이션 직접 메모리 액세스(dma) 전송 버퍼 프로세서
KR101020040B1 (ko) * 2010-05-17 2011-03-09 황명구 주변의 관련인물 검색 시스템 및 주변 관련의 관련인물 검색 서비스 방법
KR102620030B1 (ko) * 2019-06-17 2023-12-29 도시바 미쓰비시덴키 산교시스템 가부시키가이샤 전원 장치 및 교류 전원의 이상 검출 방법

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0273411A (ja) * 1988-09-09 1990-03-13 Canon Inc ステージ位置決め装置
EP0466550B1 (en) * 1990-06-29 1998-11-18 Digital Equipment Corporation Conversion of internal processor register commands to I/O space address
US5822781A (en) * 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5696897A (en) * 1994-01-31 1997-12-09 Sun Microsystems, Inc. Method and apparatus for a multi-layer system quiescent suspend and resume operation
JP3726284B2 (ja) * 1994-03-28 2005-12-14 ソニー株式会社 データ記録装置及び方法
JP3864422B2 (ja) * 1994-09-16 2006-12-27 ソニー株式会社 データ送出装置およびデータ送出方法
JPH08234716A (ja) * 1995-02-28 1996-09-13 Toshiba Corp ウインドウ画面表示方式
US5838935A (en) * 1995-06-15 1998-11-17 Intel Corporation Method and apparatus providing programmable decode modes for secondary PCI bus interfaces
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5875477A (en) * 1995-12-22 1999-02-23 Intel Corporation Method and apparatus for error management in a solid state disk drive using primary and secondary logical sector numbers
JP3093678B2 (ja) * 1996-06-28 2000-10-03 株式会社東芝 暗号化方法、復号方法、記録再生装置、復号装置、復号化ユニット装置及び記録媒体の製造方法
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
KR100217181B1 (ko) * 1997-01-21 1999-09-01 윤종용 데이타 고속 전송을 위한 시스템 디코더 및 트랙버퍼링 제어방법
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
JP3821536B2 (ja) * 1997-05-16 2006-09-13 沖電気工業株式会社 不揮発性半導体ディスク装置
JPH11327798A (ja) * 1998-05-20 1999-11-30 Matsushita Electric Ind Co Ltd データ転送制御装置
JP3734620B2 (ja) * 1998-06-24 2006-01-11 沖電気工業株式会社 半導体ディスク装置
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6401149B1 (en) * 1999-05-05 2002-06-04 Qlogic Corporation Methods for context switching within a disk controller
CA2370596C (en) * 1999-05-05 2010-01-12 Qlogic Corporation Systems and methods for a disk controller memory architecture
US6851069B1 (en) * 2000-01-13 2005-02-01 Intel Corporation Method, apparatus, and system for high speed data transfer using programmable DLL without using strobes for reads and writes
US6441290B2 (en) * 2000-02-01 2002-08-27 Yamaha Corporation Apparatus and method for reproducing or recording, via buffer memory, sample data supplied from storage device
JP3714087B2 (ja) * 2000-02-02 2005-11-09 ヤマハ株式会社 サンプルデータ再生装置およびサンプルデータ記録再生装置
JP2002073411A (ja) 2000-08-24 2002-03-12 Seiko Epson Corp Eepromの記憶容量判別装置およびeepromの記憶容量判別方法
US6691203B1 (en) * 2000-08-30 2004-02-10 Mosel Vitelic Corporation Integrated controller to process both optical reads and optical writes of multiple optical media
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US7020739B2 (en) * 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
JP2002288112A (ja) * 2001-03-27 2002-10-04 Hitachi Ltd 通信制御用半導体装置およびインタフェースシステム
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
GB0123422D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
JP4314559B2 (ja) * 2003-04-16 2009-08-19 セイコーエプソン株式会社 プリンタ及びプリンタの制御方法
TW555100U (en) * 2002-11-27 2003-09-21 Power Quotient Int Co Ltd High speed of data transfer of solid state disk on module
IES20030722A2 (en) * 2003-10-01 2005-04-06 Yqa Now Ltd A data storage device
US7814554B1 (en) * 2003-11-06 2010-10-12 Gary Dean Ragner Dynamic associative storage security for long-term memory storage devices
JP2005166147A (ja) * 2003-12-01 2005-06-23 Yamaha Corp 光ディスクドライブ、光ディスク装置およびおよび光ディスクデバイスドライバプログラム
US7322002B2 (en) * 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US7493430B2 (en) * 2005-07-14 2009-02-17 Quantum Corporation Data flow control and bridging architecture enhancing performance of removable data storage systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010094034A (ko) * 2000-04-03 2001-10-31 정문술 메모리 및 입출력 포트 인터페이스 제어 장치
KR20030035326A (ko) * 2001-10-31 2003-05-09 엘지전자 주식회사 중앙처리장치와 주변 장치간의 버스 인터페이스 회로
KR20040078110A (ko) * 2001-12-10 2004-09-08 에멀럭스 디자인 앤드 매뉴팩처링 코포레이션 직접 메모리 액세스(dma) 전송 버퍼 프로세서
KR101020040B1 (ko) * 2010-05-17 2011-03-09 황명구 주변의 관련인물 검색 시스템 및 주변 관련의 관련인물 검색 서비스 방법
KR102620030B1 (ko) * 2019-06-17 2023-12-29 도시바 미쓰비시덴키 산교시스템 가부시키가이샤 전원 장치 및 교류 전원의 이상 검출 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
공개특허공보 제2001-94034호(2001.10.31)
공개특허공보 제2003-35326호(2003.05.09)
공개특허공보 제2004-78110호(2004.09.08)

Also Published As

Publication number Publication date
CN1828511A (zh) 2006-09-06
US20060152981A1 (en) 2006-07-13
US8917565B2 (en) 2014-12-23
JP2006195990A (ja) 2006-07-27
CN1828511B (zh) 2010-10-06
US9652324B2 (en) 2017-05-16
DE102006002526A1 (de) 2006-08-03
US8159889B2 (en) 2012-04-17
TWI319191B (en) 2010-01-01
DE102006002526B4 (de) 2011-06-30
US20120173806A1 (en) 2012-07-05
US20090265513A1 (en) 2009-10-22
TW200641903A (en) 2006-12-01
KR20060081928A (ko) 2006-07-14
US20150067450A1 (en) 2015-03-05
US9223650B2 (en) 2015-12-29
JP5032027B2 (ja) 2012-09-26
US20160132389A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
KR100621631B1 (ko) 반도체 디스크 제어 장치
CN107785044B (zh) 电缓冲nv-dimm和其使用方法
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US8949492B2 (en) Apparatus including buffer allocation management and related methods
USRE46201E1 (en) Method and controller for performing a sequence of commands
JP5759623B2 (ja) メモリシステムコントローラを含む装置および関連する方法
US8788781B2 (en) Descriptor scheduler
US9076528B2 (en) Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
US8621113B2 (en) Apparatus including host bus adapter and serial attachment programming compliant device and related methods
KR20120052303A (ko) 플래시 메모리 시스템에 판독 상태 및 예비 블록 관리 정보를 제공하기 위한 제어기 및 방법
US20130304970A1 (en) Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US20180059943A1 (en) Media Controller and Method for Management of CPU-Attached Non-Volatile Memory
KR101332774B1 (ko) 비휘발성 메모리 시스템 및 이의 데이터 전송 제어 방법
US11398288B1 (en) Storage medium-assisted system interface training scheme
US20240111427A1 (en) Data Storage Device That Detects And Releases Input Queue Bottlenecks
CN117795466A (zh) 使用子命令的存取请求管理

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120802

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140731

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180731

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 14