KR20230167729A - 스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치 - Google Patents

스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치 Download PDF

Info

Publication number
KR20230167729A
KR20230167729A KR1020230069846A KR20230069846A KR20230167729A KR 20230167729 A KR20230167729 A KR 20230167729A KR 1020230069846 A KR1020230069846 A KR 1020230069846A KR 20230069846 A KR20230069846 A KR 20230069846A KR 20230167729 A KR20230167729 A KR 20230167729A
Authority
KR
South Korea
Prior art keywords
storage device
information
controller
data
memory
Prior art date
Application number
KR1020230069846A
Other languages
English (en)
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 삼성전자주식회사
Publication of KR20230167729A publication Critical patent/KR20230167729A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

스토리지 장치를 위한 아웃-오브-밴드 관리 방법은 스토리지 장치의 제품 정보 또는 스토리지 장치의 상태 정보를 획득하기 위해 베이스보드 관리 컨트롤러에 의해 스토리지 장치의 마이크로 컨트롤러 유닛과 통신하는 단계 및 획득된 정보에 기초하여 베이스보드 관리 컨트롤러에 의해 스토리지 장치를 동작시키는 단계를 포함한다.

Description

스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치{OUT-OF-BAND MANAGEMENT METHOD FOR STORAGE APPARATUS, BASEBOARD MANAGEMENT CONTROLLER AND STORAGE APPARATUS}
본 개시는 스토리지 분야에 관한 것으로서, 보다 상세하게는 스토리지 장치를 위한 아웃-오브-밴드 관리 방법 또는 베이스보드 관리 컨트롤러 및 스토리지 장치에 관한 것이다.
최근, (솔리드 스테이트 드라이브(SSD; Solid State Drive), NVMe(Non-Volatile Memory Express), eMMC(Embedded Multi-Media Card), UFS(Universal Flash Memory), 등과 같은) 스토리지 장치(storage apparatus)가 널리 사용되고 있다.
전형적으로, 스토리지 장치는 호스트의 관리 하에 동작할 수 있다. 호스트는 인터페이스에 의해 스토리지 장치와 연결되고, 그래서 호스트의 운영 체제(operating system)는 스토리지 장치를 동작시킬 수 있고, 이것은 호스트가 스토리지 장치를 관리하는 인-밴드 관리 방법이다. 호스트 상의 베이스보드 관리 컨트롤러(BMC; Baseboard Management Controller)도 인터페이스에 의해 스토리지 장치와 연결된다. BMC는 운영 체제를 사용하지 않고 스토리지 장치와 통신하고, 이것은 BMC가 스토리지 장치를 관리하는 아웃-오브-밴드 관리 방법이다.
그러나, 스토리지 장치를 위한 기존 BMC의 아웃-오브-밴드 관리 기능은 제한적이고 그리고 사용자들의 요구를 충족시키기 어렵다.
본 개시의 일 실시 예에 따르면, 스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치가 제공된다.
본 개시의 목적은 스토리지 장치를 위한 통신의 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러, 및 스토리지 장치를 제공하는 것이다.
본 개시의 일 양상에 따르면, 스토리지 장치의 아웃-오브-밴드(out-of-band) 관리 방법이 제공되고, 상기 아웃-오브-밴드 관리 방법은: 베이스보드 관리 컨트롤러에 의해, 상기 스토리지 장치의 제품 정보 및 상기 스토리지 장치의 상태 정보 중 적어도 하나의 정보를 획득하기 위해 상기 스토리지 장치의 마이크로 컨트롤러 유닛과 통신하는 단계; 및 상기 베이스보드 관리 컨트롤러에 의해 상기 획득된 적어도 하나의 정보에 기초하여 상기 스토리지 장치를 동작시키는 단계를 포함한다.
본 개시의 일 양상에 따르면, 베이스보드 관리 컨트롤러는: 상기 스토리지 장치의 제품 정보 및 상기 스토리지 장치의 상태 정보 중 적어도 하나의 정보를 획득하기 위해 상기 스토리지 장치의 마이크로 컨트롤러 유닛과 통신하도록 구성된 통신 유닛; 및 상기 적어도 하나의 정보에 기초하여 상기 스토리지 장치를 동작시키도록 구성된 동작 유닛을 포함한다.
본 개시의 일 양상에 따르면, 스토리지 장치의 아웃-오브-밴드 관리 방법은: 상기 스토리지 장치의 마이크로 컨트롤러 유닛에 의해 상기 스토리지 장치의 상태 정보를 모니터링하는 단계; 및 상기 스토리지 장치의 상기 상태 정보 및 상기 스토리지 장치의 제품 정보 중 적어도 하나의 정보를 상기 베이스보드 관리 컨트롤러에게 전송하기 위해 상기 마이크로 컨트롤러 유닛에 의해 베이스보드 관리 컨트롤러와 통신하는 단계를 포함한다.
본 개시의 일 양상에 따르면, 스토리지 장치는 마이크로 컨트롤러 유닛을 포함하고, 상기 마이크로 컨트롤러 유닛은: 상기 스토리지 장치의 상태 정보를 모니터링하고; 상기 스토리지 장치의 상기 상태 정보 및 상기 스토리지 장치의 제품 정보 중 적어도 하나의 정보를 저장하고; 그리고 베이스보드 관리 컨트롤러와 통신함으로써 상기 베이스보드 관리 컨트롤러에게 상기 적어도 하나의 정보를 전송하도록 구성된다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 베이스보드 관리 컨트롤러는 마이크로 컨트롤러 유닛으로부터 수신된 정보에 기초하여 스토리지 장치의 동작을 제어할 수 있고, 따라서 베이스보드 관리 컨트롤러에 의한 스토리지 장치의 관리 기능(예를 들어, 아웃-오브-밴드 관리 기능들)을 향상시킬 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 베이스보드 관리 컨트롤러는 스토리지 장치의 비정상적인 조건들에서 마이크로 컨트롤러 유닛과 통신할 수 있다. 그러므로, 스토리지 장치가 비정상적일 때 스토리지 장치에 대한 베이스보드 관리 컨트롤러의 제어 능력이 개선될 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 베이스보드 관리 컨트롤러는 내부 집적 회로 버스 또는 시스템 관리 버스에 기초하여 마이크로 컨트롤러 유닛과 통신할 수 있다. 그러므로, 베이스보드 관리 컨트롤러는 마이크로 컨트롤러 유닛과 효율적으로 통신할 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 마이크로 컨트롤러 유닛은 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나를 외부 베이스보드 관리 컨트롤러에게 전송할 수 있으므로, 스토리지 장치에 대한 아웃-오브-밴드 관리 기능이 향상된다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 마이크로 컨트롤러 유닛은 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나를 저장하는데 사용되는 영구 메모리를 포함할 수 있다. 그러므로, 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나는 마이크로 컨트롤러 유닛 내에 안정적으로 저장될 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛으로부터 정보를 수신할 수 있으므로, 스토리지 장치로부터 정보를 수집하는 기능이 확장된다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛으로부터 수신된 정보에 기초하여 스토리지 장치의 동작을 제어할 수 있으므로, 스토리지 장치의 제어 능력이 향상된다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 스토리지 장치의 다양한 정보(예를 들어, 스토리지 장치의 필수적인 제품 데이터, 소프트웨어 정보 및 하드웨어 정보 중 적어도 하나)를 저장하기 위한 영구 메모리는 마이크로 컨트롤러 유닛 내에 설정되므로, 마이크로 컨트롤러 유닛은 스토리지 장치의 아웃-오브-밴드 관리 능력을 향상시키고 확장하기 위해, 아웃-오브-밴드 관리에 의해 베이스보드 관리 컨트롤러에게 다양한 정보를 전송할 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 베이스보드 관리 컨트롤러 및 마이크로 컨트롤러 유닛 사이의 통신 능력은 베이스보드 관리 컨트롤러 및 마이크로 컨트롤러 유닛 사이의 소프트웨어 통신 프로토콜 스택을 실현함으로써 향상될 수 있고, 따라서 이들 사이에서 보다 많은 메시지들 및 커맨드들이 전송될 수 있다. 스토리지 장치에 대한 베이스보드 관리 컨트롤러의 아웃-오브-밴드 관리 능력을 향상시키고 확장시킴으로써, 베이스보드 관리 컨트롤러는 스토리지 장치를 더 잘 모니터링하고 관리할 수 있다. 예를 들어, 베이스보드 관리 컨트롤러가 호스트의 비정상적인 전원 고장(power failure)을 감지하면, 베이스보드 관리 컨트롤러는 스토리지 장치가 대책을 강구하도록 아웃-오브-밴드 관리에 의해 스토리지 장치에게 메시지를 전송할 수 있다. 이것은 데이터 무결성을 보장하고 데이터 손실을 예방할 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 마이크로 컨트롤러 유닛은 임의의 종류의 정보를 저장하는 영구 메모리로 구성되므로, 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리는 스토리지 장치로부터 제거될 수 있다. 그러므로, 스토리지 장치의 메인 보드 상의 공간이 절약되고 그리고 스토리지 장치의 비용이 감소된다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 전원 공급 유닛 및 대기 전원 공급 중 하나는 마이크로 컨트롤러 유닛에 전원을 공급하는데 사용될 수 있으므로, 안정적인 아웃-오브-밴드 관리가 실현될 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 스토리지 장치의 메인 컨트롤러가 비정상 상태에 있고 그리고 인-밴드 통신을 수행할 수 없으면, 베이스보드 관리 컨트롤러는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 모드에 의해 스토리지 장치와 통신할 수 있다. 베이스보드 관리 컨트롤러는 스토리지 장치의 메인 컨트롤러의 에러 전후 정보(예를 들어, 단지 예시로서, 하드웨어 모니터링 정보, 로그 정보, 등)를 획득할 수 있고, 그리고 고장 분석을 위해 이러한 정보를 사용할 수 있으므로, 고장의 원인을 신속하게 찾고 고장을 수리할 수 있다. 따라서, 베이스보드 관리 컨트롤러는 고장 시간을 효과적으로 감소시킬 수 있고 그리고 산업적인 생산에서 스토리지 장비 고장에 의한 생산 손실 및 비용을 크게 감소시킬 수 있다.
본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치에서, 스토리지 장치의 내부 하드웨어 정보는 베이스보드 관리 컨트롤러에 의해 수집될 수 있고 그리고 마이크로 컨트롤러 유닛의 영구 메모리에 저장될 수 있다. 그러면, 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛과 통신하고, 이것은 스토리지 장치의 메인 컨트롤러가 비정상일 때, 호스트가 스토리지 장치의 내부 하드웨어를 모니터링하지 않을 수 있다는 문제를 해결한다.
본 개시의 일 실시 예에 따르면, 스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치가 제공된다.
또한, 아웃-오브-밴드의 통신 인터페이스를 통해서 하드웨어 정보를 관리함으로써, 인-밴드의 통신 인터페이스에서의 리소스 소비가 감소되고, 메인 컨트롤러 또는 중앙 처리 장치가 고장나거나 비정상적으로 동작할 때 하드웨어 정보를 신속하고 안정적으로 관리할 수 있다.
본 개시의 상술된 그리고 다른 목적들 및 특징들은 예시를 나타내는 첨부된 도면들과 함께 후술되는 설명에 의해 보다 명확해질 것이다.
도 1은 관련 기술에 따른 스토리지 시스템 내의 호스트 및 스토리지 장치 사이의 통신의 개략적인 도면을 나타낸다.
도 2는 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 설명하는 블록도이다.
도 3은 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 설명하는 블록도이다.
도 4는 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 설명하는 블록도이다.
도 5a는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법을 설명하는 순서도이다.
도 5b는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법을 설명하는 순서도이다.
도 6a는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법의 순서도를 설명한다.
도 6b는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법의 순서도를 설명한다.
도 6c는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법의 순서도를 설명한다.
도 7은 실시 예에 따른, 스토리지 장치가 적용된 시스템의 도면이다.
도 8은 예시적인 실시 예에 따른 호스트 스토리지 시스템의 블록도이다.
도 9는 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 10은 실시 예에 따른 UFS 시스템의 도면이다.
도 11은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 12는 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 블록도이다.
도 1은 관련 기술(related art)에 따른 스토리지 시스템 내의 호스트 및 스토리지 장치 사이의 통신의 개략적인 도면을 설명한다.
도 1을 참조하면, 호스트(110) 및 스토리지 장치(120)는 스토리지 시스템(100) 내에 포함될 수 있다.
호스트(110)는 중앙 처리 장치(CPU; Central Processing Unit)(111) 및 베이스보드 관리 컨트롤러(BMC; Baseboard Management Controller)(112)를 포함할 수 있다. CPU(111) 및 BMC(112)는 서로 통신할 수 있다.
스토리지 장치(120)는 메인 컨트롤러(121), 마이크로 컨트롤러 유닛(MCU; Micro Controller Unit)(122), 센서(123), 및 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(EEPROM; Electrically Erasable Programmable Read Only Memory)(124)를 포함할 수 있다. 메인 컨트롤러(121) 및 마이크로 컨트롤러 유닛(122)은 서로 통신할 수 있다. 마이크로 컨트롤러 유닛(122)은 센서(123)로부터 센서(123)의 감지 정보를 수신할 수 있다. 예로서, 스토리지 장치(120)는 복수의 센서들(123)을 포함할 수 있다. 센서들(123)은 통합 모듈들일 수 있고 그리고 스토리지 장치(120)의 하나 이상의 파라미터들을 감지할 수 있다. 예를 들어, 센서(123)는 NAND 전압 센서, 동적 랜덤 액세스 메모리(DRAM; Dynamic Random Access Memory) 전압 센서, 외부 전압 센서, 온도 센서, 습도 센서 등을 포함할 수 있지만, 이에 제한되지 않는다. 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리(124)는 스토리지 장치의 필수적인 제품 데이터(VPD; Vital Product Data) 정보(예를 들어, 스토리지 장치의 일련 번호, 모델 등과 같은 기본 정보)를 저장할 수 있지만, 이에 제한되지 않는다. 스토리지 장치(120)의 필수적인 제품 데이터 정보는 스토리지 장치(120)가 공장에서 출고될 때 스토리지 장치(120)의 메인 컨트롤러(121)에 의해 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리(124)에 일단 쓰여진다. 필수적인 제품 데이터 정보가 쓰여진 후, 이것은 변경되지 않으나, 읽어질 수만 있다. 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리(124)는 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리(124)의 온도를 감지하기 위한 온도 센서(125)를 더 포함할 수 있고 그리고 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리(124) 내에 감지된 온도를 기록할 수 있다. 온도의 값은 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리(124)의 온도가 변함에 따라 실시간으로 업데이트될 수 있다.
호스트(110)에 의한 스토리지 장치(120)의 관리는 인-밴드(in-band) 관리 및 아웃-오브-밴드(out-of-band) 관리로 나누어진다. 호스트(110)에 의한 스토리지 장치(120)의 인-밴드 관리는 호스트(110)가 중앙 처리 장치(111), 운영 체제, 등을 통해서 스토리지 장치(120)의 메인 컨트롤러(121)와 통신하고, 그리고 스토리지 장치(120)를 동작시키는 것을 의미한다. 호스트(110)는 인-밴드 관리의 방식으로 스토리지 장치(120)의 상태 정보를 모니터링한다. 마이크로 컨트롤러 유닛(122)은 센서(123)로부터 획득된 관련 정보를 스토리지 장치(120)의 메인 컨트롤러(121)로 전송하고, 그리고 메인 컨트롤러(121)는 호스트(110)가 스토리지 장치(120)의 내부 하드웨어 상태를 모니터링 및 관리하는데 사용하기 위해 인-밴드 관리에 의해 호스트(110)에게 정보를 전송한다. 스토리지 장치(120)의 아웃-오브-밴드 관리는 호스트(110)의 베이스보드 관리 컨트롤러(112)가 인터페이스에 의해 스토리지 장치(120)와 연결되고 그리고 스토리지 장치(120)의 전기적으로 소거 가능한 프로그래밍 가능한 메모리(124)로부터 정보를 읽는 프로세스를 지칭한다.
도 2는 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 설명하는 블록도이다.
도 2를 참조하면, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(200)은 호스트(210) 및 스토리지 장치(220)를 포함할 수 있다.
호스트(210)는 BMC(211)를 포함할 수 있다. 스토리지 장치(220)는 MCU(221)를 포함할 수 있다. 베이스보드 관리 컨트롤러(211)는 스토리지 장치(220)의 마이크로 컨트롤러 유닛(221)과 통신하여 스토리지 장치(220) 내의 스토리지 매체의 제품 정보 및 스토리지 매체의 상태 정보 중 적어도 하나를 획득할 수 있다. 예를 들어, 베이스보드 관리 컨트롤러(211)는 통신 유닛(미도시)을 포함할 수 있다. 통신 유닛은 스토리지 장치(220)의 마이크로 컨트롤러 유닛(221)과 통신하여 스토리지 장치(220)의 스토리지 매체의 제품 정보 및 스토리지 매체의 상태 정보 중 적어도 하나를 획득할 수 있다.
이후, 마이크로 컨트롤러 유닛(221)으로부터 획득된 정보에 기초하여, 베이스보드 관리 컨트롤러(211)는 스토리지 장치(220)를 동작시킬 수 있다. 예를 들어, 베이스보드 관리 컨트롤러(211)는 동작 유닛(미도시)을 포함할 수 있다. 동작 유닛은 통신 유닛으로부터 획득된 정보에 기초하여 스토리지 장치(220)를 동작시킬 수 있다. 일 실시 예에서, 동작 유닛은 스토리지 장치(220)가 비정상 상태임을 가리키는 정보에 응답하여, 통신 유닛을 통해서 마이크로 컨트롤러 유닛(221)에게 스토리지 장치(220)를 동작시키기 위한 정보를 전송할 수 있다. 즉, 본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)으로부터 수신된 정보에 기초하여 스토리지 장치(220)의 동작을 제어할 수 있고, 따라서 베이스보드 관리 컨트롤러(211)에 의한 스토리지 장치(220)의 관리 기능(예를 들어, 아웃-오브-밴드 관리 기능들)을 향상시킬 수 있다.
보다 구체적으로, 다시 도 1을 참조하면, 관련-기술 스토리지 장치(120)의 아웃-오브-밴드 관리는 후술되는 2개의 단점들을 갖는 것으로 보인다: 1) 스토리지 장치(120)에 대한 베이스보드 관리 컨트롤러(112)의 아웃-오브-밴드 관리 기능은 제한되고 그리고 베이스보드 관리 컨트롤러(112)는 아웃-오브-밴드 관리에 의해 스토리지 장치(120)의 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(EEPROM)(124)으로부터 스토리지 장치(120)의 VPD 정보 및 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(EEPROM)(124)의 온도 정보만을 얻을 수 있다; 2) 호스트(110)는 스토리지 장치(120)의 마이크로 컨트롤러 유닛(122)에 의해 수집된 정보를 완전하게 인-밴드 관리 방식으로 처리한다. 이 경우, 호스트 CPU의 상태 또는 스토리지 장치의 마스터 컨트롤러의 상태가 비정상적이게 되면, 호스트는 스토리지 장치(120)의 상태 정보를 얻을 수 없고 그리고 CPU를 관리할 수 없다.
대조적으로, 본 출원의 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)으로부터 스토리지 장치(220)의 상태 정보를 획득하는 능력을 갖고, 따라서 스토리지 장치(220)로부터 정보를 수집하기 위해 아웃-오브-밴드 관리의 능력을 확장한다. 게다가, 본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러(211)는 통신에 의해 마이크로 컨트롤러 유닛(221)으로부터 수신된 정보에 기초하여 스토리지 장치(220)의 동작을 제어할 수 있고, 따라서 스토리지 장치(220)에 의한 호스트(210)의 제어 능력을 향상시킨다.
스토리지 장치(220)는 데이터를 저장하기 위한 다양한 타입들의 스토리지 장치들(예를 들어, 휘발성 스토리지 장치, 비휘발성 스토리지 장치)를 포함할 수 있다. 스토리지 장치(220)의 제품 정보는 VPD 정보를 포함할 수 있다. 예를 들어, VPD 정보는 스토리지 장치(220)의 일련 번호 및 모델과 같은 기본 정보를 포함할 수 있다. 스토리지 장치의 상태 정보는 전압, 습도, 온도, 전류, 팬 상태 정보, 및 전원 상태 정보 중 적어도 하나를 포함할 수 있지만, 이에 제한되지 않는다. 게다가, 스토리지 장치(220)의 상태 정보는 다양한 방법들로 획득될 수 있다. 예를 들어, 단지 예시로서, 스토리지 장치(220)의 상태 정보는 센서에 의해 획득될 수 있다.
하나의 예시에서, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)으로부터 획득된 정보를 호스트(210)의 프로세서(미도시)에게 전송할 수 있고 그래서 호스트(210)의 프로세서는 정보에 기초하여 스토리지 장치(220)와 통신하기 위한 동작 명령어를 결정할 수 있다. 베이스보드 관리 컨트롤러(211)는 호스트(210)의 프로세서로부터 스토리지 장치(220)로 통신되는 동작 명령어를 수신할 수 있다. 이후, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)과 통신하여 마이크로 컨트롤러 유닛(221)에게 동작 명령어를 전송할 수 있다. 예를 들어, 마이크로 컨트롤러 유닛(222)은 수신된 동작 명령어에 기초하여 대응하는 동작을 수행할 수 있다.
다른 예시에서, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)으로부터 획득된 정보에 기초하여 스토리지 장치(220)와 통신하기 위한 동작 명령어를 결정할 수 있다. 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)과 통신하여 마이크로 컨트롤러 유닛(221)에게 동작 명령어를 전송할 수 있다. 예를 들어, 마이크로 컨트롤러 유닛(221)은 수신된 동작 명령어에 기초하여 대응하는 동작들을 수행할 수 있다.
즉, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)으로부터 획득된 정보에 기초하여 스토리지 장치(220)의 동작을 직접적으로 또는 간접적으로 제어할 수 있고, 따라서, 스토리지 장치(220) 상의 베이스보드 관리 컨트롤러(211)의 관리 기능(예를 들어, 아웃-오브-밴드 관리 기능)이 향상된다.
일 실시 예에서, 베이스보드 관리 컨트롤러(211)는 스토리지 장치(220)가 비정상 상태임을 가리키는 정보에 응답하여, 스토리지 장치(220)를 동작시키기 위한 정보를 마이크로 컨트롤러 유닛(221)에게 전송할 수 있다. 스토리지 장치(220)는 스토리지 장치(220)를 동작시키기 위한 수신된 정보에 기초하여 대응하는 동작들을 수행할 수 있다. 예를 들어, 스토리지 장치(220)를 동작시키기 위한 정보는 메시지들 및 커맨드들 중 적어도 하나일 수 있다. 즉, 이러한 실시 예에서, 베이스보드 관리 컨트롤러(211)는 스토리지 장치(220)의 비정상 조건들에서 마이크로 컨트롤러 유닛(221)과 통신할 수 있다. 그러므로, 스토리지 장치(220)의 상태가 비정상일 때 스토리지 장치(220)에 대한 베이스보드 관리 컨트롤러(211)의 제어 능력이 향상될 수 있다.
통신은 다양한 형태들을 가질 수 있다. 하나의 예시에서, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)과 계속적으로 통신할 수 있다. 다른 예시에서, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)과 간접적으로(예를 들어, 주기적으로 또는 비주기적으로) 통신할 수 있다.
게다가, 베이스보드 관리 컨트롤러(211)는 다양한 방식들에 의해 스토리지 장치(220)의 상태가 비정상인지 여부를 결정할 수 있다. 예를 들어, 베이스보드 관리 컨트롤러(211)는 호스트(210)의 프로세서의 신호에 기초하여 스토리지 장치(220)의 상태가 비정상인지 여부를 결정할 수 있다. 그러나, 상술된 예시들은 예시에 불과하고, 본 개시는 이에 제한되지 않는다.
하나의 예시에서, 베이스보드 관리 컨트롤러(211)는 내부 집적 회로 버스 또는 시스템 관리 버스에 기초하여 마이크로 컨트롤러 유닛(221)과 통신할 수 있다. 그러므로, 베이스보드 관리 컨트롤러(211)는 마이크로 컨트롤러 유닛(221)과 효율적으로 통신할 수 있다. 그러나, 상술된 예시는 예시에 불과하며, 본 개시는 이에 제한되지 않는다. 통신의 기반이 되는 버스 또는 프로토콜은 임의의 다른 버스 또는 프로토콜일 수 있다.
스토리지 장치(220)에서, 마이크로 컨트롤러 유닛(221)은 스토리지 장치(220)의 상태 정보를 모니터링할 수 있다. 상술된 바와 같이, 스토리지 장치(220)의 상태 정보는 전압, 습도, 온도, 전류, 팬 상태 정보, 및 전원 상태 정보 중 적어도 하나를 포함할 수 있지만, 이에 제한되지 않는다. 게다가, 마이크로 컨트롤러 유닛(221)은 스토리지 장치(220)의 상태 정보 및 스토리지 장치(220)의 제품 정보 중 적어도 하나를 저장할 수 있다. 상술된 바와 같이, 스토리지 장치(220)의 제품 정보는 VPD 정보를 포함할 수 있다. 예를 들어, VPD 정보는 스토리지 장치(220)의 일련 번호 및 모델과 같은 기본 정보를 포함할 수 있다. 마이크로 컨트롤러 유닛(221)은 베이스보드 관리 컨트롤러(211)와 통신하여 베이스보드 관리 컨트롤러(211)에게 정보를 전송할 수 있다.
마이크로 컨트롤러 유닛(221)은 스토리지 장치(220)의 상태 정보 및 스토리지 장치(220)의 제품 정보 중 적어도 하나를 외부 베이스보드 관리 컨트롤러로 전송할 수 있으므로, 스토리지 장치(220)에 대한 관리 기능(예를 들어, 아웃-오브-밴드 관리 기능)은 향상될 수 있다.
일 실시 예에서, 마이크로 컨트롤러 유닛(221)은 영구 메모리(미도시)를 포함할 수 있다. 영구 메모리는 스토리지 장치(220)의 상태 정보 및 스토리지 장치(220)의 제품 정보 중 적어도 하나를 저장하는데 사용될 수 있다. 그러므로, 스토리지 장치(220)의 상태 정보 및 스토리지 장치(220)의 제품 정보 중 적어도 하나는 마이크로 컨트롤러 유닛(221) 내에 안정적으로 저장될 수 있다.
본 개시의 각 구성 요소의 동작은 도 3 내지 도 6b와 관련되어 설명될 것이다. 그러나, 이러한 설명들은 예시에 불과하다. 본 개시는 이에 제한되지 않는다.
도 3은 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 설명하는 블록도이다.
도 3을 참조하면, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(300)은 호스트(310) 및 스토리지 장치(320)를 포함할 수 있다. 스토리지 장치(320)는 MCU(321)를 포함할 수 있다. 마이크로 컨트롤러 유닛(321)은 스토리지 장치(320)의 정보를 획득할 수 있다. 호스트(310)는 BMC(311)를 포함할 수 있다. 베이스보드 관리 컨트롤러(311)는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛(321)으로부터 정보를 수신할 수 있고 그리고 정보에 기초하여 스토리지 장치(320)의 동작을 제어할 수 있다. 즉, 호스트(310), 스토리지 장치(320), 마이크로 컨트롤러 유닛(321), 및 베이스보드 관리 컨트롤러(311)는 각각 도 2의 호스트(210), 스토리지 장치(220), 마이크로 컨트롤러 유닛(221), 및 베이스보드 관리 컨트롤러(211)와 유사할 수 있다. 그러므로, 중복되는 설명은 생략될 것이고 그리고 도 3 및 도 2 사이의 차이점들이 도 3을 참조하여 아래에서 중점적으로 설명될 것이다.
일 실시 예에서, 마이크로 컨트롤러 유닛(311)은 영구 메모리(322)를 포함할 수 있다. 영구 메모리(322)는 마이크로 컨트롤러 유닛(321)에 의해 획득된 스토리지 장치(320)의 정보를 저장할 수 있다. 스토리지 장치(320)의 정보는 스토리지 장치(320)의 필수적인 제품 데이터, 소프트웨어 정보, 및 하드웨어 정보 중 적어도 하나를 포함할 수 있다. 예를 들어, 하드웨어 정보는 스토리지 장치(320) 내부의 하드웨어에 대한 정보(예를 들어, 단지 예시로서, 전압, 커패시터 상태, 온도, 습도, 전원 공급, 및 팬 등)일 수 있고 그리고 예를 들어, 스토리지 장치(320) 내부의 센서들에 의해 얻어질 수 있다. 소프트웨어 정보는 스토리지 장치(320) 내부의 소프트웨어 및/또는 프로그램들에 대한 정보(예를 들어, 단지 예시로서, 동작 상태 정보 등)일 수 있다.
다시 도 1을 참조하면, 도 1의 관련 기술의 스토리지 시스템(100)에서, 제한된 특정 정보(즉, 스토리지 장치(120)의 필수적인 제품 데이터 정보 및 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124)의 온도 정보)는 스토리지 장치(120) 내의 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124)를 설정함으로써 저장되고, 이것은 스토리지 장치(120)의 아웃-오브-밴드 관리 능력을 불충분하게 만든다.
대조적으로, 이러한 실시 예에서, 스토리지 장치(320)의 다양한 정보(예를 들어, 스토리지 장치(320)의 필수적인 제품 데이터, 소프트웨어 정보, 및 하드웨어 정보 중 적어도 하나)를 저장하기 위한 영구 메모리(322)는 마이크로 컨트롤러 유닛(311) 내에 설정되므로, 다양한 정보는 아웃-오브-밴드 관리에 의해 베이스보드 관리 컨트롤러(311)로 마이크로 컨트롤러 유닛(311)에 의해 전송될 수 있다. 따라서, 스토리지 장치(320)의 아웃-오브-밴드 관리 능력은 향상되고 확장된다.
일 실시 예에서, 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 아웃-오브-밴드 관리는 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 소프트웨어 통신 프로토콜 스택에 의해 구현될 수 있고, 여기서 소프트웨어 통신 프로토콜 스택은 내부 집적 회로 버스 및 시스템 관리 버스 중 적어도 하나를 포함할 수 있다.
베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 소프트웨어 통신 프로토콜 스택은 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321)가 메시지 조합, 메시지 전송, 메시지 수신, 메시지 파싱, 메시지 처리, 등의 가능들 중 하나 이상을 갖게 할 수 있다. 베이스보드 관리 컨트롤러(311)는 자체 소프트웨어 통신 프로토콜 스택에 의해 MCU(321)에게 메시지들을 전송할 수 있고, 그리고 마이크로 컨트롤러 유닛(321)은 아웃-오브-밴드 통신 기능을 달성하기 위해 완전한 관련 동작들 및 BMC(311)에 대한 응답 메시지들과 함께 자체 소프트웨어 통신 프로토콜 스택에 의해 메시지들을 수신할 수 있다. 하나의 예시에서, 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 소프트웨어 통신 프로토콜 스택은 내부 집적 회로(I2C; inter integrated circuit) 버스일 수 있다. 다른 예시에서, 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 소프트웨어 통신 프로토콜 스택은 시스템 관리 버스(SMBus; System Management bus)일 수 있다. 그러나, 상술된 예시는 예시에 불과하고 그리고 본 개시의 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 소프트웨어 통신 프로토콜 스택은 이에 제한되지 않으며 임의의 다른 버스이거나 또는 여러 버스들의 조합일 수 있다.
이러한 실시 예에서, 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 소프트웨어 통신 프로토콜 스택을 구현함으로써, 베이스보드 관리 컨트롤러(311) 및 마이크로 컨트롤러 유닛(321) 사이의 통신 능력은 향상될 수 있고, 따라서 이들 사이에서 더 많은 메시지들 및 커맨드들이 전송될 수 있고 그리고 스토리지 장치에 대한 베이스보드 관리 컨트롤러(311)의 아웃-오브-밴드 관리 능력이 향상되고 확장될 수 있다. 베이스보드 관리 컨트롤러(311)는 스토리지 장치를 더 잘 모니터링하고 관리할 수 있다. 예를 들어, 베이스보드 관리 컨트롤러(311)가 호스트의 비정상적인 전원 고장을 감지하면, 베이스보드 관리 컨트롤러(311)는 아웃-오브-밴드 관리에 의해 스토리지 장치(320)에게 메시지를 전송하여 스토리지 장치(320)가 대책을 강구하게 할 수 있고, 이것은 데이터 무결성을 보장하고 데이터 손실을 방지할 수 있다.
일 실시 예에서, 스토리지 장치(320)는 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리를 포함하지 않을 수 있다. 예를 들어, 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리는 도 1을 참조하여 설명된 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124)일 수 있다. 다시 말해서, 스토리지 장치(320)는 온도 센서를 포함하지 않을 수 있고 그리고 필수적인 제품 데이터를 저장하기 위한 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(예를 들어, 도 1의 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124))를 포함하지 않을 수 있다.
이러한 실시 예에서, 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리는 스토리지 장치(320)로부터 제거되므로, 스토리지 장치(320)의 메인 보드 상의 공간이 절약되고 그리고 스토리지 장치(320)의 비용이 감소된다.
게다가, 대안적으로, 호스트(310)는 중앙 처리 장치(미도시)를 포함할 수도 있고 그리고 스토리지 장치(320)는 마이크로 컨트롤러 유닛(321)과 통신하는 메인 컨트롤러(미도시)를 포함할 수도 있다. 중앙 처리 장치는 인-밴드 관리를 통해 메인 컨트롤러와 통신할 수 있다.
게다가, 대안적으로, 스토리지 장치(320)는 마이크로 컨트롤러 유닛(321)에 전원을 공급하도록 구성된 전원 공급 유닛(power supply unit)(미도시) 및 대기 전원 공급(standby power supply)(미도시)을 포함할 수도 있다. 전원 공급 유닛이 전원을 공급할 수 없으면, 대기 전원 공급이 마이크로 컨트롤러 유닛(321)에게 전원을 공급한다. 전원 공급 유닛 및 대기 전원 공급 중 하나는 마이크로 컨트롤러 유닛(321)에 전원을 공급하는데 사용될 수 있으므로, 안정적인 아웃-오브-밴드 관리가 실현된다.
일 실시 예에서, 스토리지 장치(320)의 메인 컨트롤러가 고장으로 인해 마이크로 컨트롤러 유닛(321)과 통신할 수 없으면, 베이스보드 관리 컨트롤러(311)는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛으로부터 고장 관련 정보를 수신할 수 있고 그리고 고장 관련 정보에 기초하여 고장의 원인을 결정 및/또는 고장을 수리할 수 있다.
즉, 스토리지 장치(320)의 메인 컨트롤러가 비정상 상태에 있고 그리고 인-밴드 통신을 수행할 수 없으면, 베이스보드 관리 컨트롤러(311)는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 모드에 의해 스토리지 장치(320)와 통신할 수 있고, 스토리지 장치(320)의 메인 컨트롤러의 에러 전후 정보(예를 들어, 단지 예시로서, 하드웨어 모니터링 정보, 로그 정보, 등)를 획득할 수 있고, 그리고 고장 분석에 대한 정보를 사용하여 편리하고 신속하게 고장의 원인을 찾고 고장을 수리할 수 있다. 고장 시간을 효과적으로 감소시키는 것은 산업 생산에서 스토리지 장치(320)의 실패에 의해 발생된 생산 손실 및 비용을 크게 감소시킬 수 있다.
게다가, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(300)은 베이스보드 관리 컨트롤러(311)에 의해 스토리지 장치(320)의 내부 하드웨어 정보를 수집할 수 있고 이를 마이크로 컨트롤러 유닛(321)의 영구 메모리(322) 내에 저장할 수 있고, 이 후 베이스보드 관리 컨트롤러(311)는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛(321)과 통신하고, 이것은 도 1의 스토리지 장치의 메인 컨트롤러가 비정상인 경우, 호스트가 스토리지 장치의 내부 하드웨어를 모니터링할 수 없다는 문제를 해결한다.
도 4는 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 설명하는 블록도이다.
도 4를 참조하면, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(400)은 호스트(410) 및 스토리지 장치(420)를 포함할 수 있다. 스토리지 장치(420)는 MCU(421)를 포함할 수 있다. 마이크로 컨트롤러 유닛(421)은 스토리지 장치(420)의 정보를 획득할 수 있다. 호스트(410)는 BMC(411)를 포함할 수 있다. 베이스보드 관리 컨트롤러(411)는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛(421)으로부터 정보를 수신할 수 있고 그리고 정보에 기초하여 스토리지 장치(420)의 동작을 제어할 수 있다. 마이크로 컨트롤러 유닛(421)은 영구 메모리(422)를 포함할 수 있다. 영구 메모리(422)는 마이크로 컨트롤러 유닛(421)에 의해 획득된 스토리지 장치(420)의 정보를 저장할 수 있다. 즉, 호스트(410), 스토리지 장치(420), 마이크로 컨트롤러 유닛(421), 베이스보드 관리 컨트롤러(411), 및 영구 메모리(422)는 각각 도 3의 호스트(310), 스토리지 장치(320), 마이크로 컨트롤러 유닛(321), 베이스보드 관리 컨트롤러(311), 및 영구 메모리(322)와 유사할 수 있다. 그러므로, 중복되는 설명은 생략될 것이고 그리고 도 4 및 도 3 사이의 차이점들이 도 4를 참조하여 아래에서 중점적으로 설명될 것이다.
마이크로 컨트롤러 유닛(421)은 제어 장치일 수 있다. 마이크로 컨트롤러 유닛(421)은 스토리지 장치(420) 내부의 센서(424)와 연결될 수 있고 그리고 하드웨어 정보(예를 들어, 단지 예시로서, 전압, 전기량, 전류, 등과 같은 정보)를 획득할 수 있다. 마이크로 컨트롤러 유닛(421)은 영구 메모리(422)를 포함한다. 영구 메모리(422)는 수집된 하드웨어 정보, 필수적인 제품 데이터 정보, 및 다른 필요한 정보 중 하나 이상을 저장하는데 사용될 수 있다.
제1 전원 공급 유닛(PSU1; first power supply unit)(441) 및 제2 전원 공급 유닛(PSU2; second power supply unit)(422)은, 각각, 메인 컨트롤러(423) 및 마이크로 컨트롤러 유닛(421)에게 전원을 공급할 수 있다. 하나의 예시에서, 메인 컨트롤러(423)는 12V의 전압으로 동작할 수 있고 그리고 마이크로 컨트롤러 유닛(421)은 3.3V의 전압으로 동작할 수 있다. 그러나, 상술된 예시는 예시에 불과하고, 본 개시의 메인 컨트롤러(423) 및 마이크로 컨트롤러 유닛(421)의 동작 전압은 이에 제한되지 않으며 임의의 다른 전압의 값일 수 있다.
제1 전원 공급 유닛(441)이 전원을 공급할 수 없으면, 대기 전원 공급(432)은 아웃-오브-밴드 관리를 계속하기 위해 마이크로 컨트롤러 유닛(421)에게 전원 공급을 계속할 수 있고, 이에 따라 안정적인 아웃-오브-밴드 관리를 보장할 수 있다. 제2 전원 공급 유닛(442)이 전원을 공급할 수 없으면, 대기 전원 공급(432)은 메인 컨트롤러(423)에게 전원 공급을 계속할 수 있다.
도 4는 제1 전원 공급 유닛(441) 및 제2 전원 공급 유닛(442)이 호스트(410) 내에 위치하는 것으로 도시하지만, 본 개시의 제1 전원 공급 유닛(441) 및 제2 전원 공급 유닛(442)의 배열 위치들은 이에 제한되지 않으며 임의의 다른 위치(예를 들어, 스토리지 장치(420) 내의 위치 또는 호스트(410) 및 스토리지 장치(420) 이외의 위치)일 수 있다.
게다가, 제1 전원 공급 유닛(441) 및 제2 전원 공급 유닛(442)은 외부 전원 공급(430)으로부터 전원을 수신할 수 있다. 예를 들어, 전원 공급(430)은 교류(AC) 전원 공급(431) 및 대기 전원 공급(432)을 포함할 수 있다.
도 1의 관련 기술의 스토리지 장치(120)와 비교하면, 본 개시의 예시적인 실시 예에 따르면, 스토리지 장치의 하드웨어 아키텍처가 개선되고 그리고 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리는 스토리지 장치(420)로부터 제거되고, 이것은 스토리지 장치(420)의 메인 보드 상의 공간을 절약하고 그리고 스토리지 장치의 비용을 감소시킨다.
다시 도 1을 참조하면, 도 1의 관련 기술 스토리지 장치(120)에서 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124)에 저장된 정보는 제한적이고 그리고 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124)는 스토리지 장치의 필수적인 제품 데이터 정보 및 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리의 온도 정보만을 저장한다. 대조적으로, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(400)은 스토리지 장치(420)의 아웃-오브-밴드 관리의 핵심 구성으로서 스토리지 장치(420) 내의 마이크로 컨트롤러 유닛(421)을 사용한다. 마이크로 컨트롤러 유닛(421)은 스토리지 장치(420) 내부의 센서와 연결되고 그리고 스토리지 장치(420) 내부의 하드웨어 정보(예를 들어, 전압, 커패시터 상태, 온도, 등) 및/또는 다른 정보를 수집할 책임이 있다. 이러한 정보는 마이크로 컨트롤러 유닛(421)의 영구 메모리(422) 내에 저장될 것이다. 마이크로 컨트롤러 유닛(421)의 영구 메모리(422)는 원본 스토리지 장치의 필수적인 제품 데이터 정보뿐만 아니라 스토리지 장치 내부의 하드웨어 정보 및/또는 다른 정보도 저장할 수 있고, 이것은 스토리지 장치의 아웃-오브-밴드 관리 능력을 향상시키고 확장한다.
게다가, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(400)은 마이크로 컨트롤러 유닛(421)에 의해 스토리지 장치(420) 내부의 하드웨어 정보 및/또는 다른 정보를 수집할 수 있고, 이러한 정보를 마이크로 컨트롤러 유닛(421)의 영구 메모리(422) 내에 저장할 수 있고, 그리고 이 후 베이스보드 관리 컨트롤러(411)는 아웃-오브-밴드 관리에 의해 마이크로 컨트롤러 유닛(421)과 통신할 수 있고, 이것은 스토리지 장치(420)의 메인 컨트롤러의 상태가 비정상이면, 호스트(410)(예를 들어, CPU(421))가 스토리지 장치(420) 내부의 하드웨어를 모니터링할 수 없다는 문제를 해결한다.
일반적으로, 스토리지 장치의 메인 컨트롤러의 고장들 사이의 평균 시간은 150만(1.5 million) 시간이지만, 호스트 상의 베이스보드 관리 컨트롤러 및 스토리지 장치 내의 마이크로 컨트롤러 유닛은 고장들 사이의 가장 높은 시간을 갖는 원천 요소들이고 그리고 베이스보드 관리 컨트롤러의 고장들 사이의 평균 시간은 73억 5천만(7.35 billion) 시간이다. 마이크로 컨트롤러 유닛들의 고장들 사이의 평균 시간은 1억(100 million) 시간이다. 그러므로, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(400)은 마이크로 컨트롤러 유닛(421)을 스토리지 장치(420)의 아웃-오브-밴드 관리의 주요 구성 요소로서 사용할 수 있고, 베이스보드 관리 컨트롤러(411) 및 마이크로 컨트롤러 유닛(421)에 의해 아웃-오브-밴드 관리를 수행할 수 있고, 그리고 스토리지 장치(420)의 아웃-오브-밴드 관리의 기능을 확장 및 강화할 수 있고, 따라서 마이크로 컨트롤러 유닛(421)의 높은 이용 가능성은 스토리지 장치(420)의 아웃-오브-밴드 관리의 안정성을 크게 향상시킬 수 있다. 더욱이, 전원 공급 유닛이 전원을 공급할 수 없으면, 대기 배터리는 마이크로 컨트롤러 유닛(421)에게 전원 공급을 계속하기 위해 전압(예를 들어, 3.3V)을 제공할 수 있고, 따라서 아웃-오브-밴드 관리가 작업을 계속하여, 아웃-오브-밴드 관리의 안정성 및 신뢰성을 보장한다.
게다가, 본 개시의 예시적인 실시 예의 따른 스토리지 시스템(400)에 따르면, 스토리지 장치(420)의 메인 컨트롤러(423)가 비정상 상태에 있고 그리고 인-밴드 통신을 수행할 수 없으면, 베이스보드 관리 컨트롤러(411)는 아웃-오브-밴드 관리 모드에 의해 스토리지 장치(420)와 통신하여 스토리지 장치(420)의 메인 컨트롤러(423)의 에러 전후 정보(예를 들어, 단지 예시로서, 하드웨어 모니터링 정보, 로그 정보 등)를 획득할 수 있다. 이러한 정보는 고장 분석을 위해 사용될 수 있고, 따라서 편리하고 신속하게 고장의 원인을 찾고 고장을 수리할 수 있다. 즉, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(400)은 고장 시간을 효과적으로 감소시킬 수 있고 그리고 산업 생산에서 스토리지 장치(420)의 고장으로 인해 발생된 생산 손실 및 비용을 크게 감소시킬 수 있다.
다시 도 1을 참조하면, 도 1의 관련 기술 스토리지 시스템(100)에서 베이스보드 관리 컨트롤러(112)에 의한 스토리지 장치(120)의 아웃-오브-밴드 관리의 범위는 베이스보드 관리 컨트롤러(112)가 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리(124)로부터 스토리지 장치의 필수적인 제품 데이터 정보 및 전기적으로 소거 가능한 프로그래밍 가능한 읽기 전용 메모리의 온도 정보를 획득하는 것이지만, 베이스보드 관리 컨트롤러(112)는 아웃-오브-밴드 관리에 의해 스토리지 장치(120)를 동작시키거나 또는 제어할 수 없다. 대조적으로, 본 개시의 예시적인 실시 예에 따른 스토리지 시스템(400)은 베이스보드 관리 컨트롤러(411) 및 스토리지 장치(420)의 마이크로 컨트롤러 유닛(421) 사이의 소프트웨어 통신 프로토콜 스택을 구현함으로써 베이스보드 관리 컨트롤러(411) 및 스토리지 장치(420)의 마이크로 컨트롤러 유닛(421) 사이의 통신 능력을 향상시키고, 따라서 더 많은 메시지들, 커맨드들 등이 베이스보드 관리 컨트롤러(411) 및 스토리지 장치(420)의 마이크로 컨트롤러 유닛(421) 사이에서 전송될 수 있다. 스토리지 장치(420)에 대한 베이스보드 관리 컨트롤러(411)의 아웃-오브-밴드 관리 능력이 향상 및 확장되고, 따라서 베이스보드 관리 컨트롤러(411)는 스토리지 장치(420)를 보다 잘 모니터링하고 관리할 수 있다. 예를 들어, 베이스보드 관리 컨트롤러(411)는 호스트(410)의 전원이 비정상적으로 꺼진 것을 감지하고 그리고 베이스보드 관리 컨트롤러(411)는 아웃-오브-밴드 관리에 의해 스토리지 장치(420)에게 메시지를 전송하여 스토리지 장치(420)가 대책을 강구하게 할 수 있고, 이것은 데이터 무결성을 보장하고 데이터 손실을 방지할 수 있다.
도 5a는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법을 설명하는 순서도이다.
도 5a를 참조하면, 동작 S510에서, 베이스보드 관리 컨트롤러는 스토리지 장치의 제품 정보 및 스토리지 장치의 상태 정보 중 적어도 하나를 얻기 위해 스토리지 장치의 마이크로 컨트롤러 유닛과 통신할 수 있다. 동작 S510은 도 2 내지 도 4 중 임의의 하나를 참조하여 설명된 베이스보드 관리 컨트롤러에 의해 수행되는 동작일 수 있다. 그러므로, 간략화를 위해, 동작 S510은 여기에서 상세하게 설명되지 않을 것이다.
동작 S520에서, 스토리지 장치는 획득된 정보에 기초하여 베이스보드 관리 컨트롤러에 의해 동작될 수 있다. 동작 S520은 도 2 내지 도 4 중 임의의 하나를 참조하여 베이스보드 관리 컨트롤러에 의해 수행되는 동작일 수 있다. 그러므로, 간략화를 위해, 동작 S520은 여기에서 상세하게 설명되지 않을 것이다.
도 5b는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법을 설명하는 순서도이다.
도 5b를 참조하면, 동작 S530에서, 마이크로 컨트롤러 유닛은 스토리지 장치의 상태 정보를 모니터링할 수 있다. 동작 S530은 도 2 내지 도 4 중 임의의 하나를 참조하여 설명된 마이크로 컨트롤러 유닛에 의해 수행되는 동작일 수 있다. 그러므로, 간략화를 위해, 동작 S530은 여기에서 상세하게 설명되지 않을 것이다.
동작 S540에서, 마이크로 컨트롤러 유닛은 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나를 저장할 수 있다. 동작 S540은 도 2 내지 도 4 중 임의의 하나를 참조하여 설명된 마이크로 컨트롤러 유닛에 의해 실행 가능한 동작일 수 있다. 그러므로, 간략화를 위해, 동작 S540은 여기에서 상세하게 설명되지 않을 것이다.
동작 S550에서, 마이크로 컨트롤러 유닛은 베이스보드 관리 컨트롤러와 통신함으로써 베이스보드 관리 컨트롤러에게 정보를 전송할 수 있다. 동작 S550은 도 2 내지 도 4 중 임의의 하나를 참조하여 설명된 마이크로 컨트롤러 유닛에 의해 실행 가능한 동작일 수 있다. 그러므로, 간략화를 위해, 동작 S550은 여기에서 상세하게 설명되지 않을 것이다.
도 6a는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법의 순서도를 설명한다.
도 6a를 참조하면, 동작 S610a에서, 호스트는 전원이 켜지고 그리고 BMC는 작업을 시작한다. 하나의 예시에서, BMC는 운영 체제가 있는지 여부 그리고 운영 체제의 상태가 정상인지 여부에 관계 없이 동작한다.
동작 S620a에서, BMC는 아웃-오브-밴드 관리에 의해 MCU와 통신할 수 있고 그리고 스토리지 장치의 관련 상태 및 정보를 모니터링, 기록, 및 관리할 수 있다. 하나의 예시에서, BMC는 아웃-오브-밴드 관리에 의해 MCU와 계속적으로 통신하고 그리고 스토리지 장치의 관련 상태 및 정보를 모니터링, 기록, 및 관리한다.
동작 S630a에서, 스토리지 시스템의 상태가 비정상이면, BMC는 아웃-오브-밴드 통신에 의해 스토리지 장치에게 메시지를 전송할 수 있고 그리고 스토리지 장치는 SSD의 에러 대응 능력을 향상시키고 스토리지 장치의 에러들의 발생을 예방하기 위해 대응하는 조치들을 취할 수 있다. 즉, 본 개시의 예시적인 실시 예의 방법에 따르면, 스토리지 시스템(예를 들어, 스토리지 장치)의 상태가 비정상이면, 인-밴드 통신은 동작하지 않을 수 있고, 스토리지 장치의 아웃-오브-밴드 통신은 영향을 받지 않고, 그리고 BMC는 SSD의 관련 정보를 얻기 위해 아웃-오브-밴드 관리에 의해 SSD와 여전히 통신할 수 있다.
도 6b는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법의 순서도를 설명한다.
도 6b를 참조하면, 동작 S610b에서, 호스트는 전원이 켜지고 그리고 BMC는 작업을 시작한다. 하나의 예시에서, BMC는 운영 체제가 있는지 여부 그리고 운영 체제가 정상인지 여부에 관계 없이 동작한다.
동작 S620b에서, BMC는 아웃-오브-밴드 관리에 의해 MCU와 통신할 수 있고 그리고 스토리지 장치의 관련 상태 및 정보를 모니터링, 기록, 및 관리할 수 있다. 하나의 예시에서, BMC는 아웃-오브-밴드 관리에 의해 MCU와 계속적으로 통신하고 그리고 스토리지 장치의 관련 상태 및 정보를 모니터링, 기록, 및 관리한다.
동작 S630b에서, 스토리지 장치가 비정상이면, 스토리지 장치의 아웃-오브-밴드 통신은 영향을 받지 않고 그리고 BMC는 고장 분석을 위해 아웃-오브-밴드 통신에 의해 스토리지 장치의 에러 전후 관련 정보를 얻는다. 다시 말해서, 스토리지 장치가 비정상이면, 인-밴드 통신은 동작하지 않을 수 있고 그리고 스토리지 장치의 아웃-오브-밴드 통신은 영향을 받지 않는다. BMC는 아웃-오브-밴드 관리에 의해 스토리지 장치와 여전히 통신할 수 있고, 스토리지 장치의 에러 전후 관련 정보를 얻을 수 있고, 그리고 문제를 신속하게 찾고 고장을 수리하기 위해 고장 분석을 수행할 수 있다.
도 6c는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 방법의 순서도를 설명한다.
도 6c를 참조하면, 동작 S610c에서, 호스트는 전원이 켜지고 그리고 BMC는 작업을 시작한다. 하나의 예시에서, BMC는 운영 체제가 있는지 여부 그리고 운영 체제가 정상인지 여부에 관계 없이 동작한다.
동작 S620c에서, BMC는 아웃-오브-밴드 관리에 의해 MCU와 통신할 수 있고 그리고 스토리지 장치의 관련 상태 및 정보를 모니터링, 기록, 및 관리할 수 있다. 하나의 예시에서, BMC는 아웃-오브-밴드 관리에 의해 MCU와 계속적으로 통신하고 그리고 스토리지 장치의 관련 상태 및 정보를 모니터링, 기록, 및 관리한다.
동작 S630c에서, 스토리지 장치의 상태가 비정상이면, 스토리지 장치의 아웃-오브-밴드 통신은 영향을 받지 않고 그리고 BMC는 아웃-오브-밴드 관리에 의해 스토리지 장치로부터 필요한 정보를 여전히 얻을 수 있다. 다시 말해서, 스토리지 시스템에서 비정상적인 조건이 발생하면, BMC는 아웃-오브-밴드 관리에 의해 스토리지 장치에게 메시지를 전송할 수 있고 이에 따라 스토리지 장치는 비정상적인 조건에 대해 미리 대응하는 조치들을 취할 수 있고, 시스템 에러에 대해 대응하는 액션을 취할 수 있고, 스토리지 장치의 에러 대응 능력을 향상시킬 수 있고, 그리고 스토리지 장치 에러들의 발생을 예방할 수 있다.
도 7은 실시 예에 따른, 스토리지 장치가 적용된 시스템(1000)의 도면이다. 도 7의 시스템(1000)은 기본적으로 휴대용 통신 단말기(예를 들어, 휴대폰), 스마트폰, 태블릿 PC(Personal Computer), 웨어러블 장치, 헬스케어 장치, 또는 IoT(Internet of Things) 장치 등과 같은 모바일 시스템일 수 있다. 그러나, 도 7의 시스템(1000)은 모바일 시스템으로 제한될 필요는 없으며 PC, 랩탑 컴퓨터, 서버, 미디어 플레이어, 또는 자동차 장치(예를 들어, 네비게이션 장치)일 수 있다.
도 7을 참조하면, 시스템(1000)은 메인 프로세서(1100), 메모리들(예를 들어, 1200a 및 1200b), 및 스토리지 장치들(예를 들어, 1300a 및 1300b)을 포함할 수 있다. 게다가, 시스템(1000)은 이미지 캡처 장치(1410), 사용자 입력 장치(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전원 공급 장치(1470), 및 연결 인터페이스(1480) 중 적어도 하나를 포함할 수 있다.
일부 실시 예들에서, 시스템(1000)은 베이스보드 관리 컨트롤러(미도시)도 포함한다. 예를 들어, 메모리들(1200a 및 1200b) 및 스토리지 장치들(예를 들어, 1300a 및 1300b)은 마이크로 컨트롤러 유닛(미도시)을 포함한다. 베이스보드 관리 컨트롤러는 도 2 내지 도 6 중 적어도 하나를 참조하여 설명된 베이스보드 관리 컨트롤러일 수 있고, 그리고 마이크로 컨트롤러 유닛은 도 2 내지 도 6 중 적어도 하나를 참조하여 설명된 마이크로 컨트롤러 유닛일 수 있다.
메인 프로세서(1100)는 시스템(1000)의 모든 동작들을 제어할 수 있고, 보다 상세하게는, 시스템(1000) 내에 포함된 다른 구성 요소들의 동작들을 제어할 수 있다. 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서, 또는 애플리케이션 프로세서로 구현될 수 있다.
메인 프로세서(1100)는 적어도 하나의 CPU 코어(1110)를 포함할 수 있고, 그리고 메모리들(1200a 및 1200b) 및/또는 스토리지 장치들(1300a 및 1300b)을 제어하도록 구성된 컨트롤러(1120)를 더 포함할 수 있다. 일부 실시 예들에서, 메인 프로세서(1100)는 가속기(1130)를 더 포함할 수 있고, 가속기(1130)는 인공 지능(AI; Artificial Intelligence) 데이터 연산과 같은, 고속 데이터 연산을 위한 전용 회로일 수 있다. 가속기(1130)는 그래픽 처리 장치(GPU; Graphics Processing Unit), 뉴럴 프로세싱 유닛(NPU; Neural Processing Unit), 및/또는 데이터 처리 장치(DPU; Data Processing Unit)을 포함할 수 있고 그리고 메인 프로세서(1100)의 다른 구성 요소들로부터 물리적으로 분리된 칩으로 구현될 수 있다.
메모리들(1200a 및 1200b)은 시스템(1000)의 메인 메모리 장치들로 사용될 수 있다. 메모리들(1200a 및 1200b)의 각각은 정적 랜덤 액세스 메모리(SRAM; Static Random Access Memory) 및/또는 동적 RAM(DRAM)과 같은, 휘발성 메모리를 포함할 수 있지만, 메모리들(1200a 및 1200b)의 각각은 플래시 메모리, 상-변화 RAM(PRAM), 및/또는 저항성 RAM(RRAM)과 같은, 비-휘발성 메모리를 포함할 수 있다. 메모리들(1200a 및 1200b)은 메인 프로세서(1100)와 동일한 패키지로 구현될 수 있다.
스토리지 장치들(1300a 및 1300b)은 전원이 이들에게 공급되는지 여부에 무관하게 데이터를 저장하도록 구성된 비-휘발성 스토리지 장치들의 역할을 할 수 있고 그리고 메모리들(1200a 및 1200b)보다 큰 스토리지 용량을 가질 수 있다. 스토리지 장치들(1300a 및 1300b)은 각각 스토리지 컨트롤러(STRG CTRL)들(1310a 및 1310b) 그리고 스토리지 컨트롤러들(1310a 및 1310b)의 제어를 통해 데이터를 저장하도록 구성된 NVM(비-휘발성 메모리)들(1320a 및 1320b)을 포함할 수 있다. NVM들(1320a 및 1320b)은 2-차원(2D) 구조 또는 3-차원(3D) V-NAND 구조를 갖는 플래시 메모리들을 포함할 수 있지만, NVM들(1320a 및 1320b)은 PRAM 및/또는 RRAM 등과 같은, 다른 타입의 NVM들을 포함할 수 있다.
스토리지 장치들(1300a 및 1300b)은 메인 프로세서(1100)로부터 물리적으로 분리될 수 있고 그리고 시스템(1000) 내에 포함되거나 메인 프로세서(1100)와 동일한 패키지로 구현될 수 있다. 게다가, 스토리지 장치들(1300a 및 1300b)은 솔리드-스테이트 장치(SSD)들 또는 메모리 카드들의 타입들을 가질 수 있고 그리고 후술될 연결 인터페이스(1480)와 같은, 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 착탈 가능하게 결합될 수 있다. 스토리지 장치들(1300a 및 1300b)은 UFS(Universal Flash Storage), eMMC(embedded multi-media card), 또는 NVMe(Non-Volatile Memory express)와 같은, 표준 프로토콜이 적용된 장치들일 수 있지만, 이에 제한되지 않는다.
이미지 캡처 장치(1410)는 정지 이미지들 또는 동영상들을 캡처할 수 있다. 이미지 캡처 장치(1410)는 카메라, 캠코더, 및/또는 웹캠을 포함할 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자에 의해 입력된 다양한 타입들의 데이터를 수신할 수 있고 그리고 터치 패드, 바이탈 패드, 바이탈 보드, 마우스, 및/또는 마이크를 포함할 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 얻어질 수 있는, 다양한 타입들의 물리량들을 감지할 수 있고, 그리고 감지된 물리량들을 전기적인 신호들로 변환할 수 있다. 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서, 및/또는 자이로스코프 센서를 포함할 수 있다.
통신 장치(1440)는 다양한 통신 프로토콜들에 따라 시스템(1000) 외부의 다른 장치들과 신호들을 송신 및 수신할 수 있다. 통신 장치(1440)는 안테나, 송수신기, 및/또는 모뎀을 포함할 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 시각 정보 및 청각 정보를 각각 출력하도록 구성된 출력 장치들의 역할을 할 수 있다.
전원 공급 장치(1470)는 시스템(1000)에 내장된 베터리(미도시) 및/또는 외부 전원으로부터 공급된 전원을 적절하게 변환할 수 있고 그리고 변환된 전원을 시스템(1000)의 구성 요소들의 각각에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000) 및 외부 장치 사이의 연결을 제공할 수 있고, 외부 장치는 시스템(1000)에 연결되고 그리고 시스템(1000)에게 데이터를 송신하고 시스템(1000)으로부터 데이터를 수신할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(Universal Serial Bus) 인터페이스, SD(Secure Digital) 카드 인터페이스, MMC(Multi-Media Card) 인터페이스, eMMC 인터페이스, UFS 인터페이스, eUFS(embedded UFS) 인터페이스, 및 CF(Compact Flash) 카드 인터페이스와 같은, 다양한 인터페이스 방식들을 사용하여 구현될 수 있다.
도 8은 예시적인 실시 예에 따른 호스트 스토리지 시스템(8000)의 블록도이다.
호스트 스토리지 시스템(8000)은 호스트(8100) 및 스토리지 장치(8200)를 포함할 수 있다. 게다가, 스토리지 장치(8200)는 메모리 컨트롤러(8210) 및 NVM(8220)를 포함할 수 있다. 본 개시의 예시적인 실시 예에 따르면, 호스트(8100)는 호스트 컨트롤러(8110) 및 호스트 메모리(8120)를 포함할 수 있다. 호스트 메모리(8120)는 스토리지 장치(8200)에게 송신하거나 또는 스토리지 장치(8200)로부터 수신될 데이터를 일시적으로 저장하도록 구성된 버퍼 메모리로 사용될 수 있다.
일부 실시 예들에서, 호스트(8100)는 베이스보드 관리 컨트롤러(미도시)도 포함할 수 있다. 예를 들어, 스토리지 장치(8200)는 마이크로 컨트롤러 유닛(미도시)도 포함할 수 있다. 베이스보드 관리 컨트롤러는 도 2 내지 도 6c 중 임의의 하나를 참조하여 설명된 베이스보드 관리 컨트롤러일 수 있고, 그리고 마이크로 컨트롤러 유닛은 도 2 내지 도 6c 중 임의의 하나를 참조하여 설명된 마이크로 컨트롤러 유닛일 수 있다.
스토리지 장치(8200)는 호스트(8100)로부터의 요청에 응답하여 데이터를 저장하도록 구성된 스토리지 매체를 포함할 수 있다. 예로서, 스토리지 장치(8200)는 SSD, 임베디드 메모리, 및 착탈식 외장 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(8200)가 SSD이면, 스토리지 장치(8200)는 NVMe 호환 장치일 수 있다. 스토리지 장치(8200)가 임베디드 메모리 또는 외장 메모리이면, 스토리지 장치(8200)는 UFS 표준 또는 eMMC 표준에 따른 장치일 수 있다. 호스트(8100) 및 스토리지 장치(8200) 모두 채택된 표준 프로토콜에 따라 패킷을 생성하고 패킷을 전송할 수 있다.
스토리지 장치(8200)의 NVM(8220)이 플래시 메모리를 포함하면, 플래시 메모리는 2D NAND 스토리지 어레이 또는 3D(또는 수직) NAND(VNAND) 스토리지 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(8200)는 다양한 종류들의 NVM들을 포함할 수 있다. 예를 들어, 스토리지 장치(8200)는 자기 랜덤 액세스 메모리(MRAM; Magnetic Random Access Memory), 스핀 전달 토크 MRAM, 전도성 브릿지 RAM(CBRAM; Conductive Bridge RAM), 강유전체 RAM(FRAM; Ferroelectric RAM), PRAM, RRAM, 및 다양한 다른 타입들의 메모리를 포함할 수 있다.
실시 예에 따르면, 호스트 컨트롤러(8110) 및 호스트 메모리(8120)는 별도의 반도체 칩들로 구현될 수 있다. 대안적으로, 일부 실시 예들에서, 호스트 컨트롤러(8110) 및 호스트 메모리(8120)는 동일한 반도체 칩 내에 집적될 수 있다. 예로서, 호스트 컨트롤러(8110)는 AP(Application Processor) 내에 포함된 복수의 모듈들 중 임의의 하나일 수 있다. AP는 시스텝 온 칩(SoC; System on chip)으로 구현될 수 있다. 게다가, 호스트 메모리(8120)는 AP에 포함된 임베디드 메모리 또는 AP 외부의 메모리 모듈일 수 있다.
호스트 컨트롤러(8110)는 NVM(8220) 내에 호스트 메모리(8120)의 버퍼 영역의 데이터(예를 들어, 쓰기 데이터)를 저장하는 동작 또는 버퍼 영역 내에 NVM(8220)의 데이터(예를 들어, 읽기 데이터)를 저장하는 동작을 관리할 수 있다.
메모리 컨트롤러(8210)는 호스트 인터페이스(8211), 메모리 인터페이스(8212), 및 CPU(8213)를 포함할 수 있다. 게다가, 메모리 컨트롤러(8210)는 플래시 변환 레이어(FTL; Flash Translation Layer)(8124), 패킷 관리자(8215), 버퍼 메모리(8216), 에러 정정 코드(ECC; Error Correction Code) 엔진(8217), 및 고급 암호화 표준(AES; Advanced Encryption Standard) 엔진(8218)도 포함할 수 있다. 메모리 컨트롤러(8210)는 FTL(8214)이 로드되는 작업 메모리(미도시)를 더 포함할 수 있다. CPU(8213)는 FTL(8214)을 실행하여 NVM(8220) 상의 데이터 쓰기 및 읽기 동작들을 제어할 수 있다.
호스트 인터페이스(8211)는 호스트(8100)로 패킷을 전송할 수 있고 그리고 호스트(8100)로부터 패킷을 수신할 수 있다. 호스트(8100)로부터 호스트 인터페이스(8211)로 전송된 패킷은 NVM(8220)에 쓰여질 커맨드들 또는 데이터를 포함할 수 있다. 호스트 인터페이스(8211)로부터 호스트(8100)로 전송된 패킷은 NVM(8220)으로부터 읽은 데이터 또는 커맨드에 대한 응답을 포함할 수 있다. 메모리 인터페이스(8212)는 NVM(8220)에 쓰여질 데이터를 전송하거나 또는 NVM(8220)으로부터 읽어진 데이터를 수신할 수 있다. 메모리 인터페이스(8212)는 토글(Toggle) 또는 ONFI(Open NAND Flash Interface)와 같은 표준 프로토콜들을 따르도록 구성될 수 있다.
FTL(8214)은 어드레스 매핑(address mapping) 동작, 웨어 밸런싱(wear balancing) 동작, 및 가비지 컬렉션(garbage collection) 동작 등과 같은, 다양한 기능들을 수행할 수 있다. 어드레스 매핑 동작은 호스트(8100)로부터 수신된 논리적 어드레스를 NVM(8220) 내에 데이터를 저장하는데 사용되는 물리적 어드레스로 변환하는 동작일 수 있다. 웨어 밸런싱 동작은 NVM(8220) 블록들을 균일하게 사용함으로써 특정 블록들의 과도한 열화를 방지할 수 있다. 예로서, 웨어 평준화 동작은 물리적 블록들의 소거 카운트의 균형을 맞추기 위해 펌웨어 기술을 사용하여 실현될 수 있다. 가비지 컬렉션 동작은 기존 블록들이 유효한 데이터를 새로운 블록들에 복사한 후에 기존 블록들을 소거함으로써 NVM(8220) 내의 이용 가능한 용량을 보장하기 위한 기술일 수 있다.
패킷 관리자(8215)는 호스트(8100)의 인터페이스에 적합한 프로토콜에 따라 패킷들을 생성할 수 있거나 또는 호스트(8100)로부터 수신된 패킷들로부터 다양한 타입들의 정보를 파싱할 수 있다. 게다가, 버퍼 메모리(8216)는 NVM(8220)에 쓰여진 또는 NVM(8220)으로부터 읽어진 데이터를 일시적으로 저장할 수 있다. 버퍼 메모리(8216)는 메모리 컨트롤러(8210) 내에 포함된 구성 요소일 수 있지만, 버퍼 메모리(8216)는 대안적으로 메모리 컨트롤러(8210) 외부에 있을 수 있다.
ECC 엔진(8217)은 NVM(8220)으로부터 읽어진 읽기 데이터에 대한 에러 감지 및 정정 동작들을 수행할 수 있다. 보다 상세하게는, ECC 엔진(8217)은 NVM(8220)에 쓰여질 쓰기 데이터에 대한 패리티 비트들을 생성할 수 있고 그리고 생성된 패리티 비트들은 쓰기 데이터와 함께 NVM(8220)에 저장될 수 있다. NVM(8220)으로부터 데이터를 읽는 동작 동안, ECC 엔진(8217)은 NVM(8220)으로부터 읽어진 패리티 비트를 사용하여 읽기 데이터 내의 에러를 정정할 수 있고 그리고 에러 정정 후에 읽기 데이터를 출력할 수 있다.
AES 엔진(8218)은 대칭 바이탈 알고리즘(symmetric vital algorithm)을 사용하여 메모리 컨트롤러(8210)에 입력된 데이터에 대한 암호화 동작 및 복호화 동작 중 적어도 하나를 수행할 수 있다.
도 9는 본 개시의 실시 예에 따른 스토리지 시스템(9000)의 블록도이다.
도 9를 참조하면, 스토리지 시스템(9000)은 스토리지 장치(9200) 및 메모리 컨트롤러(9100)를 포함할 수 있다. 스토리지 시스템(9000)은 다중 채널들(CH1~CHm)을 지원할 수 있고, 그리고 스토리지 장치(9200)는 다중 채널들(CH1~CHm)을 통해 메모리 컨트롤러(9100)와 연결될 수 있다. 예를 들어, 스토리지 시스템(9000)은 SSD와 같은, 스토리지 장치로 구현될 수 있다.
일부 실시 예들에서, 스토리지 시스템(9000)은 도 2 내지 도 6c 중 적어도 하나의 스토리지 장치에 대응할 수 있다. 예를 들어, 스토리지 시스템(9000)은 마이크로 컨트롤러 유닛(미도시)도 포함할 수 있다. 마이크로 컨트롤러 유닛은 도 2 내지 도 6c 중 적어도 하나를 참조하여 설명된 마이크로 컨트롤러 유닛일 수 있다.
스토리지 장치(9200)는 복수의 NVM 장치들(NVM11~NVMmn)을 포함할 수 있다. NVM 장치들(NVM11~NVMmn)의 각각은 대응하는 경로를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, NVM 장치들(NVM11~NVM1n)은 경로들(W11~W1n)을 통해 제1 채널(CH1)에 연결될 수 있고, NVM 장치들(NVM21~NVM2n)은 경로들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있고, 그리고 NVM 장치들(NVMm1~NVMmn)은 경로들(Wm1~Wmn)을 통해 제m 채널(CHm)에 연결될 수 있다. 예시적인 실시 예에서, NVM 장치들(NVM11~NVM1n)의 각각은 임의의 스토리지 요소로 구현될 수 있고, 임의의 스토리지 요소는 메모리 컨트롤러(9100)로부터의 별도의 커맨드에 따라 동작할 수 있다. 예를 들어, NVM 장치들(NVM11~NVM1n)의 각각은 칩 또는 다이로 구현될 수 있지만, 본 개시는 이에 제한되지 않는다.
메모리 컨트롤러(9100)는 복수의 채널들(CH1~CHm)을 통해 스토리지 장치(9200)에게 신호들을 전송할 수 있고 그리고 스토리지 장치(9200)로부터 신호들을 수신할 수 있다. 예를 들어, 메모리 컨트롤러(9100)는 채널들(CH1~CHm)을 통해서 스토리지 장치(9200)에게 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 전송할 수 있거나, 또는 스토리지 장치(9200)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
메모리 컨트롤러(9100)는 채널들(CH1~CHm) 중 대응하는 하나를 사용하여 채널들(CH1~CHm)의 각각에 연결된 NVM 장치들(NVM11~NVMmn) 중 하나를 선택할 수 있고 그리고 선택된 NVM 장치에게 신호들을 전송하고 선택된 NVM 장치로부터 신호들을 수신할 수 있다. 예를 들어, 메모리 컨트롤러(9100)는 제1 채널(CH1)에 연결된 NVM 장치들(NVM11~NVM1n) 중 NVM 장치(NVM11)를 선택할 수 있다. 메모리 컨트롤러(9100)는 제1 채널(CH1)을 통해 선택된 NVM 장치(NVM11)에게 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)를 전송할 수 있거나, 또는 선택된 NVM 장치(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.
메모리 컨트롤러(9100)는 서로 다른 채널들을 통해서 병렬적으로 스토리지 장치(9200)에게 신호들을 전송하고 스토리지 장치(9200)로부터 신호들을 수신할 수 있다. 예를 들어, 메모리 컨트롤러(9100)는 제1 채널(CH1)을 통해 스토리지 장치(9200)에게 커맨드(CMDa) 및 제2 채널(CH2)을 통해 스토리지 장치(9200)에게 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(9100)는 제1 채널(CH1)을 통해 스토리지 장치(9200)로부터 데이터(DATAa) 및 제2 채널(CH2)을 통해 스토리지 장치(9200)로부터 데이터(DATAb)를 수신할 수 있다.
메모리 컨트롤러(9100)는 스토리지 장치(9200)의 모든 동작들을 제어할 수 있다. 메모리 컨트롤러(9100)는 채널들(CH1~CHm)에게 신호들을 전송할 수 있고 그리고 채널들(CH1~CHm)에 연결된 NVM 장치들(NVM11~NVMmn)의 각각을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(9100)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송할 수 있고 그리고 NVM 장치들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.
NVM 장치들(NVM11~NVMmn)의 각각은 메모리 컨트롤러(9100)의 제어를 통해 동작할 수 있다. 예를 들어, NVM 장치(NVM11)는 제1 채널(CH1)에 제공된 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)에 기초하여 데이터(DATAa)를 프로그래밍할 수 있다. 예를 들어, NVM 장치(NVM21)는 제2 채널(CH2)에 제공된 커맨드(CMDb) 및 어드레스(ADDRb)에 기초하여 데이터(DATAb)를 읽을 수 있고 그리고 메모리 컨트롤러(9100)에게 읽어진 데이터(DATAb)를 전송할 수 있다.
도 9는 스토리지 장치(9200)가 M개의 채널들을 통해 메모리 컨트롤러(9100)와 통신하고 그리고 각 채널에 대응하는 N개의 NVM 장치들을 포함하는 예시를 도시하지만, 채널들의 개수 및 하나의 채널에 연결된 NVM 장치들의 개수는 변경될 수 있다.
도 10은 실시 예에 따른 UFS 시스템(2000)의 도면이다.
UFS 시스템(2000)은 JEDEC(Joint Electron Device Engineering Council)에서 발표한 UFS 표준에 따른 시스템일 수 있고, 그리고 UFS 호스트(2100), UFS 장치(2200), 및 UFS 인터페이스(2300)를 포함할 수 있다. 도 7의 시스템(1000)의 상술된 설명은 도 10의 후술되는 설명과 상충되지 않는 범위에서 도 10의 UFS 시스템(2000)에도 적용될 수 있다.
일부 실시 예들에서, UFS 호스트(210)는 베이스보드 관리 컨트롤러(미도시)를 포함할 수 있다. 예를 들어, UFS 장치(2200)는 마이크로 컨트롤러 유닛(미도시)을 포함할 수 있다. 베이스보드 관리 컨트롤러는 도 2 내지 도 6c 중 적어도 하나를 참조하여 설명된 베이스보드 관리 컨트롤러일 수 있고, 그리고 마이크로 컨트롤러 유닛은 도 2 내지 도 6c 중 적어도 하나를 참조하여 설명된 마이크로 컨트롤러 유닛일 수 있다.
도 10을 참조하면, UFS 호스트(2100)는 UFS 인터페이스(2300)를 통해 UFS 장치(2200)와 연결될 수 있다. 도 7의 메인 프로세서가 AP이면, UFS 호스트(2100)는 AP의 일부로 구현될 수 있다. UFS 호스트 컨트롤러(2110) 및 호스트 메모리(2140)는 각각 도 7의 메인 프로세서(1100)의 컨트롤러(1120) 및 메모리들(1200a 및 1200b)에 대응할 수 있다. UFS 장치(2200)는 도 7의 스토리지 장치들(1300a 및 1300b)에 대응할 수 있고, 그리고 UFS 장치 컨트롤러(2210) 및 NVM(2220)은 각각 도 7의 스토리지 컨트롤러들(1310a 및 1310b) 및 NVM들(1320a 및 1320b)에 대응할 수 있다.
UFS 호스트(2100)는 UFS 호스트 컨트롤러(2110), 애플리케이션(2120), UFS 드라이버(2130), 호스트 메모리(2140), 및 UIC(UFS interconnect) 레이어(2150)를 포함할 수 있다. UFS 장치(2200)는 UFS 장치 컨트롤러(2210), NVM(2220), 스토리지 인터페이스(2230), 장치 메모리(2240), UIC 레이어(2250), 및 조절기(2260)를 포함할 수 있다. NVM(2220)은 복수의 메모리 유닛들(2221)을 포함할 수 있다. 메모리 유닛들(2221)의 각각은 2D 구조 또는 3D 구조를 갖는 V-NAND 플래시 메모리를 포함할 수 있지만, 메모리 유닛들(2221)의 각각은 PRAM 및/또는 RRAM과 같은, 다른 종류의 NVM을 포함할 수 있다. UFS 장치 컨트롤러(2210)는 스토리지 인터페이스(2230)를 통해 NVM(2220)에 연결될 수 있다. 스토리지 인터페이스(2230)는 토글(Toggle) 또는 ONFI와 같은, 표준 프로토콜을 따르도록 구성될 수 있다.
애플리케이션(2120)은 UFS 장치(2200)의 기능들을 사용하기 위해 UFS 장치(2200)와 통신하고자 하는 프로그램을 지칭할 수 있다. 애플리케이션(2120)은 UFS 장치(2200) 상의 입출력(I/O; Input/Output) 동작들을 위해 UFS 드라이버(2130)에게 IOR(input-output-request)들을 전송할 수 있다. IOR들은 데이터 읽기 요청, 데이터 저장(또는 쓰기) 요청, 및/또는 데이터 소거(또는 폐기) 요청을 지칭할 수 있지만, 이에 제한되지 않는다.
UFS 드라이버(2130)는 UFS-HCI(UFS-host controller interface)를 통해 UFS 호스트 컨트롤러(2110)를 관리할 수 있다. UFS 드라이버(2130)는 애플리케이션(2120)에 의해 생성된 IOR을 UFS 표준에 의해 정의된 UFS 커맨드로 변환할 수 있고 그리고 UFS 커맨드를 UFS 호스트 컨트롤러(2110)에게 전송할 수 있다. 하나의 IOR은 복수의 UFS 커맨드들로 변환될 수 있다. UFS 커맨드는 기본적으로 SCSI 표준에 의해 정의될 수 있지만, UFS 커맨드는 UFS 표준에 전용하는 커맨드일 수 있다.
UFS 호스트 컨트롤러(2110)는 UFS 드라이버(2130)에 의해 변환된 UFS 커맨드를 UIC 레이어(2150) 및 UFS 인터페이스(2300)를 통해 UFS 장치(2200)의 UIC 레이어(2250)로 전송할 수 있다. UFS 커맨드를 전송하는 동안, UFS 호스트 컨트롤러(2110)의 UFS 호스트 레지스터(2111)는 커맨드 큐(CQ; Command Queue)의 역할을 할 수 있다.
UFS 호스트(2100) 측의 UIC 레이어(2150)는 MIPI(Mobile Industry Process Interface) M-PHY(2151) 및 MIPI UniPro(2152)를 포함할 수 있고, 그리고 UFS 장치(2200) 측의 UIC 레이어(2250)도 MIPI M-PHY(2251) 및 MIPI UniPro(2252)를 포함할 수 있다.
UFS 인터페이스(2300)는 기준 클럭 신호(REF_CLK)를 전송하도록 구성된 라인(line), UFS 장치(2200)를 위한 하드웨어 리셋 신호(RESET_n)를 전송하도록 구성된 라인, 한 쌍의 차동 입력 신호들(DIN_T 및 DIN_C)을 전송하도록 구성된 한 쌍의 라인들, 및 한 쌍의 차동 출력 신호들(DOUT_T 및 DOUT_C)을 전송하도록 구성된 한 쌍의 라인들을 포함할 수 있다.
UFS 호스트(2100)로부터 UFS 장치(2200)로 제공되는 기준 클럭 신호(REF_CLK)의 주파수는 19.2MHz, 26MHz, 38.4MHz, 및 52MHz 중 하나일 수 있지만, 이에 제한되지 않는다. UFS 호스트(2100)는 동작 중에, 즉, UFS 호스트(2100) 및 UFS 장치(2200) 사이의 데이터 송신/수신 동작들 중에, 기준 클럭 신호(REF_CLK)의 주파수를 변경할 수 있다. UFS 장치(2200)는 위상 고정 루프(PLL; Phase Locked Loop)를 사용하여, UFS 호스트(2100)로부터 제공되는 기준 클럭 신호(REF_CLK)로부터 다양한 주파수들을 갖는 콕(cock) 신호들을 생성할 수 있다. 또한, UFS 호스트(2100)는 기준 클럭 신호(REF_CLK)의 주파수를 사용하여 UFS 호스트(2100) 및 UFS 장치(2200) 사이의 데이터 속도를 설정할 수 있다. 즉, 데이터 속도는 기준 클럭 신호(REF_CLK)의 주파수에 따라 결정될 수 있다.
UFS 인터페이스(2300)는 복수의 레인(lane)들을 지원할 수 있고, 복수의 레인들의 각각은 한 쌍의 차동 라인들로 구현될 수 있다. 예를 들어, UFS 인터페이스(2300)는 적어도 하나의 수신 레인 및 적어도 하나의 송신 레인을 포함할 수 있다. 도 10에서, 한 쌍의 차동 입력 신호들(DIN_T 및 DIN_C)을 전송하도록 구성된 한 쌍의 라인들은 수신 레인을 구성할 수 있고 그리고 한 쌍의 차동 출력 신호들(DOUT_T 및 DOUT_C)을 전송하도록 구성된 한 쌍의 라인들은 송신 레인을 구성할 수 있다. 도 10에서 하나의 송신 레인 및 하나의 수신 레인이 도시되지만, 송신 레인들의 개수 및 수신 레인들의 개수는 변경될 수 있다.
수신 레인 및 송신 레인은 직렬 통신 방식에 기초하여 데이터를 전송할 수 있다. 수신 레인이 송신 레인으로부터 분리된 구조로 인해 UFS 호스트(2100) 및 UFS 장치(2200) 사이의 전이중 통신(full-duplex communication)이 가능할 수 있다. 즉, 수신 레인을 통해 UFS 호스트(2100)로부터 데이터를 수신하면서, UFS 장치(2200)는 송신 레인을 통해 UFS 호스트(2100)로 데이터를 전송할 수 있다. 게다가, UFS 호스트(2100)로부터 UFS 장치(2200)로의 제어 데이터(즉, 커맨드) 및 UFS 호스트(2100)에 의해 UFS 장치(2200)의 NVM(2220)에 저장되거나 NVM(2220)으로부터 읽어질 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 따라서, UFS 호스트(2100) 및 UFS 장치(2200) 사이에서, 한 쌍의 수신 레인들 및 한 쌍의 송신 레인들 이외에 데이터 전송을 위한 별도의 레인을 더 제공할 필요가 없다.
UFS 장치(2200)의 UFS 장치 컨트롤러(2210)는 UFS 장치(2200)의 모든 동작들을 제어할 수 있다. UFS 장치 컨트롤러(2210)는 논리적 데이터 저장 유닛인, 논리적 유닛(LU; Logical Unit)을 사용하여 NVM(2220)을 관리할 수 있다. LU들의 개수는 8일 수 있지만, 이에 제한되지 않는다. UFS 장치 컨트롤러(2210)는 FTL을 포함할 수 있고 그리고 FTL의 어드레스 매핑 정보를 사용하여 UFS 호스트(2100)로부터 수신된 논리적 데이터 어드레스(예를 들어, 논리적 블록 어드레스(LBA; Logical Block Address))를 물리적 데이터 어드레스(예를 들어, 물리적 블록 어드레스(PBA; Physical Block Address))로 변환할 수 있다. UFS 시스템(2000)에서 사용자 데이터를 저장하도록 구성된 논리적 블록은 미리 결정된 범위 내의 크기를 가질 수 있다. 예를 들어, 논리적 블록의 최소 크기는 4 킬로바이트(Kbyte)로 설정될 수 있다.
UFS 호스트(2100)로부터의 커맨드가 UIC 레이어(2250)를 통해 UFS 장치(2200)에 적용되면, UFS 장치 컨트롤러(2210)는 커맨드에 응답하여 동작을 수행할 수 있고 그리고 동작이 완료되면 UFS 호스트(2100)에게 완료 응답을 전송할 수 있다.
예로서, UFS 호스트(2100)가 UFS 장치(2200)에 사용자 데이터를 저장하고자 하면, UFS 호스트(2100)는 UFS 장치(2200)에게 데이터 저장 커맨드를 전송할 수 있다. UFS 호스트(2100)는 사용자 데이터를 수신할 준비가 되었음(레디-투-트랜스퍼)을 나타내는 응답('레디-투-트랜스퍼' 응답)이 UFS 장치(2200)로부터 수신되면, UFS 호스트(2100)는 UFS 장치(2200)에게 사용자 데이터를 전송할 수 있다. UFS 장치 컨트롤러(2210)는 수신된 사용자 데이터를 장치 메모리(2240)에 일시적으로 저장할 수 있고 그리고 FTL의 어드레스 매핑 정보에 기초하여 NVM(2220)의 선택된 위치에서, 장치 메모리(2240)에 일시적으로 저장된, 사용자 데이터를 저장할 수 있다.
다른 예로서, UFS 호스트(2100)가 UFS 장치(2200)에 저장된 사용자 데이터를 읽으려고 하면, UFS 호스트(2100)는 UFS 장치(2200)에게 데이터 읽기 커맨드를 전송할 수 있다. 커맨드를 수신한, UFS 장치 컨트롤러(2210)는 데이터 읽기 커맨드에 기초하여 NVM(2220)으로부터 사용자 데이터를 읽을 수 있고 그리고 읽어진 사용자 데이터를 장치 메모리(2240)에 일시적으로 저장할 수 있다. 읽기 동작 동안, UFS 장치 컨트롤러(2210)는 내장된 ECC 엔진(미도시)을 사용하여 읽어진 사용자 데이터 내의 에러를 감지 및 정정할 수 있다. 보다 상세하게는, ECC 엔진은 NVM(2220)에 쓰여질 쓰기 데이터에 대한 패리티 비트들을 생성할 수 있고 그리고 생성된 패리티 비트들은 쓰기 데이터와 함께 NVM(2220)에 저장될 수 있다. NVM(2220)으로부터 데이터를 읽는 동안, ECC 엔진은 읽기 데이터와 함께 NVM(2220)으로부터 읽어진 패리티 비트들을 사용하여 읽기 데이터 내의 에러를 정정할 수 있고 그리고 에러-정정된 읽기 데이터를 출력할 수 있다.
게다가, UFS 장치 컨트롤러(2210)는, 장치 메모리(2240) 내에 일시적으로 저장된, 사용자 데이터를 UFS 호스트(2100)에게 전송할 수 있다. 게다가, UFS 장치 컨트롤러(2210)는 AES 엔진(미도시)을 더 포함할 수 있다. AES 엔진은 대칭-키(symmetric-key) 알고리즘을 사용하여 UFS 장치 컨트롤러(2210)로 전송되는 데이터에 대한 암호화 동작 및 복호화 동작 중 적어도 하나를 수행할 수 있다.
UFS 호스트(2100)는, UFS 장치(2200)로 전송될, 커맨드들을, 공통 큐의 역할을 할 수 있는, UFS 호스트 레지스터(2111)에 순차적으로 저장할 수 있고, 그리고 UFS 장치(2200)에게 커맨드들을 순차적으로 전송할 수 있다. 이 경우, 이전에 전송된 커맨드가 여전히 UFS 장치(2200)에 의해 처리되고 있는 동안에도, 즉, 이전에 전송된 커맨드가 UFS 장치(2200)에 의해 처리되었다는 알림을 수신하기 전에도, UFS 호스트(2100)는, CQ 내에 대기 중인, 다음 커맨드를 UFS 장치(2200)에게 전송할 수 있다. 즉, UFS 장치(2200)는 이전에 전송된 커맨드를 처리하는 동안 UFS 호스트(2100)로부터의 다음 커맨드도 수신할 수 있다. CQ 내에 저장될 수 있는 커맨드들의 최대 개수(또는 큐 깊이)는, 예를 들어, 32일 수 있다. 또한, CQ는 큐 내에 저장된 커맨드 라인의 시작 및 끝이 헤드 포인터 및 테일 포인터로 표시되는 순환 큐로 구현될 수 있다.
복수의 메모리 유닛들(2221)의 각각은 메모리 셀 어레이(미도시) 및 메모리 셀 어레이의 동작을 제어하도록 구성된 제어 회로(미도시)를 포함할 수 있다. 메모리 셀 어레이는 2D 메모리 셀 어레이 또는 3D 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들의 각각은 1-비트 정보를 저장하도록 구성된 싱글-레벨 셀(SLC; Single-Level Cell)이지만, 메모리 셀들의 각각은 멀티-레벨 셀(MLC; Multi-Level Cell), 트리플-레벨 셀(TLC; Triple-Level Cell), 및 쿼드러플-레벨 셀(Quadruple-Level Cell)과 같은, 2 비트 이상의 정보를 저장하도록 구성된 셀일 수 있다. 3D 메모리 셀 어레이는 적어도 하나의 메모리 셀이 수직 방향으로 다른 메모리 셀 위에 위치하는 수직 NAND 스트링을 포함할 수 있다.
전압들(VCC, VCCQ1, 및 VCCQ2)은 UFS 장치(2200)의 전원 전압들로서 인가될 수 있다. 전압(VCC)은 UFS 장치(2200)를 위한 메인 전원 전압일 수 있고 그리고 2.4V 내지 3.6V의 범위일 수 있다. 전압(VCCQ1)은 주로 UFS 장치 컨트롤러(2210)에게 낮은 전압을 공급하기 위한 전원 전압일 수 있고 그리고 1.14V 내지 1.26V의 범위일 수 있다. 전압(VCCQ2)은 주로 MIPI M-PHY(2251)와 같은, I/O 인터페이스에게, 전압(VCC)보다 낮고 전압(VCCQ1)보다 높은, 전압을 공급하기 위한 전원 전압일 수 있고 그리고 1.7V 내지 1.95V의 범위일 수 있다. 전원 전압들은 조절기(2260)를 통해 UFS 장치(2200)의 각 구성 요소들에게 공급될 수 있다. 조절기(2260)는 상술된 서로 다른 전원 전압들에 각각 연결된 유닛 조절기(unit regulator)들의 집합으로 구현될 수 있다.
도 11은 본 개시의 실시 예에 따른 스토리지 시스템(3000)의 블록도이다. 도 11을 참조하면, 스토리지 시스템(3000)은 스토리지 장치(3200) 및 메모리 컨트롤러(3100)를 포함할 수 있다. 스토리지 장치(3200)는 도 9의 복수의 채널들(CH1~CHm) 중 하나에 기초하여 메모리 컨트롤러(9100)와 통신하는, NVM 장치들(NVM11~NVMmn) 중 하나에 대응할 수 있다. 메모리 컨트롤러(3100)는 도 9의 메모리 컨트롤러(9100)에 대응할 수 있다.
일부 실시 예들에서, 스토리지 시스템(3000)은 도 2 내지 도 6c 중 적어도 하나의 스토리지 장치에 대응할 수 있다. 예를 들어, 스토리지 시스템(3000)은 마이크로 컨트롤러 유닛(미도시)을 사용하여 도 1 내지 도 6c를 참조하는 적어도 하나의 아웃-오브-밴드 관리 방법을 수행할 수 있다.
스토리지 장치(3200)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(3210), 제어 로직 회로(3220), 및 스토리지 유닛 어레이(3330)를 포함할 수 있다.
메모리 인터페이스 회로(3210)는 제1 핀(P11)을 통해 메모리 컨트롤러(3100)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 칩 인에이블 신호(nCE)에 응답하여 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(3100)와 신호들을 송신 및 수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)에 있으면, 메모리 인터페이스 회로(3210)는 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(3100)와 신호를 송신 및 수신할 수 있다.
메모리 인터페이스 회로(3210)는 제2 내지 제4 핀들(P12~P14)을 통해 메모리 컨트롤러(3100)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 제7 핀(P17)을 통해 메모리 컨트롤러(3100)로부터 데이터 신호(DQ)를 수신하거나 또는 메모리 컨트롤러(3100)로 데이터 신호(DQ)를 송신할 수 있다. 커맨드(CMD), 어드레스(ADDR), 및 데이터는 데이터 신호(DQ)를 통해 전송될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전송될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호(DQ)들에 각각 대응하는 복수의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(3210)는 쓰기 인에이블 신호(nWE)의 스위칭 시점에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이-레벨 상태)에서 수신된 데이터 신호(DQ)로부터 커맨드(CMD)를 얻을 수 있다. 메모리 인터페이스 회로(3210)는 쓰기 인에이블 신호(nWE)의 스위칭 시점에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이-레벨 상태)에서 수신된 데이터 신호(DQ)로부터 어드레스(ADDR)를 얻을 수 있다.
예시적인 실시 예에서, 쓰기 인에이블 신호(nWE)는 정적(예를 들어, 하이 레벨 또는 로우 레벨)을 유지하고 그리고 하이 레벨 및 로우 레벨 사이에서 스위칭할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 및 어드레스(ADDR)가 전송되는 구간에서 스위칭될 수 있다. 그러므로, 메모리 인터페이스 회로(3210)는 쓰기 인에이블 신호(nWE)의 스위칭 시점에 기초하여 커맨드(CMD) 및 어드레스(ADDR)를 얻을 수 있다.
메모리 인터페이스 회로(3210)는 제5 핀(P15)을 통해 메모리 컨트롤러(3100)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 제6 핀(P16)을 통해 메모리 컨트롤러(3100)로부터 데이터 스트로브 신호(DQS)를 수신할 수 있거나 또는 메모리 컨트롤러(3100)에게 데이터 스트로브 신호(DQS)를 송신할 수 있다.
스토리지 장치(3200)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(3210)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)에 의해 스위칭되는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 읽기 인에이블 신호(nRE)의 스위칭에 기초하여 스위칭되는, 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(3210)는 읽기 인에이블 신호(nRE)의 스위칭 시작 시간에 기초하여 데이터 스트로브 신호(DQS)를 생성할 수 있고, 데이터 스트로브 신호(DQS)는 미리 결정된 지연(예를 들어, tDQSRE) 이후에 스위칭을 시작한다. 메모리 인터페이스 회로(3210)는 데이터 스트로브 신호(DQS)의 스위칭 시점에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 그러므로, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 스위칭 시점에 정렬될 수 있고 그리고 메모리 컨트롤러(3100)로 전송될 수 있다.
스토리지 장치(3200)의 데이터(DATA) 입력 동작에서, 데이터(DATA)를 포함하는 데이터 신호(DQ)가 메모리 컨트롤러(3100)로부터 수신되면, 메모리 인터페이스 회로(3210)는 스위칭된 데이터 스트로브 신호(DQS) 및 데이터(DATA)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 데이터 스트로브 신호(DQS)의 스위칭 시점에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 얻을 수 있다. 예를 들어, 메모리 인터페이스 회로(3210)는 데이터 스트로브 신호(DQS)의 상승 및 하강 에지들에서 데이터 신호(DQ)를 샘플링할 수 있고 그리고 데이터(DATA)를 얻을 수 있다.
메모리 인터페이스 회로(3210)는 제8 핀(P18)을 통해 메모리 컨트롤러(3100)로 레디/비지 출력 신호(nR/B)를 전송할 수 있다. 메모리 인터페이스 회로(3210)는 레디/비지 출력 신호(nR/B)를 통해 메모리 컨트롤러(3100)에게 스토리지 장치(3200)의 상태 정보를 전송할 수 있다. 스토리지 장치(3200)가 비지 상태에 있으면(즉, 스토리지 장치(3200에서 동작이 수행되면), 메모리 인터페이스 회로(3210)는 비지 상태를 가리키는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)에게 전송할 수 있다. 스토리지 장치(3200)가 레디 상태에 있으면(즉, 스토리지 장치(3200)에서 동작이 수행되지 않거나 또는 동작이 완료되면), 메모리 인터페이스 회로(3210)는 레디 상태를 가리키는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)에게 전송할 수 있다. 예를 들어, 스토리지 장치(3200)가 페이지 읽기 커맨드에 응답하여 스토리지 유닛 어레이(3330)로부터 데이터를 읽으면, 메모리 인터페이스 회로(3210)는 비지 상태(예를 들어, 로우 레벨)을 가리키는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)에게 전송할 수 있다. 예를 들어, 스토리지 장치(3200)가 프로그래밍 커맨드에 응답하여 데이터(DATA)를 스토리지 유닛 어레이(3330)에 프로그래밍하면, 메모리 인터페이스 회로(3210)는 비지 상태를 가리키는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)에게 전송할 수 있다.
제어 로직 회로(3220)는 스토리지 장치(3200)의 모든 동작들을 제어할 수 있다. 제어 로직 회로(3220)는 메모리 인터페이스 회로(3210)로부터 얻어진 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(3220)는 수신된 커맨드/어드레스(CMD/ADDR)에 응답하여 스토리지 장치(3200)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(3220)는 데이터(DATA)를 스토리지 유닛 어레이(3330)에 프로그래밍하거나 또는 스토리지 유닛 어레이(3330)로부터 데이터(DATA)를 읽기 위한 다양한 제어 신호들을 생성할 수 있다.
스토리지 유닛 어레이(3330)는 제어 로직 회로(3220)의 제어를 통해 메모리 인터페이스 회로(3210)로부터 얻어진 데이터(DATA)를 저장할 수 있다. 스토리지 유닛 어레이(3330)는 제어 로직 회로(3220)의 제어를 통해 저장된 데이터(DATA)를 메모리 인터페이스 회로(3210)로 출력할 수 있다.
스토리지 유닛 어레이(3330)는 복수의 스토리지 유닛들을 포함할 수 있다. 예를 들어, 복수의 스토리지 유닛들은 플래시 메모리 유닛들일 수 있다. 그러나, 본 개시는 이에 제한되지 않으며 스토리지 유닛은 RRAM 유닛, FRAM 유닛, PRAM 유닛, TRAM(thyristor RAM) 유닛, 또는 MRAM 유닛일 수 있다. 이하에서, 스토리지 유닛이 NAND 플래시 메모리 유닛인 실시 예가 주로 설명될 것이다.
메모리 컨트롤러(3100)는 제1 내지 제8 핀들(P21~P28) 및 컨트롤러 인터페이스 회로(3110)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 각각 스토리지 장치(3200)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스 회로(3110)는 제1 핀(P21)을 통해 스토리지 장치(3200)에게 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제2 내지 제8 핀들(P22~P28)을 통해 스토리지 장치(3200)로 신호를 송신할 수 있고 스토리지 장치(3200)로부터 신호를 수신할 수 있고, 여기서 스토리지 장치(3200)는 칩 인에이블 신호(nCE)에 의해 선택될 수 있다.
컨트롤러 인터페이스 회로(3110)는 제2 내지 제4 핀들(P22~P24)을 통해 스토리지 장치(3200)로 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제7 핀(P27)을 통해 스토리지 장치(3200)로 데이터 신호(DQ)를 송신하거나 스토리지 장치(3200)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(3110)는 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ) 및 스위칭된 쓰기 인에이블 신호(nWE)를 스토리지 장치(3200)로 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 인에이블 상태의 커맨드 래치 인에이블 신호(CLE)를 전송함으로써 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 스토리지 장치(3200)로 전송할 수 있다. 더욱이, 컨트롤러 인터페이스 회로(3110)는 스토리지 장치(3200)로 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 전송하기 위해 인에이블 상태를 갖는 어드레스 래치 인에이블 신호(ALE)가 전송되는 것을 통해 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 스토리지 장치(3200)로 전송할 수 있다.
컨트롤러 인터페이스 회로(3310)는 제5 핀(P25)을 통해 스토리지 장치(3200)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제6 핀(P26)을 통해 스토리지 장치(3200)로부터 데이터 스트로브 신호(DQS)를 수신할 수 있거나 또는 스토리지 장치(3200)로 데이터 스트로브 신호(DQS)를 송신할 수 있다.
스토리지 장치(3200)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(3110)는 스위칭된 읽기 인에이블 신호(nRE)를 생성할 수 있고 그리고 스토리지 장치(3200)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 예를 들어, 데이터(DATA)를 출력하기 전에, 컨트롤러 인터페이스 회로(3110)는 정적 상태(예를 들어, 하이 레벨 또는 로우 레벨)로부터 읽기 인에이블 신호(nRE)를 생성할 수 있다. 그러므로, 스토리지 장치(3200)는 읽기 인에이블 신호(nRE)에 기초하여 스위칭된 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(3110)는 스토리지 장치(3200)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ) 및 스위칭된 데이터 스트로브 신호(DQS)를 수신할 수 있다. 컨트롤러 인터페이스 회로(3110)는 데이터 스트로브 신호(DQS)의 스위칭 시점에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 얻을 수 있다.
스토리지 장치(3200)의 데이터(DATA) 입력 동작 동안, 컨트롤러 인터페이스 회로(3110)는 스위칭된 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 데이터(DATA)를 전송하기 전에, 컨트롤러 인터페이스 회로(3110)는 정적 상태(예를 들어, 하이 레벨 또는 로우 레벨)로부터 데이터 스트로브 신호(DQS)를 생성할 수 있고, 컨트롤러 인터페이스 회로(3110)는 데이터 스트로브 신호(DQS)의 스위칭 시점에 기초하여 스토리지 장치(3200)에게 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다.
컨트롤러 인터페이스 회로(3110)는 제8 핀(P28)을 통해 스토리지 장치(3200)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(3110)는 레디/비지 출력 신호(nR/B)에 기초하여 스토리지 장치(3200)의 상태 정보를 결정할 수 있다.
도 12는 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터(4000)의 블록도이다.
도 12를 참조하면, 데이터 센터(4000)는 다양한 타입들의 데이터를 수집하고 그리고 서비스들을 제공하기 위한 설비일 수 있고 그리고 데이터 스토리지 센터로도 지칭될 수 있다. 데이터 센터(4000)는 검색 엔진들 및 데이터베이스들을 동작시키기 위한 시스템일 수 있고 (은행들과 같은) 기업들 또는 정부 기관들에 의해 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(4000)는 애플리케이션 서버들(4100~4100n) 및 스토리지 서버들(4200~4200m)을 포함할 수 있다. 실시 예에 따르면, 애플리케이션 서버들(4100~4100n)의 개수 및 스토리지 서버들(4200~4200m)의 개수는 다르게 선택될 수 있다. 애플리케이션 서버들(4100~4100n)의 개수 및 스토리지 서버들(4200~4200m)의 개수는 서로 다를 수 있다.
일부 실시 예들에서, 스토리지 서버(4200) 및/또는 애플리케이션 서버(4100)는 베이스보드 관리 컨트롤러(미도시) 및/또는 마이크로 컨트롤러 유닛(미도시)을 사용하여 도 1 내지 도 6c를 참조하는 적어도 하나의 아웃-오브-밴드 관리 방법을 수행할 수 있다.
애플리케이션 서버(4100) 또는 스토리지 서버(4200)는 프로세서들(4110 및 4210) 및 적어도 하나의 메모리들(4120 및 4220)을 포함할 수 있다. 이제 스토리지 서버(4200)는 예시로서 설명될 것이다. 프로세서(4210)는 스토리지 서버(4200)의 모든 동작들을 제어할 수 있고, 메모리(4220)에 액세스할 수 있고, 그리고 메모리(4220)로 로드된 명령어들 및/또는 데이터를 실행할 수 있다. 메모리(4220)는 DDR SDRAM(Dual Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), 옵테인(optane) DIMM, 또는 비휘발성 DIMM(NVMDIMM)일 수 있다. 일부 실시 예들에서, 스토리지 서버(4200) 내에 포함된 프로세서(4210)들의 개수 및 메모리(4220)들의 개수는 다르게 선택될 수 있다. 일 실시 예들에서, 프로세서(4210) 및 메모리(4220)는 프로세서-메모리 쌍을 제공할 수 있다. 일 실시 예에서, 프로세서(4210)들의 개수 및 메모리(4220)들의 개수는 서로 다를 수 있다. 프로세서(4210)는 싱글 코어 프로세서 또는 멀티-코어 프로세서를 포함할 수 있다. 상술된 스토리지 서버(4200)의 설명은 애플리케이션 서버(4100)에도 유사하게 적용될 수 있다. 일부 실시 예들에서, 애플리케이션 서버(4100)는 스토리지 장치(4150)를 포함하지 않을 수 있다. 스토리지 서버(4200)는 적어도 하나의 스토리지 장치(4250)를 포함할 수 있다. 실시 예에 따르면, 스토리지 서버(4200) 내에 포함된 스토리지 장치(4250)들의 개수는 다르게 선택될 수 있다.
애플리케이션 서버들(4100~4100n)은 네트워크(4300)를 통해 스토리지 서버들(4200~4200m)과 통신할 수 있다. 네트워크(4300)는 파이버 채널(FC; Fibre Channel) 또는 이더넷(Ethernet)을 사용하여 구현될 수 있다. 이 경우, FC는 상대적으로 고속 데이터 전송을 위한 매체가 될 수 있고 그리고 고성능 및 고가용성을 갖는 광 스위치들이 사용될 수 있다. 네트워크(4300)의 액세스 방법에 따르면, 스토리지 서버들(4200~4200m)은 파일 스토리지, 블록 스토리지, 또는 객체 스토리지로 설정될 수 있다.
일 실시 예에서, 네트워크(4300)는 스토리지 영역 네트워크(SAN; Storage Area Network)와 같은, 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 사용하고 그리고 FCP(FC Protocol)에 따라 구현되는 FC-SAN일 수 있다. 다른 예시로서, SAN는 IP(Internet Protocol)-SAN일 수 있고, IP-SAN은 TCP(Transmission Control Protocol)/IP 네트워크를 사용하고 그리고 SCSI 오버 TCP/IP 또는 iSCSI(Internet SCSI) 프로토콜에 따라 구현될 수 있다. 다른 실시 예에서, 네트워크(4300)는 TCP/IP 네트워크와 같은, 범용 네트워크일 수 있다. 예를 들어, 네트워크(4300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), 및 NVMe-of(NVMe over fabrics)와 같은 프로토콜들에 따라 구현될 수 있다.
이하에서, 애플리케이션 서버(4100) 및 스토리지 서버(4200)가 주로 설명될 것이다. 애플리케이션 서버(4100)의 설명은 다른 애플리케이션 서버(4100n)에 적용될 수 있고, 그리고 스토리지 서버(4200)의 설명은 다른 스토리지 서버(4200m)에 적용될 수 있다.
애플리케이션 서버(4100)는 사용자 또는 클라이언트에 의해 저장되도록 요청된 데이터를 네트워크(4300)를 통해서 스토리지 서버들(4200~4200m) 중 하나에 저장할 수 있다. 게다가, 애플리케이션 서버(4100)는 네트워크(4300)를 통해 스토리지 서버들(4200~4200m) 중 하나로부터 사용자 또는 클라이언트에 의해 읽어지도록 요청된 데이터를 얻을 수 있다. 예를 들어, 애플리케이션 서버(4100)는 네트워크 서버 또는 DBMS(Database Management System)로 구현될 수 있다.
애플리케이션 서버(4100)는 네트워크(4300)를 통해 다른 애플리케이션 서버(4100n)에 포함된 메모리(4120n) 또는 스토리지 서버(4150n)에 액세스할 수 있다. 대안적으로, 애플리케이션 서버(4100)는 네트워크(4300)를 통해 스토리지 서버들(4200~4200m)에 포함된 메모리들(4220~4220m) 또는 스토리지 장치들(4250~4250m)에 액세스할 수 있다. 그러므로, 애플리케이션 서버(4100)는 애플리케이션 서버들(4100~4100n) 및/또는 스토리지 서버들(4200~4200m) 내에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(4100)는 애플리케이션 서버들(4100~4100n) 및/또는 스토리지 서버들(4200~4200m) 사이에서 데이터를 이동 또는 복사하기 위한 명령어들을 실행할 수 있다. 이 경우, 데이터는 스토리지 서버들(4200~4200m)의 스토리지 장치들(4250~4250m)로부터 스토리지 서버들(4200~4200m)의 메모리들(4220~4220m)을 통해서 또는 직접적으로 애플리케이션 서버들(4100~4100n)의 메모리들(4120~4120n)로 이동될 수 있다. 네트워크(4300)를 통해 이동되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
이제 스토리지 서버(4200)는 예시로서 설명될 것이다. 인터페이스(4254)는 프로세서(4210) 및 컨트롤러(4251) 사이의 물리적 연결 그리고 네트워크 인터페이스 카드(NIC; Network Interface Card)(4240) 및 컨트롤러(4251) 사이의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(4254)는 스토리지 장치(4250)가 전용 케이블에 직접적으로 연결되는, DAS(Direct Attached Storage) 방식을 사용하여 구현될 수 있다. 예를 들어, 인터페이스(4254)는 ATA, SATA, E-SATA, SCSI, SAS, PCI, PCIe, NVMe, IEEE 1394, USB 인터페이스, SD 카드 인터페이스, MMC 인터페이스, eMMC 인터페이스, UFS 인터페이스, eUFS 인터페이스, 및 CF 카드 인터페이스와 같은, 다양한 인터페이스 방식들을 사용하여 구현될 수 있다.
스토리지 서버(4200)는 스위치(4230) 및 NIC(4240)를 더 포함할 수 있다. 스위치(4230)는 프로세서(4210)의 제어를 통해 프로세서(4210)를 스토리지 장치(4250)에 선택적으로 연결하거나, 또는 NIC(4240)를 스토리지 장치(4250)에 선택적으로 연결할 수 있다. 대응하는 스위치(4130) 및 NIC(4140)는 애플리케이션 서버(4100) 내에 배치되어 유사한 방식으로 동작한다.
일 실시 예에서, NIC(4240)는 네트워크 인터페이스 카드 및 네트워크 어댑터를 포함할 수 있다. NIC(4240)는 유선 인터페이스, 무선 인터페이스, 블루투스(Bluetooth) 인터페이스, 또는 광 인터페이스를 통해 네트워크(4300)에 연결될 수 있다. NIC(4240)는 내부 메모리, 디지털 신호 프로세서(DSP), 및 호스트 버스 인터페이스를 포함할 수 있고 그리고 호스트 버스 인터페이스를 통해 프로세서(4210) 및/또는 스위치(4230)에 연결될 수 있다. 호스트 버스 인터페이스는 인터페이스(4254)의 상술된 예시들 중 하나로 구현될 수 있다. 일 실시 예에서, NIC(4240)는 프로세서(4210), 스위치(4230), 및 스토리지 장치(4250) 중 적어도 하나와 통합될 수 있다.
스토리지 서버들(4200~4200m) 또는 애플리케이션 서버들(4100~4100n)에서, 프로세서는 스토리지 장치들(4150~4150n 및 4250~4250m) 또는 메모리들(4120~4120n 및 4220~4220m)에게 커맨드들을 전송할 수 있고 그리고 데이터를 프로그래밍하거나 읽을 수 있다. 이 경우, 데이터는 ECC 엔진에 의해 정정된 잘못된 데이터일 수 있다. 데이터는 DBI(Data Bus Inversion) 연산 또는 DM(Data Masking) 연산이 수행된 데이터일 수 있고 그리고 CRC(Cyclic Redundancy Coding) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화될 수 있다.
스토리지 장치들(4150~4150n 및 4250~4250m)은 프로세서로부터 수신된 읽기 커맨드에 응답하여 제어 신호들 및 커맨드/어드레스 신호들을 NAND 플래시 메모리 장치들(4252~4252m)에게 전송할 수 있다. 그러므로, NAND 플래시 메모리 장치들(4252~4252m)로부터 데이터를 읽을 때, 읽기 인에이블(RE) 신호는 데이터 출력 제어 신호로서 입력될 수 있다. 그러므로, 데이터는 DQ 버스로 출력될 수 있다. RE 신호는 데이터 스트로브 신호(DQS)를 생성하는데 사용될 수 있다. 쓰기 활성화(WE) 신호의 상승 또는 하강 에지에 따라, 커맨드 및 어드레스 신호들은 페이지 버퍼 내에 잠길 수 있다.
컨트롤러(4251)는 스토리지 장치(4250)의 모든 동작들을 제어할 수 있다. 일 실시 예에서, 컨트롤러(4251)는 SRAM을 포함할 수 있다. 컨트롤러(4251)는 쓰기 커맨드에 응답하여 NAND 플래시 메모리 장치(4252)에 데이터를 쓸 수 있거나 또는 읽기 커맨드에 응답하여 NAND 플래시 메모리 장치(4252)로부터 데이터를 읽을 수 있다. 예를 들어, 쓰기 커맨드들 및/또는 읽기 커맨드들은 스토리지 서버(4200)의 프로세서(4210), 다른 스토리지 서버(4200m)의 프로세서(4210m), 또는 애플리케이션 서버들(4100 및 4100n)의 프로세서들(4110 및 4110n)로부터 제공될 수 있다. DRAM(4253)은 NAND 플래시 메모리 장치(4252)에 쓰거나 NAND 플래시 메모리 장치(4252)로부터 읽기 위한 데이터를 일시적으로 저장(또는 버퍼링)할 수 있다. 또한, DRAM(4253)은 메타데이터를 저장할 수 있다. 여기서, 메타데이터는 NAND 플래시 메모리 장치(4252)를 관리하기 위해 컨트롤러(4251)에 의해 생성된 데이터 또는 사용자 데이터일 수 있다. 스토리지 장치(4250)는 보안 또는 프라이버시를 위한 보안 요소(SE)를 포함할 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 베이스보드 관리 컨트롤러는 마이크로 컨트롤러 유닛으로부터 수신된 정보에 기초하여 스토리지 장치의 동작을 제어할 수 있고, 따라서 베이스보드 관리 컨트롤러에 의한 스토리지 장치의 관리 기능(예를 들어, 아웃-오브-밴드 관리 기능들)이 향상될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 베이스보드 관리 컨트롤러는 스토리지 장치의 비정상적인 조건들에서 마이크로 컨트롤러 유닛과 통신할 수 있다. 그러므로, 스토리지 장치의 상태가 비정상일 때 스토리지 장치에 대한 베이스보드 관리 컨트롤러의 제어 능력이 향상될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 베이스보드 관리 컨트롤러는 내부 집적 회로 버스 또는 시스템 관리 버스에 기초하여 마이크로 컨트롤러 유닛과 통신할 수 있다. 그러므로, 베이스보드 관리 컨트롤러는 마이크로 컨트롤러 유닛과 효율적으로 통신할 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 마이크로 컨트롤러 유닛은 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나를 외부 베이스보드 관리 컨트롤러로 전송할 수 있으므로, 스토리지 장치에 대한 아웃-오브-밴드 관리 기능이 향상될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 마이크로 컨트롤러 유닛은 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나를 저장하는데 사용되는 영구 메모리를 포함할 수 있다. 그러므로, 스토리지 장치의 상태 정보 및 스토리지 장치의 제품 정보 중 적어도 하나는 마이크로 컨트롤러 유닛 내에 안정적으로 저장될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리를 통해 마이크로 컨트롤러 유닛으로부터 정보를 수신할 수 있고, 따라서 스토리지 장치로부터 정보를 수집하는 능력이 확장될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리를 통해 마이크로 컨트롤러 유닛으로부터 수신된 정보에 기초하여 스토리지 장치의 동작을 제어할 수 있고, 따라서 스토리지 장치의 제어 능력이 향상될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 스토리지 장치의 다양한 정보(예를 들어, 스토리지 장치의 필수적인 제품 데이터, 소프트웨어 정보, 및 하드웨어 정보 중 적어도 하나)를 저장하기 위한 영구 메모리는 마이크로 컨트롤러 유닛 내에서 설정되므로, 마이크로 컨트롤러 유닛은 아웃-오브-밴드 관리를 통해 베이스보드 관리 컨트롤러에게 다양한 정보를 전송할 수 있고, 따라서 스토리지 장치의 아웃-오브-밴드 관리 능력을 향상 및 확장할 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 베이스보드 관리 컨트롤러 및 마이크로 컨트롤러 유닛 사이의 통신 능력은 베이스보드 관리 컨트롤러 및 마이크로 컨트롤러 유닛 사이의 소프트웨어 통신 프로토콜 스택을 실현함으로써 향상될 수 있고, 이에 따라 이들 사이에서 더 많은 메시지들 및 커맨드들이 전송될 수 있고, 따라서 스토리지 장치에 대한 베이스보드 관리 컨트롤러의 아웃-오브-밴드 관리 능력을 향상 및 확장할 수 있고, 그리고 이에 따라 베이스보드 관리 컨트롤러는 스토리지 장치를 더 잘 모니터링하고 관리할 수 있다. 예를 들어, 베이스보드 관리 컨트롤러가 호스트의 비정상적인 전원 고장을 감지하면, 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리를 통해 스토리지 장치에게 메시지를 전송하여 스토리지 장치가 조치들을 취하게 할 수 있다. 이것은 데이터 무결성을 보장할 수 있고 데이터 손실을 예방할 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 마이크로 컨트롤러 유닛은 임의의 종류의 정보를 저장하기 위한 영구 메모리로 구성되므로, 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리가 스토리지 장치로부터 제거될 수 있다. 그러므로, 스토리지 장치의 메인 보드 상의 공간이 절약되고 그리고 스토리지 장치의 비용이 감소된다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 전원 공급 유닛 및 대기 전원 공급 중 하나는 마이크로 컨트롤러 유닛에 전원을 공급하는데 사용될 수 있으므로, 안정적인 아웃-오브-밴드 관리가 실현될 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 스토리지 장치의 메인 컨트롤러가 비정상 상태에 있고 그리고 인-밴드 통신을 수행할 수 없으면, 베이스보드 관리 컨트롤러는 본 개시의 예시적인 실시 예에 따른 아웃-오브-밴드 관리 모드를 통해 스토리지 장치와 통신할 수 있고, 스토리지 장치의 메인 컨트롤러의 에러 전후 정보(예를 들어, 단지 예시로서, 하드웨어 모니터링 정보, 로그 정보, 등)를 얻을 수 있고, 그리고 고장 분석을 위해 정보를 사용하여 고장의 원인을 신속하게 찾고 고장을 고칠 수 있다. 고장 시간을 효율적으로 감소시키는 것은 산업 생산에서 스토리지 장비 고장에 의해 발생된 생산 손실 및 비용을 크게 감소시킬 수 있다.
본 개시의 예시적인 실시 예에 따른 베이스보드 관리 컨트롤러 및 스토리지 장치를 위한 아웃-오브-밴드 관리 방법에서, 스토리지 장치의 내부 하드웨어 정보는 베이스보드 관리 컨트롤러를 통해 수집될 수 있고 그리고 마이크로 컨트롤러 유닛의 영구 메모리 내에 저장될 수 있고, 이 후 베이스보드 관리 컨트롤러는 아웃-오브-밴드 관리를 통해 마이크로 컨트롤러 유닛과 통신하고, 이것은 스토리지 장치의 메인 컨트롤러가 비정상 상태에 있을 때, 호스트는 스토리지 장치의 내부 하드웨어를 모니터링할 수 없다는 문제를 해결한다.
하나 이상의 예시적인 실시 예들에 따르면, 상술된 프로세서는 하드웨어, 하드웨어 및 소프트웨어의 조합, 또는 기능들을 수행하기 위한 실행 가능한 소프트웨어를 저장하는 비-일시적 스토리지 매체를 사용하여 구현될 수 있다.
하드웨어는, 하나 이상의 프로세서들, 하나 이상의 CPU(Central Processing Unit)들, 하나 이상의 컨트롤러들, 하나 이상의 ALU(Arithmetic Logic Unit)들, 하나 이상의 DSP(Digital Signal Processor)들, 하나 이상의 마이크로컴퓨터들, 하나 이상의 FPGA(Field Programmable Gate Array)들, 하나 이상의 SoC(System-on-Chip)들, 하나 이상의 PLU(Programmable Logic Unit)들, 하나 이상의 마이크로프로세서들, 하나 이상의 ASIC(Application Specific Integrated Circuit)들, 또는 정의된 방식으로 명령어들에 응답하고 그리고 명령어들을 실행할 수 있는 임의의 다른 장치나 장치들과 같은, 처리 회로를 사용하여 구현될 수 있지만, 이에 제한되지 않는다.
소프트웨어는 하드웨어 장치가 원하는 대로 동작하도록 독립적으로 또는 집합적으로 명령하거나 구성하기 위한, 컴퓨터 프로그램, 프로그램 코드, 명령어들, 또는 이들의 일부 조합을 포함할 수 있다. 컴퓨터 프로그램 및/또는 프로그램 코드는 상술된 하나 이상의 하드웨어 장치들과 같이, 하나 이상의 하드웨어 장치들에 의해 구현될 수 있는, 프로그램 또는 컴퓨터-판독가능 명령어들, 소프트웨어 구성 요소들, 소프트웨어 모듈들, 데이터 파일들, 데이터 구조들, 등을 포함할 수 있다. 프로그램 코드의 예시들은 컴파일러에 의해 생성된 기계어 코드 및 인터프리터를 사용하여 실행되는 상위 레벨 프로그램 코드를 모두 포함할 수 있다.
예를 들어, 하드웨어 장치가 컴퓨터 처리 장치(예를 들어, 하나 이상의 프로세서들, CPU들, 컨트롤러들, ALU들, DSP들, 마이크로컴퓨터들, 마이크로프로세서들, 등)이면, 컴퓨터 처리 장치는 프로그램 코드에 따라, 산술적, 논리적, 및 입력/출력 연산들을 수행함으로써 프로그램 코드를 수행하도록 구성될 수 있다. 프로그램 코드가 컴퓨터 처리 장치에 로드되면, 컴퓨터 처리 장치는 프로그램 코드를 수행하도록 프로그래밍될 수 있고, 이에 따라 컴퓨터 처리 장치를 특수 목적 컴퓨터 처리 장치로 변환할 수 있다. 보다 구체적인 예시에서, 프로그램 코드가 프로세서에 로드되면, 프로세서는 이에 대응하는 동작들 및 프로그램 코드를 수행하도록 프로그래밍되고, 이에 따라 프로세서를 특수 목적 프로세서로 변환한다. 다른 예시에서, 하드웨어 장치는 특수 목적 처리 회로(예를 들어, ASIC)에 맞춤화된 집적 회로일 수 있다.
컴퓨터 처리 장치와 같은, 하드웨어 장치는 운영 체제(OS) 및 OS에서 실행되는 하나 이상의 소프트웨어 애플리케이션들을 실행할 수 있다. 컴퓨터 처리 장치는 소프트웨어의 실행에 응답하여 데이터에(를) 액세스, 저장, 조작, 처리, 및 생성할 수도 있다. 간략화를 위해, 하나 이상의 예시적인 실시 예들은 하나의 컴퓨터 처리 장치로 예시될 수 있지만, 본 개시에서의 통상의 기술자는 하드웨어 장치가 다중 처리 요소들 및 다양한 타입들의 처리 요소들을 포함할 수 있음을 이해할 것이다. 예를 들어, 하드웨어 장치는 다중 프로세서들 또는 프로세서 및 컨트롤러를 포함할 수 있다. 게다가, 병렬 프로세서들과 같은, 다른 처리 구성 요소들도 가능하다.
소프트웨어 및/또는 데이터는 하드웨어 장치에게 명령어들이나 데이터를 제공하거나, 또는 하드웨어 장치에 의해 해석될 수 있는, 임의의 기계, 구성 요소, 물리적 또는 가상 장비, 컴퓨터 스토리지 매체나 장치를 포함하는, 임의의 스토리지 매체 내에 영구적으로 또는 일시적으로 구현될 수 있지만, 이에 제한되지 않는다. 소프트웨어는 소프트웨어가 분산 방식으로 저장되고 실행되도록 네트워크 연결된 컴퓨터 시스템들에 분산될 수도 있다. 특히, 예를 들어, 소프트웨어 및 데이터는 본 개시에서 논의된 유형적 또는 비-일시적 컴퓨터-판독가능 스토리지 매체를 포함하는, 하나 이상의 컴퓨터 판독가능 기록 매체들에 의해 저장될 수 있다.
스토리지 매체는 하나 이상의 예시적인 실시 예들에 따른 유닛들 및/또는 장치들로서 하나 이상의 스토리지 장치들을 포함할 수도 있다. 하나 이상의 스토리지 장치들은 랜덤 액세스 메모리(RAM; Random Access Memory), 읽기 전용 메모리(ROM; Read Only Memory), (디스크 드라이브와 같은) 영구 대용량 스토리지 장치, 및/또는 데이터를 저장하고 기록할 수 있는 임의의 다른 유사한 데이터 스토리지 메커니즘과 같은, 유형적 또는 비-일시적 컴퓨터-판독가능 스토리지 매체일 수 있다. 하나 이상의 스토리지 장치들은 본 개시에서 설명된 예시적인 실시 예들을 구현하기 위한 및/또는 하나 이상의 운영 체제들을 위한, 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 일부 조합을 저장하도록 구성될 수 있다. 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 일부 조합은 드라이브 메커니즘을 사용하여 별도의 컴퓨터 판독가능 스토리지 매체로부터 하나 이상의 스토리지 장치들 및/또는 하나 이상의 컴퓨터 처리 장치들로 로드될 수도 있다. 이러한 별도의 컴퓨터 판독가능 스토리지 매체는 USB(Universal Serial Bus) 플래시 드라이브, 메모리 스틱, 블루-레이(Blue-ray)/DVD/CD-ROM 드라이브, 메모리 카드, 및/또는 다른 유사한 컴퓨터 판독가능 스토리지 매체를 포함할 수 있다. 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 일부 조합은 컴퓨터 판독가능 스토리지 매체를 통해서가 아니라, 네트워크 인터페이스를 통해 원격 데이터 스토리지 장치로부터 하나 이상의 스토리지 장치들 및/또는 하나 이상의 컴퓨터 처리 장치들로 로드될 수 있다. 추가적으로, 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 일부 조합은 원격 컴퓨팅 시스템으로부터 하나 이상의 스토리지 장치들 및/또는 하나 이상의 프로세서들로 로드될 수 있고, 원격 컴퓨팅 시스템은 네트워크를 통해, 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 조합을 전송 및/또는 배포하도록 구성될 수 있다. 원격 컴퓨팅 시스템은 유선 인터페이스, 무선 인터페이스, 및/또는 임의의 다른 유사한 매체를 통해, 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 조합을 전송 및/또는 배포할 수 있다.
하나 이상의 하드웨어 장치들, 스토리지 매체, 컴퓨터 프로그램들, 프로그램 코드, 명령어들, 또는 이들의 일부 조합은 예시적인 실시 예들의 목적들을 위해 특별하게 설계 및 구성될 수 있거나, 또는 이들은 예시적인 실시 예들의 목적들을 위해 변경 및/또는 수정된 공지된 장치들일 수 있다.
본 기술 분야에서 전통적으로, 실시 예들은 설명된 기능 또는 기능들을 수행하는 블록들의 관점에서 설명 및 예시될 수 있다. 본 개시에서 유닛들이나 모듈들 또는 이와 유사한 것으로 지칭될 수 있는, 이러한 블록들은 논리 게이트들, 집적 회로들, 마이크로프로세서들, 마이크로컨트롤러들, 메모리 회로들, 수동 전자 구성 요소들, 능동 전자 구성 요소들, 광학 구성 요소들, 하드웨어 회로들, 및 이와 유사한 것과 같은 아날로그 및/또는 디지털 회로들에 의해 물리적으로 구현될 수 있고, 그리고 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 회로들은, 예를 들어, 하나 이상의 반도체 칩들, 또는 인쇄 회로 기판들 및 이와 유사한 것과 같은 기판 지지대들 상에 구현될 수 있다. 블록을 구성하는 회로들은 전용 하드웨어에 의해, 또는 프로세서(예를 들어, 하나 이상의 프로그래밍된 마이크로프로세서들 및 관련 회로)에 의해, 또는 블록의 일부 기능들을 수행하는 전용 하드웨어 및 블록의 다른 기능들을 수행하는 프로세서의 조합에 의해 구현될 수 있다. 실시 예들의 각 블록은 본 개시의 범위를 벗어나지 않으면서 2개 이상의 상호 작용하는 별개의 블록들로 물리적으로 분리될 수 있다. 마찬가지로, 실시 예들의 블록들은 본 개시의 범위를 벗어나지 않으면서 더 복잡한 블록들로 물리적으로 결합될 수 있다. 실시 예의 양상은 비-일시적 스토리지 매체 내에 저장되고 프로세서에 의해 실행되는 명령어들을 통해 달성될 수 있다.
전술된 내용은 예시적인 실시 예들을 설명한 것이고 그리고 이를 제한하는 것으로 해석되어서는 아니된다. 몇 가지 예시적인 실시 예들이 설명되었지만, 본 기술 분야에서의 통상의 기술자는 본 개시의 예시적인 실시 예들의 신규한 교시들 및 이점들로부터 실질적으로 벗어나지 않으면서 예시적인 실시 예들에서 많은 수정들이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 모든 이러한 수정들은 청구항들 내에 정의된 본 개시의 예시적인 실시 예들의 범위 내에 포함되는 것으로 의도된다. 그러므로, 전술된 내용은 다양한 예시적인 실시 예들을 설명하는 것이고 그리고 개시된 특정한 예시적인 실시 예들로 제한되는 것으로 해석되지 않아야 함이 이해될 것이고, 그리고 개시된 예시적인 실시 예들에 대한 수정들뿐만 아니라, 다른 예시적인 실시 예들도, 첨부된 청구항들의 범위 내에 포함되도록 의도됨이 이해될 것이다.

Claims (10)

  1. 스토리지 장치의 아웃-오브-밴드(out-of-band) 관리 방법에 있어서:
    베이스보드 관리 컨트롤러에 의해, 상기 스토리지 장치의 제품 정보 또는 상기 스토리지 장치의 상태 정보 중 적어도 하나, 또는 이들의 조합을 획득하기 위해, 상기 스토리지 장치의 마이크로 컨트롤러 유닛과 통신하는 단계; 및
    상기 베이스보드 관리 컨트롤러에 의해, 상기 획득된 정보에 기초하여, 상기 스토리지 장치를 동작시키는 단계를 포함하는 아웃-오브-밴드 관리 방법.
  2. 제 1 항에 있어서,
    상기 제품 정보는 필수적인 제품 데이터 정보를 포함하고, 그리고
    상기 상태 정보는 전압 정보, 습도 정보, 온도 정보, 전류 정보, 팬 상태 정보, 또는 전원 상태 정보를 포함하는 아웃-오브-밴드 관리 방법.
  3. 제 1 항에 있어서,
    상기 스토리지 장치를 동작시키는 단계는:
    상기 베이스보드 관리 컨트롤러에 의해, 상기 스토리지 장치가 비정상 상태에 있음을 가리키는 상기 획득된 정보에 응답하여, 상기 스토리지 장치를 동작시키기 위한 정보를 상기 마이크로 컨트롤러 유닛에게 전송하는 단계를 포함하는 아웃-오브-밴드 관리 방법.
  4. 제 1 항에 있어서,
    상기 베이스보드 관리 컨트롤러는 내부 통합 회로 버스 또는 시스템 관리 버스에 기초하여 상기 마이크로 컨트롤러 유닛과 통신하는 아웃-오브-밴드 관리 방법.
  5. 스토리지 장치의 제품 정보 및 상기 스토리지 장치의 상태 정보를 획득하기 위해 상기 스토리지 장치의 마이크로 컨트롤러 유닛과 통신하도록 구성된 통신 유닛; 및
    상기 획득된 정보에 기초하여 상기 스토리지 장치를 동작시키도록 구성된 동작 유닛을 포함하는 베이스보드 관리 컨트롤러.
  6. 제 5 항에 있어서,
    상기 제품 정보는 필수적인 제품 데이터 정보를 포함하고, 그리고
    상기 상태 정보는 전압 정보, 습도 정보, 온도 정보, 전류 정보, 팬 상태 정보, 또는 전원 상태 정보를 포함하는 베이스보드 관리 컨트롤러.
  7. 제 5 항에 있어서,
    상기 통신 유닛은 상기 스토리지 장치가 비정상 상태에 있음을 가리키는 상기 획득된 정보에 응답하여, 상기 스토리지 장치를 동작시키기 위한 정보를 상기 마이크로 컨트롤러 유닛에게 전송하도록 구성된 베이스보드 관리 컨트롤러.
  8. 제 5 항에 있어서,
    상기 통신 유닛은 내부 통합 회로 버스 또는 시스템 관리 버스에 기초하여 상기 마이크로 컨트롤러 유닛과 통신하도록 구성된 베이스보드 관리 컨트롤러.
  9. 인-밴드(in-band) 통신을 통해 외부 호스트의 중앙 처리 장치(central processing unit)와 통신하는 메인 컨트롤러 유닛; 및
    아웃-오브-밴드(out-of-band) 통신을 통해 상기 외부 호스트의 베이스보드 관리 컨트롤러와 통신하는 마이크로 컨트롤러 유닛을 포함하는 스토리지 장치.
  10. 제 9 항에 있어서,
    상기 마이크로 컨트롤러 유닛은 상기 아웃-오브-밴드 통신을 통해 상기 베이스보드 관리 컨트롤러와 상기 스토리지 장치의 제품 정보 및 상태 정보를 통신하는 스토리지 장치.
KR1020230069846A 2022-06-02 2023-05-31 스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치 KR20230167729A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210626146.1 2022-06-02
CN202210626146.1A CN114840456A (zh) 2022-06-02 2022-06-02 存储设备的带外管理方法、基板管理控制器和存储设备

Publications (1)

Publication Number Publication Date
KR20230167729A true KR20230167729A (ko) 2023-12-11

Family

ID=82575260

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230069846A KR20230167729A (ko) 2022-06-02 2023-05-31 스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치

Country Status (3)

Country Link
US (1) US20230393959A1 (ko)
KR (1) KR20230167729A (ko)
CN (1) CN114840456A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117873771B (zh) * 2024-03-11 2024-06-07 浪潮计算机科技有限公司 一种系统宕机处理方法、装置、设备、存储介质及服务器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005222A1 (en) * 2006-06-07 2008-01-03 Lambert Timothy M System and Method for Server Information Handling System Management Through Local I/O Devices
US9298524B2 (en) * 2013-03-22 2016-03-29 Insyde Software Corp. Virtual baseboard management controller
US10810085B2 (en) * 2017-06-30 2020-10-20 Western Digital Technologies, Inc. Baseboard management controllers for server chassis
US10671560B2 (en) * 2017-09-27 2020-06-02 Hewlett Packard Enterprise Development Lp Serial connection between management controller and microcontroller
US20190187909A1 (en) * 2017-12-20 2019-06-20 Samsung Electronics Co., Ltd. Local management console for storage devices
US11320990B2 (en) * 2019-05-24 2022-05-03 Dell Products L.P. NVDIMM serial interface for out-of-band management by a baseboard management controller and method therefor
US20210397577A1 (en) * 2020-06-18 2021-12-23 Samsung Electronics Co., Ltd. Systems and methods for communications within a storage chassis
CN112667483B (zh) * 2021-01-04 2023-03-28 上海兆芯集成电路有限公司 用于服务器主板的内存信息读取装置、方法及服务器

Also Published As

Publication number Publication date
US20230393959A1 (en) 2023-12-07
CN114840456A (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
TWI704487B (zh) 資料儲存設備及其操作方法
KR102365312B1 (ko) 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US20230393959A1 (en) Out-of-band management method for storage apparatus, baseboard management controller and storage apparatus
US20240037027A1 (en) Method and device for storing data
KR20240018388A (ko) 사이버 공격들로부터 내부 ssd 건강 및 저장 공간 보호를위한 멀웨어 방지 알고리즘, 하드웨어 및 소프트웨어
KR20230071730A (ko) 데이터 프로세싱 장치 및 그것의 동작 방법
KR102425470B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
EP4325367A1 (en) Method and device for data caching
US20220179724A1 (en) Method for operating storage device and host device, and storage device
CN114647374A (zh) 执行处理代码的存储装置和存储装置的操作方法
CN114281245A (zh) 同步写方法及装置、存储系统、电子设备
US20230393749A1 (en) Method and device of storage data
EP4148572A1 (en) Computational storage device and storage system including the computational storage device
US20230153237A1 (en) Method and device for storing data
US20230068365A1 (en) Storage package, storage device and method for operating the storage device
EP3992799A1 (en) Electronic device and automotive device
EP4177758A1 (en) A storage device and an operating method of a storage controller thereof
US20240160511A1 (en) Failure prediction apparatus and method for storage devices
CN116755877A (zh) 带宽控制方法和存储装置
KR20230067457A (ko) 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법
KR20230169885A (ko) 영구 메모리 장치 및 컴퓨팅 시스템
CN117008826A (zh) 数据压缩方法和装置
CN118260152A (en) Storage system, storage device and monitoring method
KR20230067439A (ko) 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치
CN117055816A (zh) 配置zns ssd的区域的方法和装置