KR20200043265A - NVMe-oF 기반의 시스템에서 섀시 레벨의 킵 얼라이브를 지원하기 위한 시스템 및 방법 - Google Patents

NVMe-oF 기반의 시스템에서 섀시 레벨의 킵 얼라이브를 지원하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200043265A
KR20200043265A KR1020190082531A KR20190082531A KR20200043265A KR 20200043265 A KR20200043265 A KR 20200043265A KR 1020190082531 A KR1020190082531 A KR 1020190082531A KR 20190082531 A KR20190082531 A KR 20190082531A KR 20200043265 A KR20200043265 A KR 20200043265A
Authority
KR
South Korea
Prior art keywords
nvme
ssd
keep alive
power mode
storage device
Prior art date
Application number
KR1020190082531A
Other languages
English (en)
Other versions
KR102481475B1 (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 삼성전자주식회사
Publication of KR20200043265A publication Critical patent/KR20200043265A/ko
Application granted granted Critical
Publication of KR102481475B1 publication Critical patent/KR102481475B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/026Details of "hello" or keep-alive messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

섀시가 개시된다. 섀시는 프로세서, 스위치 및 원격프로세서와 통신하는 적어도 하나의 저장장치를 포함할 수 있다. 저장장치는 활성전력모드와 저전력모드를 지원할 수 있다. 킵 얼라이브(KA) 메시지에 대한 응답은 저장장치가 저전력모드인 경우 저장장치 대신에 원격프로세서로 전송될 수 있다.

Description

NVMe-oF 기반의 시스템에서 섀시 레벨의 킵 얼라이브를 지원하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR SUPPORTING CHASSIS LEVEL KEEP ALIVE IN NVME-OF BASED SYSTEM}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것이며, 보다 구체적으로는 원격 저장장치에 관한 것이다.
킵 얼라이브(KA: Keep Alive) 신호는 미리 규정된 간격으로 전송되는 경우가 있으며, 인터넷 상에서 중요한 역할을 한다. 신호가 전송된 후에 응답이 수신되지 않는 경우, 링크는 다운된 것으로 가정하여 링크가 다시 복구될 때까지 장래 데이터가 다른 경로를 통해 라우팅될 수 있다. 또한, 킵 얼라이브 신호는 연결이 보존되어야 하는 점을 인터넷 인프라에 나타내는데 사용될 수 있다. 킵 얼라이브 신호가 없다면, NAT(Network Address Translation)에서 이용 가능한 라우터가 타임아웃 이후에 연결을 끊을 수 있다.
킵 얼라이브 신호의 목적이 오직 동작되지 않는 링크를 찾는 것 또는 보존되어야 할 연결을 나타내는 것이기 때문에, 킵 얼라이브 메시지는 짧아질 수 있으며, 통상적으로 많은 대역폭을 차지하지 않을 수 있다. 하지만, 이들의 정확한 형식과 사용 방식은 통신 프로토콜에 의존적이다.
주기적인 킵 얼라이브는 NVMe-oF(Non-Volatile Memory express over Fabrics)에서 필수적이며, PCIe(Peripheral Component Interconnect Express)에 대한 NVMe 1.2.1에서는 임의적이다. 호스트가 대상 측의 킵 얼라이브 타임아웃 만료와 경쟁하는 킵 얼라이브 신호를 전송하는 경쟁 조건을 방지하기 위해, 호스트는 킵 얼라이브 타임아웃을 대상에 공개할 때 10초의 유예기간을 추가할 수 있다. 킵 얼라이브가 실패되는(또는, 타임아웃되는) 일이 발생하는 경우, 전송 특정 에러가 복구될 수 있다.
NVMe-oF 사양의 섹션 7.3.5(킵 얼라이브 세팅)에는 이하와 같이 기재되어 있다. 킵 얼라이브의 기능은 RDMA 전송 계층에서 모든 RDMA 제공자 유형에 의해 지원되지 않는다. 따라서, RDMA 전송은 킵 얼라이브 피쳐의 사용을 필요로 한다(NVMe 기본 사양 내의 섹션 5.15.1.14 참조). 중복 및 충동 방침을 방지하기 위해서는 임의의 RDMA 제공자 레벨 기능은 사용하지 않는 것을 추천한다. RDMA 전송은 최소 킵 얼라이브 타임아웃 값 및 최대 킵 얼라이브 타임아웃 값에 대한 어떠한 제한을 두지 않는다. 최소값은 호스트와 컨트롤러 간의 임의의 일시적인 패브릭 인터커넥트를 차지할 정도로 크게 세팅되어야 한다.
NVMe-oF 사양의 섹션 5(복구 서비스)에는 "컵 얼라이브 명령은 복구 컨트롤러를 위해 보류된다. 전송은 고정된 복구 컨트롤러 활동의 타임아웃 값(예: 2분)을 지정할 수 있다. 상기 시간 내에 복구 컨트롤러에 의해 수신된 명령이 없는 경우, 컨트롤러는 섹션 7.1.2에 규정된 킵 얼라이브 타이머 만료를 위한 작업을 수행할 수 있다.
NVMe-oF 킵 얼라이브 요건에 따르기 위해서는, NVMe 컨트롤러가 주기적으로 호스트에 킵 얼라이브 신호를 다시 전송해야 하기 때문에, NVMe 장치는 단순하게 "go to sleep" 모드 또는 저전력모드로 들어가지 않을 수 있다. 하지만, 저전력모드는 현대 데이터 센터의 비용 컨트롤에 필수적이다.
NVMe-oF 장치가 저전력모드로 들어가게 하면서, NVMe-oF 장치를 위한 킵 얼라이브 신호 처리를 지원하는 방법이 필요하다.
본 개시가 이루고자 하는 기술적 과제는 전력소비를 절약하기 위한 저장 구성에서 시스템 레벨의 킵 얼라이브 메커니즘을 이용하여 NVMe-oF 장치가 저전력모드로 들어가게 하면서, 킵 얼라이브 신호 처리를 지원하는 시스템, 장치 및 방법을 제공하는데 있다.
본 개시의 실시예들을 따르면, NVMe-oF 장치에 대한 킵 얼라이브 트래픽을 관리하는데 이상적인 BMC를 이용하며, 저장장치 중 절반은 1차 장치로서, 장치 중 절반은 2차 장치로서 작업하여 전력을 절약할 수 있다.
도 1은 본 발명의 일 실시예에 따라 저전력 상태의 저장장치 대신에 원격프로세서로부터 킵 얼라이브(KA) 메시지에 응답하도록 설계된 기계를 도시한다.
도 2는 도 1의 기계의 추가 세부사항을 도시한다.
도 3은 저장장치 대신에 킵 얼라이브 메시지에 응답할 수 있는 BMC(Baseboard Management Controller)를 도시한다.
도 4는 도 1의 저장장치를 저전력모드에 들어가도록 지시하는 도 3의 BMC를 도시한다.
도 5는 도 1의 저장장치 대신에 도 1의 원격프로세서로부터 킵 얼라이브 메시지에 응답하는 도 3의 BMC를 도시한다.
도 6은 캐시(cache)를 사용하여 도 1의 원격프로세서로부터의 데이터 요청에 응답하는 도 3의 BMC를 도시한다.
도 7은 도 3의 BMC에 대한 세부사항을 도시한다.
도 8은 도 1의 저장장치로서 SSD(Solid State Drive) 내의 다양한 구성요소들을 도시한다.
도 9는 다수의 전원 도메인을 갖는 도 8의 SSD 컨트롤러를 도시한다.
도 10a 내지 도 10b는 본 발명의 일 실시예에 따라 도 1의 원격프로세서로부터 킵 얼라이브 메시지에 응답하기 위한 도 3의 BMC의 예시적인 절차의 흐름도를 도시한다.
도 11은 본 발명의 일 실시예에 따라 활성전력모드 상태의 도 1의 저장장치를 위해 도 1의 원격프로세서로부터 킵 얼라이브 메시지에 응답하기 위한 도 3의 BMC의 예시적인 절차의 흐름도를 도시한다.
도 12a 내지 도 12c는 본 발명의 일 실시예에 따라 도 3의 캐시를 사용하여 도 1의 저장장치 대신에 도 1의 원격프로세서로부터 데이터 요청에 응답하기 위한 도 3의 BMC의 예시적인 절차의 흐름도를 도시한다.
도 13은 본 발명의 일 실시형태에 따라 활성전력 도메인을 사용하여 관리명령들에 응답하기 위한 도 1의 저장장치의 예시적인 절차의 흐름도를 도시한다.
본 발명의 실시예에 대한 세부사항이 참조될 것이며, 이의 예시들은 첨부 도면들에 도시된다. 이하의 상세한 설명에서, 본 발명의 완전한 이해를 돕기 위해 다수의 구체적인 세부사항들이 제시된다. 하지만, 당업자가 이러한 구체적인 세부사항들 없이도 본 발명을 실시할 수 있다는 점을 이해해야 한다. 다른 실례에 있어서, 공지되어 있는 방법들. 절차들, 구성요소들, 회로들 및 네트워크들은 실시예들의 태양을 쓸데없이 모호하게 하지 않도록 상세하게 기재되지 않는다.
"제 1", "제 2" 등의 용어가 다양한 요소들을 설명하기 위해 본 명세서에 사용될 수 있지만, 이들 요소들이 이들 용어들에 의해 한정되어서는 안 된다는 점은 이해될 것이다. 이들 용어는 오직 일 요소를 타 요소와 구별하는데 사용된다. 예를 들면, 제1 모듈은 제 2 모듈로 지칭될 수 있고, 이와 유사하게, 제 2 모듈은 본 발명의 범위에서 벗어나지 않고 제 1 모듈로 지칭될 수 있다.
본 발명의 설명에 사용되는 전문용어는 특정 실시예만을 설명하기 위함이지, 본 발명을 한정하기 위한 의도는 아니다. 본 발명에 대한 설명 및 첨부된 청구범위에 사용되는 바와 같이, 단수형 "하나", "일" 및 "상기"라는 용어는 문맥에서 명백히 달리 나타내지 않는 한, 복수의 형태도 포함하도록 의도된다. 또한, 본 명세서에 사용되는 "및/또는"이라는 용어가 하나 이상의 관련된 열거 항목의 임의의 및 모든 가능한 조합을 지칭하고 포함한다는 점은 이해될 것이다. 아울러, 본 명세서에 사용되는 "포함하다" 및/또는 "포함하는"이라는 용어는 기재된 특징들, 정수들, 단계들, 동작들, 요소들 및/또는 구성요소들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성요소들 및/또는 이들의 그룹들의 존재 또는 추가를 막지 않는다는 점이 이해될 것이다. 도면의 구성요소 및 특징은 반드시 비율에 맞게 도시되어 있지 않다.
섀시 레벨의 관점에서, BMC(Baseboard Management Controller)가 시스템 내의 모든 장치, 내장된 이더넷 스위치를 통해 호스트와 직접적인 네트워크 연결 및 관리 LAN(Local Area Network)을 통한 시스템 관리자와의 연결에 접근 권한이 있기 때문에, BMC는 모든 NVMe-oF(Non-Volatile Memory Express over Fabrics) 장치에 대한 킵 얼라이브 트래픽을 관리하는데 이상적이다. 장치의 저전력 또는 아이들 활동 중에, BMC는 시스템 내에 존재하는 임의의 또는 모든 NVMe-oF 저장장치에 대한 킵 얼라이브(KA) 트래픽을 위한 프록시로서 사용될 수 있다.
시스템 레벨의 킵 얼라이브 제안
킵 얼라이브의 특징은 원격 측이 활성화되어 있거나 서비스 가능한지 여부를 검출하도록 설계된다. 시스템 레벨의 전력소비를 줄이기 위해, 일부 저장 구성에서 시스템 레벨의 킵 얼라이브 메커니즘이 기술되며, 이는 미러링을 사용하는 예를 들어 RAID(Redundant Array of Independent Disks) 레벨 1 또는 1+0으로 사용될 수 있다. 장치 중 절반(예: 홀수의 장치 IDs를 갖는 장치)은 1차 장치로서 작업할 수 있으며, 장치의 다른 절반(예: 짝수의 장치 IDs를 갖는 장치)은 2차 장치로서 작업할 수 있다.
읽기 전용의 작업부하가 검출되면, BMC는 모든 2차 저장장치를 절전모드로 설정할 수 있고, 명령 프레임을 BMC로 라우팅하기 위해 스위치의 라우팅 표를 프로그래밍할 수 있다. BMC는 2차 저장장치를 활성화시킨다기 보다는 킵 얼라이브 명령에 응답함으로써 2차 저장장치를 지원할 수 있다. 이러한 구성은 전력을 절약할 수 있다.
기록 명령이 검출되면, BMC는 2차 저장장치를 활성화시킬 수 있고, 일반 미러링 동작에 따라 2차 저장장치에 기록 명령을 전송할 수 있다.
캐시를 사용한 시스템 레벨의 킵 얼라이브
BMC는 BMC에 의해 저전력모드 상태가 되었던 SSDs에 대한 요청에 빠르게 응답하도록 캐시를 포함할 수도 있다. BMC 내에 캐시를 포함함으로써, 요청된 데이터가 캐시에 있는 경우에 본 발명의 실시예들은 장치를 활성화시키는데 필요한 시간을 피함으로써 장치 미러링이 없는 상황(일 장치가 항상 완전히 준비된 상태에 있는 상황)까지 확장될 수 있다. BMC 내의 캐시는 다른 목적으로도 사용될 수 있다.
본 발명의 실시예들은 저전력모드 상태의 장치로부터 BMC로 호스트/이니시에이터 I/Os을 재지시하도록 섀시 스위치 포트들을 재프로그래밍하는데 지원할 수 있다. 본 발명의 실시예들은 저전력모드 상태의 장치들이 여전히 이러한 유형의 비(非)I/Os 요청을 만족시킬 수 있기 때문에, 특정 질문의 요청, 예를 들면 아웃오브밴드 경로(예: 시스템 관리 버스(SMBus: System Management Bus)를 통해 호스트로부터 장치로 전송되는 SMARTLog 요청을 지원할 수 있다.
도 1은 본 발명의 일 실시예에 따라 저전력 상태의 저장장치 대신에 원격프로세서로부터 킵 얼라이브(KA) 메시지에 응답하도록 설계된 기계를 도시한다. 도 1에 기계(105)가 도시된다. 기계(105)는 프로세서(110)를 포함할 수 있다. 프로세서(110)는 예를 들면 인텔의 Xeon, Celeron, Itanium, 또는 Atom processor, AMD의 AMD Opteron processor, ARM의 ARM processor 등 임의의 다양한 프로세서일 수 있다. 기계(105) 내의 단일 프로세서(110)가 도 1에 도시되어 있지만, 기계(105)는 다수의 프로세서들을 포함할 수 있으며, 이들 각각은 단일 코어 또는 멀티 코어 프로세서일 수 있고 임의의 원하는 조합으로 조합될 수 있다.
기계(105)는 메모리 컨트롤러(미도시)에 의해 관리될 수 있는 메모리(115)를 포함할 수도 있다. 메모리(115)는 플래시 메모리, DRAM, SRAM, PRAM(Persistent Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 MRAM(Magnetoresistive Random Access Memory) 등과 같은 NVRAM(Non-Volatile Random Access Memory) 등 임의의 다양한 메모리일 수 있다. 메모리(115)는 다른 메모리 유형들의 임의의 원하는 조합일 수도 있다. 메모리(115)는 메모리 컨트롤러(120)에 의해 관리될 수 있다.
기계(105)는 장치 드라이버(130)에 의해 제어될 수 있는 저장장치(125)를 포함할 수도 있다. 저장장치(125)는 임의의 원하는 저장장치의 형태일 수 있다. 예를 들면, 저장장치(125)는 NVMe SSD(Non-Volatile Memory express Solid State Drive)일 수 있다.
도 1이 서버(자립형 또는 랙서버 중 하나일 수 있음)로서의 기계(105)를 도시하지만, 본 발명의 실시예들은 이에 한정되지 않고 임의의 원하는 유형의 기계(105)를 포함할 수 있다. 예를 들면, 기계(105)는 본 발명의 실시예들에서 유리할 수 있는 데스크톱, 랩톱 컴퓨터 또는 임의의 다른 기계로 대체될 수 있다. 기계(105)는 전문적 휴대용 컴퓨팅 머신, 태블릿 컴퓨터, 스마트폰 및 다른 컴퓨팅 기계를 포함할 수도 있다.
기계(105)는 네트워크(140)를 통해 원격 기계(135)와 통신될 수 있다. 네트워크(140)는 LAN, WAN, MAN 또는 인터넷 등의 글로벌 네트워크를 포함하는 임의의 다양한 네트워크일 수 있다. 네트워크(140)는 이러한 네트워크들의 임의의 조합일 수도 있다. 또한, 네트워크(140)는 기계(105)와 원격 기계(135) 사이에 유선 연결, 무선 연결 또는 그 둘 다를 포함할 수 있다.
원격 기계(135)는 기계(105)의 저장장치(125)로부터 데이터에 접근하는 어플리케이션을 실행하는 원격프로세서(145)를 포함할 수 있다. 예를 들면, 저장장치(125)는 원격프로세서(145)로부터 접근 가능한 RDAS(Remote Direct Attached Storage)일 수 있다. 저장장치(125)가 여전히 동작되고 사용 가능하다는 것을 원격프로세서(145)가 보장하길 원할 수 있기 때문에, 원격프로세서(145)는 임시(occasional) 킵 얼라이브(KA) 메시지를 저장장치(125)에 전송할 수 있다. 저장장치(125)가 킵 얼라이브 메시지에 대한 응답을 원격프로세서(145)에 전송하는 경우, 원격프로세서(145)는 저장장치(125)가 여전히 동작되고 사용 가능하다는 것을 알게 되며, 저장장치(125)가 응답하지 않는 경우에는, 원격프로세서(145)는 저장장치(125)가 사용 가능하지 않다는 것을 알게 된다. 원격프로세서(145)는 임의의 적합한 요소, 예를 들면, NIC(Network Interface Card)를 사용하거나 스위치와 같은 기계(105) 내의 다른 위치의 이더넷 연결을 통해 저장장치(125)와 통신될 수 있다.
종래의 구조의 단점은 저장장치(125)가 킵 얼라이브 메시지에 대한 응답을 원격프로세서(145)에 전송할 수 있어야 한다는 점이다. 저장장치(125)가 이러한 응답을 전송하기 위해, 저장장치(125)는 활성화되어 있어야 한다. 하지만, 저장장치(125)가 활성화되면, 저전력모드 상태일 수 없으며, 이는 저장장치(125)가 많은 양의 전력을 사용한다는 것을 의미한다. 저장장치(125)가 저전력모드 상태로 될 수 있는 경우(예: 저장장치(125)가 어떠한 데이터 요청에도 응답하지 않아도 되는 경우), 저장장치(125)는 활성전력모드에 있을 때보다 잠재적으로 충분한 전력 절약을 달성할 수 있다. 킵 얼라이브 메시지의 처리를 다른 구성요소(항상 활성화되어 있으며, 활성화시 잠재적으로 저장장치(125)보다 적은 전력을 사용하는 구성요소)에 넘김으로써, 저장장치(125)는 킵 얼라이브 메시지(통상적으로 저장장치(125)가 활성전력모드 상태에 있어야 함)를 처리할 필요 없이 저전력모드에 들어갈 수 있다.
도 2는 도 1의 기계의 추가 세부사항을 도시한다. 도 2에 있어서, 통상적으로 기계(105)는 기계(105)의 구성요소들의 동작을 조정하는데 사용될 수 있는 메모리 컨트롤러들(115)과 클록들(205)을 포함할 수 있는 하나 이상의 프로세서들(110)들 포함한다. 프로세서들(110)은 예를 들어 RAM, ROM 또는 다른 상태 보전 매체(other state preserving media)를 포함할 수 있는 메모리들(115)에 결합될 수도 있다. 프로세서들(110)은 예를 들면 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(210) 및 저장장치(125)에 결합될 수도 있다. 프로세서들(110)은 다른 구성요소들 중에 사용자 인터페이스(220) 및 I/O 엔진들(225)을 사용하여 관리될 수 있는 인풋/아웃풋 인터페이스 포트들에 부착될 수 있는 버스들(215)에 연결될 수도 있다.
도 3은 저장장치들 대신에 킵 얼라이브 메시지들(305)에 응답할 수 있는 BMC를 도시한다. 도 3에 있어서, 저장장치(125-1 내지 125-8)에 연결된 BMC(310)가 도시된다. BMC(310)가 통상적으로 도 1의 기계(105) 내의 대부분(전부는 아님)의 구성요소들에 연결되기 때문에(예: 기계(105) 내의 냉각을 조절하기 위한 다양한 구성요소들의 온도 체크를 지원하기 위함), BMC(310)는 저장장치들(125-1 내지 125-8) 대신에 킵 얼라이브 메시지들(305)을 처리하기 위한 유용한 선택사항이다. 하지만, 저장장치들(125-1 내지 125-8) 대신에 킵 얼라이브 메시지들(305)을 처리할 수 있는 임의의 다른 구성요소(예: 도 1의 프로세서(110) 또는 스위치(315)가 BMC(310)를 대신하여 사용될 수 있음을 이해해야 한다. 요구되는 모든 것은 저장장치들(125-1 내지 125-8) 대신에 킵 얼라이브 메시지들(305)을 처리하기 위한 구성요소가 저장장치들(125-1 내지 125-8)을 위한 패킷들의 내용을 검사할 수 있어야 한다는 점이다. BMC(310)에 초점을 둔 임의의 이후 설명은 임의의 다른 적절한 구성요소에 동일하게 적용 가능한 것으로 이해될 수 있다.
저장장치(125-1 내지 125-8) 대신에 킵 얼라이브 메시지들(305)의 처리를 지원하기 위해, BMC(310)는 스위치(315)와 통신할 수 있다. BMC(310)는 저장장치들(125-1 내지 125-8)을 위한 통신이 BMC(310) 대신에 지시될 수 있다는 것을 스위치(315)에게 알릴 수 있다. 이것이 "전부 또는 전무"형의 배치가 아니라는 점을 이해해야 한다. BMC(310)는 각각의 저장장치들(125-1 내지 125-8)에 대한 통신을 재지시하기 위해 스위치(315)를 재프로그래밍할 수 있다. 예를 들면, 도 3은 다양한 저장장치들의 상태를 나타내는 장치 상태 표(320)를 포함하는 BMC(310)를 도시한다. 장치 상태 표(320)는 1차 저장장치들(125-1, 125-3, 125-5 및 125-7)이 모두 활성화 상태인 반면, 1차 저장장치들(125-1, 125-3, 125-5 및 125-7)을 반영하는 2차 저장장치들(125-2, 125-4, 125-6 및 125-8)은 모두 어슬립 상태(asleep)에 있는 것을 나타낸다. 따라서, BMC(310)는 BMC(310)로의 2차 저장장치들(125-2, 125-4, 125-6 및 125-8)을 위한 통신을 재지시하지만, 1차 저장장치들(125-1, 125-3, 125-5 및 125-7)를 위한 통신은 남기도록 스위치(315)의 라우팅 표(325)를 재프로그래밍하여, 이들의 의도된 목적(destination)을 계속할 수 있다. 또한, BMC(310)와 다른 구성요소들이 스위치(315)의 라우팅 표(325)의 재프로그래밍을 담당할 수 있다. 예를 들면, 스위치(315)가 저장장치들(125-1 내지 125-8)의 작업량을 결정하는 것과 저장장치들(125-1 내지 125-8)이 저전력모드로 들어가야 되는 것에 대한 결정을 담당하면, 스위치(315)는 저장장치들(125-1 내지 125-8)을 위한 트래픽을 BMC(310) 자체에게 재지시하도록 라우팅 표(325)를 재프로그래밍할 수 있다.
킵 얼라이브 메시지(305)를 수신하자마자, BMC(310)는 도 1의 원격프로세서(145)로 다시 전송될 수 있는 미리 프로그래밍된 응답을 생성할 수 있다. 이러한 방식으로, 도 1의 원격프로세서(145)는 적절하게 킵 얼라이브 메시지들(305)을 생성할 수 있고 킵 얼라이브 메시지들(305)에 대한 응답을 수신할 수 있지만, 2차 저장장치들(125-2, 125-4, 125-6 및 125-8)은 절전 상태(저전력모드)에 들어갈 수 있어서, 도 1의 기계(105)에 의해 사용되는 전체 전력을 저감할 수 있다.
장치 상태 표(320)가 활성전력모드의 일부 저장장치들과 저전력모드의 다른 저장장치들을 나타내지만, 본 발명의 실시예들은 임의의 시간에 원하는 전력모드 상태인 임의의 저장장치를 가질 수 있다. 예를 들면, 저장장치들(125-1 내지 125-8)이 모두 아이들 상태인 경우, 저장장치들(125-1 내지 125-8)은 모두 저전력모드일 수 있으며, BMC(310)는 저장장치들(125-1 내지 125-8) 모두를 대신하여 킵 얼라이브 메시지들(305)을 처리할 수 있다.
이 시점에서, 저장장치들(125-1 내지 125-8)이 저전력모드로 들어갈 수 있는 이유 및 방법을 이해하는 것이 도움이 된다. 여기에는 다양한 가능성이 존재한다. 본 발명의 일 실시예에 있어서, 저장장치들(125-1 내지 125-8)은 이들의 자체 작업량을 각각 모니터링할 수 있으며, 저전력모드로 들어가는 것이 바람직한 시점까지 임의의 저장장치의 작업량(활성 레벨)이 떨어진 경우에 BMC(310)에게 (각각)알릴 수 있다. 본 발명의 다른 실시예에 있어서, 저장장치들(125-1 내지 125-8)은 이들의 자체 작업량을 각각 모니터링할 수 있다. 즉, 1차 저장장치가 읽기 전용(데이터가 저장장치로부터 읽기는 되지만, 저장장치에 기록은 안 됨) 작업량을 검출한 경우, 1차 저장장치는 BMC(310)가 이에 대응되는 2차 저장장치(즉, 1차 저장장치를 반영) 가 저전력모드 상태로 될 수 있도록 하게 할 수 있다(데이터가 2차 저장장치에 기록될 필요가 없기 때문). 본 발명의 다른 실시예에 있어서, 저장장치들(125-1 내지 125-8)은 이들이 막 아이들 상태에 있다는 것을 알 수 있다. 예를 들면, 저장장치들(125-1 내지 125-8)에 저장되었던 데이터의 현재 사용자가 저장장치들(125-1 내지 125-8)에 대한 임차를 종료한 경우, 다른 어떠한 신규 사용자도 저장장치들(125-1 내지 125-8)에 대한 임차를 예정할 수 없다. 본 발명의 다른 실시예에 있어서, 스위치(315)(각각의 저장장치들(125-1 내지 125-8)에 대한 모든 트래픽을 추적할 수 있음)는 하나 이상의 저장장치들(125-1 내지 125-8)의 작업량이 해당 저장장치가 저전력모드로 들어가는 것이 유리할 수 있는 지점까지 떨어졌다는 것을 BMC(310)에게 알려줄 수 있다.
결정이 이루어지는 방법과 관계없이, BMC(310)는 해당 저장장치가 저전력모드로 들어가도록 지시할 수 있다. 그 후, 저전력모드에 들어간 경우에 저장장치는 BMC(301)에 응답할 수 있다. 대안적으로, 저장장치는 단순히 저전력모드에 들어간 후, 이러한 사실을 BMC(310)에게 알려줄 수 있다. 저장장치의 프로토콜 상태가 킵 얼라이브 메시지(305)에 대한 응답에 포함될 수 있기 때문에, 저장장치로부터의 이러한 통신은 프로토콜 상태 정보를 포함할 수 있다. 그 후, BMC(310)는 장치 상태 표(320)에 이러한 프로토콜 상태 정보를 저장할 수 있다. BMC(310)는 배전판(PDB: Power Distribution Board)(도 3에는 미도시)가 해당 저장장치의 전력을 점차 저감시키도록 지시할 수 있다. PDB는 전력을 도 1의 기계(105)의 다양한 구성요소들에 전달하는 것을 담당할 수 있다. 즉, 달리 지시되지 않으면, 특히, 구성요소가 저전력모드인 경우에 PDB는 그 구성요소가 사용할 수 있는 전력보다 많은 양의 전력을 제공할 수 있다.
도 3에 도시된 바와 같이, BMC(310)는 캐시(330)를 포함할 수 있다. 캐시(330)는 BMC(310)에 대한 로컬 스토리지로서 작용하여, 근일에 다시 요청될 수 있는 데이터를 저장할 수 있다. 도 3이 BMC(310)의 일부로서의 캐시(330)를 도시하고 있지만, 본 발명의 실시예들은 다른 위치에 위치되는 캐시(330)를 포함할 수 있음을 이해해야 한다. 예를 들면, 캐시(330)는 도 1의 메모리(115)의 일부일 수 있다. 따라서, "캐시"라는 용어는 원하는 데이터가 저장된 일반적인 저장장치에 접근하는 것보다 더 빠른 다른 형태들의 스토리지를 포괄하는 것으로서 이해해야 한다. 아울러, 캐시(330)는 모든 상황의 저장장치보다 반드시 더 빠를 필요는 없지만, 오직 그 캐시(33)만 일부 상황에서 원하는 데이터에 접근하는 것보다 더 빠를 수 있음을 이해해야 한다. 예를 들면, SSD를 활성전력모드로 되돌리는데 내재하는 지연이 존재하기 때문에, 캐시(330)는 활성전력모드인 SSD로부터 데이터에 접근하는 것보다 느리지만, 저전력모드인 SSD로부터 데이터에 접근하는 것보다는 더 빠른 스토리지를 포함할 수 있다.
임의의 원하는 알고리즘은 데이터가 캐시(330)에 추가되거나 및/또는 캐시(330)로부터 제거되어야 하는 경우를 결정하는데 사용될 수 있다(예: 최소 최근 사용(LRU: Least Recently Used) 알고리즘 또는 최소 사용 빈도수(LFU: Least Frequently Used) 알고리즘). 캐시(330)는 도 1의 원격프로세서(145)로부터 전송된 데이터 요청들에 관한 데이터를 저전력모드 상태인 저장장치에 저장하는데 사용될 수 있다. 예를 들면, 캐시(330)는 도 1의 원격프로세서(145)에 의해 요청되었던 읽기 요청의 데이터에 접근하는데 사용될 수 있지만, 해당 저장장치는 현재 저전력모드 상태에 있다. 또는, 캐시(330)는 도 1의 원격프로세서(145)에 의해 전송된 기록 요청의 데이터를 저장하는데 사용될 수 있지만, 역시 해당 저장장치는 현재 저전력모드 상태에 있다. 캐시(330)는 도 6을 더 참조하여 후술된다.
상기 설명에서, BMC(310)는 저전력모드 상태인 저장장치들(125-1 내지 125-8) 대신에 킵 얼라이브 메시지들(305)을 처리하는 것으로서 설명되었다. 저장장치들(125-1 내지 125-8)이 활성전력모드 상태에 있고 킵 얼라이브 메시지들(305)에 대한 응답의 적절한 로직을 포함한다면, 저장장치들(125-1 내지 125-8)은 킵 얼라이브 메시지들(305) 자체에 응답할 수 있다. 하지만, 본 발명의 일부 실시예들에 있어서, 저장장치들(125-1 내지 125-8)은 킵 얼라이브 메시지들(305)에 대한 응답에 필요한 로직을 포함하지 않을 수 있다. 즉, 저장장치들(125-1 내지 125-8)은 킵 얼라이브 메시지들(305)에 대한 적절한 응답을 생성하여 전송하지 못할 수 있다. 본 발명의 이러한 실시예들에 있어서, 스위치(315)는 저장장치들(125-1 내지 125-8)에 대부분의 트래픽을 전송할 수 있지만, 킵 얼라이브 메시지들(305)을 BMC(310)에 전송할 수 있다. 이러한 방식으로, 저장장치들(125-1 내지 125-8)이 킵 얼라이브 메시지들(305)에 대해 응답할 수 없는 경우, 심지어 저장장치들(125-1 내지 125-8)이 활성전력모드 상태인 경우에도 BMC(310)는 킵 얼라이브 메시지들(305)에 대한 응답들을 전송할 수 있다(명백히, 저장장치들(125-1 내지 125-8) 중 일부가 KA 메시지들(305)에 대해 응답할 수 있고, 나머지가 적절한 회로를 생략할 수 있는 경우, BMC(310)는 필요한 회로가 없는 저장장치들만을 대신하여, 활성전력모드 상태일 때에 KA 메시지들(305) 자체에 응답하는데 필요한 회로를 포함하는 저장장치들로 KA 메시지들(305)에 응답할 수 있음).
도 9를 참조하여 후술되는 바와 같이, 본 발명의 일부 실시예들에 있어서, 일부 저장장치들은 심지어 저전력모드로 동작되는 경우에도 킵 얼라이브 메시지(3050에 응답 가능할 수 있다. 따라서, "대신에"라는 어구는 저장장치들(125-1 내지 125-8)이 저전력모드 상태일 때 킵 얼라이브 메시지(305)가 이들에 전송되는 경우, 일부 구성요소들이 킵 얼라이브 메시지(305)에 응답한다는 것을 의미하는 것으로 이해되어야 한다. 또한, "대신에"라는 어구는 심지어 저장장치들(125-1 내지 125-8)이 저전력모드 상태인 경우에도 KA 메시지(305) 자체에 응답하는 저장장치들(125-1 내지 125-8)을 포괄할 수 있다. "대신에"라는 어구는 저장장치들(125-1 내지 125-8)이 저전력모드 상태일 때, 저장장치들(125-1 내지 125-8)과는 다른 일부 구성요소가 킵 얼라이브 메시지(305)에 반드시 응답해야 한다는 것을 의미하는 것으로 좁게 해석해서는 안 된다. 반면, "대신에"라는 어구는 저장장치들(125-1 내지 125-8)이 활성전력모드 상태일 때에 전력이 절약되지 않기 때문에, 저장장치들(125-1 내지 125-8)이 활성전력모드 상태일 때, 킵 얼라이브 메시지(305)에 응답하는 저장장치들(125-1 내지 125-8)을 포괄하는 것으로 의도되지 않는다.
도 4는 도 3의 저장장치(125-1)가 저전력모드로 들어가도록 지시하는 도 3의 BMC(310)를 도시한다. 도 4에서, BMC(310)는 저장장치(125-1)가 저전력모드로 들어가기 위한 지시(405)를 전송할 수 있다. 저장장치(125-1)가 저전력모드로 들어가기 위해 필요한 준비가 완료되면, 저장장치(125-1)는 BMC(310)에 응답을 전송한다. 이러한 응답은 저장장치(125-1)의 프로토콜 상태(410)를 포함할 수 있다. 본 발명의 일부 실시예들에 있어서, 저전력모드로 들어가는 일부로서, 자장장치(125-1)는 BMC(310) 대신에 저장장치(125-1)로 주소 지정된 트래픽을 재지시하도록 도 1의 스위치(315)를 재프로그래밍할 수 있다.
도 5는 도 1의 저장장치 대신에 도 1의 원격프로세서(145)로부터 도 3의 킵 얼라이브 메시지(305)에 응답하는 도 3의 BMC(310)를 도시한다. 도 5에서, 원격프로세서(145)는 도 3의 임의의 저장장치들(125-1 내지 125-8)을 위해 킵 얼라이브 메시지(305)를 전송할 수 있다. 도 3의 스위치(315)는 도 3의 라우팅 표(325)를 기준으로 BMC(310)에 킵 얼라이브 메시지(305)를 재지시할 수 있다. 그 후, BMC(310)는 원격프로세서(145)에 킵 얼라이브 응답(505)을 전송할 수 있다. 킵 얼라이브 응답(505)은 미리 프로그래밍된 응답일 수 있거나, 도 4의 프로토콜 상태(410)와 같은 추가 정보를 포함할 수 있다.
도 6은 캐시를 사용하여 도 1의 원격프로세서(145)로부터의 데이터 요청에 응답하는 도 3의 BMC(310)를 도시한다. 도 6에서 원격프로세서(145)는 도 3의 임의의 저장장치들(125-1 내지 125-8)을 위한 데이터 요청(605)을 전송할 수 있다. 도 3의 스위치(315)는 도 3의 라우팅 표(325)를 기준으로 BMC(310)에 데이터 요청(605)을 재지시할 수 있다.
데이터 요청(605)이 읽기 요청인 경우, BMC(310)는 해당 데이터가 캐시(330)에서 사용 가능한지 확인할 수 있다. 해당 데이터가 캐시(330)에서 사용 가능한 경우, BMC(310)는 캐시(330)로부터 데이터를 읽을 수 있으며, 데이터 응답(610) 내의 데이터를 원격프로세서(145)로 다시 전송할 수 있으므로, 통상적으로 그 데이터를 보유하고 있는 저장장치가 저전력모드 상태로 유지될 수 있게 한다. 해당 데이터가 캐시(330)에 존재하지 않는 경우, BMC(310)는 데이터 요청(605)을 적절한 저장장치로 전송하여, 저장장치가 데이터 요청(605)에 응답할 수 있도록 저장장치를 활성전력모드로 되돌린다.
데이터 요청(605)이 기록 요청인 경우, BMC(310)는 데이터를 캐시(330)에 저장하고 데이터 응답(610)을 원격프로세서(145)로 다시 전송하여, 기록 요청이 "완료"되었다는 것을 원격프로세서(145)가 알게 할 수 있다. 이후에, 적절한 저장장치가 활성전력모드 상태가 되면, BMC(310)는 ("후기록 캐시(write-back cache)"라고 통상적으로 지칭되는 접근법을 사용하여) 캐시(330) 외에서 데이터를 다시 읽고 그 데이터를 적절한 저장장치에 전송할 수 있다. 데이터 응답(610)이 저장장치를 저전력모드로부터 활성시키는데(wake up) 필요한 시간이 소요되지 않고 전송될 수 있기 때문에, "후기록 캐시"는 기록이 보다 빨리 "완료"(원격프로세서(145)로부터 확인됨)될 수 있도록 할 수 있다. 또한, BMC(310)는 BMC(310)가 데이터 응답(610)을 원격프로세서(145)에 전송하기 이전 또는 이후에 기록 요청을 완료할 때까지 저장장치를 활성시킬 수 있다. 후기록 캐시를 사용하는 것은 당연히 캐시(330)가 예상치 못한 정전에 대해 보호된다는 점을 의미한다(데이터가 저장장치에 기록되기 전의 데이터 손실을 방지하기 위함). 캐시(330)는 NV(Non-Volatile) 스토리지를 사용하여 구현될 수 있거나, 배터리 백업에 의해서 정전에 대해 보호될 수 있다. 대안적으로, BMC(310)는 데이터를 캐시(330)에 저장하고 저장장치를 활성화시켜, 그 후에 ("동시기록 캐시"라고 통상적으로 지칭되는 접근법을 사용하여)기록 요청이 완료된 원격프로세서(145)에 응답하기 전에 데이터를 (비활성)저장장치에 기록할 수 있다.
도 7은 도 3의 BMC(310)를 상세하게 도시한다. 도 7에서, BMC(310)는 수신기/송신기(705), 장치 상태 표(320), 스위치 프로그래밍 로직(710), 킵 얼라이브 로직(715), 데이터 처리 로직(720) 및 캐시(330)를 포함하는 것으로 도시된다. 수신기/송신기(705)는 도 1의 기계(105)의 다른 구성요소들과 도 1의 원격프로세서(145)와 같은 다른 기계들 및 기계의 구성요소들에 데이터를 전송하고 수신하는데 사용될 수 있다. 예를 들면, 수신기/송신기(705)는 저장장치들이 저전력모드 또는 활성전력모드로 들어갈 수 있거나 들어가는 것을 나타내는 도 3의 저장장치들(125-1 내지 125-8)로부터의 통신 또는 도 1의 원격프로세서(145)로부터의 킵 얼라이브 메시지(305)를 수신할 수 있다. 그리고 수신기/송신기(705)는 저장장치들을 저전력모드 또는 활성전력모드로 들어가도록 지시하는 도 9의 저장장치들(125-1 내지 125-8)로의 통신, 도 9의 저장장치들(125-1 내지 125-8)을 위한 통신이 전달되어야 하는 경우(예: 도 3의 킵 얼라이브 메시지(305)가 도 3의 저장장치들(125-1 내지 125-8)을 대신하여 BMC(310)로 전송되어야 하는 경우)에 도 3의 스위치(315)가 변경되도록 하는 지시, 또는 도 1의 원격프로세서(145)로의 도 5의 킵 얼라이브 응답(505)을 전송할 수 있다. 본 발명의 실시예들에 있어서, BMC(310)가 도 3의 캐시(330)를 포함할 수도 있는 경우에, 수신기/송신기(705)는 도 1의 원격프로세서(145)로부터 도 3의 저장장치들(125-1 내지 125-8)로 전송된 도 6의 데이터 요청(605)을 수신할 수도 있고, 도 6의 데이터 요청(605)이 캐시(330) 내의 데이터로부터 만족스러울 수 있으면 도 6의 데이터 응답(610)을 도 1의 원격프로세서(145)로 전송할 수 있다.
장치 상태 표(320)는 도3에 도시된 바와 같다. 즉 장치 상태 표(320)는 도 3의 각각의 저장장치들(125-1 내지 125-8)의 상태들(저전력모드 또는 활성전력모드)에 관한 정보를 저장한다. 장치 상태 표(320)는 도 4의 프로토콜 상태(410)가 도 5의 킵 얼라이브 응답(505)을 도 1의 원격프로세서(145)로 전송하는데 사용되는 경우에는 도 4의 프로토콜 상태(410)도 저장할 수 있다.
스위치 프로그래밍 로직(710)은 도 3의 스위치(315)에 대한 지시들을 생성하여, 저전력모드 상태인 도 3의 저장장치들(125-1 내지 125-8)에 대한 라우팅 표(325)를 수정할 수 있다. 킵 얼라이브 로직(715)은 도 1의 원격프로세서(145)가 도 3의 킵 얼라이브 메시지(305)를 전송한 이후에, 도 5의 킵 얼라이브 응답(505)을 생성하여 도 1의 원격프로세서(145)로 전송할 수 있다. 킵 얼라이브 로직(715)은 도 5의 킵 얼라이브 응답(505)을 생성하는데 있어서 도 3의 저장장치들(125-1 내지 125-8)에 의해 제공된 프로토콜 상태 정보를 사용할 수 있다. 저장장치이며 그 저장장치의 프로토콜 상태를 잠재적으로 포함하고 킵 얼라이브 로직(715)을 구현하기 간단하게 하는 도 5의 킵 얼라이브 응답(505)의 "소스"를 제외하고, 대부분의 경우, 도 5의 킵 얼라이브 응답(505)은 매우 조금 변경될 수 있음은 예상될 수 있다.
캐시(330)를 포함하는 본 발명의 실시예들에 있어서, BMC(310)는 데이터 처리 로직(720)을 포함할 수도 있다. 데이터 처리 로직(720)은 도 3의 저장장치(125-1)가 저전력모드인 경우에 도 3의 저장장치(125-1) 대신에 BMC(310)에 의해 도 1의 원격프로세서(145)로부터 수신된 도 6의 데이터 요청(605)과 같은 데이터 요청들을 처리할 수 있다. 데이터 처리 로직(720)은 캐시(330)에 존재하는 데이터에 접근할 수 있거나(읽기 요청의 경우), 캐시(330)에 데이터를 저장할 수 있고(기록 요청의 경우), 도 3의 저장장치(125-1)를 활성전력모드로 되돌리지 않고 도 1의 원격프로세서(145)에 결과값을 되돌려 줄 수 있다(캐시(330)가 동시기록 캐시로서 동작하는 경우 또는 요청된 데이터가 캐시(330)에 존재하지 않는 경우, BMC(310)는 당연히 도 1의 저장장치(125)에 도 6의 데이터 요청(605)을 전송하고 도 1의 저장장치를 활성전력모드로 되돌려서, 도 6의 데이터 요청(605)을 처리할 수 있음). 따라서, 데이터 처리 로직(720)은 데이터 요청이 원래 지시되었던 것보다 더 빠른 스토리지들로부터 접근 가능할 수 있는 데이터를 위한 캐시(및 다른 스토리지 포멧들)를 체크하는 다른 로직들과 유사하게 동작한다.
스위치 프로그래밍 로직(710), 킵 얼라이브 로직(715) 및 데이터 처리 로직(720)은 임의의 원하는 구현예를 사용하여 구현될 수 있다. 예를 들면, 스위치 프로그래밍 로직(710), 킵 얼라이브 로직(715) 및 데이터 처리 로직(720)은 FPGA(Field Programmable Gate Array) 또는 ASIC(Application-Specific Integrated Circuit)을 사용한 회로로서 구현될 수 있다. 또는, 스위치 프로그래밍 로직(710), 킵 얼라이브 로직(715) 및 데이터 처리 로직(720)은 프로세서(도 7의 BMC(310)의 일부이지만, 미도시)에 의해 실행되도록 설계된 소프트웨어로 구현될 수 있다.
도 8은 도1의 저장장치(125)로서 SSD의 다양한 구성요소들을 도시한다. 도 8에서, SSD(125-1)는 호스트 인터페이스 로직(805), SSD 컨트롤러(810) 및 다양한 채널들(820-1 내지 820-4)로 조직될 수 있는 다양한 플래시 메모리 칩들(815-1 내지 815-8)을 포함할 수 있다. 호스트 인터페이스 로직(805)은 SSD(125-1)와 도 1의 기계(105) 간의 통신을 관리할 수 있다. SSD 컨트롤러(810)는 가비지 콜렉션 및 다른 동작에 따라 플래시 메모리 칩들(815-1 내지 815-8) 상에 읽기 동작 및 기록 동작을 관리할 수 있다.
SSD 컨트롤러(810)는 플래시 변환 계층(825, FTL: Flash Translation Layer)을 포함할 수 있다. FTL(825)은 도 1의 기계(105)에 의해 사용되는 LBAs(Logical Block Addresses)를 SSD(125-1)에 저장된 데이터의 PBAs(Physical Block Addresses)로 변환하는 종래의 기능을 수행할 수 있다.
도 8이 4개의 채널들(820-1 내지 820-4)로 조직되는 8개의 플래시 메모리 칩들(815-1 내지 815-8)을 포함하는 SSD(120)를 도시하지만, 본 발명의 실시예들은 임의의 개수의 채널들로 조직된 임의의 개수의 플래시 메모리 칩들을 지원할 수 있다.
도 9는 다수의 전력 도메인들을 갖는 도 8의 SSD 컨트롤러(810)를 도시한다. 도 9에서, SSD 컨트롤러(810)는 2개의 전력 도메인들을 포함하는 것으로 도시된다. 전력 도메인(905)은 "항상 On" 전력 도메인이다. 즉, 도 3의 SSD(125-1)가 활성전력모드 상태인지 또는 저전력모드 상태인지에 관계없이(또는, 2개 이상의 전력모드가 사용되는 경우에 임의의 다른 전력모드인지에 관계없이), 도 3의 SSD(125-1)는 "항상 On" 전력 도메인의 회로가 기능하기에 충분한 전력을 얻는다(draw). "항상 On" 전력 도메인(905)은 I2C(Inter-Integrated Circuit) 관리 버스를 구현하는데 사용될 수 있으며, 이 또한 항상 On이다.
"항상 On" 전력 도메인(905)에 비해, SSD 컨트롤러(810)는 "가끔 On 전력 도메인(910)을 포함할 수도 있다. "가끔 On" 전력 도메인(905)은 저장장치가 저전력모드(그리고, 2개 이상의 전력모드가 지원되는 경우에 잠재적으로 다른 모드들) 상태인 경우에 동작하지 않을 수 있는 전력 도메인을 나타낸다.
"항상 On" 전력 도메인은 이더넷 연결부(915)를 포함할 수 있다. 이더넷 연결부(915)는 SSD가 기계(105) 내부 및 외부의 다른 구성요소들과 통신(이더넷을 통해)할 수 있도록 한다. 도 3의 SSD(125-1)가 도 3의 BMC(310)로부터의 신호를 "Wake up(활성)"으로 수신할 수 있기 때문에, 이더넷 연결부(915)는 도 3의 SSD(12501)의 전력모드에 관계없이 동작되어야 한다. 따라서, 이는 "항상 On" 전력 도메인(905)에 위치한다. FTL(825) 및 데이터 칩들로부터의 데이터를 읽고 기록하는 회로와 같은 다른 구성요소들은 도 3의 SSD(125-1)가 활성전력모드인 상태일 때만, 그리고 "가끔 On" 전력 도메인(910)에 위치할 수 있을 때 필요하다.
"가끔 On" 전력 도메인(910) 내의 회로에 도달하기 전에 도 3의 저장장치(125-1) 외부로부터 모든 트래픽이 "항상 On" 전력 도메인(905) 내의 회로를 통해 이동하기 때문에, 주 데이터경로(920)는 도 3의 저장장치(125-1)에 의해 처리되도록 "가끔 On" 전력 도메인(910)으로 요청들은 전달한다.
"항상 On" 전력 도메인(905)의 이점은 도 3의 저장장치(125-1)가 관리명령에 응답할 수 있다는 점이다. 예를 들면, 도 1의 프로세서(110) 또는 도 3의 BMC(310)는 도 3의 저장장치(125-1)에 질문(query)을 전송하여 성능 확인(health check)을 수행할 수 있다. 이러한 질문은 이더넷 연결부(915)를 거치지 않고, SMBus(System Management Bus)와 같은 아웃오브밴드 연결을 통해 전달될 수 있다. 이러한 질문이 도 8의 데이터 칩들(815-1 내지 815-8)로부터 데이터의 접근을 요구하지 않기 때문에, 도 3의 저장장치(125-1)는 응답하기 위한 활성전력모드일 필요가 없다. 대신에, "항상 On" 전력 도메인(905) 내의 회로는 질문을 처리하고 저전력모드에서 변경되지 않고 관리명령에 응답할 수 있다.
본 발명의 일부 실시예들에 있어서, "항상 On" 전력 도메인(905)은 킵 얼라이브 로직(715)을 포함할 수도 있다. SSD 컨트롤러(810)에 포함되는 경우의 킵 얼라이브 로직(715)은 도 7의 BMC(310)에 포함되는 경우의 킵 얼라이브 로직(715)과 유사하게 동작한다. 저전력모드 상태일 때에도 킵 얼라이브 로직(715)은 도 1의 원격프로세서(145)로부터의 도 3의 킵 얼라이브 메시지(305)에 응답할 수 있다. "항상 On" 전력 도메인(905)이 항상 활성화되기 때문에, 킵 얼라이브 로직(715)은 도 3의 저장장치(125-1)가 저전력모드 상태일 때에도 활성화된다. 따라서, "항상 On" 전력 도메인(905)에 킵 얼라이브 로직(705)을 포함시킴으로써, 도 3의 저장장치(125-1)는 저전력모드 상태일 때에도 도 3의 킵 얼라이브 메시지(305)에 응답할 수 있으므로, 도 3의 저장장치(125-1) 대신에 도 3의 킵 얼라이브 메시지(305)를 처리하기 위한 도 3의 BMC(310)의 필요성을 제거할 수 있다. 도 3의 킵 얼라이브 메시지(305)에 응답할 때 킵 얼라이브 로직(715)이 도 3의 저장장치(125-1)의 프로토콜 상태를 포함할 수 있도록, 도 3의 저장장치(125-1)가 저전력모드로 들어가기 전에, "가끔 On" 전력 도메인(910) 내의 회로는 프로토콜 상태(925)를 킵 얼라이브 로직(715)에 전송할 수 있다.
본 발명의 일부 실시예들에 있어서, "항상 On" 전력 도메인(905)은 관리 인터페이스(930)를 포함할 수도 있다. 관리 인터페이스(930)는 관리 기능에 접근하기 위해 도 3의 저장장치(125-1)에 인터페이스를 제공한다. 이와 관련하여, "관리 기능"이라는 용어는 저장장치(125-1)에 저장된 데이터를 포함하는 동작보다는, 저장장치(125-1)에 의해 제공되는 저장장치(125-1)의 관리에 관한 기능을 의미하도록 의도된다. 관리 기능의 예시들에는 도 1의 프로세서(110)로부터의 성능(health) 질의, 도 3의 킵 얼라이브 메시지(305), 도 3의 저장장치(125-1)에 대한 사용 가능 용량에 관한 질의 또는 소모되어 실패할 것으로 예상되는 셀에 도 3의 저장장치(125-1)가 얼마나 가까운지(SSD와 같은 일부 저장장치들은 셀이 오작동하기 전에 셀들이 기록될 수 있는 횟수에 비교적 예상 가능한 한계를 가짐) 등을 포함할 수 있다. 관리 인터페이스(930)는 임의로 원하는 버스를 통해 접근될 수 있다. 즉, SMBus 및 I2C 버스들은 도 3의 저장장치(125-1)의 관리 기능들에 접근하는데 사용되는 경우가 있다.
도 10a 및 도 10b는 본 발명의 일 실시예에 따른 도 1의 원격프로세서(145)로부터 킵 얼라이브 메시지들(305)에 응답하기 위해 도 3의 BMC(310)에 대한 예시적인 절차의 흐름도를 도시한다. 도 10a의 블록 1005에서, 도 3의 스위치(315) 및 도 3의 BMC(310)는 도 3의 저장장치(125-1)가 저전력모드에 들어갈 수 있는지 여부에 따라 처리할 수 있다. 블록 1005는 특정 저장장치가 저전력모드에 들어갈 수 있다는 임의의 동일한 결정으로 블록 1005가 대체될 수 있음을 이해해야 한다. 예를 들면, 도 3의 저장장치(125-1)는 이 저장장치 또는 2차 저장장치(예: 도 3의 저장장치(125-2))가 저전력모드에 들어갈 수 있다는 것을 결정할 수 있다. 블록 1010에서, 도 3의 BMC(310)는 저장장치(125-1)가 저전력모드에 들어가도록 지시할 수 있다. 블록 1015에서, BMC(310)는 도 3의 저장장치(125-1)가 저전력모드로 들어갔다는 메시지를 도 3의 저장장치(125-1)로부터 수신될 수 있다. 블록 1020에서, 도 3의 BMC(310)는 PDB가 도 3의 저장장치(125-1)의 전력을 감소시킬 것을 지시할 수 있다.
도 10b의 블록 1025에서, 도 3의 BMC(310)는 도 3의 BMC(310) 대신에 도 3의 저장장치(125-1)를 위한 송신을 라우팅하도록 도 3의 스위치(315)를 재프로그래밍할 수 있다. 블록 1030에서, BMC(310)는 도 1의 원격프로세서(145)로부터 도 3의 킵 얼라이브 메시지(305)를 수신할 수 있다. 블록 1035에서, BMC(310)는 도 3의 저장장치(125-1) 대신에 도 1의 원격프로세서(145)로 도 5의 킵 얼라이브 응답(505)을 전송할 수 있다. 도 10b의 점선 1005에 의해 나타난 바와 같이, BMC(310)는 도 3의 다수의 킵 얼라이브 메시지들(305)에 필요한 블록 1030 및 블록 1035를 반복할 수 있다. 블록 1040에서, BMC(310)는 도 3의 저장장치(125-1)가 활성전력모드에 들어갔다는 것을 도 3의 저장장치(125-1)로부터 수신할 수 있다. 블록 1045에서, BMC(310)는 도 3의 BMC(310)로 도 3의 저장장치(125-1)를 위한 송신이 더 이상 전송되지 않고, 도 3의 저장장치(125-1)로 이들 송신이 전달되도록 도 3의 스위치(315)를 재프로그래밍할 수 있다.
도 11은 본 발명의 일 실시예에 따라 활성전력모드 상태인 도 1의 저장장치(125)에 대한 도 1의 원격프로세서(145)로부터의 도 3의 킵 얼라이브 메시지(305)에 응답하기 위한 도 3의 BMC(310)의 예시적인 절차의 흐름도를 도시한다. 도 11의 블록 1105에서, 도 3의 BMC(310)는 도 3의 저장장치(125-1)의 프로토콜 상태를 수신할 수 있다. 점선 1110에 의해 나타낸 바와 같이, 블록 1105는 도 3의 저장장치(125-1)의 프로토콜 상태가 필요하지 않은 경우에 생략될 수 있다. 블록 1115에서, 도 3의 BMC(310)는 도 1의 원격프로세서(145)로부터 도 3의 킵 얼라이브 메시지(305)를 수신할 수 있다. 블록 1120에서, 도 3의 BMC(310)는 도 5의 킵 얼라이브 응답(505)을 도 1의 원격프로세서(145)에 전송할 수 있다. 즉, 도 5의 킵 얼라이브 응답(505)은 도 3의 저장장치(125-1)의 프로토콜 상태를 포함할 수 있다.
도 12a 내지 도 12c는 본 발명의 일 실시예에 따른 도 3의 캐시(330)를 사용하여 도 1의 저장장치(125) 대신에 도 1의 원격프로세서(145)로부터 도 6의 데이터 요청(605)에 응답하기 위한 도 3의 BMC(310)의 예시적인 절차의 흐름도를 도시한다. 도 12a 내지 도 12c에서, 도 3의 저장장치(125-1)는 저전력모드 상태인 것으로 가정한다. 도 3의 저장장치(125-1)가 활성전력모드 상태인 경우, 도 3의 저장장치(125-1)는 도 3의 BMC(310)가 가담할 필요 없이 도 6의 데이터 요청(605)에 응답할 수 있다. 도 12a의 블록 1205에서, 도 3의 BMC(310)는 도 1의 원격프로세서(145)로부터 도 6의 데이터 요청(605)을 수신할 수 있다. 블록 1210에서, 도 3의 BMC(310)는 도 6의 데이터 요청(605)이 읽기 요청인지 또는 기록 요청인지 결정할 수 있다.
도 6의 데이터 요청(605)이 읽기 요청인 경우, 도 12b의 블록 1215에서, 도 3의 BMC(310)는 요청된 데이터가 도 3의 캐시(330)에 존재하는지 여부를 결정할 수 있다. 요청된 데이터가 도 3의 캐시(330)에 존재하는 경우, 블록 1220에서 도 3의 BMC(310)는 도 3의 캐시(330)로부터 요청된 데이터를 읽을 수 있으며, 블록 1225에서 도 3의 BMC(310)는 도 3의 저장장치를 활성전력모드로 전환시키지 않고 도 3의 저장장치(125-1) 대신에 도 1의 원격프로세서(145)에 요청된 데이터를 포함하는 도 6의 데이터 응답(610)을 전송할 수 있다. 이와 달리, 요청된 데이터가 도 3의 캐시(330)에 존재하지 않는 경우, 블록 1230에서 도 3의 BMC(310)는 도 6의 데이터 요청(605)에 응답하기 위해 도 6의 데이터 요청(605)을 도 3의 저장장치(125-1)에 전송할 수 있다. 이는 활성 상태로 전환된 도3의 저장장치(125-1)를 포함할 수 있다(그 결과, 도 3의 BMC(310)는 도 10b의 블록 1040 및 블록 1045를 수행함).
반면에, 도 6의 데이터 요청(605)이 기록 요청인 경우, 도 12c의 블록 1235에서 도 3의 BMC(310)는 도 3의 캐시(330)에 데이터를 저장할 수 있다. 그 후에, 도 3의 캐시(330)가 후기록 캐시로서 사용되는 경우, 블록 1240에서 도 3의 BMC(310)는 도 3의 저장장치(125-1) 대신에 도 1의 원격프로세서(145)로 다시 도 6의 데이터 응답(610)을 전송할 수 있다. 그 후에, 도 3의 저장장치(125-1)가 활성전력모드로 전환되면, 블록 1245에서 도 3의 BMC(310)는 기록 요청을 완료하기 위해 도 3의 저장장치(125-1)에 데이터를 전송할 수 있다.
반면에, 도 3의 캐시(330)가 동시기록 캐시로서 사용되는 경우, 블록 1250에서 도 3의 BMC(310)는 기록 요청에 응답하기 위해 도 3의 저장장치(125-1)로 기록 요청을 전송할 수 있다. 이는 활성 상태로 전환된 도 3의 저장장치(125-1)를 포함할 수 있다(그 결과, 도 3의 BMC(310)는 도 10b의 블록 1040 및 블록 1045를 수행함). 도 3의 캐시(330)가 존재하지 않는 경우, 점선 1160에 나타난 바와 같이 블록 1235는 생략되고 블록 1255가 계속 처리할 수 있다는 점을 이해해야 한다(도 3의 캐시(330)가 존재하지 않는 경우, 블록 1240 및 블록 1245가 도 3의 캐시(330)의 존재에 종속하기 때문에 이들은 수행되지 않을 수 있음).
도 13은 본 발명의 일 실시형태에 따라 활성 전력 도메인을 사용하여 관리명령에 응답하기 위한 도 1의 저장장치(125)의 예시적인 절차의 흐름도를 도시한다. 도 13의 블록 1305에서, 도 3의 저장장치(125-1)는 저전력모드 상태일 수 있고 관리명령을 수신할 수 있다. 예를 들면, 이러한 관리명령은 성능(health) 체크 또는 도 3의 킵 얼라이브 메시지(305)일 수 있다는 것을 이해해야 한다(도 3의 저장장치(125-1)가 도 9의 킵 얼라이브 로직(715)을 포함하는 경우). 블록 1310에서, 도 3의 저장장치(125-1)는 도 3의 저장장치(125-1)가 저전력모드 상태라 하더라도 활성 전력 도메인 내의 관리명령을 처리할 수 있다.
도 10a 내지 도 13에 본 발명의 일부 실시예들이 도시되었지만, 당업자는 블록들의 순서를 변경, 블록들을 생략 또는 도면에 도시되지 않은 링크들을 포함함으로써 본 발명의 다른 실시예들 또한 가능하다는 것을 인지할 것이다. 흐름도들의 이러한 모든 변경예는 명백한 설명 여부와 관계없이 본 발명의 실시예들로 간주될 수 있다.
본 발명의 실시예들은 종래 기술을 뛰어넘는 기술적 이점들을 제공한다. 킵 얼라이브 메시지에 응답하기 위해 저장장치 자체 이외에 BMC와 같은 구성요소를 사용하면, 저장장치는 저전력모드로 들어갈 수 있으며 시스템의 전력소비를 줄일 수 있다. 예를 들면, 24개의 저장장치들을 갖는 시스템에 있어서, 이들 중 12개의 저장장치는 다른 12개의 저장장치의 미러이다. 저장장치는 활성전력모드일 때 25W를 소비하지만 저전력모드일 때는 단지 3.3W만 소비하는 경우에, 미러 장치를 저전력모드로 전환하면 상당한 전력 절약인 12*(25-3.3)=260.4W를 절약할 수 있다.
본 발명의 실시예들은 킵 얼라이브 메시지들에 응답하는 본연의 기능을 갖지 않은 저장장치들 대신에 BMC 또는 다른 구성요소들이 킵 얼라이브 메시지들에 응답할 수 있도록 한다. 이러한 구성은 저장장치들이 여전히 있는지 확인하는데 킵 얼라이브 메시지가 사용되는 RDAS 시스템에서 본연의 킵 얼라이브 응답 기능을 갖지 않은 저장장치들이 사용될 수 있도록 한다. 또한, 이러한 구성은 킵 얼라이브 메시지들에 응답하는 것을 심지어 본연의 킵 얼라이브 응답 기능을 갖는 저장장치들에 분담하는데 사용될 수 있다.
본 발명의 실시예들은 BMC 또는 다른 구성요소가 원격프로세서로부터의 데이터 요청들에 응답하는데 캐시를 사용하도록 할 수 있다. 데이터 요청들(읽기 요청들 또는 기록 요청들)에 응답하는데 캐시를 사용함으로써, 저전력모드 상태인 저장장치들은 상기 데이터 요청을 처리하는데 있어서 활성전력모드로 전환되기 보다는 저전력모드로 장기간 유지될 수 있다.
이하의 설명은 본 발명의 특정 태양이 구현될 수 있는 적절한 기계 또는 기계들에 대한 짧고 일반적인 설명을 제공하기 위함이다. 기계 또는 기계들은 키보드, 마우스 등과 같은 종래 인풋장치로부터의 인풋뿐만 아니라, 다른 기계로부터 수신된 지시, 가상현실(VR) 환경, 바이오메트릭 피드백 또는 다른 인풋신호와의 상호작용에 의해 적어도 부분적으로 제어될 수 있다. 본 명세서에 사용된 바와 같이, "기계"라는 용어는 단일 기계, 가상 기계, 또는 통신 가능하게 결합된 기계들, 가상 기계들 또는 함께 동작하는 장치들의 시스템을 폭넓게 포함하는 것으로 의도된다. 기계들의 예시로는 개인 컴퓨터와 같은 컴퓨팅 장치, 워크스테이션, 서버, 휴대용 컴퓨터, 핸드헬드 장치, 휴대폰, 태플릿 등 이외에도 예를 들면 자동차, 기차, 택시 등의 개인 교통수단 또는 대중교통과 같은 교통수단을 포함할 수 있다.
기계 또는 기계들은 프로그래밍 가능하거나 프로그래밍 가능하지 않은 로직 장치들 또는 어레이들과 같은 내장형 컨트롤러들, ASICs(Application Specific Integrated Circuits), 내장형 컴퓨터, 스마트 카드, 등을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀 또는 다른 통신결합 등을 통해 하나 이상의 원격 기계들 당 하나 이상의 연결을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN, WAN등과 같은 물리적 및/또는 논리적 네트워크에 의한 방식으로 상호 연결될 수 있다. 당업자는 무선주파수(RF: Radio Frequency), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스®, 광, 적외선, 케이블, 레이저 등을 포함하는 다양한 무선 및/또는 유선 단거리 또는 장거리 캐리어 및 프로토콜을 활용할 수 있다.
기계에 의해 접근될 때에 작업들을 수행하게 되거나 추상적인 데이터 유형 또는 저레벨의 하드웨어 컨텍스트를 규정하게 되는 기능들, 절차들, 데이터 구조들, 응용프로그램들을 포함하는 관련 데이터와 함께 또는 참조하여 본 발명의 실시예들이 설명될 수 있다. 예를 들면, 관련 데이터는 휘발성 메모리 및/또는 비휘발성 메모리(예: RAM, ROM 등) 또는 하드드라이브, 플로피디스크, 광 기억장치, 테이프, 플래시 메모리, 메모리 스틱, DVD, 생물학적 기억매체 등을 포함하는 다른 저장장치 및 이들의 관련 저장매체에 저장될 수 있다. 관련 데이터는 패킷, 시리얼 데이터, 병렬 데이터, 전파신호 등의 형태로 물리적 및/또는 논리적 네트워크를 포함하는 송신 환경을 통해 전달될 수 있고, 압축 포멧 또는 암호화된 포멧에 사용될 수 있다. 관련 데이터는 광범위한 환경에서 사용될 수 있으며, 기계 접근을 위해 국부 및/또는 원격으로 저장될 수 있다.
본 발명의 실시예들은 하나 이상의 프로세서들에 의해 실행 가능한 명령들을 포함하는 유형의, 비일시적 기계 판독형 매체를 포함할 수 있으며, 상기 명령들에는 본 명세서에 기재된 본 발명의 요소들을 수행하기 위한 명령들이 포함된다.
상술한 다양한 방법 동작들은 다양한 하드웨어 및/또는 소프트웨어, 구성요소(들), 회로들 및/또는 모듈(들) 등의 동작을 수행할 수 있는 임의의 적합한 수단들에 의해 수행될 수 있다. 소프트웨어는 논리적 기능들을 구현하기 위한 실행 가능한 명령들의 순서 리스트를 포함할 수 있고, 싱글 또는 멀티 코어 프로세서, 또는 프로세서가 내장된 시스템 등의 명령 실행 시스템, 기구 또는 장치에 의해 또는 함께 사용되기 위한 임의의 "프로세서 판독형 매체"에 내장될 수 있다.
본 명세서에 개시된 실시예들과 함께 기재된 방법 또는 알고리즘 및 기능의 블록들 및 단계들은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈 또는 이 둘의 조합으로 직접 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 유형의, 비일시적인 컴퓨터 판독형 매체 상의 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수 있다. 소프트웨어 모듈은 RAM, 플래시 메모리, ROM, EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드디스크, 분리성 디스크(RD: Removable Disk), CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 저장매체에 속할 수 있다.
도시된 실시예들에 관하여 본 발명의 원리들을 기재하고 도시하였지만, 도시된 실시예들이 이러한 원리들에서 벗어나지 않은 배열 및 세부사항으로 변경될 수 있다는 점과 임의로 원하는 방식으로 조합될 수 있다는 점은 이해될 것이다. 그리고, 전술한 설명이 특정 실시예들에 초점을 두고 있지만, 다른 구성들도 고려된다. 특히, "본 발명의 일 실시예에 따라서"라는 문구 등의 표현들이 본 명세서에 사용되더라도, 이들 문구는 일반적으로 실시예의 가능성을 참조하기 위함이며, 본 발명을 특정 실시예의 구성들로 한정하려는 의도는 아니다. 본 명세서에 사용된 바와 같이, 이러한 용어들은 다른 실시예들과 조합될 수 있는 동일하거나 다른 실시예들을 참조할 수 있다.
전술한 예시적인 실시예들은 본 발명을 한정하는 것으로 해석되어서는 안 된다. 일부 실시예들이 기재되었지만, 당업자는 실질적으로 본 개시의 신규한 교시 및 이점에서 벗어나지 않는 이러한 실시예들에 대해 다수의 변경예들이 가능하다는 점을 쉽게 이해할 수 있다. 따라서, 이러한 모든 변경예들은 청구범위에 규정된 본 발명의 범위 내에 포함되도록 의도된다.
본 발명의 실시예들은 이하의 실시예들까지 무한정 확장될 수 있다.
1. 섀시, 상기 섀시 내의 프로세서, 저장장치 내의 스위치 및 상기 섀시 내의 적어도 하나의 저장장치로 포함하는 시스템을 포함하는 본 발명의 일 실시예로서, 상기 적어도 하나의 저장장치는 상기 스위치를 사용하여 상기 섀시 내에 위치하지 않은 원격프로세서와 통신하며, 상기 적어도 하나의 저장장치는 활성전력모드 및 저전력모드를 지원하고, 상기 원격프로세서로부터 상기 적어도 하나의 저장장치로 전송된 킵 얼라이브(KA) 메시지에 대한 응답은 상기 적어도 하나의 저장장치가 상기 저전력모드 상태인 경우에 상기 적어도 하나의 저장장치 대신에 상기 원격프로세서로 전송될 수 있는, 시스템을 포함하는 본 발명의 일 실시예.
2. 실시예 1에 있어서, 상기 적어도 하나의 저장장치는 NVMe-oF SSD(Non-Volatile Memory express over Fabrics Solid State Drive)를 포함하는, 시스템을 포함하는 본 발명의 일 실시예.
3. 실시예 2에 있어서, 상기 킵 얼라이브 메시지에 대한 상기 응답은 상기 프로세서, 상기 스위치 및 BMC(Baseboard Management Controller) 중 하나에 의해 전송될 수 있는, 시스템을 포함하는 본 발명의 일 실시예.
4. 실시예 2에 있어서, BMC는 상기 저전력모드 상태인 상기 적어도 하나의 NVMe-oF SSD에 제시된 명령을 상기 BMC로 재지시하도록 상기 스위치를 재프로그래밍할 수 있는, 시스템을 포함하는 본 발명의 일 실시예.
5. 실시예 4에 있어서, 상기 적어도 하나의 NVMe-oF SSD는 상기 적어도 하나의 NVMe-oF SSD가 저전력모드로 들어가는 경우에 상기 BMC에게 알려주도록 작동되는, 시스템을 포함하는 본 발명의 일 실시예.
6. 실시예 5에 있어서, 상기 BMC는 상기 NVMe-oF SSD가 저전력모드로 들어가는 경우에 상기 BMC에게 알려주는 상기 적어도 하나의 NVMe-oF SSD에 대해 상기 적어도 하나의 NVMe-oF SSD에 제시된 명령들을 상기 BMC로 재지시하도록 상기 스위치를 재프로그래밍하기 위해 작동되는, 시스템을 포함하는 본 발명의 일 실시예.
7. 실시예 5에 있어서, 상기 BMC는 적어도 하나의 NVMe-oF SSD가 저전력모드로 들어가도록 지시하기 위해, 그리고 PDB(Power Distribution Board)가 상기 적어도 하나의 NVMe-oF SSD에 전송될 전력을 감소시키도록 지시하기 위해 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
8. 실시예 5에 있어서, 상기 적어도 하나의 NVMe-oF SSD는 상기 적어도 하나의 NVMe-oF SSD가 상기 저전력모드로 들어가는 경우에 상기 적어도 하나의 NVMe-oF의 프로토콜 상태를 상기 BMC에게 알려주도록 추가 동작되고, 상기 BMC는 상기 킵 얼라이브 메시지에 대한 상기 적어도 하나의 NVMe-oF의 상기 프로토콜 상태를 포함하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
9. 실시예 5에 있어서, 상기 스위치 및 상기 BMC는 상기 BMC가 상기 적어도 하나의 NVMe-oF SSD 대신에 상기 킵 얼라이브 메시지를 처리하도록 동작되고, 상기 스위치는 상기 킵 얼라이브 메시지를 상기 적어도 하나의 NVMe-oF SSD로부터 상기 BMC로 재지시하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
10. 실시예 9에 있어서, 상기 스위치 및 상기 BMC는 상기 스위치에 의해 결정된 상기 적어도 하나의 NVMe-oF SSD에 대한 활성 레벨을 적어도 부분적으로 기초하여, 상기 BMC가 상기 적어도 하나의 NVMe-oF SSD 대신에 상기 킵 얼라이브 메시지를 처리하도록 추가 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
11. 실시예 4에 있어서, 상기 BMC는 캐시를 포함하는, 시스템을 포함하는 본 발명의 일 실시예.
12. 실시예 11에 있어서, 상기 BMC는 상기 캐시에 존재하는 읽기 요청에 요청된 데이터를 적어도 부분적으로 기초하여, 상기 적어도 하나의 NVMe-oF SSD가 상기 활성전력모드에 들어가지 않고, 상기 적어도 하나의 NVMe-oF SSD 대신에 상기 적어도 하나의 NVMe-oF SSD로 상기 원격프로세서에 의해 전송된 상기 읽기 요청에 응답하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
13. 실시예 11에 있어서, 상기 BMC는 상기 적어도 하나의 NVMe-oF SSD가 활성전력모드에 들어가지 않고, 상기 적어도 하나의 NVMe-oF SSD 대신에 상기 적어도 하나의 NVMe-oF로 상기 원격프로세서에 의해 전송된 기록 요청에 응답하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
14. 실시예 13에 있어서, 상기 BMC는 상기 기록 요청에 전송된 기록 데이터를 캐시에 저장하도록, 그리고 상기 NVMe-oF SSD가 활성전력모드로 들어가는 경우에 상기 적어도 하나의NVMe-oF SSD로 상기 기록 데이터를 전송하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
15. 실시예 4에 있어서, 상기 BMC는 상기 활성전력모드 상태의 상기 적어도 하나의NVMe-oF SSD에 제시된 명령들을 상기 적어도 하나의 NVMe-oF SSD로 지시하도록 상기 스위치를 재프로그래밍할 수 있는, 시스템을 포함하는 본 발명의 일 실시예.
16. 실시예 2에 있어서, 상기 프로세서, 상기 스위치 및 BMC 중 하나는 상기 적어도 하나의 NVMe-oF SSD가 활성전력모드 상태인 경우에 상기 원격프로세서로부터 상기 적어도 하나의 NVMe-oF SSD로 전송된 제 2 킵 얼라이브 메시지에 응답할 수 있는, 시스템을 포함하는 본 발명의 일 실시예.
17. 실시예 16에 있어서, 상기 적어도 하나의 NVMe-oF SSD는 제 2 킵 얼라이브 메시지에 응답하도록 동작되지 않는, 시스템을 포함하는 본 발명의 일 실시예.
18. 실시예 16에 있어서, 상기 적어도 하나의 NVMe-oF SSD는 상기 적어도 하나의 NVMe-oF SSD의 프로토콜 상태를 상기 프로세서, 상기 스위치 및 상기 BMC 중 하나에 알리도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
19. 실시예 2에 있어서, BMC는 상기 적어도 하나의 NVMe-oF SSD가 저전력모드 상태인 경우에 상기 적어도 하나의 NVMe-oF SSD가 상기 활성전력모드로 들어가지 않고 상기 적어도 하나의 NVMe-oF SSD로 관리명령을 전송하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
20. 실시예 19에 있어서, 상기 BMC는 아웃오브밴드 메커니즘을 사용하여 상기 적어도 하나의 NVMe-oF SSD로 관리명령들을 전송하도록 동작되는, 시스템을 포함하는 본 발명의 일 실시예.
21. 실시예 20에 있어서, 상기 아웃오브밴드 메커니즘은 SMBus(System Management Bus)를 포함하는, 시스템을 포함하는 본 발명의 일 실시예.
22. 실시예 19에 있어서, 상기 적어도 하나의 NVMe-oF SSD는 심지어 상기 적어도 하나의 NVMe-oF SSD가 상기 저전력모드 상태인 경우에도 활성화되는 전력 도메인을 포함하는, 시스템을 포함하는 본 발명의 일 실시예.
23. 실시예 2에 있어서, 상기 킵 얼라이브 메시지에 대한 응답은 상기 적어도 하나의 NVMe-oF SSD가 상기 저전력모드 상태인 동안에 상기 적어도 하나의 NVMe-oF SSD에 의해 전송될 수 있는, 시스템을 포함하는 본 발명의 일 실시예.
24. 실시예 23에 있어서, 상기 적어도 하나의 NVMe-oF SSD는 심지어 상기 적어도 하나의 NVMe-oF SSD가 저전력모드 상태인 경우에도 활성화되는 킵 얼라이브 로직 회로를 포함하는, 시스템을 포함하는 본 발명의 일 실시예.
25. 저장장치를 위한 킵 얼라이브(KA) 메시지를 원격프로세서로부터 수신하기 위한 수신기, 상기 킵 얼라이브 메시지에 대한 킵 얼라이브 응답을 생성하기 위한 킵 얼라이브 로직, 및 상기 저장장치 대신에 상기 킵 얼라이브 응답을 상기 원격프로세서로 전송하기 위한 송신기를 포함하는, 장치를 포함하는 본 발명의 일 실시예.
26. 실시예 25에 있어서, 상기 장치는 프로세서와 BMC를 포함하는 일 세트로부터 얻어지는, 장치를 포함하는 본 발명의 일 실시예.
27. 실시예 25에 있어서, 상기 저장장치는 NVMe-oF SSD(Non-Volatile Memory express over Fabrics Solid State Drive)를 포함하는, 장치를 포함하는 본 발명의 일 실시예.
28. 실시예 27에 있어서, 상기 NVMe-oF SSD의 상태에 관한 정보를 저장하는 장치 상태 표를 더 포함하는, 장치를 포함하는 본 발명의 일 실시예.
29. 실시예 28에 있어서, 상기 장치 상태 표는 복수의 NVMe-oF SSDs의 상태들에 관한 정보를 저장하도록 동작되는, 장치를 포함하는 본 발명의 일 실시예.
30. 실시예 28에 있어서, 상기 장치 상태 표는 상기 NVMe-oF SSD의 프로토콜 상태를 저장하도록 동작되는, 장치를 포함하는 본 발명의 일 실시예.
31. 실시예 30에 있어서, 상기 킵 얼라이브 로직은 상기 장치 상태 표에 저장된 프로토콜 상태에 응답하는 상기 킵 얼라이브 메시지에 대한 상기 킵 얼라이브 응답을 생성하도록 동작되는, 장치를 포함하는 본 발명의 일 실시예.
32. 실시예 27에 있어서, 상기 수신기는 스위치를 통해 상기 원격프로세서로부터 상기 킵 얼라이브 메시지를 수신하도록 동작되는, 장치를 포함하는 본 발명의 일 실시예.
33. 실시예 32에 있어서, 상기 NVMe-oF SSD를 위해 상기 원격프로세서로부터 상기 장치로 상기 킵 얼라이브 메시지를 라우팅하기 위한 라우팅 표를 스위치가 변경하도록 지시하는 스위치 프로그래밍 로직을 더 포함하는, 장치를 포함하는 본 발명의 일 실시예.
34. 실시예 27에 있어서, 캐시를 더 포함하는, 장치를 포함하는 본 발명의 일 실시예.
35. 실시예 34에 있어서, 상기 수신기는 상기 NVMe-oF SSD가 저전력모드 상태인 경우에 상기 NVMe-oF SSD를 위한 상기 원격프로세서로부터 읽기 요청을 수신하도록 동작되고, 상기 장치는 상기 캐시에 존재하는 상기 읽기 요청에 요청된 데이터를 적어도 부분적으로 기초하여, 상기 NVMe-oF SSD가 활성전력모드로 들어가지 않고, 상기 NVMe-oF SSD 대신에 상기 NVMe-oF SSD를 위해 그리고 상기 원격프로세서에 의해 전송된 상기 읽기 요청에 대한 데이터 응답을 생성하도록 동작되는 데이터 처리 로직을 더 포함하고, 상기 송신기는 상기 NVMe-oF SSD 대신에 상기 원격프로세서에 대한 상기 데이터 응답을 전송하도록 동작되는, 장치를 포함하는 본 발명의 일 실시예.
36. 실시예 34에 있어서, 상기 수신기는 상기 NVMe-oF SSD가 저전력모드 상태인 경우에 상기 NVMe-oF SSD를 위해 상기 원격프로세서로부터 기록 요청을 수신하도록 동작되고, 상기 장치는 상기 캐시를 사용하여 상기 NVMe-oF SSD가 활성전력모드로 들어가지 않고, 상기 NVMe-oF SSD 대신에, 상기 NVMe-oF SSD를 위해 그리고 원격프로세서로부터 전송된 상기 기록 요청에 대한 데이터 응답을 생성하도록 동작되는 데이터 처리 로직을 더 포함하고, 상기 송신기는 상기 NVMe-oF SSD 대신에 상기 원격프로세서에 대한 상기 데이터 응답을 전송하도록 동작되는, 장치를 포함하는 본 발명의 일 실시예.
37. 데이터를 위한 스토리지, 데이터 요청들 및 관리명령들을 포함하는 명령들을 프로세서로부터 수신하기 위한 호스트 인터페이스 로직, 및 관리명령들을 처리하기 위한 "항상 ON" 전력 도메인 및 상기 데이터 요청들을 처리하기 위한 "가끔 ON" 전력 도메인을 포함하고 상기 명령들을 처리하기 위한 SSD 컨트롤러를 포함하는, NVMe-oF SSD(Non-Volatile Memory over Fabrics Solid State Drive)를 포함하는 본 발명의 일 실시예.
38. 실시예 37에 있어서, 상기 "항상 ON" 전력 도메인은 상기 NVMe-oF SSD를 프로세서와 연결시키는 이더넷 연결부, 및 심지어 상기 NVMe-oF SSD가 저전력모드 상태인 경우에도 킵 얼라이브 메시지에 대한 킵 얼라이브 응답을 생성하도록 동작되는 킵 얼라이브 로직을 포함하는, NVMe-oF SSD를 포함하는 본 발명의 일 실시예.
39. 실시예 38에 있어서, 상기 "항상 ON" 전력 도메인은 상기 킵 얼라이브 메시지와 다른 관리명령들에 응답하기 위한 관리 인터페이스를 더 포함하는, NVMe-oF SSD를 포함하는 본 발명의 일 실시예.
40. 실시예 39에 있어서, 상기 관리 인터페이스는 I2C(Inter-Integrated Circuit) 버스 및 SMBus를 포함하는 일 세트로부터 얻어지는 버스에 연결되는, NVMe-oF SSD를 포함하는 본 발명의 일 실시예.
41. 원격프로세서로부터 저전력모드 상태의 저장장치로 전송된 킵 얼라이브(KA) 메시지를 수신하는 단계, 및 상기 저장장치 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
42. 실시예 41에 있어서, 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 저장장치로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 상기 원격프로세서로부터 상기 저전력모드 상태의 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고, 상기 저장장치 대신에 상기 원격프로세서로 상기 KA메시지에 대한 응답을 전송하는 단계는, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 상기 응답을 전송하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
43. 실시예 42에 있어서, 상기 원격프로세서로부터 상기 저전력모드 상태의 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 상기 NVMe-oF SSD와 다른 구성요소에서 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계는, 상기 NVMe-oF SSD를 대신한 상기 구성요소로부터 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는 방법을 포함하는 본 발명의 일 실시예로서, 상기 구성요소는 프로세서, BMC 및 스위치를 포함하는 일 세트로부터 얻어지는, 방법을 포함하는 본 발명의 일 실시예.
44. 실시예 43에 있어서, 상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하기 위해, 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
45. 실시예 44에 있어서, 상기 NVMe-oF SSD가 상기 저전력모드로 들어간다는 메시지를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
46. 실시예 45에 있어서, 상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하기 위해, 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계는, 상기 NVMe-oF SSD가 상기 저전력모드로 들어간다는 메시지를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하는 단계에 대응되는 상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하기 위해, 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
47. 실시예 45에 있어서, 상기 NVMe-oF SSD가 상기 저전력모드로 들어가도록 지시하는 단계, 및 PDB가 상기 NVMe-oF SSD에 전송된 전력을 감소시키도록 지시하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
48. 실시예 45에 있어서, 상기 NVMe-oF SSD가 상기 저전력모드로 들어간다는 메시지를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하는 단계는, 상기 NVMe-oF SSD의 프로토콜 상태를 수신하는 단계를 포함하고, 상기 킵 얼라이브 메시지에 대한 응답은 상기 NVMe-oF SSD의 프로토콜 상태를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
49. 실시예 44에 있어서, 상기 NVMe-oF SSD가 활성전력모드로 들어가는 것에 대하여 상기 NVMe-oF SSD에 명령들을 지시하기 위해, 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
50. 실시예 43에 있어서, 상기 NVMe-oF SSD와 다른 상기 구성요소가 상기 NVMe-oF SSD 대신에 상기 킵 얼라이브 메시지에 응답할 것을 상기 NVMe-oF SSD와 다른 상기 구성요소와 상기 스위치 사이에서 처리하는 단계를 더 포함하고, 상기 구성요소는 상기 프로세서 및 상기 BMC를 포함하는 일 세트로부터 얻어지는, 방법을 포함하는 본 발명의 일 실시예.
51. 실시예 50에 있어서, 상기 NVMe-oF SSD와 다른 상기 구성요소가 상기 NVMe-oF SSD 대신에 상기 킵 얼라이브 메시지에 응답할 것을 상기 NVMe-oF SSD와 다른 상기 구성요소와 상기 스위치 사이에서 처리하는 단계는, 상기 NVMe-oF SSD와 다른 상기 구성요소가 상기 NVMe-oF SSD 대신에 상기 NVMe-oF SSD의 활성 레벨에 대한 상기 킵 얼라이브 메시지에 응답할 것을 상기 NVMe-oF SSD와 다른 상기 구성요소와 상기 스위치 사이에서 처리하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
52. 실시예 43에 있어서, 상기 NVMe-oF SSD와 다른 구성요소에서 상기 원격프로세서로부터 활성전력모드 상태의 상기 NVMe-oF SSD로 전송된 제 2 킵 얼라이브 메시지를 수신하는 단계, 및 상기 NVMe-oF SSD를 대신한 상기 구성요소로부터 상기 원격프로세서로 상기 제 2 킵 얼라이브 메시지에 대한 제 2 응답을 전송하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
53. 실시예 52에 있어서, 상기 NVMe-oF SSD는 상기 제 2 킵 얼라이브 메시지에 대해 응답하도록 동작되지 않는, 방법을 포함하는 본 발명의 일 실시예.
54. 실시예 52에 있어서, 상기 활성전력모드 상태인 상기 NVMe-oF SSD의 프로토콜 상태를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
55. 실시예 42에 있어서, 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 심지어 적어도 하나의 상기 NVMe-oF SSD가 상기 저전력모드 상태인 경우에도 활성화되는 상기 NVMe-oF SSD의 킵 얼라이브 로직 회로에서 상기 원격프로세서로부터 상기 저전력모드 상태인 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계는, 상기 NVMe-oF SSD가 상기 저전력모드 상태인 동안에 상기 킵 얼라이브 로직 회로로부터 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
56. 실시예 55에 있어서, 상기 킵 얼라이브 로직 회로는 심지어 적어도 하나의 상기 NVMe-oF SSD가 상기 저전력모드 상태인 경우에도 활성화되는, 방법을 포함하는 본 발명의 일 실시예.
57. 다른 저전력모드 상태의 저장장치와 다른 구성요소에서 원격프로세서로부터 상기 저장장치로 전송된 데이터 요청을 수신하는 단계, 및 상기 저장장치와 다른 상기 구성요소 부근의 캐시에 존재하는 상기 데이터 요청 내의 데이터를 적어도 부분적으로 기초하여, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시를 사용하여 상기 데이터 요청에 응답하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예로서, 상기 저장장치와 다른 상기 구성요소는 프로세서, 스위치 및 BMC(Baseboard Management Controller)를 포함하는 일 세트로부터 얻어지는, 방법을 포함하는 본 발명의 일 실시예.
58. 실시예 57에 있어서, 상기 저장장치와 다른 구성요소에서 원격프로세서로부터 저장장치로 전송된 데이터 요청을 수신하는 단계는, NVMe-oF SSD(Non-Volatile Memory express over Fabrics Solid State Drive)와 다른 구성요소에서 상기 원격프로세서로부터 상기 NVMe-oF SSD로 전송된 상기 데이터 요청을 수신하는 단계를 포함하고, 상기 저장장치와 다른 상기 구성요소 부근의 캐시에 존재하는 상기 데이터 요청 내의 데이터를 적어도 부분적으로 기초하여, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시를 사용하여 상기 데이터 요청에 응답하는 단계는, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시에 존재하는 상기 데이터 요청 내의 상기 데이터를 적어도 부분적으로 기초하여, 상기 NVMe-oF SSD와 다른 상기 구성요소 부근의 상기 캐시를 사용하여 상기 데이터 요청에 응답하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
59. 실시예 58에 있어서, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시에 존재하지 않는 상기 데이터 요청 내의 상기 데이터를 적어도 부분적으로 기초하여, 상기 NVMe-oF SSD로 상기 데이터 요청을 전송하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
60. 실시예 58에 있어서, 상기 데이터 요청은 읽기 요청을 포함하고, 상기 방법은 상기 NVMe-oF SSD가 활성전력모드로 들어가지 않고, 상기 NVMe-oF SSD 와 다른 상기 구성요소 부근의 상기 캐시로부터 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 데이터를 읽는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
61. 실시예 58에 있어서, 상기 데이터 요청은 기록 요청을 포함하고, 상기 방법은 상기 NVMe-oF SSD 가 활성전력모드로 들어가지 않고, 상기 NVMe-oF SSD와 다른 상기 구성요소 부근의 상기 캐시 내에 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 데이터를 저장하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
62. 실시예 61에 있어서, 상기 NVMe-oF SSD가 활성전력모드 상태인 경우에 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 NVMe-oF SSD로 데이터를 전송하는 단계를 더 포함하는, 방법을 포함하는 본 발명의 일 실시예.
63. 저전력모드 상태의 저장장치에서 상기 저장장치와 다른 구성요소로부터 관리명령을 수신하는 단계, 및 상기 저전력모드 상태에서 활성화되는 상기 저장장치의 전력 도메인을 사용하여 상기 관리명령을 처리하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
64. 실시예 63에 있어서, 저전력모드 상태의 저장장치에서 상기 저장장치와 다른 구성요소로부터 관리명령을 수신하는 단계는, 상기 NVMe-oF SSD에서 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 관리명령을 수신하는 단계를 포함하고, 상기 저전력모드 상태에서 활성화되는 상기 저장장치의 전력 도메인을 사용하여 상기 관리명령을 처리하는 단계는, 상기 저전력모드 상태에서 활성화되는 상기 NVMe-oF SSD의 전력 도메인을 사용하여 상기 관리명령을 처리하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
65. 실시예 64에 있어서, 상기 NVMe-oF SSD에서 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 관리명령을 수신하는 단계는, 아웃오브밴드 메커니즘을 사용하여 상기 NVMe-oF SSD에서 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 관리명령을 수신하는 단계를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
66. 실시예 65에 있어서, 상기 아웃오브밴드 메커니즘은 SMBus를 포함하는, 방법을 포함하는 본 발명의 일 실시예.
67. 기계에 의해 실행되는 경우, 원격프로세서로부터 저전력모드 상태의 저장장치로 전송된 킵 얼라이브 메시지를 수신하게 하고, 상기 저장장치 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하게 하는 지시들을 저장하는 비일시적 저장매체를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
68. 실시예 67에 있어서, 원격프로세서로부터 저전력모드 상태의 저장장치로 전송된 킵 얼라이브 메시지를 수신하는 단계는, 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고, 상기 저장장치 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계는, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는, 장치를 포함하는 본 발명의 일 실시예.
69. 실시예 68에 있어서, 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 상기 NVMe-oF SSD와 다른 구성요소에서 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계는, 상기 NVMe-oF SSD 를 대신한 상기 구성요소로부터 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예로서, 상기 구성요소는 프로세서, BMC, 및 스위치를 포함하는 일 세트로부터 얻어지는, 제품을 포함하는 본 발명의 일 실시예.
70. 실시예 69에 있어서, 상기 기계에 의해 실행될 때, 상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하기 위해, 상기 비일시적 저장매체는 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하게 되는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
71. 실시예 70에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD가 상기 저전력모드로 들어간다는 메시지를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하게 되는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
72. 실시예 71에 있어서, 상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하기 위해 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계는, 상기 NVMe-oF SSD가 상기 저전력모드로 들어간다는 메시지를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터의 수신하는 단계에 대해 상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하기 위해 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
73. 실시예 71에 있어서, 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-of SSD가 저전력모드로 들어가도록 지시하고, PDB가 상기 NVMe-oF SSD로 전송된 전력을 감소시키도록 지시하게 하는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
74. 실시예 71에 있어서, 상기 NVMe-oF SSD가 상기 저전력모드로 들어간다는 메시지를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하는 단계는, 상기 NVMe-oF SSD의 프로토콜 상태를 수신하는 단계를 포함하고, 상기 킵 얼라이브 메시지에 대한 응답은 상기 NVMe-oF SSD의 프로토콜 상태를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
75. 실시예 70에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD가 상기 저전력모드로 들어가는 것에 대해 상기 NVMe-oF SSD로 명령들을 지시하기 위해, 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하게 되는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
76. 실시예 69에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD와 다른 상기 구성요소가 상기 NVMe-oF SSD 대신에 상기 킵 얼라이브 메시지에 대해 응답할 것을 상기 NVMe-oF SSD와 다른 상기 구성요소와 상기 스위치 사이에서 처리하게 하는 추가 지시들을 저장하고, 상기 구성요소는 상기 프로세서 및 상기 BMC를 포함하는 일 세트로부터 얻어지는, 제품을 포함하는 본 발명의 일 실시예.
77. 실시예 76에 있어서, 상기 NVMe-oF SSD와 다른 상기 구성요소가 상기 NVMe-oF SSD 대신에 상기 킵 얼라이브 메시지에 대해 응답할 것을 상기 NVMe-oF SSD와 다른 상기 구성요소와 상기 스위치 사이에서 처리하는 단계는, 상기 NVMe-oF SSD와 다른 상기 구성요소가 상기 NVMe-oF SSD에 대한 활성 레벨에 대해 상기 NVMe-oF SSD대신에 상기 킵 얼라이브 메시지에 대해 응답할 것을 상기 NVMe-oF SSD와 다른 상기 구성요소와 상기 스위치 사이에서 처리하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
78. 실시예 69에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD에서 상기 원격프로세서로부터 활성전력모드 상태의 상기 NVMe-oF SSD로 전송된 제 2 KA메시지를 수신하게 하고, 상기 NVMe-oF SSD를 대신한 상기 구성요소로부터 상기 원격프로세서로 상기 제 2 킵 얼라이브 메시지에 대한 제 2 응답을 전송하게 하는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
79. 실시예 78에 있어서, 상기 NVMe-oF SSD는 상기 제 2 킵 얼라이브 메시지에 대해 응답하도록 동작되지 않는, 제품을 포함하는 본 발명의 일 실시예.
80. 실시예 78에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 활성전력모드 상태의 상기 NVMe-oF SSD의 프로토콜 상태를 상기 NVMe-oF SSD와 다른 상기 구성요소에서 상기 NVMe-oF SSD로부터 수신하게 되는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
81. 실시예 68에 있어서, 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 심지어 적어도 하나의 상기 NVMe-oF SSD가 저전력모드 상태인 경우에도 활성화되는 상기 NVMe-oF SSD의 킵 얼라이브 논리회로에서 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계는, 상기 NVMe-oF SSD가 상기 저전력모드 상태인 동안에 상기 킵 얼라이브 논리회로로부터 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
82. 실시예 81에 있어서, 상기 킵 얼라이브 논리회로는 심지어 적어도 하나의 상기 NVMe-oF SSD가 상기 저전력모드 상태인 경우에도 활성화되는, 제품을 포함하는 본 발명의 일 실시예.
83. 기계에 의해 실행될 때, 비일시적 저장매체는 원격프로세서로부터 저전력모드 상태인 저장장치와 다른 구성요소에서 상기 저장장치로 전송된 데이터 요청을 수신하게 하고, 상기 저장장치와 다른 상기 구성요소 부근의 캐시에 존재하는 상기 데이터 요청의 데이터를 적어도 부분적으로 기초하여, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시를 사용하여 상기 데이터 요청에 응답하게 하는 지시들을 저장하는 비일시적 저장매체를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
84. 실시예 83에 있어서, 상기 저장장치와 다른 상기 구성요소에서 원격프로세서로부터 저장장치로 전송된 데이터 요청을 수신하는 단계는, 상기 NVMe-oF SSD(Non-Volatile Memory express over Fabrics Solid State Drive)와 다른 상기 구성요소에서 상기 원격프로세서로부터 상기 NVMe-oF SSD로 전송된 상기 데이터 요청을 수신하는 단계를 포함하고, 상기 저장장치와 다른 상기 구성요소 부근의 캐시에 존재하는 상기 데이터 요청의 데이터를 적어도 부분적으로 기초하여, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시를 사용하여 상기 데이터 요청에 응답하는 단계는, 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시에 존재하는 상기 데이터 요청의 데이터를 적어도 부분적으로 기초하여, 상기 NVMe-oF SSD와 다른 상기 구성요소 부근의 상기 캐시를 사용하여 상기 데이터 요청에 응답하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
85. 실시예 84에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 저장장치와 다른 상기 구성요소 부근의 상기 캐시에 존재하지 않는 상기 데이터 요청의 상기 데이터를 적어도 부분적으로 기초하여, 상기 NVMe-oF SSD로 상기 데이터 요청을 전송하게 하는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
86. 실시예 84에 있어서, 상기 데이터 요청은 읽기 요청을 포함하고, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD가 활성전력모드로 들어가지 않고 상기 NVMe-oF SSD와 다른 상기 구성요소 부근의 상기 캐시로부터 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 데이터를 읽게 하는 추가 지시들을 저장하는, 제품을 포함하는 일 실시예.
87. 실시예 84에 있어서, 상기 데이터 요청은 기록 데이터를 포함하고, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD가 활성전력모드로 들어가지 않고 상기 NVMe-oF SSD와 다른 상기 구성요소 부근의 상기 캐시 내에 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 데이터를 저장하게 하는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
88. 실시예 87에 있어서, 상기 기계에 의해 실행될 때, 상기 비일시적 저장매체는 상기 NVMe-oF SSD가 활성전력모드 상태인 경우에 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 NVMe-oF SSD로 상기 데이터를 전송하게 하는 추가 지시들을 저장하는, 제품을 포함하는 본 발명의 일 실시예.
89. 기계에 의해 실행될 때, 비일시적 저장매체는 저전력모드 상태인 저장장치에서 상기 저장장치와 다른 구성요소로부터 관리명령을 수신하게 하고, 상기 저전력모드 상태로 활성화되는 상기 저장장치의 전원 도메인을 사용하여 상기 관리명령을 처리하게 하는 지시들을 저장하는 비일시적 저장매체를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
90. 실시예 89에 있어서, 저전력모드 상태인 저장장치에서 상기 저장장치와 다른 구성요소로부터 관리명령을 수신하는 단계는, NVMe-oF SSD(Non-Volatile Memory over Fabrics Solid State Drive)에서 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 관리명령을 수신하는 단계를 포함하고, 상기 저전력모드 상태로 활성화되는 상기 저장장치의 전원 도메인을 사용하여 상기 관리명령을 처리하는 단계는, 상기 저전력모드 상태로 활성화되는 상기 NVMe-oF SSD의 전원 도메인을 사용하여 상기 관리명령을 처리하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
91. 실시예 90에 있어서, 상기 NVMe-oF SSD에서 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 관리명령을 수신하는 단계는, 아웃오브밴드 메커니즘을 사용하여 상기 NVMe-oF SSD에서 상기 NVMe-oF SSD와 다른 상기 구성요소로부터 상기 관리명령을 수신하는 단계를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
92. 실시예 91에 있어서, 상기 아웃오브밴드 메커니즘은 SMBus(System Management Bus)를 포함하는, 제품을 포함하는 본 발명의 일 실시예.
따라서, 본 명세서에 기재된 실시예의 광범위한 변경을 고려하면, 이러한 상세한 설명 및 첨부자료는 예시적인 목적으로만 의도되고 본 발명의 범위를 한정하는 것으로 간주되어서는 안 된다. 따라서, 본 발명으로서 청구되는 것은 이하의 청구범위 및 그에 대한 등가물의 범위 및 사상 내에 있을 수 있는 모든 변경예를 포함한다.
105. 기계 110. 프로세서
115. 메모리 120. 메모리 컨트롤러
125. 저장장치 130. 장치 드라이버
135. 원격 기계 140. 네트워크
145. 원격 프로세서 210. 네트워크 커넥터
215. 버스 220. 사용자 인터페이스
225. I/O 엔진 305. 킵 얼라이브 메시지
310. BMC 315. 스위치
320. 장치 상태 표 325. 라우팅 표
330. 캐시 410. 프로토콜 상태
505. 킵 얼라이브 응답 605. 데이터 요청
610. 데이터 응답 705. 수신기/송신기
710. 스위치 프로그래밍 로직 715. 킵 얼라이브 로직
720. 데이터 처리 로직 805. 호스트 인터페이스 로직
810. SSD 컨트롤러 815. 플래시 메모리 칩
820. 채널 825. 플래시 변환 계층
905. "항상 On" 전력 도메인 910. "가끔 On" 전력 도메인
915. 이더넷 연결부 920. 주 데이터경로
925. 프로토콜 상태 930. 관리 인터페이스

Claims (20)

  1. 섀시;
    상기 섀시 내의 프로세서;
    저장장치 내의 스위치; 및
    상기 스위치를 사용하여 상기 섀시 내에 위치하지 않은 원격프로세서와 통신하고, 활성전력모드 및 저전력모드를 지원하는, 상기 섀시 내의 적어도 하나의 저장장치를 포함하는 시스템으로서,
    상기 원격프로세서로부터 상기 적어도 하나의 저장장치로 전송된 킵 얼라이브(KA) 메시지에 대한 응답은 상기 적어도 하나의 저장장치가 저전력모드 상태인 경우에 상기 적어도 하나의 저장장치 대신에 상기 원격프로세서로 전송될 수 있는, 시스템.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 저장장치는 NVMe-oF SSD(Non-Volatile Memory Express over Fabrics Solid State Drive)를 포함하는, 시스템.
  3. 제 2 항에 있어서,
    BMC는 상기 저전력모드 상태의 상기 적어도 하나의 NVMe-oF SSD에 제시된 명령들을 상기 BMC로 재지시하기 위해 상기 스위치를 재프로그래밍할 수 있는, 시스템.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 NVMe-oF SSD는 상기 적어도 하나의 NVMe-oF SSD가 상기 저전력모드로 들어가는 경우에 상기 BMC에게 알려주도록 동작되는, 시스템.
  5. 제 4 항에 있어서,
    상기 NVMe-oF SSD가 상기 저전력모드로 들어가는 경우에 상기 적어도 하나의 NVMe-oF SSD는 상기 적어도 하나의 NVMe-oF SSD의 프로토콜 상태를 상기 BMC에게 추가로 알려주도록 동작되고, 및
    상기 BMC는 상기 킵 얼라이브 메시지에 대한 응답에 상기 적어도 하나의 NVMe-oF SSD의 상기 프로토콜 상태를 포함하도록 동작되는, 시스템.
  6. 제 3 항에 있어서,
    상기 BMC는 상기 활성전력모드 상태의 상기 적어도 하나의 NVMe-oF SSD에 제시된 명령들을 상기 적어도 하나의 NVMe-oF SSD로 지시하도록 상기 스위치를 재프로그래밍할 수 있는, 시스템.
  7. 제 2 항에 있어서,
    상기 프로세서, 상기 스위치 및 BMC 중 하나는 상기 적어도 하나의 NVMe-oF SSD가 활성전력모드 상태인 경우에 상기 원격프로세서로부터 상기 적어도 하나의 NVMe-oF SSD로 전송된 제 2 킵 얼라이브 메시지에 대해 응답할 수 있는, 시스템.
  8. 제 2 항에 있어서,
    BMC는 상기 적어도 하나의 NVMe-oF SSD가 저전력모드 상태인 경우, 그리고 상기 적어도 하나의 NVMe-oF SSD가 활성모드상태로 들어가지 않는 경우에 상기 적어도 하나의 NVMe-oF SSD로 관리명령을 전송하도록 동작되는, 시스템.
  9. 저장장치를 위해 킵 얼라이브(KA) 메시지를 원격프로세서로부터 수신하는 수신기;
    상기 킵 얼라이브 메시지에 대한 킵 얼라이브 응답을 생성하기 위한 킵 얼라이브 로직; 및
    상기 저장장치 대신에 상기 원격프로세서로 상기 킵 얼라이브 응답을 전송하는 송신기를 포함하는, 장치.
  10. 제 9 항에 있어서,
    상기 저장장치는 NVMe-oF SSD(Non-Volatile Memory Express over Fabrics Solid State Drive)를 포함하는, 장치.
  11. 제 10 항에 있어서,
    상기 NVMe-oF SSD의 상태에 관한 정보를 저장하는 장치 상태 표를 더 포함하는, 장치.
  12. 제 11 항에 있어서,
    상기 장치 상태 표는 NVMe-oF SSD의 프로토콜 상태를 저장하도록 동작되는, 장치.
  13. 제 12 항에 있어서,
    상기 킵 얼라이브 로직은 상기 장치 상태 표에 저장된 상기 프로토콜 상태에 대해 상기 킵 얼라이브 메시지에 대한 상기 킵 얼라이브 응답을 생성하도록 동작되는, 장치.
  14. 제 10 항에 있어서,
    상기 수신기는 스위치를 통해 상기 원격프로세서로부터 상기 킵 얼라이브 메시지를 수신하도록 동작되는, 장치.
  15. 제 14 항에 있어서,
    상기 NVMe-oF SSD를 위해 상기 원격프로세서로부터 상기 장치로 상기 킵 얼라이브 메시지를 라우팅하는 라우팅 표를 상기 스위치가 변경하도록 지시하기 위해 스위치 프로그래밍 로직을 더 포함하는, 장치.
  16. 원격프로세서로부터 저전력모드 상태의 저장장치로 전송된 킵 얼라이브(KA) 메시지를 수신하는 단계; 및
    상기 저장장치 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 응답을 전송하는 단계를 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 원격프로세서로부터 상기 저전력모드 상태의 상기 저장장치로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 상기 원격프로세서로부터 저전력모드 상태의 NVMe-oF SSD(Non-Volatile Memory Express over Fabrics Solid State Drive)로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고; 및
    상기 저장장치 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 상기 응답을 전송하는 단계는, 상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 상기 응답을 전송하는 단계를 포함하는, 방법.
  18. 제 17 항에 있어서,
    상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계는, 상기 NVMe-oF SSD와 다른 구성요소에서 상기 원격프로세서로부터 상기 저전력모드 상태의 상기 NVMe-oF SSD로 전송된 상기 킵 얼라이브 메시지를 수신하는 단계를 포함하고; 및
    상기 NVMe-oF SSD 대신에 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 상기 응답을 전송하는 단계는, 상기 NVMe-oF SSD를 대신한 상기 구성요소로부터 상기 원격프로세서로 상기 킵 얼라이브 메시지에 대한 상기 응답을 전송하는 단계를 포함하며,
    상기 구성요소는 프로세서, BMC(Baseboard Management Controller) 및 스위치를 포함하는 일 세트로부터 얻어지는, 방법.
  19. 제 18 항에 있어서,
    상기 NVMe-oF SSD와 다른 상기 구성요소로 상기 킵 얼라이브 메시지를 지시하도록 상기 NVMe-oF SSD와 다른 상기 구성요소에 의해 상기 스위치를 재프로그래밍하는 단계를 더 포함하는, 방법.
  20. 제 18 항에 있어서,
    상기 NVMe-oF SSD와 다른 구성요소에서 상기 원격프로세서로부터 활성전력모드 상태의 상기 NVMe-oF SSD로 전송된 제 2 킵 얼라이브 메시지를 수신하는 단계; 및
    상기 NVMe-oF SSD를 대신한 상기 구성요소로부터 상기 원격프로세서로 상기 제 2 킵 얼라이브 메시지에 대한 제 2 응답을 전송하는 단계를 더 포함하는 방법.
KR1020190082531A 2018-10-17 2019-07-09 NVMe-oF 기반의 시스템에서 섀시 레벨의 킵 얼라이브를 지원하기 위한 시스템 및 방법 KR102481475B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862747116P 2018-10-17 2018-10-17
US62/747,116 2018-10-17
US16/223,097 2018-12-17
US16/223,097 US11231764B2 (en) 2018-10-17 2018-12-17 System and method for supporting chassis level keep alive in NVME-of based system

Publications (2)

Publication Number Publication Date
KR20200043265A true KR20200043265A (ko) 2020-04-27
KR102481475B1 KR102481475B1 (ko) 2022-12-26

Family

ID=70280638

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190082531A KR102481475B1 (ko) 2018-10-17 2019-07-09 NVMe-oF 기반의 시스템에서 섀시 레벨의 킵 얼라이브를 지원하기 위한 시스템 및 방법

Country Status (2)

Country Link
US (2) US11231764B2 (ko)
KR (1) KR102481475B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11172423B2 (en) * 2018-12-31 2021-11-09 Itron, Inc. Solar-powered access point for load balancing network traffic across backhaul networks
US11296539B2 (en) 2018-12-31 2022-04-05 Itron, Inc. Solar hybrid battery for powering network devices over extended time intervals
US11184831B2 (en) 2018-12-31 2021-11-23 Itron, Inc. Solar-powered relay for coupling remotely-located leaf nodes to a wireless network
US11294602B2 (en) 2019-03-14 2022-04-05 Marvell Asia Pte Ltd Ethernet enabled solid state drive (SSD)
WO2020183246A2 (en) * 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Termination of non-volatile memory networking messages at the drive level
CN113924766A (zh) 2019-03-14 2022-01-11 马维尔亚洲私人有限公司 经由固态驱动器(ssd)之间的连接在ssd之间传输数据
US11615022B2 (en) * 2020-07-30 2023-03-28 Arm Limited Apparatus and method for handling accesses targeting a memory
KR20220162345A (ko) 2021-06-01 2022-12-08 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US11789658B2 (en) * 2021-04-13 2023-10-17 SK Hynix Inc. Peripheral component interconnect express (PCIe) interface system and method of operating the same
KR102518317B1 (ko) 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150177812A1 (en) * 2013-12-23 2015-06-25 International Business Machines Corporation Managing access to data on a client device during low-power state
US20170310538A1 (en) * 2016-04-21 2017-10-26 Biaodong Cai Ethernet fabric protection in a disaggregated otn switching system
KR20180012190A (ko) * 2016-07-26 2018-02-05 삼성전자주식회사 멀티 모드에서 동작하는 장치 및 그것을 포함하는 시스템
KR20180030378A (ko) * 2016-09-14 2018-03-22 삼성전자주식회사 셀프-구성하는 bmc 및 그것의 동작 방법
KR20180111492A (ko) * 2017-03-31 2018-10-11 삼성전자주식회사 집적된 NVMe 오버 패브릭 장치용 스토리지 집적 방법
KR20180112668A (ko) * 2017-04-03 2018-10-12 삼성전자주식회사 베이스보드 관리 컨트롤러(BMC)를 사용하여 NVMe-oF 디바이스를 구성하는 시스템 및 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107442B2 (en) * 2003-08-20 2006-09-12 Apple Computer, Inc. Method and apparatus for implementing a sleep proxy for services on a network
US20070078959A1 (en) * 2005-10-03 2007-04-05 Yinghua Ye Low-power proxy for providing content listings in ad-hoc, peer to peer networks
KR100950491B1 (ko) 2006-08-03 2010-03-31 삼성전자주식회사 네트워크 인터페이스카드, 이를 갖는 네트워크프린터 및 그 장치의 제어방법
US7779282B2 (en) * 2006-12-29 2010-08-17 Intel Corporation Maintaining network connectivity while operating in low power mode
US8825842B2 (en) 2011-04-28 2014-09-02 Facebook, Inc. Managing notifications pushed to user devices
US8307234B2 (en) 2012-01-14 2012-11-06 Intel Corporation Maintaining connectivity during low power operation
US8989048B2 (en) * 2012-09-25 2015-03-24 Hangzhou H3C Technologies Co., Ltd. Node system ID change in link state protocol network
US20140098727A1 (en) * 2012-10-04 2014-04-10 Apple Inc. Methods and apparatus for network signaling during low-power operation
US9497030B2 (en) * 2013-07-22 2016-11-15 Samsung Electronics Co., Ltd. Remotely controllable electronic device and system including the same
US10257031B1 (en) * 2016-02-26 2019-04-09 Amazon Technologies, Inc. Dynamic network capacity augmentation for server rack connectivity
EP3440875B1 (en) * 2016-04-04 2022-08-31 Sony Group Corporation Proxy devices and method for serving sleepy internet-of-things devices
US10992967B2 (en) * 2017-12-05 2021-04-27 Sony Interactive Entertainment LLC Ultra high-speed low-latency network storage
WO2019244233A1 (ja) * 2018-06-19 2019-12-26 オリンパス株式会社 無線通信端末、無線通信システム、無線通信方法、およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150177812A1 (en) * 2013-12-23 2015-06-25 International Business Machines Corporation Managing access to data on a client device during low-power state
US20170310538A1 (en) * 2016-04-21 2017-10-26 Biaodong Cai Ethernet fabric protection in a disaggregated otn switching system
KR20180012190A (ko) * 2016-07-26 2018-02-05 삼성전자주식회사 멀티 모드에서 동작하는 장치 및 그것을 포함하는 시스템
KR20180030378A (ko) * 2016-09-14 2018-03-22 삼성전자주식회사 셀프-구성하는 bmc 및 그것의 동작 방법
KR20180111492A (ko) * 2017-03-31 2018-10-11 삼성전자주식회사 집적된 NVMe 오버 패브릭 장치용 스토리지 집적 방법
KR20180112668A (ko) * 2017-04-03 2018-10-12 삼성전자주식회사 베이스보드 관리 컨트롤러(BMC)를 사용하여 NVMe-oF 디바이스를 구성하는 시스템 및 방법

Also Published As

Publication number Publication date
US20220121261A1 (en) 2022-04-21
US11231764B2 (en) 2022-01-25
US20200125157A1 (en) 2020-04-23
KR102481475B1 (ko) 2022-12-26
CN111061657A (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
KR102481475B1 (ko) NVMe-oF 기반의 시스템에서 섀시 레벨의 킵 얼라이브를 지원하기 위한 시스템 및 방법
US11509720B2 (en) Techniques for storing and distributing metadata among nodes in a storage cluster system
KR102414047B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
US11516148B2 (en) Techniques for dynamically allocating resources in a storage cluster system
TWI754654B (zh) 自組態基板管理控制器(bmc)及其自組態方法與儲存媒體
US8656137B2 (en) Computer system with processor local coherency for virtualized input/output
US8732381B2 (en) SAS expander for communication between drivers
US20110145452A1 (en) Methods and apparatus for distribution of raid storage management over a sas domain
US8689044B2 (en) SAS host controller cache tracking
EP2144153A2 (en) Storage system
US10565108B2 (en) Write-back cache for storage controller using persistent system memory
US11494096B2 (en) System and method for storage array enclosure discovery
US8694826B2 (en) SAS host cache control
US9703714B2 (en) System and method for management of cache configuration
US11385815B2 (en) Storage system
CN111061657B (zh) 在基于NVMe-oF的系统中支持机箱级保持活动的系统和方法
KR102394695B1 (ko) 메모리 시스템 및 그것의 동작방법
JP2015053555A (ja) データ転送装置、およびデータ転送方法
JP5609272B2 (ja) サーバ装置、サーバシステム及びサーバ装置の制御方法
CN116189730A (zh) 为存储器提供备电的方法和相关设备

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant