KR20170002765A - 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법 - Google Patents

저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법 Download PDF

Info

Publication number
KR20170002765A
KR20170002765A KR1020150092376A KR20150092376A KR20170002765A KR 20170002765 A KR20170002765 A KR 20170002765A KR 1020150092376 A KR1020150092376 A KR 1020150092376A KR 20150092376 A KR20150092376 A KR 20150092376A KR 20170002765 A KR20170002765 A KR 20170002765A
Authority
KR
South Korea
Prior art keywords
host
storage device
attribute
error
log
Prior art date
Application number
KR1020150092376A
Other languages
English (en)
Other versions
KR102268699B1 (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 KR1020150092376A priority Critical patent/KR102268699B1/ko
Priority to US15/081,128 priority patent/US10176029B2/en
Publication of KR20170002765A publication Critical patent/KR20170002765A/ko
Application granted granted Critical
Publication of KR102268699B1 publication Critical patent/KR102268699B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/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/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Abstract

본 발명에 따른 저장 장치는 복수의 에러 로그들을 저장하는 저장부 및 물리 계층을 포함하고, 상기 물리 계층을 통해 호스트와 전기적 신호를 주고 받는다. 저장 장치의 동작 방법은 상기 호스트로부터 디버깅 커맨드를 수신하는 단계; 상기 수신된 디버깅 커맨드에 응답하여 상기 물리 계층에 포함된 제1 속성을 제1 값으로 설정하는 단계; 상기 호스트의 제어에 따라 상기 제1 속성을 상기 제1 값과 다른 제2 값으로 설정하는 단계; 상기 제2 값으로 설정된 상기 제1 속성에 응답하여, 상기 복수의 에러 로그들 중 어느 하나의 에러 로그를 제2 속성에 설정하는 단계; 및 상기 호스트의 제어에 따라, 상기 제2 속성에 설정된 상기 어느 하나의 에러 로그를 상기 호스트로 전송하는 단계를 포함한다.

Description

저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법{OPERATION METHOD OF STORAGE DEVICE, OPERATION METHOD OF HOST DEVICE, AND OPERATION METHOD OF USER SYSTEM INCLUDING STORAGE DEVICE AND HOST DEVICE}
본 발명은 저장 매체에 관한 것으로 더욱 상세하게는 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법에 관한 것이다.
저장 매체는 다른 전자 장치와 결합되어 데이터를 전송하거나 또는 수신된 데이터를 저장하도록 구성된다. 저장 매체는 인터페이스 기술을 사용하여 다른 전자 장치와 데이터를 교환한다. 저장 매체 또는 전자 장치의 종류가 증가함에 따라, 인터페이스 규약이 정의되고 있다.
일 예로서, 최근에는 범용 플래시 스토리지(UFS; Universal Flash Storage) 인터페이스가 제안되었다. UFS는 다중 계층 구조를 갖도록 구성된다. 특히, UFS는 Unipro(Unified Protocol)라 불리는 인터페이스 규약을 사용한다. Unipro는 MIPI(mobile industry processor interface) 연합(alliance)에 의해 모바일 장치의 인터페이싱 과정을 통일하기 위해 제안된 링크 계층(link layer)을 가리킨다. UniPro는 "PHY"라고 불리는 피지컬 계층(physical layer)을 지원한다. UniPro 및 PHY를 이용하여 인터페이싱을 수행하는 전자 장치는 다른 전자 장치와 데이터를 교환하기 위한 송신기 및 수신기를 포함한다.
최근에는 통신 기술 또는 반도체 기술이 발달함에 따라, 저장 매체의 성능이 향상되고 있다. 이로 인하여, 저장 매체의 동작 속도가 증가하고, 저장 매체가 다양한 기능을 포함하도록 펌웨어가 구성된다. 이러한 동작 속도의 증가 또는 다양한 기능들은 저장 매체의 잦은 오류를 발생시킬 수 있다. 이러한 오류를 검출 또는 정정하기 위하여 오류 정보를 추출하기 위한 별도의 디버깅 기법이 요구된다. 일 예로서, 상술된 UFS는 오류가 발생한 경우, UFS와 접속된 호스트를 리셋하기 때문에, 제조사 또는 개발자가 오류 상황을 판단하기 어려운 문제점이 있다.
본 발명의 목적은 다중 계층 구조를 갖는 사용자 시스템에서 상위 계층이 정상적으로 동작하지 않는 경우, 하위 계층의 통신을 기반으로 에러 로그를 추출하는 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 저장 장치는 복수의 에러 로그들을 저장하는 저장부 및 물리 계층을 포함하고, 상기 물리 계층을 통해 호스트와 전기적 신호를 주고 받는다. 저장 장치의 동작 방법은 상기 호스트로부터 디버깅 커맨드를 수신하는 단계; 상기 수신된 디버깅 커맨드에 응답하여 상기 물리 계층에 포함된 제1 속성을 제1 값으로 설정하는 단계; 상기 호스트의 제어에 따라 상기 제1 속성을 상기 제1 값과 다른 제2 값으로 설정하는 단계; 상기 제2 값으로 설정된 상기 제1 속성에 응답하여, 상기 복수의 에러 로그들 중 어느 하나의 에러 로그를 제2 속성에 설정하는 단계; 및 상기 호스트의 제어에 따라, 상기 제2 속성에 설정된 상기 어느 하나의 에러 로그를 상기 호스트로 전송하는 단계를 포함한다.
실시 예로서, 저장 장치의 동작 방법은 상기 복수의 에러 로그들이 모두 상기 호스트로 전송되었는지 판별하는 단계; 및 상기 복수의 에러 로그들이 모두 상기 호스트로 전송된 경우, 상기 디버깅 커맨드에 대한 응답을 상기 호스트로 전송하는 단계를 더 포함한다.
실시 예로서, 상기 제2 값으로 설정된 상기 제1 속성에 따라 상기 복수의 에러 로그들 중 어느 하나의 에러 로그를 제2 속성에 설정하는 단계는 상기 수신된 디버깅 커맨드를 기반으로 상기 복수의 에러 로그들 중 일부 에러 로그를 선택하는 단계; 및 상기 선택된 일부 에러 로그 중 상기 어느 하나의 에러 로그를 상기 제2 속성에 설정하는 단계를 포함한다.
실시 예로서, 상기 선택된 일부 에러 로그가 모두 상기 호스트로 전송되었는지 판별하는 단계; 및 상기 선택된 일부 에러 로그가 모두 상기 호스트로 전송된 경우, 상기 디버깅 커맨드에 대한 응답을 상기 호스트로 전송하는 단계를 포함한다.
실시 예로서, 상기 수신된 디버깅 커맨드에 응답하여 상기 상호 접속 계층에 포함된 복수의 속성들 중 상기 제1 및 제2 속성들을 선택하는 단계를 더 포함한다.
실시 예로서, 상기 디버깅 커맨드에 응답하여 상기 저장 장치가 인터럽트를 발생하되, 상기 디버깅 커맨드는 제조사 커맨드, 예비 커맨드, 또는 커맨드들의 조합 중 적어도 하나를 포함하는 것을 특징으로 한다.
실시 예로서, 상기 디버깅 커맨드는 상기 물리 계층에 의해 식별되는 비트 조합, 식별 코드, 또는 장치 ID 중 적어도 하나를 포함한다.
실시 예로서, 상기 제1 속성은 상기 복수의 에러 로그가 상기 제2 속성에 갱신되었음을 알리는 플래그를 저장하기 위한 저장 영역을 가리키고, 상기 제2 속성은 상기 복수의 에러 로그들 중 상기 호스트로 전송될 에러 로그를 저장하기 위한 저장 영역을 가리킨다.
실시 예로서, 상기 호스트 및 상기 저장 장치는 UFS(Universal Flash Storage) 통신 프로토콜을 기반으로 서로 통신하는 것을 특징으로 한다.
실시 예로서, 상기 물리 계층은 상호 접속 계층(UIC; UFS Interconnection Layer)이되, 상기 제1 및 제2 속성들은 상기 상호 접속 계층의 유니프로(Unipro)에 포함되는 것을 특징으로 한다.
본 발명의 다른 실시 예에 따른 사용자 시스템은 제1 물리 계층을 포함하는 호스트 장치 및 제2 물리 계층을 포함하는 저장 장치를 포함한다. 상기 사용자 시스템의 동작 방법은 상기 호스트가 상기 저장 장치의 물리 계층에 포함된 제1 속성으로부터 제1 값을 획득하는 단계; 상기 호스트가 상기 저장 장치로 디버깅 커맨드를 전송하는 단계; 상기 저장 장치가 상기 디버깅 커맨드에 응답하여 상기 제1 속성을 제2 값을 설정하는 단계; 상기 호스트가 상기 제1 속성이 상기 제2 값인지 판별하고, 상기 제1 속성이 상기 제2 값인 경우, 상기 제1 속성을 상기 제1 값으로 재설정하는 단계; 상기 저장 장치가 상기 제1 속성이 제1 값인지 판별하고, 상기 제1 속성이 상기 제1 값인 경우, 상기 제2 물리 계층에 포함된 제2 속성에 추출될 에러 로그를 설정하고, 상기 제1 속성을 상기 제2 값으로 설정하는 단계; 및 상기 호스트가 상기 제1 속성이 상기 제2 값인지 판별하고, 상기 제1 속성이 상기 제2 값인 경우, 상기 제2 속성으로부터 상기 추출될 에러 로그를 획득하는 단계를 포함하되, 상기 호스트 장치의 물리 계층 및 상기 저장 장치의 물리 계층은 P2P(Peer to Peer) 통신을 기반으로 서로 통신하는 것을 특징으로 한다.
실시 예로서, 상기 사용자 시스템의 동작 방법은 상기 호스트가 상기 저장 장치로부터 모든 에러 로그가 추출되었는지 판별하는 단계; 및 상기 저장 장치로부터 모든 에러 로그가 추출되지 않은 경우, 상기 호스트가 상기 제1 속성을 상기 제1 값으로 설정하는 단계를 더 포함한다.
실시 예로서, 상기 저장 장치가 상기 제1 속성이 제1 값인지 판별하고, 상기 제1 속성이 상기 제1 값인 경우, 상기 물리 계층에 포함된 제2 속성에 추출될 에러 로그를 설정하고, 상기 제1 속성을 상기 제2 값으로 설정하는 단계는, 상기 저장 장치가 상기 제1 속성이 제1 값인지 판별하고, 상기 제1 속성이 상기 제1 값인 경우, 상기 수신된 디버깅 커맨드를 기반으로 복수의 에러 로그들 중 상기 추출될 에러 로그를 선택하는 단계; 및 상기 저장 장치가 상기 선택된 추출될 에러 로그를 상기 제2 속성에 설정하는 단계를 포함한다.
실시 예로서, 상기 호스트 및 상기 저장 장치는 UFS(Universal Flash Storage) 통신 프로토콜을 기반으로 서로 통신하는 것을 특징으로 한다.
실시 예로서, 상기 제1 및 제2 물리 계층들 각각은 MIPI(Mobile Industry Processor Interface) 유니프로(Unipro) 및 M-PHY를 포함하는 것을 특징으로 한다.
실시 예로서, 상기 호스트 및 상기 저장 장치는 상기 MIPI 유니프로에 포함된 장치 관리 객체의 서비스 프리미티브를 기반으로 상기 제1 속성 또는 상기 제2 속성을 설정하거나 또는 획득하는 것을 특징으로 한다.
본 발명의 또 다른 실시 예에 따른 호스트 장치는 제1 물리 계층을 포함하고, 상기 제1 물리 계층을 통해 저장 장치와 전기적 신호를 주고 받도록 구성된다. 상기 호스트 장치의 동작 방법은 상기 저장 장치로 디버깅 커맨드를 송신하는 단계; 상기 저장 장치의 제2 물리 계층에 포함된 제1 속성으로부터 제1 값을 획득하는 단계; 상기 제1 속성을 제2 값으로 설정하는 단계; 상기 제1 속성을 제2 값으로 설정한 이후에, 상기 제1 속성이 상기 제1 값인지 판별하는 단계; 상기 제1 속성이 상기 제1 값인 경우, 상기 제2 물리 계층에 포함된 제2 속성으로부터 에러 로그를 획득하는 단계를 포함한다.
실시 예로서, 상기 호스트 장치의 동작 방법은 상기 저장 장치로부터 모든 에러 로그가 추출되었는지 판별하는 단계; 및 상기 저장 장치로부터 모든 에러 로그가 추출되지 않은 경우, 상기 제1 속성을 상기 제2 값으로 설정하는 단계를 더 포함한다.
실시 예로서, 상기 디버깅 커맨드는 상기 저장 장치에 포함된 복수의 에러 로그들 중 추출될 에러 로그가 상기 저장 장치에 의해 선택되기 위한 선택 정보를 포함하는 것을 특징으로 한다.
실시 예로서, 상기 호스트 및 상기 저장 장치는 UFS(Unuiversal Flash Storage) 통신 프로토콜을 기반으로 서로 통신하는 것을 특징으로 한다.
본 발명에 따르면, 사용자 시스템은 하위 계층(즉, 물리 계층)의 통신을 기반으로 저장 장치에 대한 에러 로그를 선택적으로 추출함으로써, 향상된 신뢰성 및 향상된 성능을 갖는 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 3은 도 1의 사용자 시스템의 다중 계층 구조를 예시적으로 보여주는 도면이다.
도 4는 도 1의 사용자 시스템의 디버깅 동작(또는 에러 로그 추출 동작)을 설명하기 위한 블록도이다.
도 5는 도 4의 저장 장치의 동작을 보여주는 순서도이다.
도 6은 도 4의 사용자 시스템의 동작을 더욱 상세하게 설명하기 위한 순서도이다.
도 7은 본 발명의 다른 실시 예에 따른 사용자 시스템을 설명하기 위한 블록도이다.
도 8은 도 7의 저장 장치의 동작을 보여주는 순서도이다.
도 9는 도 7의 사용자 시스템의 동작을 상세하게 보여주는 순서도이다.
도 10은 본 발명의 또 다른 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 11은 도 10의 저장 장치의 동작을 보여주는 순서도이다.
도 12는 도 10의 사용자 시스템의 동작을 상세하게 보여주는 순서도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 14는 도 13의 저장 장치의 동작을 보여주는 순서도이다.
도 15는 도 13의 사용자 시스템의 동작을 상세하게 보여주는 순서도이다.
도 16은 본 발명의 또 다른 실시 예에 따른 사용자 시스템의 계층 구조를 보여주는 도면이다.
도 17은 본 발명의 실시 예들에 따른 저장 장치가 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 18은 본 발명에 따른 저장 장치가 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 19는 본 발명의 실시 예에 따른 저장 장치를 포함하는 전자 시스템의 구성 및 본 발명의 실시 예에 따라 작동하는 인터페이스들을 나타낸 블록도이다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 당업자에 의해 수행될 수 있다. 더욱이, 잘 알려진 기능들 및 구조들에 대한 설명들은 명확성 및 간결성을 위하여 생략된다. 본문에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
상세한 설명에서 사용되는 부(unit), 모듈(module), 계층(layer) 등의 용어를 참조하여 설명되는 구성 요소들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 회로, 프로세서, 컴퓨터, 집적회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서의 당업자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
또한, 이하에서, 설명의 편의를 위하여 특정 실시 예들을 기반으로 본 발명이 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다양한 실시 예들 각각이 구현되거나 또는 다양한 실시 예들의 조합이 구현될 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 도 1을 참조하면, 사용자 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함한다. 예시적으로, 사용자 시스템(100)은 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 서버 컴퓨터, 넷-북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나를 포함할 수 있다.
호스트(110)는 사용자 시스템(100)이 동작하는데 요구되는 다양한 동작을 수행할 수 있다. 예를 들어, 호스트(110)는 사용자 시스템(100)에서 사용되는 운영 체제(OS)를 구동하고, 운영 체제상에서 다양한 응용 프로그램들을 실행할 수 있다. 호스트(110)는 저장 장치(120)에 데이터를 기입하거나 또는 저장 장치(120)에 기입된 데이터를 읽을 수 있다. 예시적으로, 호스트(110)는 중앙 처리 장치(CPU; Central Processing Unit), 애플리케이션 프로세서(AP; Application Processor) 등으로 제공될 수 있다. 또는, 호스트(110)는 별도의 디버깅 장치일 수 있다.
호스트(110)는 미리 정해진 인터페이스를 통해 저장 장치(120)와 통신할 수 있다 예를 들어, 호스트(110)는 저장 장치(120)와 범용 플래시 스토리지(UFS; Universal Flash Storage) 인터페이스를 기반으로 서로 통신할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트(110) 및 저장 장치(120)는 DDR(Double Data Rate), DDR2, DDR3, DDR4, LPDDR(Low Power DDR), USB (Universal Serial Bus), MMC (multimedia card), embedded MMC, PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), NVMe (Nonvolatile Memory express) 등과 같은 다양한 통신 규격들 중 적어도 하나를 기반으로 서로 통신할 수 있다.
저장 장치(120)는 메모리 컨트롤러(130) 및 불휘발성 메모리 장치(140)를 포함한다. 메모리 컨트롤러(130)는 호스트(110)의 제어에 따라 불휘발성 메모리 장치(140)에 데이터를 기입하거나 또는 불휘발성 메모리 장치(140)에 기입된 데이터를 읽을 수 있다.
불휘발성 메모리 장치(140)는 메모리 컨트롤러(130)의 제어에 따라 데이터를 기입하거나 또는 기입된 데이터를 출력할 수 있다. 예시적으로, 불휘발성 메모리 장치(140)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다. 간결한 설명을 위하여, 불휘발성 메모리 장치(140)는 낸드 플래시 메모리를 포함하는 것으로 가정한다. 예시적으로, 불휘발성 메모리 장치(140)는 복수의 다이들, 복수의 칩들, 또는 복수의 패키지들을 포함할 수 있고, 복수의 채널들을 통해 메모리 컨트롤러(130)와 연결될 수 있다.
예시적으로, 본 발명의 기술적 사상에 따른 예시적인 실시 예로서, 불휘발성 메모리 장치(140)는 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호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
예시적으로, 호스트(110)의 제어에 따라 저장 장치(120)가 동작하는 도중에, 에러가 발생할 수 있다. 예를 들어, 저장 장치(120)에서 구동되는 펌웨어 또는 하드웨어에서 에러가 발생할 수 있다. 이 경우, 저장 장치(120)에서 발생한 에러에 대한 정보(즉, 에러 로그)를 추출하기 위한 별도의 디버깅 동작이 요구된다.
본 발명에 따른 저장 장치(120)의 메모리 컨트롤러(130)는 저장부(131) 및 추출부(132)를 포함한다. 저장부(131)는 저장 장치(120)가 동작하는 도중에 에러가 발생한 경우, 에러 로그(또는, 디버깅 로그)를 저장하도록 구성된다. 예를 들어, 저장 장치(120)가 동작하는 도중에 에러가 발생한 경우, 메모리 컨트롤러(130)는 발생한 에러에 대한 에러 로그를 저장부(131)에 저장할 수 있다. 예시적으로, 저장부(131)는 SRAM일 수 있다.
추출부(132)는 호스트(110)의 제어에 따라 저장부(131)에 저장된 에러 로그를 호스트(110)로 전송할 수 있다. 예시적으로, 추출부(132)는 저장부(131)에 저장된 에러 로그를 선택적으로 호스트(110)로 전송할 수 있다. 예시적으로, 추출부(132)는 반복 동작을 통해 저장부(131)에 저장된 에러 로그를 호스트(110)로 전송할 수 있다.
예시적으로, 저장 장치(120)는 다중 계층 구조를 기반으로 구현될 수 있다. 즉, 저장 장치(120)는 복수의 계층들을 포함하도록 구현될 수 있다. 예시적으로, 메모리 컨트롤러(130)의 추출부(132)는 복수의 계층들 중 하위 계층(또는 최하위 계층)에 포함될 수 있다. 예시적으로, 하위 계층은 복수의 계층들 중 호스트(110)와 직접적으로 전기적 신호를 주고받는 물리 계층(physical layer)을 가리킬 수 있다. 즉, 저장 장치(120)의 에러로 인하여 복수의 계층들 중 상위 계층이 정상적으로 동작하지 않더라도, 호스트(110)는 추출부(132)를 통해 정상적으로 에러 로그를 추출할 수 있다. 따라서, 향상된 신뢰성을 갖는 저장 장치가 제공된다.
도 2는 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 메모리 컨트롤러(130)는 저장부(131), 프로세서(133), ROM(134), 호스트 인터페이스(135), 및 플래시 인터페이스(136)를 포함한다.
도 1을 참조하여 설명된 바와 같이, 저장부(131)는 저장 장치(120)에서 발생한 에러 로그를 저장할 수 있다. 저장부(131)는 SRAM일 수 있으며, 메모리 컨트롤러(130)의 버퍼 메모리, 캐시 메모리, 동작 메모리로서 사용될 수 있다.
프로세서(133)는 메모리 컨트롤러(130)의 제반 동작을 제어할 수 있다. ROM(134)은 메모리 컨트롤러(134)가 동작하는데 요구되는 다양한 정보를 펌웨어 형태로 저장할 수 있다. 예시적으로, ROM(134)에 저장된 펌웨어는 프로세서(133)에 의해 구동될 수 있다. 또는, 프로세서(133)는 저장부(131)에 에러 정보를 기입하거나 또는 저장부(131)에 저장된 에러 정보를 관리하도록 구성될 수 있다.
메모리 컨트롤러(130)는 호스트 인터페이스(135)를 통해 호스트(110)와 통신할 수 있다. 예시적으로, 호스트 인터페이스(135)는 추출부(132)를 포함할 수 있다. 추출부(132)는 도 1을 참조하여 설명되었으므로 이에 대한 상세한 설명은 생략된다. 메모리 컨트롤러(130)는 플래시 인터페이스(136)를 통해 불휘발성 메모리 장치(140)와 통신할 수 있다.
도 3은 도 1의 사용자 시스템의 다중 계층 구조를 예시적으로 보여주는 도면이다. 예시적으로, 도 3을 참조하여 범용 플래시 스토리지(UFS; Universal Flash Storage)의 계층 구조가 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명에 따른 기술적 사상이 다중 계층 구조를 갖는 사용자 시스템에 적용될 수 있음은 잘 이해될 것이다.
또한, 도면의 간결성 및 설명의 편의를 위하여, 본 발명에 따른 디버깅 동작(또는, 에러 로그 추출 동작)에 불필요한 구성 요소 또는 중복되는 구성 요소는 생략된다. 또한, 도 3을 참조하여 설명된 각 계층은 하드웨어 계층 또는 소프트웨어 계층일 수 있다. 또한, 본문에 기재된 용어들은 본 발명의 구체적인 실시 예를 설명하기 위한 용어들이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1 내지 도 3을 참조하면, 사용자 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함한다. 호스트(110) 및 저장 장치(120) 각각은 상호 접속 계층(UIC; UFS InterConnection Layer), 전송 프로토콜 계층(UTP; UFS Transport Protocol Layer), 애플리케이션 계층(AL; Application Layer), 및 장치 관리자 계층(DM; Device Manaer)을 포함한다.
이하에서, 간결한 설명을 위하여, 저장 장치(120)의 각 계층들이 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트(110)의 각 계층들 또한 저장 장치(120)의 대응되는 계층들과 유사한 동작을 수행한다.
저장 장치(120)의 상호 접속 계층(UIC)은 저장 장치(120) 및 호스트(110) 사이의 통신을 관리하기 위한 저장 장치(120)의 최하위 계층일 수 있다. 상호 접속 계층(UIC)은 물리 계층으로 구현될 수 있고, 유니 프로(Unipro; Unified Protocol) 및 M-PHY를 포함할 수 있다. 유니 프로(UniPro) 및 M-PHY는 MIPI(Mobile Industry Processor Interface) 연합(Alliace)에 의해 제안된 인터페이스 규약(Protocol)이다.
저장 장치(120)의 상호 접속 계층(UIC)은 상위 계층(즉, 전송 프로토콜 계층(UTP))으로부터 수신된 정보를 미리 정해진 규약(즉, M-PHY 프로토콜)에 부합되도록 변환하여 호스트(110)로 전송할 수 있다. 또는 저장 장치(120)의 상호 접속 계층(UIC)은 호스트(110)로부터 수신된 정보를 상위 계층(즉, 전송 프로토콜 계층(UTP))으로 제공할 수 있다.
전송 프로토콜 계층(UTP)은 상위 계층(Application Layer)을 위한 서비스들을 제공할 수 있다. 예를 들어, 전송 프로토콜 계층(UTP)은 데이터 또는 요청의 송수신을 위한 데이터 패킷(즉, UPIU(UFS Protocol Information Unit))을 생성하거나 또는 수신된 데이터 패킷을 해제할 수 있다. 애플리케이션 계층(AL)은 저장 장치(120)가 동작하는데 요구되는 다양한 펌웨어를 구동할 수 있다. 예시적으로, 애플리케이션 계층(AL)은 커맨드 셋 계층(UCS)을 포함하고, 커맨드 셋 계층(UCS)은 저장 장치(120)의 읽기, 쓰기 등과 같은 커맨드들을 관리할 수 있다. 장치 관리자(DM)는 저장 장치(120)의 각 계층들을 제어하도록 구성된다. 예시적으로, 장치 관리자(DM)는 저장 장치(120)의 다양한 동작 모드 레벨 동작들, 구성들을 제어 및 관리하도록 구성된다.
예시적으로, 전송 프로토콜 계층(UTP) 및 애플리케이션 계층(AL)은 펌웨어 형태로 제공되어 저장부(131)에 저장되고, 프로세서(133)에 의해 구동될 수 있다. 프로세서(133)는 전송 프로토콜 계층(UTP) 및 애플리케이션 계층(AL)을 구동하는 도중에 에러가 발생한 경우, 에러 로그를 저장부(131)에 기입할 수 있다.
예시적으로, 상술된 호스트(110)의 상호 접속 계층(UIC) 및 저장 장치(120)의 상호 접속 계층(UIC)은 P2P(peer to peer) 통신을 지원할 수 있다. 예를 들어, 상호 접속 계층(UIC)의 유니프로(Unipro)는 장치 관리 객체(DME; Device Management Entity)(미도시)를 포함할 수 있다. 호스트(110) 또는 저장 장치(120)의 유니프로(Unipro)는 동작 또는 속성을 제어하기 위하여 장치 관리 객체(DME)으로의 접근을 제공할 수 있다. 다시 말해서, 호스트(110)의 상호 접속 계층(UIC) 및 저장 장치(120)의 상호 접속 계층들(UIC)은 다른 계층들과 무관하게 독립적으로 서로 통신할 수 있다.
좀 더 상세한 예로서, 상호 접속 계층(UIC)의 유니프로(Unipro)는 복수의 속성들(attributes)을 포함할 수 있다. 예시적으로, 속성(attribute)은 특정 정보를 가리키는 데이터 또는 비트들로서 레지스터, 저장 회로 등과 같은 별도의 저장 공간에 저장될 수 있다. 예시적으로, 속성(attribute)은 서비스 프리미티브(service primitive)(예를 들어, DME_SET, DME_GET, DME_PEER_GET, DME_PEER_SET 등)를 사용하여 설정되거나 또는 획득되는 정보의 아토믹(Atomic) 단위를 가리킬 수 있다. 예시적으로, 서비스 프리미티브는 호스트(110) 및 저장 장치(120) 각각의 상호 접속 계층(UIC)(좀 더 상세하게는, 유니프로(Unipro)) 사이의 통신에서 사용될 수 있다.
예시적으로, 호스트(110)의 상호 접속 계층(UIC)은 저장 장치(120)의 상호 접속 계층(UIC)의 유니프로(Unipro)에 포함된 복수의 속성들(attributes)을 읽거나 또는 설정할 수 있다. 즉, 전송 프로토콜 계층(UTP), 애플리케이션 계층(AL), 장치 관리자(DM)와 같은 상위 계층이 특정 에러로 인하여 정상적으로 동작하지 않더라도, 하위 계층인 호스트(110)의 상호 접속 계층(UIC) 및 저장 장치(120)의 상호 접속 계층(UIC)은 서로 통신할 수 있고, 복수의 속성들(attributes)을 설정하거나 획득할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 저장 장치(120)의 애플리케이션 계층(AL)에서 에러가 발생할 경우, 호스트(110) 및 저장 장치(120) 사이의 통신이 정상적으로 수행되지 않을 수 있다. 이 경우, 애플리케이션 계층(AL)에 대한 에러 로그가 저장부(131, 도 1 참조)에 저장될 수 있다. 호스트(110)는 애플리케이션 계층(AL)보다 하위 계층인 전송 프로토콜 계층(UTP) 및 상호 접속 계층(UIC)과 정상적으로 서로 P2P 통신을 수행할 수 있다.
예시적으로, 저장 장치(120)의 상호 접속 계층(UIC)은 추출부(132)를 포함할 수 있다. 저장 장치(120)의 에러로 인하여 전송 프로토콜 계층(UTP), 애플리케이션 계층(AL), 장치 관리자(DM)와 같은 상위 계층이 정상적으로 동작하지 않는 경우, 호스트(110)는 상호 접속 계층(UIC)의 P2P 통신을 통해 에러 로그를 추출할 수 있다. 예를 들어, 이하에서 더욱 상세하게 설명되겠지만, 추출부(132)는 제1 및 제2 속성들을 포함한다. 추출부(132)는 호스트(110)의 제어에 따라 제1 및 제2 속성들을 설정하고, 호스트(110)는 설정된 제1 및 제2 속성들을 획득함으로써 에러 로그를 추출할 수 있다.
예시적으로, 호스트(110)의 애플리케이션 계층(AL)은 장치 드라이버(Device Driver)를 포함할 수 있고, 장치 드라이버(Device Driver)는 호스트(110)에 포함된 각 계층을 제어하도록 구성될 수 있다.
도 4는 도 1의 사용자 시스템의 디버깅 동작(또는 에러 로그 추출 동작)을 설명하기 위한 블록도이다. 이하에서, 간결한 설명을 위하여, 에러 로그에 대한 추출 동작에서 불필요한 구성 요소들은 생략된다. 또한, 별도로 정의되지 않는 한, 제1 및 제2 속성들(ATTR1, ATTR2) 각각은 앞서 설명된 아토믹 단위의 정보를 저장하기 위한 별도의 저장 회로를 가리키는 것으로 가정한다. 또한, 제1 속성(ATTR1)은 플래그(FLAG)를 저장하고, 제2 속성(ATTR2)은 에러 로그(LOG)를 저장하는 것으로 가정한다.
또한, 제1 및 제2 속성들(ATTR1, ATTR2)은 도 3을 참조하여 설명된 저장 장치(120)의 상호 접속 계층(UIC)에 포함되며, 호스트(110) 또는 저장 장치(120)는 서비스 프리미티브(예를 들어, DME_PEER_SET, DME_PEER_GET)를 사용하여 제1 및 제2 속성들(ATTR1, ATTR2)을 읽거나 또는 설정할 수 있다. 그러나 본 발명의 기술적 사상이 이에 한정되는 것은 아니다.
도 4를 참조하면, 사용자 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함한다. 저장 장치(120)는 저장부(131) 및 추출부(132)를 포함한다. 예시적으로, 도면의 간결성을 위하여, 저장 장치(120)의 메모리 컨트롤러(130) 및 불휘발성 메모리 장치(140)는 생략된다.
저장부(131)는 복수의 에러 로그들(LOG_1~LOG_n)을 포함할 수 있다. 복수의 에러 로그들(LOG_1~LOG_n) 각각은 저장 장치(120)가 동작하는 도중에 발생한 에러에 대한 정보를 포함한다. 예시적으로, 복수의 에러 로그들(LOG_1~LOG_n) 각각은 도 3을 참조하여 설명된 각 계층들에 대한 에러 정보를 포함할 수 있다. 또는 복수의 에러 로그들(LOG_1~LOG_n) 각각은 저장 장치(120)에 포함된 다양한 하드웨어들 각각에 대한 에러 정보를 포함할 수 있다. 또는 복수의 에러 로그들(LOG_1~LOG_n) 각각은 저장 장치(120)에 포함된 다양한 모듈들 각각에 대한 에러 정보를 포함할 수 있다.
추출부(132)는 제1 및 제2 속성들(ATTR1, ATTR2)을 포함한다. 도 3을 참조하여 설명된 바와 같이, 추출부(132) 및 제1 및 제2 속성들(ATTR1, ATTR2)은 상호 접속 계층(UIC)의 유니프로(Unipro)에 포함되고, 제1 및 제2 속성들(ATTR1, ATTR2)은 호스트(110) 또는 저장 장치(120)의 상호 접속 계층(UIC)의 제어에 따라 설정(SET)되거나 또는 획득(GET)될 수 있다.
좀 더 상세한 예로서, 제1 속성(ATTR1)은 에러 로그(LOG)의 설정을 가리키기 위한 플래그(FLAG)를 저장하는 영역일 수 있다. 제1 속성(ATTR1)은 호스트(110) 또는 저장 장치(120)의 상호 접속 계층(UIC)에 의해 설정(SET) 또는 획득(GET)될 수 있다. 제2 속성(ATTR2)은 에러 로그(LOG)를 저장하는 영역일 수 있다. 제2 속성(ATTR2)은 호스트(110)의 상호 접속 계층(UIC)에 의해 획득되고, 저장 장치(120)의 상호 접속 계층(UIC)에 의해 설정(SET)될 수 있다.
저장 장치(120)는 호스트(110)로부터 디버깅 커맨드(CMD_dbg)를 수신하고, 수신된 디버깅 커맨드(CMD_dbg)에 응답하여 에러 로그 추출 동작을 수행할 수 있다. 예를 들어, 저장 장치(120)는 수신된 디버깅 커맨드(CMD_dbg)에 응답하여 제1 속성(ATTR1)의 플래그(FLAG)를 설정한다. 이 후 호스트(110)는 제1 속성(ATTR1)의 플래그(FLAG)에 응답하여 저장부(131)에 저장된 복수의 에러 로그들(LOG_1~LOG_n)이 추출되도록 저장 장치(120)를 제어할 수 있다. 에러 로그 추출 동작(즉, 디버깅 동작)은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
예시적으로, 디버깅 커맨드(CMD_dbg)는 저장 장치(120)의 인터럽트를 발생시킬 수 있는 커맨드일 수 있다. 예시적으로, 디버깅 커맨드(CMD_dbg)는 벤더 커맨드(Vendor command), 예비 커맨드(reserved command), 또는 특정 커맨드들의 조합일 수 있다. 예시적으로, 디버깅 커맨드(CMD_dbg)는 애플리케이션 계층(AL)에 의해 식별되는 SCSI 커맨드 또는 UFS 전용 커맨드일 수 있다. 디버깅 커맨드(CMD_dbg)는 전송 프로토콜 계층(UTP)에 의해 식별되는 커맨드일 수 있다. 또는 디버깅 커맨드(CMD_dbg)는 상호 접속 계층(UIC)에 의해 식별되는 커맨드일 수 있다. 또는 디버깅 커맨드(CMD_dbg)는 상호 접속 계층(UIC)에 의해 식별되는 비트 조합, 식별 코드, 또는 장치 ID 등을 포함할 수 있다.
예시적으로, 본 발명에 따른 호스트(110)의 동작은 호스트(110)에 포함된 장치 드라이버(device driver)에 의해 수행될 수 있다. 예를 들어, 호스트(110)에 포함된 장치 드라이버(device driver)의 제어에 따라 호스트(110) 및 저장 장치(120)의 상호 접속 계층들(UIC)이 서로 통신할 수 있다.
도 5는 도 4의 저장 장치의 동작을 보여주는 순서도이다. 도 4 및 도 5를 참조하면, S11 단계에서, 저장 장치(120)는 호스트(110)로부터 디버깅 커맨드(CMD_dbg)를 수신한다.
S12 단계에서, 저장 장치(120)는 수신된 디버깅 커맨드(CMD_dbg)에 응답하여, 제1 속성(ATTR1)을 설정할 수 있다. 예를 들어, 저장 장치(120)는 수신된 디버깅 커맨드(CMD_dbg)에 응답하여 상호 접속 계층(UIC)에 포함된 복수의 속성들 중 미리 정해진 제1 속성(ATTR1)의 값을 설정할 수 있다. 이 때, 제1 속성(ATTR1)은 에러 로그(LOG)의 송수신을 위한 플래그(FLAG)를 저장하기 위한 영역일 수 있다. 예시적으로, 저장 장치(120)는 설정 서비스 프리미티브(예를 들어, DME_SET)를 사용하여 제1 속성(ATTR1)을 설정할 수 있다.
S13 단계에서, 저장 장치(120)는 호스트(110)의 제어에 따라 제1 속성(ATTR1)을 재설정할 수 있다. 예를 들어, 저장 장치(120)는 호스트(110)로부터의 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)에 따라 제1 속성(ATTR1)을 재설정할 수 있다. 예시적으로, 재설정된 제1 속성(ATTR1)의 값은 S12 단계에서 설정된 제1 속성(ATTR1)의 값과 비교하여 반전된 값일 수 있다.
S14 단계에서, 저장 장치(120)는 재설정된 제1 속성(ATTR1)에 응답하여, 제2 속성(ATTR2)에 에러 로그(LOG)를 설정할 수 있다. 예를 들어, 저장 장치(120)에 포함된 저장부(131)는 복수의 에러 로그들(LOG_1~LOG_n)을 포함할 수 있다. 저장 장치(120)는 복수의 에러 로그들(LOG_1~LOG_n) 중 일부를 제2 속성(ATTR2)에 설정할 수 있다. 예시적으로, 제2 속성(ATTR2)은 미리 정해진 크기를 가질 수 있다. 복수의 에러 로그들(LOG_1~LOG_n) 각각의 크기가 제2 속성(ATTR2)의 크기와 동일한 경우, 복수의 에러 로그들(LOG_1~LOG_n) 중 어느 하나가 제2 속성(ATTR2)에 설정되고, 복수의 에러 로그들(LOG_1~LOG_n) 각각이 제2 속성(ATTR2)의 크기보다 큰 경우, 복수의 에러 로그들(LOG_1~LOG_n) 중 어느 하나의 일부가 제2 속성(ATTR2)에 설정될 수 있다.
S15 단계에서, 저장 장치(120)는 제2 속성(ATTR2)에 설정된 에러 로그(LOG)를 호스트(110)로 전송할 수 있다. 예를 들어, 저장 장치(120)는 호스트(110)의 제어에 따라 제2 속성(ATTR2)에 설정된 에러 로그(LOG)를 호스트(110)로 전송할 것이다. 이 때, 호스트(110)는 획득 서비스 프리미티브(예를 들어, DME_PEER_GET)를 사용하여 제2 속성(ATTR2)에 설정된 에러 로그(LOG)를 획득할 수 있다.
예시적으로, 제2 속성(ATTR2)의 크기는 미리 정해진 크기일 수 있다. 예를 들어, 앞서 설명된 바와 같이, 속성(ATTR)은 서비스 프리미티브에 의해 설정되거나 또는 획득되는 정보의 아토믹(Atomic) 단위일 것이다. 이 경우, 제2 속성(ATTR2)의 크기는 에러 로그의 크기보다 작을 수 있다. 저장 장치(120)는 상술된 에러 로그 추출 동작을 반복 수행하여 저장부(131)에 저장된 에러 로그(LOG)를 호스트(110)로 전송할 수 있다.
도 6은 도 4의 사용자 시스템의 동작을 더욱 상세하게 설명하기 위한 순서도이다. 도 4 및 도 6을 참조하면, S105 단계에서, 호스트(110)는 저장 장치(120)의 제1 속성(ATTR1)으로부터 플래그(FLAG)를 획득(GET)할 수 있다. 예를 들어, 저장 장치(120)의 제1 속성(ATTR1)은 플래그(FLAG)를 저장하기 위한 영역일 수 있다. 호스트(110)는 획득 서비스 프리미티브(예를 들어, DME_PEER_GET)을 사용하여 제1 속성(ATTR1)의 플래그(FLAG)를 획득하거나 또는 읽을 수 있다. 간결한 설명을 위하여, S105 단계에서 획득된 플래그는 제1 값(V1)인 것으로 가정한다.
S110 단계에서, 호스트(110)는 저장 장치(120)로 디버깅 커맨드(CMD_dbg)를 전송한다. 예를 들어, 호스트(110)는 저장 장치(120)의 에러 로그들을 추출하기 위하여 디버깅 커맨드(CMD_dbg)를 저장 장치(120)로 전송한다.
S115 단계에서, 저장 장치(120)는 제1 속성(ATTR1)의 플래그(FLAG)를 제2 값(V2)으로 설정할 수 있다. 예를 들어, 저장 장치(120)는 수신된 디버깅 커맨드(CMD_dbg)에 응답하여 제1 속성(ATTR1)을 제2 값(V2)으로 설정할 수 있다. 예시적으로, 제2 값(V2)은 제1 값(V1)이 반전된 값일 수 있다.
S120 단계에서, 호스트(110)는 제1 속성(ATTR1)으로부터 플래그(FLAG)를 획득(GET)할 수 있다. 예를 들어, 호스트(110)는 S105 단계와 유사하게 제1 속성(ATTR1)으로부터 플래그(FLAG)를 획득할 수 잇다.
S125 단계에서, 호스트(110)는 S120 단계에서 획득한 플래그(FLAG)가 제2 값(V2)인지 판별할 수 있다. 플래그(FLAG)가 제2 값(V2)이 아닌 경우, 호스트(110)는 S120 단계를 재수행한다. 예시적으로, 호스트(110)는 S120 단계 및 S125 단계의 동작들을 주기적으로 수행할 수 있다. 즉, S120 단계 및 S125 단계는 플래그(FLAG)에 대한 호스트(110)의 폴링 동작(polling operation)을 가리킨다.
플래그(FLAG)가 제2 값(V2)인 경우, S130 단계에서, 호스트(110)는 제1 속성(ATTR1)을 제1 값(V1)으로 설정할 수 있다. 예를 들어, 호스트(110)는 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)을 사용하여 제1 속성(ATTR1)에 제1 값(V1)을 설정할 수 있다.
S135 단계에서, 저장 장치(120)는 제1 속성(ATTR1)의 플래그(FLAG)가 제1 값(V1)인지 판별할 수 있다. 예를 들어, 저장 장치(120)는 획득 서비스 프리미티브(예를 들어, DME_GET)를 사용하여 제1 속성(ATTR1)을 읽을 수 있다. 저장 장치(120)는 읽은 제1 속성(ATTR1)의 값(즉, 플래그(FLAG))이 제1 값(V1)인지 판별할 수 있다. 예시적으로, S135 단계의 동작은 제1 속성(ATTR1)에 대한 저장 장치(120)의 폴링 동작을 가리킬 수 있다.
제1 속성(ATTR1)의 플래그(FLAG)가 제1 값(V1)인 경우, S140 단계에서, 저장 장치(120)는 에러 로그(LOG)를 제2 속성(ATTR2)에 설정할 수 있다. 예시적으로, 제2 속성(ATTR2)은 에러 로그(LOG)를 저장하기 위하여 미리 정해진 저장 영역(즉, 특정 레지스터 영역 또는 특정 저장 영역)을 가리킬 수 있다. 저장 장치(120)는 저장부(131)에 저장된 복수의 에러 로그들(LOG_1~LOG_n) 중 어느 하나를 제2 속성(ATTR2)에 저장 또는 설정할 수 있다.
예시적으로, 복수의 에러 로그들(LOG_1~LOG_n) 각각의 크기는 제2 속성(ATTR2)의 크기와 동일하도록 관리될 수 있다. 또는 복수의 에러 로그들(LOG_1~LOG_n) 각각의 크기는 제2 속성(ATTR2)의 크기보다 클 수 있다. 이 때, 저장 장치(120)는 복수의 에러 로그들(LOG_1~LOG_n) 중 어느 하나의 일부를 제2 속성(ATTR2)에 저장 또는 설정할 것이다.
예시적으로, S140 단계의 에러 로그(LOG)를 설정하는 동작은 도 3을 참조하여 설명된 저장 장치(120)의 Unipro의 장치 관리 객체(DME)에 의해 수행될 수 있다. 즉, 저장 장치(120)는 설정 서비스 프리미티브(예를 들어, DME_SET)을 사용하여 제2 속성(ATTR2)에 에러 로그(LOG)를 저장 또는 설정할 수 있다.
S145 단계에서, 저장 장치(120)는 제1 속성(ATTR1)의 플래그(FLAG)를 제2 값(V2)으로 설정할 수 있다. 예를 들어, 저장 장치(120)는 제2 속성(ATTR2)에 에러 로그(LOG)를 설정한 이 후에, 설정 서비스 프리미티브(예를 들어, DME_SET)를 사용하여 제1 속성(ATTR1)을 제2 값(V2)으로 설정할 수 있다.
S150 단계에서, 호스트(110)는 제1 속성(ATTR1)의 플래그(FLAG)를 획득(GET)할 수 있다. 예를 들어, 호스트(110)는 S105 단계와 유사한 방식으로 제1 속성(ATTR1)의 플래그(FLAG)를 획득할 수 있다.
S155 단계에서, 호스트(110)는 S150 단계에서 획득된 플래그(FLAG)가 제2 값(V2)인지 판별할 수 있다. 플래그(FLAG)가 제2 값(V2)이 아닌 경우, 호스트(110)는 S150 단계를 재수행한다. 예시적으로, S150 단계 및 S155 단계의 동작들은 제1 속성(ATTR1)에 대한 호스트(110)의 폴링 동작일 수 있고, 주기적으로 수행될 수 있다.
예시적으로, S140 단계 및 S145 단계의 동작들을 통해 제1 속성(ATTR1)이 제2 값(V2)으로 설정된 것은 제2 속성(ATTR2)에 에러 로그(LOG)가 갱신 또는 설정되었음을 가리킬 것이다. 즉, 플래그(FLAG)가 제2 값(V2)인 경우, S160 단계에서, 저장 장치(120)는 제2 속성(ATTR2)으로부터 설정된 에러 로그(LOG)를 획득한다. 예시적으로, 호스트(110)는 획득 서비스 프리미티브(예를 들어, DME_PEER_GET)을 사용하여 에러 로그(LOG)를 획득할 수 있다.
S165 단계에서, 호스트(110)는 모든 에러 로그를 추출하였는지 판별할 수 있다. 모든 에러 로그가 추출되지 않은 경우, 호스트(110) 및 저장 장치(120)는 S130 단계 내지 S160 단계의 동작들을 반복 수행할 수 있다. 예를 들어, 제2 속성(ATTR2)의 크기가 4 바이트(byte)인 경우, 호스트(110)는 S130 단계 내지 S160 단계의 동작을 1회 수행하여 4 바이트(byte)의 에러 로그를 추출할 수 있다. 이 때, 저장부(131)에 저장된 복수의 에러 로그들(LOG_1~LOG_n)의 전체 크기가 128KB인 경우, 호스트(110) 및 저장 장치(120)는 S130 단계 내지 S160 단계의 동작들을 반복 수행하여 128KB의 에러 로그들을 모두 추출할 수 있다.
예시적으로, 에러 로그 추출 동작(또는 디버깅 동작)시, 처음 추출되는 에러 로그는 저장부(131)에 저장된 복수의 에러 로그들(LOG_1~LOG_n)에 대한 사이즈 정보를 포함할 수 있다. 호스트(110)는 사이즈 정보를 기반으로 S130 단계 내지 S160 단계의 동작들에 대한 반복 횟수를 설정할 수 있다.
예시적으로, 복수의 에러 로그들(LOG_1~LOG_n)이 모두 호스트(110)로 전송된 이후에, 저장 장치(120)는 디버깅 커맨드(CMD_dbg)에 대한 응답(response)을 호스트(110)로 전송할 수 있다. 예시적으로, 호스트(110)로부터 특정 시간 동안 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)가 수행되지 않는 경우, (즉, 특정 시간 동안 S130 단계가 수행되지 않는 경우) 저장 장치(120)는 상태 점검 응답(Check Condition)을 호스트(110)로 전송할 수 있다.
상술된 본 발명의 실시 예에 따르면, 호스트(110)는 하위 계층인 상호 접속 계층(UIC)를 기반으로 저장 장치(120)와 통신을 수행하여 에러 정보를 추출할 수 있다. 즉, 상위 계층(예를 들어, 전송 프로토콜 계층(UTP), 애플리케이션 계층(AL), 장치 관리자(DM) 등)의 에러로 인하여 상위 계층이 정상 동작하지 않더라도, 호스트(110)는 하위 계층인 상호 접속 계층(UIC)을 통해 저장 장치(120)로부터 에러 정보를 추출할 수 있다. 따라서, 향상된 신뢰성을 갖는 사용자 시스템이 제공된다.
도 7은 본 발명의 다른 실시 예에 따른 사용자 시스템을 설명하기 위한 블록도이다. 간결한 설명을 위하여, 에러 로그에 대한 추출 동작에서 불필요한 구성 요소들은 생략되며, 앞서 설명된 구성 요소들에 대한 상세한 설명 또한 생략된다.
또한, 별도로 정의되지 않는 한, 제1 및 제2 속성들(ATTR1, ATTR2) 각각은 앞서 설명된 아토믹 단위의 정보를 저장하기 위한 별도의 저장 회로 또는 별도의 저장 영역을 가리키는 것으로 가정한다. 또한, 제1 속성(ATTR1)은 플래그(FLAG)를 저장하기 위한 영역이고, 제2 속성(ATTR2)은 에러 로그(LOG)를 저장하기 위한 영역인 것으로 가정한다.
또한, 제1 및 제2 속성들(ATTR1, ATTR2)은 도 3을 참조하여 설명된 바와 같이 저장 장치(220)의 상호 접속 계층(UIC)에 포함되며, 호스트(210) 또는 저장 장치(220)는 서비스 프리미티브(service primitive)(예를 들어, DME_SET, DME_GET, DME_PEER_SET, DME_PEER_GET 등)을 사용하여 제1 및 제2 속성들(ATTR1, ATTR2)을 읽거나 또는 설정할 수 있다. 그러나 본 발명의 기술적 사상이 이에 한정되는 것은 아니다.
도 7을 참조하면, 사용자 시스템(200)은 호스트(210) 및 저장 장치(220)를 포함한다. 저장 장치(220)는 저장부(231) 및 추출부(232) 를 포함한다. 예시적으로, 앞서 설명된 바와 같이 저장부(231) 및 추출부(232)는 저장 장치(220)에 포함된 메모리 컨트롤러(미도시)에 포함될 수 있다.
추출부(232)는 도 3을 참조하여 설명된 바와 같이 저장 장치(220)의 상호 접속 계층(UIC)에 포함될 수 있다. 추출부(232)는 제1 및 제2 속성들(ATTR1, ATTR2) 및 선택기(ST)를 포함한다. 제1 속성(ATTR1)은 플래그(FLAG)를 저장하기 위한 영역이고, 제2 속성(ATTR2)은 에러 로그(좀 더 상세하게는, 추출될 에러 로그)를 저장하기 위한 영역일 수 있다.
선택기(ST)는 호스트(210)로부터 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 저장부(232)에 저장된 복수의 에러 로그들(LOG_1~LOG_n) 중 추출될 에러 로그를 선택할 수 있다. 예를 들어, 디버깅 커맨드(CMD_dbg)는 추출될 에러 로그에 대한 정보를 포함할 수 있다. 선택기(ST)는 디버깅 커맨드(CMD_dbg)에 포함된 추출될 에러 로그에 대한 정보를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 추출될 에러 로그를 선택할 수 있다. 선택기(ST)에 의해 선택된 에러 로그는 제2 속성(ATTR2)에 순차적으로 설정될 것이다. 예시적으로, 선택기(ST)는 소프트웨어 형태로 구현될 수 있으며, 프로세서(도 2 참조)에 의해 구동될 수 있다. 또는 선택기(ST)는 하드웨어 형태로 구현될 수 있다.
도 8은 도 7의 저장 장치의 동작을 보여주는 순서도이다. 도 7 및 도 8을 참조하면, 저장 장치(220)는 S21 단계 내지 S23 단계의 동작을 수행할 수 있다. S21 단계 내지 S23 단계의 동작들은 도 5의 S11 단계 내지 S13 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S24 단계에서, 저장 장치(220)는 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 에러 로그(LOG)를 선택할 수 있다. 예를 들어, 저장부(231)는 복수의 에러 로그들(LOG_1~LOG_n)을 포함할 수 있다. 복수의 에러 로그들(LOG_1~LOG_n) 각각은 다양한 계층들, 다양한 하드웨어들, 다양한 모듈들 각각에 대한 에러 정보를 포함할 수 있다. 저장 장치(120)는 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 특정 계층, 특정 하드웨어, 또는 특정 모듈에 대응되는 에러 로그를 선택할 수 있다. 좀 더 상세한 예로서, 디버깅 커맨드(CMD_dbg)는 추출될 에러 로그 정보를 포함할 수 있다. 저장 장치(120)는 디버깅 커맨드(CMD_dbg)에 포함된 추출될 에러 로그 정보를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 특정 계층, 특정 하드웨어, 또는 특정 모듈에 대응되는 에러 로그를 선택할 수 있다.
S25 단계에서, 저장 장치(120)는 선택된 에러 로그를 제2 속성(ATTR2)에 설정한다. S26 단계에서, 저장 장치(120)는 제2 속성의 에러 로그를 호스트(110)로 전송한다.
예시적으로, 도 4 내지 도 6을 참조하여 설명된 에러 추출 동작에서는, 호스트(110)가 저장부(131)에 포함된 모든 에러 로그를 추출한다. 이와 달리, 도 7의 실시 예에서는 디버깅 커맨드(CMD_dbg)를 기반으로 추출된 에러 로그를 선택하고, 선택된 에러 로그를 추출할 수 있다. 즉, 에러 로그 추출 시간이 감소되기 때문에, 향상된 성능 및 향상된 신뢰성을 갖는 사용자 시스템이 제공된다.
도 9는 도 7의 사용자 시스템의 동작을 상세하게 보여주는 순서도이다. 도 7 및 도 9를 참조하면, 호스트(210) 및 저장 장치(220)는 각각 S205 단계 내지 S235 단계의 동작들을 수행할 수 있다. S205 단계 내지 S235 단계의 동작들은 도 6의 S105 단계 내지 S135 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S240 단계에서, 저장 장치(220)는 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 에러 로그(LOG)를 선택한다. 예를 들어, 도 7을 참조하여 설명된 바와 같이, 수신된 디버깅 커맨드(CMD_dbg)는 추출될 에러 로그에 대한 정보를 포함할 수 있다. 저장 장치(220)의 선택기(ST)는 추출될 에러 로그에 대한 정보를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 추출될 에러 로그를 선택할 수 있다. 예시적으로, 추출될 에러 로그는 특정 계층, 특정 하드웨어, 또는 특정 모듈과 연관된 에러 로그일 수 있다.
S245 단계에서, 저장 장치(220)는 선택된 에러 로그를 제2 속성(ATTR2)에 설정할 수 있다. 예시적으로, 저장 장치(120)는 선택된 에러 로그의 일부를 제2 속성(ATTR2)에 설정할 수 있다.
호스트(210) 및 저장 장치(220)는 S250 단계 내지 S265 단계의 동작들을 수행한다. S255 단계 내지 S265 단계의 동작들은 도 6의 S145 단계 내지 S160 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S270 단계에서, 호스트(210)는 선택된 에러 로그가 모두 추출되었는지 판별한다. S270 단계의 동작은 도 6의 S165 단계의 동작과 유사하다. 단, 도 6의 S165 단계의 동작은 모든 에러 로그가 추출되었는지 판별하는 반면에, S270 단계의 동작은 선택된 에러 로그가 모두 추출되었는지 판별한다.
예시적으로, 디버깅 동작시, 최초 추출되는 에러 로그는 선택된 에러 로그의 사이즈 정보를 포함할 수 있다. 호스트(210)는 선택된 에러 로그의 사이즈 정보를 기반으로 S230 단계 내지 270 단계의 동작들을 반복 수행할 수 있다.
예시적으로, 선택된 에러 로그들이 모두 호스트(210)로 전송된 이후에, 저장 장치(220)는 디버깅 커맨드(CMD_dbg)에 대한 응답(response)을 호스트(210)로 전송할 수 있다. 예시적으로, 호스트(210)로부터 특정 시간 동안 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)가 수행되지 않는 경우, (즉, 특정 시간 동안 S230 단계가 수행되지 않는 경우) 저장 장치(220)는 상태 점검 응답(Check Condition)을 호스트(210)로 전송할 수 있다.
상술된 본 발명의 실시 예에 따르면, 호스트(210)는 하위 계층인 상호 접속 계층(UIC)를 기반으로 저장 장치(220)와 통신을 수행하여 에러 로그를 추출할 수 있다. 즉, 상위 계층(예를 들어, 전송 프로토콜 계층(UTP), 애플리케이션 계층(AL), 장치 관리자(DM) 등)의 에러로 인하여 상위 계층이 정상 동작하지 않더라도, 호스트(210)는 하위 계층인 상호 접속 계층(UIC)을 통해 저장 장치(220)로부터 에러 정보를 추출할 수 있다. 또한, 호스트(210)는 에러 로그를 선택적으로 추출할 수 있다. 예를 들어, 호스트(210)는 복수의 에러 로그들 중 특정 계층, 특정 하드웨어, 또는 특정 모듈과 연관된 에러 로그를 선택적으로 추출할 수 있다. 따라서, 향상된 신뢰성 및 향상된 성능을 갖는 사용자 시스템이 제공된다.
도 10은 본 발명의 또 다른 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 간결한 설명을 위하여, 에러 로그에 대한 추출 동작에서 불필요한 구성 요소들은 생략된다. 또한, 별도로 정의되지 않는 한, 제1 내지 제3 속성들(ATTR1, ATTR2, ATTR3) 각각은 앞서 설명된 아토믹 단위의 정보를 저장하기 위한 별도의 저장 회로를 가리키는 것으로 가정한다. 또한, 제1 속성(ATTR1)은 플래그(FLAG)를 저장하고, 제2 속성(ATTR2)은 에러 로그(LOG)를 저장하고, 제3 속성(ATTR3)은 에러 로그 선택 정보를 저장하는 것으로 가정한다.
또한, 제1 내지 제3 속성들(ATTR1, ATTR2, ATTR3)은 도 3을 참조하여 설명된 바와 같이 저장 장치(320)의 상호 접속 계층(UIC)에 포함되며, 호스트(310) 또는 저장 장치(320)는 서비스 프리미티브(예를 들어, DME_SET, DME_GET, DME_PEER_SET, DME_PEER_GET)를 사용하여 제1 내지 제3 속성들(ATTR1, ATTR2, ATTR3)을 읽거나 또는 설정할 수 있다. 그러나 본 발명의 기술적 사상이 이에 한정되는 것은 아니다.
도 10을 참조하면, 사용자 시스템(300)은 호스트(310) 및 저장 장치(320)를 포함한다. 저장 장치(320)는 저장부(331) 및 추출부(332)를 포함한다. 호스트(310), 저장 장치(320), 및 저장부(331)는 도 1을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
추출부(332)는 제1 내지 제3 속성들(ATTR1, ATTR2, ATTR3)을 포함한다. 앞서 설명된 바와 마찬가지로, 제1 및 제2 속성들(ATTR1, ATTR2)은 각각 플래그(FLAG) 및 에러 로그(LOG)를 저장하기 위한 영역일 수 있다. 제3 속성(ATTR3)은 에러 로그를 선택하기 위한 정보를 저장하기 위한 영역일 수 있다. 예를 들어, 호스트(310)는 저장 장치(320)의 제3 속성(ATTR3)에 에러 정보를 선택하기 위한 정보를 설정할 수 있다. 저장 장치(320)는 제3 속성(ATTR3)에 저장된 정보를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 추출될 에러 로그를 선택할 수 있다.
즉, 도 7의 저장 장치(320)의 선택기(ST)는 디버깅 커맨드(CMD_dbg)를 기반으로 에러 로그를 선택할 수 있다. 그러나 도 10의 저장 장치(320)는 디버깅 커맨드(CMD_dbg)가 아닌 제3 속성(ATTR3)에 설정된 정보를 기반으로 추출될 에러 로그를 선택할 수 있다.
도 11은 도 10의 저장 장치의 동작을 보여주는 순서도이다. 도 10 및 도 11을 참조하면, S31 단계에서, 저장 장치(320)는 호스트(310)의 제어에 따라 선택 정보(SI)를 제3 속성(ATTR3)에 설정할 수 있다. 예를 들어, 호스트(310)는 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)를 사용하여 선택 정보(SI)를 제3 속성(ATTR3)에 설정할 수 있다. 예시적으로, 선택 정보(SI)는 추출될 에러 로그에 대한 정보를 가리킨다.
S32 단계에서, 저장 장치(320)는 설정된 제3 속성(ATTR3)에 응답하여 제1 속성(ATTR1)을 설정할 수 있다. 예를 들어, 제1 속성(ATTR1)은 에러 로그(LOG)의 송수신을 위한 플래그(FLAG)일 수 있다. 저장 장치(120)는 설정 서비스 프리미티브(예를 들어, DME_SET)를 사용하여 제1 속성(ATTR1)을 설정할 수 있다.
이 후, 저장 장치(320)는 S33 단계의 동작을 수행한다. S33 단계의 동작은 도 5의 S13 단계 및 도 8의 S23 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S34 단계에서, 저장 장치(320)는 제3 속성(ATTR3)을 기반으로 추출될 에러 로그를 선택한다. 예를 들어, 제3 속성(ATTR3)은 선택 정보(SI)로 설정될 수 있다. 저장 장치(320)는 선택 정보(SI)를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 추출될 에러 로그를 선택할 수 있다.
이 후, 저장 장치(320)는 S35 단계 내지 S36 단계의 동작들을 수행할 수 있다. S35 단계 내지 S36 단계의 동작들은 도 8의 S25 단계 내지 S26 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
도 12는 도 10의 사용자 시스템의 동작을 상세하게 보여주는 순서도이다. 도 10 및 도 12를 참조하면, S305 단계에서, 호스트(310)는 저장 장치(320)의 제1 속성(ATTR1)으로부터 플래그(FLAG)를 획득(GET)할 수 있다. S305 단계는 도 6의 S105 단계와 유사하므로 이에 대한 상세한 설명은 생략된다.
S310 단계에서, 호스트(310)는 저장 장치(320)의 제3 속성(ATTR3)에 선택 정보(SI)를 설정한다. 예를 들어, 호스트(310)는 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)를 사용하여 선택 정보(SI)를 제3 속성(ATTR3)에 설정할 수 있다. 선택 정보(SI)는 추출될 에러 로그에 대한 정보를 포함한다.
호스트(310) 및 저장 장치(320)는 S315 단계 내지 S335 단계의 동작들을 수행할 수 있다. S315 단계 내지 S335 단계의 동작들은 도 9의 S215 단계 내지 S235 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S340 단계에서, 저장 장치(320)는 제3 속성(ATTR3)을 기반으로 에러 로그(LOG)를 선택할 수 있다. 예를 들어, 저장 장치(320)는 제3 속성(ATTR3)에 설정된 선택 정보(SI)를 기반으로 복수의 에러 로그들(LOG_1~LOG_n) 중 추출될 에러 로그를 선택할 수 있다.
이 후, 호스트(310) 및 저장 장치(320)는 S345 단계 내지 S370 단계의 동작을 수행할 수 있다. S345 단계 내지 S370 단계의 동작들은 도 9의 S245 단계 내지 S270 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
예시적으로, 선택된 에러 로그들이 모두 호스트(310)로 전송된 이후에, 저장 장치(320)는 동작 완료 응답(response)을 호스트(310)로 전송할 수 있다. 예시적으로, 호스트(310)로부터 특정 시간 동안 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)가 수행되지 않는 경우, (즉, 특정 시간 동안 S330 단계가 수행되지 않는 경우) 저장 장치(320)는 상태 점검 응답(Check Condition)을 호스트(310)로 전송할 수 있다.
상술된 본 발명의 또 다른 실시 예에 따르면, 호스트(310)가 제3 속성(ATTR3)에 추출된 에러 로그를 선택하기 위한 에러 정보(SI)를 설정(SET)함으로써 에러 로그 추출 동작이 수행될 수 있다. 따라서, 향상된 신뢰성 및 향상된 성능을 갖는 사용자 시스템이 제공된다.
도 13은 본 발명의 또 다른 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 이하에서, 간결한 설명을 위하여, 에러 로그에 대한 추출 동작에서 불필요한 구성 요소들은 생략된다. 또한, 별도로 정의되지 않는 한, 복수의 속성들(ATTR1~ATTRm) 각각은 앞서 설명된 아토믹 단위의 정보를 저장하기 위한 별도의 저장 회로를 가리키는 것으로 가정한다. 복수의 속성들(ATTR1~ATTRm) 각각은 저장 장치(420)에 대한 정보 또는 각 계층들에 대한 정보를 저장하기 위한 영역들일 수 있다.
또한, 복수의 속성들(ATTR1~ATTRm)은 도 3을 참조하여 설명된 바와 같이 저장 장치(420)의 상호 접속 계층(UIC)에 포함되며, 호스트(410) 또는 저장 장치(420)는 서비스 프리미티브(예를 들어, DME_PEER_SET, DME_PEER_GET)를 사용하여 복수의 속성들(ATTR1~ATTRm) 각각을 읽거나 또는 설정할 수 있다. 그러나 본 발명의 기술적 사상이 이에 한정되는 것은 아니다.
도 13을 참조하면, 사용자 시스템(400)은 호스트(410) 및 저장 장치(420)를 포함한다. 저장 장치(420)는 저장부(431) 및 추출부(432)를 포함한다. 저장부(431)는 복수의 에러 로그들(LOG_1~LOG_n)을 저장하도록 구성된다.
추출부(432)는 선택기(ST), 복수의 속성들(ATTR1~ATTRm) 및 속성 변환부(432a)를 포함한다. 선택기(ST)는 도 7을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
복수의 속성들(ATTR1~ATTRm) 각각은 앞서 설명된 바와 같이 저장 장치(420)에 대한 정보, 각 계층들에 대한 정보를 저장하도록 구성될 수 있다. 복수의 속성들(ATTR1~ATTRm) 각각은 호스트(410) 또는 저장 장치(420)에 의해 설정되거나 읽어질 수 있다.
예시적으로, 호스트(410) 및 저장 장치(420)는 도 1 내지 도 12를 참조하여 설명된 바와 유사하게 에러 로그 추출 동작을 수행할 수 있다. 도 1 내지 도 12의 실시 예들에서는 플래그(FLAG) 및 에러 로그(LOG)를 저장하기 위한 속성들이 미리 정해져 있으나, 도 13의 저장 장치(420)의 속성 변환부(432a)는 디버깅 커맨드(CMD_dbg)를 기반으로 복수의 속성들(ATTR1~ATTRm) 중 플래그(FLAG)를 저장하기 위한 속성 및 에러 로그(LOG)를 저장하기 위한 속성을 선택할 수 있다. 예를 들어, 디버깅 커맨드(CMD_dbg)는 속성 선택 정보를 포함할 수 있다. 속성 선택 정보는 복수의 속성들(ATTR1~ATTRm) 중 플래그(FLAG) 및 에러 로그(LOG)를 위한 속성을 선택하기 위한 정보를 가리킨다. 도 13에 도시된 바와 같이 속성 변환부(432a)는 속성 선택 정보를 기반으로 플래그(FLAG) 및 에러 로그(LOG)를 위한 속성들로서 제2 및 제4 속성들(ATTR2, ATTR4)을 선택할 수 있다.
호스트(410) 및 저장 장치(420)는 선택된 속성들(ATTR2, ATTR4)을 사용하여 도 1 내지 도 12를 참조하여 설명된 에러 로그 추출 동작을 수행할 수 있다.
도 14는 도 13의 저장 장치의 동작을 보여주는 순서도이다. 도 13 및 도 14를 참조하면, S41 단계에서, 저장 장치(420)는 호스트(410)로부터 디버깅 커맨드(CMD_dbg)를 수신한다.
S42 단계에서, 저장 장치(420)는 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 속성을 선택할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 저장 장치(420)는 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 복수의 속성들(ATTR1~ATTRm) 중 플래그(FLAG) 및 에러 로그(LOG)를 위한 속성들을 선택할 수 있다.
S43 단계에서, 저장 장치(420)는 선택된 속성을 사용하여 에러 로그를 추출할 수 있다. 예를 들어, 저장 장치(420)는 선택된 속성을 사용하여 도 1 내지 도 12를 참조하여 설명된 에러 로그 추출 동작을 수행할 수 있다.
도 15는 도 13의 사용자 시스템의 동작을 상세하게 보여주는 순서도이다. 도 13 및 도 15를 참조하면, S405 단계에서, 호스트(410)는 디버깅 커맨드(CMD_dbg)를 저장 장치(420)로 전송한다. 예시적으로, 디버깅 커맨드(CMD_dbg)는 복수의 속성들(ATTR1~ATTRm) 중 플래그(FLAG) 및 에러 로그(LOG)를 위한 속성들을 선택하기 위한 정보를 포함한다.
S410 단계에서, 저장 장치(420)는 수신된 디버깅 커맨드(CMD_dbg)를 기반으로 복수의 속성들(ATTR1~ATTRm) 중 플래그(FLAG) 및 에러 로그(LOG)를 위한 속성들을 선택할 수 있다. 설명의 편의를 위하여, 복수의 속성들(ATTR1~ATTRm) 중 제1 속성(ATTR1)은 플래그(FLAG)를 위해 선택된 속성이고, 제2 속성(ATTR2)은 에러 로그(LOG)를 저장하기 위해 선택된 속성인 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 다른 속성들이 선택될 수 있다.
이 후, 호스트(410) 및 저장 장치(420)는 선택된 제1 및 제2 속성들(ATTR1, ATTR2)을 사용하여 S415 단계 내지 S470 단계의 동작들을 수행할 수 있다. S415 단계 내지 S470 단계의 동작들은 도 9의 S215 단계 내지 S270 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
예시적으로, 선택된 에러 로그들이 모두 호스트(410)로 전송된 이후에, 저장 장치(420)는 디버깅 커맨드(CMD_dbg)에 대한 응답(response)을 호스트(410)로 전송할 수 있다. 예시적으로, 호스트(110)로부터 특정 시간 동안 설정 서비스 프리미티브(예를 들어, DME_PEER_SET)가 수행되지 않는 경우, (즉, 특정 시간 동안 S130 단계가 수행되지 않는 경우) 저장 장치(120)는 상태 점검 응답(Check Condition)을 호스트(110)로 전송할 수 있다.
상술된 본 발명의 실시 예들에 따르면, 호스트 및 저장 장치는 각각 다중 계층 구조를 가질 수 있다. 상위 계층의 오류로 인하여 호스트 및 저장 장치 사이의 통신이 정상적으로 수행되지 않는 경우, 호스트 및 저장 장치는 하위 계층(예를 들어, 물리 계층)의 통신을 사용하여 에러 로그를 추출할 수 있다. 예를 들어, 호스트 및 저장 장치는 물리 계층에 포함된 속성들을 사용하여 에러 로그를 추출할 수 있다. 또한, 호스트는 복수의 에러 로그들 중 추출될 에러 로그를 선택할 수 있다. 또한, 호스트는 물리 계층에 포함된 속성들 중 에러 로그 추출에 사용되는 속성들을 선택할 수 있다. 따라서, 향상된 성능 및 향상된 신뢰성을 갖는 사용자 시스템이 제공된다.
도 16은 본 발명의 또 다른 실시 예에 따른 사용자 시스템의 계층 구조를 보여주는 도면이다. 도 16을 참조하면, 사용자 시스템(500)은 호스트(510) 및 저장 장치(520)를 포함한다.
예시적으로, 도 16의 사용자 시스템(500)의 호스트(510) 및 저장 장치(520)는 국제 표준화 기구(International Standard Organization)에서 제안된 오픈 시스템 인터커넥션(OSI; Open System Interconnection) 7계층 구조를 기반으로 서로 통신할 수 있다. 예를 들어, 호스트(510) 및 저장 장치(520) 각각은 응용 계층(AL; Application Layer), 표현 계층(PL; Presentation Layer), 세션 계층(SL; Session Layer), 전송 계층(TL; Transport Layer), 네트워크 계층(NL; Network Layer), 데이터 링크 계층(DL; Data Link Layer), 및 물리 계층(PHY; Physical Layer)를 포함할 수 있다.
호스트(510) 및 저장 장치(520)의 각 계층들은 서로 대응되는 계층과 논리적 또는 물리적으로 통신할 수 있다. 예를 들어, 호스트(510)의 응용 계층(AL)은 저장 장치(520)의 응용 계층(AL)과 논리적 또는 물리적으로 통신할 수 있다. 또는 호스트(510)의 표현 계층(PL)은 저장 장치(520)의 표현 계층(PL)과 논리적 또는 물리적으로 통신할 수 있다. 마찬가지로, 호스트(510)의 세션 계층(SL; Session Layer), 전송 계층(TL; Transport Layer), 네트워크 계층(NL; Network Layer), 데이터 링크 계층(DL; Data Link Layer), 및 물리 계층(PHY; Physical Layer) 각각은 저장 장치(520)의 세션 계층(SL; Session Layer), 전송 계층(TL; Transport Layer), 네트워크 계층(NL; Network Layer), 데이터 링크 계층(DL; Data Link Layer), 및 물리 계층(PHY; Physical Layer) 각각과 물리적 또는 논리적으로 통신할 수 있다.
예시적으로, 저장 장치(520)의 다양한 계층들 중 적어도 하나의 계층에서 오류가 발생한 경우, 오류가 발생한 계층의 논리적 또는 물리적 통신이 중단될 수 있다. 본 발명에 따른 사용자 시스템(500)은 앞서 설명된 바와 같이, 오류가 발생한 계층 이외의 다른 계층들의 물리적 또는 논리적 통신을 기반으로 에러 로그를 추출할 수 있다. 예를 들어, 저장 장치(520)의 전송 계층(TL)에 대하여 오류가 발생한 경우, 호스트(510) 및 저장 장치(520)는 응용 계층(AL), 표현 계층(PL), 세션 계층(SL), 네트워크 계층(NL), 데이터 링크 계층(DL), 또는 물리 계층(PHY)의 물리적 또는 논리적 통신을 기반으로 저장 장치(520)의 전송 계층(TL)에 대한 에러 로그를 추출할 수 있다.
상술된 본 발명의 또 다른 실시 예에 따르면, 사용자 시스템(500)의 호스트(510) 및 저장 장치(520)는 OSI 7계층 구조를 기반으로 서로 논리적 또는 물리적으로 통신할 수 있다. 이 때, OSI 7계층 구조 중 적어도 하나의 계층에 대하여 에러가 발생한 경우, 사용자 시스템(500)의 호스트(510) 및 저장 장치(520)는 적어도 하나의 에러가 발생하지 않은 다른 계층 간의 물리적 또는 논리적 통신을 기반으로 에러 로그를 추출할 수 있다. 따라서, 향상된 신뢰성을 갖는 사용자 시스템이 제공된다.
예시적으로, 상술된 본 발명의 또 다른 실시 예에서는 OSI 7계층 구조로 구성된 사용자 시스템이 설명되었으나, 본 발명의 기술적 사상이 이에 한정되는 것은 아니다. 본 발명에 따른 사용자 시스템은 TCP/IP 프로토콜과 같은 다중 계층 구조에 적용될 수 있다.
도 17은 본 발명의 실시 예들에 따른 저장 장치가 적용된 메모리 카드 시스템을 보여주는 블록도이다. 도 17을 참조하면, 메모리 카드 시스템(1000)은 컨트롤러(1100), 불휘발성 메모리(1200), 및 커넥터(1300)를 포함한다.
컨트롤러(1100)는 불휘발성 메모리(1200)와 연결된다. 컨트롤러(1100)는 불휘발성 메모리(1200)를 액세스하도록 구성된다. 예를 들어, 컨트롤러(1100)는 불휘발성 메모리(1200)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 배경(background) 동작은 마모도 관리, 가비지 콜렉션 등과 같은 동작들을 포함한다.
컨트롤러(1100)는 불휘발성 메모리(1200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(1100)는 불휘발성 메모리(1200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(1100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
컨트롤러(1100)는 커넥터(1300)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(1100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(1100)는 DDR(Double Data Rate) interface, USB (Universal Serial Bus), MMC (multimedia card), eMMC(embeded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), NVMe (Nonvolatile Memory express) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다.
예시적으로, 컨트롤러(1100)는 도 1 내지 도 15를 참조하여 설명된 동작 방법을 기반으로 외부 장치(즉, 호스트)와 통신하여 에러 로그를 외부 장치로 전송할 수 있다.
불휘발성 메모리(1200)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
불휘발성 메모리(1200) 또는 메모리 카드 시스템(1000)은 다양한 형태의 패키지로 실장될 수 있다. 예를 들면, 불휘발성 메모리(1200) 또는 메모리 카드 시스템(1000)은 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), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
도 18은 본 발명에 따른 저장 장치가 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 18을 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다. SSD(2200)는 신호 커넥터(2001)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2002)를 통해 전원(PWR)을 입력받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 복수의 채널들(CH1~CHn)을 통해 복수의 플래시 메모리들(2221~222n)을 제어할 수 있다. 복수의 플래시 메모리들(2221~222n)은 SSD 컨트롤러(2210)의 제어에 따라 프로그램 동작을 수행할 수 있다. 예시적으로, SSD 컨트롤러(2210)는 도 1 내지 도 15를 참조하여 설명된 동작 방법을 기반으로 호스트(2100)와 통신하여, 에러 로그를 호스트(2100)로 전송할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(2000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2230)는 SSD(2200) 내에 위치할 수도 있고, SSD(2200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2230)는 메인 보드에 위치하며, SSD(2200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
도 19는 본 발명의 실시 예에 따른 저장 장치를 포함하는 전자 시스템의 구성 및 본 발명의 실시 예에 따라 작동하는 인터페이스들을 나타낸 블록도이다. 전자 시스템(3000)은 MIPI 연합에 의해 제안된 인터페이스를 이용하거나 지원할 수 있는 데이터 처리 장치로 구현될 수 있다. 예시적으로, 전자 시스템(3000)은 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블(Wearable) 장치 형태로 구현될 수 있다.
전자 시스템(3000)은 애플리케이션 프로세서(3100), 디스플레이(3220), 및 이미지 센서(3230)를 포함할 수 있다. 애플리케이션 프로세서(3100)는 DigRF 마스터(3110), DSI(Display Serial Interface) 호스트(3120), CSI(Camera Serial Interface) 호스트(3130), 및 물리 계층(3140)을 포함할 수 있다.
DSI 호스트(3120)는 DSI에 따라 디스플레이(3220)의 DSI 장치(3225)와 통신할 수 있다. 예로서, DSI 호스트(3120)에는 광 시리얼라이저(SER)가 구현될 수 있다. 예로서, DSI 장치(3225)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
CSI 호스트(3130)는 CSI에 따라 이미지 센서(3230)의 CSI 장치(3235)와 통신할 수 있다. 예로서, CSI 호스트(3130)에는 광 디시리얼라이저(DES)가 구현될 수 있다. 예로서, CSI 장치(3235)에는 광 시리얼라이저(SER)가 구현될 수 있다.
DSI 및 CSI는 물리 계층 및 링크 계층을 이용할 수 있다. DSI 및 CSI는 본 발명의 실시 예들을 채용할 수 있다. 예로서, DSI 호스트(3120) 및 DSI 장치(3225)는 물리 계층 및 링크 계층 간의 P2P 통신을 통해 에러 로그를 선택적으로 추출할 수 있다. 또는, CSI 장치(3235) 및 CSI 호스트(3130)는 물리 계층 및 링크 계층 간의 P2P 통신을 통해 에러 로그를 선택적으로 추출할 수 있다.
전자 시스템(3000)은 애플리케이션 프로세서(3100)와 통신하는 RF(Radio Frequency) 칩(3240)을 더 포함할 수 있다. RF 칩(3240)은 물리 계층(3242), DigRF 슬레이브(3244), 및 안테나(3246)를 포함할 수 있다. 예로서, RF 칩(3240)의 물리 계층(3242)과 애플리케이션 프로세서(3100)의 물리 계층(3140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 시스템(3000)은 워킹 메모리(Working Memory; 3250) 및 임베디드/카드 스토리지(3255)를 더 포함할 수 있다. 워킹 메모리(3250) 및 임베디드/카드 스토리지(3255)는 애플리케이션 프로세서(3100)로부터 제공받은 데이터를 저장할 수 있다. 워킹 메모리(3250) 및 임베디드/카드 스토리지(3255)는 저장된 데이터를 어플리케이션 프로세서(3100)로 제공할 수 있다.
워킹 메모리(3250)는 애플리케이션 프로세서(3100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(3250)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
임베디드/카드 스토리지(3255)는 전원 공급 여부와 관계없이 데이터를 저장할 수 있다. 실시 예로서, 임베디드/카드 스토리지(3255)는 UFS 인터페이스 규약에 따라 작동할 수 있으나, 본 발명은 이 실시 예로 한정되지 않는다. 예시적으로, 도 1 내지 도 15를 참조하여 설명된 동작 방법을 기반으로 임베디드/카드 스토리지(3255)는 애플리케이션 프로세서(3100)의 제어(다시 말해서, 물리 계층의 P2P 통신을 위한 제어)에 따라 에러 로그를 추출할 수 있다.
전자 시스템(3000)은 Wimax(World Interoperability for Microwave Access; 3260), WLAN(Wireless Local Area Network; 3262), UWB(Ultra Wideband; 3264) 등을 통해 외부 시스템과 통신할 수 있다.
전자 시스템(3000)은 음성 정보를 처리하기 위한 스피커(3270) 및 마이크(3275)를 더 포함할 수 있다. 예시적으로, 전자 시스템(3000)은 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(3280)를 더 포함할 수 있다. 전자 시스템(3000)은 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(3290)을 더 포함할 수 있다.
예시적으로, 전자 시스템(3000)에 포함된 다양한 구성 요소들 중 애플리케이션 프로세서(3100)와 MIPI 유니프로를 기반으로 통신하는 구성 요소들은 본 발명의 실시 예에 따른 에러 로그 추출 동작을 지원할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예들에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 사용자 시스템 110: 호스트
120: 저장 장치 130: 메모리 컨트롤러
140: 불휘발성 메모리 장치 131: 저장부
132: 추출부 ATTR: 속성
M-PHY: M-PHY Unipro: 유니 프로
UIC: 상호 접속 계층 UTP: 전송 프로토콜 계층
AL: 애플리케이션 계층 DM: 장치 관리자
LOG: 에러 로그 FLAG: 플래그

Claims (10)

  1. 복수의 에러 로그들을 저장하는 저장부 및 물리 계층을 포함하고, 상기 물리 계층을 통해 호스트와 전기적 신호를 주고 받는 저장 장치의 동작 방법에 있어서,
    상기 호스트로부터 디버깅 커맨드를 수신하는 단계;
    상기 수신된 디버깅 커맨드에 응답하여 상기 물리 계층에 포함된 제1 속성을 제1 값으로 설정하는 단계;
    상기 호스트의 제어에 따라 상기 제1 속성을 상기 제1 값과 다른 제2 값으로 설정하는 단계;
    상기 제2 값으로 설정된 상기 제1 속성에 응답하여, 상기 복수의 에러 로그들 중 어느 하나의 에러 로그를 제2 속성에 설정하는 단계; 및
    상기 호스트의 제어에 따라, 상기 제2 속성에 설정된 상기 어느 하나의 에러 로그를 상기 호스트로 전송하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 복수의 에러 로그들이 모두 상기 호스트로 전송되었는지 판별하는 단계; 및
    상기 복수의 에러 로그들이 모두 상기 호스트로 전송된 경우, 상기 디버깅 커맨드에 대한 응답을 상기 호스트로 전송하는 단계를 더 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 제2 값으로 설정된 상기 제1 속성에 따라 상기 복수의 에러 로그들 중 어느 하나의 에러 로그를 제2 속성에 설정하는 단계는,
    상기 수신된 디버깅 커맨드를 기반으로 상기 복수의 에러 로그들 중 일부 에러 로그를 선택하는 단계; 및
    상기 선택된 일부 에러 로그 중 상기 어느 하나의 에러 로그를 상기 제2 속성에 설정하는 단계를 포함하는 동작 방법.
  4. 제 3 항에 있어서,
    상기 선택된 일부 에러 로그가 모두 상기 호스트로 전송되었는지 판별하는 단계; 및
    상기 선택된 일부 에러 로그가 모두 상기 호스트로 전송된 경우, 상기 디버깅 커맨드에 대한 응답을 상기 호스트로 전송하는 단계를 더 포함하는 동작 방법.
  5. 제 1 항에 있어서,
    상기 수신된 디버깅 커맨드에 응답하여 상기 상호 접속 계층에 포함된 복수의 속성들 중 상기 제1 및 제2 속성들을 선택하는 단계를 더 포함하는 동작 방법.
  6. 제 1 항에 있어서,
    상기 디버깅 커맨드에 응답하여 상기 저장 장치가 인터럽트를 발생하되, 상기 디버깅 커맨드는 제조사 커맨드, 예비 커맨드, 또는 커맨드들의 조합 중 적어도 하나를 포함하는 것을 특징으로 하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 디버깅 커맨드는 상기 물리 계층에 의해 식별되는 비트 조합, 식별 코드, 또는 장치 ID 중 적어도 하나를 포함하는 동작 방법.
  8. 제 1 항에 있어서,
    상기 제1 속성은 상기 복수의 에러 로그가 상기 제2 속성에 갱신되었음을 알리는 플래그를 저장하기 위한 저장 영역을 가리키고,
    상기 제2 속성은 상기 복수의 에러 로그들 중 상기 호스트로 전송될 에러 로그를 저장하기 위한 저장 영역을 가리키는 동작 방법.
  9. 제 1 항에 있어서,
    상기 호스트 및 상기 저장 장치는 UFS(Universal Flash Storage) 통신 프로토콜을 기반으로 서로 통신하는 것을 특징으로 하는 동작 방법.
  10. 제 9 항에 있어서,
    상기 물리 계층은 상호 접속 계층(UIC; UFS Interconnection Layer)이되,
    상기 제1 및 제2 속성들은 상기 상호 접속 계층의 유니프로(Unipro)에 포함되는 것을 특징으로 하는 동작 방법.
KR1020150092376A 2015-06-29 2015-06-29 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법 KR102268699B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150092376A KR102268699B1 (ko) 2015-06-29 2015-06-29 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법
US15/081,128 US10176029B2 (en) 2015-06-29 2016-03-25 Operation method of storage device, operation method of host device, and operation method of user system including storage device and host device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150092376A KR102268699B1 (ko) 2015-06-29 2015-06-29 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20170002765A true KR20170002765A (ko) 2017-01-09
KR102268699B1 KR102268699B1 (ko) 2021-06-28

Family

ID=57602381

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150092376A KR102268699B1 (ko) 2015-06-29 2015-06-29 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법

Country Status (2)

Country Link
US (1) US10176029B2 (ko)
KR (1) KR102268699B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11841756B2 (en) 2021-03-08 2023-12-12 SK Hynix Inc. Method for information configuration in power mode change for an interconnection protocol, controller and storage device

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108389600B (zh) 2017-02-02 2021-02-26 慧荣科技股份有限公司 数据储存装置以及参数改写方法
TWI705330B (zh) * 2017-02-02 2020-09-21 慧榮科技股份有限公司 資料儲存裝置以及參數改寫方法
CN109213436B (zh) 2017-06-30 2021-08-24 慧荣科技股份有限公司 降低快闪储存介面中传收数据错误方法及装置
US10848263B2 (en) 2017-06-30 2020-11-24 Silicon Motion, Inc. Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same
US10630424B2 (en) 2017-06-30 2020-04-21 Silicon Motion, Inc. Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same
US10637509B2 (en) * 2017-06-30 2020-04-28 Silicon Motion, Inc. Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same
TWI645298B (zh) * 2017-06-30 2018-12-21 慧榮科技股份有限公司 降低快閃儲存介面中傳收資料錯誤方法以及使用該方法的裝置
CN109213623B (zh) * 2017-06-30 2022-02-22 慧荣科技股份有限公司 降低快闪储存介面中传收数据错误方法及装置
US10489257B2 (en) * 2017-08-08 2019-11-26 Micron Technology, Inc. Replaceable memory
JP2019045910A (ja) 2017-08-29 2019-03-22 東芝メモリ株式会社 半導体記憶装置
US11204841B2 (en) * 2018-04-06 2021-12-21 Micron Technology, Inc. Meta data protection against unexpected power loss in a memory system
KR20200065929A (ko) * 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 저장 장치
KR20200098847A (ko) * 2019-02-13 2020-08-21 삼성전자주식회사 전자장치 및 그 제어방법
US11581053B2 (en) * 2020-08-06 2023-02-14 Micron Technology, Inc. Memory device test mode access
CN114499772A (zh) * 2020-11-12 2022-05-13 华为技术有限公司 数据传输方法及电子设备
US20240061611A1 (en) * 2021-05-06 2024-02-22 Micron Technology, Inc. Debug interface between a host system and a memory system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110256A (ja) * 1997-10-06 1999-04-23 Toshiba Corp プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
US7099280B1 (en) * 2001-03-28 2006-08-29 Cisco Technology, Inc. Method and system for logging voice quality issues for communication connections
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
KR20130042370A (ko) * 2011-10-18 2013-04-26 삼성전자주식회사 Ufs 인터페이스의 테스트 방법 및 이의 테스트 방법으로 테스트를 수행하는 메모리 장치
US20150143017A1 (en) * 2013-11-21 2015-05-21 Sandisk Technologies Inc. Memory Device Debugging on Host Platforms

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6336195B1 (en) 1999-04-14 2002-01-01 Compal Electronics, Inc. Method for debugging keyboard basic input/output system (KB-BIOS) in a development notebook computing system
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8467735B2 (en) 2009-03-23 2013-06-18 Apple Inc. Methods and apparatus for testing and integration of modules within an electronic device
KR101554326B1 (ko) 2009-05-21 2015-09-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
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 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
EP2628087B1 (en) 2010-10-15 2015-04-22 ST-Ericsson SA Methods and systems for testing electrical behavior of an interconnect having asymmetrical links
JP5548966B2 (ja) 2010-12-23 2014-07-16 インテル・コーポレーション テスト、検証及びデバッグアーキテクチャの装置及びシステム
US8996928B2 (en) 2012-04-17 2015-03-31 Qualcomm Incorporated Devices for indicating a physical layer error
US20140229644A1 (en) 2013-02-12 2014-08-14 Haran Thanigasalam Method, apparatus, system for including interrupt functionality in sensor interconnects
KR101695712B1 (ko) 2013-02-28 2017-01-12 인텔 코포레이션 상이한 상호접속 프로토콜을 위한 하나의 상호접속 프로토콜의 열거 및/또는 구성 메커니즘의 레버리징
US9086966B2 (en) 2013-03-15 2015-07-21 Intel Corporation Systems, apparatuses, and methods for handling timeouts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110256A (ja) * 1997-10-06 1999-04-23 Toshiba Corp プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
US7099280B1 (en) * 2001-03-28 2006-08-29 Cisco Technology, Inc. Method and system for logging voice quality issues for communication connections
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
KR20130042370A (ko) * 2011-10-18 2013-04-26 삼성전자주식회사 Ufs 인터페이스의 테스트 방법 및 이의 테스트 방법으로 테스트를 수행하는 메모리 장치
US20150143017A1 (en) * 2013-11-21 2015-05-21 Sandisk Technologies Inc. Memory Device Debugging on Host Platforms

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11841756B2 (en) 2021-03-08 2023-12-12 SK Hynix Inc. Method for information configuration in power mode change for an interconnection protocol, controller and storage device

Also Published As

Publication number Publication date
US20160378582A1 (en) 2016-12-29
KR102268699B1 (ko) 2021-06-28
US10176029B2 (en) 2019-01-08

Similar Documents

Publication Publication Date Title
KR102268699B1 (ko) 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법
USRE49151E1 (en) Memory system and electronic device
US10437498B2 (en) Electronic device configured to reset storage device non-directly connected to application processor among storage devices serially connected to one another and method of operating the same
US9904651B2 (en) Operating method of controller for setting link between interfaces of electronic devices, and storage device including controller
US10203896B2 (en) Method operating universal flash storage (UFS) device, method operating UFS host, and method operating system including both
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR20190041331A (ko) 스토리지 장치, 컴퓨팅 시스템, 그리고 그것의 디버깅 방법
US9244865B2 (en) Obtaining diagnostic information through host interfaces
US20160203091A1 (en) Memory controller and memory system including the same
CN106339178B (zh) 存储器控制单元及包括该存储器控制单元的数据存储设备
US11269765B2 (en) Operating method of controller and memory system
US10942887B2 (en) Electronic device configured to control non-directly connected storage device among serially connected storage devices, storage device included therein, computing system including the same, and operation method of controller of storage device
KR102225313B1 (ko) 데이터 저장 장치의 동작 방법
US11003614B2 (en) Embedding protocol parameters in data streams between host devices and storage devices
KR20200025184A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
US10795594B2 (en) Storage device
US9507707B2 (en) Nonvolatile memory device and data storage device including the same
KR20210004611A (ko) 메모리 인터페이스, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
KR20160016485A (ko) 전자 장치의 인터페이스 사이의 링크를 설정하기 위한 컨트롤러의 작동 방법 및 컨트롤러를 포함하는 저장 장치
KR102180972B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
CN113111024A (zh) 存储装置、存储系统和及操作存储装置的方法
KR102423278B1 (ko) 메모리 시스템 및 그것의 동작 방법
US11675531B2 (en) Storage device for high speed link startup and storage system including the same
US10628322B2 (en) Memory system and operating method thereof
CN114968857A (zh) 数据存储装置及其操作方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right