KR101997794B1 - 메모리 제어기 및 그것을 포함한 메모리 시스템 - Google Patents

메모리 제어기 및 그것을 포함한 메모리 시스템 Download PDF

Info

Publication number
KR101997794B1
KR101997794B1 KR1020120143726A KR20120143726A KR101997794B1 KR 101997794 B1 KR101997794 B1 KR 101997794B1 KR 1020120143726 A KR1020120143726 A KR 1020120143726A KR 20120143726 A KR20120143726 A KR 20120143726A KR 101997794 B1 KR101997794 B1 KR 101997794B1
Authority
KR
South Korea
Prior art keywords
signal processing
engines
data
processing engines
activated
Prior art date
Application number
KR1020120143726A
Other languages
English (en)
Other versions
KR20140075952A (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 KR1020120143726A priority Critical patent/KR101997794B1/ko
Priority to US14/102,979 priority patent/US9767053B2/en
Priority to JP2013256030A priority patent/JP6284351B2/ja
Priority to CN201310674952.7A priority patent/CN103870411B/zh
Publication of KR20140075952A publication Critical patent/KR20140075952A/ko
Application granted granted Critical
Publication of KR101997794B1 publication Critical patent/KR101997794B1/ko

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)

Abstract

복수의 채널들을 통해 저장 매체에 연결되는 메모리 제어기는 복수의 신호 처리 엔진들을 포함하는 신호 처리 블록과; 그리고 상기 복수의 신호 처리 엔진들 중 적어도 하나의 활성화된 신호 처리 엔진이 상기 복수의 채널들에 각각 연결되도록 데이터 경로를 제어하는 디코딩 스케쥴러를 포함한다.

Description

메모리 제어기 및 그것을 포함한 메모리 시스템{MEMORY CONTROLLER AND MEMORY SYSTEM INCLUDING THE SAME}
본 발명은 정보 저장 장치에 관한 것으로, 좀 더 구체적으로는, 저장 매체를 제어하는 메모리 제어기 및 그것을 포함한 메모리 시스템에 관한 것이다.
반도체 메모리는, 일반적으로, 위성에서 소비자 전자 기술까지의 범위에 속하는 마이크로프로세서를 기반으로 한 응용 및 컴퓨터과 같은 디지털 로직 설계의 가장 필수적인 마이크로 전자 소자이다. 그러므로, 높은 집적도 및 빠른 속도를 위한 축소(scaling)를 통해 얻어지는 프로세스 향상 및 기술 개발을 포함한 반도체 메모리의 제조 기술의 진보는 다른 디지털 로직 계열의 성능 기준을 확립하는 데 도움이 된다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 불 휘발성 반도체 메모리 장치로 나뉘어진다. 휘발성 반도체 메모리 장치에 있어서, 로직 정보는 스태틱 랜덤 액세스 메모리의 경우 쌍안정 플립-플롭의 로직 상태를 설정함으로써 또는 다이나믹 랜덤 액세스 메모리의 경우 커패시터의 충전을 통해 저장된다. 휘발성 반도체 메모리 장치의 경우, 전원이 인가되는 동안 데이터가 저장되고 읽혀지며, 전원이 차단될 때 데이터는 소실된다.
MROM, PROM, EPROM, EEPROM, PRAM, 등과 같은 불 휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 불 휘발성 메모리 데이터 저장 상태는 사용되는 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 불 휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 그리고 소비자 전자 기술 산업과 같은 넓은 범위의 응용에서 프로그램 및 마이크로코드의 저장을 위해서 사용된다. 단일 칩에서 휘발성 및 불 휘발성 메모리 저장 모드들의 조합이 빠르고 재프로그램 가능한 불 휘발성 메모리를 요구하는 시스템에서 불 휘발성 RAM (nvRAM)과 같은 장치들에서 또한 사용 가능하다. 게다가, 응용 지향 업무를 위한 성능을 최적화시키기 위해 몇몇 추가적인 로직 회로를 포함하는 특정 메모리 구조가 개발되어 오고 있다.
불 휘발성 반도체 메모리 장치에 있어서, MROM, PROM 및 EPROM은 시스템 자체적으로 소거 및 쓰기가 자유롭지 않아서 일반 사용자들이 기억 내용을 새롭게 하기가 용이하지 않다. 이에 반해, EEPROM, PRAM, 등과 같은 불 휘발성 반도체 메모리 장치들은 전기적으로 소거 및 쓰기가 가능하므로 계속적인 갱신이 필요한 시스템 프로그래밍(system programming)이나 보조 기억 장치로의 응용이 확대되고 있다.
본 발명의 목적은 에러 정정 코드 블록의 소비 전력 및 성능을 제어할 수 있는 메모리 시스템을 제공하는 것이다.
본 발명의 일 특징은 복수의 채널들을 통해 저장 매체에 연결되는 메모리 제어기를 제공하며, 메모리 제어기는 복수의 신호 처리 엔진들을 포함하는 신호 처리 블록과; 그리고 상기 복수의 신호 처리 엔진들 중 적어도 하나의 활성화된 신호 처리 엔진이 상기 복수의 채널들에 각각 연결되도록 데이터 경로를 제어하는 디코딩 스케쥴러를 포함한다.
예시적인 실시예에 있어서, 메모리 제어기는 상기 메모리 제어기의 동작 조건을 판별하는 중앙 처리 장치와; 그리고 상기 중앙 처리 장치의 판별 결과에 따라 결정된 상기 복수의 신호 처리 엔진들의 활성화 정보를 저장하도록 구성된 레지스터를 더 포함한다.
예시적인 실시예에 있어서, 상기 복수의 신호 처리 엔진들 모두 또는 일부는 상기 레지스터에 저장된 활성화 정보에 의해서 활성화된다.
예시적인 실시예에 있어서, 메모리 제어기는 상기 복수의 채널들로 전송될 데이터를 임시 저장하는 복수의 피포들과; 그리고 상기 복수의 피포들의 데이터가 상기 적어도 하나의 활성화된 신호 처리 엔진으로 전송되도록 데이터 경로를 제어하는 부호화 스케쥴러를 더 포함한다.
예시적인 실시예에 있어서, 상기 부호화 스케쥴러는 상기 적어도 하나의 활성화된 신호 처리 엔진의 상태를 참조하여 상기 복수의 피포들 각각으로부터 출력된 데이터에 제어 정보를 추가함으로써 패킷 데이터를 발생하는 제 1 패킷 발생기와; 그리고 상기 패킷 데이터에 포함된 제어 정보에 의거하여 상기 복수의 피포들 각각 에 대응하는 패킷 데이터를 상기 적어도 하나의 활성화된 신호 처리 엔진으로 순차적으로 전송하는 제 1 버스 매트릭스를 포함한다.
예시적인 실시예에 있어서, 상기 복호화 스케쥴러는 상기 적어도 하나의 활성화된 신호 처리 엔진의 상태를 참조하여 상기 복수의 채널들 각각으로부터 출력된 데이터에 제어 정보를 추가함으로써 패킷 데이터를 발생하는 제 2 패킷 발생기와; 그리고 상기 패킷 데이터에 포함된 제어 정보에 의거하여 상기 복수의 채널들 각각 에 대응하는 패킷 데이터를 상기 적어도 하나의 활성화된 신호 처리 엔진으로 순차적으로 전송하는 제 2 버스 매트릭스를 포함한다.
예시적인 실시예에 있어서, 고성능이 요구되는 경우, 상기 중앙 처리 장치는 상기 복수의 신호 처리 엔진들이 모두 활성화되도록 상기 레지스터의 값을 결정한다.
예시적인 실시예에 있어서, 상기 부호화 스케쥴러는 부호화 동작을 수행하는 신호 처리 엔진을 제외한 상기 활성화된 신호 처리 엔진들 중 나머지 신호 처리 엔진들로 데이터가 배분되도록 패킷 데이터를 발생한다.
예시적인 실시예에 있어서, 상기 복호화 스케쥴러는 복호화 동작을 수행하는 신호 처리 엔진을 제외한 상기 활성화된 신호 처리 엔진들 중 나머지 신호 처리 엔진들로 데이터가 배분되도록 패킷 데이터를 발생한다.
예시적인 실시예에 있어서, 상기 복호화 스케쥴러는 상기 복수의 채널들 중 어느 하나의 채널을 통해 전송된 데이터가 상기 활성화된 신호 처리 엔진들로 배분되도록 패킷 데이터를 발생한다.
예시적인 실시예에 있어서, 상기 부호화 스케쥴러는 상기 복수의 피포들 중 어느 하나의 피포로부터 출력되는 데이터가 상기 활성화된 신호 처리 엔진들로 배분되도록 패킷 데이터를 발생한다.
예시적인 실시예에 있어서, 상기 신호 처리 엔진들은 에러 정정 코드 엔진들, 압축 엔진들, 암호화 엔진들, 또는 해쉬 키 엔진들이다.
예시적인 실시예에 있어서, 상기 복수의 신호 처리 엔진들의 수는 상기 복수의 채널들의 수와 같거나 그 보다 적다.
예시적인 실시예에 있어서, 상기 복수의 신호 처리 엔진들은 동일한 에러 정정 코드 알고리즘에 따라 동작한다.
본 발명에 따르면, 저전력 동작이 요구될 때 최소의 신호 처리 엔진들을 동작시키고 고성능이 요구될 때 모든 신호 처리 엔진들을 동작시킴으로써 전력 소비 및 성능을 조정하는 것이 가능하다. 또한, 하나의 신호 처리 엔진이 신호 처리를 위해 비지 상태인 경우, 다른 신호 처리 엔진이 병렬로 다름 데이터에 대해 신호 처리를 행함으로써 랜덤 읽기 성능이 향상될 수 있다. 또한, 신호 처리 블록의 처리량을 제어함으로써 피크 전력을 관리하는 것이 가능하다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 2는 도 1에 도시된 부호화/복호화 블록을 개략적으로 보여주는 블록도이다.
도 3은 도 2에 도시된 부호화 스케쥴러와 복호화 스케쥴러를 개략적으로 보여주는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 메모리 제어기를 개략적으로 보여주는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템이 저전력 모드로 동작할 때 복호화 동작을 보여주는 도면이다.
도 6은 본 발명의 일 실시예에 따른 메모리 시스템이 고성능 모드로 동작할 때 복호화 동작을 보여주는 도면이다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템이 피크 전력 관리 모드로 동작할 때 부호화 동작을 보여주는 도면이다.
도 8은 본 발명의 다른 실시예에 따른 부호화/복호화 블록을 개략적으로 보여주는 블록도이다.
도 9a 내지 도 9c는 본 발명의 다른 실시예들에 따른 부호화/복호화 블록을 보여주는 블록도들이다.
도 10는 본 발명의 실시예에 따른 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
도 11은 본 발명의 실시예에 따른 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 12은 도 11에 도시된 반도체 드라이브를 이용한 스토리지를 개략적으로 보여주는 블록도이고.
도 13는 도 11에 도시된 반도체 드라이브를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 14은 본 발명의 실시예에 따른 반도체 드라이브가 적용되는 시스템을 개략적으로 보여주는 도면이다.
도 15는 본 발명의 실시예에 따른 메모리 카드(memory card)를 개략적으로 보여주는 블록도이다.
도 16는 본 발명의 실시예에 따른 디지털 스틸 카메라(digital still camera)를 개략적으로 보여주는 블록도이다.
도 17은 도 15의 메모리 카드가 사용되는 다양한 응용 분야들을 보여주는 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 명세서 전체에 걸쳐서 동일한 참조번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작, 소자 및 장치의 존재 또는 추가를 의미한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 본 발명에 따른 메모리 시스템(1000)은 저장 매체(1100)와 메모리 제어기(1200)를 포함한다. 저장 매체(1100)는 복수의 채널들(CH0~CHi)을 통해 메모리 제어기(1200)에 전기적으로 연결된다. 저장 매체(1100)는 메모리 제어기(1200)의 제어에 응답하여 동작한다. 저장 매체(1100)는 메모리 제어기(1200)에 의해서 읽기 요청된 데이터를 출력하거나 그것에 의해서 쓰기 요청된 데이터를 저장한다. 저장 매체(1100)는 복수의 불 휘발성 메모리 장치들로 구성된다.
예시적인 실시예에 있어서, 각 불 휘발성 메모리 장치는 낸드 플래시 메모리 장치로 구성될 것이다. 낸드 플래시 메모리 장치는 2차원 어레이 구조를 갖는 낸드 플래시 메모리 장치이거나 3차원 어레이 구조를 갖는 낸드 플래시 메모리 장치일 것이다. 3차원 어레이 구조를 갖는 불 휘발성 메모리 장치는 수직 낸드 플래시 메모리 장치라 불린다.
다른 예시적인 실시예에 있어서, 저장 매체(1100)는 노아 플래시 메모리 장치, 저항성 램(Resistive Random Access Memory: RRAM) 장치, 상변화 메모리(Phase-Change Memory: PRAM) 장치, 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM) 장치, 강유전체 메모리(Ferroelectric Random Access Memory: FRAM) 장치, 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM), 또는 그와 같은 불 휘발성 메모리 장치들로 구성될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치 뿐만 아니라, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(Charge Trap Flash, "CTF"라 불림) 메모리 장치에도 적용 가능하다.
메모리 제어기(1200)는 호스트의 요청에 응답하여 저장 매체(1100)를 제어한다. 또한, 가비지 콜렉션, 머지 동작, 등과 같은 배경 동작들이 요구될 때, 메모리 제어기(1200)는 호스트의 개입없이 요구되는 배경 동작에 따라 저장 매체(1100)를 제어한다. 메모리 제어기(1200)는 복수의 채널들(CH0~CHi)을 통해 저장 매체(1100)로 데이터를 전송한다. 메모리 제어기(1200)는 저장 매체(1100)로부터 출력되는 데이터를 복수의 채널들(CH0~CHi)을 통해 입력받는다. 메모리 제어기(1200)는 호스트에 의해서 쓰기 요청된 데이터를 부호화하도록 그리고 부호화된 데이터를 저장 매체(1100)로 전송하도록 구성된다. 메모리 제어기(1200)는 호스트에 의해서 읽기 요청된 데이터를 저장 매체(1100)로부터 입력받도록 그리고 입력된 데이터를 복호화하도록 구성된다.
메모리 제어기(1200)는 데이터 부호화 및 복호화를 위한 부호화/복호화 블록(1210)을 포함한다. 부호화/복호화 블록(1210)은 저장 매체(1100)에 저장될 프로그램 데이터에 의거하여 에러 정정 부호(ECC)를 생성하고, 에러 정정 부호를 프로그램 데이터에 추가하여 부호화 데이터를 생성한다. 부호화 데이터는 채널들(CH0~CHi)을 통해 저장 매체(1100)로 전송된다. 부호화/복호화 블록(1210)은 저장 매체(1100)로부터 출력된 독출 데이터의 에러를 검출하고 검출 결과에 따라 독출 데이터의 에러를 정정하도록 구성된다. 독출 데이터의 에러는 독출 데이터에 포함된 에러 정정 부호에 의거하여 검출된다.
부호화/복호화 블록(1210)은 복수의 ECC 엔진들을 포함하며, ECC 엔진들은 동작 조건들(예를 들면, 저전력, 고성능, 피크 전력, 등)을 고려하여 선택적으로 활성화될 것이다. 또한, 복호화될/부호화될 데이터는 활성화된 ECC 엔진들의 상태들(대기 상태 및 비지 상태를 포함함)을 참조하여 (또는, 활성화된 ECC 엔진들의 상태들에 적응적으로) 활성화된 ECC 엔진들로 랜덤하게 배분될 것이다. 다시 말해서, ECC 엔진들이 채널들(CH0~CHi)에 각각 고정된 조건 하에서 데이터가 부호화/복호화되는 것이 아니라, 데이터는 ECC 엔진들의 상태들에 따라, 선택된 ECC 엔진에 의해서 부호화/복호화된다. 본 발명의 부호화/복호화 방식은 메모리 시스템(1000)의 전력 및 성능의 조정(tuning)을 가능하게 한다. 또한, 본 발명의 부호화/복호화 방식은 에러 정정 효율이 향상되게 한다.
부호화/복호화 블록(1210)이 ECC 엔진들을 포함하는 것에 본 발명이 국한되지 않음은 잘 이해될 것이다. 예를 들면, 부호화/복호화 블록(1210)이 암호화, 압축, 또는 해쉬 키의 생성을 위한 엔진들로 구성될 수 있음은 잘 이해될 것이다. 이러한 경우, 암호화, 압축, 또는 해쉬 키의 생성을 위한 엔진들은 동작 조건들(예를 들면, 저전력, 고성능, 피크 전력, 등)을 고려하여 선택적으로 활성화될 것이다. 또한, 복호화될/부호화될 데이터는 활성화된 엔진들의 상태들(대기 상태 및 비지 상태를 포함함)을 참조하여 (또는, 활성화된 엔진들의 상태들에 적응적으로) 활성화된 엔진들로 랜덤하게 배분될 것이다. 다시 말해서, 암호화, 압축, 또는 해쉬 키의 생성을 위한 엔진들이 채널들(CH0~CHi)에 각각 고정된 조건 하에서 데이터가 부호화/복호화되는 것이 아니라, 데이터는 암호화, 압축, 또는 해쉬 키의 생성을 위한 엔진들의 상태들에 따라, 선택된 엔진에 의해서 부호화/복호화된다. 본 발명의 부호화/복호화 방식은 메모리 시스템(1000)의 전력 및 성능의 조정(tuning)을 가능하게 한다. 또한, 본 발명의 부호화/복호화 방식은 부호화/복호화 효율이 향상되게 한다.
도 2는 도 1에 도시된 부호화/복호화 블록을 개략적으로 보여주는 블록도이다.
도 2를 참조하면, 본 발명의 부호화/복호화 블록(1210)은 신호 처리 블록으로서 ECC 블록(1211), 부호화 스케쥴러(1212), 복호화 스케쥴러(1213), 그리고 레지스터(1214)를 포함한다. ECC 블록(1211)은 신호 처리 엔진으로서 복수의 ECC 엔진들(EN0~ENj)을 포함한다. ECC 엔진들(EN0~ENj)의 수는 채널들(CH0~CHi)의 수보다 많거나 적거나 또는 그것과 같을 수 있다. ECC 엔진들(EN0~ENj)은 동일한 에러 정정 코드 알고리즘에 따라 에러 검출 및 정정 동작을 수행한다. 다른 예로서, ECC 엔진들(EN0~ENj)의 일부(또는, 절반)은 제 1 에러 정정 코드 알고리즘에 따라 에러 검출 및 정정 동작을 수행하고, 나머지는 제 1 에러 정정 코드 알고리즘과 다른 제 2 에러 정정 코드 알고리즘에 따라 에러 검출 및 정정 동작을 수행한다. 편의상, ECC 엔진들(EN0~ENj)은 동일한 에러 정정 코드 알고리즘에 따라 에러 검출 및 정정 동작을 수행한다고 가정하자. 하지만, 본 발명이 이에 국한되지 않음은 잘 이해될 것이다.
ECC 엔진들(EN0~ENj)의 활성화 및 비활성화는 레지스터(1214)에 저장되는 값에 따라 결정될 것이다. 이후 설명되는 바와 같이, 레지스터(1214)의 값은 메모리 제어기(1100)의 동작 조건들을 고려하여 결정될 것이다. ECC 엔진들(EN0~ENj) 모두 또는 일부가 레지스터(1214)에 저장된 값에 따라 활성화될 것이다. 예를 들면, 고성능이 요구될 때, 레지스터(1214)의 값은 ECC 엔진들(EN0~ENj) 모두가 활성화되도록 결정될 것이다. 저전력이 요구될 때 또는 피크 전력의 관리가 요구될 때, 레지스터(1214)의 값은 ECC 엔진들(EN0~ENj)의 일부가 활성화되도록 결정될 것이다.
부호화 스케쥴러(1212)는 부호화될 데이터를 입력받고, ECC 블록(1210)의 활성화된 ECC 엔진들의 상태들을 고려하여 대기 상태를 갖는 ECC 엔진들 중 하나 또는 그 보다 많은 ECC 엔진들을 선택하고, 선택된 ECC 엔진으로 부호화될 데이터를 제공할 것이다. 복호화 스케쥴러(1213)는 복호화될 데이터를 입력받고, ECC 블록(1210)의 활성화된 ECC 엔진들의 상태들을 고려하여 대기 상태를 갖는 ECC 엔진들 중 하나 또는 그 보다 많은 ECC 엔진들을 선택하고, 선택된 ECC 엔진으로 복호화될 데이터를 제공할 것이다. ECC 엔진들(EN0~ENj) 각각은 복호화 스케쥴러(12130)를 통해 채널들(CH0~CHi)에 각각 연결될 수 있다. 하나의 ECC 엔진은 채널들(CH0~CHi) 모두 또는 일부로부터 전송되는 데이터를 복호화하거나, 채널들(CH0~CHi) 모두 또는 일부로 전송될 데이터를 부호화할 수 있다. 다시 말해서, 하나의 채널을 통해 전송된 데이터는 활성화된 ECC 엔진들 중 하나 또는 그 보다 많은 ECC 엔진들을 통해 복호화될 수 있다. 마찬가지로, 저장 매체(1100)로 전송될 데이터는 활성화된 ECC 엔진들 중 하나 또는 그 보다 많은 ECC 엔진들을 통해 부호화될 수 있다.
본 발명의 부호화/복호화 블록(1210)에 따르면, 복호화 및 부호화에 참여할 ECC 엔진들의 수는 동작 조건들에 따라 실시간으로 또는 미리 조절될 것이다. 또한, 데이터의 부호화/복호화는 동작 조건들에 따라 활성화된 ECC 엔진들의 상태들을 고려하여, 선택된 ECC 엔진(들)(대기 상태를 가짐)에 의해서 행해진다.
복호화 및 부호화에 참여할 ECC 엔진들의 수가 동작 조건들에 따라 조절됨은 부호화/복호화 블록(1210)의 밴드폭(또는, 데이터 전송율, 비트율, 또는 처리량)이 가변됨을 의미한다. 메모리 시스템(1000)의 온도 또는 전력 소모를 일정하게 유지할 필요가 있다. 온도 또는 전력 소모는 밴드폭을 조정함으로써 일정하게 유지될 수 있다. 예를 들면, 온도 또는 전력 소모가 낮은 경우, 밴드폭을 늘릴 수 있다. 또는, 온도 또는 전력 소모가 증가하는 경우, 밴드폭을 줄임으로써 온도 또는 전력 소모의 증가를 억제할 수 있다. 따라서, 부호화/복호화 블록(1210)의 밴드폭을 제어함으로써 메모리 시스템(1000)의 온도 또는 전력 소모를 일정하게 유지하는 것이 가능하다.
도 3은 도 2에 도시된 부호화 스케쥴러와 복호화 스케쥴러를 개략적으로 보여주는 블록도이다.
도 3을 참조하면, 부호화 스케쥴러(1212)는 제 1 패킷 발생기(1212a)와 제 1 버스 매트릭스(1212b)를 포함한다. 제 1 패킷 발생기(1212a)는 입력 데이터에 제어 정보를 추가하여 패킷 데이터를 생성한다. 예를 들면, 제 1 패킷 발생기(1212a)는 ECC 엔진들(또는, 신호 처리 엔진들) (EN0~ENj)의 상태 신호들(RB0~RBj)을 참조하여 입력 데이터에 제어 정보를 추가하도록 구성된다. 여기서, 제어 정보는 대기 상태를 갖는 ECC 엔진을 지정하는 데이터(이하, 엔진 선택 정보라 칭함)를 포함한다. 제어 정보는, 또한, 입력 데이터의 목적지(destination)를 나타내는 데이터(이하, 목적지 정보라 칭함)를 포함한다. 입력 데이터의 목적지를 나타내는 데이터는 입력 데이터와 함께 제공될 수 있다. 연결 매트릭스로서, 제 1 버스 매트릭스(1212b)는 제 1 패킷 발생기(1212a)로부터 출력된 패킷 데이터를 ECC 엔진들 중 하나로 전송한다. 즉, 제 1 버스 매트릭스(1212b)는 패킷 데이터에 포함된 제어 정보(즉, 제어 정보에 포함된 엔진 선택 정보)에 대응하는 ECC 엔진으로 패킷 데이터를 전송한다.
예시적인 실시예에 있어서, 제 1 패킷 발생기(1212a)와 제 1 버스 매트릭스(1212b)를 연결하는 버스 라인들(B1)의 수와 제 1 버스 매트릭스(1212b)와 ECC 블록(1211)를 연결하는 버스 라인들(B2)의 수는 같거나 다를 수 있다. 제 1 패킷 발생기(1212a)에 연결된 하나의 버스 라인(B1)은 제어 정보에 따라 버스 라인들(B2) 중 하나와 연결된다. 이는 버스 라인(B1)과 버스 라인들(B2)의 연결 노드에 스위치 수단(예를 들면, 디코더 및 스위치들로 구성됨)을 배치함으로써 행해질 수 있다.
계속해서 도 3을 참조하면, 복호화 스케쥴러(1213)는 제 2 패킷 발생기(1213a)와 제 1 버스 매트릭스(1213b)를 포함한다. 제 2 패킷 발생기(1213a)는 입력 데이터에 제어 정보를 추가하여 패킷 데이터를 생성한다. 예를 들면, 제 2 패킷 발생기(1213a)는 ECC 엔진들(EN0~ENj)의 상태 신호들(RB0~RBj)을 참조하여 입력 데이터에 제어 정보를 추가하도록 구성된다. 여기서, 제어 정보는 대기 상태를 갖는 ECC 엔진을 지정하는 엔진 선택 정보를 포함한다. 제어 정보는, 또한, 입력 데이터의 목적지(destination)를 나타내는 목적지 정보를 포함한다. 입력 데이터의 목적지를 나타내는 데이터는 입력 데이터와 함께 제공될 수 있다. 연결 매트릭스로서, 제 2 버스 매트릭스(1213b)는 제 2 패킷 발생기(1213a)로부터 출력된 패킷 데이터를 ECC 엔진들 중 하나로 전송한다. 즉, 제 2 버스 매트릭스(1213b)는 패킷 데이터에 포함된 제어 정보(즉, 제어 정보에 포함된 엔진 선택 정보)에 대응하는 ECC 엔진으로 패킷 데이터를 전송한다.
예시적인 실시예에 있어서, 제 2 패킷 발생기(1213a)와 제 2 버스 매트릭스(1213b)를 연결하는 버스 라인들(B1)의 수는 제 2 버스 매트릭스(1213b)와 ECC 블록(1211)를 연결하는 버스 라인들(B2)의 수는 같거나 다를 수 있다. 제 2 패킷 발생기(1213a)에 연결된 하나의 버스 라인(B1)은 제어 정보에 따라 버스 라인들(B2) 중 하나와 연결된다. 이는 버스 라인(B1)과 버스 라인들(B2)의 연결 노드에 스위치 수단(예를 들면, 디코더 및 스위치들로 구성됨)을 배치함으로써 행해질 수 있다.
도 3에 도시된 바와 같이, 대기 상태 또는 비지 상태를 나타내는 ECC 엔진들의 상태 신호들을 이용하여 패킷 데이터를 배분함으로써 에러 정정 효율을 향상시킬 수 있다. 즉, 하나의 ECC 엔진이 복호화를 위해 비지 상태에 있는 경우, 다른 ECC 엔진이 비지 상태에 있는 ECC 엔진과 병렬로 다음 데이터를 복호화하며, 그 결과 랜덤 읽기 동작의 성능이 향상될 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 제어기를 개략적으로 보여주는 블록도이다.
도 4를 참조하면, 메모리 제어기(1200)는 부호화/복호화 블록(1210), 제 1 인터페이스로서 호스트 인터페이스(1220), 제 2 인터페이스로서 메모리 인터페이스(1230), 중앙 처리 장치 (CPU) (1240), 버퍼 제어 및 중재기 블록(1250), 피포 블록(1260), 그리고 버퍼 메모리(1270)를 포함한다.
부호화/복호화 블록(1210)은 저장 매체(1100)에 저장될 데이터를 부호화하도록 그리고 저장 매체(1100)로부터 출력되는 데이터를 복호화하도록 구성된다. 부호화/복호화 블록(1210)은, 도 2 및 도 3에서 설명된 바와 같이, 복수의 ECC 엔진들(EN0~ENj)을 포함한다. ECC 엔진들(EN0~ENj)은 동작 조건들(예를 들면, 저전력, 고성능, 피크 전력, 등)에 따라 선택적으로 활성화된다. 예를 들면, ECC 엔진들(EN0~ENj) 모두 또는 일부가 동작 조건들에 따라 활성화된다. 앞서 설명된 바와 같이, 활성화된 ECC 엔진들 각각은 채널들(CH0~CHi) 모두 또는 일부로부터 제공되는 또는 채널들(CH0~CHi) 모두 또는 일부로 제공될 데이터를 처리할 수 있다.
호스트 인터페이스(1220)는 외부(또는, 호스트)와 인터페이스하도록 구성된다. 메모리 인터페이스(1230)는 채널들(CH0~CHi)을 통해 도 1에 도시된 저장 매체(1100)와 인터페이스하도록 구성된다. 메모리 인터페이스(1230)는 채널들(CH0~CHi)에 각각 대응하는 낸드 인터페이스 유니트들(NIF0~NIFi)을 포함한다. 낸드 인터페이스 유니트들(NIF0~NIFi)은 중앙 처리 장치(1240)의 제어 하에 대응하는 채널들에 연결된 불 휘발성 메모리 장치들과 인터페이스하도록 구성된다. CPU(1240)는 메모리 제어기(1200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, CPU(1240)는 플래시 변환 계층(Flash Translation Layer: FTL)과 같은 펌웨어를 운용하도록 구성된다. CPU(1240)는, 앞서 설명된 바와 같이, 동작 조건들을 고려하여 부호화/복호화 블록(1210)에 포함된 레지스터(1214)를 설정한다.
피포 블록(1260)은 채널들(CH0~CHi)에 각각 대응하는 복수의 피포들(FIFO0~FIFOi)을 포함한다. 피포 블록(1260)은 버퍼 제어 및 중재기 블록(1250)을 통해 버퍼 메모리(1270)으로부터 출력되는 데이터를 부호화/복호화 블록(1210)으로 전달한다. 피포 블록(1260)은 부호화/복호화 블록(1210)로부터 출력되는 데이터를 버퍼 제어 및 중재기 블록(1250)을 통해 버퍼 메모리(1270)로 전달한다. 버퍼 메모리(1270)는 버퍼 제어 및 중재기 블록(1250)의 제어 하에 호스트 인터페이스(1220)를 통해 외부로 전달되는 데이터를 임시 저장하는 데 사용된다. 버퍼 메모리(1270)는 버퍼 제어 및 중재기 블록(1250)의 제어 하에 메모리 인터페이스(1230)를 통해 저장 매체(1100)로부터 전달되는 데이터를 임시 저장하는 데 사용된다. 버퍼 메모리(1270)는, 또한, 저장 매체(1100)를 제어하는 데 필요한 정보(예를 들면, 맵핑 정보)를 저장하는 데 사용된다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는, 비록 도면에는 도시되지 않았지만, 저장 매체(1100)에 저장될 데이터를 랜덤화하도록 그리고 저장 매체(1100)로부터 읽혀진 데이터를 디-랜덤화하도록 구성된 랜덤화기를 더 포함할 것이다. 랜덤화기의 일예가 미국특허공개번호 제2010/0088574호에 "DATA STORAGE SYSTEM AND DEVICE WITH RANDOMIZER/DE-RANDOMIZER"라는 제목으로 게재되어 있으며, 이 출원의 레퍼런스로 포함된다.
예시적인 실시예에 있어서, 호스트 인터페이스(1220)는 컴퓨터 버스 표준들, 스토리지 버스 표준들, iFCPPeripheral 버스 표준들, 등 중 하나 또는 그 보다 많은 것들의 조합으로 구성될 수 있다. 컴퓨터 버스 표준들(computer bus standards)은 S-100 bus, Mbus, Smbus, Q-Bus, ISA, Zorro II, Zorro III, CAMAC, FASTBUS, LPC, EISA, VME, VXI, NuBus, TURBOchannel, MCA, Sbus, VLB, PCI, PXI, HP GSC bus, CoreConnect, InfiniBand, UPA, PCI-X, AGP, PCIe, Intel QuickPath Interconnect, Hyper Transport, 등을 포함한다. 스토리지 버스 표준들(Storage bus standards)은 ST-506, ESDI, SMD, Parallel ATA, DMA, SSA, HIPPI, USB MSC, FireWire(1394), Serial ATA, eSATA, SCSI, Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI, SAS, RapidIO, FCIP, 등을 포함한다. iFCPPeripheral 버스 표준들(iFCPPeripheral bus standards)은 Apple Desktop Bus, HIL, MIDI, Multibus, RS-232, DMX512-A, EIA/RS-422, IEEE-1284, UNI/O, 1-Wire, I2C, SPI, EIA/RS-485, USB, Camera Link, External PCIe, Light Peak, Multidrop Bus, 등을 포함한다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템이 저전력 모드로 동작할 때 복호화 동작을 보여주는 도면이다.
설명의 편의상, 메모리 제어기(1200)는 4개의 채널들(CH0~CH3)을 통해 저장 매체(1100)와 연결된다고 가정하자. 또한, ECC 블록(1211)이 4개의 ECC 엔진들(EN0~EN3)로 구성된다고 가정하자. 하지만, ECC 블록(1211)에 포함된 ECC 엔진들의 수가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, ECC 블록(1211)에 포함된 ECC 엔진들의 수는 채널들의 수보다 적을 수 있다. 또는, ECC 블록(1211)에 포함된 ECC 엔진들의 수는 채널들의 수보다 많을 수 있다.
응용 프로그램/응용 분야에 따라 저전력 동작이 요구되거나 고성능이 요구될 수 있다. 응용 프로그램/응용 분야가 저전력 동작을 요구하는 경우, 메모리 제어기(1200)의 CPU(1240)는 ECC 블록(1211)의 ECC 엔진들(EN0~EN3) 중 일부가 활성화되도록 부호호/복호화 블록(1210)을 제어한다. 예를 들면, 메모리 제어기(1200)의 CPU(1240)는 ECC 블록(1211)의 ECC 엔진들(EN0~EN3) 중 하나(EN0)가 활성화되도록 부호화/복호화 블록(1210)의 레지스터(1214)를 설정한다. 레지스터(1214)가 설정됨에 따라, ECC 엔진(EN0)은 활성화되는 반면에 나머지 ECC 엔진들(EN1~EN3)은 비활성화된다.
상술한 조건 하에서, 채널들(CH0~CH3)을 통해 각각 전달된 데이터(RD0~RD3)는 낸드 인터페이스 유니트들(NIF0~NIF3)을 통해 패킷 발생기(1213a)로 전달된다. 여기서, 데이터(RD0~RD3)는 호스트에 의해서 읽기 요청된 데이터로서 저장 매체(1100)로부터 제공될 것이다. 패킷 발생기(1213a)는 활성화된 ECC 엔진(EN0)의 상태를 참조하여 채널들(CH0~CH3)을 통해 입력된 데이터(RD0~RD3)에 각각 제어 정보를 추가함으로써 패킷 데이터(PD0~PD3)를 생성한다. 여기서, 제어 정보는 데이터가 전송될 피포를 나타내는 목적지 정보와 패킷 데이터가 전송될 ECC 엔진을 나타내는 엔진 선택 정보를 포함한다. 하나의 ECC 엔진(EN0)이 활성화되었기 때문에, 엔진 선택 정보는 ECC 엔진(EN0)을 나타내는 값으로 설정된다.
버스 매트릭스(1213b)는 패킷 데이터(PD0~PD3)에 각각 포함된 제어 정보에 의거하여, 패킷 발생기(1213a)로부터 순차적으로 제공되는 패킷 데이터(PD0~PD3)를 활성화된 ECC 엔진(EN0)으로 전송할 것이다. 버스 매트릭스(1212b)는 복호화된 패킷 데이터(DPD0~DPD3)에 각각 포함된 제어 정보(즉, 목적지 정보)에 의거하여, ECC 엔진(EN0)에 의해서 각각 복호화된 패킷 데이터(DPD0~DPD3)를 패킷 발생기(1212a)로 전송한다. 패킷 발생기(1212a)는 버스 매트릭스(1212b)를 통해 전송된 복호화된 패킷 데이터(DPD0~DPD3)에 포함된 제어 정보를 제거하고, 나머지 복호화된 데이터(DD0~DD3)를 피포들(FIFO0~FIFO3)로 각각 전송한다. 피포들(FIFO0~FIFO3)로 전송된 복호화된 데이터(DD0~DD3)는 버퍼 제어기 및 중재기 블록(1250)을 통해 버퍼 메모리(1270)에 저장될 것이다.
앞서의 설명으로부터 이해되는 바와 같이, 저전력 동작이 요구되는 경우, 모든 채널들(CH0~CH3)이 사용되는 조건 하에서 ECC 엔진들 중 일부(예를 들면, 하나 또는 그 보다 많은 ECC 엔진들)를 활성화시킴으로써 ECC 블록(1211)에 의해서 소모되는 전력을 줄이는 것이 가능하다.
예시적인 실시예에 있어서, 저전력 동작을 위한 레지스터(1214)의 설정은 CPU(1240)의 제어 하에 실시간으로 또는 미리 행해진다.도 6은 본 발명의 일 실시예에 따른 메모리 시스템이 고성능 모드로 동작할 때 복호화 동작을 보여주는 도면이다.
설명의 편의상, 메모리 제어기(1200)는 4개의 채널들(CH0~CH3)을 통해 저장 매체(1100)와 연결된다고 가정하자. 또한, ECC 블록(1211)이 4개의 ECC 엔진들(EN0~EN3)로 구성된다고 가정하자. 하지만, ECC 블록(1211)에 포함된 ECC 엔진들의 수가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, ECC 블록(1211)에 포함된 ECC 엔진들의 수는 채널들의 수보다 적을 수 있다. 또는, ECC 블록(1211)에 포함된 ECC 엔진들의 수는 채널들의 수보다 많을 수 있다.
응용 프로그램/응용 분야에 따라 저전력 동작이 요구되거나 고성능이 요구될 수 있다. 응용 프로그래램/응용 분야가 고성능 동작을 요구하는 경우, 메모리 제어기(1200)의 CPU(1240)는 ECC 블록(1211)의 ECC 엔진들(EN0~EN3) 모두 활성화되도록 부호호/복호화 블록(1210)을 제어한다. 예를 들면, 메모리 제어기(1200)의 CPU(1240)는 ECC 블록(1211)의 ECC 엔진들(EN0~EN3) 모두 활성화되도록 부호화/복호화 블록(1210)의 레지스터(1214)를 설정한다. 레지스터(1214)가 설정됨에 따라, ECC 엔진들(EN0~EN3) 모두 활성화된다.
상술한 조건 하에서, 채널들(CH0~CH3)을 통해 각각 전달된 데이터(RD0~RD3)는 낸드 인터페이스 유니트들(NIF0~NIF3)을 통해 패킷 발생기(1213a)로 전달된다. 패킷 발생기(1213a)는 활성화된 ECC 엔진들(EN0~EN3)의 상태들을 참조하여 채널들(CH0~CH3)을 통해 입력된 데이터에 각각 제어 정보를 추가함으로써 패킷 데이터(PD0~PD3)를 생성한다. 앞서 설명된 바와 같이, 제어 정보는 데이터가 전송될 피포를 나타내는 목적지 정보와 패킷 데이터가 전송될 ECC 엔진을 나타내는 엔진 선택 정보를 포함한다.
도 6에 도시된 바와 같이, 버스 매트릭스(1213b)는 패킷 데이터(PD0~PD3)에 각각 포함된 제어 정보에 의거하여, 패킷 발생기(1213a)로부터 제공되는 패킷 데이터(PD0~PD3)를 대응하는 ECC 엔진들(EN0~EN3)로 각각 전송할 것이다. 버스 매트릭스(1212b)는 복호화된 패킷 데이터(DPD0~DPD3)에 각각 포함된 제어 정보(즉, 목적지 정보)에 의거하여, ECC 엔진들(EN0~EN3)에 의해서 각각 복호화된 패킷 데이터(DPD0~DPD3)를 패킷 발생기(1212a)로 각각 전송한다. 패킷 발생기(1212a)는 버스 매트릭스(1212b)를 통해 전송된 복호화된 패킷 데이터(DPD0~DPD3)에 포함된 제어 정보를 제거하고, 나머지 복호화된 데이터(DD0~DD3)를 피포들(FIFO0~FIFO3)로 각각 전송한다. 피포들(FIFO0~FIFO3)로 전송된 복호화된 데이터(DD0~DD3)는 버퍼 제어기 및 중재기 블록(1250)을 통해 버퍼 메모리(1270)에 저장될 것이다.
앞서의 설명으로부터 이해되는 바와 같이, 고성능 동작이 요구되는 경우, 모든 채널들(CH0~CH3)이 사용되는 조건 하에서 ECC 엔진들(EN0~EN3) 모두 활성화시킴으로써 호스트에 의해서 읽기 요청된 데이터를 빠르게 처리하는 것이 가능하다.
도 6에 도시된 바와 같이, 데이터(RD0~RD3)에 이어서 채널들(CH0~CH2)을 통해 데이터(RD4~RD6)가 연속적으로 전송된다고 가정하자. ECC 엔진들(EN1~EN3)에 의해서 행해지는 패킷 데이터(PD1~PD3)의 복호화 동작들이 완료되고 ECC 엔진(EN0)에 의해서 행해지는 패킷 데이터(PD0)의 복호화 동작이 완료되지 않은 경우가 발생할 수 있다. 이러한 경우, 채널들(CH0~CH2)을 통해 전송된 데이터(RD4~RD6)는 패킷 발생기(1213b)를 통해 대기 상태에 있는 활성화된 ECC 엔진들(EN1~EN3)로 배분될 것이다. 다시 말해서, 채널들(CH0~CHi) 중 특정 채널을 통해 데이터가 계속해서 전송되는 경우, 특정 채널을 통해 전송되는 데이터는 하나의 ECC 엔진을 통해 복호화되는 것이 아니라, 대기 상태에 있는 ECC 엔진(들)으로 배분될 것이다. 이러한 방식은, 예를 들면, 4KB 단위로 행해지는 랜덤 읽기 동작에 적용될 수 있다. 4KB-데이터는 복호화 스케쥴러(1213)를 통해 1KB 단위로 ECC 엔진들(EN0~EN3)에 각각 배분될 것이다. 특정 채널에 집중되는 데이터의 복호화 동작을 분산함으로써 랜덤 읽기 동작의 성능이 향상될 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템이 피크 전력 관리 모드로 동작할 때 부호화 동작을 보여주는 도면이다.
설명의 편의상, 메모리 제어기(1200)는 4개의 채널들(CH0~CH3)을 통해 저장 매체(1100)와 연결된다고 가정하자. 또한, ECC 블록(1211)이 4개의 ECC 엔진들(EN0~EN3)로 구성된다고 가정하자. 하지만, ECC 블록(1211)에 포함된 ECC 엔진들의 수가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, ECC 블록(1211)에 포함된 ECC 엔진들의 수는 채널들의 수보다 적을 수 있다.
피크 전력의 관리가 요구되는 경우, 메모리 제어기(1200)의 CPU(1240)는 ECC 블록(1211)의 ECC 엔진들(EN0~EN3) 중 일부가 활성화되도록 부호호/복호화 블록(1210)을 제어한다. 예를 들면, 메모리 제어기(1200)의 CPU(1240)는 ECC 블록(1211)의 ECC 엔진들(EN0~EN3) 중 하나(EN1)가 활성화되도록 부호화/복호화 블록(1210)의 레지스터(1214)를 설정한다. 레지스터(1214)가 설정됨에 따라, ECC 엔진(EN1)은 활성화되는 반면에 나머지 ECC 엔진들(EN0, EN2, EN3)은 비활성화된다.
상술한 조건 하에서, 버퍼 제어 및 중재기 블록(1250)을 통해 버퍼 메모리(1270)로부터 제공되는 쓰기 데이터(WD0~WD3)는 피포들(FIFO0~FIFO3)을 통해 패킷 발생기(1212a)로 전달된다. 패킷 발생기(1212a)는 활성화된 ECC 엔진(EN1)의 상태를 참조하여 피포들(FIFO0~FIFO3)을 통해 입력된 데이터에 각각 제어 정보를 추가함으로써 패킷 데이터(PWD0~PWD3)를 생성한다. 여기서, 제어 정보는 데이터가 전송될 채널을 나타내는 목적지 정보와 패킷 데이터가 전송될 ECC 엔진을 나타내는 엔진 선택 정보를 포함한다. 하나의 ECC 엔진(EN1)이 활성화되었기 때문에, 엔진 선택 정보는 ECC 엔진(EN1)을 나타내는 값으로 설정된다.
버스 매트릭스(1212b)는 패킷 데이터(PWD0~PWD3)에 각각 포함된 제어 정보에 의거하여, 패킷 발생기(1212a)로부터 제공되는 패킷 데이터(PWD0~PWD3)를 활성화된 ECC 엔진(EN1)으로 순차적으로 전송할 것이다. 버스 매트릭스(1213b)는 부호화된 패킷 데이터(EPWD0~EPWD3)에 각각 포함된 제어 정보(즉, 목적지 정보)에 의거하여, ECC 엔진(EN1)에 의해서 각각 부호화된 패킷 데이터(EPWD0~EPWD3)를 패킷 발생기(1213a)로 전송한다. 패킷 발생기(1213a)는 버스 매트릭스(1213b)를 통해 전송된 부호화된 패킷 데이터(EPWD0~EPWD3)에 포함된 제어 정보를 제거하고, 나머지 부호화된 데이터(EWD0~EWD3)를 낸드 인터페이스 유니트들(NIF0~NIF3)을 통해 대응하는 채널들(CH0~CH3)로 각각 전송한다. 채널들(CH0~CH3)로 전송된 부호화된 데이터(EWD0~EWD3)는 저장 매체(1100)에 저장될 것이다.
하나의 ECC 엔진이 초당 400메가바이트의 데이터를 처리한다고 가정하자. 이러한 가정에 따르면, 4개의 ECC 엔진들 모두 활성화되면, ECC 블록(1211)은 초당 1.6기가바이트의 데이터를 처리한다. 피크 전력의 관리가 요구되는 경우, ECC 블록(1211)의 처리량이 1/4로 감소되도록 ECC 엔진들(EN0~EN3) 중 하나만이 활성화된다. 이러한 경우, 피크 전력은 1/4로 줄어든다. 앞서의 설명으로부터 이해되는 바와 같이, 모든 채널들(CH0~CH3)이 사용되는 조건 하에서 ECC 엔진들 중 일부(예를 들면, 하나)를 활성화시킴으로써 메모리 시스템(1000)의 피크 전력을 줄이는 것이 가능하다.
부호화/복호화 블록(1210)의 신호 처리 수준이 레지스터(1214)에 설정된 값에 따라 결정되는 예가 도 2 내지 도 8을 참조하여 설명되었다. 하지만, 본 발명이 그러한 예들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 부호화/복호화 블록(1210)의 레지스터(1210)는 제거될 수 있다. 이러한 경우, 입력되는 데이터의 상태 정보(예를 들면, 에러 수준, PE 사이클 수준, 등을 나타내는 정보)를 이용하여 신호 처리 수준이 조정될 수 있다. 다른 예로서, 부호화/복호화 블록(1210)의 레지스터(1210)와 함께 데이터의 상태 정보를 이용하여 신호 처리 수준을 조정하는 것이 가능하다. 이러한 경우, 부호화/복호화 블록(1210)의 디폴트 신호 처리 수준은 레지스터(1210)의 값에 의해서 결정되고, 입력 데이터의 상태 정보에 따라 디폴트 신호 처리 수준이 조정될 수 있다.
도 8은 본 발명의 다른 실시예에 따른 부호화/복호화 블록을 개략적으로 보여주는 블록도이다.
도 8을 참조하면, 부호화/복호화 블록(1210a)은 제 1 신호 처리 블록으로서 제 1 ECC 블록(1211a), 제 2 신호 처리 블록으로서 제 2 ECC 블록(1211b), 부호화 스케쥴러(1212a), 복호화 스케쥴러(1213a), 그리고 레지스터(1214a)를 포함한다. 제 1 ECC 블록(1211a)의 에러 정정 코드 알고리즘은 제 2 ECC 블록(1211b)의 에러 정정 코드 알고리즘과 다르다. 예를 들면, 제 1 ECC 블록(1211a)은 BCH 방식으로 동작하는 ECC 엔진들(또는, 신호 처리 엔진들)(ECC1)로 구성되고, 제 2 ECC 블록(1211b)은 LDPC 방식으로 동작하는 ECC 엔진들(또는, 신호 처리 엔진들) (ECC2)로 구성된다. 하지만, 본 발명이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 제 1 ECC 블록(1211a)과 제 2 ECC 블록(1211b) 중 어느 하나는 CPU(1240)에 의해서 설정된 레지스터(1214a)의 값에 따라 선택된다. 예를 들면, CPU(1240)은 에러율을 기준으로 레지스터(1214a)의 값을 결정한다. 에러율이 기준값 이하일 때, CPU(11240)는 제 1 ECC 블록(1211a)이 선택되도록 레지스터(1214a)의 값을 결정한다. 에러율이 기준값 이상일 때, CPU(11240)는 제 2 ECC 블록(1211b)이 선택되도록 레지스터(1214a)의 값을 결정한다. 선택된 ECC 블록의 ECC 엔진들을 통해 데이터 부호화 및 복호화 동작들이 수행될 것이다.
선택된 ECC 블록을 통해 행해지는 부호화 및 복호화 동작들은 부호화 스케쥴러(1212a) 및 복호화 스케쥴러(1213a)에 의해서 제어된다. 이는 도 5 내지 도 7에서 설명된 것과 실질적으로 동일하게 행해지며, 부호화/복호화 블록(1210a)의 부호화 및 복호화 동작들에 대한 설명은 그러므로 생략될 것이다.
도 9a는 본 발명의 다른 실시예에 따른 부호화/복호화 블록을 보여주는 블록도이다.
도 9a를 참조하면, 본 발명의 부호화/복호화 블록(1210a)은 신호 처리 블록으로서 압축 블록(1211a), 부호화 스케쥴러(1212a), 복호화 스케쥴러(1213a), 그리고 레지스터(1214a)를 포함한다. 압축 블록(1211a)은 신호 처리 엔진으로서 복수의 압축 엔진들(EN0a~ENja)을 포함한다. 압축 엔진들(EN0a~ENja)의 수는 채널들(CH0~CHi)의 수보다 많거나 적거나 또는 그것과 같을 수 있다.
압축 엔진들(EN0a~ENja)의 활성화 및 비활성화는 레지스터(1214a)에 저장되는 값에 따라 결정될 것이다. 레지스터(1214a)의 값은 메모리 제어기(1100a)의 동작 조건들을 고려하여 결정될 것이다. 압축 엔진들(EN0a~ENja) 모두 또는 일부가 레지스터(1214a)에 저장된 값에 따라 활성화될 것이다. 다른 예로서, 앞서 설명된 바와 같이, 레지스터(1214a) 없이 (또는, 레지스터(1214a)의 값에 무관하게) 입력되는 데이터의 상태 정보에 따라 압축 엔진들(EN0a~ENja)의 활성화 및 비활성화가 결정될 수 있다.
부호화 스케쥴러(1212a)는 부호화될 데이터를 입력받고, 압축 블록(1210a)의 활성화된 압축 엔진들의 상태들을 고려하여 대기 상태를 갖는 압축 엔진들 중 하나 또는 그 보다 많은 압축 엔진들을 선택하고, 선택된 압축 엔진으로 부호화될 데이터를 제공할 것이다. 복호화 스케쥴러(1213a)는 복호화될 데이터를 입력받고, 압축 블록(1210a)의 활성화된 압축 엔진들의 상태들을 고려하여 대기 상태를 갖는 압축 엔진들 중 하나 또는 그 보다 많은 압축 엔진들을 선택하고, 선택된 압축 엔진으로 복호화될 데이터를 제공할 것이다. 압축 엔진들(EN0a~ENja) 각각은 복호화 스케쥴러(1213a)를 통해 채널들(CH0~CHi)에 각각 연결될 수 있다. 하나의 압축 엔진은 채널들(CH0~CHi) 모두 또는 일부로부터 전송되는 데이터를 복호화하거나, 채널들(CH0~CHi) 모두 또는 일부로 전송될 데이터를 부호화할 수 있다. 다시 말해서, 하나의 채널을 통해 전송된 데이터는 활성화된 압축 엔진들 중 하나 또는 그 보다 많은 압축 엔진들을 통해 복호화될 수 있다. 마찬가지로, 저장 매체(1100)로 전송될 데이터는 활성화된 압축 엔진들 중 하나 또는 그 보다 많은 압축 엔진들을 통해 부호화될 수 있다.
본 발명의 부호화/복호화 블록(1210a)에 따르면, 복호화 및 부호화에 참여할 압축 엔진들의 수는 동작 조건들에 따라 실시간으로 또는 미리 조절될 것이다. 또한, 데이터의 부호화/복호화는 동작 조건들에 따라 활성화된 압축 엔진들의 상태들을 고려하여, 선택된 압축 엔진(들)(대기 상태를 가짐)에 의해서 행해진다.
도 9b는 본 발명의 또 다른 실시예에 따른 부호화/복호화 블록을 보여주는 블록도이다.
도 9b를 참조하면, 본 발명의 부호화/복호화 블록(1210b)은 신호 처리 블록으로서 암호화 블록(1211b), 부호화 스케쥴러(1212b), 복호화 스케쥴러(1213b), 그리고 레지스터(1214b)를 포함한다. 암호화 블록(1211b)은 신호 처리 엔진으로서 복수의 암호화 엔진들(EN0b~ENjb)을 포함한다. 암호화 엔진들(EN0b~ENjb)의 수는 채널들(CH0~CHi)의 수보다 많거나 적거나 또는 그것과 같을 수 있다.
암호화 엔진들(EN0b~ENjb)의 활성화 및 비활성화는 레지스터(1214b)에 저장되는 값에 따라 결정될 것이다. 레지스터(1214b)의 값은 메모리 제어기(1100)의 동작 조건들을 고려하여 결정될 것이다. 암호화 엔진들(EN0b~ENjb) 모두 또는 일부가 레지스터(1214b)에 저장된 값에 따라 활성화될 것이다. 다른 예로서, 앞서 설명된 바와 같이, 레지스터(1214b) 없이 (또는, 레지스터(1214b)의 값과 함께) 입력되는 데이터의 상태 정보에 따라 암호화 엔진들(EN0b~ENjb)의 활성화 및 비활성화가 결정될 수 있다.
부호화 스케쥴러(1212b)는 부호화될 데이터를 입력받고, 암호화 블록(1210b)의 활성화된 암호화 엔진들의 상태들을 고려하여 대기 상태를 갖는 암호화 엔진들 중 하나 또는 그 보다 많은 암호화 엔진들을 선택하고, 선택된 암호화 엔진으로 부호화될 데이터를 제공할 것이다. 복호화 스케쥴러(1213b)는 복호화될 데이터를 입력받고, 암호화 블록(1210b)의 활성화된 압축 엔진들의 상태들을 고려하여 대기 상태를 갖는 암호화 엔진들 중 하나 또는 그 보다 많은 암호화 엔진들을 선택하고, 선택된 암호화 엔진으로 복호화될 데이터를 제공할 것이다. 암호화 엔진들(EN0b~ENjb) 각각은 복호화 스케쥴러(1213b)를 통해 채널들(CH0~CHi)에 각각 연결될 수 있다. 하나의 암호화 엔진은 채널들(CH0~CHi) 모두 또는 일부로부터 전송되는 데이터를 복호화하거나, 채널들(CH0~CHi) 모두 또는 일부로 전송될 데이터를 부호화할 수 있다. 다시 말해서, 하나의 채널을 통해 전송된 데이터는 활성화된 암호화 엔진들 중 하나 또는 그 보다 많은 암호화 엔진들을 통해 복호화될 수 있다. 마찬가지로, 저장 매체(1100)로 전송될 데이터는 활성화된 암호화 엔진들 중 하나 또는 그 보다 많은 암호화 엔진들을 통해 부호화될 수 있다.
본 발명의 부호화/복호화 블록(1210b)에 따르면, 복호화 및 부호화에 참여할 암호화 엔진들의 수는 동작 조건들에 따라 실시간으로 또는 미리 조절될 것이다. 또한, 데이터의 부호화/복호화는 동작 조건들에 따라 활성화된 암호화 엔진들의 상태들을 고려하여, 선택된 암호화 엔진(들)(대기 상태를 가짐)에 의해서 행해진다.
도 9c는 본 발명의 또 다른 실시예에 따른 부호화/복호화 블록을 보여주는 블록도이다.
도 9c를 참조하면, 본 발명의 부호화/복호화 블록(1210c)은 신호 처리 블록으로서 해쉬 키 생성 블록(1211c), 부호화 스케쥴러(1212c), 복호화 스케쥴러(1213c), 그리고 레지스터(1214c)를 포함한다. 해쉬 키 생성 블록(1211c)은 신호 처리 엔진으로서 복수의 해쉬 키 엔진들(EN0c~ENjc)을 포함한다. 해쉬 키 엔진들(EN0c~ENjc)의 수는 채널들(CH0~CHi)의 수보다 많거나 적거나 또는 그것과 같을 수 있다.
해쉬 키 엔진들(EN0c~ENjc)의 활성화 및 비활성화는 레지스터(1214c)에 저장되는 값에 따라 결정될 것이다. 레지스터(1214c)의 값은 메모리 제어기(1100)의 동작 조건들을 고려하여 결정될 것이다. 해쉬 키 엔진들(EN0c~ENjc) 모두 또는 일부가 레지스터(1214c)에 저장된 값에 따라 활성화될 것이다. 다른 예로서, 앞서 설명된 바와 같이, 레지스터(1214c) 없이 (또는, 레지스터(1214c)의 값과 함께) 입력되는 데이터의 상태 정보에 따라 해쉬 키 엔진들(EN0c~ENjc)의 활성화 및 비활성화가 결정될 수 있다.
부호화 스케쥴러(1212c)는 부호화될 데이터를 입력받고, 해쉬 키 생성 블록(1211c)의 활성화된 해쉬 키 엔진들의 상태들을 고려하여 대기 상태를 갖는 해쉬 키 엔진들 중 하나 또는 그 보다 많은 해쉬 키 엔진들을 선택하고, 선택된 해쉬 키 엔진으로 부호화될 데이터를 제공할 것이다. 복호화 스케쥴러(1213c)는 복호화될 데이터를 입력받고, 해쉬 키 생성 블록(1210c)의 활성화된 해쉬 키 엔진들의 상태들을 고려하여 대기 상태를 갖는 해쉬 키 엔진들 중 하나 또는 그 보다 많은 해쉬 키 엔진들을 선택하고, 선택된 해쉬 키 엔진으로 복호화될 데이터를 제공할 것이다. 해쉬 키 엔진들(EN0c~ENjc) 각각은 복호화 스케쥴러(1213c)를 통해 채널들(CH0~CHi)에 각각 연결될 수 있다. 하나의 해쉬 키 엔진은 채널들(CH0~CHi) 모두 또는 일부로부터 전송되는 데이터를 복호화하거나, 채널들(CH0~CHi) 모두 또는 일부로 전송될 데이터를 부호화할 수 있다. 다시 말해서, 하나의 채널을 통해 전송된 데이터는 활성화된 해쉬 키 엔진들 중 하나 또는 그 보다 많은 해쉬 키 엔진들을 통해 복호화될 수 있다.
본 발명의 부호화/복호화 블록(1210c)에 따르면, 복호화 및 부호화에 참여할 해쉬 키 엔진들의 수는 동작 조건들에 따라 실시간으로 또는 미리 조절될 것이다. 또한, 데이터의 부호화/복호화는 동작 조건들에 따라 활성화된 해쉬 키 엔진들의 상태들을 고려하여, 선택된 해쉬 키 엔진(들)(대기 상태를 가짐)에 의해서 행해진다.
도 2 내지 도 9c에 있어서, 신호 처리 엔진으로서 ECC 엔진, 압축 엔진, 암호화 엔진, 해쉬 키 엔진을 이용하여 실시예들이 설명되었다. 하지만, 본 발명이 다른 기능 엔진들에도 적용될 수 있음은 잘 이해될 것이다.
도 10는 본 발명의 실시예에 따른 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다. 컴퓨팅 시스템은 처리 유니트(2101), 사용자 인터페이스(2202), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(2303), 메모리 제어기(2404), 그리고 저장 매체(2505)를 포함한다.
메모리 제어기(2404)는 도 1에 도시된 것과 실질적으로 동일하게 구성될 것이다. 즉, 메모리 제어기(2404)는 ECC 엔진들의 상태들을 고려하여, 선택된 ECC 엔진에 의해서 데이터가 부호화/복호화되도록 구성된다. 본 발명의 부호화/복호화 방식은 메모리 제어기(2404)의 전력 및 성능의 조정(tuning)을 가능하게 한다. 또한, 본 발명의 부호화/복호화 방식은 에러 정정 효율이 향상되게 한다.
저장 매체(2505)에는 처리 유니트(2101)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 제어기(2404)를 통해 저장될 것이다. 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(2606)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 잘 이해될 것이다.
도 11은 본 발명의 실시예에 따른 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 11을 참조하면, 반도체 드라이브(4000)(SSD)는 저장 매체(4100)와 제어기(4200)를 포함할 것이다. 저장 매체(4100)는 복수의 채널들(CH0~CHn-1)을 통해 제어기(4200)와 연결될 것이다. 각 채널에는 복수의 불 휘발성 메모리들이 공통으로 연결될 것이다. 제어기(4200)는 도 1에 도시된 것과 실질적으로 동일하게 구성될 것이다. 즉, 제어기(4200)는 ECC 엔진들의 상태들을 고려하여, 선택된 ECC 엔진에 의해서 데이터가 부호화/복호화되도록 구성된다. 본 발명의 부호화/복호화 방식은 제어기(4200)의 전력 및 성능의 조정(tuning)을 가능하게 한다. 또한, 본 발명의 부호화/복호화 방식은 에러 정정 효율이 향상되게 한다.
도 12은 도 11에 도시된 반도체 드라이브를 이용한 스토리지를 개략적으로 보여주는 블록도이고, 도 13는 도 11에 도시된 반도체 드라이브를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
본 발명의 실시예에 따른 반도체 드라이브(4000)는 스토리지를 구성하는 데 사용될 수 있다. 도 12에 도시된 바와 같이, 스토리지는 도 11에서 설명된 것과 실질적으로 동일하게 구성되는 복수의 반도체 드라이브들을 포함할 것이다. 본 발명의 실시예에 따른 반도체 드라이브(4000)는 스토리지 서버를 구성하는 데 사용될 수 있다. 도 13에 도시된 바와 같이, 스토리지 서버는 도 11에서 설명된 것과 실질적으로 동일하게 구성되는 복수의 반도체 드라이브들(4000), 그리고 서버(4000A)를 포함할 것이다. 또한, 이 분야에 잘 알려진 RAID 제어기(4000B)가 스토리지 서버에 제공될 수 있음은 잘 이해될 것이다.
도 14은 본 발명의 실시예에 따른 반도체 드라이브가 적용되는 시스템을 개략적으로 보여주는 도면이다.
도 14에 도시된 바와 같이, 본 발명의 실시예에 따른 반도체 드라이브는 메일 서버(8100)에도 적용될 수 있다.
도 15는 본 발명의 실시예에 따른 메모리 카드(memory card)를 개략적으로 보여주는 블록도이다.
메모리 카드는 예를 들어, MMC 카드, SD카드, 멀티유즈(multiuse) 카드, 마이크로 SD카드, 메모리 스틱, 컴팩트 SD 카드, ID 카드, PCMCIA 카드, SSD카드, 칩카드(chipcard), 스마트카드(smartcard), USB카드 등일 수 있다.
도 15를 참조하면, 메모리 카드는 외부와의 인터페이스를 수행하는 인터페이스부(9221), 버퍼 메모리를 갖고 메모리 카드의 동작을 제어하는 제어기(9222), 하나 또는 그 보다 많은 불 휘발성 메모리 장치들(9207)을 포함할 것이다. 제어기(9222)는 프로세서로서, 불 휘발성 메모리 장치(9207)의 라이트 동작 및 리드 동작을 제어할 수 있다. 구체적으로, 제어기(9222)는 데이터 버스(DATA)와 어드레스 버스(ADDRESS)를 통해서 불 휘발성 메모리 장치(9207) 및 인터페이스부(9221)와 커플링되어 있다.
제어기(9222)는 도 1에 도시된 것과 실질적으로 동일하게 구성될 것이다. 즉, 제어기(9222)는 ECC 엔진들의 상태들을 고려하여, 선택된 ECC 엔진에 의해서 데이터가 부호화/복호화되도록 구성된다. 본 발명의 부호화/복호화 방식은 제어기(9222)의 전력 및 성능의 조정(tuning)을 가능하게 한다. 또한, 본 발명의 부호화/복호화 방식은 에러 정정 효율이 향상되게 한다.
도 16는 본 발명의 실시예에 따른 디지털 스틸 카메라(digital still camera)를 개략적으로 보여주는 블록도이다.
도 16를 참조하면, 디지털 스틸 카메라는 바디(9301), 슬롯(9302), 렌즈(9303), 디스플레이부(9308), 셔터 버튼(9312), 스트로브(strobe)(9318) 등을 포함한다. 특히, 슬롯(9308)에는 메모리 카드(9331)가 삽입될 수 있고, 메모리 카드(9331)는 도 1에서 설명된 메모리 제어기 및 저장 매체를 포함할 것이다. 제어기는 ECC 엔진들의 상태들을 고려하여, 선택된 ECC 엔진에 의해서 데이터가 부호화/복호화되도록 구성된다. 본 발명의 부호화/복호화 방식은 제어기의 전력 및 성능의 조정(tuning)을 가능하게 한다. 또한, 본 발명의 부호화/복호화 방식은 에러 정정 효율이 향상되게 한다.
메모리 카드(9331)가 접촉형(contact type)인 경우, 메모리 카드(9331)가 슬롯(9308)에 삽입될 때 메모리 카드(9331)와 회로 기판 상의 특정 전기 회로가 전기적으로 접촉하게 된다. 메모리 카드(9331)가 비접촉형(non-contact type)인 경우, 무선 신호를 통해서 메모리 카드(9331)가 액세스될 것이다.
도 17은 도 15의 메모리 카드가 사용되는 다양한 응용 분야들을 보여주는 도면이다.
도 17을 참조하면, 메모리 카드(9331)는 비디오 카메라(VC), 텔레비전(TV), 오디오 장치(AD), 게임장치(GM), 전자 음악 장치(EMD), 휴대폰(HP), 컴퓨터(CP), PDA(Personal Digital Assistant), 보이스 레코더(voice recorder)(VR), PC 카드(PCC), 등에 사용될 수 있다.
본 발명의 실시예에 있어서, 메모리 셀들은 가변 저항 메모리 셀로 구성될 수 있으며, 예시적인 가변 저항 메모리 셀 및 그것을 포함한 메모리 장치가 미국특허번호 제7529124호에 게재되어 있으며, 이 출원의 레퍼런스로 포함될 것이다.
본 발명의 다른 실시예에 있어서, 메모리 셀들은 전하 저장층을 갖는 다양한 셀 구조들 중 하나를 이용하여 구현될 수 있다. 전하 저장층을 갖는 셀 구조는 전하 트랩층을 이용하는 전하 트랩 플래시 구조, 어레이들이 다층으로 적층되는 스택 플래시 구조, 소오스-드레인이 없는 플래시 구조, 핀-타입 플래시 구조, 등을 포함할 것이다.
전하 저장층으로서 전하 트랩 플래시 구조를 갖는 메모리 장치가 미국특허 제6858906호, 미국공개특허 제2004-0169238호, 그리고 미국공개특허 제2006-0180851호에 각각 게재되어 있으며, 이 출원의 레퍼런스로 포함될 것이다. 소오스/드레인이 없는 플래시 구조는 대한민국특허 제673020호에 게재되어 있으며, 이 출원의 레퍼런스로 포함될 것이다.
본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 제어기는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
1000: 메모리 시스템
1100: 저장 매체
1200: 메모리 제어기
1211: ECC 블록
1212: 부호화 스케쥴러
1213: 복호화 스케쥴러
1214: 레지스터
1212a, 1213a: 패킷 발생기
1212b, 1213b: 버스 매트릭스
1220: 호스트 인터페이스
1230: 메모리 인터페이스
1240: 중앙 처리 장치
1250: 버스 제어 및 중재기 블록
1260: 피포 블록
1270: 버퍼 메모리

Claims (20)

  1. 복수의 채널을 통해 저장 매체에 연결되는 메모리 제어기에 있어서:
    복수의 신호 처리 엔진을 포함하는 신호 처리 블록;
    상기 복수의 신호 처리 엔진 중 적어도 하나의 활성화된 신호 처리 엔진이 상기 복수의 채널에 연결되도록, 상기 메모리 제어기의 동작 조건에 기초하여 데이터 경로를 제어하는 복호화 스케쥴러;
    상기 복수의 채널로 전송될 데이터를 임시 저장하는 복수의 피포(FIFO); 및
    상기 복수의 피포로부터 각각 출력되는 데이터를 포함하는 제 1 패킷 데이터에 포함되는 제어 정보에 기초하여, 상기 제 1 패킷 데이터를 상기 적어도 하나의 활성화된 신호 처리 엔진으로 순차적으로 전송하는 제 1 버스 매트릭스를 포함하는 메모리 제어기.
  2. 제 1 항에 있어서,
    상기 동작 조건을 판별하는 중앙 처리 장치; 및
    상기 중앙 처리 장치의 판별 결과에 따라 결정되는 상기 복수의 신호 처리 엔진의 활성화 정보를 저장하는 레지스터를 더 포함하는 메모리 제어기.
  3. 제 2 항에 있어서,
    상기 복수의 신호 처리 엔진의 전부 또는 일부는 상기 활성화 정보에 기초하여 활성화되는 메모리 제어기.
  4. 제 1 항에 있어서,
    상기 복수의 피포의 데이터가 상기 복수의 신호 처리 엔진 중 상기 적어도 하나의 활성화된 신호 처리 엔진으로 전송되도록 데이터 경로를 제어하는 부호화 스케쥴러를 더 포함하는 메모리 제어기.
  5. 제 4 항에 있어서,
    상기 부호화 스케쥴러는:
    상기 적어도 하나의 활성화된 신호 처리 엔진의 상태에 기초하여, 상기 복수의 피포로부터 출력되는 데이터에 상기 제어 정보를 추가함으로써 상기 제 1 패킷 데이터를 생성하는 제 1 패킷 발생기; 및
    상기 제 1 버스 매트릭스를 포함하는 메모리 제어기.
  6. 제 5 항에 있어서,
    상기 복호화 스케쥴러는:
    상기 적어도 하나의 활성화된 신호 처리 엔진의 상태에 기초하여, 상기 복수의 채널로부터 출력되는 데이터에 제어 정보를 추가함으로써 상기 복수의 채널에 각각 대응하는 제 2 패킷 데이터를 생성하는 제 2 패킷 발생기; 및
    상기 제 2 패킷 데이터에 포함되는 상기 제어 정보에 기초하여, 상기 제 2 패킷 데이터를 상기 적어도 하나의 활성화된 신호 처리 엔진으로 순차적으로 전송하는 제 2 버스 매트릭스를 포함하는 메모리 제어기.
  7. 제 6 항에 있어서,
    상기 메모리 제어기의 상기 동작 조건을 판별하는 중앙 처리 장치; 및
    상기 중앙 처리 장치의 판별 결과에 따라 결정되는 상기 복수의 신호 처리 엔진의 활성화 정보를 저장하는 레지스터를 더 포함하되,
    상기 판별된 동작 조건이 고성능과 관련되는 경우, 상기 중앙 처리 장치는 상기 복수의 신호 처리 엔진 전부가 활성화되도록 상기 레지스터의 값을 결정하는 메모리 제어기.
  8. 제 7 항에 있어서,
    상기 부호화 스케쥴러는 상기 복수의 신호 처리 엔진의 활성화된 신호 처리 엔진들 중에서 부호화 동작을 수행하는 신호 처리 엔진을 제외한 나머지 신호 처리 엔진들로 데이터가 배분되도록 상기 제 1 패킷 데이터를 생성하는 메모리 제어기.
  9. 제 7 항에 있어서,
    상기 복호화 스케쥴러는 상기 복수의 신호 처리 엔진의 활성화된 신호 처리 엔진들 중에서 복호화 동작을 수행하는 신호 처리 엔진을 제외한 나머지 신호 처리 엔진들로 데이터가 배분되도록 상기 제 2 패킷 데이터를 생성하는 메모리 제어기.
  10. 제 7 항에 있어서,
    상기 복호화 스케쥴러는 상기 복수의 채널 중 하나를 통해 전송되는 데이터가 상기 복수의 신호 처리 엔진의 활성화된 신호 처리 엔진들로 배분되도록 상기 제 2 패킷 데이터를 생성하는 메모리 제어기.
  11. 제 7 항에 있어서,
    상기 부호화 스케쥴러는 상기 복수의 피포 중 하나로부터 출력되는 데이터가 상기 복수의 신호 처리 엔진의 활성화된 신호 처리 엔진들로 배분되도록 상기 제 1 패킷 데이터를 생성하는 메모리 제어기.
  12. 제 7 항에 있어서,
    상기 복수의 신호 처리 엔진은 에러 정정 코드 엔진들, 압축 엔진들, 암호화 엔진들, 또는 해쉬 키 엔진들인 메모리 제어기.
  13. 제 1 항에 있어서,
    상기 복수의 신호 처리 엔진의 수는 상기 복수의 채널의 수와 같거나 상기 복수의 채널의 수보다 적은 메모리 제어기.
  14. 제 1 항에 있어서,
    상기 복수의 신호 처리 엔진은 동일한 에러 정정 코드 알고리즘에 따라 동작하는 메모리 제어기.
  15. 저장 매체; 및
    복수의 채널을 통해 상기 저장 매체로 연결되는 메모리 제어기를 포함하되,
    상기 메모리 제어기는:
    복수의 제 1 신호 처리 엔진;
    상기 복수의 채널로 전송될 데이터를 임시 저장하는 복수의 피포(FIFO);
    상기 복수의 피포로부터 각각 출력되는 데이터를 포함하는 패킷 데이터에 포함되는 제어 정보에 기초하여, 상기 패킷 데이터를 상기 복수의 제 1 신호 처리 엔진 중 적어도 하나의 활성화된 신호 처리 엔진으로 순차적으로 전송하는 버스 매트릭스; 및
    상기 복수의 채널을 이용하는 메모리 동작이 수행되는 경우에 상기 복수의 제 1 신호 처리 엔진을 상기 복수의 채널로 연결하는 부호화/복호화 블록을 포함하는 메모리 시스템.
  16. 제 15 항에 있어서,
    상기 메모리 제어기의 동작 조건을 판별하는 중앙 처리 장치; 및
    상기 중앙 처리 장치의 판별 결과에 따라 결정되는 상기 복수의 신호 처리 엔진의 활성화 정보를 저장하는 레지스터를 더 포함하되,
    상기 활성화 정보에 기초하여, 상기 적어도 하나의 활성화된 신호 처리 엔진이 상기 복수의 채널로 연결되도록 데이터 경로가 제어되는 메모리 시스템.
  17. 제 15 항에 있어서,
    상기 부호화/복호화 블록은 복수의 제 2 신호 처리 엔진을 포함하고,
    상기 복수의 제 2 신호 처리 엔진은 상기 복수의 제 1 신호 처리 엔진이 사용되지 않는 경우에 활성화되고,
    상기 복수의 제 2 신호 처리 엔진의 활성화는 에러율에 따라 결정되는 메모리 시스템.
  18. 복수의 채널을 통해 저장 매체로 연결되는 메모리 제어기를 동작시키는 방법에 있어서,
    입력 신호를 수신하는 단계; 및
    상기 메모리 제어기의 동작 조건에 따라 결정되는 상기 입력 신호의 신호 처리 수준에 기초하여, 상기 메모리 제어기에 의해 상기 입력 신호를 처리하는 단계를 포함하되,
    상기 메모리 제어기는 복수의 신호 처리 엔진을 포함하고,
    상기 복수의 신호 처리 엔진은 하나 이상의 활성화된 신호 처리 엔진 및 하나 이상의 활성화되지 않은 신호 처리 엔진을 포함하되, 상기 하나 이상의 활성화된 신호 처리 엔진의 수는 상기 신호 처리 수준에 대응하고,
    상기 입력 신호를 처리하는 단계는:
    상기 복수의 신호 처리 엔진의 상태들에 기반하는 제어 정보를 상기 입력 신호에 추가함으로써 패킷 데이터를 생성하는 단계;
    상기 패킷 데이터에 포함되는 상기 제어 정보에 기초하여, 상기 패킷 데이터를 상기 하나 이상의 활성화된 신호 처리 엔진으로 전송하는 단계; 및
    상기 하나 이상의 활성화된 신호 처리 엔진에 의해 상기 패킷 데이터를 처리하는 단계를 포함하는 방법.
  19. 복수의 채널을 통해 저장 매체에 연결되는 메모리 제어기에 있어서:
    복수의 신호 처리 엔진을 포함하는 신호 처리 블록;
    상기 복수의 채널을 통해 데이터가 상기 복수의 신호 처리 엔진 중 상기 메모리 제어기의 동작 조건에 기초하여 결정된 개수의 신호 처리 엔진들로 전송되게 하는 스케쥴러;
    상기 복수의 채널로 전송될 데이터를 임시 저장하는 복수의 피포(FIFO); 및
    상기 복수의 피포로부터 각각 출력되는 데이터를 포함하는 패킷 데이터에 포함되는 제어 정보에 기초하여, 상기 패킷 데이터를 상기 결정된 개수의 신호 처리 엔진들로 순차적으로 전송하는 버스 매트릭스를 포함하는 메모리 제어기.
  20. 제 19 항에 있어서,
    상기 메모리 제어기의 제 1 동작 모드와 관련하여, 상기 스케쥴러는 상기 결정된 개수로서 제 1 개수를 결정하고,
    상기 메모리 제어기의 제 2 동작 모드와 관련하여, 상기 스케쥴러는 상기 결정된 개수로서 제 2 개수를 결정하고,
    상기 제 1 개수는 상기 제 2 개수와 상이한 메모리 제어기.
KR1020120143726A 2012-12-11 2012-12-11 메모리 제어기 및 그것을 포함한 메모리 시스템 KR101997794B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120143726A KR101997794B1 (ko) 2012-12-11 2012-12-11 메모리 제어기 및 그것을 포함한 메모리 시스템
US14/102,979 US9767053B2 (en) 2012-12-11 2013-12-11 Memory controller and memory system including the same
JP2013256030A JP6284351B2 (ja) 2012-12-11 2013-12-11 メモリ制御器及びそれを含むメモリシステム
CN201310674952.7A CN103870411B (zh) 2012-12-11 2013-12-11 存储控制器以及包括存储控制器的存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120143726A KR101997794B1 (ko) 2012-12-11 2012-12-11 메모리 제어기 및 그것을 포함한 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20140075952A KR20140075952A (ko) 2014-06-20
KR101997794B1 true KR101997794B1 (ko) 2019-07-09

Family

ID=50882290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120143726A KR101997794B1 (ko) 2012-12-11 2012-12-11 메모리 제어기 및 그것을 포함한 메모리 시스템

Country Status (4)

Country Link
US (1) US9767053B2 (ko)
JP (1) JP6284351B2 (ko)
KR (1) KR101997794B1 (ko)
CN (1) CN103870411B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102268965B1 (ko) * 2014-12-04 2021-06-24 엘지디스플레이 주식회사 게이트 쉬프트 레지스터 및 이를 이용한 표시 장치
KR102296787B1 (ko) * 2014-12-05 2021-09-01 엘지디스플레이 주식회사 표시장치 구동방법
KR102251813B1 (ko) * 2015-04-07 2021-05-13 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6657634B2 (ja) * 2015-07-24 2020-03-04 ソニー株式会社 符号化装置、メモリシステム、通信システムおよび符号化方法
TWI575384B (zh) * 2015-09-04 2017-03-21 慧榮科技股份有限公司 通道控制裝置
US11216323B2 (en) * 2015-09-16 2022-01-04 Samsung Electronics Co., Ltd. Solid state memory system with low power error correction mechanism and method of operation thereof
US10204532B2 (en) 2015-09-25 2019-02-12 Intel Corporation Multiple input cryptographic engine
US10083722B2 (en) * 2016-06-08 2018-09-25 Samsung Electronics Co., Ltd. Memory device for performing internal process and operating method thereof
CN106547488B (zh) * 2016-10-21 2019-04-19 国家计算机网络与信息安全管理中心 一种混合缓存管理方法
US10719394B2 (en) * 2017-10-25 2020-07-21 Innogrit Technologies Co., Ltd. Systems and methods for fast access of non-volatile storage devices
CN110390516B (zh) * 2018-04-20 2023-06-06 伊姆西Ip控股有限责任公司 用于数据处理的方法、装置和计算机存储介质
CN109036431A (zh) * 2018-07-11 2018-12-18 北京智能管家科技有限公司 一种语音识别系统和方法
KR102513919B1 (ko) * 2018-11-05 2023-03-27 에스케이하이닉스 주식회사 메모리 시스템
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법
US11487544B2 (en) * 2020-01-15 2022-11-01 Western Digital Technologies, Inc. Method and device for simultaneously decoding data in parallel to improve quality of service
CN111755057B (zh) * 2020-07-29 2022-06-17 北京浪潮数据技术有限公司 一种信道的引擎调度方法、系统及相关装置
CN113608436A (zh) * 2021-07-01 2021-11-05 杭州希亚智新科技有限公司 一种多维度鲁棒预测控制方法和装置
US11755489B2 (en) * 2021-08-31 2023-09-12 Apple Inc. Configurable interface circuit
CN114115745B (zh) * 2021-11-30 2023-07-04 深圳忆联信息系统有限公司 多Pass编程NAND的RAID优化方法、装置及计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090160867A1 (en) 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002051079A (ja) * 2000-06-08 2002-02-15 Alcatel 光cdmaスイッチアーキテクチャおよび方法
US7055081B2 (en) 2001-03-02 2006-05-30 Storage Technology Corporation System and method for multi-channel decoding error correction
TWI220959B (en) * 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
JP2006004133A (ja) * 2004-06-17 2006-01-05 Fujitsu Ltd 情報処理装置におけるエラー訂正、検出装置
DE602004011757T2 (de) * 2004-07-01 2009-02-05 Sap Ag Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
KR100852193B1 (ko) * 2007-05-02 2008-08-13 삼성전자주식회사 오류 제어 코드 장치 및 그 방법
US8001444B2 (en) 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
KR101425957B1 (ko) 2007-08-21 2014-08-06 삼성전자주식회사 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
KR101466694B1 (ko) 2007-08-28 2014-11-28 삼성전자주식회사 Ecc 회로, ecc 회로를 구비하는 메모리 시스템 및그의 오류 정정 방법
US9152496B2 (en) * 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
JP5150245B2 (ja) 2007-12-27 2013-02-20 株式会社東芝 半導体記憶装置
JP2010026950A (ja) * 2008-07-23 2010-02-04 Hitachi Ulsi Systems Co Ltd 記憶装置
US8127058B1 (en) * 2008-07-29 2012-02-28 Marvell International Ltd. System and method of video decoding using hybrid buffer
KR101554159B1 (ko) 2008-10-08 2015-09-21 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
KR20100100394A (ko) 2009-03-06 2010-09-15 삼성전자주식회사 반도체 디스크 장치 그리고 그것의 데이터 기록 및 읽기 방법
JP5303325B2 (ja) * 2009-03-18 2013-10-02 ルネサスエレクトロニクス株式会社 データ処理装置
US8418021B2 (en) * 2009-03-27 2013-04-09 Mediatek Inc. Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof
US20100332922A1 (en) 2009-06-30 2010-12-30 Mediatek Inc. Method for managing device and solid state disk drive utilizing the same
US8510631B2 (en) 2009-11-24 2013-08-13 Mediatek Inc. Multi-channel memory apparatus and method thereof
US8675674B2 (en) * 2009-12-23 2014-03-18 Citrix Systems, Inc. Systems and methods for queue level SSL card mapping to multi-core packet engine
RU2010135495A (ru) * 2010-08-24 2012-02-27 ЭлЭсАй Корпорейшн (US) Видеотранскодер с гибким управлением качеством и сложностью

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090160867A1 (en) 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units

Also Published As

Publication number Publication date
JP2014116015A (ja) 2014-06-26
CN103870411B (zh) 2018-05-01
US20140164673A1 (en) 2014-06-12
KR20140075952A (ko) 2014-06-20
JP6284351B2 (ja) 2018-02-28
CN103870411A (zh) 2014-06-18
US9767053B2 (en) 2017-09-19

Similar Documents

Publication Publication Date Title
KR101997794B1 (ko) 메모리 제어기 및 그것을 포함한 메모리 시스템
KR102089613B1 (ko) 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
KR101818176B1 (ko) 메모리 시스템 및 그것의 동작 방법
US9158617B2 (en) Method of performing write operation or read operation in memory system and system thereof
KR101941270B1 (ko) 멀티-레벨 메모리 장치를 제어하는 메모리 제어기 및 그것의 에러 정정 방법
KR20140100330A (ko) 메모리 시스템 및 그것의 동작 방법
KR101824227B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
US20100088467A1 (en) Memory device and operating method of memory device
KR101923157B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
US20150026509A1 (en) Storage device having a data stream converter
KR20140044640A (ko) 메모리 시스템 및 그것의 읽기 교정 방법
US11669395B2 (en) Memory system including field programmable gate array (FPGA) and method of operating same
WO2021118619A1 (en) Storage system and method for video frame segregation to optimize storage
US11429612B2 (en) Address search circuit and method of semiconductor memory apparatus and controller therefor
EP4386556A1 (en) Operation method of memory controller configured to control memory device
US20240193041A1 (en) Operation method of memory controller configured to control memory device
US20240111427A1 (en) Data Storage Device That Detects And Releases Input Queue Bottlenecks
US11966582B2 (en) Data storage device that detects and releases bottlenecks
US20240111426A1 (en) Data Storage Device That Detects and Releases Bottlenecks In Hardware
US11893248B2 (en) Secure metadata protection
KR20140094186A (ko) 호스트의 리퀘스트 처리 방법
US20240103726A1 (en) NVMe Copy Command Acceleration
KR20240090083A (ko) 메모리 장치를 제어하도록 구성된 메모리 컨트롤러의 동작 방법
CN116266146A (zh) 多核处理器和存储装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant