KR102266733B1 - 데이터 스토리지 및 그것의 동작 방법 - Google Patents

데이터 스토리지 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102266733B1
KR102266733B1 KR1020150080039A KR20150080039A KR102266733B1 KR 102266733 B1 KR102266733 B1 KR 102266733B1 KR 1020150080039 A KR1020150080039 A KR 1020150080039A KR 20150080039 A KR20150080039 A KR 20150080039A KR 102266733 B1 KR102266733 B1 KR 102266733B1
Authority
KR
South Korea
Prior art keywords
binary data
controller
data
data storage
host
Prior art date
Application number
KR1020150080039A
Other languages
English (en)
Other versions
KR20160143986A (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 KR1020150080039A priority Critical patent/KR102266733B1/ko
Priority to US15/092,804 priority patent/US10170198B2/en
Publication of KR20160143986A publication Critical patent/KR20160143986A/ko
Application granted granted Critical
Publication of KR102266733B1 publication Critical patent/KR102266733B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

본 발명의 실시 예에 따른 데이터 스토리지는 적어도 하나의 불휘발성 메모리 장치, 그리고 사이드-밴드 인터페이스를 통하여 호스트로부터 바이너리 데이터를 수신하는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는 호스트로부터의 요청에 따라 상기 바이너리 데이터를 실행하여 테스트 동작을 실행할 수 있다. 본 발명의 실시 예에 따르면, 사이드-밴드 인터페이스를 통하여, 상기 데이터 스토리지에 대한 테스트 동작을 효율적으로 실행할 수 있다.

Description

데이터 스토리지 및 그것의 동작 방법{DATA STORAGE AND OPERATING METHOD THEREOF}
본 발명은 데이터 스토리지에 관한 것으로, 좀 더 상세하게는, 그 구성요소들이 기판 위에 직접 실장되는 온-보드 SSD (On-Board Solid State Drive)에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽기 및 쓰기 속도가 빠른 장점이 있지만, 전원 공급이 끊기면 저장된 데이터가 사라져 버리는 단점이 있다. 반면에, 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 저장된 데이터가 보존된다. 그러므로, 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 저장하는 데 쓰인다.
이러한 불휘발성 메모리 장치를 이용한 데이터 스토리지의 예로써, 솔리드 스테이트 드라이브(Solid State Drive; SSD)가 있다. 일반적인 SSD는 완제품 형태로 메모리 벤더에 의해 출하되므로, JTAG (Joint Test Action Group) 인터페이스를 통하여 SSD를 테스트할 수 있다. 그러나, SSD를 구성하는 컨트롤러, 불휘발성 메모리 장치 등이 메모리 벤더에 의해 개별적으로 납품된 후, 보드에 실장되는 온-보드 SSD (On-Board Solid State Drive)의 경우, JTAG 인터페이스를 이용할 수 없다. 따라서, 온-보드 SSD에 문제가 발생하더라도, 기존의 JTAG 인터페이스를 이용하여 테스트를 할 수 없는 문제가 있다. 뿐만 아니라, 온-보드 SSD의 구성요소들을 출하하기 전에, 온-보드 SSD에 테스트 프로그램을 모두 내장시키는 것은 현실적으로 어렵다.
따라서, 온-보드 SSD에 대한 테스트 동작을 실행할 수 있는 방안을 마련하는 것이 중요한 문제로 부각되고 있다.
본 발명의 목적은 사이드-밴드 채널을 통하여 온-보드 SSD에 대한 테스트 동작을 실행하는 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 데이터 스토리지는, 적어도 하나의 불휘발성 메모리 장치, 그리고 사이드-밴드 인터페이스를 통하여 호스트로부터 바이너리 데이터를 수신하고, 상기 호스트로부터의 요청에 따라 상기 바이너리 데이터를 실행하여 테스트 동작을 실행하는 컨트롤러를 포함할 수 있다.
실시 예로써, 상기 사이드밴드 인터페이스는 JTAG이 아닌 인터페이스일 수 있다.
다른 실시 예로써, 상기 컨트롤러는, 상기 바이너리 데이터 및 상기 호스트로부터의 상기 요청을 수신하는 사이드-밴드 매니저, 그리고 상기 바이너리 데이터가 저장되는 버퍼를 포함할 수 있다.
또 다른 실시 예로써, 상기 컨트롤러는 상기 바이너리 데이터가 저장될 상기 버퍼 내의 어드레스 정보 및 상기 바이너리 데이터의 사이즈 정보를 수신할 수 있다.
또 다른 실시 예로써, 상기 컨트롤러는 상기 어드레스 정보 및 상기 사이즈 정보를 참조하여 상기 바이너리 데이터를 상기 버퍼에 저장할 수 있다.
또 다른 실시 예로써, 상기 컨트롤러는 상기 호스트로부터 ECDSA 서명을 수신하고, 상기 ECDSA 서명을 이용하여 상기 바이너리 데이터의 유효성을 검사할 수 있다.
또 다른 실시 예로써, 상기 바이너리 데이터는 상기 테스트 동작의 속성에 따라 분할되어 수신되고, 상기 분할된 바이너리 데이터의 크기는 상기 버퍼의 크기 이하일 수 있다.
또 다른 실시 예로써, 상기 컨트롤러는 상기 호스트로부터 암호화된 바이너리 데이터를 수신하고, 상기 암호화된 바이너리 데이터를 복호화할 수 있다.
또 다른 실시 예로써, 상기 데이터 스토리지는, 상기 적어도 하나의 불휘발성 메모리 장치 및 상기 컨트롤러가 보드 상에 실장되는 온-보드 SSD (On-board solid state drive)일 수 있다.
또 다른 실시 예로써, 상기 보드는 인쇄회로 기판, 플렉서블 기판, 테이프 기판 중 적어도 하나를 포함할 수 있다.
본 발명의 실시 예에 따른, 호스트와 데이터를 송수신하는 데이터 스토리지의 동작 방법은, 상기 호스트로부터 상기 데이터 스토리지에 대한 테스트 동작을 실행하기 위한 바이너리 데이터를 사이드-밴드 인터페이스를 통하여 수신하는 단계, 그리고 상기 호스트로부터의 요청에 따라 상기 바이너리 데이터를 실행하는 단계를 포함할 수 있다.
실시 예로써, 상기 바이너리 데이터를 수신하는 단계에서, 상기 바이너리 데이터의 유효성 검사를 위한 ECDSA 서명이 수신될 수 있다.
다른 실시 예로써, 상기 바이너리 데이터를 수신하는 단계 후, 상기 바이너리 데이터가 저장될 버퍼의 어드레스 정보 및 상기 바이너리 데이터의 사이즈 정보에 따라 상기 바이너리 데이터를 저장하는 단계, 그리고 상기 ECDSA 서명을 이용하여 상기 바이너리 데이터의 유효성을 검사하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 바이너리 데이터는 상기 데이터 스토리지에 대한 테스트 동작의 속성에 따라 분할되어 수신될 수 있다.
또 다른 실시 예로써, 상기 분할된 바이너리 데이터들이 전부 실행되었는지 여부를 판단하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 스토리지 시스템은, 테스트 동작을 실행하기 위한 바이너리 데이터를 생성하는 호스트, 그리고 적어도 하나의 불휘발성 메모리 장치, 및 사이드-밴드 인터페이스를 통하여 상기 바이너리 데이터를 수신하고 상기 호스트로부터의 요청에 따라 상기 바이너리 데이터를 실행하는 컨트롤러를 포함할 수 있다.
실시 예로써, 상기 사이드-밴드 인터페이스는 I2C, UART (universal asynchronous receiver/transmitter), MTCP (management component transport protocol) 중 적어도 하나를 포함할 수 있다.
다른 실시 예로써, 상기 컨트롤러는, 상기 바이너리 데이터 및 상기 호스트로부터의 상기 요청을 수신하는 사이드-밴드 매니저, 그리고 상기 바이너리 데이터가 저장되는 버퍼를 포함할 수 있다.
또 다른 실시 예로써, 상기 컨트롤러는 상기 호스트로부터 ECDSA 서명을 수신하고, 상기 ECDSA 서명을 이용하여 상기 바이너리 데이터의 유효성을 검사할 수 있다.
또 다른 실시 예로써, 상기 호스트는 상기 바이너리 데이터를 암호화하여 상기 컨트롤러로 전송하고, 상기 컨트롤러는 상기 암호화된 데이터를 복호화할 수 있다.
본 발명의 실시 예에 따르면, 사이드-밴드 채널을 통하여 온-보드 SSD에 대한 테스트 동작을 실행하는 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 스토리지를 보여주는 블록도이다.
도 2는 도 1에 도시된 컨트롤러의 구성을 좀 더 상세하게 보여주는 블록도이다.
도 3 및 도 4는 본 발명의 실시 예에 따라 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 바이너리 데이터를 수신하는 과정을 보여주는 블록도이다.
도 5는 바이너리 데이터에 대한 유효성 검사 후, 바이너리 데이터를 실행하는 과정을 보여주는 블록도이다.
도 6은 SRAM에 저장된 바이너리 데이터를 실행하여 데이터 스토리지에 대한 테스트 동작을 실행하는 것을 개념적으로 보여주는 블록도이다.
도 7은 본 발명의 다른 실시 예에 따라 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 바이너리 데이터를 수신하는 과정을 보여주는 블록도이다.
도 8은 DRAM에 저장된 바이너리 데이터를 실행하여 데이터 스토리지에 대한 테스트 동작을 실행하는 것을 개념적으로 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따라 데이터 스토리지에 대한 테스트 동작을 실행하는 과정을 보여주는 순서도이다.
도 10은 본 발명의 또 다른 실시 예에 따라 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 바이너리 데이터를 수신하고 실행하는 과정을 보여주는 블록도이다.
도 11은 본 발명의 다른 실시 예에 따라 데이터 스토리지에 대한 테스트 동작을 실행하는 과정을 보여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 13은 도 12에 도시된 실시 예에 따라 사이드-밴드 인터페이스를 통하여 암호화된 바이너리 데이터를 수신하고 실행하는 과정을 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 스토리지에 대한 테스트 동작을 실행하는 과정을 보여주는 순서도이다.
도 15는 본 발명의 실시 예에 따른 데이터 스토리지의 메모리 블록(VNAND)의 실시 예를 보여주는 도면이다.
도 16은 본 발명의 실시 예에 따른 데이터 스토리지의 메모리 블록(VNAND)의 다른 예를 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 데이터 스토리지가 적용된 컴퓨팅 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.
"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이가 제공된다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖고, 3차원 메모리 어레이에 적합한 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 데이터 스토리지를 보여주는 블록도이다. 데이터 스토리지(1000)는 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 스토리지(1000)는 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)가 보드(예를 들어, 인쇄 회로 기판) 상에 직접 실장되는 온-보드 SSD (On-Board Solid State Drive)일 수 있다.
컨트롤러(1100)는 사이드-밴드 매니저(1140)를 포함할 수 있다. 사이드-밴드 매니저(1140)는 사이드-밴드 인터페이스(side-band interface; SBI)를 통하여 호스트(예를 들어, 디버거)와 통신할 수 있다. 여기서, 사이드-밴드 인터페이스는 인-밴드 인터페이스(in-band interface)와 같은 일반적인 인터페이스를 제외한, 부수적으로 제공되는 인터페이스를 의미한다. 예를 들어, 사이드-밴드 인터페이스는 I2C, UART (universal asynchronous receiver/transmitter), MTCP (management component transport protocol) 중 적어도 하나를 포함할 수 있다. 그러나, 이에 한정되지 않으며, 사이드-밴드 인터페이스는 JTAG (Joint Test Action Group)을 제외한 인터페이스일 수 있다. 예를 들어, 사이드-밴드 매니저(1140)는 소프트웨어, 하드웨어, 또는 이들의 조합으로 구성될 수 있다.
본 발명의 실시 예에 따른 데이터 스토리지(1000)는 사이드-밴드 인터페이스를 통하여 호스트(예를 들어, 디버거)로부터 바이너리 데이터 형태의 소프트웨어 또는 펌웨어를 전송받을 수 있다. 그리고, 데이터 스토리지(1000)는 수신된 소프트웨어 또는 펌웨어를 실행하여 데이터 스토리지에 대한 테스트 동작을 실행할 수 있다. 본 발명의 실시 예에 따르면, 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)와 같은, 데이터 스토리지(1000)를 구성하는 각각의 구성요소들(예를 들어, 컨트롤러, 데이터 스토리지, DRAM 등)을 메모리 벤더가 납품한 이후라 하더라도, 사이드-밴드 인터페이스를 통하여 데이터 스토리지(1000)에 대한 테스트 동작을 효율적으로 실행할 수 있다.
도 2는 도 1에 도시된 컨트롤러(1100)의 구성을 좀 더 상세하게 보여주는 블록도이다. 도 2를 참조하면, 컨트롤러(1100)는 적어도 하나의 프로세서(1110), SRAM(1120), ROM(1130), 사이드-밴드 매니저(1140), 버퍼 매니저(1150), 불휘발성 메모리 인터페이스(1160)를 포함할 수 있다.
프로세서(1110)는 컨트롤러(1100)의 전반적인 동작을 제어할 수 있다. 프로세서(1110)는 컨트롤러(1100)를 동작시키기 위한 펌웨어(firmware)를 구동할 수 있다. 프로세서(1110)는 데이터 스토리지(1000)를 테스트하기 위한 소프트웨어 또는 펌웨어를 구동할 수 있다. 펌웨어는 SRAM(1120)에 로딩되어 구동될 수 있으며, 펌웨어는 플래시 변환 계층(flash translation layer; FTL), 테스트 프로그램(test program) 등일 수 있다.
SRAM(1120)에는 컨트롤러(1110)를 제어하기 위한 소프트웨어/펌웨어, 또는 데이터 스토리지(1000)를 테스트하기 위한 소프트웨어/펌웨어가 로딩될 수 있다. 비록 도면에는 SRAM(1120)이 사용되는 것으로 도시되었으나, 캐시 메모리, DRAM(dynamic random access memory), PRAM(Phase-change RAM), 또는 플래시 메모리 장치 중 적어도 하나로 대체될 수 있다.
ROM(1130)에는 컨트롤러(1100)를 동작시키는데 필요한 다양한 정보 또는 펌웨어 등이 저장될 수 있다. 그리고, ROM(1130)는 호스트(예를 들어, 디버거)와의 인터페이싱을 위한 코드 데이터가 저장될 수 있다.
사이드-밴드 매니저(1140)는 호스트(예를 들어, 디버거)와의 인터페이싱을 제공하는 사이드-밴드 인터페이스를 포함할 수 있다. 예를 들어, 사이드-밴드 인터페이스는 JTAG이 아닌 인터페이스(예를 들어, I2C, UART, MTCP 등)를 포함할 수 있다.
비록 도면에 도시되지는 않았지만, 컨트롤러(1100)는 호스트 인터페이스를 더 포함할 수 있다. 호스트 인터페이스(미도시)는 호스트와 컨트롤러(1110) 사이의 인터페이스를 제공할 수 있다. 호스트와 컨트롤러(1110)는 다양한 표준 인터페이스들(Standardized Interfaces) 중 적어도 하나를 통해 연결될 수 있다. 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral component Interconnection), PCI-E(PCI Express), USB(Universal Serial Bus), IEEE 1394, Card 인터페이스 등과 같은 다양한 인터페이스를 포함할 수 있다.
버퍼 매니저(1150)는 컨트롤러(1110)와 DRAM(1300) 사이의 인터페이스를 제공할 수 있다. 불휘발성 메모리 장치(1200)로 저장될 데이터나, 불휘발성 메모리 장치(1200)로부터 읽혀질 데이터는 버퍼 매니저(1150)를 거쳐 DRAM(1300)에 임시적으로 저장될 수 있다.
불휘발성 메모리 인터페이스(1160)는 컨트롤러(1110)와 불휘발성 메모리 장치(1300) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 컨트롤러(1110)는 불휘발성 메모리 인터페이스(1160)를 통하여 불휘발성 메모리 장치(1200)와 데이터를 송수신할 수 있다.
불휘발성 메모리 장치(1200)는 메모리 셀들이 연결되는 셀 스트링이 기판에 수직으로 형성되는 3차원 불휘발성 메모리 장치일 수 있다. 그러나, 이에 한정되지 않으며, 플래너(planar) 타입의 메모리 장치일 수도 있다. 불휘발성 메모리 장치는 복수의 채널(CH)들을 통하여 불휘발성 메모리 인터페이스(1160)에 연결될 수 있다.
DRAM(1300)은 불휘발성 메모리 장치(1200)로 저장될 데이터, 또는 불휘발성 메모리 장치(1200)로부터 읽혀질 데이터를 임시적으로 저장할 수 있다. 비록 도면에는 DRAM(1300)이 도시되었으나, 이에 한정되지 않으며, SRAM(static random access memory), PRAM(Phase-change RAM) 또는 이들의 다양한 조합이 사용될 수 있다.
도 3 및 도 4는 본 발명의 실시 예에 따라 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 바이너리 데이터를 수신하는 과정을 보여주는 블록도이다.
도 3을 참조하면, 사이드-밴드 매니저(1140)는 사이드-밴드 인터페이스를 통하여 데이터 스토리지(1000)에 대한 테스트 동작을 실행하기 위한 바이너리 데이터를 수신할 수 있다(①). 바이너리 데이터에는 바이너리 데이터가 저장될 SRAM(1120) 상의 어드레스 정보 및 바이너리 데이터의 사이즈 정보를 포함할 수 있다. 그리고, 바이너리 데이터와 함께 ECDSA (elliptic curve digital signature algorithm) 서명도 수신될 수 있다. ECDSA는 바이너리 데이터의 유효성을 검사하기 위한 전자 서명 방식의 일종이다. 그러나, 바이너리 데이터의 유효성을 검사하기 위한 전자 서명 방식은 이에 한정되지 않으며, ELGamal 방식, DSA (digital signature algorithm) 방식, Schnorr 방식 등 다양한 인증 방식이 사용될 수 있다.
바이너리 데이터가 호스트(예를 들어, 디버거)로부터 수신되면, 프로세서(1110)는 바이너리 데이터에 포함된 어드레스 정보 및 사이즈 정보를 체크할 수 있다(②). 예를 들어, 프로세서(1110)는 주기적으로 사이드-밴드 매니저(1140)를 폴링(polling) 하거나 또는 인터럽트 방식을 사용하여 바이너리 데이터의 수신 여부를 체크할 수 있다.
만일, 바이너리 데이터의 크기가 SRAM(1120)의 사용 가능한 공간보다 작고, 어드레스 정보에 따라 바이너리 데이터가 저장됨으로써 시스템과 충돌을 일으키지 않는다면, 바이너리 데이터 및 ECDSA 서명은 SRAM(1120)에 저장될 수 있다(③). 예를 들어, 바이너리 데이터 및 ECDSA 서명은 SRAM(1120)의 제 1 영역(1122)에 저장될 수 있다.
반면, 바이너리 데이터의 크기가 SRAM(1120)의 사용 가능한 공간보다 크고, 어드레스 정보에 따라 바이너리 데이터가 저장됨으로써 시스템과 충돌을 일으킨다면, 바이너리 데이터는 SRAM(1120)에 저장되지 않을 것이다. 이러한 특성은 도 4에 도시되어 있다. 그리고, 도 4에 도시된 바와 같이, 사이드-밴드 매니저(1140)는 에러 코드를 호스트로 전송할 수 있다.
다시 도 3을 참조하면, 바이너리 데이터의 유효성을 검사하기 위한 펌웨어 또는 소프트웨어가 로딩될 수 있다(④). 이는 인증되지 않은 사용자에 의한 펌웨어 또는 소프트웨어의 실행을 방지하기 위함이다. 예를 들어, 유효성 검사를 위한 펌웨어 또는 소프트웨어는 ROM(도 2 참조, 1130) 또는 불휘발성 메모리 장치(도 2 참조, 1200)로부터 로딩될 수 있다. 펌웨어 또는 소프트웨어는 SRAM(1120)의 제 2 영역(1124)에 로딩될 수 있다.
프로세서(1110)는 로딩된 펌웨어 또는 소프트웨어, 및 ECDSA 서명을 이용하여 바이너리 데이터의 유효성을 검사할 수 있다(⑤). 만일 바이너리 데이터가 유효하다고 판단되면, 사이드-밴드 매니저(1140)는 호스트(예를 들어, 디버거)로 바이너리 데이터가 유효하다는 신호를 전달할 수 있다(⑥). 이후, 바이너리 데이터를 실행하여 데이터 스토리지에 대한 테스트 동작이 실행될 것이다. 반면, 바이너리 데이터가 유효하지 않다고 판단되면, 데이터 스토리지에 대한 테스트 동작은 실행되지 않을 것이다.
도 5는 바이너리 데이터에 대한 유효성 검사 후, 바이너리 데이터를 실행하는 과정을 보여주는 블록도이다.
호스트(예를 들어, 디버거)로부터 바이너리 데이터에 대한 실행 커맨드(CMD_EX)가 수신될 수 있다(①). 예를 들어, 실행 커맨드(CMD_EX)는 사이드-밴드 매니저(1140)에 구비된 레지스터(1142)에 저장될 수 있다. 프로세서(1110)는 사이드-밴드 매니저(1140)를 주기적으로 폴링하거나, 또는 인터럽트 방식을 사용하여 실행 커맨드(CMD_EX)가 수신되었는지 여부를 체크할 수 있다(②). 그리고, 프로세서(1110)는 SRAM(1120)에 저장된 바이너리 데이터를 실행하여 데이터 스토리지에 대한 각종 테스트 동작을 실행할 수 있다(③).
이상 도 3 내지 도 5에서는 바이너리 데이터를 수신한 후, 별도의 커맨드에 의해 바이너리 데이터가 실행되는 것으로 설명되었다. 그러나, 실시 예에 따라서, 바이너리 데이터에 실행 커맨드(CMD_EX)가 포함될 수도 있다. 즉, 수신된 바이너리 데이터가 유효하다고 판단되면, 실행 커맨드(CMD_EX)가 바로 실행되어 데이터 스토리지에 대한 각종 테스트 동작이 실행될 수 있다.
도 6은 SRAM(1120)에 저장된 바이너리 데이터를 실행하여 데이터 스토리지(1000)에 대한 테스트 동작을 실행하는 것을 개념적으로 보여주는 블록도이다.
프로세서(1110)는 SRAM(1120)에 저장된 바이너리 데이터를 실행하여, 컨트롤러(1100), 불휘발성 메모리 장치(1200), 및 DRAM(1300)에 대한 각종 테스트 동작을 실행할 수 있다. 예를 들어, SRAM(1120)과 DRAM(1300) 사이의 데이터 교환 테스트, 불휘발성 메모리 장치(1200)로의 데이터 쓰기 테스트, 불휘발성 메모리 장치(1200)로부터의 데이터 읽기 테스트 등 다양한 테스트 동작이 실행될 수 있다.
도 7은 본 발명의 다른 실시 예에 따라 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 바이너리 데이터를 수신하는 과정을 보여주는 블록도이다.
만일 바이너리 데이터의 사이즈가 SRAM(도 2 참조, 1120)의 이용 가능한 사이즈보다 크다면, 바이너리 데이터를 수신하여 데이터 스토리지에 대한 테스트 동작을 실행할 수 없다. 이 경우, SRAM보다 상대적으로 용량이 큰 DRAM(1300)이 사용될 수 있다. 바이너리 데이터를 수신하는 기본적인 동작은 도 2 내지 도 3에서 설명된 것과 유사하므로 중복되는 설명은 생략하기로 한다. 다만, 수신된 바이너리 데이터와 ECDSA 서명은 버퍼 매니저(1150)를 거쳐 DRAM(1300)에 저장될 수 있다. 이후, 바이너리 데이터의 실행 명령에 따라, 데이터 스토리지에 대한 테스트 동작이 실행될 것이다.
도 8은 DRAM(1300)에 저장된 바이너리 데이터를 실행하여 데이터 스토리지(1000)에 대한 테스트 동작을 실행하는 것을 개념적으로 보여주는 블록도이다.
프로세서(1110)는 DRAM(1300)에 저장된 바이너리 데이터를 실행하여, 컨트롤러(1100), 불휘발성 메모리 장치(1200), 및 DRAM(1300)에 대한 각종 테스트 동작을 실행할 수 있다. 예를 들어, SRAM(1120)과 DRAM(1300) 사이의 데이터 교환 테스트, 불휘발성 메모리 장치(1200)로의 데이터 쓰기 테스트, 불휘발성 메모리 장치(1200)로부터의 데이터 읽기 테스트 등 다양한 테스트 동작이 실행될 수 있다.
도 9는 본 발명의 실시 예에 따라 데이터 스토리지에 대한 테스트 동작을 실행하는 과정을 보여주는 순서도이다.
데이터 스토리지에 대한 테스트 동작은, 사이드-밴드 인터페이스를 통하여 바이너리 데이터를 수신하는 단계(S110) 및 바이너리 데이터를 실행하는 단계(S120)를 포함할 수 있다.
S112 단계에서, 바이너리 데이터가 수신될 수 있다. 바이너리 데이터는 I2C, UART, MTCP와 같은 사이드-밴드 인터페이스를 통하여 수신될 수 있다. 바이너리 데이터는 데이터 스토리지에 대한 각종 테스트 동작을 위한 소프트웨어 또는 펌웨어를 포함할 수 있다. 바이너리 데이터는, 바이너리 데이터가 저장될 메모리 상의 어드레스 정보 및 바이너리 데이터의 사이즈 정보를 포함할 수 있다. 그리고, 바이너리 데이터뿐만 아니라, 바이너리 데이터에 대한 유효성 검사를 위한 ECDSA 서명도 함께 수신될 수 있다.
S114 단계에서, 수신된 어드레스 정보 및 사이즈 정보가 체크될 수 있다. 만일 수신된 어드레스 정보에 따라 바이너리 데이터가 메모리에 저장됨으로써 시스템의 충돌이 발생하거나, 또는 바이너리 데이터의 크기가 사용 가능한 메모리의 용량보다 크다면(No), 정상적인 테스트 절차를 진행할 수 없다. 이때, 사이드-밴드 매니저는 호스트(예를 들어, 디버거)로 에러 코드를 전송하고 절차는 종료될 수 있다. 반면, 수신된 어드레스 정보 및 사이즈 정보가 적절하다고 판단되면(Yes), S116 단계로 이동할 수 있다.
S116 단계에서, 바이너리 데이터가 SRAM 또는 DRAM에 저장될 수 있다. 바이너리 데이터는 바이너리 데이터와 함께 수신된 어드레스 정보에 따라 저장될 수 있다.
S118 단계에서, 바이너리 데이터가 유효한지 여부가 판단될 수 있다. 바이너리 데이터의 유효성은 함께 수신된 ECDSA 서명, 그리고 유효성 검사를 위한 소프트웨어 또는 펌웨어를 이용하여 판단될 수 있다. 바이너리 데이터의 유효성 검사를 위한 소프트웨어 또는 펌웨어는 컨트롤러 내의 ROM(도 2 참조, 1130) 또는 불휘발성 메모리 장치(도 2 참조, 1200)로부터 로딩될 수 있다. 판단 결과에 따라 동작 분기가 발생한다. 바이너리 데이터가 유효하다고 판단되면(Yes), S122 단계로 이동한다. 반면, 그렇지 않으면(No), 절차는 종료한다.
S122 단계에서, 바이너리 데이터에 대한 실행 커맨드(CMD_EX)가 수신될 수 있다. 실행 커맨드(CMD_EX)는 데이터 스토리지에 대한 다양한 테스트를 실행하기 위한 다양한 프로토콜을 포함할 수 있다.
S124 단계에서, 바이너리 데이터가 실행될 수 있다. 바이너리 데이터를 실행한 결과, SRAM(도 2 참조, 1120)과 DRAM(도 2 참조, 1300) 사이의 데이터 교환 테스트, 불휘발성 메모리 장치(도 2 참조, 1200)로의 데이터 쓰기 테스트, 불휘발성 메모리 장치(1200)로부터의 데이터 읽기 테스트 등 다양한 테스트 동작이 실행될 수 있다.
본 실시 예에서는 S112 단계에서 바이너리 데이터를 수신한 후, S122 단계에서 별도의 커맨드에 의해 바이너리 데이터가 실행되는 것으로 설명되었다. 그러나, 실시 예에 따라서, 바이너리 데이터에 실행 커맨드(CMD_EX)가 포함될 수도 있다. 즉, S122 단계는 생략될 수 있으며, 수신된 바이너리 데이터가 유효하다고 판단되면(S118 단계), 실행 커맨드(CMD_EX)가 바로 실행되어 데이터 스토리지에 대한 각종 테스트 동작이 실행될 수 있다.
본 발명의 실시 예에 따르면, JTAG이 아닌, 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 다양한 소프트웨어 또는 펌웨어를 데이터 스토리지로 전송하고 실행할 수 있다. 그 결과, 데이터 스토리지를 구성하는 각각의 구성요소들(예를 들어, 컨트롤러, 불휘발성 메모리 장치, DRAM 등)을 메모리 벤더가 납품한 이후라 하더라도, 온-보드 SSD와 같은 데이터 스토리지에 대한 테스트 동작을 효율적으로 실행할 수 있다.
도 10은 본 발명의 또 다른 실시 예에 따라 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 바이너리 데이터를 수신하고 실행하는 과정을 보여주는 블록도이다. 본 실시 예는 바이너리 데이터의 사이즈가 SRAM(도 2 참조, 1120)의 이용 가능한 크기를 초과하는 경우에 적용될 수 있다.
호스트(예를 들어, 디버거)는 바이너리 데이터를 데이터 스토리지에 대한 테스트 동작의 속성에 따라 분할하여 전송할 수 있다(①). 바이너리 데이터를 테스트 동작의 속성에 따라 분할한 결과, 바이너리 데이터는 기능별로 복수의 바이너리 데이터들로 분할될 수 있다. 예를 들어, 특정한 테스트 동작을 위하여 n개의 기능을 필요로 한다면, 바이너리 데이터는 각각의 기능별로 n개로 분할되어 컨트롤러로 전송될 수 있다. 예를 들어, 분할된 바이너리 데이터의 크기는 SRAM(1120)의 크기 이하일 수 있다.
컨트롤러(1100)는 첫 번째 기능에 대한 바이너리 데이터(Binary DATA1)를 호스트(예를 들어, 디버거)로부터 수신할 수 있다. 이때, 바이너리 데이터는 테스트 동작을 위한 펌웨어 또는 소프트웨어, 바이너리 데이터가 SRAM(1120)에 저장될 어드레스 정보, 및 바이너리 데이터의 사이즈 정보를 포함할 수 있다. 그리고 바이너리 데이터와함께 ECDSA 서명도 수신될 수 있다.
프로세서(1110)는 수신된 어드레스 정보 및 사이즈 정보를 체크하여, 바이너리 데이터를 SRAM(1120)에 저장할지 여부를 판단할 수 있다(②). 만일, 바이너리 데이터의 크기가 SRAM(1120)의 사용 가능한 공간보다 작고, 어드레스 정보에 따라 바이너리 데이터가 저장됨으로써 시스템과 충돌을 일으키지 않는다면, 바이너리 데이터 및 ECDSA 서명은 SRAM(1120)에 저장될 수 있다(③).
그리고, 바이너리 데이터가 유효한지 여부가 판단될 수 있다. 유효성을 검사하기 위해, ROM 또는 불휘발성 메모리 장치로부터 별도의 유효성 검사 펌웨어 또는 소프트웨어가 SRAM(1120)의 제 2 영역(1124)에 로딩될 수 있다(④).
프로세서(1110)는 제 2 영역(1124)에 로딩된 유효성 검사 펌웨어 또는 소프트웨어를 구동하고, ECDSA 서명을 이용하여 바이너리 데이터의 유효성을 검사할 수 있다(⑤). 만일 바이너리 데이터가 유효하다면, 컨트롤러(1100)는 호스트(예를 들어, 디버거)로부터 실행 커맨드(CMD_EX1)를 수신할 수 있다(⑥). 그리고, 실행 커맨드(CMD_EX1)에 따라 바이너리 데이터가 실행되어 첫 번째 기능에 대한에 대한 테스트 동작이 실행될 것이다(⑦). 반면, 바이너리 데이터가 유효하지 않다면, 테스트 동작은 실행되지 않을 것이다.
이후, 순차적으로 바이너리 데이터들의 수신 및 실행 동작이 반복될 것이다. 마지막으로, 마지막 기능에 대한 바이너리 데이터(Binary DATAn)가 호스트(예를 들어, 디버거)로부터 수신될 수 있다(⑧). 그리고, 앞서 설명된 ②~⑥ 동작들이 반복되고, 마지막 기능에 대한 테스트 동작이 실행될 것이다(⑨).
본 실시 예에서는, 바이너리 데이터를 수신한 후, 별도의 커맨드에 의해 바이너리 데이터가 실행되는 것으로 설명되었다. 그러나, 실시 예에 따라서, 각각의 바이너리 데이터에 실행 커맨드가 포함될 수도 있다. 즉, 바이너리 데이터(Binary DATAn)에는 실행 커맨드(CMD_EXn)이 포함될 것이다(n은 자연수). 수신된 바이너리 데이터가 유효하다고 판단되면, 실행 커맨드(CMD_EX)가 실행되어 데이터 스토리지에 대한 각종 테스트 동작이 실행될 수 있다.
본 실시 예와 같이, 바이너리 데이터를 기능별로 분할하여 전송받고 실행하면, 상대적으로 작은 용량을 갖는 SRAM을 효율적으로 사용하여 데이터 스토리지에 대한 테스트 동작을 실행할 수 있다.
도 11은 본 발명의 다른 실시 예에 따라 데이터 스토리지에 대한 테스트 동작을 실행하는 과정을 보여주는 순서도이다.
데이터 스토리지에 대한 테스트 동작은, 사이드-밴드 인터페이스를 통하여 바이너리 데이터를 수신하는 단계(S210), 바이너리 데이터를 실행하는 단계(S220), 및 모든 바이너리 데이터들이 실행되었는지 여부를 판단하는 단계(S230)를 포함할 수 있다. 본 도면에 도시된 실시 예는 도 9에 도시된 실시 예와 유사하다. 다만, 본 실시 예에서는, 바이너리 데이터들이 기능별로 분할되어 수신된다는 점에서 도 9에 도시된 실시 예와는 다르다.
S212 단계에서, 바이너리 데이터가 수신될 수 있다. 바이너리 데이터는 특정 기능별로 분할되어 수신될 수 있다. 바이너리 데이터는 JTAG이 아닌 사이드-밴드 인터페이스를 통하여 수신될 수 있다. 바이너리 데이터는 데이터 스토리지를 테스트하기 위한 소프트웨어 또는 펌웨어를 포함할 수 있다. 바이너리 데이터는, 바이너리 데이터가 저장될 메모리 상의 어드레스 정보 및 바이너리 데이터의 사이즈 정보를 포함할 수 있다. 그리고, 바이너리 데이터뿐만 아니라, 바이너리 데이터에 대한 유효성 검사를 위한 ECDSA 서명도 함께 수신될 수 있다.
S214 단계에서, 수신된 어드레스 정보 및 사이즈 정보가 체크될 수 있다. 만일 수신된 어드레스 정보에 따라 바이너리 데이터가 메모리에 저장됨으로써 시스템의 충돌이 발생하거나, 또는 바이너리 데이터의 크기가 사용 가능한 메모리의 용량보다 크다면(No), 정상적인 테스트 절차를 진행할 수 없다. 이때, 사이드-밴드 매니저는 호스트(예를 들어, 디버거)로 에러 코드를 전송하고 절차는 종료될 수 있다. 반면, 수신된 어드레스 정보 및 사이즈 정보가 적절하다고 판단되면(Yes), S216 단계로 이동할 수 있다.
S216 단계에서, 바이너리 데이터가 SRAM 또는 DRAM에 저장될 수 있다. 바이너리 데이터는 바이너리 데이터와 함께 수신된 어드레스 정보에 따라 저장될 수 있다.
S218 단계에서, 바이너리 데이터가 유효한지 여부가 판단될 수 있다. 바이너리 데이터의 유효성은 함께 수신된 ECDSA 서명, 그리고 유효성 판단을 위한 소프트웨어 또는 펌웨어를 이용하여 판단될 수 있다. 바이너리 데이터의 유효성 검사를 위한 소프트웨어 또는 펌웨어는 컨트롤러 내의 ROM(도 2 참조, 1130) 또는 불휘발성 메모리 장치(도 2 참조, 1200)로부터 로딩될 수 있다. 판단 결과에 따라 동작 분기가 발생한다. 바이너리 데이터가 유효하다고 판단되면(Yes), S222 단계로 이동한다. 반면, 그렇지 않으면(No), 절차는 종료한다.
S222 단계에서, 바이너리 데이터에 대한 실행 커맨드(CMD_EX)가 수신될 수 있다. 실행 커맨드(CMD_EX)는 데이터 스토리지에 대한 다양한 테스트를 실행하기 위한 다양한 프로토콜을 포함할 수 있다.
S224 단계에서, 바이너리 데이터가 실행될 수 있다. 바이너리 데이터를 실행한 결과, SRAM(도 2 참조, 1120)과 DRAM(도 2 참조, 1300) 사이의 데이터 교환 테스트, 불휘발성 메모리 장치(도 2 참조, 1200)로의 데이터 쓰기 테스트, 불휘발성 메모리 장치(1200)로부터의 데이터 읽기 테스트 등 다양한 테스트 동작이 실행될 수 있다.
S230 단계에서, 모든 바이너리 데이터가 실행되었는지 여부가 판단될 수 있다. 특정 테스트 동작을 실행하기 위해 기능별로 분할된 바이너리 데이터를 수신하였기 때문이다. 판단 결과에 따라 동작 분기가 발생한다. 만일 모든 바이너리 데이터가 수신되고 실행되었다면(Yes), 절차는 종료된다. 반면 그렇지 않으면(No), S212 단계로 이동하여 나머지 기능들에 대한 바이너리 데이터의 수신 및 실행 동작이 진행된다.
본 실시 예에서는 S212 단계에서 바이너리 데이터를 수신한 후, S222 단계에서 별도의 커맨드에 의해 바이너리 데이터가 실행되는 것으로 설명되었다. 그러나, 실시 예에 따라서, 바이너리 데이터에 실행 커맨드(CMD_EX)가 포함될 수도 있다. 즉, S222 단계는 생략될 수 있으며, 수신된 바이너리 데이터가 유효하다고 판단되면(S218 단계), 실행 커맨드(CMD_EX)가 바로 실행되어 데이터 스토리지에 대한 각종 테스트 동작이 실행될 수 있다.
본 발명의 실시 예에 따르면, JTAG이 아닌 사이드-밴드 인터페이스를 통하여 데이터 스토리지를 테스트하기 위한 다양한 소프트웨어 또는 펌웨어를 기능별로 분할하여 데이터 스토리지로 전송하고 실행할 수 있다. 그 결과, 데이터 스토리지를 구성하는 구성요소들(예를 들어, 컨트롤러, 데이터 스토리지, DRAM 등)을 메모리 벤더가 납품한 이후라 하더라도, 온-보드 SSD와 같은 데이터 스토리지에 대한 테스트 동작을 효율적으로 실행할 수 있다.
도 12는 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(2000)은 호스트(2100), 그리고 컨트롤러(2200) 및 불휘발성 메모리 장치(2300)를 포함하는 온-보드 SSD를 포함할 수 있다.
호스트(2100)(예를 들어, 디버거)는 바이너리 데이터를 암호화기(2110)를 통하여 암호화하고, 암호화된 바이너리 데이터를 컨트롤러(2200)로 전송할 수 있다.
컨트롤러(2200)는 사이드-밴드 매니저(2240) 및 복호화기(2270)를 포함할 수 있다. 사이드-밴드 매니저(2240)는 사이드-밴드 인터페이스(SBI)를 통하여 호스트(2100)와 통신할 수 있다. 예를 들어, 사이드-밴드 인터페이스는 I2C, UART, MTCP 중 적어도 하나를 포함할 수 있다. 그러나, 이에 한정되지 않으며, 사이드-밴드 인터페이스는 JTAG을 제외한 인터페이스일 수 있다. 예를 들어, 사이드-밴드 매니저(2240)는 소프트웨어, 하드웨어, 또는 이들의 조합으로 구성될 수 있다. 복호화기(2270)는 수신된 바이너리 데이터를 복호화할 수 있다.
본 실시 예에 따르면, 바이너리 데이터를 암호화하여 컨트롤러(2200)로 송신함으로써 테스트 동작에 있어서의 보안 성능을 향상시킬 수 있다.
도 13은 도 12에 도시된 실시 예에 따라 사이드-밴드 인터페이스를 통하여 암호화된 바이너리 데이터를 수신하고 실행하는 과정을 보여주는 블록도이다.
사이드-밴드 매니저(2240)는 호스트(예를 들어, 디버거)로부터 암호화된 바이너리 데이터를 수신할 수 있다(①). 암호화된 바이너리 데이터는 테스트 동작을 위한 펌웨어 또는 소프트웨어를 포함할 수 있다. 그리고 암호화된 바이너리 데이터와 함께, 암호화된 바이너리 데이터가 SRAM(2220)에 저장될 어드레스 정보, 및 바이너리 데이터의 사이즈 정보도 수신될 수 있다. 그리고 암호화된 바이너리 데이터와 함께, 바이너리 데이터의 유효성 검사를 위한 ECDSA 서명도 수신될 수 있다.
프로세서(2210)는 수신된 어드레스 정보 및 사이즈 정보를 체크하여, 암호화된 바이너리 데이터를 SRAM(2220)에 저장할지 여부를 판단할 수 있다(②). 만일, 암호화된 바이너리 데이터의 크기가 SRAM(2220)의 사용 가능한 공간보다 작고, 어드레스 정보에 따라 암호화된 바이너리 데이터가 저장됨으로써 시스템과 충돌을 일으키지 않는다면, 암호화된 바이너리 데이터 및 ECDSA 서명은 SRAM(2220)에 저장될 수 있다(③).
암호화된 바이너리 데이터가 복호화될 수 있다(④). 복호화를 위해 복호화기(또는 복호화 엔진)이 로딩될 수 있다. 예를 들어, 복호화기는 SRAM(2220)의 제 2 영역(2226)에 로딩될 수 있다. 예를 들어, 복호화기는 ROM 또는 불휘발성 메모리 장치(도 12 참조, 2300)로부터 로딩될 수 있다.
바이너리 데이터가 유효한지 여부가 판단될 수 있다. 유효성을 검사하기 위해, ROM 또는 불휘발성 메모리 장치(도 12 참조, 2300)로부터 유효성 검사를 위한 펌웨어 또는 소프트웨어가 SRAM(2220)의 제 2 영역(2224)에 로딩될 수 있다(⑤).
프로세서(2210)는 제 2 영역(2224)에 로딩된 유효성 검사를 위한 펌웨어 또는 소프트웨어를 구동하고, ECDSA 서명을 이용하여 바이너리 데이터의 유효성을 검사할 수 있다(⑥). 만일 바이너리 데이터가 유효하다면, 컨트롤러(2200)는 호스트(2100)로부터 실행 커맨드(CMD_EX)를 수신할 수 있다(⑦). 그리고, 실행 커맨드(CMD_EX)에 따라 바이너리 데이터가 실행되어 온-보드 SSD(2200 및 2300)에 대한 테스트 동작이 실행될 것이다(⑧). 반면, 바이너리 데이터가 유효하지 않다면, 테스트 동작은 실행되지 않을 것이다.
본 실시 예와 같이, 호스트(2100)로부터 암호화된 바이너리 데이터를 수신하고 테스트 동작을 실행함으로써, 스토리지 시스템의 테스트 동작에 있어서의 보안 성능을 향상시킬 수 있다.
도 14는 본 발명의 실시 예에 따른 스토리지에 대한 테스트 동작을 실행하는 과정을 보여주는 순서도이다.
데이터 스토리지에 대한 테스트 동작은, 사이드-밴드 인터페이스를 통하여 암호화된 바이너리 데이터를 수신하는 단계(S310) 및 바이너리 데이터를 실행하는 단계(S320)를 포함할 수 있다.
S311 단계에서, 암호화된 바이너리 데이터가 수신될 수 있다. 바이너리 데이터는 호스트(예를 들어, 디버거)에 의해 암호화될 수 있다. 암호화된 바이너리 데이터는 JTAG이 아닌 사이드-밴드 인터페이스를 통하여 수신될 수 있다. 바이너리 데이터는 데이터 스토리지에 대한 각종 테스트 동작을 위한 소프트웨어 또는 펌웨어를 포함할 수 있다. 이때, 암호화된 바이너리 데이터가 저장될 메모리 상의 어드레스 정보 및 바이너리 데이터의 사이즈 정보도 함께 수신될 수 있다. 그리고, 바이너리 데이터에 대한 유효성 검사를 위한 ECDSA 서명도 함께 수신될 수 있다.
S313 단계에서, 수신된 어드레스 정보 및 사이즈 정보가 체크될 수 있다. 만일 수신된 어드레스 정보에 따라 암호화된 바이너리 데이터가 메모리에 저장됨으로써 시스템의 충돌이 발생하거나, 또는 암호화된 바이너리 데이터의 크기가 사용 가능한 메모리의 용량보다 크다면(No), 정상적인 테스트 절차를 진행할 수 없다. 이때, 사이드-밴드 매니저는 호스트(예를 들어, 디버거)로 에러 코드를 전송하고 절차는 종료될 수 있다. 반면, 수신된 어드레스 정보 및 사이즈 정보가 적절하다고 판단되면(Yes), S315 단계로 이동할 수 있다.
S315 단계에서, 암호화된 바이너리 데이터가 SRAM 또는 DRAM에 저장될 수 있다. 암호화된 바이너리 데이터는 바이너리 데이터와 함께 수신된 어드레스 정보에 따라 저장될 수 있다.
S317 단계에서, 암호화된 바이너리 데이터가 복호화될 수 있다. 복호화는 SRAM 또는 DRAM에 로딩된 복호화기 또는 복호화 엔진에 의해 실행될 수 있다. 예를 들어, 복호화기 또는 복호화 엔진은 컨트롤러 내의 ROM 또는 불휘발성 메모리 장치(도 12 참조, 2300)로부터 로딩될 수 있다.
S319 단계에서, 바이너리 데이터가 유효한지 여부가 판단될 수 있다. 바이너리 데이터의 유효성은 ECDSA 서명, 그리고 유효성 검사를 위한 소프트웨어 또는 펌웨어를 이용하여 판단될 수 있다. 바이너리 데이터의 유효성 검사를 위한 소프트웨어 또는 펌웨어는 컨트롤러 내의 ROM 또는 불휘발성 메모리 장치(2300)로부터 로딩될 수 있다. 판단 결과에 따라 동작 분기가 발생한다. 바이너리 데이터가 유효하다고 판단되면(Yes), S321 단계로 이동한다. 반면, 그렇지 않으면(No), 절차는 종료한다.
S321 단계에서, 바이너리 데이터를 실행하는 커맨드(CMD_EX)가 수신될 수 있다. 실행 커맨드(CMD_EX)는 데이터 스토리지에 대한 다양한 테스트를 실행하기 위한 다양한 프로토콜을 포함할 수 있다.
S323 단계에서, 바이너리 데이터가 실행될 수 있다. 바이너리 데이터를 실행한 결과, 데이터 스토리지에 대한 다양한 테스트 동작이 실행될 수 있다.
본 실시 예에서는 S311 단계에서 바이너리 데이터를 수신한 후, S321 단계에서 별도의 커맨드에 의해 바이너리 데이터가 실행되는 것으로 설명되었다. 그러나, 실시 예에 따라서, 바이너리 데이터에 실행 커맨드(CMD_EX)가 포함될 수도 있다. 즉, S321 단계는 생략될 수 있으며, 수신된 바이너리 데이터가 유효하다고 판단되면(S319 단계), 실행 커맨드(CMD_EX)가 바로 실행되어 데이터 스토리지에 대한 각종 테스트 동작이 실행될 수 있다.
본 발명의 실시 예에 따르면, JTAG이 아닌 사이드-밴드 인터페이스(예를 들어, I2C, UART, MTCP 등)를 통하여 데이터 스토리지를 테스트하기 위한 다양한 소프트웨어 또는 펌웨어를 데이터 스토리지로 전송할 수 있다. 이때, 소프트웨어 또는 펌웨어를 암호화하여 전송함으로써 테스트 동작에 있어서의 보안 성능을 향상시킬 수 있다. 그리고, 데이터 스토리지를 구성하는 각각의 구성요소들(예를 들어, 컨트롤러, 데이터 스토리지, DRAM 등)을 메모리 벤더가 납품한 이후라 하더라도, 데이터 스토리지에 대한 테스트 동작을 효율적으로 실행할 수 있다.
도 15는 본 발명의 실시 예에 따른 데이터 스토리지의 메모리 블록(VNAND)의 실시 예를 보여주는 도면이다. 도 15를 참조하면, 기판 위에 4개의 서브 블록들이 형성될 수 있다. 각각의 서브 블록들은 기판 위의 워드 라인 컷들 사이에 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)이 레이어 형태로 적층 됨으로써 형성될 수 있다. 적어도 하나의 스트링 선택 라인(SSL)은 스트링 선택 라인 컷으로 분리될 수 있다. 각각의 워드 라인 컷들은, 도시되지 않았지만 공통 소스 라인(Common Source Line; CSL)을 포함할 수 있다. 예를 들어, 각각의 워드 라인 컷에 포함된 공통 소스 라인(CSL)은 공통으로 연결될 수 있다. 비트 라인에 연결된 필라(pillar)가 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)을 관통함으로써, 스트링이 형성될 수 있다.
도 15에서는 워드 라인 컷들 사이의 대상을 서브 블록으로 도시하였는데, 본 발명이 반드시 여기에 제한되지 않는다. 본 발명의 서브 블록은 워드 라인 컷과 스트링 선택 라인 컷 사이의 대상을 서브 블록으로 명명할 수 있다.
본 발명의 실시 예에 따른 블록(BLK)은 두 개의 워드 라인들이 하나로 병합된 구조, 달리 말하면, 워드 라인 병합 구조(merged wordline structure)로 구현될 수 있다.
도 16은 본 발명의 실시 예에 따른 데이터 스토리지의 메모리 블록(VNAND)의 다른 예를 보여주는 도면이다. 설명의 편의를 위하여 메모리 블록(BLK)의 워드 라인의 층수는 4라고 가정한다. 메모리 블록(BLK)은 인접한 직렬 연결된 메모리 셀들의 하단들을 파이프로 연결하는 PBiCS(pipe-shaped bit cost scalable) 구조로 구현될 수 있다. 메모리 블록(BLK)은 m×n (m, n은 자연수)의 스트링들(NS)을 포함한다.
도 16에서는 예시적으로 m=6, n=2인 경우가 도시되었다. 각 스트링(NS)은 직렬 연결된 메모리 셀들(MC1 내지 MC8)을 포함할 수 있다. 여기서 메모리 셀들(MC1 내지 MC8)의 제 1 상단은 스트링 선택 트랜지스터(SST)에 연결되고, 메모리 셀들(MC1 내지 MC8)의 제 2 상단은 접지 선택 트랜지스터(GST)에 연결되고, 메모리 셀들(MC1 내지 MC8)의 하단은 파이프 연결될 수 있다.
스트링(NS)을 구성하는 메모리 셀들은 복수의 반도체 층에 적층 됨으로써 형성될 수 있다. 각 스트링(NS)은 제 1 필라(PL11), 제 2 필라(PL12), 제 1 필라(PL11) 및 제 2 필라(PL12)를 연결하는 필라 연결부(PL13)를 포함할 수 있다. 제 1 필라(PL11)는 비트 라인(예를 들어, BL1)과 필라 연결부(PL13)에 연결되고, 스트링 선택 라인(SSL), 워드 라인들(WL5 ~ WL8) 사이를 관통함으로써 형성될 수 있다. 제 2 필라(PL12)는 공통 소스 라인(CSL)과 필라 연결부(PL13)에 연결되고, 접지 선택 라인(GSL), 워드 라인들(WL1 ~ WL4) 사이를 관통함으로써 형성될 수 있다. 도 16에 도시된 바와 같이, 스트링(NS)은 U 자형 필라 형태로 구현될 수 있다.
예를 들어, 백-게이트(BG)는 기판 위에 형성되고, 백-게이트(BC) 내부에 필라 연결부(PL13)가 구현될 수 있다. 예를 들어, 백-게이트(BG)는 블록(BLK)에 공통적으로 존재할 수 있다. 백-게이트(BG)는 다른 블록의 백-게이트와 서로 분리된 구조일 수 있다.
도 17은 본 발명의 실시 예에 따른 데이터 스토리지가 적용된 컴퓨팅 시스템을 보여주는 블록도이다. 예를 들어, 컴퓨팅 시스템(3000)은 데스크톱(desktop), 랩톱(laptop), UMPC (ultra mobile PC), 넷북(net-book), 태블릿(tablet), 스마트폰과 등과 같이 사이드-밴드 인터페이스를 갖춘 다양한 전자 기기들 중 적어도 하나를 포함할 수 있다.
도 17을 참조하면, 컴퓨팅 시스템(3000)은 CPU(central processing unit)(3100), 칩셋(3200), GPU(graphic processing unit)(3300), 디스플레이(3110), I/O 컨트롤러(3400), I/O 유닛(3410), 네트워크 모듈(3500), 메모리(3600), 온-보드 SSD(3700)를 포함할 수 있다. 온-보드 SSD는 데이터 스토리지를 구성하는 컨트롤러(3710) 및 불휘발성 메모리 장치(3720) 등이 보드 위에 직접 실장되는 데이터 스토리지를 의미할 수 있다.
CPU(3100), 칩셋(3200), GPU(3300), I/O 컨트롤러(3400), 네트워크 모듈(3500), 메모리(3600), 컨트롤러(3710), 및 불휘발성 메모리 장치(3720) 가 보드(board) 상에 제공될 수 있다. 예를 들어, 보드는 인쇄회로 기판(printed circuit board; PCB), 플렉서블 기판(flexible board), 테이프 기판과 같은 다양한 종류의 기판들 중 적어도 하나를 포함할 수 있다. 보드는 그 내부에 내부 배선들이 형성된 연성 인쇄 회로 기판(flexible printed circuit board), 경성 인쇄 회로 기판(rigid printed circuit board), 또는 이들의 조합으로 형성될 수 있다.
CPU(3100)는 컴퓨팅 시스템(3000)을 동작시키기 위한 운영 체제(operating system; OS) 또는 애플리케이션 프로그램(application program)을 구동할 수 있다.
칩셋(3200)은 CPU(3100)의 제어에 따라 컴퓨팅 시스템(3000)에 포함된 다양한 구성 요소들을 제어할 수 있다. 예를 들어, 칩셋(3200)은 GPU(3300), I/O 컨트롤러(3400), 네트워크 모듈(3500), 메모리(3600), 온-보드 SSD(3700)의 전반적인 동작을 제어할 수 있다.
GPU(3300)는 그래픽 데이터를 처리하여 디스플레이(3310)로 전달할 수 있다. 디스플레이(3310)는 GPU(3300)에 의해 처리된 그래픽 데이터를 표시할 수 있다. 디스플레이(3310)의 패널은 액정 디스플레이 패널(liquid crystal display panel; LCD), 전기 영동 디스플레이 패널(electrophoretic display panel), 일렉트로웨팅 디스플레이 패널(electrowetting display panel), 플라즈마 디스플레이 패널(plasma display panel; PDP), 유기 발광 다이오드(ogarnic light-emitting diodes; OLED) 등의 다양한 패널일 수 있다.
I/O 컨트롤러(3400)는 I/O 유닛(3410)에 의해 컴퓨팅 시스템(3000)으로 입력된 정보를 처리할 수 있다. 예를 들어, I/O 유닛(3410)은 PS2 포트, PCI 슬롯, DIMM 슬롯, USB 포트, RGB 포트, DVI 포트, HDMI 포트 등을 통하여 I/O 컨트롤러(3400)에 연결될 수 있다.
네트워크 모듈(3500)은 컴퓨팅 시스템(3000)과 외부의 시스템 또는 네트워크 사이의 인터페이싱을 제공할 수 있다. 예를 들어, 네트워크 모듈(3500)은 Wi-Fi, 블루투스, Wireless-MAN (Metropolitan Area Network), LTE-A (Long Term Evolution Advanced), EDGE (Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution), HSPA+ (Evolved High-Speed Packet Access), 이더넷(Ethernet), 파이버 채널(Fibre Channel), 전력선 통신망(Power Line communication)과 같은 프로토콜에 의해 동작할 수 있다.
메모리(3600)는 컴퓨팅 시스템(3000)의 워킹 메모리로 사용될 수 있다. 부팅 시, 램(3600)에는 온-보드 SSD(3700)로부터 읽혀진 운영 체제(OS), 응용 프로그램 등이 로딩될 수 있다. 예를 들어, 메모리(3600)는 메모리 모듈로 구성될 수 있다. 이 경우, 메모리 모듈은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다.
온-보드 SSD(3700)는 컨트롤러(3710), 불휘발성 메모리 장치(3720), 및 DRAM(미도시)를 포함할 수 있다. 온-보드 SSD(3700)는 사이드-밴드 채널(SBI)를 통하여 디버거(3800)와 연결될 수 있다.
온-보드 SSD(3700)를 테스트하기 위한 소프트웨어 또는 펌웨어 등이 사이드-밴드 채널(SBI)을 통하여 온-보드 SSD(3700)로 전송될 수 있다. 테스트를 위한 소프트웨어 또는 펌웨어 등은 바이너리 데이터의 형태로 전송될 수 있다. 보안 성능 향상을 위해 바이너리 데이터는 암호화되어 온-보드 SSD(3700)로 전송될 수 있다. 바이너리 데이터의 전송과 함께 바이너리 데이터의 유효성 검사를 위한 ECDSA 서명도 함께 전송될 수 있다. 바이너리 데이터의 유효성 검사를 위한 펌웨어 또는 소프트웨어는 컨트롤러(3710)내의 ROM 또는 불휘발성 메모리 장치(3720)에 저장될 수 있다.
비록 도면에는 도시되지 않았지만, 컴퓨팅 시스템(3000)은 바이오스(basic input/output system; BIOS)가 저장되는 ROM, 카메라 이미지 프로세서(camera image processor; CIS), 그리고 배터리 등을 더 포함할 수 있다.
이상 상술한 바와 같이 본 발명의 실시 예에 따르면, 비록 온-보드 SSD를 구성하는 컨트롤러, 불휘발성 메모리 장치 등이 메모리 벤더에 의해 납품된 이후라 하더라도, 온-보드 SSD에 대한 테스트 동작을 효율적으로 실행할 수 있다. 특히, JTAG 환경 하에서 데이터 스토리지에 대한 테스트를 실행할 수 없다고 하더라도, 사이드-밴드 채널을 통하여 테스트 동작을 실행할 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
1000: 데이터 스토리지
1100, 2200: 컨트롤러
1110, 2210: 프로세서
1120, 2220: SRAM
1130: ROM
1140, 2240: 사이드-밴드 매니저
1150: 버퍼 매니저
1160: 불휘발성 메모리 인터페이스
1200: 불휘발성 메모리 장치
1300: DRAM
2000: 스토리지 시스템
2100: 호스트
2110: 암호화기
2270: 복호화기

Claims (14)

  1. 데이터 스토리지에 있어서:
    적어도 하나의 불휘발성 메모리 장치; 그리고
    상기 적어도 하나의 불휘발성 메모리와 연결되는 컨트롤러를 포함하되,
    상기 컨트롤러는 사이드밴드 인터페이스를 통하여 호스트로부터 바이너리 데이터를 수신하고,
    상기 컨트롤러는 상기 바이너리 데이터를 저장하는 버퍼를 포함하고,
    상기 컨트롤러는 테스트 동작을 실행하기 위해 호스트로부터의 요청에 따라 상기 바이너리 데이터를 실행하고,
    상기 데이터 스토리지는 상기 적어도 하나의 불휘발성 메모리 장치 및 상기 컨트롤러가 보드 상에 실장되는 온-보드 SSD(On-board solid state drive)이고,
    상기 바이너리 데이터는 상기 테스트 동작의 속성에 따라 분할되어 상기 호스트로부터 수신되고,
    상기 분할된 바이너리 데이터의 크기는 상기 버퍼의 사이즈 이하인 데이터 스토리지.
  2. 제 1 항에 있어서,
    상기 사이드밴드 인터페이스는 JTAG (Joint Test Action Group)이 아닌 인터페이스인 데이터 스토리지.
  3. 제 1 항에 있어서,
    상기 컨트롤러는 상기 바이너리 데이터를 저장하기 위한 주소 정보 및 상기 바이너리 데이터에 대응하는 사이즈 정보를 수신하는 데이터 스토리지.
  4. 제 3 항에 있어서,
    상기 컨트롤러는 상기 주소 정보 및 상기 사이즈 정보에 따라 상기 바이너리 데이터를 상기 버퍼에 저장하는 데이터 스토리지.
  5. 제 1 항에 있어서,
    상기 컨트롤러는 상기 호스트로부터 ECDSA (elliptic curve digital signature algorithm) 서명을 수신하고, 상기 ECDSA 서명을 이용하여 상기 바이너리 데이터의 유효성을 검사하는 데이터 스토리지.
  6. 제 1 항에 있어서,
    상기 컨트롤러는 상기 호스트로부터 암호화된 바이너리 데이터를 수신하고, 상기 암호화된 바이너리 데이터를 복호화하는 데이터 스토리지.
  7. 제 1 항에 있어서,
    상기 보드는 인쇄 회로 기판, 플렉서블 기판, 테이프 기판 중 적어도 하나를 포함하는 데이터 스토리지.
  8. 컨트롤러를 포함하고 호스트와 데이터를 송수신하는 데이터 스토리지의 동작 방법에 있어서:
    상기 컨트롤러에 포함된 사이드밴드 인터페이스를 통하여, 상기 호스트로부터 상기 데이터 스토리지와 관련된 테스트 동작을 수행하는 것과 관련되는 바이너리 데이터를 수신하는 단계; 그리고
    상기 컨트롤러에 의해, 상기 호스트로부터의 요청에 따라 상기 바이너리 데이터를 실행하는 단계를 포함하되,
    상기 데이터 스토리지는 적어도 하나의 불휘발성 메모리 장치 및 상기 컨트롤러가 보드 상에 실장되는 온-보드 SSD(On-board solid state drive)이고,
    상기 바이너리 데이터를 수신하는 단계는, 상기 데이터 스토리지를 위한 상기 테스트 동작의 속성에 따라 상기 바이너리 데이터를 분할하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 바이너리 데이터를 수신하는 단계는 ECDSA (elliptic curve digital signature algorithm) 서명을 수신하는 단계를 포함하고,
    상기 컨트롤러는 상기 바이너리 데이터의 유효성 검사를 위한 상기 ECDSA 서명을 사용하는 방법.
  10. 제 9 항에 있어서,
    상기 바이너리 데이터의 주소 정보 및 사이즈 정보에 따라 상기 바이너리 데이터를 버퍼에 저장하는 단계; 그리고
    상기 ECDSA 서명을 사용하여 상기 바이너리 데이터의 유효성을 검사하는 단계를 더 포함하되,
    상기 바이너리 데이터를 저장하는 단계와 상기 바이너리 데이터의 유효성을 체크하는 단계는 상기 바이너리 데이터를 수신한 후 실행되는 방법.
  11. 제 8 항에 있어서,
    상기 분할된 바이너리 데이터의 전부가 실행되었는지 여부를 판별하는 단계를 더 포함하는 방법.

  12. 데이터 스토리지에 있어서:
    적어도 하나의 불휘발성 메모리 장치; 그리고
    상기 적어도 하나의 불휘발성 메모리 장치와 연결된 컨트롤러를 포함하되,
    상기 컨트롤러는 사이드밴드 인터페이스를 통하여 호스트로부터 바이너리 데이터를 수신하고,
    상기 컨트롤러는 상기 바이너리 데이터에 대한 유효성 검사를 수행하고,
    상기 컨트롤러는, 상기 유효성 검사가 상기 바이너리 데이터가 유효함을 나타내는 경우, 적어도 하나의 테스트 동작을 수행하기 위한 상기 바이너리 데이터를 실행하고,
    상기 데이터 스토리지는 상기 적어도 하나의 불휘발성 메모리 장치 및 상기 컨트롤러가 보드 상에 실장되는 온-보드 SSD(On-board solid state drive)이고,
    상기 바이너리 데이터는 어드레스 정보 및 사이즈 정보를 포함하고,
    상기 컨트롤러는 상기 바이너리 데이터의 사이즈가 제 1 메모리의 이용가능한 공간 이하인지 여부를 판별하고,
    상기 컨트롤러는, 상기 바이너리 데이터의 상기 사이즈가 상기 제 1 메모리의 상기 이용가능한 공간보다 큰 경우, 에러 코드를 상기 호스트로 전송하고,
    상기 컨트롤러는, 상기 바이너리 데이터의 상기 사이즈가 상기 제 1 메모리의 상기 이용가능한 공간 이하인 경우, 상기 바이너리 데이터를 상기 제 1 메모리의 상기 이용가능한 공간에 저장하고,
    상기 컨트롤러는, 상기 바이너리 데이터의 상기 사이즈가 상기 제 1 메모리의 상기 이용가능한 공간 이하인 경우, 상기 적어도 하나의 테스트 동작을 수행하기 위한 상기 바이너리 데이터를 실행하는 데이터 스토리지.
  13. 제 12 항에 있어서,
    상기 사이드밴드 인터페이스는 JTAG (Joint Test Action Group)이 아닌 인터페이스인 데이터 스토리지.
  14. 제 12 항에 있어서,
    상기 바이너리 데이터는 ECDSA (elliptic curve digital signature algorithm) 서명을 포함하고,
    상기 컨트롤러는 상기 ECDSA 서명을 이용하여 상기 바이너리 데이터에 대한 유효성 검사를 수행하는 데이터 스토리지.
KR1020150080039A 2015-06-05 2015-06-05 데이터 스토리지 및 그것의 동작 방법 KR102266733B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150080039A KR102266733B1 (ko) 2015-06-05 2015-06-05 데이터 스토리지 및 그것의 동작 방법
US15/092,804 US10170198B2 (en) 2015-06-05 2016-04-07 Data storage and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150080039A KR102266733B1 (ko) 2015-06-05 2015-06-05 데이터 스토리지 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160143986A KR20160143986A (ko) 2016-12-15
KR102266733B1 true KR102266733B1 (ko) 2021-06-22

Family

ID=57452022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150080039A KR102266733B1 (ko) 2015-06-05 2015-06-05 데이터 스토리지 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10170198B2 (ko)
KR (1) KR102266733B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10430586B1 (en) * 2016-09-07 2019-10-01 Fireeye, Inc. Methods of identifying heap spray attacks using memory anomaly detection
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
KR102384773B1 (ko) * 2017-10-12 2022-04-11 삼성전자주식회사 스토리지 장치, 컴퓨팅 시스템, 그리고 그것의 디버깅 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030100321A1 (en) 2001-05-03 2003-05-29 Herman Rao Instantaneous polling utilizing a message service mobile phone network
US20130067233A1 (en) 1997-02-03 2013-03-14 Certicom Corp. Data card verification system
US20140289559A1 (en) 2013-03-21 2014-09-25 Kabushiki Kaisha Toshiba Test method for nonvolatile memory
US20160285624A1 (en) 2015-03-26 2016-09-29 Intel Corporation Pseudorandom bit sequences in an interconnect

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0076255A1 (en) * 1981-04-07 1983-04-13 BENTON, William M. Transaction verification system using optical data communication link
DE4107020A1 (de) * 1991-03-05 1992-09-10 Franzis Verlag Gmbh Verfahren zur zweidimensionalen speicherung von daten auf einem bedruckbaren oder fotografisch entwickelbaren medium
US7240130B2 (en) 2003-06-12 2007-07-03 Hewlett-Packard Development Company, L.P. Method of transmitting data through an 12C router
US7630304B2 (en) 2003-06-12 2009-12-08 Hewlett-Packard Development Company, L.P. Method of overflow recovery of I2C packets on an I2C router
US7010639B2 (en) 2003-06-12 2006-03-07 Hewlett-Packard Development Company, L.P. Inter integrated circuit bus router for preventing communication to an unauthorized port
US7313136B2 (en) 2003-06-26 2007-12-25 Nokia Corporation Method and system establishing a data link layer protocol on a I2C™ physical layer connection
US8270611B2 (en) 2004-03-31 2012-09-18 Motorola Solutions, Inc. System and method for communicating with a key variable loader (KVL) using a standard universal asynchronous receiver transmitter (UART) peripheral
US8032745B2 (en) 2005-12-20 2011-10-04 International Business Machines Corporation Authentication of I2C bus transactions
KR100801759B1 (ko) 2005-12-29 2008-02-11 엠텍비젼 주식회사 슬레이브의 디버깅 방법 및 시스템
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
JP2010086318A (ja) 2008-09-30 2010-04-15 Digital Electronics Corp デバッグシステム
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
KR101257041B1 (ko) 2011-10-04 2013-04-22 한국항공우주연구원 Ahb-uart를 이용한 테스트 디버깅 방법 및 그 시스템
KR101365359B1 (ko) 2012-04-26 2014-02-27 합자회사 에스에이치해양수산개발 해삼가공품의 제조방법 및 이에 의해 제조되는 해삼가공품
JP6089492B2 (ja) 2012-08-14 2017-03-08 富士通株式会社 システム制御装置、情報処理システム、システム制御装置の制御方法およびシステム制御装置の制御プログラム
KR20140142793A (ko) * 2013-06-04 2014-12-15 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067233A1 (en) 1997-02-03 2013-03-14 Certicom Corp. Data card verification system
US20030100321A1 (en) 2001-05-03 2003-05-29 Herman Rao Instantaneous polling utilizing a message service mobile phone network
US20140289559A1 (en) 2013-03-21 2014-09-25 Kabushiki Kaisha Toshiba Test method for nonvolatile memory
US20160285624A1 (en) 2015-03-26 2016-09-29 Intel Corporation Pseudorandom bit sequences in an interconnect

Also Published As

Publication number Publication date
KR20160143986A (ko) 2016-12-15
US20160358670A1 (en) 2016-12-08
US10170198B2 (en) 2019-01-01

Similar Documents

Publication Publication Date Title
US10534560B2 (en) Data storage device and data processing system having the same
US9728277B2 (en) Method of repairing non-volatile memory based storage device and method of operating electronic system including the storage device
US20160070493A1 (en) Data storage device and method of operating the same
US20230139330A1 (en) Storage device for a blockchain network based on proof of space and system including the same
US20160357462A1 (en) Nonvolatile Memory Modules and Data Management Methods Thereof
US9996282B2 (en) Method of operating data storage device and method of operating system including the same
US9875170B2 (en) Data storage device for self-detecting error and logging operation and method of operating the same
US9256528B2 (en) Method for operating a memory controller and a system having the memory controller
CN109800187B (zh) 被配置为更新现场可编程门阵列的存储设备及其操作方法
US10474473B2 (en) Technology to facilitate rapid booting with high-speed and low-speed nonvolatile memory
CN110929261B (zh) 存储器系统及其操作方法
US11269515B2 (en) Secure authentication for debugging data transferred over a system management bus
TWI844212B (zh) 韌體更新方法、裝置及資料系統
KR102266733B1 (ko) 데이터 스토리지 및 그것의 동작 방법
KR20190102438A (ko) 전자 장치 및 그것의 동작 방법
KR102538258B1 (ko) 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템
KR20220087297A (ko) 처리 코드를 실행하는 스토리지 장치 및 이의 동작 방법
KR102450556B1 (ko) 불휘발성 메모리 장치들을 제어할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US12061808B2 (en) Storage device for tuning an interface with a host
US11119938B2 (en) Apparatus and method to synchronize memory map between a storage device and host
CN114385070A (zh) 主机、数据存储装置、数据处理系统以及数据处理方法
KR102686745B1 (ko) 필드 프로그래머블 게이트 어레이를 업데이트하도록 구성된 스토리지 장치 및 그것의 동작 방법
KR102720140B1 (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
US20240193105A1 (en) Computational storage device and method of operating the same
US20210026782A1 (en) Data storage apparatus, operating method thereof, and controller therefor

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant